(57)【特許請求の範囲】
【請求項１】
鍵共有プロトコル用の第１の電子ネットワークノードであって、前記第１の電子ネットワークノードが、
第２のネットワークノードとのデジタル通信用の通信インターフェースと、
プロセッサ回路とを備え、
前記プロセッサ回路が、
共有多項式を得ることであって、前記共有多項式が前記通信インターフェースを通して前記第２のネットワークノードと共有され、前記共有多項式の係数が第１の法を法として選択される、ことと、
秘密鍵多項式を生成することであって、前記秘密鍵多項式の係数が界によって絶対値が有界であり、前記界が、前記第１の法より小さい第２の法より小さい、ことと、
公開鍵多項式を生成することであって、
前記第１の法を法として、前記共有多項式と前記秘密鍵多項式との多項式積を計算して、多項式積を得ることと、
前記多項式積の係数を前記第２の法にスケールダウンすることであって、スケールされた係数が、前記第２の法が掛けられ、前記第１の法で割られ、最も近い整数に丸められたスケールされていない係数に等しい、ことと、によって、公開鍵多項式を生成することと、
前記第１の電子ネットワークノードの前記公開鍵多項式を前記第２のネットワークノードに送信することと、
前記第２のネットワークノードの前記公開鍵多項式を受信することと、
前記第２の法を法として、前記第２のネットワークノードの受信された前記公開鍵と前記第１の電子ネットワークノードの前記秘密鍵多項式との多項式積として、生鍵多項式を計算し、生鍵から共有鍵を計算することと、を行い、
前記第１の電子ネットワークノードが、
前記第２のネットワークノードの調停データを受信することと、
受信された前記調停データ、及び前記生鍵多項式の複数の係数に調停関数を適用することによって、共有鍵を計算することと、を行うか、又は、
前記第１の電子ネットワークノードが、
前記生鍵多項式の複数の係数から調停データ及び前記共有鍵を得ることと、
前記調停データを前記第２のネットワークノードに送信することと、を行う、
第１の電子ネットワークノード。
【請求項２】
前記第１の電子ネットワークノードが、
前記第２のネットワークノードのヘルパーデータを受信することであって、前記ヘルパーデータが、前記第１の電子ネットワークノードにおいて引き出された前記生鍵と前記第２のネットワークノードにおいて引き出された前記生鍵との違いを相殺する、前記第１の電子ネットワークノードと前記第２のネットワークノードとで同じ共有鍵の引き出しを可能にする情報を含む、ことと、
前記ヘルパーデータ、及び前記生鍵多項式の複数の係数から共有鍵を計算することと、を行うか、又は、
前記第１の電子ネットワークノードが
前記共有鍵を得て、前記生鍵多項式の少なくとも複数の係数から前記ヘルパーデータを得ることと、
前記ヘルパーデータを前記第２のネットワークノードに送信することと、を行う、
請求項１に記載の第１の電子ネットワークノード。
【請求項３】
前記秘密鍵多項式の係数における絶対値の前記界が２であり、又は、前記界が１であり、後者は符号付き二進数に対応する、
請求項１又は２に記載の第１の電子ネットワークノード。
【請求項４】
前記第１の電子ネットワークノードが所定の個数の非ゼロ係数で構成され、
前記秘密鍵多項式が、高々前記所定の個数の前記非ゼロ係数で生成されるか、又は、
前記秘密鍵多項式が、確率分布から選ばれ、前記確率分布が、前記秘密鍵多項式用の一定の期待個数の非ゼロ係数を有する、
請求項１乃至３のいずれか一項に記載の第１の電子ネットワークノード。
【請求項５】
前記第２の法が前記第１の法を割る、
請求項１乃至４のいずれか一項に記載の第１の電子ネットワークノード。
【請求項６】
前記第２の法及び／又は前記第１の法が２の累乗である、
請求項１乃至５のいずれか一項に記載の第１の電子ネットワークノード。
【請求項７】
新しい鍵交換のたびに、新しい共有多項式及び／又は新しい秘密鍵を得る、
請求項１乃至６のいずれか一項に記載の第１の電子ネットワークノード。
【請求項８】
前記生鍵多項式のすべての係数より少ない係数に対して、調停データが得られ、送信され、受信され、且つ／又は適用される、
請求項１乃至７のいずれか一項に記載の第１の電子ネットワークノード。
【請求項９】
前記調停データのサイズが、前記生鍵多項式の対応する係数ごとに２ビット以上である、
請求項１乃至８のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１０】
前記第１の法が、ビットサイズとして１２以上を有し、且つ／又は
前記第２の法が、ビットサイズとして７以上を有する、
請求項１乃至９のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１１】
前記共有多項式と前記秘密鍵多項式との前記多項式積、及び前記第２のネットワークノードの受信された前記公開鍵と前記第１の電子ネットワークノードの前記秘密鍵多項式との前記多項式積が、両方とも簡約多項式を法とする、
請求項１乃至１０のいずれか一項に記載の第１の電子ネットワークノード。
【請求項１２】
第１の電子ネットワークノード用の電子鍵共有方法であって、前記電子鍵共有方法が、
第１の電子ネットワークノードと第２のネットワークノードとの間にデジタル通信を設けるステップと、
共有多項式を得るステップであって、前記共有多項式が前記デジタル通信を通して前記第２のネットワークノードと共有され、前記共有多項式の係数が第１の法を法として選択される、ステップと、
秘密鍵多項式を生成するステップであって、前記秘密鍵多項式の係数が、界によって絶対値が有界であり、前記界が前記第１の法より小さい第２の法より小さい、ステップと、
公開鍵多項式を生成するステップであって、
前記第１の法を法として、前記共有多項式と前記秘密鍵多項式との多項式積を計算して、多項式積を得るステップと、
前記多項式積の前記係数を前記第２の法にスケールダウンするステップであって、スケールされた係数が、前記第２の法が掛けられ、前記第１の法で割られ、最も近い整数に丸められたスケールされていない前記係数に等しい、ステップと、によって、公開鍵多項式を生成するステップと、
前記第１の電子ネットワークノードの前記公開鍵多項式を前記第２のネットワークノードに送信するステップと、
前記第２のネットワークノードの公開鍵多項式を受信するステップと、
前記第２の法を法として、前記第２のネットワークノードの受信された前記公開鍵と前記第１の電子ネットワークノードの前記秘密鍵多項式との多項式積として、生鍵多項式を計算し、前記生鍵から前記共有鍵を計算するステップと、を有し、前記電子鍵共有方法が、
前記第２のネットワークノードのヘルパーデータを受信するステップであって、前記ヘルパーデータが、前記第１の電子ネットワークノードにおいて引き出された前記生鍵と前記第２のネットワークノードにおいて引き出された前記生鍵との違いを相殺する、前記第１の電子ネットワークノードと前記第２のネットワークノードとで同じ共有鍵の引き出しを可能にする情報を含む、ステップと、
前記ヘルパーデータ、及び前記生鍵多項式の複数の係数から共有鍵を計算するステップと、をさらに有するか、又は、
前記電子共有方法が、
前記生鍵多項式の複数の係数から前記ヘルパーデータ及び前記共有鍵を得るステップと、
前記ヘルパーデータを前記第２のネットワークノードに送信するステップと、をさらに有する、
電子鍵共有方法。
【請求項１３】
プロセッサシステムに、請求項１２に記載の方法を行わせるための命令に相当する一時的又は非一時的データを含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークノード、鍵共有方法、パラメータ選択デバイス、パラメータを選択する方法、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
暗号法において、鍵共有プロトコルは、それにより、まだ共通鍵を共有していない２つ以上のパーティがそのような鍵について同意することができるプロトコルである。両方のパーティは、いずれのパーティも選ばれた鍵を強要することができないように、その結果を左右することができることが好ましい。２つのパーティ間の通信すべてを盗聴するアタッカは、この鍵について何も知らないはずである。まだ、その同じ通信を見ているアタッカが何も又はほとんど知らない間に、パーティ自ら、共有鍵を引き出すことができる。
【０００３】
鍵共有プロトコルは、例えば通信を安全にするのに、例えばパーティ間でメッセージを暗号化する且つ／又は認証するのに有用である。
【０００４】
実際の鍵共有プロトコルは、Ｗｈｉｔｆｉｅｌｄ  ＤｉｆｆｉｅとＭａｒｔｉｎ  Ｈｅｌｌｍａｎが公開鍵暗号法の概念を紹介した１９７６年に導入された。彼らは、ｑ元を含む有限体ＧＦ（ｑ）にわたって対数を計算する見かけの難しさを利用する、２つのパーティ間の鍵共有用のシステムを提案した。このシステムを使用して、２人のユーザは、対称鍵について同意することができる。それにより、この対称鍵は、２つのパーティ間の例えば暗号化通信に使用され得る。
【０００５】
Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵共有方法など、パーティがまだ共有秘密をもっていないときに適用可能である現在の鍵共有方法は、リソースヘビィな数学演算を必要とする。例えば、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎは、有限体にわたってべき乗演算を行うのに、このリソースヘビィな数学演算を必要とする。指数もフィールドサイズも大きいことがある。このことは、鍵共有プロトコルを低リソースデバイスにはあまり適さないものにする。その一方、鍵共有プロトコルは、リソース制限式デバイスには極めて有用であると考えられる。例えば、モノのインターネット、アドホック無線ネットワークなどの適用範囲では、デバイス間のリンクを保護するのに鍵共有が使用される可能性がある。別の例は、リーダと電子タグとの間、例えば、カードリーダとスマートカードとの間、又はタグリーダとタグとの間、例えば、ＲＦＩＤタグ又はＮＦＣタグとの間の通信である。これは、２つのパーティのうちの少なくとも一方、すなわち電子タグに掛かる負担を小さくする鍵共有プロトコルを有することにとって好都合であり得る。
【０００６】
パーティ間のセキュアな通信を容易にするために、鍵共有プロトコルは、暗号鍵交換（ＫＥＸ）スキームと暗号鍵カプセル化（ＫＥＭ）スキームとにさらに細分されることがある。暗号鍵カプセル化（ＫＥＭ）スキームでは、非対称暗号法を使用して、それぞれのパーティ用の公に知られている（例えば、公開鍵）値と秘密裡に所有する（例えば、秘密鍵）値とを使用して、２つのパーティ間に共有鍵を確立する。
【０００７】
ＫＥＭスキームでは、それぞれのパーティによる公開鍵の交換を伴い、公開鍵は、次に、共通の共有秘密を計算するために、それら自身の秘密鍵と併せて、もう一方のパーティによって独立して使用される。ＫＥＸスキームのよく知られた例には、そのセキュリティが離散対数問題を解くことに基づいている上述のＤｉｆｆｉｌｅ−Ｈｅｌｌｍａｎ鍵交換がある。いくつかのＫＥＸスキームの興味深い特徴は、実際の最後の共有秘密が、暗号化形態であっても、パーティ間で決して交換されないが、２つのパーティによって、それぞれの末端で別々に計算されるということである。このことは、それ以降のアタッカによるパーティの長期の秘密鍵の侵害さえも、過去に交換された暗号化メッセージの秘匿性を損なわないことを確実にする前方秘匿性として知られる望ましい特徴をもたらす。
【０００８】
ＫＥＭスキームは、一方のパーティによる、普通はその通信の発起側による非対称暗号法の使用で、２つのエンティティ又はパーティ間に共有秘密を確立し、共有秘密を暗号化し（もう一方のパーティの公開鍵を使用して）、応答側として分かっているもう一方のパーティにその共有秘密を送信し、もう一方のパーティは、次に共有秘密を復号してから（自らの秘密鍵を使用して）、それを発起側パーティとセキュアに通信するのに使用することができる。ＫＥＭスキームは、過去のセッションでパーティの秘密鍵を侵害し、そのセッションにおいてパーティ間で交換されたメッセージをすべて記録しているアタッカであれば、その特定のセッションの際の共有鍵を回復することができることから、前方秘匿性をもたらすことはできない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
モノのインターネットにおけるセキュリティ要求の高まりにより、鍵交換スキームには、古典的能力と共に量子能力のある敵対側に対して、セキュアも維持しつつ高い効率（すなわち、最小の通信量又は帯域幅の要件）をもたらすことも求められる。
【課題を解決するための手段】
【００１０】
鍵共有プロトコル用に構成された電子ネットワークノードが提供される。電子ネットワークノードは、第１のネットワークノードとし、それが通信する第２のネットワークノードと区別するようにする。
【００１１】
これら及び他の事柄に対処する第１の電子ネットワークノードが提供される。第１の電子ネットワークノードは、例えば、鍵交換（ＫＥＭ）スキーム又は鍵カプセル化（ＫＥＭ）スキームであってもよい鍵共有プロトコル用に構成される。第１のネットワークノードは、
−第２のネットワークノードとのデジタル通信用に設けられた通信インターフェースと、
−プロセッサ回路が、
−共有多項式を得ることであって、共有多項式が通信インターフェースを通して第２のネットワークノードと共有され、共有多項式の係数が第１の法ｑを法として選択される、ことと、
−秘密鍵多項式を生成することであって、秘密鍵多項式の係数が界によって絶対値が有界である、ことと、
−公開鍵多項式を得ることであって、
−第１の法を法として、共有多項式と秘密鍵多項式との多項式積を計算して、多項式積を得ることと、
−多項式積の係数を第２の法にスケールダウンすることであって、スケールされた係数が、第２の法が掛けられ、第１の法で割られ、最も近い整数に丸められたスケールされていない係数に等しく、第２の法が、第１の法よりも小さく、界が、高々第２の法であることと、によって、公開鍵多項式を得ることと、
−第１のネットワークノードの公開鍵多項式を第２のネットワークノードに送信することと、
−第２のネットワークノードの公開鍵多項式を受信することと、
−第２の法を法として、第２のノードの受信された公開鍵と第１のネットワークノードの秘密鍵多項式との多項式積として、生鍵多項式を計算し、生鍵から共有鍵を計算することと、を行うように構成された、プロセッサ回路と、を備える。
【００１２】
秘密鍵多項式が有界であり、公開鍵多項式がスケールダウンされることから、鍵共有の計算及び通信オーバーヘッドが減らされる。さらに、例えば行列の代わりに多項式を使用することによって、計算及び帯域幅オーバーヘッドがさらに減らされる。多項式が、交換可能であり、プロトコルをさらに単純化するのが有利である。実施形態において、使用される多項式は、それらがｎ係数を有するように、ｎ次多項式、例えば、Ｘ＾ｎ＋１を法としている。通常、秘密鍵多項式は、共有多項式と同じ個数の係数（ｎ）を有するが、これは、必須ではない。例えば、秘密鍵多項式は、共有多項式よりも低い次数又は個数の係数を有する。秘密鍵多項式は、第１のネットワークノードと第２のネットワークノードとで異なる個数の係数を有することさえあり得る。たとえ秘密鍵多項式における係数の個数が共有多項式の係数の個数に等しいとしても、それらがより疎であり得ることに留意されたい。
【００１３】
多項式乗法は、ｎ減次多項式を法とする。選んだ特定の減次多項式にとって利点があり得るが、いずれの減次多項式でもうまくいくであろう。例えば、一実施形態において、減次多項式と共通の除数を何ももたないような共有多項式が選ばれる。この特徴の利点は、公開鍵多項式が、より一様に分散されることにある。減次多項式は、既約として選ばれることもあり得る。後者は、ある程度、選択した減次多項式を制限するが、その一方、共有多項式との相対素数性に対するテストが必要とされないという利点を有する。
【００１４】
法ｐ及びｑは、素数である必要はなく、実際には、２の累乗であるのが好ましい。さらに、ｐがｑを割ることがより好ましい。例えば、一実施形態において、第１の法は、ビットサイズとして１２以上を有し、且つ／又は、第２の法は、ビットサイズとして７以上を有する。共有多項式がそれほど頻繁に使用されなければ、セキュリティが高められる。共有多項式が公然であり得、少なくとも共有されていることから、アタッカに知られている可能性がある。アタッカは、この利点を使って、この多項式において事前計算を行う可能性がある。この攻撃手段を避けるために、共有鍵多項式の頻繁な変更が好ましい。一実施形態において、一定の回数の鍵共有後、例えば、鍵共有が行われるたびに、新しい共有鍵多項式が取り決められる。また、秘密鍵多項式は、ある頻度で取り替えられてもよい。
【００１５】
切り捨て演算のために、第１のノードと第２のノードとの間のやり取りを観察する攻撃は、ノードによって使用される秘密多項式を再現することができなくなる。その一方、第１のノードは、アタッカよりも情報を持っていることから、共有鍵を引き出す能力があり、第１及び第２のノードは、受信した公開鍵多項式に加えて、それら自身の秘密鍵多項式を有する。
【００１６】
丸めは、第１のノードにおいて計算された生鍵と第２のノードにおいて計算された生鍵との違いを引き起こすことがある。それにも関わらず、この丸めから共有鍵が計算され得る。これを達成するためのいくつかのやり方がある。
一実施形態において、第１のネットワークノードは、
−第２のネットワークノードのヘルパーデータを受信することであって、ヘルパーデータが、第１のノードにおいて引き出された生鍵と第２のノードにおいて引き出された生鍵との違いを相殺する第１のノードと第２のノードとで同じ共有鍵の引き出しを可能にする情報を含む、ことと、
−ヘルパーデータ、及び生鍵多項式の複数の係数から共有鍵を計算することと、を行うようにさらに構成される。この場合、第１のネットワークノードが、ヘルパーデータを生成することに責任を負う可能性がある。また、その反対も可能であり、第１のネットワークノードがヘルパーデータを生成し、第２のネットワークノードがそれを使用する。例えば、一実施形態において、第１のネットワークノードは、
−生鍵多項式の複数の係数から共有鍵及びヘルパーデータを得ることと、
−ヘルパーデータを第２のネットワークノードに送信することと、を行うように構成される。
【００１７】
このように、一実施形態において、発起するノードは、ヘルパーデータに加えて、応答側ノードから、それの公開鍵を受信する。公開鍵のみを使用して、発起するノードは応答するノードが辿り着いたのとほぼ同じ生鍵に辿り着くことができる。ただし、２つの生鍵間には違いがあり得る。
【００１８】
ヘルパーデータは、ネットワークノードに、ネットワークノードがヘルパーデータの送り側が辿り着いたのと同じ共有鍵に辿り着くようにネットワークノードを案内する追加の情報を提供する。ヘルパーデータは、ある種の冗長情報であり得、最終的には、共有鍵そのものでは使用されないのが好ましい。
【００１９】
ヘルパーデータは、秘密鍵から計算されたデータの一部、例えば、生鍵の一部であり得る。ヘルパーデータは、追加のデータ、例えばチェックサムデータ、例えば秘密データから計算されたデータに対して計算されたシンドロームであり得る。例えば、ヘルパーデータは、生鍵に関する、又は共有鍵に関する冗長情報を含む。ヘルパーデータは、１つ又は複数の符号語を加えることによって得られ得る。その代わりとして、ヘルパーデータは、例えば、生鍵に対して、又は共有鍵に対して、誤り訂正符号のいわゆるシンドロームを計算することによって得られ得る。実施形態において、２つの異なるタイプのヘルパーデータである、調停データとカプセル化鍵とが与えられ、これら２つのタイプの加工例が与えられる。
【００２０】
実施形態において、ヘルパーデータは、いわゆる調停データである。例えば、調停データは、生鍵に関する情報を含む。例えば、調停データは、ノードによって引き出された生鍵のビットを含む。調停データは、もう一方のノードが２つの側によって引き出された生鍵間の違いを相殺すること、また同じ共有鍵を計算することを可能にする。
【００２１】
調停データを使用して、第１のノードと第２のノードとにおいて計算された生鍵多項式間の違いが克服され得る。ノードのうちの一方が、調停データを計算し、もう一方がそれを使用する。調停データは、共有鍵を計算するのに使用される係数ごとにわずか１ビットとすることができる。実施形態は、もっと、例えば２ビット以上を使用する。
【００２２】
両方の側において計算された生鍵間の違いを克服するための別の選択肢は、鍵カプセル化を使用することである。カプセル化を通して、共有鍵が保護され、さらに、生鍵間の小さな違いが、脱カプセル化共有鍵間の小さな訂正可能な違いをもたらす。例えば、鍵をカプセル化するには、最初に追加の冗長性を加える。これは、例えば、共有鍵におけるビットを、ｐを法とする数に写像することによって、例えば、ビット０を０に、ビット１をｐ／２に写像することによって、行われる。より大規模な写像は、誤り訂正符号、例えば反復符号を使用する。誤り訂正符号の他の例には、アダマール符号、リード−ソロモン符号、ＢＣＨなどが含まれる。共有鍵を符号化し、冗長性を加えた後、生鍵は、符号化共有鍵にｐを法として加えられ、カプセル化共有鍵を得る。加えることに代えて、他の組合わせ機能、例えば、ｐを法とする減法が使用される。
【００２３】
ヘルパーデータ、例えば、調停データ、誤り訂正データなどは、生鍵のすべての係数に対して生成又は使用される必要はない。生鍵の係数のすべてが、共有鍵を計算するのに使用されるのが必要であるわけではなく、実際に使用される係数のみが、ヘルパーデータに対して考慮されることが必要である。例えば、一実施形態において、共有鍵は、生鍵の一定の個数の係数及び／又は所定の係数から引き出される。次に、それらの係数に対してのみ、また生鍵多項式のすべてより少ない係数に対してのみ、調停データが得られ、送信され、受信され、且つ／又は適用される。一実施形態において、共有鍵に対して使用される係数は、変わることがある。例えば、第１及び第２のノードのうちの１つ、例えば、発起するノードが、シードをもう一方のノードに送信する。両方のノードは、シードを使用して、ヘルパーデータに対して、また共有鍵に対して、いずれの係数を考慮に入れるかを無作為に決める。
【００２４】
両方のタイプのヘルパーデータに対し、ネットワークノード、例えば応答側ノードは、生鍵多項式の少なくとも複数の係数から共有鍵を得、ヘルパーデータを得るように構成されることに留意されたい。調停データの場合、共有鍵及びヘルパーデータの両方が、生鍵の複数の係数から得られ得る。カプセル化の場合、ヘルパーデータが生鍵及び共有鍵の複数の係数から得られる。複数の係数は、すべて係数であり得る。
【００２５】
実施形態による鍵共有方法の利点は、それらの方法が、スケーリングにより、より小さな帯域幅要件になり、秘密鍵多項式内の係数における界により、計算要件が下がるという点である。例えば、一実施形態において、秘密鍵多項式の係数における絶対値の界が２であり、又は界が１であり、後者は、符号付き二進数に対応する。好ましい実施形態は、１の界を使用し、この場合、係数は、二進数（０又は１）か又は符号付き二進数（０、−１、又は１）であり、後者が最も好ましい。
【００２６】
興味深いことに、たとえ係数の個数そのものがかなり大きいとしても、非ゼロ係数の個数を制限することによって、オーバーヘッドがさらに減らされ得る。例えば、一実施形態において、デバイスが、所定の個数の非ゼロ係数で構成される。この個数は、様々なやり方で強要され得る。例えば、一実施形態において、秘密鍵多項式が、高々この個数の非ゼロ係数で生成される（多項式のハミング重みと呼ばれる）。これは、必須ではないが、秘密鍵多項式が、それに条件が課される前提で可能な限り無作為になる場合、有益である。例えば、所与のハミング重み、及び係数のサイズにおける界により、秘密鍵多項式が、候補秘密鍵多項式から、例えばその界を満たすすべての秘密鍵多項式から、一様に無作為に選ばれる。
【００２７】
ハミング重みを強要するための別のやり方は、確率分布から秘密鍵多項式を選ぶことによってである。確率分布は、秘密鍵多項式用の一定の期待個数の非ゼロ係数を有する。この場合、時には、秘密鍵多項式がわずかに高い又はわずかに低いハミング重みを有するようになることが起こり得る。例えば、一実施形態において、秘密鍵多項式の係数が非一様な確率分布から選ばれ、この場合、ゼロ係数の確率は、非ゼロ係数の確率よりも大きい。
【００２８】
ハミング重みの正確なサイズは、重要な意味をもつようには見えない。特に、係数の個数がより大きい生成サイズの例では、良い選択物は、５で割った係数の個数（０．２ｎ）程度であるように見える。ただし、
【数１】
0006720424.tif 000002
が少なくとも、例えば１２７、又はより好ましくは少なくとも２５５である条件の下、ｈｓ（ハミング重み）を最小化することによって、最小のハミング重みを推定することが可能である。
【００２９】
本発明の態様には、良いパラメータ集合を探し出すためのデバイス及び方法が含まれる。
【００３０】
ネットワークノードは、電子デバイスである。例えば、ネットワークノードは、移動電話機、タブレット、又はスマートカード、コンピュータなどの移動電子デバイスである。ネットワークノードは、セットトップボックス、コンピュータ、テレビ、及び類似のものであり得る。本明細書に記載の鍵共有の方法は、様々な実際の用途に適用され得る。このような実際の用途には、インターネット（モノの）におけるセキュリティが含まれる。ＩＫＥ、ＴＬＳ、ＳＳＨなどのプロトコルが適用され得る。通常、提案されるスキームは、一般のインターネットユースケースでも、リソース制約の環境でも、ポスト量子のセキュアとなる。例えば、２つのノード間の守られた、例えば機密の通信が必要とされるときにはいつでも鍵共有が使用され得る。これは、また、例えば、金融取引を安全にするために、センサネットワークにあり得る。
【００３１】
本発明による方法は、コンピュータ実施式方法としてコンピュータにおいて、又は専用ハードウェアにおいて、又はそれら両方の組合わせにおいて実施され得る。本発明による方法用の実行可能コードは、コンピュータプログラムに格納され得る。コンピュータプログラムの例には、記憶デバイス、光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。コンピュータプログラム製品が、前記プログラムがコンピュータにおいて実行されるときに、本発明による方法を行うための非一時的プログラムコードを、コンピュータ可読媒体に格納して備えるのが好ましい。
【００３２】
好ましい実施形態において、コンピュータプログラムは、コンピュータプログラムがコンピュータにおいて実行されると、本発明による方法のステップをすべて行うように適合されたコンピュータプログラムコードを備える。コンピュータプログラムは、コンピュータ可読媒体において具現化されることが好ましい。
【００３３】
本発明の別の態様は、ダウンロードに使用可能なコンピュータプログラムを作る方法を提供する。コンピュータプログラムが、例えば、ＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙ  Ｓｔｏｒｅ、又はＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ  Ｓｔｏｒｅにアップロードされるとき、またコンピュータプログラムがこのようなストアからダウンロードされるのに使用可能であるとき、この態様が使用される。
【００３４】
本発明のさらなる細目、態様、及び実施形態が、単に例として、以下の図面を参照して説明される。図中の要素は、単純に分かりやすくするために示され、必ずしも原寸に比例して描かれていない。図では、すでに説明された要素に対応する要素には、同じ参照番号が付いていることがある。
【図面の簡単な説明】
【００３５】
【図１】鍵共有ネットワークの一実施形態の一例を概略的に示す図である。
【図２】生鍵の一実施形態の一例を概略的に示す図である。
【図３】電子鍵交換方法の一実施形態の一例を概略的に示す図である。
【図４ａ】一実施形態によるコンピュータプログラムを含む書き込み可能な部分を有するコンピュータ可読媒体を概略的に示す図である。
【図４ｂ】一実施形態によるプロセッサシステムの表現を概略的に示す図である。
【図５】鍵共有ネットワークの一実施形態の一例を概略的に示す図である。
【図６ａ】パラメータ選択デバイスの一実施形態の一例を概略的に示す図である。
【図６ｂ】パラメータ選択方法の一実施形態の一例を概略的に示す図である。
【符号の説明】
【００３６】
図１、２、５、６ａ中の参照番号リスト
１００  鍵共有ネットワーク
１１０  発起側型のネットワークノード
１２０  通信インターフェース
１３０  共有多項式ユニット
１４０  秘密鍵多項式ユニット
１５０  公開鍵多項式ユニット
１６０  共有鍵ユニット
１６２  生鍵
１６４  調停データ（ｈ）
１６６  共有鍵
２１０  応答側型のネットワークノード
２２０  通信インターフェース
２３０  共有多項式ユニット
２４０  秘密鍵多項式ユニット
２５０  公開鍵多項式ユニット
２６０  共有鍵ユニット
２６２  生鍵
２６４  調停データ（ｈ）
２６６  共有鍵
３００  生鍵多項式の係数
３０１  最上位部分
３０２  中位部分
３０３  最下位部分
５００  鍵共有ネットワーク
５１０  発起側型のネットワークノード
５２０  応答側型のネットワークノード
５６０  共有鍵ユニット
５６４  符号化鍵
５７０  共有鍵ユニット
５７３  生成された共有鍵
５７４  符号化共有鍵
５７６  カプセル化共有鍵
６００  パラメータ選択デバイス
６０２  出力インターフェース
６１０  パラメータ集合生成装置
６２０  ｐ、ｑ選択ユニット
６３０  ｎ、ｍオプティマイザ
６４０  オプティマイザ
【発明を実施するための形態】
【００３７】
本発明は、多くの様々な態様において実施形態を受け入れる余地があるが、本開示が、本発明の原理の好例として考えられるべきであり、本発明を図示され説明される特定の実施形態に限定することが意図されるものではないとの理解の下、１つ又は複数の特定の実施形態が図面に示され、本明細書において詳細に説明される。
【００３８】
以下では、より良い理解のために、運用時の実施形態の要素が説明される。しかし、それぞれの要素が、要素によって行われるとして説明される機能を行うように設けられることが理解できるであろう。
【００３９】
さらに、本発明は、これらの実施形態に限定されるものではなく、本発明は、本明細書に記載の又は互いに異なる従属請求項に挙げられるありとあらゆる新規の特徴又は特徴の組合わせにある。
【００４０】
図１は、鍵共有ネットワーク１００の一実施形態の一例を概略的に示す。
【００４１】
図１では、システム内の２つのノード、発起側型のネットワークノード１１０と応答側型のネットワークノード２１０とが示される。鍵共有システムの実施形態では、ノードの個数が２つよりも多い、さらにもっと多い、例えば、１０００ノードよりも多い、例えば１０＾６ノードよりも多くてもよい。
【００４２】
発起側型のネットワークノードと応答側型のネットワークノードとの違いは、どのように調停データを処理するかにある。発起側型のネットワークノードは、調停データを受信し、共有鍵を得るのに調停データを適用する一方、応答側型のネットワークノードは、調停データを生成し、それを発起側型のネットワークノードに送信する。応答側型のネットワークノードは、共有鍵を得るのに調停データを必要としない。通常、発起側型はまた、これが、２つのネットワークノード間で実行される丸めの回数が減るのにつれて、２つのネットワークノード間で鍵共有プロトコルを開始するようになる。ただし、それは、必須というわけではなく、鍵共有プロトコルは、応答側型のネットワークノードによっても開始され得る。
【００４３】
さらに、ネットワークノードの実施形態では、ネットワークノードは、発起側モードに従って、また応答側モードに従って動作するように構成される。例えば、ネットワークノードが鍵共有を開始する場合、例えば、鍵共有プロトコルの開始を信号で伝えるメッセージを別のネットワークノードに送信する場合、そのネットワークノードは、発起側モードに切り替わる。ネットワークノードが鍵共有に応答する場合、例えば、鍵共有プロトコルの開始を信号で伝えるメッセージを別のネットワークノードから受信する場合、そのネットワークノードは、応答側モードに切り替わる。これは、実際面では都合の良いことであるが、またこの選択肢は、絶対に必要というものではなく、例えば、鍵共有システムでは、発起側ノードとしてのみ構成されるモードもあれば、応答側ノードとしてのみ構成されるモードもある。このことの結果は、いくつかのノードが揃って共有鍵について同意することができないということになる。かなり多くのネットワークノード対が通信することができ、共有鍵について同意することができる限り、いくつかのネットワークでは、例えば、アドホックネットワーク、又はアドホックワイヤレスグリッドなどでは、このことは、問題とする必要はない。
【００４４】
発起側ノード１１０は、通信インターフェース１２０を備える。応答側ノード２１０は、通信インターフェース２２０を備える。通信インターフェースは、鍵共有システムに、もう一方のノードとのデジタル通信用に設けられ得る。システム内のすべてのノードにいつでも到達することができるが、それは必須ではない。
【００４５】
通信インターフェース１２０及び２２０は、デジタル通信用に設けられる。例えば、通信インターフェースは、コンピュータネットワーク上で通信するように設けられる。例えば、通信インターフェースは、無線、例えば、Ｗｉ−Ｆｉ（登録商標）、ＺｉｇＢｅｅ（登録商標）など、及び／又は有線通信、例えば、イーサネット（登録商標）、ＵＳＢなど用に設けられる。ノード１１０とノード２１０との通信は、無線接続と有線接続との組合わせであってもよい。例えば、ノード１１０及び１２０を含む、システム１００内のノードは、システム１００内でノードを一意に特定する通信識別子を含む電子記憶域を備える。例えば、通信識別子は、例えばメッセージをアドレス指定するために、ノード１１０とノード２１０との間で交換されたデジタルメッセージに含まれる。例えば、通信識別子は、ＩＰアドレス、ＭＡＣアドレスなどである。
【００４６】
一実施形態において、電子ネットワークノードは、鍵交換（ＫＥＸ）プロトコル用に構成される。プロトコルは、通信インターフェース１２０及び２２０にわたってノード１１０とノード２１０との間でメッセージを交換すること、また例えばもう一方のノードから受信したデータに対して、計算を行うことに関わる。鍵共有プロトコルの実行は、プロセッサ回路において実施され、その例が下に示される。図１は、プロセッサ回路の機能ユニットであり得る機能ユニットを示す。例えば、図１は、プロセッサ回路の可能な機能組織の青写真として使用される。プロセッサ回路は、図１では、ユニットから分かれて示されてはいない。例えば、図１に示される機能ユニットはまた、全体として又は部分的に、ネットワークノードに格納され、ネットワークノードのマイクロプロセッサによって実行可能であるコンピュータ命令において実施される。
【００４７】
図１に関係した実施形態では、発起側ノード１１０及び応答側ノード２１０は、鍵交換（ＫＥＸ）プロトコル用に構成される。ＫＥＸスキームは、それぞれのパーティによる、しばしば公開鍵と言われる公開データの交換に関わり、公開データは、次に、共通の共有秘密を計算するために、しばしば秘密鍵と言われるそれらの秘密データと共に、もう一方のパーティによって、他と無関係に使用される。いくつかの実施形態の興味深い特徴は、実際の最終の共有秘密が、暗号化形態であっても、パーティ間では決して交換されないが、２つのパーティによってそれぞれの末端で、他と無関係に計算されるということである。このことは、それ以降のアタッカによるパーティの長期の秘密鍵の侵害さえも、過去に交換された暗号化メッセージの秘匿性を損なわないことを確実にする、前方秘匿性として知られる望ましい特徴をもたらす。
【００４８】
本発明の実施形態は、機密の通信をもたらすのに、信頼されるサードパーティを当てにはしない。通信インターフェース１２０と２２０との間の通信チャネルは、必ずしもセキュアなチャネルである必要はない。アタッカは、通信チャネルを盗聴することができる可能性がある。たとえそうであっても、ノード１１０と２１０との間で同意された鍵は、セキュアであり得る。通信チャネルが改造に対して保護されている場合、そのチャネルによって提供される限りにおいて、ある程度の認証が得られる。しかし、通信インターフェース１２０と２２０との間のチャネルが改造に対して保護されていない場合、ＫＥＸスキームは、何も認証をもたらさないことになる。認証を得るために、実施形態は、例えばいずれの知られている認証機構とも、例えば認定済み公開鍵を使用し、例えば暗黙認証機構、又は、例えばデジタル署名を使用する明示的認証機構とも組み合わせられ得る。
【００４９】
ＫＥＫスキームのよく知られた例には、そのセキュリティが離散対数問題を解くことに基づいているＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵交換がある。本発明において、その困難性がいわゆるＬｅａｒｎｉｎｇ  ｗｉｔｈ  Ｒｏｕｎｄｉｎｇ（ＬＷＲ）問題に基づいている鍵交換機構が規定される。ＬＷＲ問題の困難性は、ＬＷＥインスタンスの個数が有界である場合のいわゆるＬｅａｒｎｉｎｇ  ｗｉｔｈ  Ｅｒｒｏｒ（ＬＷＥ）問題の困難性仮定に基づくことがある。ＬＷＥ問題の平均時困難性が、量子コンピュータにとっては解くのが難しい、ある関連の格子基底問題の最悪時困難性に基づくことから、この鍵交換スキームは、ポスト量子セキュアな鍵共有プロトコルである。実施形態がＬＷＲ問題を環で使用するので、この問題をｒｉｎｇ−ＬＷＲ問題とも呼ぶ。
【００５０】
Ｌｅａｒｎｉｎｇ  ｗｉｔｈ  Ｅｒｒｏｒｓ（ＬＷＥ）問題は、数学的に難問題であり、量子コンピュータ、及びよく理解されたセキュリティに対してさえも、その推定される難しさのためにポスト量子暗号スキームを生じさせる。しかし、それから起こるスキームは、通常、計算複雑性に関しても、通信複雑性に関しても、動作が相当に重い。Ｌｅａｒｎｉｎｇ  ｗｉｔｈ  Ｅｒｒｏｒｓ（ＬＷＥ）問題は、以下のように記述され得る。
【００５１】
ｎ次元ベクトルｓ∈Ｚｑｎ、及び誤り分布Ｚｑ上のｘに対し、ＬＷＥ分布
【数２】
0006720424.tif 000003
上の
【数３】
0006720424.tif 000004
が、
【数４】
0006720424.tif 000005
からベクトルａを、またｘから誤りｅを、一様且つ無作為に選び、
【数５】
0006720424.tif 000006
を出力することによって、得られる。
【００５２】
探索ＬＷＥ問題は、
【数６】
0006720424.tif 000007
からの任意の多くの独立した標本（ａｉ、ｂｉ）を前提として、
【数７】
0006720424.tif 000008
を見つけることである。ＬＷＥｎ、ｑ、ｘ（Ｄ）で表される判定ＬＷＥ問題は、固定ｓ←Ｄに対して、無視できない利点を有する
【数８】
0006720424.tif 000009
上の一様な分布から分布
【数９】
0006720424.tif 000010
を見分けることである。
【００５３】
ＬＷＲ問題は、誤りを挿入する代わりに法「ｐ」による丸めを使用することによって秘密情報を隠し、次に、Ｚｑ（ここで、ｑは、元のＬＷＥ法）からＺｐにスケールダウンすることによって確定的誤りを導入することによる、ＬＷＥ問題の「脱ランダム化」バージョンである。
【００５４】
ｎ次元ベクトル
【数１０】
0006720424.tif 000011
に対して、
【数１１】
0006720424.tif 000012
上のＬＷＲ分布
【数１２】
0006720424.tif 000013
が、
【数１３】
0006720424.tif 000014
から一様且つ無作為にベクトルａを選び、
【数１４】
0006720424.tif 000015
を出力することによって、得られる。
【００５５】
ここで、［ｘ］は、ｘに最も近い整数とする。探索ＬＷＲ問題は、探索ＬＷＥ問題と全く同様な秘密ｓを見つける観点から定義される。判定ＬＷＲ問題は、固定ｓ←Ｄに対して、ｍインスタンスを有する
【数１５】
0006720424.tif 000016
上の一様な分布から分布
【数１６】
0006720424.tif 000017
を見分けることである。探索及び判定ＬＷＲ問題は、少なくとも、２ｍＢｐ／ｑが定数であるような（ここで、Ｂは、ＬＷＥ問題における誤りにおける界である）ｍが有界である場合の対応するＬＷＥ問題と同じように困難である。
【００５６】
ＬＷＥ問題に基づくポスト量子鍵交換スキームは、ＬＷＥ問題のよく理解されたセキュリティにより幅広い信頼を享受する。しかし、リソース制約の環境において使用されることができる動作が軽いＬＷＥベースの鍵交換スキームは何もない。既存のアルゴリズムには、ｑを法とする行列乗法、ガウス分布などの確率分布からのサンプリング、及び大きな入力による行列の計算又は送信など、限られたリソースのデバイスにおいて遅い様々な演算が含まれる。
【００５７】
本発明では、２つのパーティは、ほぼ等しいが完全には等しくない２つの多項式を生成する。完全な同意となるために、いくつかの調停データが送信される。そのように行うためのスキームが、出願番号１６１９７２７７．３で２０１６年１１月４日にＥＰＯにおいて出願された「ＲＥＡＣＨＩＮＧ  ＡＧＲＥＥＭＥＮＴ  ＯＮ  Ａ  ＳＥＣＲＥＴ  ＶＡＬＵＥ」の題の同じ出願者の特許出願に説明され、例えば、ページ７〜１０の方法は、本発明による実施形態における調停用に使用される。この引用された特許出願の他の個所に開示された変形形態も採用され得る。
【００５８】
本出願では、以下の３つの関数に対して以下の表記を使用する。
１．丸め関数
【数１７】
0006720424.tif 000018
：ｑ、ｂｈ、Ｂ∈Ｚ、ｂｈ≧１、Ｂ＜ｌｏｇ２ｑ−ｂｈに対して、
【数１８】
0006720424.tif 000019
とする。すると、
【数１９】
0006720424.tif 000020
直観的に、
【数２０】
0006720424.tif 000021
は、
【数２１】
0006720424.tif 000022
のＢ最上位ビットを引き出し、
ここで、第２の成分は、不偏丸め誤差を確保する丸め因数である。
２．交差丸め関数
【数２２】
0006720424.tif 000023
：ｑ、ｂｈ、Ｂ∈Ｚ、ｂｈ＞１、Ｂ＜ｌｏｇ２ｑ−ｂｈに対して、
【数２３】
0006720424.tif 000024
とする。すると、
【数２４】
0006720424.tif 000025
直観的に、
【数２５】
0006720424.tif 000026
は、
ｖの（Ｂ＋ｂｈ）最上位ビットのｂｈ最下位ビットを引き出す。
３．調停関数ｒｅｃ（ｗ、ｂ）：
【数２６】
0006720424.tif 000027
に対して、
【数２７】
0006720424.tif 000028
ここで、ｖは、
【数２８】
0006720424.tif 000029
であるようなｗに最も近い元である。
【００５９】
これら３つの関数は、多項式に係数的に適用され得る。
【００６０】
上記の調停関数は、本明細書では一例として使用される。上述のように、上記の出願における調停方法も使用されてもよい。図２は、丸め関数及び交差丸め関数の概略図である。一例として、図２は、生鍵多項式３００の係数を示す。係数３００は、最上位ビットが左、最下位ビットが右である、ビット列として示される。直観的に、係数に適用される丸め関数は、最上位部分３０１のＢビットに対応し、交差丸め関数は、中間部分３０２のｂｈ次のビットに対応する。最下位ｌｏｇ２ｑ−Ｂ−ｂｈは、捨てられてもよい。
【００６１】
発起側ノード１１０は、共有多項式ユニット１３０を備える。応答側ノード２１０は、共有多項式ユニット２３０を備える。共有多項式ユニット１３０及び２３０は、２つのノード間で共有される共有多項式（ａ）を得るように構成される。共有多項式ａの係数は、第１の法ｑを法として選択された整数である。特に、多項式が必ずしもノード１１０及び２１０に対して秘密にされるわけではないということを考えると、ノード１１０とノード２１０との間で同じ多項式が共有されるのを確実にするための多くのやり方がある。
【００６２】
例えば、ノードのうちの１つ、例えば発起側１１０は、例えば共有多項式ユニット１３０において、ｑを法とする元を有する多項式ａを、例えば無作為に選択する。次に、係数は、通信ユニットを通してもう一方のノード、例えば共有多項式ユニット２３０に送信される。この場合、後者の共有多項式ユニット２３０は、多項式を受信し、それを格納するだけとなる。多項式ａは、代わって応答側ノード２１０によって選ばれ、発起側ノード１１０に送信されることもある。
【００６３】
２つのノードは、協力して多項式ａを選ぶこともある。例えば、それぞれのノードが係数のうちのいくつかを選択し、それをもう一方のノードに送信する。例えば、発起側ノードが奇数次係数を選択し、応答側ノードが偶数次係数を選択する、などである。このやり方では、２つのノードのいずれも、最終の多項式ａを制御しない。例えば、２つのノードがそれぞれ完全な多項式ａを選択し、それをもう一方の側に伝える可能性がある。この後、２つの多項式がｑを法として足し算され得る。多項式を送信する最後のノードを有利にさせることを避けるために、選ばれた多項式に対するコミットメントが、最初に前記最後のノードによって送信され得る。
【００６４】
完全な多項式ａを送信することのオーバーヘッドを減らすための興味深いやり方は、ランダムシードを生成し、そのランダムシードを、通信チャネルを通してもう一方のノードに送信することである。ランダムシードを受信した後、第１及び第２のネットワークノードは、それを使用して、上記のやり方のいずれかで、多項式ａを生成し得る。確定的な疑似乱数生成装置をシードし、今度は、疑似乱数生成装置の出力から多項式（ａ）を生成するのに同じランダムシードが使用される。上記の通り、それぞれのノードは、例えばａの異なる部分を生成するためにシードを送信することができ、又は、２つのシードが組み合わされる、例えば、足し算される、ＸＯＲされる、などであってもよく、組み合わされたシードは、ａを生成するのに使用され得る。
【００６５】
シードは、例えば、さらなる乱数生成装置、例えば真の乱数生成装置から選択される。ノードはまた、例えば製造時に、乱数リストと共に構成される。この場合、ノードは、新しい鍵共有に対して新しい多項式ａが生成されるたびに、リストから次の乱数を選択する。乱数リストが、使い尽くされた場合、乱数リストは、信頼されるソースから補充され得る。
【００６６】
共有多項式が、それ自体が既約なものではない簡約多項式と互いに素であることが望まれる場合、シードから互いに素な共有多項式を生成してもよい。例えば、最初に、ランダム多項式がシードから生成され、次に、簡約多項式と互いに素である多項式の生成の後、ある順番で最初の多項式が選択される。代替として、生成された多項式が簡約多項式と互いに素であるかが確認される。互いに素ではない場合、簡約多項式と互いに素である切り詰め多項式が生成されるまで、新たなシードが生成される。
【００６７】
一実施形態において、第１のネットワークノードは、ランダムシードを生成し、そのランダムシードを、通信チャネルを通してもう一方のノードに送信することによって、共有多項式（ａ）を得るように設けられ、第１及び第２のネットワークノードは、ランダムシードを使用して、確定的な疑似乱数生成装置をシードし、疑似乱数生成装置の出力から多項式（ａ）を生成する。
【００６８】
発起側ノード１１０は、秘密鍵多項式ユニット１４０を備える。応答側ノード２１０は、秘密鍵多項式ユニット２４０を備える。秘密鍵多項式ユニット１４０は、秘密鍵多項式ｓｋ１を生成するように構成され、秘密鍵多項式ユニット２４０は、秘密鍵多項式ｓｋＲを生成するように構成される。秘密鍵多項式の係数は、界ｓによって絶対値が有界な整数である。例えば、秘密鍵多項式における係数は、−ｓ〜ｓの間で選ばれる（界を含む）。
【００６９】
驚くことに、界を小さく選ぶことで、秘密鍵多項式の場合の多項式乗法が素早くなり、それぞれの側で計算された生鍵間の距離が縮められるという、二重の利点を有することが確認されている（以下参照）。後者は、調停データがそれほど必要とされない且つ／又はノードが異なる鍵に対して同意したことにより、プロトコルにおける失敗の可能性が小さくなるということを意味する。界ｓは、最大で第２の法が選ばれ、例えば、第２の法以下が選ばれる。この選択は、後で、ｐを法として乗法することから好都合である。秘密鍵多項式の符号付き係数が許される場合、それを第２の法の高々半分（又はそれより小さい）（ｐ／２）に制限することができる。
【００７０】
界は、第２の法又は第２の法の半分よりも低くてもよく、実際には、通常、それよりも相当に小さく選ばれるようになる。一実施形態において、秘密鍵多項式（ｓｋｌ、ｓｋＲ）の係数の絶対値における界ｓは、２である（ｓ＝２）。すなわち、秘密鍵多項式のすべての係数は、−２、−１、０、１であるか又は２である。多項式ａを秘密鍵多項式と掛け合わせるには、１ビット上の加法、減法、及びシフトのみが必要とされる。このような多項式乗法は、このように、極めて効率的に実施され得る。
【００７１】
実施面から、１になるように界を選ぶことによって（ｓ＝１）、最高の結果が達成される。すなわち、秘密鍵多項式の係数は、−１、０、及び１の値のみである。これを、「符号付き二進数」とも呼ぶことにする。符号付き二進数における多項式との多項式乗法は、加法及び減法のみを伴う。ｐ又はｑを法とする乗法用の乗法ユニットは何も必要とされない。界ｓ＝１は、二進数係数、例えば、０又は１のみを使用することによってさらにもっと制限され得るが、実施形態において、係数のうちの少なくともいくつかは１、−１、及び０である。
【００７２】
ｓに対して他の小さな数も可能であり、例えばｓ＝３の場合、許される係数は、０、１、−１、２、−２、３、−３である。これらの数で掛け算をする際の乗法手順がノードに備えられ得る。例えば、＋１、−１は、加算器／減算器によって処理され、−２、＋２は、その後に加算器／減算器が続くシフトによって処理され、＋３、−３は、シフトされた数及びシフトされていない数の両方を加法／減法することによって処理される。
【００７３】
一実施形態において、秘密鍵多項式は、０、２の累乗、必要に応じて２のマイナス累乗である係数のみを含むが、それは、これらの数が、掛け合わせやすいからである。
【００７４】
一実施形態において、秘密鍵多項式は、正の数も負の数も含む。ただし、秘密鍵多項式を非負の数にさらに制限することも可能である。例えば、秘密鍵多項式の係数が０〜ｓであってもよい（界を含む）。例えば、ｓ＝１を選ぶことによって、後者の場合、乗法演算及び減法演算の両方が避けられる。
【００７５】
最大次数係数が０である場合の複雑さを避けるために、それらの次数の代わりに多項式の係数の個数について述べることにする。共有多項式ａの係数の個数をｎとすることにする。通常、秘密鍵多項式及び共有多項式は、同じ個数の係数を有することになるが、これは、必須ではない。一実施形態において、秘密鍵多項式も、ｎ個の係数を有する。すべての多項式乗法は、ｎ次多項式を法とする。実際問題として言うと、他の多項式でもうまくと考えられるが、多項式は、ｘｎ＋１であり得る。多項式
【数２９】
0006720424.tif 000030
の集合が環を形成することに留意されたい。この環は、通常、体にはならず、ｑ及びｘｎ＋１の両方が合成であり得、通常そうなる。下で述べる丸め演算は、環乗算と両立しない方式で、この環をより小さな環に写像する。数学構造のこの故意の破壊は、分析を難しくし、セキュリティを高める。係数個数ｎは、共有鍵における十分なビット数を得るのに、また十分に高いセキュリティレベルを得るのに十分大きく選ばれる。
【００７６】
秘密鍵多項式の係数のサイズを制限するのに加えて、非ゼロ元の個数を制限することによって、さらなる利点が得られる。多項式のハミング重みｈｓをその非ゼロ係数の個数とすることにする。
【００７７】
秘密鍵多項式のハミング重みを制限するための様々なやり方が探られてきた。
【００７８】
例えば、秘密鍵多項式のハミング重みに対して上界が選択される。一実施形態において、発起側の秘密鍵多項式と応答側の秘密鍵多項式とは（それぞれ、ｓｋｌ、ｓｋＲ）、同じ一定のハミング重みを有する。
【００７９】
秘密鍵多項式が、例えば、係数における界、及びハミング重みに応じて、候補秘密鍵多項式から、すなわち、選ばれた要件を満たす多項式から一様に無作為に選ばれるといった条件下である場合、セキュリティが高められる。例えば、ハミング重みが５０であるという条件を強要することを望む場合、５０のハミング重みを有する正しい個数の係数を有するすべての多項式の集合から秘密鍵多項式を選択することに対して好都合である。任意の望ましいハミング重みの一様に無作為のビット列を選択するのに有効なアルゴリズムが知られている。
【００８０】
秘密鍵多項式のハミング重みを制限するための違ったやり方は、確率分布から秘密鍵多項式の係数（ｓｋｌ、ｓｋＲ）を選ぶことである。例えば、秘密鍵多項式の係数（ｓｋｌ、ｓｋＲ）は、非一様確率分布から選ばれ、この場合、ゼロ係数の確率は、非ゼロ係数の確率よりも大きい。一実施形態において、確率分布は、それが所定の期待ハミング重みを与えるように選ばれる。例えば、ｎ個の係数及び期待ハミング重みｈを有する多項式を選ぶ際、それぞれの係数を確率ｈｓ／ｎを有する非ゼロとして選択し得る。非ゼロ係数は、例えば等しい確率を有する、１又は−１として選ばれ得る。
【００８１】
多項式における小さすぎるハミング重みは、セキュリティに影響を与える可能性がある。例えば、符号付き二進数の場合、
【数３０】
0006720424.tif 000031
が少なくとも１２７、より好ましくは少なくとも２５５であるようなハミング重みｈｓが選ばれる。その理由は、秘密鍵多項式をループさせることによって、総当たり攻撃を実行不可能にするからである。一実施形態において、ハミング重みｈｓは、上記の界を満たすようにできる限り小さい。実際的な実施形態では、より大きなｎに対して、係数の個数に比例してハミング重みを選択するだけでよく、例えば、ｈｓ＝αｎが、例えばα＝０．２で設定される。より一般的には、例えば、０．１＜α＜０．９が選び取られる。
【００８２】
発起側ノード１１０は、公開鍵多項式ユニット１５０を備える。応答側ノード２１０は、公開鍵多項式ユニット２５０を備える。公開鍵多項式ユニットは、多項式ａ及び秘密鍵多項式ｓｋから公開鍵多項式を計算する。
【００８３】
公開、秘密といった用語は、共有鍵が、公開情報の知識のみでは得ることができない、又はいくつかの個人情報の知識なしでは得ることができないということを伝える目的のものである。公開情報が積極的に共有されるが、その必要はない。例えば、鍵共有プロトコルが、公開鍵を盗聴者からセキュアに保つ、（推定された）セキュアなチャネル上で実行される可能性がある。この場合、鍵共有プロトコルは、チャネルのセキュリティが破られた場合に追加のセキュリティ層を提供する。
【００８４】
公開鍵多項式ユニットは、第１の法（ｑ）を法として、共有多項式（ａ）と秘密鍵多項式（それぞれ、ｓｋｌ又はｓｋＲ）との多項式積を計算し、多項式積を得て、簡約多項式を法として多項式を簡約化し、その結果をスケールダウンすることによって、公開鍵多項式（ｐｋｌ、ｐｋＲ、それぞれ発起側用、応答側用）を計算する。
【００８５】
しかし、この中間の多項式乗法は、明らかにされない。スケールダウンする前の共有多項式ａ及びこの多項式乗法の結果の知識は、それが、多項式ａを割り切れるまで割ることによって、計算され得ることから、秘密鍵を明らかにする可能性がある。公開鍵多項式ユニットによって行われるスケーリングステップは、この選択肢を阻止する。公開鍵多項式ユニットは、多項式積の係数を第２の法ｐにスケールダウンする。第２の法ｐは、第１の法ｑよりも小さい。スケールされた係数は、第２の法（ｐ）が掛けられ、第１の法（ｑ）で割られ、一番近い整数に丸められた、スケールされていない係数に等しい。例えば、ｘが、多項式積におけるｑを法とするスケールされていない係数である場合、スケールされた係数は、
【数３１】
0006720424.tif 000032
として選択され得、ここで、［］は、一番近い整数を表す。スケーリング演算の後、公開鍵及び多項式ａから秘密鍵を計算することの可能性は率直に言えばもうない。
【００８６】
公開鍵多項式の係数は、区間［０、ｐ−１］の整数として表され得る。区間
【数３２】
0006720424.tif 000033
の係数を選んで、後続の乗法のために整数の大きさを縮小することにとっては利点がある。上で指摘したように、秘密鍵多項式は、区間［−ｓ、ｓ］又は偶数［０、ｓ］において選ばれた係数も有し得る。
【００８７】
多項式ａと秘密鍵多項式ｓとの乗法は、第１の法ｑを法として行われる。このために、ネットワークノードは、ｑを法として縮小するためのモジュール式縮小ユニットを備え得る。秘密鍵多項式ｓの係数が小さい場合、例えば、１で限られる、又は絶対値が１で限られる場合、モジュール式縮小が単純化され、多項式乗法の間、係数がｑよりも大きくなる、又は０よりも小さくなるたびに、その結果は、減法又は加法ｑによって区間０〜ｑ−１に戻される。
【００８８】
発起側ノード及び応答側ノード両方は、例えば通信インターフェース１２０及び２２０を使用して、それらの公開鍵多項式をもう一方のノードに送信する。多項式積をスケールダウンすることによって見えてくる少なくとも３つの利点が確認されている。第１に、多項式積の中へのノイズの生成及び明確な付加が避けられることである。ノイズを導入することは、確率分布、例えばガウス分布の計算を必要とする。これは、比較的、計算上、強烈なものである。第２に、通信要件が減らされることである。第２の法ｐが第１の法ｑよりも小さいことから、秘密鍵多項式よりも、公開鍵多項式を表すのに必要とされるビットが少なくて済む。第３に、公開鍵多項式を伴う計算が、それがより小さな数に関わることから小さくなることである。ただ１つの方策が同時に３つの利点をもたらすことは驚きである。
【００８９】
第２の法ｐが第１の法ｑを割ることが強く好まれる。興味深いことに、第１の法も第２の法も素数である必要がないことが確認されている。事実、２の累乗として第２の法（ｐ）及び／又は第１の法（ｑ）を選ぶことによって、公開鍵と秘密鍵とが一様に分散されるという利点があることが確認されている。一実施形態において、第１の法も第２の法も２の累乗である。
【００９０】
一実施形態において、
【数３３】
0006720424.tif 000034
が、２の累乗である法ｐ及びｑに加えてｐを割ることがさらに必要とされる。このことは、調停データに従ったとしても、一様な共有鍵をもたらす。Ｂは、生鍵の係数ごとに引き出された共有鍵ビット数である。実施形態によっては、生鍵の係数のすべてが使用されるわけではなく、その場合、Ｂは、使用される係数ごとに引き出された共有鍵ビット数である。
【００９１】
法の大きさは、それほど大きい必要はない。例えば、一実施形態において、第２の法は、ビットサイズとして、１２以上を有し、且つ／又は第１の法は、ビットサイズとして８以上を有する。セキュリティ要件に応じて、それより大きい又は小さい大きさが可能である。一実施形態において、ｑは、２１２〜２１６の範囲であり、ｐは、２７〜２９の範囲である（両端を含む）。ｐ及びｑの値は、セキュリティ要求が命じるままに、より大きい又は小さなものが選ばれ得る。
【００９２】
発起側ノード１１０は、共有鍵ユニット１６０を備える。応答側ノード２１０は、共有鍵ユニット２６０を備える。共有鍵ユニットは、それらが調停データを生成し、送信するか又は調停データを受信し、適用するという意味において異なる。
【００９３】
共有鍵ユニット１６０も共有鍵２６０も、もう一方のノードの受信した公開鍵と、ネットワークノードそのものの秘密鍵多項式との第２の法（ｐ）を法とする多項式積として、生鍵１６２、２６２を計算し、その後、簡約多項式を法とする簡約化が続くように構成される。スケーリング演算が省略された場合、両方のパーティが同一の生鍵を計算する可能性があることに留意されたい。すなわち、スケーリングなしで同一の鍵がもたらされ、すべての計算がｑを法として行われている。しかし、スケーリングにより、両方の生鍵が同一である必要はない。生鍵を計算することは、ｐを法として行われる。ネットワークノードは、ｐを法とする乗法の結果を簡約化するためのモジュール式ユニットを備え得る。
【００９４】
応答側ノード２１０の共有鍵ユニット２６０は、生鍵２６２から共有鍵２６６及び調停データ２６４を得るように、また調停データ２６４を発起側ネットワークノード１１０に送信するように設けられる。調停データは、生鍵において１つ又は複数のビットの形態を取り得る。調停データとして選ばれたビットは、鍵を生成する目的では無視される。
【００９５】
共有鍵ユニット２６０は、そこから鍵を形成する生鍵の係数からいくつかのビットを選ぶ。例えば、選ばれたビットは、連結される。一実施形態において、選ばれたビットは、鍵導出関数（ＫＤＦ）、例えば暗号学的ハッシュ関数に入力される。ＫＤＦの例は、例えば、ＣＭＬＡ  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ、Ｖｅｒｓｉｏｎ：Ｖ１．４３−２０１３１２１８からのＣＭＬＡ＿ＫＤＦ、又は「ＤＲＭ  ｓｐｅｃｉｆｉｃａｔｉｏｎ」、ＯＭＡ−ＴＳ−ＤＲＭ−ＤＲＭ−Ｖ２＿０＿２−２００８０７２３−Ａ、Ｏｐｅｎ  Ｍｉｂｉｌｅ  Ａｌｌｉａｎｃｅ（商標）、Ｖｅｒｓｉｏｎ２．０．２、ｓｅｃｔｉｏｎ７．１．２において定義されたＫＤＦ関数などに示される。鍵導出関数は、例えば連結後の、例えば丸め関数によって得られた、又は、例えば、また連結後の調停関数からの出力から得られた、生鍵における鍵ビットの係数に適用され得る。
【００９６】
鍵ビットとして選ばれないいくつかのビットは、調停データとして選択され得る。最終的に、いくつかのビットが、完全に捨てられ得る。一実施形態において、鍵ビットは生鍵係数のＭＳＢ部分から選択され、調停データは生鍵係数の中間部分から選択され、生鍵の最下位部分が捨てられ得る。例えば、鍵ビットは、丸め関数を生鍵の係数に適用することによって得られ得、調停ビットは、交差丸め関数を生鍵の係数に適用することによって得られ得る。
【００９７】
共有鍵ユニット２６０によって生鍵から得られた鍵調停データは、発起側ノード１１０に送信される。
【００９８】
共有鍵ユニット１６０は、第２のネットワークノードの調停データ１６４（ｈ）を受信するように、また調停関数を受信した調停データ及び生鍵多項式１６２に適用することによって、共有鍵を計算するように構成される。例えば、調停関数は、生鍵１６２及び調停データの対応する部分の係数のそれぞれに適用される。例えば、調停データ１６４が応答側ユニット２１０によって生成された生鍵の一部であった場合、発起側ノードは、ノード２１０によって得られた可能性があり、受信した調停データと互換性のある、例えば、受信したのと同じ中間ビットを有する、生鍵を選択する。これを行う１つのやり方は、上で定義された調停関数を使用することである。結果として、共有鍵を作り出すのにノード２１０が使用したのと同じビットが回復される。同じようにビットを連結することによって、又はそれらを同じＫＤＦに入力することによって、同じ共有鍵１６６が得られる。一実施形態において、共有鍵は対称鍵である。
【００９９】
それほど調停データが必要とされず、ただ１つのビットで十分とすることができる。ただし、調停データビット数を２ビット以上に上げることは、それがプロトコルの失敗の確率を下げることから好都合である。
【０１００】
Ｂ及びｂｈに対する典型的な値は、１又は２である。本明細書では、Ｂは、生鍵係数ごとに引き出された鍵ビット数であり、ｂｈは、生鍵係数ごとの調停ビット数である。ｎとＢとの積が、望まれる鍵サイズ以上の大きさになるような、例えばｎＢ≧２５６になるような係数の個数（ｎ）が選ばれる。
【０１０１】
鍵共有プロトコルの複数回の実行の際、多項式ａ及び秘密鍵多項式のうちの１つを再使用してもよい（その両方が同じであれば、同じ共有鍵が得られる）。このことは、特に多項式ａが再使用される場合、通信オーバーヘッドを減らすことになる。しかし、これらの要素につなげられる認証が何もないことから、多項式ａ及び秘密鍵多項式のいずれも再使用する必要がないことが分かっている。好ましい実施形態において、新しく鍵を交換するたびに、新しい多項式ａ及び新しい秘密鍵が得られる。これには、アタッカが、プロトコルの複数回の実行を観察することによって、追加情報を観察するという選択肢をもたないという利点がある。さらに、前方秘匿性が高められる。
【０１０２】
プロトコルが完了し、両方のノードが共有鍵を計算した後、ノードのうちの１つが、鍵確認メッセージをもう一方のノードに送信し、それらが同じ鍵について同意したことを証明し得る。例えば、鍵確認メッセージは、共有鍵のハッシュ、固定値の暗号化、ランダム値を伴うランダム値の暗号化である。鍵確認はまた、チャレンジレスポンスプロトコルを使用して行われ得る。鍵確認を省略することを選んでもよい。そのパーティが異なる共有鍵を得る場合、それに続いてパーティ間で行われる通信は、うまくいかないことになる。例えば、さらなる通信、例えばデジタルメッセージを暗号化する且つ／又は認証するのに共有鍵が使用される。パーティが異なる共有鍵に辿り着いた場合、暗号解読及び／又は証明がうまくいかない可能性がある。
【０１０３】
以下にさらなる特定の有利な実施形態が説明される。本発明を表す基本的なシステムは、これ以降は発起側及び応答側とする２つのエンティティ又はパーティによって実行され得る、これ以降は鍵交換（ＫＥＸ）スキームとするプロトコルであり、発起側及び応答側のみが分かる共有秘密をそれら自身間に確立するためのものである。この目的のために、発起側及び応答側は、それらがＫＥＸスキームを実行する前に同意しなければならないいくつかの共通システムパラメータ、これ以降それらの秘密鍵とする、それらのそれぞれが所有するいくつかの個人情報、及びこれ以降それらの公開鍵とする、それらのそれぞれが所有するいくつかの公開情報、を使用する。ＫＥＸスキームのセキュリティは、そのセキュリティがＬｅａｒｎｉｎｇ  ｗｉｔｈ  Ｅｒｒｏｒｓ（ＬＷＥ）問題に基づいているＬｅａｒｎｉｎｇ  ｗｉｔｈ  Ｒｏｕｎｄｉｎｇ（ＬＷＲ）問題に基づき、共有秘密の秘匿性と、発起側の秘密鍵及び応答側の秘密鍵の秘匿性を保護する。
【０１０４】
下の例では、秘密鍵多項式は、符号付き二進数である。
【０１０５】
ＫＥＸスキームの一実施形態は、セットアップ、鍵生成、及び鍵交換の３つの段階から成る。一実施形態において、本鍵交換スキームのこの実施形態の段階は、次の通りである。
・セットアップ：発起側と応答側が以下の正の整数について同意する。
ｉ．  ｑ、ｐ：ｐ｜ｑであるような
ｉｉ．  ｎ及びΦ（Ｘ）＝Ｘｎ＋１  すべての多項式乗法は、この簡約多項式を法とする。
ｉｉｉ．  ｈｓ＜ｎ  これは、秘密鍵多項式のハミング重みである。
ｉｖ．  Ｂ：最終の共有秘密又は共有鍵を作り出す間に２つのパーティの生鍵の係数ごとに引き出されたビット数
ｖ．  ｂｈ：調停データを作り出す間に２つのパーティの生鍵の係数ごとに引き出されたビット数
ｖｉ．  ａ←Ｒｑ：ランダム多項式、ここで、Ｒｑ＝Ｚｑ［Ｘ］／（Φ（Ｘ））は、整数ｑを法とする円分環の残余環である。ａとΦとが、互いに素であることが好ましい。
・鍵交換：発起側及び応答側両方がそれらの秘密−公開鍵−対を以下のように生成する。
ｉ．  秘密鍵：秘密多項式ｓｋ←ＨＷＴｎ（ｈｓ）、例えば、ｎ係数及びハミング重みｈｓを有するランダム多項式
ｉｉ  公開鍵：
【数３４】
0006720424.tif 000035
【０１０６】
共通パラメータの選択は、特定のパラメータが所与の識別子に写像される場合、ＴＬＳ又はＩＫＥなどのプロトコルに一体化され得る。例えば、プロトコル識別子、例えばＴＬＳにおける暗号スイート要素が、共通パラメータを符号化するのに使用される。公開多項式は、例えばハッシュ関数を用いることによって、シードからも導き出される。難しい解法では、発起側が、応答側に送信するいくつかのパラメータを決めることになる。
・鍵交換：この提案された鍵交換スキームである、発起側Ｉと応答側Ｒとの間の鍵交換は、三進数成分を含む、丸め及び疎の秘密多項式を使用して、ＩとＲとの間の共有鍵Ｋの確立に導く。
【０１０７】
【表１】
0006720424.tif 000036
【０１０８】
実施目的では、パラメータｎは、都合よく２の累乗である必要があるが、このことは、設計要件ではない。
【０１０９】
ハミング重みを選択することは、重大ではないが、Ｓ（ｐｏｓｔ−ｑｕａｎｔｕｍ）及び２Ｓ（ｃｌａｓｓｉｃａｌ）のビットにおける目標とするセキュリティレベルを前提とする。それの係数を推定するための秘密鍵の徹底的な総当たり探索が、十分に高い作業負荷を有することを確実にするためには、秘密鍵ベクトル（それぞれがハミング重みｈｓを有する）における秘密の個数が、以下を満たす必要がある。
【数３５】
0006720424.tif 000037
ここで、２２Ｓは、Ｇｒｏｖｅｒの量子−探索アルゴリズムの実行時間であり、２Ｓは、古典的探索アルゴリズムの実行時間である。例えば、Ｓは、１２８又は２５６などである。この界は、秘密鍵多項式の係数の絶対値における界が１である場合に当てはまる。より大きな界ｓに、同様の界が確立され得る。
【０１１０】
秘密鍵多項式の選択は、確率的に行われ得る。確率的な秘密鍵生成は、実施を単純にする。秘密鍵に対してｈｓ非ゼロ係数を生成する代わりに、秘密鍵ｓｋｌ∈｛０、±１｝ｎ←ＨＷＴｎ（ｈｓ）、及びｓｋＲ∈｛０、±１｝ｎ←ＨＷＴｎ（ｈｓ）ｎを作り出している間、この実施形態におけるそれぞれの第ｉの秘密鍵係数ｓｋｉは、以下のように作り出される可能性がある。
【数３６】
0006720424.tif 000038
【数３７】
0006720424.tif 000039
【数３８】
0006720424.tif 000040
【０１１１】
代替として、この生成が確定的である場合、標準セキュアＰＲＦを使用して以下が行われ得、ｎ位置のベクトルにｈｓ非ゼロ元（１又は−１）がある場合、ＰＲＦの出力は、ＰＲＦが様々な場所でｈｓ非ゼロ元を選択するまで、ランダム＋１又は−１値と共に、列におけるランダム位置を選択する。例えば、ＰＲＦ出力は、ブロックの最初の
【数３９】
0006720424.tif 000041
ビットが非ゼロ元の位置を特定し、ブロックの最後のビットがその元が１であるか又は−１であるかを判断する、
【数４０】
0006720424.tif 000042
ビットのブロックに分割される。ベクトルは、秘密鍵多項式の係数として使用され得る。
【０１１２】
提案された鍵交換には、いくつかの利点がある。
【０１１３】
計算上の複雑さ：秘密鍵多項式が疎であり、係数０、１、及び−１を有することから、本スキームにおけるｑを法とする計算は、短時間である。特に、多数の係数を有する多項式を伴う乗法（例えば、公開鍵及び生鍵の生成中）が、高度に最適化され得る。
通信の複雑さ：より低い法への丸めの使用により、公開鍵及び生鍵のそれぞれの係数の大きさを縮小することができ、かなり低い帯域幅要件をもたらす。以下の２つの表でこれを量で表し、表には、提案した本スキームの帯域幅要件（それぞれ、丸めを使用する場合と、丸めを使用しない場合の）を説明する。実施形態が、Ｊ．Ｂｏｓ、Ｃ．Ｃｏｓｔｅｌｌｏ、Ｌ．Ｄｕｃａｓ、Ｉ．Ｍｉｒｏｎｏｖ、Ｍ．Ｎａｅｈｒｉｇ、Ｖ．Ｎｉｋｏｌａｅｎｋｏ、Ａ．Ｒａｇｈｕｎａｔｈａｎ、Ｄ．Ｓｔｅｂｉｌａによる、「Ｆｒｏｄｏ：Ｔａｋｅ  ｏｆｆ  ｔｈｅ  ｒｉｎｇ！  Ｐｒａｃｔｉｃａｌ，Ｑｕａｎｔｕｍ−Ｓｅｃｕｒｅ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ  ｆｒｏｍ  ＬＷＥ」に記載のＬＷＥベースのプロトコルと比較される。
【０１１４】
帯域幅は、交換された鍵交換メッセージ（すなわち、公開鍵及び調停データ）の合計サイズとして計算され、公開多項式ａの交換を含まない。
【０１１５】
上記のＬｅａｒｎｉｎｇ  ｗｉｔｈ  Ｒｒｏｕｎｄｉｎｇ（ＬＷＲ）との組合わせにおける小疎秘密の使用法が、例えば、格子ベースの鍵交換の考案に対して説明される。下で、追加の実施形態を示し、どのようにパラメータが選ばれるかを説明し、いくつかの例が与えられる。整数ｑ≧１に対して、Ｚｑを商環Ｚ／ｑＺとする。Ｒ＝Ｚｑ［Ｘ］／（Ｘｎ＋１）を、Ｘｎ＋１を法とする整数多項式の環と定義する。Ｒｑ＝Ｚｑ［Ｘ］／（Ｘｎ＋１）を使用して、それぞれの係数がｑを法として縮小される、Ｘｎ＋１を法とする整数多項式の環を表す。ｘがＲ上の確率分布である場合、
【数４１】
0006720424.tif 000043
は、確率分布ｘに従ったｘ∈Ｒのサンプリングを表す。書き出し
【数４２】
0006720424.tif 000044
は、多項式のすべての係数又はベクトルａがＺｑ、ＤＺ、ｑから一様且つ無作為に選ばれることを意味し、ガウスパラメータ
【数４３】
0006720424.tif 000045
によってパラメータ化され、すべての整数ｘに
【数４４】
0006720424.tif 000046
に比例して重みを割り当てることによって定義される、Ｚ上の離散ガウス分布を表す。０＜ｈ＜ｎ、ＨＷＴｎ（ｈ）の場合の整数ｎ、ｈに対して、確率分布｛０、１｝から又は｛−１、０、１｝からの正しくｈ非ゼロ成分を有するｎ成分を含む多項式又はベクトルを一様且つ無作為に標本抽出する。それぞれ、最終の共有鍵の調停データの計算と調停の計算とに使用される関数ＨｅｌｐＲｅｃＯとＲｅｃＯとは、［１］に定義されるように同じである（参照文献が下に示される）。
【０１１６】
アリスとボブ（鍵交換の当事者）によって行われる以下のステップでは、説明上、ＨＷＴｎ（ｈ）は、三進数分布｛−１、０、１｝から標本抽出する。
【０１１７】
比較として、ＮｅｗＨｏｐｅ［２］について述べ、ｗａｙ  ＮｅｗＨｏｐｅは、それのパラメータ［２］を構成する。ＨｅｗＨｏｐｅは、Ｒｉｎｇ  ＬＷＥに基づく鍵交換スキームである。しかし、ＮｅｗＨｏｐｅは、元のガウス分布によく似ている秘密及びノイズ分布を使用する。したがって、公開鍵ｂ＝ａｓ＋ｅ（ｍｏｄ  ｑ）が計算される際、又は鍵ｖ’＝ｂｓ’＋ｅ”（ｍｏｄ  ｑ）が計算される際、数論変換を使用することを提案する。そのように行う場合、
【数４５】
0006720424.tif 000047
及び
【数４６】
0006720424.tif 000048
上で、ハット記号付きの元は、ＮＴＴを適用した後のベクトルを表す。
【数４７】
0006720424.tif 000049
は、直接計算される。また実際には、アリスとボブは、
【数４８】
0006720424.tif 000050
及び
【数４９】
0006720424.tif 000051
の係数を交換する。ＮＴＴは、Ｎｕｍｂｅｒ  Ｔｈｅｏｒｅｔｉｃ  Ｔｒａｎｓｆｏｒｍ（数論変換）を表す。
【０１１８】
ＮＴＴは、演算の実施をより短時間にさせるが、ＮＴＴはまた、いくつかの要件を提示する。
・ｎは２の累乗である必要がある。
・ｑは、ｑ≡１（ｍｏｄ  ２ｎ）となるような素数である。
このことは、ＮｅｗＨｏｐｅに、ｎの比較的大きな値、すなわち１０２４を選ばせると同時に、ｑを定める。これらのパラメータに対して、ＮｅｗＨｏｐｅの作成者は、次に、このスキームが提示するセキュリティレベルを定める。
【０１１９】
本発明によって取り組まれる問題は、良好な動作を確保しながら、所与のセキュリティレベルをもたらす小さな構成パラメータを選ぶことができるように、小さな秘密を使用してパラメータを選ぶことである。
【０１２０】
ＮｅｗＨｏｐｅ［２］が構成パラメータを開示することに留意されたい。しかし、提案された選択（ｎ＝１０２４）が、その設定では可能であるＮＴＴベースの実施をもたらすように、ｎが２の累乗である必要があることから、ＮｅｗＨｏｐｅの作成者によって提案されたパラメータに代わるものはない。しかし、このことは、セキュリティ理由によってというよりも、むしろＮＴＴの使用法によって課せられる要件である。ｎの形態に上記の制約を課すことは、所与のセキュリティレベルも提供するために必要であるよりも大きな選択物の結果となる。
【０１２１】
本明細書に記載の実施形態は、ＮＴＴに良好な動作を達成するよう要求しない丸めとの組合わせにおいて小さな秘密を使用する。このスキームがＮＴＴを必要としないことから、ｎ及びｑの値は、ＮＴＴによって課せられる制約なしに選ばれ得る。
【０１２２】
下には、次の条件を満たすパラメータ（ｑ、ｐ、ｎ）を有する実施形態を開示する。
ａ）ｑは、可能な限り小さい。
ｂ）鍵ビットは、ｐを定める鍵ベクトルのそれぞれの係数から計算され得る。
ｃ）選ばれたｑ及び最適な個数の標本ｍとの組合わせにおいて、提供されたセキュリティレベルが少なくともλであることを確実にしながら、ｎが可能な限り小さい。
【０１２３】
システムは、後で、小さな秘密を使用する鍵交換においてアリスとボブによって適用されるパラメータ（ｑ、ｐ、ｎ）を計算する。
【０１２４】
Ｒｉｎｇ  ＬＷＥベースのＫＥＸのセキュリティ分析は、ＢＫＺ格子簡約アルゴリズムへのアクセスを有するアタッカの成功確率を分析することと、主要な攻撃の適合化版を採用して一意ＳＶＲ問題を解くこととを伴う。この攻撃は、秘密が異常に小さく、さらに、ことによると疎でもあるという事実につけ込むために、アタッカによって適合される。この適合は、アタッカが探し求める一意の最も短いベクトルにおける秘密成分とノイズ成分との食い違いを、格子簡約を使用して同一視するために、格子スケーリングを使用して行われ、［３］に詳述される手法によって引き起こされる。
【０１２５】
この適合化主要攻撃の成功確率を分析することは、アルゴリズム内のＳＶＰ予言の１回の呼び出しを前提とし、ｃが、どの発見的評価がすでにあるかについての実験的定数である２ｃｂＣＰＵクロックサイクルの実行時間を有する、所与のブロックサイズｂのＢＫＺ格子簡約の所与のインスタンスによって攻撃され得ないｎの最も小さな値を与える。
【０１２６】
下に、所与のセキュリティレベルλをもたらすために、標本の最適な個数ｍに対して、鍵ベクトルの係数ごとの鍵ビットの生成を可能にする最も小さなパラメータ（ｑ、ｐ、ｎ）を見つけるためのアルゴリズムを説明する。一実施形態において、このアルゴリズムは、目標のセキュリティレベルλが与えられるサーバにおいて、又はアリスにおいて、又はボブにおいて実行される。セキュリティレベルが与えられると、彼らは、後に交換され、鍵交換プロトコルにおいて使用される対応する構成パラメータを計算する。
【０１２７】
【表２】
0006720424.tif 000052
【表３】
0006720424.tif 000053
【表４】
0006720424.tif 000054
【表５】
0006720424.tif 000055
0006720424.tif 000056
【０１２８】
後者の格子アルゴリズムは、ｑの様々な値に対して、ｎ及びｐに適切な値を生み出す。次に、例えば、低い帯域幅要件を有するパラメータを選び取るために、ｑについての最適化が行われ得る。ｐが一番可能性のある実施では２の累乗である必要があることが好ましい。
【数５０】
0006720424.tif 000057
（可能な限り大きい）を満たす、２の累乗としてのｐを選ぶことの代わりに、ｐ値にわたってループさせることもできる。特に、ｐもｑも２の累乗である場合である。
【０１２９】
ｐが、行った調停成功条件分析が正しいように（条件の計算におけるステップのうちの１つがこの要件を必要とする）、ｑの因数である必要があることが好ましい。この条件は、（１）が満たされれば、自動的に満たされる。セキュリティ：比率ｑ／ｐは、丸み誤差のバラツキが等価ガウス誤差のバラツキとほぼ同じであるように十分に大きい必要がある。
【０１３０】
ＬＷＲの場合の小さな秘密に基づくＫＥＸの利点：鍵交換における秘密鍵が小さな成分（三進数又は二進数）から成っているので、（Ｘｎ＋１）を法とする多項式乗法は、［１］で行われるような数論変換（ＮＴＴ）領域における多項式の演算を必要としなくても効果的に進められ得る。
【０１３１】
この理由により、セキュリティ分析によって決定付けられる制限以外は、ｎ及びｑの値にそれ以上制限が課されることはない。また、ＬＷＲを使用することが実現可能である（ＮＴＴの場合は実現可能ではない）。重要な利点は、このように、帯域幅要件を減らすｎのより小さな値が選ばれ得ることである。
【０１３２】
Ｎｅｗｈｏｐｅ  Ｒｉｎｇ−ＬＷＥベースの鍵交換スキーム用の帯域幅は、以下のように計算される。
【数５１】
0006720424.tif 000058
【０１３３】
ｓｐ−ｔｅｒＲｉｎｇ−ＬＷＥベースの鍵交換スキーム用の帯域幅は、以下のように計算される。
【数５２】
0006720424.tif 000059
パラメータｂｈは、調停データ多項式ｒの各成分の作成に向けて、ボブの生鍵多項式ｖ’の成分ごとに引き出されたビット数に相当し、［１］により向上した調停機構に基づき、上記の鍵交換及びセキュリティレベルのすべてに対して、２として取られる。
【０１３４】
ＮｅｗＨｏｐｅのパラメータと本手法を比較する際、以下の場合を考慮する。
ａ）ｎに制約がなければ、ただしＮｅｗＨｏｐｅの場合と同じｑに対してだが、Ｒｉｎｇ−ＬＷＲでは、疎な三進数秘密に対して動作が向上する。
【０１３５】
表１は、ＢＫＺ−ｂを実行するコストが少なくとも２１２８であり、鍵共有失敗確率が高々２−６０であるようなブロックサイズ「ｂ」のＢＫＺを使用する主要攻撃を受けやすいＲｉｎｇ−ＬＷＲの最も大きな問題次元である。ノイズ多項式は、標準偏差
【数５３】
0006720424.tif 000060
の離散ガウス分布から標本抽出される。ｓｐ−ｔｅｒＲｉｎｇ−ＬＷＲにおける秘密多項式のハミング重みは、０．２ｎである。帯域幅は、［１］に基づき計算された調停データを含んで計算される。
【０１３６】
【表６】
0006720424.tif 000061
しかし、ｑのこの値に対して、［１］の場合と同じ鍵調停を行うことは実現不可能である。
ｂ）ＮｅｗＨｏｐｅにおいて使用される（ｎ、ｑ）に制約を課さなければ、Ｒｉｎｇ−ＬＷＲでは、疎な三進数秘密に対して動作が向上する。
【０１３７】
表２は、ＢＫＺ−ｂを実行するコストが少なくとも２１２８であり、鍵共有失敗確率が高々２−６０であるようなブロックサイズ「ｂ」のＢＫＺを使用する主要攻撃を受けやすいＲｉｎｇ−ＬＷＲの最も大きな問題次元である。ｓｐ−ｔｅｒＲＩＮＧ−ＬＷＲにおける秘密多項式のハミング重みは、０．２ｎである。帯域幅は、［１］に基づき計算された調停データを含んで計算される。
【０１３８】
【表７】
0006720424.tif 000062
【０１３９】
［１］における鍵調停方法を適用できるように、２の累乗に等しいｑの値を使用することに留意されたい。動作を向上させるために、他に２の累乗に等しいｐの値を使用することに留意されたい。
【０１４０】
Ｎｅｗｈｏｐｅ  Ｒｉｎｇ−ＬＷＲベースの鍵交換スキーム用の帯域幅は、以下のように計算される。
ＢａｎｄｗｉｄｔｈＮｅｗｈｏｐｅ＝（２・１０２４・［ｌｏｇ２１２２８９］）＋（２５６・８）
【０１４１】
ｔｅｒＲＩＮＧ−ＬＷＲベースの鍵交換スキーム用の帯域幅は、以下のように計算される。
ＢａｎｄｗｉｄｔｈｔｅｒＲＩＮＧ−ＬＷＲ＝（２・ｎ・［ｌｏｇ２ｐ］）＋（ｋｅｙｌｅｎｇｔｈ・ｂｈ）
【０１４２】
ｓｐ−ｔｅｒＲＩＮＧ−ＬＷＲベースの鍵交換スキーム用の帯域幅は、以下のように計算される。
Ｂａｎｄｗｉｄｔｈｓｐ−ｔｅｒＲＩＮＧ−ＬＷＲ＝（２・ｎ・［ｌｏｇ２ｐ］）＋（ｋｅｙｌｅｎｇｔｈ・ｂｈ）
【０１４３】
パラメータｂｈは、調停データ多項式ｒの各成分の作成に向けて、ボブの生鍵多項式ｖ’の成分ごとに引き出されたビット数に相当する。
【０１４４】
ＮＴＴによってパラメータに対する制限を取り除くことにより、セキュリティ及び演算上の正確さの分析を最適化することに柔軟性を与えることができる。計算されたパラメータの場合、ポスト量子セキュリティレベルに対し、丸めを使用するときのＮｅｗｈｏｐｅ鍵交換スキームに比べ０．４１倍の帯域幅しか必要としない。さらに、ＮＴＴをやめることは、疎な小さな秘密を巧みに利用するように最適化された実施態様を前提とすれば、動作における目立った落ち込みを何ら引き起こさない。
１．  ２０１６年１１月４日、出願番号１６１９７２７７．３で欧州特許庁に出願された、Ｌ．Ｔｏｌｈｕｚｅｎ、Ｏ．Ｇａｒｃｉａ  Ｍｏｒｃｈｏｎ、Ｒ．Ｒｉｅｔｍａｎによる「Ｒｅａｃｈｉｎｇ  ａｇｒｅｅｍｅｎｔ  ｏｎ  ａ  ｓｅｃｒｅｔ  ｖａｌｕｅ」、Ｆｉｓｔ  ｆｉｌｉｎｇ、Ｐｈｉｌｌｉｐｓ参照番号２０１６Ｐ０１２２７ＥＰ
２．  Ｅ．Ａｌｋｉｍ、Ｌ．Ｄｕｃａｓ、Ｔ．Ｐｏｅｐｐｅｌｍａｎｎ、Ｐ．Ｓｃｈｗａｂｅ、「Ｐｏｓｔ−ｑｕａｎｔｕｍ  ｋｅｙ−ｅｘｃｈａｎｇｅ−ａ  ｎｅｗ  ｈｏｐｅ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ、Ｒｅｐｏｒｔ２０１５／１０９２、ｈｔｔｐｓ：／／ｅｐｒｉｎｔ．ｊａｃｒ．ｏｒｇ／２０１５／１０９２．ｐｄｆ．
３．  Ｓ．Ｂａｉ、Ｓ．Ｄ．Ｇａｌｂｒａｉｔｈ、「Ｌａｔｔｉｃｅ  Ｄｅｃｏｄｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｂｉｎａｒｙ  ＬＷＥ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ、Ｒｅｐｏｒｔ２０１３／８３９、ｈｔｔｐｓ：／／ｅｐｒｉｎｔ．ｊａｃｒ．ｏｒｇ／２０１３／８３９．ｐｄｆ．
【０１４５】
図６ａは、パラメータ選択デバイス６００の一実施形態の一例を示す。デバイス１１０、２１０、５１０、５２０のように、デバイス６００も、プロセッサ回路及び電子メモリを備えることができ、前記電子メモリは、プロセッサ回路により実行可能なコンピュータコードを格納する。前記コンピュータコードは、デバイスを構成し、例えば、対応する方法を実施する。代替の実施形態が、ハードウェアにおいて、又はハードウェアとソフトウェアとの混成物において、その機能性のすべて又は一部を具体化してもよい。以下、デバイス６００のユニットが定義され、ユニットは、ソフトウェア／ハードウェアなどにおいて具体化され得るユニットと見なされ得る。デバイス６００は、ネットワークノードにおける使用向けに、パラメータを選択するように構成される。具体的には、パラメータｐ、ｑ、及びｎだけではなく、他のパラメータ、例えばｈ又はＢなども最適化され得る。デバイス６００は、暗号プロトコルの考案者によって使用され得るが、デバイス６００は、本明細書に記載のような１つ又は複数の鍵共有プロトコルを実行する前に、ハンドシェイクの一部としても使用され得る。
【０１４６】
デバイス６００は、２つのステップにおいて最適化を行う。最初に、複数のパラメータ集合が生成される。次に、例えば、望ましい特性、例えば低帯域幅、低コンピュータ計算要件などを有するものを選択することによって、見つけられたパラメータ集合にわたって最適化が行われる。
【０１４７】
デバイス６００は、パラメータ集合生成装置６１０を備える。パラメータ集合生成装置６１０は、複数の可能なパラメータ集合を生成するように構成される。例えば、パラメータ集合には、共有多項式（ａ）の少なくとも第１の法（ｑ）、第２の法（ｐ）、及び係数の個数（ｎ）が含まれる。パラメータ集合生成装置６１０は、第１の法（ｑ）と第２の法（ｐ）との複数の対を生成するように構成されたｐ、ｑ選択ユニット６２０を備える。例えば、ｐ、ｑ選択ユニット６２０は、ｑの複数の可能な値にわたって働き、例えば上で定義されたような固定界に従って、ｑを選択する。後者の場合、分かっているノイズ量がスケーリング演算に導入される。しかし、このことは必須ではない。ｐもｑも互いに無関係に変えられる可能性がある。そこで、選んだもののセキュリティについての確認により、ｐとｑとの悪い組合わせをフィルタ処理で取り除く可能性がある。ｐ及びｑ用の値は、実際的であるもの、例えば、２の累乗で、理に適った界内、例えば、７〜１６ビット、などのものが選ばれる。
【０１４８】
例えば、一実施形態において、ｑは、２８〜２１６（両端を含む）で変えられ、ｐは、ｑとは無関係に変えられ、例えば、ｐは、２４〜２１２（両端を含む）で変えられる。ｐはまた、界
【数５４】
0006720424.tif 000063
に従って可能な限り大きな値が選ばれてもよい。このことは、σで示されるようなノイズが導入されることを確実にすることになる。例えば、σは、
【数５５】
0006720424.tif 000064
又は
【数５６】
0006720424.tif 000065
として、又はそれら間で選ばれる。ノード間で交換されたデータから引き出され得る情報が少ないほど、セキュリティにとっては、ノイズレベルが高くなるのがよい。その一方で、ノイズレベルが上がるほど、失敗確率が上がる。
【０１４９】
デバイス６００は、ｎ、ｍオプティマイザ６３０をさらに備える。ｎ、ｍ−オプティマイザ６３０は、所与の法対に対して安全な個数の係数（ｎ）を探し出すように構成される。安全なｎを選択することは、それが、アタッカが注意を向けることになるメッセージ個数ｍに左右されることから容易なことではない。アタッカが、例えば、共有多項式や公開鍵などの交換された情報など、ほんのわずかのメッセージにしか注意を向けない場合、ｎの値が低くなっても十分である。ｍが上がるにつれて、ｎ用の一番小さな安全な値が上がることになる。しかし、ある時点で、もっと多くのメッセージに注意を向けるようになると、追加のメッセージから引き出すことができた追加の情報が作業負荷上昇に値しないといったアタッカに起因するもっと多くの労力を強いられるようになる。言い換えれば、いずれの所与のｎ、ｐ、及びｑに対しても、アタッカが注意を向けることに対する最適なメッセージ個数がある。
【０１５０】
この相互作用は、安全なｎを選択することを難しくする。特に、ｎが小さいことが求められる場合にそうである。ｍをある大きな最大値に正確に設定するために安全なｎを探し出すときには、それは、魅力的に見えるかもしれない。詰まるところ、たとえアタッカが大量の通信を分析するとしても、安全であることが望まれる。しかし、このことは、ｎの非現実的な、非セキュアな値につながる可能性がある。大量のメッセージに注意を向けることは、相当に骨が折れ、それを実行不可能にするには、比較的小さなｎだけで十分である。分析対象のメッセージの個数を少なくするアタッカの場合、必要とされるｎは、上がる可能性がある。このことは、簡単に設定ｍ＝ｍｍａｘがうまくいかなくなる理由である。
【０１５１】
ｎ、ｍ−オプティマイザ６３０は、以下のようにこの問題に取り組む。ｎ、ｍ−オプティマイザ６３０は、最初に、アタッカ（ｍ）により使用される、係数の個数（ｎ）及び標本の個数（ｍ）を初期化するように構成される。例えば、ｎは、ｎｍｉｎに、例えば１００に、ｍは、ｍｍｉｎに、例えば０又は１に設定される。
【０１５２】
設定が与えられると、ｎ、ｍ−オプティマイザ６３０は、その設定がセキュアであるか否かを判断する。設定がセキュアでなければ、ｎ、ｍ−オプティマイザ６３０は、ｎを上げ、設定がセキュアであれば、ｎ、ｍ−オプティマイザ６３０は、ｍを上げる。このプロセスは、ｍがある最大値ｍｍａｘに達したときに終わる。この時点で、すべての理に適ったメッセージ個数ｍに対してセキュアであるｎを見つけている。ｎが十分に大きい限り、最終的に、システムは、セキュアになる。アルゴリズムの長すぎる実行を避けるために、ｎの最大値には、例えば１０００ビットなどが強要されてもよい。
【０１５３】
この時点で、三つ組ｎ、ｐ、ｑがセキュアであることが確認される。しかし、この集合が、成功した共有鍵に達することの低すぎる確率を有するということが起こり得る。次に、デバイス６００、例えばパラメータ集合生成装置６１０は、パラメータ集合の演算上の正確さを証明する。演算上の正確さが証明されない場合（例えば、低すぎる成功確率）、パラメータ集合が捨てられ、演算上の正確さが証明された場合、パラメータ集合がリストに加えられる。この調査は、次に、新しい法対で継続され得る。
【０１５４】
最後に、複数のセキュアなパラメータ集合が見つけられると、見つけられた集合にわたって最適化が行われ得る。例えば、より低い帯域幅要件を有するパラメータ集合が選択される。例えば、最低の帯域幅要件が選ばれる。又は、閾値よりも低いものが選ばれる。後者の場合、他の因数も、例えば計算効率も考慮に入れられ得る。例えば、法が、自然なコンピュータ単語境界の真上に来るのではなく、それに又はその真下に、例えば８、１６、ビットにある場合、それは好ましい。
【０１５５】
デバイス６００は、選択されたパラメータ集合を出力するように設けられた出力インターフェースを備える。例えば、出力インターフェースは、ディスプレイ、例えばモニタである。出力インターフェースは、デジタルメッセージ、例えば電子メール、デジタルレポートなどを送信するように構成され得る。出力インターフェース１２０は、コンピュータポートを備え得る。
【０１５６】
図６ｂは、パラメータ選択方法６５０の一実施形態の一例を概略的に示す。例えば、方法６５０は、コンピュータ上、デバイス６００などのデバイス上、などで実行される。
【０１５７】
方法６５０は、複数の可能なパラメータ集合を生成すること６６０を有し、パラメータ集合は、少なくとも、共有多項式ａの第１の法ｑ、第２の法ｐ、及び係数の個数ｎを含む。例えば、パラメータ集合を生成することは、図６ｂの右側のフローチャートに従って行われる。
【０１５８】
生成すること６６０は、第１の法ｑと第２の法ｐとの複数の対を生成することを有し得る。次に、法対は、その対用の安全な係数個数ｎを探し出すことによって、セキュリティについて分析される。この分析は、
−アタッカｍによって使用される係数の個数ｎ及び標本の個数ｍを初期化すること６６２を有し得る。
【０１５９】
次に、判定ボックス６６４において、所与の対、係数の個数ｎ、及び標本の個数ｍを有するパラメータ集合に対する攻撃が起こり得るかどうかが判断される。
【０１６０】
攻撃が可能である場合、アルゴリズムは、６６６において、係数個数ｎを増やし、使用される標本個数ｍをリセットすることに進む。
【０１６１】
攻撃が可能ではない場合、アルゴリズムは、６６８において、標本個数ｍを増やすことに進む。
【０１６２】
両方の場合で、アルゴリズムは、抑止ボックス６６４に戻る。
【０１６３】
標本個数ｍが、例えば、６６８においても判断され得るような最大標本個数を超えた場合、アルゴリズムは、パラメータ集合の演算上の正確さを証明すること（６６９）に進む。
【０１６４】
最後に、複数のパラメータ集合が見つけられると、６７０において、アルゴリズムは、複数のパラメータ集合から、より低い帯域幅要件を有するパラメータ集合を選択する。
【０１６５】
演算上の正確さ、攻撃能力、及び帯域幅要件を判断することは、これらの変数を推定する専用の機能又は手順を使用して行われ得る。例えば、どれくらいうまくパラメータ集合が攻撃されるかは、分かっている界を外挿することによって推定される。
【０１６６】
図５は、鍵共有ネットワーク５００の一実施形態の一例を概略的に示す。鍵共有ネットワーク５００は、発起側ノード５１０及び応答側ノード５２０を備える。鍵共有ネットワーク５００、発起側ノード５１０、及び応答側ノード５２０は、鍵共有ネットワーク１００、発起側ノード１１０、及び応答側ノード１２０に基づいている。ネットワーク５００と１００とは、同じ又は同様の基礎環、パラメータなどを使用することができる。ネットワーク５００とネットワーク１００との重要な違いは、後者では、共有鍵がそれぞれのパーティが生成した生鍵に基づくが、ネットワーク５００では、共有鍵がそれとは無関係であるという点である。下の実施形態では、共有鍵が、応答側ノード５２０によって生成されることを前提とするが、これは、限定的ではない。実際には、いずれの鍵もこの機構を使用して共有され得る。例えば、共有鍵は、さらなるソースから、例えば、ある他のプロトコルから、又は記憶域から、などと得られる。例えば、鍵は、共同で生成されることなどがあり得る。
【０１６７】
ネットワーク１００において見られるように、ノードは、共有多項式（ａ）を得、秘密鍵多項式を生成し、公開鍵多項式を生成する。後者は、第１の法ｑを法として、共有多項式（ａ）と秘密鍵多項式との多項式積を計算して、多項式積を得ることと、簡約多項式を法として多項式積を簡約化することと、係数を法ｑにスケールダウンさせることとを有する。公開鍵が交換され、生鍵がそれぞれの側で、例えば、ｐを法として、受信された公開鍵とノード自身の秘密鍵多項式との多項式積として計算され、次に簡約多項式を法とする簡約化が続く。しかし、ネットワーク１００とは異なり、この共有は、生鍵から直接には引き出されず、むしろ生成された共有鍵をカプセル化するのに生鍵が使用される。
【０１６８】
応答側ノード５２０は、共有する対象の鍵を得るように、また共有鍵を生鍵でカプセル化するように構成された鍵共有ユニット５７０を備える。カプセル化共有鍵は、発起側ノードに送信される。発起側ノード５１０も、カプセル化共有鍵を受信するように、またその生鍵でカプセル化された共有鍵を脱カプセル化するように構成された共有鍵ユニット５６０を備える。このようにして、ノード５１０は、同様に共有鍵を得る。
【０１６９】
生鍵による共有鍵の鍵カプセル化は、生鍵における小さな違いが、脱カプセル化共有鍵における小さな誤りをもたらし、同時に、カプセル化共有鍵がこのような小さな誤りを訂正するのに十分な冗長性を備えるように、選ばれる。
【０１７０】
例えば、共有鍵をカプセル化するための１つのやり方は、以下の通りである。最初に、共有鍵ユニット５７０が共有鍵５７３を生成する（さもなければ、共有されるようになる鍵を得る）。共有鍵５７３が符号化される。共有鍵を符号化するための第１のやり方は、それに第２の法の２分の１ｐ／２を掛けることである。第２のやり方は、誤り訂正符号を使用することである。
【０１７１】
結果として生じた符号化共有鍵が生鍵２６２に加えられる。例えば、共有鍵２６２を、ｐを法とする係数を有する多項式と見なす。この場合、誤り訂正符号をＺｐにわたる反復符号として選択し得る。もう一方の側では、ノード５１０は、受信されたカプセル化鍵５７６から生鍵１６２を引いて、符号化鍵５６４を回復するように構成された鍵共有ユニット５６０を備える。後者は、生鍵１６２と２６２との違いから符号化鍵５７４とは異なってくる。結果として生じた符号化鍵が十分な情報を含んでいるので、元の符号化共有鍵がしばしば再構成され得る。ノード５２０が共有鍵を掛け算した例を考えてみる。そこでは、ノード５１０は、元の符号化共有鍵がゼロを有する場合はゼロに近い値を、また元の符号化共有鍵がｐ／２を有する場合はｐ／２に近い値を見つけるようになる。ノード５１０にある硬判定復号装置は、この減法を最も近い値に写像することができる。
【０１７２】
誤り訂正符号を使用することによって、同じ共有鍵を得ることの確実さを獲得することができる。例えば、共有鍵５７３は、ビット単位で誤り訂正符号に符号化される。一度に共有鍵５７３の大きい方のブロックを変換してもよい。例えば、共有鍵５７３におけるゼロビットを（０、０、０）に、１ビットを（ｐ／２、ｐ／２、ｐ／２）に写像する。この場合、共有鍵５７３は、生鍵２６２の長さの約１／３である。長さにおけるわずかな違いは、パディングを用いて解消され得る、この反復符号は、多数決復号を用いて復号され得る。共有鍵における同じビットに対応する３つの値を加えることによって、より良い結果が得られる。誤り無しであれば、後者は、０又は３ｐ／２になるはずであり、最も近い値に写像することによって、より良い復号が得られる。訂正された符号化共有鍵は、共有鍵に写像され得る。
【０１７３】
それは、長すぎる共有鍵５７３を選択し、後でそれを、例えばＫＤＦを使用して、望ましい鍵長に落としてハッシュ化することには好都合である。例えば、ｎが１０２４である場合、共有鍵５７３のビット長を３４１と見て、後でそれから１２８ビット鍵を得てもよい。別の手法は、生鍵２６２を最初に二進数列に写像することである。例えば、それぞれの係数からＢビットを引き出し、その結果を連結する。これには、もっと小さなコードが使用され得るという利点がある。
【０１７４】
以下に、考えられる実施形態が示される。
【０１７５】
【表８】
0006720424.tif 000066
【０１７６】
様々な実施形態において、様々な代替形態から通信インターフェースが選択され得る。例えば、通信インターフェースは、ローカル又は広域ネットワークへのネットワークインターフェース、例えばインターネット、内部又は外部のデータ記憶域へのストレージインターフェース、キーボードなどである。
【０１７７】
ネットワークノードは、例えば、多項式ａ、公開鍵多項式、秘密鍵多項式、及び共有鍵などの中間データを格納するための電子記憶域を備え得る。電子記憶域は、電子メモリ、例えば、フラッシュメモリ、又は磁気メモリ、例えばハードディスクなどとして実施され得る。電子記憶域は、共に記憶域を作り上げる複数の離散メモリを備え得る。電子記憶域は、一時メモリ、例えばＲＡＭでもあり得る。一時記憶域の場合、この記憶域は、ある手段を使用して、例えば、オプションのネットワーク接続（別個に図示せず）上で共通パラメータを得ることによって、使用する前に共通パラメータを得ることができる。
【０１７８】
通常、デバイス１１０、２１０、５１０、５２０、６００はそれぞれ、デバイス１１０、２１０、５１０、５２０、６００に格納された該当するソフトウェアを実行するマイクロプロセッサ（図１には別個に示されない）を備え、例えば、そのソフトウェアは、ダウンロードされ且つ／又は対応するメモリ、例えば、ＲＡＭなどの揮発性メモリ、又はＦｌａｓｈなどの不揮発性メモリ（別個には図示せず）に格納されたものであり得る。代替として、デバイス１１０、２１０、５１０、５２０、６００が、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブル論理回路にその全部又は一部が具体化され得る。デバイス１１０、２１０、５１０、５２０、６００が、いわゆる特定用途向け集積回路（ＡＳＩＣ）として、すなわち、その特定の使用にカスタマイズされた集積回路（ＩＣ）として、その全部又は一部が具体化され得る。例えば、回路は、例えば、Ｖｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳにおいて具体化される。
【０１７９】
一実施形態において、ネットワークノードは、通信インターフェース回路、共有多項式回路、秘密鍵多項式回路、公開鍵多項式回路、及び共有鍵回路を備える。これらの回路は、本明細書に記載の対応するユニットを具体化する。これらの回路は、プロセッサ回路及び記憶回路であり得、プロセッサ回路は、記憶回路において電子的に表される命令を実行する。
【０１８０】
プロセッサ回路は、例えば、複数のサブプロセッサ回路として、分散様式で具体化され得る。記憶域は、複数の分散型サブ記憶域にわたって分散され得る。メモリの一部又は全体は、電子メモリ、磁気メモリなどであり得る。例えば、記憶域は、揮発性部分及び不揮発性部分を有する。記憶域の一部は、読み取り専用であり得る。これらの回路は、ＦＰＧＡ、ＡＳＩＣなどであってもよい。
【０１８１】
図３は、電子鍵交換方法の一実施形態の一例を概略的に示す。電子鍵交換方法は、発起側ノード１１０又は応答側ノード２１０などの第１の電子ネットワークノードによって実行され得る。
【０１８２】
方法４００は、
−第１の電子ネットワークノードと第２のネットワークノードとの間にデジタル通信を設けること（４１０）と、
−共有多項式（ａ）を得ること（４２０）であって、共有多項式がデジタル通信を通して第２のネットワークノードと共有され、共有多項式ａの係数が第１の法ｑを法として選択される、こと（４２０）と、
−秘密鍵多項式（ｓｋｌ）を生成すること（４３０）であって、秘密鍵多項式の係数が、界（ｓ）によって絶対値が有界である、こと（４３０）と、
−公開鍵多項式（ｐｋｌ）を生成すること（４４０）であって、
−第１の法（ｑ）を法として、共有多項式（ａ）と秘密鍵多項式（ｓｋｌ）との多項式積を計算して、多項式積を得て、その後、簡約多項式を法とする簡約化が続くこと（４４２）、及び
−多項式積の係数を第２の法（ｐ）にスケールダウンすること（４４４）であって、スケールされた係数が、第２の法（ｐ）が掛けられ、第１の法（ｑ）で割られ、一番近い整数に丸められたスケールされていない係数に等しく、第２の法（ｐ）が第１の法（ｑ）よりも小さく、界（ｓ）が高々第２の法（ｐ）である、こと（４４４）、によって、公開鍵多項式（ｐｋｌ）を生成すること（４４０）と、
−第２のネットワークノードに第１の電子ネットワークノードの公開鍵多項式を送信すること（４５２）と、
−第２のネットワークノードの公開鍵多項式（ｐｋＲ）を受信すること（４５４）と、
−第２の法（ｐ）を法として、第２のネットワークノードの受信された公開鍵と第１の電子ネットワークノードの秘密鍵多項式との多項式積として、生鍵を計算し、その後に簡約多項式を法とする簡約化が続くこと（４６０）と、を有する。
第１の電子ネットワークノードが発起側モードに従って動作している場合、第１の電子ネットワークノードは、一実施形態に従って、
−第２のネットワークノードの調停データ（ｈ）を受信すること（４７２）と、
−調停関数（ｒｅｃ）を受信された調停データ及び生鍵に適用することによって、共有鍵を計算すること（４８２）と、のさらなる要素を行い得る。
第１の電子ネットワークノードが応答側モードに従って動作している場合、第１の電子ネットワークノードは、一実施形態に従って、
−生鍵から共有鍵及び調停データを得ること（４７４）と、
−調停データを第１の電子ネットワークノードに送信すること（４８４）と、のさらなる要素を行い得る。
【０１８３】
本明細書で指摘したように、方法４００において、他のタイプのヘルパーデータも採用され得る。
【０１８４】
当業者であれば見えてくるような、方法を実行する多くの様々なやり方が考えられ得る。例えば、ステップの順番を変えることができ、又はいくつかのステップが並行して実行されてもよい。また、ステップ間に、他の方法のステップが挿入されてもよい。挿入されたステップは、本明細書に記載のような、方法の手の込んだ個所に相当し得るか、又は方法には無関係なものであり得る。例えば、所与のステップが、次のステップが開始される前に完全には終わってはいない。
【０１８５】
本発明による方法は、プロセッサシステムに方法４００又は６５０を行わせるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、そのシステムの特定のサブエンティティによって取られるステップのみを有し得る。ソフトウェアは、ハードディスク、フロッピィ、メモリ、光ディスクなど、適切な記憶媒体に格納される。ソフトウェアは、有線に沿って、又は無線で、又はデータネットワーク、例えばインターネットを使用して、信号として送信される。ソフトウェアは、ダウンロードに且つ／又はサーバにおける遠隔使用に使用できるようにされ得る。本発明による方法は、プログラマブル論理回路、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を、方法を行うように構成するために設けられたビットストリームを使用して、実行され得る。
【０１８６】
本発明が、コンピュータプログラム、特に、本発明を実行に移すように適合された、担体上又は担体内のコンピュータプログラムにも及ぶことが分かってくるであろう。コンピュータプログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び部分的にコンパイルされた形態などのオブジェクトコードの形態、或いは本発明による方法の実施における使用に適したいずれか他の形態であり得る。コンピュータプログラム製品に関係する実施形態は、明示された方法のうちの少なくとも１つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を備える。これらの命令は、サブルーチンに細分され、且つ／又は静的に若しくは動的にリンクされ得る１つ又は複数のファイルに格納され得る。コンピュータプログラムに関係する別の実施形態は、明示されたシステム及び／又は製品のうちの少なくとも１つの手段のそれぞれに対応するコンピュータ実行可能命令を備える。
【０１８７】
図４ａは、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、一実施形態による、プロセッサシステムに鍵共有方法を行わせるための命令を備える。コンピュータプログラム１０２０は、コンピュータ可読媒体１０００において、物理マークとして、又はコンピュータ可読媒体１０００の磁化を用いて、具現化され得る。しかし、他にも適切な実施形態が考えられる。さらに、コンピュータ媒体１０００がここでは、光ディスクとして示されるが、コンピュータ可読媒体１０００が、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどのいずれの適切なコンピュータ可読媒体でもよく、また記録可能でも記録不可でもよいことが分かってくるであろう。コンピュータプログラム１０２０は、プロセッサシステムに前記鍵共有方法４００を行わせるための命令を含む。
【０１８８】
図４ｂは、例えば、第１又は第２のネットワークノードとして、一実施形態によるプロセッサシステム１１４０の概略的表現を示す。プロセッサシステムは、１つ又は複数の集積回路１１１０を備える。１つ又は複数の集積回路１１１０のアーキテクチャが図４ｂに概略的に示される。回路１１１０は、一実施形態による方法を実行するようにコンピュータプログラム構成要素を作動させる且つ／又はそれのモジュール若しくはユニットを具体化するための処理ユニット１１２０、例えばＣＰＵを備える。回路１１１０は、プログラミングコード、データなどを格納するためのメモリ１１２２を備える。メモリ１１２２の一部は、読み取り専用であり得る。回路１１１０は、通信素子１１２６、例えば、アンテナ、コネクタ、又はその両方などを備え得る。回路１１１０は、方法において定義される処理の一部又はすべてを行うための専用集積回路１１２４を備え得る。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信素子１１２６は、相互接続１１３０、例えばバスを介して互いに接続され得る。処理システム１１１０は、それぞれ、アンテナ及び／又はコネクタを使用して、接触及び／又は非接触通信用に設けられ得る。
【０１８９】
コンピュータ可読媒体１０００又はプロセッサシステム１１４０は、パラメータを選択する方法用にも構成され得る。
【０１９０】
例えば、一実施形態において、ネットワークノードは、プロセッサ回路及びメモリ回路を備え、プロセッサは、メモリ回路に格納されたソフトウェアを実行するように設けられる。例えば、プロセッサ回路は、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ−Ｒ８などである。一実施形態において、プロセッサ回路は、ＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０であり得る。メモリ回路は、ＲＯＭ回路、又は不揮発性メモリ、例えばフラッシュメモリであり得る。メモリ回路は、揮発性メモリ、例えばＳＲＡＭメモリであり得る。後者の場合、証明デバイスが、ソフトウェアを提供するのに設けられた、不揮発性ソフトウェアインターフェース、例えば、ハードドライブ、ネットワークインターフェースなどを備え得る。
【０１９１】
上に述べた実施形態が、本発明を限定するものではなく、当業者であれば、多くの代替の実施形を考案することができることに留意されたい。
【０１９２】
以下の条項は、請求項ではないが、可能な実施形態を有する。これにより、本出願の実行中、又はそれから引き出されたさらなる出願の実行中に、新しい請求項が、このような条項、このような条項の組合わせ、及び／又は、上記説明若しくは請求項から取られた特徴にまとめられ得ることを示す。
条項１．  鍵共有プロトコル用に構成された第１の電子ネットワークノード（１１０）であって、
−第２のネットワークノードとのデジタル通信用に設けられた通信インターフェース（１２０）と、
−プロセッサ回路であって、
−共有多項式（ａ）を得ることであって、共有多項式が通信インターフェースを通して第２のネットワークノードと共有され、共有多項式（ａ）の係数が第１の法ｑを法として選択される、ことと、
−秘密鍵多項式（ｓｋｌ、ｓｋＲ）を生成することであって、秘密鍵多項式の係数が界（ｓ）によって絶対値が有界である、ことと、
−公開鍵多項式（ｐｋｌ、ｐｋＲ）を生成することであって、
−第１の法（ｑ）を法として、共有多項式（ａ）と秘密鍵多項式（ｓｋｌ）との多項式積を計算して、多項式積を得ることと、
−多項式積の係数を第２の法（ｐ）にスケールダウンすることであって、スケールされた係数が、第２の法（ｐ）が掛けられ、第１の法（ｑ）で割られ、最も近い整数に丸められたスケールされていない係数に等しく、第２の法（ｐ）が第１の法（ｑ）よりも小さく、界（ｓ）が、高々第２の法（ｐ）である、ことと、によって、公開鍵多項式（ｐｋｌ、ｐｋＲ）を生成することと、
−第１の電子ネットワークノードの公開鍵多項式を第２のネットワークノードに送信することと、
−第２のネットワークノードの公開鍵多項式（ｐｋＲ、ｐｋｌ）を受信することと、
−第２の法（ｐ）を法として、第２のネットワークノードの受信された公開鍵と第１の電子ネットワークノードの秘密鍵多項式との多項式積として、生鍵多項式を計算し、生鍵から共有鍵を計算することと、を行うように構成された、プロセッサ回路と、を備える、第１の電子ネットワークノード（１１０）。
条項２．  第１の電子ネットワークノード（１１０）用の電子鍵共有方法（４００）であって、
−第１の電子ネットワークノードと第２のネットワークノードとの間にデジタル通信を設けること（４１０）と、
−共有多項式（ａ）を得ること（４２０）であって、共有多項式がデジタル通信を通して第２のネットワークノードと共有され、共有多項式ａの係数が第１の法ｑを法として選択される、こと（４２０）と、
−秘密鍵多項式（ｓｋｌ）を生成すること（４３０）であって、秘密鍵多項式の係数が界（ｓ）によって絶対値が有界である、こと（４３０）と、
−公開鍵多項式（ｐｋｌ）を生成すること（４４０）であって、
−第１の法（ｑ）を法として、共有多項式（ａ）と秘密鍵多項式（ｓｋｌ）との多項式積を計算して、多項式積を得ること（４４２）と、
−多項式積の係数を第２の法（ｐ）にスケールダウンすること（４４４）であって、スケールされた係数が、第２の法（ｐ）が掛けられ、第１の法（ｑ）で割られ、最も近い整数に丸められたスケールされていない係数に等しく、第２の法（ｐ）が第１の法（ｑ）よりも小さく、界（ｓ）が、高々第２の法（ｐ）である、こと（４４４）と、によって、公開鍵多項式（ｐｋｌ）を生成すること（４４０）と、
−第１の電子ネットワークノードの公開鍵多項式を第２のネットワークノードに送信すること（４５２）と、
−第２のネットワークノードの公開鍵多項式（ｐｋＲ）を受信すること（４５４）と、
−第２の法（ｐ）を法として、第２のネットワークノードの受信された公開鍵と第１の電子ネットワークノードの秘密鍵多項式との多項式積として、生鍵多項式を計算し、生鍵から共有鍵を計算すること（４６０）と、を有する、電子鍵共有方法（４００）。
【０１９３】
請求項では、括弧内に置かれたいずれの参照符号も、請求項を限定するとして解釈されないものとする。動詞「備える」及びその活用形の使用は、請求項に述べられるもの以外の要素又はステップの存在を排除するものではない。単数形は、このような要素の複数の存在を排除するものではない。本発明は、いくつかの別個の要素を備えるハードウェアを用いて、また適切にプログラムされたコンピュータを用いて、実施され得る。いくつかの手段を列挙するデバイス請求項では、これらの手段のうちのいくつが、全く同じハードウェア製品によって具現化され得る。いくつかの手段が互いに異なる従属請求項に挙げられているからといって、それが、これらの手段の組合わせを、利益をもたらすように使用することができないことを意味していることにはならない。
【０１９４】
請求項では、括弧内の参照番号は、実施形態の良い例となる図面の参照符号、又は実施形態の式を指し、それにより、請求項の明瞭さを高める。これらの参照番号は、請求項を限定するとして解釈されるものではない。
【要約】
第１の電子ネットワークノード１１０が、鍵交換ＫＥＸプロトコル用に構成されて提供され、第１の電子ネットワークノードは、第２のネットワークノードと共有される共有多項式ａを得ることであって、共有多項式ａの係数が第１の法ｑを法として選択される、ことと、秘密鍵多項式ｓｋｌを生成することであって、秘密鍵多項式の係数が、界ｓによって絶対値が有界である、ことと、第１の法ｑを法として、共有多項式ａと秘密鍵多項式ｓｋｌとの多項式積を計算し、多項式積の係数を第２の法ｐにスケールダウンすることによって、公開鍵多項式ｐｋｌを生成することと、を行うように構成される。【図１】
0006720424.tif 000067
【図２】
0006720424.tif 000068
【図３】
0006720424.tif 000069
【図４ａ】
0006720424.tif 000070
【図４ｂ】
0006720424.tif 000071
【図５】
0006720424.tif 000072
【図６ａ】
0006720424.tif 000073
【図６ｂ】
0006720424.tif 000074