(57)【要約】  幾つかの実施態様は、暗号処理用に構成された電子ネットワークノード１１０に関するものである。該ネットワークノードは、第２電子ネットワークノードと共有される共有プールから整数、多項式及び／又は多項式係数を選択することにより共有マトリクスＡを取得し、該選択は１以上の選択関数に従って実行される。
2020537191.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理のための第１電子ネットワークノードであって、該第１電子ネットワークノードは、
第２電子ネットワークノードとのデジタル通信のための通信インターフェースと、
プロセッサ回路と、
を有し、該プロセッサ回路が、
共有マトリクス（Ａ）を取得し、ここで、該共有マトリクス（Ａ）は前記通信インターフェースを介して前記第２電子ネットワークノードと共有され、該共有マトリクス（Ａ）におけるエントリは整数であり、及び／又は該共有マトリクス（Ａ）のエントリは多項式であり、該共有マトリクス（Ａ）を取得する動作は、
前記第２電子ネットワークノードと共有される１以上の選択パラメータを得る動作と、
共有プールから整数、多項式及び／又は多項式係数を選択する動作であって、該共有プールは前記第２電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び／又は多項式を有し、該選択する動作は１以上の選択関数に従って実行され、１つの選択関数は前記共有プールからの整数、多項式又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、１つの選択関数により割り当てられる特定の整数、多項式又は多項式係数が当該選択パラメータに依存する動作と、
を有し、
秘密キーマトリクス（ＳＩ）を発生し、ここで、該秘密キーマトリクスにおけるエントリは整数及び／又は整数多項式であり、
公開キーマトリクス（ＰＩ）を、
前記共有マトリクス（Ａ）と前記秘密キーマトリクス（ＳＩ）との間のマトリクス積を計算し、マトリクス積を取得し、及び該マトリクス積にノイズを追加する、
ことにより発生し、
前記第１電子ネットワークノードの前記公開キーマトリクスを前記第２電子ネットワークノードに送信する、
第１電子ネットワークノード。
【請求項２】
前記共有マトリクス（Ａ）におけるエントリは第１モジュラス（ｑ）によるモジュロの整数であり、及び／又は前記共有マトリクス（Ａ）のエントリは第１モジュラス（ｑ）によるモジュロ及び既約多項式（ｆ）によるモジュロの整数多項式であり、前記秘密キーマトリクスにおけるエントリは前記第１モジュラス（ｑ）によるモジュロの整数、及び／又は前記第１モジュラス（ｑ）によるモジュロ及び前記既約多項式（ｆ）によるモジュロの整数多項式であり、該秘密キーマトリクスが前記第１モジュラス（ｑ）によるモジュロ、及び／又は前記第１モジュラス（ｑ）及び前記既約多項式（ｆ）によるモジュロで計算される、
請求項１に記載の第１電子ネットワークノード。
【請求項３】
新たなキー交換毎に異なる共有マトリクス（Ａ）を取得する、
請求項１又は２に記載の第１電子ネットワークノード。
【請求項４】
前記共有マトリクス及び共有プールは整数又は多項式を有し、前記選択関数は前記共有プールから整数又は多項式を選択し、前記共有プールが前記共有マトリクスより少ないエントリを有し、又は
前記共有マトリクスは多項式を有する一方、前記共有プールは整数を有し、前記選択関数は前記共有プールから多項式係数を選択し、前記共有プールが前記共有マトリクスにおけるエントリの数の前記既約多項式の次数マイナス１の倍数より少ないエントリを有する、
請求項１から３の何れか一項に記載の第１電子ネットワークノード。
【請求項５】
前記共有プール（Amaster）を、ランダムシードを発生すると共に前記通信インターフェースを介して該ランダムシードを他方のノードに送信することにより取得し、前記第１及び第２電子ネットワークノードは前記ランダムシードを用いて決定論的擬似乱数発生器にシードを供給し、前記共有プールを該擬似乱数発生器の出力から発生する、
請求項１から４の何れか一項に記載の第１電子ネットワークノード。
【請求項６】
前記共有マトリクスにおけるエントリ及び前記共有プールにおけるエントリは第１モジュラス（ｑ）によるモジュロの整数であり、
前記共有マトリクスにおけるエントリは既約多項式（ｆ）によるモジュロの整数多項式である一方、前記共有プールにおけるエントリは前記第１モジュラス（ｑ）によるモジュロの整数であり、又は
前記共有マトリクスにおけるエントリは整数マトリクスである一方、前記共有プールにおけるエントリが前記第１モジュラス（ｑ）及び前記既約多項式（ｆ）によるモジュロの多項式である、
請求項１から５の何れか一項に記載の第１電子ネットワークノード。
【請求項７】
前記共有マトリクスにおけるエントリは組に分割され、各組に関し選択関数が前記共有プールの少なくとも一部を前記選択パラメータの少なくとも一部に依存して当該組にマッピングする、
請求項１から６の何れか一項に記載の第１電子ネットワークノード。
【請求項８】
前記組は前記共有マトリクスの行若しくは列に対応し、若しくは
前記組は前記共有マトリクスのブロックに対応し、及び／又は
前記組が等しい大きさを有する、
請求項７に記載の第１電子ネットワークノード。
【請求項９】
前記選択関数が入力として選択パラメータ及び前記共有マトリクスのエントリ又はエントリの係数を索引するインデックスを取ると共に、出力として前記共有プールにおけるインデックスを生成する、
請求項１から８の何れか一項に記載の第１電子ネットワークノード。
【請求項１０】
前記選択関数が前記共有プールの連続する系列のエントリを前記共有マトリクスの行又は列における連続する系列の要素にマッピングする、
請求項１から９の何れか一項に記載の第１電子ネットワークノード。
【請求項１１】
前記選択関数が、選択パラメータｒに依存して、前記共有プールにおける該共有プールの大きさによるモジュロのインデックスｒ〜（r+k-1）のエントリを、前記共有マトリクスの行又は列にマッピングし、ここで、ｋは該共有マトリクスの大きさであり、又は
前記選択関数が、選択パラメータｒ及びｓに依存して、前記共有プールにおける該共有プールの大きさによるモジュロのインデックス（r+Prf(s,j)）のエントリを、前記共有マトリクスの行又は列におけるインデックスｊのエントリにマッピングし、ここで、Prfはｓをシードとすると共にインデックスｊを入力とする擬似ランダム関数を示す、
請求項１から１０の何れか一項に記載の第１電子ネットワークノード。
【請求項１２】
前記暗号処理はキー交換（KEX）プロトコルであり、前記プロセッサ回路は、
前記第２電子ネットワークノードの公開キーマトリクス（ＰＲ）を受信し、及び
生キーを、前記第２ノードの受信された公開キーマトリクスと前記第１電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算し、
前記第１電子ネットワークノードが、更に、
前記第２電子ネットワークノードの調整データ（ｈ）を受信し、及び
共有キーを、前記受信された調整データ及び前記生キーに調整関数（rec）を適用することにより計算する、
又は
前記第１電子ネットワークノードが、更に、
前記共有キー及び調整データを前記生キーから調整データを取得し、及び
前記調整データを前記第２電子ネットワークノードに送信する、
請求項１から１１の何れか一項に記載の第１電子ネットワークノード。
【請求項１３】
前記共有マトリクス（Ａ）のエントリは多項式であり、前記既約多項式がxn+1、xn-1又は(xn-1)/(x-1)である、
請求項１から１２の何れか一項に記載の第１電子ネットワークノード。
【請求項１４】
前記プロセッサ回路は前記共有マトリクス（Ａ）の拡張共有マトリクスを０より大きい次数の多項式エントリを循環マトリクスにより置換することにより計算し、該拡張共有マトリクスが前記第１モジュラス（ｑ）によるモジュロの整数をエントリとして有すると共に、前記共有マトリクス（Ａ）の列及び行の数の前記既約多項式の次数倍に等しい数の列及び行を有する、
請求項１から１３の何れか一項に記載の第１電子ネットワークノード。
【請求項１５】
前記マトリクス積にノイズを追加する処理が、
前記マトリクス積におけるエントリを第２モジュラス（ｐ）まで下方スケーリングする処理であって、スケーリングされたエントリは前記第２モジュラス（ｐ）で乗算し、前記第１モジュラス（ｑ）により除算し、最も近い整数に丸められたスケーリングされていないエントリに等しく、前記第２モジュラス（ｐ）は前記第１モジュラス（ｑ）より小さく、生キーを前記第２ノードの受信された公開キーマトリクスと前記第１電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する処理が前記第２モジュラスによるモジュロである処理、又は
前記マトリクス積における１以上又は全ての要素のためのノイズ要素をノイズ分布から選択すると共に該ノイズ要素を前記マトリクス積における前記１以上又は全ての要素に追加する処理であって、前記ノイズ要素が平均０のガウス分布から選択された係数を有する処理、
を有する、
請求項１から１４の何れか一項に記載の第１電子ネットワークノード。
【請求項１６】
前記秘密キーマトリクス（SI,SR）が候補秘密キーマトリクスから一様にランダムに選択され、及び／又は
前記秘密キーマトリクスにおける要素の係数が絶対値で限界により制限され、例えば前記限界は２であり又は前記限界は１であり、後者は符号付き二進に相当し、及び／又は
前記秘密キーマトリクス（SI,SR）の列及び／又は行が固定された又は制限されたハミング重み（ｈｓ）を有する、
請求項１から１５の何れか一項に記載の第１電子ネットワークノード。
【請求項１７】
前記マトリクス（Ａ）はｋに等しい少なくとも１つのディメンションを有し、オプションとしてｋｘｋの正方マトリクスであり、
前記第１ノードの秘密キーはn及び
【数４３】
2020537191.tif 000051
のディメンションを有し、
前記第２ノードの秘密キーは
【数４４】
2020537191.tif 000052
及びnのディメンションを有し、
【数４５】
2020537191.tif 000053
及び
【数４６】
2020537191.tif 000054
はｎより小さく、例えば
【数４７】
2020537191.tif 000055
及びｎは１であるか又は１より大きい、
請求項１から１６の何れか一項に記載の第１電子ネットワークノード。
【請求項１８】
前記プロセッサ回路が、
前記共有マトリクスにおける全ての整数、多項式及び／又は多項式係数を前記共有プールから選択し、又は
前記共有マトリクスにおける整数、多項式及び／又は多項式係数の一部を前記共有プールから選択すると共に、該共有マトリクスの残りの部分を発生し、又は
前記共有マトリクスにおける全ての整数、多項式及び／又は多項式係数を前記共有プールから選択すると共に、該共有マトリクスにおける前記整数、多項式及び／又は多項式係数の一部を交換関数に従って置換する、
請求項１から１７の何れか一項に記載の第１電子ネットワークノード。
【請求項１９】
第１電子ネットワークノードのための電子暗号処理方法であって、
前記第１電子ネットワークノードと第２電子ネットワークノードとの間にデジタル通信を配するステップと、
共有マトリクス（Ａ）を取得するステップであって、該共有マトリクスは通信インターフェースを介して前記第２電子ネットワークノードと共有され、該共有マトリクス（Ａ）におけるエントリは整数であり、及び／又は該共有マトリクス（Ａ）のエントリは多項式であり、該共有マトリクス（Ａ）を取得するステップが、
前記第２電子ネットワークノードと共有される１以上の選択パラメータを得るステップと、
共有プールから整数、多項式及び／又は多項式係数を選択するステップであって、該共有プールは前記第２電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び／又は多項式を有し、該選択するステップは１以上の選択関数に従って実行され、１つの選択関数は前記共有プールからの整数、多項式及び／又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、１つの選択関数により割り当てられる特定の整数、多項式又は多項式係数が当該選択パラメータに依存するステップと、
を有する、取得するステップと、
秘密キーマトリクス（ＳＩ）を発生するステップであって、該秘密キーマトリクスにおけるエントリが整数及び／又は整数多項式である、発生するステップと、
公開キーマトリクス（ＰＩ）を、
前記共有マトリクス（Ａ）と前記秘密キーマトリクス（ＳＩ）との間のマトリクス積を計算し、マトリクス積を取得し、及び該マトリクス積におけるエントリにノイズを追加する、
ことにより発生するステップと、
前記第１電子ネットワークノードの前記公開キーマトリクスを前記第２電子ネットワークノードに送信するステップと、
を有する、方法。
【請求項２０】
プロセッサシステムに請求項１９に記載の方法を実行させるための命令を表す一時的又は非一時的データを有する、コンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理用に構成されたネットワークノード、暗号処理方法及びコンピュータ読取可能な媒体に関する。
【背景技術】
【０００２】
暗号法において、キー共有（合意）プロトコルは共通キーを未だ共有していないかも知れない２以上の当事者が斯かるキーに合意することができるプロトコルである。好ましくは、両当事者は、何れの当事者もキーの選択を強制することができないようにして結果に影響を与えることができる。斯かる２つの当事者の間の全通信を盗聴する攻撃者は、該キーに関して何も知るべきでない。それでも、同通信を調べる攻撃者は何も分からない又は僅かしか分からないものの、当事者自身は共有キーを導出することができる。キー共有プロトコルは、例えば、通信を安全にする（例えば、当事者間のメッセージを暗号化及び／又は認証する）ために有用である。
【０００３】
当事者間での安全な通信を容易化するために、キー共有プロトコルは、時には、更に暗号キー交換（ＫＥＸ）及び暗号キーカプセル化（ＫＥＭ）方式に分割される。暗号キーカプセル化（ＫＥＭ）方式は、各当事者に対し公開の既知の値（例えば、公開キー）及び秘密に所有される値（例えば、秘密キー）を使用して２つの当事者間の共有秘密を確立するために非対称暗号法を用いる。
【０００４】
ＫＥＸ方式は、各当事者による公開キーの交換を伴い、これら公開キーは、次いで、他方の当事者により共通の共有秘密を計算するために自身の秘密キーと一緒に独立に使用される。ＫＥＸ方式の良く知られた例は、上述したDiffie-Hellmanキー交換であり、その安全性は離散対数問題を解くことに基づいている。幾つかのＫＥＸ方式の興味ある特徴は、実際の最終的共有秘密が、当事者間では決して（暗号化された形態でさえも）交換されず、当該２つの当事者により各端で独立に計算されることである。この結果、前方秘匿性として知られた望ましい特徴が得られ、このことは、当事者の長期の秘密キーの将来における攻撃者による危殆化さえも、過去に交換された暗号メッセージの秘匿性を危殆化しないであろうことを保証する。
【０００５】
ＫＥＭ方式は、２つの主体又は当事者の間の共有秘密を、一方の当事者（通常、当該通信の開始者：イニシエータ）により他方の当事者（応答者：レスポンダとして知られる）への共有秘密を暗号化する（該他方の当事者の公開キーを用いて）と共に送信するために非対称暗号法を用いて確立し、当該他方の当事者は当該共有秘密を解読し（自身の秘密キーを用いて）、該共有秘密をイニシエータ当事者との安全な通信のために使用することができる。このようなＫＥＭ方式は、一時的である場合においてのみ前方秘匿性を達成することができる。そうでない場合、過去の或るセッションに関する或る当事者の秘密キーを危殆化すると共に該セッションにおいて当事者間で交換された全てのメッセージを記録した如何なる攻撃者も、該特定のセッションに関する共有秘密を復元することができる。
【０００６】
物のインターネットにおいて増加するセキュリティの必要性により、キー交換方式は、古典的及び量子能力的敵対者に対して安全に留まりながら、高い効率（即ち、最少量の通信及び帯域幅要件）も達成する必要がある。
【０００７】
近年の進歩は、量子コンピュータが数年内（恐らく、早ければ略５〜１０年内）に可能となり得ることを示している。量子コンピュータが利用可能になると、殆どの既存の公開キー暗号方式は安全でなくなるであろう。これら方式が基づく基となる問題は、量子コンピュータにより効率的に解かれ得るからである。従って、耐量子公開キーアルゴリズム（quantum-resistant public-key algorithm）、即ち量子コンピュータにより破られ得ない公開キーアルゴリズムを設計することが非常に重要である。
【０００８】
幾つかの種類の耐量子アルゴリズム、即ち、格子ベース、コードベース、同種写像ベース等が存在する。本明細書においては、格子に基づく耐量子アルゴリズムを扱う。格子暗号システム（lattice-based cryptographic system）は、多数の異なるタイプのシステムが提案されている研究の活発な分野である。例えば、格子は数、例えば何らかの有限体の要素（元）のマトリクス（行列）に関して、又は多項式等を用いて定義することができる。暗号処理のタイプも様々であり得る。例えば、格子暗号法は、キーカプセル化（ＫＥＭ）、キー交換（ＫＥＸ）、公開キー暗号化（ＰＫＥ）、デジタル署名等に関して利用可能である。これらの方式の例は：
Frodo等のLWEベースのKEX；
RLWEベースのKEX、CPA-KEM Newhope及びNewHopeSimple；
モジュール（加群）格子ベースのCPA-PKE、CPA-KEM及びKyber等のCCA-KEM；
spKEX等のLWRベースのKEXである。
【参考文献】
【０００９】
[1] “Device and method sharing a matrix for use in a cryptographic protocol”なる名称の２０１７年３月６日に出願されたヨーロッパ特許出願第17159296.7号（出願人整理番号：2017P01555）；
【００１０】
[2] Ludo Tolhuizen, Ronald Rietman及びOscar Garcia-Morchonによる文献“Improved key reconciliation method”Cryptology ePrint Archive, Report 2017/295,https://eprint.iacr.org/2017/295;
【００１１】
[3] (Frodo): J. Bos他による文献“Frodo: Take off the ring! Practical, Quantum-Secure Key Exchange from LWE”, Cryptology ePrint Archive, Report 2016/659, https://eprint.iacr.org/2016/659；
【００１２】
[4] (New Hope): E. Alkim他による文献“Post-quantum key exchange - a new hope”, Cryptology ePrint Archive, Report 2015/192, https://eprint.iacr.org/2015/1092；
【００１３】
[5] (New Hope Simple): E. Alim他による文献“NewHope without reconciliation”, Cryptology ePrint 20 Archive, Report 2016/1157, https://eprint.iacr.org/2016/1157；
【００１４】
[6] (Kyber): J. Bos他による文献“CRYSTALS -- Kyber: a CCA-secure module-lattice-based KEM”, Cryptology ePrint Archive, Report 2017/634, https://eprint.iacr.org/2017/634；
【００１５】
[7] (spKEX): S. Bhattacharya他による文献“spKEX: an optimized lattice-based key exchange”,Cryptology ePrint Archive, Report 2017/709, https://cprint. iacr.org/2017/709。
【００１６】
文献[１]〜[７]の各々は参照により本明細書に含まれる。
【発明の概要】
【発明が解決しようとする課題】
【００１７】
前記方式の各々は、幾つかの共通の特徴を共有している。これら方式の各々は、或る時点で他のノードと共有される共有マトリクスＡを必要とする。該共有マトリクスＡは、モジュラスｑによるモジュロの整数又は既約多項式ｆ及びモジュラスｑによるモジュロの多項式によりファイルされ得る。発明者は、共有マトリクスを過度な頻度で使用しないことが賢明であると理解した。例えば、KEXプロトコルの場合、可能性のある使用ケースは、特定の共有マトリクスを一度だけ使用することであろう。しかしながら、マトリクスのサイズは、例えば、６００ｘ６００であり得ると共に、モジュラスｑは１４ビットであり得るので、共有マトリクスにおけるデータの量は著しいものとなり得る。当該マトリクスが両側で伝達又は発生されるかに拘わらず、このことは、重大なオーバーヘッドとなる。特に、例えば複数のクライアントとの多数の接続を維持するサーバにとり、このオーバーヘッドは非常に大きなものであり得る。このように、共有マトリクスを大きなオーバーヘッドを招くことなく置き換える必要性が存在する。
【課題を解決するための手段】
【００１８】
格子問題の困難さに依拠すると共に共有マトリクスを使用する暗号処理を実施するネットワークノードが提案される。背景技術で指摘したように、多数の斯様な暗号処理が存在する。発明者は、共有プール（貯留部）を導入することによりオーバーヘッドを低減することができることを理解した。共有マトリクスを直接発生するより、第１及び第２ノードは共有プールを共有する。該プールは、丁度共有マトリクスが有するように、複数の整数又は多項式を有するか、又は該プールは多項式のために使用され得る複数の係数を有する。一実施態様において、該共有プールは２つのノードの間で交換されることはなく、同一のまま留まるか、当該暗号処理の複数の実行に跨がり同一のまま留まる。しかしながら、各暗号処理に対して、該共有プールから新たな共有マトリクスが構築される。このことは、共有プールの要素を共有マトリクスのエントリにマッピングする、又は共有プールの係数を共有マトリクスの係数にマッピングする選択関数により実行される。該選択関数は共有プールにおけるインデックス又は共有マトリクスにおけるインデックスに依存するが、興味深いことに選択パラメータにも依存する。選択パラメータは、共有マトリクスのエントリが共有プールから選択される方法を変更する。発明者は、選択関数を変化させることは相対的に小さなオーバーヘッドしか必要とせず、その上、斯様な関数は計算するのが容易であり得ることを理解した。例えば、選択関数は、共有プール又は該共有プールの一部を置換する（並び換える）と共に、これを当該マトリクスの部分組に又は係数に割り当てる選択パラメータに依存する置換であり得る。マトリクスＡは複数の斯様な部分組に分割することができる。各部分組は同一の共有プールから得ることができるか、又は各部分組は共有プールの一部から得ることができる。それでも、共有プールにおける共有マトリクスの部分組にマッピングされた部分は、大幅にさえ、重なり合うことができる。
【００１９】
結果として、共有プールは共有マトリクスより大幅に少ないデータしか格納する必要がない。このことは、少ないデータしか記憶部に維持する必要がないばかりか、共有マトリクスの構築が大幅に速くなり得ることを意味する。例えば、比較例として、共有マトリクスが（擬似）ランダム関数によりシードから発生される状況を考えよう。この構成は、相対的に大きな数のランダム関数処理を必要とする。しかしながら、これもシードから実施することができる共有プールを最初に発生することにより、大幅に少ないランダム関数の適用しか必要とされない。該乱数関数適用の幾つかは選択関数（例えば、より少ない資源要求の置換により実施することができる）により置換されるので、共有マトリクスを発生するための時間は低減される。このことは、共有マトリクスは使用するが、該共有マトリクスがしばしば置換されることを要しないような暗号処理においてさえ有利である。
【００２０】
前述したように、共有マトリクスを使用する相当数の暗号処理が存在する。これらの幾つかは多項式を使用し、これらの幾つかは整数を使用する。発明者は、多数の斯様な方式を、多くの種類の格子暗号法をパラメータ化するような方法で記述することが可能であると理解した。例えば、このような記述は、基となる暗号法の性質を変更する僅かな入力パラメータ、即ち、使用される暗号法のタイプを一緒に指定するのに十分である困難度パラメータ（ｄ）構造パラメータ（ｎ）のみを使用する。困難度パラメータｄ及び構造パラメータｎの両方は、正の整数である。上記困難度パラメータを増加させることにより、当該問題の構造は同一に留まるが、一層大きくなり、従って一層困難な実体化が用いられる。困難度パラメータは、時には、セキュリティパラメータとも称される。実施態様において、困難度パラメータは、基となる格子の大きさ（dimension）に関係する。困難度パラメータの一層大きな値は基となる格子の一層大きな大きさにつながり、従って、攻撃者には解くのが一層困難な問題となる。前記構造パラメータは、当該システムにおける代数構造の量に関係する。該構造パラメータの一層大きな値は、一層大きい代数構造を意味する。該構造パラメータの一層大きな値は攻撃するのが一層容易であり得ると推測される。格子が一層多い規則性を有するからである。例えば、格子問題を解くための漸進的に良い方法を見付ける調査を進める場合、ユーザは困難度パラメータを増加させることにより応じるであろう。一方、特定のタイプの格子問題を解くための急進的に良い方法を見付ける調査を進める場合、ユーザは構造パラメータを減少させることで応じるであろう。
【００２１】
例えば、請求項に記載された暗号装置は、使用される暗号法のタイプを一緒に指定するのに十分な困難度パラメータｄ及び構造パラメータｎを受信することさえできる。例えば、一実施態様においては、複数の基となる問題、例えばRLWE、RLWR、モジュールRLWE、モジュールPLWR並びにLWE及びLWRを効率的に実体化することができる方式が定義される。しかしながら、このことは明らかに必要ではなく、一実施態様は固定された大きさのマトリクス（例えば、ｋｘｋ）を選択することができ、多項式が使用される場合、次数ｎの既約多項式を選択することができる。
【００２２】
当該暗号装置は電子装置である。例えば、該暗号装置はモバイル電子装置、例えばモバイルフォンであり得る。例えば、該暗号装置は、セットトップボックス、スマートカード、コンピュータ等であり得る。ここに記載される暗号処理を実行する方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、金融アプリケーション、秘密の又は認証される通信等を含む。
【００２３】
本発明による方法は、コンピュータ上でコンピュータにより実施される方法として、専用のハードウェアにおいて、又は両者の組合せで実施化することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、当該コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体上に記憶された非一時的プログラムコードを有する。
【００２４】
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全ステップを実行するよう適合化されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な媒体上で具現化される。
【００２５】
本発明の他の態様は、上記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、該コンピュータプログラムが例えばアップルのアップルストア、グーグルのプレイストア又はマイクロソフトのウインドウズストアにアップロードされ、且つ、該コンピュータプログラムが斯様なストアからダウンロード可能である場合に使用される。
【００２６】
本発明の更なる詳細、態様及び実施態様は、図面を参照して、例示のみとして後述される。図面における各要素は簡略化及び明瞭化のために図示され、必ずしも実寸通りに描かれてはいない。各図において、既に記載された要素に対応する要素は、同一の符号を有し得る。
【図面の簡単な説明】
【００２７】
【図１】図１は、キー共有ネットワークの実施態様の一例を概略的に示す。
【図２】図２は、電子キー交換方法の実施態様の一例を概略的に示す。
【図３ａ】図３ａは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。
【図３ｂ】図３ｂは、一実施態様によるプロセッサシステムの図を概略的に示す。
【図４】図４は、共有マトリクスの実施態様の一例を概略的に示す。
【発明を実施するための形態】
【００２８】
本発明は多数の異なる形態の実施態様が可能であるが、１以上の特定の実施態様が図面に示されると共に本明細書で詳細に説明される。ここで、本開示は本発明の原理の例示と見なされるべきであり、本発明を図示及び記載された特定の実施態様に限定することを意図するものではないと理解される。以下においては、理解のために、実施態様の要素は動作時において説明されている。しかしながら、各要素は、これら要素により実行されるものとして説明されている機能を実行するように構成されていることは明らかであろう。更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
【００２９】
キー交換（KEX）プロトコル、キーカプセル化方法（KEM）、公開キー暗号化（PKE）、デジタル署名等の設計のための格子に基づく幾つかの方式が存在することを思い出されたい。これら方式の例は：
−  エラーを伴う学習（LWE）問題に基づくKEXであるFrodo；
−  エラーを伴う環学習（RLWE）問題に基づくKEXであるNewhope；
−  RLWEに基づいて選択平文攻撃（CPA）のために設計されたKEMであるNewHopeSimple；
−  モジュールLWE問題に基づくCPA-KEM及びCCA-KEMであるKyber；
−  丸めを伴う学習（LWR）問題に基づくKEXであるspKEX；
である。
【００３０】
上記方式の各々は、単一の基となる格子問題（即ち、LWE若しくはRLWEの何れか、固定環のためのモジュールLWE又はLWR）に依存した暗号プロトコル（例えば、KEX、KEM、PKE、デジタル署名）を実施する。
【００３１】
NewHope及びNewHopeSimpleは、環Zq[x]/x1024+1を使用するRLWEのみに依存する。
【００３２】
Kyberは、各モジュールがZq[x]/x256+1の多項式であるｋモジュールを組み合わせることのみに依存する。
【００３３】
spKEXはLWRのみに依存する。
【００３４】
FrodoはLWEのみに依存する。
【００３５】
上記全ての問題が関係するが、これら問題の幾つかは特別な構造に依存する点で一層危険であると考えられる。一方、環構造の使用は一層小さなメッセージを可能にする。現在の処、このような構造を利用する攻撃は知られていないが、このような攻撃は将来には知られたものとなろう。この場合、これらの特別な問題（例えば、RLWE又はモジュールLWE）に基づく全ての方式は破られるであろう。かくして、代替策の必要性が存在する。このように、幾つかは一層危険な問題に基づくが一層良好な性能特性を備え、幾つかは良く理解された問題に基づくが余り良好な性能は備えない複数の方式を実施化及び試験する必要がある。
【００３６】
発明者は、上述した格子問題が関係することを理解し、RLWE、RLWR、モジュールLWE、モジュールLWR並びにLWE及びLWRを含む全ての斯様な問題を実体化することができる方式を見出した。以下では、異なる格子が困難度パラメータｄ及び構造パラメータｎに基づいて形成される暗号法に関して幾つかの例が記載される。
【００３７】
この方式においてパラメータを変更することにより、異なる基となる問題に基づくと共に異なる性能特性を示すプロトコル（KEX、KEM、PKE等）を実体化することができる。
【００３８】
この方式は、異なるセキュリティ／性能要求を持つ複数のアプリケーションに適用することができる。例えば、極秘文書はLWEに対する方式設定を用いることにより暗号化することができる一方、資源制約された無線通信を介するキー共有は環LWRパラメータに基づくものとすることができる。当該方式は更なる利点を有する。即ち、第１に、該方式はコードサイズを低減し、従って、より少ないメモリしか必要とされない。第２に、コードの検討のための努力が最少化される。単一のアルゴリズムしか検討及び検証されることを要さないからである。最後に、このような方式は、“弱い”問題（例えば、RLWEに基づいた）に依存することが最早安全ではなく、“より強い”問題（例えば、LWEに基づいた）に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに備えることができる。該方式は、一方が問題１に関するものであり他方が問題２に関するものである等の２つの異なる仕様に依存するのではなく、同一のアルゴリズムが、唯一の差違が入力パラメータである異なる問題を実体化するために使用される。
【００３９】
核となる発明は、大きさ（ディメンション）ｄの格子問題を用い、ここで、ｄは入力パラメータである。該格子ディメンションは、RLWE、RLWR、モジュールLWE、モジュールLWR、LWE、LWRに対応するものとすることができる。該方式は、kxkのエントリを含むマトリクス（行列）に依存し、ここで、各エントリはZq[x]/f[x]における要素（元）であり、f[x]は次数ｎの既約（reduction）多項式であり、ｎは入力パラメータである。ｋはd/nであると定義されて、入力パラメータではなく、実施態様においてｄはｎの倍数であると仮定される。
【００４０】
このように、一定の格子ディメンションｄ及び既約多項式の次数ｎが与えられた場合、当該マトリクスのエントリの数（k2）を得ることができる。このことはモジュール格子との重要な相違であることに注意されたい。例えば、このような格子において、幾人かの創作者は多項式環（例えば、f(x) = x256 + 1）における環演算を最適化し、格子ディメンションをd=256*kのように“増加させるために”モジュールの数を使用している。この方式は、セキュリティ目的のためには小さ過ぎるモジュールRLWE又はRLWEとしてしか実体化することができない。
【００４１】
n=1なら、これはLWE又はLWRのためのマトリクスを表す。
【００４２】
n=dなら、これはRLWE又はRLWRのためのマトリクスを表す。
【００４３】
1<n<dなら、これはモジュールLWE又はモジュールLWRのためのマトリクスを表す。
【００４４】
一般性を失うことなく、以下の段落では２つの場合のみ、即ち、n=1及びn=dの場合のみに焦点を合わすことに注意されたい。
【００４５】
[LWR及びNTRU-RING LWRに基づくKEX]
以下では、実施態様を解説するためにNTRU環を用いる。実際には、ｑをn=1(mod p)であることを保証する素数であるとする（素）円分多項式等の他の環も同様に用いることができる。代わりに、ｑが２の冪である（素）円分多項式をとることもできる。付加的制限は、該（素）円分多項式が既約なモジュロ２であるということである。
【００４６】
NTRU環はf(x) = xn - 1であり、ここで、nは素数である。この場合、所与の格子ディメンション問題ｄに関して、当該システムを、例えば、n = d又はn = 1で実体化することができる。n = dなら、NTRU-RING LWRを有し、n = 1なら、LWR方式を有する。入力パラメータd>nをとり、dが素数ｎの倍数であるとすることができ、かくして、NTRU-Ringを用いるモジュールLWRを有する。
【００４７】
表１は、高レベルのKEXプロトコル記述である。round(vector,p,q)は、モジュラスｐ及びｑを用いて丸めを実行することを示すことに注意されたい。また、どの様にキー調整（key reconciliation）が実行されるかの詳細は無視することに注意されたい。これらは本説明にとり基本的なものでないからである。以下の更なる情報は、全ての必要な詳細を含むPKE、CPA-KEM及びCCA-KEMプロトコルを含んでいる。
【００４８】
【表１】
2020537191.tif 000003
【００４９】
上記から、ｎの選択に依存して、基となる問題はRLWR (n=dの場合)又はLWR (n=1)となることが分かる。両ケースにおいて、基となる格子問題はディメンションｄを有する。現状技術は上記アルゴリズムの２つの異なる実施化、即ち表２、を有することに注意されたい。公開キーｂ及びｕが計算される場合にLWRにおいて必要とされる丸めを無視していることに注意されたい。これは説明に必須でないからである。また、どの様にキー調整を実施することができるかの詳細も無視している（文献参照）。
【００５０】
【表２】
2020537191.tif 000004
表において、rki及びrkrは、各々、イニシエータ及びレスポンダの生のキーであることに注意されたい。
【００５１】
背景及び問題の言及において述べたように、表２における現方式は単一の問題に依存し、従って僅かに異なるパラメータ及びアルゴリズムにより最適化される。例えば、RLWE問題は、通常、環Zq[x]/x^n+lに依存し、ここで、ｎは２の冪である一方、ｑは素数であり、従って数論変換（ＮＴＴ）を使用することができる。これらの選択は非環バージョンと組み合わせるためには最適ではない。ｑが素であることを必要とし、マトリクス演算を行う場合にモジュラ演算を一層複雑にさせるからである。
【００５２】
表１における方式は、同様のパラメータ及びルーチンにより動作するように定義される。このことは、この説明においてNTRU環を使用する特定の理由である。LWE/LWR方式にとっても良い選択である２の冪であるｑに依存するからである。このことは、ｐ及びｑの両方が２の冪であるという事実に依存するキー調整ステップのために同じルーチンを使用することも可能にする。これらの詳細は、CPA-PKE、CPA-KEM及びCCA-KEMに関する実施態様を説明する後の更なる情報において詳細に説明される。
【００５３】
表１で説明されたプロトコルにおいては、LWR問題において定義される丸めを実行する関数であるround()を参照していることに注意されたい。
【００５４】
［基準実施化（その１）］
表１の方式の基準実施化は、公開キー要素（ｂ及びｕ）及び生キー（rki及びrkr）を得るための下記のルーチンを有するであろう。
【００５５】
［公開キーの計算］
Result[] = Computation of public-key(A[,],s[])
Result[] = 0
For (i=0 to din)
For (j=0 to d/n)
Result[i] = Add_elements(Result[i],Multiply_elements[A[i,j],s[j])
C[]=Add_ements(A[],B[])
For(i=0 to n)
C[i]=(A[i]+B[i](mod q))
C[]=Multiply_elements(A[],B[])
C[]=0
For (i=0 to n)
For (j=0 to n)
C[i]=C[i]+A((i-j)mod n)*B[j]mod q
【００５６】
上記ルーチンにおいては、表１におけるようなモジュロｐ及びｑを用いる丸めステップを含めていないことに注意されたい。しかしながら、このことは、本発明にとり必須ではない。この方式のLWEバージョンを実施していたとしたら、丸め処理はZ_q[x]/f(x)におけるノイズ（例えば、平均０及び小さな標準偏差のガウスノイズ）の追加により置換することができる。
【００５７】
［生キーの計算］
Result[] = Computation of raw-key(b[],s[])
Result[] = 0
For (i=0 to d/n)
Result[i] = Add_elements(Result[i],Multiply_elements[b[i],s[i])
C[]=Add_elements(A[],B[])
For(i=0 to n)
C[i]=(A[i]+B[i](mod p)(mod x^n-1)
C[]=Multiply_elements(A[],B[])
For(i=0 to n)
C[i]=(A[(n-i)mod(n)]+B[i])(mod p)(mod x^n-1)
【００５８】
当該生キー計算のためのアルゴリズムにおいては、mod pを書いていることに注意されたい。丸めを伴う学習を考察しているからである。代わりに、先ずＡ及びＢの各係数をq/pで乗算し、最も近い整数に丸め、モジュロｑで加算又は乗算を実行し、p/qによる係数毎の乗算により最終結果をスケーリングし、次の整数に丸めることもできる。これは、セキュリティ上の利点を有し得る。本発明のエラーを伴う（環）学習バージョンの場合、丸め処理を実行する代わりにノイズを追加し、計算はモジュロｑであろう。
【００５９】
［基準実施化（その２）］
プロトコル(KEX、KEM、PKE等)におけるイニシエータ及びレスポンダに関連する秘密は、Zq[x]/f(x)にd/nの元を含む単一ベクトル以上のものであり得るが、これらベクトルのn_bar及びm_barを含み得る。十分なキービットを発生するために、１より大きなn_bar及びm_barを有することが好ましい。このように、基準実施化における当該方式の全ての処理は、Zq[x]/f(x)内に元がある２つのマトリクスの乗算として表すことができる。
【００６０】
このためには、以下の汎用関数が必要とされ：
C = Multiply(A,B,A_c,A_r,B_c,B_r,n)
ここで、Ａ及びＢは、各々、ディメンション(A_c x A_r)及び(B_c x B_r)の入力マトリクスである。当該マトリクスにおける各エントリはZq[x]/f(x)における元を含み、これはZqにおけるｎの元として表すことができる。出力マトリクスＣは、ディメンション(C_c x C_r) = (A_r x B_c)を有する。
【００６１】
更に、幾つかのケースにおいては、当該マトリクスを転置するための関数が必要とされる。このためには、
B = Transpose(A,A_c,A_r,n)
なる関数を必要とし、ここで、Ａはディメンション(A_c x A_r)の入力マトリクスである。当該マトリクスにおける各元はZq[x]/f(x)における元を含み、これはZqにおける元として表すことができる。出力マトリクスＢは、ディメンション(B_c x B_r) = (A_r x A_c)を有する。
【００６２】
マトリクス内の情報をエンコードする特定の方法は、Zqにおける元を最低レベルで記憶するベクトルを使用することによるものである。例えば、q=2^14なら、各元を記憶するために２バイトを使用することができる。Zq[x]/f(x)における元を伴うディメンション(A_r x A_c)のマトリクスＡは、長さA_r*A_c*n*2バイトのベクトルに記憶することができる（ここで、q<=2^16と仮定する）。このベクトルは、Ａを（ｉ）行毎に、（ii）各行では列毎に、（iii）Zqにおけるｎの元をエンコードするであろう。
【００６３】
上記２つの関数(Multiply()及びTranspose())は、当該マトリクスを記憶するために使用されるベクトルに適切な方法でアクセスする。このことは、何故ｎが斯かる２つの関数に入力パラメータとして渡されるかの理由でもある。
【００６４】
［公開キー計算の最適化された実施化（その１）］
固定されたセキュリティパラメータｄの場合、上記基準実施化はn = dの場合に高速である。Ａマトリクスは、n_bar=m_bar=1と仮定して、Za[x]/xn - 1における多項式である単一のエントリを含むからである。n = 1の場合、基準実施化は遅いであろう。Ａは各エントリがZqにおける元であるd2のエントリを含み、スカラ乗算が汎用多項式乗算として実現されるからである。
【００６５】
最適化された実施化の場合、n = dの場合において多項式乗算演算はZq上のdxd=nxnマトリクス及びZqからのエントリを持つ長さｄのベクトルの乗算：
【数１】
2020537191.tif 000005
として表すことができるという事実を利用することができる。
【００６６】
この事実を用いて、公開キー計算を実施化する場合、常にn=1（LWR）に対してd2の異なる元及びn=d（RLWR）に対してｄの異なる元を含む入力マトリクスＡを仮定することができる。マトリクス乗算を実行する場合のアルゴリズム間の唯一の違いは、レスポンダのためのマトリクス乗算がn=1に対しては左から、n=dに対しては右からとなることである。
【００６７】
他の例として、多項式の係数を行ベクトルとして編成することができ、
【数２】
2020537191.tif 000006
を使用する。
【００６８】
［公開キー計算の最適化された実施化（その２）］
関連するフィリップス社出願［１］に開示されているように、Ａは、マスタマトリクスA_masterが与えられたとして、置換（permutation）を適用することにより効率的にリフレッシュすることができる。該置換は、例えば、A_masterにおける行の番号n’(0 <= n' < n)の巡回置換（ランダムオフセット（０及びn-1の間の）による）とすることができる。
【００６９】
これの自然な拡張は、A_masterを長さＬのベクトルa_masterと見なし、該ベクトルに置換を適用してＡの行を得ることである。３つのケースを非常に固有の置換により区別する：
ケース１：L = d2であり、Ａの行ｉを得るための置換は、ａmasterの位置i * dで開始するｄの連続する元を取り出し、これらを０及びd-1の間のランダムオフセットで巡回的に回転することを含む。
【００７０】
ケース２：
【数３】
2020537191.tif 000007
であり、Ａの行ｉを得るための置換は、ａmasterの元ei（ここで、eiは[0, L - 1]におけるランダムに選択された値である）で開始すると共に元ei + d (mod L)で終了するｄの連続する元を取り出すことを含む（このように、巡回構造も考慮する）。
【００７１】
ケース３：L = dであり、Ａの行ｉを得るための置換は、ａmasterの元iで開始するｄの連続する元を取り出すことを含む（このように、巡回構造も考慮する）。
【００７２】
明らかなことに、上記の３つのケースは、他のタイプの置換を用いることにより又はL > d2にすることにより更に一般化することができる。該３つのケースに関し、この方法において：
ケース１は、本明細書に記載された方式をｎ＝１に関して実施する。amasterがランダムに計算される場合、結果としてのＡはランダムマトリクスとは区別することができない。元はランダムオフセットにより回転されるので、固定されたa_masterが与えられたとして、この方法はフレッシュなＡを効率的に得ることができる。
【００７３】
ケース３は、当該方式をｎ＝ｄに関して実施し、ａの多項式合成a*sでのマトリクス表現を得るための効率的方法を提供する。
【００７４】
ケース２は、環構造と非環構造との間のケースである。このケースの場合、(LWR)までの通約（reduction）を有することは不可能である。L<d^2である故に、Ａにおける行の間に幾らかの重なりが存在するからである。このように、結果としてのマトリクスＡをランダムなものから区別することは可能である。しかしながら、実用的観点から、この方法は結果としてのＡにおける単一環構造を破壊する。一層多くの元を含むからである。事実上、各行は異なる環を使用している。
【００７５】
上記方法を最適化された実施化（その１）に組み込んだ場合、所与の長さＬのamaster、幾つかの特定のフィーチャの置換及び秘密ｓに関してマトリクス乗算を実施することができる。長さＬ及び置換の選択に依存して、同一のアルゴリズムがn=1及びn=dの両方に関してマトリクス乗算を効率的に実施する。
【００７６】
ケース１において、a_masterは再利用することができ、a_master及びフレッシュなマトリクスＡは行の置換を変化させることにより得られることを注記しておく。ケース３においては、a_masterを定期的に更新することが望ましい。
【００７７】
このことが、下記の表に要約され、該表においてＬの選択に依存して異なる性能及びセキュリティ保証を得ることができることが分かる。また、Ｌ＝ｑとすることは帯域幅の観点から有益でないことが分かる。構造が破壊され、一層多くの情報がＡを伝達するために送信されることを要するからである。しかしながら、ＣＰＵ的には、当該方法は、より少ない乱数しか計算されることを要さないので、一層効率的である。
【００７８】
【表３】
2020537191.tif 000008
【００７９】
［最適化された実施化（その３）］
同じ置換アイデアを、両ケースにおいて公開キーがZpにおけるｄの元を含むことがわかれば生キーの計算に適用することができる。ｎ＝１の場合、これらは実際にZp = Zp[x]/x -1におけるｄの元である。ｎ＝ｄの場合、これらｄの元は、Zp[x]/xd- 1における多項式の係数である。
【００８０】
ｎ＝１の場合、受信された公開キーのｄの元は、受信された順番で処理されるが、ｎ＝ｄの場合、ｄの元は、多項式評価を実施するであろうマトリクスの第１行の順番に似せるために先ず再配列されることを要する。次いで、２つの変換を定義することができる：
【表４】
2020537191.tif 000009
更に、多項式乗算に類似するマトリクスを得るために２つの置換が適用されることを考える。
【００８１】
【表５】
2020537191.tif 000010
これが与えられたとして、生キーを得るための最適化されたアルゴリズムは以下のように動作する：
Result[] = Computation of raw-key(b[],s[])
Result[] = 0
For (i=0 to n)
For j=0 to d
Result[i] = Result[i]+Tn(b)[(Pn(j)+i)mod(d)]*s(j)
【００８２】
係数ベクトルb=(b0,b1,...,bn-1)^Tを受信し、循環マトリクスの最上行を最左列としてのｂで得ることを要するのでTdが必要とされることに注意されたい。
【００８３】
上記アルゴリズムにおいて、元を適切に再配列するためにTnはｂに作用し、Pnはモジュール縮小処理（module reduction operations）を実行するためにTn(b)に対してシフトを実行する。
【００８４】
［最適化された実施化（その４）］
最適化された実施化に関する重要な側面は、a_masterに対する置換の実現である。このことは、モジュロＬ及びモジュロｄの削減（reduction）を実現することを必要とする。このことは、性能及びサイドチャンネル攻撃に関する欠点を有する。例えばベクトルｖに対する、これらのモジュール式削減：
v[(i + P[j])(mod d)]
を回避するために、当該最適化された実施化は、ベクトルのコピー、
v_star = v|v
を含むだけのベクトルv_starで動作することができ、ここで、｜は連鎖（concatenation）を表す。これは、メモリ要件を増加させるが、モジュール式削減を回避する。
【００８５】
この方法は他の環を効率的な方法で実施することを可能にすることができることも注記する。例えば、環Zq[x]/x^n+1を用いた場合、v_starは：
v_star = v|-v
として得られるであろう。確かに、この場合、
【数４】
2020537191.tif 000011
を有するであろう。従って、Ａは対角線上に負の符号を有する。事実、i ≧ jならA(i,j) =ai-jであり、i<jならA(i,j) = -an+i-jである。1≦k≦n-1に対し、a0=A(O,O) 及びak=-A(O,n-k)であるので、i > jならA(i,j)=-A(O,n-i+j)及びj ≧ 1ならA(i,j) = A(O,j - i)が成り立つ。従って、A(i,j) = v(n - i + j)であり、ここで、k < nならv(k) = -A(O, k - n)及びk ≧ nならv(k) = A(0, k - n)である。
［LWR及びNTRU-RING LWRに基づくCPA-PKE、CPA-KEM及びCCA-KEM］
【００８６】
以下の更なる情報は、今まで説明したアイデアに基づいてCPA-PKE、CPA-KEM及びCCA-KEMプロトコルをどの様に構成するかを説明する。このように、これらのプロトコルは、異なる構成パラメータ用いることによってのみLWR及びNTRU-RING LWRに依存するよう実体化することができる。
【００８７】
NTRU環は既約多項式f(x) = xn - 1を有し、ここで、ｎは素数である。この場合、所与の格子ディメンション問題ｄに対し、当該システムをn = d又はn = 1で実体化することができる。n = dなら、NTRU-RING LWRを有し、n = 1なら、LWR方式を有する。
【００８８】
当該説明は入力パラメータ(d,n)として(d,d)又は(d,1)を使用しているが、入力パラメータが(k*n,n)であり、ここで、ｎが１又は素数（NTRU Ringの場合）であり得るような更に一層一般的な構成を有することもできることを注記しておく。
【００８９】
［他の実施態様］
当該説明は、秘密のタイプ又は丸め処理若しくはノイズ（ガウス、均一又は何らかの他の分布のうちの何れか）の標準的加算を用いるという事実には依存しないことを注記する。このように、本発明は如何なるタイプの秘密分配に対しても実施化することができる。
【００９０】
RLWEに対する適用可能性：以下の更なる情報は、NTRU環に対する固有の選択を含むと共に、ｐ及びｑを２の冪であるとする。これらの選択は、特定のタイプのキー調整方法（key reconciliation method）並びにｐ及びｑを２の冪として持つことが一層効率的な実施化につながるという事実により動機付けられる。代替実施態様は、本明細書におけるアイデアをR/LWEに適用する。この場合、丸め処理を適用する代わりに、ノイズが追加されることを要する。
【００９１】
他のプロトコル対する適用可能性：本明細書において当該設計をKEX、KEM又はPKEの構成にどの様に適用するかを示した。同じ方法論は、ElGamal的タイプの方式に関しても機能する。当該方式は、署名等の他の方式にも適用可能であり得る。
【００９２】
［他の環の使用］
本明細書における実施態様の殆どは、NTRU環f(x) = xn - 1に基づくものである。しかしながら、この多項式は既約ではなく、(x-1)(x^(n-1)+x^(n-2)+...+x+1に等しい。このことは、RLWE決定問題(b=as + e)を解くことを容易にさせる。それでも、ｓを見付けることは困難なままである。
【００９３】
文献は、上記実施態様で使用することができる他の環を使用している。例えば、xn + 1の形の円分環を使用することができ、ここで、ｎは２の冪であり、ｑは素数であり、q ≡ 1(mod n)である。f(x) = xn-1 + xn-2 +・・・+ x + 1の形の素の円分環を使用することも可能であり、ｑは素数であり、q ≡ 1(mod n)である。
【００９４】
これらの環を、NTRU環に関して上記に示したのと同様の方法で使用することができる。例えば、非環ケース（LWE）は、この場合、上記円分環に関してn = 1の場合に環(xn=1 + 1)又は(1)により実施化される。両ケースにおいてｑは素数であることに注意されたい。当該キー調整方法は、上に詳述した実施態様で使用されるものとは異なることを注記する。ｑが２の冪であることを要するからである。適切な選択は、Frodoにおけるもののようなキー調整であろう。
【００９５】
他の良いオプションは、上記と同様の円分多項式、例えば、xn + 1及びxn-1 + xn-2+・・・+ x + 1を使用すると共に、素数である代わりに２の冪であるｑを使用することである。素数であるというｑに対する要件は主にNTTを使用するためであるが、本出願の方式の実施化のためには、２の冪となるようにｑを選択することが一層良い。良いオプションは、当該方式をマトリクス乗算により実施化することであるからである。
【００９６】
他の良いオプションは、前述した様な円分多項式、例えば、xn + 1及びxn-1 + xn-2+・・・+ x + 1を使用すると共に、２の冪であるｑを使用することであり、追加の要件として当該多項式は既約なモジュロ２である。
【００９７】
素の円分多項式、xn-1+ xn-2 +・・・+ x + 1、が使用される場合、演算は依然として環x^n-1において実行することができることも注記する。両環は項x-1が相違するだけであるからである。この目的のためには、一方の環から他方の環へx-1による乗算により値を持ち上げることだけが必要とされる。演算が実現されたら、同じ量により除算することにより、前の環に戻ることができる。
【００９８】
［性能の観点からのパラメータ選択の理論的解釈］
RLWEに関して既知の幾つかの計算的最適化は、本明細書に提示される幾つかの実施態様には適用することができない。特に、NTTをNTRU環に適用することはできない。代替例は、Zq[x]/f(x)（ここで、f(x)=x^n+1）における演算をNTTにより実行することができるように、２の冪のｎ及び素数のｑ等のNTT親和性パラメータを使用することであろう。この最適化は、NTTの使用により環のケース（n>1）対するＣＰＵ性能を高速化するであろうが、非環のケース（n=1）に対する一層悪い性能を予想する。演算がモジュロｑ（ｑは素数である）であるからである。
【００９９】
本明細書に提示されるパラメータ選択は、組み合わされた方式に対して最良のものであると思われる。ｎの如何なる選択に対しても適用可能なマトリクス／ベクトル演算により実行される場合に、演算の高速な実施化を可能にするからである。言い換えると、n>1に対する方式がNTTを使用する他の環方式がそうであるのと同様に効率的でないかも知れないが、本明細書における選択はn>1の場合のみならずn=1の場合においても当該方式の非常に高速な実施を可能にする。更に、NTRU環の使用は、多数の好適な環が存在するので、セキュリティ及び帯域幅の要件の微調整を可能にする。
【０１００】
［パラメータ］
当該方式は、異なるパラメータにより構成することができる。ｄ並びにｑ及びｐの値は、基となる格子問題の困難度を定義する。例示的値は、例えば、約７００のｄ並びに2^14及び2^11に等しいｑ及びｐである。この場合、n_bar及びm_barは８に等しくなり得るので、n=1の場合のKEXにおける結果的キーマトリクスに関して各係数から４ビットを得ることができる。n=dの場合、多項式係数当たり単一のビットが必要とされるので、ｑは一層小さくすることができ、従ってｐも、従ってｎも小さくすることができる。多項式はｎ個の係数を有するので、ｎビットのキーが得られ、n_bar及びm_barのみが１に等しくなることを要する。
【０１０１】
環の幾つかの選択に対して、複数組のパラメータを有することができることを注記する。例えば、素の円分多項式をとる場合、下記の分類のパラメータを有することができる：
−  n=1及びn=dが基となる問題が環構造に基づくか否かを決定するためのパラメータ；
−  ＣＰＵの観点から可能である最適化のタイプを決定する、ｑが素数であるか又は２の冪であること。
【０１０２】
［方式の構成可能性］
当該方式は、異なるセキュリティレベル及び基となる難問題に対して以下のように構成することができる。
【０１０３】
第１に、基となる問題(例えば、LWR又はRLWR)の各々に対し、コンピュータプログラムは失敗確率、帯域幅及びＣＰＵに関して所与のセキュリティレベル及び性能を達成するための目標パラメータ（主に、ｄ、ｎ、ｑ及びｐ）を計算する。この作業は１回実行することができ、次いで、パラメータを公開することができる。
【０１０４】
第２に、公開されたパラメータの組はテーブルに本明細書で提案される方式を実施するプログラムと一緒に記憶され、各組のパラメータは所与の基となる問題、セキュリティレベル及び性能パラメータに対応する。
【０１０５】
第３に、２つの当事者（例えば、アリスとボブ）が互いに通信したい場合、アリスはボブに彼女が使用しようとしているパラメータの組に関して通知する。このことは、アリスは彼女が当該方式を例えば環モード又は非環モードのどちらで使用したいか（ｄ及びｎの選択）、及び何のセキュリティレベル（ｄ、ｑ及びｐに依存する）かを決定することができることを意味する。アリスはボブに彼女の選択について、当該パラメータの組（ｄ，ｎ，ｑ，ｐ，…）を明示的に指定することにより、該パラメータの組の識別子を送信することにより、又は選択されたパラメータに依存する性能値（例えば、公開キーの大きさ、秘密キーの大きさ等）を指定することにより通知することができる。この場合、ボブも最小限のセキュリティレベルのみならず特定の難問題をも要求する方針を有することができることを注記する。このように、アリスからの提案が満足の行くものでない場合、ボブは別のパラメータ組を要求することができる。
【０１０６】
以下は、もっと数学的観点からの上記及び他の実施態様に関する情報である。
１  アルゴリズム仕様及びサポートする文書
1.1    設計原理
1.2    基となる問題
1.3    まえがき
1.4    CPA公開キー暗号化
1.5    非環ケースのためのCPAキーカプセル化方法
1.6    非環ケースのためのCCAキーカプセル化方法の枠組み
1.7    非環及び環ケースの組み合わせ
1.7.1  枠組みの構成
1.7.2  パラメータ組
1.7.3  NISTレベル
【０１０７】
［１  アルゴリズム仕様及びサポートする文書］
［1.1  設計原理］
幾つかの実施態様は、キーカプセル化を可能にするアルゴリズムの枠組みに関するものである。提案されるアルゴリズムは格子暗号法の部類に入り、特に、該アルゴリズムは丸めを伴う学習（LWR）問題に依存することができる。この問題は、その広範囲の研究及び有利な性能特性（例えば、少ない帯域幅要件）によりアルゴリズムの設計のために選択された。
【０１０８】
幾つかの実施態様の興味あるフィーチャは、当該枠組がLWR問題及び環LWR（RLWR）を継ぎ目のない態様で実体化するよう設計されていることである。このことは、同じアルゴリズム（及びコード）をLWR又はRLWRベースのアルゴリズムを効率的に実体化するために使用することができることを意味する。この選択の理論的根拠は多岐にわたる。
・第１に、このことは複数の環境に簡単な方法で適合させることを可能にする。即ち、一方においてLWRベースのアルゴリズムは、性能は余り問題とならないがセキュリティが優先し、かくして、追加の環構造を有さないことが好まれる環境に適用することができる。他方において、RLWRベースのアルゴリズムは、帯域幅及び計算の点で最良の性能を達成し、かくして、一層制約のある環境に一層良く適合する。
・第２に、この方法は、環ベースの方式から非環方式への移植方策を初めから可能にする。このことは、基となる環構造により環ベースの方式に対する攻撃が将来見付かった場合、代替の安全な解決策が即利用可能となり、配備されることを確実にする。
・第３に、提案された枠組みは、保守及びコード解析を低減する。同一の実施化が、RLWR及びLWRケースを全てのアルゴリズムCPA-KEM、CCA-KEM及びCCA-PKEに関して実体化するからである。
【０１０９】
実施態様は、更に、幾つかの異なるフィーチャにより性能を最適化する。先ず第１に、LWR及びRLWRの使用は、帯域幅性能を最適化すると共にサンプリングルーチンを回避する。第２に、疎で三つ組の（ternary）秘密が選択される。これらは実施化を容易化し、改善された性能を可能にし、失敗確率を低減するからである。第３に、事前計算攻撃を防止するために、公開マトリクスＡは一定に維持されず、ハンドシェイクの間における再計算による性能劣化を最小にするために非常に効率的な方法で更新される。第４に、丸め処理、メッセージ圧縮及び解読を実行するための機能は、同一の関数により実体化される。このことは、設計を簡素化及び最適化する。第５に、この提案の環バージョンは、その良好な性能の特徴によりNTRU環に依存する。
【０１１０】
［1.3  まえがき］
多項式環Z[x]/(xn-1)をRnにより示す。n=1を許容し、従って、Rn = Zである。記号の濫用により、各正の整数ａに関し、集合{O,1,…,a -1}はZaと書き、Zaにおける全係数を持つｎより小さな次数の多項式の集合はRn,aと書く。Rnにおける多項式を、その全係数が0, 1又は -1である場合、三つ組み（trinary）と呼ぶ。
【０１１１】
本明細書全体を通して、通常のフォント文字はRnからの要素（元）を示し、太字の小文字はRnにおける係数を持つベクトルを表す。全てのベクトルは列ベクトルである。太字の大文字はマトリクス（行列）である。ベクトルｖ又はマトリクスＡの転置は、vT 又はATにより示される。
【０１１２】
［モジュラ簡約］  正の整数α及びｘ∈Ｑに対し、{x}αを区間[-α/2, α/2]におけるx' ≡ x(mod α)を満足する特異元x'と定義する。更に、<ｘ>αを区間[0,α-1]におけるx ≡ x’(mod α)となるような特異元x’と定義する。
【０１１３】
［丸め］  ｘ∈Ｑに対し、「ｘ」により、同点の場合に切り上げを伴うｘの最も近い整数への丸めを示す。
【０１１４】
［圧縮及び伸張］  a, bをa> bとなるような整数とする。関数Compress a,b：Za →Zb及びDecompressa,b: Zb → Zaを、Compressa,b(x) = <「b/a・x」>b及びDecompressa,b(x) = <「a/b・x」>aと定義する。Decompressa,bは“略”Compressa,bの逆であることを示すことができる。より正確には、各ｘ∈Zaに対して、
|{Decompressa,b（Compressa,b(x)) - x}a|≦(a+1)／2b
である。直接計算により、aがbの倍数である場合、各ｘ∈Zaに対して、
Decompressa,b（Compressa,b(x)) ≡ x + {x}b/a(mod a)
である。
【０１１５】
圧縮関数は３つの目的を果たす。
・第１に、圧縮関数はセキュリティを改善する。該関数は丸めを伴う学習問題となるからである。
・第２に、圧縮関数はメッセージを解読するために使用される。
・第３に、圧縮関数は公開キー及び暗号文の大きさを低減し、従って帯域幅要件を低減する。
【０１１６】
各ν∈Rnに対して、νのハミング重みは、その非零係数の数として定義される。Rnkにおけるベクトルのハミング重みは、その要素のハミング重みの和に等しい。Hn,k(h)により、ハミング重みｈの三つ組み多項式の全てのベクトルv∈Rnの集合を示す。Rnにおける多項式の係数を長さｎのベクトルと見なすと、Hn,k(h)における多項式はｈの位置に非零を伴う長さnkの三つ組みベクトルに対応し、従ってHn,k(h)はnk2hの元を有する。
【数５】
2020537191.tif 000012
に関して、
【数６】
2020537191.tif 000013
を係数のうちの最大の絶対値として、即ち、
【数７】
2020537191.tif 000014
として定義する。全てのa,b∈Rｎに対して、
【数８】
2020537191.tif 000015
を有することを理解することは容易である。
【０１１７】
同様に、ＶがRnにおける多項式のマトリクスである場合、
【数９】
2020537191.tif 000016
はＶにおける多項式の全ての係数のうちの最大のものである。最後に、μ≦ab及びC∈Zaxbに対して、ベクトルSampleμ,a,b（C）∈ZpμはＣにおけるμの予め指定された位置における値を有する。
【０１１８】
［1.4  CPA公開キー暗号化］
この節では、非環ケースに関する公開キー暗号化を説明する。本出願のCPA安全公開キー暗号化方式を、以下のアルゴリズムで説明する。これらのアルゴリズムは、種々のシステムパラメータ、即ち、正の整数
【数１０】
2020537191.tif 000017
を知っていることを仮定する。これらアルゴリズムは、マトリクスA∈Zqnxnに対する、並びに
【数１１】
2020537191.tif 000018
マトリクスS及び
【数１２】
2020537191.tif 000019
マトリクスR（共に、Tn(h)に全列を有する）に対するランダムな選択を含む。即ち、S及びRの両者は、各列がハミング重みｈを有する三つ組みマトリクスである。Ａに対する選択を明示的にするために、システムパラメータはランダム性空間Σ及びマッピングf:Σ→Σqnxnを含む。同様に、S及びRに対する選択を明示的にするために、{0,1 }rs及び{0,1 }rRに各々割り当てると共に三つ組み
【数１３】
2020537191.tif 000020
及び
【数１４】
2020537191.tif 000021
を各々発生し、各列がハミング重みｈを有する関数fs及びfRを定義する。集合Aに関し、ａがＡから均一に引き出されることをａ←＄−Ａにより示す。
【０１１９】
第１アルゴリズムは、
【数１５】
2020537191.tif 000022
における公開キーpk、及び秘密キー
【数１６】
2020537191.tif 000023
、即ち、各列がハミング重みｈを有する三つ組み
【数１７】
2020537191.tif 000024
マトリクスを発生する。
【数１８】
2020537191.tif 000025
【０１２０】
次のアルゴリズムは、公開キーpk、メッセージｍ及びランダム性変数ρから暗号文ｃを発生する。
【数１９】
2020537191.tif 000026
【０１２１】
当該暗号化アルゴリズムは、公開キーpk及びメッセージｍから暗号文ｃを発生する。
【数２０】
2020537191.tif 000027
【０１２２】
当該解読アルゴリズムは秘密キーsk及び暗号化文ｃから平文メッセージｍ（に関する推定）を取り出す。
【数２１】
2020537191.tif 000028
【０１２３】
ここでは、当該方式の処理を説明することができることに注意されたい。
【０１２４】
［1.5  非環ケースのためのCPAキーカプセル化方法］
以下の３つのアルゴリズムは、CPA安全キーカプセル化方法を定義するために前節で定義された公開キー暗号化方式を利用する。該方法はハッシュ関数H:{O,1}*→{0,1}μBを採用する。
【０１２５】
更なるハッシュ関数G:{O,1}*→{0,1}κを有し、カプセル化アルゴリズムのステップ４及びカプセル除去アルゴリズムのステップ２においてＨの代わりにＧを適用することもできることを注記する。
【数２２】
2020537191.tif 000029
【数２３】
2020537191.tif 000030
【数２４】
2020537191.tif 000031
【０１２６】
注釈、アルゴリズム1.5及び1.5において、Ｈに供給する前にpk及びｃをビット列に暗黙的にマッピングしていることに注意されたい。
【０１２７】
［1.6  非環ケースのためのCCAキーカプセル化方法の枠組み］
当該キーカプセル化枠組みは、Fujisaki-Okamoto変換のKEM変形を本出願の暗号化方式に適用して該方式をCCAセキュアなものにすることにより得られる。
【０１２８】
CPA-PKE方式からの表記を使用する。２つのハッシュ関数：
G:{0,1}*→{0,1}βxRRx{0,1}γ及びH:{0,1}*→K={0,1}κ
も必要とする。
【０１２９】
先ず、キー発生アルゴリズムを記述する。等しいランダム化選択の場合、公開キーpkは等しく、アルゴリズム1.7による秘密キーは該秘密キー並びに公開キー及びランダム文字列（ｚ）を有することに注意されたい。
【数２５】
2020537191.tif 000032
【０１３０】
アルゴリズム1.6の出力ｃは、アルゴリズム1.4と等しい入力及びＲに対する同一の選択の場合、アルゴリズム1.4からの暗号文(U,v)を有する。キーＫも有する。
【数２６】
2020537191.tif 000033
【０１３１】
等しい秘密キーＳ及び等しい入力（Ｕ，ｖ）によれば、ｍ’の値はアルゴリズム1.4に与えられたものと等しくなる。NR CCAアルゴリズムにおけるランダム選択がNRCPA-PKEアルゴリズムのものと等しく、且つ、該NRCPA-PKEアルゴリズムがアルゴリズム1.6のライン１で選択されたメッセージｍを正しく取り出した場合、m = m'となると結論する。その場合、アルゴリズム1.6のライン２で計算される(K^’,ρ',d')はアルゴリズム1.6のライン２における(K^,ρ,d)に等しくなり、従って、アルゴリズム1.6及びアルゴリズム1.6のライン８で計算されるＫの値は等しくなる。アルゴリズム1.6のライン７における条件が満足されない場合、出力はランダムキーとなる。
【数２７】
2020537191.tif 000034
【０１３２】
注釈、アルゴリズム1.6及び1.6において、(σ,Ｂ)m’及びCは、Ｇ及びＨに各々供給する前に二進列に暗黙的にマッピングする。
【０１３３】
［1.7  非環及び環ケースの組み合わせ］
この節では、先のアルゴリズムの組み合わされた非環及び環バージョンを多項式環Rn=Z[x]/(xn -1)により説明する。Rnにおける乗算を示すために＊を使用する。非環ケースとの類似性を強調するために、多項式Σi=0n-1fixi及び（列）ベクトル(f0,f1,K,fn-1)Tを識別する。f,g∈Znに対し、f*gを多項式f(x)g(x)(mod(xn - 1))の係数ベクトルとして定義する。即ち、0≦i≦n-1に対し、
【数２８】
2020537191.tif 000035
である。また、マトリクスの乗算＊を以下のように定義する。
【数２９】
2020537191.tif 000036
とすると共に
【数３０】
2020537191.tif 000037
とする（例えば、
【数３１】
2020537191.tif 000038
）。
【数３２】
2020537191.tif 000039
マトリクスBT*Rは、
【数３３】
2020537191.tif 000040
と定義される。環及び非環ケースを区別するために、ブールパラメータringを使用する。
【数３４】
2020537191.tif 000041
【０１３４】
次のアルゴリズムは,公開キーpk、メッセージｍ及びランダム性変数ρから暗号文ｃを発生する。
【数３５】
2020537191.tif 000042
【０１３５】
暗号化アルゴリズムは公開キーpk及びメッセージｍから暗号文ｃを発生する。
【数３６】
2020537191.tif 000043
【０１３６】
解読アルゴリズムは、秘密キーsk及び暗号文ｃから平文メッセージｍ（の推定）を回復する。
【数３７】
2020537191.tif 000044
【０１３７】
［1.7.1  枠組みの構成］
前記アルゴリズムは、構成パラメータに依存して幾つかのアルゴリズムを可能にし得る。
・n=1及びk=dに対するLWRベースのCPA-KEM 
・n=d及びk=1に対するRLWRベースのCPA-KEM 
・n=1及びk=dに対するLWRベースのCCA-KEM
・n=d及びk=1に対するRLWRベースのCCA-KEM 
・n=1及びk=dに対するLWRベースのCCA-KEM-DEM
・n=d及びk=1に対するRLWRベースのCCA-KEM-DEM
【０１３８】
［共有マトリクスの更新］
上記において、共有マトリクスを共有プールに基づいて更新する複数のオプションが付与される。該共有プールはマスタマトリクスA_master又はa_masterの形態を取ることができる。該共有プールは、確かに、マトリクスとして表すことができるが、このことは必要ではない。該共有プールをマトリクスとして索引することは、特定の置換（permutation）、例えば行又は列の巡回置換を一層容易にさせる。もっと一般的には，該共有プールは、選択関数が当該共有マトリクス内の要素に要素を割り付けることができるデータの集合と見なすことができる。
【０１３９】
以下には、共有プールの複数の実施態様が示される。
【０１４０】
例えばLWEキー交換（及び他のLWE構成）に使用されるディメンションｋｘｋの共有公開マトリクスＡは、少なくともディメンションｋｘｋを持つと定義されるマスタマトリクスAmasterに置換πを適用することにより計算することができる。
【０１４１】
Amasterがメモリに維持されると仮定すると、この方法はフレッシュなＡを計算する一層高速な方法を可能にする。このことは、多数の接続を扱わなければならないサーバにとり特に重要である。実施態様において、Ａはｋｘｋ未満の大きさのAmasterから複数の置換を適用することにより計算される。このように、Amasterの大きさは一層小さく、同じ組に複数の置換が適用される。後者は、ノードが（ｉ）Amaster全体をシードから計算することも、（ii）共有マトリクスと丁度同じ大きさのAmasterをメモリに維持することも要さないという利点を有する。代わりに、ノードは共有マトリクスを使用された後に削除することができ、共有マトリクスが次に必要とされる場合、該マスタは共有プールから構築することができる。一実施態様において、共有プールは共有マトリクス自体が必要とするものの平方根の多さのデータのみを有する。例えば、共有プールは前記第１モジュラスｑの大きさと略同じ多さ（例えば、ｑ以下又は２ｑ等）のエントリを有する。
【０１４２】
幾つかの実施態様は、KEXにおいて特にクライアント（イニシエータ）側の性能を改善することを目指す。イニシエータは、より少なく計算及び／又は記憶しなければならないからである。このことは、サーバ（レスポンダ）側も改善するが、この改善は相対的に小さい。他の格子ベースの方式に適用される場合、このＩＤは公開キー暗号化方式又は署名方式の性能を改善することができる。２〜３のシードが与えられた場合、公開パラメータＡを一層速く計算することもできるからである。
【０１４３】
LWEキー交換（及び他のLWE構成）において使用されるディメンションｋｘｋの共有公開マトリクスＡは、マスタマトリクスAmasterに置換πを適用することにより計算することができる。一実施態様において、当該マスタマトリクスは少なくともｋｘｋの大きさ（ディメンション）を有することができる。しかしながら、共有マトリクスＡは、複数の関数（置換であり得る）を適用することによりｋｘｋより小さなサイズのAmasterから計算することもできる。このように、Amasterの大きさは一層小さく、同一の組に対して複数の関数（置換）が適用される。Amasterがメモリ内に維持されると仮定すると、この方法はフレッシュなＡを一層速く計算する方法を可能にする。これは、多数の接続を処理しなければならないサーバにとり特に重要である。
【０１４４】
［概要］
Ｎ個の要素を含むマスタマトリクスAmasterが、メモリ内で利用可能である（Ｎ＜ｋ２）。Amasterにおける要素は、擬似ランダム関数（ＰＲＦ）を適用することによりランダムシードから計算することができる。マスタマトリクスAmasterは、共有プールの一例である。
【０１４５】
一実施態様において、マトリクスＡは、各組（集合）がＮＢ≦Ｎなるサイズの組Ｂｉに分割される。１つの組は、例えば、図４に示されるように、
−  Ａにおけるブロック、
−  Ａにおける行、
−  Ａにおける列
を表すことができる。
【０１４６】
各組Ｂｉにおける要素は、Amasterにランダム化関数πｉを適用する、即ち、Bi = πi(Amaster)とすることにより計算することができる。このランダム化関数は、、Amaster及びBiにおける要素の数が等しい場合、エントリの置換であり得る。しかしながら、Amasterにおけるエントリをランダムな方法で抽出するだけで十分である。
【０１４７】
関数πｉは、Amasterにおける幾つかの要素を抽出すると共に幾つかの他のものをランダムなものにより交換することもできる。例えば、ブロックBiのエントリの半分はAmasterからコピーされ、他のものはランダムに発生される。更に他の実施態様において、関数πｉはぴったり十分なエントリをAmasterから抽出すると共に斯かるエントリの各々に交換関数（substitution function）を適用し、該交換関数は集合{0,1,…,q-1}に対する１対１関数である。関数πｉは、先ずエントリを置換し、該置換されたエントリに交換関数を適用することもできる。
【０１４８】
［パラメータについて］
当該共有マトリクスＡにおける要素は［0,q-1］であり得る。幾つかの実施態様において、モジュラスｑは約２１４又は２１６である。Ａの大きさはｋｘｋであり、ｋは例えば６００〜８００であり得る。ＮＢの好適な値は、全ての要素が高い尤度で表されるように約ｑであろう。Ａがブロックから構成される場合、各ブロックはk’<√NBとしてk’x k’を有することができ、例えばk’はq = 214の場合、１２８までであり得る。
【０１４９】
［特定の実施態様］
一実施態様においては、ＡがＡに対してAmasterにおける各行に異なる置換（permutation）を適用する全体的置換を適用することにより行毎に計算されるような行毎の置換が提案される。
【０１５０】
一実施態様において、Ａにおける各行ａi（ここで、0≦i≦k-1）をAmasterの要素を抽出することにより計算し、斯かる行は以下ではamaster（NB要素を含む行と定義される）と称する。２つの特定の実施態様を説明する：
・実施態様＃１：第１実施態様においては、Nbのｋ置換として計算する。例えば、πi:ai= amaster[ri(ri+k-1)%Nb]であり、ここで、riはランダム値である。これは、合計でkkのランダム化出力となる。表記[a:b]は、ａ〜ｂのインデックスを持つ全要素を示す。ｂがａより小さい場合、ａから共有プールの終了までの全エントリが取り込まれると共に、該プールの開始からａまでの全エントリが取り込まれる。表記m%Nbは、ｍからNbの整数倍相違する{0,1,…,Nb-1}における整数ｍを示す。
・実施態様＃２：他の例においては、πi:ai[j] = amaster[(ri+PRF(s|j))%Nb]である。即ち、aiにおけるｊ番目の要素は、シード及びｊに依存するPRFを適用すると共に要素を行に依存する値riによりシフトすることによりamasterにおける要素をランダムに取ることにより得られる。これは、多数のランダム化された出力：
【数３８】
2020537191.tif 000045
とながるが、各行に対してPRFの計算も要し、不効率であり得る。ランダム値riは選択パラメータの例である。
【０１５１】
下表は、amasterを発生する際の計算されるビットの数に対する要件及び置換の数を要約する。
【０１５２】
【表６】
2020537191.tif 000046
上記表から、ランダム化された出力の数は膨大であるが、ＰＲＦにより計算されることを要するビットの数は大幅に少ないことが分かる。
【０１５３】
［プロトコルにおける使用］
プロトコルにおいては幾つかのパラメータが交換されねばならない。例えば、
−  amasterを計算するために使用されるシード
−  関数πｉを計算するために使用されるシード
−  関数（置換）πｉの指定
の１以上である。
【０１５４】
共有マトリクスＡを更新する当該方法は、キー交換、キーカプセル化方法、公開キーカプセル化システム、署名方式等の暗号プロトコルにおいて使用することができる。幾つかの実施態様は、特にＫＥＸにおけるクライアント（イニシエータ）側の性能も改善することに注意されたい。イニシエータは余り多く計算及び記憶する必要がないからである。このことは、サーバ（レスポンダ）側も改善するが、この完全は相対的に小さい。
【０１５５】
他の格子ベースの方式に適用された場合、この方法は、公開キー暗号化方式又は署名方式の性能を改善することができる。幾つかのシードが与えられたとして、公開パラメータＡは一層速く計算することができるからである。この方法は、各モジュールが異なる公開パラメータaiを有したとしたら（この場合、aiは所与の環にわたる多項式を表す）、モジュール格子に適用することができることにも注意されたい。公開多項式の各々は、置換を適用することによりマスタ多項式から得られるであろう。
【０１５６】
図１は、キー共有ネットワーク１００の実施態様の一例を概略的に示す。キー共有は暗号処理の一例である。該キー共有は複数の要素、例えば、共有マトリクス、秘密キーマトリクス、公開キーマトリクスの構築、マトリクス乗算、ノイズの追加等を利用し、これらは例えば公開キー暗号化等の他のタイプの暗号処理と共通する。一実施態様において、装置１００は、例えば前述したような又は参考文献に示したような他のタイプの暗号処理のために再構成することができる。一実施態様において、装置１００は複数のタイプの暗号処理のために再構成することができる。何れの場合においても、装置１００は多数の異なるレベルの構成及び困難度が利用可能であるという利点を有する。例えば、当該暗号処理は、キー交換（KEX）プロトコル、キーカプセル化方法（KEM）、公開キー暗号化（PKE）、デジタル署名の何れかとすることができる。一実施態様において、第１電子ネットワークノードは複数の異なる暗号処理から或る暗号処理を選択する選択子を受信するように構成することができる。一例としてではあるが、下記の実施態様は装置１００がキー共有のために構成されると仮定する。
【０１５７】
図１に示されるものは当該システムにおける２つのネットワークノード、即ち、イニシエータ型のネットワークノード１１０及びレスポンダ型のネットワークノード２１０である。当該キー共有システムの一実施態様において、ノードの数は一層大きく、例えば１０００ノードより多い（例えば、１０６ノードより多い）等のように２より大幅に大きくすることができる。
【０１５８】
イニシエータ型のネットワークノードとレスポンダ型ネットワークノードとの間の違いは、調整データ（reconciliation data）をどの様に扱うかである。イニシエータ型のネットワークノードは調整データを受信し、該調整データを、共有キーを得るために適用する一方、レスポンダ型ネットワークノードは調整データを発生し、該調整データをイニシエータ型ネットワークノードに送信する。レスポンダ型ネットワークノードは、共有キーを得るために調整データを必要としない。典型的に、イニシエータ型は２つのネットワークノード間のキー共有プロトコルも開始する。このことは、２つのネットワークノードの間で実行される処理の数を低減することができるからである。しかしながら、このことは必要ではない。キー共有プロトコルはレスポンダ型のネットワークノードより開始することもできるからである。
【０１５９】
更に、ネットワークノードの一実施態様において、当該ネットワークノードはイニシエータモードに従って及びレスポンダモードに従って動作するよう構成される。例えば、当該ネットワークノードがキー共有を開始する、例えば他のネットワークノードにメッセージを送信してキー共有プロトコルの開始を通知する場合、該ネットワークノードはイニシエータモードに切り換わり得る。当該ネットワークノードがキー共有に応答する、例えば他のネットワークからキー共有プロトコルの開始を通知するメッセージを受信した場合、該ネットワークノードはレスポンダモードに切り換わり得る。この構成は実用上便利であるが、このオプションは厳密に必要であるというものでもない。例えば、キー共有システムにおいて、幾つかのノードはイニシエータとしてのみ構成することができ、幾つかはレスポンダノードとしてのみ構成することができる。これの結果は、幾つかのノードは共有キーに一緒に合意することができないということであろう。幾つかのネットワークにとり、例えば、アドホックネットワーク又はアドホック無線グリッド等において、十分に多数のネットワークノードの対が通信することができ、共有キーに同意することができる限り、このことは必ずしも問題とはならない。
【０１６０】
イニシエータノード１１０は通信インターフェース１２０を有する。レスポンダノード２１０は通信インターフェース２２０を有する。これらの通信インターフェースは、当該キー共有システムにおいて他のノードとのデジタル通信のために構成することができる。もっとも、当該システムにおける全ノードに常に到達することができることは必要ではない。
【０１６１】
通信インターフェース１２０及び２２０は、デジタル通信を行うように構成される。例えば、これら通信インターフェースはコンピュータネットワークを介して通信するように構成することができる。例えば、当該通信インターフェースは、例えばWi-Fi（登録商標）、ジグビ及びブルートゥース（登録商標）等の無線通信、及び／又は例えばイーサネット及びＵＳＢ等の有線通信のために構成することができる。ノード１１０及び２１０の間の通信は、有線及び無線接続の組合せとすることもできる。例えば、システム１００におけるノードは、ノード１１０及びノード２１０を含み、通信識別子を格納する電子記憶部を有することができ、これら識別子はシステム１００内のノードを固有に識別する。例えば、斯かる通信識別子は、ノード１１０及び２１０の間で交換されるデジタルメッセージに、例えば該メッセージをアドレス指定するために含めることができる。例えば、該通信識別子はＩＰアドレス及びＭＡＣアドレス等とすることができる。
【０１６２】
当該電子ネットワークノードは、キー交換（KEX）プロトコルのために構成される。該プロトコルは、通信インターフェース１２０及び２２０を介してノード１１０及び２１０の間でメッセージを交換すること、並びに例えば他のノードから受信されたデータに対して計算を実行することを含む。当該キー共有プロトコルの実行は、以下に例が示されるプロセッサ回路において実施される。図１は、該プロセッサ回路の機能ユニットとなり得る機能ユニットを示す。例えば、図１は該プロセッサ回路の可能性のある機能的編成の青写真として用いることができる。該プロセッサ回路は、図１におけるユニットからは別途示されていない。例えば、図１に示される機能ユニットは、ネットワークノードに記憶されると共に該ネットワークノードのマイクロプロセッサにより実行可能なコンピュータ命令の形で全体として又は部分的に実施化することもできる。
【０１６３】
イニシエータノード１１０及びレスポンダノード２１０は、キー交換（KEX）プロトコル用に構成される。KEX方式は、しばしば公開キーと呼ばれる公開データの各当事者による交換を伴い、該公開データは次いで他方の当事者により共通の共有秘密を計算するために該他方の当事者の秘密データ（しばしば、秘密キーと呼ばれる）と一緒に独立に使用される。幾つかの実施態様の興味あるフィーチャは、実際の最終的な共有される秘密が、暗号化された形態でさえも決して当事者間で交換されることはなく、当該２つの当事者により各端部において独立に計算されることである。この結果、前方秘匿性として知られた望ましいフィーチャが得られ、該フィーチャは或る当事者の長期の秘密キーの将来における攻撃者による危殆化さえも、過去に交換された暗号メッセージの秘匿性を危殆化しないであろうことを保証する。
【０１６４】
本発明の実施態様は、秘密通信を提供するために信頼される第三者に依存することはない。通信インターフェース１２０及び２２０の間の通信チャンネルは、必ずしも安全なチャンネルである必要はない。攻撃者は該通信チャンネルを盗聴することができる。そうであっても、ノード１１０及び２１０の間で共有されるキーは、安全であり得る。通信チャンネルが改変から保護される場合、当該チャンネルにより提供される限りにおいて、或る程度の認証は得ることができる。しかしながら、通信インターフェース１２０及び２２０の間のチャンネルが改変に対して保護されない場合、KEX方式は認証を達成しないであろう。認証を得るために、実施態様は何らかの既知の認証メカニズム、例えば暗黙的な認証メカニズム（例えば、証明された公開キーを使用する）又は明示的認証メカニズム（例えば、デジタル証明を使用する）と組み合わせることができる。
【０１６５】
イニシエータノード１１０は、共有マトリクスユニット１３０を有する。レスポンダノード２１０は、共有マトリクスユニット２３０を有する。共有マトリクスユニット１３０及び２３０は、当該２つのノードの間で共有される共有マトリクス（Ａ）を得るように構成される。特にマトリクスＡがノード１１０及びノード２１０に対して必ずしも秘密に維持される必要はないという事実が与えられる場合、同一のマトリクスがノード１１０及び２１０の間で共有されることを保証する多数の方法が存在する。
【０１６６】
共有マトリクスＡの構成は、困難度パラメータｄ及び構造パラメータｎで定義することができる。共有マトリクスユニット１３０及び共有マトリクスユニット２３０は、困難度パラメータｄ及び構造パラメータｎを入力として受信するよう構成することができる。このことは、当該装置が多くのタイプの暗号的な基となる問題をサポートすることができるという利点を有するが、このことは必要ではない。Ａの構成、例えばＡの大きさ及びＡの多項式（存在するなら）の次数は、予め定めることもできる。
【０１６７】
両ユニットが同じ困難度パラメータｄ及び構造パラメータｎの共有マトリクスを使用することに注意されたい。これらの数ｄ及びｎは、マトリクスＡの要素（成分）の大きさ及びタイプを決定する。例えば、困難度パラメータｄ及び構造パラメータｎは、ＡＰＩを介して（例えば、装置１１０及び２１０を例えば保護された通信のために使用するアプリケーションにより）設定することができる。該アプリケーションは、必要とされる困難度及び構造を決定し、装置１１０及び／又は２１０に例えば関数呼び出し（ファンクションコール）により命令することができる。
【０１６８】
共有マトリクスＡにおけるエントリは、第１モジュラスｑによるモジュロ、構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで選択される。ｎ＝１の場合、エントリは整数であり、ｎ＞１なら、エントリは多項式である。第１モジュラスｑ及び既約多項式ｆも、ノード１１０及びノード２１０の間で共有される（例えば、通信される又は予め定められる）。共有マトリクスＡは、例えば大きさｋの正方マトリクスｋｘｋである。Ａが正方形である必要はない。代わりに、Ａは長方形とすることもできる。この場合、秘密キーマトリクスの大きさは、Ａの大きさと同等となるように選択される。
【０１６９】
行及び列の数ｋは、構造パラメータｎにより除算された困難度パラメータｄに等しい。ｎ＝ｄの場合、マトリクスＡは単一の多項式エントリを有する。既約多項式ｆに対する実際的選択は、例えば、xn + 1又は xn -1である。
【０１７０】
大きさｋを計算することができるように構造パラメータｎが困難度パラメータｄを分割する（割り切る）ことが好ましい。しかしながら、一実施態様において、ｋは構造パラメータｎにより除算された困難度パラメータｄを丸める（例えば、最も近い整数に丸める、切り上げる又は切り下げる）ことにより得られる。
【０１７１】
一実施態様において、構造パラメータｎは素数となるように限定されるが、これは必須ではない。一実施態様において、構造パラメータｎは２の冪であり、第１モジュラスｑは素数であるが、これも必須ではない。
【０１７２】
ノード１１０及び２１０は共有プール１３１を有する。該共有プールは、第２電子ネットワークノードと共有されると共に、共有マトリクスのエントリで使用するための複数の整数及び／又は多項式を有する。このように、該共有プールは整数及び／又は多項式のベクトルと見ることができる。例えば、ノードは共有プールへのアクセスを備えて製造することができる。しかしながら、共有プールを得る好ましい方法は、共有プールを発生することである。このことは、異なる対のノードが異なる共有プールを有することができるという利点を有する。例えば、ノード１１０及び２１０は、共有プールを決定論的擬似ランダム数発生器により発生するようにして得ることができる。該ランダム数発生器は、共有シードから種（シード）を蒔かれる。例えば、当該装置の一方（例えば、装置１１０又は装置２１０）がシードを発生し、該シードを他方の当事者に送信することができる。例えば、公開キーマトリクスを送信する第１当事者はシードを送信し、該シードにより共有プールを発生し、該共有プールから共有マトリクスを発生することができる。例えば、両者がシードを発生し、該シードを他方の当事者に送信することができる。発生するために使用されるシードは、両シードを組み合わせることにより（例えば、これらを加算することにより）得られる。
【０１７３】
共有プールが発生されたなら、該共有プールは、例えば電子メモリ内に一時的に又は例えばハードディスク等の磁気記録装置若しくは不揮発性メモリ上等の長期記憶部内に、保持することができる。共有プールを維持することは、該共有プールが再度発生されることを要さないということを意味する。一実施態様において、共有プールは複数のキー交換にわたって同一のまま留まる。しかしながら、共有プールは幾らか進展することもできる。例えば、新たなキー発生の都度に、当該プールにおける一定数のエントリは破棄することができ、新たな組の数が発生され得る（例えば、これもシード（例えば、新たなシード）から）。このことは、オーバーヘッドを抑制するが、長期の実行において共有プールが、従って共有マトリクスにおけるエントリが更新されることを保証する。例えば、当該数は１０等とすることができる。
【０１７４】
共有マトリクスにおけるエントリ又はエントリの係数は共有プールから選択される。幾つかのオプションが存在する。共有マトリクスは整数を有することができ、その場合、共有プールも整数を有する。共有マトリクスは多項式を有することができ、この場合、共有プールは共有マトリクスにおける多項式のための係数として選択することができる整数を有することができ、又は該共有プールは多項式を有することができ、その場合、該共有プールにおけるエントリは共有マトリクスにおけるエントリのための直に使用することができる。これらの実施態様において、共有プールにおけるエントリは、好ましくは、第１モジュラスｑのモジュロであるが、このことは厳格に必要というものではない。同様に、共有プールにおけるエントリが多項式である場合、これらは、好ましくは、共有されるモジュラスｑ及び共有される既約多項式のモジュロである。殆どのアプリケーションの場合、当該シード、共有プール、共有マトリクス、選択パラメータ等は秘密であることを要さず、公開のものとすることができる。
【０１７５】
共有プールの大きさ（サイズ）は共有マトリクスの大きさより小さくすることができる。例えば、共有マトリクスの記憶サイズは、共有マトリクスにおけるエントリの数の既約多項式の次数マイナス１倍に比例し得る。共有プールのサイズは、該共有プールのエントリの数の、恐らく既約多項式の次数マイナス１倍に比例し得る。一実施態様において、共有プールのサイズは、共有マトリクスのサイズより小さく、例えば共有マトリクスのサイズの半分以下である。一実施態様において、共有プールのサイズは共有マトリクスのサイズより小さく、例えば共有マトリクスのサイズの平方根以下である。このことは、共有マトリクスを共有プールのサイズに等しい又は略等しいｋ個の部分に分割することができるという利点を有する。一実施態様において、共有プールにおけるエントリの数は、第１モジュラスｑ又は該モジュラスの小さな倍数（例えば、２ｑ、３ｑ等）より小さい。後者の利点は、略全要素のモジュロｑが共有プール内に存在しそうであり、共有マトリクス内で略等しく表されるということである。
【０１７６】
一実施態様において、共有プールはサイズが共有マトリクスより大きいが、ノードは同一の共有プールを複数の共有マトリクスに対して使用する。事実、共有プールは複数の異なる第２ノードに対して使用することさえできる。
【０１７７】
共有プールの利点は、共有マトリクスを更新することが安価であるということである。例えば、単に選択パラメータだけを送信又は交換することができ、該選択パラメータに基づいて新たな共有マトリクスを共有プールから迅速に選択することができる。特に、幾つかの実施態様において、何の関数も又は僅かの関数しか必要とされない。
【０１７８】
一実施態様において、ノードは他のネットワークノードと共有される１以上の選択パラメータを得る。選択パラメータは予め定められたものとすることができ、例えば、ノードは一連の選択パラメータに対するアクセスを有すると共に、次のもの又は次の幾つかのものを用いて共有マトリクスを発生することができる。このような選択パラメータは、一方のノードにより選択され、他方に通知することもできる。選択パラメータは、両ノードにより選択されると共に他方に通知され、その後、これらが組み合わされる（例えば、加算され、排他的論理和を取られ等）ようにすることもできる。
【０１７９】
選択パラメータは選択関数を制御するために使用され、該選択関数は共有マトリクスにおけるエントリを共有プールから抽出（例えば、選択）する。
【０１８０】
例えば、共有マトリクスユニット１３０及び２３０は１以上の選択関数を備えて構成することができる。該選択関数は共有プールから整数、多項式及び／又は多項式係数を共有マトリクスのエントリに割り当て、選択関数により割り当てられる特定の整数、多項式又は多項式係数は前記選択パラメータに依存する。
【０１８１】
例えば、当該選択関数は、選択パラメータri及びインデックスｊを共有プール又は共有プールの一部への入力とする関数gi(ri,j)であり得る。該選択関数の出力は、共有マトリクスＡ内のエントリを示す対(x,y)であり得る。該選択関数の出力は、共有マトリクス内のエントリ(x,y)及びエントリにおける多項式の係数の次数ｔを示す対(x,y,t)であり得る。この場合、関数gi(ri,j)はインデックスｊの異なる値に関して、例えばj=0,…,Nからのインデックスに関して評価され、共有プールにおけるインデックスｊに関するエントリが当該選択関数の出力に割り当てられる。
【０１８２】
例えば、当該選択関数は関数gi(ri,x,y)又はgi(ri,x,y,t)とすることができ、これらは、入力として選択パラメータri並びに共有マトリクスにおけるエントリを示す対(x,y)又は共有マトリクスにおけるエントリ(x,y)及び該エントリにおける多項式の係数の次数ｔを示す三つ組(x,y,t)を取る。該選択関数の出力は、共有プール又は該共有プールの一部へのインデックスｊであり得る。この場合、関数gi(ri,j)は、共有マトリクスにおける異なるエントリに対して及び／又はｔに関する異なる値に対して評価され、共有プールにおけるエントリが共有マトリクスにおけるエントリに割り当てられる。共有プールは、それ自体マトリクスとして表すことができ、その場合、インデックスｊは１対のインデックスとして表すことができる。
【０１８３】
例えば、当該選択関数は置換（permutation）であり得る。該置換は共有プール又は共有プールの一部に適用され、結果は共有マトリクスにおけるエントリ、例えば整数、多項式又は係数に所定の順序（例えば、線形）に従って割り当てられる。
【０１８４】
一実施態様において、共有マトリクスＡは複数の組（集合）に分割される。各組に対し、選択関数は共有プール又は共有プールの一部を、選択パラメータの少なくとも一部に依存して当該組にマッピングする。分割の例が図４に示されている。図４に示されるものは、４つの共有マトリクスＡ、即ち、４１０、４２０、４３０及び４４０である。
【０１８５】
共有マトリクス４１０において、各組は共有マトリクスＡのブロックである。例えば、１つのブロックは、少なくとも２ｘ２又はそれ以上である。ブロックは正方形であるが、そうである必要はない。１つのブロックが符号４１２で示されている。
【０１８６】
共有マトリクス４２０において、各組は共有マトリクスＡの行である。１つの組が符号４２２で示されている。
【０１８７】
共有マトリクス４３０において、各組は共有マトリクスＡの列である。１つの組が符号４３３で示されている。
【０１８８】
共有マトリクス４４０において、各組は共有マトリクスＡのエントリのランダム選択である。１つの組が符号４４２により示されている。例えば、この場合においても、当該組はＡにおけるエントリの数の1/k倍に等しいサイズを有することができる。例えば、組４２２はｋ個のエントリ（例えば、整数）を有することができる。組４２２は、Ａにおける係数の数の1/k倍の選択でさえあり得る。各組（例えば、４２２）に対する係数の割り当ては、ランダムであり得る。Ａにおける多項式エントリの係数は、１つの組に又は２以上の組にわたって分配され得る。
【０１８９】
選択パラメータriは、例えば、共有プールにおいてランダムインデックスを選択することができる。次に、共有プールにおける連続した整数の列を、関数giが割り当てられたエントリに割り当てることができる。選択関数は、特定の予め定められた置換が最初にどれだけ多くの回数分適用されるべきかを示すことができる。これらは組み合わせることができる。例えば、共有プール全体のランダム置換はノードにおいて固定することができる。第１選択パラメータr0は、固定された置換がr0回実行されるべきことを示し、この後に、riを関数giに関して例えばインデックスとして使用することができる。
【０１９０】
選択パラメータは、共有プールにおけるインデックスが共有マトリクスにおけるインデックスに割り当てられた線形合同発生器（linear congruential generator）に対する入力とすることができる。例えば、選択パラメータは該線形合同発生器の漸化式（recurrence relation）における乗数であり得る。好ましくは、選択パラメータは組内のエントリの数に対して相対的に素である。例えば、選択パラメータは増分とすることもできる。線形合同発生器は、当該組に存在するのと同数の数を発生することができ、これに応じて共有プールの全て又は一部を置換することができる。線形合同発生器のオーバーヘッドは暗号ランダム関数よりも大幅に小さいことに注意されたい。
【０１９１】
選択関数は、例えば選択パラメータｒ及びｓに基づく暗号ランダム関数を有することもでき、共有プールにおける該共有プールのサイズによるモジュロのインデックス(r + Prf(s|j))のエントリは、Ａの或る組における（例えば、共有マトリクスの行又は列における）インデックスｊのエントリにマッピングすることができ、ここで、Prfは擬似ランダム関数を示し、(s|j)はｓ及びｊの連結（concatenation）を示す。
【０１９２】
更に他の実施態様において、当該プールへの選択関数の適用の後に、追加の関数Ｓが適用される。このような関数Ｓの例は、１対1関数の{0,1,…,q-1}に対する要素毎の適用、又はランダム化されたエントリによる幾つかのマトリクスエントリの交換である。
【０１９３】
一実施態様において、共有マトリクスユニット１３０及び２３０は、共有マトリクスにおける全ての整数、多項式及び／又は多項式係数を共有プールから選択するように構成される。この構成は、共有マトリクスの新たなバージョンが即座に利用可能となるという利点を有する。しかしながら、共有プールに存在する如何なる傾向も共有マトリクスにおいて反映され得る。非常に高いセキュリティの場合、これを回避することが望ましいであろう。これを行う幾つかの方法が存在する。例えば、共有プールの内容を時間にわたり更新することができる。例えば、新たな共有マトリクスが発生された都度、共有プールの内容は、例えば乱数発生器により複数の新たなエントリを発生することにより更新することができる。もっとも、このことは、共有プールが第１及び第２ノードの間の同期を失い得る危険性を生じ得る。この危険性は、共有プールを更新するためのシードとして選択パラメータを使用することにより低減される。例えば、共有プールは共有マトリクスを発生する前に更新することができる。成功裏のキー発生が行われた場合にのみ、共有プールに対する変更は維持され、そうでない場合、共有プールは前の状態に戻される。成功裏のキー発生が可能でない場合、共有プールは、例えば再発生のためのシードの交換を有し得る共有プール再発生プロトコルに従って、完全な再発生により更新することもできる。
【０１９４】
特定の共有プールに対する依存を低減する他の方法は、共有プールから共有マトリクスの一部のみを取ることである。例えば、一実施態様においては、共有マトリクスにおける整数、多項式及び／又は多項式係数の一部が共有プールから選択され、該共有マトリクスの残りの部分を発生する。例えば、ノードはシードを、共有プールを発生するためのシードが交換されるのと同様の方法で、及び／又は選択パラメータが交換されるのと同様の方法で交換することができる。該シードは、共有マトリクスの一部を発生するために使用される。例えば、共有マトリクスにおける予め定められたエントリを更新することができる。例えば、予め定められた場所が、各行における及び／又は各列における少なくとも１つのエントリを有することができる。一実施態様においては、係数又は全多項式を更新することができる。一実施態様においては、複数のエントリ／係数がランダムに選択される（例えば、前記シード又は選択パラメータ等により種（シード）を蒔かれた乱数発生器により選択される）。
【０１９５】
交換又は発生するエントリ／係数の数は固定の値、例えば、少なくとも１０又は少なくとも１００等とすることができる。該数は共有マトリクスに比例することができる。例えば、エントリ／係数の数の少なくとも平方根分は共有プールからは取り込まれず、発生又は交換される。
【０１９６】
エントリの一部のみを共有プールから取り込む代わりに、先ず共有マトリクス全体を共有プールから選択し、これの一部を他の値に交換することもできる。例えば、交換又はランダム化ステップが共有マトリクスを、キー交換のために使用される前に補正することができる。例えば、エントリのうちの１以上を選択し（例えば、予め定め、ランダムに選択し、又はプロトコルにより）、ランダムに発生された（例えば、シードに従って等）エントリにより置き換えることができる。代わりに、共有マトリクスにおける幾つかの又は全てのエントリにマッピングを適用することもできる。例えば、１つ、２以上又は全てのエントリに、{0,1,…,q-1}に対する１対1マッピングのエントリ毎の適用を行うことができる。ランダム化関数は交換／置き換えと同数に適用することができるが、ランダム化関数は、それ以上に（例えば、全エントリ／係数に）適用することもできる。
【０１９７】
以下、キー交換プロトコルを更に説明する。この実施態様においては、共有マトリクスが第１モジュラスｑによるモジュロの整数を有すると仮定される。しかしながら、キー交換プロトコルの他の実施態様において、共有マトリクス及び秘密キーは、モジュラスｑ及び第１既約多項式ｆによるモジュロの多項式を有する。公開キーマトリクスは、第２モジュラスｐ及び既約多項式のモジュロであり得る。丸めを用いる代わりに、他のノイズ源を用いることもできる。イニシエータノード１１０は、秘密キーマトリクスユニット１４０を有する。レスポンダノード２１０は、秘密キーマトリクスユニット２４０を有する。秘密キーマトリクスユニット１４０は秘密キーマトリクスSIを発生するように構成され；秘密キーマトリクスユニット２４０は秘密キーマトリクスSRを発生するように構成される。当該秘密キーマトリクスにおけるエントリは、モジュロｆの多項式である。ｆの次数が１である場合、事実上、エントリは整数である。
【０１９８】
一般的に言って、当該秘密キーマトリクスはランダムに選択される。例えば、秘密キーマトリクス（SI,SR）におけるエントリは均一なランダム確率分布から選択することができる。該分布は不均一とすることもでき、例えば、その場合においてゼロのエントリの確率は非ゼロのエントリの確率より大きい（例えば、少なくとも２倍大きい）。
【０１９９】
例えばセキュリティを改善するため又はデータサイズを低減するために、当該秘密キーマトリクスに種々の制限を課すことができる。秘密キーマトリクス（SI,SR）は、例えば、制限内の候補キーマトリクスから均一にランダムに選択することができる。例えば、一実施態様において、当該秘密キーマトリクスにおける要素の係数はbound(s)により絶対値に制限され、例えば、前記制限は２であり（s=2）又は該制限は１であり（s=1）、後者は符号付き二進に対応する。例えば、秘密キーマトリクス（SI,SR）の列及び／又は行は、固定された又は制限されたハミング重み（hs）を有する。
【０２００】
発明者は、驚くべきことに、制限を小さく選択することが二重の利点を有することを見出した。即ち、当該秘密キーマトリクスとのマトリクス乗算は一層速くなり、各側で計算される生キーの間の距離が一層小さくなる（後述参照）。後者は、より少ない調整データしか必要とされない、及び／又はノードが異なるキーに合意する故の当該プロトコルにおける失敗の確率が一層小さくなることを意味する。
【０２０１】
一実施態様において、制限ｓは１である（s=1）。即ち、秘密キーマトリクスのエントリは、値−１，０及び１である係数のみを有する。これを“符号付き二進”とも称する。
【０２０２】
当該秘密キーマトリクスの大きさは、マトリクスＡにより乗算され得るように選択される。例えば、Ａがｋｘｋなら、イニシエータノードの秘密キーマトリクスはｋｘ
【数３９】
2020537191.tif 000047
のマトリクスであり得る。
【数４０】
2020537191.tif 000048
及びｋの大きさは、共有キーにおいて十分な数のビットが得ると共に十分に高いセキュリティレベルを得るのに十分な程大きく選定される。
【０２０３】
当該秘密キーマトリクスのエントリの大きさ制限することに加えて、非ゼロ要素の数を制限することにより更なる利点が得られる。マトリクスの列又は行のハミング重みを、該マトリクスの非ゼロ要素の数として参照する。
【０２０４】
発明者は、秘密キーマトリクスのハミング重みを制限する種々の方法を調査した。一般的に、当該秘密キーマトリクスがマトリクスＡと左又は右乗算されるかに依存して、列又は行の何れかに関してハミング重みを制限するだけで十分である。例えば、当該秘密キーマトリクスがマトリクスＡと右乗算される場合（例えば、ＡＳ）、該秘密キーマトリクスの列におけるハミング重みを制限するだけで十分である。
【０２０５】
例えば、秘密キーマトリクスの列及び／又は行のハミング重みに関して上限を選択することができる。該上限は全ての列及び／又は行に対して同一とすることができる。一実施態様において、秘密キーマトリクス（SI,SR）の列及び／又は行は、同一の固定されたハミング重みを有する。
【０２０６】
条件に従い、秘密キーマトリクスが、候補秘密キーマトリクス、即ち、例えば列又は行におけるハミング重み及びエントリに対する制限に関する選択された要件を満足するマトリクスから一様にランダムに選択される場合、セキュリティは改善される。例えば、各列のハミング重みは５０であるとの条件を実施したい場合、各列に関して５０のハミング重みを有する正しいディメンションの全てのマトリクスの集合から秘密キーマトリクスを選択することが有利である。如何なる所望のハミング重みの一様にランダムなビット列をも選択するための効率的アルゴリズムが既知である。
【０２０７】
秘密キーマトリクスのハミング重みを制限する別の方法は、秘密キーマトリクス（SI,SR）の列及び／又は行を確率分布から選択することである。例えば、秘密キーマトリクス（SI,SR）におけるエントリを不均一な確率分布から選択することができ、その場合において、ゼロのエントリの確率は非ゼロのエントリの確率より大きい。一実施態様において、該確率分布は、列及び／又は行に対して所定の予測されるハミング重みを付与するように選択される。例えば、長さｎ及び予測されるハミング重みhsの列を選択するために、各エントリを確率hs/nを持つ非ゼロとして選択することができる。非ゼロのエントリは、１又は−１として（例えば、等しい確率の）選択することができる。
【０２０８】
イニシエータノード１１０は、公開キーマトリクスユニット１５０を有する。レスポンダノード２１０は、公開キーマトリクスユニット２５０を有する。公開キーマトリクスユニットは、公開キーマトリクスをマトリクスＡ及び秘密キーマトリクスＳから計算する。
【０２０９】
公開及び秘密なる用語は、共有キーは公開情報の知識だけでは又は幾らかの秘密情報の知識なしでは得られないことを伝えることを意図するものである。もっとも、公開情報が積極的に共有されるという要件は存在しない。例えば、キー共有プロトコルは、公開キーを盗聴者から安全に保つ（推定）セキュアチャンネルを介して実行することができる。この場合、キー共有プロトコルは、当該チャンネルのセキュリティが侵害された場合に、セキュリティの追加のレイヤを提供する。
【０２１０】
当該公開キーマトリクスユニットは、公開キーマトリクスＰ（イニシエータ及びレスポンダノードの各々のためのPI，PR）を、共有マトリクス（A）及び秘密キーマトリクス（SI又はSR）の間のマトリクス積の第１モジュラス（ｑ）及びｆによるモジュロを計算し、マトリクス積を得、及びノイズを追加することにより計算する。
【０２１１】
この中間のマトリクス乗算は明らかにされないことに注意されたい。共有マトリクスＡ及び該マトリクス乗算の結果の知識が、秘密キーを明らかにする。マトリクスＡを反転することにより計算することができるからである。
【０２１２】
ノイズを追加することは、誤差項又はノイズ項を選択し、これらを上記マトリクス積のエントリに追加することにより実行することができる。例えば、ノイズは平均０のガウス分布から選択することができる。ノイズを追加する好ましい方法は、上記中間マトリクス積を縮小（スケールダウン）する、例えば係数を縮小することである。
【０２１３】
一実施態様において、当該公開キーマトリクスユニットは、前記マトリクス積のエントリを第２モジュラスｐにスケールダウンする。第２モジュラスｐは、第１モジュラスｑより小さい。スケーリングされたエントリは、第２モジュラス（ｐ）により乗算され、第１モジュラス（ｑ）により除算され、最も近い整数に丸められたスケーリングされていないエントリに等しい。例えば、ｘが当該マトリクス積におけるスケーリングされていないエントリのモジュロｑである場合、スケーリングされたエントリは
【数４１】
2020537191.tif 000049
として選択され、ここで、
【数４２】
2020537191.tif 000050
は最も近い整数を表す。スケーリング処理の後、秘密キーを公開キー及びマトリクスＡから計算することは、最早、容易には可能でない。
【０２１４】
公開キーマトリクスにおけるエントリは、区間[0, p-1]の係数を持つ多項式として表すことができる。秘密キーマトリクスにおけるエントリも、区間[0, p-1]の係数を持つ多項式として表すことができる。後の乗算のための整数の大きさを低減するために、区間[-p/2 , p/2]の係数を選択する利点が存在する。前述したように、秘密キーマトリクスも、区間[-s, s]又は[0, s]内に選択された係数を有することができる。
【０２１５】
マトリクスＡ及び秘密キーマトリクスＳの乗算は、第１モジュラスｑ及びｆのモジュロで実施される。この目的のために、当該ネットワークノードはモジュロｑ及びモジュロｆで縮小するためのモジュール縮小ユニットを有することができる。秘密キーマトリクスＳにおける係数が小さい、例えば１により制限される又は絶対値で１により制限される場合、当該モジュール式縮小は簡略化することができる。即ち、マトリクス乗算の間において、係数がｑより大きくなる又は０より小さくなる都度、ｑを減算又は加算することにより当該結果は区間０〜q-1に戻される。
【０２１６】
当該イニシエータノード及びレスポンダノードの両方は、自身の公開キーマトリクスを、例えば通信インターフェース１２０及び２２０を用いて、他方のノードに送信する。発明者は、マトリクス積を縮小することにより実現される少なくとも３つの利点を見出した。先ず、ノイズの発生及び当該マトリクス積への明示的な追加は回避される。ノイズの導入は、確率分布、例えばガウス分布の計算を必要とする。これらは、相対的に計算的に大変である。第２に、通信要件が削減される。第２モジュラスｐは第１モジュラスｑより小さいので、公開キーマトリクスのエントリを表すために秘密キーマトリクスのものより少ないビットしか必要とされない。第３に、公開キーマトリクスに関わる計算は、より小さな数を伴うので一層小さくなる。単一の対策が３つの利点を同時に提供することは驚くべきことである。
【０２１７】
第２モジュラスｐが第１モジュラスｑを分割することが極めて好ましい。興味あることに，発明者は第１モジュラス又は第２モジュラスの何れも素数であることを要さないことを見出した。事実、第２モジュラス（ｐ）及び／又は第１モジュラス（ｑ）を２の冪として選択することが、公開キー及び秘密キーが均一に分布されるという利点を有することが分かった。一実施態様においては、第１及び第２モジュラスの両方が２の冪である。
【０２１８】
一実施態様においては、モジュラスｐ及びｑに加えて、2B+bh|pが２の冪であることを更に要する。このことは、調整データが見られたとしても一様な共有キーを生じさせる。Ｂは、生キーのエントリ当たりに抽出される共有キービットの数である。
【０２１９】
前記モジュラスの大きさは非常に大きい必要はない。例えば、一実施態様において、第２モジュラスは１２以上のビットサイズを有し、及び／又は第１モジュラスは８以上のビットサイズを有する。セキュリティ要件に依存して、一層大きな又は一層小さなサイズが可能である。一実施態様において、ｑは2^12〜2^15の範囲内であり、ｐは2^7〜2^9（両値を含む）の範囲内である。ｐ及びｑの値は、セキュリティの要求に応じて一層大きく又は一層小さく選択することができる。
【０２２０】
イニシエータノード１１０は、共有キーユニット１６０を有する。レスポンダノード２１０は、共有キーユニット２６０を有する。これら共有キーユニットは、これらの何れかが調整データを発生及び送信し、又は受信及び適用するという点で相違する。
【０２２１】
共有キーユニット１６０及び共有キーユニット２６０は、共に、生キー１６２，２６２を、他方のノードの受信された公開キーマトリクスと当該ネットワークノード自身の秘密キーマトリクスとの間のマトリクス積として計算するよう構成される。該積は既約多項式ｆによるモジュロで計算される。スケーリングが用いられる場合、後者も第２モジュラス（ｐ）によるモジュロで計算される。当該マトリクスの大きさ及びマトリクス乗算は、スケーリング処理が省略されたとしたら、両当事者が同一の生キーを計算するように選択される。即ち、同一のキーが、ノイズの追加無しで、且つ、全ての計算がｑ及びｆのモジュロで実施されたなら結果として得られる。しかしながら、ノイズにより、両生キーは同一である必要はない。該生キーの計算は、モジュロｐで実行することができる。当該ネットワークノードは、モジュロｐでの乗算の結果を縮小するためのモジュラユニットを有することができる。
【０２２２】
レスポンダノード２１０の共有キーユニット２６０は、生キー２６２から調整データ２６４及び共有キー２６６を得ると共に、該調整データ２６４をイニシエータネットワークノード１１０に送信するように構成される。調整データは、生キーにおける１以上のビット（例えば、係数からのビット）の形をとることができる。調整データとして選択されたビットは、キーを発生する目的のため無視される。前記文献は調整データの種々の例を含む。
【０２２３】
共有キーユニット２６０は、キーを形成するために生キーのエントリから幾つかのビットを選択する。例えば、選択されたビットは連結される。一実施態様において、選択されたビットはキー導出関数（KDF）、例えば暗号ハッシュ関数に入力される。KDFの例は、例えば、文献the CMLA KDF from CMLA Technical Specification, Version: V1.43-20131218又は“DRM specification”, OMA-TS-DRM-DRM-V2_0_2-20080723-A, Open Mobile AllianceTM, Version 2.0.2, section 7.1.2に定義されたKDF関数等に示されている。キー導出関数は、例えば丸め関数により（例えば、連結後に）又は調整関数からの出力から（これも、連結後に）得られる生キーにおけるキービットのエントリに適用することができる。
【０２２４】
キービットとして選択されない幾つかのビットは、調整データとして選択することができる。最後に、幾つかのビットは一緒に破棄することができる。共有キーユニット２６０により生キーから得られたキー調整データは、イニシエータノード１１０に送信される。
【０２２５】
共有キーユニット１６０は、第２電子ネットワークノードの調整データ１６４（ｈ）を受信すると共に、該受信された調整データ及び生キーマトリクス１６２に調整関数を適用することにより共有キー１６６を計算するように構成される。例えば、上記調整関数は、生キー１６２におけるエントリの各々及び調整データの対応する部分に適用することができる。例えば、調整データ１６４がレスポンダノード２１０により発生された生キーの一部であった場合、イニシエータノードは、ノード２１０により取得され得たものであって、受信された調整データと同等の（例えば、受信されたのと同一の中間ビットを有する）生キーを選択することができる。
【０２２６】
キー共有プロトコルの複数の実行のためにマトリクスＡ及び秘密キーマトリクスの一方を再使用することができる（両者が同一の場合は、同一の共有キーを得るであろう）。このことは、特にマトリクスＡが再使用される場合、通信オーバーヘッドを低減する。しかしながら、発明者は、マトリクスＡ及び秘密キーマトリクスの何れも再使用する必要がないことを理解した（これらの要素には認証が関係していないからである）。好ましい実施態様においては、新たな各キー交換に対して、フレッシュなマトリクスＡ及びフレッシュな秘密キーが得られる。このことは、攻撃者が当該プロトコルの複数の実行を観察することにより更なる情報を観察するというオプションを有することがないという利点を有する。更に、前方秘匿性が改善される。
【０２２７】
当該プロトコルが完了し、両ノードが共有キーを計算した後、これらノードの一方は、両ノードが同一のキーに合意したことを検証するために他方のノードにキー確認メッセージを送信することができる。例えば、キー確認メッセージは、当該共有キーのハッシュ、固定値の暗号化、ランダム値と一緒の該ランダム値の暗号化とすることができる。キー確認は、チャレンジレスポンスプロトコルを用いて実行することもできる。キー確認を省略することを選択することもできる。当事者が異なる共有キーを取得した場合、これら当事者間で実行される後続の通信は失敗するであろう。例えば、当該共有キーは更なる通信、例えばデジタルメッセージを暗号化及び／又は認証するために使用され得る。これらが異なる共有キーで到達した場合、解読及び／又は検証は失敗し得る。
【０２２８】
種々の実施態様において、前記通信インターフェースは種々の代替物から選択することができる。例えば、通信インターフェースは、ローカル又は広域ネットワーク（例えばインターネット）に対するネットワークインターフェース、内部又は外部記憶部に対する記憶部インターフェース、キーボード等とすることができる。
【０２２９】
当該ネットワークノードは、例えばマトリクスＡ、公開キー及び秘密キーマトリクス、並びに共有キー等の中間データを記憶するための電子記憶部を有することができる。該記憶部は、電子メモリ（例えば、フラッシュメモリ）、又は磁気メモリ（例えば、ハードディスク等）として実施化することができる。該記憶部は、一緒に記憶部を形成する複数の別個のメモリを有することができる。該記憶部は、例えばＲＡＭ等の一時的メモリとすることもできる。一時的記憶部の場合、該記憶部は、例えばオプションのネットワーク接続（別途示されていない）を介して取得すること等により、使用前に共通のパラメータを得るための何らかの手段を使用することができる。
【０２３０】
典型的に、装置１１０及び２１０は、各々、装置１１０及び２１０に記憶された適切なソフトウェアを実行するマイクロプロセッサ（図１には別途示されていない）を有し、例えば、上記ソフトウェアはダウンロードされ及び／又は対応するメモリ（例えば、ＲＡＭ等の揮発性メモリ又はフラッシュ等の不揮発性メモリ（別途示されていない））に記憶されたものであり得る。代わりに、装置１１０及び２１０は、全体として又は部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラマブルロジックで実施化することもできる。装置１１０及び２１０は、全体として又は部分的に、所謂特定用途向け集積回路（ＡＳＩＣ）、即ち特定の使用のために特化された集積回路（ＩＣ）として実施化することができる。例えば、斯かる回路は、例えばVerilog、VHDL等のハードウェア記述言語を用いて、ＣＭＯＳで実施化することができる。
【０２３１】
一実施態様において、ネットワークノードは、通信インターフェース回路、共有マトリクス回路、秘密キーマトリクス回路、公開キーマトリクス回路及び共有キー回路を有する。これら回路は、本明細書に記載した対応するユニットを構成する。これら回路はプロセッサ回路及び記憶回路とすることができ、該プロセッサ回路は該記憶回路において電子的に表された命令を実行する。
【０２３２】
プロセッサ回路は、分散態様で、例えば複数の副プロセッサ回路として実施化することができる。記憶部は、複数の分散された副記憶部に跨がり分散させることができる。当該メモリの一部又は全ては、電子メモリ、磁気メモリ等とすることができる。例えば、当該記憶部は揮発性及び不揮発性部分を有することができる。該記憶部の一部は読み出し専用とすることができる。当該回路は、ＦＰＧＡ又はＡＳＩＣ等とすることもできる。
【０２３３】
図２は、電子キー交換方法の実施態様の一例を概略的に示す。該方法は、イニシエータノード１１０又はレスポンダノード２１０等の第１電子ネットワークノードにより実行することができる。
【０２３４】
方法４００は、
−  第１電子ネットワークノードと第２電子ネットワークノードとの間にデジタル通信を配するステップ（４１０）と、
−  共有マトリクス（Ａ）を得るステップ（４２０）であり、該共有マトリクスは通信インターフェースを介して前記第２電子ネットワークノードと共有され、該共有マトリクスＡにおけるエントリは整数、好ましくは第１モジュラスｑによるモジュロの整数であり及び／又は該共有マトリクス（Ａ）のエントリは多項式であり、該共有マトリクス（Ａ）を得るステップが、
−  前記第２電子ネットワークノードと共有される１以上の選択パラメータを得るステップと、
−  共有プールから整数、多項式及び／又は多項式係数を選択するステップであって、該共有プールは前記第２電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び／又は多項式を有し、該選択するステップは１以上の選択関数に従って実行され、選択関数は前記共有プールからの整数、多項式及び／又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、選択関数により割り当てられる特定の整数、多項式又は多項式係数が前記選択パラメータに依存するステップと、
を有するステップと、
−  秘密キーマトリクス（ＳＩ）を発生するステップ（４３０）であって、該秘密キーマトリクスにおけるエントリが第１モジュラス（ｑ）によるモジュロの整数及び／又は既約多項式（ｆ）によるモジュロの整数多項式であるステップと、
−  公開キーマトリクス（ＰＩ）を、
−  前記第１モジュラス（ｑ）によるモジュロ及び／又は前記既約多項式（ｆ）によるモジュロの前記共有マトリクス（Ａ）と前記秘密キーマトリクス（ＳＩ）との間のマトリクス積を計算し（４４２）、マトリクス積を取得し、及び前記マトリクス積のエントリにノイズを加える（４４４）、
ことにより発生するステップ（４４０）と、
−  前記第１電子ネットワークノードの前記公開キーマトリクスを前記第２電子ネットワークノードに送信するステップ（４５２）と、
−  前記第２電子ネットワークノードの公開キーマトリクス（ＰＲ）を受信するステップ（４５４）と、
−  生キーを、前記受信された前記第２電子ネットワークノードの公開キーマトリクスと前記第１電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積の前記第２モジュラス（ｐ）によるモジュロとして計算するステップ（４６０）と、
を有する。
【０２３５】
当該第１電子ネットワークノードがイニシエータモードに従って動作している場合、該第１電子ネットワークノードは以下の更なる要素を実行する：
−  前記第２電子ネットワークノードの調整データ（ｈ）を受信するステップ（４７２）、及び
−  共有キーを、前記受信された調整データ及び前記生キーに調整関数（rec）を適用することにより計算するステップ（４８２）。
【０２３６】
当該第１電子ネットワークノードがレスポンダモードに従って動作している場合、該第１電子ネットワークノードは以下の更なる要素を実行する：
−  前記共有キー及び調整データを前記生キーから得るステップ（４７４）、及び
−  前記調整データを第１電子ネットワークノードに送信するステップ（４８４）。
【０２３７】
当業者にとり明らかなように、当該方法を実行する多数の異なる方法が可能である。例えば、上記ステップの順序は変更することができ、幾つかのステップは並行して実行することができる。更に、ステップの間に他の方法ステップを挿入することもできる。該挿入されるステップは、本発明に記載されるような当該方法の改良を表すことができ、又は当該方法とは無関係であり得る。例えば、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
【０２３８】
本発明による方法は、プロセッサシステムに方法４００を実行させるための命令を備えたソフトウェアを用いて実行することができる。ソフトウェアは、システムの特定の副主体により行われるステップのみを含むことができる。ソフトウェアは、ハードディスク、フロッピーディスク、メモリ、光ディスク等の適切な記憶媒体に記憶することができる。ソフトウェアは有線で、無線で又は例えばインターネット等のデータネットワークを用いて伝送することができる。ソフトウェアは、ダウンロードのために及び／又はサーバ上での遠隔使用のために利用可能にすることができる。本発明による方法は、当該方法を実行するようにプログラマブルロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ））を構成するように配されたビットストリームを用いて実行することができる。
【０２３９】
本発明は、本発明を実施させるよう構成されたコンピュータプログラム、特に担体上又は内のコンピュータプログラムにも及ぶと理解される。該プログラムは、ソースコード、オブジェクトコード、中間ソースコード及び部分的にコンパイルされた形態等のオブジェクトコードの形態とすることができ、又は本発明による方法の実施化に使用するのに適した如何なる他の形態とすることもできる。コンピュータプログラム製品に関する実施態様は、前述した方法の少なくとも１つにおける処理ステップの各々に対応するコンピュータ実行可能な命令を有する。これらの命令は、サブルーチンに分割することができ、及び／又は静的に若しくは動的にリンクされ得る１以上のファイルに記憶することができる。コンピュータプログラム製品に関する他の実施態様は、前述したシステム及び／又は製品の少なくとも１つにおける手段の各々に対応するコンピュータ実行可能な命令を有する。
【０２４０】
図３ａは、コンピュータプログラム１０２０を含む書込可能部分１０１０を備えたコンピュータ読取可能な媒体１０００を示し、該コンピュータプログラム１０２０はプロセッサシステムに一実施態様による暗号処理、例えばキー共有方法を実行させるための命令を有する。コンピュータプログラム１０２０は、コンピュータ読取可能な媒体１０００上に、該コンピュータ読取可能な媒体１０００の物理的マークとして又は磁化により具現化することができる。しかしながら、如何なる他の好適な具現化も同様に考えられる。更に、ここではコンピュータ読取可能な媒体１０００は光ディスクとして示されているが、該コンピュータ読取可能な媒体１０００は、ハードディスク、固体メモリ、フラッシュメモリ等の如何なる好適なコンピュータ読取可能な媒体とすることもでき、記録不可能な又は記録可能なものとすることもできる。コンピュータプログラム１０２０は、プロセッサシステムに前記キー共有方法４００又は一実施態様による他の暗号処理を実行させる命令を有する。
【０２４１】
図３ｂは、例えば１以上の暗号処理を実施化するための一実施態様によるプロセッサシステム１１４０の概略図を示す。該プロセッサシステムは、１以上の集積回路１１１０を有する。該１以上の集積回路１１１０のアーキテクチャは、図３ｂに概略的に示されている。回路１１１０は、一実施態様による方法を実行する及び／又はそのモジュール若しくはユニットを実施化するためのコンピュータプログラム要素を実行する処理ユニット１１２０（例えば、ＣＰＵ）を有する。回路１１１０はプログラムコード、データ等を記憶するためのメモリ１１２２を有する。メモリ１１２２の一部は読取専用とすることができる。回路１１１０は、例えば、アンテナ、コネクタ又は両方等の通信要素１１２６を有することができる。回路１１１０は、当該方法において定義された処理の一部又は全てを実行するための専用の集積回路１１２４を有することができる。プロセッサ１１２０、メモリ１１２２、専用のＩＣ１１２４及び通信要素１１２６は、相互接続部１１３０（例えば、バス）を介して相互に接続することができる。プロセッサシステム１１１０は、アンテナ及び／又はコネクタを各々用いて接触型及び／又は無接触型通信を行うように構成することができる。
【０２４２】
例えば、一実施態様において、ネットワークノードはプロセッサ回路及びメモリ回路を有することができ、プロセッサ回路はメモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、該プロセッサ回路は、インテルのCore i7プロセッサ、ARM Cortex-R8等とすることができる。一実施態様において、該プロセッサ回路はARM Cortex M0とすることができる。当該メモリ回路は、ＲＯＭ回路又は不揮発性メモリ（例えば、フラッシュメモリ）とすることができる。該メモリ回路は、揮発性メモリ、例えばＳＲＡＭメモリとすることができる。後者の場合、検証装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
【０２４３】
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
【０２４４】
尚、請求項において括弧内に示される如何なる符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形の使用は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは１つの同一品目のハードウェアにより具現化することができる。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これら手段の組合せを有利に使用することができないということを示すものではない。
【０２４５】
請求項において、括弧内の符号は例示的実施態様の図面における符号又は実施態様の式を示し、かくして、当該請求項の理解容易性を高める。これらの符号は当該請求項を限定するものと見なしてはならない。
【符号の説明】
【０２４６】
１００    キー共有ネットワーク
１１０    イニシエータ（開始者）タイプのネットワークノード
１２０    通信インターフェース
１３０    共有マトリクスユニット
１３１    共有プール
１４０    秘密キーマトリクスユニット
１５０    公開キーマトリクスユニット
１６０    共有キーユニット
１６２    生のキー
１６４    調整データ（ｈ）
１６６    共有キー
２１０    レスポンダ（応答者）タイプのネットワークノード
２２０    通信インターフェース
２３０    共有マトリクスユニット
２４０    秘密キーマトリクスユニット
２５０    公開キーマトリクスユニット
２６０    共有キーユニット
２６２    生のキー
２６４    調整データ（ｈ）
２６６    共有キー
１０００  コンピュータ読取可能な媒体
１０１０  書込可能部分
１０２０  コンピュータプログラム
１１１０  集積回路
１１２０  処理ユニット
１１２２  メモリ
１１２４  専用の集積回路
１１２６  通信エレメント
１１３０  相互接続部
１１４０  プロセッサシステム
【図１】
2020537191.tif 000056
【図２】
2020537191.tif 000057
【図３ａ】
2020537191.tif 000058
【図３ｂ】
2020537191.tif 000059
【図４】
2020537191.tif 000060
【国際調査報告】
2020537191.tif 000061
2020537191.tif 000062