(57)【要約】      （修正有）【課題】  利用者が共有鍵を更新せずとも、通信した相手から次回の通信の暗号化に用いる共有鍵の種を取得し、共有鍵を自動的に更新して通信内容の第三者による盗聴を防止する。【解決手段】  暗号化通信に用いる共有鍵を機器側で固定的に持たずに、通信の都度、通信の相手装置から共有鍵生成の種となるデータを受信して記憶し、この種に基づいて共有鍵を自動的に生成して共有する暗号鍵共有装置、暗号鍵共有方法、およびプログラム、通信機器を提供する。【選択図】  図７
2005268903.tif 000002
【特許請求の範囲】
【請求項１】
暗号化通信すべき相手装置から、第１の値を含む通信データを受信する受信手段と、
前記第１の値を記憶する記憶手段と、
前記記憶手段に記憶した第１の値に基づいて、前記相手装置との間で通信する通信データの暗号化に使用するための第２の値を生成する共有鍵生成手段と、
前記第２の値を含む通信データを、前記相手装置に送信する送信手段と
を備えたことを特徴とする暗号鍵共有装置。
【請求項２】
暗号化通信すべき相手装置から、第１の値を含む通信データを受信する受信手段と、
前記第１の値を記憶する記憶手段と、
予め定めた規則に従って数値を生成する数値生成手段と、
前記記憶手段に記憶した第１の値及び前記生成した数値に基づいて、前記相手装置との間で通信する通信データの暗号化に使用するための第２の値を生成する共有鍵生成手段と、
前記第２の値を含む通信データを、前記相手装置に送信する送信手段と
を備えたことを特徴とする暗号鍵共有装置。
【請求項３】
前記相手装置が公開する公開鍵によって、与えられたデータを暗号化する暗号化手段をさらに備え、
前記送信手段が送信する通信データに含まれる前記第２の値は、前記暗号化手段によって暗号化されていることを特徴とする、請求項１または２に記載の暗号鍵共有装置。
【請求項４】
前記第１の値が前記記憶手段に記憶されていない場合には、前記共有鍵生成手段が前記第２の値を生成するのに先立って、予め定めた規則に従って該第１の値を生成し、前記記憶手段に記憶する手段をさらに備えたことを特徴とする請求項１または２に記載の暗号鍵共有装置。
【請求項５】
記憶装置に記憶した第１の値に基づいて、暗号化通信すべき相手装置との間で通信する通信データの暗号化に使用する第２の値を生成し、
前記第２の値を含む通信データを前記相手装置に送信し、
前記相手装置から第３の値を受信し、
第２の値を次に生成するときのために該第３の値を第１の値として前記記憶装置に記憶する
ことを特徴とする暗号鍵共有方法。
【請求項６】
予め定めた規則に従って数値を生成し、
記憶装置に記憶した第１の値と前記生成した数値に基づいて、暗号化通信すべき相手装置との間で通信する通信データの暗号化に使用する第２の値を生成し、
前記第２の値を含む通信データを前記相手装置に送信し、
前記相手装置から第３の値を受信し、
第２の値を次に生成するときのために該第３の値を第１の値として前記記憶装置に記憶する
ことを特徴とする暗号鍵共有方法。
【請求項７】
前記通信データを送信する前に、該通信データに含まれる前記第２の値を、前記相手装置が公開する公開鍵によって暗号化する
ことを特徴とする請求項５または６に記載の暗号鍵共有方法。
【請求項８】
前記第２の値を生成する前に、前記第１の値を記憶しているか否かを判断し、記憶して
いないと判断した場合には、予め定めた規則に従って前記第１の値を生成して記憶する
ことを特徴とする請求項５または６に記載の暗号鍵共有方法。
【請求項９】
クライアント装置とこの装置が通信すべきサーバ装置との間の暗号化通信に使用される暗号鍵を共有するための暗号鍵共有方法であって、
前記クライアント装置は、記憶装置に記憶した第１の値に基づいて、前記サーバ装置との間の通信データの暗号化に使用する第２の値を生成し、
前記第２の値を含む通信データを前記サーバ装置に送信し、
前記サーバ装置は、該通信データを受信して前記第２の値が正しく受信できたか否かを求め、正しく受信できた場合には前記クライアント装置に対して、第２の値の生成に使用する第３の値を含む通信データを送信し、
前記クライアント装置は、該通信データを受信し、
該通信データに含まれる第３の値を第１の値として前記記憶装置に記憶する
ことを特徴とする暗号鍵共有方法。
【請求項１０】
前記クライアント装置は、前記第２の値を含む通信データを送信した後、前記サーバ装置に対しさらに暗号化通信を開始する旨の要求を送信し、
前記サーバ装置は前記第３の値を含む通信データを送信する際、前記第２の値を含む通信データを受信してから所定の時間内に、前記クライアント装置からさらに前記暗号化通信を開始する旨の要求を受信したことを条件に、該送信をすることを特徴とする請求項９に記載の暗号鍵共有方法。
【請求項１１】
記憶装置に記憶した第１の値に基づいて、暗号化通信すべき相手装置との間で通信する通信データの暗号化に使用する第２の値を生成するステップと、
前記第２の値を含む通信データを前記相手装置に送信するステップと、
前記相手装置から第３の値を受信するステップと、
第２の値を次に生成するときのために該第３の値を第１の値として前記記憶装置に記憶するステップと
を有することを特徴とする、計算機で実行可能なプログラム。
【請求項１２】
予め定めた規則に従って数値を生成するステップと、
記憶装置に記憶した第１の値と前記生成した値に基づいて、暗号化通信すべき相手装置との間で通信する通信データの暗号化に使用する第２の値を生成するステップと、
前記第２の値を含む通信データを前記相手装置に送信するステップと、
前記相手装置から第３の値を受信するステップと、
第２の値を次に生成するときのために該第３の値を第１の値として前記記憶装置に記憶するステップと
を有することを特徴とする、計算機で実行可能なプログラム。
【請求項１３】
前記通信データを送信するステップの前に、該通信データに含まれる前記第２の値を、前記相手装置が公開する公開鍵によって暗号化するステップをさらに有する
ことを特徴とする請求項１１または１２に記載の、計算機で実行可能なプログラム。
【請求項１４】
前記第２の値を生成するステップの前に、前記第１の値を記憶しているか否かを判断するステップと、
記憶していないと判断した場合には、予め定めた規則に従って前記第１の値を生成して記憶するステップと
をさらに有することを特徴とする請求項１１または１２に記載の、計算機で実行可能なプログラム。
【請求項１５】
暗号化通信すべき相手装置から、第１の値を含む通信データを受信する受信手段と、
前記第１の値を記憶する記憶手段と、
前記記憶手段に記憶した第１の値に基づいて、前記相手装置との間で通信する通信データの暗号化に使用するための第２の値を生成する共有鍵生成手段と、
前記第２の値を含む通信データを、前記相手装置に送信する送信手段と
前記相手装置との間で通信する通信データを暗号化するときの暗号鍵に、前記第２の値を使用して通信データを送受信する暗号化通信手段と
を備えたことを特徴とする通信機器。
【請求項１６】
暗号化通信すべき相手装置から、第１の値を含む通信データを受信する受信手段と、
前記第１の値を記憶する記憶手段と、
予め定めた規則に従って数値を生成する数値生成手段と、
前記記憶手段に記憶した第１の値及び前記生成した数値に基づいて、前記相手装置との間で通信する通信データの暗号化に使用するための第２の値を生成する共有鍵生成手段と、
前記第２の値を含む通信データを、前記相手装置に送信する送信手段と
前記相手装置との間で通信する通信データを暗号化するときの暗号鍵に、前記第２の値を使用して通信データを送受信する暗号化通信手段と
を備えたことを特徴とする通信機器。
【請求項１７】
前記相手装置が公開する公開鍵によって、与えられたデータを暗号化する暗号化手段をさらに備え、
前記送信手段が送信する通信データに含まれる前記第２の値は、該第２の値を前記暗号化手段によって暗号化したデータであることを特徴とする、請求項１５または１６に記載の通信機器。
【請求項１８】
前記第１の値が前記記憶手段に記憶されていない場合には、前記共有鍵生成手段が前記第２の値を生成するのに先立って、予め定めた規則に従って該第１の値を生成し、前記記憶手段に記憶する手段をさらに備えたことを特徴とする請求項１５または１６に記載の通信機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信相手と鍵情報を共有しこの鍵に基づいた暗号化通信を行う通信機器に関し、特にこの鍵情報を共有するための装置、方法、プログラム及び機器に関する。
【背景技術】
【０００２】
近年、比較的高機能な機器を安価に製造できるようになり、例えば家電機器のような従来では単体で使用されるものでもネットワークに接続して使用できるようになっているものも出てきている。反面、ネットワーク化が進むことによりネットワーク上を流れる情報を盗聴される、あるいは利用者IDを盗用されるなどして、秘匿すべき重要な情報の漏洩問題、及びネットワークを介した機器の不正な遠隔操作などが懸念されるようになってきた。
【０００３】
このような問題を回避するために、第三者からの盗聴を防止する目的で、機器間の通信を通信相手同士だけが復号出来るよう通信データを暗号化してから送受信する方法が考えられる。このとき通信相手である両者のみが知り得る、暗号化に用いる鍵を共有する必要がある。例えば公開鍵暗号方式で暗号化し、ICカードに記憶した共有鍵を遠隔に設置されたサーバと交換する方法が提案されている（特許文献１を参照）。
【特許文献１】特開２００１−０６９１３８公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、いつまでも同じ鍵情報を用いて暗号化した情報をやり取りしていたのでは、いずれこの共有鍵が解読される危険がある。あるいは共有鍵を記憶した装置自体（例えばICカード）を解析し、共有鍵が暴かれてしまうことも考えられる。さらには製造時のコスト削減から複数の機器自体に予め同じ共有鍵を設定せざるを得ない場合には、これら同じ共有鍵を持つ他の機器も同様の危険にさらされることになる。
【０００５】
本発明は上記のような問題に鑑みて成されたものであり、利用者が都度共有鍵を更新せずとも、通信した相手から次回の通信の暗号化に用いる共有鍵の種を取得することで通信相手との間で第三者に予想されにくい共有鍵に自動的に更新し、通信内容の第三者による盗聴を防止するものである。
【課題を解決するための手段】
【０００６】
本発明の暗号鍵共有装置とすれば、
暗号化通信すべき相手装置から、第１の値を含む通信データを受信する受信手段と、前記第１の値を記憶する記憶手段と、前記記憶手段に記憶した第１の値に基づいて、前記相手装置との間で通信する通信データの暗号化に使用するための第２の値を生成する共有鍵生成手段と、前記第２の値を含む通信データを、前記相手装置に送信する送信手段とを備えたことを特徴とする暗号鍵共有装置
が提供される。
【０００７】
また、この暗号鍵共有装置の方法、計算機で実現するためのプログラム、及びこの暗号鍵共有装置により暗号化通信を行う通信機器が提供される。
【０００８】
さらに、
クライアント装置とこの装置が通信すべきサーバ装置との間の暗号化通信に使用される暗
号鍵を共有するための暗号鍵共有方法であって、前記クライアント装置は、記憶装置に記憶した第１の値に基づいて、前記サーバ装置との間の通信データの暗号化に使用する第２の値を生成し、前記第２の値を含む通信データを前記サーバ装置に送信し、前記サーバ装置は、該通信データを受信して前記第２の値が正しく受信できたか否かを求め、正しく受信できた場合には前記クライアント装置に対して、第２の値の生成に使用する第３の値を含む通信データを送信し、前記クライアント装置は、該通信データを受信し、該通信データに含まれる第３の値を第１の値として前記記憶装置に記憶することを特徴とする暗号鍵共有方法
が提供される。
【発明の効果】
【０００９】
本発明によれば、利用者が都度共有鍵を更新せずとも、通信した相手から次回の通信の暗号化に用いる共有鍵の種を取得し、この種に基づいて通信相手との間で第三者に予想されにくい共有鍵を自動的に更新することで、第三者による通信内容の盗聴を防止することができる。
【発明を実施するための最良の形態】
【００１０】
（第１の実施形態）
図１は、本実施形態における通信システムの一例を示す図である。図１には機器１０１、アプリケーションサーバ１０２、設定用ＰＣ１０３、及びネットワーク１０４が示されている。
【００１１】
機器１０１は、ネットワーク１０４を介してアプリケーションサーバ１０２や設定用ＰＣ１０３と通信することができるよう、通信機能を備えている。機器１０１はネットワーク１０４を介して、他の機器から操作の指示を受け、または問合せに応じた自身の状態に関する情報を応答する。ここでは電子レンジの例を示しているが、一般的な家電製品や携帯端末などネットワーク１０４を介した通信が可能な通信機能を備えた機器であれば同様に用いることが可能である。
【００１２】
アプリケーションサーバ１０２は、ネットワーク１０４を介して機器１０１や設定用ＰＣ１０３と通信する機能を備えている。そして機器１０１からの要求に応じて、または自動的に、例えば調理レシピ等の情報を提供する。このとき機器１０１との間で共有鍵を交換し、機器１０１との間でこの共有鍵を用いた暗号化通信を行うことができる機能を備えている。アプリケーションサーバ１０２は１つの機器として設けずネットワーク１０４に接続された機器（たとえば機器１０１）が兼任しても構わない。この場合にはネットワーク１０４を介して機器同士で共有鍵を共有し、その機器の間で暗号化通信を行うことができる。
【００１３】
設定用ＰＣ１０３は、ネットワーク１０４を介して機器１０１やアプリケーションサーバ１０２と通信する機能を備えている。設定用ＰＣ１０３は主に利用者とのインタフェース、例えば画面やキーボードを備えておりネットワーク１０４を介して各機器に対して設定、状態確認、及び指示する機能を持つ。本実施形態では、例えばアプリケーションサーバ１０２への初期登録や、機器１０１の状態確認、及び機器１０１が記憶する共有鍵の更新指示などが考えられる。
【００１４】
ネットワーク１０４は、有線LAN、無線LANあるいはシリアル通信のような通信媒体のいずれか、またはそれ以外の通信媒体であっても構わない。ネットワーク１０４に接続された少なくとも２以上の機器同士が暗号化したデータを送受信可能なネットワークであれば置き換え可能である。例えば、IP(Internet Protocol)を用いたパケット通信が可能なLANを例に説明する。
【００１５】
図２は、本実施形態における通信システムの間の、通信シーケンスの一例を示す図である。
【００１６】
鍵情報を交換するにあたり、どのような機器とでも要求された場合に自動的に鍵を取り交わすのは適当ではない。なぜならばネットワークに接続さえできればデータの授受が出来てしまうとすると、悪意をもった第三者により容易にデータを盗用されてしまう可能性があるからである。また、たとえば隣家に設置されている機器が、自宅に設置された本実施形態の通信システムに接続をされてしまう、あるいはしてしまうのも問題である。
【００１７】
よって本実施形態の通信システムでは通信シーケンスの最初に、鍵を交換すべき機器の識別（機器ID）を、設定用ＰＣ１０３を使用してアプリケーションサーバ１０２に対して通知する（機器IDの通知２０１）。するとアプリケーションサーバ１０２は、この通知に対して正常に受け取ることが出来たか否かの情報を応答する（通知応答２０２）。このとき設定用ＰＣ１０３を用いずに直接アプリケーションサーバ１０２に機器IDを入力するようにしても構わない。この場合には機器IDの通知２０１、及び通知応答２０２は行われない。
【００１８】
これから鍵を共有する機器、つまり機器１０１の機器IDが正常に通知できた場合、利用者は機器１０１の動作状態をアプリケーションサーバ１０２との間で鍵情報を交換するための鍵交換モードに移行する。このモードの移行は利用者が機器１０１の動作状態を切り替える操作をしても良いが、たとえば機器１０１の電源を投入したときには自動的にこのモードになるように機器１０１を構成しても良い。電源投入時点で鍵交換モードに移行するようにしていた場合は、先の機器IDの通知２０１が完了した段階で機器１０１の電源を投入する。
【００１９】
鍵交換モードにある機器１０１は、暗号鍵である共有鍵を共有する相手、つまりアプリケーションサーバ１０２に対して鍵情報の初期値を通知する（初期鍵の通知２０３）。この鍵の初期値には、共有鍵の初期値とこの鍵の検証に使用される情報を含んでいる。この情報の詳細については後述する。このとき、送信される鍵の初期値の情報は、アプリケーションサーバ１０２が提供する公開鍵を用いて暗号化することが望ましい。情報の暗号化に用いられる公開鍵暗号方式は一般に、公開鍵と秘密鍵の二つの鍵情報を用いて暗号化／復号化する暗号化方式である。ある公開鍵で暗号化したデータは特定の秘密鍵でしか復号できず、ある秘密鍵で暗号化したデータは特定の公開鍵でしか復号できない性質がある。この性質を用いると、特定の相手にのみ正しい情報を伝えることが可能となる。暗号化の仕組み自体の詳細については、ここでは説明しない。
【００２０】
アプリケーションサーバ１０２は、接続してきた機器１０１が、先の機器IDの通知２０１で通知のあった機器IDをもつ機器であれば、機器１０１から受け取った初期鍵の通知２０３に含まれる共有鍵とこの共有鍵の検証に使用する情報とにより、この共有鍵が正しいか否かを判断し、この判断結果を通知応答２０４として機器１０１に応答する。
【００２１】
通知応答２０４を受け取った機器１０１は、先に送信した共有鍵による暗号化通信の開始を要求する（暗号化通信要求２０５）。これを受けたアプリケーションサーバ１０２は、暗号化通信要求２０５の要求を受けることができる場合には、機器１０１が次回の共有鍵を生成する際の種になる情報を含む、この通信要求を認める通信要求応答２０６を応答する。
【００２２】
上記のような手順を踏むことにより、機器１０１とアプリケーションサーバ１０２との間で共有鍵が共有される。その後、機器１０１とアプリケーションサーバ１０２は、共有
した共有鍵を用いた暗号化通信を開始するが、正常に暗号化／復号化が行われるか否かを確認するため、暗号化されたデータを送受信することで到達確認２０７を行う。本実施形態ではこの到達確認２０７を行うよう示しているが、鍵の共有後に必ずしも行わねばならないということはない。
【００２３】
たとえば利用者が、機器１０１とアプリケーションサーバ１０２との間で正常に暗号化通信が行われているか否かを調べるために設定用ＰＣ１０３から適宜アプリケーションサーバ１０２に対して到達確認要求２０８を送信するようにしても良い。この場合には、到達確認要求２０８を受け取ったアプリケーションサーバ１０２は、機器１０１と到達確認２０７を行い、その結果を到達確認応答２０９として設定用ＰＣ１０３に応答する。
【００２４】
図３は、本実施形態における通信システムの間の、機器１０１に対する新たな共有鍵の設定を指示する通信シーケンスの一例を示した図である。
【００２５】
利用者は機器１０１がアプリケーションサーバ１０２との間の暗号化通信に使用する共有鍵を更新したい場合、設定用ＰＣ１０３を操作して、機器１０１に対して共有鍵を更新するための指示をする（初期鍵更新要求３０１）。するとこれを受けた機器１０１は設定用ＰＣ１０３に対して更新要求応答３０２を応答して、自身の動作状態を鍵交換モードに移行する。この操作により機器１０１は先に説明した初期鍵の通知２０３、通知応答２０４、暗号化通信要求２０５及び通信要求応答２０６を経て、新たな共有鍵をアプリケーションサーバ１０２との間で共有する。
【００２６】
図４は、本実施形態における通信システム間の、機器１０１に対する新たな共有鍵の設定を指示する通信シーケンスの別の一例を示した図である。
【００２７】
設定用ＰＣ１０３から直接機器１０１に共有鍵の更新を要求するのではなく、設定用ＰＣ１０３はアプリケーションサーバ１０２に対して、設定用ＰＣ１０３の代理として機器１０１に共有鍵の更新要求を依頼するものである。設定用ＰＣ１０３はアプリケーションサーバ１０２に対して、いずれの機器の共有鍵を更新するのかを示すたとえば機器IDを含む、初期鍵代理更新要求４０１を送信する。アプリケーションサーバ１０２は、この要求に対する応答を代理更新要求応答４０２として設定用ＰＣ１０３に応答する。
【００２８】
次に初期鍵代理更新要求４０１に含まれるたとえば機器IDから、共有鍵を更新すべき機器を特定する。そして特定した機器（ここでは機器１０１）に対して、この機器が保持する共有鍵を更新する旨の要求を送信する（初期鍵更新要求４０３）。するとこれを受けた機器１０１はアプリケーションサーバ１０２に対して更新要求応答４０４を応答して、自身の動作状態を鍵交換モードに移行する。この操作により機器１０１は先に説明した初期鍵の通知２０３、通知応答２０４、暗号化通信要求２０５及び通信要求応答２０６を経て、新たな共有鍵をアプリケーションサーバ１０２との間で共有する。
【００２９】
図５は、本実施形態における機器１０１のブロック構成図の一例を示す図である。図５には、共有鍵設定部５０１と、これに含まれる乱数発生部５０２、記憶部５０３及び演算部５０４が示されており、さらに暗号処理部５０５、通信部５０６及び機器制御部５０７を備えている。
【００３０】
共有鍵設定部５０１は、機器１０１が鍵情報を共有した他の機器と暗号化通信を行う際の共有鍵を該他の機器とやり取りして生成し、この生成した鍵情報を暗号処理部５０５に暗号鍵として設定すると共に該他の機器にも通知する機能を有する。以下に共有鍵設定部５０１が備える機能部を個別に説明する。
【００３１】
乱数発生部５０２は、乱数を発生する機能を有する。ここでいう乱数には、ある規則に基づいて生成した擬似的な乱数も含まれる。
【００３２】
記憶部５０３は、乱数発生部５０２が発生した乱数、演算部５０４が計算した計算値、及び他の機器から受信した情報を記憶する機能を有する。
【００３３】
演算部５０４は、記憶部５０３が記憶している値を計算して、再び記憶部５０３に格納する。演算部５０４が行う計算には、たとえば複数の数値データの連結や、ハッシュ関数によるある数値の一方向性変換などがある。
【００３４】
暗号処理部５０５は、共有鍵設定部５０１や機器制御部５０７が他の機器と通信すべきデータをやり取りする際に、送信する場合にはこの通信データを暗号化し、受信した通信データについては復号化する機能を有する。暗号処理部５０５は、暗号化／復号化に際しては通信相手が提供する公開鍵を用いて暗号化／復号化する公開鍵暗号系、共有した秘密鍵を用いて暗号化／復号化する共有鍵暗号系のいずれにも使われる。少なくとも秘密鍵を用いる暗号化／復号化の際は、この秘密鍵に当たる共有鍵を共有鍵設定部５０１より取得する。
【００３５】
通信部５０６は、ネットワーク１０４を介して他の機器と通信するための機能を有している。通信に使用する通信媒体に応じて必要となる機能が異なるのが普通である。ここではネットワーク１０４を通信媒体とする通信に必要となる機能を備えているものとする。
【００３６】
機器制御部５０７は、機器１０１自身の動作を制御する部分であり、例えば電子レンジであれば調理レシピ情報の取得や調理状態の情報の通知、及び自身が備える操作パネルへの表示や電源部の制御などを含んでいても良い。機器制御部５０７が機器１０１自身の制御に関連して、ネットワーク１０４を介して他の機器と通信する必要があるときは、通信データは暗号処理部５０５を介して暗号化／復号化されるため、この通信でやり取りされる通信データはネットワーク１０４上では暗号化された状態で伝送される。
【００３７】
図６は、本実施形態におけるアプリケーションサーバ１０２のブロック構成図の一例を示す図である。図３には、共有鍵設定部６０１と、これに含まれる乱数発生部６０２、記憶部６０３及び演算部６０４が示されており、さらに暗号処理部６０５、通信部６０６及びサーバ機能処理部６０７を備えている。
【００３８】
共有鍵設定部６０１は、アプリケーションサーバ１０２が鍵情報を共有した他の機器と暗号化通信を行う際に、共有鍵を含む受信した鍵設定情報からこの機器が通信すべき機器かどうかを判断し、この共有鍵の情報を暗号処理部６０５に暗号鍵として設定すると共に該他の機器に次回通信する際に使用する共有鍵の種を送信する機能を有する。以下に共有鍵設定部６０１が備える機能部を個別に説明する。
【００３９】
乱数発生部６０２は、乱数を発生する機能を有する。ここでいう乱数には、ある規則に基づいて生成した擬似的な乱数も含まれる。
【００４０】
記憶部６０３は、乱数発生部６０２が発生した乱数、演算部６０４が計算した計算値、及び他の機器から受信した情報を記憶する機能を有する。
【００４１】
演算部６０４は、記憶部６０３が記憶している値を計算して、再び記憶部６０３に格納する。演算部６０４が行う計算には、たとえば数値データの分割や、数値の比較演算などがある。
【００４２】
暗号処理部６０５は、共有鍵設定部６０１やサーバ機能処理部６０７が他の機器と通信すべきデータをやり取りする際に、送信する場合にはこの通信データを暗号化し、受信した通信データについては復号化する機能を有する。暗号処理部６０５は、暗号化／復号化に際しては通信相手が提供する公開鍵を用いて暗号化／復号化する公開鍵暗号系、共有した秘密鍵を用いて暗号化／復号化する共有鍵暗号系のいずれにも使われる。少なくとも秘密鍵を用いる暗号化／復号化の際は、この秘密鍵に当たる共有鍵を共有鍵設定部６０１より取得する。
【００４３】
通信部６０６は、ネットワーク１０４を介して他の機器と通信するための機能を有している。通信に使用する通信媒体に応じて必要となる機能が異なるのが普通である。ここではネットワーク１０４を通信媒体とする通信に必要となる機能を備えているものとする。
【００４４】
サーバ機能処理部６０７は、アプリケーションサーバ１０２自身の動作を制御する部分である。例えば他の機器からの要求を受けて調理レシピ情報などを提供するために設けたサーバであれば、このような要求を受ける機能と必要な情報を蓄積し抽出する機能、及びこの情報を当該他の機器に送信する機能を有する。サーバ機能処理部部６０７がネットワーク１０４を介して他の機器と通信する必要があるときは、通信データは暗号処理部６０５を介して暗号化／復号化されるため、この通信でやり取りされる通信データはネットワーク１０４上では暗号化された状態で伝送される。
【００４５】
図７は、本実施形態における機器１０１のフローの一例を示す図である。
機器１０１の処理が開始されると、まず共有すべき共有鍵の種となるＲ０を、他の機器から取得して記憶部５０３に記憶しているか否かを判断する（ステップＳ０１）。Ｒ０は通信要求応答２０６に含まれる共有鍵の種の値を指す。通信要求応答２０６で受け取るはずのＲ０を記憶していない場合には、乱数発生部５０２によって機器１０１自身がＲ０を生成して記憶部５０３に記憶する（ステップＳ０２）。Ｒ０を記憶していない場合とは、例えば機器１０１の電源が投入された直後であることが考えられる。
【００４６】
次にアプリケーションサーバ１０２と暗号化通信する際に使用する共有鍵を更新する必要があるか否かを判断する（ステップＳ０３）。ここで共有鍵を更新する必要があるとの判断は、例えば機器１０１の起動直後で他の機器からＲ０を取得したことがない場合や、設定用ＰＣ１０３から初期鍵更新要求３０１を受けた場合、またはアプリケーションサーバ１０２から初期鍵更新要求４０３を受けた場合が考えられる。あるいは所定の回数もしくは所定の時間通信するごとに共有鍵を更新するように構成したのであれば、その所定の回数もしくは所定の時間経過後の通信時である。いずれにも該当せず、さらに現在利用している共有鍵を更新する必要がないときは、暗号処理部５０５は現在利用している共有鍵を用いて通信データを暗号化／復号化しながらアプリケーションサーバ１０２と通信する（ステップＳ１１）。
【００４７】
ステップＳ０３で共有鍵を更新する必要があると判断したときは、乱数発生部５０２が発生する乱数によってＲ１及びＳそれぞれの値を定めて記憶部５０３に記憶する（ステップＳ０４）。次に演算部５０４により、記憶部５０３に記憶したＲ０とＲ１を連結するなどして組み合わせ、さらに一方向性ハッシュ関数にかけ共有鍵Ｋを求め記憶部５０３に記憶する（ステップＳ０５）。ここでＲ０及びＲ１を組み合わせて一方向性ハッシュ関数にかけるのは、Ｒ１をその機器に依存した値（例えば機器IDやその機器の動作状況に関する値など）とすることで、より予測不可能性の高い擬似乱数を得るための一手法である。よってＲ０及びＲ１の組み合わせの方法や符号の長さといった仕様は、ここに示した手法に特に限定しない。例えばＲ０の値を、ステップＳ０４におけるＲ１を生成するときの乱数発生部５０２の種値として用いるようにしてもかまわない。この場合にはＲ０の選び方次第で、Ｒ１のみで共有鍵Ｋの予測不可能性を十分高くすることもできるので、Ｒ１をハッ
シュ関数にかけて得た値を共有鍵Ｋとすることもできる。もちろん、Ｒ０を一方向性ハッシュ関数にかけて得た値を共有鍵Ｋとすることも可能である。
【００４８】
次にステップＳ０５で求めたＫとＳを、予め定めた規則に従って分離可能に組み合わせ、この組み合わせたデータをアプリケーションサーバ１０２から提供された公開鍵を用いて暗号化しＰを求め記憶部５０３に記憶する（ステップＳ０６）。その後、ＰとＳの情報を、初期鍵の通知２０３としてアプリケーションサーバ１０２に送信する（ステップＳ０７）。
【００４９】
続いてこのＰ、Ｓの値を検証した結果に基づくアプリケーションサーバ１０２からの応答通知２０４に含まれる可否情報を判断する（ステップＳ０８）。判断の結果が「ＯＫ」であれば、暗号化通信要求２０５をアプリケーションサーバ１０２に送信し、初期鍵の通知２０３で送った共有鍵Ｋを用いる暗号化通信の開始を要求する（ステップＳ０９）。これに応答する通信要求応答２０６をアプリケーションサーバ１０２から受信する。機器１０１は、この通信要求応答２０６に含まれるＲ０を抽出し、記憶部５０３に記憶する（ステップＳ１０）。そして暗号処理部５０５は現在記憶している共有鍵Ｋを用いて通信データを暗号化／復号化しながらアプリケーションサーバ１０２と通信する（ステップＳ１１）。
【００５０】
一方、ステップＳ０８で判断の結果が「ＯＫ」でないときは、何らかの理由によりアプリケーションサーバ１０２との暗号化通信が拒否されたことを意味するので、何もせずに終了する。
【００５１】
このように構成すると、機器１０１に固定的な共有鍵を設定せずに、他の機器から共有鍵生成の種となる値を取得することによって、個々の機器ごとに第三者にとっての予測が難しい共有鍵を機器自身で自動的に生成し共有することができる。
【００５２】
図８は、本実施形態におけるアプリケーションサーバ１０２のフローの一例を示す図である。
【００５３】
まずアプリケーションサーバ１０２は機器１０１から初期鍵の通知２０３を受けると、これに含まれるＳとＰを抽出し記憶部６０３に記憶する（ステップＳ２１）。次に自身の秘密鍵を用いてＰを復号しＸを求め、このＸを記憶部６０３に記憶する（ステップＳ２２）。演算部６０４は、記憶したＸを、ＳとＫを組み合わせたときの規則に従って分離し、Ｓに相当するＳ´と、Ｋに相当するＫ´とを求め、これらを記憶部６０３に記憶する（ステップＳ２３）。
【００５４】
次に、先に記憶したＳと、Ｓ´とを比較する（ステップＳ２４）。ここでは機器１０１が、アプリケーションサーバ１０２が提供する公開鍵を用いて暗号化したか否かを判定している。なぜならＳを含む値の暗号化データを、秘密鍵によって復号化したデータのＳ´とが同じになるのは、一般にはこの秘密鍵に対応する公開鍵で暗号化した場合でしかあり得ないからである。よってＳとＳ´が同じ値になるということは、すなわちＫ´は機器１０１が送信したＫと同じであることを意味する。
【００５５】
ステップＳ２４でＳとＳ´が異なる場合は、この値を含む初期鍵の通知２０３を送信した機器１０１に対して「ＮＧ」である旨の通知応答２０４を応答して終了する（ステップＳ２６）。
【００５６】
ＳとＳ´が同じであった場合は、機器１０１に「ＯＫ」である旨の通知応答２０４を応答し（ステップＳ２５）、機器１０１からの暗号化通信要求２０５を待つ（ステップＳ２
７）。
【００５７】
機器１０１からの暗号化通信要求２０５が、通知応答２０４の応答から所定の時間内になかった場合も機器１０１との暗号化通信を行うことなく終了する（ステップＳ２７）。このように構成すると、初期鍵の通知２０３があっただけの待ち受けを保持し続けることによるアプリケーションサーバ１０２の通信資源の浪費を回避できるので、例えば悪意を持った利用者によるサービス不能攻撃の危険を回避するのに効果が期待できる。
【００５８】
所定の時間内に、初期鍵の通知２０３を送信した機器１０１から暗号化通信要求２０５が来た場合は、乱数発生部６０２により乱数を発生してこの値をＲ０として記憶部６０３に記憶する（ステップＳ２８）。そして暗号化通信要求２０５の応答として、この要求を容認する旨の情報と、このＲ０を含む通信要求応答２０６を、機器１０１に応答する（ステップＳ２９）。ここまでのやり取りによって機器１０１とアプリケーションサーバ１０２との間で共有鍵が共有されるので、続いて共有鍵Ｋを使用した暗号化通信が行われる（ステップＳ３０）。
【００５９】
このように構成すると、例えば十分予測不可能性の高い擬似乱数を自身で発生できないような低機能の機器との間の暗号化通信であっても、アプリケーションサーバ１０２側で十分予測不可能性の高い擬似乱数を発生させ、これを相手機器が設定する共有鍵の種として提供することにより、第三者にとって予測の難しい共有鍵による暗号化通信を行うことができる。
【００６０】
（第１の実施形態の変形例）
本実施形態の通信システムでは、機器１０１とアプリケーションサーバ１０２との間の鍵共有の例を示した。本変形例では、さらに機器１０１とは別の、アプリケーションサーバ１０２との間で信頼関係を結んでいる機器がある場合の、アプリケーションサーバ１０２を介してこの機器と機器１０１との間の鍵の共有を仲介するものである。
【００６１】
両方の機器とも、一つのアプリケーションサーバ１０２との間で暗号化通信が成立しているので、この暗号化通信の内容をアプリケーションサーバ１０２が通信を仲介すれば、両方の機器の間で機器１０１とアプリケーションサーバ１０２との間で行ったものと同様の鍵共有手順を実施することが可能となる。
【００６２】
あるいは両方の機器とアプリケーションサーバ１０２との間の鍵共有は本実施形態に従うが、すでに暗号化通信が確立しているのであれば両方の機器との間の鍵共有手順はさらに簡略化することもできる。最も単純な方法は、例えば一方の装置から共有鍵を他方の機器にアプリケーションサーバ１０２を介して送信するだけでも良い。
【００６３】
さらに言えば、一方の機器がアプリケーションサーバ１０２とSSL(Secure Socket Layer)などの本実施形態とは別の鍵交換による暗号化通信を行っていたとしても、本変形例の通信システムを適用することができる。この場合にはこの機器の構成、重要度、接続頻度、接続時間などに基づいて、暗号化通信を実行する際の手順の軽減化、またはより強固な秘匿通信などその機器に適した暗号化通信手段を選択することができる。
【００６４】
このように構成すると、アプリケーションサーバ１０２との間の信用関係に基づいて、このサーバと通信する複数の機器の間で暗号化通信のための共有鍵の交換が可能となる。
【００６５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実
施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６６】
【図１】第１の実施形態における通信システムの一例を示す図である
【図２】第１の実施形態における通信システムの間の、通信シーケンスの一例を示す図である
【図３】第１の実施形態における通信システムの間の、通信シーケンスの別の一例を示す図である
【図４】第１の実施形態における通信システムの間の、通信シーケンスの別の一例を示す図である
【図５】第１の実施形態における機器のブロック図の一例を示す図である
【図６】第１の実施形態におけるサーバのブロック図の一例を示す図である
【図７】第１の実施形態における機器のフローの一例を示す図である
【図８】第１の実施形態におけるサーバのフローの一例を示す図である
【符号の説明】
【００６７】
１０１：機器
１０２：アプリケーションサーバ
１０３：設定用ＰＣ
１０４：ネットワーク
５０１、６０１：共有鍵設定部
５０２、６０２：乱数発生部
５０３、６０３：記憶部
５０４、６０４：演算部
５０５、６０５：暗号処理部
５０７：機器制御部
６０７：サーバ機能処理部
【図１】
2005268903.tif 000003
【図２】
2005268903.tif 000004
【図３】
2005268903.tif 000005
【図４】
2005268903.tif 000006
【図５】
2005268903.tif 000007
【図６】
2005268903.tif 000008
【図７】
2005268903.tif 000009
【図８】
2005268903.tif 000010