IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コーニンクレッカ フィリップス エヌ ヴェの特許一覧

特許7159183暗号プロトコルで使用する行列を共有するデバイス及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-14
(45)【発行日】2022-10-24
(54)【発明の名称】暗号プロトコルで使用する行列を共有するデバイス及び方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20221017BHJP
【FI】
H04L9/08 C
H04L9/08 F
【請求項の数】 18
(21)【出願番号】P 2019548404
(86)(22)【出願日】2018-02-27
(65)【公表番号】
(43)【公表日】2020-04-16
(86)【国際出願番号】 EP2018054731
(87)【国際公開番号】W WO2018162272
(87)【国際公開日】2018-09-13
【審査請求日】2021-02-26
(31)【優先権主張番号】17159296.7
(32)【優先日】2017-03-06
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】590000248
【氏名又は名称】コーニンクレッカ フィリップス エヌ ヴェ
【氏名又は名称原語表記】Koninklijke Philips N.V.
【住所又は居所原語表記】High Tech Campus 52, 5656 AG Eindhoven,Netherlands
(74)【代理人】
【識別番号】110001690
【氏名又は名称】特許業務法人M&Sパートナーズ
(72)【発明者】
【氏名】ガルシア モーション オスカー
(72)【発明者】
【氏名】トルフィツェン ルドヴィクス マリヌス ジェラルダス マリア
(72)【発明者】
【氏名】リートマン ロナルド
(72)【発明者】
【氏名】バタチャリア サウヴィク
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2010-186129(JP,A)
【文献】特開2011-155642(JP,A)
【文献】特開2015-179895(JP,A)
【文献】特開2002-217884(JP,A)
【文献】特表2012-503356(JP,A)
【文献】BOS, Joppe et al.,Frodo: Take off the ring! Practical, Quantum-Secure Key Exchange from LWE,Cryptology ePrint Archive,International Association for Cryptologic Research,2016年09月,Report 2016/659, Ver. 20160910:010217,pp. 1-26,[2021年11月18日検索],インターネット,<URL: https://eprint.iacr.org/2016/659/20160910:010217>
【文献】CHEON, Jung Hee et al.,Lizard: Cut off the Tail! Practical Post-Quantum Public-Key Encryption from LWE and LWR,Cryptology ePrint Archive,International Association for Cryptologic Research,2016年12月,Report 2016/1126, Ver. 20161222:071525,pp. 1-21,[2022年1月27日検索],インターネット,<URL: https://eprint.iacr.org/2016/1126/20161222:071525>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/38
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
共有行列及び秘密ベクトルに基づく暗号プロトコル用の第1の電子ネットワークノードであって、前記共有行列は複数の成分を有し、各成分は値を有し、前記第1の電子ネットワークノードは、
第2のネットワークノードとのデジタル通信用の通信インターフェースと、
値のシーケンスをキャッシュするキャッシュメモリであって、前記共有行列の前記複数の成分には、前記キャッシュメモリにキャッシュされた前記値のシーケンスのうちの値が割り当てられる、キャッシュメモリと、
プロセッサ回路とを備え、当該プロセッサ回路が、
前記共有行列の値の選択元になる前記値のシーケンスを取得し、前記値のシーケンスは前記第2のネットワークノードと共有され、また、前記値のシーケンスを複数の接続との使用のためにキャッシュし、
前記第2のネットワークノードから選択データを受信するか、又は選択データを決定し、前記選択データを前記第2のネットワークノードに送信し、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記キャッシュされた値のシーケンスのうちの値を割り当て、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データ及び前記値のシーケンスに従って前記共有行列を構築し、
前記共有行列と、前記秘密ベクトルとの行列積を計算することを含む前記暗号プロトコルに、前記共有行列を適用する、第1の電子ネットワークノード。
【請求項2】
前記プロセッサ回路は、前記値のシーケンス内の所定の第1の値のグループを、前記共有行列の成分の対応する所定の第2のグループに対して選択し、前記選択データは、前記第2のグループ内の成分に対する前記第1のグループ内の複数の位置を示して、前記第2のグループ内の各成分に前記第1のグループから値が割り当てられるようにし、前記第2のグループは前記共有行列よりも少ない成分を有する、請求項1に記載の第1の電子ネットワークノード。
【請求項3】
前記第2のグループ内の成分に対する前記第1のグループ内の前記複数の値を示す前記選択データの一部は、前記第2のグループ内の値の合計ビットサイズの1/100未満のビットサイズを有する、請求項2に記載の第1の電子ネットワークノード。
【請求項4】
前記選択データは複数のパラメータを含み、前記プロセッサ回路は、前記選択データ内のパラメータから、前記値のシーケンス内の少なくとも1つの成分と、前記共有行列内の少なくとも1つの成分とを計算し、前記計算は、前記パラメータに関して線形であり、前記値のシーケンス内の前記計算された成分の値を、前記共有行列内の成分に割り当てる、請求項1から3のいずれか一項に記載の第1の電子ネットワークノード。
【請求項5】
前記値のシーケンスは基本行列を形成し、前記選択データは、前記基本行列の少なくとも1つの行及び/又は列を回転させる成分数を示すことによって、前記行及び/又は列の巡回置換を示す、請求項2、3又は4に記載の第1の電子ネットワークノード。
【請求項6】
前記選択データは乱数の種を含み、前記プロセッサ回路は、
決定論的擬似乱数発生器に前記乱数の種を与え、前記決定論的擬似乱数発生器の出力から、前記値のシーケンス内の前記複数の値、及び/又は前記共有行列内の前記複数の成分の指示を取得する、請求項1から5のいずれか一項に記載の第1の電子ネットワークノード。
【請求項7】
前記選択データは置換の表現を含み、前記プロセッサ回路は、前記置換の表現に従って前記値のシーケンスを置換し、デフォルトの割り当てに従って、前記置換された値のシーケンスを前記共有行列の成分に割り当てる、請求項1から6のいずれか一項に記載の第1の電子ネットワークノード。
【請求項8】
前記プロセッサ回路は、前記暗号プロトコルの一部として、前記共有行列と、前記第1の電子ネットワークノードの秘密ベクトル又は行列との行列積を計算する、請求項1から7のいずれか一項に記載の第1の電子ネットワークノード。
【請求項9】
前記第1の電子ネットワークノード及び前記第2のネットワークノードは、鍵交換プロトコル用に構成され、前記プロセッサ回路は、
秘密鍵行列を生成し、
公開鍵行列を生成し、前記生成は少なくとも、
前記共有行列と、前記秘密鍵行列との行列積を計算して、行列積を取得することと、
前記第1の電子ネットワークノードの前記公開鍵行列を前記第2のネットワークノードに送信することと、
前記第2のネットワークノードの公開鍵行列を受信することと、
前記第2のネットワークノードの受信された前記公開鍵行列と、前記第1の電子ネットワークノードの前記秘密鍵行列との行列積として生鍵を計算することであって、前記第1の電子ネットワークノードはさらに、少なくとも前記生鍵から共有鍵を計算する、計算することと
を含む、
請求項8に記載の第1の電子ネットワークノード。
【請求項10】
前記第1の電子ネットワークノード及び前記第2のネットワークノードは、公開鍵暗号化プロトコル用に構成され、前記プロセッサ回路は、
第2のネットワークノードの公開鍵を取得し、前記公開鍵は、前記選択データと、さらなる公開鍵行列とを含み、前記さらなる公開鍵行列は、前記共有行列及び秘密鍵行列から事前に取得されており、
ランダムベクトルを選択し、前記ランダムベクトル及び前記共有行列と、前記ランダムベクトル及び前記さらなる公開鍵行列との2つの行列積を計算し、
前記2つの行列積のうちの第1の行列積から計算されるブラインドベクトルを加算することにより、平文メッセージから暗号化されたメッセージを計算し、前記暗号化されたメッセージは、前記2つの行列積のうちの第2の行列積から計算される復号情報をさらに含む、請求項8に記載の第1の電子ネットワークノード。
【請求項11】
値のシーケンスをキャッシュするキャッシュメモリであって、前記キャッシュされる値のシーケンスを識別する対応するシーケンス識別子と共にキャッシュする、キャッシュメモリ
を備え、前記プロセッサ回路は、
前記第2のネットワークノードからシーケンス識別子を受信し、前記受信されたシーケンス識別子に対応する値のシーケンスが前記キャッシュメモリにキャッシュされているか否かを検証し、そのような値のシーケンスがキャッシュマトリクスにキャッシュされていない場合、前記第2のネットワークノードから前記値のシーケンスを取得し、及び/又は前記キャッシュメモリにキャッシュされた値のシーケンスに対応するシーケンス識別子を前記第2のネットワークノードに送信し、
前記シーケンス識別子によって識別される前記値のシーケンスを使用して、前記共有行列を構築する、請求項1から10のいずれか一項に記載の第1の電子ネットワークノード。
【請求項12】
前記シーケンス識別子はさらなる乱数の種を含み、前記値のシーケンスを取得又は共有することは、決定論的擬似乱数発生器に前記さらなる乱数の種を与えることと、種が与えられた前記決定論的擬似乱数発生器の出力から前記値のシーケンスを導出することとを含む、請求項11に記載の第1の電子ネットワークノード。
【請求項13】
前記値のシーケンスは信頼できる第三者から取得される、請求項1から12のいずれか一項に記載の第1の電子ネットワークノード。
【請求項14】
単一の値のシーケンスから異なる選択データを使用して取得可能な異なる共有行列の数は、少なくとも264個である、請求項1から13のいずれか一項に記載の第1の電子ネットワークノード。
【請求項15】
複数の第2のネットワークノードからの暗号化されたネットワーク接続を受け入れ、前記第1の電子ネットワークノードは、第2のネットワークノードからの接続要求を、応答メッセージを送信することによって受け入れ、前記応答メッセージは乱数の種を含み、前記乱数の種は、前記第1の電子ネットワークノードのキャッシュメモリに記憶された値のシーケンスを示し、前記第2のネットワークノードは選択データを前記第1の電子ネットワークノードに送信する、請求項1から14のいずれか一項に記載の第1の電子ネットワークノード。
【請求項16】
請求項1から15のいずれか一項に記載の第1の電子ネットワークノードと、第2のネットワークノードとを備える電子ネットワークシステムであって、前記第2のネットワークノードは、前記共有行列及び秘密ベクトル基づく暗号プロトコル用に構成され、前記第2のネットワークノードは、
前記第1の電子ネットワークノードとのデジタル通信用の通信インターフェースと、
値のシーケンスをキャッシュするキャッシュメモリであって、前記共有行列の前記複数の成分には、前記キャッシュメモリにキャッシュされた前記値のシーケンスのうちの値が割り当てられる、キャッシュメモリと、
プロセッサ回路とを備え、前記プロセッサ回路は、
前記第1の電子ネットワークノードと同じ値のシーケンスを取得し、前記共有行列の値は前記値のシーケンスから選択され、また、前記値のシーケンスを複数の接続との使用のためにキャッシュし、
選択データを決定し、前記選択データを前記第1の電子ネットワークノードに送信するか、又は前記第1の電子ネットワークノードから選択データを受信し、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記値のシーケンスのうちの値を割り当て、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データ及び前記値のシーケンスに従って、前記第1の電子ネットワークノードと同じ共有行列を構築し、
前記共有行列と、前記秘密ベクトルとの行列積を計算することを含む前記暗号プロトコルに、前記共有行列を適用する、電子ネットワークシステム。
【請求項17】
共有行列及び秘密ベクトルに基づく暗号プロトコル用の第1の電子ネットワークノード用の電子的方法であって、前記共有行列は複数の成分を有し、各成分は値を有し、前記電子的方法は、
前記第1の電子ネットワークノードと第2のネットワークノードとの間にデジタル通信を確立するステップと、
前記共有行列の値の選択元になる値のシーケンスを取得するステップであって、前記値のシーケンスは前記第2のネットワークノードと共有される、また、前記値のシーケンスを複数の接続との使用のためにキャッシュする、取得するステップと、
前記第2のネットワークノードから選択データを受信するか、又は選択データを決定し、前記選択データを前記第2のネットワークノードに送信するステップであって、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記値のシーケンスのうちの値を割り当てる、ステップと、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データに従って前記共有行列を構築するステップと、
前記共有行列と、前記秘密ベクトルとの行列積を計算することを含む前記暗号プロトコルに、前記共有行列を適用するステップと
を有する、電子的方法。
【請求項18】
プロセッサシステムに請求項17に記載の方法を実行させる命令を表す一時的又は非一時的データを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共有行列に基づく暗号プロトコル用に構成される電子ネットワークノード、そのような電子ネットワークノード用の電子的方法、及びコンピュータ可読媒体に関する。
【背景技術】
【0002】
プロトコルを実行する2つのノード間で共有される行列に基づく暗号プロトコルが多数存在する。共有行列は典型的には公開されているが、両当事者は、計算を実行する当事者にとって秘密のデータを使用して、たとえば秘密情報を使用して、共有行列に対して演算を行う。そのような暗号プロトコルを攻撃することは格子ベースの問題につながり、たとえば攻撃者は、プロトコルを攻撃するには最短ベクトル格子問題などの格子問題を解く必要がある。格子問題は量子安全(quantum safe)であることが期待されており、したがってこれは活発な研究分野である。
【0003】
これらのプロトコルのうちのいくつかを、動機付けの例として本明細書で簡単に説明する。とはいえ、手短に言えば、ノードは典型的には共有行列を自身の秘密情報と組み合わせる。たとえば、ネットワークノードは、暗号プロトコルの一部として、共有行列と、ネットワークノードの秘密ベクトル又は行列との行列積を計算する。たとえば、ノイズが計算結果に加算され、ノイズは、たとえば、乗算結果に加算されるノイズベクトル若しくは行列の形式、又は結果の丸め若しくはスケーリングの形式である。ノイズを加算した後でも、結果には、他のノードにとって有用な動作、たとえば、署名、暗号化、鍵合意などを実行するのに十分な秘密鍵に関する情報が含まれているが、他のノードの秘密データを復元するのに十分な情報は含まれていない。加算されたノイズを補正するために、鍵照合(key reconciliation)が使用される。
【0004】
そのような格子ベースの暗号の出発点は、ネットワークノード110及び111などの両当事者が共有行列にアクセスできることである。この行列は典型的にはランダムに選択され、非常に大きい。共有行列は複数の成分を有し、各成分は値を有する。たとえば、共有行列は、たとえば500×500、さらにはそれ以上の次元を有する。例示的な計算では、次元512=2の正方共有行列を使用することにする。共有行列の成分は、典型的には法qを法とするものであり、法qは、たとえば210である。したがって、共有行列は、約2・2・210=228ビットの情報を表現する。
【0005】
共有行列は公開されていることが多く、平文データとして送信することができるが、明らかにそのような大量の情報には問題があり、これは特に、暗号プロトコルの重要なアプリケーションがモノのインターネットであることが期待されており、モノのインターネットでは、リソースが制限されたノードが、暗号で保護されるべきデータに演算を行うという事実を踏まえた場合である。たとえば、ノードはセンサネットワークを形成する。
【0006】
2つのノード間で大きい行列が共有されるという要件によって生じるオーバーヘッドを削減する第1の手法は、同じ行列を何度も再利用するものである。残念ながら、これは暗号学的な問題につながる。攻撃者は、今後の暗号交換において共有行列が使用されることを知っている場合、その行列に関する広範な事前計算を実行することができる。そのような事前計算の攻撃の例は、たとえば、有限体Diffie-Hellmanに対するLogjam攻撃である。一方、暗号プロトコルの実行ごとに新たな共有行列が使用される場合、攻撃者には実行ごとに新たな格子問題が提示されることになるので、同じ行列を再利用しないことが望ましい。
【0007】
大きい共有行列によって生じるオーバーヘッドを削減する第2の手法は、共有行列の代わりに乱数の種を送信するものである。次いで、乱数の種を使用して決定論的乱数発生器に種を与え、決定論的乱数発生器は共有行列を生成する。多くの決定論的乱数発生器が知られている。残念ながら、この手法では、送信オーバーヘッドは計算オーバーヘッドと引き換えになる。リソースが制限されたデバイスは、共有行列を生成するために長時間計算しなくてはならなくなる。この問題は、多くの同時計算を同時に処理する大規模なサーバにとっても同様に困難である。そのうえ、攻撃者がそのようなサーバに多くの乱数発生を実行させることができる場合、これはサービス妨害攻撃につながる。攻撃者はサーバとの多数の接続を開始し、サーバが乱数の種から共有行列を生成することに専念した後に、サーバを放置することができる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
これら及びその他の問題に対処する、共有行列に基づく暗号プロトコル用に構成される電子ネットワークノードを提供する。共有行列は複数の成分を有し、各成分は値を有する。参照しやすくするために、ネットワークノードを第1のネットワークノードとして識別し、それが通信する第2のネットワークノードと区別する。「第1の」及び「第2の」という形容詞には、それ以上の意味はない。
【課題を解決するための手段】
【0009】
第1のネットワークノードは、
- 第2のネットワークノードとのデジタル通信用に構成される通信インターフェースと、
- プロセッサ回路であって、
- 共有行列の成分のための値のシーケンスを取得し、値のシーケンスは第2のネットワークノードと共有され、
- 第2のネットワークノードから選択データを受信するか、又は選択データを決定し、選択データを第2のネットワークノードに送信し、選択データは、値のシーケンス内の複数の位置を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスのうちの値を割り当て、
- 共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列を構築し、
- 共有行列を暗号プロトコルに適用する
プロセッサ回路と
を備える。
【0010】
選択データは、値のシーケンスよりもはるかに少ないビットで記述することができる。たとえば、一実施形態では、選択データのビットサイズは、選択データによって示され、共有行列の成分に割り当てられる値のシーケンスの値よりも小さく、好ましくは半分未満であり、好ましくは1/10未満である。たとえば、いくつかの実施形態では、共有行列内の成分のグループにデータを割り当てるのに必要な選択データの量は、データ自体を記述するのに必要なデータ量の1/100未満である。選択データが乱数発生器から生成される場合、これが選択データを送信するノード、又は選択データを受信するノードのいずれで行われるかに関係なく、共有行列自体の値を生成するよりも少ないデータを生成するだけでよい。特に、第2のノードへの多数の接続を有するサーバなどのノードの場合、これはネットワークノードを動作させる際に大幅な違いをもたらす。データ自体を送信するために必要な帯域幅と比較して、大幅な削減も得られる。
【0011】
一実施形態では、ノードは値のシーケンスをキャッシュし、これを複数の接続に使用する。たとえば、一実施形態では、ノードは、使用する値のシーケンスを識別するシーケンス識別子を送信又は受信することができる。識別子は、たとえば、値のシーケンスに対するハッシュとすることができるが、有利な実施形態では、シーケンス識別子は、値のシーケンスが生成される元になる乱数の種を含む。このようにして、シーケンス識別子の受信機は、キャッシュメモリからシーケンス識別子を取得することができ、又は値のシーケンスを生成することもできる。
【0012】
この手法で共有される異なる行列に関して攻撃者が取得する格子は、基になる値のシーケンスが同じであっても異なる。特に、異なる格子の数の方がより多い場合、攻撃者の優位性は大幅に減少する。
【0013】
ネットワークノードは電子デバイスである。ネットワークノードは、携帯電話などのモバイル電子デバイスであってもよい。ネットワークノードは、セットトップボックス、スマートカード、コンピュータなどであってもよい。
【0014】
本明細書に記載の行列を共有する方法は、広範囲の実際のアプリケーションに適用される。そのような実際なアプリケーションには、金融アプリケーション、たとえば、クレジットカード情報を共有するもの、プライバシー強化アプリケーション、たとえば、メッセージングアプリケーション、メディアルアプリケーションなどが含まれる。
【0015】
本発明による方法は、コンピュータで実施される方法としてコンピュータ上で、若しくは専用のハードウェアで、又はその両方の組み合わせで実施される。本発明による方法の実行可能なコードは、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、そのコンピュータプログラム製品がコンピュータ上で実行された場合に、本発明による方法を実行するための、コンピュータ可読媒体に記憶された非一時的プログラムコードを含む。
【0016】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムをコンピュータ上で動作させた場合に、本発明による方法の全てのステップを実行するようになされたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上で具現化される。
【0017】
本発明の他の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様が使用されるのは、コンピュータプログラムが、たとえば、Apple社のApp Store、Google社のPlay Store、又はMicrosoft社のWindows Storeにアップロードされている場合であって、コンピュータプログラムが、そのようなストアからダウンロード可能な場合である。
【0018】
本発明のさらなる詳細、態様、及び実施形態を、単なる例として、図面を参照して説明する。図中の要素は単純化及び明確化のために示しており、必ずしも縮尺通りに描いていない。図中では、説明済みの要素に対応する要素は、同じ参照番号を有する場合がある。
【図面の簡単な説明】
【0019】
図1】暗号システムの一実施形態の一例を概略的に示す図である。
図2a-2c】選択データの一実施形態の一例を概略的に示す図である。
図3a】暗号システムの一実施形態の一例を概略的に示す図である。
図3b】暗号プロトコルの詳細の一実施形態の一例を概略的に示す図である。
図4】行列を共有するための方法の一実施形態の一例を概略的に示す図である。
図5a】一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。
図5b】一実施形態によるプロセッサシステムの概略図である。
【発明を実施するための形態】
【0020】
本発明は多くの異なる形態での具現化が可能であるが、図面に示し、本明細書で詳細に説明するのは1つ又は複数の特定の実施形態であって、本開示が本発明の原理の例示と見なされるべきであり、本発明を図示及び説明した特定の実施形態に限定することを意図するものではないという理解に基づくものである。
【0021】
以下では、理解のために、動作時の実施形態の要素を説明する。しかしながら、それぞれの要素が、それらによって実行されるように説明している機能を実行するように構成されることは明らかであろう。さらに、本発明は実施形態に限定されるものではなく、本発明は本明細書に記載した又は相異なる従属請求項に列挙した一つ一つの新規な特徴又は特徴の組み合わせにある。
【0022】
図1に、暗号システム100の一実施形態の一例を概略的に示す。暗号システム100は、複数のネットワークノードを備える。図1に示しているのは、第1のネットワークノード110及び第2のネットワークノード111である。ノード110及び111は、送信機-受信機の関係を有することを除いて、大部分が同じ設計のものである。システム100内のネットワークノードは、共有行列に基づく暗号プロトコルを実行するように構成され、具体的には、第1のネットワークノード110及び第2のネットワークノード111が、そのような暗号プロトコル用に構成される。暗号プロトコルの実行ごとに、新たな共有行列が使用されることが好ましい。
【0023】
ネットワークノード110は暗号ユニット150を備える。暗号ユニット150は、共有行列を使用する暗号プロトコルを実行するように構成される。背景技術において指摘したように、多くのそのような暗号プロトコルが存在し、全てが、2つの当事者間で共有される大きい行列を必要とする。多くの場合、暗号プロトコルの一部として、共有行列と、ネットワークノードの秘密ベクトル又は行列との行列積が計算される。たとえば、暗号ユニット150は、行列乗算を計算するように構成される行列乗算ユニット152を備える。
【0024】
共有行列を使用する暗号プロトコルの第1の例は、鍵交換プロトコルである。たとえば、第1のノードは、
- 秘密鍵行列(S)を生成し、
- 公開鍵行列(P)を生成し、その生成は少なくとも、
- 共有行列(A)と秘密鍵行列(S)との行列積を計算して、行列積を取得することと、
- 第1のネットワークノードの公開鍵行列を第2のネットワークノードに送信することと、
- 第2のネットワークノードの公開鍵行列(P)を受信することと、
- 第2のネットワークノードの受信された公開鍵と、第1のネットワークノードの秘密鍵行列との行列積として生鍵(raw key)を計算することであって、第1のネットワークノードは、少なくとも生鍵から共有鍵を計算するようにさらに構成される、計算することと
を含む
ように構成される。
【0025】
公開鍵行列(P)の生成中にノイズを導入することにより、攻撃者が公開鍵及び共有鍵の知識から秘密鍵を再構築できることが回避される。この鍵合意プロトコルは、加算されたノイズを除いて、
【数1】
が第1及び第2のネットワークノードの両方で同じであるという事実に基づいている。共有行列(A)と秘密鍵行列(S)との行列積の計算は、ある法の下で行われる。ノードの一方は鍵照合データを計算し、それを他方のノードに送信して、両者が行列積から同じ共有鍵を計算するようにすることができる。格子ベースの鍵合意プロトコルのより詳細な説明は、J.Bos、C.Costello、L.Ducas、I.Mironov、M.Naehrig、V.Nikolaenko、A.Raghunathan、D.Stebilaによる論文「Frodo: Take off the ring! Practical,Quantum-Secure Key Exchange from LWE」に与えられている(これは引用により本明細書に含まれ、「Frodo」と呼ばれる)。
【0026】
格子ベースの暗号プロトコルの第2の例は、公開鍵暗号化/復号アルゴリズムである。たとえば、ネットワークノードは、
- 第2のネットワークノードの公開鍵を取得し、公開鍵は選択データと、さらなる公開鍵行列(B)とを含み、さらなる公開鍵行列は、共有行列及び秘密鍵行列(S)から事前に取得されており、
- ランダムベクトルrを選択し、ランダムベクトル(r)及び共有行列と、ランダムベクトル(r)及びさらなる公開鍵行列との2つの行列積(たとえば、a’=Ar、b’=Br)を計算し、
- 2つの行列積のうちの第1のものから計算されるブラインドベクトルを加算することにより、平文メッセージから暗号化されたメッセージを計算し、暗号化されたメッセージは、2つの行列積のうちの第2のものから計算される復号情報をさらに含む
ように構成される。
【0027】
また、この例では、たとえばスケーリングの形式でノイズが加算される。格子ベースの公開鍵暗号化プロトコルの詳細な例は、J.H.Cheon、D.Kim、J.Lee、Y.Songによる論文「Lizard: Cut off the Tail! Practical Post-Quantum Public-Key Encryption from LWE and LWR」に載っている(これは引用により本明細書に導入されている)。
【0028】
図1に戻る。このように、2つのノード間で共有される行列をどのようにして取得するかという問題がある。共有行列は複数の成分を有し、各成分は値を有する。行列の行及び列を参照する。一例では、行数及び列数の少なくとも一方は、50、100、500などよりも大きい。便宜上、共有行列は正方行列とするが、これは必須ではない。たとえば、次元の一方が1の場合、行列はベクトルであるが、両方の次元が大きいとき、たとえば、行数及び列数の両方が50、100、500などより大きい場合に、最も多くの利点が得られる。
【0029】
第1及び第2のネットワークノードはそれぞれ、通信インターフェース120を備える。第1のネットワークノード110の通信インターフェース120は、第2のネットワークノード111とのデジタル通信用に構成される。典型的には、通信インターフェース120は、システム100内の他のノードの多くと通信するように構成される。
【0030】
通信インターフェースは、鍵合意システム内の他のノードとのデジタル通信用に構成される。ただし、システム内の全てのノードに常時連絡を取れる必要はない。通信インターフェース120は、デジタル通信用に構成される。たとえば、通信インターフェースは、コンピュータネットワークを介して通信するように構成される。たとえば、通信インターフェースは、無線、たとえば、Wi-Fi(登録商標)、ZigBee(登録商標)、Bluetooth(登録商標)など、及び/又は有線通信、たとえば、Ethernet(登録商標)、USBなど用に構成される。ノード110及び111の間の通信は、有線接続と無線接続との組み合わせであってもよい。たとえば、ノード110及び111を含むシステム100内のノードは、システム100内でノードを一意に識別する通信識別子を含む電子ストレージを備える。たとえば、通信識別子を、ノード110及び111の間で交換されるデジタルメッセージに含めて、たとえば、メッセージをアドレス指定する。たとえば、通信識別子は、IPアドレス、MACアドレスなどである。
【0031】
電子ネットワークノードは、上記の鍵交換又は公開鍵暗号化プロトコルの例などの暗号プロトコル用に構成される。暗号プロトコルは、通信インターフェース120を介してノード110及び111の間でメッセージを交換することと、他のノードから受信されたデータなどに対して計算を実行することとを含む。プロトコルの実行はプロセッサ回路において実装され、その例を以下に示す。図1は、プロセッサ回路の機能ユニットである機能ユニットを示している。たとえば、図1は、プロセッサ回路の可能な機能編成の青写真として使用される。プロセッサ回路は、図1のユニットとは別に図示していない。たとえば、図1に示す機能ユニットは、ネットワークノードに記憶され、ネットワークノードのマイクロプロセッサによって実行可能なコンピュータ命令で全体的又は部分的に実装される。ハイブリッドの実施形態では、機能ユニットは、部分的にハードウェアで、たとえば暗号コプロセッサなどのコプロセッサとして、また、部分的に、ネットワークノードに記憶され、その上で実行されるソフトウェアで実装される。
【0032】
ネットワークノード110は、共有行列の成分のための値のシーケンスを取得するように構成される基本データマネージャ130を備え、値のシーケンスは第2のネットワークノードと共有される。また、ネットワークノード110は、共有された値のシーケンスを、取得後などに、記憶するように構成される基本データメモリ170を備える。
【0033】
共有行列Aの成分と同様に、値のシーケンスの値は、ある法の下で選択される。値のシーケンスは、基本データ、又は基本値などとも呼ぶ。値のシーケンスは、共有行列を埋めるために使用される。値のシーケンスから共有行列の成分へのマッピングが、はるかに少ないビットで送信することができ、又は値のシーケンス自体よりもはるかに少ない擬似ランダム出力から計算されることは発明者の洞察であった。値のシーケンスから共有行列が構築されるやり方を変えることにより、同じ基本データから多数の異なる共有行列を取得することができる。このようにして、毎回異なる共有行列を使用することによる暗号学的な利点が、同じ値のシーケンスを再利用することによる少ないオーバーヘッドと組み合わせられる。
【0034】
基本データマネージャ130が第2のネットワークノードと共有される基本データを取得するいくつかの手法がある。
【0035】
第1の例では、基本データメモリ170は、値のシーケンスを事前に記憶する。たとえば、システム100内の複数のネットワークノードには、ある時点で、たとえば最初の使用時、製造中、信頼できる場所などで、シーケンスが提供される。共有される値のシーケンスは固定シーケンス、たとえば、規格で固定されたものなどであってもよい。この場合、基本マネージャ130は、値のシーケンスが記憶された基本データメモリ170へのアクセスを提供する以上のことはほとんどしない。このタイプの実施形態では、基本データメモリ170、又は共有される値のシーケンスが記憶されるその一部は、ROMメモリである。
【0036】
第2の例では、値のシーケンスは信頼できる第三者から取得される。たとえば、定期的に、基本データマネージャ130は、たとえばコンピュータネットワークを介して信頼できる第三者と連絡を取って、新たな値のシーケンスを取得する。たとえば、基本データマネージャ130は、そのような新たなシーケンスを定期的に、たとえば30日に1回、たとえば毎月の始めなどに取得するように構成される。
【0037】
送信オーバーヘッドを削減するために、基本データマネージャ130は、共有される値のシーケンスを乱数の種として取得する。たとえば、第1のネットワークノード110は、決定論的擬似乱数発生器160を備える。擬似乱数発生器は乱数の種が与えられ、値のシーケンスを計算するために使用される。種は様々なソースから取得され、たとえば、製造中などに事前にプログラムされ、たとえば、第2のネットワークノードから受信され、たとえば、信頼できる第三者から受信されるなどされる。また、選択データが第1のネットワークノードで生成され、第2のネットワークノードに送信される。
【0038】
値のシーケンスは暗号プロトコルの複数回の実行に使用され、たとえば、値のシーケンスを少なくとも2回使用して、第2のネットワークノードと共有される少なくとも2つの異なる共有行列を構築する。一実施形態では、値のシーケンスは複数のネットワークノード、たとえば、システム100の複数のネットワークノードのそれぞれと共有される。後者は必須ではないが、たとえば、特定の値のシーケンスが第1及び第2のネットワークノードのみによって使用され、たとえば、第1及び第2のネットワークノードが初めてやりとりするときに、乱数の種を交換して、以後それらの間で使用される値のシーケンスを生成する。以下、シーケンスのキャッシングを使用するさらなる実施形態を説明する。
【0039】
擬似乱数発生器160は、Mersenne twisterなどの高速線形フィードバック発生器であってもよい。ただし、暗号学的に安全な乱数発生器が好ましい。たとえば、擬似乱数発生器160は、いわゆるnext-bit testを満足する。すなわち、ランダムシーケンスの最初のkビットが与えられた場合に、50%を超える無視できないほどの成功確率で(k+1)ビットを予測できる多項式時間アルゴリズムは存在しない。多くの暗号学的に安全な乱数発生器が知られており、たとえば、カウンタモードで動作するブロック暗号、カウンタモードの高度暗号化標準(Advanced Encryption Standard)などがある。安全な乱数発生器は、SHA-256などのハッシュ関数をカウンタモードで動作させることによっても得られる。また、たとえば、Mersenne twisterからの出力に基づいて暗号ストリームの暗号のペアを生成することにより、Mersenne twisterの安全性が保証される。さらなる例には、Blum-blum-shub発生器、Blum-Micali発生器などが含まれる。
【0040】
ネットワークノード110は、行列生成ユニット140を備える。行列生成ユニット140は、共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列(A)を構築するように構成される。したがって、選択データは、共有された値のシーケンスと、共有行列の成分との間のマッピングを記述する。選択データは、たとえば通信インターフェース120を介して第2のネットワークノードから取得される。値のシーケンスは、選択データによって実際の共有行列Aに変換される。
【0041】
生成ユニット140は、選択データ自体を決定し、選択データを第2のネットワークノードに送信してもよい。たとえば、選択データが、様々な実施形態に示すように、タプル、置換(permutation)、回転パラメータなどを含む場合、生成ユニット140は、生成された選択データとして、これらをランダムに選択することができる。生成された選択データは、第2のネットワークノードに送信される。選択データが決定論的乱数発生器の出力から導出される場合、発生器の種を代わりに第2のネットワークノードに送信することができる。
【0042】
したがって、選択データは値のシーケンス内の複数の値を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスの値を割り当てる。一実施形態では、共有行列の全ての成分は、それらの値を値のシーケンスから受け取るが、各成分がその値を、選択データによって示される値のシーケンス内の位置から受け取る必要はなく、共有行列の一部の成分はそれらの値を、値のシーケンス内の固定位置から受け取ってもよい。図2a、図2b、図2cを参照して、いくつかの例を説明する。
【0043】
図2aに、選択データの一実施形態の一例を概略的に示す。選択データは値のシーケンス210内の位置を特定し、値221及び222を図示しており、これらは共有行列230内の位置に割り当てられ、成分231及び232を図示している。
【0044】
たとえば、選択データはタプルのシーケンスを含み、各タプルは値のシーケンス内のインデックスと、共有行列内のインデックスとを含む。たとえば、値のシーケンスは線形にインデックス付けされ、たとえば、自然数などを使用して連続的にカウントされる。たとえば、共有行列も、単一の番号でインデックス付けされ、たとえば連続的に番号付けされるが、たとえば、列及び行をそれぞれ示すx及びy座標によってインデックス付けされてもよい。選択データは、たとえば、{(4,(2,5)),(7,(3,3)),...}を含むことによって、値のシーケンス内のインデックス4の値が共有行列の位置(2,5)に配置されることを示すなどする。選択データは共有行列の成分の実際の値を含まず、代わりに、共有行列の実際の値は値のシーケンスから選択される。一実施形態では、選択データは、補正データで補われる。たとえば、補正データは、増分若しくは減分を含むか、又は新たな値を含むことなどにより、共有行列内の値がどのように変更されるかを示すデータを含む。そのような補正データは、生成ユニット140によっても適用される。補正データはあまり有利ではないと考えられ、新たな値を送信するには多くのビットが必要であり、補正データの各項目は共有行列の単一の要素にしか影響せず、一方、選択データは少数のビットのみで指定されるが、共有行列の多数の成分に影響を与える。小さい増分/減分はより少ないビットで指定できるが、結果の格子への影響は比較的少なく、実際には、共有行列との行列乗算後に加算されるノイズ内で消えかねない。
【0045】
共有行列のある位置(i,j)が選択データに出現しないことが起こり得る。これは、その位置にデフォルト値、たとえば所定の値を与えることによって解決される。これはまた、その位置に値のシーケンスのデフォルトの位置から値を与えることによって解決される。
【0046】
たとえば、選択データは置換の表現を含んでもよい。その際、割り当ては、置換の表現に従って値のシーケンスを置換し、デフォルトの割り当てに従って、置換された値のシーケンスを共有行列の成分に割り当てることによって機能する。たとえば、置換が全単射関数σとして表される場合、これは、たとえば行方向又は列方向など、共有行列Aの成分に番号付けする何らかのデフォルトの手法で、値のシーケンス内の位置1~mnをm×n行列Aの成分にマッピングする。選択データは置換の表現σを含んでもよく、割り当ては、Aにインデックス付けするデフォルトの手法に従って、インデックスiに、位置σ(i)におけるシーケンス210の値を割り当てることによって機能する。置換はその逆の方向で使用されてもよく、たとえば、シーケンス内のインデックスiの値が行列の成分σ(i)に割り当てられてもよい。
【0047】
行列Aの一部はシーケンスの固定要素に対応してもよいので、タプル又は置換のいずれかにおけるシーケンス210と行列230との間のマッピングを完全に指定する必要はない。選択データを使用して得られる十分な数の異なる行列があればよい。
【0048】
図2bに、選択データの一実施形態の第1の例を概略的に示す。シーケンス210と行列230との間のマッピングを指定するのに必要なビット数を減らすには様々な手法があり、そのうちの1つを図2bに関して示す。値のシーケンス210において、1つ又は複数の第1のグループが定義され、第1のグループ241及び242を図示している。行列230において、1つ又は複数の第2のグループが定義され、第2のグループ251及び252を図示している。シーケンス210の各第1のグループには、行列230の第2のグループが対応する。シーケンス210の成分と、行列230の成分との間のマッピングは、第1のグループの要素を対応する第2のグループの要素にマッピングするマッピングに制限することができる。第1及び第2のグループはランダムに選択することができる。図2bでは、第1のグループは順番に選択されているが、第2のグループはランダムに選択されている。他の選択も可能である。たとえば、第2のグループも、行又は列など、順番通りであってもよい。
【0049】
選択データによって示すことができるマッピングは、許可されるマッピングの数を制限することでさらに制限することができる。たとえば、一例では、マッピングは巡回置換(cyclic permutation)である。
【0050】
図2cに、選択データの一実施形態の第1の例を概略的に示す。この例では、基本データは基本行列260を形成し、たとえば、値のシーケンスの要素数は共有行列の成分数と同じであり、同様にインデックス付けされる。この場合、選択データは、基本行列上での置換を定義することによって、共有行列を示す。たとえば、選択データは、基本行列の行及び/又は列を回転させる成分数を示すことによって、その行及び/又は列の巡回置換を示す。たとえば、選択データは数字のシーケンスを含み、シーケンスの各数字は、その数字に対応する数の位置だけ基本行列の行を回転させることを示す。
【0051】
一実施形態では、選択データは、受信側が変更された行列を見つけられるようにする情報であり、たとえば、数字のシーケンスであって、そのi番目の数字が、行列Aの第i行をいくつの位置だけ回転させるかを示すもの、又は(行インデックス、回転次数(rotation order))ペアのシーケンスである。より少ない数字を使用することが可能である。
【0052】
シーケンス内の、たとえば基本行列内の基本データから共有行列を指定するためのデータ量は、共有行列自体のデータ量よりもはるかに少なくできることに留意されたい。たとえば、次元512及び法2048の正方行列の場合に、図2cを検討されたい。ある行の巡回置換を指定するには9ビットしか必要ないが、行のデータ自体を指定するには512×12ビットが必要となる。したがって、この例では、基本行列の行のどの値が、共有行列のどの位置に行くかを示す選択データの部分は9ビットであり、これは、行のデータサイズの9/(512×12)<1/100である。
【0053】
上記の方法はそれぞれ、単一の値のシーケンスから大量の異なる共有行列を生成することが可能である。たとえば、このシステムを使用して基本行列の行を回転させるには、8行分の回転パラメータしか必要とされず、ランダムな値のシーケンス210に対して(2個の異なる共有行列が生成される。その個数(2は264個よりも多く、これをセキュリティパラメータとしてもよい。この例では、(行インデックス、巡回置換次数(cyclic permutation order))の8つのペアを送信すればよく、結果はたった8×(9+9)ビットだけになる。回転させる行が事前に決定されている場合、必要なデータ量はさらに8×9ビットに削減される。しかしながら、たとえば、15個及び29個の行又は列に対する、それぞれ15個及び29個の回転パラメータを使用して、2128個、2256個などを超える、より多くのパラメータを選択データで使用することによって、より多数の異なる行列Aが簡単に可能になる。一実施形態では、回転パラメータの一部は行を回転させ、回転パラメータの一部は列を回転させる。この利点は、たとえば、ノードの一方が左からの乗算を使用し、他方が右からの乗算を使用する状況では、回転が両方のノードの行列乗算と同じように適合しないことである。さらに他の実施形態では、正方行列の場合、行列の(巡回的な)対角線上の回転が行われる。
【0054】
共有行列の一部の値は、シーケンスのデフォルト値を有してもよい。たとえば、一部の行は、シーケンスの所定の値と常に等しくてもよい。
【0055】
選択データは、少なくとも2つの異なる手法で通信される。第1の選択肢では、選択データは、シーケンスのどの成分が共有行列のどの成分にマッピングされるかを直接表現する。これは行列Aを構築する非常に効率的な手法である。たとえば、選択データ内のパラメータからの、値のシーケンスの少なくとも1つの成分と、共有行列の少なくとも1つの成分との計算は、そのパラメータに関して線形である。すなわち、値のシーケンスから共有行列へのマッピングで発生する指数pは、たかだか1である。図2b及び図2cの表現を使用した、基本行列の行の成分数を法とする行の新たな位置の計算、又はランダムな第1若しくは第2のグループにおけるインデックスの計算は、1回の計算である。
【0056】
たとえば、値のシーケンスの第1のグループを、x...x+m-1と番号付けされた成分とし、共有行列の行はm個の要素を有すると仮定する。このグループ内の回転させる成分の数を示す選択データのパラメータをpとする。第2のグループを行列の第k行とする。Aの成分は、行方向にゼロから番号付けされる。行もゼロからカウントされる。この場合、シーケンスの成分x+iは、成分km+((i+p)mod m)にマッピングされる。上記の計算はpに関して線形である。このマッピングを一般化すると、m個の要素を有する第1のグループjの第i要素はT((i+p)mod m)にマッピングされ、ここで、Tはルックアップテーブルなどのテーブルである。ここで、jはグループの数にわたって動く。一実施形態では、全てのjについてm=mとしてもよい。グループ数は行数に等しくてもよいが、これは必須ではない。たとえば、一部のパラメータpを0などのデフォルト値にすることができる。テーブルTは行であってもよく、たとえば、上記のように行の最初のインデックスを加算するだけでもよいが、第1のグループをより複雑なセットにマッピングしてもよい。一実施形態では、Tは不規則な構造にマッピングする。一例は、行列のrookグラフの独立したセットである(正方行列の場合のみ)。実際には、Tはラテン方格デザインさえ形成してもよい。
【0057】
選択データを表現する代替的な手法は、乱数の種とするものである。たとえば、決定論的擬似乱数発生器160には乱数の種が与えられ、決定論的擬似乱数発生器の出力から、値のシーケンス内の複数の値、及び/又は共有行列の複数の成分の指示を取得する。乱数発生器の出力から選択データを生成することができるので、選択データを表現する上記の手法はいずれも、種表現と併用され得る。たとえば一実施形態では、選択データは、たとえば選択データで指定された量だけ、基本行列の1、5、13、27、及び37行目を回転させる。この場合、選択データは、行又は列のインデックスと回転量とを直接含むことができ、或いは選択データは乱数の種を含むこともできる。後者の場合、回転量は乱数発生器160の出力から得られる。
【0058】
これらの全ての例において、選択データは第2のノード111から受信されてもよく、その場合、ノード110は選択データに従って値のシーケンスから共有行列を構築することに留意されたい。代替的には、ノード110は、たとえばランダムに、たとえば種から選択データを生成し、次に、直接的なデータとして、又は乱数の種として、選択データを第2のノードに送信してもよい。
【0059】
図3aに、暗号システム300の一実施形態の一例を概略的に示す。システム300は、サーバ310と、複数のクライアントとを備える。クライアント320.1、320.2、及び320.3を図示している。さらに多くのクライアントが存在してもよい。たとえば、サーバ310は、デジタルネットワークを介してクライアントにデジタルサービスを配信するコンピュータである。たとえば、サーバ310はウェブショップであってもよい。クライアントはウェブブラウザを使用して、サーバ310によって運営されるウェブサイトを閲覧し、ウェブショップから注文する。サーバとクライアントとの間の通信は、暗号化及び/又は認証される。たとえば、サーバ及びクライアントは、鍵交換プロトコルを実行する。システム300は、サーバ310に関する、多数の異なる共有行列の計算に関連するオーバーヘッドを削減するように編成される。
【0060】
サーバ310は、図1に示す第1のネットワーク110として編成されるが、基本データメモリ170が、値のシーケンス(A、A)をキャッシュするように構成されるキャッシュメモリであって、そのキャッシュされる値のシーケンスを識別する対応するシーケンス識別子と共にキャッシュするように構成されるキャッシュメモリとして構成されることを除く。キャッシュメモリ170は、複数の値のシーケンスを、関連するシーケンス識別子と共に記憶してもよい。たとえば、2つ以上の基本行列A、Aなどが存在してもよいが、これは必須ではない。
【0061】
基本データマネージャ130は、第2のネットワークノードからシーケンス識別子を受信し、受信されたシーケンス識別子に対応する値のシーケンスがキャッシュメモリにキャッシュされている否かを検証し、そのような値のシーケンスがキャッシュマトリクスにキャッシュされていない場合、第2のネットワークノードから値のシーケンスを取得することによって、シーケンスを取得するように構成される。シーケンスの取得は、上記の手法のいずれでも実行される。この実施形態では、第2のネットワークノード、たとえばクライアントは次いで、キャッシュメモリにキャッシュされた値のシーケンスに対応するシーケンス識別子をサーバに送信するように構成される。一実施形態では、その識別子を有する基本行列が第2のネットワークノードによってキャッシュされていないというメッセージが第2のネットワークノードから受信された場合、ネットワークノードは、たとえば、行列又は行列を生成するための種を送信することによって、基本行列(A)を第2のネットワークノードと共有するように構成される。
【0062】
この構成により、たとえば、同じノードとの通信が2回実行される場合、又は多数のノードが同じ値のシーケンスを使用する場合に、サーバ310の負荷がいくぶん減少する。しかしながら、一実施形態では、役割が逆転し、基本データマネージャ130は、キャッシュメモリ170にキャッシュされた値のシーケンスに対応するシーケンス識別子を、第2のネットワークノードに対して選択するように構成される。このようにして、たとえば乱数の種から基本行列を生成することに関連するオーバーヘッドが、サーバ310において大幅に回避される。
【0063】
その後、サーバ310とクライアント320との間で交換された選択データは、次いで、シーケンス識別子によって識別される値のシーケンスを使用して、共有行列を構築する。
【0064】
一実施形態では、シーケンス識別子は、さらなる乱数の種を含む。決定論的擬似乱数発生器には、さらに乱数の種が与えられる。種が与えられた決定論的擬似乱数発生器の出力から、値のシーケンスが得られる。さらなる乱数の種をシーケンス識別子に含めることによって、シーケンスがキャッシュされていない当事者は、必要時に計算することができる。
【0065】
これらの選択肢のうちのいくつかを図3bに示しており、図3bは、サーバ310と、クライアント320、たとえば図3aに示すクライアントのうちの1つとの間で実行される暗号プロトコルの詳細の一実施形態の一例を概略的に示している。
【0066】
クライアント320からサーバ310に送信される第1のメッセージ331は、メッセージ要求を含む。これはクライアント320の識別子などの追加情報を含む。それに応答して、サーバ310は第2のメッセージ332をクライアント320に送信する。第2のメッセージ332は、たとえば、さらなる乱数の種を含むシーケンス識別子を含む。サーバ310は対応する値のシーケンスを、たとえば、さらなる乱数の種から一度計算した後に、キャッシュしている。値のシーケンスは、基本行列の形式であってもよい。メッセージ332は、サーバ310によって生成された選択データをさらに含んでもよい。メッセージ332内の選択データは、乱数の種の形式であってもなくてもよい。メッセージ332は、サーバ310によって生成されたプロトコル情報をさらに含んでもよく、これは、サーバ310がこの時点で共有行列にアクセスできるので可能である。たとえば、上述の鍵交換プロトコルでは、メッセージ332は、この鍵交換を実行するために生成された公開鍵を含むことができる。メッセージ332を受信した後、クライアント320は、そのキャッシュメモリから値のシーケンスを取得するか、又は値のシーケンスがキャッシュメモリに存在しない場合、シーケンス識別子内のさらなる乱数の種から値のシーケンスを生成する。さらに、クライアント320は、値のシーケンス及び選択データから共有行列を構築する。構築された共有行列を使用して、クライアント320はプロトコルにおけるさらなる値を生成し、これらをメッセージ333によって返してもよい。たとえば、これが鍵交換プロトコルである場合、メッセージ333は、クライアント320によって、共有行列と、クライアント320の秘密鍵とから生成された公開鍵を含み得る。また、メッセージ320は、自身の秘密鍵と、メッセージ332で取得された公開鍵とから導出された鍵で暗号化された、暗号化された情報を含んでもよい。たとえば、暗号化されたデータは、たとえば、クライアント320のユーザのクレジットカード番号を含んでもよい。サーバ310は、メッセージ333を受信した場合、公開鍵と、自身の秘密鍵行列とを使用して暗号化鍵を取得し、暗号化されたデータを復号して、たとえば、クレジットカード番号を取得する。
【0067】
上記のプロトコルでは多数の変形が可能であり、たとえば第1の変形では、選択データは、サーバ310によって選択されてメッセージ320で送信されるのではなく、クライアント320によって選択されてメッセージ333でサーバ310に送信され、或いは、サーバ310によって選択されてメッセージ320で送信されるだけでなく、クライアント320によっても選択されてメッセージ333でサーバ310に送信される。後者の場合、メッセージ3333内の選択データは、シーケンス識別子によって識別される値のシーケンスと共有行列との間のマッピングを、乱数の種を使用してそれを生成することなく直接決定することが有利である。たとえば、各ノードは基本行列の置換を指定する。特定のノード、たとえばプロトコルの開始ノードは、最初に自身の置換を適用し、続いて応答ノードの置換を適用する。
【0068】
様々な実施形態において、通信インターフェースは様々な代替物から選択されてもよい。たとえば、入力インターフェースは、ローカル若しくはワイドエリアネットワーク、たとえばインターネットへのネットワークインターフェース、内部又は外部データストレージへのストレージインターフェースなどであってもよい。
【0069】
基本データメモリ170は、フラッシュメモリなどの電子メモリ、又はハードディスクなどの磁気メモリなどとして実装されてもよい。基本データメモリ170は、基本データメモリ170を共に構成する複数の別個のメモリを備えてもよい。また、基本データメモリ170は、RAMなどの一時メモリであってもよい。一時的な基本データメモリ170の場合、基本データメモリ170は、たとえばオプションのネットワーク接続(図示せず)を介してパラメータを取得することによって、パラメータを使用前に取得するいくつかの手段を含む。
【0070】
典型的には、デバイス110及び111はそれぞれ、デバイス110及び111に記憶された適切なソフトウェアを実行するマイクロプロセッサ(別途図示せず)を備え、たとえば、そのソフトウェアは、たとえばRAMなどの揮発性メモリ、又はフラッシュなどの不揮発性メモリ(別途図示せず)などの対応するメモリにダウンロード及び/又は記憶されていてもよい。また、デバイス310及び320.1-3には、マイクロプロセッサ及びメモリ(別途図示せず)が搭載されていてもよい。代替的には、デバイス110及び111は、たとえばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックで全体的又は部分的に実装されてもよい。デバイス110及び111は、いわゆる特定用途向け集積回路(ASIC)、すなわち、特定の用途向けにカスタマイズされた集積回路(IC)として全体的又は部分的に実装されてもよい。たとえば、回路は、Verilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
【0071】
一実施形態では、第1のネットワークノード110は、通信インターフェース回路、基本データマネージャ回路、行列生成ユニット回路、暗号ユニット回路、行列乗算ユニット回路、擬似乱数発生回路などを備える。デバイス100は追加の回路、たとえばキャッシュ回路などを備えてもよい。回路は、本明細書に記載の対応するユニットを実装する。回路はプロセッサ回路及びストレージ回路であってもよく、プロセッサ回路はストレージ回路に電子的に表現された命令を実行する。
【0072】
プロセッサ回路は、たとえば複数のサブプロセッサ回路として、分散して実装されてもよい。ストレージは、複数の分散サブストレージに分散されてもよい。メモリの一部又は全部は、電子メモリ、磁気メモリなどであってもよい。たとえば、ストレージは、揮発性部分と不揮発性部分とを有してもよい。ストレージの一部は読み取り専用であってもよい。また、回路は、FPGA、ASICなどであってもよい。
【0073】
以下、大きい行列に依存する鍵交換方式などにおける帯域幅及び計算要件を削減するいくつかの追加の実施形態を説明する。これは多数の接続を処理する必要があるサーバにとって特に有用であり、その理由は、そのサーバが多数の接続を処理する必要がある場合に、サーバ側の計算量を削減するために使用され得るためである。一実施形態では、以下を提案する:
- 長さL≧mnの公開された静的な値のシーケンスPを有する。
- イニシエータとサーバとの間で種を交換して、{1,...,L}の置換rを取得する。次にrを使用して、鍵交換で使用される公開されたm×n行列Aを取得する。Aの最上行は、
【数2】
に等しく、その第2行は、
【数3】
に等しく、..、そしてその最下行は、
【数4】
に等しい。
【0074】
rの要素はAの要素よりも少なく、したがってより高速かつ効率的に計算できるので、性能が向上する。値のシーケンスは、いくつかの手法で得られる。たとえば:
- 実施形態0:これは静的パラメータであってもよい。
- 実施形態1:イニシエータは、全ての通信について日毎にseed値を発行する。
- 実施形態2:イニシエータは、全ての通信について日毎に行列Aを発行する。
- 実施形態3:イニシエータは長期間用のseed_longを発行し、それに基づいてより短期間用の種を計算することができ、たとえば、seed=PRF(seed_long|time)とする。
【0075】
一部の状況では、レスポンダが多数の接続を処理するサーバであることがよくあり得るので、レスポンダが種を発行する方が理にかなっている。この種は、上記の実施形態のいずれかによるサーバ及びクライアントとは無関係な、信頼できる第三者によって計算することもできる。イニシエータ及びレスポンダは、第1及び第2のネットワークノードとみなされてもよく、逆も同様である。たとえば、イニシエータは、暗号プロトコルを開始するネットワークノードであってもよい。しかしながら、他の基準が使用されてもよく、たとえば、イニシエータは鍵照合データを使用するネットワークノードとして定義されてもよく、レスポンダは鍵照合データを生成する(鍵照合データは、両当事者が同じ共有鍵に到達することを保証するために使用されるデータである)。
【0076】
実施形態4では、メモリとCPUとの間の良好なトレードオフを提供するさらなる実施形態を説明する。
- イニシエータ、レスポンダ、又は第三者は、m×n行列Aの計算に使用される第1のseedを発行する。イニシエータは第2のseed’を計算し、擬似ランダム関数(PRF)を適用して、数字[0,...,mn-1]のランダムな置換rを取得する。
- イニシエータはseed’をレスポンダに送信する。
- レスポンダはrを取得し、置換に従ってAの成分を再配置して、Aを取得する。
- イニシエータ及びレスポンダがAを取得した後、プロトコルの残りが上記のように続く。
【0077】
実施形態4のさらなる拡張は以下を行う:
- 長さL≧mnの値のシーケンス又は基本行列などの公開シーケンスPを構築する。イニシエータとサーバとの間で種を交換して、{1,...,L}の置換rを取得する。次いでrを使用して、鍵交換で使用される公開されたm×n行列Aを取得する。Aの最上行は、
【数5】
に等しく、その第2行は
【数6】
に等しく、..、その最下行は、
【数7】
に等しい。
- rが置換であることは厳密には必須ではない。1≦i≦mnについて、1≦r≦Lが成立すればよい。
- 一実施形態では、PRFを使用してビットのシーケンスを生成し、次いでこれを置換に変換する。
【0078】
たとえば、Aビットを生成してもよく、ここで、2≧L!である。Aビットを整数と解釈し、Lehmer符号を使用して対応する置換を決定する。Lehmer符号は、置換を符号化する数学的アルゴリズムである。
【0079】
Lが大きい場合、これは扱いにくい場合があり、実装の観点からは、より少ない置換のセットが好ましい場合がある。たとえば、L=mnとする。ビットシーケンスは、それぞれが長さBのm個のブロックに分割され、ブロックiは、Pの成分(i-1)n+1、(i-1)n+2、...inの置換のラベルと見なされる。たとえば、2≧nの場合、ブロックに対応する置換は、あるi∈{0,1,...,n-1}についての、i個の位置だけの巡回シフトである。2≧n!の場合、n個の位置の任意の置換には、Bビットのラベルを付けることができる。ラベルと置換との間の対応関係は、明示的に記憶することができ(nが十分に小さい場合)、又はLehmer符号を使用して計算することもできる。
- 一実施形態では、置換は、多くの位置をそのままにしておくようなものである。これにより、必要な再配置の量が削減され、PRFから比較的少数のビットしか生成する必要がなくなる。具体例として、L=mnとする。数字のセット{1,2,...,mn}は、サイズnのm個のサブセット、たとえば、{(i-1)n,(i-1)n+1,...,in}の形式のセットに分割される。置換が行われるs個のサブセットを示すために、PRFの最初の
【数8】
ビットが使用される。次の
【数9】
ビットは、s個の選択されたサブセットのうちの各サブセットの成分が、いくつの位置だけシフトされるかを選択するために使用される。
- 一実施形態では、置換は、s回のスワップ(別名、転置)のシーケンスである。このビットシーケンスは、ビット長log(nm)の整数のシーケンス(x,x,...,x2S-1)と見なされ、置換は、位置x、xにおけるPの成分のスワップ(転置)と、続いて、位置x、xにおけるPの成分のスワップと、...、続いて、位置x2s-2、x2s-1におけるPの成分のスワップとのシーケンスからなる。
【0080】
公開シーケンスPを取得できる様々な手法がある。たとえば、公開シーケンスは、一実施形態では、業界標準で指定されてもよい。他の実施形態では、それはサーバSによって生成される。Sとの通信を希望するクライアントCは、P、又は種などのパラメータ及びPの計算方法をSから受信する。この手法では、サーバはクライアントとの複数のセッションにPを使用し、Pを再計算する必要はない。さらに他の実施形態では、Pは信頼できる第三者(TTP)によって生成及び配布される。サーバはPを記憶し、これを複数のクライアントとの通信に使用する。シーケンスPは、TTPで示される期間中のみ有効であってもよい。さらに他の実施形態では、複数のTTPが存在し、それぞれが独自の公開シーケンスPを生成する。サーバSは、そのような行列全てを記憶する。クライアントCは、実際に信頼するTTPからシーケンスを選択し、何らかの事前指定された手法でそれらを組み合わせ、この組み合わせに置換を適用する。Cは、選択されたTTPのインデックスと種とをSに送信して、Sが上記置換を取得できるようにする。行列を組み合わせ、成分を置換することにより、SはCによって実際に使用される行列を見つけることができる。
【0081】
擬似ランダム関数(PRF)は、たとえば次のように定義することができる:
- PRF1:出力が
【数10】
ビットのグループに分割される再帰ハッシュ関数。次いで各グループを使用して、異なる要素をピックアップする。
- PRF2:
【数11】
が比較的小さい数であるので、PRF1には衝突がある。代替例は、使用された数字を追跡し、出現済みのものを破棄することである。
- PRF3:他の代替例はg(mod p)に基づくものであり、ここで、
【数12】
であり、pは素数であり、gは生成元である。kは種であり、このPRFはk(mod n)を増加させて反復される。
【0082】
上記の実施形態、特に実施形態4の他の方式への応用は、以下の通りである。たとえば、暗号の格子ベースのプロトコルが、Erdem Alkimらによる「Post-quantum key exchange-a new hope」に記載されている。彼らの方式を次のように変更することができる。ベクトルaと、秘密s及びeとが与えられた場合、bはb=(as+e)modulo(x+1)として計算される。この場合のaの生成は、n個の要素しか含まないのでより容易であるが、サーバにとって、初期の種から多数のベクトルを計算する必要がある場合には、まだ困難な場合がある。代替例は、静的なp(要素のセット)を有し、ランダムな置換ベクトルrを計算することである。この手法では、計算は、b=(a[r]s+e)mod(x+1)となり、ここで、a[r]はrに応じたaの置換バージョンを表す。rはaより要素が少ないので、aよりも容易に計算することができる。
【0083】
格子ベースの公開鍵暗号化方式では、LWEなどの公開鍵はペア(b,A)で与えられる。行列Aは記憶するのにかなりのスペースをとる場合があり、或いは動的に生成される必要があり得る。代替例は、公開値のセットPを有することである。また、公開鍵として(b,seed’)を有することによって、seed’を使用して置換ベクトルrを取得し、rはPの要素が行列Aにどのようにマッピングされるかを決定し、Aを使用してbをb=As+eとして取得する。この利点は、サーバでのストレージの必要性がはるかに低くなり、計算の必要性もはるかに低くなることである。
【0084】
図4に、行列を共有するための方法400の一実施形態の一例を概略的に示す。方法400は、たとえばネットワークノード110などの、共有行列に基づく暗号プロトコル用に構成される第1の電子ネットワークノード用の電子的方法である。共有行列は複数の成分を有し、各成分は値を有する。方法400は、
- 第1のネットワークノードと第2のネットワークノード(111)との間のデジタル通信を確立するステップ(410)と、
- 共有行列の成分のための値のシーケンスを取得するステップ(420)であって、値のシーケンスは第2のネットワークノードと共有される、取得するステップ(420)と、
- 第2のネットワークノードから選択データを受信するか、又は選択データを決定し、選択データを第2のネットワークノードに送信するステップ(430)であって、選択データは、値のシーケンス内の複数の位置を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスのうちの値を割り当てる、ステップ(430)と、
- 共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列(A)を構築するステップ(440)と、
- 共有行列を暗号プロトコルに適用するステップ(450)と
を有する。
【0085】
当業者には明らかなように、この方法を実行する多くの異なる手法が可能である。たとえば、ステップの順序は変更することができ、又は一部のステップは並行に実行されてもよい。また、ステップの間に他の方法のステップが挿入されてもよい。挿入されるステップは、本明細書に記載したような方法の改良を表す場合もあれば、その方法とは無関係な場合もある。また、所与のステップは、次のステップが開始される前に、完全に終了していなくてもよい。
【0086】
本発明による方法は、プロセッサシステムに方法400を実行させるための命令を含むソフトウェアを使用して実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって実行されるステップのみを含んでもよい。ソフトウェアは、たとえば、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線若しくは無線で、又はインターネットなどのデータネットワークを使用して、信号として送信されてもよい。ソフトウェアは、ダウンロード及び/又はサーバでのリモート使用に利用できるようにしてもよい。本発明による方法は、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジックを、この方法を実行するように構成するよう構成されるビットストリームを使用して実行されてもよい。
【0087】
本発明はコンピュータプログラム、特に、本発明を実施するようになされた、キャリア上又はキャリア内のコンピュータプログラムにも拡張されることは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び部分的にコンパイルされた形式などのオブジェクトコードの形式、又は本発明による方法の実施での使用に適した他の任意の形式であってもよい。コンピュータプログラム製品に関する一実施形態は、記載した方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分化され、及び/又は、静的又は動的にリンクされる1つ又は複数のファイルに記憶されてもよい。コンピュータプログラム製品に関する他の実施形態は、記載したシステム及び/又は製品のうちの少なくとも1つの各手段に対応するコンピュータ実行可能命令を含む。
【0088】
図5aは、一実施形態による、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示しており、コンピュータプログラム1020は、行列を共有する方法をプロセッサシステムに実行させるための命令を含む。コンピュータプログラム1020は、コンピュータ可読媒体1000上に物理的なマークとして、又はコンピュータ可読媒体1000の磁化によって具現化されてもよい。しかしながら、他の任意の適切な実施形態も考えられる。さらに、コンピュータ可読媒体1000はここでは光ディスクとして図示しているが、コンピュータ可読媒体1000は、たとえば、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、記録不可でも記録可能であってもよいことは理解されよう。コンピュータプログラム1020は、行列を共有する上記方法をプロセッサシステムに実行させるための命令を含む。
【0089】
図5bに、一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは、1つ又は複数の集積回路1110を備える。1つ又は複数の集積回路1110のアーキテクチャを図5bに概略的に示している。回路1110は、一実施形態による方法を実行する、及び/又はそのモジュール若しくはユニットを実装するためのコンピュータプログラムコンポーネントを動作させるための、CPUなどの処理ユニット1120を備える。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は読み取り専用であってもよい。回路1110は、たとえば、アンテナ、コネクタ、又はその両方などの通信素子1126を備えてもよい。回路1110は、この方法で定義された処理の一部又は全部を実行するための専用集積回路1124を備えてもよい。プロセッサ1120、メモリ1122、専用IC1124、及び通信素子1126は、バスなどの相互接続1130を介して互いに接続されてもよい。プロセッサシステム1110は、アンテナ及び/又はコネクタを使用して、それぞれ接触及び/又は非接触通信用に構成されてもよい。
【0090】
たとえば、一実施形態では、第1のネットワークノードは、プロセッサ回路とメモリ回路とを備えてもよく、プロセッサはメモリ回路に記憶されたソフトウェアを実行するように構成される。たとえば、プロセッサ回路は、Intel Core i7プロセッサ、ARM Cortex-R8などであってもよい。一実施形態では、プロセッサ回路はARM Cortex M0であってもよい。メモリ回路は、ROM回路、又は不揮発性メモリ、たとえばフラッシュメモリであってもよい。メモリ回路は揮発性メモリ、たとえばSRAMメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェアインターフェース、たとえば、ハードドライブ、ネットワークインターフェースなどを備えてもよい。
【0091】
上述の実施形態は本発明を限定するのではなく例示するものであり、当業者であれば多くの代替的実施形態を設計できることに留意されたい。
【0092】
特許請求の範囲では、括弧内に置いたいかなる参照符号も、請求項を限定するものと解釈されないものとする。「備える(comprise)」という動詞及びその活用形の使用は、請求項に記載した以外の要素又はステップの存在を排除するものではない。ある要素に先行する冠詞「a」又は「an」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施されてもよい。いくつかの手段を列挙した装置の請求項では、これらの手段のいくつかは、ハードウェアの全く同一のアイテムによって具現化されてもよい。特定の措置が相異なる従属請求項に記載されているという単なる事実は、これらの措置の組み合わせが有利に使用できないことを示すものではない。
【0093】
特許請求の範囲において、括弧内の参照は、例示的な実施形態の図面中の参照符号、又は実施形態の式を指し、それによって請求項の明瞭度を高めている。これらの参照は、請求項を限定するものと解釈されないものとする。
【符号の説明】
【0094】
100 暗号システム
110 第1の電子ネットワークノード
111 第2の電子ネットワークノード
120 通信インターフェース
130 基本データマネージャ
140 行列生成ユニット
150 暗号ユニット
152 行列乗算ユニット
160 擬似乱数発生器
170 基本データメモリ
210 値のシーケンス
221、222 値
230 共有行列
231、232 共有行列の成分
233 選択データ
241、242 第1のグループ
251、252 第2のグループ
260 基本行列
261-263 行
300 暗号システム
310 サーバ
320、320.1-320.3 クライアント
331-333 送信
図1
図2a
図2b
図2c
図3a
図3b
図4
図5a
図5b