JP7413365B2 - 暗号メッセージのサイズが縮小された公開鍵/秘密鍵システム - Google Patents

暗号メッセージのサイズが縮小された公開鍵/秘密鍵システム Download PDF

Info

Publication number
JP7413365B2
JP7413365B2 JP2021513439A JP2021513439A JP7413365B2 JP 7413365 B2 JP7413365 B2 JP 7413365B2 JP 2021513439 A JP2021513439 A JP 2021513439A JP 2021513439 A JP2021513439 A JP 2021513439A JP 7413365 B2 JP7413365 B2 JP 7413365B2
Authority
JP
Japan
Prior art keywords
key
matrix
public key
public
private
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
JP2021513439A
Other languages
English (en)
Other versions
JPWO2020053013A5 (ja
JP2022500911A (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 JP2022500911A publication Critical patent/JP2022500911A/ja
Publication of JPWO2020053013A5 publication Critical patent/JPWO2020053013A5/ja
Application granted granted Critical
Publication of JP7413365B2 publication Critical patent/JP7413365B2/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/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/0822Key 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 key encryption key
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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
    • 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/04Masking or blinding

Landscapes

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

Description

本発明は公開鍵暗号化デバイス、秘密鍵復号デバイス、公開鍵暗号化方法、秘密鍵復号方法、およびコンピュータ可読媒体に関する。
鍵配布の問題に対処する1つの方法は、いわゆる非対称暗号化を使用することである。非対称暗号化では公開鍵と秘密鍵で構成される鍵ペアが使用される。このため、非対称暗号化は公開鍵暗号化とも呼ばれる。
公開鍵は広く配布され得るが、秘密鍵は通常、少数のパーティ、例えば秘密鍵の所有者しか知らない。公開鍵は秘密鍵でのみ復号可能なメッセージの暗号化に使用できる。公開鍵暗号化システムでは、受信者の公開鍵を使用することで誰でもメッセージを暗号化できる。暗号化されたメッセージは受信者の秘密鍵を使用しなければ復号できない。対応する公開鍵から秘密鍵を見つけることは、計算上、非現実的である。公開鍵と秘密鍵とは鍵ペアと呼ばれる。
既知の公開鍵暗号化システムは、現時点で効率的な解法を認めていない数学的問題に基づく暗号化アルゴリズムに依拠する。例えば、RSA公開鍵暗号化システムは素因数分解の困難さに依拠する。楕円曲線に基づく公開鍵暗号化は、離散対数の困難さに依拠する。
量子コンピュータは現代の暗号化に重大な脅威をもたらす。最も広く採用されている2つの公開鍵暗号システムであるRSAおよび楕円曲線暗号(ECC)は汎用量子コンピュータによって破られる。量子コンピュータに耐性のある代替手段として、格子暗号が使用され得る。残念ながら、格子計算にはセキュリティのために大きな公開鍵が必要とされる。
本明細書に記載の実施形態は上記および他の問題に対処する。公開鍵暗号化デバイスおよび秘密鍵復号デバイスが提供される。公開鍵暗号化デバイスを使用して、送信鍵を秘密鍵復号デバイスに送ることができる。送信鍵はメッセージを暗号化するために使用され得る。したがって、公開鍵へのアクセスを有すればメッセージを暗号化することができるが、暗号化されたメッセージを復号するには秘密鍵へのアクセスが必要である。
公開鍵暗号化デバイスは、秘密鍵復号デバイスに関連付けられた第1の公開鍵行列を取得し、また、第2の公開鍵行列を生成するように構成され得る。第2の公開鍵行列は第1の公開鍵行列よりも少ない行列要素を有する。
第2の公開鍵行列は第1の公開鍵行列よりも少ない行列要素を有するので、暗号化フェーズ中の(例えば、メッセージを暗号化する際の)オーバーヘッド(例えば、送信鍵を送るのに必要なオーバーヘッド)を減らすことができ、具体的には、登録フェーズ(例えば、公開鍵暗号化デバイスが第1の公開鍵を取得するフェーズ)に対して減らすことができる。具体的には、第1の公開鍵は、第2の公開鍵が送られる方法とは異なる方法で取得され、具体的には、第1の公開鍵は(例えば、ソフトウェアと一緒に(例えば、ブラウザソフトウェアと一緒に))事前に配布され得る。公開鍵暗号化が必要とされる時点と比較して、事前配布中に帯域幅を得るのはより容易である可能性があるため、これは特に有利である。
様々な目的のために様々な実施形態を用いることができる。第1の例として、例えばインターネットを介して、一時的な鍵共有(ephemeral key exchange)が使用されてもよい。実施形態は、総帯域幅オーバーヘッド(例えば、公開鍵+暗号文)を最小化するために使用されてもよい。なお、この式は、公開鍵が既に利用可能な状態にあるか否かによって大きな影響を受ける可能性があることに留意されたい。別の例として、例えば、電子メールなどのメッセージアプリケーションで使用するために、暗号文が最小化されてもよい。暗号文のサイズを最小化することにより公開鍵がより長くなったとしても、公開鍵が送信されるのは一度なので、これは重要ではない。
送信鍵を送る前に、両デバイスはどの公開鍵を使用するかについてネゴシエーションを行う可能性がある。例えば、鍵が事前に配布されている場合、公開鍵暗号化デバイスは事前に配布された鍵を使用することを望み得る。例えば、公開鍵が事前に配布されていない場合、公開鍵暗号化デバイスは、より小さな公開鍵を取得することを望み得る。2つの公開鍵が利用可能な場合、暗号化されたメッセージの送信に必要な帯域幅を減らすため、公開鍵暗号化デバイスは大きい方の公開鍵を優先する可能性がある。
興味深いことに、第2の公開鍵のサイズは、例えば、登録フェーズ中ではなく、暗号化時に(例えば、暗号化フェーズ中に)決定され得る。これは、第2の公開鍵とともに送られる送信鍵のサイズから独立して第2の公開鍵のサイズを選択できるという利点を提供する。例えば、機密性の高い用途の場合、機密性の低い用途よりも送信鍵のビット数が多くなる可能性がある。後者のケースでは、送信鍵を送る際のオーバーヘッドは小さい可能性がある。
一実施形態では、第2の公開鍵行列は第1のシステム次元および第2の次元を有し、第1の公開鍵行列は第1のシステム次元および第2の次元を有し、第2の公開鍵行列の第2の次元は、第1の公開鍵行列の第2の次元よりも小さい。具体的には、第2の公開鍵行列の第2の次元は1であり、第1の公開鍵の第2の次元は1より大きくてもよい。
一実施形態では、高ノイズ格子問題をパリティビットと組み合わせることで、1.5kB未満の第2の公開鍵が取得される。これにより、そのような実施形態がコンピュータネットワークで使用される場合、パケット断片化が回避される。
公開鍵暗号化(PKE)は、例えば、Learning with Errors問題やLearning with Rounding問題、またはこれらの組み合わせのように、非構造化格子問題(unstructured lattice problems)に基づくものであってもよい。実施形態は、復号側の公開鍵がより大きくなる代わりに、暗号化側の最小帯域幅および計算オーバーヘッドを保証するように最適化され得る。ただし、公開鍵は一度送って保存するだけでよい。暗号化がより高速になり、また最終的な暗号文がより小さくなるため、暗号化に必要な帯域幅が減るだけでなく、暗号化がより効率的になる可能性がある。具体的には、非環構成の暗号文は2000B未満である可能性がある。
公開鍵暗号化デバイスおよび秘密鍵復号デバイスは電子デバイスであり得る。例えば、両デバイスはコンピュータまたはサーバなどであり得る。両デバイスは携帯電話やスマートカードなどのモバイル電子デバイスであってもよい。公開鍵暗号化デバイスおよび秘密鍵復号デバイスはセットトップボックスやテレビなどの家電製品であってもよい。公開鍵暗号化デバイスはセンサであってもよい。
実施形態に係るデバイスおよび方法は、幅広い実用的な用途に適用可能であり得る。実用的な用途は多数の暗号プロトコルを含む。そのような実用的な用途はメッセージアプリケーション、センサネットワーク、データ通信、金融アプリケーションなどを含む。
方法の実施形態は、コンピュータ実装方法としてコンピュータ上に、専用ハードウェアに、またはこれらの組み合わせとして実装されてもよい。方法の実施形態のための実行可能コードはコンピュータプログラム製品上に保存されてもよい。コンピュータプログラム製品の例は、メモリデバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されるとき、方法の実施形態を実行するためのコンピュータ可読媒体上に保存された非一時的プログラムコードを含む。
一実施形態では、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されたとき、方法の実施形態のステップの全てまたは一部を実行するように構成されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現化される。
本発明の別の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様は、コンピュータプログラムが例えばアップルのApp Store、GoogleのPlay Store、またはMicrosoftのWindows Storeなどにアップロードされており、そのようなストアからコンピュータプログラムをダウンロード可能な場合に使用される。
以下、本発明の単なる例に過ぎないさらなる詳細、態様、および実施形態について、以下の図面を参照しながら説明する。図中の要素は、簡潔さおよび明瞭さを意図して描かれており、必ずしも縮尺通りに描かれていない。図面において、すでに説明した要素に対応する要素には同じ参照番号を付している。
図1aは、秘密鍵復号デバイス100の実施形態の例を概略的に示す。 図1bは、公開鍵暗号化デバイス200の実施形態の例を概略的に示す。 図1cは暗号システム101の実施形態の例を概略的に示す。 図2aは公開鍵暗号化および秘密鍵復号の例を概略的に示す。 図2bは公開鍵暗号化および秘密鍵復号の例を概略的に示す。 図2cはハンドシェイクの例を概略的に示す。 図3は公開鍵暗号化および秘密鍵復号の例を概略的に示す。 図4は公開鍵暗号化および秘密鍵復号の例を概略的に示す。 図5は、一実施形態に係る暗号システムの例を概略的に示す。 図6aは、一実施形態に係る公開鍵暗号化方法の例を概略的に示す。 図6bは、一実施形態に係る秘密鍵復号方法の例を概略的に示す。 図7aは、一実施形態に係るコンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体を概略的に示す。 図7bは、一実施形態に係るプロセッサシステムの表現を概略的に示す。
10 秘密鍵復号デバイス
20 公開鍵暗号化デバイス
31 登録フェーズ
32 暗号化フェーズ
33 復号フェーズ
11~16 メッセージ
100 秘密鍵復号デバイス
130 通信インターフェース
191 コンピュータネットワーク
192 ストレージインターフェース
194 プロセッサ
196 メモリ
200 公開鍵暗号化デバイス
230 通信インターフェース
292 ストレージインターフェース
294 プロセッサ
296 メモリ
300 秘密鍵復号デバイス
301 暗号システム
302 公開鍵デポジトリ
305 通信インターフェース
315 公開/秘密鍵生成器
320 エラー訂正器
325 Diffie-Hellmanユニット
335 調整ユニット
340 カプセル化解除ユニット
350 公開鍵暗号化デバイス
355 通信インターフェース
360 公開鍵取得器
365 公開/秘密鍵生成器
370 コードワード生成器
375 Diffie-Hellmanユニット
380 高信頼性ビット生成器
385 調整データ生成器
390 カプセル化ユニット
1000 コンピュータ可読媒体
1010 書き込み可能部分
1020 コンピュータプログラム
1110 集積回路
1120 処理ユニット
1122 メモリ
1124 専用集積回路
1126 通信要素
1130 相互接続部
1140 プロセッサシステム
本発明は、様々な形態の実施形態を取り得るが、図面および以下の説明では、1つまたは複数の具体的実施形態が詳細に示される。本開示は、本発明の原理の例示として考えられるべきであり、本発明を図示および説明される具体的実施形態に限定するものではないことを理解されたい。
以下、理解を目的として、動作中の実施形態の要素が説明される。しかしながら、各要素が、各要素によって実行されるものとして記載されている機能を実行するように構成されていることは明らかであろう。
さらに、本発明は、実施形態に限定されるものではなく、本発明は、本明細書に記載されるまたは互いに異なる従属請求項に記載される全ての新規の特徴または特徴の組み合わせに及ぶ。
図1aは、秘密鍵復号デバイス100の実施形態の例を概略的に示す。図1bは、公開鍵暗号化デバイス200の実施形態の例を概略的に示す。秘密鍵復号デバイスは第1のデバイス、または第1の暗号デバイスと呼ばれることもある。公開鍵暗号化デバイスは第2のデバイス、または第2の暗号デバイスと呼ばれることもある。図1cは、秘密鍵復号デバイス100および公開鍵暗号化デバイス200を含む暗号システム101の一実施形態の例を概略的に示す。秘密鍵復号デバイス100および公開鍵暗号化デバイス200はそれぞれ、ストレージインターフェース192、292、プロセッサ194、294、およびメモリ196、296を1つ以上備え得る。秘密鍵復号デバイス100は公開鍵/秘密鍵ペアを生成するように構成される。公開鍵および秘密鍵はそれぞれ、公開鍵行列および秘密鍵行列で構成される。公開鍵暗号化デバイス200は、公開鍵行列を使用して、秘密鍵復号デバイスに送信鍵(transmission key)を送ることを可能にするように構成される。例えば、送信鍵は、公開鍵暗号化デバイスから秘密鍵復号デバイスに送られるべきメッセージを暗号化し、後に復号するための鍵として(典型的には対称鍵として)使用され得る。秘密鍵復号デバイスは、秘密鍵行列を使用して同じ送信鍵を取得するように構成される。あるいは、送信鍵は、さらなる鍵ネゴシエーションへの入力として使用することができる。例えば、送信鍵を1つまたは複数の他の鍵入力と組み合わせることで、例えば、送信鍵および他の鍵を入力として鍵導出関数を使用して最終的な鍵が導出されてもよい。他の鍵入力は、公開鍵暗号化デバイスおよび秘密鍵復号デバイスが立場を変え、本明細書に記載の様々なプロトコルにおいて反対の役割を担うようなプロトコルから得られたさらなる送信鍵を含み得る。
秘密鍵復号デバイス100および公開鍵暗号化デバイス200(例えば、システム101の様々なデバイス)は、コンピュータネットワーク191を介して互いに通信することができる。コンピュータネットワークはインターネット、イントラネット、LAN、WLAN等であり得る。コンピュータネットワーク191はインターネットであり得る。コンピュータネットワークは全体的または部分的に有線であってもよく、および/または全体的または部分的に無線であってもよい。例えば、コンピュータネットワークはイーサネット接続を含み得る。例えば、コンピュータネットワークはWi‐Fi(登録商標)やZigBee(登録商標)などの無線接続を含み得る。デバイスは、必要に応じてシステム101の他のデバイスと通信するように構成された接続インターフェースを備える。例えば、接続インターフェースはコネクタ(例えば、有線コネクタ(例えば、イーサネットコネクタ)、または無線コネクタ(例えば、アンテナ(例えば、Wi‐Fi(登録商標)、4Gまたは5Gアンテナ))を含み得る。例えば、秘密鍵復号デバイス100および公開鍵暗号化デバイス200はそれぞれ通信インターフェース130、230を含み得る。コンピュータネットワーク191は追加の要素、例えばルータやハブなどを含み得る。
秘密鍵復号デバイス100および公開鍵暗号化デバイス200の実行は、プロセッサ、例えばプロセッサ回路において実装され、その例は本明細書に示されている。秘密鍵復号デバイス100、特に秘密鍵復号デバイス100のプロセッサは、図2a~図2c、図3、および図4に示されるように、秘密鍵復号デバイス10の機能を実装し得る。公開鍵暗号化デバイス200、特に公開鍵暗号化デバイス200のプロセッサは、これらの図の公開鍵暗号化デバイス20の機能を実装し得る。例えば、これらの機能は、デバイス100または200に保存された(例えば、デバイス100または200の電子メモリ内に保存された)コンピュータ命令として完全にまたは部分的に実装され得る。コンピュータ命令はデバイスのマイクロプロセッサによって実行可能である。ハイブリッド実施形態では、機能ユニットは部分的にハードウェアで、例えばコプロセッサ、例えば暗号化コプロセッサとして実装され、部分的に、デバイス100または200上で格納および実行されるソフトウェアで実装される。
デバイス100および200はメッセージ(場合によっては暗号化されたメッセージ)を保存および/または取り出すためのストレージインターフェースを備え得る。例えば、ストレージインターフェースは、例えば、デバイスに含まれるメモリ(例えば、それぞれメモリ196または296)へのインターフェースとして、ローカルに実装され得る。また、ストレージインターフェースはオフラインの、例えばローカルではないストレージ、例えばクラウドストレージ、例えば別のデバイス内に設けられたメモリまたはドライブなどのストレージに対するインターフェースであってもよい。クラウドストレージが使用される場合、デバイスはさらにローカルストレージ(例えば、メモリ)を含み得る。例えば、メモリはコンピュータプログラミング命令や一時的ファイルなどを保存するために使用され得る。
デバイス100および200の様々な実施形態において、様々な選択肢から通信入力インターフェースが選択され得る。例えば、インターフェースは、ローカルまたはワイドエリアネットワーク、例えばインターネットへのネットワークインターフェースであってもよく、または内部もしくは外部データストレージへのストレージインターフェース、またはアプリケーションインターフェース(API)などであり得る。一実施形態では、公開鍵暗号化デバイスおよび秘密鍵復号デバイスは同一のデバイス内に実装される。これは、メッセージの暗号化および復号の両方に役立ち得る。例えば、通信インターフェースはストレージインターフェースであり、その場合、デバイスは暗号化された形式でメッセージを記憶し、後に暗号化されたメッセージを取り出して復号するために使用され得る。
デバイス100および200は、1つまたは複数のボタン、キーボード、ディスプレイ、タッチスクリーンなどのよく知られた要素を含み得るユーザインターフェースを有し得る。ユーザインターフェースは、鍵共有プロトコルを開始するためのユーザインタラクションに対応するように構成され得る。鍵共有プロトコルに応答して、公開鍵で暗号化されたメッセージを送信すること、公開鍵でメッセージを復号すること等を実行する。
ストレージは、例えば、フラッシュメモリ等の電子メモリや、ハードディスク等の磁気メモリとして実装されてもよい。ストレージは、ストレージを構成する複数の個別のメモリを備えてもよい。ストレージは一時的なメモリ、例えばRAMであってもよい。
典型的には、デバイス100および200はそれぞれ、デバイス100および200に保存された適切なソフトウェアを実行するマイクロプロセッサを備える。例えば、ソフトウェアは、対応するメモリ、例えばRAMのような揮発性メモリ、またはフラッシュのような不揮発性メモリにダウンロードおよび/または保存されていてもよい。あるいは、デバイス100および200は、全体的にまたは部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに実装されてもよい。デバイス100および200は、全体的にまたは部分的に、いわゆる特定用途向け集積回路(ASIC)、例えば、特定の用途向けにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
一実施形態では、デバイス100および200は、それぞれのデバイスの1つ以上の機能または全ての機能を実装するための1つまたは複数の回路を備え得る。これらの回路は、本明細書に記載される対応する機能を実装し得る。回路は、プロセッサ回路および記憶回路であってもよく、プロセッサ回路は、記憶回路において電子的に表現される命令を実行する。
プロセッサ回路は分散された形で、例えば複数のサブプロセッサ回路として実装されてもよい。ストレージは、複数の分散サブストレージに分散されてもよい。メモリの一部または全部が電子メモリや磁気メモリ等であり得る。例えば、ストレージは、揮発性部分および不揮発性部分を有し得る。ストレージの一部が読み取り専用であってもよい。また、回路はFPGA、ASICなどであってもよい。
図2aは公開鍵暗号化および秘密鍵復号の例を概略的に示す。公開鍵暗号化側は公開鍵暗号化デバイス20によって実行される。秘密鍵復号側は秘密鍵復号デバイス10によって実行される。図1a~図4のプロトコルは、例えば上記のように、公開鍵暗号化デバイス200および秘密鍵復号デバイス100によって実行され得る。
図2a~図4における表記法は次の通りである。
- aは、公開行列、例えば、整数または環や体などに含まれる要素を有する行列を表す。要素は、あるモジュラス(例えば、2の累乗)を法とする整数であり得る。要素は、モジュラス(例えば、2の累乗)および多項式を法とする多項式であり得る。行列aは通常、正方d×d行列である。モジュラスを法とする行列は非環構成(non-ring configuration)と称される。多項式およびモジュラスを法とする多項式エントリーを有する行列はモジュール構成と称される。
- rおよびsは、それぞれ、秘密鍵復号デバイスの秘密鍵行列および公開鍵暗号化デバイスの秘密鍵行列を表す。
- bおよびuは、a*rまたはa*sの積として示されている秘密鍵復号デバイスおよび公開鍵暗号化デバイスのそれぞれの公開鍵行列を表す。
演算*は、基礎となる問題の一方向性関数を表す。スター(*)演算により、2つの基礎となる行列から新しい数学的オブジェクト(例えば、新しい行列)が、いくらかのノイズを導入しつつ導出される。例えば、ノイズは、ノイズ要素を加えることによって明示的に導入されてもよいし、あるいは、丸め等によって暗示的に導入されてもよい。スター演算の例は(R)LWEまたは(R)LWR、あるいはこれらのモジュールバージョンにおいて見つけることができる。例えば、a*rは、(例えばLWRにおいて用いられる)Round((A*r(mod q)),p,q)を意味し得る。これは、qを法とする、rと正方行列Aとの積を意味する。その後、整数pおよびq(p<q)を用いてp/q(A*r(mod q)を実行することによって結果が丸められる。
- cはカプセル化された送信鍵Kを表す。
- encapsulate(k,K)は、送信鍵Kがkでカプセル化されることを意味する。例えば、kがZ_qに存在する場合、KもZ_qで表され得る。kがZ_2に存在する場合、これはXORであり得る。カプセル化は要素ごとに行われ、例えば、以下のようにkおよびKを行列として解釈することで行われてもよい。
c=k+K*(q/2)(mod q)
例えば、カプセル化関数は、kにおけるエラーがmに対して及ぼす効果を限定するように(例えば、線形効果)、鍵kを使用して送信鍵Kをマスクし得る。例えば、Kの要素にZ_qの要素を乗算することによって、送信鍵Kの各ビットがZ_qにマッピングされ得る。qが偶数の場合、q/2は良い選択である。次に、(Z_qの要素でもあり得る)鍵kの要素にKのマッピングされた要素が加えられる。
- decapsulate(k,c)は、暗号文cが鍵kを使用してカプセル化解除され、ビット列を返すことを意味する。
以下の文献が参照される。
RLWE:Vadim Lyubashevsky、Chris Peikert、およびOded Regevによる“On Ideal Lattices and Learning with Errors Over Rings”
RLWR:Abhishek Banerjee、Chris Peikert、およびAlon Rosenによる“Pseudorandom Functions and Lattices”
LWE:Oded Regevによる“On Lattices, Learning with Errors, Random Linear Codes, and Cryptography”
LWR:Abhishek Banerjee、Chris Peikert、およびAlon Rosenによる“Pseudorandom Functions and Lattices”
Hila5:Markku-Juhani O. Saarinenによる“HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption”
スター演算はノイジー(noisy)な行列乗算であり、例えば、通常の行列乗算の後にノイズが加えられてもよい。ノイズを加えることは、行列の乗算と統合されてもよい。スター演算においてノイズを加えることは複数の方法で実行され得る。ノイズを加える一例は、明示的なノイズを加えることであり、例えばノイズ行列が生成されて加えられてもよい。明示的なノイズを加えることの利点は、ノイズが暗号使用者の完全な制御下にあり、微調整できることであり、例えば、セキュリティに対するシステムの故障率を正確に制御することができる。また、明示的なノイズを加える場合、全ての行列が同じ環やフィールド等の上にあるため、分析が単純になるという利点がある。ノイズを加える方法の他の例はスケールダウン(scaling down)である。例えば、行列a、r、およびsは、モジュラスqを法とする要素(例えば、qを法とする整数または多項式)を有し得る。スター演算は、行列演算の結果をモジュロqからモジュロpに切り捨てし、これは例えば、p/qを掛け、丸め(例えば、切り上げ、切り捨て、または最も近い整数への丸め等)を行うことで実行され得る。
本願では行列には小文字が使用される。例えば、行列の型のために、または、両側の生の鍵がほぼ等しい必要がある場合など、必要に応じて行列を転置する必要があることが理解される。通常、これを行うには複数のやり方が存在する。例えば、一実施形態において全ての行列を転置することによって、別の実施形態が得られ得る。
以下に、行列オブジェクトが大文字で示され、転置が含まれる1つの例を示す。秘密鍵は行列
Figure 0007413365000001
および
Figure 0007413365000002
として定められる。なお、このような秘密鍵行列は実際には、
Figure 0007413365000003
および
Figure 0007413365000004
の独立した秘密鍵ベクトルをそれぞれ含むことに留意されたい。生の鍵の行列はSRであり、
Figure 0007413365000005
内に存在する。生の鍵の各エントリーからB個の最上位ビットが抽出され、合わせて長さ
Figure 0007413365000006
の生の鍵が生成される。公開鍵暗号化デバイスおよび秘密鍵復号デバイスのそれぞれにおいて導出される生の鍵は完全には等しくない可能性があるため、生の鍵はそのように言及される。
登録フェーズ31において:
秘密鍵復号デバイスは公開行列Aおよび第1の秘密鍵行列Rを選択する。
秘密鍵復号デバイスは、何らかのエラー行列Eについて、第1の公開鍵行列B=AR+Eを計算する。
秘密鍵復号デバイスは以下を送信する:A、B
暗号化フェーズ32において:
公開鍵暗号化デバイスは第2の秘密鍵行列Sを選択する。
公開鍵暗号化デバイスは、何らかのエラー行列E’について、第2の公開鍵行列U=AS+E’を計算する。
公開鍵暗号化デバイスは第2の生の鍵BSを計算する。なお、BS=SR+ERである。
公開鍵暗号化デバイスは送信鍵Kを生成し、カプセル化された送信鍵を調整(reconcilation)データとともに
Figure 0007413365000007
として計算する。
公開鍵暗号化デバイスは以下を送信する:U、C
復号フェーズ33において:
秘密鍵復号デバイスは第1の生の鍵BSを計算する。なお、BS=SR+ERである。
秘密鍵復号デバイスは、C-SUを計算し、結果を
Figure 0007413365000008
の倍数に丸めることによってカプセル化を解除する。次に、丸めから、例えば
Figure 0007413365000009
で割ることによって、送信鍵Kが取得され得る。
上記の例では、行列A、B、S、U、およびRはZ_p上にある。指数2の値Bは、Kをカプセル化するために生の鍵から取られる最上位ビットの数を示す。この例では、残りのより下位のビットが調整データとして使用される。例えば、カプセル化のためにB=4ビットが取られ得る。例えば、モジュラスはp=212として選択され得る。送信鍵は、Z_2^B内のエントリー(例えば、{0,1,・・・,2^B-1}から選択されたエントリー)を有する行列として符号化され得る。行列EおよびE’は、pを法とする、エントリーが小さい行列であってもよい。例えば、エントリーは以下の集合から選択されてもよい。
Figure 0007413365000010
ここで、wは小さい。wのサイズは、セキュリティとシステムの故障率のバランスをとるように選択される。wの値が低いとシステムの故障率が下がる。
行列Cがpを法として計算され得る。帯域幅効率の観点から、公開鍵暗号化デバイスは
Figure 0007413365000011
を計算して送信し、ここで、tはpを除算する。Mの復元にあたり、秘密鍵復号デバイスは
Figure 0007413365000012
を計算する。この場合、調整データとして利用される生の鍵のビット数は、利用可能なビット数よりも少ない。一般に、より下位のビットほど失敗率に与える影響が少ない。
エラー行列を使用する代わりに、明示的なノイズを加えることに代えて、スター演算においてスケールダウンを行ってノイズが加えられてもよい。スケールダウンには帯域幅が削減されるという利点がある。
図2aに戻る。秘密鍵復号デバイス10が自身の秘密鍵行列および公開鍵行列を生成し、公開鍵暗号化デバイス20に対して公開鍵を利用可能にする登録フェーズ31が図示されている。例えば、公開鍵がデバイス20に送信されてもよい。例えば、公開鍵は公開鍵データベースに預けられ、デバイス20がそれを取り出すことが可能であってもよい。例えば、デバイス10およびでバイアス20は異なるデバイスであってもよいし、同じデバイスでもよい。
登録フェーズ31中、デバイス10は第1の秘密鍵行列(r)を生成し、第1の秘密鍵行列(r)から第1の公開鍵行列(b)を計算する。例えば、デバイス10は公開行列(a)を生成し、第1の公開鍵行列(b)を、第1の秘密鍵行列(r)と公開行列(a)との間のノイジーな行列乗算として計算し得る。秘密鍵復号デバイスから公開鍵暗号化デバイス20への第1の公開鍵行列(b)の伝送が手配される。例えば、第1の公開鍵行列(b)はメッセージ11内で秘密鍵復号デバイスからデバイス20に送信され得る。
公開行列(a)は、公開鍵暗号化デバイスと秘密鍵復号デバイスとの間で共有され、第1の公開鍵行列(b)は公開行列(a)に関連付けられる。例えば、公開行列は公開鍵行列(b)と同じ方法でデバイス20に伝送される。通常、行列aはシードから疑似ランダムに生成される。シードを送ることで行列を共有することができる。
暗号化フェーズ32は登録フェーズ31よりも後でもよく、場合によってははるかに後でもよい。暗号化フェーズ32において、デバイス20は送信鍵(K)を生成し、第2の秘密鍵行列(s)を生成し、第2の秘密鍵行列(s)から第2の公開鍵行列(u)を計算する。例えば、デバイス20は、第1の公開鍵行列(b)に関連付けられた公開行列(a)を取得し、第2の公開鍵行列(u)を、第2の秘密鍵行列と公開行列(a)との間のノイジーな行列乗算として計算し得る。公開行列は、公開行列の生成に使用されるシードの形式で取得されてもよい。一実施形態では、公開行列は異なるソースから取得される。例えば、デバイス10およびデバイス20の両方が第三者から公開行列を取得することができる。
送信鍵の生成はランダムに行われてもよい。
デバイス20は、第2の秘密鍵行列(s)および第1の公開鍵行列(b)から第2の生の共有鍵(k*)を計算し、第2の秘密鍵行列(s)と第1の公開鍵行列(b)との間の行列乗算を含む、第2の生の共有鍵の計算を行い、カプセル化関数を適用することによって第2の生の共有鍵の少なくとも一部で送信鍵(K)をカプセル化して、カプセル化されたデータ(c)を取得し、第2の公開鍵行列(u)、および秘密鍵復号デバイスへのカプセル化されたデータ(c)を送るように構成される。例えば、第2の公開鍵行列(u)、および秘密鍵復号デバイスへのカプセル化されたデータはメッセージ12内で送信され得る。
なお、これにより、送信鍵を生の鍵から独立させることができる。これにより、アクティブな攻撃に対する耐性が上昇する。
秘密鍵復号デバイスが公開鍵暗号化デバイスから第2の公開鍵行列(u)およびカプセル化されたデータ(c)を受信した後、秘密鍵復号デバイスは復号フェーズ33において、第2の公開鍵行列(u)および第1の秘密鍵行列(r)から第1の生の共有鍵(k’)を計算し、第2の公開鍵行列(u)と第1の秘密鍵行列(r)との間の行列乗算を含む、第1の生の共有鍵の計算を行い、第1の生の共有鍵(k’)の少なくとも一部を使用してカプセル化されたデータ(c)のカプセル化を解除することで送信鍵を取得し得る。
興味深いことに、一実施形態では、第2の公開鍵行列(u)は、第1の公開鍵行列(b)よりも少ない行列要素を有する。全ての行列が正方形で同じ型の場合、第2の公開鍵行列(u)および第1の公開鍵行列(b)は同じ数の要素を有する。発明者らは、これが必要でないとの見識を得た。これは、メッセージ11および12への公開鍵の寄与が等しくなることを意味する。しかし、これらのメッセージが送信される状況、およびメッセージを送信するデバイスは全く異なる可能性がある。第2の公開鍵行列(u)のサイズを第1の公開鍵行列(b)よりも小さくなるように選択することにより、メッセージ12のための帯域幅要件は減少し、一方でメッセージ11の帯域幅要件は増加する。
第2の公開鍵行列(u)のサイズを第1の公開鍵行列(b)の行列要素の数よりも小さくする1つの方法は、適切に小さい第2の秘密鍵行列を選択することである。特に、第2の秘密鍵行列(s)は、第1の公開鍵行列(b)よりも少ない行列要素を有するように選択されてもよい。これは、さらに、第2の公開鍵行列(u)が第1の秘密鍵行列(r)よりも少ない行列要素を有することを示唆し得る。
例えば、一実施形態では、システムの型/次元(dimension:d)が選択される。システムの型は部分的にシステムのセキュリティを決定する。nの値が大きいほどセキュリティが高くなる。各行列a、r、b、s、uの次元の1つはシステムの次元dと等しい。エラー行列が使用される場合、エラー行列e、e’もシステムの次元に等しい次元を1つ有し得る。生の鍵k、k’、および/または送信鍵Kが行列として表される場合、同様に、これらもシステムの次元に等しい次元を1つ有し得る。これらの行列の他の次元は、加算および乗算(場合によっては転置を含む)に対応するように選択され得る。
一実施形態では、公開行列aは型がd×dの正方行列である。第1の秘密鍵行列rおよび第1の公開鍵行列bの型は
Figure 0007413365000013
である。第2の秘密鍵行列sおよび第2の公開鍵行列uの型は
Figure 0007413365000014
である。第2の秘密鍵行列sおよび第2の公開鍵行列uの第2の次元
Figure 0007413365000015
を、第1の秘密鍵行列rおよび第1の公開鍵行列bの第2の次元
Figure 0007413365000016
よりも小さくなるように選択することによって、メッセージ12内の公開鍵uがメッセージ11内の公開鍵bよりも少ないエントリーを有することが保証される。
例えば、第2の公開鍵行列(u)の第2の次元(
Figure 0007413365000017
)を、例えば、第1の公開鍵行列(b)の第2の次元(
Figure 0007413365000018
)の半分以下になるように選択することにより、第2の公開鍵行列(u)が第1の公開鍵行列(b)の半分以下の数のエントリーを有することが保証される。
第2の秘密鍵行列および第2の公開鍵行列の第2の次元(
Figure 0007413365000019
)の特に好適な選択肢は1である。これにより、第2のメッセージ12のサイズを最小化することができる。
例えば、メッセージ11は、より多くの帯域幅が利用可能である登録フェーズ中に送信され得る。例えば、メッセージ12は、より少ない帯域幅が利用可能である、システムでアクティブなやり取りが行われている間に送信され得る。例えば、デバイス12は、十分な帯域幅があるとき(例えば、製造中またはセットアップ中)に第1の公開鍵を受け取るセンサであり、メッセージ12は、帯域幅がより少ない可能性があるセンサの使用中に送信され得る。なお、メッセージ11を、例えばコンピュータネットワークを介して送信する代わりに、第1の公開鍵は、例えばデバイス20のメモリデバイス上にインストールされることによってデバイス20において取得されてもよい。
興味深いことに、システムのセキュリティは、
Figure 0007413365000020
および
Figure 0007413365000021
の個々の大きさよりも、システムの次元dおよび積
Figure 0007413365000022
に依存すると考えられている。後者は生の鍵を導出するために使用できるビットの長さを示す。前者は、基礎となる格子のサイズに影響を与え、よって、基礎となる暗号問題の難しさに影響を与える。スキームの復号失敗確率は、部分的にBの値に依存する。Bの値が高い場合、失敗率が悪化し、適応型能動的攻撃に対するPKEスキームのセキュリティに悪影響を及ぼす。通常、Bは固定であり、例えば、標準化されたパラメータセットの形式をとる。
したがって、第1の公開鍵のサイズ(例えば、
Figure 0007413365000023
のサイズ)を大きくするとともに、
Figure 0007413365000024
のサイズを小さくすることにより、メッセージ12に必要な帯域幅を減らしつつ、同じセキュリティを維持することができる。具体的には、
Figure 0007413365000025
かつ
Figure 0007413365000026
であるシステムは、
Figure 0007413365000027
かつ
Figure 0007413365000028
であるシステムと同等のセキュリティを備える。
興味深いことに、第2の公開鍵行列(u)の第2の次元(
Figure 0007413365000029
)は事前決定されたものである必要はない。この次元は第1の秘密鍵および公開鍵の選択から独立して選択可能である。具体的には、次元(
Figure 0007413365000030
)から独立して選択可能である。一実施形態では、第2の次元(
Figure 0007413365000031
)は第2のデバイス20において設定可能である。
ある例示的な実施形態では
Figure 0007413365000032
が使用され得る。Bは、生の鍵行列エントリーで使用される最上位ビットの数を示す。
Figure 0007413365000033
表中、
nは、秘密行列および/または公開行列内の多項式の次数を示す。n=1の値は、モジュラスを法とする整数が使用されることを示す。値nは「環の次元(ring dimension)」、例えば、選択された多項式環の次数と称され得る。
dはシステムの型、例えば、公開行列aの列および行の数を示す。
μは、送信鍵をカプセル化するのに使用される生の鍵行列の要素の数を示す。これらの要素は、事前に決定されたもの(例えば、標準化されたもの)であってもよいし、ランダムに選択されたものでもよいし、または意図的に選択されたもの(例えば、信頼できる要素として)であってもよい。したがって、共有秘密鍵の長さはμBであり、上記の例では、これは64×4=256である。
一実施形態では、第1の公開鍵は以下を含み得る。
1.公開行列aを再生成するためのシード。例えば、シードのビット長は共有秘密と同じに選択され得る(この例では256ビット)。
2.公開鍵行列b。この行列の次元はdおよび
Figure 0007413365000034
であり、pを法とする選択された要素を有し得る。例えば、第1の秘密行列は、qを法とする選択された要素を有し得る。この場合、qからpにスケールダウンすることでノイズが加えられ得る。この例の公開鍵行列は
Figure 0007413365000035
ビット(この例では12×1198×64=920064ビット)に符号化され得る。
3.任意選択的に、追加のブックキーピング情報。例えば、鍵のタイプを示すために識別子が含められてもよい(例えば、1バイト)。例えば、識別子は公開行列aの再生方法を示し得る。例えば、値
Figure 0007413365000036
が含められ得る(例えば、2バイト)。値
Figure 0007413365000037
のために2バイトの場合、
Figure 0007413365000038
をより大きな値に選択することができ、例えば、一部のユースケースでは
Figure 0007413365000039
の値が512であってもよい。これらの値および識別子は、例えばシステム設計者によって事前に定められていてもよく、その場合はそれらを含める必要はない。しかし、
Figure 0007413365000040
の値を含めることにより、帯域幅を暗号化フェーズから登録フェーズに、例えばその用途に必要な程度に動的にシフトすることができる。
この例の公開鍵行列の合計サイズは115008バイトである。シードおよび/または識別子が含められる場合、32バイトまたは35バイト等が追加され得る。秘密鍵の生成は様々な方法で実行され得ることに留意されたい。例えば、秘密鍵行列は完全にランダムであってもよいが、ハミング重み制限等の制限を受けてもよい。例えば、秘密鍵行列内の長さdのベクトルは事前に決定されたハミング重みを有し得る。例えば、この例ではハミング重みは574に選択されてもよい。
一実施形態では、暗号文は以下を含み得る。
1.第2の公開鍵行列u。第2の公開鍵行列の次元はdおよび
Figure 0007413365000041
であり、pを法とする選択された要素を有する。この例の公開鍵行列は
Figure 0007413365000042
ビットに、この例では12×1198×1=14376ビットに符号化され得る。
2.カプセル化されたデータcは、μの要素を有するベクトルとして符号化され、ここで、要素はtを法として選択される。この例のカプセル化されたデータのサイズは
Figure 0007413365000043
ビットであり、この例では64×10=640ビットである。このスキームは
Figure 0007413365000044
の調整ビットを使用するとみなすことができ、この例では6である。
3.任意選択的に、認証付き暗号がメッセージに使用される場合、認証タグ。例えば、Galois/counterモードが使用される場合、認証タグはAESGCM認証タグであり得る。PKEスキームの公開鍵に認証タグを含めることは必要ではない。
4.任意選択的に、
Figure 0007413365000045
の値。例えば、これは1バイトであってもよい。
したがって、この例では、暗号文のサイズは12×1198×1+64×10=15016ビット、つまり1877バイトであってもよい。暗号文のサイズには、暗号化されたメッセージのサイズは含まれない。任意選択的に、いくつかのビット、例えば8ビットが
Figure 0007413365000046
の値を送るために使用されてもよい。この例のPQセキュリティは2233と推定され、失敗率は2-129と推定される。
一実施形態では、能動的セキュリティは、より精巧なカプセル化関数(例えば、Hayo Baanらによる“Round2:KEM and PKE based on GLWR”のアルゴリズム9のように)を使用してさらに強化され得る。そのような場合、暗号文はハッシュgを含み、これは、秘密鍵復号デバイスの公開鍵をハッシングすることにより、公開鍵暗号化デバイスによって計算され得る。ハッシュは、最終的な共有秘密が、秘密鍵復号デバイスおよび公開鍵暗号化デバイスの両方からの寄与が含むことを保証するために使用され得る。例えば、藤崎・岡本変換が使用されてもよい。ハッシュは例えば、共有秘密のサイズ(この例では256ビット)を有し得る。
上記したように、送信鍵はメッセージmを暗号化するために使用され得る。例えば、公開鍵暗号化デバイスは、メッセージ(m)を送信鍵で暗号化し、暗号化されたメッセージを秘密鍵復号デバイスに送るように構成され得る。秘密鍵復号デバイスは、公開鍵暗号化デバイスから暗号化されたメッセージを、例えば第2の公開鍵行列およびカプセル化されたデータとともに受信し、送信鍵を用いて暗号化されたメッセージを復号し得る。
一実施形態では、送信鍵は第1の公開鍵行列(b)に依存しない。例えば、送信鍵Kは、第1の公開鍵行列(b)を使用せずに生成され、例えば、送信鍵は、ランダムに生成されてもよく、および/またはデバイス20が第1の公開鍵行列(b)を受け取る前に生成され得る。
同様に、送信鍵は第1の秘密鍵行列(r)から独立していてもよい。送信鍵は、第2の秘密鍵行列(s)および第2の公開鍵行列(u)、カプセル化されたデータ(c)から計算的に独立していてもよい。計算的に独立しているとは、攻撃者の計算限界内で、第2の秘密鍵行列を知ることが送信鍵に関する情報を提供しないことを意味する。
送信鍵Kは通常、一時的に使用され、例えば一過性であり、例えば、単一のメッセージm、または単一のセッション、プロトコル、ハンドシェイクなどを暗号化するためにのみ使用される。送信鍵Kは対称鍵であり、例えば、ブロック暗号の鍵として使用される。
例えば、デバイス20は、送信鍵をカプセル化した後、メッセージおよび/または第2の秘密鍵行列を暗号化する送信鍵を削除するように構成され得る。例えば、カプセル化されたデータをデバイス10に送信する前に送信鍵および/または第2の秘密鍵行列が削除されてもよい。同様に、デバイス10は、メッセージを復号した後に送信鍵を削除してもよい。
一実施形態では、第2の秘密鍵行列は送信鍵から導出される。例えば、送信鍵は、真にまたは疑似的にランダム生成され、その後、鍵導出関数(例えば、シードを導出するためのハッシュ関数)への入力として使用され得る。追加の入力(例えば、メッセージ、第1の公開鍵行列など)が存在してもよい。その後、シードを使用して第2の秘密鍵行列が、例えばシードに依存する決定的疑似ランダム関数として生成される。鍵導出関数は、第2の秘密鍵行列から送信鍵を計算できないように選択されることが好ましい。
これは、デバイス10が送信鍵を導出した後、送信鍵から第2の秘密鍵行列を再構築できるという効果を奏する(例えば、同じ鍵導出関数を適用して送信鍵から第2の秘密鍵行列を計算することによって)。次に、デバイス10は、第2の公開鍵および/またはカプセル化されたデータが正しく計算されたか否かを検証し得る。これは、能動的な攻撃を達成することがはるかに難しいという利点を有する。デバイス10が異常を発見した場合、例えば、受信されたデータと、再計算された第2の公開鍵および/または再計算されたカプセル化されたデータとの間の差異を発見した場合、デバイス10は適切なアクションをとることができ、例えば警告信号を生成したり、第2のメッセージの復号を中止したりし得る。
送信鍵から第2の秘密鍵行列を導出することは、セキュリティを強化してCCA安全システムのセキュリティに近づけるという利点を有する。これは、特に第1の公開鍵行列が一度生成され、多くのメッセージに使用される場合に有利である。
一実施形態では、公開鍵暗号化デバイスのプロセッサは、ヘルパーデータを計算することで、秘密鍵復号デバイスにて送信鍵を取得する際のエラーレートを低減するように構成される。ノイジーな行列乗算に基づく公開鍵暗号化の性質上、秘密鍵復号側での送信鍵の再構築が失敗する可能性がある。失敗の確率は様々な方法で減らすことができるが、その1つは、秘密鍵復号デバイスが正しい送信鍵に到達するのに役立つヘルパーデータを計算して送ることである。
例えば、秘密鍵復号デバイスは、公開鍵暗号化デバイスからヘルパーデータを受け取り、ヘルパーデータを適用して、秘密鍵復号デバイスにて送信鍵を取得する際のエラーレートを低減するように構成され得る。
使用され得るヘルパーデータにはいくつかの種類が存在する。上記の例では1つの手法、いわゆる調整データが使用された。第2の生の鍵の一部が送信鍵をカプセル化するために使用され、一部が調整データとして使用されてもよい。
例えば、一実施形態では、第2の生の鍵は行列であり、送信鍵(K)をカプセル化することは、送信鍵のビットを、第2の生の鍵行列の要素の少なくとも一部の最上位部分に加えること、および第2の生の鍵行列の要素の前記少なくとも一部のゼロ以上の最下位ビットを破棄することを含む。一実施形態では、送信鍵をカプセル化するために送信鍵に加えられない全てのビットが調整データとして使用され得る。しかし、帯域幅を減らすために、最下位ビットのうちの1つ以上が破棄されてもよい。なお、生の鍵行列の全ての行列要素を使用しなくてもよいことに留意されたい。使用されない要素は完全に破棄されてもよい。これにより帯域幅を節約できる。デバイス10において、カプセル化されたデータのカプセル化を解除することは、第1の生の鍵行列の少なくとも一部の要素のゼロ以上の最下位ビットを破棄すること、カプセル化されたデータから第1の生の鍵行列の少なくとも一部の要素を差し引くこと、および差し引いた結果を丸めることを含み得る。興味深いことに、ヘルパーデータはカプセル化された送信鍵に容易に組み込むことができる。
一実施形態では、公開鍵暗号化デバイスは、以下のうちの1つまたは複数を実行するように構成される。
a)高信頼性ビット関数を第2の生の共有鍵(k*)に適用し、第2の生の共有鍵の一部を選択し、第2の生の共有鍵の要素を指し示す高信頼性インデックスを取得し、ここで、指し示された要素からカプセル化のためのビットが導出され、さらに高信頼性インデックスを秘密鍵復号デバイスに送ること、および/または
b)第2の生の共有鍵の少なくとも一部のための調整データ(h)を生成し、ここで、調整データは、公開鍵暗号化デバイスおよび秘密鍵復号デバイスにおいて導出される第1の生の鍵と第2の生の鍵との間の差異を減らすことを可能にする情報を含み、さらに調整データ(h)を秘密鍵復号デバイスに送ること、および/または
c)送信鍵のためのパリティビットを生成し、ここで、送信鍵およびパリティビットは誤り訂正符号に従いコードワードを形成し、さらに、コードワードをカプセル化することを含む送信鍵のカプセル化を行うこと。
同様に、秘密鍵復号デバイスは、以下のうちの1つまたは複数を実行するように構成され得る。
a)公開鍵暗号化デバイスから高信頼性インデックスを受け取り、高信頼性インデックスによって指し示される第1の生の共有鍵の部分を選択すること、
b)第1の生の共有鍵(k’)の少なくとも一部のための調整データ(h)を受け取り、ここで、調整データは、公開鍵暗号化デバイスおよび秘密鍵復号デバイスにおいて導出された第1の生の鍵と第2の生の鍵との間の差異を減らすことを可能にする情報を含み、さらに第1の生の共有鍵の前記少なくとも一部、および調整データに調整関数を適用すること、および
c)カプセル化されたデータ(c)のカプセル化を解除することでニアコードワードを取得し、誤り訂正符号に従って誤り訂正を適用すること。
高信頼性ビットは、両方のパーティで等しく計算される可能性が高いビットである。例えば、生の鍵行列の一部の要素が信頼性が高いと判断され、信頼性の低い他の要素は破棄されてもよい。選択された行列要素について、調整データが取得され得る。最後に、さらなるエラーを計算するためにパリティビットが計算され得る。これらの3種類のヘルパーデータは独立しており、1つ、2つ、または3つ全てを使用して、秘密鍵復号の失敗率を減らすことができる。
一実施形態では、調整データおよびパリティビットは組み合わされているが、高信頼性ビットは組み合わされていない。この手法の利点は、要素のサイズに関する情報を共有する必要がないことである。ヘルパーデータはカプセル化されたデータに含められてもよいが、デバイス20からデバイス10に別に送られてもよい。好都合なことに、調整データは、例えば本明細書に示されるように、カプセル化された送信鍵に組み込むことができる。パリティビットと調整データとが組み合わされているが、高信頼性ビットは組み合わされていない実施形態の例が図3に示されている。
公開鍵暗号化デバイスまたは秘密鍵復号デバイスの一実施形態では、高信頼性ビットは、指し示された要素の1つまたは複数の最上位ビットであり、指し示された要素のための調整データは、重要性において高信頼性ビットに続く指し示された要素の1つまたは複数のビットであり、指し示された要素の1つまたは複数の最下位ビットは破棄され得る。指し示された要素(すなわち、高信頼性要素)は、公開鍵暗号化デバイスから秘密鍵復号デバイスに伝達され得る(例えば、行列内のそれらの要素の位置)。
秘密鍵復号デバイスの一実施形態では、高信頼性インデックスによって指し示される生の鍵内の要素が選択され、対応する調整データと合致する修正された要素に置き換えられる。例えば、修正された要素は、選択された要素と修正された要素との間のリー距離を最小化し得る。高信頼性ビットは、修正された要素の1つまたは複数の最上位ビットとして取得され得る。
一実施形態では、修正された要素は、公開鍵暗号化デバイスによって破棄されなかったであろう対応する調整データと合致するように決定される。修正された要素は、選択された要素と修正された要素との間のリー距離を最小化する。
図2bは公開鍵暗号化および秘密鍵復号の例を概略的に示す。図2bにおいて、「ind」は鍵のサイズまたは行列のサイズの指標を表す。
図2bで示される実施形態は、図2aの実施形態の上に構築されたものである。図2bに係るデバイス10は、登録フェーズ31の間、図2aのデバイス10と同じであり得る。しかし、暗号化フェーズ32の間、デバイス20は、送信鍵(K)の鍵サイズを取得し、鍵サイズに従って送信鍵(K)を生成するように構成される。例えば、暗号化すべき情報の機密性が高い場合、デバイス20は256ビットの送信鍵Kを選択し得る。しかし、情報の機密性が低い場合、デバイス20は128ビットの送信鍵Kを選択し得る。デバイス20は、そのような鍵サイズの送信鍵のカプセル化に対応するよう、第2の秘密鍵行列のための行列サイズを決定し得る。例えば、大きい送信鍵を収容するために、デバイス20は、より大きな、例えば、比例してより大きな第2の次元
Figure 0007413365000047
を選択し得る。
第2の次元
Figure 0007413365000048
は、
Figure 0007413365000049
が送信鍵の所望のビットサイズに等しいか、少なくとも同じ大きさを有するように選択され得る。例えば、128ではなく256ビットに対応するには、第2の次元
Figure 0007413365000050
は2倍の大きさとして選択され得る。例えば、
Figure 0007413365000051
が256または128になるために、
Figure 0007413365000052
は2または1であり得る。
選択された次元
Figure 0007413365000053
に応じて、デバイス20は、行列サイズに従う(例えば、システム次元dおよび第2の次元
Figure 0007413365000054
に従う)第2の秘密鍵行列を生成する。次に、大きい行列に基づいて、デバイス20は、例えば本明細書で、例えば図2aに関連して述べられたように、生の鍵を計算して送信鍵をカプセル化する。しかし、デバイス20は、鍵サイズおよび/または行列サイズの指標indを秘密鍵復号デバイスに送る。例えば、指標indは、送信鍵のサイズ(例えば、256もしくは128、または「大きい」もしくは「小さい」)、または第2の公開鍵/秘密鍵行列のサイズ(例えば、第2の次元(例えば、2または1))などであり得る。指標は暗示的であってもよく、例えば大きいまたは小さい第2の公開鍵行列を送ることによって暗示されてもよい。例えば、第2の公開鍵行列は、パケットのサイズまたは終わりなどを指し示す1つまたは複数のコンピュータネットワークパケット内で送信され、これにより、第2の公開鍵行列のサイズ(例えば、第2の次元のサイズ)が暗示される。
Figure 0007413365000055
の値がカプセル化に必要な値よりも大きい場合、(例えば鍵サイズが
Figure 0007413365000056
である)意図的に大きい送信鍵が選択されてもよい。その後、選択された送信鍵から、例えば鍵導出関数やハッシュなどによって、最終的な送信鍵が計算され得る。
デバイス10は、例えば本明細書で、例えば図2aに関連して述べられるように進行し得る。例えば、デバイス10は、受信された公開鍵行列を使用して第1の生の鍵を計算し、カプセル化された送信鍵のカプセル化を解除し得る。生の鍵のサイズは公開鍵のサイズに依存して異なり得る。
一実施形態では、公開鍵暗号化デバイスが必要な
Figure 0007413365000057
値を決定できるよう、第1の公開鍵が、公開鍵のパラメータとしてのパラメータ
Figure 0007413365000058
と共に送られる。例えば、
Figure 0007413365000059
は、
Figure 0007413365000060
となるように公開鍵暗号化デバイスによって計算され得る。例えば、一実施形態では、公開鍵は公開鍵行列b、公開鍵行列a、および次元
Figure 0007413365000061
を含む。後者は暗示的であってもよい。言い換えれば、デバイス10は、所与のセキュリティレベルを達成することを可能にするパラメータセットをデバイス20に送る。
一実施形態に係る公開鍵暗号化は様々な既存のプロトコルで使用され得る。例えば、実施形態はTLS、IPSec、VPNなどのプロトコルに組み込まれてもよい。例えば、
TLS1.3:クライアントがclient_helloを送る。client_helloは公開鍵行列を含み得る。client_helloは、公開鍵の代わりに、公開鍵行列をダウンロードできる場所を示すURLを含んでもよい。サーバがまだ公開鍵を持っていない場合(例えば、キャッシュ)、サーバは公開鍵行列をダウンロードし、ローカルに保存し得る。公開鍵行列を用いて、サーバは対称鍵を暗号化することができる。暗号化された対称鍵はクライアントに送信され、レコード層のための対称鍵導出の元となるマスターキーとして使用される。この例では、クライアントは秘密鍵復号デバイスの役割を果たす。
TLS1.2:この例では逆である。クライアントはリクエストを送り、サーバは、サーバ公開鍵行列を取得できる場所のURLを送る。公開鍵がまだ利用可能な状態でない場合、クライアントはダウンロードを行い得る。クライアントが公開鍵行列を取得した後、例えばレコード層で使用するために、クライアント送信鍵の暗号化に進み得る。この例では、クライアントは公開鍵暗号化デバイスの役割を果たす。
なお、公開鍵は事前に配布されていてもよい。例えば、ブラウザにおいて1つまたは複数(例えば、複数)の公開鍵行列が事前に配布されいてもよい。例えば、ソフトウェア(例えば、ブラウザ)が、事前配布を通じて公開鍵が取得されたか否かを確認することができるよう、公開鍵が公開鍵ID(例えば、鍵のハッシュ)で指し示されてもよい。事前配布のケースでは、帯域幅の非対称性が利点である。例えば、事前配布中は公開鍵行列が大きくても問題ないが、使用中はメッセージのサイズが小さくなる。また、例えば、(例えばTLSベースの)VPNでは、公開鍵は、通信を行う当事者達の一方または両方において事前に構成され得る。
一実施形態では、デバイス10は、暗号情報(例えば、SSLまたはTLSバージョン、あるいはクライアントの優先順位で、サポートされる暗号スイートなど)を列挙する第1のハローメッセージを送るように構成され得る。第1のハローメッセージへの応答として、デバイス20は第2のハローメッセージを送信し得る。第2のハローメッセージは同様の詳細事項を含み得る。デバイス20はまた、自身のデジタル証明書を第2のハローメッセージに含めて送信し得る。デバイス10は証明書を検証し得る。第1および/または第2のハローメッセージは、公開鍵または公開鍵の指標を含み得る。第2のハローメッセージおよび/または後続するメッセージにおいて、1つまたは複数の送信鍵について合意がなされる。送信鍵は、デバイス10とデバイス20との間のその後の通信を暗号化または認証するために使用され得る。複数の送信鍵について合意がなされる場合、それらは単一の鍵に結合されてもよく、例えば、ハッシングによって結合されたり、XORされたりしてもよい。
図2cはハンドシェイクの例を概略的に示す。ハンドシェイクは既存のプロトコルと組み合わせて、または既存のプロトコル外で使用され得る。図2cはメッセージ12~16を示しており、これらのメッセージの一部が組み合わせられてハンドシェイクにされてもよい。具体的には、メッセージ13および16の一方または両方が省かれてもよい。例えば、メッセージ15が省かれてもよい。時間は図の下側に向かって進む。
メッセージ13は事前配布であり、事前配布中、デバイス20は、秘密鍵復号デバイス10に関連付けられた少なくとも1つの第1の公開鍵行列(b)を取得する。その後、デバイス20および/またはデバイス10がハンドシェイクプロトコルを行うことを望むとき、デバイス20は、デバイス10から、秘密鍵復号デバイスの少なくとも2つの第1の公開鍵行列を指し示す少なくとも2つの識別子を受け取る。ここで、2つの第1の公開鍵行列は異なるサイズを有する。例えば、メッセージ14はハローメッセージであってもよい。メッセージ13とメッセージ14との間の省略記号は、ハンドシェイクの開始前にメッセージ13が送信されたことを示す。例えば、公開鍵行列はデバイス20によって、ブラウザの一部として、公開鍵データベース等から取得され得る。
デバイス20は、公開鍵暗号化デバイスの鍵キャッシュが2つの第1の公開鍵行列のうちの大きい方を含むかを決定し、大きい方を含むのであれば、大きい方の第1の公開鍵行列を選択することによって、少なくとも2つの第1の公開鍵行列のうちの1つを選択する。例えば、デバイス20は、以前に取得された複数の公開鍵行列が保存されている鍵キャッシュを含み得る。鍵キャッシュはブラウザの一部であってもよい。
デバイス20が公開鍵を選択するための様々なポリシーが存在し得る。第1の考慮事項はシステム次元のサイズであり得る。システム次元はセキュリティの考慮事項に基づいて選択され得る。次の考慮事項は、所望の送信鍵のサイズであり得る。さらなる考慮事項は、デバイス20からデバイス10に送信される最終的なメッセージ12のサイズであり得る。例えば、一実施形態では、デバイス20は、鍵キャッシュ内で入手可能な最大の鍵を選択するように構成され得る。
所望の鍵が鍵キャッシュ内で入手可能でない場合、具体的には、デバイス10の公開鍵のいずれも鍵キャッシュ内で入手可能でない場合、デバイス20は、選択された第1の公開鍵行列を要求するリクエストメッセージ15を送り得る。
これに応答して、要求された公開鍵がメッセージ16内でデバイス20に送信され得る。なお、メッセージ103およびメッセージ16は必ずしもデバイス10から来る必要はなく、代わりに、例えば公開鍵データベースまたはソフトウェアデータベースなどから取得されてもよい。
選択された公開鍵が利用可能になると、デバイス20は、例えば送信鍵をカプセル化する等を行うことによって、本明細書で説明されるようにしてメッセージ12に進み得る。デバイス20は、選択された第1の公開鍵行列の指標を秘密鍵復号デバイスに送る。送信鍵(K)は選択された第1の公開鍵でカプセル化される。デバイス20は、図2bに関連して説明したような実施形態を使用して、大きいまたは小さい送信鍵を選択的にカプセル化するために大きい公開鍵を使用してもよい。
これに対応して、デバイス10は、秘密鍵復号デバイスの少なくとも2つの第1の公開鍵行列の少なくとも2つの指標を含むメッセージ14を送り(2つの第1の公開鍵行列は異なるサイズを有する)、公開鍵暗号化デバイスから、選択された第1の公開鍵行列の指標を含むメッセージ12を受け取るように構成され得る。
図2cに係る実施形態は、追加の帯域幅を必要としない場合(例えば、鍵が事前に配布される場合)、より大きな鍵を使用できるという利点を有する。大き鍵は、例えば、大きい送信鍵および小さい送信鍵の両方を暗号化するために使用されてもよい。鍵が事前に配布されない場合、システムは、帯域幅の消費を減らすために、小さい公開鍵を選択し得る。
例えば、一実施形態では、大きい公開鍵は
Figure 0007413365000062
となるように選択される。ここで、Bは生の鍵行列の要素から取られるビットの数であり、例えばB=1、2、4などである。Keylengthは送信鍵のサイズであり、例えば256であってもよい。例えば、B=4であり、鍵の長さが256の場合、
Figure 0007413365000063
と選択され得る。小さい公開鍵は
Figure 0007413365000064
となるように選択され得る。先の例と同じ値の場合、
Figure 0007413365000065
が使用され得る。この選択により、両公開鍵の間で必要な帯域幅のバランスを取ることができる。公開鍵暗号化デバイスがすでに大きい鍵へのアクセスを有する場合、帯域幅を最小化するために大きい鍵を使用してもよい。どちらの鍵へのアクセスも有さない場合、帯域幅のバランスを取るために小さい鍵をリクエストしてもよい。一実施形態では、例えば、大きい第1の公開鍵は、小さい第1の公開鍵の少なくとも2倍大きい、少なくとも4倍大きい、または少なくとも8倍大きくてもよい。
例えば、公開鍵暗号化デバイスは、秘密鍵復号デバイスから、例えば、鍵識別子keyid101および
Figure 0007413365000066
で第1の鍵を示し、鍵識別子keyid102および
Figure 0007413365000067
で第2の鍵を示す{(keyid101,8),(keyid102,64)}を含むハローメッセージを受信し得る。両方の鍵、またはIDがkeyid102である鍵のみが公開鍵暗号化デバイスの鍵キャッシュ内で入手可能である場合、公開鍵暗号化デバイスは、例えば次元
Figure 0007413365000068
を使用して、この大きい方の鍵を使用することを選択し得る。入手可能な鍵がない場合、公開鍵暗号化デバイスは、例えば秘密鍵復号デバイスまたは他の場所からkeyid101をリクエストし得る。その場合、暗号化は
Figure 0007413365000069
を使用し得る。どちらの場合も、送信鍵は同じ長さを有し得る。
図3は公開鍵暗号化および秘密鍵復号の例を概略的に示す。図3では以下の表記法が使用されている。
- parity_bitsはエラー訂正に使用される情報を指す。
- obtain_parity_bits(k)は、kのいくつかのパリティビットが取得されることを意味する。例えば、パリティビットは誤り訂正符号に従って生成され得る。
- error_correct(k,parity_bits)は、parity_bitsを使用してkまたはparity_bitsにおける潜在的なエラーを訂正し、エラーが少ない可能性がより高いバージョンのkを取得することを意味する。
図3に係る実施形態は異なる種類のヘルパーデータを使用する。例えば、一実施形態によれば、デバイス20は送信鍵のためのパリティビットを計算する。例えば、パリティビットは送信鍵とともに、誤り訂正符号(例えば、BCH符号)に従うコードワードであり得る。コードワードは、例えば本明細書で説明されるように、生の鍵でカプセル化される。必要に応じて、カプセル化は調整データを含み得る。カプセル化解除のために、デバイス10は最初に調整データを適用して、ニアコードワード、例えば、ビットエラーを包含する可能性があるコードワードを取得する。ニアコードワードは、誤り訂正符号に関連付けられた誤り訂正アルゴリズムを使用して訂正され得る。誤り訂正および調整データを使用することにより復号失敗の確率が改善されるため、パラメータを小さくすることができ、鍵サイズを小さくすることでパフォーマンスを向上させることができる。パリティビットと調整データとの組み合わせは、公開鍵行列のサイズを小さくすることを可能にする好ましい組み合わせである。
このプロトコルのある実施形態では、第1の公開鍵は
Figure 0007413365000070
のベクトルを含む。暗号文は、第2の公開鍵uおよびカプセル化されたデータcを含む。第2の公開鍵行列uは、Z_p内の要素を有する次元がdのベクトルであり得る。暗号文のサイズを最小化するために、
Figure 0007413365000071
が使用されてもよい。これは、生の鍵が
Figure 0007413365000072
以下の要素を有することを意味する。生の共有秘密のサイズを最適化するために、可能な限り多くの要素からBビットを取る。よって、
Figure 0007413365000073
が使用される。カプセル化されたデータcは、送信鍵を暗号化し、長さκ=μBの送信鍵をカプセル化することができるよう、
Figure 0007413365000074
の要素を有し得る。Bは各ベクトルエントリーから抽出されるビットの数である。
一実施形態では、暗号文を最小化することが望まれる。公開鍵が長くなるという代償を払っても、暗号文のサイズをさらに最小化するための新しい洞察が得られる可能性があり、これは以下の通りである。
第1の公開鍵行列は長さdのベクトルを
Figure 0007413365000075
有する。これを用いて、
Figure 0007413365000076
をカプセル化することができる。ここで、κは送信鍵の長さであり、また、パリティビットとして機能するparity_bits_length個のビットが存在する。
追加のパリティビットを送信する必要があるため、ベクトルcは
Figure 0007413365000077
だけ長くなる。しかし、これらのパリティビットがあるため、このスキームは復号エラーに対してより優れているので、より小さい値のqおよびpを選択することができる。pがより小さくなるため、同じセキュリティレベルを維持できることから、dも小さくすることができる。要約すると、このように誤り訂正符号を加えることにより、公開鍵が長くなったとしても、暗号文のサイズをさらに小さくすることができる。B=1は効率的な選択肢であり、これを使用する場合は
Figure 0007413365000078
が必要となる。
一実施形態では以下のパラメータが採用される。
Figure 0007413365000079
103パリティビットにより、ビットエラーの訂正が可能になる。例えば、3ビットエラーの訂正を可能にする誤り訂正符号XEfが使用されてもよい。Xefについては、Sauvik Bhattacharyaらによる“Round5: Compact and Fast Post-Quantum Public-Key Encryption”に記載されている。XEfを使用する利点は、復号を一定時間で効率的に実行できるため、タイミング攻撃を回避できることである。
この実施形態では、暗号文のサイズは1KBより少し大きい。これは、そのような構造が、暗号文の断片化(fragmentation)を必要としない非環構成を可能とし得ることを示唆する。暗号文のサイズを約1.5kb未満に減らすことが重要である。これにより、約2kbのパケットが使用される、例えばインターネット上のパケットベースの通信における断片化が回避されるからである。
なお、スケーリングによって導入されるノイズの量は比較的多いことに留意されたい。上記の例では、秘密行列要素の16ビットが公開行列要素の8ビットに削減され、つまり、50%の削減が行われる。前述したパリティビットのない例と比較すると、14ビットが12ビットに削減され、これは約15%の削減である。同様に、秘密ビットと公開ビットとの間のビット長の差が2ビットから8ビットに増加した。ノイズが高いと、プロトコルの効率部分の効率が高くなるが、代わりに失敗率が高くなる。後者はパリティビットを使用して低減される。
一実施形態では、
Figure 0007413365000080
および
Figure 0007413365000081
である。例えば、κ≧128である。例えば、パリティビットの数は、少なくとも3つのエラーを訂正できるように選択され得る。一実施形態では、
Figure 0007413365000082
、≦0.72、≦0.7、≦0.6、または上記実施形態でのように0.5であってもよく、あるいはそれより小さくてもよい。なお、生の共有鍵内の全ての要素が使用されるため(例えば、
Figure 0007413365000083
)、いわゆる高信頼性ビットは利用されないことに留意されたい。このような高いノイズは低い
Figure 0007413365000084
と組み合わせられ、具体的には
Figure 0007413365000085
または
Figure 0007413365000086
等と組み合わせられ得る。
図4は公開鍵暗号化および秘密鍵復号の例を概略的に示す。図4の実施形態は、安全ビット、調整データ、およびパリティビットの3つの異なる誤り訂正ソースを含む。
図4において、
- hは調整ビットを含むヘルパーデータを表す。
- get_reconciliation(k)は、raw_key kから調整ビットを返す関数である。
- reconciliate(k,h)は、調整ビットhに基づきraw_key kを調整する関数である。
- safe_bits()は以下の2つの値を返す。(i)実際の高信頼性値、および(ii)取得値が定量化境界から離れているため失敗の確率を低くすることができるキービットの位置。Safe_bits()によって返される実際の値は、後にカプセル化などに使用される。位置は他方のパーティに交換され、それにより他方のパーティはどの位置が必要か知ることができる。
興味深いことに、コードワード、およびコードワードからランダムに生成される鍵を交換する際の失敗の確率を下げるために3つの情報源が使用され得る。さらに、コードワードをランダムに生成できるため、アクティブなセキュリティが向上する。なお、アクティブなセキュリティをさらに向上させるために、第2の秘密鍵行列がコードワードから導出されてもよい。コードワードは送信鍵およびパリティビットを含み得る。前記情報源は、高信頼性ビットの使用、生の鍵の係数のために抽出される調整データ、およびコードワードの一部であるエラー訂正冗長情報(例えば、パリティビット)を含む。
例えば、一実施形態では、デバイス10および20は生の鍵、例えば、Z_q内のn個の係数を有する行列鍵k*について合意し得る。例えば、生の鍵行列のある要素は、送信鍵の一部に、例えば1つまたは複数のビットにマッピングされ得る。例えば、Z_q内の値の半分が0にマッピングされ、半分が1にマッピングされてもよい(例えば、B=1)。エラーの発生率を下げるための高信頼性ビットの選択は、例えば、デコード境界から最も遠いいくつかの(例えば、mu個の)係数を選択することによって行われ得る。
鍵調整データは公開鍵暗号化デバイスによって抽出される情報であり、この情報は、例えば生の鍵(例えば、行列鍵)の選択された高信頼性係数(例えば、選択されたmu個の係数)についての情報であり得る。調整情報は、生の鍵の特定の係数がコードワードのどの部分にマッピングされているかに関して、秘密鍵復号デバイスが同じ決定を下すのを補助する。なお、これは選択された高信頼性係数に対してのみ実行すればよく、よって必要な作業は少なくて済む。
エラー訂正情報はパリティビットであり得る。第2のデバイスがカプセル化する情報にいくらかの冗長性を与えるよう、パリティビットは、ランダムに生成されたバイナリキーK、メッセージm、またはプレキーから抽出され得る。このようにすることで、先にエラーが発生した場合でも、デバイス10がエラーを訂正することができる。したがって、kappaビット長の鍵Kを送信しようとしており、(mu-kappa)個のパリティビットが存在する場合、これらのパリティビットは、デバイス10が鍵Kのkappa個のビットが正しいことを確認するのに役立つ。
多くの耐量子公開鍵暗号化の問題は、いくらかの失敗の可能性があることである。例えば、秘密鍵復号デバイスと公開鍵暗号化デバイスはノイジーな生の鍵をまず共有し、その後、例えば調整データを介して鍵が調整される。高信頼性ビット関数は、公開鍵暗号化デバイス(例えば、生の鍵を最初に導出するパーティ)が、生の鍵のうち秘密鍵復号デバイスによって同じように導出される可能性が高いビット、および生の鍵のうち同じになる可能性が低いビットを識別することを可能にする。
高信頼性ビット関数の単純な実装形態では、キービットを取得するためにサンプリングされる係数の2つ以上の中心点が定められる。(例えば閾値に基づき)中心点から離れすぎている係数は破棄され、それ以外の係数は中心点に関連付けられた値にサンプリングされ得る。例えば、中心点の数は2の累乗であり得る。例えば、行列要素は様々な異なる環などから取得され得る。
高信頼性ビットサンプリングでは、環の次元によって与えられる全てのビットが鍵のために必要なわけではないという仮定を利用する。通常、基礎の行列yのサイズは必要な鍵の長さよりもはるかに大きい。例えば、公開鍵暗号化デバイスは、yのうち合致する可能性が最も高いm個のインデックスを選択し得る。これらの安全な係数は、0ビットまたは1ビットにマップされる(k=0およびk=1)係数範囲の中心点に最も近いものであり得る。例えば、qを法とする環では、係数が範囲
Figure 0007413365000087
に含まれる場合、当該係数は0にマップされ、係数が範囲
Figure 0007413365000088
に含まれる場合、当該係数は1にマップされ得る(またはその逆)。係数がどちらの範囲にも含まれない場合、係数は信頼できるビットではない。値bは部分的にビットの信頼性を決定する。例えば、この場合はq/8と選択され得る。bの値が小さいほど信頼性は高くなるが、キービットは少なくなる。この場合、中心点はq/4および3q/4、またはこれらを丸めたものであり得る。
上記の手順を適用する公開鍵暗号化デバイスは、信頼できるビットのインデックスとそれらに対応するキービットを取得する。信頼できるインデックスは秘密鍵復号デバイスに伝達され得るが、信頼できるキービットは伝達されない。秘密鍵復号デバイスは公開鍵暗号化デバイスによって示されたインデックスにおけるビットからキービットを取得することができる。これらのビットは信頼性が高いのでエラー率は低くなる。
参照により本明細書に援用される論文Hila5には高信頼性ビット関数のさらなる実装形態が示されている。例えば、セクション3のアルゴリズムが適用されてもよい。発明者らは、高信頼性ビット関数を多様な状況、例えば異なる基礎となる環またはオブジェクト、例えば具体的には行列について適用できることを見出した。
実施形態では、両パーティは2つの生の鍵、例えばほぼ等しいが全く同一ではない行列を生成する。正確な合意に達するために、いくらかの調整データが送られる。そのためのスキームは、2016年11月4日にEPOに出願された同出願人による出願番号16197277.3の特許出願、“REACHING AGREEMENT ON A SECRET VALUE”で説明されている。例えば、頁7~10の方法が実施形態において調整のために使用され得る。この引用特許出願の他の箇所に開示されているバリエーションも採用可能である。
本願では以下の3つの関数に次の表記法を使用する。
1.丸め関数
Figure 0007413365000089

