(57)【特許請求の範囲】
【請求項１】
第１電子ネットワークノードの公開キーマトリクスを使用する暗号処理のための第１電子ネットワークノードであって、該第１電子ネットワークノードは、
第２ネットワークノードとのデジタル通信のための通信インターフェースと、
プロセッサ回路と、
を有し、該プロセッサ回路が、
困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信し、
共有マトリクス（Ａ）を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して前記第２ネットワークノードと共有され、該共有マトリクス（Ａ）は前記構造パラメータ（ｎ）により除算された前記困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは前記構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら整数多項式の係数は第１モジュラス（ｑ）によるモジュロで選択され、
秘密キーマトリクス（ＳＩ）を発生し、ここで、該秘密キーマトリクスのエントリは前記構造パラメータ（ｎ）より小さい次数の整数多項式であり、
前記第１電子ネットワークノードの前記公開キーマトリクス（ＰＩ）を、
前記共有マトリクス（Ａ）と前記秘密キーマトリクス（ＳＩ）との間のマトリクス積を前記第１モジュラス（ｑ）によるモジュロ及び前記構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生し、及び
前記第１電子ネットワークノードの公開キーマトリクスを前記第２ネットワークノードに送信する、
第１電子ネットワークノード。
【請求項２】
前記プロセッサ回路は、
前記第２ネットワークノードの公開キーマトリクス（ＰＲ）を受信し、及び
生キーを、前記第２ネットワークノードの受信された公開キーマトリクスと前記第１電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算し、
前記第１電子ネットワークノードが、更に、
前記第２ネットワークノードの調整データ（ｈ）を受信し、及び
共有キー又はメッセージを、前記受信された調整データ及び前記生キーに調整関数（rec）を適用することにより計算する、
又は
前記第１電子ネットワークノードが、更に、
共有キー又はメッセージを得ると共に前記生キーから調整データを取得し、及び
前記調整データを前記第２ネットワークノードに送信する、
請求項１に記載の第１電子ネットワークノード。
【請求項３】
前記暗号処理が、キー交換（ＫＥＸ）プロトコル、キーカプセル化メカニズム（ＫＥＭ）、公開キー暗号化（ＰＫＥ）及びデジタル署名の何れか１つである、請求項１又は２に記載の第１電子ネットワークノード。
【請求項４】
前記既約多項式がxn+1又は(xn-1)/(x-1)である、請求項１から３の何れか一項に記載の第１電子ネットワークノード。
【請求項５】
異なる困難度パラメータ（ｄ）及び／又は異なる構造パラメータ（ｎ）を受信し、前記構造パラメータ（ｎ）及び／又は困難度パラメータ（ｄ）の異なる値に対して共通のマトリクス乗算部分を呼び出す、請求項１から４の何れか一項に記載の第１電子ネットワークノード。
【請求項６】
前記構造パラメータは、少なくとも１であって、最大で前記困難度パラメータである整数であるか、
前記構造パラメータは１に等しいか若しくは前記困難度パラメータに等しいか、
前記構造パラメータは素数であることに制限されるか、
前記構造パラメータは素数であることに制限され、前記第１モジュラスは２の冪であるか、及び／又は
前記構造パラメータは素数であることに制限され、前記第１モジュラスは２の冪であり、前記既約多項式は既約なモジュロ２である、
請求項１から５の何れか一項に記載の第１電子ネットワークノード。
【請求項７】
前記プロセッサ回路は共有マトリクス（Ａ）の拡張共有マトリクスを０より大きい次数の多項式エントリを循環マトリクスにより置換することにより計算し、該拡張共有マトリクスが前記困難度パラメータに等しい数の列及び行を有する、請求項１から６の何れか一項に記載の第１電子ネットワークノード。
【請求項８】
前記暗号処理が公開キー発生であり、前記公開キーは前記第１電子ネットワークノードの公開キーマトリクス及び前記共有マトリクス又は該共有マトリクスが得られるシードを有し、秘密キーは前記秘密キーマトリクスを有するか、又は
前記暗号処理が公開キー暗号化であり、前記公開キーは前記第２ネットワークノードの公開キーマトリクス及び前記共有マトリクス又は該共有マトリクスが得られるシードを有する、
請求項１から７の何れか一項に記載の第１電子ネットワークノード。
【請求項９】
前記マトリクス積のエントリにノイズを追加する処理は、スケーリングされていない該エントリを第２モジュラスで乗算し、前記第１モジュラスにより除算し、整数に丸め、及び該丸められたエントリの前記第２モジュラスによるモジュロを取る処理を有し、生キーを前記第２ネットワークノードの受信された公開キーマトリクスと前記第１電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する処理が、前記第２モジュラス（ｐ）によるモジュロで実行される、請求項１から８の何れか一項に記載の第１電子ネットワークノード。
【請求項１０】
ランダムなシードにより種を蒔かれた決定論的擬似乱数発生器の出力から前記共有マトリクス（Ａ）を発生することにより、前記共有マトリクス（Ａ）を取得し、該共有マトリクスが前記通信インターフェースを介して前記ランダムなシードを送信又は受信することにより前記第２ネットワークノードと共有される、請求項１から９の何れか一項に記載の第１電子ネットワークノード。
【請求項１１】
前記暗号処理が公開キー暗号化処理であり、
前記第１電子ネットワークノードの前記公開キーマトリクスが第１暗号文部分であり、
前記第１電子ネットワークノードは、
前記第２ネットワークノードの公開キーマトリクス（Ｐ_Ｒ）を受信し、
生キーを、前記第２ネットワークノードの前記受信された公開キーマトリクスと前記第１電子ネットワークノードの前記秘密キーマトリクスとの間のマトリクス積として計算し、
第２暗号文部分を、前記生キーから及びメッセージから計算し、
前記第１暗号文部分及び前記第２暗号文部分を前記第２ネットワークノードに送信する、
請求項１から１０の何れか一項に記載の第１電子ネットワークノード。
【請求項１２】
公開キー解読処理のための第１電子ネットワークノードであって、
第２ネットワークノードとのデジタル通信のための通信インターフェースと、
プロセッサ回路と、
を有し、該プロセッサ回路が、
困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信し、
秘密キーマトリクス（ＳＩ）を取得し、ここで、該秘密キーマトリクスのエントリは前記構造パラメータ（ｎ）より小さな次数の整数多項式であり、
第１暗号文部分（ＰＲ）及び第２暗号文部分を前記第２ネットワークノードから受信し、ここで、前記第１暗号文部分及び第２暗号文部分は共有マトリクス及び前記第１電子ネットワークノードの公開キーマトリクスに基づいて計算され、前記第１電子ネットワークノードの前記公開キーマトリクスは前記共有マトリクス及び前記秘密キーマトリクスから計算され、前記第１暗号文部分は、前記共有マトリクス（Ａ）と秘密キーマトリクス（ＳＩ）との間のマトリクス積を第１モジュラス（ｑ）によるモジュロ及び前記構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加することにより発生され、該共有マトリクス（Ａ）は前記構造パラメータ（ｎ）により除算された前記困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは前記構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら多項式の係数は前記第１モジュラス（ｑ）によるモジュロで選択され、前記秘密キーマトリクスのエントリは前記構造パラメータ（ｎ）より小さな次数の整数多項式であり、
生キーを、前記第１暗号文部分と前記秘密キーマトリクスとの間のマトリクス積として計算し、
前記生キー及び前記第２暗号文部分からメッセージを計算する、
第１電子ネットワークノード。
【請求項１３】
第１電子ネットワークノードの公開キーマトリクスを使用して暗号処理を実施する第１電子ネットワークノードのための電子暗号処理方法であって、
前記第１電子ネットワークノードと第２ネットワークノードとの間にデジタル通信を配するステップと、
困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信するステップと、
共有マトリクス（Ａ）を得るステップであって、該共有マトリクスは通信インターフェースを介して前記第２ネットワークノードと共有され、該共有マトリクス（Ａ）は前記構造パラメータ（ｎ）により除算された前記困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは前記構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら多項式の係数が第１モジュラス（ｑ）によるモジュロで選択されるステップと、
秘密キーマトリクス（ＳＩ）を発生するステップであって、該秘密キーマトリクスのエントリが前記構造パラメータ（ｎ）より小さい次数の整数多項式であるステップと、
前記第１電子ネットワークノードの前記公開キーマトリクス（ＰＩ）を、
前記共有マトリクス（Ａ）と前記秘密キーマトリクス（ＳＩ）との間のマトリクス積を前記第１モジュラス（ｑ）によるモジュロ及び前記構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生するステップと、
前記第１電子ネットワークノードの前記公開キーマトリクスを前記第２ネットワークノードに送信するステップと、
を有する、電子暗号処理方法。
【請求項１４】
前記マトリクス積のエントリにノイズを追加することは、前記マトリクス積のエントリをスケールダウンすることを有する、請求項１３に記載の電子暗号処理方法。
【請求項１５】
プロセッサシステムに請求項１３に記載の電子暗号処理方法を実行させるための命令を表す一時的又は非一時的データを有する、コンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理用に構成されたネットワークノード、暗号処理方法及びコンピュータ読取可能な媒体に関する。
【背景技術】
【０００２】
暗号法において、キー共有（合意）プロトコルは共通キーを未だ共有していないかも知れない２以上の当事者が斯かるキーに合意することができるプロトコルである。好ましくは、両当事者は、何れの当事者もキーの選択を強制することができないようにして結果に影響を与えることができる。斯かる２つの当事者の間の全通信を盗聴する攻撃者は、該キーに関して何も知るべきでない。それでも、同通信を調べる攻撃者は何も分からない又は僅かしか分からないものの、当事者自身は共有キーを導出することができる。キー共有プロトコルは、例えば、通信を安全にする（例えば、当事者間のメッセージを暗号化及び／又は認証する）ために有用である。
【０００３】
当事者間での安全な通信を容易化するために、キー共有プロトコルは、時には、更に暗号キー交換（ＫＥＸ）及び暗号キーカプセル化（ＫＥＭ）方式に分割される。
【０００４】
ＫＥＸ方式は、各当事者による公開キーの交換を伴い、これら公開キーは、次いで、他方の当事者により共通の共有秘密を計算するために自身の秘密キーと一緒に独立に使用される。このようなＫＥＸ方式の良く知られた例は、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である。
【０００９】
上記方式の各々は、例えば、エラーを伴う学習（Learning-with-errors：LWE）若しくは丸めを伴う学習（Learning-with-rounding：LWR）の何れか、又はモジュールを備えるモジュール格子（例えば、固定環のためのRLWE若しくはLWR）等の単一の基となる問題に依存した暗号プロトコル（例えば、KEX、KEM又はPKE）を実施する。例えば、NewHopeはRLWEのみに依存し、Kyber はk=3 モジュール（各モジュールは、Zq[x]/x^256+1の多項式である）を組み合わせることのみに依存し、spKEXはLWRのみに依存し、FrodoはLWEのみに依存する。RLWE等の方式におけるＲは、“環”又は多項式タイプの構成を指す。
【００１０】
このことは、幾つかの問題を課す。先ず第１に、これらシステムの各々を実施することは大きな投資となろう。これら方式の各々はコード化されねばならないのみならず、各々は安全性を損ない得る重大なバグを含まないことを保証するためにデバッグされねばならない。他方、全ての方式又は少なくとも大部分を実施しないことも、特定の危険性を伴う。上記問題の１つ（例えば、RLWE又はモジュール格子）が破られた場合、対応する方式は完全に破られる。破られた場合に或るタイプの方式から他のものへ変更することができるように、何らかのアップグレード経路が存在することが望ましい。
【参考文献】
【００１１】
[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。
文献[１]〜[７]の各々は参照により本明細書に含まれる。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前記方式の各々はコード化されねばならないのみならず、各々は安全性を損ない得る重大なバグを含まないことを保証するためにデバッグされねばならない。他方、全ての方式又は少なくとも大部分を実施しないことも、特定の危険性を伴う。上記問題の１つ（例えば、RLWE又はモジュール格子）が破られた場合、対応する方式は完全に破られる。破られた場合に或るタイプの方式から他のものへ変更することができるように、何らかのアップグレード経路が存在することが望ましい。
【課題を解決するための手段】
【００１３】
発明者は、多数の分類の格子暗号法をパラメータ表記する単一の方式を定義することが可能であることを理解した。僅かな入力パラメータのみを取り込むことが、格子暗号法の性質を変化させる。例えば、請求項に記載された暗号装置は、使用される暗号法のタイプを一緒に指定するのに十分な困難度パラメータｄ及び構造パラメータｎを受信することができる。困難度パラメータｄ及び構造パラメータｎの両方は、正の整数である。上記困難度パラメータを増加させることにより、当該問題の構造は同一に留まるが、一層大きくなり、従って一層困難な実体化が用いられる。困難度パラメータは、時には、セキュリティパラメータとも称される。実施態様において、困難度パラメータは、基となる格子の大きさ（dimension）に関係する。困難度パラメータの一層大きな値は基となる格子の一層大きな大きさにつながり、従って、攻撃者には解くのが一層困難な問題となる。前記構造パラメータは、当該システムにおける代数構造の量に関係する。該構造パラメータの一層大きな値は、一層多い代数構造を意味する。該構造パラメータの一層大きな値は攻撃するのが一層容易であり得ると推測される。格子が一層多い規則性を有するからである。例えば、格子問題を解くための漸進的に良い方法を見付ける調査を進める場合、ユーザは困難度パラメータを増加させることにより応じるであろう。一方、特定のタイプの格子問題を解くための急進的に良い方法を見付ける調査を進める場合、ユーザは構造パラメータを減少させることで応じるであろう。
【００１４】
例えば、一実施態様においては、複数の基となる問題、例えばRLWE、RLWR、モジュールRLWE、モジュールPLWR並びにLWE及びLWRを効率的に実体化することができる方式を定義される。このことは、該方式が２つの異なる仕様（一方が問題１のための、他方が問題２のための）に依存することを意味するのではなく、両問題を実体化するために同一のアルゴリズムを使用することができ、唯一の違いは入力パラメータであることを意味する。利点は：
−  同一の方式による多数の可能性のあるアプリケーションのカバレッジ；
−  実施化費用の最少化；
−  コードサイズの低減；
−  “弱い”問題に依存することが最早安全ではなく、“より強い”問題に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに対する準備；
を含む。
【００１５】
当該暗号装置は電子装置である。例えば、該暗号装置はモバイル電子装置、例えばモバイルフォンであり得る。例えば、該暗号装置は、セットトップボックス、スマートカード、コンピュータ等であり得る。ここに記載される暗号処理を実行する方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、金融アプリケーション、秘密の又は認証された通信等を含む。
【００１６】
本発明による方法は、コンピュータ上でコンピュータにより実施される方法として、専用のハードウェアにおいて、又は両者の組合せで実施化することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、当該コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体上に記憶された非一時的プログラムコードを有する。
【００１７】
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全ステップを実行するよう適合化されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な記憶媒体上で具現化される。
【００１８】
本発明の他の態様は、上記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、該コンピュータプログラムが例えばアップルのアップルストア、グーグルのプレイストア又はマイクロソフトのウインドウズストアにアップロードされ、且つ、該コンピュータプログラムが斯様なストアからダウンロード可能である場合に使用される。
【００１９】
本発明の更なる詳細、態様及び実施態様は、図面を参照して、例示のみとして後述される。図面における各要素は簡略化及び明瞭化のために図示され、必ずしも実寸通りに描かれてはいない。各図において、既に記載された要素に対応する要素は、同一の符号を有し得る。
【図面の簡単な説明】
【００２０】
【図１】図１は、キー共有ネットワークの実施態様の一例を概略的に示す。
【図２】図２は、電子キー交換方法の実施態様の一例を概略的に示す。
【図３ａ】図３ａは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。
【図３ｂ】図３ｂは、一実施態様によるプロセッサシステムの図を概略的に示す。
【図４ａ】図４ａは、公開キー解読ノードの実施態様の一例を概略的に示す。
【図４ｂ】図４ｂは、公開キー暗号化ノードの実施態様の一例を概略的に示す。
【発明を実施するための形態】
【００２１】
本発明は多数の異なる形態の実施態様が可能であるが、１以上の特定の実施態様が図面に示されると共に本明細書で詳細に説明されている。ここで、本開示は本発明の原理の例示と見なされるべきであり、本発明を図示及び記載された特定の実施態様に限定することを意図するものではないと理解される。以下においては、理解のために、実施態様の要素は動作時において説明されている。しかしながら、各要素は、これら要素により実行されるものとして説明されている機能を実行するように構成されていることは明らかであろう。更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
【００２２】
キー交換（KEX）プロトコル、キーカプセル化メカニズム（KEM：時にはキーカプセル化方法とも称される）、公開キー暗号化（PKE）、デジタル署名等の設計のための格子に基づく幾つかの方式が存在することを思い出されたい。これら方式の例は：
−  エラーを伴う学習（LWE）問題に基づくKEXであるFrodo；
−  エラーを伴う環学習（RLWE）問題に基づくKEXであるNewhope；
−  RLWEに基づいて選択平文攻撃のために設計された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、モジュールWR並びにLWE及びLWRを含む全ての斯様な問題を実体化することができる方式を見出した。以下では、異なる格子が困難度パラメータｄ及び構造パラメータｎに基づいて形成される暗号法に関して幾つかの例が記載される。
【００２９】
この方式においてパラメータを変更することにより、異なる基となる問題に基づくと共に異なる性能特性を示すプロトコル（KEX、KEM、PKE等）を実体化することができる。
【００３０】
この方式は、異なるセキュリティ／性能要求を持つ複数のアプリケーションに適用することができる。例えば、極秘文書はLWEに対する方式設定を用いることにより暗号化することができる一方、資源制約された無線通信を介するキー共有は環LWRパラメータに基づくものとすることができる。当該方式は更なる利点を有する。即ち、第１に、該方式はコードサイズを低減し、従って、より少ないメモリしか必要とされない。第２に、コードの検討のための努力が最少化される。単一のアルゴリズムしか検討及び検証されることを要さないからである。最後に、このような方式は、“弱い”問題（例えば、RLWEに基づいた）に依存することが最早安全ではなく、“より強い”問題（例えば、LWEに基づいた）に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに備えることができる。該方式は、一方が問題１に関するものであり他方が問題２に関するものである等の２つの異なる問題に依存するのではなく、同一のアルゴリズムが、唯一の差違が入力パラメータである異なる問題を実体化するために使用される。
【００３１】
核となる発明は、大きさ（ディメンション）ｄの格子問題を用い、ここで、ｄは入力パラメータである。該格子ディメンションは、RLWE、RLWR、モジュールLWE、モジュールWR、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を含んでいる。
【００４０】
【表１】
0006849860.tif 000002
【００４１】
上記から、ｎの選択に依存して、基となる問題はRLWR (n=dの場合)又はLWR (n=1)となることが分かる。両ケースにおいて、基となる格子問題はディメンションｄを有する。現状技術は上記アルゴリズムの２つの異なる実施化、即ち表２、を有することに注意されたい。公開キーｂ及びｕが計算される場合にLWRにおいて必要とされる丸めを無視していることに注意されたい。これは説明に必須でないからである。また、どの様にキー調整を実施することができるかの詳細も無視している（文献参照）。
【００４２】
【表２】
0006849860.tif 000003
表において、rki及びrkrは、各々、イニシエータ及びレスポンダの生のキーであることに注意されたい。
【００４３】
背景及び問題の言及において述べたように、表２における現方式は単一の問題に依存し、従って僅かに異なるパラメータ及びアルゴリズムにより最適化される。例えば、RLWE問題は、通常、環Zq[x]/x^n+lに依存し、ここで、ｎは２の冪である一方、ｑは素数であり、従って数論変換（ＮＴＴ）を使用することができる。これらの選択は非環バージョンと組み合わせるためには最適ではない。ｑが素であることを必要とし、マトリクス演算を行う場合にモジュラ演算を一層複雑にさせるからである。
【００４４】
表１における方式は、同様のパラメータ及びルーチンにより動作するように定義される。このことは、この説明においてNTRU環を使用する特定の理由である。LWE/LWR方式にとっても良い選択である２の冪であるｑに依存するからである。このことは、ｐ及びｑの両方が２の冪であるという事実に依存するキー調整ステップのために同じルーチンを使用することも可能にする。これらの詳細は、CPA-PKE、CPA-KEM及びCCA-KEMに関する実施態様を説明する後の更なる情報において詳細に説明される。
【００４５】
幾つかの実施態様において、表１に要約された暗号プロトコルにおけるイニシエータの第１ステップは、後述するPST.CPA-KEM.Keygeneration若しくはPST.NR.CCA-KEM.Keygen又はこれらの何らかの変形(例えば、キーカプセル化メカニズムのキー発生処理)を有することができる。同様に、レスポンダのステップは、後述するPST.CPA-KEM.Encapsulate若しくはPST.NR.CCA-KEM.Encapsulate又はこれらの何らかの変形（例えば、キーカプセル化メカニズムのキーカプセル化処理）を有することができる。イニシエータの第２ステップは、後述するPST.NR.CPA-KEM.Decapsulate、PST.NR.CCA-KEM.Decapsulate又はこれらの何らかの変形（例えば、キーカプセル化メカニズム(KEM)のキーカプセル除去処理）を有することができる。この場合、当該暗号処理はキー交換又はキーカプセル化であり得る。
【００４６】
他の実施態様において、表１に要約された暗号プロトコルにおけるイニシエータの第１ステップは、後述するPST.NR.CPA-PKE.Keygeneration()又はこれの何らかの変形（例えば、公開キー暗号化方式のキー発生処理）を有することができる。レスポンダのステップは、後述するPST.NR.CPA-PKE.Encryptwithrho()若しくはPST.NR.CPA-PKE.EncryptO又はこれらの何らかの変形（例えば、公開キー暗号化の暗号化処理）を有することができる。イニシエータの第２ステップは、後述するPST.NR.CPA-PKE.DecryptO又はこれの何らかの変形（例えば、公開キー暗号化方式の解読処理）を有することができる。この場合、当該暗号処理は公開キー暗号化であり得る。公開キー暗号化において、上記レスポンダのステップ及びイニシエータの第２ステップは、例えば複数のメッセージを暗号化及び解読するために繰り返すことができ、特に、イニシエータの第２ステップは、複数の装置上で複数回実行することができ、かくして、装置はイニシエータの第２ステップを該イニシエータの第１ステップが前に実行していなくても実行することができるようにする。
【００４７】
更なる実施態様が、以下に図１を参照して詳細に説明される。
【００４８】
表１で説明されたプロトコルにおいては、LWR問題において定義される丸めを実行する関数であるround()を参照している。特に、丸めはスケーリングされていないエントリをｐで乗算すると共にｑにより除算し、整数（例えば、最も近い整数）に丸め、丸められたエントリのモジュロｐを取るステップを有し、このことは該エントリに実効的にノイズを追加する。
【００４９】
［基準実施化（その１）］
表１の方式の基準実施化は、公開キー要素（ｂ及びｕ）及び生キー（rki及びrkr）を得るための下記のルーチンを有するであろう。
【００５０】
［公開キーの計算］
Result[] = Computation of public-key(A[,],s[])
Result[] = 0
For (i=0 to din)
For (j=0 to din)
Result[i] = Add_elements(Result[i],Multiply_elements[A[i,j],s[j])
C[]=Add_lements(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 din)
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を書いていることに注意されたい。丸めを伴う学習を考察しているからである。本発明のエラーを伴う（環）学習バージョンの場合、丸め処理を実行する代わりにノイズを追加し、計算はモジュロｑであろう。
【００５４】
［基準実施化（その２）］
プロトコル(KEX、KEM、PKE等)におけるイニシエータ及びレスポンダに関連する秘密は、Zq[x]/f(x)にd/nの元を含む単一ベクトル以上のものであり得るが、これらベクトルのn_bar及びm_barを含み得る。例えば、秘密ｓは秘密マトリクス（例えば、秘密キーマトリクス）であり得、公開キーｂは公開マトリクス（例えば、公開キーマトリクス）であり得、秘密ｒは秘密マトリクス（例えば、秘密キーマトリクス）であり得、公開キーｕは公開マトリクス（例えば、公開キーマトリクス）であり得る。十分なキービットを発生するために、１より大きなn_bar及びm_barを有することが好ましい。このように、基準実施化における当該方式の全ての処理は、Zq[x]/f(x)内に元がある２つのマトリクスの乗算として表すことができる。特に、ｂを計算するためにマトリクス積はＡ及びｓの間で計算することができ、ｕを計算するためにマトリクス積はＡ及びｒの間で計算することができ、rkrを計算するためにマトリクス積はｂ及びｒの間又はｂ及びｓの間で計算することができる。
【００５５】
このためには、以下の汎用関数が必要とされ：
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からのエントリを持つ長さｄのベクトルの乗算：
【数１】
0006849860.tif 000004
として表すことができる。
【００６０】
この事実を用いて、公開キー計算を実施化する場合、常にn=1（LWR）に対してd2の異なる元及びn=d（RLWR）に対してｄの異なる元を含む入力マトリクスＡ（例えば、拡張共有マトリクスとして表される）を仮定することができる。言い換えると、該拡張共有マトリクスは、困難度パラメータｄと等しい複数の数の列及び行を有することができ、多項式エントリを前記循環マトリクスと置換することにより計算することができる。マトリクス乗算を実行する場合のアルゴリズム間の唯一の違いは、レスポンダのためのマトリクス乗算がn=1に対しては左から、n=dに対しては右からとなることである。言い換えると、構造パラメータ及び／又は困難度パラメータの異なる値に対して、共通のマトリクス乗算部分を使用することができる。
【００６１】
他の例として、多項式の係数を行ベクトルとして編成することができ、
【数２】
0006849860.tif 000005
を使用する。
【００６２】
［公開キー計算の最適化された実施化（その２）］
関連するフィリップス社出願［１］に開示されているように、Ａは、マスタマトリクスA_masterが与えられたとして、置換（permutation）を適用することにより効率的にリフレッシュすることができる。該置換は、例えば、A_masterにおける行の数n’(0 <= n' < n)の巡回置換（ランダムオフセット（０とn-1との間の）による）とすることができる。
【００６３】
これの自然な拡張は、A_masterを長さＬのベクトルa_masterと見なし、該ベクトルに置換を適用してＡの行を得ることである。３つのケースを非常に固有の置換により区別する：
ケース１：L = d2であり、Ａの行ｉを得るための置換は、ａmasterの位置i * dで開始するｄの連続する元を取り出し、これらを０及びd-1の間のランダムオフセットで巡回的に回転することを含む。
【００６４】
ケース２：
【数３】
0006849860.tif 000006
であり、Ａの行ｉを得るための置換は、ａ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を定期的に更新することが望ましい。
【００７１】
このことが、下記の表に要約され、該表においてＬの選択に依存して異なる性能及びセキュリティ保証を得ることができることが分かる。また、Ｌ＝ｑとすることは帯域幅の観点から有益でないことが分かる。構造が破壊され、一層多くの情報がＡを伝達するために送信されることを要するからである。しかしながら、ＣＰＵ的には、当該方法は、より少ない乱数しか計算されることを要さないので、一層効率的である。
【００７２】
【表３】
0006849860.tif 000007
【００７３】
［最適化された実施化（その３）］
同じ置換アイデアを、両ケースにおいて公開キーがZpにおけるｄの元を含むことがわかれば生キーの計算に適用することができる。ｎ＝１の場合、これらは実際にZp = Zp[x]/x -1におけるｄの元である。ｎ＝ｄの場合、これらｄの元は、Zp[x]/xd- 1における多項式の係数である。
【００７４】
ｎ＝１の場合、受信された公開キーのｄの元は、受信された順番で処理されるが、ｎ＝ｄの場合、ｄの元は、多項式評価を実施するであろうマトリクスの第１行の順番に似せるために先ず再配列されることを要する。次いで、２つの変換を定義することができる：
【００７５】
【表４】
0006849860.tif 000008
【００７６】
更に、多項式乗算に類似するマトリクスを得るために２つの置換が適用されることを考える。
【００７７】
【表５】
0006849860.tif 000009
【００７８】
これが与えられたとして、生キーを得るための最適化されたアルゴリズムは以下のように動作する：
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で動作することができ、ここで、｜は連鎖（concatenation）を表す。これは、メモリ要件を増加させるが、モジュール式削減を回避する。
【００８１】
この方法は他の環を効率的な方法で実施することを可能にすることができることも注記する。例えば、環Zq[x]/x^n+1を用いた場合、v_starは：
v_star = v|-v
として得られるであろう。確かに、この場合、
【数４】
0006849860.tif 000010
を有するであろう。従って、Ａは対角線上に負の符号を有する。事実、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')である。この場合、構造パラメータｎは素円分環を定義する素数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を使用すると共に、２の冪であるｑを使用することであり、追加の要件として当該多項式は既約なモジュロ２であり、構造パラメータｎは素数n’より１小さいものとすることができ、かくして、構造パラメータより小さい次数の整数多項式を当該暗号処理において使用することができる。
【００９３】
素の円分多項式、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により示す。ここで、ｎは構造パラメータであり、xn-1は該構造パラメータと等しい次数の既約多項式（reduction polynomial）であり、かくして、多項式を該構造パラメータより小さい次数で使用することができる。n=1を許容し、従って、Rn = Zである。記号の濫用により、各正の整数ａに関し、集合{O,1, K , 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と定義する。従って、Compress関数は、ノイズを例えばマトリクス（例えば、マトリクス積）のエントリに追加するために使用することができる。例えば、スケーリングされていない値ｘにノイズを追加することは、スケーリングされていないエントリをモジュラスｂで乗算し、モジュラスａにより除算し、整数（例えば、最も近い整数）に丸め、該丸められたエントリの第２モジュラスによるモジュロを取ることを有することができる。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の元を有する。
【０１１４】
【数５】
0006849860.tif 000011
に関して、
【数６】
0006849860.tif 000012
を係数のうちの最大の絶対値として、即ち、
【数７】
0006849860.tif 000013
として定義する。a,b∈Rｎに対して、
【数８】
0006849860.tif 000014
を有することを理解することは容易である。
【０１１５】
同様に、ＶがRnにおける多項式のマトリクスである場合、
【数９】
0006849860.tif 000015
はＶにおける多項式の全ての係数のうちの最大のものである。最後に、μ≦ab及びC∈Zaxbに対して、ベクトルSampleμ,a,b（C）∈ZpμはＣにおけるμの予め指定された位置における値を有する。
【０１１６】
［1.4    CPA公開キー暗号化］
この節では、非環ケースに関する公開キー暗号化を説明する。本出願のCPA安全公開キー暗号化方式を、以下のアルゴリズムで説明する。これらのアルゴリズムは、種々のシステムパラメータ、即ち、正の整数
【数１０】
0006849860.tif 000016
を知っていることを仮定する。これらアルゴリズムは、マトリクスA∈Zqnxnに対する、並びに
【数１１】
0006849860.tif 000017
マトリクスS及び
【数１２】
0006849860.tif 000018
マトリクスR（共に、Tn(h)に全列を有する）に対するランダムな選択を含む。即ち、S及びRの両者は、各列がハミング重みｈを有する三つ組みマトリクスである。Ａに対する選択を明示的にするために、システムパラメータはランダム性空間Σ及びマッピングf:Σ→Σqnxnを含む。同様に、S及びRに対する選択を明示的にするために、{0,1 }rs及び{0,1 }rRに各々割り当てると共に三つ組み
【数１３】
0006849860.tif 000019
及び
【数１４】
0006849860.tif 000020
を各々発生し、各列がハミング重みｈを有する関数fs及びfRを定義する。集合AにａがＡから均一に引き出されることをａ←＄−Ａにより示す。
【０１１７】
第１アルゴリズムは、
【数１５】
0006849860.tif 000021
における公開キーpk、及び秘密キー
【数１６】
0006849860.tif 000022
、即ち、各列がハミング重みｈを有する三つ組み
【数１７】
0006849860.tif 000023
マトリクスを発生する。
【数１８】
0006849860.tif 000024
【０１１８】
次のアルゴリズムは、公開キーpk、メッセージｍ及びランダム性変数ρから暗号文Ｃを発生する。
【数１９】
0006849860.tif 000025
【０１１９】
当該暗号化アルゴリズムは、公開キーpk及びメッセージｍから暗号文Ｃを発生する。
【数２０】
0006849860.tif 000026
【０１２０】
当該解読アルゴリズムは秘密キーsk及び暗号化文Ｃから平文メッセージｍ（に関する推定）を取り出す。
【数２１】
0006849860.tif 000027
【０１２１】
［1.5  非環ケースのためのCPAキーカプセル化メカニズム］
以下の３つのアルゴリズムは、CPA安全キーカプセル化メカニズムを定義するために前節で定義された公開キー暗号化方式を利用する。該メカニズムはハッシュ関数H:{O,1}*→{0,1}μBを採用する。更なるハッシュ関数G:{O,1}*→{0,1}κを有し、カプセル化アルゴリズムのステップ４及びカプセル除去アルゴリズムのステップ２においてＨの代わりにＧを適用することもできることを注記する。
【数２２】
0006849860.tif 000028
【０１２２】
アルゴリズム５に示されるように、キーカプセル化メカニズムのためのキー発生は、公開キー暗号化方式（例えば、PST.NR.CPA-PKE）のキー発生を実行することにより実行することができる。
【数２３】
0006849860.tif 000029
【０１２３】
アルゴリズム６に示されるように、キーカプセル化は、共有キーであり得るｍを、公開キー暗号化方式（例えば、PST.NR.CPA-KE）を用いて暗号化することを有することができる。このアルゴリズムにおいて、ｍのビットはキーカプセル化メカニズムの結果Ｋを導出するために暗号ハッシュ関数に入力される（ここでは、ｃと組み合わせて）。例えばキー導出関数に対する入力として共有ビットを使用する代替的方法は、以下に説明する。
【数２４】
0006849860.tif 000030
【０１２４】
アルゴリズム７に示されるように、キーカプセル除去は、平文ｍを得るために公開キー暗号化方式（例えば、PST.NR.CPA-PKE）の暗号文を解読することを有することができ、ここで、ｍは共有キーとすることができ、ｍはカプセル化を実行するノードとカプセル除去を実行するノードとの間で共有される。ここでも、ｍは、アルゴリズム７に示されるように暗号ハッシュにより又は以下に説明するようなキー導出関数等の他の技術を用いてキー導出関数の結果Kを導出するために使用することができる。
【０１２５】
注釈、アルゴリズム６及び７において、Ｈに供給する前に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は等しく、アルゴリズム８による秘密キーは該秘密キー並びに公開キー及びランダム文字列（ｚ）を有することに注意されたい。
【数２５】
0006849860.tif 000031
【０１２７】
アルゴリズム９の出力Cは、アルゴリズム３と等しい入力及びＲに対する同一の選択の場合、アルゴリズム３からの暗号文(U,v)を有する。キーＫも有する。
【数２６】
0006849860.tif 000032
【０１２８】
等しい秘密キーＳ及び等しい入力（Ｕ，ｖ）によれば、ｍ’の値はアルゴリズム３に与えられたものと等しくなる。NR CCAアルゴリズムにおけるランダム選択がNRCPA-PKEアルゴリズムのものと等しく、且つ、該NRCPA-PKEアルゴリズムがアルゴリズム９のライン１で選択されたメッセージｍを正しく取り出した場合、m = m'となると結論する。その場合、アルゴリズム１０のライン２で計算される(K^’,ρ',d')はアルゴリズム９のライン２における(K^,ρ,d)に等しくなり、従って、アルゴリズム１０及びアルゴリズム９のライン５で計算されるＫの値は等しくなる。アルゴリズム１０のライン５における条件が満足されない場合、出力はランダムキーとなる。
【数２７】
0006849860.tif 000033
【０１２９】
注釈、アルゴリズム９及び１０において、(σ,Ｂ)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に対し、
【数２８】
0006849860.tif 000034
である。また、マトリクスの乗算＊を以下のように定義する。
【数２９】
0006849860.tif 000035
とすると共に
【数３０】
0006849860.tif 000036
とする（例えば、
【数３１】
0006849860.tif 000037
）。
【数３２】
0006849860.tif 000038
マトリクスBT*Rは、
【数３３】
0006849860.tif 000039
と定義される。環及び非環ケースを区別するために、ブールパラメータringを使用する。
【数３４】
0006849860.tif 000040
【０１３１】
上述したように、本発明の実施態様は、使用されるべき暗号法のタイプを指定するための構造パラメータ及び困難度パラメータに基づくものであり得る。本アルゴリズムにおいてじゃ、入力パラメータｎが出力値pk及びskの大きさを示すために使用され、かくして、前記困難度パラメータを該ｎの値として使用することができる。同様に、本アルゴリズムの環パラメータは、当該アルゴリズムの環バージョンが環Rn = Z[x]/(xn -1)で使用されるか（従って、構造パラメータが困難度パラメータｎに等しい場合に真に設定され得る）、又は該アルゴリズムの非環バージョンが使用されるか（従って、構造パラメータが１に等しい場合に偽に設定され得る）を示すために使用される。
【０１３２】
環及び非環ケースの両方において、当該アルゴリズムは、共有マトリクスであり得る、エントリが構造パラメータより小さい次数の整数多項式である構造パラメータにより除算された困難度パラメータに等しい大きさのマトリクスａ又はＡを使用する。特に、環ケースにおいて、前述したように、構造パラメータは困難度パラメータと等しくすることができ、その場合、マトリクスａは、アルゴリズム１１に示されたように、長さｎのベクトルに対応する（ベクトルによる多項式の前述した識別を介して）次数ｎの単一多項式を含むことができる。非環ケースにおいて、構造パラメータは１に等しくなり得、かくして、マトリクスＡは困難度パラメータに等しい大きさのものとなり、１より小さな次数の多項式、例えば、整数を含む。両ケースにおいて、ａ又はＡは値σから関数ｆを用いて発生することにより得られ、σはシードであり得、ｆを評価することは決定論的擬似乱数発生器を評価することを有し得る。
【０１３３】
アルゴリズム１１において、秘密キーマトリクスであり得るマトリクスＳは、ドメイン
【数３５】
0006849860.tif 000041
から、即ち三つ組み
【数３６】
0006849860.tif 000042
マトリクスであるエントリで、発生され、前記構造パラメータより小さな次数の整数多項式を含むマトリクスに対応する（ベクトルによる多項式の前述した識別を介して）。
【０１３４】
次に、当該アルゴリズムは、公開キーマトリクスであり得るマトリクスＢを、ａ又はＡ（共有マトリクスであり得る）とＳ（秘密キーマトリクスであり得る）との間のマトリクス積を計算することにより発生する。このような実施態様において、前述したように、公開キー計算ａ＊Ｓ又はＡＳの最適化された実施化を用いることができる。環ケースにおいて、多項式乗算演算ａ＊Ｓは、nxnマトリクス及びZqからのエントリによる長さｎのエントリのベクトルの乗算として表すことができる。非環ケースにおいても、ＡＳは前記困難度パラメータに等しい大きさのＡによるマトリクス乗算である。結果として、公開キー演算の最適化された実施化が用いられる幾つかの実施態様においては、構造パラメータ及び／又は困難度パラメータの異なる値に関して共通のマトリクス乗算部分を要求することができる。これに関係なく、アルゴリズム１１を使用する実施態様は、第１モジュラスによるモジュロ及び構造パラメータに等しい次数の既約多項式によるモジュロのＳ（秘密キーマトリクスであり得る）及びａ又はＡ（共有マトリクスであり得る）の間のマトリクス積を計算すると共に該マトリクス積におけるエントリにノイズを追加することによりＢ（公開キーマトリクスであり得る）を発生することができ、本実施態様においてノイズを追加することは、スケーリングされていない各エントリをｐにより乗算し、ｑにより除算し、整数（例えば、最も近い整数）に丸め、丸められたエントリのｐによるモジュロを取ることを有する。
【０１３５】
最後に、当該アルゴリズムは値（σ,Ｂ）及びＳを返し、かくして、結果としての公開キー暗号化処理において、公開キーはａ又はＡを得ることができる値σ及びＢを有することができ、秘密キーはＳを有することができる。
【０１３６】
次のアルゴリズムは,公開キーpk、メッセージｍ及びランダム性変数ρから第１暗号文部分及び第２暗号文部分を有する暗号文Ｃを発生する。
【数３７】
0006849860.tif 000043
【０１３７】
示されたように、当該アルゴリズムは、先ず、共有マトリクスであり得る値ａ又はＡを、決定論的擬似乱数発生器の出力から、pkからの値σをシードとして使用して発生することより得る。従って、当該公開キー暗号化方式の公開キーは、共有マトリクスが得られるべきシードを有することができる。また、該アルゴリズムは、秘密マトリクスであり得る値R=fR(ρ)を発生する。アルゴリズム１１におけるのと同様に、ａ又はＡは、構造パラメータにより除算された困難度パラメータに等しい大きさの、エントリが構造パラメータより小さな次数の多項式である正方マトリクスであり、Ｒはエントリが構造パラメータより小さな次数の整数多項式であるマトリクスである。また、アルゴリズム１２において、第１暗号文部分であり得るマトリクスＵは、ａ又はＡ及びＲの間のマトリクス積のモジュロｑ及び困難度パラメータに等しい次数の既約多項式によるモジュロを計算することにより；及び、次いで、スケーリングされていない各エントリをｐにより乗算し、ｑにより除算し、整数（例えば、最も近い整数）に丸め、丸められたエントリのｐによるモジュロを取ることを有するノイズの追加により計算される。
【０１３８】
次に、当該アルゴリズムは、公開キーマトリクスであり得るpkからの値Ｂを使用する。従って、当該公開キー暗号化方式の公開キーは、当該ネットワークノードのpkに対応する公開キーマトリクスを更に有し得る。これから、生キーであり得る値BT*R（環ケースの場合）又はBTR（非環ケースの場合）、即ち、Ｂ及びＲの間のマトリクス積（ここで、Ｂ及びＲは構造パラメータより小さな次数の多項式と見ることができる）が計算される。注釈したように、幾つかの実施態様において、この計算には公開キーマトリクスに関するのと同一の置換アイデアを適用することができ、従って、構造パラメータ及び／又は困難度パラメータの異なる値に対して共通の乗算部分を使用することができる。
【０１３９】
最後に、当該アルゴリズムは、前記値BT*R又はBTRから及びメッセージｍから第２暗号文部分であり得る値ｖを計算し、これは、例えば平文メッセージ、又はPST.CPA-KEM若しくはPST.NR.CCA-KEM等のカプセル化メカニズムにおいて使用される場合は後の通信で使用されるキーを導出することができる２つの当事者間で共有される共有キーであり得る。該値ｖは当該アルゴリズムからＵと一緒に返され、従って、これら値を一緒に当該所与のpkに対応するネットワークノードに送信することができる。
【０１４０】
下記の暗号化アルゴリズムは公開キーpk及びメッセージｍから暗号文Ｃを発生する。このアルゴリズムはアルゴリズム１２を直接呼び出し、かくして、アルゴリズム１３を用いる実施態様は、同様に、前述したように困難度パラメータ及び構造パラメータを受信し、共有マトリクスを得、秘密マトリクスを発生し、第１暗号文部分を発生し及び第２暗号文部分を計算し、アルゴリズム１３に基づく公開キー暗号化処理の実施態様において、公開キーは、このように、共有マトリクスを得ることができる公開キーマトリクス及びデータを有することができ、秘密キーは秘密キーマトリクスを有することができる。
【数３８】
0006849860.tif 000044
【０１４１】
PST.CPA-KEM.Encapsulate()等のアルゴリズムは、キー交換又はキーカプセル化メカニズムの前後関係においてPST.CPA-PKE.Encrypt又はPST.CPA-PKE.Encryptwithrhoを使用することができる。この場合、Ｕはカプセル化を実行する当事者の公開キーマトリクスの役割を果たすことができ、Ｒは対応する秘密キーマトリクスの役割を果たすことができる。同様に、ｖはカプセル化装置及びカプセル除去装置が同一の共有キーに到達するための調整データの役割を果たすことができる。
【０１４２】
解読アルゴリズムは、秘密キーsk及び暗号文Ｃから平文メッセージｍ（の推定）を回復する。
【数３９】
0006849860.tif 000045
【０１４３】
前記アルゴリズムと同様に、アルゴリズム１４は入力skの大きさを示す値ｎ及び環又は非環変形が使用されるべきかを示す値ringを入力パラメータとして受信する。例えば、アルゴリズム１４を使用する実施態様において、ｎは困難度パラメータに対応し得る一方、ringは困難度パラメータが構造パラメータと等しいか否かを示すことができる。該アルゴリズムは、エントリ（ベクトル及び前述した次数ｎの多項式の間の一致を介して）が構造パラメータより小さな次数の整数多項式であるマトリクスＳを入力として得、ここで、Ｓはノード自体の秘密キーマトリクスであり得る。該アルゴリズムは第１暗号文部分であり得るマトリクスＵを更なる入力として得ると共に、ST*U (環ケースの場合)又はSTU（非環ケースの場合）を計算し、これは生キーであり得、Ｓ及びＵの間のマトリクス積として計算される（両マトリクスは最大で構造パラメータの次数の多項式を含むマトリクスと見なされる）。該アルゴリズムは、次いで、該マトリクス積（例えば、値ST*U又はSTU）及び入力として受信された他の値ｖ（第２暗号文部分であり得る）を用い、Sample及びCompress手順を使用することによりメッセージ
【数４０】
0006849860.tif 000046
を得る。PST.CPA-PKE.Encryptwithrhoにおけるのと同様に、メッセージ
【数４１】
0006849860.tif 000047
は、後の通信のためのキーが以下に詳述される方法の１つにより導出されるキー交換メカニズムにおける共有キーを有することができる。
【０１４４】
前述したように、PST.CPA-PKE.Decryptは、PST.NR.CPA-KEM.Decapsulate等のアルゴリズムによりキーカプセル化又はキー交換の前後関係において使用することができる。この場合、Ｕはカプセル化を実行する当事者の公開キーマトリクスであり得る（例えば、暗号化PST.CPA-PKE.Encrypt）一方、ｖは両ノードが
【数４２】
0006849860.tif 000048
に関して同一の値に到達するための調整データであり得、これは、メッセージ、共有キー又は後の通信における共有キーが導出されるデータであり得る（例えば、PST.NR.CPA-KEM.Decapsulateに関して詳述されるように）。
【０１４５】
［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
【０１４６】
図１は、キー共有ネットワーク１００の実施態様の一例を概略的に示す。キー共有は暗号処理の一例である。該キー共有は複数の要素、例えば、共有マトリクス、秘密キーマトリクス、公開キーマトリクスの構築、マトリクス乗算、ノイズの追加等を利用し、これらは例えば公開キー暗号化とうの他のタイプの暗号処理と共通する。一実施態様において、装置１００は、例えば前述したような又は参考文献に示したような他のタイプの暗号処理のために再構成することができる。一実施態様において、装置１００は複数のタイプの暗号処理のために再構成することができる。何れの場合においても、装置１００は多数の異なるレベルの構成及び困難度が利用可能であるという利点を有する。例えば、当該暗号処理は、キー交換（KEX）プロトコル、キーカプセル化メカニズム（KEM）、公開キー暗号化（PKE）、デジタル署名の何れかとすることができる。一実施態様において、第１ネットワークノードは複数の異なる暗号処理から或る暗号処理を選択する選択子を受信するように構成することができる。一例としてではあるが、下記の実施態様は装置１００がキー共有のために構成されると仮定する。
【０１４７】
図１に示されるものは当該システムにおける２つのネットワークノード、即ち、イニシエータ型のネットワークノード１１０及びレスポンダ型のネットワークノード２１０である。当該キー共有システムの一実施態様において、ノードの数は２より大きく、例えば１０００ノードより多い（例えば、１０６ノードより多い）等のように更に大幅に大きくすることができる。
【０１４８】
イニシエータ型のネットワークノードとレスポンダ型ネットワークノードとの間の違いは、調整データ（reconciliation data）をどの様に扱うかである。イニシエータ型のネットワークノードは調整データを受信し、該調整データを、共有キーを得るために適用する一方、レスポンダ型ネットワークノードは調整データを発生し、該調整データをイニシエータ型ネットワークノードに送信する。レスポンダ型ネットワークノードは、共有キーを得るために調整データを必要としない。典型的に、イニシエータ型は２つのネットワークノード間のキー共有プロトコルも開始する。このことは、２つのネットワークノードの間で実行される処理の数を低減することができるからである。しかしながら、このことは必要ではない。キー共有プロトコルはレスポンダ型のネットワークノードより開始することもできるからである。
【０１４９】
更に、ネットワークノードの一実施態様において、当該ネットワークノードはイニシエータモードに従って及びレスポンダモードに従って動作するよう構成される。例えば、当該ネットワークノードがキー共有を開始する、例えば他のネットワークノードにメッセージを送信してキー共有プロトコルの開始を通知する場合、該ネットワークノードはイニシエータモードに切り換わり得る。当該ネットワークノードがキー共有に応答する、例えば他のネットワークからキー共有プロトコルの開始を通知するメッセージを受信した場合、該ネットワークノードはレスポンダモードに切り換わり得る。この構成は実用上便利であるが、このオプションは厳密に必要であるというものでもない。例えば、キー共有システムにおいて、幾つかのノードはイニシエータとしてのみ構成することができ、幾つかはレスポンダノードとしてのみ構成することができる。これの結果は、幾つかのノードは共有キーに一緒に合意することができないということであろう。幾つかのネットワークにとり、例えば、アドホックネットワーク又はアドホック無線グリッド等において、十分に多数のネットワークノードの対が通信することができ、共有キーに同意することができる限り、このことは必ずしも問題とはならない。
【０１５０】
イニシエータノード１１０は通信インターフェース１２０を有する。レスポンダノード２１０は通信インターフェース２２０を有する。これらの通信インターフェースは、当該キー共有システムにおいて他のノードとのデジタル通信のために構成することができる。もっとも、当該システムにおける全ノードに常に到達することができることは必要ではない。
【０１５１】
通信インターフェース１２０及び２２０は、デジタル通信を行うように構成される。例えば、これら通信インターフェースはコンピュータネットワークを介して通信するように構成することができる。例えば、当該通信インターフェースは、例えばWi-Fi（登録商標）、ジグビ及びブルートゥース（登録商標）等の無線通信、及び／又は例えばイーサネット（登録商標）、及びＵＳＢ等の有線通信のために構成することができる。ノード１１０及び２１０の間の通信は、有線及び無線接続の組合せとすることもできる。例えば、システム１００におけるノードは、ノード１１０及びノード２１０を含み、通信識別子を格納する電子記憶部を有することができ、これら識別子はシステム１００内のノードを固有に識別する。例えば、斯かる通信識別子は、ノード１１０及び２１０の間で交換されるデジタルメッセージに、例えば該メッセージをアドレス指定するために含めることができる。例えば、該通信識別子はＩＰアドレス及びＭＡＣアドレス等とすることができる。
【０１５２】
当該電子ネットワークノードは、キー交換（KEX）プロトコルのために構成される。該プロトコルは、通信インターフェース１２０及び２２０を介してノード１１０及び２１０の間でメッセージを交換すること、並びに例えば他のノードから受信されたデータに対して計算を実行することを含む。当該キー共有プロトコルの実行は、以下に例が示されるプロセッサ回路において実施される。図１は、該プロセッサ回路の機能ユニットとなり得る機能ユニットを示す。例えば、図１は該プロセッサ回路の可能性のある機能的編成の青写真として用いることができる。該プロセッサ回路は、図１におけるユニットからは別途示されていない。例えば、図１に示される機能ユニットは、ネットワークノードに記憶されると共に該ネットワークノードのマイクロプロセッサにより実行可能なコンピュータ命令の形で全体として又は部分的に実施化することもできる。
【０１５３】
イニシエータノード１１０及びレスポンダノード２１０は、キー交換（KEX）プロトコル用に構成される。KEX方式は、しばしば公開キーと呼ばれる公開データの各当事者による交換を伴い、該公開データは次いで他方の当事者により共通の共有秘密を計算するために該他方の当事者の秘密データ（しばしば、秘密キーと呼ばれる）と一緒に独立に使用される。幾つかの実施態様の興味あるフィーチャは、実際の最終的な共有される秘密が、暗号化された形態でさえも決して当事者間で交換されることはなく、当該２つの当事者により各端部において独立に計算されることである。この結果、前方秘匿性として知られた望ましいフィーチャが得られ、該フィーチャは或る当事者の長期の秘密キーの将来における攻撃者による危殆化さえも、過去に交換された暗号メッセージの秘匿性を危殆化しないであろうことを保証する。
【０１５４】
本発明の実施態様は、秘密通信を提供するために信頼される第三者に依存することはない。通信インターフェース１２０及び２２０の間の通信チャンネルは、必ずしも安全なチャンネルである必要はない。攻撃者は該通信チャンネル上で盗聴することができる。そうであっても、ノード１１０及び２１０の間で共有されるキーは、安全であり得る。通信チャンネルが改変から保護される場合、当該チャンネルにより提供される限りにおいて、或る程度の認証は得ることができる。しかしながら、通信インターフェース１２０及び２２０の間のチャンネルが改変に対して保護されない場合、KEX方式は認証を達成しないであろう。認証を得るために、実施態様は何らかの既知の認証メカニズム、例えば暗黙的な認証メカニズム（例えば、証明された公開キーを使用する）又は明示的認証メカニズム（例えば、デジタル証明を使用する）と組み合わせることができる。
【０１５５】
イニシエータノード１１０は、共有マトリクスユニット１３０を有する。レスポンダノード２１０は、共有マトリクスユニット２３０を有する。共有マトリクスユニット１３０及び２３０は、当該２つのノードの間で共有される共有マトリクス（Ａ）を得るように構成される。特にマトリクスＡがノード１１０及びノード２１０に対して必ずしも秘密に維持される必要はないという事実が与えられる場合、同一のマトリクスがノード１１０及び２１０の間で共有されることを保証する多数のやり方が存在する。
【０１５６】
共有マトリクスユニット１３０及び共有マトリクスユニット２３０は、困難度パラメータｄ及び構造パラメータｎを入力として受信するよう構成される。図１においては、困難度パラメータｄ及び構造パラメータｎが符号１３１により概略的に示されている。両ユニットが同じ困難度パラメータｄ及び構造パラメータｎを受信することに注意されたい。これらの数ｄ及びｎは、マトリクスＡの要素（成分）の大きさ及びタイプを決定する。装置１１０及び２１０は、暗号処理を選択する選択子を受信するようにも構成される。
【０１５７】
例えば、困難度パラメータｄ及び構造パラメータｎは、ＡＰＩを介して（例えば、装置１１０及び２１０を例えば保護された通信のために使用するアプリケーションにより）設定することができる。該アプリケーションは、必要とされる困難度及び構造を決定し、装置１１０及び／又は２１０に例えば関数呼び出し（ファンクションコール）により命令することができる。
【０１５８】
共有マトリクスＡにおけるエントリは、好ましくは、第１モジュラスｑによるモジュロ、構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで選択される。ｎ＝１の場合、エントリは整数であり、ｎ＞１なら、エントリは多項式である。第１モジュラスｑ及び既約多項式ｆも、ノード１１０及び２１０の間で共有される（例えば、通信される又は予め定められる）。共有マトリクスＡは、例えば大きさｋの正方マトリクスｋｘｋである。行及び列の数ｋは構造パラメータｎにより除算された困難度パラメータｄに等しい。ｎ＝ｄの場合、マトリクスＡは単一の多項式エントリを有する。既約多項式ｆに対する実際的選択は、例えば、xn + 1, xn -1又は(xn-1)/(x-1)= xn-1 + xn-2 + … + 1である。
【０１５９】
大きさｋを計算することができるように構造パラメータｎが困難度パラメータｄを分割することが好ましい。しかしながら、一実施態様において、ｋは構造パラメータｎにより除算された困難度パラメータｄを丸める（例えば、最も近い整数に丸める、切り上げる又は切り下げる）ことにより得られる。
【０１６０】
一実施態様において、装置１１０及び２１０は異なる困難度パラメータｄ及び／又は異なる構造パラメータｎを受信するように構成される。例えば、当該装置は、例えば或る上限までの及び／又は或る下限より大きな如何なる困難度パラメータｄも許容することができる。更に、当該装置はｎ＝１又はｎ＝ｄ、又は更に一般的にはｄを分割し、且つ、１≦ｎ≦ｄとなる如何なるｎも許容することができる。
【０１６１】
興味あることに、異なるパラメータが受信されたとしても、当該ノードは異なるパラメータ値に対して異なる実施化を有する必要はない。例えば、ノード１１０及び２１０は、構造パラメータｎ及び／又は困難度パラメータｄの異なる値に対して共通のマトリクス乗算部を呼び出すように構成することができる。
【０１６２】
一実施態様において、構造パラメータｎは、ｎ又はｎ＋１が素数となるように限定されるが、これは必須ではない。一実施態様において、構造パラメータｎは２の冪であり、第１モジュラスｑは素数であるが、これも必須ではない。
【０１６３】
例えば、当該ノードの一方（例えば、イニシエータノード１１０）は、例えば共有マトリクスユニット１３０において、ランダムにモジュロｑ及びモジュロｆの要素のマトリクスＡを選択することができる。この場合、エントリは通信ユニットを介して他のノードへ（例えば、共有マトリクスユニット２３０へ）送信することができる。この場合、後者の共有マトリクスユニット２３０は単に該マトリクスを受信し、記憶する。マトリクスＡは、代わりにレスポンダノード２１０によっても選択することができ、イニシエータノード１１０に送信される。
【０１６４】
当該２つのノードはマトリクスＡを選択する際に協同することもできる。例えば、各ノードはエントリの幾つかを選択し、これを他方の側に送信することもできる。例えば、イニシエータノードは奇数のエントリを選択することができる一方、レスポンダノードは偶数エントリを選択することができる、等々である。このようにして、２つのノードの何れも、最終的マトリクスＡに対する支配を有さない。例えば、２つのノードは、各々、完全なマトリクスＡを選択し、該マトリクスを他方の側に伝達することができる。この後、２つのマトリクスはモジュロｑ及びｆで加算することができる。当該マトリクスを送信する最後のノードに有利さを与えることを防止するために、選択されたマトリクスに対するコミットメントを該最後のノードにより最初に送信することができる。
【０１６５】
完全なマトリクスＡを送信するオーバーヘッドを低減する興味ある方法は、ランダムなシードを生成し、通信チャンネルを介して該ランダムシードを他方のノードに送信することである。該シードを受信した後、第１及び第２ネットワークノードは該シードを用いて前述した方法の何れかによりマトリクスＡを発生することができる。同じランダムシードは決定論的擬似乱数発生器に種をまくために使用され、このことは該擬似乱数発生器の出力からマトリクス（Ａ）を発生させる。上述したように、各ノードはシードを送信することができ（例えば、Ａの異なる部分を発生するために）、又は２つのシードを組み合わせる（例えば、加算する又は排他的論理和をとる）ことができ、Ａを発生するために該組み合わされたシードを用いることができる。
【０１６６】
該シードは、例えば、更なる乱数発生器（例えば、真性乱数発生器）から選択することができる。当該ノードは、乱数のリストを伴って構成することもできる（例えば、製造時に）。この場合、当該ノードは、新たなマトリクスＡが新たなキー共有のために発生される毎に上記リストから次の乱数を選択する。該乱数のリストが尽きたら、信頼の置けるソースからリストを補充することができる。
【０１６７】
一実施態様において、Ａの要素（元）はベクトルa_masterから選択される。一実施態様において、マトリクスＡは各使用後に変更され（例えば、並び換えられ）、１以上のエントリを置換することができる。
【０１６８】
イニシエータノード１１０は、秘密キーマトリクスユニット１４０を有する。レスポンダノード２１０は、秘密キーマトリクスユニット２４０を有する。秘密キーマトリクスユニット１４０は秘密キーマトリクスSIを発生するように構成され；秘密キーマトリクスユニット２４０は秘密キーマトリクスSRを発生するように構成される。当該秘密キーマトリクスにおけるエントリは、最大でｎの次数の整数多項式である。ｆの次数が１である場合、事実上、エントリは整数である。
【０１６９】
一般的に言って、当該秘密キーマトリクスはランダムに選択される。例えば、秘密キーマトリクス（SI,SR）におけるエントリは均一なランダム確率分布から選択することができる。該分布は不均一とすることもでき、例えば、その場合においてゼロのエントリの確率は非ゼロのエントリの確率より大きい（例えば、少なくとも２倍大きい）。
【０１７０】
例えばセキュリティを改善するため又はデータサイズを低減するために、当該秘密キーマトリクスに種々の制限を課すことができる。秘密キーマトリクス（SI,SR）は、例えば制限内の候補キーマトリクスから均一にランダムに選択することができる。例えば、一実施態様において、当該秘密キーマトリクスにおける要素の係数はbound(s)により絶対値に制限され、例えば、前記制限は２であり（s=2）又は該制限は１であり（s=1）、後者は符号付き二進に対応する。例えば、秘密キーマトリクス（SI,SR）の列及び／又は行は、固定された又は制限されたハミング重み（hs）を有する。
【０１７１】
発明者は、驚くべきことに、制限を小さく選択することが二重の利点を有することを見出した。即ち、当該秘密キーマトリクスとのマトリクス乗算は一層速くなり、各側で計算される生キーの間の距離が一層小さくなる（後述参照）。後者は、より少ない調整データしか必要とされない、及び／又はノードが異なるキーに合意する故の当該プロトコルにおける失敗の確率が一層小さくなることを意味する。
【０１７２】
一実施態様において、制限ｓは１である（s=1）。即ち、秘密キーマトリクスのエントリは、値−１，０及び１である係数のみを有する。これを“符号付き二進”とも称する。
【０１７３】
当該秘密キーマトリクスの大きさは、マトリクスＡにより乗算され得るように選択される。例えば、Ａがｋｘｋなら、イニシエータの秘密キーマトリクスはｋｘ
【数４３】
0006849860.tif 000049
のマトリクスであり得る。
【数４４】
0006849860.tif 000050
及びｋの大きさは、共有キーにおいて十分な数のビットが得ると共に十分に高いセキュリティレベルを得るのに十分な程大きく選定される。
【０１７４】
当該秘密キーマトリクスのエントリの大きさ制限することに加えて、非ゼロ要素の数を制限することにより更なる利点が得られる。マトリクスの列又は行のハミング重みを、該マトリクスの要素のハミング重みの和と称する。ここで、多項式のハミング重みは、該多項式の非ゼロ係数の数として定義される。
【０１７５】
発明者は、秘密キーマトリクスのハミング重みを制限する種々の方法を調査した。一般的に、当該秘密キーマトリクスがマトリクスＡと左又は右乗算されるかに依存して、列又は行の何れかに関してハミング重みを制限するだけで十分である。例えば、当該秘密キーマトリクスがマトリクスＡと右乗算される場合（例えば、ＡＳ）、該秘密キーマトリクスの列におけるハミング重みを制限するだけで十分である。
【０１７６】
例えば、秘密キーマトリクスの列及び／又は行のハミング重みに関して上限を選択することができる。該上限は全ての列及び／又は行に対して同一とすることができる。一実施態様において、秘密キーマトリクス（SI,SR）の列及び／又は行は、同一の固定されたハミング重みを有する。
【０１７７】
条件に従い、秘密キーマトリクスが、候補秘密キーマトリクス、即ち、例えば列又は行におけるハミング重み及びエントリに対する制限に関する選択された要件を満足するマトリクスから一様にランダムに選択される場合、セキュリティは改善される。例えば、各列のハミング重みは５０であるとの条件を実施したい場合、各列に関して５０のハミング重みを有する正しいディメンションの全てのマトリクスの集合から選択することが有利である。如何なる所望のハミング重みの一様にランダムなビット列をも選択するための効率的アルゴリズムが既知である。
【０１７８】
秘密キーマトリクスのハミング重みを制限する別の方法は、秘密キーマトリクス（SI,SR）の列及び／又は行を確率分布から選択することである。例えば、秘密キーマトリクス（SI,SR）におけるエントリを不均一な確率分布から選択することができ、その場合において、ゼロのエントリの確率は非ゼロのエントリの確率より大きい。一実施態様において、該確率分布は、列及び／又は行に対して所定の予測されるハミング重みを付与するように選択される。例えば、長さｎの列及び予測されるハミング重みhsを選択するために、各エントリを確率hs/nを持つ非ゼロとして選択することができる。非ゼロのエントリは、１又は−１として（例えば、等しい確率で）選択することができる。
【０１７９】
イニシエータノード１１０は、公開キーマトリクスユニット１５０を有する。レスポンダノード２１０は、公開キーマトリクスユニット２５０を有する。公開キーマトリクスユニットは、公開キーマトリクスをマトリクスＡ及び秘密キーマトリクスＳから計算する。
【０１８０】
公開及び秘密なる用語は、共有キーは公開情報の知識だけでは又は幾らかの秘密情報の知識なしでは得られないことを伝えることを意図するものである。もっとも、公開情報が積極的に共有されるという要件は存在しない。例えば、キー共有プロトコルは、公開キーを盗聴者から安全に保つ（推定）セキュアチャンネルを介して実行することができる。この場合、キー共有プロトコルは、当該チャンネルのセキュリティが侵害された場合に、セキュリティの追加のレイヤを提供する。
【０１８１】
当該公開キーマトリクスユニットは、公開キーマトリクスＰ（イニシエータ及びレスポンダノードの各々のためのPI，PR）を、共有マトリクス（A）及び秘密キーマトリクス（SI又はSR）の間のマトリクス積の第１モジュラス（ｑ）及びｆによるモジュロを計算し、マトリクス積を得、及びノイズを追加することにより計算する。
【０１８２】
この中間のマトリクス乗算は明らかにされないことに注意されたい。共有マトリクスＡの知識及び該マトリクス乗算の結果が、秘密キーを明らかにする。マトリクスＡを反転することにより計算することができるからである。
【０１８３】
ノイズを追加することは、誤差項又はノイズ項を選択し、これらを上記マトリクス積のエントリに追加することにより実行することができる。例えば、ノイズは平均０のガウス分布から選択することができる。ノイズを追加する好ましい方法は、上記中間マトリクス積を縮小（スケールダウン）する、例えば係数を縮小することである。
【０１８４】
一実施態様において、当該公開キーマトリクスユニットは、前記マトリクス積のエントリを第２モジュラスｐにスケールダウンする。第２モジュラスｐは、第１モジュラスｑより小さい。スケーリングされたエントリは、第２モジュラス（ｐ）により乗算され、第１モジュラス（ｑ）により除算され、最も近い整数に丸められたスケーリングされていないエントリに等しい。例えば、ｘが当該マトリクス積におけるスケーリングされていないエントリのモジュロｑである場合、スケーリングされたエントリは「(p/q)ｘ」として選択され、ここで、「」は最も近い整数を表す。スケーリング処理の後、秘密キーを公開キー及びマトリクスＡから計算することは、最早、容易には可能でない。
【０１８５】
公開キーマトリクスにおけるエントリは、区間[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（両値を含む）の範囲内である。ｐ及びｑの値は、セキュリティの要求に応じて一層大きく又は一層小さく選択することができる。
【０１９１】
イニシエータノード１１０は、共有キーユニット１６０を有する。レスポンダノード２１０は、共有キーユニット２６０を有する。これら共有キーユニットは、これらの何れかが調整データを発生及び送信し、又は受信及び適用するという点で相違する。
【０１９２】
共有キーユニット１６０及び共有キーユニット２６０は、共に、生キー１６２，２６２を、他のノードの受信された公開キーマトリクスと当該ネットワークノード自身の秘密キーマトリクスとの間のマトリクス積として計算するよう構成される。該積は既約多項式ｆによるモジュロで計算される。スケーリングが用いられる場合、後者も第２モジュラス（ｐ）によるモジュロで計算される。当該マトリクスの大きさ及びマトリクス乗算は、スケーリング処理が省略されたとしたら、両当事者が同一の生キーを計算するように選択される。即ち、同一のキーが、ノイズの追加無しで、且つ、全ての計算がｑ及びｆのモジュロで実施された結果として得られる。しかしながら、ノイズにより、両生キーは同一である必要はない。該生キーの計算は、モジュロｐで実行することができる。当該ネットワークノードは、モジュロｐでの乗算の結果を縮小するためのモジュラユニットを有することができる。
【０１９３】
レスポンダノード２１０の共有キーユニット２６０は、共有キー２６６を得ると共に生キー２６２から調整データ２６４を得、該調整データ２６４をイニシエータネットワークノード１１０に送信するように構成される。図１において、共有キーは生キー及び調整データから得られるが、これは必要ではなく、例えばレスポンダがキー交換をキーカプセル化（例えば、PST.CPA-KEM.Encapsulate又はPST.NR.CCA-KEM.Encapsulate）により実行する場合、調整データが生キー及び共有キーから得られることも可能である。調整データは、生キーにおける１以上のビット（例えば、係数からのビット）の形をとることができる。調整データとして選択されたビットは、キーを発生する目的のため無視される。前記文献は調整データの種々の例を含む。
【０１９４】
共有キーユニット２６０は、キーを形成するために生キーのエントリから幾つかのビットを選択する。例えば、選択されたビットは連結される。一実施態様において、選択されたビットはキー導出関数（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とすることができる。当該メモリ回路は、ＲＯＭ回路又は不揮発性メモリ（例えば、フラッシュメモリ）とすることができる。該メモリは、揮発性メモリ、例えばＳＲＡＭメモリとすることができる。後者の場合、検証装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
【０２１４】
図４ａは、公開キー解読ノード３１０の実施態様の一例を概略的に示す。該図は、困難度パラメータ及び構造パラメータ３３１、通信インターフェース３２０、秘密キーユニット３４０、メッセージ計算ユニット３６０、生キー３６２、第２暗号文部分３６４及びメッセージ３６６を含む。これらのユニットは、前記アルゴリズムPST.NR.CPA-PKE.Decrypt()に従って動作することができ、例えば、秘密キーユニット３４０はＳを得ることができ、メッセージ計算ユニット３６０は
【数４５】
0006849860.tif 000051
を計算することができる。この図は、公開キー解読処理に対応する要素のみが示されていることを除き、図１に示したイニシエータ型のネットワークノード１１０と類似することに注意されたい。特に、アルゴリズムPST.CPA-KEM及びPST.NR.CCA-KEMに示されたように、ネットワークノード１１０は、公開キー発生アルゴリズム、例えばPST.NR.CPA-PKE.Keygeneration()及び公開キー解読、例えばPST.NR.CPA-PKE.Decrypt()アルゴリズムを利用してキー交換を実行することができる。図１において、この解読は、困難度パラメータ及び構造パラメータ１３１、通信インターフェース１２０、秘密キーユニット１４０、共有キーユニット１６０、生キー１６２、調整データ１６４及び共有キー１６６を伴う。図４ａは、必ずしもキー発生を実行しないで解読を実行する公開キーネットワークノードを示し、従って、該ノードは図１からの解読に関係する要素のみを有する。即ち、要素３３１は要素１３１に対応することができ、要素３２０は要素１２０に対応することができ、要素３４０は要素１４０に対応することができ、要素３６０は要素１６０に対応することができ、要素３６２は要素１６２に対応することができ、要素３６４は要素１６４に対応することができ、要素３６６は要素１６６に対応することができる。該公開キー解読ノード３１０は解読の結果としてメッセージ３６６を得る一方、ネットワークノード１１０は共有キー１６６を得るが、これらの各結果を得るための処理は、実際には、両ケースにおいて同一であり得ることに注意されたい。
【０２１５】
図４ｂは、公開キー暗号化ノード５１０の実施態様の一例を概略的に示す。この図は、困難度パラメータ及び構造パラメータ５３１；共有マトリクスユニット５３０；通信インターフェース５２０；秘密マトリクスユニット５４０；第１暗号文部分ユニット５５０；第２暗号文部分ユニット５６０；生キー５６２；メッセージ５６２；並びに第２暗号文部分５６４を含む。該暗号化ノード５１０は、困難度パラメータ及び構造パラメータ５３１を入力として受信し；共有マトリクス５３０を得；秘密マトリクスユニット５４０により秘密マトリクスを発生し；第１暗号文部分ユニット５５０により第１暗号文部分を発生し；及び第２暗号文部分ユニット５６０により第２暗号文部分５６４を発生し、後者は生キー５６２及びメッセージ５６６から計算される。例えば、これらのユニットは、先に詳述したように、アルゴリズムPST.NR.CPA-PKE.Encryptwithrho、PST.NR.CPA-PKE.Encrypt、PST.CPA-PKE.Encryptwithrho及びPST.CPA-PKE.Encryptのうちの１つに従って動作することができる。例えば、共有マトリクスユニット５３０はＡを得ることができ、秘密マトリクスユニット５４０はＲを発生することができ、第１暗号文部分ユニット５５０はＵを発生することができ、第２暗号文部分ユニット５６０はｖを計算することができる。この図は、図１に示されたレスポンダ型のネットワークノード２１０に類似し、特に、PST.CPA-KEM及びPST.NR.CCA-KEMに示されるように、該レスポンダノードはキー交換又はキーカプセル化において、実際に、公開キー暗号化ノード５１０により実行されるような公開キー暗号化を実行することができる。
【０２１６】
以下の条文は請求項ではないが、想定される実施態様を含む。出願人は、これにより、本出願の又は本出願から導出される何らかの他の出願の手続きの間において斯かる条文、斯かる条文の組み合わせ及び／又は当該記載若しくは請求項から得られるフィーチャに対する新たな請求項が作成され得ることを告示するものである。
【０２１７】
１．暗号処理のために構成された第１電子ネットワークノード（１１０）であって、該第１ネットワークノードは、
−  第２ネットワークノードとデジタル通信を行うように構成された通信インターフェース（１２０）と、
−  プロセッサ回路と、
を有し、該プロセッサ回路は、
−  困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信し、
−  共有マトリクス（Ａ）を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して第２ネットワークノードと共有され、該共有マトリクス（Ａ）は構造パラメータ（ｎ）により除算された困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら多項式の係数は好ましくは第１モジュラス（ｑ）によるモジュロで選択され、
−  秘密キーマトリクス（ＳＩ）を発生し、ここで、該秘密キーマトリクスのエントリは構造パラメータ（ｎ）より小さい次数の整数多項式であり、
−  公開キーマトリクス（ＰＩ）を、
−  共有マトリクス（Ａ）と秘密キーマトリクス（ＳＩ）との間のマトリクス積を第１モジュラス（ｑ）によるモジュロ及び構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生し、及び
−  前記第１ネットワークノードの公開キーマトリクスを前記第２ネットワークノードに送信する、
ように構成される。
【０２１８】
２．条文１に記載の第１電子ネットワークノード（１１０）であって、前記暗号処理はキー交換（ＫＥＸ）プロトコルであり、前記プロセッサ回路は、
−  前記第２ネットワークノードの公開キーマトリクス（ＰＲ）を受信し、
−  生キーを、前記第２ノードの受信された公開キーと前記第１ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する、
よう構成され、
前記第１ネットワークノードが、更に、
−  前記第２ネットワークノードの調整データ（ｈ）を受信し、
−  共有キーを、前記受信された調整データ及び前記生キーに調整関数（rec）を適用することにより計算する、
ように構成されるか、又は
前記第１ネットワークノードが、更に、
−  前記生キーから調整データ及び前記共有キーを取得し、
−  前記調整データを前記第２ネットワークノードに送信する、
ように構成される。
【０２１９】
３．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記暗号処理は、キー交換（ＫＥＸ）プロトコル、キーカプセル化方法（ＫＥＭ）、公開キー暗号化（ＰＫＥ）及びデジタル署名の何れか１つである。
【０２２０】
４．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記既約多項式はxn + 1、xn - 1又は(xn - 1)/(x - 1)である。
【０２２１】
５．先行する条文の何れか１つに記載の第１ネットワークノードであって、
−  前記構造パラメータ（ｎ）は、前記困難度パラメータ（ｄ）を分割し、
−  前記共有マトリクス（ｋ）の大きさは、前記構造パラメータ（ｎ）により除算された前記困難度パラメータ（ｄ）を丸める、例えば最も近い整数に丸める、切り上げる又は切り下げることにより得られる。
【０２２２】
６．先行する条文の何れか１つに記載の第１ネットワークノードであって、
−  前記構造パラメータ（ｎ）は、少なくとも１、最大で前記困難度パラメータ(d; 1 ≦ n ≦ d)であり、及び／又は
−  前記構造パラメータ（ｎ）は素数であるように制限され、及び／又は
−  前記構造パラメータ（ｎ）は２の冪であり、且つ、前記第１モジュラスは素数であり、及び／又は
−  前記構造パラメータ（ｎ）は素数であるように制限され、且つ、前記第１モジュラスは素数であり、及び／又は
−  前記構造パラメータ（ｎ）は素数であるように制限され、且つ、前記第１モジュラスは２の冪であり、及び／又は
−  前記構造パラメータ（ｎ）は素数であるように制限され、前記第１モジュラスは２の冪であり、且つ、前記既約多項式は既約加群２である。
【０２２３】
７．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記プロセッサ回路は０より大きい次数の多項式エントリを循環マトリクスで置換することにより共有マトリクス（Ａ）の拡張共有マトリクスを計算するように構成され、該拡張共有マトリクスは前記困難度パラメータに等しい数の列及び行を有する。
【０２２４】
８．条文７に記載の第１ネットワークノードであって、前記プロセッサ回路はｄｘｄエントリを含む共有マトリクス（Ａ）の拡張共有マトリクスを計算するように構成され、各エントリは整数であり、同一のプロセッサ回路が該拡張共有マトリクスの評価のため及び前記公開キーを１又は前記困難度パラメータ（ｄ）に等しい構造パラメータ（ｎ）で得るために使用される。
【０２２５】
９．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記暗号処理は公開キー暗号化であり、前記共有マトリクス及び前記公開キーマトリクスは公開キーであり、前記秘密キーマトリクスは前記秘密キーである。
【０２２６】
１０．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記マトリクス積にノイズを追加する処理は、
−  前記マトリクス積におけるエントリを第２モジュラス（ｐ）に縮小スケーリングする処理であって、スケーリングされたエントリは前記第２モジュラス（ｐ）により乗算され、前記第１モジュラス（ｑ）により除算され且つ最も近い整数に丸められたスケーリングされていないエントリに等しく、前記第２モジュラス（ｐ）は前記第１モジュラス（ｑ）より小さく、前記bound(s)は最大で前記第２モジュラス（ｐ）であり、生キーを前記第２ノードの受信された公開キーと前記第１ネットワークノードの前記秘密キーマトリクスとの間のマトリクス積としての計算が前記第２モジュラス（ｐ）によるモジュロで実施される処理、又は
−  ノイズ分布から前記マトリクス積における１以上の又は全ての要素のためのノイズ要素を選択すると共に該ノイズ要素を前記マトリクス積における前記１以上の又は全ての要素に追加する処理であって、例えば、前記ノイズ要素が平均０のガウス分布から選択された係数を有する処理、
を有する。
【０２２７】
１１．先行する条文の何れか１つに記載の第１ネットワークノードであって、
−  前記秘密キーマトリクス（ＳＩ，ＳＲ）は候補秘密キーマトリクスから一様にランダムに選択され、及び／又は
−  前記秘密キーマトリクスにおける要素の係数は、bound(s)により絶対値に制限され、例えば、該制限は２であり（ｓ＝２）、又は該制限は１であり（ｓ＝１）、後者は符号付き二進に対応し、及び／又は
−  前記秘密キーマトリクス（ＳＩ，ＳＲ）の列及び／又は行は固定された若しくは制限されたハミング重み（ｈｓ）を有する。
【０２２８】
１２．先行する条文の何れか１つに記載の第１ネットワークノードであって、前記秘密キーマトリクス（ＳＩ，ＳＲ）におけるエントリは不均一な確率分布から選択され、ゼロエントリの確率は非ゼロエントリの確率より大きい。
【０２２９】
１３．先行する条文の何れか１つに記載の第１ネットワークノードであって、新たなキー交換毎に、異なるマトリクス（Ａ）及び／又は異なる秘密キーを得るように構成される。
【０２３０】
１４．先行する条文の何れか１つに記載の第１ネットワークノードであって、ランダムシードを発生すると共に前記通信チャンネルを介して該ランダムシードを他のノードに送信することにより共有マトリクス（Ａ）を得るように構成され、前記第１及び第２ネットワークノードは前記ランダムシードを使用して決定論的擬似乱数発生器に種を蒔き、前記マトリクス（Ａ）を該擬似乱数発生器の出力から発生する。
【０２３１】
１５．第１電子ネットワークノード（１１０）のための電子暗号処理方法であって、該方法は、
−  前記第１ネットワークノードと第２ネットワークノードとの間にデジタル通信を配するステップ（４１０）と、
−  困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信するステップ（４１５）と、
−  共有マトリクス（Ａ）を得るステップ（４２０）であって、該共有マトリクスは通信インターフェースを介して前記第２ネットワークノードと共有され、該共有マトリクス（Ａ）は構造パラメータ（ｎ）により除算された困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら多項式の係数が好ましくは第１モジュラス（ｑ）によるモジュロで選択されるステップと、
−  秘密キーマトリクス（ＳＩ）を発生するステップ（４３０）であって、該秘密キーマトリクスのエントリが構造パラメータ（ｎ）より小さい次数の整数多項式であるステップと、
−  公開キーマトリクス（ＰＩ）を、
−  共有マトリクス（Ａ）と秘密キーマトリクス（ＳＩ）との間のマトリクス積を第１モジュラス（ｑ）によるモジュロ及び構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し（４４２）、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する（４４４）、
ことにより発生するステップ（４４０）と、
−  前記第１ネットワークノードの公開キーマトリクスを前記第２ネットワークノードに送信するステップ（４５２）と、
を有する。
【０２３２】
本発明の一態様は、暗号処理のために構成された第１電子ネットワークノードであり、該第１ネットワークノードは、
−  第２ネットワークノードとデジタル通信を行うように構成された通信インターフェースと、
−  プロセッサ回路と、
を有し、該プロセッサ回路は、
−  困難度パラメータ（ｄ）及び構造パラメータ（ｎ）を入力として受信し、
−  共有マトリクス（Ａ）を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して第２ネットワークノードと共有され、該共有マトリクス（Ａ）は構造パラメータ（ｎ）により除算された困難度パラメータ（ｄ）に等しい大きさ（ｋ）の正方マトリクス（ｋｘｋ）であり、該共有マトリクス（Ａ）のエントリは構造パラメータ（ｎ）より小さな次数の整数多項式であり、これら多項式の係数は好ましくは第１モジュラス（ｑ）によるモジュロで選択され、
−  秘密マトリクス（ＳＩ）を発生し、ここで、該秘密マトリクスのエントリは構造パラメータ（ｎ）より小さい次数の整数多項式であり、
−  第１ネットワークノードの公開マトリクス（ＰＩ）を、
−  共有マトリクス（Ａ）と秘密マトリクス（ＳＩ）との間のマトリクス積を第１モジュラス（ｑ）によるモジュロ及び構造パラメータ（ｎ）に等しい次数の既約多項式（ｆ）によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生し、及び
−  前記第１ネットワークノードの公開マトリクスを前記第２ネットワークノードに送信する、
ように構成される。このようなプロセッサ回路は、更に、
−  前記第２ネットワークノードの公開マトリクス（ＰＲ）を受信し、
−  生キーを、前記第２ノードの受信された公開マトリクスと前記第１ネットワークノードの秘密マトリクスとの間のマトリクス積として計算する、
よう構成され、
前記第１ネットワークノードは、更に、
−  前記第２ネットワークノードの暗号材料を受信し、
−  第１ネットワークノードと第２ネットワークノードとの間の共有データを、前記受信された暗号材料及び前記生キーから計算する、
ように構成されるか、又は
前記第１ネットワークノードは、更に、
−  第１ネットワークノードと第２ネットワークノードとの間の共有データを得ると共に前記生キーから暗号材料を取得し、
−  前記暗号材料を前記第２ネットワークノードに送信する、
ように構成される。
【０２３３】
例えば、前記秘密マトリクスは秘密キーマトリクスとすることができる（例えば、当該暗号処理がキー交換又はキーカプセル化メカニズムである場合）。第１ネットワークノードの公開マトリクス及び第２ネットワークノードの公開マトリクスの１以上は、公開キーマトリクスとすることができる（例えば、当該暗号処理がキー交換、キーカプセル化メカニズム又は公開キー暗号化である場合）。前記共有データは共有キー又は共有キーが導出されるデータとすることができ（当該暗号処理がキー交換又はキーカプセル化メカニズムである場合）；又はメッセージとすることができる（例えば、当該暗号処理が公開キー暗号化である場合）。前記暗号材料は調整データとすることができ（当該暗号処理がキー交換又はキーカプセル化メカニズムである場合）、又は該暗号材料は暗号文部分とすることができる（当該暗号処理が公開キー暗号化、又は公開キー暗号化に基づくキー交換若しくはキーカプセル化である場合）。
【０２３４】
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
【０２３５】
尚、請求項において括弧内に示される如何なる符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは１つの同一品目のハードウェアにより具現化することができる。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これら手段の組合せを有利に使用することができないということを示すものではない。
【０２３６】
請求項において、括弧内の符号は例示的実施態様の図面における符号又は実施態様の式を示し、かくして、当該請求項の理解容易性を高める。これらの符号は当該請求項を限定するものと見なしてはならない。
【符号の説明】
【０２３７】
１００    キー共有ネットワーク
１１０    イニシエータ（開始者）タイプのネットワークノード
１２０    通信インターフェース
１３０    共有マトリクスユニット
１３１    困難度パラメータ及び構造パラメータ
１４０    秘密キーマトリクスユニット
１５０    公開キーマトリクスユニット
１６０    共有キーユニット
１６２    生のキー
１６４    調整データ（ｈ）
１６６    共有キー
２１０    レスポンダ（応答者）タイプのネットワークノード
２２０    通信インターフェース
２３０    共有マトリクスユニット
２４０    秘密キーマトリクスユニット
２５０    公開キーマトリクスユニット
２６０    共有キーユニット
２６２    生のキー
２６４    調整データ（ｈ）
２６６    共有キー
１０００  コンピュータ読取可能な媒体
１０１０  書込可能部分
１０２０  コンピュータプログラム
１１１０  集積回路
１１２０  処理ユニット
１１２２  メモリ
１１２４  専用の集積回路
１１２６  通信エレメント
１１３０  相互接続部
１１４０  プロセッサシステム
【図１】
0006849860.tif 000052
【図２】
0006849860.tif 000053
【図３ａ】
0006849860.tif 000054
【図３ｂ】
0006849860.tif 000055
【図４ａ】
0006849860.tif 000056
【図４ｂ】
0006849860.tif 000057