JP7208987B2 - 更新可能な共有マトリクスを備える暗号装置 - Google Patents

更新可能な共有マトリクスを備える暗号装置 Download PDF

Info

Publication number
JP7208987B2
JP7208987B2 JP2020521366A JP2020521366A JP7208987B2 JP 7208987 B2 JP7208987 B2 JP 7208987B2 JP 2020521366 A JP2020521366 A JP 2020521366A JP 2020521366 A JP2020521366 A JP 2020521366A JP 7208987 B2 JP7208987 B2 JP 7208987B2
Authority
JP
Japan
Prior art keywords
matrix
shared
network node
electronic network
entries
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020521366A
Other languages
English (en)
Other versions
JP2020537191A (ja
JP2020537191A5 (ja
Inventor
モーション オスカー ガルシア
ルドヴィクス マリヌス ジェラルダス マリア トルフィツェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2020537191A publication Critical patent/JP2020537191A/ja
Publication of JP2020537191A5 publication Critical patent/JP2020537191A5/ja
Application granted granted Critical
Publication of JP7208987B2 publication Critical patent/JP7208987B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、暗号処理用に構成されたネットワークノード、暗号処理方法及びコンピュータ読取可能な媒体に関する。
暗号法において、キー共有(合意)プロトコルは共通キーを未だ共有していないかも知れない2以上の当事者が斯かるキーに合意することができるプロトコルである。好ましくは、両当事者は、何れの当事者もキーの選択を強制することができないようにして結果に影響を与えることができる。斯かる2つの当事者の間の全通信を盗聴する攻撃者は、該キーに関して何も知るべきでない。それでも、同通信を調べる攻撃者は何も分からない又は僅かしか分からないものの、当事者自身は共有キーを導出することができる。キー共有プロトコルは、例えば、通信を安全にする(例えば、当事者間のメッセージを暗号化及び/又は認証する)ために有用である。
当事者間での安全な通信を容易化するために、キー共有プロトコルは、時には、更に暗号キー交換(KEX)及び暗号キーカプセル化(KEM)方式に分割される。暗号キーカプセル化(KEM)方式は、各当事者に対し公開の既知の値(例えば、公開キー)及び秘密に所有される値(例えば、秘密キー)を使用して2つの当事者間の共有秘密を確立するために非対称暗号法を用いる。
KEX方式は、各当事者による公開キーの交換を伴い、これら公開キーは、次いで、他方の当事者により共通の共有秘密を計算するために自身の秘密キーと一緒に独立に使用される。KEX方式の良く知られた例は、上述したDiffie-Hellmanキー交換であり、その安全性は離散対数問題を解くことに基づいている。幾つかのKEX方式の興味ある特徴は、実際の最終的共有秘密が、当事者間では決して(暗号化された形態でさえも)交換されず、当該2つの当事者により各端で独立に計算されることである。この結果、前方秘匿性として知られた望ましい特徴が得られ、このことは、当事者の長期の秘密キーの将来における攻撃者による危殆化さえも、過去に交換された暗号メッセージの秘匿性を危殆化しないであろうことを保証する。
KEM方式は、2つの主体又は当事者の間の共有秘密を、一方の当事者(通常、当該通信の開始者:イニシエータ)により他方の当事者(応答者:レスポンダとして知られる)への共有秘密を暗号化する(該他方の当事者の公開キーを用いて)と共に送信するために非対称暗号法を用いて確立し、当該他方の当事者は当該共有秘密を解読し(自身の秘密キーを用いて)、該共有秘密をイニシエータ当事者との安全な通信のために使用することができる。このようなKEM方式は、一時的である場合においてのみ前方秘匿性を達成することができる。そうでない場合、過去の或るセッションに関する或る当事者の秘密キーを危殆化すると共に該セッションにおいて当事者間で交換された全てのメッセージを記録した如何なる攻撃者も、該特定のセッションに関する共有秘密を復元することができる。
物のインターネットにおいて増加するセキュリティの必要性により、キー交換方式は、古典的及び量子能力的敵対者に対して安全に留まりながら、高い効率(即ち、最少量の通信及び帯域幅要件)も達成する必要がある。
近年の進歩は、量子コンピュータが数年内(恐らく、早ければ略5~10年内)に可能となり得ることを示している。量子コンピュータが利用可能になると、殆どの既存の公開キー暗号方式は安全でなくなるであろう。これら方式が基づく基となる問題は、量子コンピュータにより効率的に解かれ得るからである。従って、耐量子公開キーアルゴリズム(quantum-resistant public-key algorithm)、即ち量子コンピュータにより破られ得ない公開キーアルゴリズムを設計することが非常に重要である。
幾つかの種類の耐量子アルゴリズム、即ち、格子ベース、コードベース、同種写像ベース等が存在する。本明細書においては、格子に基づく耐量子アルゴリズムを扱う。格子暗号システム(lattice-based cryptographic system)は、多数の異なるタイプのシステムが提案されている研究の活発な分野である。例えば、格子は数、例えば何らかの有限体の要素(元)のマトリクス(行列)に関して、又は多項式等を用いて定義することができる。暗号処理のタイプも様々であり得る。例えば、格子暗号法は、キーカプセル化(KEM)、キー交換(KEX)、公開キー暗号化(PKE)、デジタル署名等に関して利用可能である。これらの方式の例は:
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”なる名称の2017年3月6日に出願されたヨーロッパ特許出願第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。
文献[1]~[7]の各々は参照により本明細書に含まれる。
前記方式の各々は、幾つかの共通の特徴を共有している。これら方式の各々は、或る時点で他のノードと共有される共有マトリクスAを必要とする。該共有マトリクスAは、モジュラスqによるモジュロの整数又は既約多項式f及びモジュラスqによるモジュロの多項式によりファイルされ得る。発明者は、共有マトリクスを過度な頻度で使用しないことが賢明であると理解した。例えば、KEXプロトコルの場合、可能性のある使用ケースは、特定の共有マトリクスを一度だけ使用することであろう。しかしながら、マトリクスのサイズは、例えば、600x600であり得ると共に、モジュラスqは14ビットであり得るので、共有マトリクスにおけるデータの量は著しいものとなり得る。当該マトリクスが両側で伝達又は発生されるかに拘わらず、このことは、重大なオーバーヘッドとなる。特に、例えば複数のクライアントとの多数の接続を維持するサーバにとり、このオーバーヘッドは非常に大きなものであり得る。このように、共有マトリクスを大きなオーバーヘッドを招くことなく置き換える必要性が存在する。
格子問題の困難さに依拠すると共に共有マトリクスを使用する暗号処理を実施するネットワークノードが提案される。背景技術で指摘したように、多数の斯様な暗号処理が存在する。発明者は、共有プール(貯留部)を導入することによりオーバーヘッドを低減することができることを理解した。共有マトリクスを直接発生するより、第1及び第2ノードは共有プールを共有する。該プールは、丁度共有マトリクスが有するように、複数の整数又は多項式を有するか、又は該プールは多項式のために使用され得る複数の係数を有する。一実施態様において、該共有プールは2つのノードの間で交換されることはなく、同一のまま留まるか、当該暗号処理の複数の実行に跨がり同一のまま留まる。しかしながら、各暗号処理に対して、該共有プールから新たな共有マトリクスが構築される。このことは、共有プールの要素を共有マトリクスのエントリにマッピングする、又は共有プールの係数を共有マトリクスの係数にマッピングする選択関数により実行される。該選択関数は共有プールにおけるインデックス又は共有マトリクスにおけるインデックスに依存するが、興味深いことに選択パラメータにも依存する。選択パラメータは、共有マトリクスのエントリが共有プールから選択される方法を変更する。発明者は、選択関数を変化させることは相対的に小さなオーバーヘッドしか必要とせず、その上、斯様な関数は計算するのが容易であり得ることを理解した。例えば、選択関数は、共有プール又は該共有プールの一部を置換する(並び換える)と共に、これを当該マトリクスの部分組に又は係数に割り当てる選択パラメータに依存する置換であり得る。マトリクスAは複数の斯様な部分組に分割することができる。各部分組は同一の共有プールから得ることができるか、又は各部分組は共有プールの一部から得ることができる。それでも、共有プールにおける共有マトリクスの部分組にマッピングされた部分は、大幅にさえ、重なり合うことができる。
結果として、共有プールは共有マトリクスより大幅に少ないデータしか格納する必要がない。このことは、少ないデータしか記憶部に維持する必要がないばかりか、共有マトリクスの構築が大幅に速くなり得ることを意味する。例えば、比較例として、共有マトリクスが(擬似)ランダム関数によりシードから発生される状況を考えよう。この構成は、相対的に大きな数のランダム関数処理を必要とする。しかしながら、これもシードから実施することができる共有プールを最初に発生することにより、大幅に少ないランダム関数の適用しか必要とされない。該乱数関数適用の幾つかは選択関数(例えば、より少ない資源要求の置換により実施することができる)により置換されるので、共有マトリクスを発生するための時間は低減される。このことは、共有マトリクスは使用するが、該共有マトリクスがしばしば置換されることを要しないような暗号処理においてさえ有利である。
前述したように、共有マトリクスを使用する相当数の暗号処理が存在する。これらの幾つかは多項式を使用し、これらの幾つかは整数を使用する。発明者は、多数の斯様な方式を、多くの種類の格子暗号法をパラメータ化するような方法で記述することが可能であると理解した。例えば、このような記述は、基となる暗号法の性質を変更する僅かな入力パラメータ、即ち、使用される暗号法のタイプを一緒に指定するのに十分である困難度パラメータ(d)構造パラメータ(n)のみを使用する。困難度パラメータd及び構造パラメータnの両方は、正の整数である。上記困難度パラメータを増加させることにより、当該問題の構造は同一に留まるが、一層大きくなり、従って一層困難な実体化が用いられる。困難度パラメータは、時には、セキュリティパラメータとも称される。実施態様において、困難度パラメータは、基となる格子の大きさ(dimension)に関係する。困難度パラメータの一層大きな値は基となる格子の一層大きな大きさにつながり、従って、攻撃者には解くのが一層困難な問題となる。前記構造パラメータは、当該システムにおける代数構造の量に関係する。該構造パラメータの一層大きな値は、一層大きい代数構造を意味する。該構造パラメータの一層大きな値は攻撃するのが一層容易であり得ると推測される。格子が一層多い規則性を有するからである。例えば、格子問題を解くための漸進的に良い方法を見付ける調査を進める場合、ユーザは困難度パラメータを増加させることにより応じるであろう。一方、特定のタイプの格子問題を解くための急進的に良い方法を見付ける調査を進める場合、ユーザは構造パラメータを減少させることで応じるであろう。
例えば、請求項に記載された暗号装置は、使用される暗号法のタイプを一緒に指定するのに十分な困難度パラメータd及び構造パラメータnを受信することさえできる。例えば、一実施態様においては、複数の基となる問題、例えばRLWE、RLWR、モジュールRLWE、モジュールPLWR並びにLWE及びLWRを効率的に実体化することができる方式が定義される。しかしながら、このことは明らかに必要ではなく、一実施態様は固定された大きさのマトリクス(例えば、kxk)を選択することができ、多項式が使用される場合、次数nの既約多項式を選択することができる。
当該暗号装置は電子装置である。例えば、該暗号装置はモバイル電子装置、例えばモバイルフォンであり得る。例えば、該暗号装置は、セットトップボックス、スマートカード、コンピュータ等であり得る。ここに記載される暗号処理を実行する方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、金融アプリケーション、秘密の又は認証される通信等を含む。
本発明による方法は、コンピュータ上でコンピュータにより実施される方法として、専用のハードウェアにおいて、又は両者の組合せで実施化することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、当該コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体上に記憶された非一時的プログラムコードを有する。
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全ステップを実行するよう適合化されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な媒体上で具現化される。
本発明の他の態様は、上記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、該コンピュータプログラムが例えばアップルのアップルストア、グーグルのプレイストア又はマイクロソフトのウインドウズストアにアップロードされ、且つ、該コンピュータプログラムが斯様なストアからダウンロード可能である場合に使用される。
本発明の更なる詳細、態様及び実施態様は、図面を参照して、例示のみとして後述される。図面における各要素は簡略化及び明瞭化のために図示され、必ずしも実寸通りに描かれてはいない。各図において、既に記載された要素に対応する要素は、同一の符号を有し得る。
図1は、キー共有ネットワークの実施態様の一例を概略的に示す。 図2は、電子キー交換方法の実施態様の一例を概略的に示す。 図3aは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。 図3bは、一実施態様によるプロセッサシステムの図を概略的に示す。 図4は、共有マトリクスの実施態様の一例を概略的に示す。
本発明は多数の異なる形態の実施態様が可能であるが、1以上の特定の実施態様が図面に示されると共に本明細書で詳細に説明される。ここで、本開示は本発明の原理の例示と見なされるべきであり、本発明を図示及び記載された特定の実施態様に限定することを意図するものではないと理解される。以下においては、理解のために、実施態様の要素は動作時において説明されている。しかしながら、各要素は、これら要素により実行されるものとして説明されている機能を実行するように構成されていることは明らかであろう。更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
キー交換(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の多項式であるkモジュールを組み合わせることのみに依存する。
spKEXはLWRのみに依存する。
FrodoはLWEのみに依存する。
上記全ての問題が関係するが、これら問題の幾つかは特別な構造に依存する点で一層危険であると考えられる。一方、環構造の使用は一層小さなメッセージを可能にする。現在の処、このような構造を利用する攻撃は知られていないが、このような攻撃は将来には知られたものとなろう。この場合、これらの特別な問題(例えば、RLWE又はモジュールLWE)に基づく全ての方式は破られるであろう。かくして、代替策の必要性が存在する。このように、幾つかは一層危険な問題に基づくが一層良好な性能特性を備え、幾つかは良く理解された問題に基づくが余り良好な性能は備えない複数の方式を実施化及び試験する必要がある。
発明者は、上述した格子問題が関係することを理解し、RLWE、RLWR、モジュールLWE、モジュールLWR並びにLWE及びLWRを含む全ての斯様な問題を実体化することができる方式を見出した。以下では、異なる格子が困難度パラメータd及び構造パラメータnに基づいて形成される暗号法に関して幾つかの例が記載される。
この方式においてパラメータを変更することにより、異なる基となる問題に基づくと共に異なる性能特性を示すプロトコル(KEX、KEM、PKE等)を実体化することができる。
この方式は、異なるセキュリティ/性能要求を持つ複数のアプリケーションに適用することができる。例えば、極秘文書はLWEに対する方式設定を用いることにより暗号化することができる一方、資源制約された無線通信を介するキー共有は環LWRパラメータに基づくものとすることができる。当該方式は更なる利点を有する。即ち、第1に、該方式はコードサイズを低減し、従って、より少ないメモリしか必要とされない。第2に、コードの検討のための努力が最少化される。単一のアルゴリズムしか検討及び検証されることを要さないからである。最後に、このような方式は、“弱い”問題(例えば、RLWEに基づいた)に依存することが最早安全ではなく、“より強い”問題(例えば、LWEに基づいた)に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに備えることができる。該方式は、一方が問題1に関するものであり他方が問題2に関するものである等の2つの異なる仕様に依存するのではなく、同一のアルゴリズムが、唯一の差違が入力パラメータである異なる問題を実体化するために使用される。
核となる発明は、大きさ(ディメンション)dの格子問題を用い、ここで、dは入力パラメータである。該格子ディメンションは、RLWE、RLWR、モジュールLWE、モジュールLWR、LWE、LWRに対応するものとすることができる。該方式は、kxkのエントリを含むマトリクス(行列)に依存し、ここで、各エントリはZq[x]/f[x]における要素(元)であり、f[x]は次数nの既約(reduction)多項式であり、nは入力パラメータである。kはd/nであると定義されて、入力パラメータではなく、実施態様においてdはnの倍数であると仮定される。
このように、一定の格子ディメンション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のためのマトリクスを表す。
一般性を失うことなく、以下の段落では2つの場合のみ、即ち、n=1及びn=dの場合のみに焦点を合わすことに注意されたい。
[LWR及びNTRU-RING LWRに基づくKEX]
以下では、実施態様を解説するためにNTRU環を用いる。実際には、qをn=1(mod p)であることを保証する素数であるとする(素)円分多項式等の他の環も同様に用いることができる。代わりに、qが2の冪である(素)円分多項式をとることもできる。付加的制限は、該(素)円分多項式が既約なモジュロ2であるということである。
NTRU環はf(x) = xn - 1であり、ここで、nは素数である。この場合、所与の格子ディメンション問題dに関して、当該システムを、例えば、n = d又はn = 1で実体化することができる。n = dなら、NTRU-RING LWRを有し、n = 1なら、LWR方式を有する。入力パラメータd>nをとり、dが素数nの倍数であるとすることができ、かくして、NTRU-Ringを用いるモジュールLWRを有する。
表1は、高レベルのKEXプロトコル記述である。round(vector,p,q)は、モジュラスp及びqを用いて丸めを実行することを示すことに注意されたい。また、どの様にキー調整(key reconciliation)が実行されるかの詳細は無視することに注意されたい。これらは本説明にとり基本的なものでないからである。以下の更なる情報は、全ての必要な詳細を含むPKE、CPA-KEM及びCCA-KEMプロトコルを含んでいる。
Figure 0007208987000001
上記から、nの選択に依存して、基となる問題はRLWR (n=dの場合)又はLWR (n=1)となることが分かる。両ケースにおいて、基となる格子問題はディメンションdを有する。現状技術は上記アルゴリズムの2つの異なる実施化、即ち表2、を有することに注意されたい。公開キーb及びuが計算される場合にLWRにおいて必要とされる丸めを無視していることに注意されたい。これは説明に必須でないからである。また、どの様にキー調整を実施することができるかの詳細も無視している(文献参照)。
Figure 0007208987000002
表において、rki及びrkrは、各々、イニシエータ及びレスポンダの生のキーであることに注意されたい。
背景及び問題の言及において述べたように、表2における現方式は単一の問題に依存し、従って僅かに異なるパラメータ及びアルゴリズムにより最適化される。例えば、RLWE問題は、通常、環Zq[x]/x^n+lに依存し、ここで、nは2の冪である一方、qは素数であり、従って数論変換(NTT)を使用することができる。これらの選択は非環バージョンと組み合わせるためには最適ではない。qが素であることを必要とし、マトリクス演算を行う場合にモジュラ演算を一層複雑にさせるからである。
表1における方式は、同様のパラメータ及びルーチンにより動作するように定義される。このことは、この説明においてNTRU環を使用する特定の理由である。LWE/LWR方式にとっても良い選択である2の冪であるqに依存するからである。このことは、p及びqの両方が2の冪であるという事実に依存するキー調整ステップのために同じルーチンを使用することも可能にする。これらの詳細は、CPA-PKE、CPA-KEM及びCCA-KEMに関する実施態様を説明する後の更なる情報において詳細に説明される。
表1で説明されたプロトコルにおいては、LWR問題において定義される丸めを実行する関数であるround()を参照していることに注意されたい。
[基準実施化(その1)]
表1の方式の基準実施化は、公開キー要素(b及びu)及び生キー(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
上記ルーチンにおいては、表1におけるようなモジュロp及びqを用いる丸めステップを含めていないことに注意されたい。しかしながら、このことは、本発明にとり必須ではない。この方式のLWEバージョンを実施していたとしたら、丸め処理はZ_q[x]/f(x)におけるノイズ(例えば、平均0及び小さな標準偏差のガウスノイズ)の追加により置換することができる。
[生キーの計算]
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を書いていることに注意されたい。丸めを伴う学習を考察しているからである。代わりに、先ずA及びBの各係数をq/pで乗算し、最も近い整数に丸め、モジュロqで加算又は乗算を実行し、p/qによる係数毎の乗算により最終結果をスケーリングし、次の整数に丸めることもできる。これは、セキュリティ上の利点を有し得る。本発明のエラーを伴う(環)学習バージョンの場合、丸め処理を実行する代わりにノイズを追加し、計算はモジュロqであろう。
[基準実施化(その2)]
プロトコル(KEX、KEM、PKE等)におけるイニシエータ及びレスポンダに関連する秘密は、Zq[x]/f(x)にd/nの元を含む単一ベクトル以上のものであり得るが、これらベクトルのn_bar及びm_barを含み得る。十分なキービットを発生するために、1より大きなn_bar及びm_barを有することが好ましい。このように、基準実施化における当該方式の全ての処理は、Zq[x]/f(x)内に元がある2つのマトリクスの乗算として表すことができる。
このためには、以下の汎用関数が必要とされ:
C = Multiply(A,B,A_c,A_r,B_c,B_r,n)
ここで、A及びBは、各々、ディメンション(A_c x A_r)及び(B_c x B_r)の入力マトリクスである。当該マトリクスにおける各エントリはZq[x]/f(x)における元を含み、これはZqにおけるnの元として表すことができる。出力マトリクスCは、ディメンション(C_c x C_r) = (A_r x B_c)を有する。
更に、幾つかのケースにおいては、当該マトリクスを転置するための関数が必要とされる。このためには、
B = Transpose(A,A_c,A_r,n)
なる関数を必要とし、ここで、Aはディメンション(A_c x A_r)の入力マトリクスである。当該マトリクスにおける各元はZq[x]/f(x)における元を含み、これはZqにおける元として表すことができる。出力マトリクスBは、ディメンション(B_c x B_r) = (A_r x A_c)を有する。
マトリクス内の情報をエンコードする特定の方法は、Zqにおける元を最低レベルで記憶するベクトルを使用することによるものである。例えば、q=2^14なら、各元を記憶するために2バイトを使用することができる。Zq[x]/f(x)における元を伴うディメンション(A_r x A_c)のマトリクスAは、長さA_r*A_c*n*2バイトのベクトルに記憶することができる(ここで、q<=2^16と仮定する)。このベクトルは、Aを(i)行毎に、(ii)各行では列毎に、(iii)Zqにおけるnの元をエンコードするであろう。
上記2つの関数(Multiply()及びTranspose())は、当該マトリクスを記憶するために使用されるベクトルに適切な方法でアクセスする。このことは、何故nが斯かる2つの関数に入力パラメータとして渡されるかの理由でもある。
[公開キー計算の最適化された実施化(その1)]
固定されたセキュリティパラメータdの場合、上記基準実施化はn = dの場合に高速である。Aマトリクスは、n_bar=m_bar=1と仮定して、Za[x]/xn - 1における多項式である単一のエントリを含むからである。n = 1の場合、基準実施化は遅いであろう。Aは各エントリがZqにおける元であるd2のエントリを含み、スカラ乗算が汎用多項式乗算として実現されるからである。
最適化された実施化の場合、n = dの場合において多項式乗算演算はZq上のdxd=nxnマトリクス及びZqからのエントリを持つ長さdのベクトルの乗算:
Figure 0007208987000003
として表すことができるという事実を利用することができる。
この事実を用いて、公開キー計算を実施化する場合、常にn=1(LWR)に対してd2の異なる元及びn=d(RLWR)に対してdの異なる元を含む入力マトリクスAを仮定することができる。マトリクス乗算を実行する場合のアルゴリズム間の唯一の違いは、レスポンダのためのマトリクス乗算がn=1に対しては左から、n=dに対しては右からとなることである。
他の例として、多項式の係数を行ベクトルとして編成することができ、
Figure 0007208987000004
を使用する。
[公開キー計算の最適化された実施化(その2)]
関連するフィリップス社出願[1]に開示されているように、Aは、マスタマトリクスA_masterが与えられたとして、置換(permutation)を適用することにより効率的にリフレッシュすることができる。該置換は、例えば、A_masterにおける行の番号n’(0 <= n' < n)の巡回置換(ランダムオフセット(0及びn-1の間の)による)とすることができる。
これの自然な拡張は、A_masterを長さLのベクトルa_masterと見なし、該ベクトルに置換を適用してAの行を得ることである。3つのケースを非常に固有の置換により区別する:
ケース1:L = d2であり、Aの行iを得るための置換は、amasterの位置i * dで開始するdの連続する元を取り出し、これらを0及びd-1の間のランダムオフセットで巡回的に回転することを含む。
ケース2:
Figure 0007208987000005
であり、Aの行iを得るための置換は、amasterの元ei(ここで、eiは[0, L - 1]におけるランダムに選択された値である)で開始すると共に元ei + d (mod L)で終了するdの連続する元を取り出すことを含む(このように、巡回構造も考慮する)。
ケース3:L = dであり、Aの行iを得るための置換は、amasterの元iで開始するdの連続する元を取り出すことを含む(このように、巡回構造も考慮する)。
明らかなことに、上記の3つのケースは、他のタイプの置換を用いることにより又はL > d2にすることにより更に一般化することができる。該3つのケースに関し、この方法において:
ケース1は、本明細書に記載された方式をn=1に関して実施する。amasterがランダムに計算される場合、結果としてのAはランダムマトリクスとは区別することができない。元はランダムオフセットにより回転されるので、固定されたa_masterが与えられたとして、この方法はフレッシュなAを効率的に得ることができる。
ケース3は、当該方式をn=dに関して実施し、aの多項式合成a*sでのマトリクス表現を得るための効率的方法を提供する。
ケース2は、環構造と非環構造との間のケースである。このケースの場合、(LWR)までの通約(reduction)を有することは不可能である。L<d^2である故に、Aにおける行の間に幾らかの重なりが存在するからである。このように、結果としてのマトリクスAをランダムなものから区別することは可能である。しかしながら、実用的観点から、この方法は結果としてのAにおける単一環構造を破壊する。一層多くの元を含むからである。事実上、各行は異なる環を使用している。
上記方法を最適化された実施化(その1)に組み込んだ場合、所与の長さLのamaster、幾つかの特定のフィーチャの置換及び秘密sに関してマトリクス乗算を実施することができる。長さL及び置換の選択に依存して、同一のアルゴリズムがn=1及びn=dの両方に関してマトリクス乗算を効率的に実施する。
ケース1において、a_masterは再利用することができ、a_master及びフレッシュなマトリクスAは行の置換を変化させることにより得られることを注記しておく。ケース3においては、a_masterを定期的に更新することが望ましい。
このことが、下記の表に要約され、該表においてLの選択に依存して異なる性能及びセキュリティ保証を得ることができることが分かる。また、L=qとすることは帯域幅の観点から有益でないことが分かる。構造が破壊され、一層多くの情報がAを伝達するために送信されることを要するからである。しかしながら、CPU的には、当該方法は、より少ない乱数しか計算されることを要さないので、一層効率的である。
Figure 0007208987000006
[最適化された実施化(その3)]
同じ置換アイデアを、両ケースにおいて公開キーがZpにおけるdの元を含むことがわかれば生キーの計算に適用することができる。n=1の場合、これらは実際にZp = Zp[x]/x -1におけるdの元である。n=dの場合、これらdの元は、Zp[x]/xd- 1における多項式の係数である。
n=1の場合、受信された公開キーのdの元は、受信された順番で処理されるが、n=dの場合、dの元は、多項式評価を実施するであろうマトリクスの第1行の順番に似せるために先ず再配列されることを要する。次いで、2つの変換を定義することができる:
Figure 0007208987000007
更に、多項式乗算に類似するマトリクスを得るために2つの置換が適用されることを考える。
Figure 0007208987000008
これが与えられたとして、生キーを得るための最適化されたアルゴリズムは以下のように動作する:
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を受信し、循環マトリクスの最上行を最左列としてのbで得ることを要するのでTdが必要とされることに注意されたい。
上記アルゴリズムにおいて、元を適切に再配列するためにTnはbに作用し、Pnはモジュール縮小処理(module reduction operations)を実行するためにTn(b)に対してシフトを実行する。
[最適化された実施化(その4)]
最適化された実施化に関する重要な側面は、a_masterに対する置換の実現である。このことは、モジュロL及びモジュロdの削減(reduction)を実現することを必要とする。このことは、性能及びサイドチャンネル攻撃に関する欠点を有する。例えばベクトルvに対する、これらのモジュール式削減:
v[(i + P[j])(mod d)]
を回避するために、当該最適化された実施化は、ベクトルのコピー、
v_star = v|v
を含むだけのベクトルv_starで動作することができ、ここで、|は連鎖(concatenation)を表す。これは、メモリ要件を増加させるが、モジュール式削減を回避する。
この方法は他の環を効率的な方法で実施することを可能にすることができることも注記する。例えば、環Zq[x]/x^n+1を用いた場合、v_starは:
v_star = v|-v
として得られるであろう。確かに、この場合、
Figure 0007208987000009
を有するであろう。従って、Aは対角線上に負の符号を有する。事実、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 = d又はn = 1で実体化することができる。n = dなら、NTRU-RING LWRを有し、n = 1なら、LWR方式を有する。
当該説明は入力パラメータ(d,n)として(d,d)又は(d,1)を使用しているが、入力パラメータが(k*n,n)であり、ここで、nが1又は素数(NTRU Ringの場合)であり得るような更に一層一般的な構成を有することもできることを注記しておく。
[他の実施態様]
当該説明は、秘密のタイプ又は丸め処理若しくはノイズ(ガウス、均一又は何らかの他の分布のうちの何れか)の標準的加算を用いるという事実には依存しないことを注記する。このように、本発明は如何なるタイプの秘密分配に対しても実施化することができる。
RLWEに対する適用可能性:以下の更なる情報は、NTRU環に対する固有の選択を含むと共に、p及びqを2の冪であるとする。これらの選択は、特定のタイプのキー調整方法(key reconciliation method)並びにp及びqを2の冪として持つことが一層効率的な実施化につながるという事実により動機付けられる。代替実施態様は、本明細書におけるアイデアを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)を解くことを容易にさせる。それでも、sを見付けることは困難なままである。
文献は、上記実施態様で使用することができる他の環を使用している。例えば、xn + 1の形の円分環を使用することができ、ここで、nは2の冪であり、qは素数であり、q ≡ 1(mod n)である。f(x) = xn-1 + xn-2 +・・・+ x + 1の形の素の円分環を使用することも可能であり、qは素数であり、q ≡ 1(mod n)である。
これらの環を、NTRU環に関して上記に示したのと同様の方法で使用することができる。例えば、非環ケース(LWE)は、この場合、上記円分環に関してn = 1の場合に環(xn=1 + 1)又は(1)により実施化される。両ケースにおいてqは素数であることに注意されたい。当該キー調整方法は、上に詳述した実施態様で使用されるものとは異なることを注記する。qが2の冪であることを要するからである。適切な選択は、Frodoにおけるもののようなキー調整であろう。
他の良いオプションは、上記と同様の円分多項式、例えば、xn + 1及びxn-1 + xn-2+・・・+ x + 1を使用すると共に、素数である代わりに2の冪であるqを使用することである。素数であるというqに対する要件は主にNTTを使用するためであるが、本出願の方式の実施化のためには、2の冪となるようにqを選択することが一層良い。良いオプションは、当該方式をマトリクス乗算により実施化することであるからである。
他の良いオプションは、前述した様な円分多項式、例えば、xn + 1及びxn-1 + xn-2+・・・+ x + 1を使用すると共に、2の冪であるqを使用することであり、追加の要件として当該多項式は既約なモジュロ2である。
素の円分多項式、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により実行することができるように、2の冪のn及び素数のq等のNTT親和性パラメータを使用することであろう。この最適化は、NTTの使用により環のケース(n>1)対するCPU性能を高速化するであろうが、非環のケース(n=1)に対する一層悪い性能を予想する。演算がモジュロq(qは素数である)であるからである。
本明細書に提示されるパラメータ選択は、組み合わされた方式に対して最良のものであると思われる。nの如何なる選択に対しても適用可能なマトリクス/ベクトル演算により実行される場合に、演算の高速な実施化を可能にするからである。言い換えると、n>1に対する方式がNTTを使用する他の環方式がそうであるのと同様に効率的でないかも知れないが、本明細書における選択はn>1の場合のみならずn=1の場合においても当該方式の非常に高速な実施を可能にする。更に、NTRU環の使用は、多数の好適な環が存在するので、セキュリティ及び帯域幅の要件の微調整を可能にする。
[パラメータ]
当該方式は、異なるパラメータにより構成することができる。d並びにq及びpの値は、基となる格子問題の困難度を定義する。例示的値は、例えば、約700のd並びに2^14及び2^11に等しいq及びpである。この場合、n_bar及びm_barは8に等しくなり得るので、n=1の場合のKEXにおける結果的キーマトリクスに関して各係数から4ビットを得ることができる。n=dの場合、多項式係数当たり単一のビットが必要とされるので、qは一層小さくすることができ、従ってpも、従ってnも小さくすることができる。多項式はn個の係数を有するので、nビットのキーが得られ、n_bar及びm_barのみが1に等しくなることを要する。
環の幾つかの選択に対して、複数組のパラメータを有することができることを注記する。例えば、素の円分多項式をとる場合、下記の分類のパラメータを有することができる:
- n=1及びn=dが基となる問題が環構造に基づくか否かを決定するためのパラメータ;
- CPUの観点から可能である最適化のタイプを決定する、qが素数であるか又は2の冪であること。
[方式の構成可能性]
当該方式は、異なるセキュリティレベル及び基となる難問題に対して以下のように構成することができる。
第1に、基となる問題(例えば、LWR又はRLWR)の各々に対し、コンピュータプログラムは失敗確率、帯域幅及びCPUに関して所与のセキュリティレベル及び性能を達成するための目標パラメータ(主に、d、n、q及びp)を計算する。この作業は1回実行することができ、次いで、パラメータを公開することができる。
第2に、公開されたパラメータの組はテーブルに本明細書で提案される方式を実施するプログラムと一緒に記憶され、各組のパラメータは所与の基となる問題、セキュリティレベル及び性能パラメータに対応する。
第3に、2つの当事者(例えば、アリスとボブ)が互いに通信したい場合、アリスはボブに彼女が使用しようとしているパラメータの組に関して通知する。このことは、アリスは彼女が当該方式を例えば環モード又は非環モードのどちらで使用したいか(d及びnの選択)、及び何のセキュリティレベル(d、q及びpに依存する)かを決定することができることを意味する。アリスはボブに彼女の選択について、当該パラメータの組(d,n,q,p,…)を明示的に指定することにより、該パラメータの組の識別子を送信することにより、又は選択されたパラメータに依存する性能値(例えば、公開キーの大きさ、秘密キーの大きさ等)を指定することにより通知することができる。この場合、ボブも最小限のセキュリティレベルのみならず特定の難問題をも要求する方針を有することができることを注記する。このように、アリスからの提案が満足の行くものでない場合、ボブは別のパラメータ組を要求することができる。
以下は、もっと数学的観点からの上記及び他の実施態様に関する情報である。
1 アルゴリズム仕様及びサポートする文書
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.1 設計原理]
幾つかの実施態様は、キーカプセル化を可能にするアルゴリズムの枠組みに関するものである。提案されるアルゴリズムは格子暗号法の部類に入り、特に、該アルゴリズムは丸めを伴う学習(LWR)問題に依存することができる。この問題は、その広範囲の研究及び有利な性能特性(例えば、少ない帯域幅要件)によりアルゴリズムの設計のために選択された。
幾つかの実施態様の興味あるフィーチャは、当該枠組がLWR問題及び環LWR(RLWR)を継ぎ目のない態様で実体化するよう設計されていることである。このことは、同じアルゴリズム(及びコード)をLWR又はRLWRベースのアルゴリズムを効率的に実体化するために使用することができることを意味する。この選択の理論的根拠は多岐にわたる。
・第1に、このことは複数の環境に簡単な方法で適合させることを可能にする。即ち、一方においてLWRベースのアルゴリズムは、性能は余り問題とならないがセキュリティが優先し、かくして、追加の環構造を有さないことが好まれる環境に適用することができる。他方において、RLWRベースのアルゴリズムは、帯域幅及び計算の点で最良の性能を達成し、かくして、一層制約のある環境に一層良く適合する。
・第2に、この方法は、環ベースの方式から非環方式への移植方策を初めから可能にする。このことは、基となる環構造により環ベースの方式に対する攻撃が将来見付かった場合、代替の安全な解決策が即利用可能となり、配備されることを確実にする。
・第3に、提案された枠組みは、保守及びコード解析を低減する。同一の実施化が、RLWR及びLWRケースを全てのアルゴリズムCPA-KEM、CCA-KEM及びCCA-PKEに関して実体化するからである。
実施態様は、更に、幾つかの異なるフィーチャにより性能を最適化する。先ず第1に、LWR及びRLWRの使用は、帯域幅性能を最適化すると共にサンプリングルーチンを回避する。第2に、疎で三つ組の(ternary)秘密が選択される。これらは実施化を容易化し、改善された性能を可能にし、失敗確率を低減するからである。第3に、事前計算攻撃を防止するために、公開マトリクスAは一定に維持されず、ハンドシェイクの間における再計算による性能劣化を最小にするために非常に効率的な方法で更新される。第4に、丸め処理、メッセージ圧縮及び解読を実行するための機能は、同一の関数により実体化される。このことは、設計を簡素化及び最適化する。第5に、この提案の環バージョンは、その良好な性能の特徴によりNTRU環に依存する。
[1.3 まえがき]
多項式環Z[x]/(xn-1)をRnにより示す。n=1を許容し、従って、Rn = Zである。記号の濫用により、各正の整数aに関し、集合{O,1,…,a -1}はZaと書き、Zaにおける全係数を持つnより小さな次数の多項式の集合はRn,aと書く。Rnにおける多項式を、その全係数が0, 1又は -1である場合、三つ組み(trinary)と呼ぶ。
本明細書全体を通して、通常のフォント文字はRnからの要素(元)を示し、太字の小文字はRnにおける係数を持つベクトルを表す。全てのベクトルは列ベクトルである。太字の大文字はマトリクス(行列)である。ベクトルv又はマトリクスAの転置は、vT 又はATにより示される。
[モジュラ簡約] 正の整数α及びx∈Qに対し、{x}αを区間[-α/2, α/2]におけるx' ≡ x(mod α)を満足する特異元x'と定義する。更に、<x>αを区間[0,α-1]におけるx ≡ x’(mod α)となるような特異元x’と定義する。
[丸め] x∈Qに対し、「x」により、同点の場合に切り上げを伴う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の逆であることを示すことができる。より正確には、各x∈Zaに対して、
|{Decompressa,b(Compressa,b(x)) - x}a|≦(a+1)/2b
である。直接計算により、aがbの倍数である場合、各x∈Zaに対して、
Decompressa,b(Compressa,b(x)) ≡ x + {x}b/a(mod a)
である。
圧縮関数は3つの目的を果たす。
・第1に、圧縮関数はセキュリティを改善する。該関数は丸めを伴う学習問題となるからである。
・第2に、圧縮関数はメッセージを解読するために使用される。
・第3に、圧縮関数は公開キー及び暗号文の大きさを低減し、従って帯域幅要件を低減する。
各ν∈Rnに対して、νのハミング重みは、その非零係数の数として定義される。Rn kにおけるベクトルのハミング重みは、その要素のハミング重みの和に等しい。Hn,k(h)により、ハミング重みhの三つ組み多項式の全てのベクトルv∈Rnの集合を示す。Rnにおける多項式の係数を長さnのベクトルと見なすと、Hn,k(h)における多項式はhの位置に非零を伴う長さnkの三つ組みベクトルに対応し、従ってHn,k(h)はnk2hの元を有する。
Figure 0007208987000010
に関して、
Figure 0007208987000011
を係数のうちの最大の絶対値として、即ち、
Figure 0007208987000012
として定義する。全てのa,b∈Rに対して、
Figure 0007208987000013
を有することを理解することは容易である。
同様に、VがRnにおける多項式のマトリクスである場合、
Figure 0007208987000014

はVにおける多項式の全ての係数のうちの最大のものである。最後に、μ≦ab及びC∈Zaxbに対して、ベクトルSampleμ,a,b(C)∈Zp μはCにおけるμの予め指定された位置における値を有する。
[1.4 CPA公開キー暗号化]
この節では、非環ケースに関する公開キー暗号化を説明する。本出願のCPA安全公開キー暗号化方式を、以下のアルゴリズムで説明する。これらのアルゴリズムは、種々のシステムパラメータ、即ち、正の整数
Figure 0007208987000015
を知っていることを仮定する。これらアルゴリズムは、マトリクスA∈Zq nxnに対する、並びに
Figure 0007208987000016
マトリクスS及び
Figure 0007208987000017
マトリクスR(共に、Tn(h)に全列を有する)に対するランダムな選択を含む。即ち、S及びRの両者は、各列がハミング重みhを有する三つ組みマトリクスである。Aに対する選択を明示的にするために、システムパラメータはランダム性空間Σ及びマッピングf:Σ→Σq nxnを含む。同様に、S及びRに対する選択を明示的にするために、{0,1 }rs及び{0,1 }rRに各々割り当てると共に三つ組み
Figure 0007208987000018
及び
Figure 0007208987000019
を各々発生し、各列がハミング重みhを有する関数fs及びfRを定義する。集合Aに関し、aがAから均一に引き出されることをa←-Aにより示す。
第1アルゴリズムは、
Figure 0007208987000020
における公開キーpk、及び秘密キー
Figure 0007208987000021
、即ち、各列がハミング重みhを有する三つ組み
Figure 0007208987000022
マトリクスを発生する。
Figure 0007208987000023
次のアルゴリズムは、公開キーpk、メッセージm及びランダム性変数ρから暗号文cを発生する。
Figure 0007208987000024
当該暗号化アルゴリズムは、公開キーpk及びメッセージmから暗号文cを発生する。
Figure 0007208987000025
当該解読アルゴリズムは秘密キーsk及び暗号化文cから平文メッセージm(に関する推定)を取り出す。
Figure 0007208987000026
ここでは、当該方式の処理を説明することができることに注意されたい。
[1.5 非環ケースのためのCPAキーカプセル化方法]
以下の3つのアルゴリズムは、CPA安全キーカプセル化方法を定義するために前節で定義された公開キー暗号化方式を利用する。該方法はハッシュ関数H:{O,1}*→{0,1}μBを採用する。
更なるハッシュ関数G:{O,1}*→{0,1}κを有し、カプセル化アルゴリズムのステップ4及びカプセル除去アルゴリズムのステップ2においてHの代わりにGを適用することもできることを注記する。
Figure 0007208987000027
Figure 0007208987000028
Figure 0007208987000029
注釈、アルゴリズム1.5及び1.5において、Hに供給する前にpk及びcをビット列に暗黙的にマッピングしていることに注意されたい。
[1.6 非環ケースのためのCCAキーカプセル化方法の枠組み]
当該キーカプセル化枠組みは、Fujisaki-Okamoto変換のKEM変形を本出願の暗号化方式に適用して該方式をCCAセキュアなものにすることにより得られる。
CPA-PKE方式からの表記を使用する。2つのハッシュ関数:
G:{0,1}*→{0,1}βxRRx{0,1}γ及びH:{0,1}*→K={0,1}κ
も必要とする。
先ず、キー発生アルゴリズムを記述する。等しいランダム化選択の場合、公開キーpkは等しく、アルゴリズム1.7による秘密キーは該秘密キー並びに公開キー及びランダム文字列(z)を有することに注意されたい。
Figure 0007208987000030
アルゴリズム1.6の出力cは、アルゴリズム1.4と等しい入力及びRに対する同一の選択の場合、アルゴリズム1.4からの暗号文(U,v)を有する。キーKも有する。
Figure 0007208987000031
等しい秘密キーS及び等しい入力(U,v)によれば、m’の値はアルゴリズム1.4に与えられたものと等しくなる。NR CCAアルゴリズムにおけるランダム選択がNRCPA-PKEアルゴリズムのものと等しく、且つ、該NRCPA-PKEアルゴリズムがアルゴリズム1.6のライン1で選択されたメッセージmを正しく取り出した場合、m = m'となると結論する。その場合、アルゴリズム1.6のライン2で計算される(K^’,ρ',d')はアルゴリズム1.6のライン2における(K^,ρ,d)に等しくなり、従って、アルゴリズム1.6及びアルゴリズム1.6のライン8で計算されるKの値は等しくなる。アルゴリズム1.6のライン7における条件が満足されない場合、出力はランダムキーとなる。
Figure 0007208987000032
注釈、アルゴリズム1.6及び1.6において、(σ,B)m’及びCは、G及びHに各々供給する前に二進列に暗黙的にマッピングする。
[1.7 非環及び環ケースの組み合わせ]
この節では、先のアルゴリズムの組み合わされた非環及び環バージョンを多項式環Rn=Z[x]/(xn -1)により説明する。Rnにおける乗算を示すために*を使用する。非環ケースとの類似性を強調するために、多項式Σi=0 n-1fixi及び(列)ベクトル(f0,f1,K,fn-1)Tを識別する。f,g∈Znに対し、f*gを多項式f(x)g(x)(mod(xn - 1))の係数ベクトルとして定義する。即ち、0≦i≦n-1に対し、
Figure 0007208987000033
である。また、マトリクスの乗算*を以下のように定義する。
Figure 0007208987000034
とすると共に
Figure 0007208987000035
とする(例えば、
Figure 0007208987000036
)。
Figure 0007208987000037
マトリクスBT*Rは、
Figure 0007208987000038
と定義される。環及び非環ケースを区別するために、ブールパラメータringを使用する。
Figure 0007208987000039
次のアルゴリズムは,公開キーpk、メッセージm及びランダム性変数ρから暗号文cを発生する。
Figure 0007208987000040
暗号化アルゴリズムは公開キーpk及びメッセージmから暗号文cを発生する。

Figure 0007208987000041
解読アルゴリズムは、秘密キーsk及び暗号文cから平文メッセージm(の推定)を回復する。
Figure 0007208987000042
[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構成)に使用されるディメンションkxkの共有公開マトリクスAは、少なくともディメンションkxkを持つと定義されるマスタマトリクスAmasterに置換πを適用することにより計算することができる。
Amasterがメモリに維持されると仮定すると、この方法はフレッシュなAを計算する一層高速な方法を可能にする。このことは、多数の接続を扱わなければならないサーバにとり特に重要である。実施態様において、Aはkxk未満の大きさのAmasterから複数の置換を適用することにより計算される。このように、Amasterの大きさは一層小さく、同じ組に複数の置換が適用される。後者は、ノードが(i)Amaster全体をシードから計算することも、(ii)共有マトリクスと丁度同じ大きさのAmasterをメモリに維持することも要さないという利点を有する。代わりに、ノードは共有マトリクスを使用された後に削除することができ、共有マトリクスが次に必要とされる場合、該マスタは共有プールから構築することができる。一実施態様において、共有プールは共有マトリクス自体が必要とするものの平方根の多さのデータのみを有する。例えば、共有プールは前記第1モジュラスqの大きさと略同じ多さ(例えば、q以下又は2q等)のエントリを有する。
幾つかの実施態様は、KEXにおいて特にクライアント(イニシエータ)側の性能を改善することを目指す。イニシエータは、より少なく計算及び/又は記憶しなければならないからである。このことは、サーバ(レスポンダ)側も改善するが、この改善は相対的に小さい。他の格子ベースの方式に適用される場合、このIDは公開キー暗号化方式又は署名方式の性能を改善することができる。2~3のシードが与えられた場合、公開パラメータAを一層速く計算することもできるからである。
LWEキー交換(及び他のLWE構成)において使用されるディメンションkxkの共有公開マトリクスAは、マスタマトリクスAmasterに置換πを適用することにより計算することができる。一実施態様において、当該マスタマトリクスは少なくともkxkの大きさ(ディメンション)を有することができる。しかしながら、共有マトリクスAは、複数の関数(置換であり得る)を適用することによりkxkより小さなサイズのAmasterから計算することもできる。このように、Amasterの大きさは一層小さく、同一の組に対して複数の関数(置換)が適用される。Amasterがメモリ内に維持されると仮定すると、この方法はフレッシュなAを一層速く計算する方法を可能にする。これは、多数の接続を処理しなければならないサーバにとり特に重要である。
[概要]
N個の要素を含むマスタマトリクスAmasterが、メモリ内で利用可能である(N<k)。Amasterにおける要素は、擬似ランダム関数(PRF)を適用することによりランダムシードから計算することができる。マスタマトリクスAmasterは、共有プールの一例である。
一実施態様において、マトリクスAは、各組(集合)がN≦Nなるサイズの組Bに分割される。1つの組は、例えば、図4に示されるように、
- Aにおけるブロック、
- Aにおける行、
- Aにおける列
を表すことができる。
各組Bにおける要素は、Amasterにランダム化関数πを適用する、即ち、Bi = πi(Amaster)とすることにより計算することができる。このランダム化関数は、、Amaster及びBiにおける要素の数が等しい場合、エントリの置換であり得る。しかしながら、Amasterにおけるエントリをランダムな方法で抽出するだけで十分である。
関数πは、Amasterにおける幾つかの要素を抽出すると共に幾つかの他のものをランダムなものにより交換することもできる。例えば、ブロックBiのエントリの半分はAmasterからコピーされ、他のものはランダムに発生される。更に他の実施態様において、関数πはぴったり十分なエントリをAmasterから抽出すると共に斯かるエントリの各々に交換関数(substitution function)を適用し、該交換関数は集合{0,1,…,q-1}に対する1対1関数である。関数πは、先ずエントリを置換し、該置換されたエントリに交換関数を適用することもできる。
[パラメータについて]
当該共有マトリクスAにおける要素は[0,q-1]であり得る。幾つかの実施態様において、モジュラスqは約214又は216である。Aの大きさはkxkであり、kは例えば600~800であり得る。Nの好適な値は、全ての要素が高い尤度で表されるように約qであろう。Aがブロックから構成される場合、各ブロックはk’<√NBとしてk’x k’を有することができ、例えばk’はq = 214の場合、128までであり得る。
[特定の実施態様]
一実施態様においては、AがAに対してAmasterにおける各行に異なる置換(permutation)を適用する全体的置換を適用することにより行毎に計算されるような行毎の置換が提案される。
一実施態様において、Aにおける各行ai(ここで、0≦i≦k-1)をAmasterの要素を抽出することにより計算し、斯かる行は以下ではamaster(NB要素を含む行と定義される)と称する。2つの特定の実施態様を説明する:
・実施態様#1:第1実施態様においては、Nbのk置換として計算する。例えば、πi:ai= amaster[ri(ri+k-1)%Nb]であり、ここで、riはランダム値である。これは、合計でkkのランダム化出力となる。表記[a:b]は、a~bのインデックスを持つ全要素を示す。bがaより小さい場合、aから共有プールの終了までの全エントリが取り込まれると共に、該プールの開始からaまでの全エントリが取り込まれる。表記m%Nbは、mからNbの整数倍相違する{0,1,…,Nb-1}における整数mを示す。
・実施態様#2:他の例においては、πi:ai[j] = amaster[(ri+PRF(s|j))%Nb]である。即ち、aiにおけるj番目の要素は、シード及びjに依存するPRFを適用すると共に要素を行に依存する値riによりシフトすることによりamasterにおける要素をランダムに取ることにより得られる。これは、多数のランダム化された出力:
Figure 0007208987000043
とながるが、各行に対してPRFの計算も要し、不効率であり得る。ランダム値riは選択パラメータの例である。
下表は、amasterを発生する際の計算されるビットの数に対する要件及び置換の数を要約する。
Figure 0007208987000044
上記表から、ランダム化された出力の数は膨大であるが、PRFにより計算されることを要するビットの数は大幅に少ないことが分かる。
[プロトコルにおける使用]
プロトコルにおいては幾つかのパラメータが交換されねばならない。例えば、
- amasterを計算するために使用されるシード
- 関数πを計算するために使用されるシード
- 関数(置換)πの指定
の1以上である。
共有マトリクスAを更新する当該方法は、キー交換、キーカプセル化方法、公開キーカプセル化システム、署名方式等の暗号プロトコルにおいて使用することができる。幾つかの実施態様は、特にKEXにおけるクライアント(イニシエータ)側の性能も改善することに注意されたい。イニシエータは余り多く計算及び記憶する必要がないからである。このことは、サーバ(レスポンダ)側も改善するが、この完全は相対的に小さい。
他の格子ベースの方式に適用された場合、この方法は、公開キー暗号化方式又は署名方式の性能を改善することができる。幾つかのシードが与えられたとして、公開パラメータAは一層速く計算することができるからである。この方法は、各モジュールが異なる公開パラメータaiを有したとしたら(この場合、aiは所与の環にわたる多項式を表す)、モジュール格子に適用することができることにも注意されたい。公開多項式の各々は、置換を適用することによりマスタ多項式から得られるであろう。
図1は、キー共有ネットワーク100の実施態様の一例を概略的に示す。キー共有は暗号処理の一例である。該キー共有は複数の要素、例えば、共有マトリクス、秘密キーマトリクス、公開キーマトリクスの構築、マトリクス乗算、ノイズの追加等を利用し、これらは例えば公開キー暗号化等の他のタイプの暗号処理と共通する。一実施態様において、装置100は、例えば前述したような又は参考文献に示したような他のタイプの暗号処理のために再構成することができる。一実施態様において、装置100は複数のタイプの暗号処理のために再構成することができる。何れの場合においても、装置100は多数の異なるレベルの構成及び困難度が利用可能であるという利点を有する。例えば、当該暗号処理は、キー交換(KEX)プロトコル、キーカプセル化方法(KEM)、公開キー暗号化(PKE)、デジタル署名の何れかとすることができる。一実施態様において、第1電子ネットワークノードは複数の異なる暗号処理から或る暗号処理を選択する選択子を受信するように構成することができる。一例としてではあるが、下記の実施態様は装置100がキー共有のために構成されると仮定する。
図1に示されるものは当該システムにおける2つのネットワークノード、即ち、イニシエータ型のネットワークノード110及びレスポンダ型のネットワークノード210である。当該キー共有システムの一実施態様において、ノードの数は一層大きく、例えば1000ノードより多い(例えば、10ノードより多い)等のように2より大幅に大きくすることができる。
イニシエータ型のネットワークノードとレスポンダ型ネットワークノードとの間の違いは、調整データ(reconciliation data)をどの様に扱うかである。イニシエータ型のネットワークノードは調整データを受信し、該調整データを、共有キーを得るために適用する一方、レスポンダ型ネットワークノードは調整データを発生し、該調整データをイニシエータ型ネットワークノードに送信する。レスポンダ型ネットワークノードは、共有キーを得るために調整データを必要としない。典型的に、イニシエータ型は2つのネットワークノード間のキー共有プロトコルも開始する。このことは、2つのネットワークノードの間で実行される処理の数を低減することができるからである。しかしながら、このことは必要ではない。キー共有プロトコルはレスポンダ型のネットワークノードより開始することもできるからである。
更に、ネットワークノードの一実施態様において、当該ネットワークノードはイニシエータモードに従って及びレスポンダモードに従って動作するよう構成される。例えば、当該ネットワークノードがキー共有を開始する、例えば他のネットワークノードにメッセージを送信してキー共有プロトコルの開始を通知する場合、該ネットワークノードはイニシエータモードに切り換わり得る。当該ネットワークノードがキー共有に応答する、例えば他のネットワークからキー共有プロトコルの開始を通知するメッセージを受信した場合、該ネットワークノードはレスポンダモードに切り換わり得る。この構成は実用上便利であるが、このオプションは厳密に必要であるというものでもない。例えば、キー共有システムにおいて、幾つかのノードはイニシエータとしてのみ構成することができ、幾つかはレスポンダノードとしてのみ構成することができる。これの結果は、幾つかのノードは共有キーに一緒に合意することができないということであろう。幾つかのネットワークにとり、例えば、アドホックネットワーク又はアドホック無線グリッド等において、十分に多数のネットワークノードの対が通信することができ、共有キーに同意することができる限り、このことは必ずしも問題とはならない。
イニシエータノード110は通信インターフェース120を有する。レスポンダノード210は通信インターフェース220を有する。これらの通信インターフェースは、当該キー共有システムにおいて他のノードとのデジタル通信のために構成することができる。もっとも、当該システムにおける全ノードに常に到達することができることは必要ではない。
通信インターフェース120及び220は、デジタル通信を行うように構成される。例えば、これら通信インターフェースはコンピュータネットワークを介して通信するように構成することができる。例えば、当該通信インターフェースは、例えばWi-Fi(登録商標)、ジグビ及びブルートゥース(登録商標)等の無線通信、及び/又は例えばイーサネット及びUSB等の有線通信のために構成することができる。ノード110及び210の間の通信は、有線及び無線接続の組合せとすることもできる。例えば、システム100におけるノードは、ノード110及びノード210を含み、通信識別子を格納する電子記憶部を有することができ、これら識別子はシステム100内のノードを固有に識別する。例えば、斯かる通信識別子は、ノード110及び210の間で交換されるデジタルメッセージに、例えば該メッセージをアドレス指定するために含めることができる。例えば、該通信識別子はIPアドレス及びMACアドレス等とすることができる。
当該電子ネットワークノードは、キー交換(KEX)プロトコルのために構成される。該プロトコルは、通信インターフェース120及び220を介してノード110及び210の間でメッセージを交換すること、並びに例えば他のノードから受信されたデータに対して計算を実行することを含む。当該キー共有プロトコルの実行は、以下に例が示されるプロセッサ回路において実施される。図1は、該プロセッサ回路の機能ユニットとなり得る機能ユニットを示す。例えば、図1は該プロセッサ回路の可能性のある機能的編成の青写真として用いることができる。該プロセッサ回路は、図1におけるユニットからは別途示されていない。例えば、図1に示される機能ユニットは、ネットワークノードに記憶されると共に該ネットワークノードのマイクロプロセッサにより実行可能なコンピュータ命令の形で全体として又は部分的に実施化することもできる。
イニシエータノード110及びレスポンダノード210は、キー交換(KEX)プロトコル用に構成される。KEX方式は、しばしば公開キーと呼ばれる公開データの各当事者による交換を伴い、該公開データは次いで他方の当事者により共通の共有秘密を計算するために該他方の当事者の秘密データ(しばしば、秘密キーと呼ばれる)と一緒に独立に使用される。幾つかの実施態様の興味あるフィーチャは、実際の最終的な共有される秘密が、暗号化された形態でさえも決して当事者間で交換されることはなく、当該2つの当事者により各端部において独立に計算されることである。この結果、前方秘匿性として知られた望ましいフィーチャが得られ、該フィーチャは或る当事者の長期の秘密キーの将来における攻撃者による危殆化さえも、過去に交換された暗号メッセージの秘匿性を危殆化しないであろうことを保証する。
本発明の実施態様は、秘密通信を提供するために信頼される第三者に依存することはない。通信インターフェース120及び220の間の通信チャンネルは、必ずしも安全なチャンネルである必要はない。攻撃者は該通信チャンネルを盗聴することができる。そうであっても、ノード110及び210の間で共有されるキーは、安全であり得る。通信チャンネルが改変から保護される場合、当該チャンネルにより提供される限りにおいて、或る程度の認証は得ることができる。しかしながら、通信インターフェース120及び220の間のチャンネルが改変に対して保護されない場合、KEX方式は認証を達成しないであろう。認証を得るために、実施態様は何らかの既知の認証メカニズム、例えば暗黙的な認証メカニズム(例えば、証明された公開キーを使用する)又は明示的認証メカニズム(例えば、デジタル証明を使用する)と組み合わせることができる。
イニシエータノード110は、共有マトリクスユニット130を有する。レスポンダノード210は、共有マトリクスユニット230を有する。共有マトリクスユニット130及び230は、当該2つのノードの間で共有される共有マトリクス(A)を得るように構成される。特にマトリクスAがノード110及びノード210に対して必ずしも秘密に維持される必要はないという事実が与えられる場合、同一のマトリクスがノード110及び210の間で共有されることを保証する多数の方法が存在する。
共有マトリクスAの構成は、困難度パラメータd及び構造パラメータnで定義することができる。共有マトリクスユニット130及び共有マトリクスユニット230は、困難度パラメータd及び構造パラメータnを入力として受信するよう構成することができる。このことは、当該装置が多くのタイプの暗号的な基となる問題をサポートすることができるという利点を有するが、このことは必要ではない。Aの構成、例えばAの大きさ及びAの多項式(存在するなら)の次数は、予め定めることもできる。
両ユニットが同じ困難度パラメータd及び構造パラメータnの共有マトリクスを使用することに注意されたい。これらの数d及びnは、マトリクスAの要素(成分)の大きさ及びタイプを決定する。例えば、困難度パラメータd及び構造パラメータnは、APIを介して(例えば、装置110及び210を例えば保護された通信のために使用するアプリケーションにより)設定することができる。該アプリケーションは、必要とされる困難度及び構造を決定し、装置110及び/又は210に例えば関数呼び出し(ファンクションコール)により命令することができる。
共有マトリクスAにおけるエントリは、第1モジュラスqによるモジュロ、構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで選択される。n=1の場合、エントリは整数であり、n>1なら、エントリは多項式である。第1モジュラスq及び既約多項式fも、ノード110及びノード210の間で共有される(例えば、通信される又は予め定められる)。共有マトリクスAは、例えば大きさkの正方マトリクスkxkである。Aが正方形である必要はない。代わりに、Aは長方形とすることもできる。この場合、秘密キーマトリクスの大きさは、Aの大きさと同等となるように選択される。
行及び列の数kは、構造パラメータnにより除算された困難度パラメータdに等しい。n=dの場合、マトリクスAは単一の多項式エントリを有する。既約多項式fに対する実際的選択は、例えば、xn + 1又は xn -1である。
大きさkを計算することができるように構造パラメータnが困難度パラメータdを分割する(割り切る)ことが好ましい。しかしながら、一実施態様において、kは構造パラメータnにより除算された困難度パラメータdを丸める(例えば、最も近い整数に丸める、切り上げる又は切り下げる)ことにより得られる。
一実施態様において、構造パラメータnは素数となるように限定されるが、これは必須ではない。一実施態様において、構造パラメータnは2の冪であり、第1モジュラスqは素数であるが、これも必須ではない。
ノード110及び210は共有プール131を有する。該共有プールは、第2電子ネットワークノードと共有されると共に、共有マトリクスのエントリで使用するための複数の整数及び/又は多項式を有する。このように、該共有プールは整数及び/又は多項式のベクトルと見ることができる。例えば、ノードは共有プールへのアクセスを備えて製造することができる。しかしながら、共有プールを得る好ましい方法は、共有プールを発生することである。このことは、異なる対のノードが異なる共有プールを有することができるという利点を有する。例えば、ノード110及び210は、共有プールを決定論的擬似ランダム数発生器により発生するようにして得ることができる。該ランダム数発生器は、共有シードから種(シード)を蒔かれる。例えば、当該装置の一方(例えば、装置110又は装置210)がシードを発生し、該シードを他方の当事者に送信することができる。例えば、公開キーマトリクスを送信する第1当事者はシードを送信し、該シードにより共有プールを発生し、該共有プールから共有マトリクスを発生することができる。例えば、両者がシードを発生し、該シードを他方の当事者に送信することができる。発生するために使用されるシードは、両シードを組み合わせることにより(例えば、これらを加算することにより)得られる。
共有プールが発生されたなら、該共有プールは、例えば電子メモリ内に一時的に又は例えばハードディスク等の磁気記録装置若しくは不揮発性メモリ上等の長期記憶部内に、保持することができる。共有プールを維持することは、該共有プールが再度発生されることを要さないということを意味する。一実施態様において、共有プールは複数のキー交換にわたって同一のまま留まる。しかしながら、共有プールは幾らか進展することもできる。例えば、新たなキー発生の都度に、当該プールにおける一定数のエントリは破棄することができ、新たな組の数が発生され得る(例えば、これもシード(例えば、新たなシード)から)。このことは、オーバーヘッドを抑制するが、長期の実行において共有プールが、従って共有マトリクスにおけるエントリが更新されることを保証する。例えば、当該数は10等とすることができる。
共有マトリクスにおけるエントリ又はエントリの係数は共有プールから選択される。幾つかのオプションが存在する。共有マトリクスは整数を有することができ、その場合、共有プールも整数を有する。共有マトリクスは多項式を有することができ、この場合、共有プールは共有マトリクスにおける多項式のための係数として選択することができる整数を有することができ、又は該共有プールは多項式を有することができ、その場合、該共有プールにおけるエントリは共有マトリクスにおけるエントリのための直に使用することができる。これらの実施態様において、共有プールにおけるエントリは、好ましくは、第1モジュラスqのモジュロであるが、このことは厳格に必要というものではない。同様に、共有プールにおけるエントリが多項式である場合、これらは、好ましくは、共有されるモジュラスq及び共有される既約多項式のモジュロである。殆どのアプリケーションの場合、当該シード、共有プール、共有マトリクス、選択パラメータ等は秘密であることを要さず、公開のものとすることができる。
共有プールの大きさ(サイズ)は共有マトリクスの大きさより小さくすることができる。例えば、共有マトリクスの記憶サイズは、共有マトリクスにおけるエントリの数の既約多項式の次数マイナス1倍に比例し得る。共有プールのサイズは、該共有プールのエントリの数の、恐らく既約多項式の次数マイナス1倍に比例し得る。一実施態様において、共有プールのサイズは、共有マトリクスのサイズより小さく、例えば共有マトリクスのサイズの半分以下である。一実施態様において、共有プールのサイズは共有マトリクスのサイズより小さく、例えば共有マトリクスのサイズの平方根以下である。このことは、共有マトリクスを共有プールのサイズに等しい又は略等しいk個の部分に分割することができるという利点を有する。一実施態様において、共有プールにおけるエントリの数は、第1モジュラスq又は該モジュラスの小さな倍数(例えば、2q、3q等)より小さい。後者の利点は、略全要素のモジュロqが共有プール内に存在しそうであり、共有マトリクス内で略等しく表されるということである。
一実施態様において、共有プールはサイズが共有マトリクスより大きいが、ノードは同一の共有プールを複数の共有マトリクスに対して使用する。事実、共有プールは複数の異なる第2ノードに対して使用することさえできる。
共有プールの利点は、共有マトリクスを更新することが安価であるということである。例えば、単に選択パラメータだけを送信又は交換することができ、該選択パラメータに基づいて新たな共有マトリクスを共有プールから迅速に選択することができる。特に、幾つかの実施態様において、何の関数も又は僅かの関数しか必要とされない。
一実施態様において、ノードは他のネットワークノードと共有される1以上の選択パラメータを得る。選択パラメータは予め定められたものとすることができ、例えば、ノードは一連の選択パラメータに対するアクセスを有すると共に、次のもの又は次の幾つかのものを用いて共有マトリクスを発生することができる。このような選択パラメータは、一方のノードにより選択され、他方に通知することもできる。選択パラメータは、両ノードにより選択されると共に他方に通知され、その後、これらが組み合わされる(例えば、加算され、排他的論理和を取られ等)ようにすることもできる。
選択パラメータは選択関数を制御するために使用され、該選択関数は共有マトリクスにおけるエントリを共有プールから抽出(例えば、選択)する。
例えば、共有マトリクスユニット130及び230は1以上の選択関数を備えて構成することができる。該選択関数は共有プールから整数、多項式及び/又は多項式係数を共有マトリクスのエントリに割り当て、選択関数により割り当てられる特定の整数、多項式又は多項式係数は前記選択パラメータに依存する。
例えば、当該選択関数は、選択パラメータri及びインデックスjを共有プール又は共有プールの一部への入力とする関数gi(ri,j)であり得る。該選択関数の出力は、共有マトリクスA内のエントリを示す対(x,y)であり得る。該選択関数の出力は、共有マトリクス内のエントリ(x,y)及びエントリにおける多項式の係数の次数tを示す対(x,y,t)であり得る。この場合、関数gi(ri,j)はインデックスjの異なる値に関して、例えばj=0,…,Nからのインデックスに関して評価され、共有プールにおけるインデックスjに関するエントリが当該選択関数の出力に割り当てられる。
例えば、当該選択関数は関数gi(ri,x,y)又はgi(ri,x,y,t)とすることができ、これらは、入力として選択パラメータri並びに共有マトリクスにおけるエントリを示す対(x,y)又は共有マトリクスにおけるエントリ(x,y)及び該エントリにおける多項式の係数の次数tを示す三つ組(x,y,t)を取る。該選択関数の出力は、共有プール又は該共有プールの一部へのインデックスjであり得る。この場合、関数gi(ri,j)は、共有マトリクスにおける異なるエントリに対して及び/又はtに関する異なる値に対して評価され、共有プールにおけるエントリが共有マトリクスにおけるエントリに割り当てられる。共有プールは、それ自体マトリクスとして表すことができ、その場合、インデックスjは1対のインデックスとして表すことができる。
例えば、当該選択関数は置換(permutation)であり得る。該置換は共有プール又は共有プールの一部に適用され、結果は共有マトリクスにおけるエントリ、例えば整数、多項式又は係数に所定の順序(例えば、線形)に従って割り当てられる。
一実施態様において、共有マトリクスAは複数の組(集合)に分割される。各組に対し、選択関数は共有プール又は共有プールの一部を、選択パラメータの少なくとも一部に依存して当該組にマッピングする。分割の例が図4に示されている。図4に示されるものは、4つの共有マトリクスA、即ち、410、420、430及び440である。
共有マトリクス410において、各組は共有マトリクスAのブロックである。例えば、1つのブロックは、少なくとも2x2又はそれ以上である。ブロックは正方形であるが、そうである必要はない。1つのブロックが符号412で示されている。
共有マトリクス420において、各組は共有マトリクスAの行である。1つの組が符号422で示されている。
共有マトリクス430において、各組は共有マトリクスAの列である。1つの組が符号433で示されている。
共有マトリクス440において、各組は共有マトリクスAのエントリのランダム選択である。1つの組が符号442により示されている。例えば、この場合においても、当該組はAにおけるエントリの数の1/k倍に等しいサイズを有することができる。例えば、組422はk個のエントリ(例えば、整数)を有することができる。組422は、Aにおける係数の数の1/k倍の選択でさえあり得る。各組(例えば、422)に対する係数の割り当ては、ランダムであり得る。Aにおける多項式エントリの係数は、1つの組に又は2以上の組にわたって分配され得る。
選択パラメータriは、例えば、共有プールにおいてランダムインデックスを選択することができる。次に、共有プールにおける連続した整数の列を、関数giが割り当てられたエントリに割り当てることができる。選択関数は、特定の予め定められた置換が最初にどれだけ多くの回数分適用されるべきかを示すことができる。これらは組み合わせることができる。例えば、共有プール全体のランダム置換はノードにおいて固定することができる。第1選択パラメータr0は、固定された置換がr0回実行されるべきことを示し、この後に、riを関数giに関して例えばインデックスとして使用することができる。
選択パラメータは、共有プールにおけるインデックスが共有マトリクスにおけるインデックスに割り当てられた線形合同発生器(linear congruential generator)に対する入力とすることができる。例えば、選択パラメータは該線形合同発生器の漸化式(recurrence relation)における乗数であり得る。好ましくは、選択パラメータは組内のエントリの数に対して相対的に素である。例えば、選択パラメータは増分とすることもできる。線形合同発生器は、当該組に存在するのと同数の数を発生することができ、これに応じて共有プールの全て又は一部を置換することができる。線形合同発生器のオーバーヘッドは暗号ランダム関数よりも大幅に小さいことに注意されたい。
選択関数は、例えば選択パラメータr及びsに基づく暗号ランダム関数を有することもでき、共有プールにおける該共有プールのサイズによるモジュロのインデックス(r + Prf(s|j))のエントリは、Aの或る組における(例えば、共有マトリクスの行又は列における)インデックスjのエントリにマッピングすることができ、ここで、Prfは擬似ランダム関数を示し、(s|j)はs及びjの連結(concatenation)を示す。
更に他の実施態様において、当該プールへの選択関数の適用の後に、追加の関数Sが適用される。このような関数Sの例は、1対1関数の{0,1,…,q-1}に対する要素毎の適用、又はランダム化されたエントリによる幾つかのマトリクスエントリの交換である。
一実施態様において、共有マトリクスユニット130及び230は、共有マトリクスにおける全ての整数、多項式及び/又は多項式係数を共有プールから選択するように構成される。この構成は、共有マトリクスの新たなバージョンが即座に利用可能となるという利点を有する。しかしながら、共有プールに存在する如何なる傾向も共有マトリクスにおいて反映され得る。非常に高いセキュリティの場合、これを回避することが望ましいであろう。これを行う幾つかの方法が存在する。例えば、共有プールの内容を時間にわたり更新することができる。例えば、新たな共有マトリクスが発生された都度、共有プールの内容は、例えば乱数発生器により複数の新たなエントリを発生することにより更新することができる。もっとも、このことは、共有プールが第1及び第2ノードの間の同期を失い得る危険性を生じ得る。この危険性は、共有プールを更新するためのシードとして選択パラメータを使用することにより低減される。例えば、共有プールは共有マトリクスを発生する前に更新することができる。成功裏のキー発生が行われた場合にのみ、共有プールに対する変更は維持され、そうでない場合、共有プールは前の状態に戻される。成功裏のキー発生が可能でない場合、共有プールは、例えば再発生のためのシードの交換を有し得る共有プール再発生プロトコルに従って、完全な再発生により更新することもできる。
特定の共有プールに対する依存を低減する他の方法は、共有プールから共有マトリクスの一部のみを取ることである。例えば、一実施態様においては、共有マトリクスにおける整数、多項式及び/又は多項式係数の一部が共有プールから選択され、該共有マトリクスの残りの部分を発生する。例えば、ノードはシードを、共有プールを発生するためのシードが交換されるのと同様の方法で、及び/又は選択パラメータが交換されるのと同様の方法で交換することができる。該シードは、共有マトリクスの一部を発生するために使用される。例えば、共有マトリクスにおける予め定められたエントリを更新することができる。例えば、予め定められた場所が、各行における及び/又は各列における少なくとも1つのエントリを有することができる。一実施態様においては、係数又は全多項式を更新することができる。一実施態様においては、複数のエントリ/係数がランダムに選択される(例えば、前記シード又は選択パラメータ等により種(シード)を蒔かれた乱数発生器により選択される)。
交換又は発生するエントリ/係数の数は固定の値、例えば、少なくとも10又は少なくとも100等とすることができる。該数は共有マトリクスに比例することができる。例えば、エントリ/係数の数の少なくとも平方根分は共有プールからは取り込まれず、発生又は交換される。
エントリの一部のみを共有プールから取り込む代わりに、先ず共有マトリクス全体を共有プールから選択し、これの一部を他の値に交換することもできる。例えば、交換又はランダム化ステップが共有マトリクスを、キー交換のために使用される前に補正することができる。例えば、エントリのうちの1以上を選択し(例えば、予め定め、ランダムに選択し、又はプロトコルにより)、ランダムに発生された(例えば、シードに従って等)エントリにより置き換えることができる。代わりに、共有マトリクスにおける幾つかの又は全てのエントリにマッピングを適用することもできる。例えば、1つ、2以上又は全てのエントリに、{0,1,…,q-1}に対する1対1マッピングのエントリ毎の適用を行うことができる。ランダム化関数は交換/置き換えと同数に適用することができるが、ランダム化関数は、それ以上に(例えば、全エントリ/係数に)適用することもできる。
以下、キー交換プロトコルを更に説明する。この実施態様においては、共有マトリクスが第1モジュラスqによるモジュロの整数を有すると仮定される。しかしながら、キー交換プロトコルの他の実施態様において、共有マトリクス及び秘密キーは、モジュラスq及び第1既約多項式fによるモジュロの多項式を有する。公開キーマトリクスは、第2モジュラスp及び既約多項式のモジュロであり得る。丸めを用いる代わりに、他のノイズ源を用いることもできる。イニシエータノード110は、秘密キーマトリクスユニット140を有する。レスポンダノード210は、秘密キーマトリクスユニット240を有する。秘密キーマトリクスユニット140は秘密キーマトリクスSIを発生するように構成され;秘密キーマトリクスユニット240は秘密キーマトリクスSRを発生するように構成される。当該秘密キーマトリクスにおけるエントリは、モジュロfの多項式である。fの次数が1である場合、事実上、エントリは整数である。
一般的に言って、当該秘密キーマトリクスはランダムに選択される。例えば、秘密キーマトリクス(SI,SR)におけるエントリは均一なランダム確率分布から選択することができる。該分布は不均一とすることもでき、例えば、その場合においてゼロのエントリの確率は非ゼロのエントリの確率より大きい(例えば、少なくとも2倍大きい)。
例えばセキュリティを改善するため又はデータサイズを低減するために、当該秘密キーマトリクスに種々の制限を課すことができる。秘密キーマトリクス(SI,SR)は、例えば、制限内の候補キーマトリクスから均一にランダムに選択することができる。例えば、一実施態様において、当該秘密キーマトリクスにおける要素の係数はbound(s)により絶対値に制限され、例えば、前記制限は2であり(s=2)又は該制限は1であり(s=1)、後者は符号付き二進に対応する。例えば、秘密キーマトリクス(SI,SR)の列及び/又は行は、固定された又は制限されたハミング重み(hs)を有する。
発明者は、驚くべきことに、制限を小さく選択することが二重の利点を有することを見出した。即ち、当該秘密キーマトリクスとのマトリクス乗算は一層速くなり、各側で計算される生キーの間の距離が一層小さくなる(後述参照)。後者は、より少ない調整データしか必要とされない、及び/又はノードが異なるキーに合意する故の当該プロトコルにおける失敗の確率が一層小さくなることを意味する。
一実施態様において、制限sは1である(s=1)。即ち、秘密キーマトリクスのエントリは、値-1,0及び1である係数のみを有する。これを“符号付き二進”とも称する。
当該秘密キーマトリクスの大きさは、マトリクスAにより乗算され得るように選択される。例えば、Aがkxkなら、イニシエータノードの秘密キーマトリクスはkx
Figure 0007208987000045
のマトリクスであり得る。
Figure 0007208987000046
及びkの大きさは、共有キーにおいて十分な数のビットが得ると共に十分に高いセキュリティレベルを得るのに十分な程大きく選定される。
当該秘密キーマトリクスのエントリの大きさ制限することに加えて、非ゼロ要素の数を制限することにより更なる利点が得られる。マトリクスの列又は行のハミング重みを、該マトリクスの非ゼロ要素の数として参照する。
発明者は、秘密キーマトリクスのハミング重みを制限する種々の方法を調査した。一般的に、当該秘密キーマトリクスがマトリクスAと左又は右乗算されるかに依存して、列又は行の何れかに関してハミング重みを制限するだけで十分である。例えば、当該秘密キーマトリクスがマトリクスAと右乗算される場合(例えば、AS)、該秘密キーマトリクスの列におけるハミング重みを制限するだけで十分である。
例えば、秘密キーマトリクスの列及び/又は行のハミング重みに関して上限を選択することができる。該上限は全ての列及び/又は行に対して同一とすることができる。一実施態様において、秘密キーマトリクス(SI,SR)の列及び/又は行は、同一の固定されたハミング重みを有する。
条件に従い、秘密キーマトリクスが、候補秘密キーマトリクス、即ち、例えば列又は行におけるハミング重み及びエントリに対する制限に関する選択された要件を満足するマトリクスから一様にランダムに選択される場合、セキュリティは改善される。例えば、各列のハミング重みは50であるとの条件を実施したい場合、各列に関して50のハミング重みを有する正しいディメンションの全てのマトリクスの集合から秘密キーマトリクスを選択することが有利である。如何なる所望のハミング重みの一様にランダムなビット列をも選択するための効率的アルゴリズムが既知である。
秘密キーマトリクスのハミング重みを制限する別の方法は、秘密キーマトリクス(SI,SR)の列及び/又は行を確率分布から選択することである。例えば、秘密キーマトリクス(SI,SR)におけるエントリを不均一な確率分布から選択することができ、その場合において、ゼロのエントリの確率は非ゼロのエントリの確率より大きい。一実施態様において、該確率分布は、列及び/又は行に対して所定の予測されるハミング重みを付与するように選択される。例えば、長さn及び予測されるハミング重みhsの列を選択するために、各エントリを確率hs/nを持つ非ゼロとして選択することができる。非ゼロのエントリは、1又は-1として(例えば、等しい確率の)選択することができる。
イニシエータノード110は、公開キーマトリクスユニット150を有する。レスポンダノード210は、公開キーマトリクスユニット250を有する。公開キーマトリクスユニットは、公開キーマトリクスをマトリクスA及び秘密キーマトリクスSから計算する。
公開及び秘密なる用語は、共有キーは公開情報の知識だけでは又は幾らかの秘密情報の知識なしでは得られないことを伝えることを意図するものである。もっとも、公開情報が積極的に共有されるという要件は存在しない。例えば、キー共有プロトコルは、公開キーを盗聴者から安全に保つ(推定)セキュアチャンネルを介して実行することができる。この場合、キー共有プロトコルは、当該チャンネルのセキュリティが侵害された場合に、セキュリティの追加のレイヤを提供する。
当該公開キーマトリクスユニットは、公開キーマトリクスP(イニシエータ及びレスポンダノードの各々のためのPI,PR)を、共有マトリクス(A)及び秘密キーマトリクス(SI又はSR)の間のマトリクス積の第1モジュラス(q)及びfによるモジュロを計算し、マトリクス積を得、及びノイズを追加することにより計算する。
この中間のマトリクス乗算は明らかにされないことに注意されたい。共有マトリクスA及び該マトリクス乗算の結果の知識が、秘密キーを明らかにする。マトリクスAを反転することにより計算することができるからである。
ノイズを追加することは、誤差項又はノイズ項を選択し、これらを上記マトリクス積のエントリに追加することにより実行することができる。例えば、ノイズは平均0のガウス分布から選択することができる。ノイズを追加する好ましい方法は、上記中間マトリクス積を縮小(スケールダウン)する、例えば係数を縮小することである。
一実施態様において、当該公開キーマトリクスユニットは、前記マトリクス積のエントリを第2モジュラスpにスケールダウンする。第2モジュラスpは、第1モジュラスqより小さい。スケーリングされたエントリは、第2モジュラス(p)により乗算され、第1モジュラス(q)により除算され、最も近い整数に丸められたスケーリングされていないエントリに等しい。例えば、xが当該マトリクス積におけるスケーリングされていないエントリのモジュロqである場合、スケーリングされたエントリは
Figure 0007208987000047
として選択され、ここで、
Figure 0007208987000048
は最も近い整数を表す。スケーリング処理の後、秘密キーを公開キー及びマトリクスAから計算することは、最早、容易には可能でない。
公開キーマトリクスにおけるエントリは、区間[0, p-1]の係数を持つ多項式として表すことができる。秘密キーマトリクスにおけるエントリも、区間[0, p-1]の係数を持つ多項式として表すことができる。後の乗算のための整数の大きさを低減するために、区間[-p/2 , p/2]の係数を選択する利点が存在する。前述したように、秘密キーマトリクスも、区間[-s, s]又は[0, s]内に選択された係数を有することができる。
マトリクスA及び秘密キーマトリクスSの乗算は、第1モジュラスq及びfのモジュロで実施される。この目的のために、当該ネットワークノードはモジュロq及びモジュロfで縮小するためのモジュール縮小ユニットを有することができる。秘密キーマトリクスSにおける係数が小さい、例えば1により制限される又は絶対値で1により制限される場合、当該モジュール式縮小は簡略化することができる。即ち、マトリクス乗算の間において、係数がqより大きくなる又は0より小さくなる都度、qを減算又は加算することにより当該結果は区間0~q-1に戻される。
当該イニシエータノード及びレスポンダノードの両方は、自身の公開キーマトリクスを、例えば通信インターフェース120及び220を用いて、他方のノードに送信する。発明者は、マトリクス積を縮小することにより実現される少なくとも3つの利点を見出した。先ず、ノイズの発生及び当該マトリクス積への明示的な追加は回避される。ノイズの導入は、確率分布、例えばガウス分布の計算を必要とする。これらは、相対的に計算的に大変である。第2に、通信要件が削減される。第2モジュラスpは第1モジュラスqより小さいので、公開キーマトリクスのエントリを表すために秘密キーマトリクスのものより少ないビットしか必要とされない。第3に、公開キーマトリクスに関わる計算は、より小さな数を伴うので一層小さくなる。単一の対策が3つの利点を同時に提供することは驚くべきことである。
第2モジュラスpが第1モジュラスqを分割することが極めて好ましい。興味あることに,発明者は第1モジュラス又は第2モジュラスの何れも素数であることを要さないことを見出した。事実、第2モジュラス(p)及び/又は第1モジュラス(q)を2の冪として選択することが、公開キー及び秘密キーが均一に分布されるという利点を有することが分かった。一実施態様においては、第1及び第2モジュラスの両方が2の冪である。
一実施態様においては、モジュラスp及びqに加えて、2B+bh|pが2の冪であることを更に要する。このことは、調整データが見られたとしても一様な共有キーを生じさせる。Bは、生キーのエントリ当たりに抽出される共有キービットの数である。
前記モジュラスの大きさは非常に大きい必要はない。例えば、一実施態様において、第2モジュラスは12以上のビットサイズを有し、及び/又は第1モジュラスは8以上のビットサイズを有する。セキュリティ要件に依存して、一層大きな又は一層小さなサイズが可能である。一実施態様において、qは2^12~2^15の範囲内であり、pは2^7~2^9(両値を含む)の範囲内である。p及びqの値は、セキュリティの要求に応じて一層大きく又は一層小さく選択することができる。
イニシエータノード110は、共有キーユニット160を有する。レスポンダノード210は、共有キーユニット260を有する。これら共有キーユニットは、これらの何れかが調整データを発生及び送信し、又は受信及び適用するという点で相違する。
共有キーユニット160及び共有キーユニット260は、共に、生キー162,262を、他方のノードの受信された公開キーマトリクスと当該ネットワークノード自身の秘密キーマトリクスとの間のマトリクス積として計算するよう構成される。該積は既約多項式fによるモジュロで計算される。スケーリングが用いられる場合、後者も第2モジュラス(p)によるモジュロで計算される。当該マトリクスの大きさ及びマトリクス乗算は、スケーリング処理が省略されたとしたら、両当事者が同一の生キーを計算するように選択される。即ち、同一のキーが、ノイズの追加無しで、且つ、全ての計算がq及びfのモジュロで実施されたなら結果として得られる。しかしながら、ノイズにより、両生キーは同一である必要はない。該生キーの計算は、モジュロpで実行することができる。当該ネットワークノードは、モジュロpでの乗算の結果を縮小するためのモジュラユニットを有することができる。
レスポンダノード210の共有キーユニット260は、生キー262から調整データ264及び共有キー266を得ると共に、該調整データ264をイニシエータネットワークノード110に送信するように構成される。調整データは、生キーにおける1以上のビット(例えば、係数からのビット)の形をとることができる。調整データとして選択されたビットは、キーを発生する目的のため無視される。前記文献は調整データの種々の例を含む。
共有キーユニット260は、キーを形成するために生キーのエントリから幾つかのビットを選択する。例えば、選択されたビットは連結される。一実施態様において、選択されたビットはキー導出関数(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関数等に示されている。キー導出関数は、例えば丸め関数により(例えば、連結後に)又は調整関数からの出力から(これも、連結後に)得られる生キーにおけるキービットのエントリに適用することができる。
キービットとして選択されない幾つかのビットは、調整データとして選択することができる。最後に、幾つかのビットは一緒に破棄することができる。共有キーユニット260により生キーから得られたキー調整データは、イニシエータノード110に送信される。
共有キーユニット160は、第2電子ネットワークノードの調整データ164(h)を受信すると共に、該受信された調整データ及び生キーマトリクス162に調整関数を適用することにより共有キー166を計算するように構成される。例えば、上記調整関数は、生キー162におけるエントリの各々及び調整データの対応する部分に適用することができる。例えば、調整データ164がレスポンダノード210により発生された生キーの一部であった場合、イニシエータノードは、ノード210により取得され得たものであって、受信された調整データと同等の(例えば、受信されたのと同一の中間ビットを有する)生キーを選択することができる。
キー共有プロトコルの複数の実行のためにマトリクスA及び秘密キーマトリクスの一方を再使用することができる(両者が同一の場合は、同一の共有キーを得るであろう)。このことは、特にマトリクスAが再使用される場合、通信オーバーヘッドを低減する。しかしながら、発明者は、マトリクスA及び秘密キーマトリクスの何れも再使用する必要がないことを理解した(これらの要素には認証が関係していないからである)。好ましい実施態様においては、新たな各キー交換に対して、フレッシュなマトリクスA及びフレッシュな秘密キーが得られる。このことは、攻撃者が当該プロトコルの複数の実行を観察することにより更なる情報を観察するというオプションを有することがないという利点を有する。更に、前方秘匿性が改善される。
当該プロトコルが完了し、両ノードが共有キーを計算した後、これらノードの一方は、両ノードが同一のキーに合意したことを検証するために他方のノードにキー確認メッセージを送信することができる。例えば、キー確認メッセージは、当該共有キーのハッシュ、固定値の暗号化、ランダム値と一緒の該ランダム値の暗号化とすることができる。キー確認は、チャレンジレスポンスプロトコルを用いて実行することもできる。キー確認を省略することを選択することもできる。当事者が異なる共有キーを取得した場合、これら当事者間で実行される後続の通信は失敗するであろう。例えば、当該共有キーは更なる通信、例えばデジタルメッセージを暗号化及び/又は認証するために使用され得る。これらが異なる共有キーで到達した場合、解読及び/又は検証は失敗し得る。
種々の実施態様において、前記通信インターフェースは種々の代替物から選択することができる。例えば、通信インターフェースは、ローカル又は広域ネットワーク(例えばインターネット)に対するネットワークインターフェース、内部又は外部記憶部に対する記憶部インターフェース、キーボード等とすることができる。
当該ネットワークノードは、例えばマトリクスA、公開キー及び秘密キーマトリクス、並びに共有キー等の中間データを記憶するための電子記憶部を有することができる。該記憶部は、電子メモリ(例えば、フラッシュメモリ)、又は磁気メモリ(例えば、ハードディスク等)として実施化することができる。該記憶部は、一緒に記憶部を形成する複数の別個のメモリを有することができる。該記憶部は、例えばRAM等の一時的メモリとすることもできる。一時的記憶部の場合、該記憶部は、例えばオプションのネットワーク接続(別途示されていない)を介して取得すること等により、使用前に共通のパラメータを得るための何らかの手段を使用することができる。
典型的に、装置110及び210は、各々、装置110及び210に記憶された適切なソフトウェアを実行するマイクロプロセッサ(図1には別途示されていない)を有し、例えば、上記ソフトウェアはダウンロードされ及び/又は対応するメモリ(例えば、RAM等の揮発性メモリ又はフラッシュ等の不揮発性メモリ(別途示されていない))に記憶されたものであり得る。代わりに、装置110及び210は、全体として又は部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブルロジックで実施化することもできる。装置110及び210は、全体として又は部分的に、所謂特定用途向け集積回路(ASIC)、即ち特定の使用のために特化された集積回路(IC)として実施化することができる。例えば、斯かる回路は、例えばVerilog、VHDL等のハードウェア記述言語を用いて、CMOSで実施化することができる。
一実施態様において、ネットワークノードは、通信インターフェース回路、共有マトリクス回路、秘密キーマトリクス回路、公開キーマトリクス回路及び共有キー回路を有する。これら回路は、本明細書に記載した対応するユニットを構成する。これら回路はプロセッサ回路及び記憶回路とすることができ、該プロセッサ回路は該記憶回路において電子的に表された命令を実行する。
プロセッサ回路は、分散態様で、例えば複数の副プロセッサ回路として実施化することができる。記憶部は、複数の分散された副記憶部に跨がり分散させることができる。当該メモリの一部又は全ては、電子メモリ、磁気メモリ等とすることができる。例えば、当該記憶部は揮発性及び不揮発性部分を有することができる。該記憶部の一部は読み出し専用とすることができる。当該回路は、FPGA又はASIC等とすることもできる。
図2は、電子キー交換方法の実施態様の一例を概略的に示す。該方法は、イニシエータノード110又はレスポンダノード210等の第1電子ネットワークノードにより実行することができる。
方法400は、
- 第1電子ネットワークノードと第2電子ネットワークノードとの間にデジタル通信を配するステップ(410)と、
- 共有マトリクス(A)を得るステップ(420)であり、該共有マトリクスは通信インターフェースを介して前記第2電子ネットワークノードと共有され、該共有マトリクスAにおけるエントリは整数、好ましくは第1モジュラスqによるモジュロの整数であり及び/又は該共有マトリクス(A)のエントリは多項式であり、該共有マトリクス(A)を得るステップが、
- 前記第2電子ネットワークノードと共有される1以上の選択パラメータを得るステップと、
- 共有プールから整数、多項式及び/又は多項式係数を選択するステップであって、該共有プールは前記第2電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び/又は多項式を有し、該選択するステップは1以上の選択関数に従って実行され、選択関数は前記共有プールからの整数、多項式及び/又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、選択関数により割り当てられる特定の整数、多項式又は多項式係数が前記選択パラメータに依存するステップと、
を有するステップと、
- 秘密キーマトリクス(S)を発生するステップ(430)であって、該秘密キーマトリクスにおけるエントリが第1モジュラス(q)によるモジュロの整数及び/又は既約多項式(f)によるモジュロの整数多項式であるステップと、
- 公開キーマトリクス(P)を、
- 前記第1モジュラス(q)によるモジュロ及び/又は前記既約多項式(f)によるモジュロの前記共有マトリクス(A)と前記秘密キーマトリクス(S)との間のマトリクス積を計算し(442)、マトリクス積を取得し、及び前記マトリクス積のエントリにノイズを加える(444)、
ことにより発生するステップ(440)と、
- 前記第1電子ネットワークノードの前記公開キーマトリクスを前記第2電子ネットワークノードに送信するステップ(452)と、
- 前記第2電子ネットワークノードの公開キーマトリクス(P)を受信するステップ(454)と、
- 生キーを、前記受信された前記第2電子ネットワークノードの公開キーマトリクスと前記第1電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積の前記第2モジュラス(p)によるモジュロとして計算するステップ(460)と、
を有する。
当該第1電子ネットワークノードがイニシエータモードに従って動作している場合、該第1電子ネットワークノードは以下の更なる要素を実行する:
- 前記第2電子ネットワークノードの調整データ(h)を受信するステップ(472)、及び
- 共有キーを、前記受信された調整データ及び前記生キーに調整関数(rec)を適用することにより計算するステップ(482)。
当該第1電子ネットワークノードがレスポンダモードに従って動作している場合、該第1電子ネットワークノードは以下の更なる要素を実行する:
- 前記共有キー及び調整データを前記生キーから得るステップ(474)、及び
- 前記調整データを第1電子ネットワークノードに送信するステップ(484)。
当業者にとり明らかなように、当該方法を実行する多数の異なる方法が可能である。例えば、上記ステップの順序は変更することができ、幾つかのステップは並行して実行することができる。更に、ステップの間に他の方法ステップを挿入することもできる。該挿入されるステップは、本発明に記載されるような当該方法の改良を表すことができ、又は当該方法とは無関係であり得る。例えば、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
本発明による方法は、プロセッサシステムに方法400を実行させるための命令を備えたソフトウェアを用いて実行することができる。ソフトウェアは、システムの特定の副主体により行われるステップのみを含むことができる。ソフトウェアは、ハードディスク、フロッピーディスク、メモリ、光ディスク等の適切な記憶媒体に記憶することができる。ソフトウェアは有線で、無線で又は例えばインターネット等のデータネットワークを用いて伝送することができる。ソフトウェアは、ダウンロードのために及び/又はサーバ上での遠隔使用のために利用可能にすることができる。本発明による方法は、当該方法を実行するようにプログラマブルロジック(例えば、フィールドプログラマブルゲートアレイ(FPGA))を構成するように配されたビットストリームを用いて実行することができる。
本発明は、本発明を実施させるよう構成されたコンピュータプログラム、特に担体上又は内のコンピュータプログラムにも及ぶと理解される。該プログラムは、ソースコード、オブジェクトコード、中間ソースコード及び部分的にコンパイルされた形態等のオブジェクトコードの形態とすることができ、又は本発明による方法の実施化に使用するのに適した如何なる他の形態とすることもできる。コンピュータプログラム製品に関する実施態様は、前述した方法の少なくとも1つにおける処理ステップの各々に対応するコンピュータ実行可能な命令を有する。これらの命令は、サブルーチンに分割することができ、及び/又は静的に若しくは動的にリンクされ得る1以上のファイルに記憶することができる。コンピュータプログラム製品に関する他の実施態様は、前述したシステム及び/又は製品の少なくとも1つにおける手段の各々に対応するコンピュータ実行可能な命令を有する。
図3aは、コンピュータプログラム1020を含む書込可能部分1010を備えたコンピュータ読取可能な媒体1000を示し、該コンピュータプログラム1020はプロセッサシステムに一実施態様による暗号処理、例えばキー共有方法を実行させるための命令を有する。コンピュータプログラム1020は、コンピュータ読取可能な媒体1000上に、該コンピュータ読取可能な媒体1000の物理的マークとして又は磁化により具現化することができる。しかしながら、如何なる他の好適な具現化も同様に考えられる。更に、ここではコンピュータ読取可能な媒体1000は光ディスクとして示されているが、該コンピュータ読取可能な媒体1000は、ハードディスク、固体メモリ、フラッシュメモリ等の如何なる好適なコンピュータ読取可能な媒体とすることもでき、記録不可能な又は記録可能なものとすることもできる。コンピュータプログラム1020は、プロセッサシステムに前記キー共有方法400又は一実施態様による他の暗号処理を実行させる命令を有する。
図3bは、例えば1以上の暗号処理を実施化するための一実施態様によるプロセッサシステム1140の概略図を示す。該プロセッサシステムは、1以上の集積回路1110を有する。該1以上の集積回路1110のアーキテクチャは、図3bに概略的に示されている。回路1110は、一実施態様による方法を実行する及び/又はそのモジュール若しくはユニットを実施化するためのコンピュータプログラム要素を実行する処理ユニット1120(例えば、CPU)を有する。回路1110はプログラムコード、データ等を記憶するためのメモリ1122を有する。メモリ1122の一部は読取専用とすることができる。回路1110は、例えば、アンテナ、コネクタ又は両方等の通信要素1126を有することができる。回路1110は、当該方法において定義された処理の一部又は全てを実行するための専用の集積回路1124を有することができる。プロセッサ1120、メモリ1122、専用のIC1124及び通信要素1126は、相互接続部1130(例えば、バス)を介して相互に接続することができる。プロセッサシステム1110は、アンテナ及び/又はコネクタを各々用いて接触型及び/又は無接触型通信を行うように構成することができる。
例えば、一実施態様において、ネットワークノードはプロセッサ回路及びメモリ回路を有することができ、プロセッサ回路はメモリ回路に記憶されたソフトウェアを実行するように構成される。例えば、該プロセッサ回路は、インテルのCore i7プロセッサ、ARM Cortex-R8等とすることができる。一実施態様において、該プロセッサ回路はARM Cortex M0とすることができる。当該メモリ回路は、ROM回路又は不揮発性メモリ(例えば、フラッシュメモリ)とすることができる。該メモリ回路は、揮発性メモリ、例えばSRAMメモリとすることができる。後者の場合、検証装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
尚、請求項において括弧内に示される如何なる符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形の使用は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは1つの同一品目のハードウェアにより具現化することができる。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これら手段の組合せを有利に使用することができないということを示すものではない。
請求項において、括弧内の符号は例示的実施態様の図面における符号又は実施態様の式を示し、かくして、当該請求項の理解容易性を高める。これらの符号は当該請求項を限定するものと見なしてはならない。
100 キー共有ネットワーク
110 イニシエータ(開始者)タイプのネットワークノード
120 通信インターフェース
130 共有マトリクスユニット
131 共有プール
140 秘密キーマトリクスユニット
150 公開キーマトリクスユニット
160 共有キーユニット
162 生のキー
164 調整データ(h)
166 共有キー
210 レスポンダ(応答者)タイプのネットワークノード
220 通信インターフェース
230 共有マトリクスユニット
240 秘密キーマトリクスユニット
250 公開キーマトリクスユニット
260 共有キーユニット
262 生のキー
264 調整データ(h)
266 共有キー
1000 コンピュータ読取可能な媒体
1010 書込可能部分
1020 コンピュータプログラム
1110 集積回路
1120 処理ユニット
1122 メモリ
1124 専用の集積回路
1126 通信エレメント
1130 相互接続部
1140 プロセッサシステム

Claims (20)

  1. 暗号処理のための第1電子ネットワークノードであって、該第1電子ネットワークノードは、
    第2電子ネットワークノードとのデジタル通信のための通信インターフェースと、
    プロセッサ回路と、
    を有し、該プロセッサ回路が、
    共有マトリクス(A)を取得し、ここで、該共有マトリクス(A)は前記通信インターフェースを介して前記第2電子ネットワークノードと共有され、該共有マトリクス(A)におけるエントリは整数であり、及び/又は該共有マトリクス(A)のエントリは多項式であり、該共有マトリクス(A)を取得する動作は、
    前記第2電子ネットワークノードと共有される1以上の選択パラメータを得る動作と、
    共有プールから整数、多項式及び/又は多項式係数を選択する動作であって、該共有プールは前記第2電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び/又は多項式を有し、該選択する動作は1以上の選択関数に従って実行され、1つの選択関数は前記共有プールからの整数、多項式又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、1つの選択関数により割り当てられる特定の整数、多項式又は多項式係数が当該選択パラメータに依存する動作と、
    を有し、
    秘密キーマトリクス(S ,S )を発生し、ここで、該秘密キーマトリクスにおけるエントリは整数及び/又は整数多項式であり、
    公開キーマトリクス(P)を、
    前記共有マトリクス(A)と前記秘密キーマトリクス(S ,S )との間のマトリクス積を計算し、マトリクス積を取得し、及び該マトリクス積にノイズを追加する、
    ことにより発生し、
    前記第1電子ネットワークノードの前記公開キーマトリクスを前記第2電子ネットワークノードに送信する、
    第1電子ネットワークノード。
  2. 前記共有マトリクス(A)におけるエントリは第1モジュラス(q)によるモジュロの整数であり、及び/又は前記共有マトリクス(A)のエントリは第1モジュラス(q)によるモジュロ及び既約多項式(f)によるモジュロの整数多項式であり、前記秘密キーマトリクスにおけるエントリは前記第1モジュラス(q)によるモジュロの整数、及び/又は前記第1モジュラス(q)によるモジュロ及び前記既約多項式(f)によるモジュロの整数多項式であり、該秘密キーマトリクスが前記第1モジュラス(q)によるモジュロ、及び/又は前記第1モジュラス(q)及び前記既約多項式(f)によるモジュロで計算される、
    請求項1に記載の第1電子ネットワークノード。
  3. 新たなキー交換毎に異なる共有マトリクス(A)を取得する、
    請求項1又は2に記載の第1電子ネットワークノード。
  4. 前記共有マトリクス及び共有プールは整数又は多項式を有し、前記選択関数は前記共有プールから整数又は多項式を選択し、前記共有プールが前記共有マトリクスより少ないエントリを有し、又は
    前記共有マトリクスは多項式を有する一方、前記共有プールは整数を有し、前記選択関数は前記共有プールから多項式係数を選択し、前記共有プールが前記共有マトリクスにおけるエントリの数の既約多項式の次数マイナス1の倍数より少ないエントリを有する、
    請求項1から3の何れか一項に記載の第1電子ネットワークノード。
  5. 前記共有プールはマスタマトリクス(Amasterであり、ランダムシードを発生すると共に前記通信インターフェースを介して該ランダムシードを他方のノードに送信し、前記第1及び第2電子ネットワークノードは前記ランダムシードを用いて決定論的擬似乱数発生器にシードを供給し、前記共有プールを該決定論的擬似乱数発生器の出力から発生する、
    請求項1から4の何れか一項に記載の第1電子ネットワークノード。
  6. 前記共有マトリクスにおけるエントリ及び前記共有プールにおけるエントリは第1モジュラス(q)によるモジュロの整数であり、
    前記共有マトリクスにおけるエントリは既約多項式(f)によるモジュロの整数多項式である一方、前記共有プールにおけるエントリは前記第1モジュラス(q)によるモジュロの整数であり、又は
    前記共有マトリクスにおけるエントリは整数マトリクスである一方、前記共有プールにおけるエントリが前記第1モジュラス(q)及び前記既約多項式(f)によるモジュロの多項式である、
    請求項1から5の何れか一項に記載の第1電子ネットワークノード。
  7. 前記共有マトリクスにおけるエントリは組に分割され、各組に関し選択関数が前記共有プールの少なくとも一部を前記選択パラメータの少なくとも一部に依存して当該組にマッピングする、
    請求項1から6の何れか一項に記載の第1電子ネットワークノード。
  8. 前記組は前記共有マトリクスの行若しくは列に対応し、若しくは
    前記組は前記共有マトリクスのブロックに対応し、及び/又は
    前記組が等しい大きさを有する、
    請求項7に記載の第1電子ネットワークノード。
  9. 前記選択関数が入力として選択パラメータ及び前記共有マトリクスのエントリ又はエントリの係数を索引するインデックスを取ると共に、出力として前記共有プールにおけるインデックスを生成する、
    請求項1から8の何れか一項に記載の第1電子ネットワークノード。
  10. 前記選択関数が前記共有プールの連続する系列のエントリを前記共有マトリクスの行又は列における連続する系列の要素にマッピングする、
    請求項1から9の何れか一項に記載の第1電子ネットワークノード。
  11. 前記選択関数が、選択パラメータrに依存して、前記共有プールにおける該共有プールの大きさによるモジュロのインデックスr~(r+k-1)のエントリを、前記共有マトリクスの行又は列にマッピングし、ここで、kは該共有マトリクスの大きさであり、又は
    前記選択関数が、選択パラメータr及びsに依存して、前記共有プールにおける該共有プールの大きさによるモジュロのインデックス(r+Prf(s,j))のエントリを、前記共有マトリクスの行又は列におけるインデックスjのエントリにマッピングし、ここで、Prfはsをシードとすると共にインデックスjを入力とする擬似ランダム関数を示す、
    請求項1から10の何れか一項に記載の第1電子ネットワークノード。
  12. 前記暗号処理はキー交換(KEX)プロトコルであり、前記プロセッサ回路は、
    前記第2電子ネットワークノードの公開キーマトリクス(P)を受信し、及び
    生キーを、前記第2電子ネットワークノードの受信された公開キーマトリクスと前記第1電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算し、
    前記第1電子ネットワークノードが、更に、
    前記第2電子ネットワークノードの調整データ(h)を受信し、及び
    共有キーを、前記受信された調整データ及び前記生キーに調整関数(rec)を適用することにより計算する、
    又は
    前記第1電子ネットワークノードが、更に、
    前記共有キー及び調整データを前記生キーから調整データを取得し、及び
    前記調整データを前記第2電子ネットワークノードに送信する、
    請求項1から11の何れか一項に記載の第1電子ネットワークノード。
  13. 前記共有マトリクス(A)のエントリは多項式であり、既約多項式がx+1、x-1又は(x-1)/(x-1)である、
    請求項1から12の何れか一項に記載の第1電子ネットワークノード。
  14. 前記プロセッサ回路は前記共有マトリクス(A)の拡張共有マトリクスを0より大きい次数の多項式エントリを循環マトリクスにより置換することにより計算し、該拡張共有マトリクスが第1モジュラス(q)によるモジュロの整数をエントリとして有すると共に、前記共有マトリクス(A)の列及び行の数の既約多項式の次数倍に等しい数の列及び行を有する、
    請求項1から13の何れか一項に記載の第1電子ネットワークノード。
  15. 前記マトリクス積にノイズを追加する処理が、
    前記マトリクス積におけるエントリを第2モジュラス(p)まで下方スケーリングする処理であって、スケーリングされたエントリは前記第2モジュラス(p)で乗算し、第1モジュラス(q)により除算し、最も近い整数に丸められたスケーリングされていないエントリに等しく、前記第2モジュラス(p)は前記第1モジュラス(q)より小さく、生キーを前記第2電子ネットワークノードの受信された公開キーマトリクスと前記第1電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する処理が前記第2モジュラスによるモジュロである処理、又は
    前記マトリクス積における1以上又は全ての要素のためのノイズ要素をノイズ分布から選択すると共に該ノイズ要素を前記マトリクス積における前記1以上又は全ての要素に追加する処理であって、前記ノイズ要素が平均0のガウス分布から選択された係数を有する処理、
    を有する、
    請求項1から14の何れか一項に記載の第1電子ネットワークノード。
  16. 前記秘密キーマトリクス(S,S)が候補秘密キーマトリクスから一様にランダムに選択され、及び/又は
    前記秘密キーマトリクスにおける要素の係数が絶対値で限界により制限され、例えば前記限界は2であり又は前記限界は1であり、後者は符号付き二進に相当し、及び/又は
    前記秘密キーマトリクス(S,S)の列及び/又は行が固定された又は制限されたハミング重み(h)を有する、
    請求項1から15の何れか一項に記載の第1電子ネットワークノード。
  17. 前記共有マトリクス(A)はkに等しい少なくとも1つのディメンションを有し、オプションとしてkxkの正方マトリクスであり、
    前記第1電子ネットワークノードの秘密キーはn及び
    Figure 0007208987000049
    のディメンションを有し、
    前記第2電子ネットワークノードの秘密キーは
    Figure 0007208987000050
    及びnのディメンションを有し、
    Figure 0007208987000051
    及び
    Figure 0007208987000052
    はnより小さく、例えば
    Figure 0007208987000053
    及びnは1であるか又は1より大きい、
    請求項1から16の何れか一項に記載の第1電子ネットワークノード。
  18. 前記プロセッサ回路が、
    前記共有マトリクスにおける全ての整数、多項式及び/又は多項式係数を前記共有プールから選択し、又は
    前記共有マトリクスにおける整数、多項式及び/又は多項式係数の一部を前記共有プールから選択すると共に、該共有マトリクスの残りの部分を発生し、又は
    前記共有マトリクスにおける全ての整数、多項式及び/又は多項式係数を前記共有プールから選択すると共に、該共有マトリクスにおける前記整数、多項式及び/又は多項式係数の一部を交換関数に従って置換する、
    請求項1から17の何れか一項に記載の第1電子ネットワークノード。
  19. 第1電子ネットワークノードのための電子暗号処理方法であって、
    前記第1電子ネットワークノードと第2電子ネットワークノードとの間にデジタル通信を配するステップと、
    共有マトリクス(A)を取得するステップであって、該共有マトリクスは通信インターフェースを介して前記第2電子ネットワークノードと共有され、該共有マトリクス(A)におけるエントリは整数であり、及び/又は該共有マトリクス(A)のエントリは多項式であり、該共有マトリクス(A)を取得するステップが、
    前記第2電子ネットワークノードと共有される1以上の選択パラメータを得るステップと、
    共有プールから整数、多項式及び/又は多項式係数を選択するステップであって、該共有プールは前記第2電子ネットワークノードと共有されると共に前記共有マトリクスのエントリにおいて使用するための複数の整数及び/又は多項式を有し、該選択するステップは1以上の選択関数に従って実行され、1つの選択関数は前記共有プールからの整数、多項式及び/又は多項式係数を前記共有マトリクスにおけるエントリに割り当て、1つの選択関数により割り当てられる特定の整数、多項式又は多項式係数が当該選択パラメータに依存するステップと、
    を有する、取得するステップと、
    秘密キーマトリクス(S ,S )を発生するステップであって、該秘密キーマトリクスにおけるエントリが整数及び/又は整数多項式である、発生するステップと、
    公開キーマトリクス(P)を、
    前記共有マトリクス(A)と前記秘密キーマトリクス(S ,S )との間のマトリクス積を計算し、マトリクス積を取得し、及び該マトリクス積におけるエントリにノイズを追加する、
    ことにより発生するステップと、
    前記第1電子ネットワークノードの前記公開キーマトリクスを前記第2電子ネットワークノードに送信するステップと、
    を有する、方法。
  20. プロセッサシステムに請求項19に記載の方法を実行させるための命令を表す一時的又は非一時的データを有する、コンピュータ読取可能な媒体。
JP2020521366A 2017-10-17 2018-10-12 更新可能な共有マトリクスを備える暗号装置 Active JP7208987B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17196926.4 2017-10-17
EP17196926.4A EP3474484A1 (en) 2017-10-17 2017-10-17 Cryptographic device with updatable shared matrix
PCT/EP2018/077823 WO2019076737A1 (en) 2017-10-17 2018-10-12 CRYPTOGRAPHIC DEVICE WITH SHARED MATRIX WHICH CAN BE UPDATED

Publications (3)

Publication Number Publication Date
JP2020537191A JP2020537191A (ja) 2020-12-17
JP2020537191A5 JP2020537191A5 (ja) 2021-11-18
JP7208987B2 true JP7208987B2 (ja) 2023-01-19

Family

ID=60138257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020521366A Active JP7208987B2 (ja) 2017-10-17 2018-10-12 更新可能な共有マトリクスを備える暗号装置

Country Status (8)

Country Link
US (1) US11212099B2 (ja)
EP (2) EP3474484A1 (ja)
JP (1) JP7208987B2 (ja)
CN (1) CN111492615B (ja)
BR (1) BR112020007373A2 (ja)
MX (1) MX2020003689A (ja)
RU (1) RU2020115996A (ja)
WO (1) WO2019076737A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2752697C1 (ru) * 2017-10-17 2021-07-30 Конинклейке Филипс Н.В. Криптографическое устройство с изменяемой конфигурацией
EP3754896A1 (en) * 2019-06-18 2020-12-23 Koninklijke Philips N.V. Authenticated key agreement
US11784825B2 (en) * 2019-09-26 2023-10-10 Visa International Service Association Lattice based signatures with uniform secrets
GB2587438A (en) * 2019-09-30 2021-03-31 Governing Council Univ Toronto Key generation for use in secured communication
US11153080B1 (en) * 2020-07-29 2021-10-19 John A. Nix Network securing device data using two post-quantum cryptography key encapsulation mechanisms
KR20220055079A (ko) * 2020-10-26 2022-05-03 삼성에스디에스 주식회사 NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법
CN112765551B (zh) * 2021-01-21 2024-05-07 中国科学院重庆绿色智能技术研究院 一种双重约化的矩阵乘法的分块参数空间优化方法
JP7402191B2 (ja) 2021-03-03 2023-12-20 Kddi株式会社 乗算装置、乗算方法及び乗算プログラム
CN112910933B (zh) * 2021-05-07 2021-07-13 鹏城实验室 认证方法、认证设备以及验证设备
WO2024103153A1 (en) 2022-11-15 2024-05-23 Quantum Bridge Technologies Inc. System and method for distribution of key generation data in a secure network

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004201292A (ja) 2002-12-03 2004-07-15 Matsushita Electric Ind Co Ltd 鍵共有システム、共有鍵生成装置及び共有鍵復元装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621227B2 (en) * 2010-12-28 2013-12-31 Authernative, Inc. System and method for cryptographic key exchange using matrices
EP2837128B1 (en) * 2012-04-12 2019-02-27 Jintai Ding New cryptographic systems using pairing with errors
JP2016526851A (ja) * 2013-07-12 2016-09-05 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 暗号鍵を共有するためのシステム
IN2013MU02907A (ja) * 2013-09-06 2015-07-03 Tata Consultancy Services Ltd
CN103490901B (zh) * 2013-09-30 2016-07-27 广东南方信息安全产业基地有限公司 基于组合密钥体系的密钥生成和发放方法
US9223720B2 (en) * 2013-12-13 2015-12-29 Oracle International Corporation Systems and methods for rapidly generating suitable pairs of hash functions
WO2015184991A1 (en) * 2014-06-04 2015-12-10 Jintai Ding Improvements on cryptographic systems using pairing with errors
US9577897B2 (en) * 2015-02-20 2017-02-21 Adobe Systems Incorporated Providing visualizations of event sequence data
CN105930916A (zh) * 2016-04-07 2016-09-07 大连理工大学 一种基于并行模块化神经网络的副产煤气实时预测方法
US10097351B1 (en) * 2016-09-15 2018-10-09 ISARA Corporation Generating a lattice basis for lattice-based cryptography
US9698986B1 (en) * 2016-09-23 2017-07-04 ISARA Corporation Generating shared secrets for lattice-based cryptographic protocols
CN106357410B (zh) * 2016-10-10 2019-10-01 中山大学 一种在没有单向陷门的格签名上构建阈下信道的方法
EP3373505A1 (en) 2017-03-06 2018-09-12 Koninklijke Philips N.V. Device and method for sharing a matrix for use in a cryptographic protocol

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004201292A (ja) 2002-12-03 2004-07-15 Matsushita Electric Ind Co Ltd 鍵共有システム、共有鍵生成装置及び共有鍵復元装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BHATTACHARYA, S. et al.,spKEX: An optimized lattice-based key exchange,2017年07月25日,pp.1-25,Cryptology ePrint Archive, Paper 2017/709, [online], [令和4年10月14日検索],インターネット<URL:https://eprint.iacr.org/2017/709>
清藤 武暢 ほか,量子コンピュータの解読に耐えうる暗号アルゴリズム「格子暗号」の最新動向,金融研究所ディスカッション・ペーパー・シリーズ ,日本銀行,2015年07月07日,No. 2015-J-9,pp.1-39

Also Published As

Publication number Publication date
CN111492615B (zh) 2023-08-29
US11212099B2 (en) 2021-12-28
EP3474484A1 (en) 2019-04-24
MX2020003689A (es) 2020-08-03
RU2020115996A3 (ja) 2022-01-12
EP3698513B1 (en) 2021-12-08
US20200304305A1 (en) 2020-09-24
RU2020115996A (ru) 2021-11-18
JP2020537191A (ja) 2020-12-17
BR112020007373A2 (pt) 2020-09-29
CN111492615A (zh) 2020-08-04
WO2019076737A1 (en) 2019-04-25
EP3698513A1 (en) 2020-08-26

Similar Documents

Publication Publication Date Title
JP7208987B2 (ja) 更新可能な共有マトリクスを備える暗号装置
JP6849860B2 (ja) 格子暗号法のために構成可能な装置
JP6720424B1 (ja) 鍵共有デバイス及び方法
JP7019730B2 (ja) キー交換デバイス及び方法
EP3020158A1 (en) Key agreement device and method
WO2016091790A1 (en) Public-key encryption system
EP3547603A1 (en) Configurable device for lattice-based cryptography
CN112997448A (zh) 具有减小的公钥大小的公钥/私钥系统
Terada et al. Password-based authenticated key exchange from standard isogeny assumptions
CA2742530C (en) Masking the output of random number generators in key generation protocols
Partala Semantically secure symmetric encryption with error correction for distributed storage
RU2558621C2 (ru) Способ шифрования сообщения, представленного в виде битовой строки

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211007

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230106

R150 Certificate of patent or registration of utility model

Ref document number: 7208987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150