Figure 0007413365000090
に対して、
Figure 0007413365000091
とする。すると、
Figure 0007413365000092
直感的には、
Figure 0007413365000093
は、
Figure 0007413365000094
のB個の最上位ビットを抽出する。ここで、2番目のコンポーネントは、バイアスのない丸め誤差を保証するための丸め係数である。Bは記号vから抽出されるビットの数を示し、bはヘルパーデータビットの数を示す。一実施形態ではqは2の累乗であり得る。
2.クロス丸め(cross-rounding)関数
Figure 0007413365000095

Figure 0007413365000096
に対して、
Figure 0007413365000097
とする。すると、
Figure 0007413365000098
直感的には、
Figure 0007413365000099
は、vの(B+b)個の最上位ビットのb個の最下位ビットを抽出する。
3.調整関数rec(w,b):
Figure 0007413365000100
に対して、
Figure 0007413365000101
ここで、vは
Figure 0007413365000102
であるようなwに最も近い要素である。最も近い要素wはリー距離に応じて取得され、例えばmin(|v-w|,q-|v-w|)である。
これらの3つの関数は、行列に対して要素ごとに適用され得る。上記の調整関数は本明細書での例として使用されている。前述したように、上記の引用出願内の調整方法を使用することも可能である。クロス丸め関数は調整データを取得するために適用され、丸め関数は、調整されるデータ(例えば、高信頼性ビット)を取得するために適用され得る。調整データを後に調整関数において使用することで調整されたデータを復元することができる。言い換えれば、
Figure 0007413365000103
であり、ここで、vおよびwは互いの閾値距離内にあるものと仮定される。
図5は、一実施形態に係る暗号システム301の例を概略的に示す。システム301は、秘密鍵復号デバイス300および公開鍵暗号化デバイス350を備え、さらに任意選択的に公開鍵デポジトリ302を備える。例えば、第1のデバイス300および第2のデバイス350は、第1のデバイス10、100および/または第2のデバイス20、200等のデバイス上に実装されてもよい。暗号システム301は、図4に示すように公開鍵暗号化システムを実装し得る。暗号システム301は、例えば上記実施形態で使用されていない要素を省くことによって、必要に応じて他の実施形態に適合させることができる。
第1および第2のデバイス300および350は暗号プロトコルを実行するように構成される。両デバイスは、一方のデバイスから他方のデバイスにデータを安全に渡す機能を備える。様々な暗号プロトコルがこの同一の機能を使用し得る。例として、この機能を使用する2つのプロトコルについて説明する。
例えば、第1および第2のデバイスは、例えば、特定のデバイス(例えば、第1のデバイス300)が復号できるように他のデバイス(例えば、第2のデバイス350)がメッセージ(m)を暗号化できるように設計された公開鍵暗号化のために構成され得る。しかし、公開鍵で暗号化されたメッセージの内容は、暗号化デバイスおよび復号デバイス(例えば、第2のデバイス350および第1のデバイス300)以外のデバイスが取得することはできない。公開鍵暗号化の場合、暗号化されたメッセージを第1の公開デバイスに送るために、複数の第2のデバイスが第1のデバイスの同一の公開鍵(例えば、同一の第1の公開鍵および公開オブジェクト)を使用することができる。2つの第2のデバイスが同じ公開鍵を使用してメッセージを暗号化したとしても互いの通信を復号することはできない。
第1のデバイス300および第2のデバイス350はそれぞれ通信インターフェース305および355を含む。両通信インターフェースは相互に通信するように構成される。(例えば有線または無線ネットワークを介する)通信インターフェースの例が本明細書に記載されている。
第1のデバイス300は、第1の秘密鍵(r)および第1の秘密鍵から導出される第1の公開鍵(b)を生成するように構成された公開/秘密鍵生成器315を備える。秘密鍵から公開鍵を導出するために公開オブジェクト(a)(例えば、公開行列)が使用され得る。例えば、公開鍵を生成することは、公開オブジェクトと乗算すること、および/または何らかのノイズを導入すること(例えば、乗算結果のスケールダウン、ノイズ項の追加など)を含み得る。秘密鍵および公開オブジェクトは(例えば、有限体または環上の)行列であり得る。
第1の秘密鍵および公開鍵は一時的に生成されてもよい。例えば、後者は、特に第1および第2のデバイスが何らかの他の認証メカニズム(例えば帯域外メカニズム、例えば証明書ベースの認証など)を使用して互いを認証する場合、鍵共有プロトコルのために行われ得る。また、第1の秘密鍵および公開鍵は長期間使用するために生成されてもよい。例えば、第1の公開鍵は、外部の公開鍵デポジトリ302に格納され得る。公開鍵デポジトリ302はまた、公開オブジェクト(a)またはそのためのシードを格納してもよい。
第1の公開鍵は、例えば通信インターフェース305および355を介して、第1のデバイス300から第2のデバイス350に伝送される。これは直接通信によって行われもよいし、または間接的に(例えば、公開鍵デポジトリ302を介して)行われてもよい。必要に応じて、第1の公開鍵とともに公開オブジェクト(a)が伝送されてもよい。例えば、公開オブジェクトは、公開オブジェクト(a)を生成するための元となるシードを送ることによって伝送され得る。
第2のデバイス350は、例えば公開鍵デポジトリ302から第1の公開鍵を取り出すように構成された公開鍵取得器360を備えることができる。例えば、このタイプの取得は公開鍵暗号化に適している。しかし、公開鍵は第1のデバイスから直接取得されてもよい(場合によっては帯域外で、例えば電子メールで)。公開鍵は、公開鍵暗号化交換に必要になるまで保存されてもよい。しかし、第1の公開鍵はまた、即時使用のために、例えば鍵共有動作のために受け取られてもよく、例えば、この場合は第1の公開鍵および/または公開オブジェクトが一時的に生成されてもよい。
第2のデバイス350は、第2の秘密鍵(s)を生成するように、かつ第2の秘密鍵(s)から第2の公開鍵(u)を生成するように構成された公開/秘密鍵生成器365を備え得る。第2の秘密鍵(s)および第2の公開鍵(u)は、第1の秘密鍵(r)および第1の公開鍵(b)よりも小さくてもよく、例えば、エントリーがより少なくてもよい。
第2の公開鍵は、第1の公開鍵の生成と同じ公開オブジェクトを使用する。第1および第2の秘密鍵は、それぞれのデバイスのみが知る秘密である。必要に応じて、例えばバックアップやキーエスクローなどのために、これらが信頼できるパーティ間で共有されてもよい。公開鍵および公開オブジェクトはセキュリティのために秘密でなければならないとは限らない。しかし、必要に応じて、1つ以上が第1および第2のデバイスのみが知る秘密であってもよい。例えば、第1の公開鍵は第2のデバイスとしか共有されなくてもよく、その逆も可能である。
第2のデバイス350はコードワード生成器370を備え得る。コードワード生成器370は、誤り訂正符号に従ってコードワードを生成するように構成される。誤り訂正符号は線形コードまたは非線形コードであり得る。例えば、誤り訂正符号はBCHコード、リードソロモンコード、アダマールコードなどであり得る。複数のコードが連結されてもよい。連結コードは、妥当な複雑さで優れたパフォーマンスを実現するために2つ以上のより単純なコードから構築された誤り訂正符号である。例えば、アダマールコードがBCHコードと連結されてもよい。
コードワード内にはカプセル化のためのデータがエンコードされる。例えば、コードワードはデータ部分(例えば、データビット)とパリティ部分(例えば、パリティビット)とに分割され得る。例えば、カプセル化のためのデータはデータビットに含まれ得る。コードワードを生成する1つの方法は、データ部分を生成し、データ部分からパリティビットを計算することである。例えば、データビットを有するデータベクトルをパリティ行列と行列乗算することでパリティビッドが、または場合によっては完全なコードワードが取得され得る。コードワードは、カプセル化のためのデータとパリティビットを組み合わせることによって取得され得る。例えば、データ部分とパリティ部分が連結されてもよい。ただし、対応する誤り訂正符号に従って有効なコードワードを生成するために、データビットとパリティビットの任意の並べ替えが使用され得る。例えば、データビットとパリティビットが交互にされてもよい。なお、調整データは典型的には単一のq-ary(q元)シンボル上で計算されるが、パリティデータは典型的には複数のビットから計算される(なお、qは2よりはるかに大きい)。
コードワードは様々な方法で使用され得る。公開鍵暗号化はまた、例えばそのためにランダムに生成された対称鍵によって、第2のデバイス350にてメッセージ(m)を暗号化し、暗号化対称鍵をコードワード内に符号化することによって得られ得る。追加の鍵導出ステップが使用されてもよい。例えば、ランダムなプレキー(pre-key)がコードワード内にエンコードされ、プレキーから暗号化鍵が導出されてもよい。例えば、導出は鍵導出関数(KDF)、例えばハッシュ関数を使用することができる。例えば、後者の場合、暗号化されたメッセージは、データを復号するために必要なデータ(例えば、第2の公開鍵)および後述するような他のデータと共に、第2のデバイスから第1のデバイスに送信され得る。送信鍵はコードワード内に直接的に符号化されてもよいし、コードワードから導出されてもよい。
興味深いことに、コードワードは第1の秘密鍵、第1の公開鍵、第2の秘密鍵、および第2の公開鍵から独立して生成される。このため、プロトコルはアクティブな攻撃に対して優れた耐性を有する。攻撃者は、第1の秘密鍵と第2の秘密鍵の選択を通じて鍵に影響を与えることができないため、共有鍵に影響を与えられる可能性が少なくなる。一実施形態では、第2の秘密鍵行列はコードワードから、または送信鍵から導出される。
独立した生成は、(例えばメッセージの場合には)メッセージが、公開鍵暗号化から独立したアプリケーション(例えば、金融または通信アプリケーションなど)から生成される場合に得られ得る。独立した生成は、例えばランダム生成によって得られ得る。例えば、コードワード内の鍵またはプレキーは、例えば、真の乱数生成器を使用して、または第1および第2の秘密鍵から独立したシードを使用する疑似乱数生成器を使用することで独立して生成され得る。ここで、シードは例えばそれ自体がランダムに生成されるか、または事前に決定される等して得られる。例えば、コードワードは、第1の公開鍵が受け取られる前、および/または第2の秘密鍵が生成される前に、第2のデバイスにおいて生成されてもよい。これも独立性を保証する。
第2のデバイス350はDiffie-Hellmanユニット375を備える。Diffie-Hellmanユニット375は、第1の公開鍵(b)および第2の秘密鍵(s)から第2の生の共有鍵(k*)を生成するように構成される。例えば、Diffie-Hellmanユニット375は、第1の公開鍵および第2の秘密鍵にDiffie-Hellman関数を適用するように構成され得る。例えば、Diffie-Hellman関数は乗算であってもよい。第2のデバイス350は自身の第2の公開鍵を第1のデバイス300に伝送するように構成される。第1のデバイス300はDiffie-Hellmanユニット325を備える。Diffie-Hellmanユニット325は、例えば同じDiffie-Hellman関数を適用することによって、第2の公開鍵(u)および第1の秘密鍵(r)から第1の生の共有鍵(k’)を生成するように構成される。残念ながら、一部のタイプのDiffie-Hellman関数では、必ずしも同一ではないが、第1および第2の生の鍵が互いに近い可能性がある。これが生じる可能性は基礎となるDiffie-Hellman関数によって異なる。ほとんどの用途では生の鍵が互いに異なる可能性がある程度受け入れられる可能性があるが、許容される可能性の高さは用途に依存する。ただし、通常はこの可能性が低いことが好ましい。生の鍵は、秘密鍵および公開鍵と同じ数学的タイプのもの、例えば行列であってもよい。
第2のデバイス350は高信頼性ビット生成器380および調整データ生成器385を備える。高信頼性ビット生成器380は、高信頼性ビット関数を第2の生の共有鍵(k*)に適用することで、高信頼性インデックスを取得するように、および指し示された係数から導出される高信頼性ビットを取得するように構成される。高信頼性インデックスは生の共有鍵の係数を指し示す。例えば、高信頼性ビット生成器380は、生の鍵のどの係数がサンプリング境界に近く、どの係数が近くないかを決定し得る。例えば、サンプリング境界から閾値内にある生の鍵の係数は信頼できないものとして破棄され得る。残りの信頼できる係数は高信頼性インデックスによって指し示され得る。高信頼性ビットは高信頼性係数をサンプリングすることによって取得され得る。
十分な数の係数が残っていない場合、いくつかの選択肢が考えられる。例えば、プロトコルを終了する、新しい第1および/または第2の秘密鍵、および/または新しい公開オブジェクトを用いてプロトコルをやり直す、より短い鍵を導出する、または破棄する係数を少なくする等の選択肢が考えられる。閾値内のすべての係数を選択する代わりに、所定の数の係数、例えばmu個の係数が選択されてもよく、また、最も信頼性が高い係数、例えば最初のmu個の最も信頼性が高い係数が選択されてもよい。
高信頼性ビットを実装する1つの方法は、1つ以上の、例えばB個の係数の最上位ビットを取得することである。例えば、選択された係数ごとの高信頼性ビットの数は、例えば1または2であり得る。一部の実施形態では、例えば、大きな行列が使用される場合、係数の数が多い。これにより、高い信頼性、例えば低い値のBが実現可能になる。他の実施形態の場合、例えばIoTデバイスの場合、より高い値のBが使用され得る。有限環での計算は、2の累乗を法とする整数の有限環で行われてもよい。後者が選択される場合、高信頼性ビットがより均一に分布されるという利点がある。
調整データ生成器385は、生の共有鍵の指し示された係数のための調整データ(h)を生成するように構成される。調整データは、第1および第2のデバイスにおいて導出された第1および第2の生の鍵の間の差異を低減することを可能にする情報を含む。例えば、調整データを適用すると、第1のデバイスと第2のデバイスの生の鍵の係数間の差(例えば、リー距離)が低減し、結果として、両鍵が同じ高信頼性ビットを生成する可能性が高くなる。コードワード内のパリティビット、および調整データは共にノイズを低減する役割を果たすが、パリティビットは複数のデータビット上で計算される一方、調整データは生の共有鍵内の係数上で計算される。調整データは高信頼性ビットの信頼性を一層高める。
調整データを実装する1つの方法は、高信頼性ビットとして選択されたビットに続く1つ以上の、例えばb個の係数のビットを取得することである。例えば、これらは重要性においてB個のビットに続くb個のビットであり得る。例えば、選択された係数ごとの調整ビットの数は、例えば1または2であり得る。調整ビットの数が少ないと、通信のオーバーヘッドが削減されるという利点がある。ただし、大きな量の調整ビットも可能である。
第2のデバイス350はカプセル化ユニット390を含み得る。カプセル化ユニット390はカプセル化関数、例えばXORを適用することによって、高信頼性ビットを用いてコードワードをカプセル化するように構成される。カプセル化はワンタイム・パッド・カプセル化であり得る。一実施形態では、高信頼性ビットを知らずにカプセル化されたコードワードから取得できるコードワードに関する情報はゼロであるという点で、カプセル化関数は完全なセキュリティを得る。例えば、XOR関数は、本明細書に記載の他のカプセル化関数のうちの1つに対して使用され得る。
なお、カプセル化は、パリティビットだけでなく、データビットおよびパリティビットを含むコードワード全体に適用されることに留意されたい。さらに、カプセル化は生成されたデータ、例えばメッセージ、鍵、プリキーなどに適用され、第1または第2の公開鍵または秘密鍵のうちの1つまたは複数から導出されたデータには適用されない。
第2のデバイスは、第2の公開鍵(u)、調整データ(h)、カプセル化されたデータ(c)、および高信頼性インデックスを第1のデバイスに伝送するように構成される。伝送は第1の公開鍵の受け取りに応答して行われてもよいし(例えば、鍵共有の場合)、そうでなくてもよい(例えば、公開鍵暗号化の場合)。
第1のデバイス300は、第2のデバイスから第2の公開鍵(u)、調整データ(h)、およびカプセル化されたデータ(c)、ならびに高信頼性インデックスを受け取るように構成される。第1のデバイス300は、高信頼性インデックス(safe_bits)によって指し示される第1の生の共有鍵(k’)の係数に調整関数内の調整データ(h)を適用することで高信頼性ビット(k)を取得するように構成された調整ユニット335を備える。例えば、信頼できると指し示された係数は調整ビットを使用して調整され、その後、高信頼性ビットを得るためにサンプリングされ得る。
第1のデバイス300は、カプセル化されたデータ(c)をカプセル化解除するように構成されたカプセル化解除ユニット340を備え、高信頼性ビットを使用することでニアコードワードを取得する。第2のデバイスのコードワードが直接取得されない理由は、高信頼性ビットおよび調整が利用されても、依然として解消されていない生の鍵間の差が存在する可能性があるからである。第1のデバイス300は、ニアコードワードにエラー訂正関数を適用することでコードワードを取得するように構成されたエラー訂正器320を備える。
最後に、コードワードがデコードされることで、例えばデータ部分が取得され、よってメッセージ(m)、鍵(K)、またはプレキーが取得され得る。第1のケースでは、メッセージに基づいて何らかのアクションが取られ、例えばメッセージがコミュニケーションアプリ内で表示されてもよい。第2のケースでは、例えば、鍵はさらに保護された通信に使用され得る。第3のケースでは、プレキーに鍵導出関数を適用することで共有鍵が取得され得る。
以下、信頼性および調整に関して、小規模ながら説明のための例を示す。=2=32、B=b=1とする。係数を5ビットシーケンスとし、最上位ビットは左端である。例えば、一実施形態では、第2のデバイスは係数00000、00001、01110、01111、10000、10001、11110、および11111を破棄し得る。なぜならそのような係数は、係数にわずかな加算または減算をするだけで最上位ビットが反転するからである。
破棄されない係数は00010、00011、・・・、01101、および10010、10011、・・・、11101である。最初のリスト内の係数は0の高信頼性ビットを与え、最後のリスト内の係数は1の高信頼性ビットを与える。これらのシーケンスの2番目のビットが調整データとされてもよい。選択された係数の調整データは他のデバイスに伝送されるが、高信頼性ビットは伝送されない。
自身の生の鍵を計算した後、第1のデバイスは、第1のデバイスによって指し示された係数に従って係数を選択する。例えば、第1のデバイスの生の鍵内の係数が01101であり、その係数の調整データが0であるとする。第1のデバイスにおける当該係数の2番目のビットは0ではないので、これはエラーが発生したことを第1のデバイスに示す。2番目のビットが0で、かつ破棄されなかった、選択された係数01101に最も近い値は10010である。なお、00111の2番目のビットも0であるが、選択された係数01101からより離れている。したがって、第1のデバイスは、この選択された係数のための高信頼性ビットとして1を選択する。
なお、ノイズが大きかった場合、この訂正は誤っている可能性があり、第2のデバイスは係数00111を有していたと考えられる。このような場合は誤った高信頼性ビットが選択される。興味深いことに、並程度の量の調整データであっても、これらの類のエラーはまれである。これは、調整データの量を増やすよりも、誤り訂正符号に依拠して残りのエラー数を訂正する方が効率的であることを意味する。リー距離の最小化は、マッチが見つかるまでリー距離を増やしつつ候補となる修正された係数(candidate modified coefficients)を試すことで単純に実行され得る。より高度なアルゴリズム(例えば、当該技術分野で記載されているアルゴリズム)も可能である。
信頼性と調整の間には興味深い相乗効果がある。正しい調整データを備えた最も近い修正された係数が公開鍵暗号化デバイスによって破棄される可能性がある。正しい調整データを備えた最も近い修正された係数と、公開鍵暗号化デバイスによって破棄されていないという追加の制約は異なる高信頼性ビットを有し得る。これを考慮に入れると、調整ビットの効率がさらに向上する。例えば、上記の例を続けて使用し、第2のデバイスが調整データ0で係数01100を取得するとする。最も近い修正された係数は10000であるが、破棄されなかったであろう最も近い係数は00111である。したがって、第1のデバイスは、高信頼性ビットとして1ではなく0を取得する。
一部の実施形態では、公開鍵暗号化デバイスのプロセッサは、少なくとも送信鍵に基づいて最終鍵を導出し、最終鍵でメッセージを暗号化し、暗号化されたメッセージを秘密鍵復号デバイスに送るように構成される。一部の実施形態では、秘密鍵復号デバイスのプロセッサは、秘密鍵復号デバイスから暗号化されたメッセージを受け取り、少なくとも送信鍵に基づいて最終鍵を導出し、最終鍵を用いて暗号化されたメッセージを復号するように構成される。
例えば、一実施形態では、公開鍵暗号化デバイスおよび/または秘密鍵復号デバイスは、暗号ハッシュ関数を送信鍵に適用することに少なくとも部分的に基づいて、最終鍵を導出し得る。説明のための例として、最終鍵は、暗号ハッシュ関数を送信鍵に、および任意選択的に、公開鍵の一部または全体に適用することによって、送信鍵Kから導出され得る(例えば、
Figure 0007413365000104
)。そのような暗号ハッシュGが最終鍵として直接使用されてもよいし、あるいは任意選択的に、そのような暗号ハッシュの少なくとも一部(例えば、
Figure 0007413365000105
)を、例えばマスクされた送信鍵cを用いてさらにハッシングすることで最終鍵(例えば、
Figure 0007413365000106
)が取得されてもよい。
以下の番号が付された実施形態がさらに考えられる。
1.
- 秘密鍵復号デバイス(10)と通信するように構成された通信インターフェースと、
- プロセッサとを備える公開鍵暗号化デバイス(20)であって、前記プロセッサは、
- 秘密鍵復号デバイスに関連付けられた第1の公開鍵行列(b)を取得し、
- 送信鍵(K)を生成し、
- 第2の秘密鍵行列(s)を生成し、第2の秘密鍵行列(s)から第2の公開鍵行列(u)を計算し、ここで、第2の公開鍵行列(u)は第1の公開鍵行列(b)よりも少ない行列要素を有し、
- 第2の秘密鍵行列(s)および第1の公開鍵行列(b)から第2の生の共有鍵(k*)を計算し、ここで、第2の生の共有鍵を計算することは、第2の秘密鍵行列(s)と第1の公開鍵行列(b)との間の行列乗算を含み、
- カプセル化関数を適用することによって、第2の生の共有鍵の少なくとも一部を用いて送信鍵(K)をカプセル化してカプセル化されたデータ(c)を取得し、
- 第2の公開鍵行列(u)およびカプセル化されたデータ(c)を秘密鍵復号デバイスに送るように構成される、公開鍵暗号化デバイス。
2.
- 公開鍵暗号化デバイス(20)と通信するように構成された通信インターフェースと、
- プロセッサとを備える秘密鍵復号デバイス(10)であって、前記プロセッサは、
- 第1の秘密鍵行列(r)を生成して、第1の秘密鍵行列(r)から第1の公開鍵行列(b)を計算し、公開鍵暗号化デバイスに第1の公開鍵行列(b)を送ることを許容し、
- 公開鍵暗号化デバイスから第2の公開鍵行列(u)およびカプセル化されたデータ(c)を受け取り、ここで、第2の公開鍵行列(u)は第1の公開鍵行列(b)よりも少ない行列要素を有し、
- 第2の公開鍵行列(u)および第1の秘密鍵行列(r)から第1の生の共有鍵(k’)を計算し、ここで、第1の生の共有鍵を計算することは、第2の公開鍵行列(u)と第1の秘密鍵行列(r)との間の行列乗算を含み、
- 第1の生の共有鍵(k’)の少なくとも一部を使用して、カプセル化されたデータ(c)のカプセル化を解除することで送信鍵を取得するように構成される、秘密鍵復号デバイス。
3.上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイスであって、
- 公開鍵暗号化デバイスのプロセッサは、
- 送信鍵(K)の鍵サイズを取得し、前記鍵サイズに従って送信鍵(K)を生成し、
- 前記鍵サイズの送信鍵のカプセル化に対応するよう、第2の秘密鍵行列(s)の行列サイズを決定し、行列サイズに従って第2の秘密鍵行列(s)を生成し、
- 鍵サイズおよび/または行列サイズの指標を秘密鍵復号デバイスに送るように構成され、および/または
- 秘密鍵復号デバイスのプロセッサは、
- 公開鍵暗号化デバイスから鍵サイズおよび/または行列サイズの指標を受け取り、
- 受け取られたサイズに応じて、カプセル化されたデータ(c)のカプセル化を解除して送信鍵を取得するように構成される、上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイス。
4.上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイスであって、
- 公開鍵暗号化デバイスのプロセッサは、送信鍵を用いてメッセージ(m)を暗号化し、暗号化されたメッセージを秘密鍵復号デバイスに送るよう構成され、および/または
- 秘密鍵復号デバイスのプロセッサは、秘密鍵復号デバイスから暗号化されたメッセージを受け取り、送信鍵を用いて暗号化されたメッセージを復号するように構成される、上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイス。
5.上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイスであって、
- 第2の生の鍵は行列であり、送信鍵(K)をカプセル化することは、送信鍵のビットを、第2の生の鍵行列の少なくとも一部の要素の最上位部分に加えること、および第2の生の鍵行列の前記少なくとも一部の要素のゼロ個以上の最下位ビットを破棄することを含み、
- 第1の生の鍵は行列であり、カプセル化されたデータのカプセル化を解除することは、第1の生の鍵行列の少なくとも一部の要素のゼロ個以上の最下位ビットを破棄すること、カプセル化されたデータから第1の生の鍵行列の前記少なくとも一部の要素を差し引くこと、および差し引かれた結果を丸めることを含む、上記番号が付された実施形態のうちのいずれかの公開鍵暗号化デバイスまたは秘密鍵復号デバイス。
図6aは、一実施形態に係る公開鍵暗号化方法(400)の例を概略的に示す。方法400は、
- 秘密鍵復号デバイスとの通信を確立するステップと(410)、
- 秘密鍵復号デバイスに関連付けられた第1の公開鍵行列(b)を取得するステップと(420)、
- 送信鍵(K)を生成するステップと(430)、
- 第2の秘密鍵行列(s)を生成し、第2の秘密鍵行列(s)から第2の公開鍵行列(u)を計算するステップであって、第2の公開鍵行列(u)は第1の公開鍵行列(b)よりも少ない行列要素を有する、ステップと(440)、
- 第2の秘密鍵行列(s)および第1の公開鍵行列(b)から第2の生の共有鍵(k*)を計算するステップであって、第2の生の共有鍵の計算は、第2の秘密鍵行列(s)と第1の公開鍵行列(b)との間の行列乗算を含む、ステップと(450)、
- カプセル化関数を適用することによって、第2の生の共有鍵の少なくとも一部を用いて送信鍵(K)をカプセル化して、カプセル化されたデータ(c)を取得するステップと(460)、
- 第2の公開鍵(u)およびカプセル化されたデータ(c)を秘密鍵復号デバイスに送るステップと(470)を含む。
図6bは、一実施形態に係る秘密鍵復号方法500の例を概略的に示す。方法500は、
- 公開鍵暗号化デバイスとの通信を確立するステップと(510)、
- 第1の秘密鍵行列(r)を生成し、第1の秘密鍵行列(r)から第1の公開鍵行列(b)を計算し、第1の公開鍵行列(b)を公開鍵暗号化デバイスに送ることを許容するステップと(520)、
- 公開鍵暗号化デバイスから第2の公開鍵行列(u)およびカプセル化されたデータ(c)を受け取るステップであって、第2の公開鍵行列(u)は第1の公開鍵行列(b)よりも少ない行列要素を有する、ステップと(530)、
- 第2の公開鍵行列(u)および第1の秘密鍵行列(r)から第1の生の共有鍵(k’)を計算するステップであって、第1の生の共有鍵の計算は、第2の公開鍵行列(u)と第1の秘密鍵行列(r)との間の行列乗算を含む、ステップと(540)、
- 第1の生の共有鍵(k’)の少なくとも一部を使用してカプセル化されたデータ(c)のカプセル化を解除することで送信鍵を取得するステップと(550)を含む。
当業者には明らかであるように、この方法を実行する多くの異なる態様が存在する。例えば、ステップは記載または図示されている順序で実行されてもよいが、ステップの順序を変更したり、一部のステップを並行して実行したりすることも可能である。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法の改良を表し、または方法と無関係であってもよい。さらに、あるステップは、次のステップが開始される前に完全に終了していなくてもよい。
方法の実施形態は、プロセッサシステムに方法400および/または500を実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線または無線を介する信号として、またはインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロードおよび/またはリモート使用可能にされてもよい。方法の実施形態は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されてもよい。
本発明は、コンピュータプログラム、特に、本発明を実施するように適合された、キャリア上のまたはキャリア内のコンピュータプログラムにも及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、部分的にコンパイルされた形式のようなオブジェクトコード、または方法の実施形態の実装のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、上記方法のうちの少なくとも1つの方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、および/または静的に若しくは動的にリンクされ得る1つまたは複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも1つの上記システムおよび/または製品の手段に対応するコンピュータ実行可能命令を含む。
上記実施形態は本発明を限定するものではなく、当業者は多くの代替的実施形態を設計することができることに留意されたい。
特許請求の範囲において、括弧間に置かれた参照符号は、請求項を限定するものとして解釈されるべきではない。「含む」という動詞およびその活用形の使用は、請求項に記載された要素またはステップ以外の要素またはステップの存在を排除するものではない。単数形の要素は、複数のかかる要素の存在を排除するものではない。要素のリストの前にある「少なくとも1つ」などの表現は、リスト内の全ての要素または任意の部分集合の選択を表す。例えば、「A、B、およびCのうちの少なくとも1つ」という表現は、Aのみ、Bのみ、Cのみ、AおよびBの両方、AおよびCの両方、BおよびCの両方、またはA、B、C全てを含むものと理解されたい。本発明は、複数の別個の要素を含むハードウェアによって、および適切にプログラムされたコンピュータによって実装され得る。いくつかの手段を列挙する装置クレームにおいて、これらの手段のうちのいくつかは、同一のハードウェアアイテムによって具現化されてもよい。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせが好適に使用することができないとは限らない。
特許請求の範囲において、括弧内の参照符号は、例示的実施形態の図面内の参照符号または実施形態の数式を指し、したがって、請求項の明瞭さを高める。これらの参照符号は、請求項を限定するものとして解釈されるべきではない。

