(57)【要約】【課題】  サービスを提供する特定のポートは攻撃や不正侵入の対象となりやすい。【解決手段】  端末が家庭内装置に対してサービスを要求する際、ハッシュ計算部１４は、端末が要求するサービスに対応づけられたサービス乱数もしくはサービスパスワードに、タイマ１０から与えられた現在時刻情報と試行回数カウンタ１２から与えられたサービス要求の試行回数を組み合わせて、サービス認証に用いるハッシュ値を生成する。ポート選択部１６は、ハッシュ計算部１４により生成されたハッシュ値を所定の演算規則により演算した結果にもとづいて、端末が要求するサービスに対応づけられた共有ポート候補の中から１つのポート番号を一意に選択する。ポート選択部１６は、選択されたポート番号を、家庭内装置にサービスを要求する際のパケットの宛先ポートとしてパケット処理部１２０に与える。【選択図】  図５
2007049262.tif 000002
【特許請求の範囲】
【請求項１】
通信装置が提供するサービスを受ける端末であって、
当該端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定するポート選択部と、
動的に決定された前記宛先ポート番号を指定した前記要求パケットを生成するパケット処理部とを含むことを特徴とする端末。
【請求項２】
前記共有情報と前記時刻情報を組み合わせたデータ列を一方向性関数により変換してハッシュ値を生成するハッシュ計算部をさらに含み、
前記ポート選択部は、生成された前記ハッシュ値に所定の演算規則を適用することにより、複数の利用可能なポート番号の候補の１つを指定する番号を生成し、前記番号により前記複数の利用可能なポート番号の候補の中から１つのポート番号を前記宛先ポート番号として一意に選択することを特徴とする請求項１に記載の端末。
【請求項３】
端末に対してサービスを提供する通信装置であって、
当該通信装置と前記端末の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定するポート判定部と、
前記サービスポートにおいて前記要求パケットを受信するために待機するパケット処理部とを含むことを特徴とする通信装置。
【請求項４】
前記ポート判定部は、前記要求パケットに指定された宛先ポート番号が前記サービスポート番号に一致するか否かを判定し、
前記パケット処理部は、前記宛先ポート番号が前記サービスポート番号に一致する場合に、前記要求パケットを前記サービスポートで受信して処理することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記共有情報と前記時刻情報を組み合わせたデータ列を一方向性関数により変換してハッシュ値を生成するハッシュ計算部をさらに含み、
前記ポート判定部は、生成された前記ハッシュ値に所定の演算規則を適用することにより、複数の利用可能なポート番号の候補の１つを指定する番号を生成し、前記番号により前記複数の利用可能なポート番号の候補の中から１つのポート番号を前記サービスポート番号として一意に選択することを特徴とする請求項３または４に記載の通信装置。
【請求項６】
前記端末が保持する前記共有情報をもとに計算されたハッシュ値を前記端末から受け取り、当該通信端末が保持する前記共有情報をもとに計算されたハッシュ値と比較することにより、前記端末が要求するサービスの認証を行うハッシュ判定部をさらに含むことを特徴とする請求項３から５のいずれかに記載の通信装置。
【請求項７】
端末がネットワークを経由して通信装置の提供するサービスを受ける際に、前記通信装置がサービスを提供するサービスポート番号が、前記端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算結果にもとづいてサービス要求の度に動的に変更されることを特徴とする通信確立方法。
【請求項８】
通信装置が提供するサービスを受ける端末における通信確立方法であって、
当該端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定するステップと、
動的に決定された前記宛先ポート番号を指定した前記要求パケットを生成し、前記通信装置に送信するステップとを含むことを特徴とする通信確立方法。
【請求項９】
端末に対してサービスを提供する通信装置における通信確立方法であって、
当該通信装置と前記端末の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定するステップと、
前記サービスポートにおいて前記要求パケットを受信するために待機するステップとを含むことを特徴とする通信確立方法。
【請求項１０】
通信装置が提供するサービスを受ける端末において使用されるプログラムであって、
当該端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定するステップと、
動的に決定された前記宛先ポート番号を指定した前記要求パケットを生成し、前記通信装置に送信するステップとを前記端末に実行させることを特徴とするプログラム。
【請求項１１】
端末に対してサービスを提供する通信装置において使用されるプログラムであって、
当該通信装置と前記端末の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定するステップと、
前記サービスポートにおいて前記要求パケットを受信するために待機するステップとを前記通信装置に実行させることを特徴とするプログラム。
【請求項１２】
端末が通信装置の提供するサービスを受けるために行う認証方法であって、
前記端末と前記通信装置の間で共有されるべき共有情報をあらかじめ前記端末と前記通信装置のそれぞれにおいて保持するステップと、
前記端末が前記共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定し、前記共有情報を含む前記要求パケットを動的に決定された前記通信装置の前記宛先ポート番号に送信するステップと、
前記通信装置が前記共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定し、前記端末から送信される前記要求パケットを動的に決定された前記サービスポートで受信し、前記要求パケットに含まれる前記端末に保持された共有情報が当該通信端末に保持された共有情報と一致するかどうかを判定するステップとを含むことを特徴とする認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークにおいて通信を確立する方法、およびその方法を利用可能な端末、通信装置、ならびに認証方法に関する。
【背景技術】
【０００２】
ブロードバンドネットワークが急速に普及しており、一般家庭においてユーザがパーソナルコンピュータをプロバイダを経由して外部のネットワークに接続し、ＷＷＷ（World Wide Web）や電子メールなど各種のサービスを受けることは当然のこととなってきている。さらに、テレビ受信装置、ビデオ録画機、ゲーム機などの各種機器などが通信機能をもち、パーソナルコンピュータとともに家庭内ネットワークに接続されたり、ホームサーバやルータなどを経由して外部のネットワークに接続することも現実的になりつつある。
【０００３】
家庭内の各種機器が外部のネットワークにつながるようになると、外部から家庭内の機器を遠隔操作することも可能となり、録画の予約などを外出先で行うといったニーズも今後、増えてくるものと予想される。家庭内の機器やパーソナルコンピュータを外部のネットワークから遠隔操作可能にすると、家庭内の機器やコンピュータに不正に侵入されて個人情報が盗まれる可能性もあり、十分なセキュリティを確保することが不可欠である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、ネットワークでサービスを提供する側の装置は、特定の通信ポートを開けて端末からの通信要求があるまで待機している。サービス毎にポート番号は固定的に決められており、たとえば、ＦＴＰ（File Transfer Protocol）は２１番、ＨＨＴＰ（Hyper Text Transfer Protocol）は８０番、ＨＴＴＰＳ（Hyper Text Transfer Protocol over SSL）は４４３番のポートをそれぞれ用いることが決められている。このようにサービス毎にポート番号が固定されていると、特定のポートに対してＤｏＳ（Denial of Service）攻撃が行われ、処理負荷が上がってサービス不能に陥ることがある。また、仮に、サービスを提供するポートを標準的に決まっているポート番号を避けて、他の番号に設定したとしても、ポート番号を１つ１つ調べていくポートスキャンによって、サービスを提供しているポートを確定することができるため、同様の攻撃を受けることは避けられない。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、攻撃に対する防御性能を高めることのできる通信技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の端末は、通信装置が提供するサービスを受ける端末であって、当該端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定するポート選択部と、動的に決定された前記宛先ポート番号を指定した前記要求パケットを生成するパケット処理部とを含む。
【０００７】
前記共有情報と前記時刻情報を組み合わせたデータ列を一方向性関数により変換してハッシュ値を生成するハッシュ計算部をさらに含んでもよい。前記ポート選択部は、生成された前記ハッシュ値に所定の演算規則を適用することにより、複数の利用可能なポート番号の候補の１つを指定する番号を生成し、前記番号により前記複数の利用可能なポート番号の候補の中から１つのポート番号を前記宛先ポート番号として一意に選択してもよい。この所定の演算規則は、ハッシュ値もしくはハッシュ値の一部の値をポート番号の候補を指定する番号に一意的に写像する関数であってもよい。
【０００８】
本発明の別の態様は、通信装置である。この装置は、端末に対してサービスを提供する通信装置であって、当該通信装置と前記端末の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定するポート判定部と、前記サービスポートにおいて前記要求パケットを受信するために待機するパケット処理部とを含む。
【０００９】
前記ポート判定部は、前記要求パケットに指定された宛先ポート番号が前記サービスポート番号に一致するか否かを判定し、前記パケット処理部は、前記宛先ポート番号が前記サービスポート番号に一致する場合に、前記要求パケットを前記サービスポートで受信して処理してもよい。
【００１０】
本発明のさらに別の態様は、通信確立方法である。この方法は、端末がネットワークを経由して通信装置の提供するサービスを受ける際に、前記通信装置がサービスを提供するサービスポート番号を、前記端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算結果にもとづいてサービス要求の度に動的に変更する。
【００１１】
本発明のさらに別の態様もまた、通信確立方法である。この方法は、通信装置が提供するサービスを受ける端末における通信確立方法であって、当該端末と前記通信装置の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定するステップと、動的に決定された前記宛先ポート番号を指定した前記要求パケットを生成し、前記通信装置に送信するステップとを含む。
【００１２】
本発明のさらに別の態様もまた、通信確立方法である。この方法は、端末に対してサービスを提供する通信装置における通信確立方法であって、当該通信装置と前記端末の間で共有される共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定するステップと、前記サービスポートにおいて前記要求パケットを受信するために待機するステップとを含む。
【００１３】
本発明のさらに別の態様は、認証方法である。この方法は、端末が通信装置の提供するサービスを受けるために行う認証方法であって、前記端末と前記通信装置の間で共有されるべき共有情報をあらかじめ前記端末と前記通信装置のそれぞれにおいて保持するステップと、前記端末が前記共有情報に時刻情報を組み合わせた演算の結果を利用して、前記通信装置にサービスの要求パケットを送信する際の宛先ポート番号を動的に決定し、前記共有情報を含む前記要求パケットを動的に決定された前記通信装置の前記宛先ポート番号に送信するステップと、前記通信装置が前記共有情報に時刻情報を組み合わせた演算の結果を利用して、前記端末からサービスの要求パケットを受信する際のサービスポート番号を動的に決定し、前記端末から送信される前記要求パケットを動的に決定された前記サービスポートで受信し、前記要求パケットに含まれる前記端末に保持された共有情報が当該通信端末に保持された共有情報と一致するかどうかを判定するステップとを含む。
【００１４】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明によれば、秘匿性をもたせた通信技術により、第三者による攻撃に対する防御性能を高めることができる。
【発明を実施するための最良の形態】
【００１６】
図１（ａ）、（ｂ）は、実施の形態に係る遠隔操作システムの構成図である。本実施の形態では、家庭内装置２００が提供する録画予約などのサービスをネットワーク４００を介して端末１００から遠隔操作する。
【００１７】
家庭内装置２００は、たとえば、ネットワーク機能をもった家庭内のテレビ受信装置、ビデオ録画機器、ゲーム機などの各種機器であってもよく、これらの機器と接続して制御することのできるパーソナルコンピュータであってもよい。また、家庭内装置２００は、これらの家庭内機器が家庭内ネットワークで相互接続されている場合におけるホームサーバであってもよい。以下では、説明の簡単のため、家庭内装置２００が録画やゲームなどの各種サービスを受け付け、サービスを実行するものとして説明するが、実際には、受け付けたサービス内容が各種機器に中継され、各種機器においてサービスが実行されるという形態であってもかまわない。
【００１８】
端末１００は、たとえば、家庭内装置２００を遠隔操作するための携帯型パーソナルコンピュータや、ネットワーク機能をもつ携帯電話や携帯端末などの通信機器である。
【００１９】
図１（ａ）は、現状のネットワーク環境を想定した接続形態を示し、端末１００は、ネットワーク４００においてグローバルＩＰ（Internet Protocol）アドレスを有するサーバ３００と直接通信することができるが、家庭内装置２００はグローバルＩＰアドレスを持たないため、端末１００から家庭内装置２００に直接サービス要求を送信することはできない。
【００２０】
この場合、家庭内装置２００は、家庭内のプライベートネットワークに接続されており、ＩＰアドレスを割り当てられていないか、ＩＰアドレスを割り当てられていたとしても、そのＩＰアドレスはプライベートなものである。
【００２１】
端末１００は、いったんＷＷＷサービスや電子メールなどの機能を利用して、家庭内装置２００に対するサービス要求をサーバ３００に送信する。サーバ３００は、家庭内装置２００と通信を行い、サービス要求を家庭内装置２００に伝える。このとき、グローバルＩＰアドレスをもたない家庭内装置２００は、たとえば、ＮＡＴ（Network Address Translation）機能をもつルータを経由して、サーバ３００と通信できるように構成されているとする。ルータのＮＡＴ機能により家庭内ネットワークのプライベートＩＰアドレスがグローバルＩＰアドレスに変換され、プライベートＩＰアドレスしか割り当てられていない家庭内装置２００からでもネットワーク４００へのアクセスが可能になる。
【００２２】
一例として、サーバ３００は、あらかじめユーザに指定された家庭内装置２００用のメールアドレス宛に接続要求を送り、家庭内装置２００は指定されたメールアドレスに到着したメールを定期的に受信することで、その接続要求を認識し、家庭内装置２００から端末１００に接続をする。これにより、家庭内装置２００がグローバルＩＰアドレスをもたないネットワーク環境でも、端末１００側からのサービス要求に応じて、端末１００と家庭内装置２００の間でデータ通信のコネクションが確立される。あるいは、家庭内装置２００は、端末１００からの接続要求を認識すると、サーバ３００に接続して、端末１００とのデータ通信をサーバ３００を経由して行ってもよい。
【００２３】
図１（ｂ）は、ＩＰｖ６（Internet Protocol Version 6）環境のように、家庭内装置２００のＩＰアドレスがグローバルであり、かつ端末１００に知られているネットワーク環境を想定した接続形態を示す。この場合、端末１００は、家庭内装置２００のグローバルＩＰアドレスを宛先アドレスに指定することにより、家庭内装置２００に直接サービス要求を送信することができる。図１（ｂ）は、図１（ａ）のサーバ３００を端末１００に置き換えたものと考えてもよい。以下では、説明の簡単のため、図１（ｂ）の接続形態に集約させて実施の形態を説明するが、実施の形態で説明する構成と手順は、図１（ａ）の接続形態の場合にも同様に当てはまる。
【００２４】
まず、本実施の形態の遠隔操作システムの動作の概要を説明する。端末１００は家庭内装置２００に対して遠隔操作によるサービス要求を行う前に、あらかじめ家庭内装置２００から共有情報を取得する。この共有情報は、ユーザが利用する端末１００と家庭内装置２００だけが共有して保持する情報であり、第三者に対する秘匿性が保たれている。
【００２５】
家庭内装置２００から端末１００に共有情報を受け渡す作業は、家庭内において行われてもよく、端末１００が外部のネットワークから家庭内装置２００に接続することにより行われてもよい。
【００２６】
家庭内で共有情報の受け渡しを行う場合、端末１００を家庭内装置２００が接続されている家庭内ネットワークに接続するか、もしくは有線または無線接続により端末１００と家庭内装置２００を直接接続し、家庭内装置２００が生成した共有情報を端末１００に転送する。この場合、第三者に情報を不正取得される心配がないため、通信経路の暗号化やパスワードの入力などは特に必要とされない。
【００２７】
ネットワーク４００を経由して共有情報の受け渡しを行う場合、通信経路の暗号化やパスワードの入力などにより、認証付きのデータのやりとりを行う必要がある。ネットワーク４００に接続された端末１００において、ユーザはユーザ名とパスワードを入力することで家庭内装置２００の認証を受け、認証が成功した場合に、家庭内装置２００から端末１００にネットワーク４００を経由して共有情報が送信される。
【００２８】
このようにして家庭内装置２００から端末１００へ共有情報を受け渡すことを「事前認証」と呼ぶ。事前認証は、端末１００と家庭内装置２００が共有情報をもつための認証手続きであり、共有情報には、後述のように特定のサービスで利用可能なポート番号の候補やサービスを受ける際の認証に必要なサービス乱数などが含まれる。なお、共有情報は、端末１００の記憶装置に保持され、認証時にアプリケーションにより読み出されて処理されため、ユーザが共有情報について意識する必要はない。
【００２９】
端末１００は家庭内装置２００にサービス要求する際、端末１００に保持された共有情報に現在時刻情報を組み合わせて所定の演算規則により演算した結果にもとづいて、家庭内装置２００の宛先ポート番号を動的に決定する。また、家庭内装置２００側でも、端末１００に発行した共有情報を保持しており、その共有情報に現在時刻情報を組み合わせて端末１００と同じ演算規則を適用することにより、家庭内装置２００がサービスを提供するためのサービスポート番号を動的に求めることができる。
【００３０】
家庭内装置２００は、端末１００が決定した宛先ポート番号がサービスポート番号と一致するかどうかにより、端末１００が正しい共有情報を持っているかどうか、また、正しい宛先ポートに接続してきているかどうかを判定することができる。
【００３１】
端末１００は、それ自身が保持する共有情報と時刻情報を用いて宛先ポート番号を決定することができ、家庭内装置２００からのサービスポート番号の通知を必要としない。また、家庭内装置２００も、それ自身が保持する共有情報と時刻情報を用いてサービスポート番号を決定することができ、端末１００がいずれの宛先ポート番号を選択したかを知る必要はない。このように、端末１００と家庭内装置２００の間で通信を確立するにあたって、端末１００と家庭内装置２００の間でポートに関する情報のやりとりを一切行う必要がない。
【００３２】
端末１００および家庭内装置２００においてポート番号の決定にあたって、時刻情報が用いられるため、サービスポートはサービスが行われる度に変化し、固定されない。第三者からは、サービス毎にポート番号がランダムに変わっているように見え、ポート番号に関する情報が端末１００と家庭内装置２００の間でやりとりされないため、通信サービスで利用されるポートの秘匿性を高め、特定ポートに対する繰り返し攻撃などに対する防御性能を高めることができる。
【００３３】
以下、端末１００と家庭内装置２００の構成と動作を詳しく説明する。
【００３４】
図２は、実施の形態に係る端末１００の構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００３５】
事前認証部１４０は、家庭内装置２００に対して事前認証の要求メッセージを発行する。サービス要求部１１０は、家庭内装置２００に対してサービスの要求メッセージを発行する。パケット処理部１２０は、事前認証部１４０およびサービス要求部１１０が発行するメッセージをパケット化し、通信部１３０は、ネットワーク４００を介してパケットを家庭内装置２００に送信する。
【００３６】
また、通信部１３０が家庭内装置２００から要求メッセージに対するリプライメッセージのパケットを受信すると、パケット処理部１２０がリプライメッセージのパケットのヘッダを解析し、サービス要求部１１０または事前認証部１４０にパケットのペイロードに含まれるデータを与える。
【００３７】
端末１００は、データ通信のために各種のプロトコルを選択して用いることができる。たとえば、トランスポート層のプロトコルとしてＴＣＰまたはＵＤＰを選択し、ネットワーク層のプロトコルとしてＩＰを選択する。パケット処理部１２０は選択されたプロトコルにしたがってパケットのヘッダ情報を設定する。
【００３８】
パケット処理部１２０は、事前認証部１４０が発行する事前認証要求またはサービス要求部１１０が発行するサービス要求をＴＣＰプロトコルなどのパケットとして生成する。パケットのヘッダには、送信元ノードのＩＰアドレスとポート番号、宛先ノードのＩＰアドレスとポート番号が指定される。
【００３９】
送信元ＩＰアドレスは、端末１００のＩＰアドレスであり、送信元ポート番号は、端末１００において要求メッセージの送信に利用するローカルポート番号である。宛先ＩＰアドレスは、家庭内装置２００のＩＰアドレスであり、宛先ポート番号は、家庭内装置２００が要求メッセージの受信に利用するサービスポート番号である。
【００４０】
事前認証部１４０が事前認証の要求メッセージを発行する場合、パケット処理部１２０は、事前認証の要求メッセージをパケット化し、通信部１３０に与える。このとき、家庭内装置２００の宛先ポートはあらかじめ決められたサービスポートが使用される。通信部１３０は、パケット化された事前認証要求メッセージを家庭内装置２００に送信する。事前認証の際、家庭内装置２００にユーザパスワードなどの秘匿すべき情報が送信されるため、ＳＳＬ（Secure Socket Layer）などのプロトコルにより通信路が暗号化される。
【００４１】
家庭内装置２００は、端末１００から受信したユーザパスワードによりユーザの認証を行い、認証が成功すれば、家庭内装置２００は共有情報を生成して端末１００に送信する。
【００４２】
端末１００の通信部１３０は、家庭内装置２００から送信された共有情報のパケットを受信し、パケット処理部１２０は共有情報のパケットのヘッダを解析し、パケットのペイロードに含まれる共有情報を事前認証部１４０に与える。事前認証部１４０は、取得した共有情報を共有情報記憶部１６０に保存する。
【００４３】
サービス要求部１１０がサービスの要求メッセージを発行する場合、パケット処理部１２０は、サービスの要求メッセージをパケット化し、通信部１３０に与える。このとき、家庭内装置２００の宛先ポートは、ポート設定部１５０により動的に設定されるポート番号が使用される。宛先ポートは、サービスによって固定されているのではなく、サービス要求の度に変化する。ポート設定部１５０は、この動的に変化する宛先ポート番号をパケット処理部１２０に対して設定する。
【００４４】
ポート設定部１５０は、共有情報記憶部１６０に保持された共有情報を読み出し、共有情報と現在時刻情報を組み合わせて所定の演算規則により演算した結果にもとづいて、宛先ポート番号を一意に決定する。ポート設定部１５０は、決定した宛先ポート番号をパケット処理部１２０に与える。
【００４５】
パケット処理部１２０は、ポート設定部１５０から与えられた宛先ポート番号を家庭内装置２００に送信するパケットのヘッダに設定する。通信部１３０は、パケット処理部１２０によりパケット化されたサービス要求メッセージを家庭内装置２００に送信する。
【００４６】
図３は、実施の形態に係る家庭内装置２００の構成図である。これらの機能ブロックもハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００４７】
認証登録部２４０は、端末１００から事前認証の要求メッセージを受け取り、認証登録を行い、認証結果を端末１００に通知する。サービス処理部２１０は、端末１００からサービスの要求メッセージを受け取り、サービスを実行し、実行結果を端末１００に通知する。パケット処理部２２０は、通信部２３０が端末１００から受信したパケットのヘッダを解析してパケットのペイロードに含まれるデータを認証登録部２４０またはサービス処理部２１０に与える。
【００４８】
また、パケット処理部２２０は、認証登録部２４０およびサービス処理部２１０が端末１００に送信するデータをパケット化し、通信部２３０は、ネットワーク４００を介してパケットを端末１００に送信する。
【００４９】
認証登録部２４０は、端末１００から受け取った事前認証の要求メッセージに対してユーザの認証と共有情報の登録を行う。まず、認証登録部２４０は、端末１００から受信したユーザパスワードによりユーザの認証を行い、認証が成功すれば、共有情報を生成して共有情報記憶部２６０に保存するとともに、共有情報をパケット処理部２２０に与える。
【００５０】
パケット処理部２２０は、認証登録部２４０から与えられた共有情報を端末１００を宛先とするパケットとして生成し、通信部２３０に与える。通信部２３０は、パケット化された共通情報を端末１００に送信する。共有情報はＳＳＬなどのプロトコルにより暗号化されて送信される。
【００５１】
パケット処理部２２０が端末１００からのサービス要求メッセージのパケットを受け取ると、そのパケットに指定された宛先ポートをポート設定部２５０に与える。ポート設定部２５０は、共有情報記憶部２６０に保持された共有情報を読み出し、共有情報に現在時刻情報を組み合わせて所定の演算規則により演算した結果にもとづいて、端末１００からのサービス要求を受信するサービスポート番号を一意に決定する。ポート設定部２５０は、共有情報にもとづいて決定したサービスポート番号と、端末１００がサービス要求の際にパケットに指定した宛先ポート番号とが一致するかどうか判定し、一致する場合には、当該サービスポートにおいて端末１００からのパケットを受信する。
【００５２】
サービス処理部２１０は、端末１００からのサービス要求メッセージに対して認証が成功した場合に、サービスを実行し、サービス要求に対するリプライメッセージを発行する。パケット処理部２２０は、サービス要求のリプライメッセージをパケット化し、通信部２３０が端末１００に送信する。
【００５３】
図４（ａ）〜（ｃ）は、端末１００と家庭内装置２００がそれぞれ保持する共有情報を説明する図である。共有情報は、端末１００の共有情報記憶部１６０および家庭内装置２００の共有情報記憶部２６０にそれぞれ記憶される。
【００５４】
図４（ａ）に示すように、端末１００が家庭内装置２００に対して要求することのできるサービス毎にサービス名、サービス乱数、および共有ポート候補が共有情報として記憶される。
【００５５】
たとえば、サービス名「録画」に対して、サービス乱数Ａと、共有ポート候補として「２０００、２００５、２００６、２００７、３０００」の５つのポート番号のリストとが対応づけられて記憶される。
【００５６】
サービス名「ゲーム１」に対して、サービス乱数Ｂと、共有ポート候補として「２００１、２００４、３５００」の３つのポート番号のリストが対応づけられて記憶される。
【００５７】
サービス名「ゲーム２」に対して、サービス乱数Ｃと、共有ポート候補として「４０００、５０００、６０００」の３つのポート番号のリストが対応づけられて記憶される。
【００５８】
なお、共有ポート候補は、サービス毎にポート番号のリストを与えずに、たとえば、２０００〜６０００番はいずれのサービスでも自由に用いられるという設定になっていてもよい。また、上記のように、共有ポート候補は、サービス毎に使用可能なポート番号の候補が限定的に列挙されていてもよい。また、家庭内装置２００が接続されている家庭内ネットワークと外部のネットワーク４００の境界に設けられたルータなどのファイアウォールの設定に合わせて、使用可能なポート番号の候補が設定されてもよい。
【００５９】
図４（ｂ）に示すように、端末１００が家庭内装置２００に対して事前認証を行った際、端末１００のタイムスタンプ、家庭内装置２００のタイムスタンプがそれぞれ共有端末時刻、共有家庭内装置時刻として、端末１００と家庭内装置２００の双方に記憶される。これらの共有情報は、端末１００と家庭内装置２００がそれぞれ現在時刻に依存するハッシュ値を計算する際に、端末１００と家庭内装置２００の間の時刻のずれを補正するために用いられる。
【００６０】
図４（ｃ）に示すように、家庭内装置２００は事前認証の際に共通乱数を生成し、その共通乱数が端末１００と家庭内装置２００の双方に記憶される。共通乱数は事前認証毎に新たに生成される乱数であり、共通鍵であってもよい。端末１００が家庭内装置２００に対してサービスを要求する際に、端末１００と家庭内装置２００の間で共有している共通乱数が一致するかどうかを判定することで、事前認証のためのユーザパスワードが第三者により盗まれたり、破られたりしたことにより、不正な事前認証がなされていないかをユーザが確認することができる。
【００６１】
家庭内装置２００は、外部から起動される可能性のあるサービスについてのみ、図４（ａ）に示す共有情報を生成すればよいから、その種類は限定されている。家庭内装置２００は、それらの想定されるサービス毎に共有情報を作成し、端末１００との間で共有しておけばよいから、共有情報を生成するための処理コストは小さい。
【００６２】
端末１００が利用可能なサービスをユーザ毎に制限してもよい。たとえば、「録画」はあるユーザだけができるといった使い分けも可能である。その場合、サービス乱数はユーザ毎に生成され、ユーザが使用する端末１００に保持される。
【００６３】
サービス乱数は、乱数発生により生成されたものであればよく、共通鍵であってもよい。ただし、サービス乱数は他のサービス乱数とは一致してはならない。また、ユーザ間でも同じサービス乱数が使用されてはならない。すなわち、サービス乱数は、ユーザ名とサービス名に対して一意でなければならない。
【００６４】
図５は、端末１００のポート設定部１５０の構成を説明する図である。ポート設定部１５０は、共有情報記憶部１６０に保持された共有情報に現在時刻情報とサービス要求の試行回数を組み合わせて所定の演算規則により演算した結果にもとづいて、家庭内装置２００に対してサービス要求を行う際のパケットの宛先ポートを一意に決定する。現在時刻情報とサービス要求の試行回数が宛先ポートの決定の際に用いられるため、宛先ポート番号はサービス要求の度に動的に変化する。
【００６５】
タイマ１０は、端末１００における時刻情報を保持し、現在時刻情報をハッシュ計算部１４に与える。試行回数カウンタ１２は、端末１００から家庭内装置２００に対して行うサービス要求の試行回数をサービス毎にカウントして保持する。試行回数カウンタ１２は、端末１００がサービスを要求する際に、そのサービス要求の現在の試行回数をハッシュ計算部１４に与える。
【００６６】
ハッシュ計算部１４は、端末１００が要求するサービスに対応づけられたサービス乱数を共有情報記憶部１６０から読み出す。また、ハッシュ計算部１４には、ユーザの入力によりサービスパスワードも与えられる。ハッシュ計算部１４は、サービス乱数もしくはサービスパスワードに、タイマ１０から与えられた現在時刻情報と試行回数カウンタ１２から与えられたサービス要求の試行回数を組み合わせて、サービス認証に用いるハッシュ値を生成する。ハッシュ計算部１４は、生成したハッシュ値をポート選択部１６とパケット処理部１２０に与える。
【００６７】
ポート選択部１６は、端末１００が要求するサービスに対応づけられた共有ポート候補を共有情報記憶部１６０から読み出し、ハッシュ計算部１４により計算されたハッシュ値を所定の演算規則により演算した結果にもとづいて、共有ポート候補の中から１つのポート番号を宛先ポート番号として一意に選択する。ポート選択部１６は、選択されたポート番号を、家庭内装置２００にサービスを要求する際のパケットの宛先ポート番号としてパケット処理部１２０に与える。
【００６８】
パケット処理部１２０には、サービス認証に用いられるハッシュ値と、ハッシュ値を家庭内装置２００に送信するときに使用される宛先ポートが与えられる。パケット処理部１２０は、与えられたハッシュ値を指定された宛先ポートに送るためのパケットを生成し、家庭内装置２００に送信する。
【００６９】
図６は、家庭内装置２００のポート設定部２５０の構成を説明する図である。ポート設定部２５０は、端末１００がサービス認証のために送信したハッシュ値をパケット処理部２２０から受け取り、ハッシュ値を照合することによりサービス認証を行う。
【００７０】
サービス認証が成功すると、ポート設定部２５０は、共有情報記憶部２６０に保持された共有情報に現在時刻とサービス要求の試行回数を組み合わせ、端末１００と同じ規則に当てはめることにより、家庭内装置２００が端末１００からのサービス要求を受信する際のサービスポートを一意に決定する。ポート設定部２５０は、端末１００がサービス要求の際にパケットに指定した宛先ポートの情報をパケット処理部２２０から受け取り、その宛先ポートをサービスポートと比較することにより、端末１００が正しい宛先ポートを使用しているかどうかを判定する。
【００７１】
タイマ２０は、家庭内装置２００における時刻情報を保持し、現在時刻情報をハッシュ計算部２４に与える。試行回数カウンタ２２は、端末１００から家庭内装置２００に対して行われるサービス要求の試行回数になるであろう回数をサービス毎にカウントして保持する。試行回数カウンタ２２は、端末１００からサービスの要求があった場合に、そのサービスの現在の試行回数をハッシュ計算部２４に与える。
【００７２】
ハッシュ計算部２４は、ユーザが利用するサービスに対応づけられたサービス乱数を共有情報記憶部２６０から読み出す。また、ハッシュ計算部２４は、ユーザ登録の際に設定されたサービスパスワードを共有情報記憶部２６０から読み出す。ハッシュ計算部２４は、サービス乱数もしくはサービスパスワードに、タイマ２０から与えられた現在時刻情報と試行回数カウンタ２２から与えられたサービス要求の試行回数を組み合わせてハッシュ関数により変換することにより、サービス認証に用いるハッシュ値を求める。ハッシュ計算部２４は、求めたハッシュ値をハッシュ判定部２６とポート判定部２８に与える。
【００７３】
パケット処理部２２０は、端末１００がサービス認証のために家庭内装置２００に送信したハッシュ値を受信し、ハッシュ判定部２６に与える。ハッシュ判定部２６は、ハッシュ計算部２４により計算されたハッシュ値と、端末１００から受信されたハッシュ値とが一致するかどうか判定する。もし一致すれば、端末１００が正しい共有情報をもっていることがわかる。一致しなければ、正しい共有情報を持っていない端末からの不正なサービス要求であることがわかる。
【００７４】
ハッシュ判定部２６は、２つのハッシュ値が一致する場合に、ポート判定部２８に端末１００が接続に使用しようとしている宛先ポートが正しいかどうかを判定させる。
【００７５】
ポート判定部２８は、端末１００が要求するサービスに対応づけられた共有ポート候補を共有情報記憶部２６０から読み出し、ハッシュ計算部２４により計算されたハッシュ値を所定の演算規則により演算した結果にもとづいて、共有ポート候補の中から１つのポート番号をサービスポート番号として一意に選択する。この所定の演算規則は、端末１００のポート設定部１５０が宛先ポートの決定に用いた演算規則と同じである。ポート判定部２８は、共有ポート候補の中から選択されたサービスポート番号と、端末１００がサービス要求の際にパケットに指定した宛先ポート番号とが一致するかどうかを判定する。
【００７６】
家庭内装置２００が保持する共有情報と端末１００が保持する共有情報が同じであれば、ポートを決めるために同じ演算規則を用いる限り、端末１００のポート設定部１５０が決定する宛先ポート番号は、家庭内装置２００のポート設定部２５０が決定するサービスポート番号に一致するはずである。両ポート番号が一致する場合、端末１００は正しいポート番号を宛先ポートとして指定しているため、ポート判定部２８は、宛先ポートを開いた状態で維持し、サービス処理部２１０は、端末１００からのサービス要求に応じる。
【００７７】
家庭内装置２００のポート設定部２５０において、ハッシュ値の照合もしくはポート番号の照合により、いずれかが一致しないことがわかった場合、家庭内装置２００のサービス処理部２１０は、端末１００からのサービス要求に応じない。
【００７８】
以上の構成の端末１００と家庭内装置２００による認証手順を説明する。端末１００は家庭内装置２００にサービスの要求を行うためにあらかじめ事前認証を行っておき、その後、サービスを利用する時点でサービス認証を行う。
【００７９】
図７は、端末１００と家庭内装置２００の間で行われる事前認証の手順を示すシーケンス図である。
【００８０】
端末１００において、ユーザは事前認証のためにユーザ名とユーザパスワードを入力する（Ｓ１０）。ユーザ名とユーザパスワードは家庭内装置２００に送信される（Ｓ１２）。このとき、端末１００の事前認証要求時のタイムスタンプも家庭内装置２００に送信される。
【００８１】
家庭内装置２００は、受信したユーザ名とユーザパスワードをもとにユーザの認証を行う（Ｓ１４）。認証に成功した場合、家庭内装置２００の認証登録部２４０は、共有情報を生成し、共有情報記憶部２６０に登録する（Ｓ１６）。
【００８２】
認証登録部２４０は、ユーザに利用を許可するサービス毎に、サービス乱数を生成し、そのサービスで使用可能なポート番号を共有ポート候補として生成し、共有情報記憶部２６０に登録する。また、認証登録部２４０は、端末１００から取得した事前認証要求時のタイムスタンプを共有端末時刻情報として共有情報記憶部２６０に登録し、同時に家庭内装置２００の事前認証時のタイムスタンプも共有家庭内装置時刻情報として共有情報記憶部２６０に登録する。
【００８３】
家庭内装置２００は、共有情報記憶部２６０に登録した共有情報を端末１００に送信する（Ｓ１８）。
【００８４】
端末１００の事前認証部１４０は、家庭内装置２００から受信した共有情報を共有情報記憶部１６０に保存する（Ｓ２０）。
【００８５】
上記の事前認証の手順は、端末１００が任意のタイミングで開始することができる。たとえば、新規サービスが家庭内装置２００に登録されても、端末１００側で情報が更新されないままになっていることがあるから、端末１００は、事前認証を行い、情報を更新する必要がある。また、端末時刻を途中で変更したなどにより、以前の共有端末時刻では認証がうまくいかなくなった場合にも、端末１００は、事前認証から開始する。ただし、セキュリティ上、端末１００は定期的に事前認証を行い、共有情報を新たな値に変更する必要は特にない。事前認証が第三者によって行われたなら、サービス認証で失敗するからであり、また、仮にサービス認証を行っても事前認証で得られる共有情報が知られることはないからである。
【００８６】
図８および図９は、端末１００が家庭内装置２００にサービス要求を行う際のサービス認証の手順を示すシーケンス図である。サービス認証はサービス乱数による認証とサービスパスワードによる認証の２段階で行われる。
【００８７】
図８は、サービス乱数による認証の手順を示すシーケンス図である。
【００８８】
端末１００において、ユーザはサービスを選択する（Ｓ３０）。端末１００の表示装置の画面にはサービスを選択するメニューなどが表示される。ユーザがいずれかのサービスを選択すると、そのサービスを利用するためのパスワードの入力画面が表示され、ユーザはサービスパスワードを入力する（Ｓ３１）。サービスパスワードはユーザが端末１００から利用できる全サービスに共通のものであってもよく、利用するサービス毎に異なっていてもよい。
【００８９】
ここでは、ユーザは図４（ａ）の「録画」を選択したとする。このとき、ポート設定部１５０は、サービス名「録画」に対応付けられたサービス乱数Ａと、共有ポート候補「２０００、２００５、２００６、２００７、３０００」を共有情報記憶部１６０から読み取る。
【００９０】
ポート設定部１５０のハッシュ計算部１４は、タイマ１０から与えられた現在端末時刻、試行回数カウンタ１２から与えられたサービス要求の試行回数、および共有情報記憶部１６０から読み出されたサービス乱数にもとづいて、ハッシュ値を算出する（Ｓ３２）。
【００９１】
具体的には、ハッシュ計算部１４は、現在端末時刻、試行回数およびサービス乱数を連結したデータ列（以下、このデータ列を「現在端末時刻＋試行回数＋サービス乱数」と表記する）を所定のハッシュ関数により変換し、ハッシュ値を取得する。ハッシュ関数は、与えられた原文から固定長の疑似乱数を生成する関数であり、不可逆な一方向関数であるため、生成されたハッシュ値から原文を推定することはできない。このハッシュ関数の性質を利用すれば、ハッシュ値を端末１００から家庭内装置２００に送信しても、ハッシュ値のもととなったサービス乱数が盗まれる心配がない。
【００９２】
ハッシュ計算部１４により求められた「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値が１６進数表現で４ｆ７６ｄｅａ５４ｄｃ８１８ｅ３７６９６５７４５５４ｆ３９ｂａｆ０ｂ５４６ｃｄ８であったとする。
【００９３】
ハッシュ計算部１４は、ユーザが入力したサービスパスワードのデータ列（以下、このデータ列を「サービスパスワード」と表記する）をハッシュ関数により変換し、ハッシュ値を取得する。
【００９４】
ハッシュ計算部１４により求められた「サービスパスワード」のハッシュ値が１６進数表現で３６８７１ｆｄ７２０４ｆ７９９８ｃ８１ｃ１ｄ００２３２ｃｅ３８６９７ｃｂｄ６ｂ３であったとする。
【００９５】
ポート選択部１６は、ポート番号を決める規則の一例として、「サービスパスワード」のハッシュ値の先頭の１６進数の値が、「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値に最初に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ３４）。
【００９６】
上記の例では、「サービスパスワード」のハッシュ値の先頭の１６進数の値は３であり、「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値において「３」が最初に現れる桁は先頭から１６番目である。ポート選択部１６は、この桁番号「１６」を共有ポート候補の個数５で割り算し、その剰余１を求め、この剰余１を共有ポート候補を選ぶ番号として使用する。ポート選択部１６は、共有ポート候補のリスト「２０００、２００５、２００６、２００７、３０００」の中から、剰余１に対応する第１番目の２００５番ポートを選択する。ここで、共有ポート候補の最初のポート番号は０番として数えている。
【００９７】
なお、「サービスパスワード」のハッシュ値の先頭の１６進数の値が、「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値に存在しない場合は、「サービスパスワード」のハッシュ値の２番目の１６進数の値を用いて同様の手続きにより共有ポート候補のリストから１つのポートを一意に選択する。
【００９８】
上記のハッシュ計算で用いられる現在端末時刻は、一例として５分単位の時刻とする。たとえば、端末１００の現在時刻が１６時０分０秒から１６時４分５９秒までの間である場合、現在端末時刻としては、同一の１６時０分を利用することにする。したがって、この５分間はハッシュ値は同じになり、選択されるポート番号は変化しない。なお、端末１００と家庭内装置２００の間で現在時刻のずれがあるため、端末１００と家庭内装置２００がそれぞれ同一の規則で決定するポート番号が一致するように、５分単位の切り替わりのタイミングでは、そのタイミングの前後の５分間のそれぞれのハッシュ値により決まるポート番号がともに有効になるようにしてもよい。
【００９９】
上記のように、サービス乱数をもとにしたハッシュ値に対してサービスパスワードをもとにしたハッシュ値が組み合わせることにより、ポートを決定する手順の秘匿性が一層高まる。
【０１００】
なお、「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値に「サービスパスワード」のハッシュ値を組み合わせて共有ポート候補の中から１つのポートを選択する手順は、共有情報に当てはめる演算規則の一例であり、選択されるポートが動的にランダムに変化する限りは、これ以外の演算規則をサービス乱数に当てはめて、共有ポート候補の中から１つのポートを選択してもよい。ただし、その演算規則は、端末１００と家庭内装置２００で共通でなければならない。
【０１０１】
端末１００は、ステップＳ３４で決定された家庭内装置２００の宛先ポートである２００５番ポートに対して、「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値を送信する（Ｓ３６）。ポート番号を決めるのに用いたハッシュ値を直接送信することを避けるために、たとえば、サービス乱数を２回連結した「現在端末時刻＋試行回数＋サービス乱数＋サービス乱数」のハッシュ値を家庭内装置２００に送信するようにしてもよい。家庭内装置２００側で、端末１００から送信されるハッシュ値の計算方法がわかっているなら、サービス乱数を含むハッシュ値である限り、どのようなハッシュ値を家庭内装置２００に送ってもよい。
【０１０２】
家庭内装置２００は、ユーザを事前認証した際に登録したすべてのサービスについて、サービス乱数をもとに端末１００と同じハッシュ関数を用いてハッシュ値を計算し、端末１００から送信されてきたハッシュ値と比較し、一致するものがあるかどうか調べる。
【０１０３】
ポート設定部２５０のハッシュ計算部２４は、ユーザに許可したサービス毎に、タイマ２０から与えられた現在家庭内装置時刻、試行回数カウンタ２２から与えられたサービス要求の試行回数、および共有情報記憶部２６０から読み出されたサービス乱数にもとづいて、ハッシュ値を算出する（Ｓ３８）。
【０１０４】
具体的には、ハッシュ計算部２４は、サービス毎に、現在家庭内装置時刻、試行回数およびサービス乱数を連結したデータ列を端末１００で用いられたのものと同じハッシュ関数により変換することにより、「現在家庭内装置時刻＋試行回数＋サービス乱数」のハッシュ値を取得する。
【０１０５】
ハッシュ判定部２６は、端末１００から送信された「現在端末時刻＋試行回数＋サービス乱数」のハッシュ値と、ハッシュ計算部２４により計算された「現在家庭内装置時刻＋試行回数＋サービス乱数」のハッシュ値が一致するかどうかを、すべてのサービスについて照合する（Ｓ４０）。
【０１０６】
ここで、端末１００と家庭内装置２００のタイマは同期が取れていないために、現在端末時刻と現在家庭内装置時刻にずれがあり、一致しない可能性がある。そこで、ハッシュ計算部２４は、「現在家庭内装置時刻＋試行回数＋サービス乱数」のハッシュ値を計算する際、共有情報記憶部２６０に記録された共有端末時刻情報と共有家庭内装置時刻情報の差分を求め、現在家庭内装置時刻と現在端末時刻のずれを補正した上で、ハッシュ値の計算を行う。
【０１０７】
ハッシュ判定部２６は、ハッシュ値の一致するサービスを端末１００が選択したサービスであると特定する（Ｓ４２）。いずれのサービスについても端末１００から送られたハッシュ値と一致しない場合は、サービス認証は失敗し、端末１００によるサービス要求は拒否される。
【０１０８】
次に、ポート判定部２８は、ステップＳ４２で特定されたサービスについてハッシュ計算部２４によって計算されたハッシュ値にもとづいて共有ポート候補からポートを一意に選択する。ポートの選択手順は、端末１００側でポート設定部１５０のポート選択部１６が行う手順と同じである。
【０１０９】
ハッシュ計算部２４は、「サービスパスワード」のハッシュ値を求め、ポート判定部２８に与える。ポート判定部２８は、「サービスパスワード」のハッシュ値の先頭の値が「現在家庭内装置時刻＋試行回数＋サービス乱数」のハッシュ値に最初に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ４４）。
【０１１０】
ポート判定部２８は、ステップＳ４４においてハッシュ値にもとづいて一意に選択したポートと、端末１００がサービス要求の際にパケットのヘッダに指定した宛先ポートとが一致しているかどうか照合する（Ｓ４６）。一致していれば、端末１００が宛先ポートとして指定しているポート番号は正しいものであり、家庭内装置２００は、その宛先ポートに送信された端末１００のサービス要求を正当なものとして受け付ける。
【０１１１】
図９は、サービスパスワードによる認証手順を示すシーケンス図である。この認証手順は図８のサービス乱数による認証手順と同様である。ただし、家庭内装置２００は、図８の認証手順により端末１００が要求しているサービスを既に特定している。
【０１１２】
端末１００には、図８のステップＳ３１で既にサービスパスワードが入力されている。ポート設定部１５０のハッシュ計算部１４は、タイマ１０から与えられた現在端末時刻、試行回数カウンタ１２から与えられた試行回数、およびユーザにより入力されたサービスパスワードにもとづいて、ハッシュ値を算出する（Ｓ５０）。
【０１１３】
具体的には、ハッシュ計算部１４は、現在端末時刻、試行回数およびサービスパスワードを連結したデータ列をハッシュ関数により変換し、ハッシュ値を取得する。「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値が１６進数表現で４ｂ５ｄ６４ｂｃ７６４ａｆ９ｆｂｂ０ａｄ６３４ｄｅ２９８ｅ７４６ｂ０３７４ｅｆ６であったとする。
【０１１４】
ハッシュ計算部１４は、共有情報記憶部１６０から読み出されたサービス乱数のデータ列をハッシュ関数により変換し、ハッシュ値を取得する。「サービス乱数」のハッシュ値が１６進数表現でａ８５ａ０ｄ９４ａ４７ｅ７５９７ｂｂ３６ｂ９２１２３ｄｃａ７９ｄ１１６ａ０６ｆｄであったとする。
【０１１５】
ポート選択部１６は、ポート番号を決める規則の一例として、「サービス乱数」のハッシュ値の先頭の１６進数の値が、「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値に最初に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ５２）。
【０１１６】
上記の例では、「サービス乱数」のハッシュ値の先頭の１６進数の値はａであり、「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値において「ａ」が最初に現れる桁は先頭から１２番目である。ポート選択部１６は、この桁番号「１２」を共有ポート候補の個数５で割り算し、その剰余２を求め、この剰余を共有ポート候補を選ぶ番号として使用する。ポート選択部１６は、共有ポート候補のリスト「２０００、２００５、２００６、２００７、３０００」の中から、剰余２に対応して第２番目の２００６番ポートを選択する。
【０１１７】
なお、「サービス乱数」のハッシュ値の先頭の１６進数の値が、「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値に存在しない場合は、「サービス乱数」のハッシュ値の２番目の１６進数の値を用いて同様の手続きにより共有ポート候補のリストから１つのポートを一意に選択する。
【０１１８】
端末１００は、ステップＳ５２で決定された家庭内装置２００の宛先ポートである２００６番ポートに対して、「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値を送信する（Ｓ５４）。ポート番号を決めるのに用いたハッシュ値を直接送信することを避けるために、サービスパスワードを２回連結した「現在端末時刻＋試行回数＋サービスパスワード＋サービスパスワード」のハッシュ値を家庭内装置２００に送信するようにしてもよい。
【０１１９】
家庭内装置２００のポート設定部２５０のハッシュ計算部２４は、タイマ２０から与えられた現在家庭内装置時刻、試行回数カウンタ２２から与えられたサービス要求の試行回数、およびユーザにより入力されたサービスパスワードにもとづいて、ハッシュ値を算出する（Ｓ５６）。
【０１２０】
家庭内装置２００は、図８のステップＳ４２において、既に端末１００の要求するサービスを特定している。ハッシュ計算部２４は、端末１００の要求するサービスのサービス乱数を共有情報記憶部２６０から読み出し、現在家庭内装置時刻、試行回数およびサービスパスワードを連結したデータ列を端末１００で用いられたものと同じハッシュ関数により変換することで、「現在家庭内装置時刻＋試行回数＋サービスパスワード」のハッシュ値を取得する。
【０１２１】
ハッシュ判定部２６は、端末１００から送信された「現在端末時刻＋試行回数＋サービスパスワード」のハッシュ値と、ハッシュ計算部２４により計算された「現在家庭内装置時刻＋試行回数＋サービスパスワード」のハッシュ値が一致するかどうか照合する（Ｓ５８）。ハッシュ値が一致すれば、サービスパスワードによる認証は成功である。
【０１２２】
さらに、ポート判定部２８は、ハッシュ計算部２４によって計算されたハッシュ値にもとづいて共有ポート候補からポートを一意に選択する。ポート番号の選択手順は、端末１００側でポート設定部１５０のポート選択部１６が行う手順と同じである。
【０１２３】
ハッシュ計算部２４は、「サービス乱数」のハッシュ値を求め、ポート判定部２８に与える。ポート判定部２８は、「サービス乱数」のハッシュ値の先頭の値が「現在家庭内装置時刻＋試行回数＋サービスパスワード」のハッシュ値に最初に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ６０）。
【０１２４】
ポート判定部２８は、ステップＳ６０においてハッシュ値にもとづいて一意に選択したポートと、端末１００が送信するパケットのヘッダに指定した宛先ポートとが一致しているかどうか照合する（Ｓ６２）。一致していれば、端末１００が宛先ポートとして指定しているポート番号は正しいものであり、家庭内装置２００は、その宛先ポートに送信された端末１００からのサービス要求を受理する（Ｓ６４）。
【０１２５】
以降、サービスパスワードに関するハッシュ値にもとづいて一意に選択されたポート２００６番を用いて、端末１００と家庭内装置２００の間で受理されたサービスに関する通信が行われる。図８のサービス乱数に関するハッシュ値にもとづいて一意に選択されたポート２００５番を用いて、端末１００と家庭内装置２００の間で受理されたサービスに関する通信が行われてもよい。
【０１２６】
上記の手順において、家庭内装置２００は、サービスパスワードの認証の有効時間をたとえば１分に限定し、１分以内に認証がなされない場合、認証を無効にすることもできる。
【０１２７】
また、ハッシュ値は時刻によって変化するが、ポート番号が変化しない５分間の期間では、同じサービスパスワードを使用すれば同じハッシュ値が得られる。正規ユーザが正常に認証を終了した後、第三者が同じハッシュ値を送信することによってなりすましによるリプレイ攻撃を行うことを防ぐために、認証後にそのポート番号を無効にするか、試行回数をカウントアップすることで、ハッシュ値が変化しない５分間におけるリプレイ攻撃を防ぎ、かつ、正規ユーザがその５分間にもう一度サービスを受けることを可能とする。
【０１２８】
上述のように事前認証とサービス認証という２段階の認証方法を採用したことにより、ユーザは事前認証を行わなければ共有情報を得ることができず、そのためサービス要求の際に宛先ポートを正しく決定することができない。したがって、第三者が不正にサービス要求をしようとしても正しい宛先ポートにパケットを送信することができず、不正侵入を防止することができる。また、宛先ポートはサービス毎に動的に変化するため、特定のポートへの繰り返し攻撃に対して防御することができる。
【０１２９】
仮に第三者がユーザ名とユーザパスワードを盗んだり、パスワード破りを行って、不正に事前認証を行ったとしても、家庭内装置２００内のサービスを利用するには、さらにサービスパスワードの入力が必要であり、セキュリティが二重化されており、安全性が高い。また、第三者が事前認証を行った場合、共有情報が更新されるため、正規ユーザはサービス認証を成功させることができなくなる。このことにより、正規ユーザは自分以外の何者かによって事前認証が行われたことを知ることができるので、ユーザはユーザパスワードを変更するなどの対策を取る余裕をもつことができる。
【０１３０】
第三者によって事前認証が行われたことをユーザが認識する方法として次の２つがある。一つは、家庭内で家庭内装置２００のスイッチを入れて操作しようとしたときに、画面に事前認証が行われたことを事前認証の日時などの情報とともに示す方法である。これにより、ユーザは自分以外の誰かが不正に事前認証を行ったことを知ることができる。このとき、ユーザはパスワードを変更した上で、新たに事前認証を行い、端末１００と家庭内装置２００の共有情報を更新することで不正侵入を防ぐことができる。
【０１３１】
別の方法は、端末１００と家庭内装置２００の間で共有されている共通乱数が一致するかどうか照合することで、ユーザが知らない間に新たな事前認証がなされたかどうかを調べることである。
【０１３２】
もっとも、新たな事前認証がなされていると、端末１００と家庭内装置２００の間で共有情報が一致しなくなっているから、図８もしくは図９のサービス認証の手順を実行したときに、サービス認証が成功しないことから、自分以外の誰かが事前認証を行って家庭内装置２００に新たな共有情報が設定されたことを間接的に知ることができる。しかし、図８および図９のサービス認証の手順では、ユーザがサービスパスワードの入力を行うことが必要であり、ユーザがサービスパスワードを誤って入力した場合も認証が成功しないため、サービスパスワードの誤入力と不正な事前認証との区別がつかない。
【０１３３】
一方、共通乱数による認証は、ユーザの入力を一切必要としないため、ユーザによる誤入力の可能性を排除して、新たに事前認証がなされたかどうかを正確に把握することができる。以下では、共通乱数による認証を用いて、不正な事前認証の有無を検出する手順を説明する。
【０１３４】
図１０は、第三者により事前認証がなされたかどうかを判定する手順を示すシーケンス図である。
【０１３５】
端末１００において、ポート設定部１５０のハッシュ計算部１４は、タイマ１０から与えられた現在端末時刻、試行回数カウンタ１２から与えられたサービス要求の試行回数、および共有情報記憶部１６０から読み出された共通乱数にもとづいてハッシュ値を算出する（Ｓ７０）。
【０１３６】
ハッシュ計算部１４は、現在端末時刻、試行回数および共通乱数を連結したデータ列をハッシュ関数により変換し、ハッシュ値を取得する。「現在端末時刻＋試行回数＋共通乱数」のハッシュ値が１６進数表現で２８６５９ｂａ８ａｃｂｆ５３５ｅｆｄ８５３ａｂｆｄ３ｄｄ２４ｄｅｄｅ５ｄｃ１ａ７であったとする。
【０１３７】
ハッシュ計算部１４は、共有情報記憶部１６０から読み出された共通乱数のデータ列をハッシュ関数により変換し、ハッシュ値を取得する。「共通乱数」のハッシュ値が１６進数表現でｄ８５５４２７３ｃ４ｄ４０８８１ａ６８８９ａ８３２８０６９ｂｅ７０１５１ｂ３３ａであったとする。
【０１３８】
ポート選択部１６は、「共通乱数」のハッシュ値の先頭の１６進数の値が、「現在端末時刻＋試行回数＋共通乱数」のハッシュ値に最初に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ７２）。
【０１３９】
上記の例では、「共通乱数」のハッシュ値の先頭の１６進数の値はｄであり、「現在端末時刻＋試行回数＋共通乱数」のハッシュ値において「ｄ」が最初に現れる桁は先頭から１８番目である。ポート選択部１６は、この桁番号「１８」を共有ポート候補の個数５で割り算し、その剰余３を求め、この剰余３を共有ポート候補を選ぶ番号として使用する。ポート選択部１６は、共有ポート候補のリスト「２０００、２００５、２００６、２００７、３０００」の中から、剰余３に対応する第３番目の２００７番ポートを選択する。
【０１４０】
端末１００は、ステップＳ７２で決定された家庭内装置２００の宛先ポートである２００７番ポートに対して、「現在端末時刻＋試行回数＋共通乱数」のハッシュ値を送信する（Ｓ７４）。共通乱数のハッシュ値は家庭内装置２００に送信されないため、安全である。
【０１４１】
家庭内装置２００のポート設定部２５０のハッシュ計算部２４は、タイマ２０から与えられた現在家庭内装置時刻、試行回数カウンタ２２から与えられたサービス要求の試行回数、および共有情報記憶部２６０から読み出された共通乱数にもとづいて、ハッシュ値を算出する（Ｓ７６）。
【０１４２】
ハッシュ計算部２４は、現在家庭内装置時刻、試行回数および共通乱数を連結したデータ列を端末１００で用いられたものと同じハッシュ関数により変換することで、「現在家庭内装置時刻＋試行回数＋共通乱数」のハッシュ値を取得する。
【０１４３】
ハッシュ判定部２６は、端末１００から送信された「現在端末時刻＋試行回数＋共通乱数」のハッシュ値と、ハッシュ計算部２４により計算された「現在家庭内装置時刻＋試行回数＋共通乱数」のハッシュ値が一致するかどうかを照合する（Ｓ７８）。ハッシュ値が一致すれば、端末１００と家庭内装置２００がそれぞれ保持する共通乱数は一致しており、新たな事前認証はなされていないことがわかる。
【０１４４】
さらに、ポート判定部２８は、ハッシュ計算部２４によって計算されたハッシュ値にもとづいて共有ポート候補からポートを一意に選択する。ポート番号の決定手順は、端末１００側でポート設定部１５０のポート選択部１６が行う手順と同じである。
【０１４５】
ハッシュ計算部２４は、「共通乱数」のハッシュ値を求め、ポート判定部２８に与える。ポート判定部２８は、「共通乱数」のハッシュ値の先頭の値が「現在家庭内装置時刻＋試行回数＋共通乱数」のハッシュ値に現れる桁を求め、その桁番号を共有ポート候補の個数で割ったときの剰余を求め、その剰余の値で共有ポート候補の中からポートを一意に決定する（Ｓ８０）。
【０１４６】
ポート判定部２８は、ステップＳ８０においてハッシュ値にもとづいて一意に選択したポートと、端末１００が送信するパケットのヘッダに指定された宛先ポートとが一致しているかどうか照合する（Ｓ８２）。一致していれば、端末１００が宛先ポートとして指定しているポートは正しいことがわかる。
【０１４７】
共通乱数からポート番号を決定する手順では、ユーザから入力されるデータを一切使用していないので、共通乱数が正しければ、必ず正しいポートに接続され、家庭内装置２００において共通乱数の一致が確認される。共通乱数による認証が成功した場合、家庭内装置２００は端末１００に認証の成功を通知する。
【０１４８】
家庭内装置２００において共通乱数が一致しないことがわかった場合、それは、別の事前認証が実行されたことを意味する。このときは、端末１００に認証の失敗を通知する。
【０１４９】
以上の共通乱数を用いた認証により、端末１００において、第三者による事前認証がなされたかどうかがわかり、ユーザは不正侵入を防止するための対策を講ずることができる。
【０１５０】
以上述べたように、本実施の形態によれば、端末１００が家庭内装置２００の提供するサービスを受ける際、サービスを提供するための特定のサービスポートが固定的に決まっているのではなく、サービスポートは、同じサービスであっても、サービス要求の度に動的に変化する。サービスポート番号は、端末１００と家庭内装置２００が共有する情報を用いて、所定の演算規則で決められるため、共有情報や演算規則を知られない限り、サービスポート番号を事前に知られることはない。これにより、サービスポートへの不正な侵入を防ぐことができる。
【０１５１】
また、家庭内装置２００は、攻撃を受けたサービスポートを閉じてもよく、その場合、候補となるポート番号から別のサービスポートが利用されるため、サービスの提供に支障を来さない。また、家庭内装置２００は、複数のポート番号の候補の中で、自らランダムにあるポートを停止したり、開いたりすることもできるため、攻撃に対する防御性能をさらに高めることができる。このとき、家庭内装置２００の試行回数はインクリメントされる。
【０１５２】
なお、家庭内装置２００が自らランダムにポートを停止した場合、端末１００が試行回数１で対象のポートにサービス要求を送った場合、対象ポートが閉じているとコネクションエラーとなるが、端末１００は第２の接続先ポートを２回目の試行において試すことができる。一方、家庭内装置２００は端末１００からの最初の試行を受けて、端末１００が試行回数２で接続したときにつながるように、あらかじめ家庭内装置２００内の試行回数をインクリメントし、次に端末１００が接続してくるポートを開いて、端末１００からの接続要求を待機することもできる。
【０１５３】
第三者からは、家庭内装置２００においてサービスを受け付けるポートがサービス要求の度にランダムに変更されているかのように見えており、開いているポートが動的に変化するため、サービスポートを推測されにくくなり、特定ポートへのＤｏＳ攻撃を緩和することができる。また、攻撃を受けたポートは閉じてしまい、他の共有ポート候補でサービスを受け付けるようにすれば、攻撃を免れることができる。
【０１５４】
また、ユーザパスワードによる事前認証と、サービスを受けるための認証とが別に設けられており、二段階で認証が行われるため、ユーザパスワードが仮に破られることがあっても、第三者により事前認証がなされたことを正規ユーザに通知し、パスワードを変更する余裕を与えることでサービスが不正に利用されるのを防ぐことができる。
【０１５５】
また、ポート番号を家庭内の各種機器に対応づけ、たとえば２０００番ポートは機器Ａ、２００１番ポートは機器Ｂに割り当てておけば、家庭内ネットワークと外部ネットワークの接続ポイントにあるルータが、接続段階でポートによって振り分けることができる。これにより、アプリケーション層を介在させずにトランスポート層においてポート番号によるルーティングが可能である。
【０１５６】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【０１５７】
家庭内装置２００は、共有情報、現在時刻およびサービス要求の試行回数の組み合わせにもとづいて動的に一意に決まるサービスポートのみをその有効期間内だけ開いた状態にして待機し、共有ポート候補であってもその時刻では無効であるサービスポートは閉じた状態で待機してもよい。あるいは、家庭内装置２００は、各サービスの共有ポート候補であるサービスポートをすべて開いた状態で待機してもよい。いずれの場合でも、端末１００は、ハッシュ値によるサービス認証を経る必要があり、ある時刻において一意に決定されるサービスポート番号と一致する宛先ポートを端末１００が使用していない限り、端末１００からのサービス要求は正当なものとして受理されない。
【０１５８】
また、家庭内装置２００がルータを経由してネットワーク４００に接続する形態の場合、ルータにおいてサービスポートが開いている状態になっている必要がある。そのために、ユーザが、手動でルータの設定を行い、サービス毎の共有ポート候補を最初からすべて開いている状態にしてもよく、ＵＰｎＰ（Universal Plug and Play）（商標または登録商標）に対応したルータであれば、家庭内装置２００から自動的にサービス毎に共有ポート候補をすべて開くようにルータに設定してもよい。あるいは、家庭内装置２００は、各時刻において、有効なサービスポートを開き、無効なサービスポートは閉じるといった制御をＵＰｎＰ対応ルータに対して行ってもよい。
【０１５９】
上記の説明では、サービス認証を経て、端末１００と家庭内装置２００が、認証されたサービスに関する通信をサービス認証の際に動的に決められたサービスポートを利用して行った。たとえば、ゲーム２を家庭内装置２００にインストールした場合、４０００、５０００、６０００番のポートが端末１００と家庭内装置２００の間でポート候補として事前認証によって共有されるが、それらのポート番号はサービス認証を経て初めて使用可能となるものであり、外部からは閉じているように見える。一方、サービス認証を経ると、共有ポート候補のいずれかがサービスポートに決まり、以降、ゲームに関する通信がそのサービスポートで行われ、外部からもそのサービスポートは開いているように見える。このように、サービス認証を経てサービスポートを利用可能に制御することは、一種のファイアウォールの機能を提供することになる。
【０１６０】
この場合、サービス認証が成功した後、端末１００と家庭内装置２００がサービスに関して行う通信に関してはサービスポートは固定されていることになるが、端末１００と家庭内装置２００の間で長時間にわたって接続が維持される場合に、本発明のサービスポートを動的に変更する手順を適用して、サービスの途中でポート番号を変更するようにしてもかまわない。
【０１６１】
上記の実施の形態では、遠隔操作システムを例に挙げて、共有情報を用いてポート番号を動的に変更するための構成と手順を説明したが、本発明は、遠隔操作に限らず、任意の目的の通信システムにも一般的に適用することができる。たとえば、クライアントサーバ型の通信システムや、ピアツーピア型の通信システムにおいても一般的に適用することができる。また、実施の形態では、ポート番号を動的に変更することを説明したが、ＩＰアドレスやＵＲＬ（Uniform Resource Locator）などの通信先アドレスの動的変更にも本発明を適用することができる。
【図面の簡単な説明】
【０１６２】
【図１】実施の形態に係る遠隔操作システムの構成図である。
【図２】実施の形態に係る端末の構成図である。
【図３】実施の形態に係る家庭内装置の構成図である。
【図４】図２の端末と図３の家庭内装置がそれぞれ保持する共有情報を説明する図である。
【図５】図２の端末のポート設定部の構成を説明する図である。
【図６】図３の家庭内装置のポート設定部の構成を説明する図である。
【図７】図２の端末と図３の家庭内装置の間で行われる事前認証の手順を示すシーケンス図である。
【図８】図２の端末が図３の家庭内装置にサービス要求を行う際のサービス乱数による認証手順を示すシーケンス図である。
【図９】図２の端末が図３の家庭内装置にサービス要求を行う際のサービスパスワードによる認証手順を示すシーケンス図である。
【図１０】図２の端末と図３の家庭内装置が、第三者により事前認証がなされたかどうかを判定する手順を示すシーケンス図である。
【符号の説明】
【０１６３】
１０  タイマ、  １２  試行回数カウンタ、  １４  ハッシュ計算部、  １６  ポート選択部、  ２０  タイマ、  ２２  試行回数カウンタ、  ２４  ハッシュ計算部、  ２６  ハッシュ判定部、  ２８  ポート判定部、  １００  端末、  １１０  サービス要求部、  １２０  パケット処理部、  １３０  通信部、  １４０  事前認証部、  １５０  ポート設定部、  １６０  共有情報記憶部、  ２００  家庭内装置、  ２１０  サービス処理部、  ２２０  パケット処理部、  ２３０  通信部、  ２４０  認証登録部、  ２５０  ポート設定部、  ２６０  共有情報記憶部、  ３００  サーバ、  ４００  ネットワーク。
【図１】
2007049262.tif 000003
【図２】
2007049262.tif 000004
【図３】
2007049262.tif 000005
【図４】
2007049262.tif 000006
【図５】
2007049262.tif 000007
【図６】
2007049262.tif 000008
【図７】
2007049262.tif 000009
【図８】
2007049262.tif 000010
【図９】
2007049262.tif 000011
【図１０】
2007049262.tif 000012