(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】鍵交換システム、通信端末、情報処理装置、鍵交換方法、及びプログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20240228BHJP
H04L 9/32 20060101ALI20240228BHJP
【FI】
H04L9/08 D
H04L9/32 200B
H04L9/08 E
(21)【出願番号】P 2021002424
(22)【出願日】2021-01-08
【審査請求日】2023-02-08
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504203572
【氏名又は名称】国立大学法人茨城大学
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】岡野 裕樹
(72)【発明者】
【氏名】永井 彰
(72)【発明者】
【氏名】米山 一樹
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2014-220669(JP,A)
【文献】米国特許出願公開第2007/0050629(US,A1)
【文献】江村 恵太,鍵失効機能付きIDベース暗号,情報通信研究機構研究報告 第62巻 第2号 ,日本,国立研究開発法人情報通信研究機構 ,2016年12月,第62巻, 第2号,pp.149-151
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
階層構造をそれぞれ形成する第1の鍵生成センタ群及び第2の鍵生成センタ群と、前記第1の鍵生成センタ群の配下にある第1の通信端末と、前記第2の鍵生成センタ群の配下にある第2の通信端末と、時刻情報を配信する時刻サーバとが少なくとも含まれる鍵交換システムであって、
前記第1の通信端末は、
前記時刻サーバから取得した時刻情報と、前記第2の通信端末の識別子と、前記第2の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、失効可能階層型IDベース暗号により第1の暗号文を生成する第1の暗号化部と、
鍵カプセル化メカニズムにより公開鍵と秘密鍵の鍵ペアを生成する第1の鍵生成部と、
少なくとも前記第1の暗号文と前記公開鍵とを前記第2の通信端末に送信する第1の送信部と、
前記第2の通信端末から第2の暗号文と第3の暗号文とを少なくとも受信すると、自身の中期秘密鍵を用いて前記第2の暗号文を前記失効可能階層型IDベース暗号により復号すると共に、前記第3の暗号文を前記鍵カプセル化メカニズムにより復号する第1の復号部と、
前記第1の復号部による復号結果を用いて、セッション鍵を生成する第1のセッション鍵生成部と、を有し、
前記第2の通信端末は、
前記第1の通信端末から前記第1の暗号文と前記公開鍵とを少なくとも受信すると、前記時刻サーバから取得した時刻情報と、前記第1の通信端末の識別子と、前記第1の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、前記失効可能階層型IDベース暗号により前記第2の暗号文を生成する第2の暗号化部と、
前記鍵カプセル化メカニズムにより前記公開鍵から前記第3の暗号文を生成する第3の暗号化部と、
少なくとも前記第2の暗号文と前記第3の暗号文とを前記第1の通信端末に送信する第2の送信部と、
自身の中期秘密鍵を用いて前記第1の暗号文を前記失効可能階層型IDベース暗号により復号する第2の復号部と、
前記第2の復号部による復号結果を用いて、前記セッション鍵を生成する第2のセッション鍵生成部と、を有する鍵交換システム。
【請求項2】
前記第1の鍵生成センタ群及び前記第2の鍵生成センタ群に含まれる各鍵生成センタは、
前記時刻サーバから取得した時刻情報と、自身よりも1つ下の階層に存在する他の鍵生成センタ又は通信端末の識別子とを用いて、前記他の鍵生成センタ又は通信端末が自身の中期秘密鍵を更新するための更新鍵を生成する更新鍵生成部と、
自身よりも1つ下の階層に存在する他の鍵生成センタ又は通信端末の識別子を失効させる失効部と、を有し、
前記更新鍵生成部は、
前記失効部によって失効された識別子を用いた場合、前記識別子を持つ他の鍵生成センタ又は通信端末が中期秘密鍵を更新できない更新鍵を生成する、請求項1に記載の鍵交換システム。
【請求項3】
前記第1の通信端末及び前記第2の通信端末は、
自身よりも1つ上の階層に存在する鍵生成センタから更新鍵を受信した場合、前記更新鍵と、自身の長期秘密鍵とを用いて、自身の最新の中期秘密鍵を更新する鍵更新部を有する、請求項2に記載の鍵交換システム。
【請求項4】
階層構造を形成する形成する第1の鍵生成センタ群の配下にある通信端末であって、
時刻サーバから取得した時刻情報と、階層構造を形成する第2の鍵生成センタ群の配下にある他の通信端末の識別子と、前記第2の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、失効可能階層型IDベース暗号により第1の暗号文を生成する暗号化部と、
鍵カプセル化メカニズムにより公開鍵と秘密鍵の鍵ペアを生成する鍵生成部と、
少なくとも前記第1の暗号文と前記公開鍵とを前記他の通信端末に送信する送信部と、
前記他の通信端末から第2の暗号文と第3の暗号文とを少なくとも受信すると、自身の中期秘密鍵を用いて前記第2の暗号文を前記失効可能階層型IDベース暗号により復号すると共に、前記第3の暗号文を前記鍵カプセル化メカニズムにより復号する復号部と、
前記復号部による復号結果を用いて、前記他の通信端末との間で共有されるセッション鍵を生成するセッション鍵生成部と、
を有する通信端末。
【請求項5】
階層構造を形成する第2の鍵生成センタ群の配下にある通信端末であって、
階層構造を形成する第1の鍵生成センタ群の配下にある他の通信端末から第1の暗号文と公開鍵とを少なくとも受信すると、時刻サーバから取得した時刻情報と、前記他の通信端末の識別子と、前記第1の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、失効可能階層型IDベース暗号により第2の暗号文を生成する第1の暗号化部と、
鍵カプセル化メカニズムにより前記公開鍵から第3の暗号文を生成する第2の暗号化部と、
少なくとも前記第2の暗号文と前記第3の暗号文とを前記他の通信端末に送信する送信部と、
自身の中期秘密鍵を用いて前記第1の暗号文を前記失効可能階層型IDベース暗号により復号する復号部と、
前記復号部による復号結果を用いて、前記他の通信端末との間で共有されるセッション鍵を生成するセッション鍵生成部と、
を有する通信端末。
【請求項6】
他の情報処理装置と階層構造を形成する情報処理装置であって、
前記階層構造において子となる他の情報処理装置の識別子と、自身の長期秘密鍵とを用いて、前記子となる他の情報処理装置の長期秘密鍵を生成する長期秘密鍵生成部と、
時刻サーバから取得した時刻情報と、自身の長期秘密鍵と、失効された識別子が含まれる失効リストとを用いて、前記子となる他の情報処理装置が中期秘密鍵を更新する際に使用する更新鍵を生成する更新鍵生成部と、
前記時刻サーバから取得した時刻情報と、前記子となる他の情報処理装置の識別子とを用いて、前記失効リストに対して、前記子となる他の情報処理装置の識別子を追加する失効部と、
を有し、
前記更新鍵生成部は、
前記失効リストに含まれる識別子を持つ他の情報処理装置が中期秘密鍵を更新できない更新鍵を生成する、情報処理装置。
【請求項7】
階層構造をそれぞれ形成する第1の鍵生成センタ群及び第2の鍵生成センタ群と、前記第1の鍵生成センタ群の配下にある第1の通信端末と、前記第2の鍵生成センタ群の配下にある第2の通信端末と、時刻情報を配信する時刻サーバとが少なくとも含まれる鍵交換システムに用いられる鍵交換方法であって、
前記第1の通信端末が、
前記時刻サーバから取得した時刻情報と、前記第2の通信端末の識別子と、前記第2の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、失効可能階層型IDベース暗号により第1の暗号文を生成する第1の暗号化手順と、
鍵カプセル化メカニズムにより公開鍵と秘密鍵の鍵ペアを生成する第1の鍵生成手順と、
少なくとも前記第1の暗号文と前記公開鍵とを前記第2の通信端末に送信する第1の送信手順と、
前記第2の通信端末から第2の暗号文と第3の暗号文とを少なくとも受信すると、自身の中期秘密鍵を用いて前記第2の暗号文を前記失効可能階層型IDベース暗号により復号すると共に、前記第3の暗号文を前記鍵カプセル化メカニズムにより復号する第1の復号手順と、
前記第1の復号手順による復号結果を用いて、セッション鍵を生成する第1のセッション鍵生成手順と、を実行し、
前記第2の通信端末が、
前記第1の通信端末から前記第1の暗号文と前記公開鍵とを少なくとも受信すると、前記時刻サーバから取得した時刻情報と、前記第1の通信端末の識別子と、前記第1の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、前記失効可能階層型IDベース暗号により前記第2の暗号文を生成する第2の暗号化手順と、
前記鍵カプセル化メカニズムにより前記公開鍵から前記第3の暗号文を生成する第3の暗号化手順と、
少なくとも前記第2の暗号文と前記第3の暗号文とを前記第1の通信端末に送信する第2の送信手順と、
自身の中期秘密鍵を用いて前記第1の暗号文を前記失効可能階層型IDベース暗号により復号する第2の復号手順と、
前記第2の復号手順による復号結果を用いて、前記セッション鍵を生成する第2のセッション鍵生成手順と、を実行する鍵交換方法。
【請求項8】
コンピュータを、請求項
4に記載の通信端末として機能させるプログラム。
【請求項9】
コンピュータを、請求項5に記載の通信端末として機能させるプログラム。
【請求項10】
コンピュータを、請求項6に記載の情報処理装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、鍵交換システム、通信端末、情報処理装置、鍵交換方法、及びプログラムに関する。
【背景技術】
【0002】
認証付鍵交換プロトコルは、各ユーザが自身の秘密鍵に基づいて、2者間で秘密に共通のセッション鍵を確立できるようにするプロトコルである。TLS(Transport Layer Security)ハンドシェイクを始めとする証明書による認証付鍵交換プロトコルが存在する。
【0003】
一方で、証明書を必要としないIDベースの認証付鍵交換プロトコルも存在する。これは、鍵生成センタ(KGC:Key. Generation Center)が各ユーザのIDから秘密鍵を生成し、各ユーザは互いのIDさえ知っていれば証明書検証をすることなく認証付鍵交換を実行することができるものである。
【0004】
一般に、IDベースの認証付鍵交換プロトコルは単一のKGCを前提としているため、PKI(Public Key Infrastructure)のようなスケーラビリティをもたない。このため、ユーザ数が増加するとIDの検証や秘密鍵の生成・配送に膨大なコンピューティングリソースが必要となる。これに対して、階層型IDベース認証付鍵交換と呼ばれる方式が知られている(非特許文献1及び2)。この方式では、複数のKGCで構成される階層構造とその構造に基づく鍵生成委譲により、各KGCでの鍵生成負担を減らすことを可能にしている。
【先行技術文献】
【非特許文献】
【0005】
【文献】Fujioka, Atsushi, Koutarou Suzuki, and Kazuki Yoneyama. "Hierarchical ID-based authenticated key exchange resilient to ephemeral key leakage." International Workshop on Security. Springer, Berlin, Heidelberg, 2010.
【文献】Yoneyama, Kazuki. "Practical and exposure-resilient hierarchical ID-based authenticated key exchange without random oracles." IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences 97.6 (2014): 1335-1344.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の階層型IDベース認証付鍵交換には2つの問題点が存在する。
【0007】
1つ目は、従来の階層型IDベース認証付鍵交換は単一の階層構造を前提としていることである。PKIでは複数のルートCA(Certificate Authority)が存在し、通信しようとする2者の信頼の起点が異なるCAであっても互いのCAが相互認証証明書で信頼関係が確立されていれば鍵交換を行うことが可能である。一方で、従来の階層型IDベース認証付鍵交換は単一の階層構造の配下のユーザ同士でのみ鍵交換が可能であるため、異なるルートKGCをもつユーザ同士で鍵交換を行うことができない。
【0008】
2つ目は、ID失効の仕組みが組み込まれていないことである。このため、従来の階層型IDベース認証付鍵交換は、実際のシステム運用時の秘密鍵漏洩対策として、すべてのエンティティ(KGCや各ユーザ等)の秘密鍵を定期的に再生成する必要がある。
【0009】
本発明の一実施形態は、上記の点に鑑みてなされたもので、階層型IDベース認証付鍵交換により鍵交換を行う際に異なる階層構造配下のユーザ同士の鍵交換を実現すると共に、ID失効を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、一実施形態に係る鍵交換システムは、階層構造をそれぞれ形成する第1の鍵生成センタ群及び第2の鍵生成センタ群と、前記第1の鍵生成センタ群の配下にある第1の通信端末と、前記第2の鍵生成センタ群の配下にある第2の通信端末と、時刻情報を配信する時刻サーバとが少なくとも含まれる鍵交換システムであって、前記第1の通信端末は、前記時刻サーバから取得した時刻情報と、前記第2の通信端末の識別子と、前記第2の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、失効可能階層型IDベース暗号により第1の暗号文を生成する第1の暗号化部と、鍵カプセル化メカニズムにより公開鍵と秘密鍵の鍵ペアを生成する第1の鍵生成部と、少なくとも前記第1の暗号文と前記公開鍵とを前記第2の通信端末に送信する第1の送信部と、前記第2の通信端末から第2の暗号文と第3の暗号文とを少なくとも受信すると、自身の中期秘密鍵を用いて前記第2の暗号文を前記失効可能階層型IDベース暗号により復号すると共に、前記第3の暗号文を前記鍵カプセル化メカニズムにより復号する第1の復号部と、前記第1の復号部による復号結果を用いて、セッション鍵を生成する第1のセッション鍵生成部と、を有し、前記第2の通信端末は、前記第1の通信端末から前記第1の暗号文と前記公開鍵とを少なくとも受信すると、前記時刻サーバから取得した時刻情報と、前記第1の通信端末の識別子と、前記第1の鍵生成センタ群のルート鍵生成センタによって生成された公開パラメータとを用いて、前記失効可能階層型IDベース暗号により前記第2の暗号文を生成する第2の暗号化部と、前記鍵カプセル化メカニズムにより前記公開鍵から前記第3の暗号文を生成する第3の暗号化部と、少なくとも前記第2の暗号文と前記第3の暗号文とを前記第1の通信端末に送信する第2の送信部と、自身の中期秘密鍵を用いて前記第1の暗号文を前記失効可能階層型IDベース暗号により復号する第2の復号部と、前記第2の復号部による復号結果を用いて、前記セッション鍵を生成する第2のセッション鍵生成部と、を有する。
【発明の効果】
【0011】
階層型IDベース認証付鍵交換により鍵交換を行う際に異なる階層構造配下のユーザ同士の鍵交換を実現すると共に、ID失効を実現することができる。
【図面の簡単な説明】
【0012】
【
図1】本実施形態に係る鍵交換システムの全体構成の一例を示す図である。
【
図2】コンピュータのハードウェア構成の一例を示す図である。
【
図3】本実施形態に係るルートKGCの機能構成の一例を示す図である。
【
図4】本実施形態に係る中間KGCの機能構成の一例を示す図である。
【
図5】本実施形態に係る子KGCの機能構成の一例を示す図である。
【
図6】本実施形態に係る通信端末の機能構成の一例を示す図である。
【
図7】本実施形態に係る鍵交換処理の流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について説明する。本実施形態では、階層型IDベース認証付鍵交換により鍵交換を行う際に異なる階層構造配下のユーザ同士の鍵交換を実現すると共に、ID失効を実現することができる鍵交換システムについて説明する。
【0014】
<準備>
まず、本実施形態で用いる各種アルゴリズム等を準備する。
【0015】
≪鍵カプセル化メカニズム≫
鍵カプセル化メカニズム(KEM:Key Encapsulation Mechanism)は以下の3つのアルゴリズム(KeyGen,EnCap,DeCap)で構成される。
【0016】
(ek,dk)←KeyGen(1κ):セキュリティパラメータ1κを入力とし、公開鍵と秘密鍵のペア(ek,dk)を生成する。
【0017】
(K,C)←EnCap(ek):公開鍵ekを入力とし、鍵と暗号文のペア(K,C)を生成する。
【0018】
K'←DeCap(dk,C):秘密鍵dkと暗号文Cを入力とし、鍵K'を出力する。
【0019】
更に、任意の(ek,dk)←KeyGen(1κ),(K,C)←EnCap(ek)に対して、K=DeCap(dk,C)を満たすものとする。
【0020】
上記のKEMの例としては、RSA-OAEPやElGamal暗号等が挙げられる。
【0021】
≪失効可能階層型IDベース暗号≫
失効可能階層型IDベース暗号(RHIBE:revocable hierarchical identity-based encryption)は以下の7つのアルゴリズム(Setup,SKGen,KeyUP,DKGen,Enc,Dec,Revoke)で構成される。
【0022】
(mpk,msk,RL)←Setup(1κ,N,l):セキュリティパラメータ1κと各レベルにおける最大ID数Nと最大の階層の深さl(lは小文字のL)とを入力とし、公開パラメータmpkとマスター秘密鍵mskと失効リストRLとを生成する。ここで、レベルとは階層構造における各階層を表すインデックスのことであり、0以上l(lは小文字のL)以下の整数である。例えば、各階層のレベルは、ルートKGCが存在する階層をレベル0として深くなる順に1,・・・,lとなる。なお、1以上l-1(lは小文字のL)未満のレベルの階層には中間KGCが存在し、レベルl-1(lは小文字のL)の階層には子KGCが存在する。また、レベルl(lは小文字のL)の階層には、子KGCから鍵発行を受けるユーザ(の通信端末)が存在する。そして、ルートKGC及び中間KGCは1つ大きいレベルの階層にある1以上のKGCを子として持ち、また子KGCは1以上のユーザを子として持ち、グラフ構造における親子関係を形成している。
【0023】
なお、公開パラメータmpkはSKGen,KeyUP,DKGen,Enc,Dec及びRevokeの入力になるが、自明であるため記載を省略することがある。
【0024】
【0025】
【数2】
とレベルkの識別子ID
kとを入力とし、ID
kの秘密鍵
【0026】
【0027】
【0028】
なお、以降では、上記の数2~数4のように或る文字の添え字に更に添え字が付与されている場合、明細書のテキスト中では、2番目の添え字は下付きにせずに、その前に下線記号「_」を付与して表現するものとする。例えば、上記の数2に示す秘密鍵はskID_k-1と表し、上記の数3に示す秘密鍵はskID_kと表すものとする。
【0029】
(kuID_k,T,sk'ID_k)←KeyUP(mpk,skID_k,kuID_k-1,RLID_k,T):公開パラメータmpkと秘密鍵skID_k(ただし、k=0のときはマスター秘密鍵msk)と更新鍵kuID_k-1(ただし、k=0のときは何も入力しない)と失効リストRLID_kと更新期間Tとを入力とし、更新鍵kuID_k,Tと更新された秘密鍵sk'ID_kとを生成する。
【0030】
dkID_k,T←DKGen(mpk,skID_k,kuID_k-1,T):公開パラメータmpkと秘密鍵skID_kと親が生成した更新鍵kuID_k-1,Tとを入力とし、復号鍵dkID_k,Tを生成する。
【0031】
C←Enc(mpk,ID,m,T):公開パラメータmpkと識別子IDと平文mと更新期間Tとを入力とし、暗号文Cを生成する。
【0032】
m'←Dec(mpk,dkID_k,T,C):公開パラメータmpkと復号鍵dkID_k,Tと暗号文Cとを入力とし、平文m'を生成する。
【0033】
RL'ID_k-1←Revoke(IDk,T,RLID_k-1):識別子IDkと更新期間Tと失効リストRLID_k-1とを入力とし、失効リストRLID_k-1に(IDk,T)を追加した失効リストRL'ID_k-1を生成する。なお、これは、親が子のIDを失効できることを意味する。
【0034】
更に、任意の(mpk,msk,RL)←Setup(1κ,N,l)と、任意の平文mと、任意の識別子IDkと、任意の更新期間Tとに対して、IDkがTで失効していなければm=Dec(dkID_k,T,Enc(IDk,m,T))を満たすものとする。
【0035】
上記のRHIBEの例としては、以下の参考文献1や2で提案されている方式等が挙げられる。
【0036】
参考文献1:Seo, Jae Hong, and Keita Emura. "Revocable hierarchical identity-based encryption: history-free update, security against insiders, and short ciphertexts." Cryptographers Track at the RSA Conference. Springer, Cham, 2015.
参考文献2:Lee, Kwangsu, and Seunghwan Park. "Revocable hierarchical identity-based
encryption with shorter private keys and update keys." Designs, Codes and Cryptography 86.10 (2018): 2407-2440.
ここで、本実施形態では、失効可能階層型IDベース暗号の平文空間と鍵カプセル化メカニズムのEnCapで生成される鍵の空間は同じものであるとする。以降では、この空間をKS1と表記する。
【0037】
<全体構成>
次に、本実施形態に係る鍵交換システムについて説明する。本実施形態に係る鍵交換システムは、インターネット等の通信ネットワークを介して相互に接続されるエンティティで構成される。エンティティには、KGC(ルートKGC、中間KGC、子KGC)と、通信端末と、タイムサーバとが存在する。ここで、タイムサーバとは、各KGC及び各通信端末に対して更新期間Tを配信するサーバである。
【0038】
本実施形態では、一例として、
図1に示す鍵交換システム10を想定する。
図1に示す鍵交換システム10には階層構造1と階層構造2とが存在し、階層構造1はルートKGC1000、中間KGC2000~2001等、子KGC3000~3001等、通信端末4000等で構成されており、階層構造2はルートKGC1100、中間KGC2100~2101等、子KGC3100~3101等、通信端末4100等で構成されている。
【0039】
図1に示すように、ルートKGC1000の子が中間KGC2000~2001等であり、中間KGC2000の子が子KGC3000~3001等である。また、子KGC3000の子が通信端末4000である。同様に、ルートKGC1100の子が中間KGC2100~2101等であり、中間KGC2100の子が子KGC3100~3101等である。また、子KGC3100の子が通信端末4100である。
【0040】
なお、
図1に示す例では、階層構造1及び2はいずれも4階層(つまり、l=4)であるが、これは一例であって、任意の階層数であってもよい。また、
図1に示す例では、階層構造が2つであるが、任意の個数の階層構造が存在してもよい。
【0041】
タイムサーバ5000は自身以外の他のすべてのエンティティ(各KGC及び各通信端末)と通信可能に接続され、これら他のすべてのエンティティに対して更新期間Tを定期的に配信する。言い換えれば、タイムサーバ5000以外の各エンティティは、定期的にタイムサーバ5000から配信される更新期間Tを受信する。この更新期間Tは、失効可能階層型IDベース暗号の鍵交換や暗号化に使用される情報である。
【0042】
なお、
図1に示す例では、タイムサーバ5000は1つとしているが、これは一例であって、互いに時刻同期されていれば複数のタイムサーバ5000が存在してもよい。
【0043】
ここで、中間KGCや子KGC、その配下の通信端末には階層に応じた識別子IDが割り振られているものとする。なお、上記の準備ではレベルkの階層に存在するエンティティの識別子IDkとしたが、以下では、レベルkの階層に存在するエンティティの符号を用いて、符号kXXXのエンティティの識別子をIDkXXXと表すものとする。
【0044】
具体的には、例えば、中間KGC2000にはID2000=ID1,2000が割り振られており、子KGC3000にはID3000=(ID1,2000,ID1,3000)が割り振られており、通信端末4000にはID4000=(ID1,2000,ID1,3000,ID1,4000)が割り振られているものとする。同様に、例えば、中間KGC2001にはID2001=ID1,2001が割り振られている。また、同様に、例えば、中間KGC2100にはID2100=ID2,2100が割り振られており、子KGC3100にはID3100=(ID2,2100,ID2,3100)が割り振られており、通信端末4100にはID4100=(ID2,2100,ID2,3100,ID2,4100)が割り振られているものとする。
【0045】
また、以下の関数・値はシステム共通のパラメータとして、各エンティティが保持しているものとする。
【0046】
・疑似ランダム関数F:KS2×{0,1}*→{0,1}κ
・鍵導出関数KDF:Salt×KS1→KS2
・鍵導出関数のソルトs∈Salt
ここで、KS2は疑似ランダム関数の鍵空間である。疑似ランダム関数の例としては、HMAC等が挙げられる。また、鍵導出関数の例としては、HKDF等が挙げられる。なお、セキュリティパラメータκは安全性強度を表すものであり、例えば、κ=128やκ=256等とすることが考えられる。
【0047】
<ハードウェア構成>
次に、各エンティティのハードウェア構成について説明する。各エンティティは、例えば、
図2に示すコンピュータ900は、入力装置901と、表示装置902と、外部I/F903と、通信I/F904と、プロセッサ905と、メモリ装置906とを有する。これら各ハードウェアは、それぞれがバス907を介して通信可能に接続される。
【0048】
入力装置901は、例えば、キーボードやマウス、タッチパネル等である。表示装置902は、例えば、ディスプレイ等である。なお、コンピュータ900は、入力装置901及び表示装置902のうちの少なくても一方を有していなくてもよい。
【0049】
外部I/F903は、記録媒体903a等の外部装置とのインタフェースである。なお、記録媒体903aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0050】
通信I/F904は、インターネット等の通信ネットワークに接続するためのインタフェースである。プロセッサ905は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の各種演算装置である。メモリ装置906は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
【0051】
本実施形態に係る鍵交換システム10に含まれる各エンティティは、
図2に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、
図2に示すハードウェア構成は一例であって、各エンティティのハードウェア構成は、これに限定されるものではない。
【0052】
<機能構成>
次に、本実施形態に係る鍵交換システム10に含まれる各エンティティの機能構成について説明する。
【0053】
≪ルートKGC≫
図3に示すように、ルートKGC1000及び1100は、セットアップ処理部101と、長期秘密鍵生成部102と、更新鍵生成部103と、失効リスト更新部104とを有する。これら各部は、例えば、ルートKGCにインストールされたプログラムがプロセッサに実行させる処理により実現される。
【0054】
また、ルートKGC1000及び1100は、記憶部105を有する。記憶部105は、例えば、メモリ装置等により実現される。
【0055】
セットアップ処理部101は、Setupアルゴリズムを実行して公開パラメータとマスター秘密鍵と失効リストとを生成する。これらの公開パラメータ、マスター秘密鍵及び失効リストは記憶部105に保存される。また、公開パラメータは、配下の中間KGCや子KGC、通信端末に配布される。
【0056】
長期秘密鍵生成部102は、SKGenアルゴリズムを実行して、子の秘密鍵と更新されたマスター秘密鍵とを生成する。子の秘密鍵は、該当の子に対して送信される。なお、この秘密鍵は長期秘密鍵とも呼ばれる。
【0057】
更新鍵生成部103は、KeyUPアルゴリズムを実行して、更新鍵と更新されたマスター秘密鍵とを生成する。この更新鍵は子のKGCに配信される。
【0058】
失効リスト更新部104は、Revokeアルゴリズムを実行して失効リストを更新する。
【0059】
記憶部105は、各種情報(例えば、公開パラメータ、マスター秘密鍵、失効リスト等)を記憶する。
【0060】
≪中間KGC≫
図4に示すように、中間KGC2000~2001及び2100~2101は、最新秘密鍵生成部201と、長期秘密鍵生成部202と、更新鍵生成部203と、失効リスト更新部204とを有する。これら各部は、例えば、中間KGCにインストールされたプログラムがプロセッサに実行させる処理により実現される。
【0061】
また、中間KGC2000~2001及び2100~2101は、記憶部205を有する。記憶部205は、例えば、メモリ装置等により実現される。
【0062】
最新秘密鍵生成部201は、親のKGCから更新鍵が配信された場合、DKGenアルゴリズムを実行して自身の復号鍵を更新する。なお、復号鍵は秘密鍵の一種であり、更新期間Tの配信に応じて定期的に更新されるため、最新秘密鍵や中期秘密鍵等とも呼ばれるが、以下では、最新秘密鍵という。
【0063】
長期秘密鍵生成部202は、SKGenアルゴリズムを実行して、子の長期秘密鍵と更新された自身の長期秘密鍵とを生成する。
【0064】
更新鍵生成部203は、KeyUPアルゴリズムを実行して、更新鍵と更新された自身の長期秘密鍵とを生成する。この更新鍵は子のKGCに配信される。
【0065】
失効リスト更新部204は、Revokeアルゴリズムを実行して失効リストを更新する。
【0066】
記憶部205は、各種情報(例えば、長期秘密鍵や最新秘密鍵(復号鍵)、失効リスト等)を記憶する。
【0067】
≪子KGC≫
図5に示すように、子KGC3000~3001及び3100~3101は、最新秘密鍵生成部301と、長期秘密鍵生成部302と、更新鍵生成部303と、失効リスト更新部304とを有する。これら各部は、例えば、子KGCにインストールされたプログラムがプロセッサに実行させる処理により実現される。
【0068】
また、子KGC3000~3001及び3100~3101は、記憶部305を有する。記憶部305は、例えば、メモリ装置等により実現される。
【0069】
最新秘密鍵生成部301は、親のKGCから更新鍵が配信された場合、DKGenアルゴリズムを実行して自身の最新秘密鍵を更新する。
【0070】
長期秘密鍵生成部302は、SKGenアルゴリズムを実行して、子の長期秘密鍵と更新された自身の長期秘密鍵とを生成する。
【0071】
更新鍵生成部303は、KeyUPアルゴリズムを実行して、更新鍵と更新された自身の長期秘密鍵とを生成する。この更新鍵は子のKGCに配信される。
【0072】
失効リスト更新部304は、Revokeアルゴリズムを実行して失効リストを更新する。
【0073】
記憶部305は、各種情報(例えば、長期秘密鍵や最新秘密鍵、失効リスト等)を記憶する。
【0074】
≪通信端末≫
図6に示すように、通信端末4000及び4100は、最新秘密鍵生成部401と、RHIBE暗号化部402と、RHIBE復号部403と、KEM鍵ペア生成部404と、時刻情報取得部405と、カプセル化処理部406と、カプセル化復号部407と、鍵導出部408と、セッション鍵生成部409と、メッセージ受信部410と、メッセージ送信部411とを有する。これら各部は、例えば、通信端末にインストールされたプログラムがプロセッサに実行させる処理により実現される。
【0075】
また、通信端末4000及び4100は、記憶部412を有する。記憶部412は、例えば、メモリ装置等により実現される。
【0076】
最新秘密鍵生成部401は、親のKGC(つまり、子KGC)から更新鍵が配信された場合、DKGenアルゴリズムを実行して自身の最新秘密鍵を更新する。
【0077】
RHIBE暗号化部402は、Encアルゴリズムを実行して暗号文を生成する。
【0078】
RHIBE復号部403は、Decアルゴリズムを実行して暗号文を復号する。
【0079】
KEM鍵ペア生成部404は、KeyGenアルゴリズムを実行してKEMの公開鍵と秘密鍵のペアを生成する。
【0080】
時刻情報取得部405は、タイムサーバ5000から配信された更新期間Tを取得する。
【0081】
カプセル化処理部406は、EnCapアルゴリズムを実行してKEMの鍵と暗号文のペアを生成する。
【0082】
カプセル化復号部407は、DeCapアルゴリズムを実行してKEMの鍵を得る。
【0083】
鍵導出部408は、鍵導出関数KDFにより鍵を生成する。
【0084】
セッション鍵生成部409は、鍵導出部408で生成された鍵を用いて、疑似ランダム関数Fによりセッション鍵を生成する。
【0085】
メッセージ受信部410は、他の通信端末からのメッセージ(以下、プロトコルメッセージともいう)を受信する。
【0086】
メッセージ送信部411は、他の通信端末にプロトコルメッセージを送信する。
【0087】
記憶部412は、各種情報(例えば、長期秘密鍵や最新秘密鍵、鍵導出関数KDF、疑似ランダム関数F、ソルトs等)を記憶する。
【0088】
<各種処理の詳細>
以下、本実施形態に係る鍵交換システム10が実行する各種処理の詳細について説明する。
【0089】
≪セットアップ≫
セットアップは、主に、ルートKGC1000及び1100によってそれぞれ実行されう。以下、一例として、ルートKGC1000が実行する処理について説明する。なお、ルートKGC1100も、ルートKGC1000と同様の処理を実行する。
【0090】
まず、ルートKGC1000のセットアップ処理部101は、(mpk,msk,RL)←Setup(1κ,N,l)を実行する。なお、公開パラメータmpk、マスター秘密鍵msk及び失効リストRLは記憶部105に保存される。
【0091】
次に、ルートKGC1000のセットアップ処理部101は、自身の配下の中間KGC2000及び2001や子KGC3000及び3001、通信端末4000等に公開パラメータmpkを配布する。また、ルートKGC1000のセットアップ処理部101は、別途信頼関係(例えば、PKIによる相互認証)を構築したルートKGC(例えば、ルートKGC1100等)にも公開パラメータmpkを配布する。
【0092】
また、ルートKGC1000のセットアップ処理部101は、他のルートKGC(例えば、ルートKGC1100等)から公開パラメータが配布された場合には、自身の配下の中間KGC2000及び2001や子KGC3000及び3001、通信端末4000等にその公開パラメータを配布する。
【0093】
更に、ルートKGC以外のKGC(中間KGC及び子KGC)も、失効リストRLを生成して保存しておく。なお、この時点では空の失効リストRLを生成すればよい。
【0094】
以下、IDmを持つKGCが管理する失効リストをRLmと書くことにする。また、公開パラメータ及びマスター秘密鍵も、mpkmやmskm等と書いて区別することにする。例えば、mpk1000はルートKGC1000が生成した公開パラメータ、mpk1100はルートKGC1100が生成した公開パラメータを表す。
【0095】
≪長期秘密鍵生成≫
長期秘密鍵生成は、ルートKGC、中間KGC及び子KGCによってそれぞれ実行される。以下、一例として、ルートKGC1000、中間KGC2000及び子KGC3000が長期秘密鍵を生成する場合を想定し、これらのKGCをまとめて「KGCn000」と表し、n=1の場合はルートKGC1000、n=2の場合は中間KGC2000、n=3の場合は子KGC3000であるものとする。
【0096】
長期秘密鍵生成では、KGCn000は自身の子(n=1及び2の場合は子に該当するKGC、n=3の場合は子に該当する通信端末)の長期秘密鍵を生成する。KGCn000の識別子をIDn000とし、長期秘密鍵を生成しようとする子の識別子をID(n+1)000とする。
【0097】
このとき、KGCn000の長期秘密鍵生成部n02は、(skID_(n+1)000,sk'ID_n000)←SKGen(skID_n000,ID(n+1)000)を実行して、長期秘密鍵skID_(n+1)000と更新後の長期秘密鍵sk'ID_n000を生成する。
【0098】
そして、KGCn000の長期秘密鍵生成部n02は、例えばTLSのような安全な通信路を経由して長期秘密鍵skID_(n+1)000を子に送信する。また、KGCn000の長期秘密鍵生成部n02は、自身の長期秘密鍵skID_n000をsk'ID_n000に更新する。
【0099】
ただし、上記でn=1の場合は、skID_1000及びsk'ID_1000はそれぞれマスター秘密鍵msk1000及び更新後のマスター秘密鍵msk'1000である。
【0100】
≪更新鍵生成≫
更新鍵生成は、システムセットアップ時又はタイムサーバ5000から定期的な更新期間Tが配信されたときに、各KGCによってそれぞれ実行される。以降では、上記の長期秘密鍵生成と同様に、KGCn000は、n=1の場合はルートKGC1000、n=2の場合は中間KGC2000、n=3の場合は子KGC3000であるものとする。
【0101】
KGCn000の更新鍵生成部n03は、(kuID_n000,T,sk'ID_n000)←KeyUP(skID_n000,kuID_(n-1)000,RLID_n000,T)を実行して、更新鍵kuID_n000,Tと更新された長期秘密鍵sk'ID_n000とを生成する。ここで、n=2,3の場合、kuID_(n-1)000は、KGCn000の親であるKGCから配信された更新鍵である。
【0102】
そして、KGCn000の更新鍵生成部n03は、自身の長期秘密鍵をsk'ID_n000に更新すると共に、更新鍵kuID_n000,Tを配信する。なお、この更新鍵kuID_n000,Tは自身の子に対してのみに配信するのではなく、例えば、他のエンティティが見れるような公開情報としてもよい。
【0103】
ただし、上記でn=1の場合は、KeyUPアルゴリズムには更新鍵は入力されない。また、n=1の場合は、長期秘密鍵はマスター秘密鍵である。
【0104】
≪最新秘密鍵生成≫
最新秘密鍵生成は、親のKGCから更新鍵が配信されたときに、各KGC及び各通信端末によってそれぞれ実行される。以下、一例として、中間KGC2000、子KGC3000及び通信端末4000が最新秘密鍵を生成する場合を想定し、これらをまとめて「機器n000」と表し、n=2の場合は中間KGC2000、n=3の場合は子KGC3000、n=4の場合は通信端末4000であるものとする。
【0105】
機器n0000の最新秘密鍵生成部n01は、dkID_n000,T←DKGen(skID_n000,kuID_(n-1)000,T)を実行して、最新秘密鍵dkID_n000,Tを生成する。そして、機器n0000の最新秘密鍵生成部n01は、自身の最新秘密鍵をdkID_n000,Tに更新する。
【0106】
≪失効リストの更新≫
失効リストの更新は、子のエンティティのIDを失効する場合にKGCによって実行される。以降では、上記の長期秘密鍵生成と同様に、KGCn000は、n=1の場合はルートKGC1000、n=2の場合は中間KGC2000、n=3の場合は子KGC3000であるものとする。
【0107】
KGCn000が自身の子のエンティティのIDの1つであるID(n+1)000を失効しようとする場合について説明する。また、タイムサーバ5000から配信された最新の更新期間はTであるものとする。
【0108】
このとき、KGCn000の失効リスト更新部n04は、RL'ID_n←Revoke(ID(n+1)000,T,RLID_n000)を実行して、失効リストRLID_n000に(ID(n+1)000,T)を追加する。追加後の失効リストがRL'ID_nである。この失効リストを用いて生成された更新鍵では、当該失効リストに含まれるIDに対して最新秘密鍵を生成することができない。これにより、IDの失効が可能となる。
【0109】
≪鍵交換≫
通信端末4000と通信端末4100の間(つまり、異なる階層構造にある通信端末間)で鍵交換を行う場合について、
図7を参照しながら説明する。なお、この時点で通信端末4000の時刻情報取得部405と通信端末4100の時刻情報取得部405とによって取得された最新の更新期間はTであるものとする。また、通信端末4000と通信端末4100は互いに相手のIDを事前に得ているものとする。更に、通信端末4000はルートKGC1100が生成した公開パラメータmpk
1100を、通信端末4100はルートKGC1000が生成した公開パラメータmpk
1000をそれぞれ事前に取得しているものとする。
【0110】
ステップS101:通信端末4000のRHIBE暗号化部402は、KA∈KS1を一様ランダムにとり、CA←Enc(mpk1100,ID4100,KA,T)を実行して、RHIBEの暗号文CAを生成する。また、通信端末4000のKEM鍵ペア生成部404は、(ekT,dkT)←KeyGen(1κ)を実行して、KEMの鍵ペア(ekT,dkT)を生成する。
【0111】
なお、上記のステップS101におけるRIBEの暗号化とKEMの鍵生成では、出力を確率的なものにするために、アルゴリズム内部で生成した乱数を使って出力を生成していることがある。このとき使用した乱数生成器の脆弱性等で内部乱数が漏洩するという脅威があるが、その脅威の対策として、以下の参考文献3で提案されているNAXOSトリック(長期秘密鍵と短期秘密鍵をハッシュした値を乱数の代わりに使用する)や参考文献4で提案されているねじれ疑似ランダム関数トリックを使用してもよい。
【0112】
参考文献3:LaMacchia, Brian, Kristin Lauter, and Anton Mityagin. "Stronger security of authenticated key exchange." International conference on provable security. Springer, Berlin, Heidelberg, 2007.
参考文献4:Fujioka, Atsushi, et al. "Strongly secure authenticated key exchange from factoring, codes, and lattices." Designs, Codes and Cryptography 76.3 (2015): 469-504.
ステップS102:通信端末4000のメッセージ送信部411は、(ID4000,ID4100,T,CA,ekT)を含むプロトコルメッセージを通信端末4100に送信する。
【0113】
ステップS103:通信端末4100のメッセージ受信部410は、(ID4000,ID4100,T,CA,ekT)を含むプロトコルメッセージを通信端末4000から受信する。すると、通信端末4100のRHIBE暗号化部402は、KB∈KS1を一様ランダムにとり、CB←Enc(mpk1000,ID4000,KB,T)を実行して、RHIBEの暗号文CBを生成する。また、通信端末4100のカプセル化処理部406は、(KT,CT)←EnCap(ekT)を実行して、鍵と暗号文のペア(KT,CT)を生成する。
【0114】
なお、上記のステップS101と同様に、上記のステップS103でもRHIBEの暗号化とKEMのカプセル化におけるアルゴリズム内部で使用した乱数の漏洩対策として、NAXOSトリックやねじれ疑似ランダム関数トリックを使用してもよい。
【0115】
ステップS104:通信端末4100のメッセージ送信部411は、(ID4000,ID4100,T,CB,CT)を含むプロトコルメッセージを通信端末4000に送信する。
【0116】
ステップS105-1:通信端末4000のメッセージ受信部410は、(ID4000,ID4100,T,CB,CT)を含むプロトコルメッセージを通信端末4100から受信する。すると、通信端末4000のRHIBE復号部403は、KB←Dec(mpk1000,dkID_4000,T,CB)を実行して、暗号文CBをKBに復号する。また、通信端末4000のカプセル化復号部407は、KT←DeCap(dkT,CT)を実行して、暗号文CTをKTに復号する。
【0117】
ステップS106-1:続いて、通信端末4000の鍵導出部408は、K'A←KDF(s,KA)と、K'B←KDF(s,KB)と、K'T←KDF(s,KT)とを計算する。そして、通信端末4000のセッション鍵生成部409は、ST=(ID4000,ID4100,T,CA,ekT,CB,CT)を計算し、セッション鍵
【0118】
【0119】
ステップS105-2:通信端末4100のRHIBE復号部403は、KA←Dec(mpk1100,dkID_4100,T,CA)を実行して、暗号文CAをKAに復号する。なお、本ステップは、上記のステップS104の直後、すぐに実行を開始してよい。
【0120】
ステップS106-2:続いて、通信端末4100の鍵導出部408は、K'A←KDF(s,KA)と、K'B←KDF(s,KB)と、K'T←KDF(s,KT)とを計算する。そして、通信端末4100のセッション鍵生成部409は、ST=(ID4000,ID4100,T,CA,ekT,CB,CT)を計算し、セッション鍵
【0121】
【0122】
これにより、通信端末4000と通信端末4100との間(つまり、異なる階層構造、言い換えれば異なるルートKGCの配下にある通信端末間)で同じセッション鍵SKが共有される。したがって、通信端末4000と通信端末4100は、このセッション鍵SKにより様々なアプリケーション処理の通信をセキュアに行うことが可能となる。
【0123】
以上のように、本実施形態に係る鍵交換システム10では、各階層のエンティティ間で正しく時刻(更新期間T)を共有させるためのタイムサーバ5000を導入すると共に、失効可能階層型IDベース暗号を利用することで、異なる階層構造配下のユーザ(通信端末)同士の鍵交換とID失効とを実現することができる。これにより、本実施形態に係る鍵交換システム10は、PKIベースの鍵交換が満たすスケーラビリティ(階層型及び複数ルートCA)と、証明書失効性と同等のスケーラビリティ及び機能とを有するIDベース暗号鍵交換を実現することができる。本実施形態に係る鍵交換システム10を利用することで、例えば、PKIベースの方式では要求されていた個々のエンドユーザによる証明書管理(証明書作成・発行申請・失効・更新等)も不要となる。
【0124】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0125】
10:鍵交換システム
101:セットアップ処理部
102:長期秘密鍵生成部
103:更新鍵生成部
104:失効リスト更新部
105:記憶部
201:最新秘密鍵生成部
202:長期秘密鍵生成部
203:更新鍵生成部
204:失効リスト更新部
205:記憶部
301:最新秘密鍵生成部
302:長期秘密鍵生成部
303:更新鍵生成部
304:失効リスト更新部
305:記憶部
401:最新秘密鍵生成部
402:RHIBE暗号化部
403:RHIBE復号部
404:KEM鍵ペア生成部
405:時刻情報取得部
406:カプセル化処理部
407:カプセル化復号部
408:鍵導出部
409:セッション鍵生成部
410:メッセージ受信部
411:メッセージ送信部
412:記憶部
900:コンピュータ
901:入力装置
902:表示装置
903:外部I/F
903a:記録媒体
904:通信I/F
905:プロセッサ
906:メモリ装置
907:バス
1000、1100:ルートKGC
2000、2001、2100、2101:中間KGC
3000、3001、3100、3101:子KGC
4000、4100:通信端末