(57)【要約】  共有行列に基づく暗号プロトコル用に構成されるネットワークノード１１０を提供する。ネットワークノードは、選択データと、共有された値のシーケンスとに従って、共有行列（Ａ）を構築するように構成される。共有行列の複数の成分は、選択データによって割り当てられたデータのシーケンスの複数の値に割り当てられる。共有行列は暗号プロトコルに適用される。
2020511832.tif 000002
【特許請求の範囲】
【請求項１】
共有行列に基づく暗号プロトコル用の第１の電子ネットワークノードであって、前記共有行列は複数の成分を有し、各成分は値を有し、前記第１の電子ネットワークノードは、
第２のネットワークノードとのデジタル通信用の通信インターフェースと、
プロセッサ回路とを備え、当該プロセッサ回路が、
前記共有行列の値の選択元になる値のシーケンスを取得し、前記値のシーケンスは前記第２のネットワークノードと共有され、
前記第２のネットワークノードから選択データを受信するか、又は選択データを決定し、前記選択データを前記第２のネットワークノードに送信し、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記値のシーケンスのうちの値を割り当て、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データ及び前記値のシーケンスに従って前記共有行列を構築し、
前記共有行列を前記暗号プロトコルに適用する、第１の電子ネットワークノード。
【請求項２】
前記プロセッサ回路は、前記値のシーケンス内の所定の第１の値のグループを、前記共有行列の対応する所定の第２の成分のグループに対して選択し、前記選択データは、前記第２のグループ内の成分に対する前記第１のグループ内の複数の位置を示して、前記第２のグループ内の各成分に前記第１のグループから値が割り当てられるようにし、前記第２のグループは前記共有行列よりも少ない成分を有する、請求項１に記載の第１の電子ネットワークノード。
【請求項３】
前記第２のグループ内の成分に対する前記第１のグループ内の前記複数の値を示す前記選択データの一部は、前記第２のグループ内の値の合計ビットサイズの１／１００未満のビットサイズを有する、請求項２に記載の第１の電子ネットワークノード。
【請求項４】
前記選択データは複数のパラメータを含み、前記プロセッサ回路は、前記選択データ内のパラメータから、前記値のシーケンス内の少なくとも１つの成分と、前記共有行列内の少なくとも１つの成分とを計算し、前記計算は、前記パラメータに関して線形であり、前記値のシーケンス内の前記計算された成分の値を、前記共有行列内の成分に割り当てる、請求項１乃至３のいずれか一項に記載の第１の電子ネットワークノード。
【請求項５】
前記値のシーケンスは基本行列を形成し、前記選択データは、前記基本行列の少なくとも１つの行及び／又は列を回転させる成分数を示すことによって、前記行及び／又は列の巡回置換を示す、請求項２、３又は４に記載の第１の電子ネットワークノード。
【請求項６】
前記選択データは乱数の種を含み、前記プロセッサ回路は、
決定論的擬似乱数発生器に前記乱数の種を与え、前記決定論的擬似乱数発生器の出力から、前記値のシーケンス内の前記複数の値、及び／又は前記共有行列内の前記複数の成分の指示を取得する、請求項１乃至５のいずれか一項に記載の第１の電子ネットワークノード。
【請求項７】
前記選択データは置換の表現を含み、前記プロセッサ回路は、前記置換の表現に従って前記値のシーケンスを置換し、デフォルトの割り当てに従って、前記置換された値のシーケンスを前記共有行列の成分に割り当てる、請求項１乃至６のいずれか一項に記載の第１の電子ネットワークノード。
【請求項８】
前記プロセッサ回路は、前記暗号プロトコルの一部として、前記共有行列と、前記第１の電子ネットワークノードの秘密ベクトル又は行列との行列積を計算する、請求項１乃至７のいずれか一項に記載の第１の電子ネットワークノード。
【請求項９】
前記第１の電子ネットワークノード及び前記第２のネットワークノードは、鍵交換プロトコル用に構成され、前記プロセッサ回路は、
秘密鍵行列を生成し、
公開鍵行列を生成し、前記生成は少なくとも、
前記共有行列と、前記秘密鍵行列との行列積を計算して、行列積を取得することと、
前記第１の電子ネットワークノードの前記公開鍵行列を前記第２のネットワークノードに送信することと、
前記第２のネットワークノードの公開鍵行列を受信することと、
前記第２のネットワークノードの受信された前記公開鍵行列と、前記第１の電子ネットワークノードの前記秘密鍵行列との行列積として生鍵を計算することであって、前記第１の電子ネットワークノードはさらに、少なくとも前記生鍵から共有鍵を計算する、計算することと
を含む、
請求項８に記載の第１の電子ネットワークノード。
【請求項１０】
前記第１の電子ネットワークノード及び前記第２のネットワークノードは、公開鍵暗号化プロトコル用に構成され、前記プロセッサ回路は、
第２のネットワークノードの公開鍵を取得し、前記公開鍵は、前記選択データと、さらなる公開鍵行列とを含み、前記さらなる公開鍵行列は、前記共有行列及び秘密鍵行列から事前に取得されており、
ランダムベクトルを選択し、前記ランダムベクトル及び前記共有行列と、前記ランダムベクトル及び前記さらなる公開鍵行列との２つの行列積を計算し、
前記２つの行列積のうちの第１の行列積から計算されるブラインドベクトルを加算することにより、平文メッセージから暗号化されたメッセージを計算し、前記暗号化されたメッセージは、前記２つの行列積のうちの第２の行列積から計算される復号情報をさらに含む、請求項８に記載の第１の電子ネットワークノード。
【請求項１１】
前記値のシーケンスをキャッシュするキャッシュメモリを備え、前記共有行列の前記複数の成分には、前記キャッシュメモリにキャッシュされた前記値のシーケンスのうちの値が割り当てられる、請求項１乃至１０のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１２】
値のシーケンスをキャッシュするキャッシュメモリであって、前記キャッシュされる値のシーケンスを識別する対応するシーケンス識別子と共にキャッシュする、キャッシュメモリ
を備え、前記プロセッサ回路は、
前記第２のネットワークノードからシーケンス識別子を受信し、前記受信されたシーケンス識別子に対応する値のシーケンスが前記キャッシュメモリにキャッシュされているか否かを検証し、そのような値のシーケンスがキャッシュマトリクスにキャッシュされていない場合、前記第２のネットワークノードから前記値のシーケンスを取得し、及び／又は前記キャッシュメモリにキャッシュされた値のシーケンスに対応するシーケンス識別子を前記第２のネットワークノードに送信し、
前記シーケンス識別子によって識別される前記値のシーケンスを使用して、前記共有行列を構築する、請求項１乃至１１のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１３】
前記シーケンス識別子はさらなる乱数の種を含み、前記値のシーケンスを取得又は共有することは、決定論的擬似乱数発生器に前記さらなる乱数の種を与えることと、種が与えられた前記決定論的擬似乱数発生器の出力から前記値のシーケンスを導出することとを含む、請求項１１又は１２に記載の第１の電子ネットワークノード。
【請求項１４】
前記値のシーケンスは信頼できる第三者から取得される、請求項１乃至１３のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１５】
単一の値のシーケンスから異なる選択データを使用して取得可能な異なる共有行列の数は、少なくとも２６４個である、請求項１乃至１４のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１６】
複数の第２のネットワークノードからの暗号化されたネットワーク接続を受け入れ、前記第１の電子ネットワークノードは、第２のネットワークノードからの接続要求を、応答メッセージを送信することによって受け入れ、前記応答メッセージは乱数の種を含み、前記乱数の種は、前記第１の電子ネットワークノードのキャッシュメモリに記憶された値のシーケンスを示し、前記第２のネットワークノードは選択データを前記第１の電子ネットワークノードに送信する、請求項１乃至１５のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１７】
請求項１乃至１６のいずれか一項に記載の第１の電子ネットワークノードと、第２のネットワークノードとを備える電子ネットワークシステムであって、前記第２のネットワークノードは、前記共有行列に基づく前記暗号プロトコル用に構成され、前記第２のネットワークノードは、
前記第１の電子ネットワークノードとのデジタル通信用の通信インターフェースと、
プロセッサ回路とを備え、前記プロセッサ回路は、
前記第１の電子ネットワークノードと同じ値のシーケンスを取得し、前記共有行列の値は前記値のシーケンスから選択され、
選択データを決定し、前記選択データを前記第１の電子ネットワークノードに送信するか、又は前記第１の電子ネットワークノードから選択データを受信し、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記値のシーケンスのうちの値を割り当て、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データ及び前記値のシーケンスに従って、前記第１の電子ネットワークノードと同じ共有行列を構築し、
前記共有行列を前記暗号プロトコルに適用する、電子ネットワークシステム。
【請求項１８】
共有行列に基づく暗号プロトコル用の第１の電子ネットワークノード用の電子的方法であって、前記共有行列は複数の成分を有し、各成分は値を有し、前記電子的方法は、
前記第１の電子ネットワークノードと第２のネットワークノードとの間にデジタル通信を確立するステップと、
前記共有行列の値の選択元になる値のシーケンスを取得するステップであって、前記値のシーケンスは前記第２のネットワークノードと共有される、取得するステップと、
前記第２のネットワークノードから選択データを受信するか、又は選択データを決定し、前記選択データを前記第２のネットワークノードに送信するステップであって、前記選択データは、前記値のシーケンス内の複数の位置を示し、前記共有行列の複数の成分に、前記選択データによって示される前記値のシーケンスのうちの値を割り当てる、ステップと、
前記共有行列の前記複数の成分を、前記選択データによって割り当てられた前記複数の値に設定することによって、前記選択データに従って前記共有行列を構築するステップと、
前記共有行列を前記暗号プロトコルに適用するステップと
を有する、電子的方法。
【請求項１９】
プロセッサシステムに請求項１８に記載の方法を実行させる命令を表す一時的又は非一時的データを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有行列に基づく暗号プロトコル用に構成される電子ネットワークノード、そのような電子ネットワークノード用の電子的方法、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
プロトコルを実行する２つのノード間で共有される行列に基づく暗号プロトコルが多数存在する。共有行列は典型的には公開されているが、両当事者は、計算を実行する当事者にとって秘密のデータを使用して、たとえば秘密情報を使用して、共有行列に対して演算を行う。そのような暗号プロトコルを攻撃することは格子ベースの問題につながり、たとえば攻撃者は、プロトコルを攻撃するには最短ベクトル格子問題などの格子問題を解く必要がある。格子問題は量子安全（ｑｕａｎｔｕｍ  ｓａｆｅ）であることが期待されており、したがってこれは活発な研究分野である。
【０００３】
これらのプロトコルのうちのいくつかを、動機付けの例として本明細書で簡単に説明する。とはいえ、手短に言えば、ノードは典型的には共有行列を自身の秘密情報と組み合わせる。たとえば、ネットワークノードは、暗号プロトコルの一部として、共有行列と、ネットワークノードの秘密ベクトル又は行列との行列積を計算する。たとえば、ノイズが計算結果に加算され、ノイズは、たとえば、乗算結果に加算されるノイズベクトル若しくは行列の形式、又は結果の丸め若しくはスケーリングの形式である。ノイズを加算した後でも、結果には、他のノードにとって有用な動作、たとえば、署名、暗号化、鍵合意などを実行するのに十分な秘密鍵に関する情報が含まれているが、他のノードの秘密データを復元するのに十分な情報は含まれていない。加算されたノイズを補正するために、鍵照合（ｋｅｙ  ｒｅｃｏｎｃｉｌｉａｔｉｏｎ）が使用される。
【０００４】
そのような格子ベースの暗号の出発点は、ネットワークノード１１０及び１１１などの両当事者が共有行列にアクセスできることである。この行列は典型的にはランダムに選択され、非常に大きい。共有行列は複数の成分を有し、各成分は値を有する。たとえば、共有行列は、たとえば５００×５００、さらにはそれ以上の次元を有する。例示的な計算では、次元５１２＝２９の正方共有行列を使用することにする。共有行列の成分は、典型的には法ｑを法とするものであり、法ｑは、たとえば２１０である。したがって、共有行列は、約２９・２９・２１０＝２２８ビットの情報を表現する。
【０００５】
共有行列は公開されていることが多く、平文データとして送信することができるが、明らかにそのような大量の情報には問題があり、これは特に、暗号プロトコルの重要なアプリケーションがモノのインターネットであることが期待されており、モノのインターネットでは、リソースが制限されたノードが、暗号で保護されるべきデータに演算を行うという事実を踏まえた場合である。たとえば、ノードはセンサネットワークを形成する。
【０００６】
２つのノード間で大きい行列が共有されるという要件によって生じるオーバーヘッドを削減する第１の手法は、同じ行列を何度も再利用するものである。残念ながら、これは暗号学的な問題につながる。攻撃者は、今後の暗号交換において共有行列が使用されることを知っている場合、その行列に関する広範な事前計算を実行することができる。そのような事前計算の攻撃の例は、たとえば、有限体Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎに対するＬｏｇｊａｍ攻撃である。一方、暗号プロトコルの実行ごとに新たな共有行列が使用される場合、攻撃者には実行ごとに新たな格子問題が提示されることになるので、同じ行列を再利用しないことが望ましい。
【０００７】
大きい共有行列によって生じるオーバーヘッドを削減する第２の手法は、共有行列の代わりに乱数の種を送信するものである。次いで、乱数の種を使用して決定論的乱数発生器に種を与え、決定論的乱数発生器は共有行列を生成する。多くの決定論的乱数発生器が知られている。残念ながら、この手法では、送信オーバーヘッドは計算オーバーヘッドと引き換えになる。リソースが制限されたデバイスは、共有行列を生成するために長時間計算しなくてはならなくなる。この問題は、多くの同時計算を同時に処理する大規模なサーバにとっても同様に困難である。そのうえ、攻撃者がそのようなサーバに多くの乱数発生を実行させることができる場合、これはサービス妨害攻撃につながる。攻撃者はサーバとの多数の接続を開始し、サーバが乱数の種から共有行列を生成することに専念した後に、サーバを放置することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
これら及びその他の問題に対処する、共有行列に基づく暗号プロトコル用に構成される電子ネットワークノードを提供する。共有行列は複数の成分を有し、各成分は値を有する。参照しやすくするために、ネットワークノードを第１のネットワークノードとして識別し、それが通信する第２のネットワークノードと区別する。「第１の」及び「第２の」という形容詞には、それ以上の意味はない。
【課題を解決するための手段】
【０００９】
第１のネットワークノードは、
−  第２のネットワークノードとのデジタル通信用に構成される通信インターフェースと、
−  プロセッサ回路であって、
−  共有行列の成分のための値のシーケンスを取得し、値のシーケンスは第２のネットワークノードと共有され、
−  第２のネットワークノードから選択データを受信するか、又は選択データを決定し、選択データを第２のネットワークノードに送信し、選択データは、値のシーケンス内の複数の位置を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスのうちの値を割り当て、
−  共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列を構築し、
−  共有行列を暗号プロトコルに適用する
プロセッサ回路と
を備える。
【００１０】
選択データは、値のシーケンスよりもはるかに少ないビットで記述することができる。たとえば、一実施形態では、選択データのビットサイズは、選択データによって示され、共有行列の成分に割り当てられる値のシーケンスの値よりも小さく、好ましくは半分未満であり、好ましくは１／１０未満である。たとえば、いくつかの実施形態では、共有行列内の成分のグループにデータを割り当てるのに必要な選択データの量は、データ自体を記述するのに必要なデータ量の１／１００未満である。選択データが乱数発生器から生成される場合、これが選択データを送信するノード、又は選択データを受信するノードのいずれで行われるかに関係なく、共有行列自体の値を生成するよりも少ないデータを生成するだけでよい。特に、第２のノードへの多数の接続を有するサーバなどのノードの場合、これはネットワークノードを動作させる際に大幅な違いをもたらす。データ自体を送信するために必要な帯域幅と比較して、大幅な削減も得られる。
【００１１】
一実施形態では、ノードは値のシーケンスをキャッシュし、これを複数の接続に使用する。たとえば、一実施形態では、ノードは、使用する値のシーケンスを識別するシーケンス識別子を送信又は受信することができる。識別子は、たとえば、値のシーケンスに対するハッシュとすることができるが、有利な実施形態では、シーケンス識別子は、値のシーケンスが生成される元になる乱数の種を含む。このようにして、シーケンス識別子の受信機は、キャッシュメモリからシーケンス識別子を取得することができ、又は値のシーケンスを生成することもできる。
【００１２】
この手法で共有される異なる行列に関して攻撃者が取得する格子は、基になる値のシーケンスが同じであっても異なる。特に、異なる格子の数の方がより多い場合、攻撃者の優位性は大幅に減少する。
【００１３】
ネットワークノードは電子デバイスである。ネットワークノードは、携帯電話などのモバイル電子デバイスであってもよい。ネットワークノードは、セットトップボックス、スマートカード、コンピュータなどであってもよい。
【００１４】
本明細書に記載の行列を共有する方法は、広範囲の実際のアプリケーションに適用される。そのような実際なアプリケーションには、金融アプリケーション、たとえば、クレジットカード情報を共有するもの、プライバシー強化アプリケーション、たとえば、メッセージングアプリケーション、メディアルアプリケーションなどが含まれる。
【００１５】
本発明による方法は、コンピュータで実施される方法としてコンピュータ上で、若しくは専用のハードウェアで、又はその両方の組み合わせで実施される。本発明による方法の実行可能なコードは、コンピュータプログラム製品に記憶される。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、そのコンピュータプログラム製品がコンピュータ上で実行された場合に、本発明による方法を実行するための、コンピュータ可読媒体に記憶された非一時的プログラムコードを含む。
【００１６】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムをコンピュータ上で動作させた場合に、本発明による方法の全てのステップを実行するようになされたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上で具現化される。
【００１７】
本発明の他の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様が使用されるのは、コンピュータプログラムが、たとえば、Ａｐｐｌｅ社のＡｐｐ  Ｓｔｏｒｅ、Ｇｏｏｇｌｅ社のＰｌａｙ  Ｓｔｏｒｅ、又はＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ  Ｓｔｏｒｅにアップロードされている場合であって、コンピュータプログラムが、そのようなストアからダウンロード可能な場合である。
【００１８】
本発明のさらなる詳細、態様、及び実施形態を、単なる例として、図面を参照して説明する。図中の要素は単純化及び明確化のために示しており、必ずしも縮尺通りに描いていない。図中では、説明済みの要素に対応する要素は、同じ参照番号を有する場合がある。
【図面の簡単な説明】
【００１９】
【図１】暗号システムの一実施形態の一例を概略的に示す図である。
【図２ａ−２ｃ】選択データの一実施形態の一例を概略的に示す図である。
【図３ａ】暗号システムの一実施形態の一例を概略的に示す図である。
【図３ｂ】暗号プロトコルの詳細の一実施形態の一例を概略的に示す図である。
【図４】行列を共有するための方法の一実施形態の一例を概略的に示す図である。
【図５ａ】一実施形態によるコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す図である。
【図５ｂ】一実施形態によるプロセッサシステムの概略図である。
【発明を実施するための形態】
【００２０】
本発明は多くの異なる形態での具現化が可能であるが、図面に示し、本明細書で詳細に説明するのは１つ又は複数の特定の実施形態であって、本開示が本発明の原理の例示と見なされるべきであり、本発明を図示及び説明した特定の実施形態に限定することを意図するものではないという理解に基づくものである。
【００２１】
以下では、理解のために、動作時の実施形態の要素を説明する。しかしながら、それぞれの要素が、それらによって実行されるように説明している機能を実行するように構成されることは明らかであろう。さらに、本発明は実施形態に限定されるものではなく、本発明は本明細書に記載した又は相異なる従属請求項に列挙した一つ一つの新規な特徴又は特徴の組み合わせにある。
【００２２】
図１に、暗号システム１００の一実施形態の一例を概略的に示す。暗号システム１００は、複数のネットワークノードを備える。図１に示しているのは、第１のネットワークノード１１０及び第２のネットワークノード１１１である。ノード１１０及び１１１は、送信機−受信機の関係を有することを除いて、大部分が同じ設計のものである。システム１００内のネットワークノードは、共有行列に基づく暗号プロトコルを実行するように構成され、具体的には、第１のネットワークノード１１０及び第２のネットワークノード１１１が、そのような暗号プロトコル用に構成される。暗号プロトコルの実行ごとに、新たな共有行列が使用されることが好ましい。
【００２３】
ネットワークノード１１０は暗号ユニット１５０を備える。暗号ユニット１５０は、共有行列を使用する暗号プロトコルを実行するように構成される。背景技術において指摘したように、多くのそのような暗号プロトコルが存在し、全てが、２つの当事者間で共有される大きい行列を必要とする。多くの場合、暗号プロトコルの一部として、共有行列と、ネットワークノードの秘密ベクトル又は行列との行列積が計算される。たとえば、暗号ユニット１５０は、行列乗算を計算するように構成される行列乗算ユニット１５２を備える。
【００２４】
共有行列を使用する暗号プロトコルの第１の例は、鍵交換プロトコルである。たとえば、第１のノードは、
−  秘密鍵行列（ＳＩ）を生成し、
−  公開鍵行列（ＰＩ）を生成し、その生成は少なくとも、
−  共有行列（Ａ）と秘密鍵行列（ＳＩ）との行列積を計算して、行列積を取得することと、
−  第１のネットワークノードの公開鍵行列を第２のネットワークノードに送信することと、
−  第２のネットワークノードの公開鍵行列（ＰＲ）を受信することと、
−  第２のネットワークノードの受信された公開鍵と、第１のネットワークノードの秘密鍵行列との行列積として生鍵（ｒａｗ  ｋｅｙ）を計算することであって、第１のネットワークノードは、少なくとも生鍵から共有鍵を計算するようにさらに構成される、計算することと
を含む
ように構成される。
【００２５】
公開鍵行列（ＰＩ）の生成中にノイズを導入することにより、攻撃者が公開鍵及び共有鍵の知識から秘密鍵を再構築できることが回避される。この鍵合意プロトコルは、加算されたノイズを除いて、
【数１】
2020511832.tif 000003
が第１及び第２のネットワークノードの両方で同じであるという事実に基づいている。共有行列（Ａ）と秘密鍵行列（ＳＩ）との行列積の計算は、ある法の下で行われる。ノードの一方は鍵照合データを計算し、それを他方のノードに送信して、両者が行列積から同じ共有鍵を計算するようにすることができる。格子ベースの鍵合意プロトコルのより詳細な説明は、Ｊ．Ｂｏｓ、Ｃ．Ｃｏｓｔｅｌｌｏ、Ｌ．Ｄｕｃａｓ、Ｉ．Ｍｉｒｏｎｏｖ、Ｍ．Ｎａｅｈｒｉｇ、Ｖ．Ｎｉｋｏｌａｅｎｋｏ、Ａ．Ｒａｇｈｕｎａｔｈａｎ、Ｄ．Ｓｔｅｂｉｌａによる論文「Ｆｒｏｄｏ：  Ｔａｋｅ  ｏｆｆ  ｔｈｅ  ｒｉｎｇ！  Ｐｒａｃｔｉｃａｌ，Ｑｕａｎｔｕｍ−Ｓｅｃｕｒｅ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ  ｆｒｏｍ  ＬＷＥ」に与えられている（これは引用により本明細書に含まれ、「Ｆｒｏｄｏ」と呼ばれる）。
【００２６】
格子ベースの暗号プロトコルの第２の例は、公開鍵暗号化／復号アルゴリズムである。たとえば、ネットワークノードは、
−  第２のネットワークノードの公開鍵を取得し、公開鍵は選択データと、さらなる公開鍵行列（Ｂ）とを含み、さらなる公開鍵行列は、共有行列及び秘密鍵行列（Ｓ）から事前に取得されており、
−  ランダムベクトルｒを選択し、ランダムベクトル（ｒ）及び共有行列と、ランダムベクトル（ｒ）及びさらなる公開鍵行列との２つの行列積（たとえば、ａ’＝ＡＴｒ、ｂ’＝ＢＴｒ）を計算し、
−  ２つの行列積のうちの第１のものから計算されるブラインドベクトルを加算することにより、平文メッセージから暗号化されたメッセージを計算し、暗号化されたメッセージは、２つの行列積のうちの第２のものから計算される復号情報をさらに含む
ように構成される。
【００２７】
また、この例では、たとえばスケーリングの形式でノイズが加算される。格子ベースの公開鍵暗号化プロトコルの詳細な例は、Ｊ．Ｈ．Ｃｈｅｏｎ、Ｄ．Ｋｉｍ、Ｊ．Ｌｅｅ、Ｙ．Ｓｏｎｇによる論文「Ｌｉｚａｒｄ：  Ｃｕｔ  ｏｆｆ  ｔｈｅ  Ｔａｉｌ！  Ｐｒａｃｔｉｃａｌ  Ｐｏｓｔ−Ｑｕａｎｔｕｍ  Ｐｕｂｌｉｃ−Ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  ＬＷＥ  ａｎｄ  ＬＷＲ」に載っている（これは引用により本明細書に導入されている）。
【００２８】
図１に戻る。このように、２つのノード間で共有される行列をどのようにして取得するかという問題がある。共有行列は複数の成分を有し、各成分は値を有する。行列の行及び列を参照する。一例では、行数及び列数の少なくとも一方は、５０、１００、５００などよりも大きい。便宜上、共有行列は正方行列とするが、これは必須ではない。たとえば、次元の一方が１の場合、行列はベクトルであるが、両方の次元が大きいとき、たとえば、行数及び列数の両方が５０、１００、５００などより大きい場合に、最も多くの利点が得られる。
【００２９】
第１及び第２のネットワークノードはそれぞれ、通信インターフェース１２０を備える。第１のネットワークノード１１０の通信インターフェース１２０は、第２のネットワークノード１１１とのデジタル通信用に構成される。典型的には、通信インターフェース１２０は、システム１００内の他のノードの多くと通信するように構成される。
【００３０】
通信インターフェースは、鍵合意システム内の他のノードとのデジタル通信用に構成される。ただし、システム内の全てのノードに常時連絡を取れる必要はない。通信インターフェース１２０は、デジタル通信用に構成される。たとえば、通信インターフェースは、コンピュータネットワークを介して通信するように構成される。たとえば、通信インターフェースは、無線、たとえば、Ｗｉ−Ｆｉ（登録商標）、ＺｉｇＢｅｅ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）など、及び／又は有線通信、たとえば、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢなど用に構成される。ノード１１０及び１１１の間の通信は、有線接続と無線接続との組み合わせであってもよい。たとえば、ノード１１０及び１１１を含むシステム１００内のノードは、システム１００内でノードを一意に識別する通信識別子を含む電子ストレージを備える。たとえば、通信識別子を、ノード１１０及び１１１の間で交換されるデジタルメッセージに含めて、たとえば、メッセージをアドレス指定する。たとえば、通信識別子は、ＩＰアドレス、ＭＡＣアドレスなどである。
【００３１】
電子ネットワークノードは、上記の鍵交換又は公開鍵暗号化プロトコルの例などの暗号プロトコル用に構成される。暗号プロトコルは、通信インターフェース１２０を介してノード１１０及び１１１の間でメッセージを交換することと、他のノードから受信されたデータなどに対して計算を実行することとを含む。プロトコルの実行はプロセッサ回路において実装され、その例を以下に示す。図１は、プロセッサ回路の機能ユニットである機能ユニットを示している。たとえば、図１は、プロセッサ回路の可能な機能編成の青写真として使用される。プロセッサ回路は、図１のユニットとは別に図示していない。たとえば、図１に示す機能ユニットは、ネットワークノードに記憶され、ネットワークノードのマイクロプロセッサによって実行可能なコンピュータ命令で全体的又は部分的に実装される。ハイブリッドの実施形態では、機能ユニットは、部分的にハードウェアで、たとえば暗号コプロセッサなどのコプロセッサとして、また、部分的に、ネットワークノードに記憶され、その上で実行されるソフトウェアで実装される。
【００３２】
ネットワークノード１１０は、共有行列の成分のための値のシーケンスを取得するように構成される基本データマネージャ１３０を備え、値のシーケンスは第２のネットワークノードと共有される。また、ネットワークノード１１０は、共有された値のシーケンスを、取得後などに、記憶するように構成される基本データメモリ１７０を備える。
【００３３】
共有行列Ａの成分と同様に、値のシーケンスの値は、ある法の下で選択される。値のシーケンスは、基本データ、又は基本値などとも呼ぶ。値のシーケンスは、共有行列を埋めるために使用される。値のシーケンスから共有行列の成分へのマッピングが、はるかに少ないビットで送信することができ、又は値のシーケンス自体よりもはるかに少ない擬似ランダム出力から計算されることは発明者の洞察であった。値のシーケンスから共有行列が構築されるやり方を変えることにより、同じ基本データから多数の異なる共有行列を取得することができる。このようにして、毎回異なる共有行列を使用することによる暗号学的な利点が、同じ値のシーケンスを再利用することによる少ないオーバーヘッドと組み合わせられる。
【００３４】
基本データマネージャ１３０が第２のネットワークノードと共有される基本データを取得するいくつかの手法がある。
【００３５】
第１の例では、基本データメモリ１７０は、値のシーケンスを事前に記憶する。たとえば、システム１００内の複数のネットワークノードには、ある時点で、たとえば最初の使用時、製造中、信頼できる場所などで、シーケンスが提供される。共有される値のシーケンスは固定シーケンス、たとえば、規格で固定されたものなどであってもよい。この場合、基本マネージャ１３０は、値のシーケンスが記憶された基本データメモリ１７０へのアクセスを提供する以上のことはほとんどしない。このタイプの実施形態では、基本データメモリ１７０、又は共有される値のシーケンスが記憶されるその一部は、ＲＯＭメモリである。
【００３６】
第２の例では、値のシーケンスは信頼できる第三者から取得される。たとえば、定期的に、基本データマネージャ１３０は、たとえばコンピュータネットワークを介して信頼できる第三者と連絡を取って、新たな値のシーケンスを取得する。たとえば、基本データマネージャ１３０は、そのような新たなシーケンスを定期的に、たとえば３０日に１回、たとえば毎月の始めなどに取得するように構成される。
【００３７】
送信オーバーヘッドを削減するために、基本データマネージャ１３０は、共有される値のシーケンスを乱数の種として取得する。たとえば、第１のネットワークノード１１０は、決定論的擬似乱数発生器１６０を備える。擬似乱数発生器は乱数の種が与えられ、値のシーケンスを計算するために使用される。種は様々なソースから取得され、たとえば、製造中などに事前にプログラムされ、たとえば、第２のネットワークノードから受信され、たとえば、信頼できる第三者から受信されるなどされる。また、選択データが第１のネットワークノードで生成され、第２のネットワークノードに送信される。
【００３８】
値のシーケンスは暗号プロトコルの複数回の実行に使用され、たとえば、値のシーケンスを少なくとも２回使用して、第２のネットワークノードと共有される少なくとも２つの異なる共有行列を構築する。一実施形態では、値のシーケンスは複数のネットワークノード、たとえば、システム１００の複数のネットワークノードのそれぞれと共有される。後者は必須ではないが、たとえば、特定の値のシーケンスが第１及び第２のネットワークノードのみによって使用され、たとえば、第１及び第２のネットワークノードが初めてやりとりするときに、乱数の種を交換して、以後それらの間で使用される値のシーケンスを生成する。以下、シーケンスのキャッシングを使用するさらなる実施形態を説明する。
【００３９】
擬似乱数発生器１６０は、Ｍｅｒｓｅｎｎｅ  ｔｗｉｓｔｅｒなどの高速線形フィードバック発生器であってもよい。ただし、暗号学的に安全な乱数発生器が好ましい。たとえば、擬似乱数発生器１６０は、いわゆるｎｅｘｔ−ｂｉｔ  ｔｅｓｔを満足する。すなわち、ランダムシーケンスの最初のｋビットが与えられた場合に、５０％を超える無視できないほどの成功確率で（ｋ＋１）ビットを予測できる多項式時間アルゴリズムは存在しない。多くの暗号学的に安全な乱数発生器が知られており、たとえば、カウンタモードで動作するブロック暗号、カウンタモードの高度暗号化標準（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などがある。安全な乱数発生器は、ＳＨＡ−２５６などのハッシュ関数をカウンタモードで動作させることによっても得られる。また、たとえば、Ｍｅｒｓｅｎｎｅ  ｔｗｉｓｔｅｒからの出力に基づいて暗号ストリームの暗号のペアを生成することにより、Ｍｅｒｓｅｎｎｅ  ｔｗｉｓｔｅｒの安全性が保証される。さらなる例には、Ｂｌｕｍ−ｂｌｕｍ−ｓｈｕｂ発生器、Ｂｌｕｍ−Ｍｉｃａｌｉ発生器などが含まれる。
【００４０】
ネットワークノード１１０は、行列生成ユニット１４０を備える。行列生成ユニット１４０は、共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列（Ａ）を構築するように構成される。したがって、選択データは、共有された値のシーケンスと、共有行列の成分との間のマッピングを記述する。選択データは、たとえば通信インターフェース１２０を介して第２のネットワークノードから取得される。値のシーケンスは、選択データによって実際の共有行列Ａに変換される。
【００４１】
生成ユニット１４０は、選択データ自体を決定し、選択データを第２のネットワークノードに送信してもよい。たとえば、選択データが、様々な実施形態に示すように、タプル、置換（ｐｅｒｍｕｔａｔｉｏｎ）、回転パラメータなどを含む場合、生成ユニット１４０は、生成された選択データとして、これらをランダムに選択することができる。生成された選択データは、第２のネットワークノードに送信される。選択データが決定論的乱数発生器の出力から導出される場合、発生器の種を代わりに第２のネットワークノードに送信することができる。
【００４２】
したがって、選択データは値のシーケンス内の複数の値を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスの値を割り当てる。一実施形態では、共有行列の全ての成分は、それらの値を値のシーケンスから受け取るが、各成分がその値を、選択データによって示される値のシーケンス内の位置から受け取る必要はなく、共有行列の一部の成分はそれらの値を、値のシーケンス内の固定位置から受け取ってもよい。図２ａ、図２ｂ、図２ｃを参照して、いくつかの例を説明する。
【００４３】
図２ａに、選択データの一実施形態の一例を概略的に示す。選択データは値のシーケンス２１０内の位置を特定し、値２２１及び２２２を図示しており、これらは共有行列２３０内の位置に割り当てられ、成分２３１及び２３２を図示している。
【００４４】
たとえば、選択データはタプルのシーケンスを含み、各タプルは値のシーケンス内のインデックスと、共有行列内のインデックスとを含む。たとえば、値のシーケンスは線形にインデックス付けされ、たとえば、自然数などを使用して連続的にカウントされる。たとえば、共有行列も、単一の番号でインデックス付けされ、たとえば連続的に番号付けされるが、たとえば、列及び行をそれぞれ示すｘ及びｙ座標によってインデックス付けされてもよい。選択データは、たとえば、｛（４，（２，５）），（７，（３，３）），．．．｝を含むことによって、値のシーケンス内のインデックス４の値が共有行列の位置（２，５）に配置されることを示すなどする。選択データは共有行列の成分の実際の値を含まず、代わりに、共有行列の実際の値は値のシーケンスから選択される。一実施形態では、選択データは、補正データで補われる。たとえば、補正データは、増分若しくは減分を含むか、又は新たな値を含むことなどにより、共有行列内の値がどのように変更されるかを示すデータを含む。そのような補正データは、生成ユニット１４０によっても適用される。補正データはあまり有利ではないと考えられ、新たな値を送信するには多くのビットが必要であり、補正データの各項目は共有行列の単一の要素にしか影響せず、一方、選択データは少数のビットのみで指定されるが、共有行列の多数の成分に影響を与える。小さい増分／減分はより少ないビットで指定できるが、結果の格子への影響は比較的少なく、実際には、共有行列との行列乗算後に加算されるノイズ内で消えかねない。
【００４５】
共有行列のある位置（ｉ，ｊ）が選択データに出現しないことが起こり得る。これは、その位置にデフォルト値、たとえば所定の値を与えることによって解決される。これはまた、その位置に値のシーケンスのデフォルトの位置から値を与えることによって解決される。
【００４６】
たとえば、選択データは置換の表現を含んでもよい。その際、割り当ては、置換の表現に従って値のシーケンスを置換し、デフォルトの割り当てに従って、置換された値のシーケンスを共有行列の成分に割り当てることによって機能する。たとえば、置換が全単射関数σとして表される場合、これは、たとえば行方向又は列方向など、共有行列Ａの成分に番号付けする何らかのデフォルトの手法で、値のシーケンス内の位置１〜ｍｎをｍ×ｎ行列Ａの成分にマッピングする。選択データは置換の表現σを含んでもよく、割り当ては、Ａにインデックス付けするデフォルトの手法に従って、インデックスｉに、位置σ（ｉ）におけるシーケンス２１０の値を割り当てることによって機能する。置換はその逆の方向で使用されてもよく、たとえば、シーケンス内のインデックスｉの値が行列の成分σ（ｉ）に割り当てられてもよい。
【００４７】
行列Ａの一部はシーケンスの固定要素に対応してもよいので、タプル又は置換のいずれかにおけるシーケンス２１０と行列２３０との間のマッピングを完全に指定する必要はない。選択データを使用して得られる十分な数の異なる行列があればよい。
【００４８】
図２ｂに、選択データの一実施形態の第１の例を概略的に示す。シーケンス２１０と行列２３０との間のマッピングを指定するのに必要なビット数を減らすには様々な手法があり、そのうちの１つを図２ｂに関して示す。値のシーケンス２１０において、１つ又は複数の第１のグループが定義され、第１のグループ２４１及び２４２を図示している。行列２３０において、１つ又は複数の第２のグループが定義され、第２のグループ２５１及び２５２を図示している。シーケンス２１０の各第１のグループには、行列２３０の第２のグループが対応する。シーケンス２１０の成分と、行列２３０の成分との間のマッピングは、第１のグループの要素を対応する第２のグループの要素にマッピングするマッピングに制限することができる。第１及び第２のグループはランダムに選択することができる。図２ｂでは、第１のグループは順番に選択されているが、第２のグループはランダムに選択されている。他の選択も可能である。たとえば、第２のグループも、行又は列など、順番通りであってもよい。
【００４９】
選択データによって示すことができるマッピングは、許可されるマッピングの数を制限することでさらに制限することができる。たとえば、一例では、マッピングは巡回置換（ｃｙｃｌｉｃ  ｐｅｒｍｕｔａｔｉｏｎ）である。
【００５０】
図２ｃに、選択データの一実施形態の第１の例を概略的に示す。この例では、基本データは基本行列２６０を形成し、たとえば、値のシーケンスの要素数は共有行列の成分数と同じであり、同様にインデックス付けされる。この場合、選択データは、基本行列上での置換を定義することによって、共有行列を示す。たとえば、選択データは、基本行列の行及び／又は列を回転させる成分数を示すことによって、その行及び／又は列の巡回置換を示す。たとえば、選択データは数字のシーケンスを含み、シーケンスの各数字は、その数字に対応する数の位置だけ基本行列の行を回転させることを示す。
【００５１】
一実施形態では、選択データは、受信側が変更された行列を見つけられるようにする情報であり、たとえば、数字のシーケンスであって、そのｉ番目の数字が、行列Ａの第ｉ行をいくつの位置だけ回転させるかを示すもの、又は（行インデックス、回転次数（ｒｏｔａｔｉｏｎ  ｏｒｄｅｒ））ペアのシーケンスである。より少ない数字を使用することが可能である。
【００５２】
シーケンス内の、たとえば基本行列内の基本データから共有行列を指定するためのデータ量は、共有行列自体のデータ量よりもはるかに少なくできることに留意されたい。たとえば、次元５１２及び法２０４８の正方行列の場合に、図２ｃを検討されたい。ある行の巡回置換を指定するには９ビットしか必要ないが、行のデータ自体を指定するには５１２×１２ビットが必要となる。したがって、この例では、基本行列の行のどの値が、共有行列のどの位置に行くかを示す選択データの部分は９ビットであり、これは、行のデータサイズの９／（５１２×１２）＜１／１００である。
【００５３】
上記の方法はそれぞれ、単一の値のシーケンスから大量の異なる共有行列を生成することが可能である。たとえば、このシステムを使用して基本行列の行を回転させるには、８行分の回転パラメータしか必要とされず、ランダムな値のシーケンス２１０に対して（２９）８個の異なる共有行列が生成される。その個数（２９）８は２６４個よりも多く、これをセキュリティパラメータとしてもよい。この例では、（行インデックス、巡回置換次数（ｃｙｃｌｉｃ  ｐｅｒｍｕｔａｔｉｏｎ  ｏｒｄｅｒ））の８つのペアを送信すればよく、結果はたった８×（９＋９）ビットだけになる。回転させる行が事前に決定されている場合、必要なデータ量はさらに８×９ビットに削減される。しかしながら、たとえば、１５個及び２９個の行又は列に対する、それぞれ１５個及び２９個の回転パラメータを使用して、２１２８個、２２５６個などを超える、より多くのパラメータを選択データで使用することによって、より多数の異なる行列Ａが簡単に可能になる。一実施形態では、回転パラメータの一部は行を回転させ、回転パラメータの一部は列を回転させる。この利点は、たとえば、ノードの一方が左からの乗算を使用し、他方が右からの乗算を使用する状況では、回転が両方のノードの行列乗算と同じように適合しないことである。さらに他の実施形態では、正方行列の場合、行列の（巡回的な）対角線上の回転が行われる。
【００５４】
共有行列の一部の値は、シーケンスのデフォルト値を有してもよい。たとえば、一部の行は、シーケンスの所定の値と常に等しくてもよい。
【００５５】
選択データは、少なくとも２つの異なる手法で通信される。第１の選択肢では、選択データは、シーケンスのどの成分が共有行列のどの成分にマッピングされるかを直接表現する。これは行列Ａを構築する非常に効率的な手法である。たとえば、選択データ内のパラメータからの、値のシーケンスの少なくとも１つの成分と、共有行列の少なくとも１つの成分との計算は、そのパラメータに関して線形である。すなわち、値のシーケンスから共有行列へのマッピングで発生する指数ｐは、たかだか１である。図２ｂ及び図２ｃの表現を使用した、基本行列の行の成分数を法とする行の新たな位置の計算、又はランダムな第１若しくは第２のグループにおけるインデックスの計算は、１回の計算である。
【００５６】
たとえば、値のシーケンスの第１のグループを、ｘ．．．ｘ＋ｍ−１と番号付けされた成分とし、共有行列の行はｍ個の要素を有すると仮定する。このグループ内の回転させる成分の数を示す選択データのパラメータをｐとする。第２のグループを行列の第ｋ行とする。Ａの成分は、行方向にゼロから番号付けされる。行もゼロからカウントされる。この場合、シーケンスの成分ｘ＋ｉは、成分ｋｍ＋（（ｉ＋ｐ）ｍｏｄ  ｍ）にマッピングされる。上記の計算はｐに関して線形である。このマッピングを一般化すると、ｍｊ個の要素を有する第１のグループｊの第ｉ要素はＴｊ（（ｉ＋ｐｊ）ｍｏｄ  ｍｊ）にマッピングされ、ここで、Ｔｊはルックアップテーブルなどのテーブルである。ここで、ｊはグループの数にわたって動く。一実施形態では、全てのｊについてｍｊ＝ｍとしてもよい。グループ数は行数に等しくてもよいが、これは必須ではない。たとえば、一部のパラメータｐｊを０などのデフォルト値にすることができる。テーブルＴｊは行であってもよく、たとえば、上記のように行の最初のインデックスを加算するだけでもよいが、第１のグループをより複雑なセットにマッピングしてもよい。一実施形態では、Ｔｊは不規則な構造にマッピングする。一例は、行列のｒｏｏｋグラフの独立したセットである（正方行列の場合のみ）。実際には、Ｔｊはラテン方格デザインさえ形成してもよい。
【００５７】
選択データを表現する代替的な手法は、乱数の種とするものである。たとえば、決定論的擬似乱数発生器１６０には乱数の種が与えられ、決定論的擬似乱数発生器の出力から、値のシーケンス内の複数の値、及び／又は共有行列の複数の成分の指示を取得する。乱数発生器の出力から選択データを生成することができるので、選択データを表現する上記の手法はいずれも、種表現と併用され得る。たとえば一実施形態では、選択データは、たとえば選択データで指定された量だけ、基本行列の１、５、１３、２７、及び３７行目を回転させる。この場合、選択データは、行又は列のインデックスと回転量とを直接含むことができ、或いは選択データは乱数の種を含むこともできる。後者の場合、回転量は乱数発生器１６０の出力から得られる。
【００５８】
これらの全ての例において、選択データは第２のノード１１１から受信されてもよく、その場合、ノード１１０は選択データに従って値のシーケンスから共有行列を構築することに留意されたい。代替的には、ノード１１０は、たとえばランダムに、たとえば種から選択データを生成し、次に、直接的なデータとして、又は乱数の種として、選択データを第２のノードに送信してもよい。
【００５９】
図３ａに、暗号システム３００の一実施形態の一例を概略的に示す。システム３００は、サーバ３１０と、複数のクライアントとを備える。クライアント３２０．１、３２０．２、及び３２０．３を図示している。さらに多くのクライアントが存在してもよい。たとえば、サーバ３１０は、デジタルネットワークを介してクライアントにデジタルサービスを配信するコンピュータである。たとえば、サーバ３１０はウェブショップであってもよい。クライアントはウェブブラウザを使用して、サーバ３１０によって運営されるウェブサイトを閲覧し、ウェブショップから注文する。サーバとクライアントとの間の通信は、暗号化及び／又は認証される。たとえば、サーバ及びクライアントは、鍵交換プロトコルを実行する。システム３００は、サーバ３１０に関する、多数の異なる共有行列の計算に関連するオーバーヘッドを削減するように編成される。
【００６０】
サーバ３１０は、図１に示す第１のネットワーク１１０として編成されるが、基本データメモリ１７０が、値のシーケンス（Ａ１、Ａ２）をキャッシュするように構成されるキャッシュメモリであって、そのキャッシュされる値のシーケンスを識別する対応するシーケンス識別子と共にキャッシュするように構成されるキャッシュメモリとして構成されることを除く。キャッシュメモリ１７０は、複数の値のシーケンスを、関連するシーケンス識別子と共に記憶してもよい。たとえば、２つ以上の基本行列Ａ１、Ａ２などが存在してもよいが、これは必須ではない。
【００６１】
基本データマネージャ１３０は、第２のネットワークノードからシーケンス識別子を受信し、受信されたシーケンス識別子に対応する値のシーケンスがキャッシュメモリにキャッシュされている否かを検証し、そのような値のシーケンスがキャッシュマトリクスにキャッシュされていない場合、第２のネットワークノードから値のシーケンスを取得することによって、シーケンスを取得するように構成される。シーケンスの取得は、上記の手法のいずれでも実行される。この実施形態では、第２のネットワークノード、たとえばクライアントは次いで、キャッシュメモリにキャッシュされた値のシーケンスに対応するシーケンス識別子をサーバに送信するように構成される。一実施形態では、その識別子を有する基本行列が第２のネットワークノードによってキャッシュされていないというメッセージが第２のネットワークノードから受信された場合、ネットワークノードは、たとえば、行列又は行列を生成するための種を送信することによって、基本行列（Ａ）を第２のネットワークノードと共有するように構成される。
【００６２】
この構成により、たとえば、同じノードとの通信が２回実行される場合、又は多数のノードが同じ値のシーケンスを使用する場合に、サーバ３１０の負荷がいくぶん減少する。しかしながら、一実施形態では、役割が逆転し、基本データマネージャ１３０は、キャッシュメモリ１７０にキャッシュされた値のシーケンスに対応するシーケンス識別子を、第２のネットワークノードに対して選択するように構成される。このようにして、たとえば乱数の種から基本行列を生成することに関連するオーバーヘッドが、サーバ３１０において大幅に回避される。
【００６３】
その後、サーバ３１０とクライアント３２０との間で交換された選択データは、次いで、シーケンス識別子によって識別される値のシーケンスを使用して、共有行列を構築する。
【００６４】
一実施形態では、シーケンス識別子は、さらなる乱数の種を含む。決定論的擬似乱数発生器には、さらに乱数の種が与えられる。種が与えられた決定論的擬似乱数発生器の出力から、値のシーケンスが得られる。さらなる乱数の種をシーケンス識別子に含めることによって、シーケンスがキャッシュされていない当事者は、必要時に計算することができる。
【００６５】
これらの選択肢のうちのいくつかを図３ｂに示しており、図３ｂは、サーバ３１０と、クライアント３２０、たとえば図３ａに示すクライアントのうちの１つとの間で実行される暗号プロトコルの詳細の一実施形態の一例を概略的に示している。
【００６６】
クライアント３２０からサーバ３１０に送信される第１のメッセージ３３１は、メッセージ要求を含む。これはクライアント３２０の識別子などの追加情報を含む。それに応答して、サーバ３１０は第２のメッセージ３３２をクライアント３２０に送信する。第２のメッセージ３３２は、たとえば、さらなる乱数の種を含むシーケンス識別子を含む。サーバ３１０は対応する値のシーケンスを、たとえば、さらなる乱数の種から一度計算した後に、キャッシュしている。値のシーケンスは、基本行列の形式であってもよい。メッセージ３３２は、サーバ３１０によって生成された選択データをさらに含んでもよい。メッセージ３３２内の選択データは、乱数の種の形式であってもなくてもよい。メッセージ３３２は、サーバ３１０によって生成されたプロトコル情報をさらに含んでもよく、これは、サーバ３１０がこの時点で共有行列にアクセスできるので可能である。たとえば、上述の鍵交換プロトコルでは、メッセージ３３２は、この鍵交換を実行するために生成された公開鍵を含むことができる。メッセージ３３２を受信した後、クライアント３２０は、そのキャッシュメモリから値のシーケンスを取得するか、又は値のシーケンスがキャッシュメモリに存在しない場合、シーケンス識別子内のさらなる乱数の種から値のシーケンスを生成する。さらに、クライアント３２０は、値のシーケンス及び選択データから共有行列を構築する。構築された共有行列を使用して、クライアント３２０はプロトコルにおけるさらなる値を生成し、これらをメッセージ３３３によって返してもよい。たとえば、これが鍵交換プロトコルである場合、メッセージ３３３は、クライアント３２０によって、共有行列と、クライアント３２０の秘密鍵とから生成された公開鍵を含み得る。また、メッセージ３２０は、自身の秘密鍵と、メッセージ３３２で取得された公開鍵とから導出された鍵で暗号化された、暗号化された情報を含んでもよい。たとえば、暗号化されたデータは、たとえば、クライアント３２０のユーザのクレジットカード番号を含んでもよい。サーバ３１０は、メッセージ３３３を受信した場合、公開鍵と、自身の秘密鍵行列とを使用して暗号化鍵を取得し、暗号化されたデータを復号して、たとえば、クレジットカード番号を取得する。
【００６７】
上記のプロトコルでは多数の変形が可能であり、たとえば第１の変形では、選択データは、サーバ３１０によって選択されてメッセージ３２０で送信されるのではなく、クライアント３２０によって選択されてメッセージ３３３でサーバ３１０に送信され、或いは、サーバ３１０によって選択されてメッセージ３２０で送信されるだけでなく、クライアント３２０によっても選択されてメッセージ３３３でサーバ３１０に送信される。後者の場合、メッセージ３３３３内の選択データは、シーケンス識別子によって識別される値のシーケンスと共有行列との間のマッピングを、乱数の種を使用してそれを生成することなく直接決定することが有利である。たとえば、各ノードは基本行列の置換を指定する。特定のノード、たとえばプロトコルの開始ノードは、最初に自身の置換を適用し、続いて応答ノードの置換を適用する。
【００６８】
様々な実施形態において、通信インターフェースは様々な代替物から選択されてもよい。たとえば、入力インターフェースは、ローカル若しくはワイドエリアネットワーク、たとえばインターネットへのネットワークインターフェース、内部又は外部データストレージへのストレージインターフェースなどであってもよい。
【００６９】
基本データメモリ１７０は、フラッシュメモリなどの電子メモリ、又はハードディスクなどの磁気メモリなどとして実装されてもよい。基本データメモリ１７０は、基本データメモリ１７０を共に構成する複数の別個のメモリを備えてもよい。また、基本データメモリ１７０は、ＲＡＭなどの一時メモリであってもよい。一時的な基本データメモリ１７０の場合、基本データメモリ１７０は、たとえばオプションのネットワーク接続（図示せず）を介してパラメータを取得することによって、パラメータを使用前に取得するいくつかの手段を含む。
【００７０】
典型的には、デバイス１１０及び１１１はそれぞれ、デバイス１１０及び１１１に記憶された適切なソフトウェアを実行するマイクロプロセッサ（別途図示せず）を備え、たとえば、そのソフトウェアは、たとえばＲＡＭなどの揮発性メモリ、又はフラッシュなどの不揮発性メモリ（別途図示せず）などの対応するメモリにダウンロード及び／又は記憶されていてもよい。また、デバイス３１０及び３２０．１−３には、マイクロプロセッサ及びメモリ（別途図示せず）が搭載されていてもよい。代替的には、デバイス１１０及び１１１は、たとえばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブルロジックで全体的又は部分的に実装されてもよい。デバイス１１０及び１１１は、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、特定の用途向けにカスタマイズされた集積回路（ＩＣ）として全体的又は部分的に実装されてもよい。たとえば、回路は、Ｖｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳで実装されてもよい。
【００７１】
一実施形態では、第１のネットワークノード１１０は、通信インターフェース回路、基本データマネージャ回路、行列生成ユニット回路、暗号ユニット回路、行列乗算ユニット回路、擬似乱数発生回路などを備える。デバイス１００は追加の回路、たとえばキャッシュ回路などを備えてもよい。回路は、本明細書に記載の対応するユニットを実装する。回路はプロセッサ回路及びストレージ回路であってもよく、プロセッサ回路はストレージ回路に電子的に表現された命令を実行する。
【００７２】
プロセッサ回路は、たとえば複数のサブプロセッサ回路として、分散して実装されてもよい。ストレージは、複数の分散サブストレージに分散されてもよい。メモリの一部又は全部は、電子メモリ、磁気メモリなどであってもよい。たとえば、ストレージは、揮発性部分と不揮発性部分とを有してもよい。ストレージの一部は読み取り専用であってもよい。また、回路は、ＦＰＧＡ、ＡＳＩＣなどであってもよい。
【００７３】
以下、大きい行列に依存する鍵交換方式などにおける帯域幅及び計算要件を削減するいくつかの追加の実施形態を説明する。これは多数の接続を処理する必要があるサーバにとって特に有用であり、その理由は、そのサーバが多数の接続を処理する必要がある場合に、サーバ側の計算量を削減するために使用され得るためである。一実施形態では、以下を提案する：
−  長さＬ≧ｍｎの公開された静的な値のシーケンスＰを有する。
−  イニシエータとサーバとの間で種を交換して、｛１，．．．，Ｌ｝の置換ｒを取得する。次にｒを使用して、鍵交換で使用される公開されたｍ×ｎ行列Ａを取得する。Ａの最上行は、
【数２】
2020511832.tif 000004
に等しく、その第２行は、
【数３】
2020511832.tif 000005
に等しく、．．、そしてその最下行は、
【数４】
2020511832.tif 000006
に等しい。
【００７４】
ｒの要素はＡの要素よりも少なく、したがってより高速かつ効率的に計算できるので、性能が向上する。値のシーケンスは、いくつかの手法で得られる。たとえば：
−  実施形態０：これは静的パラメータであってもよい。
−  実施形態１：イニシエータは、全ての通信について日毎にｓｅｅｄ値を発行する。
−  実施形態２：イニシエータは、全ての通信について日毎に行列Ａを発行する。
−  実施形態３：イニシエータは長期間用のｓｅｅｄ＿ｌｏｎｇを発行し、それに基づいてより短期間用の種を計算することができ、たとえば、ｓｅｅｄ＝ＰＲＦ（ｓｅｅｄ＿ｌｏｎｇ｜ｔｉｍｅ）とする。
【００７５】
一部の状況では、レスポンダが多数の接続を処理するサーバであることがよくあり得るので、レスポンダが種を発行する方が理にかなっている。この種は、上記の実施形態のいずれかによるサーバ及びクライアントとは無関係な、信頼できる第三者によって計算することもできる。イニシエータ及びレスポンダは、第１及び第２のネットワークノードとみなされてもよく、逆も同様である。たとえば、イニシエータは、暗号プロトコルを開始するネットワークノードであってもよい。しかしながら、他の基準が使用されてもよく、たとえば、イニシエータは鍵照合データを使用するネットワークノードとして定義されてもよく、レスポンダは鍵照合データを生成する（鍵照合データは、両当事者が同じ共有鍵に到達することを保証するために使用されるデータである）。
【００７６】
実施形態４では、メモリとＣＰＵとの間の良好なトレードオフを提供するさらなる実施形態を説明する。
−  イニシエータ、レスポンダ、又は第三者は、ｍ×ｎ行列Ａ０の計算に使用される第１のｓｅｅｄを発行する。イニシエータは第２のｓｅｅｄ’を計算し、擬似ランダム関数（ＰＲＦ）を適用して、数字［０，．．．，ｍｎ−１］のランダムな置換ｒを取得する。
−  イニシエータはｓｅｅｄ’をレスポンダに送信する。
−  レスポンダはｒを取得し、置換に従ってＡ０の成分を再配置して、Ａを取得する。
−  イニシエータ及びレスポンダがＡを取得した後、プロトコルの残りが上記のように続く。
【００７７】
実施形態４のさらなる拡張は以下を行う：
−  長さＬ≧ｍｎの値のシーケンス又は基本行列などの公開シーケンスＰを構築する。イニシエータとサーバとの間で種を交換して、｛１，．．．，Ｌ｝の置換ｒを取得する。次いでｒを使用して、鍵交換で使用される公開されたｍ×ｎ行列Ａを取得する。Ａの最上行は、
【数５】
2020511832.tif 000007
に等しく、その第２行は
【数６】
2020511832.tif 000008
に等しく、．．、その最下行は、
【数７】
2020511832.tif 000009
に等しい。
−  ｒが置換であることは厳密には必須ではない。１≦ｉ≦ｍｎについて、１≦ｒｉ≦Ｌが成立すればよい。
−  一実施形態では、ＰＲＦを使用してビットのシーケンスを生成し、次いでこれを置換に変換する。
【００７８】
たとえば、Ａビットを生成してもよく、ここで、２Ａ≧Ｌ！である。Ａビットを整数と解釈し、Ｌｅｈｍｅｒ符号を使用して対応する置換を決定する。Ｌｅｈｍｅｒ符号は、置換を符号化する数学的アルゴリズムである。
【００７９】
Ｌが大きい場合、これは扱いにくい場合があり、実装の観点からは、より少ない置換のセットが好ましい場合がある。たとえば、Ｌ＝ｍｎとする。ビットシーケンスは、それぞれが長さＢのｍ個のブロックに分割され、ブロックｉは、Ｐの成分（ｉ−１）ｎ＋１、（ｉ−１）ｎ＋２、．．．ｉｎの置換のラベルと見なされる。たとえば、２Ｂ≧ｎの場合、ブロックに対応する置換は、あるｉ∈｛０，１，．．．，ｎ−１｝についての、ｉ個の位置だけの巡回シフトである。２Ｂ≧ｎ！の場合、ｎ個の位置の任意の置換には、Ｂビットのラベルを付けることができる。ラベルと置換との間の対応関係は、明示的に記憶することができ（ｎが十分に小さい場合）、又はＬｅｈｍｅｒ符号を使用して計算することもできる。
−  一実施形態では、置換は、多くの位置をそのままにしておくようなものである。これにより、必要な再配置の量が削減され、ＰＲＦから比較的少数のビットしか生成する必要がなくなる。具体例として、Ｌ＝ｍｎとする。数字のセット｛１，２，．．．，ｍｎ｝は、サイズｎのｍ個のサブセット、たとえば、｛（ｉ−１）ｎ，（ｉ−１）ｎ＋１，．．．，ｉｎ｝の形式のセットに分割される。置換が行われるｓ個のサブセットを示すために、ＰＲＦの最初の
【数８】
2020511832.tif 000010
ビットが使用される。次の
【数９】
2020511832.tif 000011
ビットは、ｓ個の選択されたサブセットのうちの各サブセットの成分が、いくつの位置だけシフトされるかを選択するために使用される。
−  一実施形態では、置換は、ｓ回のスワップ（別名、転置）のシーケンスである。このビットシーケンスは、ビット長ｌｏｇ２（ｎｍ）の整数のシーケンス（ｘ０，ｘ１，．．．，ｘ２Ｓ−１）と見なされ、置換は、位置ｘ０、ｘ１におけるＰの成分のスワップ（転置）と、続いて、位置ｘ２、ｘ３におけるＰの成分のスワップと、．．．、続いて、位置ｘ２ｓ−２、ｘ２ｓ−１におけるＰの成分のスワップとのシーケンスからなる。
【００８０】
公開シーケンスＰを取得できる様々な手法がある。たとえば、公開シーケンスは、一実施形態では、業界標準で指定されてもよい。他の実施形態では、それはサーバＳによって生成される。Ｓとの通信を希望するクライアントＣは、Ｐ、又は種などのパラメータ及びＰの計算方法をＳから受信する。この手法では、サーバはクライアントとの複数のセッションにＰを使用し、Ｐを再計算する必要はない。さらに他の実施形態では、Ｐは信頼できる第三者（ＴＴＰ）によって生成及び配布される。サーバはＰを記憶し、これを複数のクライアントとの通信に使用する。シーケンスＰは、ＴＴＰで示される期間中のみ有効であってもよい。さらに他の実施形態では、複数のＴＴＰが存在し、それぞれが独自の公開シーケンスＰｉを生成する。サーバＳは、そのような行列全てを記憶する。クライアントＣは、実際に信頼するＴＴＰからシーケンスを選択し、何らかの事前指定された手法でそれらを組み合わせ、この組み合わせに置換を適用する。Ｃは、選択されたＴＴＰのインデックスと種とをＳに送信して、Ｓが上記置換を取得できるようにする。行列を組み合わせ、成分を置換することにより、ＳはＣによって実際に使用される行列を見つけることができる。
【００８１】
擬似ランダム関数（ＰＲＦ）は、たとえば次のように定義することができる：
−  ＰＲＦ１：出力が
【数１０】
2020511832.tif 000012
ビットのグループに分割される再帰ハッシュ関数。次いで各グループを使用して、異なる要素をピックアップする。
−  ＰＲＦ２：
【数１１】
2020511832.tif 000013
が比較的小さい数であるので、ＰＲＦ１には衝突がある。代替例は、使用された数字を追跡し、出現済みのものを破棄することである。
−  ＰＲＦ３：他の代替例はｇｋ（ｍｏｄ  ｐ）に基づくものであり、ここで、
【数１２】
2020511832.tif 000014
であり、ｐは素数であり、ｇは生成元である。ｋは種であり、このＰＲＦはｋ（ｍｏｄ  ｎ）を増加させて反復される。
【００８２】
上記の実施形態、特に実施形態４の他の方式への応用は、以下の通りである。たとえば、暗号の格子ベースのプロトコルが、Ｅｒｄｅｍ  Ａｌｋｉｍらによる「Ｐｏｓｔ−ｑｕａｎｔｕｍ  ｋｅｙ  ｅｘｃｈａｎｇｅ−ａ  ｎｅｗ  ｈｏｐｅ」に記載されている。彼らの方式を次のように変更することができる。ベクトルａと、秘密ｓ及びｅとが与えられた場合、ｂはｂ＝（ａｓ＋ｅ）ｍｏｄｕｌｏ（ｘｎ＋１）として計算される。この場合のａの生成は、ｎ個の要素しか含まないのでより容易であるが、サーバにとって、初期の種から多数のベクトルを計算する必要がある場合には、まだ困難な場合がある。代替例は、静的なｐ（要素のセット）を有し、ランダムな置換ベクトルｒを計算することである。この手法では、計算は、ｂ＝（ａ［ｒ］ｓ＋ｅ）ｍｏｄ（ｘｎ＋１）となり、ここで、ａ［ｒ］はｒに応じたａの置換バージョンを表す。ｒはａより要素が少ないので、ａよりも容易に計算することができる。
【００８３】
格子ベースの公開鍵暗号化方式では、ＬＷＥなどの公開鍵はペア（ｂ，Ａ）で与えられる。行列Ａは記憶するのにかなりのスペースをとる場合があり、或いは動的に生成される必要があり得る。代替例は、公開値のセットＰを有することである。また、公開鍵として（ｂ，ｓｅｅｄ’）を有することによって、ｓｅｅｄ’を使用して置換ベクトルｒを取得し、ｒはＰの要素が行列Ａにどのようにマッピングされるかを決定し、Ａを使用してｂをｂ＝Ａｓ＋ｅとして取得する。この利点は、サーバでのストレージの必要性がはるかに低くなり、計算の必要性もはるかに低くなることである。
【００８４】
図４に、行列を共有するための方法４００の一実施形態の一例を概略的に示す。方法４００は、たとえばネットワークノード１１０などの、共有行列に基づく暗号プロトコル用に構成される第１の電子ネットワークノード用の電子的方法である。共有行列は複数の成分を有し、各成分は値を有する。方法４００は、
−  第１のネットワークノードと第２のネットワークノード（１１１）との間のデジタル通信を確立するステップ（４１０）と、
−  共有行列の成分のための値のシーケンスを取得するステップ（４２０）であって、値のシーケンスは第２のネットワークノードと共有される、取得するステップ（４２０）と、
−  第２のネットワークノードから選択データを受信するか、又は選択データを決定し、選択データを第２のネットワークノードに送信するステップ（４３０）であって、選択データは、値のシーケンス内の複数の位置を示し、共有行列の複数の成分に、選択データによって示される値のシーケンスのうちの値を割り当てる、ステップ（４３０）と、
−  共有行列の複数の成分を、選択データによって割り当てられた複数の値に設定することによって、選択データに従って共有行列（Ａ）を構築するステップ（４４０）と、
−  共有行列を暗号プロトコルに適用するステップ（４５０）と
を有する。
【００８５】
当業者には明らかなように、この方法を実行する多くの異なる手法が可能である。たとえば、ステップの順序は変更することができ、又は一部のステップは並行に実行されてもよい。また、ステップの間に他の方法のステップが挿入されてもよい。挿入されるステップは、本明細書に記載したような方法の改良を表す場合もあれば、その方法とは無関係な場合もある。また、所与のステップは、次のステップが開始される前に、完全に終了していなくてもよい。
【００８６】
本発明による方法は、プロセッサシステムに方法４００を実行させるための命令を含むソフトウェアを使用して実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって実行されるステップのみを含んでもよい。ソフトウェアは、たとえば、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線若しくは無線で、又はインターネットなどのデータネットワークを使用して、信号として送信されてもよい。ソフトウェアは、ダウンロード及び／又はサーバでのリモート使用に利用できるようにしてもよい。本発明による方法は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラマブルロジックを、この方法を実行するように構成するよう構成されるビットストリームを使用して実行されてもよい。
【００８７】
本発明はコンピュータプログラム、特に、本発明を実施するようになされた、キャリア上又はキャリア内のコンピュータプログラムにも拡張されることは理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び部分的にコンパイルされた形式などのオブジェクトコードの形式、又は本発明による方法の実施での使用に適した他の任意の形式であってもよい。コンピュータプログラム製品に関する一実施形態は、記載した方法のうちの少なくとも１つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分化され、及び／又は、静的又は動的にリンクされる１つ又は複数のファイルに記憶されてもよい。コンピュータプログラム製品に関する他の実施形態は、記載したシステム及び／又は製品のうちの少なくとも１つの各手段に対応するコンピュータ実行可能命令を含む。
【００８８】
図５ａは、一実施形態による、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示しており、コンピュータプログラム１０２０は、行列を共有する方法をプロセッサシステムに実行させるための命令を含む。コンピュータプログラム１０２０は、コンピュータ可読媒体１０００上に物理的なマークとして、又はコンピュータ可読媒体１０００の磁化によって具現化されてもよい。しかしながら、他の任意の適切な実施形態も考えられる。さらに、コンピュータ可読媒体１０００はここでは光ディスクとして図示しているが、コンピュータ可読媒体１０００は、たとえば、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、記録不可でも記録可能であってもよいことは理解されよう。コンピュータプログラム１０２０は、行列を共有する上記方法をプロセッサシステムに実行させるための命令を含む。
【００８９】
図５ｂに、一実施形態によるプロセッサシステム１１４０の概略図を示す。プロセッサシステムは、１つ又は複数の集積回路１１１０を備える。１つ又は複数の集積回路１１１０のアーキテクチャを図５ｂに概略的に示している。回路１１１０は、一実施形態による方法を実行する、及び／又はそのモジュール若しくはユニットを実装するためのコンピュータプログラムコンポーネントを動作させるための、ＣＰＵなどの処理ユニット１１２０を備える。回路１１１０は、プログラミングコード、データなどを記憶するためのメモリ１１２２を備える。メモリ１１２２の一部は読み取り専用であってもよい。回路１１１０は、たとえば、アンテナ、コネクタ、又はその両方などの通信素子１１２６を備えてもよい。回路１１１０は、この方法で定義された処理の一部又は全部を実行するための専用集積回路１１２４を備えてもよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信素子１１２６は、バスなどの相互接続１１３０を介して互いに接続されてもよい。プロセッサシステム１１１０は、アンテナ及び／又はコネクタを使用して、それぞれ接触及び／又は非接触通信用に構成されてもよい。
【００９０】
たとえば、一実施形態では、第１のネットワークノードは、プロセッサ回路とメモリ回路とを備えてもよく、プロセッサはメモリ回路に記憶されたソフトウェアを実行するように構成される。たとえば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８などであってもよい。一実施形態では、プロセッサ回路はＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０であってもよい。メモリ回路は、ＲＯＭ回路、又は不揮発性メモリ、たとえばフラッシュメモリであってもよい。メモリ回路は揮発性メモリ、たとえばＳＲＡＭメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェアインターフェース、たとえば、ハードドライブ、ネットワークインターフェースなどを備えてもよい。
【００９１】
上述の実施形態は本発明を限定するのではなく例示するものであり、当業者であれば多くの代替的実施形態を設計できることに留意されたい。
【００９２】
特許請求の範囲では、括弧内に置いたいかなる参照符号も、請求項を限定するものと解釈されないものとする。「備える（ｃｏｍｐｒｉｓｅ）」という動詞及びその活用形の使用は、請求項に記載した以外の要素又はステップの存在を排除するものではない。ある要素に先行する冠詞「ａ」又は「ａｎ」は、複数のそのような要素の存在を排除するものではない。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施されてもよい。いくつかの手段を列挙した装置の請求項では、これらの手段のいくつかは、ハードウェアの全く同一のアイテムによって具現化されてもよい。特定の措置が相異なる従属請求項に記載されているという単なる事実は、これらの措置の組み合わせが有利に使用できないことを示すものではない。
【００９３】
特許請求の範囲において、括弧内の参照は、例示的な実施形態の図面中の参照符号、又は実施形態の式を指し、それによって請求項の明瞭度を高めている。これらの参照は、請求項を限定するものと解釈されないものとする。
【符号の説明】
【００９４】
１００  暗号システム
１１０  第１の電子ネットワークノード
１１１  第２の電子ネットワークノード
１２０  通信インターフェース
１３０  基本データマネージャ
１４０  行列生成ユニット
１５０  暗号ユニット
１５２  行列乗算ユニット
１６０  擬似乱数発生器
１７０  基本データメモリ
２１０  値のシーケンス
２２１、２２２  値
２３０  共有行列
２３１、２３２  共有行列の成分
２３３  選択データ
２４１、２４２  第１のグループ
２５１、２５２  第２のグループ
２６０  基本行列
２６１−２６３  行
３００  暗号システム
３１０  サーバ
３２０、３２０．１−３２０．３  クライアント
３３１−３３３  送信
【図１】
2020511832.tif 000015
【図２ａ】
2020511832.tif 000016
【図２ｂ】
2020511832.tif 000017
【図２ｃ】
2020511832.tif 000018
【図３ａ】
2020511832.tif 000019
【図３ｂ】
2020511832.tif 000020
【図４】
2020511832.tif 000021
【図５ａ】
2020511832.tif 000022
【図５ｂ】
2020511832.tif 000023
【国際調査報告】
2020511832.tif 000024
2020511832.tif 000025
2020511832.tif 000026