【文献】
Alfred J. MENEZES et al.,Handbook of Applied Cryptography,CRC Press,1996年10月,pp. 489-541,ISBN: 0-8493-8523-7
【文献】
Joseph K. LIU et al.,Efficient Online/Offline Identity-Based Signature for Wireless Sensor Network,Cryptology ePrint Archive,International Association for Cryptologic Research,2010年 5月,Report 2010/003,Ver. 20100514:034016,pp. 1-16,インターネット,[2019年12月2日検索],URL,https://eprint.iacr.org/2010/003
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【0008】
本発明による実施形態によって提供されるシステムおよび方法により上記および他の問題は解決され、当技術分野における進歩が達成される。
【0009】
本発明によるシステムおよび方法の実施形態の第1の利点は、モノのインターネット設定においてデバイスまたはエンティティのペアが互いの真偽を検証し、共通のセッション鍵を独立して生成できることであり、これにより鍵生成サーバとの通信を常に維持する必要がないことである。
【0010】
本発明によるシステムおよび方法の実施形態の第2の利点は、エンティティの認証および共通セッション鍵の生成方法が、好ましくは楕円曲線にわたって実施され(直接的には有限体にわたって実施されることも可能である)、それ故、高い計算および通信性能をもたらすことである。
【0011】
本発明によるシステムおよび方法の実施形態の第3の利点は、エンティティ間のシークレットの暗黙的な共有がエンティティの認証プロセスおよびその後の認証されたエンティティに対する共通セッション鍵の生成を非常に単純化することである。
【0012】
上記の利点は、以下の手法で動作する本発明による方法の実施形態によって提供される。簡潔にするために、本発明の実施形態の以下の説明では、乗法記法が算術演算に利用されるが、当業者にとって、算術演算が楕円曲線上で実行されるときには加算表記法を用いて記述されるべきであることを理解することは容易なはずである。
【0013】
本発明の第1の態様によれば、第1のエンティティと第2のエンティティとの間のデジタル通信を符号化するための共通セッション鍵SK
ijを生成する方法は、セキュアサーバによって、第1のエンティティに対するプライベート鍵sk
iを生成し、プライベート鍵sk
iは、第1のエンティティのアイデンティティid
iの離散対数型デジタル署名[R
i、s
i]を含み、セキュアサーバによって、第2のエンティティに対するプライベート鍵sk
jを生成するステップであり、プライベート鍵sk
jは、第2のエンティティのアイデンティティid
jの離散対数型デジタル署名[R
j、s
j]を含み、R
iおよびR
jは群要素であり、s
iおよびs
jはqを法とする整数を含み、qは素数であり、プライベート鍵sk
iは第1のエンティティに伝達され、プライベート鍵sk
jは第2のエンティティに伝達される、ステップと、第1のエンティティによって、暗号ノンスN
i、第1のエンティティのアイデンティティid
i、およびR
iを第2のエンティティと共有するステップと、第2のエンティティによって、暗黙的共有シークレットk
jiを共有R
iを使用して計算し、暗黙的共有シークレットk
ji、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給して認証データAd
jを生成するステップと、第2のエンティティによって、暗号ノンスN
j、第2のエンティティのアイデンティティid
j、R
j、および認証データAd
jを第1のエンティティと共有するステップと、第1のエンティティによって、共有R
jを使用して暗黙的共有シークレットk
ijを計算し、暗黙的共有シークレットk
ij、暗号ノンスN
i、および暗号ノンスN
jを使用して認証データAd
jを検証するステップであり、認証データAd
jが検証されると、暗黙的共有シークレットk
ij、暗号ノンスN
i、暗号ノンスN
j、第1のエンティティのアイデンティティid
i、および第2のエンティティのアイデンティティid
jを鍵導出関数に供給することにより共通セッション鍵SK
ijを生成する、ステップとを含む。
【0014】
第1の態様に関して、第1の態様の第1の可能な実装方法において、本方法はさらに、第1のエンティティによって、暗黙的共有シークレットk
ij、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給して認証データAd
iを生成し、認証データAd
iを第2のエンティティに伝達するステップと、第2のエンティティによって、暗黙的共有シークレットk
jiを使用して認証データAd
iを検証するステップであり、認証データAd
iが検証されると、暗黙的共有シークレットk
ji、暗号ノンスN
i、暗号ノンスN
j、第1のエンティティのアイデンティティid
i、および第2のエンティティのアイデンティティid
jを鍵導出関数に供給して共通セッション鍵SK
ijを生成する、ステップとを含む。
【0015】
第1の態様または第1の態様の第1の可能な実装方法に関して、第1の態様の第2の可能な実装方法において、認証データAd
jの生成はさらに、認証データ導出関数に第1のエンティティのアイデンティティid
iおよび第2のエンティティのアイデンティティid
jを供給するステップを含む。
【0016】
第1の態様の第1または第2の可能な実装方法に関して、第1の態様の第3の可能な実装方法において、認証データAd
iの生成はさらに、認証データ導出関数に第1のエンティティのアイデンティティid
iおよび第2のエンティティのアイデンティティid
jを供給するステップを含む。
【0017】
第1の態様、第1の態様の第1、第2または第3の可能な実装方法に関して、第1の態様の第4の可能な実装方法において、認証データAd
jを検証するステップは、暗黙的共有シークレットk
ij、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給して結果を取得し、結果が認証データAd
jと一致するか否かを判定するステップであり、一致が見つかった場合、認証データAd
jを検証する、ステップを含む。
【0018】
第1の態様の第1、第2、第3または第4の可能な実装方法に関して、第1の態様の第5の可能な実装方法において、認証データAd
iを検証するステップは、暗黙的共有シークレット
kji、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給して結果を取得し、結果が認証データAd
iと一致するか否かを判定するステップであり、一致が見つかった場合、認証データAd
iを検証する、ステップを含む。
【0019】
第1の態様に関して、第1の態様の第6の可能な実装方法において、暗号ノンスN
iは、aが乱数であるg
aを含む。
【0020】
第1の態様または第1の態様の第6の可能な実装方法に関して、第1の態様の第7の可能な実装方法において、暗号ノンスN
jは、bが乱数であるg
bを含む。
【0021】
第1の態様または第1の態様の第1から第7の可能な実装方法に関して、第1の態様の第8の可能な実装方法において、認証データ導出関数は、メッセージ認証コード(MAC)関数を含む。
【0022】
第1の態様または第1の態様の第1から第8の可能な実装方法に関して、第1の態様の第9の可能な実装方法において、鍵導出関数は、衝突耐性ハッシュ関数を含む。
【0023】
第1の態様または第1の態様の第1から第9の可能な実装方法に関して、第1の態様の第10の可能な実装方法において、プライベート鍵sk
iは、R
i=g
riおよびs
i=r
i+xH(R
i、id
i)(modulo q)である、第1のエンティティのアイデンティティid
iのSchnorr署名であり、プライベート鍵sk
jは、R
j=g
rjおよびs
j=r
j+xH(R
j、id
j)(modulo q)である、第2のエンティティのアイデンティティid
jのSchnorr署名であり、r
iおよびr
jは乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数であり、暗黙的共有シークレットk
ji=g
si・sjであり、暗黙的共有シークレットk
ij=g
sj・siであり、gは巡回群Gの生成元である。
【0024】
第1の態様または第1の態様の第1から第9の可能な実装方法に関して、第1の態様の第11の可能な実装方法において、プライベート鍵sk
iは、R
i=g
riおよびs
i=x
-1・(H(id
i)−r
i・R
i)(modulo q)である、第1のエンティティのアイデンティティid
iのElGamal署名の第1のバリアントであり、プライベート鍵sk
jは、R
j=g
rjおよびs
j=x
-1・(H(id
j)−r
j・R
j)(modulo q)である、第2のエンティティのアイデンティティid
jのElGamal署名の第1のバリアントであり、r
iおよびr
jは乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。この場合、k
ji=y
si・sjであり、k
ij=y
sj・siであり、y=g
xはマスター公開鍵である。
【0025】
第1の態様または第1の態様の第1から第9の可能な実装方法に関して、第1の態様の第12の可能な実装方法において、プライベート鍵sk
iは、R
i=g
riおよびs
i=xR
i+r
i・H(id
i)(modulo q)である、第1のエンティティのアイデンティティid
iのElGamal署名の第2のバリアントであり、プライベート鍵sk
jは、R
j=g
rjおよびs
j=xR
j+r
j・H(id
j)(modulo q)である、第2のエンティティのアイデンティティid
jのElGamal署名の第2のバリアントであり、r
iおよびr
jは乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数であり、暗黙的共有シークレットk
ji=g
si・sjであり、暗黙的共有シークレットk
ij=g
sj・siであり、gは巡回群Gの生成元である。
【0026】
第1の態様または第1の態様の第1から第9の可能な実装方法に関して、第1の態様の第13の可能な実装方法において、プライベート鍵sk
iは、R
i=g
riおよびs
i=x・H(id
i)+r
i・R
i(modulo q)である、第1のエンティティのアイデンティティid
iのElGamal署名の第3のバリアントであり、プライベート鍵sk
jは、R
j=g
rjおよびs
j=x・H(id
j)+r
j・R
j(modulo q)である、第2のエンティティのアイデンティティid
jのElGamal署名の第3のバリアントであり、r
iおよびr
jは乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数であり、暗黙的共有シークレットk
ji=g
si・sjであり、暗黙的共有シークレットk
ij=g
sj・siであり、gは巡回群Gの生成元である。
【0027】
第1の態様または第1の態様の第1から第9の可能な実装方法に関して、第1の態様の第14の可能な実装方法において、プライベート鍵sk
iは、R
i=g
riおよびs
i=x
-1・(R
i−r
i・H(id
i))(modulo q)である、第1のエンティティのアイデンティティid
iのElGamal署名の第4のバリアントであり、プライベート鍵sk
jは、R
j=g
rjおよびs
j=x
-1・(R
j−r
j・H(id
j))(modulo q)である、第2のエンティティのアイデンティティid
jのElGamal署名の第4のバリアントであり、r
iおよびr
jは乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。この場合、k
ji=y
si・sjおよびk
ij=y
sj・siであり、y=g
xはマスター公開鍵である。
【0028】
本発明の第2の態様によれば、第1のエンティティと第2のエンティティとの間のデジタル通信を符号化するための共通セッション鍵SK
ijを生成する方法は、セキュアサーバによって、第1のエンティティに対するプライベート鍵sk
iを生成し、プライベート鍵sk
iは、第1のエンティティのアイデンティティid
iの離散対数型デジタル署名[R
i、s
i]を含み、セキュアサーバによって、第2のエンティティに対するプライベート鍵sk
jを生成するステップであり、プライベート鍵sk
jは、第2のエンティティのアイデンティティid
jの離散対数型デジタル署名[R
j、s
j]を含み、R
iおよびR
jは群要素であり、s
iおよびs
jはqを法とする整数を含み、qは素数であり、プライベート鍵sk
iは第1のエンティティに伝達され、プライベート鍵sk
jは第2のエンティティに伝達される、ステップと、第1のエンティティによって、暗号ノンスN
i、第1のエンティティのアイデンティティid
i、およびR
iを第2のエンティティと共有するステップと、第2のエンティティによって、gが巡回群Gの生成元である、暗黙的共有シークレットk
ji=g
si・sjを共有R
iを使用して計算し、暗黙的共有シークレットk
ji、暗号ノンスN
i、暗号ノンスN
j、第1のエンティティのアイデンティティid
i、および第2のエンティティのアイデンティティid
jを鍵導出関数に供給し、共通セッション鍵SK
ji、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給することにより共通セッション鍵SK
jiを計算して認証データAd
jを生成するステップと、第2のエンティティによって、暗号ノンスN
j、第2のエンティティのアイデンティティid
j、R
j、および認証データAd
jを第1のエンティティと共有するステップと、第1のエンティティによって、共有R
jを使用して暗黙的共有シークレットk
ij=g
sj・siを計算し、暗黙的共有シークレットk
ij、暗号ノンスN
i、暗号ノンスN
j、第1のエンティティのアイデンティティid
iおよび第2のエンティティのアイデンティティid
jを鍵導出関数に供給して共通セッション鍵SK
ijを計算し、共通セッション鍵SK
ij、暗号ノンスN
i、および暗号ノンスN
jを使用して認証データAd
jを検証するステップであり、認証データAd
jが検証されると、第1のエンティティと第2のエンティティとの間のデジタル通信を符号化するための共通セッション鍵として共通セッション鍵SK
ijまたはSK
jiを使用する、ステップとを含む。
【発明を実施するための形態】
【0030】
本発明は、デバイス間のデジタル通信を符号化するための共通セッション鍵を生成するシステムおよび方法に関する。特に、共通セッション鍵が計算される前に、エンティティペアは最初に各エンティティまたはデバイスの真偽を検証する。一旦これらのエンティティが認証されると、エンティティペアは次に進んで、これらのエンティティ間のデジタル通信をエンコードするために使用される共通のセッション鍵を生成する。
【0031】
図1は、本発明の実施形態による、エンティティペアの認証および共通セッション鍵生成システムのブロック図を示す。
図1に示すシステムは、セキュアサーバ120に無線接続されているエンティティ105、110を含む。エンティティ105、110はそれぞれ、スマートフォン、タブレットコンピュータ、モバイルコンピュータ、ネットブック、スマートウォッチなどのウェアラブル電子装置、スマートプラグ、またはスマートデバイスまたはモノのインターネット(IoT)対応デバイスに見られるトランシーバなどの無線通信機能を実行することができる任意のデバイスを含むことができるが、それらに限定されない。
【0032】
セキュアサーバ120に関しては、このサーバは、インターネット115を介してまたは直接のいずれかで、エンティティ105および110と無線通信することができるセキュアクラウドサーバまたは遠隔地にあるセキュアサーバを備え得る。サーバ120がインターネット115を介してエンティティ105および110と通信するように構成された場合、サーバ120は、限定されないが、例えばセルラネットワーク、衛星ネットワーク、電気通信ネットワーク、または広域ネットワーク(WAN)などの有線ネットワークまたはワイヤレスネットワーク125を介して通信することができる。あるいは、サーバ120がエンティティ105および110と直接通信するように構成されている場合、これは、限定ではないが、ワイヤレスフィディリティ(Wi−Fi)、Bluetooth、または近距離無線通信(NFC)などのワイヤレスネットワーク130を介して達成され得る。エンティティ105および110は、ワイヤレスネットワーク125(インターネットを介して)またはワイヤレスネットワーク130(直接通信)のいずれかを利用してデータメッセージを相互に交換し得ることに留意されたい。
【0033】
図2は、本発明の実施形態による、実施形態を実施するためのエンティティ105、110およびサーバ120内に提供される電子装置200の構成要素を表すブロック図を示す。当業者であれば理解するであろうが、エンティティまたはサーバ内に提供される各電子装置の正確な構成は異なってもよく、また電子装置200の正確な構成は異なってもよく、また
図2は一例としてのみ提供される。
【0034】
本発明の実施形態において、デバイス200は、コントローラ201とユーザインタフェース202とを備える。ユーザインタフェース202は、ユーザと電子装置200との間の手動のインタラクションを可能にするように構成され、この目的のために、ユーザが命令を入力して電子装置200を制御するのに必要な入力/出力コンポーネントを含む。当業者であれば理解するであろうが、ユーザインタフェース202の構成要素は実施形態ごとに異なり得るが、通常、ディスプレイ240、キーボード235、およびトラックパッド236のうちの1つまたは複数を含む。
【0035】
コントローラ201は、バス215を介してユーザインタフェース202とデータ通信し、メモリ220、この実施形態の方法を実行するための命令およびデータを処理する回路基板に搭載された中央処理装置(CPU)205、オペレーティングシステム206、ユーザインタフェース202と通信するための入出力(I/O)インタフェース230およびこの実施形態ではネットワークカード250の形態である通信インタフェースを含む。ネットワークカード250は、例えば電子装置200からのデータを有線またはワイヤレスネットワークを介して他の処理装置へ送信するためにあるいはデータを有線またはワイヤレスネットワークを介して受信するために利用され得る。ネットワークカード250によって利用され得るワイヤレスネットワークは、ワイヤレスフィディリティ(Wi−Fi)、Bluetooth、近距離無線通信(NFC)、セルラネットワーク、衛星ネットワーク、電気通信ネットワーク、広域ネットワーク(WAN)などを含むが、これらに限定されない。
【0036】
メモリ220およびオペレーティングシステム206は、バス210を介してCPU205とデータ通信している。メモリコンポーネントは、揮発性および不揮発性メモリの両方、ならびにランダムアクセスメモリ(RAM)220、読み出し専用メモリ(ROM)225および1つまたは複数のソリッドステートドライブ(SSD)を備える大容量記憶装置245を含む各タイプのメモリのうちの2つ以上を含む。メモリ220はまた、シークレット鍵、またはプライベート鍵を安全に記憶するためのセキュアストレージ246も含む。セキュアストレージ246内のコンテンツは、装置200のスーパーユーザまたは管理者によってのみアクセス可能であり、装置200のいかなるユーザによってもアクセスされ得ないことに留意されたい。当業者であれば理解するであろうが、上記のメモリコンポーネントは、非一時的コンピュータ可読媒体を含み、一時的な伝搬信号を除くすべてのコンピュータ可読媒体を含むものとする。通常、命令はプログラムコードとしてメモリコンポーネントに格納されるが、配線接続されることも可能である。メモリ220は、揮発性または不揮発性メモリのいずれかに格納され得るソフトウェアアプリケーションなどのカーネルおよび/またはプログラミングモジュールを含み得る。
【0037】
本明細書では、「CPU」という用語は、そのような命令を処理することができる任意のデバイスまたはコンポーネントを総称的に指すために使用され、マイクロプロセッサ、マイクロコントローラ、プログラマブルロジックデバイスまたは他の計算デバイスを含み得る。すなわち、CPU205は、入力を受信し、メモリに格納された命令に従ってそれらを処理し、(例えば、メモリコンポーネントまたはディスプレイ240に対する)出力を生成するための任意の適切な論理回路によって提供され得る。この実施形態では、CPU205は、メモリアドレス可能空間を有するシングルコアまたはマルチコアプロセッサであってもよい。一例では、CPU205は、例えば8コアCPUを含むマルチコアであってもよい。
【0038】
図1に戻って参照すると、本発明の実施形態によるエンティティペア認証および共通セッション鍵生成システムにエンティティ105および110を追加する前に、サーバ120はまず離散対数型署名方式に基づいて設定手順を開始してマスターシークレット鍵「x」およびマスター公開鍵「y」を生成する。設定手順において、サーバ120はまず、素数位数q、およびGの生成元gを有する適切な巡回群Gを決定する。
【0039】
次に、サーバ120は、暗号衝突耐性ハッシュ関数
【0043】
は当業者には既知である適切な整数である。サーバ120はまた、システム内で使用するために採用されるべき認証データ導出関数および鍵導出関数を選択する。本発明の実施形態では、認証データ導出関数は、メッセージ認証コード(MAC)、メッセージ完全性コード、または鍵付きハッシュ関数などのメッセージの真偽を検証するための任意のアルゴリズムまたは方式を含んでもよく、一方鍵導出関数は、衝突耐性ハッシュ関数などのシークレット値からシークレット鍵を導出するための任意の方式を含んでもよい。それが行われると、サーバ120は次に許可された整数のセット(x∈Z
q)からマスターシークレット鍵「x」を選択し、マスター公開鍵「y」はy=g
xとして設定される。上述の設定手順は、限定されるわけではないが、Schnorr署名方式またはElGamal署名方式などの離散対数型の署名方式を設定するための初期手順と同様であることに留意されたい。
【0044】
エンティティ105または110がシステムに参加すると、これらのエンティティのそれぞれに固有のプライベート鍵がセキュアサーバ120によって生成される。これらの固有のプライベート鍵は一旦生成されると次に、これらのエンティティのそれぞれに伝達され、それにより対応するプライベート鍵がエンティティ105および110のそれぞれ内のセキュアメモリ内に格納される。
【0045】
特に、エンティティ105が自身をサーバ120に登録するとき、エンティティ105はそのアイデンティティをサーバ120に伝達する。エンティティ105のアイデンティティは、そのユーザ名、電子メールアドレス、電話番号、IPアドレス、MACアドレス、またはエンティティ105を一意的に特定するために利用され得る任意の英数字の組み合わせを含み得る。サーバ120は次に、乱数r
105を選択し、以前に生成されたマスターシークレット鍵「x」とエンティティ105のアイデンティティid
105とを利用して、エンティティ105のアイデンティティの離散対数型デジタル署名を取得する。エンティティ105に対するシークレットプライベート鍵sk
105は次に、エンティティ105に対するアイデンティティ(R
105、s
105)の取得された離散対数型デジタル署名として設定される、すなわちsk
105=(R
105、s
105)である。同様に、エンティティ110が自身をサーバ120に登録するとき、エンティティ110もまたそのアイデンティティをサーバ120に送信する。サーバ120は次に、乱数r
110を選択し、以前に生成されたマスターシークレット鍵「x」およびエンティティ110のアイデンティティid
110を利用してエンティティ110のアイデンティティid
110の離散対数型デジタル署名を取得する。エンティティ110に対するシークレットプライベート鍵sk
110は次に、エンティティ110に対するアイデンティティ(R
110、s
110)の取得された離散対数型デジタル署名として設定される、すなわち、sk
110=(R
110、s
110)である。上記2つのシークレットプライベート鍵については、R
105とR
110はグループ要素であり、一方s
105とs
110は、素数であるqを法とする整数を含む。s
105およびs
110が対応する署名検証アルゴリズムにおいてg
sまたはy
sによってチェックされ得る任意の離散対数型デジタル署名方式が、本発明の実施形態において使用され得ることに留意されたい。
【0046】
本発明の実施形態では、プライベート鍵sk
105は、
【0048】
およびs
105=r
105+xH(R
105、id
105)(modulo q)である、第1のエンティティのアイデンティティid
105のSchnorr署名を含み得る。同様に、プライベート鍵sk
110は、
【0050】
およびs
110=r
110+xH(R
110、id
110)(mod q)である、第2のエンティティのアイデンティティid
110のSchnorr署名を含み得る。上記2つの式では、r
105とr
110は乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。
【0051】
本発明の別の実施形態では、プライベート鍵sk
105は、
【0053】
およびs
105=x
-1(H(id
105)−r
105・R
105)(modulo q)である、第1のエンティティのアイデンティティid
105のElGamal署名のバリアントを含み得る。同様に、プライベート鍵sk
110は、
【0055】
およびs
110=x
-1(H(id
110)−r
110・R
110)(modulo q)である、第2のエンティティのアイデンティティid
110のElGamal署名を含み得る。上記2つの式では、r
105とr
110は乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。
【0056】
本発明のさらに別の実施形態では、プライベート鍵sk
105は、
【0058】
およびs
105=xR
105+r
105・H(id
105)(modulo q)である、第1のエンティティのアイデンティティid
105のElGamal署名の別のバリアントを含み得る。同様に、プライベート鍵sk
110は、
【0060】
およびs
110=xR
110+r
110・H(id
110)(modulo q)である、第2のエンティティのアイデンティティid
110のElGamal署名の別のバリアントを含み得る。上記2つの式では、r
105とr
110は乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。
【0061】
本発明のさらに別の実施形態では、プライベート鍵sk
105は、
【0063】
およびs
105=x・H(id
105)+r
105・R
105(modulo q)である、第1のエンティティのアイデンティティid
105のElGamal署名のさらに別のバリアントを含み得る。同様に、プライベート鍵sk
110は、
【0065】
およびs
110=x・H(id
110)+r
110・R
110(modulo q)である、第2のエンティティのアイデンティティid
110のElGamal署名のさらに別のバリアントを含み得る。上記2つの式では、r
105とr
110は乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性ハッシュ関数である。
【0066】
本発明のさらに別の実施形態では、プライベート鍵sk
105は、
【0068】
およびs
105=x
-1(R
105−r
105・H(id
105))(modulo q)である、第1のエンティティのアイデンティティid
105のElGamal署名のさらに別のバリアントを含み得る。同様に、プライベート鍵sk
110は、
【0070】
およびs
110=x
-1(R
110−r
110・H(id
110))(modulo q)である、第2のエンティティのアイデンティティid
110のElGamal署名のさらに別のバリアントを含み得る。上記2つの式では、r
105とr
110は乱数であり、xはマスターシークレット鍵であり、H()は衝突耐性のあるハッシュ関数である。
【0071】
一旦プライベート鍵がそれぞれのエンティティのセキュアメモリに格納されると、エンティティペア、すなわちエンティティ105および110は認証手順を開始し得る。相互認証に成功した場合、エンティティペアは次に進んで、相互間で送信されたデジタル通信を符号化または署名するための共通セッション鍵を生成し得る。
【0072】
図3を参照すると、エンティティ105は、最初に暗号ノンスN
105を選択することによってエンティティ110との認証プロセスを開始する。選択された暗号ノンスは、任意の乱数または擬似乱数を含み得る。次に、エンティティ105は次に進み、ステップ305において、(エンティティ105のシークレットプライベート鍵から得られる)R
105および擬似乱数ノンスN
105と共にエンティティ105のアイデンティティid
105をエンティティ110と共有する。共有情報を受信時に、エンティティ110は次に進み、k
110、105=g
s105・s110である、暗黙的共有シークレットk
110、105を計算する。プライベート鍵sk
110が上記の実施形態で説明したような第2のエンティティのアイデンティティのElGamal署名のバリアントを含む本発明の実施形態では、暗黙的共有シークレットk
110、105は代わりに以下のように、すなわちy=g
xであるk
110,105=y
s105・s110として計算し得ることに留意されたい。
【0073】
当業者であれば理解するであろうが、以下のセクションは、プライベート鍵sk
105が、
【0075】
およびs
105=r
105+xH(R
105,id
105)(modulo q)である、第1のエンティティのアイデンティティid
105のSchnorr署名を含み、プライベート鍵sk
110が、
【0077】
およびs
110=r
110+xH(R
110、id
110)(mod q)である、第2のエンティティのアイデンティティid
110のSchnorr署名を含む実施形態を参照するが、上記のような他の種類の離散対数型デジタル署名方式は、本発明から逸脱することなくSchnorr署名方式の代わりに使用し得る。
【0078】
Schnorr署名方式が採用されるこの実施形態では、暗黙共有シークレットk
110、105がさらに拡張されると、結果として、
【0080】
となる。一旦これが行われると、エンティティ110は、自身の暗号ノンスN
110を選択する。次に、暗黙的共有シークレットk
110、105は、暗号ノンスN
105およびN
110と共に認証データ関数に供給され、Ad
110=Authentication_Data_Function(k
110、105、N
105、N
110)である、認証データAd
110が生成される。本発明の実施形態では、認証データ関数は、その認証データとしてMACを生成するメッセージ認証コード関数であってもよい。エンティティ110は次に進み、ステップ310において、(エンティティ110のシークレットプライベート鍵から得られる)R
110、暗号ノンスN
110、および生成された認証データAd
110と共に、エンティティ110のアイデンティティid
110をエンティティ105と共有する。
【0081】
エンティティ105が一度共有情報を受信すると、エンティティ105は次に進み、
【0083】
である、あるいは本発明のこの実施例では、さらに拡張されると、
【0085】
である、暗黙的共有シークレットk
105、110を計算する。この段階でk
105,110=k
110,105となることに気づくのは有益である。
【0086】
このステップに関し、プライベート鍵sk
105が、上記の実施形態で説明したような第1のエンティティのアイデンティティのElGamal署名のバリアントを含む本発明の実施形態では、暗黙的共有シークレットk
105、110は代わりに以下のように、すなわち、y=g
xである、
【0089】
次に、暗黙的共有シークレットk
105、110は、暗号ノンスN
105およびN
110と共に認証データ関数に供給され、Authentication_Data_Function(k
105、110、N
105、N110)がエンティティ110によって共有される認証データAd
110と一致するか否かを判定する。Authentication_Data_Function(k
105、110、N
105、N
110)の結果がエンティティ110によって共有される認証データAd
110と一致することが確認される場合、これはエンティティ110が認証されたことを示す。したがって、エンティティ105は次に進み、エンティティ110と共に使用するための共通セッション鍵を生成し得る。共通セッション鍵SK
105、110は、暗黙的共有シークレットk
105、110、エンティティ105および110のアイデンティティid
105およびid
110ならびに暗号ノンスN
105およびN
110を鍵導出関数に供給することによって計算される、すなわちSK
105、110=Key_Deriving_Function(k
105、110、id
105、id
110、N
105、N
110)である。本発明の実施形態では、鍵導出関数は衝突耐性ハッシュ関数であり得る。
【0090】
共通セッション鍵SK
105、110がエンティティ105によって計算された後、暗黙共有シークレットk
105、110が暗号ノンスN
110およびN
105と共に認証データ関数に供給され、Ad
105=Authentication_Data_Function(k
105、110、N
110、N
105)である、認証データAd
105を生成し、Ad
105はその後、ステップ315でエンティティ110と共有される。
【0091】
認証データAd
105を受信すると、エンティティ110は、暗黙共有シークレットk
110、105を暗号ノンスN
110およびN
105と共に認証データ関数に供給して、Authentication_Data_Function(k
110、105、N
110、N
105)がエンティティ105によって共有される認証データAd
105と一致するか否かを判定する。Authentication_Data_Function(k
110、105、N
110、N
105)の結果が、エンティティ105によって共有される認証データAd
105と一致することが確認される場合、これは、エンティティ105が認証されたことを暗示する。
【0092】
したがって、エンティティ110は次に進み、エンティティ105と共に使用するための共通セッション鍵を生成し得る。共通セッション鍵SK
110、105は、暗黙的共有シークレットk
110、105、エンティティ110および105のアイデンティティid
110およびid
105を暗号ノンスN
110およびN
105と共に鍵導出関数に供給することによって計算される、すなわち、SK
110、105=Key_Deriving_Function(k
110、105、id
105、id
110、N
105、N
110)である。エンティティ110によって生成された共通セッション鍵SK
110、105、およびエンティティ105によって生成された共通セッション鍵SK
105、110は次に、このエンティティペア間のデジタルメッセージに署名または符号化するために利用され得る(105から110)。
【0093】
本発明の別の実施形態では、エンティティ105が最初に暗号ノンスN
105を選択することによって認証プロセスを開始する代わりに、エンティティ105は代わりに乱数「a」を選択し、乱数「a」を利用してA=g
aである、中間Differy−Helman値Aを計算する。エンティティ105は、前述のように、次に進み、エンティティ105のアイデンティティid
105を(エンティティ105のシークレットプライベート鍵から得られる)R
105および中間シークレットAと一緒にエンティティ110と共有する。これはステップ305で行われる。
【0094】
共有情報を受信すると、エンティティ110は次に進み、
【0098】
である、暗黙的共有シークレットk
110、105を計算する。一旦これが行われると、エンティティ110は次に、乱数「b」を選択し、次いで乱数「b」を利用してB=g
bである、中間Differy−Helman値Bを計算する。次に、暗黙的共有シークレットk
110、105は、中間シークレットAおよびBと共に認証データ関数に供給され、Ad
110=Authentication_Data_Function(k
110、105、B、A)である、認証データAd
110を生成する。
【0099】
エンティティ110は次に進み、ステップ310において、(エンティティ110のシークレットプライベート鍵から得られる)R
110、中間シークレットB、および生成された認証データAd
110と共に、エンティティ110のアイデンティティid
110をエンティティ105と共有する。
【0100】
エンティティ105が一度共有情報を受信すると、エンティティ105は次に進み、
【0104】
である、暗黙的共有シークレットk
105、110を計算する。次に、暗黙的共有シークレットk
105、110は、中間シークレットAおよびBと共に認証データ関数に供給され、Authentication_Data_Function(k
105、110、B、A)がエンティティ110によって共有される認証データAd
110と一致するか否かを判定する。Authentication_Data_Function(k
105、110、B、A)の結果がエンティティ110によって共有される認証データAd
110と一致することが確認される場合、これはエンティティ110が認証されたことを示す。
【0105】
したがって、エンティティ105は次に進み、エンティティ110と共に使用するための共通セッション鍵を生成し得る。共通セッション鍵SK
105、110は、暗黙的共有シークレットk
105、110、エンティティ105および110のアイデンティティid
105およびid
110、中間シークレットAおよび乱数aを鍵導出関数に供給することによって計算される、すなわちSK
105、110=Key_Deriving_Function(B
a、k
105、110、id
105、id
110)である。
【0106】
共通セッション鍵SK
105、110がエンティティ105によって計算された後、暗黙共有シークレットk
105、110が中間シークレットAおよびBと共に認証データ関数に供給され、Ad
105=Authentication_Data_Function(k
105、110、A、B)である、認証データAd
105を生成し、Ad
105はその後、ステップ315でエンティティ110と共有される。
【0107】
認証データAd
105を受信すると、エンティティ110は、暗黙共有シークレットk
110、105を中間シークレットAおよびBと共に認証データ関数に供給して、Authentication_Data_Function(k
110、105、A、B)がエンティティ105によって共有される認証データAd
105と一致するか否かを判定する。Authentication_Data_Function(k
110、105、A、B)の結果が、エンティティ105によって共有される認証データAd
105と一致することが確認される場合、これは、エンティティ105が認証されたことをエンティティ110に暗示する。
【0108】
したがって、エンティティ110は次に進み、エンティティ105と共に使用するための共通セッション鍵を生成し得る。共通セッション鍵SK
110、105は、暗黙的共有シークレットk
110、105とエンティティ110および105のアイデンティティid
110およびid
105とを中間シークレットBおよび乱数bと共に鍵導出関数に供給することによって計算される、すなわち、SK
110、105=Key_Deriving_Function(A
b、k
110、105、id
105、id
110)である。エンティティ110によって生成された共通セッション鍵SK
110、105、およびエンティティ105によって生成された共通セッション鍵SK
105、110は次に、このエンティティペア(105−110)間のデジタルメッセージに署名または符号化するために利用され得る。
【0109】
本発明の実施形態によれば、第1のエンティティ「i」と第2のエンティティ「j」との間のデジタル通信を符号化するための共通セッション鍵SK
ijを生成する方法は、以下のステップを含む。すなわち、
ステップ1:セキュアサーバによって、第1のエンティティに対するプライベート鍵sk
iを生成し、プライベート鍵sk
iは、第1のエンティティのアイデンティティid
iの離散対数型デジタル署名[R
i、s
i]を含み、セキュアサーバによって、第2のエンティティに対するプライベート鍵sk
jを生成するステップであり、プライベート鍵sk
jは、第2のエンティティのアイデンティティid
jの離散対数型デジタル署名[R
j、s
j]を含み、R
iおよびR
jは群要素であり、s
iおよびs
jはqを法とする整数を含み、qは素数であり、プライベート鍵sk
iは第1のエンティティに伝達され、プライベート鍵sk
jは第2のエンティティに伝達される、ステップと、
ステップ2:第1のエンティティによって、暗号ノンスN
i、第1のエンティティのアイデンティティid
i、およびR
iを第2のエンティティと共有するステップと、
ステップ3:第2のエンティティによって、暗黙的共有シークレットk
jiを共有R
iを使用して計算し、暗黙的共有シークレットk
ji、暗号ノンスN
i、および暗号ノンスN
jを認証データ導出関数に供給して認証データAd
jを生成するステップと、
ステップ4:第2のエンティティによって、暗号ノンスN
j、第2のエンティティのアイデンティティid
j、R
j、および認証データAd
jを第1のエンティティと共有するステップと、
ステップ5:第1のエンティティによって、共有R
jを使用して暗黙的共有シークレットk
ijを計算し、暗黙的共有シークレットk
ij、暗号ノンスN
i、および暗号ノンスN
jを使用して認証データAd
jを検証するステップであり、認証データAd
jが検証されると、暗黙的共有シークレットk
ij、暗号ノンスN
i、暗号ノンスN
j、第1のエンティティのアイデンティティid
i、および第2のエンティティのアイデンティティid
jを鍵導出関数に供給することにより共通セッション鍵SK
ijを生成する、ステップと
を含む。
【0110】
そのようなシステムまたは方法を提供するために、システムのエンティティのシークレットプライベート鍵を生成するため、およびエンティティペア間のデジタルメッセージを符号化するまたは署名するために共通セッション鍵が生成される前にエンティティペアのエンティティを認証するプロセスが必要である。以下の説明および
図4から
図6は、本発明によるプロセスを提供するプロセスの実施形態を説明する。
【0111】
図4は、セキュアサーバ、システムのエンティティに対するシークレットプライベート鍵を生成するため、およびエンティティペア間のデジタルメッセージを符号化するまたは署名するために共通セッション鍵が生成される前にエンティティペアのエンティティを認証するセキュアサーバ、第1のエンティティ「i」および第2のエンティティ「j」によって実行されるプロセス400を示す。プロセスは、セキュアサーバがマスターシークレット鍵「x」およびマスター公開鍵「y」を生成するステップ405から開始する。第1のエンティティ「i」が自身をセキュアサーバに登録するとき、セキュアサーバは、第1のエンティティのアイデンティティid
iを使用して、第1のエンティティに対するシークレットプライベート鍵sk
iを生成する。プライベート鍵sk
iは、R
iが群要素であり、s
iがqを法とする整数を含み、qは素数である、第1のエンティティのアイデンティティid
iの離散対数型デジタル署名[
Ri、si]を含み得る。本発明の実施形態では、シークレットプライベート鍵sk
iは、gが巡回群Gの生成元であり、r
iが乱数であり、H()が衝突耐性のあるハッシュ関数である、[R
i=g
ri,s
i=r
i+xH(R
i,id
i)]を含むSchnorr署名である。シークレットプライベート鍵sk
iは次に、第1のエンティティに送信され、第1のエンティティ内に安全に格納される。これはすべてステップ410で行われる。
【0112】
ステップ415では、次のエンティティ、すなわち第2のエンティティjが自身をセキュアサーバに登録するとき、セキュアサーバは、第2のエンティティのアイデンティティid
jを使用して、第2のエンティティに対するシークレットプライベート鍵sk
jを生成する。プライベート鍵sk
jは、R
jが群要素であり、s
jがqを法とする整数を含み、qは素数である、第2のエンティティのアイデンティティid
jの離散対数型デジタル署名[R
j、s
j]を含む。本発明のこの実施形態では、シークレットプライベート鍵sk
jは、gが巡回群Gの生成元であり、r
jが乱数であり、H()が衝突耐性のあるハッシュ関数である、[R
j=g
rj,s
j=r
j+xH(R
j,id
j)]を含むSchnorr署名である。シークレットプライベート鍵sk
jは次に、第2のエンティティに送信され、第2のエンティティ内に安全に格納される。
【0113】
第1および第2のエンティティは次に、ステップ420において、暗黙的シークレットを相互に交換する。共有された暗黙的シークレットは、次に、第1のエンティティおよび第2のエンティティに対する認証データを計算するために利用される。計算された認証データは次にステップ423で交換され、他のエンティティの真偽を検証するために各エンティティによって利用される。例えば、第2のエンティティは認証データAd
jを計算し、この認証データを一緒に第1のエンティティに送信する。第1のエンティティは次に、第2のエンティティから以前に受信された暗黙的シークレットデータを利用して、受信された認証データAd
jの正確性を判断する。このプロセスは次に、第1のエンティティがその認証データAd
iを計算して第2のエンティティに送信することによって繰り返され、それによって第2のエンティティは第1のエンティティから以前に受信した暗黙的シークレットデータを利用して受信した認証データAd
iの正確性を判定する。
【0114】
一旦エンティティが認証されると、ステップ425で、第1および第2のエンティティは共有された暗黙的シークレットを使用して共通セッション鍵を生成する。生成された共通セッション鍵は次いで、第1のエンティティと第2のエンティティとの間で交換される任意のデジタルメッセージに署名または符号化するために使用され得る。そしてプロセス400は終了する。
【0115】
図5は、本発明の実施形態による、第2のエンティティを認証し、共通セッション鍵を生成するために、第1のエンティティによって実行されるプロセス500を示す。プロセス500が開始する前に、[R
i、s
i]を含むシークレットプライベート鍵sk
iが以前に伝達され、第1のエンティティ内に記憶されていたことに留意されたい。
【0116】
プロセス500はステップ505で開始し、それによってプロセス500は暗号ノンスN
iを選択する。ステップ510で、暗号ノンスN
i、R
i(sk
iから得られる)、および第1のエンティティのアイデンティティid
iは、すべて第2のエンティティjと共有される。その代わりに、第2のエンティティは、暗号ノンスN
j、R
j(第2のエンティティのプライベートのシークレット鍵から取得される)、第2のエンティティのアイデンティティid
j、および認証データAd
jを第1のエンティティと共有する。これはステップ515で行われる。
【0117】
プロセス500は次に、ステップ520において、暗黙的共有シークレットを計算する。第1のエンティティにおける暗黙的共有シークレットは、
【0121】
として表し得る。ステップ525において、プロセス500は次に、計算された暗黙的共有シークレットk
ijと暗号ノンスN
iおよびN
jとを利用して、第2のエンティティによって送信された情報の真偽を検証する。これは、Authentication_Data_Function(k
ij、N
i、N
j)の結果が受信した認証データAd
jと一致するか否かを検証することによって行われる。プロセス500が第2のエンティティが認証されたエンティティであると判断した場合、すなわち上記の認証データ機能の結果が受信した認証データAd
jと一致する場合、プロセス500はステップ530に進み、プロセス500が次の関数Authentication_Data_Function(k
ij、N
j、N
i)を適用して第1のエンティティの認証データAd
iを計算する。
【0122】
この認証データAd
iはその後、第2のエンティティに送信される。プロセス500は次に進み次の関数Key_Deriving_Function(k
ij、id
i、id
j、N
i、N
j)を解くことによって共通セッション鍵SK
ijを計算する。そしてプロセス500は終了する。
【0123】
逆に、ステップ525でプロセス500が第2のエンティティの真偽を検証できない場合、すなわちAuthentication_Data_Function(k
ij、N
i、N
j)の結果が受信した認証データAd
jと一致しない場合、プロセス500はそこで終了する。
【0124】
本発明の別の実施形態では、ステップ525において、プロセス500は、まず共通セッション鍵SK
ijを計算し、代わりに認証データ関数内の暗黙的共有シークレットk
ijを共通セッション鍵SK
ijで置き換えることによって第2のエンティティによって送信される情報の真偽を検証してもよい。これは、Authentication_Data_Function(SK
ij、N
i、N
j)の結果が受信した認証データAd
jと一致する場合、Adjが有効であることを意味する。プロセス500は次に、ステップ530に進む。ステップ530において、プロセス500は次に進み、次の関数Authentication_Data_Function(SK
ij、N
j、N
i)を適用することによって第1のエンティティの認証データAd
iを計算する。この認証データ、Ad
iはその後、第2のエンティティに送信される。本発明のこの実施形態では、第1のエンティティに対する共通セッション鍵、すなわちSK
ijはステップ525で既に計算されているので、プロセス500は次にステップ535をスキップし、プロセス500はそこで終了する。
【0125】
図6は、本発明の実施形態による、第1のエンティティiを認証し、共通セッション鍵を生成するために第2のエンティティjによって実行されるプロセス600を示す。プロセス600が開始する前に、[R
j、s
j]を含むシークレットプライベート鍵sk
jが以前に伝達され、第2のエンティティ内に格納されていたことに留意されたい。
【0126】
プロセス600はステップ605で開始し、それによってプロセス600は暗号ノンスN
i、R
i(sk
iから得られる)、および第1のエンティティのアイデンティティid
iを第1のエンティティから受け取る。この受信された情報を用いて、プロセス600は次に進み、ステップ610において暗黙的共有シークレットを計算する。第2のエンティティにおける暗黙的共有シークレットは
【0128】
として、または本発明の実施形態では、さらに拡張されると、
【0130】
として表し得る。ステップ615において、プロセス600は次に進み暗号ノンスN
jを選択する。プロセス600は次に、ステップ620において、計算された暗黙的共有シークレットk
ijと暗号ノンスN
iおよびN
jとを利用して、次の関数Authentication_Data_Function(k
ji、N
i、N
j)を適用することによって第2のエンティティの認証データAd
jを計算する。次のステップ、すなわちステップ625において、プロセス600は、計算された認証データAd
j、暗号ノンスN
j、R
j(sk
jから得られる)、および第2のエンティティのアイデンティティ
idjを第1のエンティティに送信する。代わりに、プロセス600は、ステップ630で第1のエンティティから認証データAd
iを受信する。
【0131】
ステップ635において、プロセス600は次に、計算された暗黙的共有シークレットk
jiと暗号ノンスN
iおよびN
jとを利用して、ステップ605において第1のエンティティから以前に受信された情報の真偽を検証する。これは、Authentication_Data_Function(k
ji、N
j、N
i)の結果が受信した認証データAd
iと一致するか否かを検証することによって行われる。プロセス600が第1のエンティティが認証されたエンティティであると判断した場合、すなわち認証データ関数の結果が受信した認証データAd
iと一致する場合、プロセス600はステップ640に進み、プロセス600は次の関数Key_Deriving_Function(k
ji、id
i、id
j、N
i、N
j)を解くことによって共通セッション鍵SK
jiを計算する。そしてプロセス600は終了する。
【0132】
逆に、ステップ635でプロセス600が第2のエンティティの真偽を検証できない場合、すなわちAuthentication_Data_Function(k
ji、N
j、N
i)の結果が受信した認証データAdiと一致しない場合、プロセス600はそこで終了する。
【0133】
本発明の別の実施形態では、ステップ620において、計算された暗黙的共有シークレットk
ijを利用して第2のエンティティの認証データAd
jを計算する代わりに、プロセス600はまず第2のエンティティの共通セッション鍵、すなわちSK
jiを計算し、暗黙的共有シークレットk
jiの代わりにこの共通セッション鍵SK
jiを利用して認証データAd
jを計算する。これは、認証データAd
jが次の関数Authentication_Data_Function(SK
ji、N
i、N
j)を解くことによって取得されることを意味する。ステップ625において、プロセス600は次に、計算された認証データAd
j、暗号ノンスN
j、R
j(sk
jから得られる)、および第2のエンティティのアイデンティティ
idjを第1のエンティティに送信する。
【0134】
同様に、プロセス600は、ステップ630で第1のエンティティから認証データAd
iを受信する。ステップ635で、プロセス600は次に、共通セッション鍵SK
jiと暗号ノンスN
iおよびN
jとを利用して、ステップ605において第1のエンティティから以前に受信された情報の真偽を検証する。これは、Authentication_Data_Function(SK
ji、N
j、N
i)の結果が受信した認証データAd
iと一致するか否かを検証することによって行われる。本発明のこの実施形態では、第2のエンティティの共通セッション鍵、すなわちSK
jiはステップ620で既に計算されているので、プロセス600は次にステップ640をスキップし、そしてプロセス600は終了する。
【0135】
上記は、添付の特許請求の範囲に記載の本発明によるシステムおよびプロセスの実施形態の説明である。他者が添付の特許請求の範囲内に入る代替物を設計してもよく、また設計するであろうことが想定される。