JP2020537450A - 格子暗号法のために構成可能な装置 - Google Patents

格子暗号法のために構成可能な装置 Download PDF

Info

Publication number
JP2020537450A
JP2020537450A JP2020521409A JP2020521409A JP2020537450A JP 2020537450 A JP2020537450 A JP 2020537450A JP 2020521409 A JP2020521409 A JP 2020521409A JP 2020521409 A JP2020521409 A JP 2020521409A JP 2020537450 A JP2020537450 A JP 2020537450A
Authority
JP
Japan
Prior art keywords
matrix
network node
key
shared
parameter
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.)
Granted
Application number
JP2020521409A
Other languages
English (en)
Other versions
JP6849860B2 (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
Priority claimed from EP18165330.4A external-priority patent/EP3547603A1/en
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2020537450A publication Critical patent/JP2020537450A/ja
Application granted granted Critical
Publication of JP6849860B2 publication Critical patent/JP6849860B2/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/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)
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

幾つかの実施態様は、暗号処理用に構成された第1電子ネットワークノード110に関するものである。該第1電子ネットワークノードは困難度パラメータd及び構造パラメータnを入力として受信すると共に共有マトリクスAを得るように構成され、該共有マトリクスAは、通信インターフェースを介して第2ネットワークノードと共有され、該共有マトリクスAにおけるエントリは第1モジュラスqによるモジュロで選択され、該共有マトリクスAは、構造パラメータnにより除算された困難度パラメータdに等しい大きさkの正方マトリクスkxkであり、該共有マトリクスAにおけるエントリは構造パラメータnと等しい次数の既約多項式fによるモジュロの多項式であり、当該暗号処理は該共有マトリクスを使用する。

Description

