(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-29
(45)【発行日】2024-12-09
(54)【発明の名称】安全な通信で使用するための鍵生成
(51)【国際特許分類】
H04L 9/08 20060101AFI20241202BHJP
【FI】
H04L9/08 C
H04L9/08 E
(21)【出願番号】P 2022519684
(86)(22)【出願日】2020-09-30
(86)【国際出願番号】 CA2020051307
(87)【国際公開番号】W WO2021062537
(87)【国際公開日】2021-04-08
【審査請求日】2023-08-14
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-12-05
(33)【優先権主張国・地域又は機関】GB
【早期審査対象出願】
(73)【特許権者】
【識別番号】518417983
【氏名又は名称】ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント
【氏名又は名称原語表記】THE GOVERNING COUNCIL OF THE UNIVERSITY OF TORONTO
【住所又は居所原語表記】Banting Institute, 100 College Street, Suite 413, Toronto, Ontario M5G 1L5, Canada
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】ロ,ホイ-クウォン
(72)【発明者】
【氏名】モンタグナ,マッティア
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許出願公開第2019/0044923(US,A1)
【文献】特開2012-147341(JP,A)
【文献】米国特許出願公開第2015/0295907(US,A1)
【文献】カナダ国特許出願公開第03078558(CA,A1)
【文献】米国特許出願公開第2014/0369498(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
第1のユーザコンピューティングデバイスと第2のユーザコンピューティングデバイスとの間の鍵生成中の直接の通信を必要としない、前記第1のユーザコンピューティングデバイスと前記第2のユーザコンピューティングデバイスとの間の安全な通信のための鍵生成のための方法であって、
各々がコンピューティングデバイスを含む複数のプライバシープロバイダを使用する鍵生成のための方法であって、
第1のプライベートテーブルおよび第2のプライベートテーブルを使用する鍵生成のための方法であって、
前記第1のプライベートテーブルは
、関連する
値を有するインデック
スを含み、前記第1のプライベートテーブル内の各インデックスは、前記第1のユーザコンピューティングデバイスに記憶され且つ前記複数のプライバシープロバイダのうちの唯一つに記憶され、
前記第2のプライベートテーブルは
、関連する
値を有するインデック
スを含み、前記第2のプライベートテーブル内の各インデックスは、前記第2のユーザコンピューティングデバイスに記憶され且つ前記複数のプライバシープロバイダのうちの唯一つに記憶され、
前記第2のユーザコンピューティングデバイスによって以下の処理を実行する:
インデックスを受信するステップであって、
受信した各インデックスは、前記第2のプライベートテーブル内の
インデックスと一致し、
受信した各インデックスは、前記一致したインデックスの関連付けられた値を記憶した前記複数のプライバシープロバイダのうちの1つから
受信し、
受信した各インデックスの前記第2のプライベートテーブル内
において、前記一致したインデックスの前記関連付けられた値は、前記第1のプライベートテーブル内においてマッチングしたインデックスの関連付けられた値と一致し、
前記第1のプライベートテーブル内の前記
マッチングしたインデックス
は、前記第2のユーザコンピューティングデバイスに関する
前記受信したインデックスの関連付けられた値を記憶した前記プライバシープロバイダと同一のプライバシープロバイダによって、前記第1のユーザコンピューティングデバイスから受信される、ステップ;及び
前記第2のプライベートテーブル
のインデックス付きの値を組み合わせることによって、前記安全な通信のための共通鍵を生成するステップ
を含む、方法。
【請求項2】
前記共通鍵を生成するステップが、前記第2のプライベートテーブルの前記インデックス付きの値に対して排他的論理和(XOR)演算を実行することを含む、請求項1に記載の方法。
【請求項3】
ワンタイムパッド(OTP)暗号化アプローチを使用して、前記第1のユーザコンピューティングデバイスと前記第2のユーザコンピューティングデバイスとの間で安全に通信するために、前記共通鍵を使用することをさらに含む、請求項2に記載の方法。
【請求項4】
インデックス付きの値の数が、前記第1のユーザコンピューティングデバイスによって前記第2のユーザコンピューティングデバイスに通信されるべきビットの数を表す、請求項3に記載の方法。
【請求項5】
前記第1のプライベートテーブルおよび前記第2のプライベートテーブルの前記値が、量子乱数生成器(QRNG)を使用して生成される、請求項1に記載の方法。
【請求項6】
前記共通鍵を生成するために使用された前記第2のプライベートテーブル内の値を、前記第2のユーザコンピューティングデバイスによって使用済みとしてマークすることをさらに含む、請求項1に記載の方法。
【請求項7】
前記第2のユーザコンピューティングデバイスによって、前記共通鍵を生成するために使用された前記第2のプライベートテーブル内の値の消去を実行することをさらに含む、請求項1に記載の方法。
【請求項8】
前記第2のユーザコンピューティングデバイスによって、認証サービスを使用して前記共通鍵を認証することをさらに含む、請求項1に記載の方法。
【請求項9】
前記第2のユーザコンピューティングデバイスによって、前記共通鍵に線形行列を適用することを含むプライバシー増幅を実行することをさらに含む、請求項1に記載の方法。
【請求項10】
第1のユーザコンピューティングデバイスとの鍵生成中の直接の通信を必要としない、前記第1のユーザコンピューティングデバイスとの安全な通信のための鍵生成のためのシステムであって、前記システムが、1つ以上のプロセッサと、データストレージデバイスとを含み、前記システムが、各々がコンピューティングデバイスを含む1つ又は複数のプライバシープロバイダと通信し、
第1のプライベートテーブルは
、関連する
値を有する
インデックスを含み、前記第1のプライベートテーブル内の各インデックスは、前記第1のユーザコンピューティングデバイスに記憶され且つ前記複数のプライバシープロバイダのうちの唯一つに記憶され、
第2のプライベートテーブルは
、関連する
値を有する
インデックスを含み、前記第2のプライベートテーブル内の各インデックスは、前記データストレージデバイスに記憶され且つ前記複数のプライバシープロバイダのうちの唯一つに記憶され、
前記1つ以上のプロセッサが、前記データストレージデバイスと通信し、かつ以下の処
理:
テーブルモジュールがインデックスを受信
する処理であって、
受信した各インデックスは
、前記第2のプライベートテーブル内の
インデックスと一致し、
受信した各インデックスは、前記一致した値の前記関連付けられた値を記憶した前記複数のプライバシープロバイダのうちの1つから
受信し、
受信した各インデックスの前記第2のプライベートテーブル内の
前記一致したインデックスの前記
関連付けられた値は、前記第1のプライベートテーブル内の
マッチングしたインデックス
の前記関連付けられた値と一致し、
前記第1のプライベートテーブル内の前記
マッチングしたインデックスは、前記データストレージデバイスに記憶した前記
関連付けられた値を記憶する前記プライバシープロバイダと同一のプライバシープロバイダによって、前記第1のユーザコンピューティングデバイスから受信する
処理;及び
共通鍵モジュールが、前記第2のプライベートテーブル
のインデックス付きの値を組み合わせることによって、前記安全な通信のための共通鍵を生成する
処理、
を実行するように構成される、
システム。
【請求項11】
前記共通鍵モジュールが、前記第2のプライベートテーブルの前記インデックス付きの値に対して排他的論理和(XOR)演算を実行することによって、前記共通鍵を生成する、請求項10に記載のシステム。
【請求項12】
前記1つ以上のプロセッサが、ワンタイムパッド(OTP)暗号化アプローチを使用して、前記第1のユーザコンピューティングデバイスと安全に通信するために前記共通鍵を使用する通信モジュールを実行するようにさらに構成されている、請求項11に記載のシステム。
【請求項13】
インデックス付きの値の数が、前記第1のユーザコンピューティングデバイスによって通信されるべきビットの数を表す、請求項12に記載のシステム。
【請求項14】
前記第1のプライベートテーブルおよび前記第2のプライベートテーブルの前記値が、量子乱数生成器(QRNG)を使用して生成される、請求項10に記載のシステム。
【請求項15】
前記テーブルモジュールが、前記共通鍵を生成するために使用された前記第2のプライベートテーブル内の値を使用済みとしてマークする、請求項10に記載のシステム。
【請求項16】
前記1つ以上のプロセッサが、前記共通鍵を生成するために使用された前記第2のプライベートテーブル内の値の消去を実行するための消去モジュールを実行するようにさらに構成されている、請求項10に記載のシステム。
【請求項17】
前記1つ以上のプロセッサが、認証サービスを使用して前記共通鍵を認証するための認証モジュールを実行するようにさらに構成されている、請求項10に記載のシステム。
【請求項18】
前記1つ以上のプロセッサが、前記共通鍵に線形行列を適用することを含むプライバシー増幅を実行するための増幅モジュールを実行するようにさらに構成されている、請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
以下は、データ通信システム、およびそのようなシステムで利用される暗号化方式に関し、より具体的には、安全な通信のための鍵生成のための方法およびシステムに関する。
【背景技術】
【0002】
データ通信システムは、デバイス間で情報を交換するために使用される。交換される情報は、他のデバイスによって認識可能であり、情報が処理および/または回復されることを可能にするようにフォーマットされたデジタルビットのストリングとして編成されたデータを含む。情報の交換は、2つのデバイス間の通信リンクなど、公的にアクセス可能なネットワークを介して、組織内の専用ネットワークを介して行われるか、またはコンピュータもしくはPOSデバイス内など、同じ専用コンポーネント内の2つのデバイス間で行われ得る。異なるデバイス間でのデータの交換を可能にするために、多数の通信プロトコルが開発されている。通信プロトコルは、しばしば誤り訂正および誤り検出機能を有するロバストな方法でデータを交換し、データが意図された受信者に向けられ、さらなる使用のために回復されることを可能にする。データは、他のデバイスからアクセス可能である可能性があるので、傍受および観察または操作を受けやすい。情報の機密性は、一般に様々なタイプの暗号化方式を使用して、情報を安全にし、その機密性を確実にするための措置がとられることを必要とする。
【0003】
高度暗号化規格(AES)などの様々な暗号化方式は、計算上の仮定に基づいており、アルゴリズムおよびハードウェアの進歩によって破られやすい可能性がある。例えば、量子コンピュータの出現は、コンピューティング能力の大幅な飛躍をもたらす。しかしながら、暗号化された通信を傍受しようとする敵対者または侵入者は、量子コンピューティングの能力にアクセスして、暗号を解読し、安全であると思われる通信にアクセスすることができる可能性もある。中期および長期のセキュリティの場合、これは、侵入者または盗聴者(「イブ」と呼ばれるエンティティ)が、現在送信された通信を保存し、数年または数十年後に、現在の暗号化方式を復号することができるアルゴリズムおよびハードウェアの普及を待つ可能性があるので、重大な課題を提示する可能性がある。
【0004】
したがって、本発明の目的は、上記の欠点が除去または軽減され、所望の属性の達成が容易になるシステムおよび方法を提供することである。
【発明の概要】
【0005】
一態様では、第1のユーザコンピューティングデバイスと第2のユーザコンピューティングデバイスとの間の鍵生成中の直接の通信を必要としない、第1のユーザコンピューティングデバイスと第2のユーザコンピューティングデバイスとの間の安全な通信のための鍵生成のための方法が提供され、各々がコンピューティングデバイスを含む複数のプライバシープロバイダを使用する鍵生成のための方法であって、第1のユーザコンピューティングデバイスとプライバシープロバイダのうちの1つとで各々共有される関連するインデックスを有する値を含む第1のプライベートテーブルと、第2のユーザコンピューティングデバイスとプライバシープロバイダのうちの1つとで各々共有される関連するインデックスを有する値を含む第2のプライベートテーブルとを使用する鍵生成のための方法であって、方法は、第2のユーザコンピューティングデバイスによって、第2のプライベートテーブル内の値に各々関連付けられたインデックスを受信することであって、それぞれのプライバシープロバイダから受信された各インデックスが、それらの値を共有し、各々のインデックスが、それぞれのプライバシープロバイダによって第1のユーザコンピューティングデバイスから受信された第1のプライベートテーブル内のインデックス付きの値に一致する値に関連付けられている、受信することと、第2のプライベートテーブルのインデックス付き値を組み合わせることによって、安全な通信のための共通鍵を生成することと、を実行することを含む。
【0006】
方法の特定の場合には、共通鍵を生成することは、第2のプライベートテーブルのインデックス付き値に対して排他的論理和(XOR)演算を実行することを含む。
【0007】
方法の別の場合には、方法は、ワンタイムパッド(OTP)暗号化アプローチを使用して、第1のユーザコンピューティングデバイスと第2のユーザコンピューティングデバイスとの間で安全に通信するために、共通鍵を使用することをさらに含んでいる。
【0008】
方法のまた別の場合には、インデックス付き値の数は、第1のユーザコンピューティングデバイスによって第2のユーザコンピューティングデバイスに通信されるべきビットの数を表す。
【0009】
方法のまた別の場合には、第1のプライベートテーブルおよび第2のプライベートテーブルの値は、量子乱数生成器(QRNG)を使用して生成される。
【0010】
方法のまた別の場合には、方法は、共通鍵を生成するために使用された第2のプライベートテーブル内の値を、第2のユーザコンピューティングデバイスによって使用済みとしてマークすることをさらに含んでいる。
【0011】
方法のまた別の場合には、方法は、第2のユーザコンピューティングデバイスによって、共通鍵を生成するために使用された第2のプライベートテーブル内の値の消去を実行することをさらに含んでいる。
【0012】
方法のまた別の場合には、方法は、第2のユーザコンピューティングデバイスによって、認証サービスを使用して共通鍵を認証することをさらに含んでいる。
【0013】
方法のまた別の場合には、方法は、第2のユーザコンピューティングデバイスによって、共通鍵に線形行列を適用することを含むプライバシー増幅を実行することをさらに含んでいる。
【0014】
方法のまた別の場合には、第2のプライベートテーブル内の値に関連付けられたインデックスを受信することが、第1のプライベートテーブルおよび第2のプライベートテーブル内のインデックス付き値に対して、各それぞれのプライバシープロバイダによって排他的論理和(XOR)演算を実行することによって決定された値を受信することを含む。
【0015】
別の態様では、第1のユーザコンピューティングデバイスとの鍵生成中の直接の通信を必要としない、第1のユーザコンピューティングデバイスとの安全な通信のための鍵生成のためのシステムが提供され、システムは、1つ以上のプロセッサと、データストレージとを含み、システムは、各々がコンピューティングデバイスを含む1つ以上のプライバシープロバイダと通信し、第1のプライベートテーブルが、第1のユーザコンピューティングデバイスとプライバシープロバイダのうちの1つとで各々共有される関連するインデックスを有する値を含み、1つ以上のプロセッサは、データストレージデバイスと通信し、第2のプライベートテーブル内の値に各々関連付けられたインデックスを受信するためのテーブルモジュールであって、第2のプライベートテーブルが、プライバシープロバイダのうちの1つと各々共有される関連するインデックスを有する値を含み、それぞれのプライバシープロバイダから受信された各インデックスが、それらの値を共有し、各々のインデックスが、それぞれのプライバシープロバイダによって第1のユーザコンピューティングデバイスから受信された第1のプライベートテーブル内のインデックス付きの値に一致する値に関連付けられている、テーブルモジュールと、第2のプライベートテーブルのインデックス付き値を組み合わせることによって、安全な通信のための共通鍵を生成するための共通鍵モジュールと、を実行するように構成されている。
【0016】
システムの特定の場合には、共通鍵モジュールが、第2のプライベートテーブルのインデックス付き値に対して排他的論理和(XOR)演算を実行することによって、共通鍵を生成する。
【0017】
システムの別の場合には、1つ以上のプロセッサが、ワンタイムパッド(OTP)暗号化アプローチを使用して、第1のユーザコンピューティングデバイスと安全に通信するために共通鍵を使用する通信モジュールを実行するようにさらに構成されている。
【0018】
システムのまた別の場合には、インデックス付き値の数が、第1のユーザコンピューティングデバイスによって通信されるべきビットの数を表す。
【0019】
システムのまた別の場合には、第1のプライベートテーブルおよび第2のプライベートテーブルの値は、量子乱数生成器(QRNG)を使用して生成される。
【0020】
システムのまた別の場合には、テーブルモジュールが、共通鍵を生成するために使用された第2のプライベートテーブル内の値を使用済みとしてマークする。
【0021】
システムのまた別の場合には、1つ以上のプロセッサが、共通鍵を生成するために使用された第2のプライベートテーブル内の値の消去を実行するための消去モジュールを実行するようにさらに構成されている。
【0022】
システムのまた別の場合には、1つ以上のプロセッサが、認証サービスを使用して共通鍵を認証するための認証モジュールを実行するようにさらに構成されている。
【0023】
システムのまた別の場合には、1つ以上のプロセッサが、共通鍵に線形行列を適用することを含むプライバシー増幅を実行するための増幅モジュールを実行するようにさらに構成されている。
【0024】
システムのまた別の場合には、第2のプライベートテーブル内の値に関連付けられたインデックスを受信することが、第1のプライベートテーブルおよび第2のプライベートテーブル内のインデックス付き値に対して、各それぞれのプライバシープロバイダによって排他的論理和(XOR)演算を実行することによって決定された値を受信することを含む。
【0025】
これらおよび他の態様は、本明細書で企図され、説明される。上記の概要は、当業者の読者が以下の詳細な説明を理解するのを助けるために、システムおよび方法の代表的な態様を示す。
【図面の簡単な説明】
【0026】
次に、添付の図面を参照しながら、本発明の一実施形態について、単に例として説明する。
【0027】
【
図1】一実施形態による、安全な通信のための鍵生成のためのコンピューティング環境の概念図である。
【
図2】一実施形態による、安全な通信のための鍵生成のためのシステムの概念図である。
【
図3】一実施形態による、安全な通信のための鍵生成のための方法のフローチャートである。
【
図4】
図2のシステムによる、プライベートテーブルの生成および配布の結果の例示的な表現を示す図である。
【
図5A】
図2のシステムによる、アリスのための鍵再構成の一例を示す図である。
【
図5B】
図2のシステムによる、ボブのための鍵再構成の一例を示す図である。
【
図6】
図2のシステムによる、プロバイダの総数によって正規化された不正プロバイダの最小割合の一例を示すプロットである。
【
図7】
図2のシステムによる、5つの異なるシナリオについての攻撃の確率の一例を示すプロットである。
【
図8】
図2のシステムによる、プライバシープロバイダが失敗する確率の関数として、10のプライバシープロバイダの場合について、攻撃を受ける確率を示すプロットである。
【
図9】
図2のシステムによる、プライバシープロバイダが失敗する確率の関数として、50のプライバシープロバイダの場合について、攻撃を受ける確率を示すプロットである。
【
図10】
図2のシステムによる、プライバシープロバイダが失敗する確率の関数として、4つのプライバシープロバイダの場合について、攻撃を受ける確率を示すプロットである。
【発明を実施するための形態】
【0028】
次に、実施形態について、図を参照しながら説明する。説明を簡単かつ明瞭にするために、適切であると見なされる場合、対応するまたは類似の要素を示すために、図面間で参照番号を繰り返す場合があることを理解されたい。加えて、本明細書に記載されている実施形態の完全な理解を提供するために、多くの特定の詳細が記載されている。しかしながら、これらの特定の詳細なしに本明細書に記載された実施形態を実施できることを、当業者であれば理解されよう。他の事例では、本明細書に記載された実施形態を不明瞭にしないように、周知の方法、手順、および構成要素は詳細には説明されていない。また、本説明は、本明細書に記載された実施形態の範囲を限定するものと見なされないものとする。
【0029】
命令を実行する、本明細書で例示される任意のモジュール、ユニット、コンポーネント、サーバ、コンピュータ、コンピューティングデバイス、メカニズム、端末、または他のデバイスは、記憶媒体、コンピュータ記憶媒体、または、例えば、磁気ディスク、光ディスク、もしくはテープなどのデータ記憶デバイス(取外し可能および/または取外し不可能)などのコンピュータ可読媒体を含み得る、あるいは、そうでなければ、それらへのアクセスを有し得ることも理解されよう。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性の取外し可能および取外し不可能な媒体を含み得る。コンピュータ記憶媒体の例には、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、またはアプリケーション、モジュール、もしくはその両方によってアクセス可能な、所望の情報を記憶するために使用され得る任意の他の媒体がある。任意のそのようなコンピュータ記憶媒体は、デバイスの一部であってもよく、またはそれにアクセス可能もしくは接続可能であってもよい。本明細書で説明される任意のアプリケーションまたはモジュールは、そのようなコンピュータ可読媒体によって記憶されるか、またはそうでなければ保持され、1つ以上のプロセッサによって実行され得る、コンピュータ可読/実行可能命令を使用して実装され得る。
【0030】
以下は、データ通信システム、およびそのようなシステムで利用される暗号化方式に関し、より具体的には、安全な通信のための鍵生成のための方法およびシステムに関する。
【0031】
サイバーセキュリティは、多くの人々によって最も重要な公共資産であると考えられている。多くの暗号化方式は、デジタル通信のために遍在的に使用され、一般に、仮想上の盗聴者または侵入者についてのいくつかの計算上の仮定に基づく。一例は、広く使用されているRSA(Rivest-Shamir-Adleman)プロトコルであり、これは、大きい整数をその2つの素因数に因数分解することが困難であることを前提とする。この分解を所有する敵対者にとって、関係する当事者間の通信は、完全に透明に見えるであろう。1994年に、大きい整数を因数分解するための効率的な量子アルゴリズムが発見され、したがって、RSA方式が破られた。蓋然的に、悪意のある盗聴者は、容易に、現在の暗号化された通信を記憶し、将来、技術の進歩を使用して情報を解読することができる。
【0032】
様々なアプローチでは、2つの通信しているコンピューティングエンティティ(アリスおよびボブと呼ばれる)は、例えば、量子鍵配送(QKD)技術を介して、量子ストリングを事前共有しなければならない。有利には、本実施形態は、いくつかの場合には、QKDを介して事前共有しなければならないこと、および事前共有が必要とする固有のリスクを代用することができ、したがって、アリスとボブとの間で直接に事前共有されるいかなる素材も必要としない。いくつかのアプローチは、認証をサポートし、アリスおよびボブの鍵生成を助けるために認証局(CA)を使用するが、CAを使用するそのようなアプローチは、一般に、潜在的な敵に対するセキュリティを保証するための計算上の仮定に依存するか、または、鍵を生成するためにアリスとボブとの間の事前共有素材を依然として必要とする。
【0033】
一般に、ワンタイムパッド(OTP)アプローチは、盗聴者からの情報理論的安全性を提供する。しかしながら、鍵合意方式において、通信に必要な鍵を配布するために任意の当事者を信頼することは、おそらくばか正直であろう。本開示の実施形態は、とりわけ、この実質的な課題に対処する。本明細書で提供されるデータのセキュリティ化のためのプロトコルは、イブの時間および計算リソースに関係のないプロトコルを使用することによって、データ侵害またはサービス拒否(DoS)攻撃を受ける可能性を大幅に低減することができる。さらに、本明細書で提供されるデータのセキュリティ化のためのプロトコルは、量子コンピューティング攻撃を含むほとんどの計算攻撃に対して安全であると考えることができる。
【0034】
ワンタイムパッド(OTP)アプローチは、一般に、情報理論的安全性を提供する。ワンタイムパッドアプローチの場合、通信している2人の当事者は、2人にのみ知られているランダムな鍵を共有し、したがって、鍵を使用してメッセージを暗号化することによって安全に通信することができる。会話を聞いている任意の盗聴者は、一般に、傍受されたメッセージをランダムノイズから決して区別することができない。したがって、通信は、情報理論的に安全である。しかしながら、実質的な技術的課題は、鍵配布問題として知られる、任意の2人の当事者間で秘密鍵を配布することである。特定のアプローチでは、鍵プロバイダエンティティは、鍵を必要とする任意の2人の当事者に秘密鍵を配布することによって、このサービスを実現することができる。しかしながら、そのようなプロトコルは、そのエンティティが、2人の当事者間のすべての通信にアクセスするために、提供された鍵を容易に使用することができるので、鍵プロバイダエンティティに対する完全な信頼を必要とする。さらに、そのような構成は、単一の障害点をもたらし、これは、ほとんどの実際の状況では特に危険である。
【0035】
最近、ワンタイムパッド暗号化は、ハードドライブおよびコンピュータメモリのコストが指数関数的に低下するため、はるかに安価になってきている。しかしながら、スケーラビリティは、一般に、OTPに対する様々なアプローチの問題である。本実施形態では、OTPの鍵管理層を設けることにより、OTP暗号化を普及させることができ、したがって、スケーラビリティの問題を解決することができる。
【0036】
本開示の実施形態は、鍵配布のためのプロトコルを提供するが、有利には、プロトコルに関与する任意の特定のエージェントまたはエンティティに対する完全な信頼を必要としない。本実施形態は、ピアツーピア暗号化通信に使用することができる情報理論的に安全な移動通信プロトコルを表すプロトコルを提供する。
【0037】
本開示の実施形態は、プライバシープロバイダと呼ばれる、ある数のエンティティまたはパーティを使用する。通信のためにこのプロトコルを使用して任意の2人の当事者間のデータ交換を解読するために、またはサーバに記憶されたプライベートデータにアクセスするために、プライバシープロバイダの大部分を強制または調整することが必要になる。一例では、この可能性は、例えば、スイス、パナマ、キプロス、カナダ、米国、およびドイツなどの異なる国に異なるプライバシープロバイダを配置することによって、実質的に最小限に抑えることができる。このように、政府だけでは、データ開示を事実上法的に実施することはできない。さらなる場合には、開示の場合に、プライバシープロバイダに多額の金銭的損失が課せられる可能性がある。有利には、本開示のプロトコルは、サイバーセキュリティが計算上の仮定に依存しない通信プロトコルを定義し、したがって、(量子コンピュータなどによる)技術の進歩による将来の潜在的な攻撃に対して安全であると考えることができる。
【0038】
本開示のプロトコルでは、通信したい第1の当事者(Aまたはアリスと呼ばれる)および第2の当事者(Bまたはボブと呼ばれる)が与えられると、プライバシープロバイダを集合的に使用して、例えばOTP暗号化を使用して当事者が通信するのに必要な共通鍵を生成することができる。
【0039】
いくつかの場合には、プロトコルの鍵合意フェーズは、プライバシープロバイダの少なくともサブセットがオンラインであることを要求し得るが、当事者AとBとの間の実際の通信は、プライバシープロバイダがオンラインであることが要求されない鍵合意フェーズの後に発生し得る。いくつかの場合には、本明細書で説明されるプロトコルは、互いに決して出会わなかった可能性のある当事者間でプライベートに共有される鍵のネットワークをセットアップするために開始することができ、それらの鍵は、たとえプライバシープロバイダがオフラインであっても、通信するために将来の時点で使用することができる。有利には、各当事者は、限られた数のプライバシープロバイダと通信するだけでよいが、方式を使用する任意の他の当事者との鍵配布を依然として有することができ、事実上二者間鍵交換と同じ結果を得ることができる。
【0040】
有利には、本実施形態のプロトコルは、計算上の仮定なしに情報理論的な安全な通信を達成することができる。また、有利には、本実施形態のプロトコルは、プライバシープロバイダのうちの少なくとも1つが破壊されておらず、障害を受けていないことのみを必要とする。また、有利には、本実施形態のプロトコルは、今日盗まれた暗号化データが将来の攻撃に対して安全であると考えられる可能性が高い場合、将来の証拠とすることができる。このように、本実施形態のプロトコルは、将来の技術の進歩を考慮しても、量子セキュアであると考えることができる。
【0041】
図1は、例示的な実施形態において、コンピューティング環境の図が、第1のユーザコンピューティングデバイス10(「A」、「アリス」、または第1の対応デバイスと呼ばれる)が通信リンクのネットワーク20によって第2のユーザコンピューティングデバイス12(「B」、「ボブ」、または第2の対応デバイスと呼ばれる)に相互接続されていることを含むことができることを示す。例示的な環境はまた、ネットワーク20と通信する1つ以上のプライバシープロバイダ15を含む。ネットワークは、任意の適切な通信アーキテクチャ、例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、モバイル通信構造などとすることができる。通信リンクは、任意の適切な通信アプローチ、例えば、固定電話回線、ワイヤレス接続、近距離通信接続、または他の形態の通信であってもよい。デバイス10、12およびプライバシープロバイダ15は、任意の適切なタイプのコンピューティングデバイス、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、スマートフォン、ウェアラブルデバイス、IOT(Internet-of-things)デバイス、サーバ、分散コンピューティングシステム、専用ハードウェアなどの上で実行され得る。
【0042】
図2を参照すると、一実施形態による、安全な通信のための鍵生成のためのシステム150の図が示されている。この実施形態では、システム150は、単一のコンピューティングデバイス10、12上で実行される。さらなる実施形態では、システム150の機能は、複数のデバイス10、12、および/またはプライバシープロバイダ15上で実行することができる。他の実施形態では、システム150のコンポーネントは、例えば、クラウドコンピューティングリソースを使用して、ローカルまたはリモートに分散することができる2つ以上のコンピュータシステム間で分散することができる。
【0043】
図2は、システム150の一実施形態の様々な物理的および論理的構成要素を示す。図示のように、システム150は、中央処理ユニット(「CPU」)152(1つ以上のプロセッサを含む)、ランダムアクセスメモリ(「RAM」)154、ユーザインターフェース156、ネットワークインターフェース160、不揮発性ストレージ162、およびCPU152が他の構成要素と通信することを可能にするローカルバス164を含む、いくつかの物理的および論理的構成要素を有する。CPU152は、以下でより詳細に説明するように、オペレーティングシステムおよび様々なモジュールを実行する。RAM154は、CPU152に比較的応答性の高い揮発性ストレージを提供する。ユーザインターフェース156は、管理者またはユーザが、例えばマウスまたはタッチスクリーンなどの入力デバイスを介して入力を提供することを可能にする。また、ユーザインターフェース156は、例えばディスプレイなどの出力デバイスに情報を出力する。ネットワークインターフェース160は、システム150から遠隔に位置するネットワーク20または他のコンピューティングデバイスおよびサーバとの通信を可能にする。不揮発性ストレージ162は、オペレーティングシステムおよびモジュールを実施するためのコンピュータ実行可能命令、ならびにこれらのサービスによって使用される任意のデータを含む、プログラムおよびオペレーティングシステムを記憶する。追加の記憶されたデータは、データベース166に記憶することができる。システム150の動作中、オペレーティングシステム、モジュール、および関連データを不揮発性ストレージ162から取り出し、RAM154に配置して実行を容易にすることができる。
【0044】
一実施形態では、システム150は、テーブルモジュール172、共通鍵モジュール174、認証モジュール176、増幅モジュール178、通信モジュール180、および消去モジュール182を含む、1つ以上のプロセッサ152上で実行されるいくつかの概念モジュールをさらに含む。
【0045】
有利には、いくつかの場合には、重要な暗号情報、例えば、プレインストールされた鍵および任意の追加の生成された鍵を含むハードウェアを、本明細書で説明されるプロトコルのステップを実行するハードウェアから物理的に分離することができる。例えば、ハードウェアセキュリティモジュール(HSM)は、鍵素材を記憶するため、および/または安全な暗号化動作を実行するために使用され得る。このようにして、サイバーセキュリティの物理層は、暗号化されたデータへのアクセスが最終ユーザ10、12に制限されることを保証することができる。
【0046】
本開示の実施形態では、1つ以上の鍵50は、ユーザ「A」によって記憶することができ、1つ以上の鍵52は、ユーザ「B」によって記憶することができる。いくつかの場合には、これらの鍵は、コンピューティングデバイス10、12自体、またはそれぞれの対応デバイスと一緒に配置された別個のデバイスにインストールすることができ、各デバイスから/に行われる任意の通信のためのワンタイムパッド(OTP)暗号化方式を可能にする。いくつかの場合には、大量の鍵は、それぞれのデバイスのユーザによって受信される前に、デバイスと共に記憶され得る。
【0047】
システム150は、乱数生成器(RNG)を使用して、複数の乱数を生成することができる。いくつかの場合には、RNGは、自然入力、例えば光に基づく量子乱数生成器(QRNG)とすることができる。一部の盗聴者は、暗号化を破るために擬似RNGの欠陥を見つけようと試みる。したがって、QRNGを使用することは、そのようなクラスの攻撃に対する防御を作り出すことができる。一例では、スマートフォンのカメラを使用してQRNGを実装することが可能であり、1Mbpsよりも大きいランダムビットレートを生成することができることが決定されている。
【0048】
一実施形態では、プロトコルは、1)鍵配布フェーズ、および2)鍵合意フェーズの2つのフェーズを含む。プロトコルの終わりに、2つのデバイス、アリス10およびボブ12は、次いで、例えばワンタイムパッド(OTP)を介した安全な通信のために使用することができる共通鍵を共有する。鍵の生成およびプライバシープロバイダからユーザへの鍵の物理的配布は、プロトコルの第1のフェーズ、すなわち鍵配布フェーズと呼ばれる。
【0049】
鍵配布フェーズでは、通信ネットワーク20に接続された2つのデバイス、アリス10およびボブ12を考える。また、n個のプライバシープロバイダ15P1,P2,…,Pnのセットを考える。アリスのデバイスは、n個の鍵のテーブルK1,K2,…,Knを備えており、ここで、Ki={0,1}lであり、lは、非常に大きい。いくつかの場合には、これらの鍵のテーブルは、アリスのデバイスにアクセスする前に、アリスのデバイスに事前にインストールすることができる。テーブルKiは、構築時にi番目のプライバシープロバイダPiによって提供され、このようにして、アリスおよびPiは、Kiを所有する唯一のデバイスである。この厳密な二重所有は、すべての鍵テーブルについて当てはまる。ほとんどの場合、鍵の各テーブルは、それぞれのユーザおよびプライバシープロバイダのうちの1つのみと共有される。ボブについても同様に、n個のプライバシープロバイダとn個の鍵のテーブルを共有する。PiおよびBによってのみ知られている鍵のテーブルをH1,H2,…,Hnと呼び、ここで、Hi={0,1}lであり、lは、非常に大きい。特に、テーブルHiは、構築時にi番目のプライバシープロバイダPiによってボブに提供された。このようにして、ボブおよびPiは、Hiを所有する唯一のデバイスである。Kiのj番目のビットをK(i,j)とする(同様に、Hiのj番目のビットをH(i,j)とする。本明細書で説明するように、インデックスは、鍵のテーブル内の1つの値に関連付けられる。例えば、ボブの場合、インデックス(3;28)は、ボブとP3との間で一意に共有されるテーブルH3の28番目の値である対応する値H3,28に割り当てられる。値H3,28は、0または1のいずれかであり得る。本開示は、一般に、関連する値として単一のビットを指す各インデックスを指すが、値は、例えば、ビット、バイト、数字または一連の数字、英数字または一連の数字など、任意の適切な単位とすることができることを理解されたい。
【0050】
アリスによって保持される鍵のテーブルK1,K2,…,Knは、ボブによって保持される鍵のテーブルH1,H2,…,Hnとは異なることが許容される。これは、多くのユーザ(例えば、1000万人または100万人のユーザ)を有するネットワーク設定において、各ユーザがいくつかの鍵テーブルを他のすべてのユーザと共有することができない場合に有利である。鍵のテーブルが異なることを可能にすることによって、本実施形態のアプローチは、ネットワーク設定において高度にスケーラブルである。
【0051】
プロトコルの第2のフェーズ、鍵合意フェーズでは、アリスおよびボブは、いくつかの場合、任意の単一のデータプロバイダがkABの値にアクセスすることなく、互いの間で共通鍵kABの共有を達成することを望む。一実施形態では、プロトコルのこの第2のフェーズは、以下の4つの部分、「認証」、「鍵配布」、「鍵認証制御」および「プライバシー増幅」を含むことができる。
【0052】
第2のフェーズの結果として、アリス10およびボブ12の2人の当事者は、次いで、即時または将来のある時点での通信に使用することができる秘密の共通鍵を共有する。有利には、第2のフェーズの完了後、プライバシープロバイダは、アリスおよびボブが将来通信するために、オンラインである必要はなく、またはアクセス可能である必要もない。いくつかの場合には、アリスとボブとの間の将来の通信は、共有鍵を用いたOTPアプローチを使用することを含むことができる。いくつかの場合には、通信後、アリスおよびボブは、プロトコルの以前のフェーズで使用された情報を、プライバシープロバイダと共有されたそれらのテーブルから消去することができる。これは、鍵消去フェーズと呼ぶことができる。
【0053】
図3は、一実施形態による、安全な通信のための鍵生成のための方法300のフロー図である。
【0054】
ブロック302において、例えば、鍵配布フェーズの一部として、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方のテーブルモジュール172は、それぞれの鍵のプライベートテーブルを受信する。各プライベートテーブルは、プライバシープロバイダのそれぞれ1つから受信され、ユーザとプライバシープロバイダの各ペアに対して一意である。これらのプライベートテーブルは、安全な方法で配布される。いくつかの場合には、各プロバイダは、少なくともユーザの数(またはそのサブセット)に等しい数のテーブルを維持する必要があり、各ユーザは、プライバシープロバイダの数(またはそのサブセット)に等しい数のテーブルを維持する必要がある。いくつかの場合には、プライベートテーブル内の鍵がすべて使用されると、新しいプライベートテーブルを対応するプライバシープロバイダから受信する必要がある。したがって、アリスは、プライバシープロバイダP1からテーブルK1を、プライバシープロバイダP2からK2をなど、以下同様に受信する。説明を明確にするために、これらのテーブルは、次元n×lA(ここで、nは、プライバシープロバイダの数であり、lAは、各テーブルのサイズを表す非常に多数である)と、{0;1}内の要素とを有する行列Kに編成することができる。行列Hは、ボブとプライバシープロバイダとの間で共有される行列であり、すなわち、(必ずしもlに等しくない長さlsの)第1の行H1は、ボブとP1との間で共有され、第2の行H2は、ボブとP2との間で共有され、以下同様である。一実施形態では、テーブルKiは長さlA,iを有し、テーブルHiは長さlS,jを有する。説明を簡単にするために、各iおよびjについて、および何らかのl>0について、lA,i=lS,j=lである。
【0055】
図4は、プライベートテーブルの生成および配布の結果の一例の表現を示す。この例では、アリスおよびボブは、プライバシープロバイダの各々とビットの順序付けられたテーブルを共有し、各プロバイダは、ユーザのテーブルKおよびHのそれぞれの部分のみを知っている。
【0056】
いくつかの場合には、プライベートテーブルは、行列形式でメモリ内に編成することができる。一例では、テーブルの第1の行の情報は、それぞれのユーザとプライバシープロバイダのうちの1つとの間でのみ共有される。ほとんどの場合、異なるユーザは、同じプライバシープロバイダと共有される異なる一連の2進数を有する。このようにして、各ユーザは、偶発的に同様のエントリを除いて、他のユーザとは実質的に異なるプライベートテーブルを有する。いくつかの場合には、一連の2進数は、整数によってインデックス付けすることができ、これらのインデックスは、本明細書で説明するように、共通鍵を構築するために鍵合意フェーズで使用することができる。このようにして、共通鍵は、それぞれのユーザによってのみ知られる。一実施形態では、各プライバシープロバイダは、各ユーザのプライベートテーブルの各々に、プライベートテーブルに含まれる2進数のサブグループを提供する。いくつかの場合、2進数は、QRNGによって生成することができる。例えば、プライベートテーブルの第1の行は、第1のプライバシープロバイダによって提供することができ、プライベートテーブルの第2の行は、第2のプライバシープロバイダによって提供することができ、以下同様である。いくつかの場合には、プライベートテーブルは、擬似RNG、物理RNG、またはQRNGによって生成され、物理デバイス上に記憶され、トラステッドエージェントによってユーザに配布され得る。いくつかの場合には、プライベートテーブルは、ハードウェアセキュリティモジュール(HSM)に記憶されてもよい。
【0057】
いくつかの場合には、アリスおよびボブは、互いに、および/またはプライバシープロバイダに対して認証することができる。例えば、Kerberos Network Authentication Serviceなど、任意の適切な認証プロトコルを使用することができる。いくつかの場合には、認証プロトコルは、安全な接続を介して通信されると仮定することができる。有利には、鍵合意フェーズが完了すると、アリス10およびボブ12は、将来のいつでも通信することができ、それらの通信は、たとえ将来のプロトコルが以前の認証プロトコルを破ることがわかる場合であっても、安全なままである。
【0058】
鍵合意フェーズでは、ブロック304で、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方上の共通鍵モジュール174が、ネットワークインターフェース160を介したプライバシープロバイダとの通信を介して、共通鍵を生成する。このようにして、以前に通信したことがなく、いかなる初期情報も共有しない可能性が高いアリスおよびボブは、プライバシープロバイダのサポートを使用して、共通鍵を生成するために任意の鍵パラメータを直接通信することなく、共通鍵kを構築する。この共通鍵は、アリスとボブとの間でプライベートに共有され、2つ以上のプライバシープロバイダが使用される場合、どのプライバシープロバイダにも知られていないままである。ほとんどの場合、認証および鍵合意は、認証されたチャネルを介して実行できると仮定することができる。一実施形態では、共通鍵の生成は、以下を含むことができる。
・アリスは、n個のランダムなインデックス付けグループX
i
Aを生成する。各グループX
i
Aは、サイズm<lの整数の集合である。
・アリスは、(例えば、公衆通信チャネル上で)各インデックス付けグループX
i
AをそれぞれのプライバシープロバイダP
iに送信する。通信は、テーブルに記憶された値を見つけるために必要なシリアルインデックス番号のみを含み、値自体について取得可能な情報はないので、盗聴者は、これらの通信を聞くことができる。これは、インデックスとそれに関連する2進値との間に相関がないからである。
・アリスは、自分が生成したランダムインデックスに関連するビットを記録する。このようにして、アリスは、行列Y
Aを構築し、そのエントリ
【数1】
は、その鍵テーブル内のK
i、位置
【数2】
におけるビットを表す。
【数3】
さらに、アリスは、
【数4】
を使用済みとしてマークする。
・アリスは、Y
Aの行のXORによって共通鍵k
Aを作成する。この鍵は長さmを有する。
・各プライバシープロバイダP
iは、アリスからそれぞれのセットX
i
Aを受信し、位置がX
i
Aで指定されている、K
iのインデックスを、使用済みとしてマークする。
・各プライバシープロバイダP
iは、アリスによって送信されたインデックスによって指定されたビットを、H
iにおける等価なビットに一致させる。これを行うことによって、各プライバシープロバイダP
iは、プライバシープロバイダが例えばパブリックチャネルを介してボブに送信するランダムインデックスX
i
Bのセットを作成する。したがって、各プライバシープロバイダによって作成されるインデックスは、次のプロパティを有する。
【数5】
・ボブは、それぞれのセットX
i
Bを受信し、行列Y
Bを構築し、ここで、
【数6】
は
【数7】
である。さらに、ボブは、X
i
Bに現れるインデックスを有するH
iにおけるすべてのビットを、使用済みとしてマークする。
・ボブは、Y
Bの行のXORによって共通鍵k
Bを作成する。この鍵は、長さmを有し、アリスの共通鍵k
Aに等しい。
【0059】
別の実施形態では、共通鍵の生成は、以下を含むことができる。
・アリスは、mビットと呼ばれる、ボブと共有したい一定量のビットを決定する。
・アリスは、使用したいプライベートテーブルの鍵値を決定する。いくつかの場合には、アリスは、自分のプライベートテーブルの各行を左から右の順に使用し得る。アリスは、最初の未使用ビットの位置rを追跡する(すなわち、r番目のビットは、アリスのリスト内の最初の未使用ビットである)。
・アリスは、ほとんどの場合、認証されたチャネルを介して、すべてのプライバシープロバイダに、r、mの値、およびボブの識別をブロードキャストする。
・各プライバシープロバイダP
iは、r、mの値、およびアリスの識別をボブに中継する。
・ボブは、使用したいプライベートテーブルの鍵値を決定する。いくつかの場合には、ボブは、自分のプライベートテーブルの各行を左から右に使用し得る。ボブは、最初の未使用ビットの位置sを追跡する。
・ボブは、すべてのプライバシープロバイダにsの値をブロードキャストする。
・各プライバシープロバイダP
iは、j=0,1,2,..m-1の場合、L(
i,r+j,s+j)=K(
i,r+j) XOR H
(i,s+j)の値、ならびにアリスおよびボブの識別を、第1のユーザであるアリスにブロードキャストする。
・アリスは、各プライバシープロバイダP
iに対して、上記の通信の受信を確認する。
・K
(i,r+j)の値およびL
(i,r+j,s+j)の受信された値を使用して、アリスは、各j=0,1,2,…,m-1についてパリティビットN
(l,r+j,s+j)=L
(i,r+j,s+j) XOR K
(i,r+j)をプライベートに決定する。P
iがプロトコルを実行する際に正直であると仮定すると、N
(l,r+j,s+j)=L
(i,r+j,s+j) XOR K
(i,r+j)=K
(i,r+j) XOR H
(i,s+j) XOR K
(i,r+j)=H
(i,s+j)となる。したがって、アリスおよびボブは、次に、コンポーネントキーH
(i,s+j)を互いに共有する。i番目のプライバシープロバイダP
i、アリス、およびボブのみが、H
(i,s+j)の知識を持っていることに留意されたい。
・いくつかの場合には、アリスおよびボブは、本明細書で説明するように、鍵認証を使用して、互いに同じコンポーネントキーH
(i,s+j)を共有することを検証することができる。
・アリスおよびボブの各々は、コンポーネントキーのXORをとって、K
ABまたはK
commonと呼ばれる共通鍵を生成し、そのj番目のビットで、
【数8】
である。
・いくつかの場合には、本明細書で説明するように、アリスおよびボブは、ストリングK上でプライバシー増幅PAを実行して、盗聴者がいかなる情報も持たない安全な鍵K
common=PA(K)を抽出することができる。いくつかの場合には、PAは、線形行列、例えば、テプリッツ行列Tを適用することによって実行することができる。
・いくつかの場合には、アリスおよびボブが、共通鍵K
commonの生成に成功したことを互いに確認すると、各プライバシープロバイダP
iに、j=0,1,2,..m-1の場合、使用済みの鍵素材K
(i,r+j)およびH
(i,s+j)を消去するように指示することができる。いくつかの場合には、アリスがボブと鍵を共有しているという事実の削除を指示することもできる。これは、プライバシープロバイダP
iに侵入する将来の盗聴者が、もはや使用済みの鍵素材を見つけることができないことを確実にすることができる。
・いくつかの場合には、アリスは、j=0,1,2,..m-1の場合、その使用済みの鍵素材K
(i,r+j)を消去することができる。同様に、ボブは、j=0,1,2,..m-1]の場合、その使用済みの鍵素材H
(i,s+j)を消去することができる。
・アリスは、自分の鍵テーブル内の最初の未使用ビットの位置をr+mに更新する。同様に、ボブは、自分の最初の未使用ビットの位置をs+mに更新する。
【0060】
鍵合意フェーズの最後に、アリスおよびボブは、直ちに、または将来のアプリケーションで使用することができる共通の安全な鍵Kcommonを共有することに留意されたい。例えば、これは、光ファイバ、携帯電話、またはインターネットなどの汎用通信チャネルにおけるワンタイムパッドアプローチを介した通信における情報理論的セキュリティを達成するために使用することができる。
【0061】
上記の実施形態は、特定の通信および決定を説明しているが、他の適切な変形形態を使用することができる。上記の実施形態では、アリスは、左から右への鍵のプライベートテーブル内のビットを使用する。別の実施形態では、アリスは、使用する各ビットを選択する前に、ランダム置換を適用してもよい。より具体的には、アリスがmビットをボブに送信したい場合、アリスは、長さmの鍵、すなわち長さmの一連の純粋にランダムな2進数を必要とすることに留意されたい。この鍵を構築するために、アリスは、データプロバイダごとに1つずつ、n個の一連のインデックスを決定することができ、アリスは、自分のテーブル内の値を調べることによって2進数に再マッピングすることができる。
【0062】
一例では、アリスは、第1のプライバシープロバイダの番号34、45、および104を選ぶことができる。次いで、アリスは、テーブルの第1の行(一例では、第1のプライバシープロバイダとのみ共有される行)を調べ、位置34、45、および104の値を調べることができる。アリスが1、1、0を見つけたと仮定する。アリスは、誰とも2進値を共有しないが、代わりに、第1のプライバシープロバイダと値34、45、および104を共有する。第1のプライバシープロバイダは、数字34、45、および104を受信し、アリスと同じシリーズ(1,1,0)を再構成することができる。アリスは、複数のプライバシープロバイダでこれらのステップを繰り返すことができる。このようにして、アリスは、n個の一連の2進数(最初は1,1,0である)を有し、各シリーズは、1つのプライバシープロバイダのみとしか共有されない。誰でも、バイナリ値自体に関するいかなる情報も得ることなく、アリスとプロバイダとの間の会話を聞くことができる。テーブル上の情報はアリスおよびそれぞれのプライバシープロバイダにしか利用できないので、例えば、34、45、104を聞いている人は誰も、シリーズ(1,1,0)に関する情報をまったく持っていない。アリスは、長さm(ここでの例では、mは3に等しい)のn個のシリーズをすべてXORすることができ、自分のみが知っている長さmの別のシリーズを得ることができる。このシリーズを再構築するために、侵入者は、XOR演算に入るすべてのシリーズを必要とする。したがって、プライバシープロバイダは、シリーズを再構築するために、すべての協力を必要とすることになるが、これは、可能性が非常に低い。XOR演算の結果として得られるシリーズは、例えば、OTPを使用する通信のためにボブおよびアリスによって使用され得る秘密の共通鍵である。
【0063】
上記の例では、ボブが共通鍵に到達するために、各プライバシープロバイダは、関連するシリーズをボブに通信することができる。この例では、第1のプライバシープロバイダは、シリーズ1、1、0(すなわち、秘密鍵を再構築するためにアリスによって使用される第1のシリーズの2進数)をボブに通信する。シリーズ(1,1,0)をボブに通信するために、第1のプライバシープロバイダは、(1,1,0)に再マップするボブと共有されるテーブルから3つのインデックスを選ぶことができ、いくつかの場合には、インデックスは、(1,1,0)に再マップする限りランダムに選択することができる。例えば、ボブのテーブルの第1の行、この例では、第1のプライバシープロバイダと共有される一連の2進数において、位置78、98、132に、それぞれ2進数1、1、0があると仮定する。第1のプライバシープロバイダは、78、98、132をボブに通信する。この会話を聞いている盗聴者は、任意のさらなる情報を再構築することができない。しかしながら、ボブは、プライバシープロバイダから順序付けられたインデックスのセット(すなわち、78、98、132)を受信すると、自分のプライベートテーブルのそれぞれの行内の2進数を調べ、したがって、第1の行内で、第1のプライバシープロバイダによって指定された位置を調べることによって、シリーズ1、1、0を再構築することができる。上記のステップは、すべてのプライバシープロバイダによって繰り返される。したがって、ボブは、行列n×mを有することに到達し、ここで、nはプライバシープロバイダの数であり、mは秘密kの長さである。ボブは、長さmのn個のシリーズのすべてをXORして、共通鍵Kcommonに到達することができる。
【0064】
別の例では、アリスは、n行(この例では、nは、プライバシープロバイダの数でもある)と、かなり多数の列とを有するテーブルを有することができる。この例示的な例の目的のために、列の数は、簡略化のために10に等しい。第1の行は、(1 0 0 1 1 0 1 0 0 1)である。この一連の2進数は、アリスおよび第1のプライバシープロバイダによってのみ知られている。対照的に、ボブのテーブルの最初の行は、(0 0 0 1 1 0 1 1 0 1)とすることができる。この一連の2進数は、ボブおよび第1のプライバシープロバイダによってのみ知られている。アリスは、シリーズ(2,5,1)を第1のプライバシープロバイダに送信することができ、シリーズは、アリスがテーブルのインデックスとしてシリーズによって示される位置を(2,5,1)->(0,1,1)のように2進数に変換することによって決定される。アリスと第1のプライバシープロバイダのみがバイナリシリーズを知っているように、第1のプライバシープロバイダがそのような変換を実行することもできる。次いで、第1のプライバシープロバイダは、同じシリーズ(0,1,1)をボブに通信することができる。そうするために、第1のプライバシープロバイダは、(0,1,1)に再マッピングされる、ボブと共有されるシリーズ内のランダムインデックスを選ぶことができる。この例では、(3,4,5)、(9,10,8)、もしくは(6,10,8)のいずれか、または(0,1,1)に再マッピングされる任意の他の一連のインデックスを、ボブに通信することができる。例えば、第1のプライバシープロバイダがボブに(9,10,8)を送信する場合、ボブは、アリス(0,1,1)と同じバイナリシーケンスに到達するために、自分のプライベートテーブル内のこれらのインデックスを調べることができる。アリスおよびボブは、n個のプライバシープロバイダのすべてで上記のステップを実行することができ、その結果、各々、n個の一連の2進数を有することになる。これらの一連の数に対してXOR演算を各々適用する場合、再構築することができるだけの秘密共通鍵を構築することができる。これらのステップは、ボブからアリスへの通信のために、逆に実行することができる。悪意のある侵入者であるイブが秘密鍵を再構築することを望んでいると仮定する。イブがアリスとボブとプライバシープロバイダとの間のすべての会話を聞く場合でさえ、2進数がランダムに生成されるので、イブは、各インデックスを再マッピングされた2進数に変換する方法がない(上記の例では、イブは(2,5,1)を(0,1,1)にマッピングすることができない)ので、秘密鍵を再構築することは不可能である。ここで、プライバシープロバイダが秘密鍵を再構築することを望んでいると仮定する。各プライバシープロバイダは、XOR演算子においてアリスおよびボブによって使用するシリーズの自分の部分のみを知っているので、XORの最終結果を予測することは不可能であり、したがって、鍵は秘密のままであることが可能である。
【0065】
図5Aおよび
図5Bは、それぞれ、アリスおよびボブのための鍵生成の別の例示的な例を示す。アリスは、3つのプライバシープロバイダP
1、P
2、P
3との交換を開始する。アリスから3つのプライバシープロバイダへの公開メッセージは、それぞれ[3,5,6]、[1,2,6]、および[3,4,5]である。この例では、n=3の場合、X
1
A=[3,5,6]、X
2
A=[1,2,6]、およびX
3
A=[3,4,5]である。これらのシリアル番号のセットは、それぞれのテーブル内で、鍵値[1,1,0]、[0,1,1]、[1,0,1]と関連付けられる。次いで、プライバシープロバイダは、シリアル番号がボブのテーブル内の同じ鍵値を再現するインデックスのセットであるように、ボブのシリアル番号を生成する。多くの可能性の中で、図中のプライバシープロバイダによって送信されるものは、[2,3,4]、[4,5,6]、および[1,4,5]である。この例では、n=3の場合、X
1
B=[2,3,4]、X
2
B=[4,5,6]、およびX
3
B=[1,4,5]である。このフェーズの終わりに、通信に使用されるすべてのビットは、ビットが再び使用されないように、使用済みとしてマークされる。
【0066】
有利には、本実施形態のアプローチは、通信のタイプに依存せず、したがって、ビデオ通話、音声通話、電子メール、メッセージ、およびアリスがボブに送信したい任意の種類のデータに使用することができる。また、有利には、アリスは、ランタイム中にこの量を調整することができるので、ボブに送信されるビットの量を事前に知っている必要はない。
【0067】
別の実施形態では、各プライバシープロバイダP
iに暗号化に使用される鍵を選択させることによって、ユーザレベルでのRNGは要求されなくてもよい。このようにして、アリスがボブとの通信を開始すると、両方の当事者は、同じ2進列にローカルにマッピングすることができるインデックスのセットを即座に受信し、インデックスは、同じデータプライバシープロバイダについてアリスとボブとでは異なる。異なるプライバシープロバイダによって取得された異なるストリングは、本明細書で説明するように、アリスとボブとで等しい共通鍵に組み合わされる。この実施形態では、共通鍵の生成は、以下を含むことができる。
・アリスは、ボブに通信することを望むある量のビットを決定する。アリスがmビットを送信する必要がある場合、アリスは、この情報(ビット数mおよび受信側ボブ)を各プライバシープロバイダP
iに送信する。
・各プライバシープロバイダP
iは、例えばQRNGを使用して、長さmのランダムな2進列s
i∈{0;1}
mを生成する。各プライバシープロバイダは、(i)使用されたことがない、および(ii)正確にs
iに再マップする、テーブルK
i(アリスと共有される)内のm個のインデックスをマッチングする。このインデックスのセットは、k
iと呼ぶことができる。同様に、各プライバシープロバイダは、ボブについてのインデックスのセットh
iを生成することができる。各プライバシープロバイダは、この通信ラウンドで使用されるインデックスを使用済みとしてマークする。
・各プライバシープロバイダは、パブリックチャネルk
iを介してアリスおよびh
iをボブに通信する。有利には、これらのインデックスは、鍵を再構成するためのシリアル番号を含むので、それらは、実際の鍵についての情報を有さず、したがって、盗聴者は、有用な情報を得ることなく、この交換を聞くことができる。
・アリスは、各プライバシープロバイダによって送信されたインデックスを共有テーブルにマッチングすることによって、行列Y
Aを作成する。Y
Aは、n行およびm列を有する行列であり、ここで、要素
【数9】
は、
【数10】
に等しい。
・アリスは、Y
Aの行のXORによって共通鍵k
Aを生成し、ここで、鍵は長さmを有する。
・アリスは、この通信ラウンドで使用されるインデックスを使用済みとしてマークする。
・ボブは、各プライバシープロバイダによって送信されたインデックスを共有テーブルにマッチングすることによって、行列Y
Bを作成する。Y
Aは、n行およびm列を有する行列であり、ここで、要素
【数11】
は、
【数12】
に等しい。
・ボブは、Y
Bの行のXORによって共通鍵k
Bを生成し、ここで、鍵は長さmを有する。
・ボブは、この通信ラウンドで使用されるインデックスを使用済みとしてマークする。
【0068】
別の実施形態では、各プライバシープロバイダPiに暗号化に使用される鍵を選択させることによって、ユーザレベルでのRNGは要求されなくてもよい。このようにして、アリスがボブと共有される秘密鍵を再構築する必要があるとき、ボブは、秘密鍵を生成するために使用することができる値のセットを各プライバシープロバイダから直ちに受信する。この実施形態では、共通鍵の生成は、以下を含むことができる。
・アリスは、ボブに通信することを望むある量のビットを決定する。アリスがmビットを送信する必要がある場合、アリスは、この情報(ビット数mおよび受信側ボブ)を各プライバシープロバイダPiに送信する。
・アリスのテーブルKi(プライバシープロバイダPiと共有される)の各々について、アリスは、最初のm個の未使用ビットを考慮する。テーブルKi内の最後に使用されたビットがインデックスjにあると仮定すると、アリスは、一連のビット(YA
i=Kij+1,Kij+2,…,Kij+m)を考慮する。アリスは、それらのビットを使用済みとしてマークする。アリスは、i番目の行がYA
iである行列YAを構築する。
・各プライバシープロバイダPiは、一連のビットNi=(Kij+1 xor Hi,s+1,Kij+2 xor Hi,s+2,…,Kij+m xor Hi,s+m)を計算し、ここで、jは、テーブルKi内の最後に使用されたビットであり、sは、テーブルHi内の最後に使用されたビットである。各プライバシープロバイダPiは、Niを構築するために使用されるビットを使用済みとしてマークする。
・各プライバシープロバイダは、パブリックチャネルNiを介してボブと通信する。有利には、これらのインデックスは、ランダムビット上のシリーズ上の排他的論理和演算子を含むので、それらは、実際の鍵についての情報を有さず、したがって、盗聴者は、有用な情報を得ることなく、この交換を聞くことができる。
・ボブは、i番目の行がシリーズである行列YBを作成する。YB
i=(Ni,1 xor Hi,s+1,Ni,2 xor Hi,s+2,…,Ni,m xor Hi,s+m)=YA
i。ボブは、YBの構築に使用されたすべてのビットを使用済みとしてマークする。
・アリスは、YAの行のXORによって共通鍵kAを生成し、ここで、鍵は長さmを有する。
・ボブは、YBの行のXORによって共通鍵kBを生成し、ここで、鍵は長さmを有する。
【0069】
共通鍵を生成するための上記の実施形態は、ユーザレベルで乱数生成(特にQRNG)を必要とせず、ネットワークを介して交換される同じ数のビットを含むので、ユーザデバイスにとって計算および/またはリソース集約がはるかに少ない。
【0070】
アリスとボブは両方とも、それぞれ、互いに暗号化された通信のために使用することができる鍵kAおよびkBを有する。いくつかの場合には、ブロック306において、通信のために共通鍵を使用する前に、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方の認証モジュール176は、鍵の真正性の妥当性検査を行う、すなわち、kA=kBを検証することができる。鍵検証のための任意の適切なアプローチを使用することができる。例示的なアプローチでは、アリスおよびボブは、最終鍵kAおよびkBを認証することができる。この例のアプローチでは、
・アリスは、ハッシュ関数Hを使用してsA=H(kA)を計算し、ここで、sAは、長さLの2進列である。ハッシュ関数の選択は、この関数のコストおよびセキュリティに関する要件が、使用する状況によって大きく変わる可能性があるので、アプリケーション固有である可能性がある。一例として、SHS-256ハッシュ関数を使用することができる。別の例は、テプリッツ行列Tのような2つのユニバーサルハッシュ関数のセットとすることができる。
・アリスは、j∈1,2,…,Lで、ある数のペア(j;sA;j)をブロードキャストする。
・ボブは、同じハッシュ関数Hを使用してsB=H(kB)を計算し、ここで、sBは、長さLの2進列である。
・ボブは、Aによってブロードキャストされたペア(j;sA;j)を収集し、アリスによって通信されたすべてのペアについて、sA;j=sB;jかどうかを判定する。
【0071】
鍵の妥当性検査のための別の例示的なアプローチでは、鍵の妥当性検査は、i=1,2,.・・・,mの場合、鍵コンポーネントY
i
AおよびY
i
Bの各々に対して実行することができる。このアプローチは、一般に、アリスとボブとの間で交換されるより多くのビット、したがって、より高い通信コストを伴うが、ユーザが、サービス拒否攻撃を潜在的に実行するプライバシープロバイダを識別し、除外することを可能にする。この例のアプローチでは、
・アリスは、ハッシュ関数Hを使用してs
i,A=HY
i
Aを計算し、ここで、s
i,Aは、長さLの2進列であり、Y
i
Aは、鍵グループ内のK
i、位置X
i
Aにおけるビットを表す。
・アリスは、ペア{i;s
i,A}をボブに送信する。
・ボブは、同じハッシュ関数Hを使用してs
i,B=H(Y
i
B)を計算し、ここで、s
i,Bは、長さLの2進列であり、Y
i
Bは、
【数13】
に等しい。
・ボブは、アリスによってブロードキャストされたペア{i;s
i,A}を収集し、s
i,A=s
i,Bかどうかを判定する。ボブは、この結果をアリスに通信する。
・以上のステップを、各iについて繰り返す。最後に、アリスおよびボブは、s
i,A=s
i,Bかどうかのテストに合格した{1,2,…,m}のインデックスの共有リストを有する。
・アリスおよびボブは、インデックスの共通セットを使用して、テストに合格した行のY
AおよびY
Bに対してそれぞれ実行されたXOR演算によって、鍵k
Aおよびk
Bを再構築する。
【0072】
鍵の妥当性検査に対する上記のアプローチでは、鍵kに関するいくつかの情報を開示することができる。第1のアプローチでは、より多くの情報が開示されるが、鍵の真正性はより信頼性が高くなる大きいLを有することと、より少ない情報が開示されるが、鍵の真正性はあまり確実ではない小さいLを有することとの間にトレードオフがある。第2のアプローチでは、実質的な利点は、アリスおよびボブが、DoS攻撃を実行しているプライバシープロバイダを識別する能力である。別のアプローチでは、アリスおよびボブは、kA≠kBが許容可能なしきい値よりも小さい確率まで、kAおよびkBのビットのいくつかをランダムにチェックすることができる。
【0073】
いくつかの場合には、ブロック308において、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方の増幅モジュール178は、プライバシー増幅を実行することができる。鍵の妥当性検査中、アリスおよびボブは、鍵を再構築する試みにおいてイブが蓄積した可能性のある鍵に関するいくつかの情報を解放する必要があった可能性がある。2つのユニバーサルハッシュ関数のセットの中で、イブが所有する情報量を任意に低減するために、アリスおよびボブは、r<mの場合、関数g:{0,1}m→{0,1}rを公に選択し、新しい改訂された鍵k=g(K)を構築することができる。結果として得られる改訂されたkは、イブが所有するすべての情報が与えられた場合に、概ね一様に配布することができ、したがって安全に使用することができる。新しい改訂された鍵のサイズr、ならびに関数gの選択は、イブが鍵の妥当性検査中に取得することができた情報量に依存する可能性があり、これは、鍵妥当性検査のテストに使用されるハッシュ関数に依存する。ハッシュ関数はアプリケーション固有であるので、Hとgの両方の選択は、特定の用途に依存する可能性がある。
【0074】
ブロック310で、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方における通信モジュール180は、共有鍵k=kA=kBを使用して、それぞれのネットワークインターフェース160を介して通信することができる。いくつかの場合には、通信は、OTPアプローチを使用することができる。
・アリスは、ワンタイムパッド方式でkを使用して、最初のメッセージを暗号化する。msg:ctx=OTP(msg;k)。ここで、ctxは、暗号化されたメッセージ、msgは、元のメッセージ、OTPは、鍵kとともに使用されるワンタイムパッド方式を表す。
・アリスは、公衆通信チャネルを介してボブにメッセージを送信する。
・ボブはメッセージを解読する。msg=OTP-1(ctx;k)。
【0075】
上記のOTPアプローチは、アリスに送信されるボブの暗号化されたメッセージにも逆に適用される。
【0076】
いくつかの場合には、ブロック312で、第1のユーザデバイス(アリス)と第2のユーザデバイス(ボブ)の両方の消去モジュール182は、テーブルのいずれかがいずれかのユーザから盗まれた場合でも、セキュリティを保証するために鍵消去を実行することができる。一例では、両方の当事者は、確率0.5ですべての使用済みビットをフリップすることができ、すなわち、使用済みとしてマークされた各ビットについて、それぞれのビットxが1-xにフリップされるかどうかについて0.5の確率が評価される。この評価は、たとえデバイスが紛失しても、以前の通信を解読することができないことを保証する。このようにして、たとえデバイスが盗まれたとしても、元のデータがクラウドコンピューティング環境に記憶されていても、元のデータを再構築する方法はまだ存在しない。いくつかの場合には、プライバシープロバイダは、自分の鍵を消去することもできる。これらの場合、送信された情報を回復する方法は確実に存在しない。別の場合では、アリスが、1つ以上のサーバ上に情報を記憶し、後の段階でそれにアクセスしたい、またはボブへのアクセスを許可したいユーザである場合を考える。情報は、鍵であってもよく、また、データ自体であってもよく、この情報は、本明細書で説明される方法でプロバイダ内に記憶されてもよい。プライバシープロバイダは、情報をそのまま維持することによって、アリスまたはプライバシープロバイダと鍵テーブルを共有する任意の他の許可されたユーザによって、将来データを再構築することを可能にする。
【0077】
暗号化された電話呼の例では、送信されるメッセージの各mビットについて、さらなるnmビットが送信されなければならず(ここで、nはプライバシープロバイダの数である)、加えて、認証のためにある(無視できる)数のビットが送信されなければならない(例えば、アリスは、認証するために、Kiにおける最初のfの未使用ビットとしてとられたfビットを当事者Piに送信することができる)。したがって、2分間の呼(VOiPプロトコルではおよそ1.2MB)を開始するために、アリスとプライバシープロバイダとの間で事前に交換されるデータの量は、およそ3.6MB(n=3と仮定する)であり、これは、(QRNGが常に新しい乱数を有する小さいレジスタを更新し続けると仮定して)メモリからデータを読み取るためにおよそ0.04s、プラス、プロバイダにデータを送信するために必要な時間を必要とする。プライバシープロバイダは、鍵をマッチングし、同じ量のデータをボブに送信する必要がある。ボブがレジスタからデータを読み出す速度が同じであると仮定すると(90MB)、2分間の呼を開始するのに約0.3秒の待ち時間となる。この待ち時間は、暗号化の付加価値を考慮すると商業的に合理的である。
【0078】
方法300のいくつかの場合には、ランダム性は、ユーザのデバイス上に位置するRNG(例えば、QRNG)から到着すると仮定され得る。他の場合には、多数の乱数(例えば、量子乱数)を、ユーザのデバイスにプレインストールすることができる。これらの場合、例えば、ユーザデバイスは、鍵が完全に使用されたときはいつでも、例えば、サブスクリプションサービスを介して交換されてもよい。さらなる場合において、量子乱数は、プレインストールされ、ユーザのデバイスと通信する別個のメモリ記憶デバイス上に記憶されてもよく、それによって、プレインストールされた数が完全に使用されたとき、メモリ記憶デバイスは、交換され得る。
【0079】
一般に、プライバシープロバイダおよびデバイス間の通信システムは、プロトコルの最も弱い部分である可能性が高い。いくつかの場合には、法的強制力を使用して、プライバシープロバイダに契約を署名させることからなるプライバシープロバイダによるコンプライアンスを保証することができる。この契約は、データ(鍵)漏洩の場合に、最終ユーザが責任を負う場合には、最終ユーザに弁済することを法的に強制することができる。法的契約があっても、プライバシープロバイダは依然として望ましくない活動に従事する可能性があるが、すべてのプライバシープロバイダがこれらの活動に従事する確率は無視できると考えることができる。特に、プライバシープロバイダが多様である場合、例えば、利害関係、背景、地理的位置などが多様である場合、全員の協力の確率は、著しく低い。いくつかの場合には、プライバシープロバイダの役割は、少なくとも部分的に、国家当局に提供することができる。いくつかの場合には、暗号化のさらなる層を使用することができ、例えば、少なくともAES-128を使用することができる。セキュリティのこのさらなる層は、ユーザデバイス上に実装されてもよい。
【0080】
いくつかの場合には、十分に大きい組織の場合、デバイスが、同じ組織内で互いに通信するためにのみ使用されると仮定すると、組織自体がプライバシープロバイダとして動作し、鍵の生成および配布を管理することもできる。
【0081】
いくつかの場合には、任意のプライバシープロバイダによるDoS攻撃を直ちに識別できるように、プライバシープロバイダを認証することができる。次いで、プライバシープロバイダは、追放され、その役割から排除される可能性がある。いくつかの場合には、プライバシープロバイダは、その役割に対する報酬を受けることができ、DoS攻撃は、所得の永久的な損失となるので、やる気をなくすことになる。
【0082】
有利には、各単一のプライバシープロバイダが、他のすべてのプライバシープロバイダと協働することなく暗号鍵を再構築することは不可能である。これは、プライバシープロバイダのうちの少なくとも1つが正直である限り、鍵を再構築することができず、鍵再構築(KR)攻撃は不可能であることを意味する。いくつかの場合には、単一の不正なプライバシープロバイダは、プロトコルの交換フェーズ中にアリスおよび/またはボブに間違ったデータを提供することによって、サービス拒否(DoS)攻撃を実行することができる。以下は、別の実施形態による、ブロック304における共通鍵生成を提供する。この実施形態では、潜在的なDoS攻撃を回避するためにコンポーネントが提供される。
【0083】
この実施形態では、アリスおよびボブが、例えばOTPを使用して通信するために使用する必要がある鍵を生成するために、アリスは、アリスとプライバシープロバイダとの間の共有鍵を使用してn個のプライバシープロバイダP1,P2,P3,…,Pnに配布するn個のランダムなポイントをデカルト平面上に生成する。アリスにより生成するn個のポイントは、次数gの多項式上に位置し、ここで、1≦g≦n-1である。多項式とデカルト平面のy軸との間の交点は、アリスとボブとの間の通信に使用される鍵を一意に識別する。プライバシープロバイダは、ボブと共有されるテーブルを使用して、自分にn個のポイントを配信し、これを使用して、多項式、したがって共通鍵を再構築することができる。
【0084】
多項式の次数gは、プロトコルのセキュリティに影響を与え、したがって、
・例えばg=1など、gが小さすぎるとき、多項式を再構築するのに十分なポイントが少ないので、少数のプライバシープロバイダがクラスタリングしてKR攻撃を実行することは容易であり得る。同時に、gが非常に小さいとき、多くのプライバシープロバイダが、ボブが鍵を再構築するのを止めるクラスタを有するので、DoS攻撃を行うことは非常に困難である。
・gが過度に大きいとき、KR攻撃を行うためには、より多数の破損したプロバイダが必要である可能性が高いが、DoS攻撃を行うためには、より少数のプライバシープロバイダで十分である。例えば、g=n-1であるとき、ブロック304を実行するための前述のアプローチが使用される。
【0085】
上記のトレードオフを考慮して、gの値を決定することは、プロバイダの数n、プロバイダが不正である確率、KR攻撃のコスト(例えば、移動通信およびデーストレージアプリケーションでは高い)対DoS攻撃のコスト(例えば、データストレージでは高い)、および多数のプライバシープロバイダを有するコストに依存する。
【0086】
この実施形態では、2人のユーザ、アリスおよびボブ、ならびに秘密鍵のセットをアリスおよびボブと共有するn個のプロバイダP
1,P
2,…,P
nのセットが存在する。特に、K
iは、アリスとP
iとの間でプライベートに共有される長さlのビットのセットであり、ビットK
ij∈{0;1}は、アリスとP
iとの間で共有されるセット内のj番目のビットの値を表す。同様に、H
iは、ボブとP
iとの間で共有される鍵のセットである。アリスが、例えば、OTP暗号化を使用して、通信または鍵を必要とする任意の他のアプリケーションのために使用することができるボブとの共有の鍵を構築したい状況を考える。アリスは、秘密共有プロトコル(例えば、Shamirの秘密共有プロトコル)を使用して、そのような鍵を構築し、それをボブと共有することができる。例示の目的のために、鍵は数字kと考えることができ、さらなる場合には、鍵は2進ビットで記述することができる。この実施形態では、特定の秘密共有プロトコルが一例として使用されるが、任意の適切な秘密共有プロトコルを使用することができる。この実施形態では、共通鍵生成の例示的なアプローチは、以下を含むことができる。
・アリスは、デカルト平面でkにおいてy軸と交差するg次多項式を生成し、ここで、gは整数であり、g∈[1;n-1]である。ここで、f
Aは、f
A(0)が共通鍵k
Aに等しいような多項式である。
・アリスは、生成された多項式上のn個のランダムな点を正確に選択する。ランダムな点は、a
1={x
1;f
A(x
1)},a
2={x
2;f
A(x
2)},…,a
nであり、ここで、x
i≠0、∀iである。
・各点a
iについて、アリスは、アリスとP
iとの間の通信において以前には使用されておらず、
【数14】
がデカルト平面上でa
iを一意に識別するような一連のインデックス[k
i,1,k
i,2,…,k
i,t]を準備する。いくつかの場合には、k
iの長さは、デカルト平面上の1つの点(すなわち、2つの座標)を識別するのに必要なビット量とすることができる。
・アリスは、パブリックチャネルを介して、i番目のシリーズ[k
i,1,k
i,2,…,k
i,t]をプロバイダP
iに送信する。
・アリスは、各テーブルK
iから使用されたインデックスを「使用済み」として示す。
・アリスは、その数字gをボブに送信する。
・各プライバシープロバイダP
iは、ボブとP
iとの間の通信において以前には使用されておらず、
【数15】
がデカルト平面上でa
iを一意に識別するような一連のインデックス[h
i,1,h
i,2,…,h
i,t]を準備する。
・P
iは、パブリックチャネルを介して、シリーズ[h
i,1,h
i,2,…,h
i,t]をボブに送信する。
・ボブは、プライバシープロバイダからシリーズを受信し、点a
1={x
1;f
A(x
1)},a
2={x
2;f
A(x
2)},…,a
nを生成する。ボブは、曲線とy軸との交点を測定し、これは、共通鍵k
Bを形成する。
【0087】
g=1であるとき、上記のアプローチが情報理論的には前述のアプローチと等価であることに留意されたい。
【0088】
近似的な最適値gを決定するために、以下を考慮することができる。
・n個のプライバシープロバイダ、およびg次多項式が与えられると、鍵再構築攻撃を行うために、少なくともg+1の不正なプライバシープロバイダが必要とされる。プロバイダがプロトコルに従わない確率は、qに等しいと考えることができ、確率は、無相関であると考えることができる。次いで、KR攻撃の最終確率は、以下の通りである。
【数16】
・n個のプライバシープロバイダ、およびg次多項式が与えられると、少なくともn-g個の不正なプロバイダは、サービス拒否攻撃を行う必要がある。プロバイダがプロトコルに従わない確率は、qに等しいと考えることができ、確率は、無相関であると考えることができる。次いで、DoS攻撃の最終確率は、以下の通りである。
【数17】
【0089】
最悪のシナリオでは、不正なプライバシープロバイダは、KR攻撃とDoS攻撃の両方に同時に関与しようとする。
図6は、プロバイダの総数nによって正規化されたgの関数として、不正プロバイダの最小割合の一例のプロットを示す。縦軸には、多項式次数gの関数として、攻撃を行うために不正でなければならないプロバイダの最小割合が存在し、ここで、両方の量は、nによって除算される。2つの曲線の最小値をとると、すべての点gについて、2つの攻撃のうちの少なくとも1つを行うのに必要な不正プレーヤの最小割合が与えられる。プロットから明らかなように、n/2に等しいgの値は、より安全な構成を提供するが、異なる攻撃は、最終ユーザに対して異なるコストを有する可能性があり、したがって、最適なgは、より左側または右側に移動させることができる。例えば、移動通信の場合、KR攻撃は、DoS攻撃よりもかなり費用がかかる可能性があり、したがって、最適gは、nにより近くになる。
【0090】
gの関数として攻撃を受ける実際の確率は、プロバイダが破損される確率をqと呼び、これらの確率の間に相関がないと仮定することによって決定することができる。攻撃を受ける総確率は、以下に等しい。
【数18】
【0091】
n=10で、qの異なる値が使用される例、特にq
1=0.01、q
2=0.02、q
3=0.03、q
4=0.05、q
5=0.1の場合について考える。
図7は、5つの異なるシナリオq
1からq
5についての攻撃の確率の一例のプロットを示す。縦軸には、gの関数として、n=10の場合に攻撃を受ける確率が存在する。最適な場合g=4では、攻撃の確率は以下のとおりである。p
1=10
-10(シナリオq
1の場合)、p
2=10
-8、p
3=10
-7、p
4=10
-6、およびp
5=10
-4。特に、破損したプロバイダを有する確率が0.2程度である不利なシナリオにおいてさえ、攻撃の確率に対する最終的な利得は、3桁に達する(0.1から0.0001になる)。したがって、このリスクは、実際に商業的に合理的であると考えられる範囲内に十分ある。
【0092】
qの値ごとに、再度n=10の例示的な場合で、攻撃を受ける確率について考える。gの最適次数がn/2に等しい例について考える。
図8は、その結果の一例を示すプロットである。縦軸には、n=10の場合に、qの関数として、最適値g=n/2について計算された、攻撃を受ける確率が存在し、直線はy=xである。示されるように、qが0.55未満の値では、攻撃を受ける総確率が向上している。qが0.2より小さい場合、数桁の改善になる。
図9は、縦軸上に、n=50の場合に、qの関数として、最適なg=n/2について計算された、攻撃を受ける確率を示すプロットを示し、直線はy=xである。
図10は、縦軸上に、n=4の場合に、qの関数として、最適なg=n/2について計算された、攻撃を受ける確率を示すプロットを示し、直線はy=xである。
【0093】
本明細書で説明する実施形態のセキュリティについては、一般に2つの仮定がなされる。第1に、プライバシープロバイダのうちの少なくとも1つは、正直かつ健全であり、すなわち、それらは、他のプライバシープロバイダと協調せず、鍵にアクセスすべきではない誰にも鍵を明らかにしない。第2に、鍵は正しく準備される、すなわち、他の当事者(侵入者、プライバシープロバイダ、および/またはデバイスの製造業者)のいずれも、任意のデバイス上または任意のデバイスに送信された鍵のすべてのセットを知らない。
【0094】
有利には、本実施形態は、スケーラビリティを可能にする。ネットワークでは、ユーザの数nは非常に大きくなる可能性がある。多数のユーザでは、あるユーザが各ユーザに別のユーザと鍵を共有することを要求する場合、これは、n(n-1)/2(すなわち、n2程度)個の鍵を必要とし、これは、非常に大きくなり得る。対照的に、プライバシープロバイダを使用することにより、本実施形態のように、n個程度の鍵のみで済むなど、鍵の総数を低減することができる。これは、各ユーザが、他のユーザではなく、プライバシープロバイダと鍵を共有するだけでよいからである。複数の、例えばm個のプライバシープロバイダの場合にも、n個程度の鍵の同じスケーリングが適用される。
【0095】
有利には、本実施形態は、例えばIPSecおよびVPNなど、様々な方式の修正を介して実施することができる。
【0096】
有利には、本実施形態は、より高いセキュリティおよび信頼性のために、複数のプライバシープロバイダの使用を可能にする。例えば、プライバシープロバイダが1つのみのアプローチでは、一般に、単一の障害ノードが存在し、したがって、データ侵害が発生する確率は、そのプライバシープロバイダ(pと呼ばれる)においてデータ侵害が発生する確率である。プライバシープロバイダが複数の本実施形態では、データ侵害の確率は、各単一のプライバシープロバイダにおいてデータ侵害が発生する確率が依然としてpに等しい場合であっても、事実上任意に小さい。したがって、pの現実的な値(例えば、pが20%より小さい)では、例えば、10のプライバシープロバイダでデータ侵害が発生する確率は、単一のプライバシープロバイダpよりも数桁小さい。一例では、10のプライバシープロバイダで、年ベースでpが0.05に等しい(すなわち、20年ごとに平均1つのデータ侵害)場合、データ侵害が発生する確率は、約0.0001%(すなわち、1,000,000年ごとに平均1つのデータ侵害)である。
【0097】
本実施形態に記載されるようなプライバシープロバイダの使用は、少なくとも以下の利点を提供する。
・OTP暗号化と組み合わせたときの情報理論的セキュリティ。
・(仮想プライベートネットワーク(VPN)の使用などにおける)現在の技術による容易な実装。
・プライバシープロバイダは、暗号化されたデータの通信中に(鍵生成手順の後に)オフラインにすることができ、これにより、遅延またはサービス拒否攻撃を軽減することができる。
・ユーザの数に関して高度にスケーラブルであり、それによって、新しいユーザが参加する場合、プライバシープロバイダが新しい鍵テーブルを新しいユーザに提供するので、古いユーザは影響を受けない。
・プライバシープロバイダの数に関して高度にスケーラブルであり、それによってユーザがkだけ増加する場合、セキュリティを保証するためのプライバシープロバイダの数は、各ユーザの鍵テーブルの数と共に、単にkと線形にスケーリングする。
・鍵生成後にプライバシープロバイダ通信を必要としないため、結果として生じる通信における最小の時間遅延。2つのプライバシープロバイダを使用するVPNの例示的な実験では、通信のためのピング時間は90msであり、これは他のアプローチを上回る著しい改善である。
・秘密の共有は、失敗確率を低減する。
・政府の強制は、自身のプライバシープロバイダに法的要件を強制し、法的執行に鍵テーブルを引き渡すことによって可能である。
・国際協力を実施することができ、例えば、各国がプライバシープロバイダを所有し、すべての国が協力しない限り、通信は任意の個々の国に対して安全なままである。
・プライバシープロバイダの階層設計は、例えば、各国/主要組織がそのプライマリプライバシープロバイダを有し、1組のセカンダリプライバシープロバイダの間で信頼を分配するように実施することができる。
【0098】
さらに、複数のプライバシープロバイダの使用は、少なくとも以下の利点を提供する。
・ユーザが単一の集中型エンティティで信頼する必要はない。プライバシープロバイダは独立して動作するので、実際には、アリスおよびボブの通信を解読することができるプライバシープロバイダは1つもない。このようにして、ユーザは、自分のデータをプライバシープロバイダと共有する必要がない。
・DDOS攻撃に対する保護を提供することに加えて、多数のプライバシープロバイダを使用することによって、単一のノードまたは単一の障害点からのハッキングまたはデータ侵害の可能性を低減する。
・ユーザは、どのプライバシープロバイダを通信に使用するかを動的に選択することができる。
・アリスからボブへのメッセージがプライバシープロバイダを通過することを必要とせず、したがって、通信を行うためにプライバシープロバイダが常にオンラインであることを必要としない。アリスおよびボブは、後に起こる通信を期待して、プライバシープロバイダに、一定量の鍵を提供するように指示することができる。通信が後に行われるとき、プライバシープロバイダはオンラインである必要はない。
o本実施形態の一例では、アリスは、プライバシープロバイダに、(i)ボブのアドレスと、(i)ボブに別々に送信したメッセージの長さとを単に送信することができる。次いで、ハブは、鍵命令(メッセージと同じ長さである)を準備し、それらをボブに送信する。これに対して、他のアプローチでは、集中型エンティティがアリスからメッセージを受信し、そのメッセージをボブに再送信するので、エンティティは、トラフィックの2倍を不利に管理しなければならない。
【0099】
本発明は、いくつかの特定の実施形態を参照して説明されてきたが、その様々な他の態様、利点、および修正は、本明細書に添付された特許請求の範囲に概説された本発明の趣旨および範囲から逸脱することなく、当業者には明らかであろう。上記に列挙されたすべての参照の開示全体は、参照により本明細書に組み込まれる。