Claims (31)

  1. 秘密鍵復号デバイスと通信するための通信インターフェースと、プロセッサとを備える公開鍵暗号化デバイスであって、暗号化フェーズ中、第2の公開鍵行列の第2の次元は設定可能であり、
    前記プロセッサは、
    前記秘密鍵復号デバイスに関連付けられた第1の公開鍵行列を取得し、
    送信鍵の鍵サイズを取得し、
    前記鍵サイズに従って前記送信鍵を生成し、
    前記第2の公開鍵行列の前記第2の次元と等しい第2の秘密鍵行列の第2の次元の値を選択することによって、前記鍵サイズの前記送信鍵のマスキングに対応するように前記第2の秘密鍵行列の行列サイズを決定し、
    前記行列サイズに従って前記第2の秘密鍵行列を生成し、前記第2の秘密鍵行列から前記第2の公開鍵行列を計算し、
    前記第2の秘密鍵行列および前記第1の公開鍵行列から第2の生の共有鍵を計算し、ここで、前記第2の生の共有鍵を計算することは、前記第2の秘密鍵行列と前記第1の公開鍵行列との間の行列乗算を含み、
    前記第2の生の共有鍵の少なくとも一部を用いて前記送信鍵をマスキングし、
    前記鍵サイズおよび/または行列サイズの指標、前記第2の公開鍵行列、および前記マスキングされた送信鍵を前記秘密鍵復号デバイスに送る、
    公開鍵暗号化デバイス。
  2. 公開鍵暗号化デバイスと通信するための通信インターフェースと、プロセッサとを備える秘密鍵復号デバイスであって、
    前記プロセッサは、
    第1の秘密鍵行列を生成して、前記第1の秘密鍵行列から第1の公開鍵行列を計算し、前記公開鍵暗号化デバイスに前記第1の公開鍵行列を送ることを許容し、
    前記公開鍵暗号化デバイスから、鍵サイズおよび/または行列サイズの指標、第2の公開鍵行列、並びにマスキングされた送信鍵を受け取り、暗号化フェーズ中、前記公開鍵暗号化デバイスにおいて、前記第2の公開鍵行列の第2の次元は設定可能であり、
    前記第2の公開鍵行列および前記第1の秘密鍵行列から第1の生の共有鍵を計算し、ここで、前記第1の生の共有鍵を計算することは、前記第2の公開鍵行列と前記第1の秘密鍵行列との間の行列乗算を含み、
    前記第1の生の共有鍵の少なくとも一部を使用して、前記受け取られたサイズに基づき、前記マスキングされた送信鍵のマスキングを解除することで送信鍵を取得する、
    秘密鍵復号デバイス。
  3. 前記公開鍵暗号化デバイスの前記プロセッサは、前記秘密鍵復号デバイスとのハンドシェイクを実行し、前記ハンドシェイクの実行は、
    前記秘密鍵復号デバイスの少なくとも2つの第1の公開鍵行列の少なくとも2つの指標を前記秘密鍵復号デバイスから受け取ることを含み、ここで、前記2つの第1の公開鍵行列は異なるサイズを有し、
    前記ハンドシェイクの実行はさらに、前記公開鍵暗号化デバイスの鍵キャッシュが、前記2つの第1の公開鍵行列のうちの大きい方の行列を含むか否かを決定し、含む場合には前記大きい方の第1の公開鍵行列を選択することによって、第1の公開鍵行列を選択することと、
    前記選択された第1の公開鍵行列の指標を前記秘密鍵復号デバイスに送り、前記鍵キャッシュ内で入手できない場合は前記第1の公開鍵行列をリクエストすることとを含
    請求項1に記載の公開鍵暗号化デバイス。
  4. 前記第2の秘密鍵行列は前記第1の公開鍵行列よりも少ない行列要素を有し、
    前記第2の公開鍵行列は前記第1の公開鍵行列よりも少ない行列要素を有し、および/または
    前記第2の公開鍵行列は第1の秘密鍵行列よりも少ない行列要素を有する、
    請求項1または請求項3に記載の公開鍵暗号化デバイス。
  5. 前記第2の公開鍵行列は第1のシステム次元および第2の次元(
    Figure 0007413365000107
    )を有し、前記第1の公開鍵行列は前記第1のシステム次元および第2の次元(
    Figure 0007413365000108
    )を有し、前記第2の公開鍵行列の前記第2の次元(
    Figure 0007413365000109
    )は、前記第1の公開鍵行列の前記第2の次元(
    Figure 0007413365000110
    )よりも小さい、
    請求項1、3または4に記載の公開鍵暗号化デバイス。
  6. 前記第2の公開鍵行列の前記第2の次元は、前記第1の公開鍵行列の前記第2の次元の半分以下であり、および/または
    前記第2の公開鍵行列の前記第2の次元は1である、
    請求項5に記載の公開鍵暗号化デバイス。
  7. 前記公開鍵暗号化デバイスの前記プロセッサは、
    前記第1の公開鍵行列に関連付けられた公開行列を取得し、
    前記第2の公開鍵行列を計算することは、前記第2の秘密鍵行列と前記公開行列との間のノイジーな行列乗算を含み、ここで、前記公開行列は前記公開鍵暗号化デバイスと秘密鍵復号デバイスとの間で共有される、
    請求項1または請求項3から6のいずれか一項に記載の公開鍵暗号化デバイス。
  8. 前記ノイジーな行列乗算は、q個の要素からp個の要素へのスケーリングを含み、ここで、
    Figure 0007413365000111
    であり、前記公開鍵暗号化デバイスは、
    第2の生の共有鍵の前記少なくとも一部のための調整データを生成し、ここで、前記調整データは、前記公開鍵暗号化デバイスおよび前記秘密鍵復号デバイスで導出された第1の生の鍵および第2の生の鍵の間の差異を減らすことを可能にする情報を含み、前記調整データは前記秘密鍵復号デバイスに送られ、
    前記送信鍵のためのパリティビットを生成し、ここで、前記送信鍵および前記パリティビットは、誤り訂正符号に従うコードワードを形成し、前記送信鍵をマスキングすることは前記コードワードのカプセル化を含む、
    請求項7に記載の公開鍵暗号化デバイス。
  9. 前記公開鍵暗号化デバイスの前記プロセッサは、少なくとも前記送信鍵に基づいて最終鍵を導出し、前記最終鍵を用いてメッセージを暗号化し、前記暗号化されたメッセージを前記秘密鍵復号デバイスに送る、
    請求項1または請求項3から8のいずれか一項に記載の公開鍵暗号化デバイス。
  10. 送信鍵が、乱数である、一時的である、対称的である、および/または、第1の公開鍵行列から独立している、請求項1または請求項3から9のいずれか一項に記載の公開鍵暗号化デバイス。
  11. 前記公開鍵暗号化デバイスの前記プロセッサは、前記秘密鍵復号デバイスにて前記送信鍵を取得する際のエラーレートを下げるためにヘルパーデータを計算する、
    請求項1または請求項3から10のいずれか一項に記載の公開鍵暗号化デバイス。
  12. 第2の生の鍵は行列であり、前記送信鍵をマスキングすることは、前記送信鍵のビットを、前記第2の生の鍵行列の少なくとも一部の要素の最上位部分に加えること、および前記第2の生の鍵行列の前記少なくとも一部の要素のゼロ個以上の最下位ビットを破棄することを含む、
    請求項1または請求項3から11のいずれか一項に記載の公開鍵暗号化デバイス。
  13. 前記公開鍵暗号化デバイスの前記プロセッサは、前記送信鍵から前記第2の秘密鍵行列を導出する、
    請求項1または請求項3から12のいずれか一項に記載の公開鍵暗号化デバイス。
  14. 前記公開鍵暗号化デバイスの前記プロセッサは、公開鍵データベースから前記第1の公開鍵行列を取得する、
    請求項1または請求項3から13のいずれか一項に記載の公開鍵暗号化デバイス。
  15. 前記第1および第2の公開鍵行列、前記第1および第2の秘密鍵行列、並びに前記第1および第2の生の鍵は有限体または環上の行列である、請求項1または請求項3から14のいずれか一項に記載の公開鍵暗号化デバイス。
  16. 暗号化フェーズ中、第2の公開鍵行列の第2の次元を設定するステップを含む公開鍵暗号化方法をプロセッサシステムに実行させるためのプログラムであって
    秘密鍵復号デバイスとの通信を確立するステップと、
    前記秘密鍵復号デバイスに関連付けられた第1の公開鍵行列を取得するステップと、
    送信鍵の鍵サイズを取得するステップと、
    前記鍵サイズに従って前記送信鍵を生成するステップと、
    前記第2の公開鍵行列の前記第2の次元と等しい第2の秘密鍵行列の第2の次元の値を選択することによって、前記鍵サイズの前記送信鍵のマスキングに対応するように前記第2の秘密鍵行列の行列サイズを決定するステップと、
    前記行列サイズに従って前記第2の秘密鍵行列を生成し、前記第2の秘密鍵行列から前記第2の公開鍵行列を計算するステップと、
    前記第2の秘密鍵行列および前記第1の公開鍵行列から第2の生の共有鍵を計算するステップであって、ここで、前記第2の生の共有鍵の計算は、前記第2の秘密鍵行列と前記第1の公開鍵行列との間の行列乗算を含む、ステップと、
    前記第2の生の共有鍵の少なくとも一部を用いて前記送信鍵をマスキングするステップと、
    前記鍵サイズおよび/または行列サイズの指標、前記第2の公開鍵行列、および前記マスキングされた送信鍵を前記秘密鍵復号デバイスに送るステップとプロセッサシステムに実行させるためのプログラム
  17. 公開鍵暗号化デバイスとの通信を確立するステップと、
    第1の秘密鍵行列を生成して、前記第1の秘密鍵行列から第1の公開鍵行列を計算し、前記公開鍵暗号化デバイスに前記第1の公開鍵行列を送ることを許容するステップと、
    前記公開鍵暗号化デバイスから、鍵サイズおよび/または行列サイズの指標、第2の公開鍵行列、およびマスキングされた送信鍵を受け取るステップであって、暗号化フェーズ中、前記公開鍵暗号化デバイスにおいて、前記第2の公開鍵行列の第2の次元は設定可能である、ステップと、
    前記第2の公開鍵行列および前記第1の秘密鍵行列から第1の生の共有鍵を計算するステップであって、ここで、前記第1の生の共有鍵の計算は、前記第2の公開鍵行列と前記第1の秘密鍵行列との間の行列乗算を含む、ステップと、
    前記第1の生の共有鍵の少なくとも一部を使用して、前記受け取られたサイズに基づき、前記マスキングされた送信鍵のマスキングを解除することで送信鍵を取得するステップとプロセッサシステムに実行させるためのプログラム
  18. 請求項16または17に記載のプログラムを含む、一時的または非一時的なコンピュータ可読媒体。
  19. 前記秘密鍵復号デバイスの前記プロセッサが前記公開鍵暗号化デバイスとのハンドシェイクを実行し、前記ハンドシェイクの実行は、
    前記秘密鍵復号デバイスの少なくとも2つの第1の公開鍵行列の少なくとも2つの指標を前記公開鍵暗号化デバイスに送ることを含み、ここで、前記2つの第1の公開鍵行列は異なるサイズを有し、
    前記ハンドシェイクの実行はさらに、前記公開鍵暗号化デバイスから選択された第1の公開鍵行列の指標を受け取ること、前記選択された第1の公開鍵行列のリクエストが受け取られた場合には、前記選択された第1の公開鍵行列を送ることを含
    請求項2に記載の秘密鍵復号デバイス。
  20. 前記第2の公開鍵行列は第1のシステム次元および第2の次元(
    Figure 0007413365000112
    )を有し、前記第1の公開鍵行列は前記第1のシステム次元および第2の次元(
    Figure 0007413365000113
    )を有し、前記第2の公開鍵行列の前記第2の次元(
    Figure 0007413365000114
    )は、前記第1の公開鍵行列の前記第2の次元(
    Figure 0007413365000115
    )よりも小さい、
    請求項2または9に記載の秘密鍵復号デバイス。
  21. 前記第2の公開鍵行列の前記第2の次元は、前記第1の公開鍵行列の前記第2の次元の半分以下であり、および/または
    前記第2の公開鍵行列の前記第2の次元は1である、
    請求項20に記載の秘密鍵復号デバイス。
  22. 前記秘密鍵復号デバイスの前記プロセッサは、
    公開行列を生成し、
    前記第1の公開鍵行列を計算することは、前記第1の秘密鍵行列と前記公開行列との間のノイジーな行列乗算を含み、前記公開行列は前記公開鍵暗号化デバイスと前記秘密鍵復号デバイスとの間で共有され、前記第1の公開鍵行列は前記公開行列に関連付けられる、
    請求項2または請求項19から21のいずれか一項に記載の秘密鍵復号デバイス。
  23. 前記ノイジーな行列乗算は、q個の要素からp個の要素へのスケーリングを含み、ここで、
    Figure 0007413365000116
    であり、
    前記秘密鍵復号デバイスは、
    前記第1の生の共有鍵の前記少なくとも一部のための調整データを受け取り、ここで、前記調整データは、前記公開鍵暗号化デバイスおよび前記秘密鍵復号デバイスで導出された第1の生の鍵および第2の生の鍵の間の差異を減らすことを可能にする情報を含み、前記第1の生の共有鍵の前記少なくとも一部および前記調整データに調整関数を適用し、
    前記マスキングされた送信鍵のマスキングを解除してニアコードワードを取得し、誤り訂正符号に従って誤り訂正を適用する、
    請求項22に記載の秘密鍵復号デバイス。
  24. 前記秘密鍵復号デバイスの前記プロセッサは、前記秘密鍵復号デバイスから暗号化されたメッセージを受け取り、少なくとも前記送信鍵に基づいて最終鍵を導出し、前記最終鍵を用いて前記暗号化されたメッセージを復号する、
    請求項2または請求項19から23のいずれか一項に記載の秘密鍵復号デバイス。
  25. 送信鍵が、乱数である、一時的である、対称的である、および/または、第1の公開鍵行列から独立している、請求項2または請求項19から24のいずれか一項に記載の秘密鍵復号デバイス。
  26. 前記秘密鍵復号デバイスの前記プロセッサは、前記公開鍵暗号化デバイスからヘルパーデータを受け取り、前記ヘルパーデータを適用することで、前記秘密鍵復号デバイスにて前記送信鍵を取得する際のエラーレートを下げる、
    請求項2または請求項19から25のいずれか一項に記載の秘密鍵復号デバイス。
  27. 第1の生の鍵は行列であり、前記マスキングされた送信鍵のマスキングを解除することは、前記第1の生の鍵行列の少なくとも一部の要素のゼロ個以上の最下位ビットを破棄すること、前記カプセル化された送信鍵から前記第1の生の鍵行列の前記少なくとも一部の要素を差し引くこと、および、差し引かれた結果を丸めることを含む、
    請求項2または請求項19から26のいずれか一項に記載の秘密鍵復号デバイス。
  28. 前記秘密鍵復号デバイスの前記プロセッサは、前記送信鍵から第2の秘密鍵行列を再構築し、第2の公開鍵行列の計算および/またはカプセル化された送信鍵の計算を検証する、
    請求項2または請求項19から27のいずれか一項に記載の秘密鍵復号デバイス。
  29. 前記第2の秘密鍵行列は前記第1の公開鍵行列よりも少ない行列要素を有し、
    前記第2の公開鍵行列は前記第1の公開鍵行列よりも少ない行列要素を有し、および/または
    前記第2の公開鍵行列は第1の秘密鍵行列よりも少ない行列要素を有する、
    請求項28に記載の秘密鍵復号デバイス。
  30. 前記秘密鍵復号デバイスの前記プロセッサは、前記第1の公開鍵行列を公開鍵データベース内に預ける、
    請求項2または請求項19から29のいずれか一項に記載の秘密鍵復号デバイス。
  31. 前記第1および第2の公開鍵行列、前記第1および第2の秘密鍵行列、並びに前記第1および第2の生の鍵は有限体または環上の行列である、請求項2または請求項19から30のいずれか一項に記載の秘密鍵復号デバイス。
