説明

通信装置および鍵算出装置

【課題】多数のデバイスの共有鍵を簡易に管理する。
【解決手段】通信装置は、鍵記憶部と取得部と鍵選択部と算出部とを備える。鍵記憶部は、複数のデバイス鍵それぞれを、通信装置を識別する第1識別情報で変換した複数の第1情報を記憶する。取得部は、外部装置を識別する第2識別情報を取得する。鍵選択部は、メディアキーブロック処理により複数の第1情報から1の第1情報を選択する。算出部は、選択した第1情報を、第2識別情報で変換した第2情報を用いて共有鍵を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、通信装置および鍵算出装置に関する。
【背景技術】
【0002】
原子力や火力など従来の発電に加えて太陽光や風力などの再生可能エネルギーを併用する際、電力品質の安定化を図るために次世代電力網(スマートグリッド)が構築されている。
【0003】
ここで、通信可能な装置・機器を「デバイス」と呼ぶことにする。スマートグリッドでは、メーターデータ管理システム(Metering Data Management System(MDMS))、分散電源、蓄電装置、送配電制御装置、エネルギー管理システム(Energy Management System(EMS))、BEMS(Building Energy Management System)、HEMS(Home Energy Management System)、および、スマートメーター(SM)がデバイスである。
【0004】
スマートグリッドなどのシステムでは、2つ以上のデバイスが暗号通信を行う必要がある場合が存在する。デバイスが暗号通信を行うには、事前に鍵を共有している必要がある。この共有鍵は、対称鍵のペアであっても、公開鍵と秘密鍵とのペアであってもよい。共有鍵は、デバイス間の通信セキュリティの基礎である。このため、秘密の保持が重要であり、デバイスへの共有鍵のインストールはデバイスの管理者が責任を持って安全に行う必要がある。デバイスへの共有鍵のインストールは、例えば、デバイスをネットワークに接続する前に人手によって行うことができる。通信相手のデバイスは、一般に複数存在する。デバイスが3つ以上のデバイスとグループを作り、グループ内で鍵を共有する場合もある。そのため、デバイスの管理者は多数の鍵を管理してインストールする必要がある。さらに、ネットワークに新たに追加されたデバイスと通信する場合、既存デバイスに対して、新たに追加されたデバイスとの共有鍵をインストールしなければならない。
【0005】
一方、MKB(Media Key Block)と呼ばれる技術が知られている。多数のデバイスに、それぞれ固有の鍵束(デバイス鍵)を割り当てる。各デバイスに、MKBと呼ばれる共通のデータが配布される。各デバイスは、当該デバイスに割り当てられたデバイス鍵を用いてMKBを処理する。MKB処理の結果、各デバイスはメディア鍵と呼ばれるデータを得る。MKBを用いて指定された任意の個数のデバイスを無効化することができる。例えば、デバイス8とデバイス21を無効化するようにMKBを構成することができる。この場合、デバイス8が保持するデバイス鍵を用いてMKBを処理してもメディア鍵は得られない。デバイス21についても同様である。
【0006】
MKBの技術を用いることにより、それぞれのデバイスに割り当てられたデバイス鍵を個別に無効化することができる。さらに、無効化されるデバイス鍵の組み合わせによって、効率的に無効化することができる。この性質を活用して、MKBは著作権保護技術に応用されている。例えば、一連のデバイス鍵を持つデバイスが不正に解析されるなどして、暗号化コンテンツが不正に復号され、平文化されたコンテンツが流出するようになったと仮定する。例えば、あるメーカーの製造した一連のデバイスは堅牢性(robustness)が不足しており、外部からメディア鍵を容易に読むことができるような場合に、上述のようなコンテンツの不正流出が発生する。
【0007】
コンテンツの著作権者、または、その代理者が、不正流出の事実を知ったと仮定する。著作権者、または、その代理者は、一連のデバイス鍵を持つデバイスを無効化するMKBを配布する。これにより、一連のデバイスは無効化され、無効化されたデバイスでは、メディア鍵の導出が不可能になる。MKBより導出されるメディア鍵を暗号化コンテンツの復号に利用するようにしている場合、無効化されたデバイスは、暗号化コンテンツの復号ができない。このように、MKBを更新することによって、一連の堅牢性に問題点を有するデバイスからのコンテンツ流出を、以後、食い止めることができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特許第3957978号公報
【特許文献2】特開2006−253822号公報
【非特許文献】
【0009】
【非特許文献1】D. Naor,M. Naor,and J. Lotspiech: "Revocation and Tracing Schemes for Stateless Receivers," In Proc. of CRYPTO '01,LNCS 2139,Springer-Verlag,pp. 41-62,2001
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述のスマートグリッドなどのように共有鍵を用いる場合、共有鍵の管理と各デバイスへのインストールは手間がかかるという問題があった。例えば、ネットワークにデバイスが追加されたり、ネットワークからデバイスが削除されたりするたびに、共有鍵のインストールまたはアンインストール作業が発生する可能性がある。
【課題を解決するための手段】
【0011】
実施形態の通信装置は、鍵記憶部と取得部と鍵選択部と算出部とを備える。鍵記憶部は、複数のデバイス鍵それぞれを、通信装置を識別する第1識別情報で変換した複数の第1情報を記憶する。取得部は、外部装置を識別する第2識別情報を取得する。鍵選択部は、メディアキーブロック処理により複数の第1情報から1の第1情報を選択する。算出部は、選択した第1情報を、第2識別情報で変換した第2情報を用いて共有鍵を算出する。
【図面の簡単な説明】
【0012】
【図1】MKBを用いた認証鍵共有を実現する記憶装置およびアクセス装置のブロック図。
【図2】生成行列の一例を示す図。
【図3】記憶装置のブロック図。
【図4】アクセス装置のブロック図。
【図5】アクセス処理のシーケンス図。
【図6】スマートグリッドシステムの構成例を示す図。
【図7】クライアントのブロック図。
【図8】サーバのブロック図。
【図9】鍵算出装置のブロック図。
【図10】鍵センタのブロック図。
【図11】クライアントによる共有鍵算出処理のフローチャート。
【図12】サーバによる共有鍵算出処理のフローチャート。
【図13】鍵算出制御処理のフローチャート。
【図14】鍵算出装置による共有鍵算出処理フローチャート。
【図15】暗号化共有鍵算出処理のフローチャート。
【図16】変換MKBのフォーマットの一例を示す図。
【図17】鍵センタのMKB送信部のブロック図。
【図18】サーバのMKB送信部のブロック図。
【図19】MKB送信処理のフローチャート。
【発明を実施するための形態】
【0013】
以下に添付図面を参照して、この発明にかかる通信装置および鍵算出装置の好適な実施形態を詳細に説明する。
【0014】
まず、データを記憶する記憶装置と、当該記憶装置に記憶されたデータにアクセスするアクセス装置を例にとって、本実施形態で用いるMKBの技術について説明する。
【0015】
図1は、MKBを用いた認証鍵共有を実現する記憶装置10およびアクセス装置20の構成例を示すブロック図である。
【0016】
図1に示すように、記憶装置10は、MKB11と、メディア鍵(KM)12と、乱数発生部1と、演算部2と、データ記憶部3と、暗号化部4とを備えている。乱数発生部1は、乱数(R)13を発生する。演算部2は、予め定められた一方向性関数にKM12とR13とを入力し、アクセス装置20と共有する認証鍵であるKT14を算出する。データ記憶部3は、データを記憶する記憶部であり、秘匿領域を含む。暗号化部4は、KT14を用いてデータ記憶部3から読み出されたデータを暗号化する。
【0017】
アクセス装置20は、デバイス鍵(KD)31と、MKB処理部21と、演算部22と、復号部23と、データ利用部24とを備えている。MKB処理部21は、KD31を用いてMKB11を処理することによりメディア鍵(KM)32を導出するMKB処理を実行する。演算部22は、演算部2と同じ一方向性関数にKM12とR13とを入力して認証鍵であるKT33を算出する。正常に処理された場合は、KT14とKT33とは一致する。復号部23は、KT33を用いて、暗号化部4により暗号化されたデータを復号する。データ利用部24は、復号されたデータを利用する。
【0018】
MKBを用いた認証鍵共有は、図1のように構成された記憶装置10およびアクセス装置20により、例えば、以下のように実現される。図1に示すように、記憶装置10のデータ記憶部3から読み出すデータはKT14によって暗号化される。アクセス装置20がKT14と同一のKT33を導出できない限り、読出しデータを正しく復号することはできない。アクセス装置20がKT14と同一のKT33を導出するためには、アクセス装置20が、当該アクセス装置20が保持するKD31を用いて、MKBを処理して正しいKM32が取得できることが必要である。KD31がMKB11によって無効化されていた場合、アクセス装置20のMKB処理部21によるMKB処理によって正しくKM32を取得することができない。従って、その場合、アクセス装置20は記憶装置10から読み出したデータを正しく復号することができない。このようにして、記憶装置10のデータ記憶部3のデータの秘匿が実現される。
【0019】
MKBとデバイス鍵の具体的な構成方法の一例は、例えば特許文献1に記載されている。以下、MKBとデバイス鍵の構成方法の一例について簡単に説明する。
【0020】
まず、図2のような生成行列を用意する。当該生成行列の各成分k(0,0)〜k(4,2)は16バイトのデータである。数0、数1または数2を5個並べた順列の全体をDとおく(D={0,1,2}^5)。Dの要素を経路という。また、経路の先頭を含む部分順列を、当該経路に随伴する経路(随伴経路)と呼ぶ。例えば、x=(2,0,2,2,1)は経路であり、経路xの随伴経路は、(2)、(2,0)、(2,0,2)、(2,0,2,2)および(2,0,2,2,1)である。各デバイスにはDの要素である1つの経路が割り当てられる。さらに、各デバイスは、当該デバイスに割り当てられている経路の随伴経路と生成行列とによって定まる鍵束を格納している。例えば、デバイスx(上記経路xが割り当てられているデバイス)は、以下の(1)式に示す鍵束を格納している。
{PF(2),PF(2,0),PF(2,0,2),PF(2,0,2,2),PF(2,0,2,2,1)}・・・(1)
【0021】
関数PFは、例えば、以下の(2)式のように定義されている。
PF(n)=k(0,n),
PF(n0,n1)=G(k(1,n1),PF(n0)),
PF(n0,n1,n2)=G(k(2,n2),PF(n0,n1)),
PF(n0,n1,n2,n3)
=G(k(3,n3),PF(n0,n1,n2)),
PF(n0,n1,n2,n3,n4)
=G(k(4,n4),PF(n0,n1,n2,n3))・・・(2)
【0022】
Gは一方向性関数を表す。このような鍵束が、デバイスxに割り当てられたデバイス鍵である。
【0023】
さて、16バイトのメディア鍵をKMとする。リボーク(無効化)する端末が存在しない場合、以下の(3)式に示すデータの集合M1をMKBとして配布する。
M1={E(k(0,0),KM),E(k(0,1),KM),E(k(0,2),KM)}・・・(3)
【0024】
E(k,X)は、データXを鍵kで暗号化した結果として得られる暗号化データである。
【0025】
デバイスx=(2,0,2,2,1)をリボークするMKBは次のように構成する。xの境界集合は以下の(4)式で表される集合である。
{(0)、(1)、(2,1)、(2,2)、(2,0,0)、(2,0,1)、(2,0,2,0)、(2,0,2,1)、(2,0,2,2,0)、(2,0,2,2,2)}・・・(4)
【0026】
M2を以下の(5)式で表されるデータ集合として定める。
M2={
E(PF(0),KM),
E(PF(1),KM),
E(PF(2,1),KM),
E(PF(2,2),KM),
E(PF(2,0,0),KM),
E(PF(2,0,1),KM),
E(PF(2,0,2,0),KM),
E(PF(2,0,2,1),KM),
E(PF(2,0,2,2,0),KM),
E(PF(2,0,2,2,2),KM)}・・・(5)
【0027】
デバイスxは、上述のように(1)式の鍵束{PF(2),PF(2,0),PF(2,0,2),PF(2,0,2,2),PF(2,0,2,2,1)}を格納している。しかし、デバイスxは、この鍵束の中のいずれの鍵によってM2のいずれの要素を復号しても正しくKMを得ることはできない。従って、デバイスxはリボークされている。
【0028】
しかも、デバイスx以外のデバイスは、M2の適当な要素を復号して正しくKMを得ることができる。実際、経路xと異なる経路yを考える。経路yの第1の要素が0または1であれば、デバイスy(経路yが割り当てられているデバイス)はPF(0)またはPF(1)を格納している。従って、M2の要素である、E(PF(0),KM)またはE(PF(1),KM)を復号してKMが得られる。経路yの第1の要素が2で第2の要素が1または2であれば、yはPF(2,1)またはPF(2,2)を格納している。従って、M2の要素であるE(PF(2,1),KM)またはE(PF(2,2),KM)を復号してKMが得られる。このように、デバイスxと異なる任意のデバイスyについて、デバイスyが格納する鍵束に含まれるいずれかの鍵を用いて、M2のいずれかの要素を復号してKMを得ることができる。
【0029】
次に、上記x=(2,0,2,2,1)に加えてx2=(1,1,0,0,2)を無効化するMKBの構成方法を示す。xとx2の境界集合は以下の(6)式のようになる。
{(0)、(1)、(2,1)、(2,2)、(1,0)、(1,2)、(2,0,0)、(2,0,1)、(1,1,1)、(1,1,2)、(2,0,2,0)、(2,0,2,1)、(1,1,0,1)、(1,1,0,2)、(2,0,2,2,0)、(2,0,2,2,2)、(1,1,0,0,0)、(1,1,0,0,1)}・・・(6)
【0030】
従って、xとx2とを無効化するMKBであるM3は以下の(7)式で与えられる。
M3={
E(PF(0),KM),
E(PF(1),KM),
E(PF(2,1),KM),
E(PF(2,2),KM),
E(PF(1,0),KM),
E(PF(1,2),KM),
E(PF(2,0,0),KM),
E(PF(2,0,1),KM),
E(PF(1,1,1),KM),
E(PF(1,1,2),KM),
E(PF(2,0,2,0),KM),
E(PF(2,0,2,1),KM),
E(PF(1,1,0,1),KM),
E(PF(1,1,0,2),KM),
E(PF(2,0,2,2,0),KM),
E(PF(2,0,2,2,2),KM),
E(PF(1,1,0,0,0),KM),
E(PF(1,1,0,0,1),KM)}・・・(7)
【0031】
無効化対象のデバイス鍵が特別な組み合わせである場合は、MKBのサイズを節約して効率的に無効化することが可能である。例えば、(2,0,?,?,?)という一群のデバイス鍵を無効化する場合を考える。ただし、「?」には0、1または2の数値が入る。これら3^3=27個のデバイスを無効化するMKBは以下の(8)式で示すM4で与えられる。
M4={E(PF(0),KM),E(PF(1),KM),E(PF(2,1),KM),E(PF(2,2),KM)}・・・(8)
【0032】
図1のような認証鍵共有の方法では、MKBから導出されるメディア鍵(KM)は同一である。従って、上述のようにアクセス装置が不正に解析されてKMが取得され、かつ、不正に解析されたアクセス装置を特定できない場合には、データの不正流出を防止することができない。
【0033】
そこで、本実施形態にかかる記憶装置は、MKBによるデバイスの無効化を可能としつつ、アクセス装置を識別する識別情報(デバイス番号)を用いてアクセス装置ごとに異なる認証鍵を生成する。これにより、不正にアクセスするアクセス装置(ソフトウェア)等が配布された場合であっても、不正に解析されたアクセス装置を特定できるため、データの不正流出を回避可能となる。
【0034】
図3は、本実施形態にかかる記憶装置100の構成の一例を示すブロック図である。図3に示すように、記憶装置100は、デバイス鍵記憶部1101と、取得部1102と、受信部1103と、ベース鍵記憶部1104と、鍵生成部1105と、乱数生成部1106と、鍵暗号化部1107と、データ暗号化部1108と、データ記憶部1109と、を備えている。
【0035】
デバイス鍵記憶部1101は、図2に示す生成行列Mのような行列形式で複数のデバイス鍵を格納する。取得部1102は、デバイス鍵記憶部1101に記憶されたデバイス鍵のうち、いずれかのデバイス鍵を特定するインデックス(鍵インデックスi(m))をアクセス装置200から取得(受信)する。受信部1103は、アクセス装置200の送信部2104(後述)から、アクセス装置200に割り当てられたデバイス番号mを受信する。ベース鍵記憶部1104は、ベース鍵KB(詳細は後述)を記憶する。
【0036】
鍵生成部1105は、生成行列M、鍵インデックスi(m)、および、デバイス番号mから、アクセス装置200との間で共有する認証鍵(以下、認証鍵KAという)を生成する。鍵生成部1105は、第1算出部1105aと、第2算出部1105bとを備えている。
【0037】
第1算出部1105aは、鍵インデックスi(m)で特定されるデバイス鍵から関数PFによる経路関数値(後述)を算出し、算出した値(算出値)をデバイス番号mで変換した復号鍵Kdを算出する。
【0038】
第2算出部1105bは、認証鍵KAを暗号化した鍵情報を復号鍵Kdにより復号することにより認証鍵KAを算出する。本実施形態では、第2算出部1105bは、ベース鍵KBを復号鍵Kdで復号することにより認証鍵KAを算出する。
【0039】
なお、認証鍵(第1鍵)を算出する方法は、復号鍵を用いた復号演算に限られるものではない。認証鍵に演算を施して得られる鍵情報に対して、当該演算に対応する演算を施すための鍵(第2鍵)を用いて認証鍵を算出する方法であれば、あらゆる方法を適用できる。
【0040】
乱数生成部1106は、乱数Rを生成する。鍵暗号化部1107は、乱数Rを認証鍵KAで暗号化する。
【0041】
データ記憶部1109は、アクセス装置200からアクセス可能なデータを記憶する。データ記憶部1109は、秘匿領域1110と、一般領域1111と、を含む。秘匿領域1110は、無効化されておらず、認証鍵KAを生成できるアクセス装置200のみがデータを読み出し可能なデータ領域である。一般領域1111は、認証鍵KAによる認証を行わずにデータを読み出し可能なデータ領域である。
【0042】
本実施形態では、一般領域1111は、図1で説明したようなMKBを変換したMKB(Twisted MKB(以下、変換MKBという))を記憶する。変換MKBのデータ構造の詳細については後述する。
【0043】
データ暗号化部1108は、乱数Rを用いて秘匿領域1110に格納されている読み出し対象データ(データD)を暗号化し、暗号化データD’=E(R,D)を算出する。
【0044】
図4は、本実施形態にかかるアクセス装置200の構成の一例を示すブロック図である。図4に示すように、アクセス装置200は、読取部2101と、変換デバイス鍵記憶部2102と、鍵選択部2103と、送信部2104と、番号記憶部2105と、鍵復号部2106と、データ復号部2107と、データ利用部2108と、を備えている。
【0045】
読取部2101は、記憶装置100の一般領域1111から変換MKBを読み取る。なお、記憶装置100から変換MKBをアクセス装置200に送信する代わりに、アクセス装置200が、記憶装置100以外の第三者から変換MKBを取得するように構成してもよい。
【0046】
変換デバイス鍵記憶部2102は、記憶装置100のデバイス鍵記憶部1101に記憶された複数のデバイス鍵を変換した複数の変換デバイス鍵(Twisted Device Key)を記憶する。変換デバイス鍵のデータ構造の詳細については後述する。
【0047】
鍵選択部2103は、複数の変換デバイス鍵の中から、変換MKBに応じた変換デバイス鍵を選択し、選択した変換デバイス鍵から認証鍵KAを算出する。
【0048】
送信部2104は、選択された復号鍵Kdを特定する鍵インデックスi(m)を記憶装置100に送信する。番号記憶部2105は、アクセス装置200のデバイス番号mを記憶する。
【0049】
鍵復号部2106は、鍵選択部2103により算出された認証鍵KAを用いて暗号化乱数R’から乱数Rを復号する。データ復号部2107は、乱数Rを用いて暗号化データD’からデータDを復号する。データ利用部2108は、データDを利用する処理部である。例えば、データ利用部2108は、データDをディスプレイなどに表示する処理を行う。
【0050】
次に、このように構成された本実施形態にかかる記憶装置100およびアクセス装置200によるアクセス処理について図5を用いて説明する。図5は、本実施形態におけるアクセス処理の全体の流れを示すシーケンス図である。
【0051】
まず、アクセス装置200の読取部2101が、記憶装置100に対して変換MKBの送信を要求する(ステップS101)。記憶装置100は、要求に応じて一般領域1111から変換MKBを読み出し、アクセス装置200に送信する(ステップS102)。
【0052】
アクセス装置200の鍵選択部2103は、変換デバイス鍵記憶部2102に記憶された複数の変換デバイス鍵から、変換MKBに対応する変換デバイス鍵を復号鍵Kdとして選択する(ステップS103)。鍵選択部2103は、選択した復号鍵Kdを特定する情報である鍵インデックスi(m)を算出する(ステップS104)。送信部2104は、算出された鍵インデックスi(m)と、番号記憶部2105に記憶されたデバイス番号mとを記憶装置100に送信する(ステップS105)。
【0053】
記憶装置100の取得部1102は、アクセス装置200から送信された鍵インデックスi(m)を受信する。鍵生成部1105の第1算出部1105aは、受信された鍵インデックスi(m)で特定されるデバイス鍵から関数PFによる経路関数値を算出する。そして、第1算出部1105aは、経路関数値をデバイス番号mで変換した復号鍵Kdを算出する(ステップS106)。
【0054】
また、鍵生成部1105は、ベース鍵記憶部1104からベース鍵KBを取得する(ステップS107)。第2算出部1105bは、復号鍵Kdによりベース鍵KBを復号することにより認証鍵KAを算出する(ステップS108)。
【0055】
一方、アクセス装置200では、鍵選択部2103が、ベース鍵KBを、読取部2101により読み取られた変換MKBから取得する(ステップS109)。鍵選択部2103は、取得したベース鍵KBを、ステップS103で選択した復号鍵Kdにより復号した認証鍵KAを算出する(ステップS110)。
【0056】
ここまでの処理により、記憶装置100およびアクセス装置200のそれぞれが同一の認証鍵KAを得ることができる(ステップS108、ステップS110)。これ以降、共有する認証鍵KAを用いた各種処理を実行可能となる。以下では、認証鍵KAを用いて秘匿領域1110からのデータを読み出す処理を例に説明するが、適用可能な処理はこれに限られるものではない。例えば、アクセス装置200が記憶装置100の秘匿領域1110にデータを書き込む場合についても、認証鍵KAを共有するまでの処理は図5と同様の処理が適用できる。
【0057】
記憶装置100で認証鍵KAが算出されると、乱数生成部1106が、乱数Rを生成する(ステップS111)。鍵暗号化部1107は、乱数Rを認証鍵KAで暗号化した乱数である暗号化乱数R’を算出する(ステップS112)。データ暗号化部1108は、秘匿領域1110に記憶されたデータDを乱数Rで暗号化したデータである暗号化データD’を算出する(ステップS113)。記憶装置100は、暗号化乱数R’と暗号化データD’とをアクセス装置200に送信する(ステップS114)。
【0058】
アクセス装置200の鍵復号部2106は、受信した暗号化乱数R’を認証鍵KAで復号した乱数Rを算出する(ステップS115)。データ復号部2107は、受信した暗号化データD’を乱数Rで復号したデータDを算出する(ステップS116)。
【0059】
このような処理により、MKB技術を用いた認証鍵共有による秘匿領域へのアクセス処理を実現できる。
【0060】
次に、上記のようなアクセス処理の具体例についてさらに説明する。以下では、アクセス装置200に経路x=(2,0,2,2,1)が割り当てられているものとする。
【0061】
番号記憶部2105が格納するデバイス番号は、アクセス装置200に割り当てられている数値である。この数値は通常アクセス装置1台ごとに異なっているが、一群のアクセス装置200に共通であってもよい。本実施形態では、デバイス番号は、アクセス装置200に割り当てられた経路を表現する数値とする。すなわち、番号記憶部2105は、経路x=(2,0,2,2,1)を3進表現した数値であるデバイス番号m=20221_3=187を格納している。なお、*_3は、「*」が3進数であることを表す。
【0062】
経路を3進表現するとは、経路に含まれる数値を順列の順に左から右に並べて3進数とみなすことをいう。なお、経路に含まれる数値は0、1、2に限られるものではない。また、経路に含まれる数値の個数の最大値は5に限られるものではない。すなわち、a個の数値をb個並べた順列全体の集合の要素を経路とするように構成できる(aおよびbは2以上の整数)。この場合、生成行列は、a行b列の行列となる。また、デバイス番号mは、例えば経路をa進表現した数値とすればよい。例えばa=2の場合、経路が数値0または1を含むように構成し、経路を2進表現した数値をデバイス番号mとするように構成する。
【0063】
変換デバイス鍵記憶部2102は以下の(9)式に示す鍵束を格納しているものとする。
{G(m,PF(2)),G(m,PF(2,0)),G(m,PF(2,0,2)),G(m,PF(2,0,2,2)),G(m,PF(2,0,2,2,1))}・・・(9)
【0064】
関数PFは以下の(10)式のように定義される。なお(+)はビットごとの排他的論理和を表す。
PF(n0)=k(0,n0),
PF(n0,n1)=PF(n0)(+)k(1,n1),
PF(n0,n1,n2)=PF(n0,n1)(+)k(2,n2),
PF(n0,n1,n2,n3)=PF(n0,n1,n2)(+)k(3,n3),
PF(n0,n1,n2,n3,n4)=PF(n0,n1,n2,n3)(+)k(4,n4)・・・(10)
【0065】
(10)式は、上述の(2)式の一方向性関数Gとしてビットごとの排他的論理和を適用した例を表している。すなわち、関数PFは、生成行列Mの任意の経路に対して、生成行列Mの要素を用いて定義される関数(経路関数)である。
【0066】
(9)式のGは一方向性関数であり、G(m,X)は数値Xにデータを利用するデバイス(アクセス装置200)のデバイス番号mを用いて一方向性関数を適用した結果を表す。一方向性関数としては、(10)式と同様のビットごとの排他的論理和を用いてもよい。
【0067】
さらに、変換デバイス鍵記憶部2102は、以下の(11)式で示すような、格納している鍵束の添字の集合を格納している。
{(2)、(2,0)、(2,0,2)、(2,0,2,2)、(2,0,2,2,1)}・・・(11)
【0068】
ここで、変換MKBのデータ構造の一例について説明する。変換MKBは、MKBインデックス(MKB indices)と、MKBインデックスに対応するベース鍵(MKBase(Media Key Base))を含んでいる。
【0069】
MKBインデックスとは、デバイス鍵を無効化するための生成行列Mの経路の集合である。先に述べた通り、デバイス鍵と生成行列Mの経路とは一対一に対応している。無効化するデバイス(=経路)が存在しないとき、MKBインデックスは以下の(12)式のようになっている。
{0,1,2}・・・(12)
【0070】
また、例えば、経路y0=(1,0,2,1,1)を無効化するMKBインデックスは以下の(13)式のようになる。
{(0)、(2)、(1,1)、(1,2)、(1,0,0)、(1,0,1)、(1,0,2,0)、(1,0,2,2)、(1,0,2,1,0)、(1,0,2,1,2)}・・・(13)
【0071】
以下に、MKBインデックスの構成方法の一例を説明する。本実施形態では、生成行列Mが3×5行例(3行5列)である場合に即して説明を行うが、生成行列Mが一般のa×b行列である場合も同様である。
【0072】
経路x=(n0,n1,n2,n3,n4)に対して、生成行列M上の経路の集合{(n0)、(n0,n1)、(n0,n1,n2)、(n0,n1,n2,n3)、(n0,n1,n2,n3,n4)}を、経路xの随伴経路集合と呼ぶ。また、随伴経路集合の要素である各経路を随伴経路と呼ぶ。経路xの随伴経路集合をAP(X)で表す。また、各随伴経路に対して、経路の最後の数値が異なる経路を境界経路と呼び、境界経路の集合を境界経路集合と呼ぶ。経路x=(n0,n1,n2,n3,n4)の境界経路集合BP(X)は以下の(14)式で与えられる。
BP(X)={(n)|n≠n0}∪{(n0,n)|n≠n1}∪{(n0,n1,n)|n≠n2}∪{(n0,n1,n2,n)|n≠n3}∪{(n0,n1,n2,n3,n)|n≠n4}・・・(14)
【0073】
例えば、経路y0の境界経路集合は以下の(15)式のようになる。
{(0)、(2)、(1,1)、(1,2)、(1,0,0)、(1,0,1)、(1,0,2,0)、(1,0,2,2)、(1,0,2,1,0)、(1,0,2,1,2)}・・・(15)
【0074】
経路y0を無効化するMKBインデックスはy0の境界経路集合である。
【0075】
さらに、2つ以上の経路を無効化する場合を考える。
(定義)
(1)経路x1,x2,・・・,xNの随伴経路集合AP(x1,x2,・・・,xN)とは、各経路x1,x2,・・・,xNの随伴経路集合の和集合である:
AP(x1,x2,・・・,xN)=AP(x1)∪AP(x2)∪・・・∪AP(xN)。
(2)経路x1,x2,・・・,xNの境界経路集合BP(x1,x2,・・・,xN)とは、各経路x1,x2,・・・,xNの境界経路集合の和集合から、経路x1,x2,・・・,xNの随伴経路集合を除いた差集合である:
BP(x1,x2,・・・,xN)=BP(x1)∪BP(x2)∪・・・∪BP(xN)−AP(x1,x2,・・・,xN)。
(3)経路x1,x2,・・・,xNを無効化するMKBインデックスは、経路x1,x2,・・・,xNの境界経路集合BP(x1,x2,・・・,xN)である。
【0076】
例えば、経路y1=(0,0,1,1,2)として、経路y0と経路y1の境界経路集合を求める。経路y0と経路y1の境界経路集合は、それぞれ上記(15)式および以下の(16)式のようになる。
{(1)、(2)、(0,1)、(0,2)、(0,0,0)、(0,0,2)、(0,0,1,0)、(0,0,1,2)、(0,0,1,1,0)、(0,0,1,1,1)}・・・(16)
【0077】
従って、上記2つの境界経路集合の和集合は以下の(17)式のようになる。
{(0)、(1)、(2)、(1,1)、(1,2)、(0,1)、(0,2)、(1,0,0)、(1,0,1)、(0,0,0)、(0,0,2)、(1,0,2,0)、(1,0,2,2)、(0,0,1,0)、(0,0,1,2)、(1,0,2,1,0)、(1,0,2,1,2)、(0,0,1,1,0)、(0,0,1,1,1)}・・・(17)
【0078】
従って、y0とy1の境界経路集合は以下の(18)式のようになる。
{(2)、(1,1)、(1,2)、(0,1)、(0,2)、(1,0,0)、(1,0,1)、(0,0,0)、(0,0,2)、(1,0,2,0)、(1,0,2,2)、(0,0,1,0)、(0,0,1,2)、(1,0,2,1,0)、(1,0,2,1,2)、(0,0,1,1,0)、(0,0,1,1,1)}・・・(18)
【0079】
上記境界経路集合BP(y0,y1)が、経路y0と経路y1とを無効化するMKBインデックスである。
【0080】
経路の集合Sが経路x1,x2,・・・,xNを無効化するとは、次の2つの条件が成立することをいう。
i)AP(x1,x2,・・・,xN)∩S=φ
ii){x1,x2,・・・,xN}に含まれない任意の経路yについてAP(y)∩S≠φ
【0081】
以下に、MKBインデックス、すなわち、境界経路集合BP(x1,x2,・・・,xN)が、経路x1,x2,・・・,xNを無効化する集合であることを証明する。
【0082】
AP(x1,x2,・・・,xN)∩BP(x1,x2,・・・,xN)=φは、BP(x1,x2,・・・,xN)の定義より自明である。
【0083】
{x1,x2,・・・,xN}に含まれない任意の経路を経路yとする。AP(y)は長さ1から5までの5つの経路からなる。ただし、経路(順列)の長さとは要素数である。例えば、(1,0,2)の長さは3である。AP(y)={(n0)、(n0,n1)、(n0,n1,n2)、(n0,n1,n2,n3)、(n0,n1,n2,n3,n4)}とする。また、AP(y)∩BP(x1,・・・,xN)=φであると仮定する。n0はx1,・・・,xNのいずれかの最初の要素である。さもなければ、(n0)∈BP(x1,・・・,xN)となって仮定に矛盾する。次に、(n0,n1)は、x1,・・・,xNのいずれかの最初の2つの要素からなる順列に一致する。さもなければ、(n0,n1)∈BP(x1,・・・,xN)となって仮定に矛盾する。同様の推論を繰り返すことにより、結局、y=(n0,・・・,n4)は、x1,・・・,xNのいずれかに一致しなければならない。これは経路yが{x1,x2,・・・,xN}に含まれない経路であるとした仮定に反する。すなわち、経路yが{x1,x2,・・・,xN}に含まれない経路であれば、AP(y)∩BP(x1,・・・,xN)≠φ。以上により、MKBインデックスが経路x1,・・・,xNを無効化することが証明された。
【0084】
次に、MKBインデックスBP(x1,・・・,xN)が、経路x1,・・・,xNを無効化する最小の集合であることを示す。
【0085】
ρ∈BP(x1,・・・,xN)とする。経路ρを適当に長さ5まで伸ばして経路yを作る。ここで、経路u∈AP(y)∩(BP(x1,・・・,xN)−{ρ})とする。l(p)を経路pの長さとして、l(u)<l(ρ)であるとすると、ρ∈BP(x1,・・・,xN)であったから、ある番号iに対してu∈AP(xi)でなければならない。これは仮定に反する。また、l(u)=l(ρ)であるとするとu=ρとなり、仮定に矛盾する。l(u)>l(ρ)であると仮定する。経路uの最後の要素を取り除いた経路をu’とおくと、BP(x1,・・・,xN)の定義より、ある番号jが存在してu’∈AP(xj)でなければならない。従ってρ∈AP(xj)となり、仮定に矛盾する。結局、AP(y)∩(BP(x1,・・・,xN)−{ρ})=φとなる。以上で、BP(x1,・・・,xN)が経路x1,・・・,xNを無効化する最小の集合であることが証明された。
【0086】
次に、ベース鍵について説明する。ベース鍵は、16バイトのデータKBである(以下、ベース鍵KBという。)。ベース鍵KBは、後述するように、記憶装置とアクセス装置とが共有鍵(上述の認証鍵KAに対応)を算出する際のベースとなる。
【0087】
本実施形態では、変換MKBは1つの記憶装置100に対して1つ存在する。アクセス装置200が記憶装置100の秘匿領域1110からデータを読み取る際は、まず、読取部2101が記憶装置100の一般領域1111から変換MKBを読み取る(図5のステップS101、ステップS102)。読取部2101は、読み取った変換MKBのMKBインデックスを鍵選択部2103に送る。鍵選択部2103は、変換デバイス鍵記憶部2102から変換デバイス鍵を読み取り、復号鍵Kdを選択する(ステップS103)。以下に、ステップS103の鍵選択部2103による復号鍵Kdの選択処理の詳細について説明する。
【0088】
MKBインデックスをI_MKBとし、変換デバイス鍵記憶部2102が格納する添字の集合をI_Dとする。鍵選択部2103は、I_MKB∩I_D≠φであるか否かを調べる。I_MKB∩I_D=φであれば、デバイス鍵は無効化されている。この場合、鍵選択部2103は処理を停止する。一方、I_MKB∩I_D≠φであれば、鍵選択部2103は、u∈I_MKB∩I_Dである経路uを1つ見出す。鍵選択部2103は、この経路uに対応する(変換デバイス鍵中の)鍵を復号鍵Kdとして選択する。より具体的には、鍵選択部2103は次の動作を行う。なお、MKBインデックス(I_MKB)が以下の(20)式のようになっているとする。
I_MKB={(0)、(2)、(1,1)、(1,2)、(1,0,0)、(1,0,1)、(1,0,2,0)、(1,0,2,1,0)、(1,0,2,1,2)、(1,0,2,2,0)、(1,0,2,2,2)}・・・(20)
【0089】
このMKBインデックスは、以下の(21)式の2つの経路y0とy2とを無効化するものである。
y0=(1,0,2,1,1)、y2=(1,0,2,2,1)・・・(21)
【0090】
アクセス装置200に割り当てられている経路をx0=(1,0,2,0,1)とする。このとき、アクセス装置200の変換デバイス鍵記憶部2102は、以下の(22)式の添字を格納している。
I_D={(1)、(1,0)、(1,0,2)、(1,0,2,0)、(1,0,2,0,1)}・・・(22)
【0091】
さらに、変換デバイス鍵記憶部2102は、以下の(23)式のデバイス鍵(束)を格納している。
D0={
G(100,PF(1)),
G(100,PF(1,0)),
G(100,PF(1,0,2)),
G(100,PF(1,0,2,0)),
G(100,PF(1,0,2,0,1))}・・・(23)
【0092】
なお、アクセス装置200のデバイス番号mは、経路x0の3進表現10201_3から得られる100である。鍵選択部2103は、I_Dの添字(経路)を1つずつ順に選び、I_MKBに含まれているか否かを調べる。鍵選択部2103は、例えば以下に示すような関数key_choice()により、復号鍵Kdを選択する。
key_choice(I_D,I_MKB){
int i,j;
for(j=0;j<5;j++)
for(i=0;i<11;i++)
if(I_D[j]==I_MKB[i]){
復号鍵Kdとして、D0[j]を選択;
return j;

return −1;

【0093】
この結果、(20)式のI_MKBと(22)式のI_Dに対しては、復号鍵KdとしてD0[3]=G(100,PF(1,0,2,0))が選択される。
【0094】
他方、アクセス装置200に割り当てられている経路がy0である場合は、アクセス装置200に割り当てられている鍵束(変換デバイス鍵)および添字は以下の(24)式のようになる。
鍵束:{
G(103,PF(1)),
G(103,PF(1,0)),
G(103,PF(1,0,2)),
G(103,PF(1,0,2,1)),
G(103,PF(1,0,2,1,1))}、
添字:{(1)、(1,0)、(1,0,2)、(1,0,2,1)、(1,0,2,1,1)}・・・(24)
【0095】
このアクセス装置200のデバイス番号mは10211_3=103である。このアクセス装置200の場合、関数key_choice()は復号鍵Kdを見出すことができず、数値−1を返して停止する。
【0096】
鍵選択部2103が復号鍵Kdを見出すことができた場合、鍵選択部2103は、見出した復号鍵Kdの添字を送信部2104に送る。送信部2104は、添字を鍵インデックスi(m)として、記憶装置100に送る。上記の例では、(1,0,2,0)が復号鍵Kdの添字であるから、送信部2104は、鍵インデックスi(m)として添字(1,0,2,0)を記憶装置100に送る(ステップS105)。なお、鍵インデックスは、アクセス装置200のデバイス番号mに依存する。従って、鍵インデックスをi(m)と表記する。鍵インデックスは、a行b列の生成行列の1列からc列(cは1≦c≦bを満たす整数)までの行のいずれかを特定する情報となる。
【0097】
なお、鍵インデックスi(m)を送信する代わりに、鍵選択部2103が、見出した復号鍵Kdの添字の長さを送信部2104に送ってもよい。上記の例では、復号鍵Kdの添字(1,0,2,0)の長さは4であるから、送信部2104は、鍵インデックスとして数4を記憶装置100に送る。記憶装置100では、別途アクセス装置200から取得するデバイス番号mと合わせて、復号鍵Kdの添字を取得することができる。具体的には、添字を取得する処理は例えば次のように行われる。
【0098】
アクセス装置200には経路x0=(1,0,2,0,1)が割り当てられているものとする。このとき、当該アクセス装置200の番号記憶部2105はデバイス番号10201_3=100を格納している。記憶装置100がアクセス装置200からデバイス番号=10201_3と鍵インデックス=4を受け取ると、3進表記のデバイス番号から4つの添字を切りだして、復号鍵Kdの添字(1,0,2,0)を得ることができる。すなわち、記憶装置100が、鍵インデックスとアクセス装置200のデバイス番号と組み合わせて、復号鍵Kdの添字が得られるように、鍵インデックスを定義すればよい。
【0099】
鍵選択部2103は次に、読取部2101から、ベース鍵KBを読み取る(ステップS109)。鍵選択部2103は、以下の(25)式に示すように、復号鍵Kdによってベース鍵KBを復号して認証鍵KAを得る(ステップS110)。D(X,Y)は、YをXで復号する復号演算を表す。
KA=D(Kd,KB)・・・(25)
【0100】
一方、記憶装置100では、取得部1102が鍵インデックスi(m)をアクセス装置200から受け取る。取得部1102は、鍵インデックスi(m)を鍵生成部1105に送る。鍵生成部1105は、受信部1103にアクセス装置200のデバイス番号mを読み出すよう指示する。受信部1103は、アクセス装置200の番号記憶部2105から読み出されたデバイス番号mを受信し、受信したデバイス番号mを鍵生成部1105に送る。鍵生成部1105は、デバイス鍵記憶部1101から生成行列Mによって定められるデバイス鍵を読み出して、鍵インデックスi(m)に対応する認証鍵KAを生成する。
【0101】
例えば、生成行列Mが図2で与えられ、m=100=10201_3、i(m)=4であるとき、鍵生成部1105は、以下のi)〜vi)の手続きによって認証鍵KAを得る。
i)復号鍵Kdの添字(1,0,2,0)を取得する。
ii)添字が定める経路に対する経路関数値PF(1,0,2,0)=k(0,1)(+)k(1,0)(+)k(2,2)(+)k(3,0)を算出する。
iii)復号鍵Kd=G(m,PF(1,0,2,0))=G(100,PF(1,0,2,0))を算出する(ステップS106)。
iv)ベース鍵記憶部1104からベース鍵KBを取得する(ステップS107)。
vi)iii)で取得した復号鍵Kdによってベース鍵KBを復号して認証鍵KAを得る(ステップS108):KA=D(Kd,KB)。
【0102】
鍵生成部1105は、算出した認証鍵KAを鍵暗号化部1107に送る。鍵暗号化部1107は、乱数生成部1106に乱数発生要求を出し、乱数発生部1106が発生した乱数R(ステップS111)を受け取る。鍵暗号化部1107は、乱数Rを認証鍵KAで暗号化し(ステップS112)、その結果である暗号化乱数R’=E(KA,R)をアクセス装置200に送る(ステップS114)。E(KA,R)は、Rを認証鍵KAで暗号化した結果を表す。一方、乱数Rは乱数発生部1106からデータ暗号化部1108にも送られる。アクセス装置200からの読み出し要求を受け、データ暗号化部1108は乱数Rを用いて、秘匿領域1110に格納されている読み出し対象のデータDを暗号化し、暗号化データD’=E(R,D)を得る(ステップS113)。データ暗号化部1108は暗号化データD’をアクセス装置200に送る(ステップS114)。
【0103】
アクセス装置200は、暗号化乱数R’を受け取ると、暗号化乱数R’を鍵復号部2106に入力する。鍵復号部2106は、鍵選択部2103から、鍵選択部2103が先に算出した認証鍵KAを取得する。鍵復号部2106は、認証鍵KAを用いて暗号化乱数R’を復号し、乱数Rを得る(ステップS115):R=D(KA,R’)。鍵復号部2106は、得られた乱数Rをデータ復号部2107に送る。
【0104】
データ復号部2107は、記憶装置100に読み出し要求を出す。上述のように、記憶装置100のデータ暗号化部1108は、読み出し要求を受け、暗号化データD’を出力する。データ復号部2107は、暗号化データD’を取得する。データ復号部2107は、暗号化データD’を乱数Rによって復号し、読み出し対象のデータDを得る(ステップS116)。データ復号部2107は、データDをデータ利用部2108に送る。データ利用部2108は、データDを画面表示するなどして利用する。
【0105】
以上のように、本実施形態では、以下のような機能が実現される。
i)変換MKBは、MKBインデックスとベース鍵を含んでいる。特定の生成行列と、当該生成行列上の経路を想定した上で、MKBインデックスは無効化対象の経路の境界経路集合を用いて構成される。
ii)アクセス装置200は、アクセス装置200に割り当てられている識別情報(本実施形態ではデバイス番号)を格納しており、記憶装置100の秘匿領域1110のデータの読み出しまたは秘匿領域1110へのデータの書き込みの際に、当該識別情報を記憶装置100に送る。
iii)記憶装置100は、生成行列を格納している。記憶装置100は、生成行列、アクセス装置200から取得した識別情報、および、記憶装置100が格納するベース鍵を用いて、認証鍵を生成する。
iv)アクセス装置200は、アクセス装置200に割り当てられている(生成行列上の)経路によって定められる、経路関数値を用いて算出されるデバイス鍵を格納しているが、当該デバイス鍵は、当該アクセス装置200が格納する識別情報を用いて変換されている(変換デバイス鍵)。
v)アクセス装置200は、変換デバイス鍵と、ベース鍵とから認証鍵を算出する。
vi)記憶装置100とアクセス装置200とは、それぞれが導出した(共通の)認証鍵を共有し、共有する認証鍵を乱数の暗号化やデータの暗号化に用いる。
【0106】
本実施形態では、MKBインデックスによって、通常のMKBと同様の効率的なアクセス装置200の無効化が行われる。しかも、本実施形態では通常のMKBの場合とは異なり、アクセス装置200と記憶装置100の間で共有される認証鍵(上記の例ではKA=D(G(100,PF(1,0,2,0)),E(PF(1,0,2,0),KM)))は、アクセス装置200ごとに異なる。各アクセス装置200は互いに異なるデバイス番号を有しているので、認証鍵KAはアクセス装置200ごとに異なる。その結果、万一、あるアクセス装置200が不正に解析されて、記憶装置100との間で共有される認証鍵KAが暴露されたとしても、認証鍵KAを、異なるデバイス鍵を持つ、別のアクセス装置200でそのまま利用することはできない。
【0107】
通常のMKBでは、あるMKBについてメディア鍵を知れば、記憶装置100によるアクセス装置200の認証が完了する。例えば図1の例では、メディア鍵KMを有していれば、記憶装置10の秘匿領域(データ記憶部3)からデータを読み出すことができることになる。このように、通常のMKBによる認証の場合、デバイス鍵は不要である。従って、次のようなシステムに対する攻撃のシナリオが成立する。
i)攻撃者は特定の(脆弱性を有する)アクセス装置200を分析してデバイス鍵を得る。
ii)攻撃者は不正取得したデバイス鍵を用いて、記憶装置100が格納するMKBのメディア鍵を取得する。
iii)攻撃者は不正に取得したメディア鍵を含む不正なアクセス装置200(ソフトウェア)を配布する。不正なアクセス装置200は記憶装置100の秘匿領域1110から自由にデータを読み出すことができる。不正なアクセス装置200自身はデバイス鍵を持っていないため、不正なアクセス装置200を解析して、不正に解析されたアクセス装置200のデバイス鍵を特定することはできない。従って、この方法では、不正に解析されたアクセス装置200を無効化することができない。
iv)不正に解析されたアクセス装置200のデバイス鍵を特定して無効化しない限り、MKB(とメディア鍵と)を更新しても、アクセス装置200を用いたメディア鍵の流出が続く。
【0108】
一方、変換MKBを用いる本実施形態では、アクセス装置200が記憶装置100の秘匿領域1110にアクセスするためには、特定のアクセス装置200が算出した認証鍵KAとアクセス装置200の識別情報とが必要である。これらの情報を含み、記憶装置100に不正にアクセスするソフトウェア等が配布されれば、識別情報を特定できるため、当該識別情報で指定されるデータ利用機器(アクセス装置200)を、新しい変換MKBを配布することにより無効化できる。これにより、不正な解析を受けたと思われる当該データ利用機器からの認証鍵の流出を阻止することができる。
【0109】
このように、本実施形態では、認証と暗号化によって保護された秘匿領域からのデータ不正流出を回避することができる。
【0110】
次に、これまで説明した変換MKBを用いて、スマートグリッドなどのシステムでの共有鍵の管理を実現する方法について説明する。
【0111】
スマートグリッドに接続されるデバイスは一般に長期に渡って製造され、長期に渡って使用される。従って、共有鍵管理機能は製造時期の異なる多数のデバイスを管理することができなければならない。また、デバイスが悪意の第三者によってハッキングされる可能性も想定しておく必要がある。ハッキングされたデバイスはDoS(Denial of Service)攻撃の踏み台になる。また、他のデバイスから暗号通信によって取得した情報が、当該ハッキングされたデバイスから漏えいされる。従って、共有鍵更新のタイミングで、ハッキングされたデバイスの鍵更新を禁止することにより、当該ハッキングされたデバイスを暗号通信から排除する機能を共有鍵管理機能に含むことが望まれる。デバイスのハッキングは組織的に行われる可能性がある。デバイスのハッキングによって当該デバイスは不正な機器になり得るが、ハッキングの影響は当該デバイスに限定的となるべきであり、システム全体に波及してはならない。これらの技術要求を満たしつつ、できるだけシンプルにスマートグリッドにおける共有鍵を管理できることが望ましい。
【0112】
図6は、本実施形態の通信装置および鍵算出装置を含むスマートグリッドのシステム30の構成例を示す図である。図6に示すように、システム30は、MDMS31と、分散電源32と、蓄電装置33と、送配電制御装置34と、遠隔端末ユニット(Remote Terminal Unit,RTU)35a〜35cと、EMS36と、BEMS37と、SM38a〜38eと、HEMS39と、コンセントレータ41と、ネットワーク42と、鍵算出装置300と、鍵センタ400と、を備えている。
【0113】
なお、RTU35a〜35cは同様の機能を備えるため、以下では単にRTU35という場合がある。同様に、SM38a〜38eは同様の機能を備えるため、以下では単にSM38という場合がある。また、図6では、鍵算出装置300と、鍵センタ400とを分けて記載しているが、1つの装置内に鍵算出装置300および鍵センタ400の機能を備えるように構成してもよい。
【0114】
図6に示すように、スマートグリッドでは、電力使用量を集計するSM38bと、家電機器を管理するホームサーバであるHEMS39とが各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS37が、ビルごとに設置される。SM38は、中継器であるコンセントレータ41によって数台ごとにまとめられ、ネットワーク42を介してMDMS31と通信する。MDMS31は、各SM38から、一定の間隔で電力使用量を受信して記憶する。EMS36は、MDMS31に集められた複数の家庭(および商業ビル)の電力使用量、または、電力系統に設置されたセンサからの情報に基づいて、各SM38、HEMS39、および、BEMS37に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS36は、RTU35aに接続された太陽光発電や風力発電などの分散電源32、RTU35bに接続された蓄電装置33、および、RTU35cに接続された、発電側との間の送配電を制御する送配電制御装置を制御することにより、スマートグリッド全体の電圧および周波数を安定化するための制御を行う。
【0115】
鍵算出装置300は、ネットワーク42に接続するデバイスが格納すべきデバイス鍵を生成する。また、鍵算出装置300は、共有鍵生成の元となる変換MKBを生成する。デバイス鍵は、各デバイスがネットワーク42に接続される際に、各デバイスにインストールされる。鍵算出装置300が生成した変換MKBは、鍵センタ400に送られる。鍵センタ400は、ネットワークを通じて、変換MKBを各デバイスに配布する。
【0116】
各デバイスが最初にネットワークに接続される時点では、各デバイスは、デバイス鍵と、その時点での最新のMKBを有している。これは、例えば、サービスマンが各デバイスにMKBをインストールすることで実現される。
【0117】
複数のデバイスが通信する場合、複数のデバイスは、それぞれ、サーバデバイス(以下単にサーバという)とクライアントデバイス(以下単にサーバという)とに分かれる。これらは役割であり、固定したものではない。例えば、あるデバイスが、通信相手によってサーバになったりクライアントになったりしてもよい。クライアントがサーバに接続して通信が開始される。通常は1つのサーバが複数のクライアントと通信する。
【0118】
図6の例では、例えばMDMS31がサーバとなり、スマートメータ38がクライアントとなることができる。以下、サーバとなるデバイス、および、クライアントとなるデバイスが備える機能の詳細について説明する。
【0119】
図7は、クライアント500の構成例を示すブロック図である。図8は、サーバ600の構成例を示すブロック図である。なお、図7および図8は、クライアント500およびサーバ600間で共有する共有鍵を生成するために用いる構成の一例を示している。
【0120】
図7に示すように、クライアント500は、MKB取得部501と、変換デバイス鍵記憶部502と、鍵選択部503と、番号取得部504と、算出部505と、を備えている。
【0121】
MKB取得部501は、変換MKBを取得する。MKB取得部501は、例えば、サーバ600が送信した変換MKBをサーバ600から取得する。
【0122】
変換デバイス鍵記憶部502は、図4の変換デバイス鍵記憶部2102と同様に、デバイス番号(以下、デバイス番号nとする)で変換されたデバイス鍵(以下、デバイス鍵KD(n)という)を記憶する。デバイス鍵KD(n)は、クライアント500に固有のデバイス番号nと一方向性関数Gで変換したデバイス鍵である。
【0123】
鍵選択部503は、図4の鍵選択部2103と同様に、変換デバイス鍵記憶部502に記憶されたデバイス鍵KD(n)の中から、変換MKBに応じた復号鍵Kdを選択する。
【0124】
番号取得部504は、サーバ600のデバイス番号(以下、デバイス番号mとする)を取得する。番号取得部504は、例えば、デバイス番号mをサーバ600から受け取る。
【0125】
算出部505は、変換MKBに含まれるベース鍵KB、選択された復号鍵Kd、および、デバイス番号mを用いて、サーバ600と共有する共有鍵を算出する。例えば、算出部505は、まず復号鍵Kdとデバイス番号mとを一方向性関数Gに入力して得られる情報(第2情報)であるG(m、Kd)を算出する。そして、算出部505は、算出した情報G(m、Kd)でベース鍵KBを復号した共有鍵Kmn=D(G(m、Kd)、KB)を算出する。
【0126】
次に、サーバ600の構成例について説明する。図8に示すように、サーバ600は、MKB取得部601と、変換デバイス鍵記憶部602と、鍵選択部603と、サーバ鍵生成部604と、鍵受信部605と、鍵復号部606と、番号記憶部607と、番号送信部608と、MKB送信部620と、を備えている。
【0127】
MKB取得部601は、変換MKBを取得する。MKB取得部601は、例えば、鍵センタ400が送信した変換MKBを鍵センタ400から取得する。
【0128】
変換デバイス鍵記憶部602は、図4の変換デバイス鍵記憶部2102と同様に、デバイス番号mで変換されたデバイス鍵(以下、デバイス鍵KD(m)という)を記憶する。デバイス鍵KD(m)は、サーバ600に固有のデバイス番号mと一方向性関数Gで変換したデバイス鍵である。
【0129】
鍵選択部603は、図4の鍵選択部2103と同様に、変換デバイス鍵記憶部602に記憶された変換デバイス鍵の中から、変換MKBに応じたデバイス鍵KD(m)を選択する。
【0130】
サーバ鍵生成部604は、変換MKBに含まれるベース鍵KB、および、選択されたデバイス鍵KD(m)を用いてサーバ鍵Kmを算出する。
【0131】
鍵受信部605は、鍵センタ400から、クライアント500との間で共有する共有鍵Kmnを暗号化した暗号化共有鍵であるE(Km,Kmn||R)を取得する。Rは乱数である。記号「||」は、KmnとRとを結合することを意味する。
【0132】
鍵復号部606は、サーバ鍵Kmを用いて暗号化共有鍵を復号したデータKmn||R=D(Km、E(Km,Kmn||R))を得る。
【0133】
番号記憶部607は、サーバ600のデバイス番号m、および、クライアント500から予め取得したクライアントのデバイス番号nを記憶する。番号送信部608は、デバイス番号mおよびデバイス番号nを、鍵センタ400に送信する。
【0134】
MKB送信部620は、変換MKBをクライアント500に送信する。MKB送信部620の構成の詳細は後述する。
【0135】
次に、鍵算出装置300の構成例について説明する。図9は、鍵算出装置300の構成例を示すブロック図である。図9に示すように、鍵算出装置300は、デバイス鍵記憶部301と、変換MKB記憶部302と、受信部303と、算出部304と、を備えている。
【0136】
デバイス鍵記憶部301は、図3のデバイス鍵記憶部1101と同様に、図2に示す生成行列Mのような行列形式で複数のデバイス鍵を格納する。
【0137】
変換MKB記憶部302は、図3のデータ記憶部1109の一般領域1111と同様に、変換MKBを記憶する。
【0138】
受信部303は、鍵センタ400を介して、クライアント500のデバイス番号nと、サーバ600のデバイス番号mとを、サーバ600から受信する。
【0139】
算出部304は、デバイス番号mおよびデバイス番号nとから、サーバ600とクライアント500の共有鍵Kmnを算出し、算出した共有鍵Kmnを出力する。算出部304は、サーバ600のデバイス番号mのみの入力を受けた場合は、サーバ鍵Kmを算出して出力する。
【0140】
算出部304は、例えば、クライアント500の算出部505と同様の方法により復号鍵Kd、ベース鍵KB、および、デバイス番号mを用いて、共有鍵Kmn=D(G(m、Kd)、KB)を算出する。なお、復号鍵Kdは、クライアント500のデバイス番号nを用いて、上述の第1算出部1105a(図3)と同様の方法により算出される。すなわち、算出部304は、例えば、鍵インデックスi(n)で特定されるデバイス鍵から算出した経路関数値をデバイス番号nで変換した復号鍵Kdを算出する。
【0141】
また、算出部304は、例えば、変換MKB記憶部302に記憶された変換MKBに含まれるベース鍵KB、および、デバイス番号mに対応するデバイス鍵KD(m)を用いて、サーバ600のサーバ鍵生成部604と同様の方法によりサーバ鍵Kmを算出する。
【0142】
次に、鍵センタ400の構成例について説明する。図10は、鍵センタ400の構成例を示すブロック図である。図10に示すように、鍵センタ400は、サーバ鍵記憶部411と、乱数発生部412と、暗号化部413と、鍵送信部414と、MKB送信部420と、を備えている。
【0143】
サーバ鍵記憶部411は、鍵算出装置300が算出したサーバ鍵Kmを記憶する。乱数発生部412は、乱数Rを発生する。暗号化部413は、鍵算出装置300が算出した共有鍵Kmnに乱数Rを結合したデータ(Kmn||R)をサーバ鍵Kmで暗号化した暗号化共有鍵であるE(Km,Kmn||R)を算出する。鍵送信部414は、暗号化共有鍵をサーバ600に送信する。MKB送信部420は、変換MKBをサーバ600に送信する。MKB送信部420の構成の詳細は後述する。
【0144】
次に、このように構成された本実施形態にかかるクライアント500による共有鍵算出処理について図11を用いて説明する。図11は、本実施形態におけるクライアント500による共有鍵算出処理の全体の流れを示すフローチャートである。
【0145】
まず、MKB取得部501が変換MKBを取得する(ステップS201)。MKB取得部501は、変換MKBを鍵選択部503に送信する。鍵選択部503は、変換デバイス鍵記憶部502からデバイス鍵KD(n)を取得する(ステップS202)。鍵選択部503は、変換MKBに含まれるMKBインデックスと、デバイス鍵の添字とに基づいて、取得したデバイス鍵KD(n)の中から適切な復号鍵Kdを選択する(ステップS203)。
【0146】
鍵選択部503は、適切な復号鍵Kdが選択できたか否かを判断する(ステップS204)。選択できなかった場合(ステップS204:No)、共有鍵算出処理を終了する。この場合、クライアント500は変換MKBによって無効化されていることを意味する。
【0147】
復号鍵Kdが選択できた場合(ステップS204:Yes)、鍵選択部503は、MKB取得部501により取得された変換MKBからベース鍵KBを取得する(ステップS205)。鍵選択部503は、復号鍵Kdとベース鍵KBとを算出部505に送る。
【0148】
番号取得部504は、通信相手となるサーバ600のデバイス番号mを取得する(ステップS206)。番号取得部504は、取得したデバイス番号mを算出部505に送る。
【0149】
算出部505は、復号鍵Kd、ベース鍵KB、および、デバイス番号mを用いて、共有鍵Kmn=D(G(m、Kd)、KB)を算出する(ステップS207)。
【0150】
次に、このように構成された本実施形態にかかるサーバ600による共有鍵算出処理について図12を用いて説明する。図12は、本実施形態におけるサーバ600による共有鍵算出処理の全体の流れを示すフローチャートである。
【0151】
ステップS301からステップS305までは、図11のステップS201からステップS205と同様の処理のため説明を省略する。なお、図12では、鍵選択部603は、復号鍵Kdとベース鍵KBとをサーバ鍵生成部604に送る。
【0152】
サーバ鍵生成部604は、復号鍵Kdとベース鍵KBとを用いて、サーバ鍵Km=D(Kd、KB)を算出する(ステップS306)。サーバ鍵生成部604は、算出したサーバ鍵Kmを鍵復号部606に送る。
【0153】
番号送信部608は、番号記憶部607に記憶されているサーバ600のデバイス番号mと、クライアント500のデバイス番号nとを鍵センタ400に送信する(ステップS307)。
【0154】
鍵受信部605は、鍵センタ400から暗号化共有鍵であるE(Km,Kmn||R)を取得する(ステップS308)。鍵受信部605は、取得した暗号化共有鍵を鍵復号部606に送る。
【0155】
鍵復号部606は、サーバ鍵Kmを用いて暗号化共有鍵を復号したデータKmn||R=D(Km、E(Km,Kmn||R))を算出する(ステップS309)。算出されたデータから乱数Rを除いたデータである共有鍵Kmnが、クライアント500と共有する鍵として用いられる。また、算出されたデータに含まれる乱数Rは、例えば鍵センタ400と共有する乱数としてサーバ600内で利用される。なお、乱数Rを結合せずに共有鍵Kmnのみを暗号化した暗号化共有鍵を用いるように構成してもよい。
【0156】
次に、このように構成された本実施形態にかかる鍵センタ400による鍵算出制御処理について図13を用いて説明する。図13は、本実施形態における鍵算出制御処理の全体の流れを示すフローチャートである。
【0157】
鍵センタ400は、サーバ600からサーバ600のデバイス番号mとクライアント500のデバイス番号nとを受信し、受信したデバイス番号mとデバイス番号nとを鍵算出装置300に送信する(ステップS401)。
【0158】
鍵算出装置300は、送信されたデバイス番号mおよびデバイス番号nを用いて共有鍵Kmnを算出する共有鍵算出処理を実行する(ステップS402)。鍵算出装置300による共有鍵算出処理の詳細については後述する。
【0159】
鍵センタ400は、共有鍵算出処理で算出されたサーバ鍵Kmと、共有鍵Kmnとを受信する(ステップS403)。鍵センタ400は、受信したサーバ鍵Kmで共有鍵Kmnを暗号化して暗号化共有鍵を算出する暗号化共有鍵算出処理を実行する(ステップS404)。暗号化共有鍵算出処理の詳細については後述する。鍵送信部414は、暗号化共有鍵をサーバ600に送信する(ステップS405)。
【0160】
次に、ステップS402の鍵算出装置300による共有鍵算出処理の詳細について説明する。図14は、本実施形態における鍵算出装置300による共有鍵算出処理の全体の流れを示すフローチャートである。
【0161】
鍵算出装置300の受信部303は、送信されたデバイス番号mとデバイス番号nとを受信する(ステップS501)。算出部304は、デバイス鍵記憶部301から、デバイス番号nに対応した行列の要素を選択することにより、デバイス鍵KD(n)を取得する(ステップS502)。算出部304は、変換MKB記憶部302から変換MKBを読み出す(ステップS503)。
【0162】
算出部304は、変換MKBに含まれるMKBインデックスとデバイス鍵KD(n)の添字に基づいて、デバイス鍵KD(n)の中から復号鍵Kdを選択する(ステップS504)。
【0163】
算出部304は、適切な復号鍵Kdが選択できたか否かを判断する(ステップS505)。選択できなかった場合(ステップS505:No)、共有鍵算出処理を終了する。この場合、クライアント500は変換MKBによって無効化されている。
【0164】
復号鍵Kdが選択できた場合(ステップS505:Yes)、算出部304は、変換MKBからベース鍵KBを取得する(ステップS506)。算出部304は、復号鍵Kd、ベース鍵KB、および、デバイス番号mを用いて、共有鍵Kmn=D(G(m、Kd)、KB)を算出する(ステップS507)。
【0165】
また、算出部304は、サーバ600のサーバ鍵生成部604と同様の方法により、ベース鍵KB、および、デバイス鍵KD(m)を用いてサーバ鍵Kmを算出する(ステップS508)。算出された共有鍵Kmnおよびサーバ鍵Kmは、鍵センタ400に出力される。
【0166】
次に、ステップS404の暗号化共有鍵算出処理の詳細について説明する。
図15は、本実施形態における暗号化共有鍵算出処理の全体の流れを示すフローチャートである。
【0167】
鍵センタ400は、鍵算出装置300が算出したサーバ鍵Kmと共有鍵Kmnとを鍵算出装置300から受信する(ステップS601)。サーバ鍵Kmは、サーバ鍵記憶部411に記憶される。共有鍵Kmnは、暗号化部413に入力される。
【0168】
暗号化部413は、サーバ鍵記憶部411からサーバ鍵Kmを読み出す(ステップS602)。乱数発生部412は、乱数Rを発生する(ステップS603)。暗号化部413は、サーバ鍵Kmを用いて、共有鍵Kmnと乱数Rとを結合したデータを暗号化した暗号化共有鍵E(Km、Kmn||R)を算出する(ステップS604)。
【0169】
次に、変換MKBの送信処理について説明する。変換MKBは、MAC(Message Authentication Code)を付与してサーバ600やクライアント500に渡される。MACを生成するためにサーバ鍵Kmや共有鍵Kmnが用いられる。上述のように、変換MKBを処理することでサーバ鍵Kmや共有鍵Kmnは更新される。変換MKBには、現在のサーバ鍵Km(共有鍵)によるMACに加えて、以前の変換MKBから生成されるサーバ鍵Km(共有鍵)によるMACを付与してもよい。
【0170】
図16は、このように構成した変換MKBのフォーマットの一例を示す図である。図16に示すように変換MKBは、MKBインデックスと、ベース鍵と、MACの数と、鍵バージョンと、MACとを含んでいる。
【0171】
鍵バージョンには、鍵の種類と変換MKBのバージョンが記録される。例えば、バージョン1232の変換MKBから生成された、デバイス番号=100のサーバ600のサーバ鍵Kmの鍵バージョンは(1232、1000)という数の組である。また、バージョン1210の変換MKBから生成された、デバイス番号=10のサーバ600とデバイス番号1003のクライアント500の共有鍵Kmnの鍵バージョンは(1210、10、1003)という数の組である。
【0172】
複数のMACが存在する場合は、それぞれのMACに対応する鍵バージョンが記録される。図16では、2つのMAC(MAC1、MAC2)が存在し、それぞれに対して鍵バージョン1および鍵バージョン2が記録された例が示されている。
【0173】
MACを付与して、鍵センタ400からサーバに対して変換MKBを送出するのは、鍵センタ400のMKB送信部420である。図17は、MKB送信部420の構成例を示すブロック図である。図17に示すように、MKB送信部420は、サーバ鍵記憶部421と、MAC算出部422と、送信部423とを備えている。
【0174】
サーバ鍵記憶部421は、各サーバ600について、最新バージョンのサーバ鍵に加えて、1つ前のバージョンのサーバ鍵を記憶する。また、サーバ鍵記憶部421は、それぞれのサーバ鍵に関連づけて、対応する変換MKBのバージョンも格納する。MAC算出部422は、サーバ鍵記憶部421に記憶されたサーバ鍵それぞれについて、サーバ鍵を用いてMACを算出する。また、MAC算出部422は、変換MKBに対して、鍵バージョンおよび算出したMACを付加する。送信部423は、鍵バージョンおよびMACが付加された図16のような変換MKBをサーバ600に送信する。
【0175】
このように、MKB送信部420に入力される変換MKBは、MKBインデックスとベース鍵のみからなるが、出力される変換MKBは図16に示すようなフォーマットを有している。
【0176】
一方、サーバ600からクライアント500に対して、MACを付与して変換MKBを送出するのは、サーバのMKB送信部620である。図18は、MKB送信部620の構成例を示すブロック図である。図18に示すように、MKB送信部620は、サーバ鍵記憶部621と、MAC算出部622と、送信部623とを備えている。
【0177】
サーバ鍵記憶部621、MAC算出部622、および、送信部623の機能は、それぞれ図17のサーバ鍵記憶部421、MAC算出部422、および、送信部423と同様であるため説明を省略する。
【0178】
次に、鍵センタ400によるMKB送信処理について図19を用いて説明する。図19は、本実施形態におけるMKB送信処理の全体の流れを示すフローチャートである。
【0179】
MAC算出部422は、変換MKBを入力する(ステップS701)。MAC算出部422は、サーバ鍵記憶部421からサーバ鍵を読み出す(ステップS702)。例えば2つのサーバ鍵が記憶されている場合は、MAC算出部422は、記憶されている2つのサーバ鍵をそれぞれ読み出す。
【0180】
MAC算出部422は、読み出したサーバ鍵を用いて、変換MKBのMACを算出する(ステップS703)。2つのサーバ鍵を読み出した場合は、2つのサーバ鍵それぞれに対してMACを算出する。MAC算出部422は、鍵バージョンを変換MKBに付加する(ステップS704)。MAC算出部422は、算出したMACを、鍵バージョンの順に変換MKBに付加する(ステップS705)。送信部423は、鍵バージョンおよびMACが付加された変換MKBをサーバ600に送信する(ステップS706)。
【0181】
なお、図18のサーバ600のMKB送信部620でも同様の処理が行われ、クライアント500に対して変換MKBが送信される。
【0182】
以上のように、変換MKBを用いることによって、本実施形態のスマートグリッドシステムは、製造時期の異なる多数のデバイスを管理することが可能となる。膨大な数の組み合わせを有するデバイス鍵によってシステムを管理するからである。また、本実施形態のスマートグリッドシステムは、暗号通信からハッキングされたデバイスを排除する仕組みを有している。変換MKBによって無効化されたデバイスは、サーバであれクライアントであれ、共有鍵を取得することができないからである。本実施形態のスマートグリッドシステムでは、デバイスのハッキングの影響は限定的である。デバイス鍵が個別化されているため、個々のデバイスのデバイス鍵を知っても、鍵算出装置が保有する生成行列を知ることはできないからである。さらに、本実施形態のスマートグリッドシステムでは、各バージョンにただ1つの変換MKBから、全ての共有鍵が生成される。従って、共有鍵管理をシンプルに行うことができる。
【0183】
上述の実施形態にかかる装置(通信装置、鍵算出装置、アクセス装置、サーバ、記憶装置)は、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、ネットワークに接続して通信を行う通信I/Fと、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えるように構成できる。
【0184】
実施形態にかかる装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【0185】
また、実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1または第2の実施形態にかかる記憶装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0186】
また、実施形態のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0187】
実施形態にかかる装置で実行されるプログラムは、上述した各部を含むモジュール構成とすることができ、実際のハードウェアとしてはCPU(プロセッサ)が上記記録媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【0188】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0189】
300 鍵算出装置
301 デバイス鍵記憶部
302 変換MKB記憶部
303 受信部
304 算出部
400 鍵センタ
411 サーバ鍵記憶部
412 乱数発生部
413 暗号化部
414 鍵送信部
420 MKB送信部
500 クライアント
501 MKB取得部
502 変換デバイス鍵記憶部
503 鍵選択部
504 番号取得部
505 算出部
600 サーバ
601 MKB取得部
602 変換デバイス鍵記憶部
603 鍵選択部
604 サーバ鍵生成部
605 鍵受信部
606 鍵復号部
607 番号記憶部
608 番号送信部
620 MKB送信部

