(57)【特許請求の範囲】
【請求項１】
メディアキーブロックから共有鍵を生成する外部装置と接続される情報処理装置であって、
デバイス鍵を記憶するデバイス鍵記憶部と、
前記デバイス鍵と前記メディアキーブロックとからメディア鍵を生成する生成部と、
前記情報処理装置に固有の第１固有情報と公開情報とに基づいて第１出力情報を演算する演算部と、
前記第１出力情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第２出力情報を受信する通信部と、
前記メディア鍵と、前記第１固有情報と、前記第２出力情報とに基づいて、前記外部装置との間で共有する前記共有鍵を算出する鍵算出部と、
相互認証処理に備えて、少なくとも前記第１固有情報と前記第２出力情報とを記憶する秘密情報記憶部と、
前記第１固有情報と前記第２出力情報とを用いて、第１認証情報を計算する認証情報計算部と、
前記第１認証情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第２認証情報を受信し、前記第１固有情報と前記第２出力情報と前記公開情報と前記第２認証情報とを用いて、前記外部装置との間で相互認証処理を行う認証部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記演算部は、前記第１固有情報と公開情報から前記第１出力情報を出力する演算であって、離散対数問題を根拠として前記第１出力情報から前記第１固有情報を求めることが困難である演算を実行すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
乱数である前記第１固有情報を発生する乱数発生部をさらに備え、
前記演算部は、前記乱数発生部により発生された前記第１固有情報と前記公開情報とに基づいて前記第１出力情報を演算すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
複数の前記外部装置に接続され、
前記通信部は、前記第１出力情報を複数の前記外部装置に送信し、複数の前記外部装置それぞれから複数の前記第２出力情報を受信し、
前記鍵算出部は、前記メディア鍵と、前記第１固有情報と、複数の前記第２出力情報とに基づいて、前記共有鍵を算出すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項５】
メディアキーブロックから共有鍵を生成する外部装置と接続され、デバイス鍵を記憶するデバイス鍵記憶部を備えるコンピュータを、
前記デバイス鍵と前記メディアキーブロックとからメディア鍵を生成する生成部と、
前記情報処理装置に固有の第１固有情報と公開情報とに基づいて第１出力情報を演算する演算部と、
前記第１出力情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第２出力情報を受信する通信部と、
前記メディア鍵と、前記第１固有情報と、前記第２出力情報とに基づいて、前記外部装置との間で共有する前記共有鍵を算出する鍵算出部と、
相互認証処理に備えて秘密情報記憶部に記憶された前記第１固有情報と前記第２出力情報とを用いて、第１認証情報を計算する認証情報計算部と、
前記第１認証情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第２認証情報を受信し、前記第１固有情報と前記第２出力情報と前記公開情報と前記第２認証情報とを用いて、前記外部装置との間で相互認証処理を行う認証部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
複数のデバイス（情報処理装置）間で暗号鍵を共有する技術として、ＧＤＯＩ（Group  Domain  of  Interpretation）などの技術が知られている。このような技術では、鍵サーバが各デバイスの暗号鍵を保持し、各デバイスに暗号鍵を配布する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】M.  Baugher  et  al.、"RFC3547、The  Group  Domain  of  Interpretation  "  [online]、  July  2003、  retrieved  from  the  Internet:  <URL:  http://www.ietf.org/rfc/rfc3547.txt>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、鍵サーバがすべてのデバイスの暗号鍵を保持する必要があり、鍵管理の負担が増大するという問題があった。例えば、あるデバイスをリボーク（無効化）する場合や、あるデバイスの暗号鍵を更新する場合、他のすべてのデバイスに更新した暗号鍵などの情報を再配布する必要があった。
【課題を解決するための手段】
【０００５】
実施形態の情報処理装置は、デバイス鍵記憶部と生成部と演算部と通信部と鍵算出部とを備える。デバイス鍵記憶部はデバイス鍵を記憶する。生成部は、デバイス鍵とメディアキーブロックとからメディア鍵を生成する。演算部は、情報処理装置に固有の第１固有情報と公開情報とに基づいて第１出力情報を演算する。通信部は、第１出力情報を外部装置に送信し、外部装置が計算した第２出力情報を外部装置から受信する。鍵算出部は、メディア鍵と第１固有情報と第２出力情報とに基づいて共有鍵を算出する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態の情報処理装置を含むシステムのブロック図。
【図２】第１の実施形態の鍵共有処理のシーケンス図。
【図３】第１の実施形態の相互認証処理のシーケンス図。
【図４】無効化に用いるリストの一例を示す図。
【図５】第２の実施形態の情報処理装置を含むシステムのブロック図。
【図６】第２の実施形態の鍵共有処理のシーケンス図。
【図７】第２の実施形態の相互認証処理のシーケンス図。
【図８】複数の情報処理装置が鍵を共有するモデルを説明する図。
【図９】第３の実施形態の情報処理装置を含むシステムのブロック図。
【図１０】第３の実施形態の鍵共有処理のシーケンス図。
【図１１】第３の実施形態の相互認証処理のシーケンス図。
【図１２】第４の実施形態の次世代電力網の一構成例を示す図。
【図１３】第１〜第４の実施形態の情報処理装置のハードウェア構成図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、この発明にかかる情報処理装置の好適な実施形態を詳細に説明する。
【０００８】
（第１の実施形態）
第１の実施形態にかかる情報処理装置を含むシステムでは、所定の鍵共有方式で共有鍵を算出するために適したメディア鍵を導出（生成）できるＭＫＢ（メディアキーブロック）を用いる。そして、このＭＫＢを鍵配布センタ（以下、ＫＤＣ（Key  Distribution  Center）という。）から各デバイスに配布する。各デバイスは、ＭＫＢと自装置のデバイス鍵とからメディア鍵を生成し、生成したメディア鍵を用いて上記鍵共有方式により他のデバイス（外部装置）との間で共有する共有鍵を算出する。ＭＫＢ、ＭＫＢ処理、ＭＫＢ生成等は当業者に周知の技術である。例えば、以下の公知文献等に開示されており、詳細については本明細書の実施形態ではあえて省略する。
（参考文献１）D.  Wallner,  E.  Harder,  R.  Agee.  “RFC2627,  Key  Management  for  Multicast:  Issues  and  Architectures”  [online],  June  1999,  retrieved  from  the  Internet:  <URL:  http://www.ietf.org/rfc/rfc2627.txt>
（参考文献２）Wong,  C.,  Gouda,  M.  and  S.  Lam,  “Secure  Group  Communications  Using  Key  Graphs”,  Technical  Report  TR  97-23,  Department  of  Computer  Sciences,  The  University  of  Texas  at  Austin,  July  28,  1997
（参考文献３）D.  Naor,  M.  Naor  and  J.  Lotspiech,  “Revocation  and  Tracing  Schemes  for  Stateless  Receivers”,  Proc.  CRYPTO  2001,  LNCS  2139,  Springer-Verlag,  pp.41-62,  2001
（参考文献４）US  Patent  7210042
【０００９】
このため、従来のように、鍵サーバから各デバイスに暗号鍵を配布する必要がなく、ＫＤＣが各デバイスに共通のＭＫＢを配布するだけでよい。また、あるデバイスを無効化する場合は、当該デバイスを無効化するように更新した共通のＭＫＢをＫＤＣが再配布するだけでよい。すなわち、ＫＤＣがＭＫＢを配布するのみで各デバイス間で鍵共有が可能であり、かつ、デバイスの無効化を容易に実現できる。
【００１０】
図１は、第１の実施形態にかかる情報処理装置を含むシステムの構成の一例を示すブロック図である。図１に示すように、本実施形態のシステムは、複数のデバイス１００ａ、１００ｂと、ＫＤＣ１０とが、ネットワーク２０で接続された構成となっている。ネットワーク２０は、インターネットなどのあらゆるネットワーク形態を適用できる。
【００１１】
デバイス１００ａ、１００ｂは同様の構成を備えるため、区別する必要がない場合は単にデバイス１００という。デバイス１００は２つに限られるものではなく、３以上のデバイス１００を備えるように構成してもよい。
【００１２】
ＫＤＣ１０は、メディア鍵の生成、ＭＫＢの生成、ＭＫＢの配布などを行う。公開情報とは、公開されている情報（秘密にされていない情報）である。例えば、公開情報としては、ある楕円曲線、楕円曲線上のベースポイントＰ、および、署名検証用の公開鍵ＫＰが与えられている。ＫＤＣ１０は、ＫＤＣ１０だけが知る秘密情報として、署名用の公開鍵ＫＰに対する秘密鍵ＫＳを保持している。ＫＤＣ１０は、さらに、ＭＫＢ方式における、すべてのデバイス鍵情報を有しており、ＭＫＢを作成することができる。ＭＫＢの生成方法は、ＣＳ（Complete  Sub-tree）方式およびＳＤ（Subset  Difference）方式などのあらゆる方法を適用できる。各デバイス１００には、少なくとも１つのデバイス鍵が割り当てられている。ＫＤＣ１０は、ＭＫＢのメディア鍵として楕円曲線の点ｘＰを与える。Ｐは、楕円曲線上のベースポイントであり、ｘはＫＤＣ１０が選んだ整数である。ｘＰは点Ｐのｘ倍点である。この整数ｘは、ＫＤＣ１０だけが知る秘密である。
【００１３】
ＭＫＢを受信後、各デバイス１００は、当該デバイス１００に割り当てられているデバイス鍵によってＭＫＢを処理し、メディア鍵を取得する。この際、当該デバイス１００がＭＫＢによって無効化されている場合、当該デバイス１００はＭＫＢを生成することができず、メディア鍵を正しく取得することはできない。
【００１４】
各デバイス１００は、当該デバイス１００の公開ＩＤを保持している。公開ＩＤは、楕円曲線におけるベースポイントＰの整数倍点である。デバイス１００の公開ＩＤはｉＰと表すことができる。ただし、ｉは整数である。この整数ｉをデバイス１００の秘密ＩＤと呼ぶことがある。さらに、各デバイス１００は、公開ＩＤに対する署名ｓｉｇｎ（ＫＳ）（ｉＰ）を保持していてもよい。署名は、ＫＤＣ１０が有する秘密鍵ＫＳによって署名されている。今後デバイス１００を、そのデバイスの公開ＩＤで表すことがある。例えば、公開ＩＤとしてｉＰを保持するデバイス１００を、デバイスｉＰという場合がある。
【００１５】
デバイス１００は、ＭＫＢ処理部１１０と、鍵共有部１２０と、通信部１３１と、を備えている。
【００１６】
ＭＫＢ処理部１１０は、デバイス１００のデバイス鍵を格納（記憶）する。例えば、デバイスｉＰのＭＫＢ処理部１１０は、配布されているＭＫＢを読み取る。デバイスｉＰのデバイス鍵が無効化されていない場合、ＭＫＢ処理部１１０は、ＭＫＢからメディア鍵ｘＰを生成できる。ＭＫＢ処理部１１０は、生成したメディア鍵ｘＰを鍵共有部１２０に送る。
【００１７】
鍵共有部１２０は、メディア鍵を用いてデバイスｂＰとの共有鍵Ｋを生成する。鍵共有部１２０は、共有鍵Ｋを保持しており、必要に応じて、通信部１３１に共有鍵Ｋを送る。通信部１３１は、共有鍵Ｋに基づいて、デバイスｂＰとの間で暗号通信を行う。
【００１８】
ＭＫＢ処理部１１０が公開鍵ＫＰを記憶し、ＭＫＢの偽造を防止するために、ＭＫＢの署名を確認するようにしてもよい。また、ＭＫＢ処理部１１０は、鍵共有部１２０にＭＫＢのバージョン番号を送るようにしてもよい。ＭＫＢのバージョン番号は、ＭＫＢに付随する順序を持つデータである。鍵共有部１２０は、デバイスｂＰと鍵共有動作を行う前に、バージョン番号を交換するようにしてもよい。その場合、鍵共有部１２０は、バージョンが古い相手とは以後の鍵交換を行わない。また、鍵共有部１２０は、デバイスｂＰとデータ交換を行い、デバイスｂＰと鍵が共有できたことの確認を行うようにしてもよい。
【００１９】
次に、ＭＫＢ処理部１１０の詳細な構成例を説明する。ＭＫＢ処理部１１０は、デバイス鍵記憶部１１１と、メディア鍵記憶部１１２と、生成部１１３と、を備えている。
【００２０】
デバイス鍵記憶部１１１は、デバイス１００に割り当てられているデバイス鍵を記憶する。生成部１１３は、ＭＫＢを読み取り、デバイス鍵記憶部１１１が記憶するデバイス鍵によってＭＫＢを処理し、メディア鍵ｘＰを生成する。メディア鍵記憶部１１２は、生成部１１３が生成したメディア鍵ｘＰを記憶する。メディア鍵記憶部１１２は、鍵共有部１２０からの要求に応じて、メディア鍵ｘＰを鍵共有部１２０に送る。
【００２１】
次に、鍵共有部１２０の詳細な構成例を説明する。鍵共有部１２０は、秘密情報記憶部１２１と、公開情報記憶部１２２と、乱数発生部１２３と、演算部１２４と、鍵算出部１２５と、認証部１２６と、を備えている。
【００２２】
公開情報記憶部１２２は、公開鍵ＫＰ、楕円曲線上のベースポイントＰ、ハッシュ関数Ｈ、デバイス１００の公開ＩＤであるｉＰ、および、署名ｓｉｇｎ（ＫＳ）（ｉＰ）を記憶する。
【００２３】
秘密情報記憶部１２１は、デバイス１００の秘密ＩＤである整数ｉを記憶する。また、秘密情報記憶部１２１は、鍵算出部１２５による算出結果である共有鍵Ｋも記憶する。秘密情報記憶部１２１は、通信部１３１の要求に応じて、共有鍵Ｋを通信部１３１に送る。通信部１３１は、他のデバイス（例えばデバイスｂＰ）との間で各種情報を送受信する。
【００２４】
演算部１２４は、自装置に固有の情報（第１固有情報）と、公開情報とから、鍵交換に用いる情報（第１出力情報）を算出する。例えば、演算部１２４は、公開情報として楕円曲線のベースポイントＰを用い、離散対数問題を根拠として、第１出力情報から第１固有情報を求めることが困難な演算方式により、第１出力情報を算出する。離散対数問題を安全性の根拠とする演算方式としては、楕円曲線上の演算、および、べき乗演算などを適用できる。以下では、主に楕円曲線上の演算を用いる例を説明する。
【００２５】
鍵算出部１２５は、メディア鍵ｘＰと、自装置に固有の情報（第１固有情報）と、通信する他のデバイス１００（以下、外部装置という）から送信された第２出力情報とから、外部装置との間で共有する共有鍵を算出する。第２出力情報は、外部装置が外部装置に固有の情報（第２固有情報）から、上記演算部１２４と同様の演算方式により算出される情報である。
【００２６】
乱数発生部１２３は、例えば演算部１２４からの指示に応じて乱数を発生する。認証部１２６は、通信相手との間で相互認証処理を実行する。
【００２７】
以下に、デバイス１００ａ（デバイスａＰともいう）の鍵算出部１２５が、デバイス１００ｂ（デバイスｂＰともいう）との間で共有する共有鍵Ｋを算出する場合の処理の概要を説明する。
【００２８】
まず、演算部１２４は、公開情報記憶部１２２からベースポイントＰを読み取る。演算部１２４は、乱数発生部１２３に乱数発生を指示し、発生された乱数ｒａを取得する。演算部１２４は、乱数ｒａを、第１固有情報として用いる。なお、第１固有情報は乱数に限られるものではなく、デバイス１００に固有の情報であればどのような情報であってもよい。
【００２９】
演算部１２４は、ｒａＰを算出し、ｒａＰを通信部１３１に送る。通信部１３１は、ｒａＰをデバイスｂＰに送る。通信部１３１は、デバイスｂＰからｒｂＰを受信する。通信部１３１は、受信したｒｂＰを鍵算出部１２５に送る。鍵算出部１２５は、ＭＫＢ処理部１１０からメディア鍵ｘＰを受け取る。鍵算出部１２５は、公開情報記憶部１２２からハッシュ関数Ｈを読み出す。鍵算出部１２５は、共有鍵Ｋ＝Ｈ（ｘＰ＋ｒａ（ｒｂＰ））を算出する。鍵算出部１２５は、共有鍵Ｋを秘密情報記憶部１２１に記憶する。
【００３０】
なお、共有鍵の算出に用いる演算はハッシュ関数Ｈに限られるものではない。メディア鍵ｘＰと、自装置に固有の情報（第１固有情報）と、通信相手のデバイスに固有の情報（第２固有情報）から算出される情報（第２出力情報）とを用いて算出するものであればあらゆる演算を適用できる。例えば、ハッシュ関数以外の一方向性関数を用いてもよい。一方向性関数を用いれば、共有鍵が不正に流出した場合であっても、共有鍵の算出に用いられたデータの推測が困難となる。
【００３１】
また、上記例では、１つの変数（ｘＰ＋ｒａ（ｒｂＰ））を入力して共有鍵を算出するハッシュ関数Ｈの例を説明したが、２以上の変数を入力して共有鍵を算出する関数を用いてもよい。
【００３２】
ＭＫＢからメディア鍵として導出されるデータはｘＰに限らない。例えば、一般的に数値Ｘであってもよい。この場合、共有鍵Ｋは、例えば、Ｋ＝Ｇ（ｒａ(ｒｂＰ)，Ｘ）、または、Ｋ＝Ｇ（Ｘ，ｒａ（ｒｂＰ））などにより計算することができる。ここに、Ｇは一方向性関数である。
【００３３】
なお、上記各記憶部（デバイス鍵記憶部１１１、メディア鍵記憶部１１２、秘密情報記憶部１２１、公開情報記憶部１２２）は、ＨＤＤ（Hard  Disk  Drive）、光ディスク、メモリカード、ＲＡＭ（Random  Access  Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００３４】
次に、このように構成された第１の実施形態にかかるデバイス１００による鍵共有処理について図２を用いて説明する。図２は、第１の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。以下では、デバイスａＰおよびデバイスｂＰとの間で共有する共有鍵を生成する場合を例に説明する。
【００３５】
まず、デバイスａＰのＭＫＢ処理部１１０は、公開鍵ＫＰを用いてＭＫＢの署名を検証する（ステップＳ１０１）。署名が検証できなかった場合は、処理は中止する。
【００３６】
デバイスａＰの生成部１１３は、デバイス鍵記憶部１１１に記憶されたデバイス鍵を用いてＭＫＢを処理し、メディア鍵ｘＰを生成する（ステップＳ１０２）。ＭＫＢ処理が実行できなかった場合、デバイスａＰは無効化されているため処理は中止する。
【００３７】
デバイスａＰの乱数発生部１２３は、乱数ｒａを発生する。デバイスａＰは、乱数ｒａを例えば秘密情報記憶部１２１に記憶する。鍵共有部１２０の演算部１２４は、乱数ｒａとＰとからｒａＰを算出する（ステップＳ１０３）。通信部１３１は、ｒａＰをデバイスｂＰに送信する（ステップＳ１０４）。
【００３８】
ステップＳ１０１からステップＳ１０４と同様の処理により、デバイスｂＰは、ＭＫＢの署名の検証（ステップＳ１０５）、メディア鍵ｘＰの生成（ステップＳ１０６）、乱数ｒｂの発生（ステップＳ１０７）、および、ｒｂＰの送信（ステップＳ１０８）を実行する。
【００３９】
デバイスａＰおよびデバイスｂＰは、それぞれ受け取ったｒｂＰおよびｒａＰを、例えば秘密情報記憶部１２１に記憶する。
【００４０】
デバイスａＰの鍵算出部１２５は、Ｋ＝Ｈ（ｘＰ＋ｒａ（ｒｂＰ））を算出する（ステップＳ１０９）。デバイスｂＰの鍵算出部１２５は、Ｋ＝Ｈ（ｘＰ＋ｒｂ（ｒａＰ））を算出する（ステップＳ１１０）。
【００４１】
このようにして、デバイスａＰおよびデバイスｂＰ間で共有する共有鍵Ｋがそれぞれ算出される。以下、共有鍵を確認するための処理の一例を説明する。
【００４２】
デバイスａＰは、Ｅｎｃ（Ｋ）（ｒｂＰ）をデバイスｂＰに送信する（ステップＳ１１１）。一方、デバイスｂＰは、Ｅｎｃ（Ｋ）（ｒａＰ）をデバイスａＰに送信する（ステップＳ１１２）。例えばＥｎｃ（Ｋ）（ｒｂＰ）は、ｒｂＰを共有鍵Ｋで暗号化したデータを示す。
【００４３】
デバイスａＰは、デバイスｂＰから受け取ったＥｎｃ（Ｋ）（ｒａＰ）を共有鍵Ｋで復号し、得られたデータをｒａＰと比較して一致を確認する（ステップＳ１１３）。一致しなければ処理を中断する。デバイスｂＰも同様の処理を行う（ステップＳ１１４）。
【００４４】
Ｈは、公開されているハッシュ関数である。Ｈ（ｘＰ＋ｒｂ（ｒａＰ））は、共有鍵Ｋに一致するから、以上の処理によって、デバイスａＰとデバイスｂＰとは共有鍵Ｋを共有することができる。ステップＳ１１１からステップＳ１１４は、共有鍵Ｋが共有されていることを、それぞれのデバイスが確認する手続きの一例であり、上述の方法に限られるわけではない。
【００４５】
上記のプロトコルにおいて、デバイスａＰおよびデバイスｂＰのいずれもがＭＫＢを正しく処理できるときに初めて共有鍵Ｋを共有することが可能である。ＭＫＢが正しく処理できることは、すなわち、当該デバイスが無効化されていないことを意味する。無効化されていないデバイスを、準拠デバイス（compliant  device）と呼ぶことがある。上記プロトコルは、準拠デバイスが鍵を共有するための仕組みを提供する。上記プロトコルの後半ではディフィー・ヘルマン（Diffie−Hellman）の鍵共有方式が利用されている。上記プロトコルの特徴の１つは、共有鍵を生成する際にｘＰというメディア鍵を用いることである。
【００４６】
なお、適用可能な鍵共有方式はディフィー・ヘルマンの方式に限られるものではない。ディフィー・ヘルマンの方式と同様に離散対数問題の困難性を安全性の根拠とする他の方式を適用してもよい。
【００４７】
上記プロトコルで処理されるＭＫＢを生成するのはＫＤＣ１０である。ＫＤＣ１０は、秘密の整数ｘを選び、無効化情報を含むＭＫＢを作成して、メディア鍵としてｘＰを設定する。さらに、作成したＭＫＢに秘密鍵ＫＳで署名をする。このように、ＫＤＣ１０は、各デバイス間でディフィー・ヘルマンの鍵交換を行うベースとなるデータをメディア鍵としてＭＫＢを作成する。
【００４８】
次に、デバイス間で相互認証する場合の処理の例について説明する。上記の鍵共有処理が終了した時点では、デバイスａＰおよびデバイスｂＰ間で共有鍵Ｋが共有されており、デバイスａＰおよびデバイスｂＰは、それぞれ相手が準拠デバイスであることを知っている。準拠デバイス同士の暗号通信のためには、上記プロトコルによる鍵共有で十分である。しかし、デバイスａＰおよびデバイスｂＰが、互いに相手を確認（認証）した上で通信をするためには、さらに認証プロトコルを実行しなければならない。
【００４９】
図３は、第１の実施形態における相互認証処理の全体の流れを示すシーケンス図である。以下では、デバイス１００ａ（デバイスａＰ）およびデバイス１００ｂ（デバイスｂＰ）との間の相互認証処理を例に説明する。
【００５０】
デバイスａＰの認証部１２６は、Ｃａ＝ｒａ＋ｈ（ｒａＰ）ａを算出する（ステップＳ２０１）。デバイスｂＰの認証部１２６は、Ｃｂ＝ｒｂ＋ｈ（ｒｂＰ）ｂを算出する（ステップＳ２０２）。ｈは公開されているハッシュ関数である。
【００５１】
デバイスａＰの認証部１２６は、データ（ａＰ，ｓｉｇｎ（ＫＳ）（ａＰ），Ｃａ）をデバイスｂＰに送信する（ステップＳ２０３）。一方、デバイスｂＰの認証部１２６は、データ（ｂＰ，ｓｉｇｎ（ＫＳ）（ｂＰ），Ｃｂ）をデバイスａＰに送信する（ステップＳ２０４）。
【００５２】
デバイスａＰの認証部１２６は、公開鍵ＫＰを用いて受け取った署名を検証する（ステップＳ２０５）。デバイスａＰは、例えばＫＤＣ１０から与えられた署名検証用のアルゴリズムであるＶｅｒｉｆｙ（ＫＰ）（ｂＰ，ｓｉｇｎ（ＫＳ）（ｂＰ））により署名を検証する。
【００５３】
デバイスａＰの認証部１２６は、署名が検証できなければ処理を中止する。デバイスｂＰの認証部１２６も同様の処理を行う（ステップＳ２０６）。
【００５４】
デバイスａＰの認証部１２６は、ＣｂＰを計算し、その値とｒｂＰ＋ｈ（ｒｂＰ）ｂＰの値とを比較する（ステップＳ２０７）。これらの値が一致すれば、通信相手が確かにデバイスｂＰであることが確認できる。デバイスｂＰの認証部１２６も同様の処理を行う（ステップＳ２０８）。
【００５５】
なお、上記では通信相手デバイスの公開ＩＤのみを署名検証したが、通信相手デバイスのデバイス鍵番号を含めて署名検証するようにしてもよい。デバイス鍵番号とは、デバイス鍵に重複なく割り当てた番号である。例えば、木構造のＭＫＢを用いる場合、デバイス鍵に自然に割り当てられるリーフ番号という数値をデバイス番号としてもよい。デバイスａＰ、デバイスｂＰはそれぞれ、署名ｓｉｇｎ（ＫＳ）（ａＰ｜｜ｍ）、ｓｉｇｎ（ＫＳ）（ｂＰ｜｜ｊ）を有している。ここに記号｜｜はデータを連結することを示す。また、ｍとｊはそれぞれデバイスａＰとデバイスｂＰのデバイス鍵番号である。これらの署名は、ＫＤＣ１０により事前に発行され、各デバイスに配布されているものとする。上記の署名の検証のために、デバイスａＰとデバイスｂＰは互いにｍとｊとを送り合う。
【００５６】
上記のようにデバイス鍵番号を含めて署名検証することによって、通信相手デバイスのデバイス鍵番号が間違いなく確認できる。これは次のような場合に有用である。
【００５７】
システムの管理者が、いくつかのデバイスが暗号通信した内容が外部に漏えいしていることを知ったとする。例えば、デバイスａＰがデバイスｂＰと暗号通信した内容が漏えいしている。デバイスａＰを調べたところ、デバイスａＰに異常は無い。一方、デバイスｂＰは行方不明になっていて、調べることができない。しかも、デバイスｂＰは現在も時折ネットワークに接続されており、デバイスａＰ以外の多数のデバイスと暗号通信を行っていることが分かった。システム管理者は、デバイスｂＰを無効化して、暗号通信ネットワークから切り離すことにした。
【００５８】
システム管理者は、デバイスａＰの通信記録を調べ、デバイスｂＰのデバイス鍵番号を得る。上述のように、このデバイス鍵番号は署名によって検証されているので、間違いなくデバイスｂＰのデバイス鍵番号である。そこで、システム管理者は、ＫＤＣ１０に、取得したデバイス鍵番号のデバイス鍵を無効化したＭＫＢを生成させる。新しく生成されたＭＫＢを配布することによって、デバイスｂＰは無効化され、以後、暗号通信ネットワークに参加することは不可能になる。
【００５９】
不正機器などの無効化のためには、ＫＤＣ１０が、デバイス鍵番号とデバイスの公開ＩＤの組からなるリストを有していてもよい。図４は、このようなリストのデータ構造の一例を示す図である。図４において、ａ１、ａ２、・・・、ａＮ、・・・は整数である。例えば、ａ１Ｐは、ベースポイントＰのａ１倍点である。
【００６０】
上記のようなリストを用いることにより、ＫＤＣ１０は、デバイスの公開ＩＤから、当該デバイスのデバイス鍵番号を知ることができ、従って、当該デバイスのデバイス鍵を知ることができる。上記のようなリストは、例えば、以下に述べるように利用される。
【００６１】
システム管理者がデバイスｂＰを無効化して暗号通信ネットワークから排除するためには、ＫＤＣ１０が保有している図４のようなリストを検索し、ｂＰという公開ＩＤに対応するデバイス鍵番号を得る。システム管理者は、ＫＤＣ１０に、取得したデバイス鍵番号のデバイス鍵を無効化したＭＫＢを生成させる。新しく生成されたＭＫＢを配布することによって、デバイスｂＰは無効化され、以後、暗号通信ネットワークに参加することは不可能になる。
【００６２】
次に、３つ以上の準拠デバイスが鍵を共有する場合を説明する。以下では、４つのデバイスａ１Ｐ、ａ２Ｐ、ａ３Ｐ、ａ４Ｐの間での鍵共有処理を例に説明する（（Ａ１）〜（Ａ７））。各デバイスの秘密ＩＤはａ１、ａ２、ａ３、ａ４である。他に仲介用のデバイスｂＰが存在する。
【００６３】
（Ａ１）署名検証：デバイスａ１Ｐ、・・・、ａ４Ｐは、それぞれ公開鍵ＫＰを用いてＭＫＢの署名を検証する。いずれかのデバイスで署名が検証できなかった場合、処理は中止する。
（Ａ２）ＭＫＢ処理：デバイスａ１Ｐ、・・・、ａ４Ｐは、それぞれのデバイス鍵を用いてＭＫＢを処理する。いずれかのデバイスでＭＫＢ処理ができなかった場合、当該デバイスは無効化されているので、処理は中止する。
（Ａ３）デバイスａ１Ｐ、・・・、ａ４Ｐは、上記ＭＫＢ処理によりそれぞれメディア鍵ｘを得る。
（Ａ４）デバイスａ１Ｐ、・・・、ａ４Ｐは、それぞれ乱数ｒ１、・・・、ｒ４を発生する。各デバイスは、当該デバイスが発生した乱数値を記憶する。
（Ａ５）デバイスａ１Ｐ、・・・、ａ４Ｐは、それぞれデバイスｂＰにｒ１Ｐ、・・・、ｒ４Ｐを送る。デバイスｂＰは、（ｒ１＋・・・＋ｒ４）Ｐを計算する。
（Ａ６）デバイスｂＰは、ａ１Ｐ、・・・、ａ４Ｐに（ｒ１＋・・・＋ｒ４）Ｐを送る。
（Ａ７）デバイスａ１Ｐは、Ｋ＝Ｈ（ｘ（ｒ１＋ｒ２＋ｒ３＋ｒ４）Ｐ）を計算する。デバイスａ２Ｐ、ａ３Ｐ、ａ４Ｐについても同様の計算を行う。これにより同一の共有鍵Ｋを得ることができる。
【００６４】
上記のプロトコル（（Ａ１）〜（Ａ７））において、デバイスａ１Ｐ、・・・、ａ４ＰのいずれもがＭＫＢを正しく処理できるときに初めて共有鍵Ｋを共有することが可能である。従って、上記プロトコルは、３つ以上の準拠デバイスが鍵を共有するための仕組みを提供する。
【００６５】
（変形例）
上記実施形態では、楕円曲線の演算を用いてディフィー・ヘルマンの鍵共有を行ったが、他の演算を用いたディフィー・ヘルマンの鍵共有を行うことも可能である。以下、べき乗演算を用いたディフィー・ヘルマンの鍵共有方式を適用する変形例について説明する（（Ｂ１）〜（Ｂ８））。
【００６６】
公開情報としては、十分大きな素数ｐと、ｐ元体の元ｇとが知られている。デバイスの公開ＩＤはｇ＾ａ、秘密ＩＤはａである。ｇ＾ａはｇのａ乗を表す。ＫＤＣ１０は、ＭＫＢのメディア鍵として整数ｘを設定している。以下では、公開ＩＤがｇ＾ａおよびｇ＾ｂであるデバイス１００を、それぞれデバイスｇ＾ａ、デバイスｇ＾ｂという。
【００６７】
（Ｂ１）署名検証：デバイスｇ＾ａとデバイスｇ＾ｂは、それぞれ公開鍵ＫＰを用いてＭＫＢの署名を検証する。いずれかのデバイスで署名が検証できなかった場合、処理は中止する。
（Ｂ２）ＭＫＢ処理：デバイスｇ＾ａとデバイスｇ＾ｂは、それぞれのデバイス鍵を用いてＭＫＢを処理する。いずれかのデバイスでＭＫＢ処理ができなかった場合、当該デバイスは無効化されているので、処理は中止する。
（Ｂ３）デバイスｇ＾ａとデバイスｇ＾ｂは、上記ＭＫＢ処理によりそれぞれメディア鍵ｘを得る。
（Ｂ４）デバイスｇ＾ａは乱数ｒａを発生し、デバイスｇ＾ｂは乱数ｒｂを発生する。デバイスｇ＾ａはｒａを記憶し、デバイスｇ＾ｂはｒｂを記憶する。
（Ｂ５）デバイスｇ＾ａは、デバイスｇ＾ｂにｇ＾ｒａを送信する。デバイスｇ＾ｂは、デバイスｇ＾ａにｇ＾ｒｂを送信する。デバイスｇ＾ａは受け取ったｇ＾ｒｂを記憶し、デバイスｇ＾ｂは受け取ったｇ＾ｒａを記憶する。
（Ｂ６）デバイスｇ＾ａは、Ｋ＝Ｈ（ｇ＾ｘ＋（ｇ＾ｒａ）＾ｒｂ）を算出する。デバイスｇ＾ｂは、Ｈ（ｇ＾ｘ＋（ｇ＾ｒｂ）＾ｒａ）を算出する。この値はＫに一致する：Ｋ＝Ｈ（ｇ＾ｘ＋（ｇ＾ｒｂ）＾ｒａ）。
（Ｂ７）鍵共有の確認：デバイスｇ＾ａは、Ｅｎｃ（Ｋ）（ｇ＾ｒｂ）をデバイスｇ＾ｂに送信する。一方、デバイスｇ＾ｂは、Ｅｎｃ（Ｋ）（ｇ＾ｒａ）をデバイスｇ＾ａに送信する。Ｅｎｃ（Ｋ）（ｇ＾ｒｂ）は、ｇ＾ｒｂを共有鍵Ｋで暗号化したデータを示す。
（Ｂ８）鍵共有の確認：デバイスｇ＾ａは、デバイスｇ＾ｂから受け取ったＥｎｃ（Ｋ）（ｇ＾ｒａ）を共有鍵Ｋで復号し、得られたデータをｇ＾ｒａと比較して一致を確認する。一致しなければ処理を中断する。デバイスｇ＾ｂも同様の処理を行う。
【００６８】
なお、上記ハッシュ関数は一例であり、他のハッシュ関数やハッシュ関数以外の一方向性関数などを用いてもよい。例えば、Ｈ（ｇ＾ｘ×（ｇ＾ｒｂ）＾ｒａ）などを用いて共有鍵を算出してもよい。
【００６９】
（第２の実施形態）
第２の実施形態では、２つのＭＫＢ（ＭＫＢ１、ＭＫＢ２）を用いる場合の無効化機能付き鍵交換プロトコルの一例を説明する。
【００７０】
図５は、第２の実施形態にかかるデバイス２００を含むシステムの構成の一例を示すブロック図である。図５に示すように、デバイス２００は、ＭＫＢ処理部２１０と、鍵共有部２２０と、通信部１３１と、を備えている。
【００７１】
第２の実施形態では、ＫＤＣ１０−２、生成部２１３、鍵算出部２２５、および、認証部２２６の機能が第１の実施形態と異なっている。その他の構成および機能は、第１の実施形態にかかるデバイス１００のブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００７２】
ＫＤＣ１０−２は、各デバイスに対して、Ｐ、公開ＩＤ、ｓｉｇｎ（ＫＳ）（（公開ＩＤ）×Ｐ）、デバイス鍵、ハッシュ関数Ｈ、および、ハッシュ関数ｈを発行する。このとき、（公開ＩＤ）×Ｐがデバイスの識別情報である。Ｐは、楕円曲線上のベースポイントである。
【００７３】
ＫＤＣ１０−２は、無効化されたデバイスに応じて、ｎ個のデバイス鍵｛ｋ＿１，・・・，ｋ＿ｎ｝とｎ個のメディア鍵｛ｓ＿１，・・・，ｓ＿ｎ｝を生成する。ＫＤＣ１０−２は、ＭＫＢ１＝｛Ｅｎｃ（ｋ＿１）（ｓ＿１），・・・，Ｅｎｃ（ｋ＿ｎ）（ｓ＿ｎ）｝、および、ＭＫＢ２＝｛Ｅｎｃ（ｋ＿１×Ｐ）（ｓ＿１×Ｐ），・・・，Ｅｎｃ（ｋ＿ｎ×Ｐ）（ｓ＿ｎ×Ｐ）｝を算出する。ＫＤＣ１０−２は、算出したＭＫＢ１およびＭＫＢ２を各デバイス２００に安全に配送する。ここで、Ｅｎｃ（ｋ＿ｉ）（ｓ＿ｉ）は、あるメディア鍵ｓ＿ｉを対応するデバイス鍵ｋ＿ｉで暗号化したデータを示す。
【００７４】
安全な通信路が使用できない場合は、少なくともＭＫＢ１およびＭＫＢ２の改ざんが検知できる手段を施して配送する。例えば、ＫＤＣ１０−２がＭＫＢ１およびＭＫＢ２にデジタル署名を施すことで、各デバイス２００はＭＫＢ１およびＭＫＢ２の改ざんを検知することができる。
【００７５】
生成部２１３は、２つのＭＫＢ（ＭＫＢ１およびＭＫＢ２）を用いてメディア鍵を生成する点が、第１の実施形態の生成部１１３と異なっている。鍵算出部２２５は、２つのＭＫＢを用いて算出されるデータを用いて共有鍵を算出する点が、第１の実施形態の鍵算出部１２５と異なっている。
【００７６】
次に、このように構成された第２の実施形態にかかるデバイス２００による鍵共有処理について図６を用いて説明する。図６は、第２の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。以下では、デバイス２００ａ（デバイスａＰ）およびデバイス２００ｂ（デバイスｂＰ）との間で共有する共有鍵を生成する場合を例に説明する。
【００７７】
デバイスａＰのＭＫＢ処理部２１０は、公開鍵ＫＰを用いてＭＫＢ１およびＭＫＢ２の署名を検証する（ステップＳ３０１）。署名が検証できなかった場合は、処理は中止する。
【００７８】
デバイスａＰの演算部１２４は、公開情報記憶部１２２からベースポイントを読み取り、乱数生成部１２３に乱数発生を指示し、発生されたｒａを取得し、Ｒａ＝ｒａ×Ｐを計算する（ステップＳ３０２）。デバイスａＰのＭＫＢ処理部２１０は、ＭＫＢ１を正しく生成できるデバイス鍵ｋａを選択する（ステップＳ３０３）。ＭＫＢ処理部２１０は、ｋａ×Ｐを計算する（ステップＳ３０４）。これらの値は、他のデバイスと通信を試みる前に事前に算出しておいてもよい。
【００７９】
デバイスａＰの通信部１３１は、（Ｒａ，ｋａ×Ｐ，ＭＫＢ２の処理位置（メディア鍵の生成位置））をデバイスｂＰに送信する（ステップＳ３０５）。デバイスｂＰでも同様に、ＭＫＢ処理部２１０が、公開鍵ＫＰを用いてＭＫＢ１およびＭＫＢ２の署名を検証し（ステップＳ３０６）、署名が検証できなかった場合は、処理は中止する。
【００８０】
デバイスｂＰの演算部１２４は、（Ｒａ，ｋａ×Ｐ，ＭＫＢ２の処理位置（メディア鍵の生成位置））を受信したら、デバイスａＰと同様に、Ｐとｒｂを取得し、Ｒｂ＝ｒｂ×Ｐを算出する（ステップＳ３０７）。デバイスｂＰのＭＫＢ処理部２１０は、ＭＫＢ１を正しく処理できるデバイス鍵ｋｂを選択する（ステップＳ３０８）。ＭＫＢ処理部２１０は、ｋｂ×Ｐを計算する（ステップＳ３０９）。デバイスｂＰの通信部１３１は、デバイスａＰに（Ｒｂ，ｋｂ×Ｐ，ＭＫＢ２の処理位置（メディア鍵の生成位置））を送信する（ステップＳ３１０）。
【００８１】
デバイスｂＰのＭＫＢ処理部２１０は、ＭＫＢ２をｋａ×Ｐを用いて処理してメディア鍵としてｓａ×Ｐを得る（ステップＳ３１１）。デバイスｂＰのＭＫＢ処理部２１０は、ＭＫＢ１をｋｂを用いて処理してメディア鍵ｓｂを得る（ステップＳ３１２）。デバイスｂＰの鍵算出部２２５は、Ｋ＝Ｈ（ｒｂＲａ，ｓｂ×（ｓａ×Ｐ））を算出し、共有鍵とする（ステップＳ３１３）。また、デバイスｂＰは、相互認証処理に備えて（ｒｂ，Ｒａ）を例えば秘密情報記憶部１２１に記憶しておく。
【００８２】
一方、デバイスａＰのＭＫＢ処理部２１０は、（Ｒｂ，ｋｂ×Ｐ，ＭＫＢ２の処理位置（メディア鍵の生成位置））を受信したら、ＭＫＢ２をｋｂ×Ｐを用いて処理してメディア鍵としてｓｂ×Ｐを得る（ステップＳ３１４）。デバイスａＰのＭＫＢ処理部２１０は、ＭＫＢ１をｋａを用いて処理してメディア鍵ｓａを得る（ステップＳ３１５）。デバイスａＰの鍵算出部２２５は、Ｋ＝Ｈ（ｒａＲｂ，ｓａ×（ｓｂ×Ｐ））を計算し、共有鍵とする（ステップＳ３１６）。また、デバイスａＰは、相互認証処理に備えて（ｒａ，Ｒｂ）を例えば秘密情報記憶部１２１に記憶しておく。
【００８３】
Ｈ（ｒａＲｂ，ｓａ×（ｓｂ×Ｐ））＝Ｈ（ｒｂＲａ，ｓｂ×（ｓａ×Ｐ））＝Ｈ（ｒａ×ｒｂ×Ｐ，ｓｂ×ｓａ×Ｐ）であるから、正しく鍵が共有できる。
【００８４】
なお、上記ハッシュ関数は一例であり、他のハッシュ関数やハッシュ関数以外の一方向性関数などを用いてもよい。例えば、Ｈ（ｒａＲｂ＋ｓａ×（ｓｂ×Ｐ））などを用いて共有鍵を算出してもよい。
【００８５】
共有処理後、第1の実施形態と同様に、共有鍵Ｋが共有されていることを確認する手続きを行っても良い。
【００８６】
図７は、第２の実施形態における相互認証処理の全体の流れを示すシーケンス図である。以下では、デバイス２００ａ（デバイスａＰ）およびデバイス２００ｂ（デバイスｂＰ）との間の相互認証処理を例に説明する。
【００８７】
デバイスａＰの認証部２２６は、記憶しておいた（ｒａ，Ｒｂ）を読みだし、Ｃａ＝ｒａ＋ｈ（ｒａ×Ｐ，Ｒｂ）ａを算出する（ステップＳ４０１）。デバイスａＰの認証部２２６は、デバイスｂＰに（ａ×Ｐ，ｓｉｇｎ（ＫＳ）（ａ×Ｐ），Ｃａ）を送信する（ステップＳ４０２）。
【００８８】
デバイスｂＰの認証部２２６は、（ａ×Ｐ，ｓｉｇｎ（ＫＳ）（ａ×Ｐ），Ｃａ）を受信すると、記憶しておいた（ｒｂ，Ｒａ）を読みだし、Ｃｂ＝ｒｂ＋ｈ（ｒｂ×Ｐ，Ｒａ）ｂを計算する（ステップＳ４０３）。デバイスｂＰの認証部２２６は、デバイスａＰに（ｂ×Ｐ，ｓｉｇｎ（ＫＳ）（ｂ×Ｐ），Ｃｂ）を送信する（ステップＳ４０４）。
【００８９】
デバイスｂＰの認証部２２６は、Ｖｅｒｉｆｙ（ＫＰ）（ａ×Ｐ，ｓｉｇｎ（ＫＳ）（ａ×Ｐ））＝１が成立することを検証する（ステップＳ４０５）。また、デバイスｂＰの認証部２２６は、Ｃａ×Ｐ＝＝Ｒａ＋ｈ（Ｒａ，ｒｂ×Ｐ）ａ×Ｐが成立するか検査する（ステップＳ４０６）。
【００９０】
ここで、ＶｅｒｉｆｙはＫＤＣ１０−２から与えられた署名の検証アルゴリズムである。検査に合格すれば（Ｖｅｒｉｆｙ＝１）、デバイスｂＰの認証部２２６は、通信相手が、識別情報がａ×ＰのデバイスａＰであることを認める。
【００９１】
一方、デバイスａＰの認証部２２６は、（ｂ×Ｐ，ｓｉｇｎ（ＫＳ）（ｂ×Ｐ），Ｃｂ）を受信すると、Ｖｅｒｉｆｙ（ＫＰ）（ｂ×Ｐ，ｓｉｇｎ（ＫＳ）（ｂ×Ｐ））＝１が成立することを検証する（ステップＳ４０７）。また、デバイスａＰの認証部２２６は、Ｃｂ×Ｐ＝＝Ｒｂ＋ｈ（Ｒｂ，ｒａ×Ｐ）ｂ×Ｐが成立するか検査する（ステップＳ４０８）。検査に合格すれば、デバイスａＰの認証部２２６は、通信相手が、識別情報がｂ×ＰのデバイスｂＰであることを認める。
【００９２】
（第３の実施形態）
第３の実施形態では、多者間での無効化機能付き鍵交換プロトコルを実現する。以下では、５つのデバイス３００（デバイス３００ａ、３００ｂ、３００ｃ、３００ｄ、３００ｅ）の間で共有鍵を共有する場合を例に説明する。
【００９３】
図８は、デバイス３００ａ、３００ｂ、３００ｃ、３００ｄ、３００ｅが鍵を共有するモデルを説明するための図である。本実施形態の鍵共有を行う際、鍵共有を希望するデバイス３００は事前に通信を行い、鍵共有プロトコルの中心となるデバイス３００を選択する。図８では、デバイス３００ｅが選択された例が示されている。なお、図８のａ、ｂ、ｃ、ｄおよびｅは、それぞれデバイス３００ａ、３００ｂ、３００ｃ、３００ｄおよび３００ｅを表している。また、Ｒｉ（ｉはａ、ｂ、ｃ、ｄ、ｅのいずれか）は、デバイス３００ｉが乱数などを用いて算出した値を表す。
【００９４】
図９は、第３の実施形態にかかるデバイス３００を含むシステムの構成の一例を示すブロック図である。図９に示すように、デバイス３００は、ＭＫＢ処理部１１０と、鍵共有部３２０と、通信部１３１と、を備えている。
【００９５】
第３の実施形態では、鍵算出部３２５および認証部３２６の機能が第１の実施形態と異なっている。その他の構成および機能は、第１の実施形態にかかるデバイス１００のブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。鍵算出部３２５は、他の複数のデバイス３００から受信したデータを用いて共有鍵Ｋを算出する点が、第１の実施形態の鍵算出部１２５と異なっている。
【００９６】
次に、このように構成された第３の実施形態にかかるデバイス３００による鍵共有処理について図１０を用いて説明する。図１０は、第３の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。デバイス３００ａ〜３００ｄは同様の処理を行うため、ここでは特にデバイス３００ａ（デバイスａＰ）とデバイス３００ｅ（デバイスｅＰ）との間で実行される処理のみを記述する。
【００９７】
デバイスａＰのＭＫＢ処理部１１０は、公開鍵ＫＰを用いてＭＫＢの署名を検証する（ステップＳ５０１）。署名が検証できなかった場合は、処理は中止する。デバイスａＰの演算部１２４は、乱数ｒａを取得し、Ｒａ＝ｒａ×Ｐを計算する（ステップＳ５０２）。この計算は、他のデバイスと通信を試みる前に事前計算しておいてもよい。デバイスａＰの通信部１３１は、ＲａをデバイスｅＰに送信する（ステップＳ５０３）。
【００９８】
デバイスｅＰでも同様に、ＭＫＢ処理部１１０が、公開鍵ＫＰを用いてＭＫＢの署名を検証し（ステップＳ５０４）、署名が検証できなかった場合は、処理は中止する。
【００９９】
デバイスｅＰの演算部１２４は、デバイスａＰ〜ｄＰより（Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ）を受信したら、デバイスａＰと同様に、乱数ｒｅを取得し、Ｒｅ＝ｒｅ×Ｐを算出する（ステップＳ５０５）。デバイスｅＰの生成部１１３は、ＭＫＢを正しく処理できるデバイス鍵を用いて、メディア鍵ｓを計算する（ステップＳ５０６）。デバイスｅＰの鍵算出部３２５は、ｈ＝Ｈ（ｓ，Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ）を算出する（ステップＳ５０７）。デバイスｅＰの通信部１３１は、デバイスａＰ〜ｄＰに（Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ，ｈ）を送信する（ステップＳ５０８）。デバイスｅＰの鍵算出部３２５は、Ｋ＝Ｈ（ｓ（Ｒａ＋Ｒｂ＋Ｒｃ＋Ｒｄ＋Ｒｅ））を計算し、共有鍵とする（ステップＳ５０９）。また、デバイスｅＰは、相互認証処理に備えて少なくとも（ｒｅ，Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ）を例えば秘密情報記憶部１２１に記憶しておく。
【０１００】
一方、（Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ，ｈ）を受信したら、デバイスａＰの生成部１１３は、ＭＫＢをデバイス鍵で処理してメディア鍵ｓを得る（ステップＳ５１０）。デバイスａＰの鍵算出部３２５は、受信したｈ＝Ｈ（ｓ，Ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ）が成立するか否かを検査する（ステップＳ５１１）。デバイスａＰの鍵算出部３２５は、Ｋ＝Ｈ（ｓ（Ｒａ＋Ｒｂ＋Ｒｃ＋Ｒｄ＋Ｒｅ））を計算し、共有鍵とする（ステップＳ５１２）。また、デバイスａＰは、相互認証処理に備えて少なくとも（ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ）を例えば秘密情報記憶部１２１に記憶しておく。
【０１０１】
図１１は、第３の実施形態における相互認証処理の全体の流れを示すシーケンス図である。各デバイス３００の処理は同様であるため、以下では、デバイス３００ａ（デバイスａＰ）およびデバイス３００ｉ（ｉはｂ、ｃ、ｄ、ｅ）（デバイスｉＰ）との間の相互認証処理を例に説明する。
【０１０２】
デバイスａＰの認証部３２６は、記憶しておいた（ｒａ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ）を読みだし、Ｃａ＝ｒａ＋ｈ（ｒａ×Ｐ，Ｒｂ，Ｒｃ，Ｒｄ，Ｒｅ）ａを計算する（ステップＳ６０１）。そして、デバイスａＰの認証部３２６は、デバイスｉＰ（デバイスｂＰ〜デバイスｅＰ）に（ａ×Ｐ，ｓｉｇｎ（ＫＳ）（ａ×Ｐ），Ｃａ）を送信する（ステップＳ６０２）。同様にして、デバイスｉＰの認証部３２６は、デバイスａＰに（ｉ×Ｐ，ｓｉｇｎ（ＫＳ）（ｉ×Ｐ），Ｃｉ）を送信する（ステップＳ６０３）。
【０１０３】
デバイスａＰの認証部３２６は、（ｉ×Ｐ，ｓｉｇｎ（ＫＳ）（ｉ×Ｐ），Ｃｉ）を受信すると、Ｖｅｒｉｆｙ（ＫＰ）（ｉ×Ｐ，ｓｉｇｎ（ＫＳ）（ｉ×Ｐ））＝１が成立することを検証する（ステップＳ６０４）。また、デバイスａＰの認証部３２６は、Ｃｉ×Ｐ＝＝Ｒｉ＋ｈ（Ｒｉ，Ｒａ，・・・，Ｒｅ）ｉ×Ｐが成立するか検査する（ステップＳ６０５）。検査に合格すれば、デバイスａＰの認証部３２６は、通信相手が、識別情報がｉ×Ｐのデバイスｉであることを認める。
【０１０４】
（第４の実施形態）
第４の実施形態では、情報処理装置をスマートグリッドに適用した実施形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【０１０５】
図１２は、第４の実施形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するスマートメーター３０１０ａと、家電機器を管理するホームサーバであるＨＥＭＳ（Home  Energy  Management  System）３０２０が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるＢＥＭＳ（Building  Energy  Management  System）３０３０がビル毎に設置される。商業ビルには、スマートメーター３０１０ａと同様のスマートメーター３０１０ｂが設置される。以下では、スマートメーター３０１０ａおよび３０１０ｂを単にスマートメーター３０１０という。
【０１０６】
スマートメーター３０１０は、コンセントレータとよばれる中継器（コンセントレータ３０４０）によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるＭＤＭＳ（Meter  Data  Management  System）３０５０と通信する。ＭＤＭＳ３０５０は、各家庭のスマートメーター３０１０から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるＥＭＳ（Energy  Management  System）３０６０は、ＭＤＭＳ３０５０に集まった複数の家庭の電力使用量、または、電力系統に設置されたセンサからの情報に基づいて、各家庭のスマートメーター３０１０やＨＥＭＳ３０２０に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、ＥＭＳ３０６０は、遠隔端末ユニットであるＲＴＵ（Remote  Terminal  Unit）３０７１に接続された太陽光発電や風力発電などの分散電源３０８０、同じくＲＴＵ３０７２に接続された蓄電装置３０９０、および、ＲＴＵ３０７３に接続された発電側との間を制御する送配電制御装置３１００を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【０１０７】
図１２に含まれる各デバイス間では、共有鍵Ｋを用いて暗号通信が行われる。例えば、ＭＤＭＳ３０５０とスマートメーター３０１０とは共有鍵Ｋを保持しており、当該共有鍵Ｋを用いて暗号通信を行う。このようなスマートグリッドで用いられるデバイスに、上記各実施形態のデバイス（デバイス１００、デバイス２００、デバイス３００）を適用することができる。
【０１０８】
以上説明したとおり、第１から第４の実施形態によれば、ＫＤＣがＭＫＢを配布するのみで各デバイス間の鍵共有を実現できるため、鍵管理の負担増大を回避できる。また、デバイスの無効化も容易に実現できる。
【０１０９】
次に、第１〜第４の実施形態にかかる情報処理装置のハードウェア構成について図１３を用いて説明する。図１３は、第１〜第４の実施形態にかかる情報処理装置のハードウェア構成を示す説明図である。
【０１１０】
第１〜第４の実施形態にかかる情報処理装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【０１１１】
第１〜第４の実施形態にかかる情報処理装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【０１１２】
第１〜第４の実施形態にかかる情報処理装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１１３】
さらに、第１〜第４の実施形態にかかる情報処理装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１〜第４の実施形態にかかる情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１１４】
第１〜第４の実施形態にかかる情報処理装置で実行されるプログラムは、コンピュータを上述した情報処理装置の各部（ＭＫＢ処理部、鍵共有部、通信部）として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１１５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１６】
２０  ネットワーク
１００、２００、３００  デバイス
１１０、２１０  ＭＫＢ処理部
１１１  デバイス鍵記憶部
１１２  メディア鍵記憶部
１１３、２１３  生成部
１２０、２２０、３２０  鍵共有部
１２１  秘密情報記憶部
１２２  公開情報記憶部
１２３  乱数発生部
１２４  演算部
１２５、２２５、３２５  鍵算出部
１３１  通信部
【図１】
0005306405.tif 000002
【図２】
0005306405.tif 000003
【図３】
0005306405.tif 000004
【図４】
0005306405.tif 000005
【図５】
0005306405.tif 000006
【図６】
0005306405.tif 000007
【図７】
0005306405.tif 000008
【図８】
0005306405.tif 000009
【図９】
0005306405.tif 000010
【図１０】
0005306405.tif 000011
【図１１】
0005306405.tif 000012
【図１２】
0005306405.tif 000013
【図１３】
0005306405.tif 000014