(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-01
(45)【発行日】2023-11-10
(54)【発明の名称】鍵交換システム、通信装置、鍵交換方法及びプログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20231102BHJP
【FI】
H04L9/08 D
H04L9/08 E
(21)【出願番号】P 2019132060
(22)【出願日】2019-07-17
【審査請求日】2022-05-06
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】592218300
【氏名又は名称】学校法人神奈川大学
(73)【特許権者】
【識別番号】304027349
【氏名又は名称】国立大学法人豊橋技術科学大学
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】富田 潤一
(72)【発明者】
【氏名】星野 文学
(72)【発明者】
【氏名】永井 彰
(72)【発明者】
【氏名】藤岡 淳
(72)【発明者】
【氏名】鈴木 幸太郎
【審査官】打出 義尚
(56)【参考文献】
【文献】CHEN, L. et al.,Identity based authenticated key agreement protocols from pairings,16th IEEE Computer Security Foundations Workshop, 2003. Proceedings.,IEEE,2003年,pp. 1-15,[online], [retrieved on 2020-09-09], Retrieved from <https://ieeexplore.ieee.org/document/1212715> <doi: 10.1109/CSFW.2003.1212715>
【文献】TIAN, B. et al.,mOT+: An Efficient and Secure Identity-Based Diffie-Hellman Protocol over RSA Group,Lecture Notes in Computer Science,Springer, Cham,2016年01月30日,volume 9473,pp. 407-421,[online], <doi: 10.1007/978-3-319-27998-5_26>
【文献】SMART, N. P.,Identity-based authenticated key agreement protocol based on Weil pairing,Electronics Letters,IET,2002年08月07日,Volume: 38, Issue: 13,pp. 630-632,[online], [retrieved on 2020-09-09], Retrieved from <https://ieeexplore.ieee.org/document/1015725> <doi: 10.1049/el:20020387>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
IDベース暗号を用いた認証付き鍵交換プロトコルにより、複数の通信装置の間で暗号化通信を行うための共有鍵を生成する鍵交換システムであって、
前記複数の通信装置の各々は、
前記通信装置の秘密鍵を用いて、短期秘密鍵を生成する第1の生成手段と、
前記短期秘密鍵を用いて、前記通信装置の短期公開鍵を生成する第2の生成手段と、
前記短期秘密鍵と、他の通信装置で生成された短期公開鍵と、前記通信装置及び前記他の通信装置で生成された公開情報又は鍵配布センタで生成された公開情報とを用いて、前記通信装置の秘密情報を生成する第3の生成手段と、
前記通信装置の秘密鍵と、前記秘密情報とを用いたペアリング演算を行うことで、前記他の通信装置との間で暗号化通信を行うための共有鍵を生成する第4の生成手段と、
を有
し、
前記通信装置及び前記他の通信装置で生成された公開情報又は前記鍵配布センタで生成された公開情報は、前記通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の出力値を示す第1の出力値と、前記他の通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の第2の出力値を示す第2の出力値とである、ことを特徴とする鍵交換システム。
【請求項2】
前記複数の通信装置の各々は、
マスク生成関数により前記共有鍵から鍵keyを生成する第5の生成手段と、
前記鍵keyのMAC値を計算する計算手段と、
前記計算手段で計算したMAC値と、前記他の通信装置で計算されたMAC値とを検証する検証手段と、
を有することを特徴とする請求項1に記載の鍵交換システム。
【請求項3】
IDベース暗号を用いた認証付き鍵交換プロトコルにより、他の通信装置との間で暗号化通信を行うための共有鍵を生成する通信装置であって、
前記通信装置の秘密鍵を用いて、短期秘密鍵を生成する第1の生成手段と、
前記短期秘密鍵を用いて、前記通信装置の短期公開鍵を生成する第2の生成手段と、
前記短期秘密鍵と、他の通信装置で生成された短期公開鍵と、前記通信装置及び前記他の通信装置で生成された公開情報又は鍵配布センタで生成された公開情報とを用いて、前記通信装置の秘密情報を生成する第3の生成手段と、
前記通信装置の秘密鍵と、前記秘密情報とを用いたペアリング演算を行うことで、前記他の通信装置との間で暗号化通信を行うための共有鍵を生成する第4の生成手段と、
を有
し、
前記通信装置及び前記他の通信装置で生成された公開情報又は前記鍵配布センタで生成された公開情報は、前記通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の出力値を示す第1の出力値と、前記他の通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の第2の出力値を示す第2の出力値とである、ことを特徴とする通信装置。
【請求項4】
IDベース暗号を用いた認証付き鍵交換プロトコルにより、複数の通信装置の間で暗号化通信を行うための共有鍵を生成する鍵交換方法であって、
前記複数の通信装置の各々が、
前記通信装置の秘密鍵を用いて、短期秘密鍵を生成する第1の生成手順と、
前記短期秘密鍵を用いて、前記通信装置の短期公開鍵を生成する第2の生成手順と、
前記短期秘密鍵と、他の通信装置で生成された短期公開鍵と、前記通信装置及び前記他の通信装置で生成された公開情報又は鍵配布センタで生成された公開情報とを用いて、前記通信装置の秘密情報を生成する第3の生成手順と、
前記通信装置の秘密鍵と、前記秘密情報とを用いたペアリング演算を行うことで、前記他の通信装置との間で暗号化通信を行うための共有鍵を生成する第4の生成手順と、
を実行
し、
前記通信装置及び前記他の通信装置で生成された公開情報又は前記鍵配布センタで生成された公開情報は、前記通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の出力値を示す第1の出力値と、前記他の通信装置の短期公開鍵と前記通信装置の識別子と前記他の通信装置の識別子とを入力とした所定の関数の第2の出力値を示す第2の出力値とである、ことを特徴とする鍵交換方法。
【請求項5】
コンピュータを、請求項
3に記載の通信装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、鍵交換システム、通信装置、鍵交換方法及びプログラムに関する。
【背景技術】
【0002】
近年、IoT(Internet of Things)機器が普及したことに伴って、IoT機器でも重要性の高い通信が行われるようになってきた。このため、通信時に互いが正しい機器であるかを確認するための認証技術がIoT機器でも重要になってきている。
【0003】
IoT機器向けの認証技術としてはパスワードや電子証明書等が従来から知られているが、近年では、より安全性が高い認証付き鍵交換プロトコルの導入が求められている。認証付き鍵交換プロトコルとは、認証が成功した際に互いに共通した鍵(共有鍵)を生成し、その共有鍵で暗号化通信が可能となるプロトコルである。このような認証付き鍵交換プロトコルの1つとして、IDベース暗号を用いた認証付き鍵交換プロトコルが知られている。
【0004】
IDベース暗号を用いた認証付き鍵交換プロトコルが満たすべき安全性のモデルとしてid-eCKモデルと呼ばれるモデルが知られており、非常に強い安全性を要求するモデルであることが知られている。
【0005】
また、IDベース暗号を用いた認証付き鍵交換プロトコルは、一般に、有限体上の楕円曲線における双線形群を用いて実現される。このような双線形群はペアリング群とも呼ばれ、対称ペアリング群と非対称ペアリング群とに分類することができる。現在、ペアリング群を暗号で用いる場合には、効率性や安全性の観点から非対称ペアリング群が用いられることが多い。非対称ペアリング群上で実現されるIDベース暗号を用いた認証付き鍵交換プロトコルとして、ISO/IEC(International Organization for Standardization / International Electrotechnical Commission)でも標準化されているFSU(Fujioka-Suzuki-Ustaoglu)が知られている(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0006】
【文献】Fujioka, Hoshino, Kobayashi, Suzuki, Ustaoglu, Yoneyama, "id-eCK Secure ID-Based Authenticated Key Exchange on Symmetric and Asymmetric Pairing", IEICE TRANSACTIONS on Fundamentals of Electronics, Communications and Computer Sciences Vol.E96-A No.6 pp.1139-1155, 2013.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、FSUでは、ペアリング演算と呼ばれる群演算を4回行う必要がある。ペアリング演算は一般に計算コストが高いため、IoT機器等の計算リソースが限られた機器がFSUによって鍵交換を行う場合、鍵交換に時間を要することがあった。
【0008】
本発明の実施の形態は、上記の点に鑑みてなされたもので、IDベース暗号を用いた認証付き鍵交換プロトコルの計算コストを削減することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の実施の形態における鍵交換システムは、IDベース暗号を用いた認証付き鍵交換プロトコルにより、複数の通信装置の間で暗号化通信を行うための共有鍵を生成する鍵交換システムであって、前記複数の通信装置の各々は、前記通信装置の秘密鍵を用いて、短期秘密鍵を生成する第1の生成手段と、前記短期秘密鍵を用いて、前記通信装置の短期公開鍵を生成する第2の生成手段と、前記短期秘密鍵と、他の通信装置で生成された短期公開鍵と、前記通信装置及び前記他の通信装置で生成された公開情報又は鍵配布センタで生成された公開情報とを用いて、前記通信装置の秘密情報を生成する第3の生成手段と、前記通信装置の秘密鍵と、前記秘密情報とを用いたペアリング演算を行うことで、前記他の通信装置との間で暗号化通信を行うための共有鍵を生成する第4の生成手段と、を有することを特徴とする。
【発明の効果】
【0010】
IDベース暗号を用いた認証付き鍵交換プロトコルの計算コストを削減することができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施の形態における鍵交換システムの全体構成の一例を示す図である。
【
図2】本発明の実施の形態における鍵発行装置のハードウェア構成の一例を示す図である。
【
図3】本発明の実施の形態における通信装置のハードウェア構成の一例を示す図である。
【
図4】本発明の実施の形態における鍵交換システムの機能構成の一例を示す図である。
【
図5】本発明の実施の形態における鍵発行処理(実施例1)の一例を示すフローチャートである。
【
図6】本発明の実施の形態における鍵交換処理(実施例1)の一例を示すシーケンス図である。
【
図7】本発明の実施の形態における鍵交換処理(実施例2)の一例を示すシーケンス図である。
【
図8】本発明の実施の形態における鍵交換処理(実施例3)の一例を示すシーケンス図である。
【
図9】本発明の実施の形態における鍵発行処理(実施例4)の一例を示すフローチャートである。
【
図10】本発明の実施の形態における鍵交換処理(実施例4)の一例を示すシーケンス図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について説明する。本発明の実施の形態では、ペアリング演算の回数を減らすことで、IDベース暗号を用いた認証付き鍵交換プロトコルにおける計算コストを削減した鍵交換システム1について説明する。
【0013】
<全体構成>
まず、本発明の実施の形態における鍵交換システム1の全体構成について、
図1を参照しながら説明する。
図1は、本発明の実施の形態における鍵交換システム1の全体構成の一例を示す図である。
【0014】
図1に示すように、本発明の実施の形態における鍵交換システム1には、鍵発行装置10と、複数の通信装置20とが含まれる。また、鍵発行装置10と、各通信装置20とは、例えばインターネット等の通信ネットワークNを介して通信可能に接続されている。
【0015】
鍵発行装置10は、KGC(Key Generation Center)として機能するコンピュータ又はコンピュータシステムである。鍵発行装置10は、マスター秘密鍵を用いてマスター公開鍵を予め生成した上で、当該マスター公開鍵を公開する。また、鍵発行装置10は、通信装置20の識別子を受け付けた場合に、この識別子からユーザ秘密鍵を生成した上で、当該識別子に対応する通信装置20に当該ユーザ秘密鍵を配布する。
【0016】
なお、通信装置20の識別子としては、任意の識別子を用いることが可能である。例えば、通信装置20の製造固有番号やIP(Internet Protocol)アドレス、物理アドレス等を識別子として用いることが可能である。これら以外にも、例えば、通信装置20のユーザのユーザID、通信装置20のユーザの氏名、通信装置20のユーザのメールアドレス等を識別子として用いることも可能である。
【0017】
通信装置20は、例えば、各種センサデバイス、組み込み機器、ウェアラブルデバイス、デジタル家電、監視カメラ、照明機器、医療機器、産業用機器等の種々のIoT機器である。通信装置20は、鍵発行装置10から配布されたユーザ秘密鍵を用いて、他の通信装置20との間でIDベース暗号を用いた認証付き鍵交換プロトコルにより認証(つまり、正当性の確認)を行って、暗号化通信のための鍵(共有鍵)を交換(生成)する。以降では、複数の通信装置20の各々を区別して表す場合は、「通信装置20A」、「通信装置20B」等と表す。
【0018】
なお、本発明の実施の形態では、通信装置20としてIoT機器を想定し、通信装置20の計算リソースが限られている(すなわち、例えば、プロセッサの処理性能やメモリの容量が一般的なコンピュータ等と比較して乏しい)ものとする。ただし、これに限られず、通信装置20がIoT機器以外(例えば、PC(パーソナルコンピュータ)やサーバ装置、スマートフォン、タブレット端末等)であっても、本発明の実施の形態を同様に適用することが可能である。
【0019】
また、
図1に示す鍵交換システム1の構成は一例であって、他の構成であってもよい。例えば、鍵発行装置10に対して各通信装置20の識別子を送信する端末が鍵交換システム1に含まれていてもよい。
【0020】
<ハードウェア構成>
次に、本発明の実施の形態における鍵発行装置10及び通信装置20のハードウェア構成について説明する。
【0021】
≪鍵発行装置10≫
以降では、本発明の実施の形態における鍵発行装置10のハードウェア構成について、
図2を参照しながら説明する。
図2は、本発明の実施の形態における鍵発行装置10のハードウェア構成の一例を示す図である。
【0022】
図2に示すように、本発明の実施の形態における鍵発行装置10は、入力装置11と、表示装置12と、RAM(Random Access Memory)13と、ROM(Read Only Memory)14と、プロセッサ15と、外部I/F16と、通信I/F17と、補助記憶装置18とを有する。これら各ハードウェアは、それぞれがバス19を介して通信可能に接続されている。
【0023】
入力装置11は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置12は、例えばディスプレイ等であり、ユーザに対して各種処理結果等を表示するのに用いられる。なお、鍵発行装置10は、入力装置11及び表示装置12のうちの少なくとも一方を有していなくてもよい。
【0024】
RAM13は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM14は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。プロセッサ15は、例えばCPU(Central Processing Unit)等であり、ROM14や補助記憶装置18等からプログラムやデータをRAM13上に読み出して処理を実行する演算装置である。
【0025】
外部I/F16は、外部装置とのインタフェースである。外部装置には、記録媒体16a等がある。記録媒体16aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。なお、記録媒体16aには、鍵発行装置10が有する各機能を実現する1以上のプログラム等が記録されていてもよい。
【0026】
通信I/F17は、鍵発行装置10を通信ネットワークNに接続するためのインタフェースである。鍵発行装置10は、通信I/F17を介して、通信装置20との間でデータ通信を行うことができる。
【0027】
補助記憶装置18は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性の記憶装置である。補助記憶装置18には、鍵発行装置10が有する各機能を実現する1以上のプログラム等が記憶されている。
【0028】
本発明の実施の形態における鍵発行装置10は、
図2に示すハードウェア構成を有することにより、後述する鍵発行処理等を実現することができる。なお、
図2では、本発明の実施の形態における鍵発行装置10が1台の装置(コンピュータ)で実現されている場合を示したが、これに限られない。本発明の実施の形態における鍵発行装置10は、複数台の装置(コンピュータ)で実現されていてもよい。また、1台の装置(コンピュータ)には、複数のプロセッサ15や複数のメモリ(例えば、RAM13やROM14、補助記憶装置18等)が含まれていてもよい。
【0029】
≪通信装置20≫
以降では、本発明の実施の形態における通信装置20のハードウェア構成について、
図3を参照しながら説明する。
図3は、本発明の実施の形態における通信装置20のハードウェア構成の一例を示す図である。
【0030】
図3に示すように、本発明の実施の形態における通信装置20は、プロセッサ21と、メモリ装置22と、通信I/F23とを有する。これら各ハードウェアは、それぞれがバス24を介して通信可能に接続されている。
【0031】
プロセッサ21は、例えばMPU(Micro Processing Unit)やCPU等であり、メモリ装置22からプログラムやデータを読み出して処理を実行する演算装置である。
【0032】
メモリ装置22は、例えばRAMやROM、フラッシュメモリ等であり、各種データやプログラム等を記憶する。メモリ装置22には、本発明の実施の形態における通信装置20が有する各機能を実現する1以上のプログラム等が記憶されている。
【0033】
通信I/F23は、通信装置20を通信ネットワークNに接続するためのインタフェースである。通信装置20は、通信I/F23を介して、他の通信装置20や鍵発行装置10等との間でデータ通信を行うことができる。
【0034】
本発明の実施の形態における通信装置20は、
図3に示すハードウェア構成を有することにより、後述する鍵交換処理を実現することができる。
【0035】
<機能構成>
次に、本発明の実施の形態における鍵交換システム1の機能構成について、
図4を参照しながら説明する。
図4は、本発明の実施の形態における鍵交換システム1の機能構成の一例を示す図である。
【0036】
≪鍵発行装置10≫
図4に示すように、本発明の実施の形態における鍵発行装置10は、通信部101と、鍵発行処理部102とを有する。これら各部は、鍵発行装置10にインストールされた1以上のプログラムがプロセッサ15に実行させる処理により実現される。
【0037】
また、本発明の実施の形態における鍵発行装置10は、記憶部103を有する。記憶部103は、例えば補助記憶装置18等を用いて実現可能である。なお、記憶部103は、鍵発行装置10と通信ネットワークNを介して接続される記憶装置等を用いて実現されていてもよい。
【0038】
通信部101は、通信装置20等との間で各種通信を行う。鍵発行処理部102は、通信装置20の識別子を受け付けた場合に、この識別子からユーザ秘密鍵を生成した上で、当該識別子に対応する通信装置20に当該ユーザ秘密鍵を配布する。記憶部103は、各種データ(例えば、マスター公開鍵やマスター秘密鍵等)を記憶する。
【0039】
≪通信装置20≫
図4に示すように、本発明の実施の形態における通信装置20は、通信部201と、鍵交換処理部202とを有する。
【0040】
通信部201は、他の通信装置20や鍵発行装置10等との間で各種通信を行う。鍵交換処理部202は、鍵発行装置10から配布されたユーザ秘密鍵を用いて、他の通信装置20との間でIDベース暗号を用いた認証付き鍵交換プロトコルにより認証を行って共有鍵を交換する。記憶部203は、各種データ(例えば、ユーザ秘密鍵等)を記憶する。
【0041】
<鍵交換システム1の処理の詳細>
次に、本発明の実施の形態における鍵交換システム1の処理の詳細について説明する。なお、以降の実施例1~実施例3では非対称ペアリング群上でのIDベース暗号を用いた認証付き鍵交換プロトコルについて説明し、実施例4では対称ペアリング群上でのIDベース暗号を用いた認証付き鍵交換プロトコルについて説明する。
【0042】
(実施例1)
以降では、実施例1について説明する。
【0043】
≪記号の定義≫
まず、実施例1で用いる記号を次のように定義する。なお、実施例2及び3でも実施例1と同様に定義された記号が用いられる。
【0044】
IDA:通信装置20Aの識別子
IDB:通信装置20Bの識別子
DA:通信装置20Aのユーザ秘密鍵
DB:通信装置20Bのユーザ秘密鍵
k:セキュリティパラメータ
p,q:p≠qを満たす素数
G1:有限体Fp上の楕円曲線をE1として、楕円曲線E1上の群E(Fp)の部分群
G2:有限体Fpのk次拡大体上の楕円曲線をE2として、楕円曲線E2上の群
【0045】
【数1】
の部分群
g
1:G
1の生成元
g
2:G
2の生成元
Z
q:qを法とする剰余類
z∈Z
q:マスター秘密鍵
Z=zg
1:マスター公開鍵
H
1:文字列(例えばオクテット列)からZ
q上の元を生成する関数
H
2:文字列からZ
q上の元を生成する関数
H
3:文字列からZ
q上の元を生成する関数
H:鍵導出関数
K:共有鍵
e:G
1×G
2上で定義されたペアリング演算
ここで、上記で定義した各記号のうち、マスター秘密鍵z、ユーザ秘密鍵D
A及びD
B以外は公開情報であるものとする。なお、G
1とG
2とは逆であってもよい。また、群の元やZ
qの元を関数に入力する場合には、当該元を表す文字列を関数に入力するものとする。
【0046】
≪鍵発行処理(実施例1)≫
まず、ユーザ秘密鍵を生成するための鍵発行処理(実施例1)について、
図5を参照しながら説明する。
図5は、本発明の実施の形態における鍵発行処理(実施例1)の一例を示すフローチャートである。以降では、一例として、ユーザ秘密鍵D
Aとユーザ秘密鍵D
Bとを発行する場合について説明する。
【0047】
鍵発行処理部102は、通信装置20Aの識別子IDAと通信装置20Bの識別子IDBとを受け付ける(ステップS101)。通信装置20の識別子は、例えば、当該通信装置20から送信されてもよいし、鍵発行装置10と通信ネットワークNを介して接続される端末等から送信されてもよいし、鍵発行装置10が有する入力装置11から入力されてもよい。
【0048】
次に、鍵発行処理部102は、以下によりユーザ秘密鍵DA及びDBを生成する(ステップS102)。
【0049】
【0050】
【数3】
ここで、i
A=H
1(ID
A)、i
B=H
1(ID
B)である。これらi
A及びi
Bは、通信装置20で生成されてもよいし、鍵発行装置10で生成されてもよい。すなわち、例えば、ユーザ秘密鍵D
Aを生成する際に、通信装置20でi
Aを生成して鍵発行装置10に公開してもよいし、鍵発行装置10でi
Aを生成してもよい。同様に、例えば、ユーザ秘密鍵D
Bを生成する際に、通信装置20でi
Bを生成して鍵発行装置10に公開してもよいし、鍵発行装置10でi
Bを生成してもよい。なお、通信装置20A及び通信装置20Bのそれぞれでi
A及びi
Bを生成することが簡便であるが、例えば、通信装置20の計算リソースが限られており、H
1の計算に多くの計算リソースが必要な場合等には鍵発行装置10でi
A及びi
Bを生成することが好ましい。
【0051】
次に、鍵発行処理部102は、ユーザ秘密鍵DAを通信装置20Aに配布すると共に、ユーザ秘密鍵DBを通信装置20Bに配布する(ステップS103)。なお、鍵発行処理部102は、任意の方法でユーザ秘密鍵を配布すればよい。例えば、鍵発行処理部102は、通信装置20からのユーザ秘密鍵の配布要求に応じて、通信部101によって該当のユーザ秘密鍵を当該通信装置20に送信することで、ユーザ秘密鍵を配布すればよい。又は、ユーザ秘密鍵を記録媒体等に記録した上で、通信装置20に配布されてもよい。これにより、各通信装置20は、他の通信装置20との間で共有鍵を交換(生成)する際に用いるユーザ秘密鍵を得ることができる。
【0052】
≪鍵交換処理(実施例1)≫
次に、通信装置20間で、IDベース暗号を用いた認証付き鍵交換プロトコルにより認証を行って共有鍵を交換するための鍵交換処理(実施例1)について、
図6を参照しながら説明する。
図6は、本発明の実施の形態における鍵交換処理(実施例1)の一例を示すシーケンス図である。以降では、一例として、通信装置20Aと通信装置20Bとの間で共有鍵を交換(生成)する場合について説明する。
【0053】
通信装置20Aの鍵交換処理部202は、rA∈Zqをランダムに選択した上で、短期秘密鍵
【0054】
【数4】
を生成すると共に、短期公開鍵X
A=x
A(z+i
B)g
1を生成する(ステップS201)。なお、短期秘密鍵x
A及び短期公開鍵X
Aは、通信装置20Aの記憶部203に記憶される。
【0055】
同様に、通信装置20Bの鍵交換処理部202は、rB∈Zqをランダムに選択した上で、短期秘密鍵
【0056】
【数5】
を生成すると共に、短期公開鍵X
B=x
B(z+i
A)g
1を生成する(ステップS202)。なお、短期秘密鍵x
B及び短期公開鍵X
Bは、通信装置20Bの記憶部203に記憶される。
【0057】
次に、通信装置20Aの通信部201は、識別子IDAと短期公開鍵XAとを通信装置20Bに送信する(ステップS203)。同様に、通信装置20Bの通信部201は、識別子IDBと短期公開鍵XBとを通信装置20Aに送信する(ステップS204)。これにより、識別子と短期公開鍵とが通信装置20間で交換される。
【0058】
次に、通信装置20Aの鍵交換処理部202は、上記のステップS201で生成した短期秘密鍵xAを記憶部203から削除する(ステップS205)。同様に、通信装置20Bの鍵交換処理部202は、上記のステップS202で生成した短期秘密鍵xBを記憶部203から削除する(ステップS206)。
【0059】
なお、上記のステップS205及びステップS206で短期秘密鍵xA及び短期秘密鍵xBをそれぞれ削除しているが、これは、他方の通信装置20から識別子及び短期公開鍵を受信するまでの間に短期秘密鍵が流出することを防止するためである。すなわち、例えば、通信装置20Aが識別子IDA及び短期公開鍵XAを通信装置20Bに送信した後、通信装置20Aが識別子IDB及び短期公開鍵XBを通信装置20Bから受信するまでの間には或る程度の時間を要することがある。このため、この時間の間における短期秘密鍵xAの流出を防止するために、通信装置20Aは、識別子IDA及び短期公開鍵XAを通信装置20Bに送信した後、短期秘密鍵xAを削除している。短期秘密鍵xBを削除している理由についても同様である。
【0060】
続いて、通信装置20の鍵交換処理部202又は鍵発行装置10の鍵発行処理部102は、以下により公開情報dA及びdBを生成する(ステップS207)。
【0061】
dA=H3(XA,IDA,IDB)
dB=H3(XB,IDA,IDB)
ここで、上記のdA及びdBは、通信装置20が生成してもよいし、鍵発行装置10が生成してもよい。すなわち、例えば、通信装置20AでdA及びdBを生成すると共に通信装置20BでdA及びdBを生成してもよいし、鍵発行装置10でdA及びdBを生成して通信装置20A及び通信装置20Bに公開してもよい。又は、例えば、通信装置20AでdAを生成して公開すると共に、通信装置20BでdBを生成して公開してもよい。なお、通信装置20A及び通信装置20BのそれぞれでdA及びdBを生成することが簡便であるが、例えば、通信装置20の計算リソースが限られており、H3の計算に多くの計算リソースが必要な場合等には鍵発行装置10でdA及びdBを生成することが好ましい。
【0062】
なお、公開情報dA及びdBが生成されるタイミングは、短期公開鍵XA及びXBの生成後、後述する共有値σの生成前であれば、任意のタイミングでよい。
【0063】
次に、通信装置20Aの鍵交換処理部202は、短期秘密鍵
【0064】
【数6】
を再度生成する(ステップS208)。なお、短期秘密鍵x
Aは、通信装置20Aの記憶部203に記憶される。
【0065】
同様に、通信装置20Bの鍵交換処理部202は、短期秘密鍵
【0066】
【数7】
を再度生成する(ステップS209)。なお、短期秘密鍵x
Bは、通信装置20Bの記憶部203に記憶される。
【0067】
次に、通信装置20Aの鍵交換処理部202は、以下により共有値σを計算する(ステップS210)。
【0068】
FA=(xA+dA)(XB+dB(z+iA)g1)
σ=e(FA,DA)
同様に、通信装置20Bの鍵交換処理部202は、以下により共有値σを計算する(ステップS211)。
【0069】
FB=(xB+dB)(XA+dA(z+iB)g1)
σ=e(FB,DB)
次に、通信装置20Aの鍵交換処理部202は、以下によりsidを計算する(ステップS212)。なお、sidはセッションIDを意味する。
【0070】
【数8】
同様に、通信装置20Bの鍵交換処理部202は、以下によりsidを計算する(ステップS213)。
【0071】
【数9】
なお、上記のステップS212及びステップS213では、通信装置20Aと通信装置20Bとの間でsidが同一とする必要があるため、例えば、暗号化通信を行う際の送信者(sender)をID
A、受信者(receiver)をID
Bとする等と予め取り決めておくことでsidが同一となるようにしてもよいし、ID
AとID
BとX
AとX
Bとをアルファベット順にソートした上で連結することでsidが同一となるようにしてもよい。また、このとき、ID
AとID
BとX
AとX
Bとに加えて、例えば、マスター公開鍵Zを追加したり、プロトコル名やアルゴリズム名等を追加したりしてもよい。
【0072】
最後に、通信装置20Aの鍵交換処理部202は、以下により共有鍵Kを生成する(ステップS214)。
【0073】
【数10】
なお、この共有鍵Kは、通信装置20Aの記憶部203に記憶される。
【0074】
同様に、通信装置20Bの鍵交換処理部202は、以下により共有鍵Kを生成する(ステップS215)。
【0075】
【数11】
なお、この共有鍵Kは、通信装置20Bの記憶部203に記憶される。
【0076】
これにより、通信装置20Aと通信装置20Bとの間で共有鍵Kが共有される。したがって、この共有鍵Kを用いて、通信装置20Aと通信装置20Bとの間で暗号化通信を行うことができる。
【0077】
(実施例2)
以降では、実施例2について説明する。IDA、IDB、XA及びXBはいずれも公開情報であるため、これらの文字列を連結したsidも公開情報である。そこで、実施例2では、sidを用いずに共有鍵Kを生成する場合について説明する。なお、鍵発行処理については実施例1と同様であるため、その説明を省略する。また、記号については実施例1と同様に定義した記号を用いる。
【0078】
≪鍵交換処理(実施例2)≫
通信装置20間で、IDベース暗号を用いた認証付き鍵交換プロトコルにより認証を行って共有鍵を交換するための鍵交換処理(実施例2)について、
図7を参照しながら説明する。
図7は、本発明の実施の形態における鍵交換処理(実施例2)の一例を示すシーケンス図である。以降では、一例として、通信装置20Aと通信装置20Bとの間で共有鍵を交換(生成)する場合について説明する。
【0079】
図7のステップS301~ステップS311は、
図6のステップS201~ステップS211とそれぞれ同様であるため、その説明を省略する。
【0080】
通信装置20Aの鍵交換処理部202は、以下により共有鍵Kを生成する(ステップS312)。
【0081】
K=H(σ)
なお、この共有鍵Kは、通信装置20Aの記憶部203に記憶される。
【0082】
同様に、通信装置20Bの鍵交換処理部202は、以下により共有鍵Kを生成する(ステップS313)。
【0083】
K=H(σ)
なお、この共有鍵Kは、通信装置20Bの記憶部203に記憶される。
【0084】
これにより、通信装置20Aと通信装置20Bとの間で共有鍵Kが共有される。したがって、この共有鍵Kを用いて、通信装置20Aと通信装置20Bとの間で暗号化通信を行うことができる。
【0085】
(実施例3)
以降では、実施例3について説明する。実施例3では、鍵導出関数としてマスク生成関数(MGF:Mask Generation Function)を用いて鍵を生成した上で、この鍵のMAC(Message Authentication Code)値を検証することで、通信装置20間で互いに同じ鍵Kを生成しているかを確認する場合について説明する。なお、鍵発行処理については実施例1と同様であるため、その説明を省略する。また、記号については実施例1と同様に定義した記号を用いる。
【0086】
≪鍵交換処理(実施例3)≫
通信装置20間で、IDベース暗号を用いた認証付き鍵交換プロトコルにより認証を行って共有鍵を交換するための鍵交換処理(実施例3)について、
図8を参照しながら説明する。
図8は、本発明の実施の形態における鍵交換処理(実施例3)の一例を示すシーケンス図である。以降では、一例として、通信装置20Aと通信装置20Bとの間で共有鍵を交換(生成)する場合について説明する。
【0087】
図8のステップS401~ステップS415は、
図6のステップS201~ステップS215とそれぞれ同様であるため、その説明を省略する。
【0088】
通信装置20Aの鍵交換処理部202は、ステップS414で生成した共有鍵Kをシードとしたマスク生成関数により3つの鍵keyA、keyB及びSKを生成する(ステップS416)。すなわち、鍵交換処理部202は、以下により鍵keyA、keyB及びSKを生成する。
【0089】
(keyA、keyB,SK)=MGF1(K,n)
ここで、MGF1はシード(上記ではK)とマスク長nとを入力として、maskを出力するマスク生成関数である。実施例3では、例えば、マスク長nのmaskを3等分することで、keyA、keyB及びSKを生成する。例えば、n=768とした場合、maskを256ビット毎に区切って、256ビット長の鍵keyAと、256ビット長の鍵keyBと、256ビット長の鍵SKとを生成する。なお、後述するように、実施例3では、鍵SKが、通信装置20Aと通信装置20Bとの間の暗号化通信に用いられる鍵となる。
【0090】
同様に、通信装置20Bの鍵交換処理部202は、ステップS415で生成した共有鍵Kをシードとしたマスク生成関数により3つの鍵keyA、keyB及びSKを生成する(ステップS417)。すなわち、鍵交換処理部202は、以下により鍵keyA、keyB及びSKを生成する。
【0091】
(keyA、keyB,SK)=MGF1(K,n)
上述したように、実施例3では、例えば、マスク長nのmask(つまり、MGF1の出力)を3等分することで、keyA、keyB及びSKを生成する。例えば、n=768とした場合、maskを256ビット毎に区切って、256ビット長の鍵keyAと、256ビット長の鍵keyBと、256ビット長の鍵SKとを生成する。
【0092】
次に、通信装置20Aの鍵交換処理部202は、上記のステップS416で生成した鍵keyAを用いて、以下によりsidのMAC値macAを計算する(ステップS418)。
【0093】
macA=MAC(keyA,sid)
ここで、MACはMAC関数である。
【0094】
同様に、通信装置20Bの鍵交換処理部202は、上記のステップS417で生成した鍵keyBを用いて、以下によりsidのMAC値macBを計算する(ステップS419)。
【0095】
macB=MAC(keyB,sid)
次に、通信装置20Aの通信部201は、MAC値macAを通信装置20Bに送信する(ステップS420)。同様に、通信装置20Bの通信部201は、MAC値macBを送信する(ステップS421)。
【0096】
次に、通信装置20Aの鍵交換処理部202は、上記のステップS416で生成した鍵keyBを用いて、以下によりsidのMAC値macB´を計算する(ステップS422)。
【0097】
macB´=MAC(keyB,sid)
同様に、通信装置20Bの鍵交換処理部202は、上記のステップS417で生成した鍵keyAを用いて、以下によりsidのMAC値macA´を計算する(ステップS423)。
【0098】
macA´=MAC(keyA,sid)
最後に、通信装置20Aの鍵交換処理部202は、上記のステップS421で通信装置20Bから送信されたMAC値macBと、上記のステップS422で生成したMAC値macB´とが等しいか否かを検証する(ステップS424)。この検証に成功した場合(つまり、macB=macB´である場合)、通信装置20Aと通信装置20Bとの間で同一の共有鍵Kと同一の鍵SKとが生成されていることが保証される。
【0099】
同様に、通信装置20Bの鍵交換処理部202は、上記のステップS420で通信装置20Bから送信されたMAC値macAと、上記のステップS423で生成したMAC値macA´とが等しいか否かを検証する(ステップS425)。この検証に成功した場合(つまり、macB=macB´である場合)、通信装置20Aと通信装置20Bとの間で同一の共有鍵Kと同一の鍵SKとが生成されていることが保証される。
【0100】
これにより、通信装置20Aと通信装置20Bとの間で同一の共有鍵Kと同一の鍵SKとが共有される。したがって、例えば、鍵SKを用いて(つまり、鍵SKを共有鍵として)、通信装置20Aと通信装置20Bとの間で暗号化通信を行うことができる。ただし、実施例1や実施例2と同様に、例えば、共有鍵Kを暗号化通信に用いる鍵としてもよい。
【0101】
なお、上記のステップS418~ステップS419及びステップS422~ステップS423では、通信装置20A及び通信装置20Bはsidを用いてMAC値を計算したが、これに限られず、sidに代えて又はsidと共に、通信装置20Aと通信装置20Bとの間で予め決められた任意の情報を用いてMAC値が計算されてもよい。例えば、通信装置20Aと通信装置20Bとの間で交換したメッセージを予め決められた順序に結合した文字列(具体例としては、この交換したメッセージをM1、M2として、M1及びM2をこの順序で結合した文字列等)を用いてMAC値が計算されてもよいし、所定の文字を所定の個数並べた文字列(具体例としては、0を所定の個数並べた文字列「00・・・0」等)を用いてMAC値が計算されてもよい。
【0102】
また、通信装置20Aと通信装置20Bとの間で互いに同じ共有鍵Kを生成しているかを確認する方法の他の例として、例えば、共有鍵Kを用いて鍵導出関数により通信装置20Aと通信装置20Bとで同一の鍵keyを計算した上で、この鍵keyを用いて通信装置20Aと通信装置20Bとで互いに異なるメッセージ(例えば、それまでに自身が送ったメッセージや自身の識別子等)からMAC値を計算し検証してもよい。
【0103】
(実施例4)
以降では、実施例4について説明する。実施例4では対称ペアリング群上でのIDベース暗号を用いた認証付き鍵交換プロトコルについて説明する。なお、対称ペアリング群上でのプロトコル自体は、効率性や安全性の観点から現状実用的ではないが、非対称ペアリング群上でのプロトコルの拡張を考えるときに対称ペアリング群上でのプロトコルは重要である。
【0104】
≪記号の定義≫
まず、実施例4で用いる記号を次のように定義する。
【0105】
IDA:通信装置20Aの識別子
IDB:通信装置20Bの識別子
DA:通信装置20Aのユーザ秘密鍵
DB:通信装置20Bのユーザ秘密鍵
k:セキュリティパラメータ
p,q:p≠qを満たす素数
G:有限体Fp上の楕円曲線をE1として、楕円曲線E1上の群E(Fp)の部分群
g:Gの生成元
Zq:qを法とする剰余類
z∈Zq:マスター秘密鍵
Z=zg:マスター公開鍵
H1:文字列(例えばオクテット列)からZq上の元を生成する関数
H2:文字列からZq上の元を生成する関数
H3:文字列からZq上の元を生成する関数
H:鍵導出関数
K:共有鍵
e:G×G上で定義されたペアリング演算
ここで、上記で定義した各記号のうち、マスター秘密鍵z、ユーザ秘密鍵DA及びDB以外は公開情報であるものとする。なお、群の元やZqの元を関数に入力する場合には、当該元を表す文字列を関数に入力するものとする。
【0106】
≪鍵発行処理(実施例4)≫
まず、ユーザ秘密鍵を生成するための鍵発行処理(実施例4)について、
図9を参照しながら説明する。
図9は、本発明の実施の形態における鍵発行処理(実施例4)の一例を示すフローチャートである。以降では、一例として、ユーザ秘密鍵D
Aとユーザ秘密鍵D
Bとを発行する場合について説明する。
【0107】
鍵発行処理部102は、通信装置20Aの識別子IDAと通信装置20Bの識別子IDBとを受け付ける(ステップS501)。通信装置20の識別子は、例えば、当該通信装置20から送信されてもよいし、鍵発行装置10と通信ネットワークNを介して接続される端末等から送信されてもよいし、鍵発行装置10が有する入力装置11から入力されてもよい。
【0108】
次に、鍵発行処理部102は、Y∈Gをランダムに選択する(ステップS502)。次に、鍵発行処理部102は、以下によりユーザ秘密鍵DA及びDBを生成する(ステップS503)。
【0109】
【0110】
【数13】
ここで、i
A=H
1(ID
A)、i
B=H
1(ID
B)である。これらi
A及びi
Bは、通信装置20で生成されてもよいし、鍵発行装置10で生成されてもよい。すなわち、例えば、ユーザ秘密鍵D
Aを生成する際に、通信装置20でi
Aを生成して鍵発行装置10に公開してもよいし、鍵発行装置10でi
Aを生成してもよい。同様に、例えば、ユーザ秘密鍵D
Bを生成する際に、通信装置20でi
Bを生成して鍵発行装置10に公開してもよいし、鍵発行装置10でi
Bを生成してもよい。なお、通信装置20A及び通信装置20Bのそれぞれでi
A及びi
Bを生成することが簡便であるが、例えば、通信装置20の計算リソースが限られており、H
1の計算に多くの計算リソースが必要な場合等には鍵発行装置10でi
A及びi
Bを生成することが好ましい。
【0111】
次に、鍵発行処理部102は、ユーザ秘密鍵DAを通信装置20Aに配布すると共に、ユーザ秘密鍵DBを通信装置20Bに配布する(ステップS504)。なお、鍵発行処理部102は、任意の方法でユーザ秘密鍵を配布すればよい。例えば、鍵発行処理部102は、通信装置20からのユーザ秘密鍵の配布要求に応じて、通信部101によって該当のユーザ秘密鍵を当該通信装置20に送信することで、ユーザ秘密鍵を配布すればよい。又は、ユーザ秘密鍵を記録媒体等に記録した上で、通信装置20に配布されてもよい。これにより、各通信装置20は、他の通信装置20との間で共有鍵を交換(生成)する際に用いるユーザ秘密鍵を得ることができる。
【0112】
≪鍵交換処理(実施例4)≫
次に、通信装置20間で、IDベース暗号を用いた認証付き鍵交換プロトコルにより認証を行って共有鍵を交換するための鍵交換処理(実施例4)について、
図10を参照しながら説明する。
図10は、本発明の実施の形態における鍵交換処理(実施例4)の一例を示すシーケンス図である。以降では、一例として、通信装置20Aと通信装置20Bとの間で共有鍵を交換(生成)する場合について説明する。
【0113】
通信装置20Aの鍵交換処理部202は、rA∈Zqをランダムに選択した上で、短期秘密鍵
【0114】
【数14】
を生成すると共に、短期公開鍵X
A=x
A(z+i
B)gを生成する(ステップS601)。なお、短期秘密鍵x
A及び短期公開鍵X
Aは、通信装置20Aの記憶部203に記憶される。
【0115】
同様に、通信装置20Bの鍵交換処理部202は、rB∈Zqをランダムに選択した上で、短期秘密鍵
【0116】
【数15】
を生成すると共に、短期公開鍵X
B=x
B(z+i
A)gを生成する(ステップS602)。なお、短期秘密鍵x
B及び短期公開鍵X
Bは、通信装置20Bの記憶部203に記憶される。
【0117】
続くステップS603~ステップS609は、
図6のステップS203~ステップS209とそれぞれ同様であるため、その説明を省略する。
【0118】
通信装置20Aの鍵交換処理部202は、以下により共有値σを計算する(ステップS610)。
【0119】
FA=(xA+dA)(XB+dB(z+iA)g)
σ=e(FA,DA)
同様に、通信装置20Bの鍵交換処理部202は、以下により共有値σを計算する(ステップS611)。
【0120】
F
B=(x
B+d
B)(X
A+d
A(z+i
B)g)
σ=e(F
B,D
B)
続くステップS612~ステップS615は、
図6のステップS212~ステップS215とそれぞれ同様であるため、その説明を省略する。
【0121】
これにより、通信装置20Aと通信装置20Bとの間で共有鍵Kが共有される。したがって、この共有鍵Kを用いて、通信装置20Aと通信装置20Bとの間で暗号化通信を行うことができる。
【0122】
<まとめ>
以上のように、本発明の実施の形態の実施例1~実施例4では、通常の認証付き鍵交換においてeCKモデルで安全なCMQVプロトコルの技術を、IDベース暗号を用いた認証付き鍵交換プロトコルに応用できるようにプロトコルを設計している。なお、eCKモデルは通常の認証付き鍵交換における安全性のモデルであり、id-eCKモデルの元となっているモデルである。
【0123】
ところで、通常の認証付き鍵交換ではペアリング演算は不要であり、通常の認証付き鍵交換における巡回群上のべき乗計算が、IDベース暗号を用いた認証付き鍵交換プロトコルにおけるペアリング演算に対応すると考えることができる。また、CMQVは、このべき乗計算を1回行うだけで鍵交換を行うことできるプロトコルである。更に、id-eCKモデルは、通常の認証付き鍵交換におけるeCKモデルを、IDベース暗号を用いた認証付き鍵交換に自然に当てはめたものである。このため、CMQVプロトコルのコアとなっている構造を、IDベース暗号を用いた認証付き鍵交換プロトコルで実現できれば、ペアリング演算1回で鍵交換を行うことができるid-eCKモデルで安全なプロトコルが実現することが可能となる。なお、CMQBプロトコルの詳細については、例えば参考文献「B Ustaoglu, "Obtaining a secure and efficient key agreement protocol from (H)MQV and NAXOS," Designs, Codes and Cryptography, March 2008, Volume 46, Issue 3, pp 329-342」のsection 3等を参照されたい。
【0124】
しかしながら、CMQVを、非対称ペアリング群上のIDベース暗号を用いた認証付き鍵交換に自然に変換すると、CMQVプロトコルのコアとなる構造を再現することができない。これに対して、本発明の実施の形態の実施例1~実施例4では、McCullagh-Barreto鍵交換プロトコルの構造を利用して、IDベース暗号を用いた認証付き鍵交換でCMQVプロトコルのコアとなる構造を実現できるようにプロトコルを設計している。これにより、本発明の実施の形態の実施例1~実施例4では、ペアリング演算1回で鍵交換可能で、かつ、id-eCKモデルで安全なプロトコルを実現している。なお、McCullagh-Barreto鍵交換プロトコルの詳細については、例えば参考文献「Zhaohui Cheng, Liqun Chen, "On Security Proof of McCullagh-Barreto's Key Agreement Protocol and its Variants," Cryptology ePrint Archive, Report 2005/201, 2005.」を参照されたい。
【0125】
なお、ペアリング演算の回数だけに着目すると、本発明の実施の形態では、各通信装置20でペアリング演算をそれぞれ1回行うだけで共有鍵K(又は鍵SK)の交換を行うことができる。一方で、上述したように、例えば、FSUではペアリング演算をそれぞれ4回行う必要がある。このため、本発明の実施の形態では、各通信装置20は、従来技術と比較して、約1/4の時間で鍵交換を行うことが可能となる。したがって、本発明の実施の形態によれば、例えば、計算リソースが限られたIoT機器等においても、IDベース暗号を用いた認証付き鍵交換プロトコルを高速に実行することが可能となる。
【0126】
本発明は、具体的に開示された上記の実施の形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0127】
1 鍵交換システム
10 鍵発行装置
20 通信装置
101 通信部
102 鍵発行処理部
103 記憶部
201 通信部
202 鍵交換処理部
203 記憶部