JP2021513439A 2018-09-12 2019-09-02 暗号メッセージのサイズが縮小された公開鍵/秘密鍵システム Active JP7413365B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP18194118.8A EP3624391A1 (en) 2018-09-12 2018-09-12 Public/private key system with decreased encrypted message size
EP18194118.8 2018-09-12
PCT/EP2019/073327 WO2020053013A1 (en) 2018-09-12 2019-09-02 Public/private key system with decreased public key size

Publications (3)

Publication Number Publication Date
JP2022500911A JP2022500911A (ja) 2022-01-04
JPWO2020053013A5 JPWO2020053013A5 (ja) 2022-09-12
JP7413365B2 true JP7413365B2 (ja) 2024-01-15

Family

ID=63579107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021513439A Active JP7413365B2 (ja) 2018-09-12 2019-09-02 暗号メッセージのサイズが縮小された公開鍵/秘密鍵システム

Country Status (6)

Country Link
US (1) US11909877B2 (ja)
EP (2) EP3624391A1 (ja)
JP (1) JP7413365B2 (ja)
CN (1) CN112997448A (ja)
BR (1) BR112021004855A2 (ja)
WO (1) WO2020053013A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11469902B2 (en) * 2019-03-29 2022-10-11 Intel Corporation Systems and methods of using cryptographic primitives for error location, correction, and device recovery
EP3889764A1 (en) * 2020-03-31 2021-10-06 Koninklijke Philips N.V. Parallel generation of a random matrix
DE102020112102B3 (de) 2020-05-05 2021-05-20 Infineon Technologies Ag Verfahren und Vorrichtungen zur Erzeugung eines symmetrischen Sitzungsschlüssels für die verschlüsselte Kommunikation
US20220255735A1 (en) * 2021-02-08 2022-08-11 Visa International Service Association Blinding techniques for post-quantum public keys
CN112948851A (zh) * 2021-02-25 2021-06-11 深圳壹账通智能科技有限公司 用户认证方法、装置、服务器及存储介质
CN116800423B (zh) * 2023-08-28 2023-11-03 长沙盈芯半导体科技有限公司 基于rfid的数据采集及双重加密解密数据保护方法和装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102664732B (zh) * 2012-03-07 2016-06-22 南相浩 Cpk公钥体制抗量子计算攻击的实现方法及系统
US9246675B2 (en) * 2012-04-12 2016-01-26 Jintai Ding Cryptographic systems using pairing with errors
CN103812650B (zh) * 2012-11-12 2017-05-31 华为技术有限公司 信息处理方法、用户设备和加密设备
CN104063838B (zh) * 2014-06-26 2017-09-12 上海理工大学 基于Logistic混沌映射和Walsh序列的非对称水印方法
NL2013520B1 (en) * 2014-09-24 2016-09-29 Koninklijke Philips Nv Public-key encryption system.
US10097351B1 (en) * 2016-09-15 2018-10-09 ISARA Corporation Generating a lattice basis for lattice-based cryptography
KR101913100B1 (ko) * 2016-11-24 2018-10-31 서울대학교산학협력단 생성 행렬의 천공에 기초한 암호화키를 사용하는 데이터 암호화 장치 및 방법
EP3364596A1 (en) * 2017-02-15 2018-08-22 Koninklijke Philips N.V. Key exchange devices and method
US10630655B2 (en) * 2017-05-18 2020-04-21 Robert Bosch Gmbh Post-quantum secure private stream aggregation
US10581604B2 (en) * 2017-10-17 2020-03-03 Comsats Institute Of Information Technology Post-quantum cryptographic communication protocol
JP6963277B2 (ja) * 2017-10-24 2021-11-05 日本電信電話株式会社 変換装置、判定装置、および計算装置
US10476664B2 (en) * 2017-10-27 2019-11-12 Quantropi Inc. Methods and systems for data protection
DE102018108313A1 (de) * 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BAAN, H. et al.,Round2: KEM and PKE based on GLWR,Cryptology ePrint Archive,Paper 2017/1183 ver:20180302:125432,[online],2018年03月02日,pp.1-72,<URL:https://eprint.iacr.org/archive/2017/1183/20180302:125432>, [2023年8月28日検索]
BAAN, H. et al.,Round5: Compact and Fast Post-Quantum Public-Key Encryption,Cryptology ePrint Archive,Paper 2019/090 ver:20190503:075440,[online],2019年05月03日,pp.1-20,<URL:https://eprint.iacr.org/archive/2019/090/20190503:075440>,[2023年8月28日検索]
BHATTACHARYA, S. et al.,spKEX: An optimized lattice-based key exchange,Cryptology ePrint Archive,Paper 2017/709 ver:20170817:082516,[online],2017年08月17日,pp.1-25,<URL:https://eprint.iacr.org/archive/2017/709/20170817:082516>,[2023年8月25日検索]
BOS, J. et al.,Frodo: Take off the ring! Practical, Quantum-Secure Key Exchange from LWE,Cryptology ePrint Archive,Paper 2016/659 ver:20170227:170204,[online],2017年08月17日,pp.1-26,<URL:https://eprint.iacr.org/archive/2016/659/20170227:170204>,[2023年8月28日検索]