【特許請求の範囲】
【請求項1】
外部装置と接続される通信装置であって、
複数のデバイス鍵それぞれを、前記通信装置を識別する第1識別情報で変換した複数の第1情報を記憶する鍵記憶部と、
前記外部装置を識別する第2識別情報を取得する取得部と、
メディアキーブロック処理により複数の前記第1情報から1の前記第1情報を選択する鍵選択部と、
選択された前記第1情報を前記第2識別情報で変換した第2情報を用いて、前記外部装置と共有する共有鍵を算出する算出部と、
を備えることを特徴とする通信装置。
【請求項2】
前記算出部は、選択された前記第1情報と前記第2識別情報とを一方向性関数に入力して得られる前記第2情報を用いて、前記共有鍵を暗号化した暗号鍵を復号することにより前記共有鍵を算出すること、
を特徴とする請求項1に記載の通信装置。
【請求項3】
共有鍵を算出する鍵算出装置と、外部装置とに接続される通信装置であって、
前記鍵算出装置は、複数のデバイス鍵のうち前記外部装置を識別する第1識別情報に対応するデバイス鍵を、前記通信装置を識別する第2識別情報で変換した共有鍵を算出する算出部を備え、
前記第1識別情報と前記第2識別情報とを前記鍵算出装置に送信する送信部と、
送信した前記第1識別情報と前記第2識別情報とに基づいて前記鍵算出装置が算出した前記共有鍵を受信する鍵受信部と、
を備えることを特徴とする通信装置。
【請求項4】
前記鍵受信部は、暗号化された前記共有鍵を受信し、
暗号化された前記共有鍵を復号する鍵復号部をさらに備えること、
を特徴とする請求項3に記載の通信装置。
【請求項5】
第1通信装置との間で共有鍵を共有する第2通信装置に接続され、前記共有鍵を算出する鍵算出装置であって、
複数のデバイス鍵を記憶する鍵記憶部と、
前記第1通信装置を識別する第1識別情報と、前記第2通信装置を識別する第2識別情報とを前記第2通信装置から受信する受信部と、
複数の前記デバイス鍵のうち前記第1識別情報に対応する前記デバイス鍵を、前記第2識別情報で変換した共有鍵を算出する算出部と、
を備えることを特徴とする鍵算出装置。
【請求項6】
前記算出部は、複数の前記デバイス鍵のうち前記第1識別情報に対応する前記デバイス鍵と前記第2識別情報とを一方向性関数に入力して得られる情報を用いて、前記共有鍵を暗号化した暗号鍵を復号することにより前記共有鍵を算出すること、
を特徴とする請求項5に記載の鍵算出装置。

【図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

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate