説明

情報処理装置およびプログラム

【課題】鍵管理の負担を軽減する。
【解決手段】情報処理装置は、デバイス鍵記憶部と生成部と演算部と通信部と鍵算出部とを備える。デバイス鍵記憶部はデバイス鍵を記憶する。生成部は、デバイス鍵とメディアキーブロックとからメディア鍵を生成する。演算部は、情報処理装置に固有の第1固有情報と公開情報とに基づいて第1出力情報を演算する。通信部は、第1出力情報を外部装置に送信し、外部装置が計算した第2出力情報を外部装置から受信する。鍵算出部は、メディア鍵と第1固有情報と第2出力情報とに基づいて共有鍵を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置およびプログラムに関する。
【背景技術】
【0002】
複数のデバイス(情報処理装置)間で暗号鍵を共有する技術として、GDOI(Group Domain of Interpretation)などの技術が知られている。このような技術では、鍵サーバが各デバイスの暗号鍵を保持し、各デバイスに暗号鍵を配布する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】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>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、鍵サーバがすべてのデバイスの暗号鍵を保持する必要があり、鍵管理の負担が増大するという問題があった。例えば、あるデバイスをリボーク(無効化)する場合や、あるデバイスの暗号鍵を更新する場合、他のすべてのデバイスに更新した暗号鍵などの情報を再配布する必要があった。
【課題を解決するための手段】
【0005】
実施形態の情報処理装置は、デバイス鍵記憶部と生成部と演算部と通信部と鍵算出部とを備える。デバイス鍵記憶部はデバイス鍵を記憶する。生成部は、デバイス鍵とメディアキーブロックとからメディア鍵を生成する。演算部は、情報処理装置に固有の第1固有情報と公開情報とに基づいて第1出力情報を演算する。通信部は、第1出力情報を外部装置に送信し、外部装置が計算した第2出力情報を外部装置から受信する。鍵算出部は、メディア鍵と第1固有情報と第2出力情報とに基づいて共有鍵を算出する。
【図面の簡単な説明】
【0006】
【図1】第1の実施形態の情報処理装置を含むシステムのブロック図。
【図2】第1の実施形態の鍵共有処理のシーケンス図。
【図3】第1の実施形態の相互認証処理のシーケンス図。
【図4】無効化に用いるリストの一例を示す図。
【図5】第2の実施形態の情報処理装置を含むシステムのブロック図。
【図6】第2の実施形態の鍵共有処理のシーケンス図。
【図7】第2の実施形態の相互認証処理のシーケンス図。
【図8】複数の情報処理装置が鍵を共有するモデルを説明する図。
【図9】第3の実施形態の情報処理装置を含むシステムのブロック図。
【図10】第3の実施形態の鍵共有処理のシーケンス図。
【図11】第3の実施形態の相互認証処理のシーケンス図。
【図12】第4の実施形態の次世代電力網の一構成例を示す図。
【図13】第1〜第4の実施形態の情報処理装置のハードウェア構成図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、この発明にかかる情報処理装置の好適な実施形態を詳細に説明する。
【0008】
(第1の実施形態)
第1の実施形態にかかる情報処理装置を含むシステムでは、所定の鍵共有方式で共有鍵を算出するために適したメディア鍵を導出(生成)できるMKB(メディアキーブロック)を用いる。そして、このMKBを鍵配布センタ(以下、KDC(Key Distribution Center)という。)から各デバイスに配布する。各デバイスは、MKBと自装置のデバイス鍵とからメディア鍵を生成し、生成したメディア鍵を用いて上記鍵共有方式により他のデバイス(外部装置)との間で共有する共有鍵を算出する。MKB、MKB処理、MKB生成等は当業者に周知の技術である。例えば、以下の公知文献等に開示されており、詳細については本明細書の実施形態ではあえて省略する。
(参考文献1)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>
(参考文献2)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
(参考文献3)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
(参考文献4)US Patent 7210042
【0009】
このため、従来のように、鍵サーバから各デバイスに暗号鍵を配布する必要がなく、KDCが各デバイスに共通のMKBを配布するだけでよい。また、あるデバイスを無効化する場合は、当該デバイスを無効化するように更新した共通のMKBをKDCが再配布するだけでよい。すなわち、KDCがMKBを配布するのみで各デバイス間で鍵共有が可能であり、かつ、デバイスの無効化を容易に実現できる。
【0010】
図1は、第1の実施形態にかかる情報処理装置を含むシステムの構成の一例を示すブロック図である。図1に示すように、本実施形態のシステムは、複数のデバイス100a、100bと、KDC10とが、ネットワーク20で接続された構成となっている。ネットワーク20は、インターネットなどのあらゆるネットワーク形態を適用できる。
【0011】
デバイス100a、100bは同様の構成を備えるため、区別する必要がない場合は単にデバイス100という。デバイス100は2つに限られるものではなく、3以上のデバイス100を備えるように構成してもよい。
【0012】
KDC10は、メディア鍵の生成、MKBの生成、MKBの配布などを行う。公開情報とは、公開されている情報(秘密にされていない情報)である。例えば、公開情報としては、ある楕円曲線、楕円曲線上のベースポイントP、および、署名検証用の公開鍵KPが与えられている。KDC10は、KDC10だけが知る秘密情報として、署名用の公開鍵KPに対する秘密鍵KSを保持している。KDC10は、さらに、MKB方式における、すべてのデバイス鍵情報を有しており、MKBを作成することができる。MKBの生成方法は、CS(Complete Sub-tree)方式およびSD(Subset Difference)方式などのあらゆる方法を適用できる。各デバイス100には、少なくとも1つのデバイス鍵が割り当てられている。KDC10は、MKBのメディア鍵として楕円曲線の点xPを与える。Pは、楕円曲線上のベースポイントであり、xはKDC10が選んだ整数である。xPは点Pのx倍点である。この整数xは、KDC10だけが知る秘密である。
【0013】
MKBを受信後、各デバイス100は、当該デバイス100に割り当てられているデバイス鍵によってMKBを処理し、メディア鍵を取得する。この際、当該デバイス100がMKBによって無効化されている場合、当該デバイス100はMKBを生成することができず、メディア鍵を正しく取得することはできない。
【0014】
各デバイス100は、当該デバイス100の公開IDを保持している。公開IDは、楕円曲線におけるベースポイントPの整数倍点である。デバイス100の公開IDはiPと表すことができる。ただし、iは整数である。この整数iをデバイス100の秘密IDと呼ぶことがある。さらに、各デバイス100は、公開IDに対する署名sign(KS)(iP)を保持していてもよい。署名は、KDC10が有する秘密鍵KSによって署名されている。今後デバイス100を、そのデバイスの公開IDで表すことがある。例えば、公開IDとしてiPを保持するデバイス100を、デバイスiPという場合がある。
【0015】
デバイス100は、MKB処理部110と、鍵共有部120と、通信部131と、を備えている。
【0016】
MKB処理部110は、デバイス100のデバイス鍵を格納(記憶)する。例えば、デバイスiPのMKB処理部110は、配布されているMKBを読み取る。デバイスiPのデバイス鍵が無効化されていない場合、MKB処理部110は、MKBからメディア鍵xPを生成できる。MKB処理部110は、生成したメディア鍵xPを鍵共有部120に送る。
【0017】
鍵共有部120は、メディア鍵を用いてデバイスbPとの共有鍵Kを生成する。鍵共有部120は、共有鍵Kを保持しており、必要に応じて、通信部131に共有鍵Kを送る。通信部131は、共有鍵Kに基づいて、デバイスbPとの間で暗号通信を行う。
【0018】
MKB処理部110が公開鍵KPを記憶し、MKBの偽造を防止するために、MKBの署名を確認するようにしてもよい。また、MKB処理部110は、鍵共有部120にMKBのバージョン番号を送るようにしてもよい。MKBのバージョン番号は、MKBに付随する順序を持つデータである。鍵共有部120は、デバイスbPと鍵共有動作を行う前に、バージョン番号を交換するようにしてもよい。その場合、鍵共有部120は、バージョンが古い相手とは以後の鍵交換を行わない。また、鍵共有部120は、デバイスbPとデータ交換を行い、デバイスbPと鍵が共有できたことの確認を行うようにしてもよい。
【0019】
次に、MKB処理部110の詳細な構成例を説明する。MKB処理部110は、デバイス鍵記憶部111と、メディア鍵記憶部112と、生成部113と、を備えている。
【0020】
デバイス鍵記憶部111は、デバイス100に割り当てられているデバイス鍵を記憶する。生成部113は、MKBを読み取り、デバイス鍵記憶部111が記憶するデバイス鍵によってMKBを処理し、メディア鍵xPを生成する。メディア鍵記憶部112は、生成部113が生成したメディア鍵xPを記憶する。メディア鍵記憶部112は、鍵共有部120からの要求に応じて、メディア鍵xPを鍵共有部120に送る。
【0021】
次に、鍵共有部120の詳細な構成例を説明する。鍵共有部120は、秘密情報記憶部121と、公開情報記憶部122と、乱数発生部123と、演算部124と、鍵算出部125と、認証部126と、を備えている。
【0022】
公開情報記憶部122は、公開鍵KP、楕円曲線上のベースポイントP、ハッシュ関数H、デバイス100の公開IDであるiP、および、署名sign(KS)(iP)を記憶する。
【0023】
秘密情報記憶部121は、デバイス100の秘密IDである整数iを記憶する。また、秘密情報記憶部121は、鍵算出部125による算出結果である共有鍵Kも記憶する。秘密情報記憶部121は、通信部131の要求に応じて、共有鍵Kを通信部131に送る。通信部131は、他のデバイス(例えばデバイスbP)との間で各種情報を送受信する。
【0024】
演算部124は、自装置に固有の情報(第1固有情報)と、公開情報とから、鍵交換に用いる情報(第1出力情報)を算出する。例えば、演算部124は、公開情報として楕円曲線のベースポイントPを用い、離散対数問題を根拠として、第1出力情報から第1固有情報を求めることが困難な演算方式により、第1出力情報を算出する。離散対数問題を安全性の根拠とする演算方式としては、楕円曲線上の演算、および、べき乗演算などを適用できる。以下では、主に楕円曲線上の演算を用いる例を説明する。
【0025】
鍵算出部125は、メディア鍵xPと、自装置に固有の情報(第1固有情報)と、通信する他のデバイス100(以下、外部装置という)から送信された第2出力情報とから、外部装置との間で共有する共有鍵を算出する。第2出力情報は、外部装置が外部装置に固有の情報(第2固有情報)から、上記演算部124と同様の演算方式により算出される情報である。
【0026】
乱数発生部123は、例えば演算部124からの指示に応じて乱数を発生する。認証部126は、通信相手との間で相互認証処理を実行する。
【0027】
以下に、デバイス100a(デバイスaPともいう)の鍵算出部125が、デバイス100b(デバイスbPともいう)との間で共有する共有鍵Kを算出する場合の処理の概要を説明する。
【0028】
まず、演算部124は、公開情報記憶部122からベースポイントPを読み取る。演算部124は、乱数発生部123に乱数発生を指示し、発生された乱数raを取得する。演算部124は、乱数raを、第1固有情報として用いる。なお、第1固有情報は乱数に限られるものではなく、デバイス100に固有の情報であればどのような情報であってもよい。
【0029】
演算部124は、raPを算出し、raPを通信部131に送る。通信部131は、raPをデバイスbPに送る。通信部131は、デバイスbPからrbPを受信する。通信部131は、受信したrbPを鍵算出部125に送る。鍵算出部125は、MKB処理部110からメディア鍵xPを受け取る。鍵算出部125は、公開情報記憶部122からハッシュ関数Hを読み出す。鍵算出部125は、共有鍵K=H(xP+ra(rbP))を算出する。鍵算出部125は、共有鍵Kを秘密情報記憶部121に記憶する。
【0030】
なお、共有鍵の算出に用いる演算はハッシュ関数Hに限られるものではない。メディア鍵xPと、自装置に固有の情報(第1固有情報)と、通信相手のデバイスに固有の情報(第2固有情報)から算出される情報(第2出力情報)とを用いて算出するものであればあらゆる演算を適用できる。例えば、ハッシュ関数以外の一方向性関数を用いてもよい。一方向性関数を用いれば、共有鍵が不正に流出した場合であっても、共有鍵の算出に用いられたデータの推測が困難となる。
【0031】
また、上記例では、1つの変数(xP+ra(rbP))を入力して共有鍵を算出するハッシュ関数Hの例を説明したが、2以上の変数を入力して共有鍵を算出する関数を用いてもよい。
【0032】
MKBからメディア鍵として導出されるデータはxPに限らない。例えば、一般的に数値Xであってもよい。この場合、共有鍵Kは、例えば、K=G(ra(rbP),X)、または、K=G(X,ra(rbP))などにより計算することができる。ここに、Gは一方向性関数である。
【0033】
なお、上記各記憶部(デバイス鍵記憶部111、メディア鍵記憶部112、秘密情報記憶部121、公開情報記憶部122)は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【0034】
次に、このように構成された第1の実施形態にかかるデバイス100による鍵共有処理について図2を用いて説明する。図2は、第1の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。以下では、デバイスaPおよびデバイスbPとの間で共有する共有鍵を生成する場合を例に説明する。
【0035】
まず、デバイスaPのMKB処理部110は、公開鍵KPを用いてMKBの署名を検証する(ステップS101)。署名が検証できなかった場合は、処理は中止する。
【0036】
デバイスaPの生成部113は、デバイス鍵記憶部111に記憶されたデバイス鍵を用いてMKBを処理し、メディア鍵xPを生成する(ステップS102)。MKB処理が実行できなかった場合、デバイスaPは無効化されているため処理は中止する。
【0037】
デバイスaPの乱数発生部123は、乱数raを発生する。デバイスaPは、乱数raを例えば秘密情報記憶部121に記憶する。鍵共有部120の演算部124は、乱数raとPとからraPを算出する(ステップS103)。通信部131は、raPをデバイスbPに送信する(ステップS104)。
【0038】
ステップS101からステップS104と同様の処理により、デバイスbPは、MKBの署名の検証(ステップS105)、メディア鍵xPの生成(ステップS106)、乱数rbの発生(ステップS107)、および、rbPの送信(ステップS108)を実行する。
【0039】
デバイスaPおよびデバイスbPは、それぞれ受け取ったrbPおよびraPを、例えば秘密情報記憶部121に記憶する。
【0040】
デバイスaPの鍵算出部125は、K=H(xP+ra(rbP))を算出する(ステップS109)。デバイスbPの鍵算出部125は、K=H(xP+rb(raP))を算出する(ステップS110)。
【0041】
このようにして、デバイスaPおよびデバイスbP間で共有する共有鍵Kがそれぞれ算出される。以下、共有鍵を確認するための処理の一例を説明する。
【0042】
デバイスaPは、Enc(K)(rbP)をデバイスbPに送信する(ステップS111)。一方、デバイスbPは、Enc(K)(raP)をデバイスaPに送信する(ステップS112)。例えばEnc(K)(rbP)は、rbPを共有鍵Kで暗号化したデータを示す。
【0043】
デバイスaPは、デバイスbPから受け取ったEnc(K)(raP)を共有鍵Kで復号し、得られたデータをraPと比較して一致を確認する(ステップS113)。一致しなければ処理を中断する。デバイスbPも同様の処理を行う(ステップS114)。
【0044】
Hは、公開されているハッシュ関数である。H(xP+rb(raP))は、共有鍵Kに一致するから、以上の処理によって、デバイスaPとデバイスbPとは共有鍵Kを共有することができる。ステップS111からステップS114は、共有鍵Kが共有されていることを、それぞれのデバイスが確認する手続きの一例であり、上述の方法に限られるわけではない。
【0045】
上記のプロトコルにおいて、デバイスaPおよびデバイスbPのいずれもがMKBを正しく処理できるときに初めて共有鍵Kを共有することが可能である。MKBが正しく処理できることは、すなわち、当該デバイスが無効化されていないことを意味する。無効化されていないデバイスを、準拠デバイス(compliant device)と呼ぶことがある。上記プロトコルは、準拠デバイスが鍵を共有するための仕組みを提供する。上記プロトコルの後半ではディフィー・ヘルマン(Diffie−Hellman)の鍵共有方式が利用されている。上記プロトコルの特徴の1つは、共有鍵を生成する際にxPというメディア鍵を用いることである。
【0046】
なお、適用可能な鍵共有方式はディフィー・ヘルマンの方式に限られるものではない。ディフィー・ヘルマンの方式と同様に離散対数問題の困難性を安全性の根拠とする他の方式を適用してもよい。
【0047】
上記プロトコルで処理されるMKBを生成するのはKDC10である。KDC10は、秘密の整数xを選び、無効化情報を含むMKBを作成して、メディア鍵としてxPを設定する。さらに、作成したMKBに秘密鍵KSで署名をする。このように、KDC10は、各デバイス間でディフィー・ヘルマンの鍵交換を行うベースとなるデータをメディア鍵としてMKBを作成する。
【0048】
次に、デバイス間で相互認証する場合の処理の例について説明する。上記の鍵共有処理が終了した時点では、デバイスaPおよびデバイスbP間で共有鍵Kが共有されており、デバイスaPおよびデバイスbPは、それぞれ相手が準拠デバイスであることを知っている。準拠デバイス同士の暗号通信のためには、上記プロトコルによる鍵共有で十分である。しかし、デバイスaPおよびデバイスbPが、互いに相手を確認(認証)した上で通信をするためには、さらに認証プロトコルを実行しなければならない。
【0049】
図3は、第1の実施形態における相互認証処理の全体の流れを示すシーケンス図である。以下では、デバイス100a(デバイスaP)およびデバイス100b(デバイスbP)との間の相互認証処理を例に説明する。
【0050】
デバイスaPの認証部126は、Ca=ra+h(raP)aを算出する(ステップS201)。デバイスbPの認証部126は、Cb=rb+h(rbP)bを算出する(ステップS202)。hは公開されているハッシュ関数である。
【0051】
デバイスaPの認証部126は、データ(aP,sign(KS)(aP),Ca)をデバイスbPに送信する(ステップS203)。一方、デバイスbPの認証部126は、データ(bP,sign(KS)(bP),Cb)をデバイスaPに送信する(ステップS204)。
【0052】
デバイスaPの認証部126は、公開鍵KPを用いて受け取った署名を検証する(ステップS205)。デバイスaPは、例えばKDC10から与えられた署名検証用のアルゴリズムであるVerify(KP)(bP,sign(KS)(bP))により署名を検証する。
【0053】
デバイスaPの認証部126は、署名が検証できなければ処理を中止する。デバイスbPの認証部126も同様の処理を行う(ステップS206)。
【0054】
デバイスaPの認証部126は、CbPを計算し、その値とrbP+h(rbP)bPの値とを比較する(ステップS207)。これらの値が一致すれば、通信相手が確かにデバイスbPであることが確認できる。デバイスbPの認証部126も同様の処理を行う(ステップS208)。
【0055】
なお、上記では通信相手デバイスの公開IDのみを署名検証したが、通信相手デバイスのデバイス鍵番号を含めて署名検証するようにしてもよい。デバイス鍵番号とは、デバイス鍵に重複なく割り当てた番号である。例えば、木構造のMKBを用いる場合、デバイス鍵に自然に割り当てられるリーフ番号という数値をデバイス番号としてもよい。デバイスaP、デバイスbPはそれぞれ、署名sign(KS)(aP||m)、sign(KS)(bP||j)を有している。ここに記号||はデータを連結することを示す。また、mとjはそれぞれデバイスaPとデバイスbPのデバイス鍵番号である。これらの署名は、KDC10により事前に発行され、各デバイスに配布されているものとする。上記の署名の検証のために、デバイスaPとデバイスbPは互いにmとjとを送り合う。
【0056】
上記のようにデバイス鍵番号を含めて署名検証することによって、通信相手デバイスのデバイス鍵番号が間違いなく確認できる。これは次のような場合に有用である。
【0057】
システムの管理者が、いくつかのデバイスが暗号通信した内容が外部に漏えいしていることを知ったとする。例えば、デバイスaPがデバイスbPと暗号通信した内容が漏えいしている。デバイスaPを調べたところ、デバイスaPに異常は無い。一方、デバイスbPは行方不明になっていて、調べることができない。しかも、デバイスbPは現在も時折ネットワークに接続されており、デバイスaP以外の多数のデバイスと暗号通信を行っていることが分かった。システム管理者は、デバイスbPを無効化して、暗号通信ネットワークから切り離すことにした。
【0058】
システム管理者は、デバイスaPの通信記録を調べ、デバイスbPのデバイス鍵番号を得る。上述のように、このデバイス鍵番号は署名によって検証されているので、間違いなくデバイスbPのデバイス鍵番号である。そこで、システム管理者は、KDC10に、取得したデバイス鍵番号のデバイス鍵を無効化したMKBを生成させる。新しく生成されたMKBを配布することによって、デバイスbPは無効化され、以後、暗号通信ネットワークに参加することは不可能になる。
【0059】
不正機器などの無効化のためには、KDC10が、デバイス鍵番号とデバイスの公開IDの組からなるリストを有していてもよい。図4は、このようなリストのデータ構造の一例を示す図である。図4において、a1、a2、・・・、aN、・・・は整数である。例えば、a1Pは、ベースポイントPのa1倍点である。
【0060】
上記のようなリストを用いることにより、KDC10は、デバイスの公開IDから、当該デバイスのデバイス鍵番号を知ることができ、従って、当該デバイスのデバイス鍵を知ることができる。上記のようなリストは、例えば、以下に述べるように利用される。
【0061】
システム管理者がデバイスbPを無効化して暗号通信ネットワークから排除するためには、KDC10が保有している図4のようなリストを検索し、bPという公開IDに対応するデバイス鍵番号を得る。システム管理者は、KDC10に、取得したデバイス鍵番号のデバイス鍵を無効化したMKBを生成させる。新しく生成されたMKBを配布することによって、デバイスbPは無効化され、以後、暗号通信ネットワークに参加することは不可能になる。
【0062】
次に、3つ以上の準拠デバイスが鍵を共有する場合を説明する。以下では、4つのデバイスa1P、a2P、a3P、a4Pの間での鍵共有処理を例に説明する((A1)〜(A7))。各デバイスの秘密IDはa1、a2、a3、a4である。他に仲介用のデバイスbPが存在する。
【0063】
(A1)署名検証:デバイスa1P、・・・、a4Pは、それぞれ公開鍵KPを用いてMKBの署名を検証する。いずれかのデバイスで署名が検証できなかった場合、処理は中止する。
(A2)MKB処理:デバイスa1P、・・・、a4Pは、それぞれのデバイス鍵を用いてMKBを処理する。いずれかのデバイスでMKB処理ができなかった場合、当該デバイスは無効化されているので、処理は中止する。
(A3)デバイスa1P、・・・、a4Pは、上記MKB処理によりそれぞれメディア鍵xを得る。
(A4)デバイスa1P、・・・、a4Pは、それぞれ乱数r1、・・・、r4を発生する。各デバイスは、当該デバイスが発生した乱数値を記憶する。
(A5)デバイスa1P、・・・、a4Pは、それぞれデバイスbPにr1P、・・・、r4Pを送る。デバイスbPは、(r1+・・・+r4)Pを計算する。
(A6)デバイスbPは、a1P、・・・、a4Pに(r1+・・・+r4)Pを送る。
(A7)デバイスa1Pは、K=H(x(r1+r2+r3+r4)P)を計算する。デバイスa2P、a3P、a4Pについても同様の計算を行う。これにより同一の共有鍵Kを得ることができる。
【0064】
上記のプロトコル((A1)〜(A7))において、デバイスa1P、・・・、a4PのいずれもがMKBを正しく処理できるときに初めて共有鍵Kを共有することが可能である。従って、上記プロトコルは、3つ以上の準拠デバイスが鍵を共有するための仕組みを提供する。
【0065】
(変形例)
上記実施形態では、楕円曲線の演算を用いてディフィー・ヘルマンの鍵共有を行ったが、他の演算を用いたディフィー・ヘルマンの鍵共有を行うことも可能である。以下、べき乗演算を用いたディフィー・ヘルマンの鍵共有方式を適用する変形例について説明する((B1)〜(B8))。
【0066】
公開情報としては、十分大きな素数pと、p元体の元gとが知られている。デバイスの公開IDはg^a、秘密IDはaである。g^aはgのa乗を表す。KDC10は、MKBのメディア鍵として整数xを設定している。以下では、公開IDがg^aおよびg^bであるデバイス100を、それぞれデバイスg^a、デバイスg^bという。
【0067】
(B1)署名検証:デバイスg^aとデバイスg^bは、それぞれ公開鍵KPを用いてMKBの署名を検証する。いずれかのデバイスで署名が検証できなかった場合、処理は中止する。
(B2)MKB処理:デバイスg^aとデバイスg^bは、それぞれのデバイス鍵を用いてMKBを処理する。いずれかのデバイスでMKB処理ができなかった場合、当該デバイスは無効化されているので、処理は中止する。
(B3)デバイスg^aとデバイスg^bは、上記MKB処理によりそれぞれメディア鍵xを得る。
(B4)デバイスg^aは乱数raを発生し、デバイスg^bは乱数rbを発生する。デバイスg^aはraを記憶し、デバイスg^bはrbを記憶する。
(B5)デバイスg^aは、デバイスg^bにg^raを送信する。デバイスg^bは、デバイスg^aにg^rbを送信する。デバイスg^aは受け取ったg^rbを記憶し、デバイスg^bは受け取ったg^raを記憶する。
(B6)デバイスg^aは、K=H(g^x+(g^ra)^rb)を算出する。デバイスg^bは、H(g^x+(g^rb)^ra)を算出する。この値はKに一致する:K=H(g^x+(g^rb)^ra)。
(B7)鍵共有の確認:デバイスg^aは、Enc(K)(g^rb)をデバイスg^bに送信する。一方、デバイスg^bは、Enc(K)(g^ra)をデバイスg^aに送信する。Enc(K)(g^rb)は、g^rbを共有鍵Kで暗号化したデータを示す。
(B8)鍵共有の確認:デバイスg^aは、デバイスg^bから受け取ったEnc(K)(g^ra)を共有鍵Kで復号し、得られたデータをg^raと比較して一致を確認する。一致しなければ処理を中断する。デバイスg^bも同様の処理を行う。
【0068】
なお、上記ハッシュ関数は一例であり、他のハッシュ関数やハッシュ関数以外の一方向性関数などを用いてもよい。例えば、H(g^x×(g^rb)^ra)などを用いて共有鍵を算出してもよい。
【0069】
(第2の実施形態)
第2の実施形態では、2つのMKB(MKB1、MKB2)を用いる場合の無効化機能付き鍵交換プロトコルの一例を説明する。
【0070】
図5は、第2の実施形態にかかるデバイス200を含むシステムの構成の一例を示すブロック図である。図5に示すように、デバイス200は、MKB処理部210と、鍵共有部220と、通信部131と、を備えている。
【0071】
第2の実施形態では、KDC10−2、生成部213、鍵算出部225、および、認証部226の機能が第1の実施形態と異なっている。その他の構成および機能は、第1の実施形態にかかるデバイス100のブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
【0072】
KDC10−2は、各デバイスに対して、P、公開ID、sign(KS)((公開ID)×P)、デバイス鍵、ハッシュ関数H、および、ハッシュ関数hを発行する。このとき、(公開ID)×Pがデバイスの識別情報である。Pは、楕円曲線上のベースポイントである。
【0073】
KDC10−2は、無効化されたデバイスに応じて、n個のデバイス鍵{k_1,・・・,k_n}とn個のメディア鍵{s_1,・・・,s_n}を生成する。KDC10−2は、MKB1={Enc(k_1)(s_1),・・・,Enc(k_n)(s_n)}、および、MKB2={Enc(k_1×P)(s_1×P),・・・,Enc(k_n×P)(s_n×P)}を算出する。KDC10−2は、算出したMKB1およびMKB2を各デバイス200に安全に配送する。ここで、Enc(k_i)(s_i)は、あるメディア鍵s_iを対応するデバイス鍵k_iで暗号化したデータを示す。
【0074】
安全な通信路が使用できない場合は、少なくともMKB1およびMKB2の改ざんが検知できる手段を施して配送する。例えば、KDC10−2がMKB1およびMKB2にデジタル署名を施すことで、各デバイス200はMKB1およびMKB2の改ざんを検知することができる。
【0075】
生成部213は、2つのMKB(MKB1およびMKB2)を用いてメディア鍵を生成する点が、第1の実施形態の生成部113と異なっている。鍵算出部225は、2つのMKBを用いて算出されるデータを用いて共有鍵を算出する点が、第1の実施形態の鍵算出部125と異なっている。
【0076】
次に、このように構成された第2の実施形態にかかるデバイス200による鍵共有処理について図6を用いて説明する。図6は、第2の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。以下では、デバイス200a(デバイスaP)およびデバイス200b(デバイスbP)との間で共有する共有鍵を生成する場合を例に説明する。
【0077】
デバイスaPのMKB処理部210は、公開鍵KPを用いてMKB1およびMKB2の署名を検証する(ステップS301)。署名が検証できなかった場合は、処理は中止する。
【0078】
デバイスaPの演算部124は、公開情報記憶部122からベースポイントを読み取り、乱数生成部123に乱数発生を指示し、発生されたraを取得し、Ra=ra×Pを計算する(ステップS302)。デバイスaPのMKB処理部210は、MKB1を正しく生成できるデバイス鍵kaを選択する(ステップS303)。MKB処理部210は、ka×Pを計算する(ステップS304)。これらの値は、他のデバイスと通信を試みる前に事前に算出しておいてもよい。
【0079】
デバイスaPの通信部131は、(Ra,ka×P,MKB2の処理位置(メディア鍵の生成位置))をデバイスbPに送信する(ステップS305)。デバイスbPでも同様に、MKB処理部210が、公開鍵KPを用いてMKB1およびMKB2の署名を検証し(ステップS306)、署名が検証できなかった場合は、処理は中止する。
【0080】
デバイスbPの演算部124は、(Ra,ka×P,MKB2の処理位置(メディア鍵の生成位置))を受信したら、デバイスaPと同様に、Pとrbを取得し、Rb=rb×Pを算出する(ステップS307)。デバイスbPのMKB処理部210は、MKB1を正しく処理できるデバイス鍵kbを選択する(ステップS308)。MKB処理部210は、kb×Pを計算する(ステップS309)。デバイスbPの通信部131は、デバイスaPに(Rb,kb×P,MKB2の処理位置(メディア鍵の生成位置))を送信する(ステップS310)。
【0081】
デバイスbPのMKB処理部210は、MKB2をka×Pを用いて処理してメディア鍵としてsa×Pを得る(ステップS311)。デバイスbPのMKB処理部210は、MKB1をkbを用いて処理してメディア鍵sbを得る(ステップS312)。デバイスbPの鍵算出部225は、K=H(rbRa,sb×(sa×P))を算出し、共有鍵とする(ステップS313)。また、デバイスbPは、相互認証処理に備えて(rb,Ra)を例えば秘密情報記憶部121に記憶しておく。
【0082】
一方、デバイスaPのMKB処理部210は、(Rb,kb×P,MKB2の処理位置(メディア鍵の生成位置))を受信したら、MKB2をkb×Pを用いて処理してメディア鍵としてsb×Pを得る(ステップS314)。デバイスaPのMKB処理部210は、MKB1をkaを用いて処理してメディア鍵saを得る(ステップS315)。デバイスaPの鍵算出部225は、K=H(raRb,sa×(sb×P))を計算し、共有鍵とする(ステップS316)。また、デバイスaPは、相互認証処理に備えて(ra,Rb)を例えば秘密情報記憶部121に記憶しておく。
【0083】
H(raRb,sa×(sb×P))=H(rbRa,sb×(sa×P))=H(ra×rb×P,sb×sa×P)であるから、正しく鍵が共有できる。
【0084】
なお、上記ハッシュ関数は一例であり、他のハッシュ関数やハッシュ関数以外の一方向性関数などを用いてもよい。例えば、H(raRb+sa×(sb×P))などを用いて共有鍵を算出してもよい。
【0085】
共有処理後、第1の実施形態と同様に、共有鍵Kが共有されていることを確認する手続きを行っても良い。
【0086】
図7は、第2の実施形態における相互認証処理の全体の流れを示すシーケンス図である。以下では、デバイス200a(デバイスaP)およびデバイス200b(デバイスbP)との間の相互認証処理を例に説明する。
【0087】
デバイスaPの認証部226は、記憶しておいた(ra,Rb)を読みだし、Ca=ra+h(ra×P,Rb)aを算出する(ステップS401)。デバイスaPの認証部226は、デバイスbPに(a×P,sign(KS)(a×P),Ca)を送信する(ステップS402)。
【0088】
デバイスbPの認証部226は、(a×P,sign(KS)(a×P),Ca)を受信すると、記憶しておいた(rb,Ra)を読みだし、Cb=rb+h(rb×P,Ra)bを計算する(ステップS403)。デバイスbPの認証部226は、デバイスaPに(b×P,sign(KS)(b×P),Cb)を送信する(ステップS404)。
【0089】
デバイスbPの認証部226は、Verify(KP)(a×P,sign(KS)(a×P))=1が成立することを検証する(ステップS405)。また、デバイスbPの認証部226は、Ca×P==Ra+h(Ra,rb×P)a×Pが成立するか検査する(ステップS406)。
【0090】
ここで、VerifyはKDC10−2から与えられた署名の検証アルゴリズムである。検査に合格すれば(Verify=1)、デバイスbPの認証部226は、通信相手が、識別情報がa×PのデバイスaPであることを認める。
【0091】
一方、デバイスaPの認証部226は、(b×P,sign(KS)(b×P),Cb)を受信すると、Verify(KP)(b×P,sign(KS)(b×P))=1が成立することを検証する(ステップS407)。また、デバイスaPの認証部226は、Cb×P==Rb+h(Rb,ra×P)b×Pが成立するか検査する(ステップS408)。検査に合格すれば、デバイスaPの認証部226は、通信相手が、識別情報がb×PのデバイスbPであることを認める。
【0092】
(第3の実施形態)
第3の実施形態では、多者間での無効化機能付き鍵交換プロトコルを実現する。以下では、5つのデバイス300(デバイス300a、300b、300c、300d、300e)の間で共有鍵を共有する場合を例に説明する。
【0093】
図8は、デバイス300a、300b、300c、300d、300eが鍵を共有するモデルを説明するための図である。本実施形態の鍵共有を行う際、鍵共有を希望するデバイス300は事前に通信を行い、鍵共有プロトコルの中心となるデバイス300を選択する。図8では、デバイス300eが選択された例が示されている。なお、図8のa、b、c、dおよびeは、それぞれデバイス300a、300b、300c、300dおよび300eを表している。また、Ri(iはa、b、c、d、eのいずれか)は、デバイス300iが乱数などを用いて算出した値を表す。
【0094】
図9は、第3の実施形態にかかるデバイス300を含むシステムの構成の一例を示すブロック図である。図9に示すように、デバイス300は、MKB処理部110と、鍵共有部320と、通信部131と、を備えている。
【0095】
第3の実施形態では、鍵算出部325および認証部326の機能が第1の実施形態と異なっている。その他の構成および機能は、第1の実施形態にかかるデバイス100のブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。鍵算出部325は、他の複数のデバイス300から受信したデータを用いて共有鍵Kを算出する点が、第1の実施形態の鍵算出部125と異なっている。
【0096】
次に、このように構成された第3の実施形態にかかるデバイス300による鍵共有処理について図10を用いて説明する。図10は、第3の実施形態における鍵共有処理の全体の流れを示すシーケンス図である。デバイス300a〜300dは同様の処理を行うため、ここでは特にデバイス300a(デバイスaP)とデバイス300e(デバイスeP)との間で実行される処理のみを記述する。
【0097】
デバイスaPのMKB処理部110は、公開鍵KPを用いてMKBの署名を検証する(ステップS501)。署名が検証できなかった場合は、処理は中止する。デバイスaPの演算部124は、乱数raを取得し、Ra=ra×Pを計算する(ステップS502)。この計算は、他のデバイスと通信を試みる前に事前計算しておいてもよい。デバイスaPの通信部131は、RaをデバイスePに送信する(ステップS503)。
【0098】
デバイスePでも同様に、MKB処理部110が、公開鍵KPを用いてMKBの署名を検証し(ステップS504)、署名が検証できなかった場合は、処理は中止する。
【0099】
デバイスePの演算部124は、デバイスaP〜dPより(Ra,Rb,Rc,Rd)を受信したら、デバイスaPと同様に、乱数reを取得し、Re=re×Pを算出する(ステップS505)。デバイスePの生成部113は、MKBを正しく処理できるデバイス鍵を用いて、メディア鍵sを計算する(ステップS506)。デバイスePの鍵算出部325は、h=H(s,Ra,Rb,Rc,Rd,Re)を算出する(ステップS507)。デバイスePの通信部131は、デバイスaP〜dPに(Ra,Rb,Rc,Rd,Re,h)を送信する(ステップS508)。デバイスePの鍵算出部325は、K=H(s(Ra+Rb+Rc+Rd+Re))を計算し、共有鍵とする(ステップS509)。また、デバイスePは、相互認証処理に備えて少なくとも(re,Ra,Rb,Rc,Rd)を例えば秘密情報記憶部121に記憶しておく。
【0100】
一方、(Ra,Rb,Rc,Rd,Re,h)を受信したら、デバイスaPの生成部113は、MKBをデバイス鍵で処理してメディア鍵sを得る(ステップS510)。デバイスaPの鍵算出部325は、受信したh=H(s,Ra,Rb,Rc,Rd,Re)が成立するか否かを検査する(ステップS511)。デバイスaPの鍵算出部325は、K=H(s(Ra+Rb+Rc+Rd+Re))を計算し、共有鍵とする(ステップS512)。また、デバイスaPは、相互認証処理に備えて少なくとも(ra,Rb,Rc,Rd,Re)を例えば秘密情報記憶部121に記憶しておく。
【0101】
図11は、第3の実施形態における相互認証処理の全体の流れを示すシーケンス図である。各デバイス300の処理は同様であるため、以下では、デバイス300a(デバイスaP)およびデバイス300i(iはb、c、d、e)(デバイスiP)との間の相互認証処理を例に説明する。
【0102】
デバイスaPの認証部326は、記憶しておいた(ra,Rb,Rc,Rd,Re)を読みだし、Ca=ra+h(ra×P,Rb,Rc,Rd,Re)aを計算する(ステップS601)。そして、デバイスaPの認証部326は、デバイスiP(デバイスbP〜デバイスeP)に(a×P,sign(KS)(a×P),Ca)を送信する(ステップS602)。同様にして、デバイスiPの認証部326は、デバイスaPに(i×P,sign(KS)(i×P),Ci)を送信する(ステップS603)。
【0103】
デバイスaPの認証部326は、(i×P,sign(KS)(i×P),Ci)を受信すると、Verify(KP)(i×P,sign(KS)(i×P))=1が成立することを検証する(ステップS604)。また、デバイスaPの認証部326は、Ci×P==Ri+h(Ri,Ra,・・・,Re)i×Pが成立するか検査する(ステップS605)。検査に合格すれば、デバイスaPの認証部326は、通信相手が、識別情報がi×Pのデバイスiであることを認める。
【0104】
(第4の実施形態)
第4の実施形態では、情報処理装置をスマートグリッドに適用した実施形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【0105】
図12は、第4の実施形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するスマートメーター3010aと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)3020が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3030がビル毎に設置される。商業ビルには、スマートメーター3010aと同様のスマートメーター3010bが設置される。以下では、スマートメーター3010aおよび3010bを単にスマートメーター3010という。
【0106】
スマートメーター3010は、コンセントレータとよばれる中継器(コンセントレータ3040)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)3050と通信する。MDMS3050は、各家庭のスマートメーター3010から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)3060は、MDMS3050に集まった複数の家庭の電力使用量、または、電力系統に設置されたセンサからの情報に基づいて、各家庭のスマートメーター3010やHEMS3020に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS3060は、遠隔端末ユニットであるRTU(Remote Terminal Unit)3071に接続された太陽光発電や風力発電などの分散電源3080、同じくRTU3072に接続された蓄電装置3090、および、RTU3073に接続された発電側との間を制御する送配電制御装置3100を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0107】
図12に含まれる各デバイス間では、共有鍵Kを用いて暗号通信が行われる。例えば、MDMS3050とスマートメーター3010とは共有鍵Kを保持しており、当該共有鍵Kを用いて暗号通信を行う。このようなスマートグリッドで用いられるデバイスに、上記各実施形態のデバイス(デバイス100、デバイス200、デバイス300)を適用することができる。
【0108】
以上説明したとおり、第1から第4の実施形態によれば、KDCがMKBを配布するのみで各デバイス間の鍵共有を実現できるため、鍵管理の負担増大を回避できる。また、デバイスの無効化も容易に実現できる。
【0109】
次に、第1〜第4の実施形態にかかる情報処理装置のハードウェア構成について図13を用いて説明する。図13は、第1〜第4の実施形態にかかる情報処理装置のハードウェア構成を示す説明図である。
【0110】
第1〜第4の実施形態にかかる情報処理装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
【0111】
第1〜第4の実施形態にかかる情報処理装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
【0112】
第1〜第4の実施形態にかかる情報処理装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【0113】
さらに、第1〜第4の実施形態にかかる情報処理装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1〜第4の実施形態にかかる情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0114】
第1〜第4の実施形態にかかる情報処理装置で実行されるプログラムは、コンピュータを上述した情報処理装置の各部(MKB処理部、鍵共有部、通信部)として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【0115】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0116】
20 ネットワーク
100、200、300 デバイス
110、210 MKB処理部
111 デバイス鍵記憶部
112 メディア鍵記憶部
113、213 生成部
120、220、320 鍵共有部
121 秘密情報記憶部
122 公開情報記憶部
123 乱数発生部
124 演算部
125、225、325 鍵算出部
131 通信部

【特許請求の範囲】
【請求項1】
外部装置と接続される情報処理装置であって、
デバイス鍵を記憶するデバイス鍵記憶部と、
前記デバイス鍵とメディアキーブロックとからメディア鍵を生成する生成部と、
前記情報処理装置に固有の第1固有情報と公開情報とに基づいて第1出力情報を演算する演算部と、
前記第1出力情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第2出力情報を受信する通信部と、
前記メディア鍵と、前記第1固有情報と、前記第2出力情報とに基づいて、前記外部装置との間で共有する共有鍵を算出する鍵算出部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記演算部は、前記第1固有情報と公開情報から前記第1出力情報を出力する演算であって、離散対数問題を根拠として前記第1出力情報から前記第1固有情報を求めることが困難である演算を実行すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項3】
乱数である前記第1固有情報を発生する乱数発生部をさらに備え、
前記演算部は、前記乱数発生部により発生された前記第1固有情報と前記公開情報とに基づいて前記第1出力情報を演算すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記鍵算出部は、前記メディア鍵と、前記第1固有情報と、前記第2出力情報とを一方向性関数に入力して得られる前記共有鍵を算出すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項5】
複数の前記外部装置に接続され、
前記通信部は、前記第1出力情報を複数の前記外部装置に送信し、複数の前記外部装置それぞれから複数の前記第2出力情報を受信し、
前記鍵算出部は、前記メディア鍵と、前記第1固有情報と、複数の前記第2出力情報とに基づいて、前記共有鍵を算出すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項6】
相互認証処理に備えて、少なくとも前記第1固有情報と前記第2出力情報とを記憶する秘密情報記憶部と、
前記第1固有情報と前記第2出力情報とを用いて、第1認証情報を計算する認証情報計算部と、
前記第1認証情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第2認証情報を受信し、前記第1固有情報と前記第2出力情報と前記公開情報と前記第2認証情報とを用いて、前記外部装置との間で相互認証処理を行う認証部と、をさらに備えること、
を特徴とする請求項1に記載の情報処理装置。
【請求項7】
デバイス鍵を記憶するデバイス鍵記憶部を備えるコンピュータを、
前記デバイス鍵とメディアキーブロックとからメディア鍵を生成する生成部と、
前記情報処理装置に固有の第1固有情報と公開情報とに基づいて第1出力情報を演算する演算部と、
前記第1出力情報を前記外部装置に送信し、前記外部装置から前記外部装置が計算した第2出力情報を受信する通信部と、
前記メディア鍵と、前記第1固有情報と、前記第2出力情報とに基づいて、前記外部装置との間で共有する共有鍵を算出する鍵算出部、
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−213009(P2012−213009A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2011−77175(P2011−77175)
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】