Also Published As

Publication number Publication date
US11909877B2 (en) 2024-02-20
BR112021004855A2 (pt) 2021-06-08
US20220078011A1 (en) 2022-03-10
EP3624391A1 (en) 2020-03-18
JP2022500911A (ja) 2022-01-04
WO2020053013A1 (en) 2020-03-19
CN112997448A (zh) 2021-06-18
EP3850784B1 (en) 2022-07-27
EP3850784A1 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
JP7413365B2 (ja) 暗号メッセージのサイズが縮小された公開鍵/秘密鍵システム
EP3622663B1 (en) Key agreement devices and method
US11991285B2 (en) Configurable cryptographic device
JP7208987B2 (ja) 更新可能な共有マトリクスを備える暗号装置
JP6975361B2 (ja) 鍵カプセル化プロトコル
JP2022537733A (ja) 認証付き鍵共有
EP4082153B1 (en) Public/private key system with increased security
RU2787692C9 (ru) Протоколы инкапсуляции ключей
RU2787692C2 (ru) Протоколы инкапсуляции ключей
EP3609117A1 (en) Key encapsulation protocols
US20230125560A1 (en) Cryptographic Computer Machines with Novel Switching Devices

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220901

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231227

R150 Certificate of patent or registration of utility model

Ref document number: 7413365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150