本発明は、暗号処理用に構成されたネットワークノード、暗号処理方法及びコンピュータ読取可能な媒体に関する。
暗号法において、キー共有(合意)プロトコルは共通キーを未だ共有していないかも知れない2以上の当事者が斯かるキーに合意することができるプロトコルである。好ましくは、両当事者は、何れの当事者もキーの選択を強制することができないようにして結果に影響を与えることができる。斯かる2つの当事者の間の全通信を盗聴する攻撃者は、該キーに関して何も知るべきでない。それでも、同通信を調べる攻撃者は何も分からない又は僅かしか分からないものの、当事者自身は共有キーを導出することができる。キー共有プロトコルは、例えば、通信を安全にする(例えば、当事者間のメッセージを暗号化及び/又は認証する)ために有用である。
当事者間での安全な通信を容易化するために、キー共有プロトコルは、時には、更に暗号キー交換(KEX)及び暗号キーカプセル化(KEM)方式に分割される。
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である。
上記方式の各々は、例えば、エラーを伴う学習(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等の方式におけるRは、“環”又は多項式タイプの構成を指す。
このことは、幾つかの問題を課す。先ず第1に、これらシステムの各々を実施することは大きな投資となろう。これら方式の各々はコード化されねばならないのみならず、各々は安全性を損ない得る重大なバグを含まないことを保証するためにデバッグされねばならない。他方、全ての方式又は少なくとも大部分を実施しないことも、特定の危険性を伴う。上記問題の1つ(例えば、RLWE又はモジュール格子)が破られた場合、対応する方式は完全に破られる。破られた場合に或るタイプの方式から他のものへ変更することができるように、何らかのアップグレード経路が存在することが望ましい。
参考文献
[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]の各々は参照により本明細書に含まれる。
前記方式の各々はコード化されねばならないのみならず、各々は安全性を損ない得る重大なバグを含まないことを保証するためにデバッグされねばならない。他方、全ての方式又は少なくとも大部分を実施しないことも、特定の危険性を伴う。上記問題の1つ(例えば、RLWE又はモジュール格子)が破られた場合、対応する方式は完全に破られる。破られた場合に或るタイプの方式から他のものへ変更することができるように、何らかのアップグレード経路が存在することが望ましい。
発明者は、多数の分類の格子暗号法をパラメータ表記する単一の方式を定義することが可能であることを理解した。僅かな入力パラメータのみを取り込むことが、格子暗号法の性質を変化させる。例えば、請求項に記載された暗号装置は、使用される暗号法のタイプを一緒に指定するのに十分な困難度パラメータd及び構造パラメータnを受信することができる。困難度パラメータd及び構造パラメータnの両方は、正の整数である。上記困難度パラメータを増加させることにより、当該問題の構造は同一に留まるが、一層大きくなり、従って一層困難な実体化が用いられる。困難度パラメータは、時には、セキュリティパラメータとも称される。実施態様において、困難度パラメータは、基となる格子の大きさ(dimension)に関係する。困難度パラメータの一層大きな値は基となる格子の一層大きな大きさにつながり、従って、攻撃者には解くのが一層困難な問題となる。前記構造パラメータは、当該システムにおける代数構造の量に関係する。該構造パラメータの一層大きな値は、一層多い代数構造を意味する。該構造パラメータの一層大きな値は攻撃するのが一層容易であり得ると推測される。格子が一層多い規則性を有するからである。例えば、格子問題を解くための漸進的に良い方法を見付ける調査を進める場合、ユーザは困難度パラメータを増加させることにより応じるであろう。一方、特定のタイプの格子問題を解くための急進的に良い方法を見付ける調査を進める場合、ユーザは構造パラメータを減少させることで応じるであろう。
例えば、一実施態様においては、複数の基となる問題、例えばRLWE、RLWR、モジュールRLWE、モジュールPLWR並びにLWE及びLWRを効率的に実体化することができる方式を定義される。このことは、該方式が2つの異なる仕様(一方が問題1のための、他方が問題2のための)に依存することを意味するのではなく、両問題を実体化するために同一のアルゴリズムを使用することができ、唯一の違いは入力パラメータであることを意味する。利点は:
− 同一の方式による多数の可能性のあるアプリケーションのカバレッジ;
− 実施化費用の最少化;
− コードサイズの低減;
− “弱い”問題に依存することが最早安全ではなく、“より強い”問題に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに対する準備;
を含む。
当該暗号装置は電子装置である。例えば、該暗号装置はモバイル電子装置、例えばモバイルフォンであり得る。例えば、該暗号装置は、セットトップボックス、スマートカード、コンピュータ等であり得る。ここに記載される暗号処理を実行する方法は、広範囲の実用的アプリケーションにおいて適用することができる。このような実用的アプリケーションは、金融アプリケーション、秘密の又は認証された通信等を含む。
本発明による方法は、コンピュータ上でコンピュータにより実施される方法として、専用のハードウェアにおいて、又は両者の組合せで実施化することができる。本発明による方法のための実行可能なコードは、コンピュータプログラム製品に記憶することができる。コンピュータプログラム製品の例は、メモリ装置、光記憶装置、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、当該コンピュータプログラム製品は、該プログラム製品がコンピュータ上で実行された場合に本発明による方法を実行するためのコンピュータ読取可能な媒体上に記憶された非一時的プログラムコードを有する。
好ましい実施態様において、当該コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行された場合に本発明による方法の全ステップを実行するよう適合化されたコンピュータプログラムコードを有する。好ましくは、該コンピュータプログラムはコンピュータ読取可能な記憶媒体上で具現化される。
本発明の他の態様は、上記コンピュータプログラムをダウンロードのために利用可能にする方法を提供する。この態様は、該コンピュータプログラムが例えばアップルのアップルストア、グーグルのプレイストア又はマイクロソフトのウインドウズストアにアップロードされ、且つ、該コンピュータプログラムが斯様なストアからダウンロード可能である場合に使用される。
本発明の更なる詳細、態様及び実施態様は、図面を参照して、例示のみとして後述される。図面における各要素は簡略化及び明瞭化のために図示され、必ずしも実寸通りに描かれてはいない。各図において、既に記載された要素に対応する要素は、同一の符号を有し得る。
図1は、キー共有ネットワークの実施態様の一例を概略的に示す。 図2は、電子キー交換方法の実施態様の一例を概略的に示す。 図3aは、一実施態様によるコンピュータプログラムを有する書込可能部分を備えたコンピュータ読取可能な媒体を概略的に示す。 図3bは、一実施態様によるプロセッサシステムの図を概略的に示す。 図4aは、公開キー解読ノードの実施態様の一例を概略的に示す。 図4bは、公開キー暗号化ノードの実施態様の一例を概略的に示す。
本発明は多数の異なる形態の実施態様が可能であるが、1以上の特定の実施態様が図面に示されると共に本明細書で詳細に説明されている。ここで、本開示は本発明の原理の例示と見なされるべきであり、本発明を図示及び記載された特定の実施態様に限定することを意図するものではないと理解される。以下においては、理解のために、実施態様の要素は動作時において説明されている。しかしながら、各要素は、これら要素により実行されるものとして説明されている機能を実行するように構成されていることは明らかであろう。更に、本発明は実施態様に限定されるものではなく、本発明は本明細書に記載され又は互いに異なる従属請求項に記載された各及び全ての新規なフィーチャ又はフィーチャの組み合わせに存するものである。
キー交換(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の多項式であるkモジュールを組み合わせることのみに依存する。
spKEXはLWRのみに依存する。
FrodoはLWEのみに依存する。
上記全ての問題が関係するが、これら問題の幾つかは特別な構造に依存する点で一層危険であると考えられる。一方、環構造の使用は一層小さなメッセージを可能にする。現在の処、このような構造を利用する攻撃は知られていないが、このような攻撃は将来には知られたものとなろう。この場合、これらの特別な問題(例えば、RLWE又はモジュールLWE)に基づく全ての方式は破られるであろう。かくして、代替策の必要性が存在する。このように、幾つかは一層危険な問題に基づくが一層良好な性能特性を備え、幾つかは良く理解された問題に基づくが余り良好な性能は備えない複数の方式を実施化及び試験する必要がある。
発明者は、上述した格子問題が関係することを理解し、RLWE、RLWR、モジュールLWE、モジュールWR並びにLWE及びLWRを含む全ての斯様な問題を実体化することができる方式を見出した。以下では、異なる格子が困難度パラメータd及び構造パラメータnに基づいて形成される暗号法に関して幾つかの例が記載される。
この方式においてパラメータを変更することにより、異なる基となる問題に基づくと共に異なる性能特性を示すプロトコル(KEX、KEM、PKE等)を実体化することができる。
この方式は、異なるセキュリティ/性能要求を持つ複数のアプリケーションに適用することができる。例えば、極秘文書はLWEに対する方式設定を用いることにより暗号化することができる一方、資源制約された無線通信を介するキー共有は環LWRパラメータに基づくものとすることができる。当該方式は更なる利点を有する。即ち、第1に、該方式はコードサイズを低減し、従って、より少ないメモリしか必要とされない。第2に、コードの検討のための努力が最少化される。単一のアルゴリズムしか検討及び検証されることを要さないからである。最後に、このような方式は、“弱い”問題(例えば、RLWEに基づいた)に依存することが最早安全ではなく、“より強い”問題(例えば、LWEに基づいた)に依存する新たなアルゴリズムが必要とされる可能性のある移行シナリオに備えることができる。該方式は、一方が問題1に関するものであり他方が問題2に関するものである等の2つの異なる問題に依存するのではなく、同一のアルゴリズムが、唯一の差違が入力パラメータである異なる問題を実体化するために使用される。
核となる発明は、大きさ(ディメンション)dの格子問題を用い、ここで、dは入力パラメータである。該格子ディメンションは、RLWE、RLWR、モジュールLWE、モジュールWR、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 2020537450
上記から、nの選択に依存して、基となる問題はRLWR (n=dの場合)又はLWR (n=1)となることが分かる。両ケースにおいて、基となる格子問題はディメンションdを有する。現状技術は上記アルゴリズムの2つの異なる実施化、即ち表2、を有することに注意されたい。公開キーb及びuが計算される場合にLWRにおいて必要とされる丸めを無視していることに注意されたい。これは説明に必須でないからである。また、どの様にキー調整を実施することができるかの詳細も無視している(文献参照)。
Figure 2020537450
表において、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に要約された暗号プロトコルにおけるイニシエータの第1ステップは、後述するPST.CPA-KEM.Keygeneration若しくはPST.NR.CCA-KEM.Keygen又はこれらの何らかの変形(例えば、キーカプセル化メカニズムのキー発生処理)を有することができる。同様に、レスポンダのステップは、後述するPST.CPA-KEM.Encapsulate若しくはPST.NR.CCA-KEM.Encapsulate又はこれらの何らかの変形(例えば、キーカプセル化メカニズムのキーカプセル化処理)を有することができる。イニシエータの第2ステップは、後述するPST.NR.CPA-KEM.Decapsulate、PST.NR.CCA-KEM.Decapsulate又はこれらの何らかの変形(例えば、キーカプセル化メカニズム(KEM)のキーカプセル除去処理)を有することができる。この場合、当該暗号処理はキー交換又はキーカプセル化であり得る。
他の実施態様において、表1に要約された暗号プロトコルにおけるイニシエータの第1ステップは、後述するPST.NR.CPA-PKE.Keygeneration()又はこれの何らかの変形(例えば、公開キー暗号化方式のキー発生処理)を有することができる。レスポンダのステップは、後述するPST.NR.CPA-PKE.Encryptwithrho()若しくはPST.NR.CPA-PKE.EncryptO又はこれらの何らかの変形(例えば、公開キー暗号化の暗号化処理)を有することができる。イニシエータの第2ステップは、後述するPST.NR.CPA-PKE.DecryptO又はこれの何らかの変形(例えば、公開キー暗号化方式の解読処理)を有することができる。この場合、当該暗号処理は公開キー暗号化であり得る。公開キー暗号化において、上記レスポンダのステップ及びイニシエータの第2ステップは、例えば複数のメッセージを暗号化及び解読するために繰り返すことができ、特に、イニシエータの第2ステップは、複数の装置上で複数回実行することができ、かくして、装置はイニシエータの第2ステップを該イニシエータの第1ステップが前に実行していなくても実行することができるようにする。
更なる実施態様が、以下に図1を参照して詳細に説明される。
表1で説明されたプロトコルにおいては、LWR問題において定義される丸めを実行する関数であるround()を参照している。特に、丸めはスケーリングされていないエントリをpで乗算すると共にqにより除算し、整数(例えば、最も近い整数)に丸め、丸められたエントリのモジュロpを取るステップを有し、このことは該エントリに実効的にノイズを追加する。
[基準実施化(その1)]
表1の方式の基準実施化は、公開キー要素(b及びu)及び生キー(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
上記ルーチンにおいては、表1におけるようなモジュロp及びqを用いる丸めステップを含めていないことに注意されたい。しかしながら、このことは、本発明にとり必須ではない。この方式のLWEバージョンを実施していたとしたら、丸め処理はZ_q[x]/f(x)におけるノイズ(例えば、平均0及び小さな標準偏差のガウスノイズ)の追加により置換することができる。
[生キーの計算]
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を書いていることに注意されたい。丸めを伴う学習を考察しているからである。本発明のエラーを伴う(環)学習バージョンの場合、丸め処理を実行する代わりにノイズを追加し、計算はモジュロqであろう。
[基準実施化(その2)]
プロトコル(KEX、KEM、PKE等)におけるイニシエータ及びレスポンダに関連する秘密は、Zq[x]/f(x)にd/nの元を含む単一ベクトル以上のものであり得るが、これらベクトルのn_bar及びm_barを含み得る。例えば、秘密sは秘密マトリクス(例えば、秘密キーマトリクス)であり得、公開キーbは公開マトリクス(例えば、公開キーマトリクス)であり得、秘密rは秘密マトリクス(例えば、秘密キーマトリクス)であり得、公開キーuは公開マトリクス(例えば、公開キーマトリクス)であり得る。十分なキービットを発生するために、1より大きなn_bar及びm_barを有することが好ましい。このように、基準実施化における当該方式の全ての処理は、Zq[x]/f(x)内に元がある2つのマトリクスの乗算として表すことができる。特に、bを計算するためにマトリクス積はA及びsの間で計算することができ、uを計算するためにマトリクス積はA及びrの間で計算することができ、rkrを計算するためにマトリクス積はb及びrの間又はb及びsの間で計算することができる。
このためには、以下の汎用関数が必要とされ:
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 2020537450
として表すことができる。
この事実を用いて、公開キー計算を実施化する場合、常にn=1(LWR)に対してd2の異なる元及びn=d(RLWR)に対してdの異なる元を含む入力マトリクスA(例えば、拡張共有マトリクスとして表される)を仮定することができる。言い換えると、該拡張共有マトリクスは、困難度パラメータdと等しい複数の数の列及び行を有することができ、多項式エントリを前記循環マトリクスと置換することにより計算することができる。マトリクス乗算を実行する場合のアルゴリズム間の唯一の違いは、レスポンダのためのマトリクス乗算がn=1に対しては左から、n=dに対しては右からとなることである。言い換えると、構造パラメータ及び/又は困難度パラメータの異なる値に対して、共通のマトリクス乗算部分を使用することができる。
他の例として、多項式の係数を行ベクトルとして編成することができ、
Figure 2020537450
を使用する。
[公開キー計算の最適化された実施化(その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 2020537450
であり、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 2020537450
[最適化された実施化(その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 2020537450
更に、多項式乗算に類似するマトリクスを得るために2つの置換が適用されることを考える。
Figure 2020537450
これが与えられたとして、生キーを得るための最適化されたアルゴリズムは以下のように動作する:
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で動作することができ、ここで、|は連鎖(concatenation)を表す。これは、メモリ要件を増加させるが、モジュール式削減を回避する。
この方法は他の環を効率的な方法で実施することを可能にすることができることも注記する。例えば、環Zq[x]/x^n+1を用いた場合、v_starは:
v_star = v|-v
として得られるであろう。確かに、この場合、
Figure 2020537450
を有するであろう。従って、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')である。この場合、構造パラメータnは素円分環を定義する素数n'より1小さいものとすることができ、かくして、構造パラメータより小さい次数の整数多項式を暗号処理に使用することができる。
これらの環を、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であり、構造パラメータnは素数n’より1小さいものとすることができ、かくして、構造パラメータより小さい次数の整数多項式を当該暗号処理において使用することができる。
素の円分多項式、xn-1 + xn-2+・・・+ x + 1、が使用される場合、演算は依然として環x^n-1において実行することができることも注記する。両環は項x-1が相違するだけであるからである。この目的のためには、一方の環から他方の環へx-1による乗算により値を持ち上げることだけが必要とされる。演算が実現されたら、同じ量により除算することにより、前の環に戻ることができる。
[性能の観点からのパラメータ選択の理論的解釈]
RLWEに関して既知の幾つかの計算的最適化は、本明細書に提示される幾つかの実施態様には適用することができない。特に、NTTをNTRU環に適用することはできない。代替例は、Zq[x]/f(x)(ここで、f(x)=x^n+1)における演算をNTTにより実行することができるように、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、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は構造パラメータであり、xn-1は該構造パラメータと等しい次数の既約多項式(reduction polynomial)であり、かくして、多項式を該構造パラメータより小さい次数で使用することができる。n=1を許容し、従って、Rn = Zである。記号の濫用により、各正の整数aに関し、集合{O,1, K , 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と定義する。従って、Compress関数は、ノイズを例えばマトリクス(例えば、マトリクス積)のエントリに追加するために使用することができる。例えば、スケーリングされていない値xにノイズを追加することは、スケーリングされていないエントリをモジュラスbで乗算し、モジュラスaにより除算し、整数(例えば、最も近い整数)に丸め、該丸められたエントリの第2モジュラスによるモジュロを取ることを有することができる。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 2020537450
に関して、
Figure 2020537450
を係数のうちの最大の絶対値として、即ち、
Figure 2020537450
として定義する。a,b∈Rに対して、
Figure 2020537450
を有することを理解することは容易である。
同様に、VがRnにおける多項式のマトリクスである場合、
Figure 2020537450
はVにおける多項式の全ての係数のうちの最大のものである。最後に、μ≦ab及びC∈Zaxbに対して、ベクトルSampleμ,a,b(C)∈Zp μはCにおけるμの予め指定された位置における値を有する。
[1.4 CPA公開キー暗号化]
この節では、非環ケースに関する公開キー暗号化を説明する。本出願のCPA安全公開キー暗号化方式を、以下のアルゴリズムで説明する。これらのアルゴリズムは、種々のシステムパラメータ、即ち、正の整数
Figure 2020537450
を知っていることを仮定する。これらアルゴリズムは、マトリクスA∈Zq nxnに対する、並びに
Figure 2020537450
マトリクスS及び
Figure 2020537450
マトリクスR(共に、Tn(h)に全列を有する)に対するランダムな選択を含む。即ち、S及びRの両者は、各列がハミング重みhを有する三つ組みマトリクスである。Aに対する選択を明示的にするために、システムパラメータはランダム性空間Σ及びマッピングf:Σ→Σq nxnを含む。同様に、S及びRに対する選択を明示的にするために、{0,1 }rs及び{0,1 }rRに各々割り当てると共に三つ組み
Figure 2020537450
及び
Figure 2020537450
を各々発生し、各列がハミング重みhを有する関数fs及びfRを定義する。集合AにaがAから均一に引き出されることをa←−Aにより示す。
第1アルゴリズムは、
Figure 2020537450
における公開キーpk、及び秘密キー
Figure 2020537450
、即ち、各列がハミング重みhを有する三つ組み
Figure 2020537450
マトリクスを発生する。
Figure 2020537450
次のアルゴリズムは、公開キーpk、メッセージm及びランダム性変数ρから暗号文Cを発生する。
Figure 2020537450
当該暗号化アルゴリズムは、公開キーpk及びメッセージmから暗号文Cを発生する。
Figure 2020537450
当該解読アルゴリズムは秘密キーsk及び暗号化文Cから平文メッセージm(に関する推定)を取り出す。
Figure 2020537450
[1.5 非環ケースのためのCPAキーカプセル化メカニズム]
以下の3つのアルゴリズムは、CPA安全キーカプセル化メカニズムを定義するために前節で定義された公開キー暗号化方式を利用する。該メカニズムはハッシュ関数H:{O,1}*→{0,1}μBを採用する。更なるハッシュ関数G:{O,1}*→{0,1}κを有し、カプセル化アルゴリズムのステップ4及びカプセル除去アルゴリズムのステップ2においてHの代わりにGを適用することもできることを注記する。
Figure 2020537450
アルゴリズム5に示されるように、キーカプセル化メカニズムのためのキー発生は、公開キー暗号化方式(例えば、PST.NR.CPA-PKE)のキー発生を実行することにより実行することができる。
Figure 2020537450
アルゴリズム6に示されるように、キーカプセル化は、共有キーであり得るmを、公開キー暗号化方式(例えば、PST.NR.CPA-KE)を用いて暗号化することを有することができる。このアルゴリズムにおいて、mのビットはキーカプセル化メカニズムの結果Kを導出するために暗号ハッシュ関数に入力される(ここでは、cと組み合わせて)。例えばキー導出関数に対する入力として共有ビットを使用する代替的方法は、以下に説明する。
Figure 2020537450
アルゴリズム7に示されるように、キーカプセル除去は、平文mを得るために公開キー暗号化方式(例えば、PST.NR.CPA-PKE)の暗号文を解読することを有することができ、ここで、mは共有キーとすることができ、mはカプセル化を実行するノードとカプセル除去を実行するノードとの間で共有される。ここでも、mは、アルゴリズム7に示されるように暗号ハッシュにより又は以下に説明するようなキー導出関数等の他の技術を用いてキー導出関数の結果Kを導出するために使用することができる。
注釈、アルゴリズム6及び7において、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は等しく、アルゴリズム8による秘密キーは該秘密キー並びに公開キー及びランダム文字列(z)を有することに注意されたい。
Figure 2020537450
アルゴリズム9の出力Cは、アルゴリズム3と等しい入力及びRに対する同一の選択の場合、アルゴリズム3からの暗号文(U,v)を有する。キーKも有する。
Figure 2020537450
等しい秘密キーS及び等しい入力(U,v)によれば、m’の値はアルゴリズム3に与えられたものと等しくなる。NR CCAアルゴリズムにおけるランダム選択がNRCPA-PKEアルゴリズムのものと等しく、且つ、該NRCPA-PKEアルゴリズムがアルゴリズム9のライン1で選択されたメッセージmを正しく取り出した場合、m = m'となると結論する。その場合、アルゴリズム10のライン2で計算される(K^’,ρ',d')はアルゴリズム9のライン2における(K^,ρ,d)に等しくなり、従って、アルゴリズム10及びアルゴリズム9のライン5で計算されるKの値は等しくなる。アルゴリズム10のライン5における条件が満足されない場合、出力はランダムキーとなる。
Figure 2020537450
注釈、アルゴリズム9及び10において、(σ,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 2020537450
である。また、マトリクスの乗算*を以下のように定義する。
Figure 2020537450
とすると共に
Figure 2020537450
とする(例えば、
Figure 2020537450
)。
Figure 2020537450
マトリクスBT*Rは、
Figure 2020537450
と定義される。環及び非環ケースを区別するために、ブールパラメータringを使用する。
Figure 2020537450
上述したように、本発明の実施態様は、使用されるべき暗号法のタイプを指定するための構造パラメータ及び困難度パラメータに基づくものであり得る。本アルゴリズムにおいてじゃ、入力パラメータnが出力値pk及びskの大きさを示すために使用され、かくして、前記困難度パラメータを該nの値として使用することができる。同様に、本アルゴリズムの環パラメータは、当該アルゴリズムの環バージョンが環Rn = Z[x]/(xn -1)で使用されるか(従って、構造パラメータが困難度パラメータnに等しい場合に真に設定され得る)、又は該アルゴリズムの非環バージョンが使用されるか(従って、構造パラメータが1に等しい場合に偽に設定され得る)を示すために使用される。
環及び非環ケースの両方において、当該アルゴリズムは、共有マトリクスであり得る、エントリが構造パラメータより小さい次数の整数多項式である構造パラメータにより除算された困難度パラメータに等しい大きさのマトリクスa又はAを使用する。特に、環ケースにおいて、前述したように、構造パラメータは困難度パラメータと等しくすることができ、その場合、マトリクスaは、アルゴリズム11に示されたように、長さnのベクトルに対応する(ベクトルによる多項式の前述した識別を介して)次数nの単一多項式を含むことができる。非環ケースにおいて、構造パラメータは1に等しくなり得、かくして、マトリクスAは困難度パラメータに等しい大きさのものとなり、1より小さな次数の多項式、例えば、整数を含む。両ケースにおいて、a又はAは値σから関数fを用いて発生することにより得られ、σはシードであり得、fを評価することは決定論的擬似乱数発生器を評価することを有し得る。
アルゴリズム11において、秘密キーマトリクスであり得るマトリクスSは、ドメイン
Figure 2020537450
から、即ち三つ組み
Figure 2020537450
マトリクスであるエントリで、発生され、前記構造パラメータより小さな次数の整数多項式を含むマトリクスに対応する(ベクトルによる多項式の前述した識別を介して)。
次に、当該アルゴリズムは、公開キーマトリクスであり得るマトリクスBを、a又はA(共有マトリクスであり得る)とS(秘密キーマトリクスであり得る)との間のマトリクス積を計算することにより発生する。このような実施態様において、前述したように、公開キー計算a*S又はASの最適化された実施化を用いることができる。環ケースにおいて、多項式乗算演算a*Sは、nxnマトリクス及びZqからのエントリによる長さnのエントリのベクトルの乗算として表すことができる。非環ケースにおいても、ASは前記困難度パラメータに等しい大きさのAによるマトリクス乗算である。結果として、公開キー演算の最適化された実施化が用いられる幾つかの実施態様においては、構造パラメータ及び/又は困難度パラメータの異なる値に関して共通のマトリクス乗算部分を要求することができる。これに関係なく、アルゴリズム11を使用する実施態様は、第1モジュラスによるモジュロ及び構造パラメータに等しい次数の既約多項式によるモジュロのS(秘密キーマトリクスであり得る)及びa又はA(共有マトリクスであり得る)の間のマトリクス積を計算すると共に該マトリクス積におけるエントリにノイズを追加することによりB(公開キーマトリクスであり得る)を発生することができ、本実施態様においてノイズを追加することは、スケーリングされていない各エントリをpにより乗算し、qにより除算し、整数(例えば、最も近い整数)に丸め、丸められたエントリのpによるモジュロを取ることを有する。
最後に、当該アルゴリズムは値(σ,B)及びSを返し、かくして、結果としての公開キー暗号化処理において、公開キーはa又はAを得ることができる値σ及びBを有することができ、秘密キーはSを有することができる。
次のアルゴリズムは,公開キーpk、メッセージm及びランダム性変数ρから第1暗号文部分及び第2暗号文部分を有する暗号文Cを発生する。
Figure 2020537450
示されたように、当該アルゴリズムは、先ず、共有マトリクスであり得る値a又はAを、決定論的擬似乱数発生器の出力から、pkからの値σをシードとして使用して発生することより得る。従って、当該公開キー暗号化方式の公開キーは、共有マトリクスが得られるべきシードを有することができる。また、該アルゴリズムは、秘密マトリクスであり得る値R=fR(ρ)を発生する。アルゴリズム11におけるのと同様に、a又はAは、構造パラメータにより除算された困難度パラメータに等しい大きさの、エントリが構造パラメータより小さな次数の多項式である正方マトリクスであり、Rはエントリが構造パラメータより小さな次数の整数多項式であるマトリクスである。また、アルゴリズム12において、第1暗号文部分であり得るマトリクスUは、a又はA及びRの間のマトリクス積のモジュロq及び困難度パラメータに等しい次数の既約多項式によるモジュロを計算することにより;及び、次いで、スケーリングされていない各エントリをpにより乗算し、qにより除算し、整数(例えば、最も近い整数)に丸め、丸められたエントリのpによるモジュロを取ることを有するノイズの追加により計算される。
次に、当該アルゴリズムは、公開キーマトリクスであり得るpkからの値Bを使用する。従って、当該公開キー暗号化方式の公開キーは、当該ネットワークノードのpkに対応する公開キーマトリクスを更に有し得る。これから、生キーであり得る値BT*R(環ケースの場合)又はBTR(非環ケースの場合)、即ち、B及びRの間のマトリクス積(ここで、B及びRは構造パラメータより小さな次数の多項式と見ることができる)が計算される。注釈したように、幾つかの実施態様において、この計算には公開キーマトリクスに関するのと同一の置換アイデアを適用することができ、従って、構造パラメータ及び/又は困難度パラメータの異なる値に対して共通の乗算部分を使用することができる。
最後に、当該アルゴリズムは、前記値BT*R又はBTRから及びメッセージmから第2暗号文部分であり得る値vを計算し、これは、例えば平文メッセージ、又はPST.CPA-KEM若しくはPST.NR.CCA-KEM等のカプセル化メカニズムにおいて使用される場合は後の通信で使用されるキーを導出することができる2つの当事者間で共有される共有キーであり得る。該値vは当該アルゴリズムからUと一緒に返され、従って、これら値を一緒に当該所与のpkに対応するネットワークノードに送信することができる。
下記の暗号化アルゴリズムは公開キーpk及びメッセージmから暗号文Cを発生する。このアルゴリズムはアルゴリズム12を直接呼び出し、かくして、アルゴリズム13を用いる実施態様は、同様に、前述したように困難度パラメータ及び構造パラメータを受信し、共有マトリクスを得、秘密マトリクスを発生し、第1暗号文部分を発生し及び第2暗号文部分を計算し、アルゴリズム13に基づく公開キー暗号化処理の実施態様において、公開キーは、このように、共有マトリクスを得ることができる公開キーマトリクス及びデータを有することができ、秘密キーは秘密キーマトリクスを有することができる。
Figure 2020537450
PST.CPA-KEM.Encapsulate()等のアルゴリズムは、キー交換又はキーカプセル化メカニズムの前後関係においてPST.CPA-PKE.Encrypt又はPST.CPA-PKE.Encryptwithrhoを使用することができる。この場合、Uはカプセル化を実行する当事者の公開キーマトリクスの役割を果たすことができ、Rは対応する秘密キーマトリクスの役割を果たすことができる。同様に、vはカプセル化装置及びカプセル除去装置が同一の共有キーに到達するための調整データの役割を果たすことができる。
解読アルゴリズムは、秘密キーsk及び暗号文Cから平文メッセージm(の推定)を回復する。
Figure 2020537450
前記アルゴリズムと同様に、アルゴリズム14は入力skの大きさを示す値n及び環又は非環変形が使用されるべきかを示す値ringを入力パラメータとして受信する。例えば、アルゴリズム14を使用する実施態様において、nは困難度パラメータに対応し得る一方、ringは困難度パラメータが構造パラメータと等しいか否かを示すことができる。該アルゴリズムは、エントリ(ベクトル及び前述した次数nの多項式の間の一致を介して)が構造パラメータより小さな次数の整数多項式であるマトリクスSを入力として得、ここで、Sはノード自体の秘密キーマトリクスであり得る。該アルゴリズムは第1暗号文部分であり得るマトリクスUを更なる入力として得ると共に、ST*U (環ケースの場合)又はSTU(非環ケースの場合)を計算し、これは生キーであり得、S及びUの間のマトリクス積として計算される(両マトリクスは最大で構造パラメータの次数の多項式を含むマトリクスと見なされる)。該アルゴリズムは、次いで、該マトリクス積(例えば、値ST*U又はSTU)及び入力として受信された他の値v(第2暗号文部分であり得る)を用い、Sample及びCompress手順を使用することによりメッセージ
Figure 2020537450
を得る。PST.CPA-PKE.Encryptwithrhoにおけるのと同様に、メッセージ
Figure 2020537450
は、後の通信のためのキーが以下に詳述される方法の1つにより導出されるキー交換メカニズムにおける共有キーを有することができる。
前述したように、PST.CPA-PKE.Decryptは、PST.NR.CPA-KEM.Decapsulate等のアルゴリズムによりキーカプセル化又はキー交換の前後関係において使用することができる。この場合、Uはカプセル化を実行する当事者の公開キーマトリクスであり得る(例えば、暗号化PST.CPA-PKE.Encrypt)一方、vは両ノードが
Figure 2020537450
に関して同一の値に到達するための調整データであり得、これは、メッセージ、共有キー又は後の通信における共有キーが導出されるデータであり得る(例えば、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
図1は、キー共有ネットワーク100の実施態様の一例を概略的に示す。キー共有は暗号処理の一例である。該キー共有は複数の要素、例えば、共有マトリクス、秘密キーマトリクス、公開キーマトリクスの構築、マトリクス乗算、ノイズの追加等を利用し、これらは例えば公開キー暗号化とうの他のタイプの暗号処理と共通する。一実施態様において、装置100は、例えば前述したような又は参考文献に示したような他のタイプの暗号処理のために再構成することができる。一実施態様において、装置100は複数のタイプの暗号処理のために再構成することができる。何れの場合においても、装置100は多数の異なるレベルの構成及び困難度が利用可能であるという利点を有する。例えば、当該暗号処理は、キー交換(KEX)プロトコル、キーカプセル化メカニズム(KEM)、公開キー暗号化(PKE)、デジタル署名の何れかとすることができる。一実施態様において、第1ネットワークノードは複数の異なる暗号処理から或る暗号処理を選択する選択子を受信するように構成することができる。一例としてではあるが、下記の実施態様は装置100がキー共有のために構成されると仮定する。
図1に示されるものは当該システムにおける2つのネットワークノード、即ち、イニシエータ型のネットワークノード110及びレスポンダ型のネットワークノード210である。当該キー共有システムの一実施態様において、ノードの数は2より大きく、例えば1000ノードより多い(例えば、10ノードより多い)等のように更に大幅に大きくすることができる。
イニシエータ型のネットワークノードとレスポンダ型ネットワークノードとの間の違いは、調整データ(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の間で共有されることを保証する多数のやり方が存在する。
共有マトリクスユニット130及び共有マトリクスユニット230は、困難度パラメータd及び構造パラメータnを入力として受信するよう構成される。図1においては、困難度パラメータd及び構造パラメータnが符号131により概略的に示されている。両ユニットが同じ困難度パラメータd及び構造パラメータnを受信することに注意されたい。これらの数d及びnは、マトリクスAの要素(成分)の大きさ及びタイプを決定する。装置110及び210は、暗号処理を選択する選択子を受信するようにも構成される。
例えば、困難度パラメータd及び構造パラメータnは、APIを介して(例えば、装置110及び210を例えば保護された通信のために使用するアプリケーションにより)設定することができる。該アプリケーションは、必要とされる困難度及び構造を決定し、装置110及び/又は210に例えば関数呼び出し(ファンクションコール)により命令することができる。
共有マトリクスAにおけるエントリは、好ましくは、第1モジュラスqによるモジュロ、構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで選択される。n=1の場合、エントリは整数であり、n>1なら、エントリは多項式である。第1モジュラスq及び既約多項式fも、ノード110及び210の間で共有される(例えば、通信される又は予め定められる)。共有マトリクスAは、例えば大きさkの正方マトリクスkxkである。行及び列の数kは構造パラメータnにより除算された困難度パラメータdに等しい。n=dの場合、マトリクスAは単一の多項式エントリを有する。既約多項式fに対する実際的選択は、例えば、xn + 1, xn -1又は(xn-1)/(x-1)= xn-1 + xn-2 + … + 1である。
大きさkを計算することができるように構造パラメータnが困難度パラメータdを分割することが好ましい。しかしながら、一実施態様において、kは構造パラメータnにより除算された困難度パラメータdを丸める(例えば、最も近い整数に丸める、切り上げる又は切り下げる)ことにより得られる。
一実施態様において、装置110及び210は異なる困難度パラメータd及び/又は異なる構造パラメータnを受信するように構成される。例えば、当該装置は、例えば或る上限までの及び/又は或る下限より大きな如何なる困難度パラメータdも許容することができる。更に、当該装置はn=1又はn=d、又は更に一般的にはdを分割し、且つ、1≦n≦dとなる如何なるnも許容することができる。
興味あることに、異なるパラメータが受信されたとしても、当該ノードは異なるパラメータ値に対して異なる実施化を有する必要はない。例えば、ノード110及び210は、構造パラメータn及び/又は困難度パラメータdの異なる値に対して共通のマトリクス乗算部を呼び出すように構成することができる。
一実施態様において、構造パラメータnは、n又はn+1が素数となるように限定されるが、これは必須ではない。一実施態様において、構造パラメータnは2の冪であり、第1モジュラスqは素数であるが、これも必須ではない。
例えば、当該ノードの一方(例えば、イニシエータノード110)は、例えば共有マトリクスユニット130において、ランダムにモジュロq及びモジュロfの要素のマトリクスAを選択することができる。この場合、エントリは通信ユニットを介して他のノードへ(例えば、共有マトリクスユニット230へ)送信することができる。この場合、後者の共有マトリクスユニット230は単に該マトリクスを受信し、記憶する。マトリクスAは、代わりにレスポンダノード210によっても選択することができ、イニシエータノード110に送信される。
当該2つのノードはマトリクスAを選択する際に協同することもできる。例えば、各ノードはエントリの幾つかを選択し、これを他方の側に送信することもできる。例えば、イニシエータノードは奇数のエントリを選択することができる一方、レスポンダノードは偶数エントリを選択することができる、等々である。このようにして、2つのノードの何れも、最終的マトリクスAに対する支配を有さない。例えば、2つのノードは、各々、完全なマトリクスAを選択し、該マトリクスを他方の側に伝達することができる。この後、2つのマトリクスはモジュロq及びfで加算することができる。当該マトリクスを送信する最後のノードに有利さを与えることを防止するために、選択されたマトリクスに対するコミットメントを該最後のノードにより最初に送信することができる。
完全なマトリクスAを送信するオーバーヘッドを低減する興味ある方法は、ランダムなシードを生成し、通信チャンネルを介して該ランダムシードを他方のノードに送信することである。該シードを受信した後、第1及び第2ネットワークノードは該シードを用いて前述した方法の何れかによりマトリクスAを発生することができる。同じランダムシードは決定論的擬似乱数発生器に種をまくために使用され、このことは該擬似乱数発生器の出力からマトリクス(A)を発生させる。上述したように、各ノードはシードを送信することができ(例えば、Aの異なる部分を発生するために)、又は2つのシードを組み合わせる(例えば、加算する又は排他的論理和をとる)ことができ、Aを発生するために該組み合わされたシードを用いることができる。
該シードは、例えば、更なる乱数発生器(例えば、真性乱数発生器)から選択することができる。当該ノードは、乱数のリストを伴って構成することもできる(例えば、製造時に)。この場合、当該ノードは、新たなマトリクスAが新たなキー共有のために発生される毎に上記リストから次の乱数を選択する。該乱数のリストが尽きたら、信頼の置けるソースからリストを補充することができる。
一実施態様において、Aの要素(元)はベクトルa_masterから選択される。一実施態様において、マトリクスAは各使用後に変更され(例えば、並び換えられ)、1以上のエントリを置換することができる。
イニシエータノード110は、秘密キーマトリクスユニット140を有する。レスポンダノード210は、秘密キーマトリクスユニット240を有する。秘密キーマトリクスユニット140は秘密キーマトリクスSIを発生するように構成され;秘密キーマトリクスユニット240は秘密キーマトリクスSRを発生するように構成される。当該秘密キーマトリクスにおけるエントリは、最大でnの次数の整数多項式である。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 2020537450
のマトリクスであり得る。
Figure 2020537450
及び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である場合、スケーリングされたエントリは「(p/q)x」として選択され、ここで、「」は最も近い整数を表す。スケーリング処理の後、秘密キーを公開キー及びマトリクス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)及び/又は第2モジュラス(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は、共有キー266を得ると共に生キー262から調整データ264を得、該調整データ264をイニシエータネットワークノード110に送信するように構成される。図1において、共有キーは生キー及び調整データから得られるが、これは必要ではなく、例えばレスポンダがキー交換をキーカプセル化(例えば、PST.CPA-KEM.Encapsulate又はPST.NR.CCA-KEM.Encapsulate)により実行する場合、調整データが生キー及び共有キーから得られることも可能である。調整データは、生キーにおける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は、電子キー交換方法の実施態様の一例400を概略的に示す。該方法は、イニシエータノード110又はレスポンダノード210等の第1電子ネットワークノードにより実行することができる。
方法400は、
− 第1ネットワークノードと第2ネットワークノードとの間にデジタル通信を配置するステップ(410)と、
− 困難度パラメータ(d)及び構造パラメータ(n)を入力として受信するステップ(415)と、
− 共有マトリクス(A)を得るステップ(420)であって、該共有マトリクスは通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は前記構造パラメータ(n)により除算された前記困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは前記構造パラメータ(n)より小さい次数の整数多項式であり、これら多項式の係数が好ましくは第1モジュラス(q)によるモジュロで選択されるステップと、
− 秘密キーマトリクス(S)を発生するステップであって、該秘密キーマトリクスのエントリが前記構造パラメータ(n)より小さな次数の整数多項式であるステップと、
− 公開キーマトリクス(P)を、
− 前記第1モジュラス(q)によるモジュロ及び前記構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロの前記共有マトリクス(A)と前記秘密キーマトリクス(S)との間のマトリクス積を計算し(442)、マトリクス積を取得し、及び前記マトリクス積のエントリにノイズを加える、
ことにより発生するステップ(440)と、
− 前記第1ネットワークノードの前記公開キーマトリクスを前記第2ネットワークノードに送信するステップ(452)と、
− 前記第2ネットワークノードの公開キーマトリクス(P)を受信するステップ(454)と、
− 生キーを、前記受信された前記第2ネットワークノードの公開キーマトリクスと前記第1ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算するステップ(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メモリとすることができる。後者の場合、検証装置は当該ソフトウェアを供給するように構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェース等を有することができる。
図4aは、公開キー解読ノード310の実施態様の一例を概略的に示す。該図は、困難度パラメータ及び構造パラメータ331、通信インターフェース320、秘密キーユニット340、メッセージ計算ユニット360、生キー362、第2暗号文部分364及びメッセージ366を含む。これらのユニットは、前記アルゴリズムPST.NR.CPA-PKE.Decrypt()に従って動作することができ、例えば、秘密キーユニット340はSを得ることができ、メッセージ計算ユニット360は
Figure 2020537450
を計算することができる。この図は、公開キー解読処理に対応する要素のみが示されていることを除き、図1に示したイニシエータ型のネットワークノード110と類似することに注意されたい。特に、アルゴリズムPST.CPA-KEM及びPST.NR.CCA-KEMに示されたように、ネットワークノード110は、公開キー発生アルゴリズム、例えばPST.NR.CPA-PKE.Keygeneration()及び公開キー解読、例えばPST.NR.CPA-PKE.Decrypt()アルゴリズムを利用してキー交換を実行することができる。図1において、この解読は、困難度パラメータ及び構造パラメータ131、通信インターフェース120、秘密キーユニット140、共有キーユニット160、生キー162、調整データ164及び共有キー166を伴う。図4aは、必ずしもキー発生を実行しないで解読を実行する公開キーネットワークノードを示し、従って、該ノードは図1からの解読に関係する要素のみを有する。即ち、要素331は要素131に対応することができ、要素320は要素120に対応することができ、要素340は要素140に対応することができ、要素360は要素160に対応することができ、要素362は要素162に対応することができ、要素364は要素164に対応することができ、要素366は要素166に対応することができる。該公開キー解読ノード310は解読の結果としてメッセージ366を得る一方、ネットワークノード110は共有キー166を得るが、これらの各結果を得るための処理は、実際には、両ケースにおいて同一であり得ることに注意されたい。
図4bは、公開キー暗号化ノード510の実施態様の一例を概略的に示す。この図は、困難度パラメータ及び構造パラメータ531;共有マトリクスユニット530;通信インターフェース520;秘密マトリクスユニット540;第1暗号文部分ユニット550;第2暗号文部分ユニット560;生キー562;メッセージ562;並びに第2暗号文部分564を含む。該暗号化ノード510は、困難度パラメータ及び構造パラメータ531を入力として受信し;共有マトリクス530を得;秘密マトリクスユニット540により秘密マトリクスを発生し;第1暗号文部分ユニット550により第1暗号文部分を発生し;及び第2暗号文部分ユニット560により第2暗号文部分564を発生し、後者は生キー562及びメッセージ566から計算される。例えば、これらのユニットは、先に詳述したように、アルゴリズムPST.NR.CPA-PKE.Encryptwithrho、PST.NR.CPA-PKE.Encrypt、PST.CPA-PKE.Encryptwithrho及びPST.CPA-PKE.Encryptのうちの1つに従って動作することができる。例えば、共有マトリクスユニット530はAを得ることができ、秘密マトリクスユニット540はRを発生することができ、第1暗号文部分ユニット550はUを発生することができ、第2暗号文部分ユニット560はvを計算することができる。この図は、図1に示されたレスポンダ型のネットワークノード210に類似し、特に、PST.CPA-KEM及びPST.NR.CCA-KEMに示されるように、該レスポンダノードはキー交換又はキーカプセル化において、実際に、公開キー暗号化ノード510により実行されるような公開キー暗号化を実行することができる。
以下の条文は請求項ではないが、想定される実施態様を含む。出願人は、これにより、本出願の又は本出願から導出される何らかの他の出願の手続きの間において斯かる条文、斯かる条文の組み合わせ及び/又は当該記載若しくは請求項から得られるフィーチャに対する新たな請求項が作成され得ることを告示するものである。
1.暗号処理のために構成された第1電子ネットワークノード(110)であって、該第1ネットワークノードは、
− 第2ネットワークノードとデジタル通信を行うように構成された通信インターフェース(120)と、
− プロセッサ回路と、
を有し、該プロセッサ回路は、
− 困難度パラメータ(d)及び構造パラメータ(n)を入力として受信し、
− 共有マトリクス(A)を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して第2ネットワークノードと共有され、該共有マトリクス(A)は構造パラメータ(n)により除算された困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数は好ましくは第1モジュラス(q)によるモジュロで選択され、
− 秘密キーマトリクス(S)を発生し、ここで、該秘密キーマトリクスのエントリは構造パラメータ(n)より小さい次数の整数多項式であり、
− 公開キーマトリクス(P)を、
− 共有マトリクス(A)と秘密キーマトリクス(S)との間のマトリクス積を第1モジュラス(q)によるモジュロ及び構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生し、及び
− 前記第1ネットワークノードの公開キーマトリクスを前記第2ネットワークノードに送信する、
ように構成される。
2.条文1に記載の第1電子ネットワークノード(110)であって、前記暗号処理はキー交換(KEX)プロトコルであり、前記プロセッサ回路は、
− 前記第2ネットワークノードの公開キーマトリクス(P)を受信し、
− 生キーを、前記第2ノードの受信された公開キーと前記第1ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する、
よう構成され、
前記第1ネットワークノードが、更に、
− 前記第2ネットワークノードの調整データ(h)を受信し、
− 共有キーを、前記受信された調整データ及び前記生キーに調整関数(rec)を適用することにより計算する、
ように構成されるか、又は
前記第1ネットワークノードが、更に、
− 前記生キーから調整データ及び前記共有キーを取得し、
− 前記調整データを前記第2ネットワークノードに送信する、
ように構成される。
3.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記暗号処理は、キー交換(KEX)プロトコル、キーカプセル化方法(KEM)、公開キー暗号化(PKE)及びデジタル署名の何れか1つである。
4.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記既約多項式はxn + 1、xn - 1又は(xn - 1)/(x - 1)である。
5.先行する条文の何れか1つに記載の第1ネットワークノードであって、
− 前記構造パラメータ(n)は、前記困難度パラメータ(d)を分割し、
− 前記共有マトリクス(k)の大きさは、前記構造パラメータ(n)により除算された前記困難度パラメータ(d)を丸める、例えば最も近い整数に丸める、切り上げる又は切り下げることにより得られる。
6.先行する条文の何れか1つに記載の第1ネットワークノードであって、
− 前記構造パラメータ(n)は、少なくとも1、最大で前記困難度パラメータ(d; 1 ≦ n ≦ d)であり、及び/又は
− 前記構造パラメータ(n)は素数であるように制限され、及び/又は
− 前記構造パラメータ(n)は2の冪であり、且つ、前記第1モジュラスは素数であり、及び/又は
− 前記構造パラメータ(n)は素数であるように制限され、且つ、前記第1モジュラスは素数であり、及び/又は
− 前記構造パラメータ(n)は素数であるように制限され、且つ、前記第1モジュラスは2の冪であり、及び/又は
− 前記構造パラメータ(n)は素数であるように制限され、前記第1モジュラスは2の冪であり、且つ、前記既約多項式は既約加群2である。
7.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記プロセッサ回路は0より大きい次数の多項式エントリを循環マトリクスで置換することにより共有マトリクス(A)の拡張共有マトリクスを計算するように構成され、該拡張共有マトリクスは前記困難度パラメータに等しい数の列及び行を有する。
8.条文7に記載の第1ネットワークノードであって、前記プロセッサ回路はdxdエントリを含む共有マトリクス(A)の拡張共有マトリクスを計算するように構成され、各エントリは整数であり、同一のプロセッサ回路が該拡張共有マトリクスの評価のため及び前記公開キーを1又は前記困難度パラメータ(d)に等しい構造パラメータ(n)で得るために使用される。
9.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記暗号処理は公開キー暗号化であり、前記共有マトリクス及び前記公開キーマトリクスは公開キーであり、前記秘密キーマトリクスは前記秘密キーである。
10.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記マトリクス積にノイズを追加する処理は、
− 前記マトリクス積におけるエントリを第2モジュラス(p)に縮小スケーリングする処理であって、スケーリングされたエントリは前記第2モジュラス(p)により乗算され、前記第1モジュラス(q)により除算され且つ最も近い整数に丸められたスケーリングされていないエントリに等しく、前記第2モジュラス(p)は前記第1モジュラス(q)より小さく、前記bound(s)は最大で前記第2モジュラス(p)であり、生キーを前記第2ノードの受信された公開キーと前記第1ネットワークノードの前記秘密キーマトリクスとの間のマトリクス積としての計算が前記第2モジュラス(p)によるモジュロで実施される処理、又は
− ノイズ分布から前記マトリクス積における1以上の又は全ての要素のためのノイズ要素を選択すると共に該ノイズ要素を前記マトリクス積における前記1以上の又は全ての要素に追加する処理であって、例えば、前記ノイズ要素が平均0のガウス分布から選択された係数を有する処理、
を有する。
11.先行する条文の何れか1つに記載の第1ネットワークノードであって、
− 前記秘密キーマトリクス(S,S)は候補秘密キーマトリクスから一様にランダムに選択され、及び/又は
− 前記秘密キーマトリクスにおける要素の係数は、bound(s)により絶対値に制限され、例えば、該制限は2であり(s=2)、又は該制限は1であり(s=1)、後者は符号付き二進に対応し、及び/又は
− 前記秘密キーマトリクス(S,S)の列及び/又は行は固定された若しくは制限されたハミング重み(h)を有する。
12.先行する条文の何れか1つに記載の第1ネットワークノードであって、前記秘密キーマトリクス(S,S)におけるエントリは不均一な確率分布から選択され、ゼロエントリの確率は非ゼロエントリの確率より大きい。
13.先行する条文の何れか1つに記載の第1ネットワークノードであって、新たなキー交換毎に、異なるマトリクス(A)及び/又は異なる秘密キーを得るように構成される。
14.先行する条文の何れか1つに記載の第1ネットワークノードであって、ランダムシードを発生すると共に前記通信チャンネルを介して該ランダムシードを他のノードに送信することにより共有マトリクス(A)を得るように構成され、前記第1及び第2ネットワークノードは前記ランダムシードを使用して決定論的擬似乱数発生器に種を蒔き、前記マトリクス(A)を該擬似乱数発生器の出力から発生する。
15.第1電子ネットワークノード(110)のための電子暗号処理方法であって、該方法は、
− 前記第1ネットワークノードと第2ネットワークノードとの間にデジタル通信を配するステップ(410)と、
− 困難度パラメータ(d)及び構造パラメータ(n)を入力として受信するステップ(415)と、
− 共有マトリクス(A)を得るステップ(420)であって、該共有マトリクスは通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は構造パラメータ(n)により除算された困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数が好ましくは第1モジュラス(q)によるモジュロで選択されるステップと、
− 秘密キーマトリクス(S)を発生するステップ(430)であって、該秘密キーマトリクスのエントリが構造パラメータ(n)より小さい次数の整数多項式であるステップと、
− 公開キーマトリクス(P)を、
− 共有マトリクス(A)と秘密キーマトリクス(S)との間のマトリクス積を第1モジュラス(q)によるモジュロ及び構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し(442)、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する(444)、
ことにより発生するステップ(440)と、
− 前記第1ネットワークノードの公開キーマトリクスを前記第2ネットワークノードに送信するステップ(452)と、
を有する。
本発明の一態様は、暗号処理のために構成された第1電子ネットワークノードであり、該第1ネットワークノードは、
− 第2ネットワークノードとデジタル通信を行うように構成された通信インターフェースと、
− プロセッサ回路と、
を有し、該プロセッサ回路は、
− 困難度パラメータ(d)及び構造パラメータ(n)を入力として受信し、
− 共有マトリクス(A)を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して第2ネットワークノードと共有され、該共有マトリクス(A)は構造パラメータ(n)により除算された困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数は好ましくは第1モジュラス(q)によるモジュロで選択され、
− 秘密マトリクス(S)を発生し、ここで、該秘密マトリクスのエントリは構造パラメータ(n)より小さい次数の整数多項式であり、
− 第1ネットワークノードの公開マトリクス(P)を、
− 共有マトリクス(A)と秘密マトリクス(S)との間のマトリクス積を第1モジュラス(q)によるモジュロ及び構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
ことにより発生し、及び
− 前記第1ネットワークノードの公開マトリクスを前記第2ネットワークノードに送信する、
ように構成される。このようなプロセッサ回路は、更に、
− 前記第2ネットワークノードの公開マトリクス(P)を受信し、
− 生キーを、前記第2ノードの受信された公開マトリクスと前記第1ネットワークノードの秘密マトリクスとの間のマトリクス積として計算する、
よう構成され、
前記第1ネットワークノードは、更に、
− 前記第2ネットワークノードの暗号材料を受信し、
− 第1ネットワークノードと第2ネットワークノードとの間の共有データを、前記受信された暗号材料及び前記生キーから計算する、
ように構成されるか、又は
前記第1ネットワークノードは、更に、
− 第1ネットワークノードと第2ネットワークノードとの間の共有データを得ると共に前記生キーから暗号材料を取得し、
− 前記暗号材料を前記第2ネットワークノードに送信する、
ように構成される。
例えば、前記秘密マトリクスは秘密キーマトリクスとすることができる(例えば、当該暗号処理がキー交換又はキーカプセル化メカニズムである場合)。第1ネットワークノードの公開マトリクス及び第2ネットワークノードの公開マトリクスの1以上は、公開キーマトリクスとすることができる(例えば、当該暗号処理がキー交換、キーカプセル化メカニズム又は公開キー暗号化である場合)。前記共有データは共有キー又は共有キーが導出されるデータとすることができ(当該暗号処理がキー交換又はキーカプセル化メカニズムである場合);又はメッセージとすることができる(例えば、当該暗号処理が公開キー暗号化である場合)。前記暗号材料は調整データとすることができ(当該暗号処理がキー交換又はキーカプセル化メカニズムである場合)、又は該暗号材料は暗号文部分とすることができる(当該暗号処理が公開キー暗号化、又は公開キー暗号化に基づくキー交換若しくはキーカプセル化である場合)。
上述した実施態様は本発明を限定するというより解説するものであり、当業者であれば多くの代替実施態様を設計することができることに注意すべきである。
尚、請求項において括弧内に示される如何なる符号も当該請求項を限定するものと見なしてはならない。動詞“有する”及びその活用形は、請求項に記載されたもの以外の要素又はステップの存在を排除するものではない。単数形の要素は、複数の斯様な要素の存在を排除するものではない。本発明は、幾つかの別個の要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実施化することができる。幾つかの手段を列挙する装置の請求項において、これら手段の幾つかは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 (19)

  1. 暗号処理のための第1電子ネットワークノードであって、該第1電子ネットワークノードは、
    第2ネットワークノードとのデジタル通信のための通信インターフェースと、
    プロセッサ回路と、
    を有し、該プロセッサ回路が、
    困難度パラメータ(d)及び構造パラメータ(n)を入力として受信し、
    共有マトリクス(A)を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は前記構造パラメータ(n)により除算された前記困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、これら整数多項式の係数は第1モジュラス(q)によるモジュロで選択され、
    秘密キーマトリクス(S)を発生し、ここで、該秘密キーマトリクスのエントリは前記構造パラメータ(n)より小さい次数の整数多項式であり、
    前記第1電子ネットワークノードの公開キーマトリクス(P)を、
    前記共有マトリクス(A)と前記秘密キーマトリクス(S)との間のマトリクス積を前記第1モジュラス(q)によるモジュロ及び前記構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
    ことにより発生し、及び
    前記第1電子ネットワークノードの公開キーマトリクスを前記第2ネットワークノードに送信する、
    第1電子ネットワークノード。
  2. 前記プロセッサ回路は、
    前記第2ネットワークノードの公開キーマトリクス(P)を受信し、及び
    生キーを、前記第2ノードの受信された公開キーマトリクスと前記第1電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算し、
    前記第1電子ネットワークノードが、更に、
    前記第2ネットワークノードの調整データ(h)を受信し、及び
    共有キー又はメッセージを、前記受信された調整データ及び前記生キーに調整関数(rec)を適用することにより計算する、
    又は
    前記第1電子ネットワークノードが、更に、
    共有キー又はメッセージを得ると共に前記生キーから調整データを取得し、及び
    前記調整データを前記第2ネットワークノードに送信する、
    請求項1に記載の第1電子ネットワークノード。
  3. 前記調整データが前記生キーから及び前記共有キー又はメッセージから得られる、
    又は
    前記共有キー及び調整データが前記生キーから得られる、
    請求項2に記載の第1電子ネットワークノード。
  4. 前記暗号処理が、キー交換(KEX)プロトコル、キーカプセル化メカニズム(KEM)、公開キー暗号化(PKE)及びデジタル署名の何れか1つである、請求項1から3の何れか一項に記載の第1電子ネットワークノード。
  5. 前記プロセッサ回路が暗号処理を複数の異なる暗号処理から選択する選択子を受信する、請求項1から4の何れか一項に記載の第1電子ネットワークノード。
  6. 前記既約多項式がxn+1又は(xn-1)/(x-1)である、請求項1から5の何れか一項に記載の第1電子ネットワークノード。
  7. 異なる困難度パラメータ(d)及び/又は異なる構造パラメータ(n)を受信し、前記構造パラメータ(n)及び/又は困難度パラメータ(d)の異なる値に対して共通のマトリクス乗算部分を呼び出す、請求項1から6の何れか一項に記載の第1電子ネットワークノード。
  8. 前記構造パラメータは、少なくとも1であって、最大で前記困難度パラメータである整数である、及び/又は
    前記構造パラメータは1に等しいか若しくは前記困難度パラメータに等しく、
    前記構造パラメータ+1は素数であることに制限され、前記第1モジュラスは素数であり、前記構造パラメータ+1は前記第1モジュラス−1を分割する、及び/又は
    前記構造パラメータ+1は素数であることに制限され、前記第1モジュラスは2の冪であり、前記既約多項式は既約なモジュロ2である、
    請求項1から7の何れか一項に記載の第1電子ネットワークノード。
  9. 前記プロセッサ回路は共有マトリクス(A)の拡張共有マトリクスを0より大きい次数の多項式エントリを循環マトリクスにより置換することにより計算し、該拡張共有マトリクスが前記困難度パラメータに等しい数の列及び行を有する、請求項1から8の何れか一項に記載の第1電子ネットワークノード。
  10. 前記暗号処理が公開キー暗号化又は公開キー発生であり、
    前記公開キーは前記第1電子ネットワークノードの公開キーマトリクス及び前記共有マトリクス又は該共有マトリクスが得られるシードを有し、前記秘密キーは前記秘密キーマトリクスを有し、又は
    前記公開キーは前記第2ネットワークノードの公開キーマトリクス及び前記共有マトリクス又は該共有マトリクスが得られるシードを有する、
    請求項1から9の何れか一項に記載の第1電子ネットワークノード。
  11. 前記マトリクス積のエントリにノイズを追加する処理は、スケーリングされていない該エントリを第2モジュラスで乗算し、前記第1モジュラスにより除算し、整数に丸め、及び該丸められたエントリの前記第2モジュラスによるモジュロを取る処理を有し、生キーを前記第2ノードの受信された公開キーマトリクスと前記第1電子ネットワークノードの秘密キーマトリクスとの間のマトリクス積として計算する処理が、前記第2モジュラス(p)によるモジュロで実行される、請求項1から10の何れか一項に記載の第1電子ネットワークノード。
  12. 前記秘密キーマトリクスにおける要素の係数は絶対値で1により制限され、列及び/又は行が固定された合計数の非ゼロ係数を有する、請求項1から11の何れか一項に記載の第1電子ネットワークノード。
  13. 前記秘密キーマトリクスが候補秘密キーマトリクスから一様にランダムに選択される、請求項1から12の何れか一項に記載の第1電子ネットワークノード。
  14. 新たな暗号処理毎に異なる共有マトリクス(A)を取得し及び/又は異なる秘密キーマトリクスを発生する、請求項1から13の何れか一項に記載の第1電子ネットワークノード。
  15. シードにより種を蒔かれた決定論的擬似乱数発生器の出力から該マトリクス(A)を発生することにより、前記共有マトリクス(A)を取得し、該共有マトリクスが前記通信インターフェースを介して前記ランダムなシードを送信することにより前記第2ネットワークノードと共有される、請求項1から14の何れか一項に記載の第1電子ネットワークノード。
  16. 公開キー暗号化処理のための第1電子ネットワークノードであって、
    第2ネットワークノードとのデジタル通信のための通信インターフェースと、
    プロセッサ回路と、
    を有し、該プロセッサ回路が、
    困難度パラメータ(d)及び構造パラメータ(n)を入力として受信し、
    共有マトリクス(A)を取得し、ここで、該共有マトリクスは前記通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は前記構造パラメータ(n)により除算された前記困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数は第1モジュラス(q)によるモジュロで選択され、
    秘密マトリクス(S_I)を発生し、ここで、該秘密マトリクスのエントリは前記構造パラメータ(n)より小さい次数の整数多項式であり、
    第1暗号文部分(P_I)を、
    前記共有マトリクス(A)と前記秘密マトリクス(S_I)との間のマトリクス積を前記第1モジュラス(q)によるモジュロ及び前記構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
    ことにより発生し、
    前記第2ネットワークノードの公開キーマトリクス(P_R)を受信し、
    生キーを、前記第2ノードの前記受信された公開キーマトリクスと前記第1電子ネットワークノードの前記秘密マトリクスとの間のマトリクス積として計算し、
    第2暗号文部分を、前記生キーから及びメッセージから計算し、
    前記第1暗号文部分及び前記第2暗号文部分を前記第2ネットワークノードに送信する、
    第1電子ネットワークノード。
  17. 公開キー解読処理のための第1電子ネットワークノードであって、
    第2ネットワークノードとのデジタル通信のための通信インターフェースと、
    プロセッサ回路と、
    を有し、該プロセッサ回路が、
    困難度パラメータ(d)及び構造パラメータ(n)を入力として受信し、
    秘密キーマトリクス(S)を取得し、ここで、該秘密キーマトリクスのエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、
    第1暗号文部分(P)及び第2暗号文部分を前記第2ネットワークノードから受信し、ここで前記第1暗号文部分は、共有マトリクス(A)と秘密マトリクス(S)との間のマトリクス積を第1モジュラス(q)によるモジュロ及び前記構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加することにより発生され、前記共有マトリクスは前記通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は前記構造パラメータ(n)により除算された前記困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数は前記第1モジュラス(q)によるモジュロで選択され、前記秘密キーマトリクスのエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、
    生キーを、前記第1暗号文部分と前記秘密キーマトリクスとの間のマトリクス積として計算し、
    前記生キー及び前記第2暗号文部分からメッセージを計算する、
    第1電子ネットワークノード。
  18. 第1電子ネットワークノードのための電子暗号処理方法であって、
    前記第1電子ネットワークノードと第2ネットワークノードとの間にデジタル通信を配するステップと、
    困難度パラメータ(d)及び構造パラメータ(n)を入力として受信するステップと、
    共有マトリクス(A)を得るステップであって、該共有マトリクスは通信インターフェースを介して前記第2ネットワークノードと共有され、該共有マトリクス(A)は前記構造パラメータ(n)により除算された前記困難度パラメータ(d)に等しい大きさ(k)の正方マトリクス(kxk)であり、該共有マトリクス(A)のエントリは前記構造パラメータ(n)より小さな次数の整数多項式であり、これら多項式の係数が第1モジュラス(q)によるモジュロで選択されるステップと、
    秘密キーマトリクス(S)を発生するステップであって、該秘密キーマトリクスのエントリが前記構造パラメータ(n)より小さい次数の整数多項式であるステップと、
    前記第1電子ネットワークノードの公開キーマトリクス(P)を、
    前記共有マトリクス(A)と前記秘密キーマトリクス(S)との間のマトリクス積を前記第1モジュラス(q)によるモジュロ及び前記構造パラメータ(n)に等しい次数の既約多項式(f)によるモジュロで計算し、マトリクス積を得、及び該マトリクス積のエントリにノイズを追加する、
    ことにより発生するステップと、
    前記第1電子ネットワークノードの前記公開キーマトリクスを前記第2ネットワークノードに送信するステップと、
    を有する、電子暗号処理方法。
  19. プロセッサシステムに請求項18に記載の電子暗号処理方法を実行させるための命令を表す一時的又は非一時的データを有する、コンピュータ読取可能な媒体。
JP2020521409A 2017-10-17 2018-10-10 格子暗号法のために構成可能な装置 Active JP6849860B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP17196812.6 2017-10-17
EP17196812 2017-10-17
EP18165330.4A EP3547603A1 (en) 2018-03-30 2018-03-30 Configurable device for lattice-based cryptography
EP18165330.4 2018-03-30
PCT/EP2018/077639 WO2019076706A1 (en) 2017-10-17 2018-10-10 CONFIGURABLE DEVICE FOR NETWORK-BASED CRYPTOGRAPHY

Publications (2)

Publication Number Publication Date
JP2020537450A true JP2020537450A (ja) 2020-12-17
JP6849860B2 JP6849860B2 (ja) 2021-03-31

Family

ID=63834029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020521409A Active JP6849860B2 (ja) 2017-10-17 2018-10-10 格子暗号法のために構成可能な装置

Country Status (7)

Country Link
US (2) US11569993B2 (ja)
EP (1) EP3698515B1 (ja)
JP (1) JP6849860B2 (ja)
CN (1) CN111492616B (ja)
BR (1) BR112020007456A2 (ja)
RU (1) RU2752697C1 (ja)
WO (1) WO2019076706A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070362B2 (en) 2018-02-12 2021-07-20 Massachusetts Institute Of Technology Systems and methods for providing secure communications using a protocol engine
US11005656B2 (en) * 2018-12-07 2021-05-11 Arris Enterprises Llc Embedding information in elliptic curve base point
WO2020172234A1 (en) * 2019-02-19 2020-08-27 Massachusetts Institute Of Technology Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
TWI729508B (zh) * 2019-09-26 2021-06-01 國立台灣大學 雲端安全儲存系統
US11522718B2 (en) * 2019-11-28 2022-12-06 Crypto Lab Inc. Methods of generating encryption key and digital signature based on lattices
CN111064570B (zh) * 2019-12-17 2023-01-31 航天信息股份有限公司 共享密钥处理方法、装置、存储介质和电子设备
EP3843320A1 (en) * 2019-12-24 2021-06-30 Koninklijke Philips N.V. Public/private key system with increased security
CN112511170B (zh) * 2020-11-10 2024-04-16 南京航空航天大学 一种格密码中多项式压缩的并行实现方法
US11496297B1 (en) * 2021-06-10 2022-11-08 Pqsecure Technologies, Llc Low footprint resource sharing hardware architecture for CRYSTALS-Dilithium and CRYSTALS-Kyber
US11569994B2 (en) * 2021-06-24 2023-01-31 Intel Corporation Accelerating multiple post-quantum cryptograhy key encapsulation mechanisms
US11909893B2 (en) * 2021-06-25 2024-02-20 Entrust Corporation Composite encryption across cryptographic algorithms

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1043961A (zh) 1989-08-21 1990-07-18 机械电子工业部北京机械工业自动化研究所 磁控电弧离子镀膜法
JP2007151073A (ja) * 2005-10-25 2007-06-14 Chiba Univ 鍵生成プログラム
WO2010032161A1 (en) * 2008-09-19 2010-03-25 Philips Intellectual Property & Standards Gmbh A method for secure communication in a network, a communication device, a network and a computer program therefor
RU2452111C1 (ru) * 2010-11-17 2012-05-27 ЗАО Институт инфокоммуникационных технологий Способ пороговой генерации ключей для системы защиты информации на основе идентификационных данных
US8634563B2 (en) * 2010-12-17 2014-01-21 Microsoft Corporation Attribute based encryption using lattices
JP5693206B2 (ja) * 2010-12-22 2015-04-01 三菱電機株式会社 暗号処理システム、鍵生成装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
US8621227B2 (en) 2010-12-28 2013-12-31 Authernative, Inc. System and method for cryptographic key exchange using matrices
TWI502947B (zh) * 2012-04-12 2015-10-01 Jintai Ding New cryptographic system and method based on mismatching
RU2636109C2 (ru) * 2012-12-21 2017-11-20 Конинклейке Филипс Н.В. Использующее общий ключ сетевое устройство и его конфигурирование
WO2014132155A1 (en) * 2013-02-28 2014-09-04 Koninklijke Philips N.V. Network device configured to derive a shared key
CN107454975B (zh) * 2015-04-07 2020-11-27 三菱电机株式会社 加密系统和密钥生成装置
EP3364596A1 (en) * 2017-02-15 2018-08-22 Koninklijke Philips N.V. Key exchange devices and method
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
EP3474484A1 (en) * 2017-10-17 2019-04-24 Koninklijke Philips N.V. Cryptographic device with updatable shared matrix
EP3889764A1 (en) * 2020-03-31 2021-10-06 Koninklijke Philips N.V. Parallel generation of a random matrix

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BHATTACHARYA, S. ET AL.: "spKEX: An optimized lattice-based key exchange", CRYPTOLOGY EPRINT ARCHIVE: REPORT 2017/709, JPN6020043170, 17 August 2017 (2017-08-17), pages 1 - 25, XP061034609, ISSN: 0004384773 *
岡田 大樹 ほか: "LWR問題解読のためのサンプル増幅法を用いたBKWアルゴリズム", コンピュータセキュリティシンポジウム2017 論文集, vol. 第2017巻,第2号, JPN6020043171, 16 October 2017 (2017-10-16), JP, pages 256 - 263, ISSN: 0004384774 *

Also Published As

Publication number Publication date
BR112020007456A2 (pt) 2020-10-27
US20230163966A1 (en) 2023-05-25
US20200259649A1 (en) 2020-08-13
RU2752697C1 (ru) 2021-07-30
JP6849860B2 (ja) 2021-03-31
EP3698515B1 (en) 2021-02-17
WO2019076706A1 (en) 2019-04-25
CN111492616A (zh) 2020-08-04
US11991285B2 (en) 2024-05-21
US11569993B2 (en) 2023-01-31
CN111492616B (zh) 2024-04-16
EP3698515A1 (en) 2020-08-26

Similar Documents

Publication Publication Date Title
JP6849860B2 (ja) 格子暗号法のために構成可能な装置
JP7208987B2 (ja) 更新可能な共有マトリクスを備える暗号装置
JP6720424B1 (ja) 鍵共有デバイス及び方法
JP7019730B2 (ja) キー交換デバイス及び方法
TWI672932B (zh) 基於質數陣列的後量子非對稱密鑰產生方法及系統、加密方法、解密方法及加密通訊系統
EP3547603A1 (en) Configurable device for lattice-based cryptography
EP3850784A1 (en) Public/private key system with decreased public key size
CN114008967A (zh) 经认证的基于晶格的密钥协商或密钥封装
EP2395698B1 (en) Implicit certificate generation in the case of weak pseudo-random number generators
US11502818B2 (en) System to secure encoding and mapping on elliptic curve cryptography (ECC)
Partala Semantically secure symmetric encryption with error correction for distributed storage
CN117318986A (zh) 一种基于多重加密的数据传输方法及系统
RU2558621C2 (ru) Способ шифрования сообщения, представленного в виде битовой строки
Rasool et al. Enhanced Secure Algorithm for Message Communication
Lee et al. A. SEEP. Protocol. Design.... and HECC Algorithm

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200415

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200415

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200415

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210118

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: 20210205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210304

R150 Certificate of patent or registration of utility model

Ref document number: 6849860

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250