(57)【特許請求の範囲】
【請求項１】
公開鍵暗号化デバイスにおける使用のための公開鍵と、秘密鍵復号化デバイスにおける使用のための対応する秘密鍵とを生成する鍵生成デバイスであって、
秘密乱数値を電子形式で取得し、
前記秘密乱数値を含む前記秘密鍵を生成する、
秘密鍵生成器と、
二変数多項式の公開セットを電子形式で取得し、
前記秘密乱数値を前記公開セットの前記二変数多項式に代入することによって取得される一変数多項式を合計することによって、公開一変数多項式を計算し、
前記公開一変数多項式及び前記公開セットを含む前記公開鍵を生成する、
公開鍵生成器と、
を含み、
異なる可換環が、二変数多項式の前記公開セットの各多項式に関連付けられ、
前記秘密乱数値を前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、鍵生成デバイス。
【請求項２】
公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化デバイスであって、前記公開鍵は、公開一変数多項式と、二変数多項式の公開セットとを含み、異なる可換環が、二変数多項式の前記公開セットの各多項式に関連付けられ、前記公開鍵暗号化デバイスは、
暗号化乱数値を電子形式で取得し、
前記暗号化乱数値を前記公開一変数多項式に代入することによって、対称鍵を計算する、
対称鍵取得器と、
前記暗号化乱数値を、前記公開セットの前記二変数多項式に代入することによって取得される一変数多項式を合計することによって、復号化一変数多項式を計算し、
前記復号化一変数多項式を含む復号化情報を生成する、
復号化情報生成器と、
前記対称鍵で、前記電子メッセージを暗号化し、
暗号化された前記電子メッセージを前記復号化情報と関連付ける、
暗号化ユニットと、
を含み、
前記暗号化乱数値を、前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、公開鍵暗号化デバイス。
【請求項３】
二変数多項式の前記公開セットは、対称二変数多項式しか含まないか、及び／又は、
二変数多項式の前記公開セットは、少なくとも２つの異なる二変数多項式を含むか、及び／又は、
前記公開セットの少なくとも１つの多項式は、前記少なくとも１つの多項式の２つの変数のうちの１つの変数において、少なくとも２の次数を有する、請求項２に記載の公開鍵暗号化デバイス。
【請求項４】
前記公開一変数多項式は、前記公開一変数多項式の係数のリストとして正準形で表され、
前記復号化一変数多項式は、前記復号化一変数多項式の係数のリストとして正準形で表される、請求項２に記載の公開鍵暗号化デバイス。
【請求項５】
公開グローバル簡約化整数が、前記公開セットと関連付けられ、公開個別簡約化整数が、前記公開セットの各多項式と関連付けられ、
前記暗号化乱数値は、整数であり、前記公開セットにおける各多項式は、整数係数を有する二変数多項式であり、前記公開一変数多項式及び前記復号化一変数多項式は、整数係数を有する一変数多項式であり、
前記対称鍵を計算することは、前記暗号化乱数値を、前記公開一変数多項式に代入し、前記公開グローバル簡約化整数を法として簡約化することを含み、
前記復号化一変数多項式を計算することは、前記公開セットの各多項式について、前記暗号化乱数値を、前記多項式に代入し、前記多項式に関連付けられている前記公開個別簡約化整数を法として簡約化することによって一変数多項式のセットを取得することと、一変数多項式の前記セットを合計し、前記公開グローバル簡約化整数を法として簡約化することとを含む、請求項２に記載の公開鍵暗号化デバイス。
【請求項６】
前記公開グローバル簡約化整数（Ｎ）は、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも小さい奇数であり、ここで、αは、前記公開セットにおける前記多項式の２つの変数のうちの１つの変数における最高次数を表し、ｂは、鍵長を表し、
各公開個別簡約化整数（ｑｉ）について、前記公開グローバル簡約化整数（Ｎ）から前記公開個別簡約化整数（ｑｉ）を減算したものは、２の鍵長乗の倍数（ｑｉ＝Ｎ−βｉ２ｂ、１＜βｉ＜２ｂ）であり、かつ、２の２倍の鍵長乗未満であり、
前記対称鍵を計算することは更に、２の鍵長乗（２ｂ）を法として簡約化することを含む、請求項５に記載の公開鍵暗号化デバイス。
【請求項７】
復号化情報と、秘密鍵とを使用して、暗号化されたメッセージを復号化する秘密鍵復号化デバイスであって、
前記復号化情報は、復号化一変数多項式を含み、前記秘密鍵は、秘密乱数値を含み、
前記秘密鍵復号化デバイスは、
前記秘密乱数値を、前記復号化一変数多項式に代入することによって、対称鍵を再構成する対称鍵取得器と、
前記再構成された対称鍵で、前記暗号化されたメッセージを復号化する復号化ユニットと、を含み、
前記復号化情報は、前記対称鍵から計算され、前記再構成された対称鍵が前記対称鍵に等しいかどうかを確認するための鍵確認データを含み、
前記対称鍵を再構成することは、
前記秘密乱数値を、前記復号化一変数多項式に代入し、公開グローバル簡約化整数を法として簡約化したことの結果から、第１の再構成された対称鍵を導出し、
前記鍵確認データから、前記第１の再構成された対称鍵が前記対称鍵に等しいかどうかを決定し、等しくない場合に、前記第１の再構成された対称鍵から、更なる再構成された対称鍵を導出することを含む、秘密鍵復号化デバイス。
【請求項８】
前記対称鍵を再構成することは、前記秘密乱数値を、前記復号化一変数多項式に代入し、前記公開グローバル簡約化整数を法として簡約化することを含み、前記更なる再構成された対称鍵を導出することは、前記公開グローバル簡約化整数又は複数の前記公開グローバル簡約化整数を、前記第１の再構成された対称鍵に追加し、２の鍵長乗を法として簡約化することを含む、請求項７に記載の秘密鍵復号化デバイス。
【請求項９】
公開グローバル簡約化多項式が、前記公開セットと関連付けられ、公開個別簡約化多項式が、前記公開セットの各多項式と関連付けられ、
前記暗号化乱数値は、多項式であり、前記公開セットにおける各特定の多項式は、前記特定の多項式と関連付けられる前記公開個別簡約化多項式を法とする多項式環から取られる係数を有する二変数多項式であり、
前記公開一変数多項式及び前記復号化一変数多項式は、多項式係数を有し、
前記対称鍵を計算することは、前記暗号化乱数値を、前記公開一変数多項式に代入し、前記公開グローバル簡約化多項式を法として簡約化することを含み、
前記復号化一変数多項式を計算することは、
前記公開セットの各多項式について、前記暗号化乱数値を、前記多項式に代入し、前記多項式に関連付けられている前記公開個別簡約化多項式を法として簡約化することによって一変数多項式のセットを取得し、一変数多項式の前記セットを合計することを含む、請求項２に記載の公開鍵暗号化デバイス。
【請求項１０】
公開鍵暗号化方法における使用のための公開鍵と、秘密鍵復号化方法における使用のための対応する秘密鍵とを生成する鍵生成デバイスとして機能するようにコンピュータを作動させる方法であって、
秘密乱数値を電子形式で取得し、
前記秘密乱数値を含む前記秘密鍵を生成する、
秘密鍵生成手段、及び、
二変数多項式の公開セットを電子形式で取得し、
前記秘密乱数値を前記公開セットの前記二変数多項式に代入することによって取得される一変数多項式を合計することによって、公開一変数多項式を計算し、
前記公開一変数多項式及び前記公開セットを含む前記公開鍵を生成する、
公開鍵生成手段、
としてコンピュータを機能させ、
異なる可換環が、二変数多項式の前記公開セットの各多項式と関連付けられ、
前記秘密乱数値を前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、方法。
【請求項１１】
公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化デバイスとして機能するようにコンピュータを作動させる方法であって、前記公開鍵は、公開一変数多項式と、二変数多項式の公開セットとを含み、異なる可換環が、二変数多項式の前記公開セットの各多項式と関連付けられ、前記方法は、
暗号化乱数値を電子形式で取得し、
前記暗号化乱数値を前記公開一変数多項式に代入することによって、対称鍵を計算する、
対称鍵取得手段、
前記暗号化乱数値を、前記公開セットの前記多項式に代入することによって取得される一変数多項式を合計することによって、復号化一変数多項式を計算し、
前記復号化一変数多項式を含む復号化情報を生成する、
復号化情報生成手段、及び、
前記対称鍵で、前記電子メッセージを暗号化し、
暗号化された前記電子メッセージを前記復号化情報と関連付ける、
暗号化手段、
としてコンピュータを機能させ、
前記暗号化乱数値を、前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、方法。
【請求項１２】
公開鍵暗号化方法における使用のための公開鍵と、秘密鍵復号化方法における使用のための対応する秘密鍵とを生成する鍵生成デバイスとしてコンピュータを機能させるためのコンピュータプログラムであって、
秘密乱数値を電子形式で取得し、
前記秘密乱数値を含む前記秘密鍵を生成する、
秘密鍵生成手段、及び、
二変数多項式の公開セットを電子形式で取得し、
前記秘密乱数値を前記公開セットの前記二変数多項式に代入することによって取得される一変数多項式を合計することによって、公開一変数多項式を計算し、
前記公開一変数多項式及び前記公開セットを含む前記公開鍵を生成する、
公開鍵生成手段、
としてコンピュータを機能させ、
異なる可換環が、二変数多項式の前記公開セットの各多項式と関連付けられ、
前記秘密乱数値を前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、コンピュータプログラム。
【請求項１３】
公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化デバイスとしてコンピュータを機能させるためのコンピュータプログラムであって、前記公開鍵は、公開一変数多項式と、二変数多項式の公開セットとを含み、異なる可換環が、二変数多項式の前記公開セットの各多項式と関連付けられ、前記コンピュータプログラムは、
暗号化乱数値を電子形式で取得し、
前記暗号化乱数値を前記公開一変数多項式に代入することによって、対称鍵を計算する、
対称鍵取得手段、
前記暗号化乱数値を、前記公開セットの前記多項式に代入することによって取得される一変数多項式を合計することによって、復号化一変数多項式を計算し、
前記復号化一変数多項式を含む復号化情報を生成する、
復号化情報生成手段、及び、
前記対称鍵で、前記電子メッセージを暗号化し、
暗号化された前記電子メッセージを前記復号化情報と関連付ける、
暗号化手段、
としてコンピュータを機能させ、
前記暗号化乱数値を、前記公開セットの特定の多項式に代入することによって取得される前記一変数多項式は、前記特定の一変数多項式と関連付けられる前記可換環において正準形に簡約化される、コンピュータプログラム。
【請求項１４】
コンピュータ可読媒体上に具現化される、請求項１２又は１３に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵生成デバイスを含む公開鍵暗号化システムに関する。鍵生成デバイスは、公開鍵暗号化デバイスにおける使用のための公開鍵と、秘密鍵復号化デバイスにおける使用のための対応する秘密鍵とを生成する。鍵生成デバイスは、秘密乱数値を電子形式で取得する。
【背景技術】
【０００２】
公開鍵暗号化は、２つの別箇の鍵（そのうちの１つは、秘密（プライベート）鍵であり、そのうちの１つは、公開鍵と呼ばれる）を使用する暗号作成法の一分野である。鍵対の２つの部分は異なるが、数学的に関連付けられている。１つの鍵が、プレーンテキストをロック又は暗号化して、暗号テキストが取得される。もう１つの鍵が、暗号テキストをロック解除又は復号化して、プレーンテキストが再び取得される。公開鍵は、秘密鍵なしでは復号化機能を行うことはできない。公開鍵は、公開さえもされるが、攻撃者が暗号テキストを復号化する助けにはならない。公開鍵暗号化は、非対称暗号化とも知られている。
【０００３】
公開鍵暗号作成法に使用される既知のアルゴリズムは、整数因数分解及び離散対数問題といった数学的関係に基づいている。対象となる受信者にとって、公開鍵及び秘密鍵を生成し、秘密鍵を用いてメッセージを復号化することと、送信者にとって、公開鍵を用いてメッセージを暗号化することとは、計算的に簡単ではあるが、公開鍵の知識だけに基づいて秘密鍵を導出することは誰にでも難しい。後者は、復号化鍵が、それらの対応する暗号化鍵に等しいか、又は、対応する暗号化鍵から容易に導出可能である対称暗号化とは異なる。
【０００４】
公開鍵暗号作成法は、広く使用されている。公開鍵暗号作成法は、多くの暗号アルゴリズム及び暗号システムによって使用されるアプローチである。
【０００５】
既知の公開鍵暗号化システムが基づいている問題は、資源集約的である。例えば既知の公開鍵暗号化システムであるＲＳＡ暗号化は、鍵生成のために、２つの大きい素数ｐ及びｑが生成されることを必要とする。復号化は、同様のサイズの数のべき乗を必要とする。
【０００６】
Delphine Boucher他による論文「Key Exchange and Encryption Schemes Based on Non-commutative Skew Polynomials」を参照する。当該論文は、いわゆる非可変歪多項式に基づいた鍵交換アルゴリズムに関連する。
【０００７】
更に、Yagisawa Masahiroによる論文「Key Agreement Protocols Based on Multivariate Polynomials over Fq」を参照する。当該論文は、評価されていない多変数多項式に基づく鍵合意プロトコルに関連する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
現在の公開鍵暗号化（ＰＫＥ）方法は、重い数学演算を必要とし、したがって、当該方法は、計算的に制約のあるセンサといった埋め込みシステムにはあまり適していない。メッセージの公開鍵暗号化の改良型システムがあることが有利であろう。
【課題を解決するための手段】
【０００９】
本発明の一態様は、メッセージを暗号化するシステムに関する。当該システムは、鍵生成デバイスと、公開鍵暗号化デバイスと、好適には、秘密鍵復号化デバイスとを含む。鍵生成デバイスは、公開鍵暗号化デバイスにおける使用のための公開鍵と、秘密鍵復号化デバイスにおける使用のための対応する秘密鍵とを生成する。公開鍵暗号化デバイスは、公開鍵を使用して、電子メッセージを暗号化する。秘密鍵復号化デバイスは、復号化情報及び秘密鍵を使用して、暗号化されたメッセージを復号化する。
【００１０】
ＰＫＥでは、各関係者が、２つの鍵、即ち、公開鍵及び秘密鍵を保持する。公開鍵は、例えば中央当局によって公開される。しかし、各関係者は、その秘密鍵を、当該特定の関係者への通信を読んでもよいように信頼されていない任意の他の関係者には秘密にする。
【００１１】
システム内のデバイスによって提供される公開鍵暗号化は、効率的な実施を可能にし、また、資源制約のあるデバイスに適している。システムのデバイスについて、以下に更に説明する。
【００１２】
公開鍵暗号化は、例えば安全な通信を必要とする照明ネットワークに使用されてよい。一般に、本発明は、デバイスの対間で安全な通信を必要とする任意のタイプの通信ネットワークに適用可能である。
【００１３】
鍵生成デバイス、公開鍵暗号化デバイス及び秘密鍵復号化デバイスは、電子デバイスである。これらは、例えばモバイルフォン、セットトップボックス、コンピュータ等といったモバイル電子デバイスであってよい。鍵生成デバイス、公開鍵暗号化デバイス及び秘密鍵復号化デバイスは、例えばセンサ、照明デバイス、ＬＥＤランプ、スマートカード、ＲＦＩＤタグ等といったように資源制約的であってよい。
【００１４】
本発明の一態様は、公開鍵暗号化デバイスにおける使用のための公開鍵と、秘密鍵復号化デバイスにおける使用のための対応する秘密鍵とを生成する鍵生成デバイスに関する。鍵生成デバイスは、秘密鍵生成器と、公開鍵生成器とを含む。秘密鍵生成器は、秘密乱数値を電子形式で取得し、当該秘密乱数値を含む秘密鍵を生成する。公開鍵生成器は、二変数多項式の公開セットを電子形式で取得し、秘密乱数値を公開セットの多項式に代入することによって取得される一変数多項式を合計することによって、公開一変数多項式を計算し、公開一変数多項式及び公開セットを含む公開鍵を生成する。
【００１５】
鍵生成デバイスの一実施形態では、二変数多項式の公開セットは、対称二変数多項式しか含まない。
【００１６】
鍵生成デバイスの一実施形態では、二変数多項式の公開セットは、少なくとも２つの異なる二変数多項式を含む。
【００１７】
上記システムは、２つの二変数多項式が同じである場合にも、それらの基礎となっている環（例えば局所簡約化整数）が異なるならば、使用されてもよい。
【００１８】
鍵生成デバイスの一実施形態では、公開セットの少なくとも１つの多項式が、上記少なくとも１つの多項式の２つの変数のうちの１つの変数において、少なくとも２の次数を有する。
【００１９】
鍵生成デバイスの一実施形態では、公開一変数多項式は、公開一変数多項式の係数のリストとして正準形で表される。
【００２０】
鍵生成デバイスの一実施形態では、異なる可換環が、二変数多項式の公開セットの各多項式と関連付けられ、また、秘密乱数値を公開セットの特定の多項式に代入することによって取得される一変数多項式は、当該特定の一変数多項式と関連付けられる可換環において正準形に簡約化される。
【００２１】
鍵生成デバイスの一実施形態では、公開グローバル簡約化整数が、公開セットと関連付けられ、公開個別簡約化整数が、公開セットの各多項式と関連付けられ、秘密乱数値は、整数であり、公開セットにおける各多項式は、整数係数を有する二変数多項式であり、公開一変数多項式は、整数係数を有する一変数多項式である。公開個別簡約化整数は、局所簡約化整数とも呼ばれる。
【００２２】
公開個別簡約化整数が、すべて異なっていることが有益である。これは、それらのうちの２つが等しい場合、公開セットは、より少ない多項式を有するように簡易化が可能だからである。しかしながら、公開個別簡約化整数の幾つか又はすべてが等しい場合、システムは正しく機能するが、安全性は、より少ない多項式を有するより小型システムから期待されるような安全性である。
【００２３】
公開一変数多項式を計算することは、公開セットの各多項式について、秘密乱数値を、多項式に代入し、当該多項式に関連付けられている公開個別簡約化整数を法として簡約化することによって一変数多項式のセットを取得することと、一変数多項式のセットを合計し、グローバル簡約化整数を法として簡約化することとを含む。
【００２４】
鍵生成デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも小さい奇数であり、ここで、αは、公開セットにおける多項式の２つの変数のうちの１つの変数における最高次数を表し、ｂは、鍵長を表し、各公開個別簡約化整数について、公開グローバル簡約化整数から公開個別簡約化整数を減算したものは、２の鍵長乗の倍数（ｑｉ＝Ｎ−βｉ２ｂ、１＜βｉ＜２ｂ）であり、かつ、２の２倍の鍵長乗未満であり、対称鍵を計算することは更に、２の鍵長乗を法として簡約化することを含む。鍵生成デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、かつ、２（α＋２）ｂよりも小さい奇数である。
【００２５】
本発明の一態様は、公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化デバイスに関する。公開鍵は、公開一変数多項式と、二変数多項式の公開セットとを含む。公開鍵暗号化デバイスは、対称鍵取得器と、復号化情報生成器と、暗号化ユニットとを含む。
【００２６】
対称鍵取得器は、暗号化乱数値を電子形式で取得し、暗号化乱数値を公開一変数多項式に代入することによって、対称鍵を計算する。対称鍵取得器は、多項式を評価するだけでなく、ｂ個の最下位ビットを取ってもよい。
【００２７】
復号化情報生成器は、暗号化乱数値を、公開セットの多項式に代入することによって取得される一変数多項式を合計することによって、復号化一変数多項式を計算し、復号化一変数多項式を含む復号化情報を生成する。
【００２８】
暗号化ユニットは、対称鍵で、メッセージを暗号化し、暗号化されたメッセージを復号化情報と関連付ける。
【００２９】
公開鍵暗号化デバイスの一実施形態では、二変数多項式の公開セットは、対称二変数多項式しか含まない。
【００３０】
公開鍵暗号化デバイスの一実施形態では、二変数多項式の公開セットは、少なくとも２つの異なる二変数多項式を含む。
【００３１】
公開鍵暗号化デバイスの一実施形態では、公開セットの少なくとも１つの多項式が、上記少なくとも１つの多項式の２つの変数のうちの１つの変数において、少なくとも２の次数を有する。
【００３２】
公開鍵暗号化デバイスの一実施形態では、公開一変数多項式は、公開一変数多項式の係数のリストとして正準形で表され、及び／又は、復号化一変数多項式は、復号化一変数多項式の係数のリストとして正準形で表される。
【００３３】
公開鍵暗号化デバイスの一実施形態では、異なる可換環が、二変数多項式の公開セットの各多項式と関連付けられ、秘密乱数値を公開セットの特定の多項式に代入することによって取得される一変数多項式は、当該特定の一変数多項式と関連付けられる可換環において正準形に簡約化され、また、暗号化乱数値を公開セットの特定の多項式に代入することによって取得される一変数多項式は、当該特定の一変数多項式と関連付けられる可換環において正準形に簡約化される。
【００３４】
公開鍵暗号化デバイスの一実施形態では、公開グローバル簡約化整数が、公開セットと関連付けられ、公開個別簡約化整数が、公開セットの各多項式と関連付けられ、秘密乱数値は、整数であり、公開セットにおける各多項式は、整数係数を有する二変数多項式であり、公開一変数多項式及び復号化一変数多項式は、整数係数を有する一変数多項式である。
【００３５】
対称鍵を計算することは、暗号化乱数値を、公開一変数多項式に代入し、グローバル簡約化整数を法として簡約化することを含む。対称鍵を計算することは、結果のｂ個のビット、例えばｂ個の最下位ビットを取ることも含む。
【００３６】
復号化一変数多項式を計算することは、公開セットの各多項式について、秘密乱数値を、多項式に代入し、当該多項式に関連付けられている公開個別簡約化整数を法として簡約化することによって一変数多項式のセットを取得することと、一変数多項式のセットを合計し、グローバル簡約化整数を法として簡約化することとを含む。
【００３７】
公開鍵暗号化デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも小さい奇数であり、ここで、αは、公開セットにおける多項式の２つの変数のうちの１つの変数における最高次数を表し、ｂは、鍵長を表し、また、各公開個別簡約化整数について、公開グローバル簡約化整数から上記公開個別簡約化整数を減算したものは、２の鍵長乗の倍数（ｑｉ＝Ｎ−βｉ２ｂ、１＜βｉ＜２ｂ）であり、かつ、２の２倍の鍵長乗未満である。対称鍵を計算することは更に、２の鍵長乗を法として簡約化することを含む。公開鍵暗号化デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、かつ、２（α＋２）ｂよりも小さい奇数である。
【００３８】
公開鍵暗号化デバイスの一実施形態では、復号化情報を生成することは、対称鍵から、再構成された鍵が対称鍵に等しいかどうかを確認するための鍵確認データを計算することを含み、復号化情報は、鍵確認データを含む。
【００３９】
本発明の一態様は、復号化情報と、秘密鍵とを使用して、暗号化されたメッセージを復号化する秘密鍵復号化デバイスに関する。復号化情報は、復号化一変数多項式を含み、秘密鍵は、秘密乱数値を含む。秘密鍵復号化デバイスは、対象鍵取得器と、復号化ユニットとを含む。
【００４０】
対称鍵取得器は、秘密乱数値を、復号化一変数多項式に代入することによって、対称鍵を再構成する。対称鍵を再構成することは、出力のｂ個のビット、例えばｂ個の最下位ビットを、鍵Ｋとして取ることを含んでもよい。
【００４１】
復号化ユニットは、再構成された対称鍵で、暗号化されたメッセージを復号化する。対称鍵は、「Ｋ」とも呼ばれる。
【００４２】
秘密鍵復号化デバイスの一実施形態では、復号化情報は、鍵生成デバイスによって生成される公開鍵を使用して、公開鍵暗号化デバイスによって取得されている。
【００４３】
秘密鍵暗号化デバイスの一実施形態では、復号化一変数多項式は、復号化一変数多項式の係数のリストとして正準形で表される。
【００４４】
秘密鍵復号化デバイスの一実施形態では、秘密乱数値は、整数である。復号化一変数多項式は、公開グローバル簡約化整数を法として簡約化された整数係数を有する一変数多項式である。対称鍵の再構成は、秘密乱数値を、復号化一変数多項式に代入し、公開グローバル簡約化整数を法として簡約化することを含む。
【００４５】
秘密鍵復号化デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも小さい奇数であり、ここで、αは、公開セットにおける多項式の２つの変数のうちの１つの変数における最高次数を表し、ｂは、鍵長を表す。秘密鍵復号化デバイスの一実施形態では、公開グローバル簡約化整数は、２（α＋２）ｂ−１よりも大きく、かつ、２（α＋２）ｂよりも小さい奇数である。
【００４６】
対称鍵を計算することは更に、２の鍵長乗を法として簡約化することを含む。
【００４７】
秘密鍵復号化デバイスの一実施形態では、対称鍵を再構成することは、秘密乱数値を、復号化一変数多項式に代入し、公開グローバル簡約化整数を法として簡約化したことの結果から、第１の再構成された鍵を導出し、鍵確認データから、第１の再構成された鍵が対称鍵に等しいかどうかを決定し、等しくない場合に、第１の再構成された鍵から、更なる再構成された鍵を導出することを含む。
【００４８】
秘密鍵復号化デバイスの一実施形態では、更なる再構成された鍵を導出することは、公開グローバル簡約化整数又は複数の公開グローバル簡約化整数を、第１の再構成された鍵に追加し、２の鍵長乗を法として簡約化することを含む。
【００４９】
暗号化システムの一実施形態は、多項式環を使用する。
【００５０】
鍵生成デバイスの一実施形態では、公開グローバル簡約化多項式が、公開セットと関連付けられ、公開個別簡約化多項式が、公開セットの各多項式と関連付けられ、秘密乱数値は、多項式であり、公開セットにおける各特定の多項式は、当該特定の多項式と関連付けられる公開個別簡約化多項式を法とする多項式環から取られる係数を有する二変数多項式であり、公開一変数多項式及び復号化一変数多項式は、多項式係数を有する。
【００５１】
公開鍵暗号化デバイスの一実施形態では、公開グローバル簡約化多項式が、公開セットと関連付けられ、公開個別簡約化多項式が、公開セットの各多項式と関連付けられ、暗号化乱数値は、多項式であり、公開セットにおける各特定の多項式は、当該特定の多項式と関連付けられる公開個別簡約化多項式を法とする多項式環から取られる係数を有する二変数多項式であり、公開一変数多項式及び復号化一変数多項式は、多項式係数を有する。
【００５２】
秘密鍵復号化デバイスの一実施形態では、秘密乱数値は、多項式であり、復号化一変数多項式は、多項式係数を有する。
【００５３】
本発明の一態様は、公開鍵暗号化方法における使用のための公開鍵と、秘密鍵復号化方法における使用のための対応する秘密鍵とを生成する鍵生成方法に関する。
【００５４】
本発明の一態様は、公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化方法に関する。
【００５５】
本発明の一態様は、復号化情報及び秘密鍵を使用して、暗号化されたメッセージを復号化する秘密鍵復号化方法に関する。
【００５６】
本発明による方法は、コンピュータ実施方法として、コンピュータ上で実施されるか、専用ハードウェアにおいて実施されるか、又は、これらの組み合わせで実施されてよい。本発明による方法の実行可能なコードは、コンピュータプログラムプロダクトに記憶されてよい。コンピュータプログラムプロダクトの例として、メモリデバイス、光学記憶デバイス、集積回路、サーバ、オンラインソフトウェア等が挙げられる。好適には、コンピュータプログラムプロダクトは、コンピュータ上で実行された場合に、本発明による方法を行うための非一時的プログラムコード手段がコンピュータ可読媒体に記憶されている。
【００５７】
好適な実施形態では、コンピュータプログラムは、当該コンピュータプログラムがコンピュータ上で実行されると、本発明による方法のすべてのステップを行うように適応されたコンピュータプログラムコード手段を含む。好適には、コンピュータプログラムは、コンピュータ可読媒体に具現化されている。
【図面の簡単な説明】
【００５８】
本発明のこれらの及び他の態様は、以下に説明される実施形態から明らかとなり、以下に説明される実施形態を参照して説明される。
【００５９】
【図１】図１は、暗号化システム４００の略ブロック図である。
【図２】図２は、暗号化システム４３０の略ブロック図である。
【図３】図３は、集積回路５００の略ブロック図である。
【図４】図４は、メモリレイアウトの略ブロック図である。
【図５】図５は、暗号化システム６００の略ブロック図である。
【図６ａ】図６ａは、鍵生成方法７００の略フローチャートである。
【図６ｂ】図６ｂは、暗号化方法７１０の略フローチャートである。
【図６ｃ】図６ｃは、復号化方法７３０のフローチャートである。
【００６０】
なお、様々な図面において同じ参照符号を有するアイテムは、同じ構造上の特徴及び同じ機能を有するか又は同じ信号である。そのようなアイテムの機能及び／又は構造が既に説明されている場合、詳細な説明において、その説明を繰り返す必要はない。
【発明を実施するための形態】
【００６１】
本発明は、多くの異なる形式の実施形態を受け入れることが可能であるが、図面には、１つ以上の特定の実施形態が示され、また、本明細書では、本開示は本発明の原理の例示であって、本発明を図示され説明されている特定の実施形態に限定することを意図していないという理解に基づき、当該１つ以上の特定の実施形態が詳細に説明される。
【００６２】
図１は、暗号化システム４００の略ブロック図である。暗号化システム４００は、鍵生成デバイス１００と、公開鍵暗号化デバイス２００と、秘密鍵復号化デバイス３００とを含む。公開鍵暗号化デバイス２００は、暗号化デバイス２００とも呼ばれる。秘密鍵復号化デバイス３００は、復号化デバイス３００とも呼ばれる。
【００６３】
鍵生成デバイス１００は、暗号化デバイス２００における使用のための公開鍵１２６と、復号化デバイス３００における使用のための対応する秘密鍵１１４とを生成する。暗号化デバイス２００は、公開鍵１２６を使用して、メッセージ４１０、即ち、復号化デバイス３００向けのデータを暗号化して、暗号化されたメッセージ４２２が取得される。暗号化デバイス２００は、暗号化されたメッセージ４２２に加えて、復号化情報４２４も生成する。復号化デバイス３００は、秘密鍵１１４と、暗号化されたメッセージ４２２と、公開一変数多項式１２４とを使用して、復号化情報４２４を復号化して、メッセージ４１０が再び取得される。この暗号化及び復号化システムは、いわゆる非対称暗号化であり、公開−秘密鍵暗号化とも知られている。対称暗号化とは対照的に、公開鍵の知識が、秘密鍵の知識を意味するわけではない。これは、公開鍵へのアクセスを有するデバイスはどれでもメッセージを暗号化できるが、秘密鍵へのアクセスを有するデバイスのみが、メッセージを復号化できることを意味する。これは、翻って、公開及び秘密データに異なるセキュリティポリシーが適用できることを意味する。例えば幾つかの応用では、公開鍵は、当該鍵が秘密でないように公開される一方で、秘密鍵は秘密にされる。例えば秘密鍵は、暗号化デバイス３００及び鍵生成デバイス１００又は１つ以上の信頼できる関係者のみに知られていてよい。
【００６４】
「公開」及び「秘密」の形容詞の使用は、理解の助けになることを意図している。すべての公開データへのアクセスがあったとしても、秘密データを計算することはできず、少なくとも、応用の安全性を所与として、又は、鍵生成、暗号化及び復号化に必要な資源に比べて不当に高い資源なしでは計算することができない。しかし、「公開」とは、必ずしも、鍵生成デバイス１００及び暗号化デバイス２００以外の誰にでも、対応するデータが利用可能にされることを意味するとは限らない。特に、公開鍵及び他の公開データを、信頼できない関係者に秘密にすることは、安全性を高める。
【００６５】
鍵生成デバイス１００、暗号化デバイス２００及び復号化デバイス３００は、暗号化システム４００内のたった３つのエンティティであってよい。図２には、複数の秘密鍵復号化デバイスがある暗号化システム４００の構成が示される。図２は、秘密鍵復号化デバイス３００及び３０１を示し、もっとあってもよい。図２では、暗号化デバイス２００が、鍵生成デバイス１００から公開鍵１２６を受信し、復号化デバイス３００が、秘密鍵１１４と、場合により、公開一変数多項式１２４といった他の公開データと、係数といったパラメータとを受信する。本明細書では、暗号化システムにおいて鍵を分配する他のやり方も示されるので、これは例示的な例に過ぎない。
【００６６】
図１を引き続き参照するに、鍵生成デバイス１００は、秘密鍵生成器１１０と公開鍵生成器１２０とを含む。
【００６７】
秘密鍵生成器１１０は、ｓとも呼ばれる秘密乱数値１１２を電子形式で取得する。秘密乱数値１１２は、攻撃者にとってのその予測可能性が、所定の安全限界よりも低いという意味でランダムである。例えば秘密乱数値１１２は、鍵生成デバイス１００に含まれる乱数生成器（個別には図示せず）を使用して、鍵生成デバイス１００によって選択される。乱数生成器は、真乱数生成器であっても、疑似乱数生成器であってもよい。秘密鍵生成器１１０は、秘密乱数値１１２を使用して秘密鍵１１４を生成する。秘密鍵１１４は、秘密乱数値１１２を含む電子データである。例えば秘密鍵１１４は、秘密乱数値１１２を含むデータ構造である。秘密鍵１１４は、秘密鍵１１４の使用期限範囲、秘密鍵１１４の許容される使用等といった他のデータを含んでもよい。
【００６８】
鍵生成デバイス１００によって使用される非対称暗号化スキームは、幾つかの他の非対称暗号作成法に比べて、秘密乱数値１１２に際立って少ない要件を課す。例えばＲＳＡ鍵生成は、その秘密鍵が、２つの素数を含むことを必要とするが、これらの素数は、計算するのに資源集約的である。
【００６９】
秘密乱数値１１２は、アイデンティティベースであってもよい。例えば鍵生成デバイス１００は、秘密鍵を記憶する秘密鍵メモリ（図１には図示せず）を含む。秘密鍵は、何らかの非対称暗号化スキームの公開鍵か、又は、対称鍵であってよい。秘密鍵生成器１１０は、復号化デバイス３００のアイデンティティ（例えば識別番号）を取得（例えば受信又は生成）し、当該アイデンティティを暗号化することによって、秘密乱数値１１２を取得する。識別番号を所与として、鍵生成デバイス１００は、アイデンティティを再暗号化することによって、復号化デバイス３００の秘密鍵を再生成することができる。このシステムは、例えば秘密鍵を紛失した又は復号化デバイス３００においてアクセス不可である場合でも、デバイス３００上のデータへのアクセスが、例えば製品リコール、科学捜査等のために、後から必要となるかもしれない状況に適している。例えば図２にあるように、複数の秘密鍵復号化デバイスがある場合、鍵生成デバイス１００は、鍵のデータベースを記憶する必要なく、複数の復号化デバイスの秘密鍵を再構成することができる。デバイス３００のアイデンティティは、公開鍵１２６及び／又は秘密鍵１１４内に含まれてよい。
【００７０】
公開鍵生成器１２０は、式でｆｉ（  ，  ）とも表される二変数多項式の公開セット１２２を電子形式で取得する。以下に説明される実施形態は、セット１２２におけるすべての二変数多項式が、対称であると仮定する。対称多項式を使用することは、幾つかの利点をもたらす。まず、対称多項式は、指定する係数の数が少なくて済み、したがって、使用する資源がより少ない。次に、対称多項式は、ブックキーピングを単純にする。非対称多項式では、鍵生成及び復号化は、代入のために多項式の２つの変数のうちの第１の変数を使用するが、暗号化は、代入のために多項式の２つの変数のうちの第２の変数を使用する。
【００７１】
対称二変数多項式は更に、プレースホルダとして２つの形式上の変数を有するｆｉ（ｘ，ｙ）とも記述される。対称二変数多項式は、ｆｉ（ｘ，ｙ）＝ｆｉ（ｙ，ｘ）を満たす。この要件は、例えば単項式ｘａｙｂの係数が、単項式ｘｂｙａの係数に等しいという係数の要件になる。
【００７２】
公開セット１２２は、幾つかのやり方で取得される。例えば公開セット１２２は、例えば鍵生成デバイス１００において使用される暗号化を決定する標準によって規定される。この場合、様々デバイスの公開鍵は、異なる秘密乱数値１１２を使用して生成されたことによってのみ異なる。固定の公開セット１２２を使用すると、復号化デバイス３００における通信及び／又はストレージオーバヘッドを減少させる。
【００７３】
様々な復号化デバイス３００に異なる公開セット１２２を使用すると、安全性が高まる。例えば公開セット１２２は、公開セット１２２における多項式の係数の乱数値を計算することによってランダムに生成される。公開セット１２２における多項式の数及び多項式の次数又は最大次数といった公開セット１２２の幾つかの特徴を規定することは都合がよい。例えばストレージ要件を減少させるために、多項式における係数の幾つかはゼロであると規定されてもよい。
【００７４】
公開セット１２２における多項式の数は、応用に応じて異なるように選択されてよい。公開セット１２２は、少なくとも１つの対称二変数多項式を含む。鍵生成デバイス１００の一実施形態では、当該セットは、１つの多項式から成る。公開セット１２２に、１つの多項式しかないことは、複雑さ、ストレージ要件を減少させ、速度を増加させる。しかし、公開セット１２２に、１つの多項式しかないことは、公開セット１２２に２つ以上の多項式があることよりもあまり安全ではないと見なされる。これは、このような１多項式システムは、以下に説明される合計における追加の混合から恩恵を受けないからである。しかし、鍵生成、暗号化及び復号化は、正しく機能し、低値及び／又は安全性の低い応用には十分に安全であると考えられる。
【００７５】
以下において、公開セット１２２は、少なくとも２つの対称二変数多項式を含むと仮定する。一実施形態では、少なくとも２つ、又は、更にはすべての多項式は異なる。これは、システムの解析を相当に複雑にする。必須ではないが、公開セット１２２は、２つの等しい多項式を含んでよく、これらの２つの多項式が、異なる環に亘って評価される場合は、合計ステップにおける混合から依然として恩恵を受ける。この点について、以下に更に説明される。一実施形態では、公開セット１２２は、異なる環と関連付けられる少なくとも２つの等しい多項式を含む。２つ以上の等しい多項式を有すると、ストレージ要件が減少される。
【００７６】
公開セット１２２における多項式は、異なる次数の多項式であってよい。対称二変数多項式の次数とは、２つの変数のうちの１つの変数における多項式の次数を意味する。例えばｘ２ｙ２＋２ｘｙ＋１の次数は、２である。これは、ｘにおける次数が２だからである。公開セット１２２における多項式は、対称であるので、次数は、もう１つの変数において同じである。
【００７７】
公開セット１２２における多項式の次数は、応用に応じて異なるように選択される。公開セット１２２は、次数１以上の次数の少なくとも１つの対称二変数多項式を含む。一実施形態では、公開セット１２２は、次数１の多項式しか含まない。公開セット１２２に、線形多項式しかないことは、複雑さ、ストレージ要件を減少させ、速度を増加させる。しかし、公開セット１２２に、次数１の多項式しかないことは、公開セット１２２において、少なくとも１つの多項式の次数が少なくとも２である同じ数の多項式があることよりもあまり安全ではないと見なされる。これは、このようなシステムは、相当に線形ではないからである。一実施形態では、公開セット１２２は、次数２以上の少なくとも１つの、好適には２つの多項式を含む。しかし、鍵の生成、暗号化及び復号化は、次数１の多項式のみが使用される場合に、正しく機能し、また、少数の二変数多項式では、これらの多項式は、低値及び／又は低セキュリティ応用には十分に安全であると考えられる。しかし、公開セット１２２における複数の多項式が、異なる環に亘って評価される場合、結果として生じる暗号化は、公開セット１２２におけるすべての多項式が線形であっても、線形ではない。線形多項式は効率的に評価されるので、一実施形態では、公開セット１２２は、多数の線形多項式を含む。高値セキュリティ応用にも十分に安全であると依然として見なされる効率的なソリューションが達成される。
【００７８】
線形及び非線形多項式の両方と共に使用可能である更なる実施形態では、公開セット１２２は、様々な環において評価される１つの単項式を含む多数の二変数多項式を含む。これは、有利に、小さい公開鍵サイズを有し、効率的に評価される一方で、多項式の数で増減する十分な安全性を提供する。
【００７９】
公開セット１２２に、次数０の１つ以上の多項式を有することは、より高い次数の多項式が十分な安全性を提供する限り、システムに影響を与えない。
【００８０】
中間セキュリティ応用については、公開セット１２２は、次数２の２つの対称二変数多項式を含むか、又は更にはそれらから構成されてもよい。より高いセキュリティ応用については、公開セット１２２は、２つの対称二変数多項式を含むか、又は更にはそれらから構成されてもよいが、そのうちの１つの次数は２で、また、そのうちの１つの次数は２よりも高い、例えば次数３である。多項式の数及び／又は次数を増加することは、資源消費の増加を犠牲にして、安全性を更に高める。
【００８１】
公開鍵生成器１２０は、秘密乱数値１１２を公開セット１２２の多項式に代入することによって得られた一変数多項式を合計することによって、公開一変数多項式１２４を計算する。例えば公開鍵生成器１２０は、秘密乱数値１１２を、公開セット１２２における対称多項式のそれぞれに代入して、結果を簡約化する。秘密値１１２といった特定の値を対称二変数多項式の２つの変数のうちの１つに代入するが、もう１つの変数には特定の値を代入しないことによって、変数のうちの一方が除去され、一変数多項式が得られる。
【００８２】
公開セット１２２における代入後、結果を、正準形にすることが望ましい。例えば鍵生成デバイス１００及び暗号化システム４００全般内では、一変数多項式の正準形が使用される。良い選択は、代入の結果を、単項式の次数によって順序付けられる係数のリスト（例えばアレイ）として書くことである。値が複数の表現を有する場合、係数についても正準形の選択がされる。
【００８３】
公開一変数多項式１２４を取得する１つの方法は、次の通りである。
１．公開セット１２２における各多項式について、
ａ．２つの変数のうちの一方に対し、秘密乱数値１１２を多項式に代入する。
ｂ．得られた結果を正準形にし、多項式に関連付けられている環において簡約化し、これにより、一変数多項式が取得される。
２．公開一変数多項式１２４を取得するために、更なる環において、１ｂで取得されたすべての一変数多項式を合計する。
【００８４】
これらのステップは、かなりの程度まで組み合わされてもよい。
【００８５】
また、公開一変数多項式１２４は、正準形に従った係数のリストとして表されてもよい。多くの応用に適した形式は、係数に関連付けられている単項式の次数によって順序付けられるアレイで係数をリストすることである。つまり、一変数多項式は、単項式に関連付けられている係数を有する単項式の合計と見なされる。ここでも、可能な式を含む例を以下に提供する。
【００８６】
公開鍵生成器１２０は更に、公開鍵１２６を生成する。公開鍵１２６は、公開一変数多項式１２４及び公開セット１２２の表現を含む。例えば公開鍵１２６は、公開セット１２２及び公開鍵１２６のデジタル表現を含む電子データ構造である。更に、公開鍵１２６は、上記秘密鍵と同様に、例えば対応する秘密鍵へのアクセスを有するデバイスのアイデンティティといった追加情報を含んでもよい。
【００８７】
鍵生成デバイス１００は、秘密鍵１１４及び公開鍵１２６を生成した後、秘密鍵１１４を復号化デバイス３００に、公開鍵１２６を、復号化デバイス３００へのメッセージを暗号化するデバイス２００に分配する。分配は、様々なやり方で行われてよく、そのうちの幾つかは、以下に更に説明されるか、又は、図２に示されている通りである。
【００８８】
一例として、鍵生成デバイス１００は、例えば照明ユニットである、ある種の電子ユニットを製造する製造工場において使用され、鍵生成デバイス１００は、例えば照明ユニットである各製造ユニットを、（任意選択の）異なる識別子及び異なる秘密鍵で構成する。電子ユニットに、復号化デバイス３００が配置される。
【００８９】
例えば鍵生成デバイス１００は、電子ユニットの秘密鍵に対応する公開鍵を、暗号化デバイス２００を含む管理デバイス内に記憶する。管理デバイスは、適切な公開鍵で暗号化されている、例えばコマンドである技術的データを送信する。例えば管理デバイスは、ユニットに記憶される秘密鍵に対応する公開鍵で、当該ユニットへのコマンド（例えば「オンにする」コマンド）を暗号化する。結果として得られる暗号化されたメッセージ（例えば暗号化されたコマンド）は、例えば上記識別子でアドレスされる。管理デバイスが侵され、攻撃者が、管理デバイスに記憶されているすべての公開鍵へのアクセスを得たとしても、対応する秘密鍵を得ることはない。
【００９０】
上記例と組み合わされても組み合わされなくてもよい鍵生成デバイス１００の別の応用は、公開−秘密鍵対を生成し、例えば照明ユニットである各製造ユニットを公開鍵で構成し、管理デバイスを秘密鍵で構成することである。電子ユニットには、暗号化デバイス２００が配置される。照明ユニットといった電子ユニットは、そのデバイス２００を使用して、管理デバイスに、例えばステータスメッセージといったメッセージを暗号化された形で送信可能である。多くの電子デバイスが、公開鍵へのアクセスを有するので、この鍵は漏れる可能性があり、攻撃者に何らかの方法でアクセス可能となる。しかし、データは公開データであるので、秘密鍵を得ることは可能にしない。管理デバイスに、復号化デバイス２００が配置される。
【００９１】
図１の上部を参照するに、ボックス１００、２００及び３００の上部において、公開鍵１２６の暗号化デバイス２００への分配と、公開鍵１２６及び秘密鍵１１４の復号化デバイス３００への分配が概略的に示される。
【００９２】
暗号化デバイス２００は、公開一変数多項式と、対称二変数多項式の公開セットとを含む公開鍵１２６を使用して、電子メッセージ４１０を暗号化する。特に、暗号化デバイス２００は、鍵生成デバイス１００によって生成された公開鍵１２６を使用する。
【００９３】
暗号化デバイス２００は、対称鍵取得器２１０と、暗号化ユニット２３０と、復号化情報生成器２２０とを含む。
【００９４】
対称鍵取得器２１０は、暗号化乱数値２１２を電子形式で取得する。暗号化乱数値２１２は、ｒとも称される。暗号化乱数値２１２は、暗号化されたメッセージの攻撃者にとってのその予測可能性が、安全限界よりも低いという意味でランダムである。各メッセージに異なる暗号化乱数値２１２を使用してもよいが、これは、必須ではない。複数のメッセージが、同じ暗号化乱数値２１２を使用して暗号化されてよい。対称鍵取得器２１０は、暗号化乱数値２１２を、公開鍵１２６から得られた公開一変数多項式１２４に代入することによって対称鍵１２４を取得する。対称鍵１２４は、Ｋとも称される。代入は、環において評価される。
【００９５】
暗号化乱数値２１２は、秘密である。即ち、メッセージ４１０の内容に関して信頼のない関係者に対して少なくとも秘密である。復号化デバイス３００は、暗号化乱数値２１２を必要としない。暗号化デバイス２００の一実施形態では、暗号化乱数値２１２は、暗号化されたメッセージ４２２及び復号化情報４２４を生成した後（例えば直後）に削除される。
【００９６】
暗号化されたメッセージ４２２及び復号化情報４２４は、これらをメッセージブロック４２０内で組み合わせることによって関連付けられてよい。暗号化されたメッセージ４２２及び復号化情報４２４は、別々に送信されてもよい。
【００９７】
新しい暗号化乱数値２１２が各メッセージに選択されたとしても、秘密鍵１１４及び公開鍵１２６は、複数のメッセージに亘って同じである可能性が高い。安全性要件に応じて、ある時点において、例えば所定数以上のメッセージが秘密鍵１１４で復号化された後、新しい鍵が分配される。復号化デバイス３００は、当該所定数の復号化を使い果たした場合は、同じ秘密鍵１１４での追加の復号化を拒絶する。この手段は、復号化デバイス３００が、特別に作成されたメッセージブロック４２０を復号化することによって、秘密乱数値１１２の情報を引き込もうとするまだ今のところ知られていない攻撃を防ぐ。このために、復号化デバイス３００は、秘密鍵１１４で復号化されたメッセージの数を計数するカウンタと、当該カウンタが所定数を超えた場合に、秘密鍵１１４を使用した復号化を阻止する阻止ユニットとを含んでよい。例えば阻止ユニットは、復号化デバイス３００から秘密鍵１１４を削除してもよい。
【００９８】
対称鍵２１４の取得には、他のステップも伴う。例えばハッシュ関数が対称鍵２１４に適用される。これは、対称鍵２１４におけるエントロピーを平滑化し、例えば暗号化乱数値２１２の分配が均一でない、又は、均一であることが分かっている場合に、安全性を高める。更に、対称鍵２１４は、ある鍵長に切り詰められてもよい。例えば代入の結果のｂ個の最下位ビットを取って切り詰めてもよい。
【００９９】
暗号化ユニット２３０は、暗号化されたメッセージ４２２を取得するために、対称鍵２１４でメッセージ４１０を暗号化する。暗号化ユニット２３０は、任意の対称暗号化アルゴリズムで構成されてよい。例えば暗号化ユニット２３０は、ＣＢＣ又はＣＴＲといった暗号化に適切な「動作モード」を使用するＡＥＳ、ＣＡＳＴ等といったブロック暗号を使用する。メッセージ４１０が、対称鍵２１４のビットサイズ以下のビットサイズを有することが分かっているならば、メッセージ４１０に対称鍵２１４を追加するか又は排他的論理和（ＸＯＲ）をとってもよい。
【０１００】
復号化情報生成器２２０は、暗号化乱数値２１２を公開セット１２２の多項式に代入することによって取得される一変数多項式を合計することによって、復号化一変数多項式２２２を計算する。このステップは、秘密乱数値１１２の代わりに、暗号化乱数値２１２を使用すること以外は、公開一変数多項式１２４を計算するのと同じ実施態様を使用してよい。復号化情報生成器２２０は更に、復号化情報４２４を生成する。復号化情報は、復号化一変数多項式２２２を含む。復号化情報は、復号化一変数多項式２２２だけを含んでもよいが、送信者情報及び／又は電子署名といった追加情報を含んでもよい。
【０１０１】
復号化情報生成器２２０は、復号化一変数多項式を、正準形の復号化一変数多項式の係数のリストとして表してもよい。公開一変数多項式１２４に使用された正準形のタイプと同じタイプを、復号化一変数多項式２２２に使用してよい。特に、復号化一変数多項式２２２は、多項式の次数によって仕分けられる復号化一変数多項式２２２の単項式の係数のリストとして表されてよい。復号化一変数多項式２２２又は公開一変数多項式１２４は、対のリストとして表されてもよく、各対は、単項式の係数及び次数を含む。この表現では、ゼロ係数を有する単項式は表される必要はない。後者の表現は、公開セット１２２における疎な多項式にも適している。
【０１０２】
暗号化に加えて、暗号化ユニット２３０は更に、暗号化されたメッセージ４２２を復号化情報４２４に関連付ける。これは、幾つかのやり方で行われてよい。例えば暗号化されたメッセージ４２２及び復号化情報４２４は、例えば暗号化されたメッセージ４２２を復号化情報４２４で拡張することによって、これらを同じ単一のメッセージに埋め込むことによって一緒に関連付けられる。暗号化されたメッセージ４２２及び復号化情報４２４は、必ずしも同じメッセージの一部である必要はない。例えば暗号化されたメッセージ４２２及び復号化情報４２４は、それぞれ、同じ識別子を含むヘッダーと組み合わされてもよく、当該同じ識別子によって、２つのメッセージは関連付けられる。暗号化デバイス２００は、復号化デバイス３００に、暗号化されたメッセージ４２２を、復号化情報４２４よりも先に送信する。このようにすると、暗号化デバイス２００は、メッセージ４１０を引き渡すが、まだ復号化デバイス３００がメッセージ４１０を読むことは許可しない。後の時点において、暗号化デバイス２００は、復号化情報４２４を復号化デバイス３００に送信し、その内容を明らかにする。メッセージを、その内容をまだ明らかにすることなく引き渡すことは、基本的な暗号プリミティブであり、システムを、電子投票システムといった様々な暗号アルゴリズムに適用可能にする。興味深いことに、本明細書において説明される公開鍵暗号化システムは、暗号化デバイス２００へのアクセスを有する関係者が、値を引き渡し、後に、復号化情報を送信することによって、当該値を明らかにするが、秘密鍵は明らかにしないことを可能にする。
【０１０３】
図１の下部に示されるように、暗号化デバイス２００は、入力としてメッセージ４１０を受信し、出力としてメッセージブロック４２０を生成してよい。これらの要素は、暗号化デバイス２００及び復号化デバイス３００の内部にも示されている。多くの場合、メッセージ４１０は、暗号化デバイス２００の内部で、例えば自動生成メッセージ（例えばステータスメッセージ）として生成される。
【０１０４】
暗号化デバイス２００、例えば対称鍵取得器２１０は、復号化デバイス３００によって再構成される対称鍵３１２（Ｋ’）が対称鍵２１４に等しいかどうかを検証するための鍵確認データを対称鍵２１４（Ｋ）から計算してよい。鍵確認データは、様々な形式を取ってよい。例えば鍵確認データは、例えば対称鍵２１４に亘るＳＨＡ−２５６である暗号学的ハッシュであってよい。再構成された鍵３１２が対称鍵２１４に等しいかどうかを検証するために、復号化デバイス３００は、再構成された対称鍵３１２に亘るハッシュを計算し、ハッシュが同じであるかを検証する。鍵確認データは更に、入力に亘る暗号化を含んでもよい。再構成された鍵３１２が対称鍵２１４に等しいかどうかを検証するために、復号化デバイス３００は、再構成された対称鍵３１２で入力を暗号化し、暗号化が同じであるかどうかを検証するか、又は、現在の入力を復号化して、それが入力に等しいかどうかを検証してもよい。入力は、鍵確認データの一部であってよい。例えば入力は、ノンスであるか、又は、更にはランダムであってよい。入力は固定されていてもよい。後者の場合、入力は、鍵確認データの一部である必要はない。鍵確認データは、復号化情報４２４に含まれていてもよい。
【０１０５】
復号化デバイス３００は、復号化情報４２４及び秘密鍵１１４を使用して、暗号化されたメッセージ４２２を復号化する。復号化デバイス３００は、例えばグローバル係数である公開データの一部を必要とする。これに関するより多くの情報は、以下に提供する。例えば復号化デバイス３００は、公開鍵１２６を受信するが、復号化デバイス３００は、そのすべての部分が必要ではない。特に、復号化デバイス３００は、復号化のために、公開セット１２２へのアクセスは必要としない。
【０１０６】
復号化デバイス３００によって使用される復号化情報４２４及び秘密鍵１１４は、暗号化デバイス２００又は鍵生成デバイス１００によってそれぞれ生成された通りであってよい。復号化情報４２４は、復号化一変数多項式２２２を含み、秘密鍵１１４は、秘密乱数値１１２を含む。
【０１０７】
復号化デバイス３００は、対称鍵取得器３１０及び復号化ユニット３２０を含む。
【０１０８】
対称鍵取得器３１０は、再構成された対称鍵３１２を取得する。再構成された鍵３１２は、メッセージ４１０を暗号化するために使用された対称鍵２１４の復号化情報４２４に基づいた再構成である。復号化ユニット３２０は、再構成された対称鍵３１２で、暗号化されたメッセージを復号化する。復号化ユニット３２０は、メッセージ４１０を暗号化するために使用された暗号化アルゴリズムに対応する復号化アルゴリズムを使用する。例えばメッセージ４１０が、ＡＥＳを使用して暗号化されているならば、復号化ユニット３２０は、ＡＥＳを使用して復号化する。使用する暗号化及び復号化アルゴリズムは固定されていてもよい。例えば暗号化デバイス２００及び復号化デバイス３００は、常にＡＥＳを使用するように構成されていてもよい。使用する暗号化／復号化アルゴリズムは設定可能であってもよい。例えば復号化情報４２４は、メッセージ４１０を暗号化するために使用された暗号化アルゴリズムを示す情報を含んでいてもよい。復号化デバイス３００は、当該指示に応じて、暗号化されたメッセージ４２２を復号化するための復号化アルゴリズムを選択することができる。
【０１０９】
対称鍵取得器３１０は、秘密乱数値１１４（ｓ）を復号化一変数多項式２２２に代入することによって、再構成された対称鍵３１２を再構成する。このステップは、暗号化鍵を生成する可能性が高い。残念なことに、対称鍵２１４は、秘密鍵１１４を復号化一変数多項式２２２に代入することから直接的に取得されることは保証されない。これの尤度は、公開セット１２２における多項式の数、それらの次数及び基礎となっている環に依存する。当該尤度は、秘密鍵１１４を、公開セット１２２を表す一般式に代入し、再構成された鍵３１２を歪める繰上り（carries）の尤度を計算することによって計算され、対称鍵２１４は、同じである。
【０１１０】
当該尤度と応用とに応じて、鍵確認データの重要性は異なる。幾つかの応用は、偶然に、復号化デバイス３００が、鍵を正しく再構成できなかったために、一部のメッセージを復号化できないことを容認する。必要であれば、復号化デバイス３００は、暗号化デバイス２００にメッセージを再送信することを要求してもよいが、メッセージは、異なる暗号化乱数値２１２で再度暗号化される。
【０１１１】
しかし、復号化デバイス３００は、複数の鍵を構成し、鍵確認データを使用して当該複数の鍵を検証することによって、当該複数の鍵から、再構成された対称鍵３１２を決定することもできる。当該複数の鍵からは、鍵確認データを使用して、多くても１つの鍵が正しく検証される。
【０１１２】
構成された鍵の数と、システムのために行った選択、具体的には、公開セット１２２及び基礎となっている環のために行った選択とは、復号化鍵３００が対称鍵２１４に等しい鍵を構成できない確率に影響を及ぼす。必要に応じて、当該確率をゼロに減少させうることを以下に説明する。
【０１１３】
複数の構成された鍵の生成は、繰り返し行われることが好適である。例えば対称鍵取得器３１０は、次の通りに鍵検索するように構成される。
１．秘密乱数値（ｓ）を、復号化一変数多項式に代入することによって得られた結果から、第１の再構成された鍵（Ｋ’）を導出し、
２．第１の再構成された鍵（Ｋ’）が対称鍵２１４（Ｋ）に等しいかどうか、鍵確認データから決定する。
３．等しい場合には、鍵検索を終了する
４．第１の再構成された鍵（Ｋ’）から、更なる再構成された鍵（Ｋ’）を生成する。
５．ステップ２に行く。
【０１１４】
この鍵検索は、例えばフォーネクストループ（for-next loops）、ワイルループ（while loops）、ドゥアンティル（do-until）等といった様々なプログラミング手段を使用して行われてよい。ステップ３は、タイムアウトの場合にも終了する。
【０１１５】
鍵生成デバイス１００及び復号化デバイス３００は、１つのデバイスにまとめられてもよく、これは、秘密乱数値１１２が、復号化デバイス３００の範囲から決して出ることがないようにする。暗号化デバイス２００及び復号化デバイス３００は、例えば暗号化されたバックアップシステムにまとめられてもよい。鍵生成デバイス１００、暗号化デバイス２００及び復号化デバイス３００は、場合によっては、地理的に分散されている異なるデバイスであってもよい。暗号化デバイス２００及び復号化デバイス３００は、通信ネットワークを介して、互いに通信してもよい。鍵生成デバイス１００は、鍵情報を分配するために通信ネットワークを使用するが、例えば信頼のおける場所における有線接続、ＵＳＢスティックといった携帯可能なメモリデバイスを使用する運搬等のアウトオブバウンド手段を使用してもよい。
【０１１６】
興味深いことに、秘密鍵１１４、公開一変数多項式１２４、対称鍵２１４、復号化一変数多項式２２２及び再構成された対称鍵３１２の計算の基礎となっている計算システムは、幾つかの方法で選択される。例えば二変数及び一変数多項式の係数や、秘密乱数値１１２及び暗号化乱数値２１２を含む値は、いわゆる可換環から選択される。可換環は、一組の値が、加算及び乗算と組み合わされる数学的概念である。
【０１１７】
公開セット１２２が複数の多項式を含む場合に、異なる可換環を、公開セット１２２の各多項式に関連付けることによって、向上された混合効果及び一方向性との両方が得られるということは、発明者の見識である。公開鍵生成器１２０及び復号化情報生成器２２０は、秘密乱数値１１２又は暗号化乱数値２１２を、それぞれ、公開セット１２２の各多項式に代入し、それに関連付けられている環における各多項式を簡約化する。好適には、各多項式も、正準形にされる。
【０１１８】
式の形式では、これは、秘密乱数値１１２又は暗号化乱数値２１２について、それぞれ、Σｉ［ｆｉ（ｓ，  ）］Ｒｉ又はΣｉ［ｆｉ（ｒ，  ）］Ｒｉと表される。これらの式において、多項式ｆｉ（  ，  ）は、環Ｒｉに関連付けられている。角括弧は、示されている環における正準形への簡約化を示す。合計自体は、グローバル環Ｒ０（式には示さず）において行われてよい。更に、対称鍵２１４及び再構成された対称鍵３１２の計算も、グローバル環において行われてよい。場合によっては、ある鍵長（ｂ）（ビット）に切り詰めるといった追加の処理が後続する。公開セット１２２の多項式に関連付けられている各局所環について、合計の前に、環の要素をグローバル環にマッピングするマッピング関数があってよい。多くの実施形態において、マッピングは、自然マッピングである。即ち、局所環における値を表すために使用されるビットパターンは、同じビットパターンを有するグローバル環の値にマッピングされる。即ち、マッピングをするために、実際の計算動作を行う必要がない。
【０１１９】
公開セット１２２における多項式と関連付けられる環のうちの１つの環、又は、グローバル環として使用される環は、例えば次の通りにシステム４００において実施される。環の値は、電子デバイス１００、２００及び３００においてデジタル形式で表され、値の加算及び乗算演算は、デジタルアルゴリズムとして実施される。アルゴリズムは、ソフトウェア又はハードウェアで実施されてよい。これらの演算のハードウェア表現が、場合によってはソフトウェアと組み合わされて、しばしば使用される。環は、環の値を一意な形で表すために、正準化アルゴリズムを有してよい。
【０１２０】
デジタル形式で表される多くの可換環がある。２つの重要な例は、多項式環及び整数環である。以下に、各ＲｉがＺｑｉ、即ち、ｑｉを法とする整数の可換環として選択され、また、Ｒ０がＺＮ、即ち、Ｎを法とする整数の可換環として選択される整数環に基づいた事例を与える。これらの環は、それらの値のデジタル表現を、デジタル表現される整数として、例えば、それぞれ、０乃至ｑｉ−１又はＮ−１の整数として可能にする。多項式は、この形式で表現される値のアレイとして表現されてもよい。加算アルゴリズムは、係数を法とする簡約化のソフトウェア実施が後続する整数加算のハードウェア実施として実施されてよい。乗算は、係数を法とする簡約化のソフトウェア実施が後続する整数乗算のハードウェア実施として実施されてよい。多くの可換環及びデジタル表現自体は、当技術分野において知られている。しかし、上記されたようなやり方で、公開−秘密鍵暗号化システムを得るために、このようなデジタル表現を適用することは知られていない。
【０１２１】
暗号化システム４００の一実施形態では、公開グローバル簡約化整数（Ｎ）が、公開セットに関連付けられ、公開個別簡約化整数（ｑｉ）が、公開セットの各多項式と関連付けられる。関連付けられた情報は、公開鍵１２６内に含められるか、又は、固定されていてよい。一実施形態では、公開グローバル簡約化整数は、固定されており、公開鍵に含められる必要はない。しかし、公開個別簡約化整数（ｑｉ）は、固定されておらず、公開セット１２２と共に生成されてよい。これらの数は、ランダムに選択されても、安全性要件、正しい復号化の尤度等に依存して選択されてもよい。これらの数の可能な選択を以下に与える。公開個別簡約化整数の少なくとも２つは異なり、好適には、すべての公開個別簡約化整数が異なる。
【０１２２】
秘密鍵生成器１１０は、秘密乱数値１１２を、０とグローバル公開グローバル簡約化整数（Ｎ）との間の整数として生成する。対称鍵取得器２１０は、暗号化乱数値２１２を、０とグローバル公開グローバル簡約化整数（Ｎ）との間の整数として生成する。
【０１２３】
秘密鍵生成器１１０は、公開セット１２２における多項式を、整数係数を有する対称二変数多項式（ｆｉ（  ，  ））として取得する。公開セット１２２における多項式が、関連付けられる公開簡約化整数を法として簡約化された係数を有する必要はなく、例えば係数は、より大きくても、負数であってもよい。しかし、公開セット１２２の多項式が正準形（例えば０と、関連付けられる公開簡約化整数（ｑｉ）−１との間（０も、ｑｉ−１も含める）の係数を有する）であることが、実施のためには好都合である。
【０１２４】
公開鍵生成器１２０は、公開一変数多項式を、整数係数を有する一変数多項式として生成する。復号化情報生成器２２０は、復号化一変数多項式を、整数係数を有する一変数多項式として生成する。
【０１２５】
例えば公開鍵生成器１２０は、公開一変数多項式を次の通りに生成する。
１．一変数多項式のセットを、ａ．の通りに取得する。
２．公開セットの各多項式について、
ａ．秘密乱数整数（ｓ）を、上記多項式（ｆｉ（ｓ，  ））に代入し、当該多項式に関連付けられている公開個別簡約化整数（ｑｉ）を法として簡約化する。
３．一変数多項式のセットを合計し、グローバル簡約化整数（Ｎ）を法として簡約化する。
【０１２６】
復号化一変数多項式を生成するように復号化情報生成器２２０を構成することも同様に行われるが、ただし、秘密乱数値１１２の代わりに、暗号化乱数値２１２を使用する。
【０１２７】
対称鍵取得器２１０は、暗号化乱数値（ｒ）を、公開一変数多項式に代入し、グローバル簡約化整数（Ｎ）を法として簡約化し、結果のビットの最低限の鍵長の数（ｂ）を取ることによって、対称鍵（Ｋ）を計算する。
【０１２８】
一例として、公開グローバル簡約化整数（Ｎ）は、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも低い奇数として選択されてよい。ここで、αは、公開セットにおける多項式の２つの変数のうちの１つの変数における最も高い次数を表し、ｂは、鍵長を表す。各公開個別簡約化整数（ｑｉ）について、公開グローバル簡約化整数（Ｎ）から当該公開個別簡約化整数（ｑｉ）を引いたものは、２の鍵長乗の倍数（ｑｉ＝Ｎ−βｉ２ｂ、１＜βｉ＜２ｂ）であり、２の２倍の鍵長乗未満である。パラメータのこの特定の選択は、適切な混合と、復号化デバイスが鍵を再構成可能である高い確率との間のトレードオフである。他の選択も可能である。
【０１２９】
この場合、対称鍵（Ｋ）を計算することは更に、２の鍵長乗（２ｂ）を法として簡約化することを含む。即ち、代入結果の最後のｂ個のビットのみを取るように切り詰める。
【０１３０】
対称鍵取得器３１０は、秘密乱数値（ｓ）を、復号化一変数多項式に代入し、公開グローバル簡約化整数（Ｎ）を法として簡約化し、また、２の鍵長乗（２ｂ）を法として簡約化することによって、対称鍵（Ｋ）を再構成する。
【０１３１】
この実施形態では、代入ステップのみから得られる鍵が、対称鍵２１４とまだ等しくないことは可能である。再構成された鍵が、暗号化に使用された鍵に等しいかどうかの検出には、鍵確認データが使用される。鍵確認は暗示的であってもよい。例えばメッセージ４１０は、違う鍵で復号化される場合には得られない特定の形式であってよい。
【０１３２】
鍵Ｋの鍵確認データ（例えばＨ（Ｋ））が、ハッシュ関数Ｈについて、Ｈ（Ｋ’）とは異なる場合でも、復号化デバイス３００は、正しい鍵を計算し、依然として取得する。これをするためには、復号化デバイス３００は、Ｋ’から、ｊの範囲について、値＜Ｋ’＋ｊＮ＞２bと、その鍵確認値（例えばハッシュ値）とを計算する。これらの鍵確認値の多くても１つが、鍵確認値、例えばハッシュ値Ｈ（Ｋ）に等しい。当該指数ｊが見つかると、復号化デバイス３００は、ｊの当該値を使用して、Ｋを、＜Ｋ’＋ｊＮ＞２bとして計算する。山括弧は、モジュロ演算を示す。当該ｊが見つからない場合、復号化デバイス３００は、データを復号化することができない。後者の場合、復号化デバイス３００は、例えばエラーメッセージを生成する、違う暗号化乱数値２１２での再暗号化を要求する等の幾つかの選択肢を有する。興味深いことに、秘密乱数値１１２は、最初のＫ’を計算するためだけに必要であり、他の計算は、公開グローバル簡約化整数（Ｎ）を使用する。
【０１３３】
次のアルゴリズムが使用されてよい。対称鍵取得器３１０は、次の通りに鍵検索をする。
１．秘密乱数整数（ｓ）を、復号化一変数多項式に代入した結果から、第１の再構成された鍵（Ｋ’）を導出し、
２．第１の再構成された鍵（Ｋ’）が対称鍵２１４（Ｋ）に等しいかどうかを、鍵確認データから決定し、
３．等しい場合には、鍵検索を終了する
４．ｊの新しい非ゼロ値について、＜Ｋ’＋ｊＮ＞２bを計算することによって、第１の再構成された鍵（Ｋ’）から、更なる再構成された鍵（Ｋ’）を生成する。
５．ステップ２に行く。
【０１３４】
ステップ３は、タイムアウトの場合にも終了する。例えば幾つかの資源に制約のあるデバイスでは、鍵の再構成にかけられ得る時間量は限られている。
【０１３５】
通常、デバイス１００、２００及び３００は、それぞれ、デバイスに記憶された適切なソフトウェアを実行するマイクロプロセッサ（図示せず）を含む。例えば当該ソフトウェアは、ダウンロードされて、デバイスの対応するメモリ、例えばＲＡＭ（図示せず）に記憶されていてよい。
【０１３６】
以下に、システムの一実施形態の数学的な説明が与えられる。まず、安全性パラメータ、即ち、ビット長ｂ、公開セットにおける多項式の数ｍ、及び、公開セットにおける最大次数αが選択される。ビット長ｂは、対称暗号化における鍵長を決定する。他の２つのパラメータを増加させると、システムの複雑さが増加する。これらの３つのパラメータは、例えばシステム設計者によって決定されて固定されていても、又は、鍵生成デバイス１００によって選択されてもよい。更に、鍵生成デバイス１００は、区間（２（α＋１）ｂ，２（α＋２）ｂ）における奇数Ｎと、ｍ個の整数ｑｉ（形式ｑｉ＝Ｎ−βｉ２ｂの１＜ｉ＜ｍ、βｉは、１＜βｉ＜２ｂを満たしている）と、次数αのｍ個の対称二変数多項式とを選択する。
【数１】
0006328333.tif 000002
【０１３７】
対称性により、ｊ＜ｋを有する（ｆｉ）ｆｋのみが指定されればよい。鍵生成デバイス１００は、範囲１＜ｓ＜２ｂ内の秘密整数ｓ（１１２）を選択し、（α＋１）の数
【数２】
0006328333.tif 000003
を計算することによって、公開一変数多項式１２５を計算する。
【０１３８】
鍵生成デバイス１００によって生成された公開鍵は、ｓ以外の上記パラメータをすべて含む。この特定の実施形態では、鍵生成デバイス１００は、ハッシュ関数Ｈも指定する。暗号化デバイス２００は、範囲１＜ｒ＜２ｂ内の乱数整数ｒを選択し、（α＋１）の数
【数３】
0006328333.tif 000004
だけでなく、数
【数４】
0006328333.tif 000005
、また、Ｋのハッシュ（Ｈ（Ｋ））といった鍵確認データを計算することによって、復号化一変数多項式２２２を計算する。暗号化デバイス２００は、ｂｋだけでなく、Ｈ（Ｋ）及び数Ｃ＝〈Ｍ＋Ｋ〉２bも送信する。ここで、Ｍは、鍵生成デバイス１００から復号化デバイス３００に送信されるｂビットのプレーンテキストメッセージである。Ｋを追加する代わりに、暗号化デバイス２００は、ＫでＭを暗号化することによってＣを得るために、他の暗号化アルゴリズムを使用してもよい。
【０１３９】
復号化デバイス３００は、
【数５】
0006328333.tif 000006
と、ハッシュ値Ｈｊ＝Ｈ（〈Ｋ’＋ｊＮ〉２b）（−（３ｍ＋α＋１）＜ｊ＜（３ｍ＋α＋１について）とを計算する。
【０１４０】
復号化デバイス３００は、Ｈｊ’＝Ｈ（Ｋ）であるようにｊ’を見つけ、Ｋを、〈Ｋ’＋ｊ’Ｎ〉２bとして取り出す。復号化デバイス３００は、今度は、送信されたメッセージＭを、Ｍ＝〈Ｃ−Ｋ〉２bとして取り出す。Ｋを引く代わりに、復号化デバイス３００は、ＫでＭを復号化することによってＭを得るために、暗号化アルゴリズムに対応する他の復号化アルゴリズムを使用してもよい。
【０１４１】
スキームの安全性は、係数αｋ及び（ｆｉ）ｊｋを所与として、ｓを見つけることの難しさに依存する。ｍ＞１及びα＞１について、これを行うやり方は、ｓのすべての可能な値を試みることである。これは、ｂが十分に大きければ実現不可能である。ｂ＝１２８以上の値は、大きいので、ｓのすべての可能な値を試みることは、実現不可能である。即ち、総当たり攻撃は除外される。しかし、幾つかの応用は、絶対的な実現不可能性を必要としない。その場合、ｂ＝４８以上の値で既に十分である。
【０１４２】
ｍ＝１について、係数αｋは、環Ｚｑ１におけるｓにおける多項式である。このようなシステムは、場合によっては、求根アルゴリズムを適応させることによって攻撃される。これは、確かに簡単なタスクではないが、すべての安全性応用について、ｍ＞１を選択することが推奨される。
【０１４３】
ｍ＞１及びα＞１について、ｓを見つける別のアプローチは、スキームを、ｍ及びαに比例する次元の特定の格子におけるいわゆる最近傍ベクトル問題にマッピングすることである。対称二変数多項式について、この次元は、二変数多項式が少なくとも（α＋１）（α＋２）／２異なる非ゼロの係数と、少なくとも（α＋１）（α＋１）の非ゼロ係数とを有する場合に達成される（ｍ＋１）（α＋１）の上界と、すべての二変数多項式が、同じ次数における単項式である場合に、ｍ＋１の下界とを有する。最近傍ベクトル問題を解決するすべての既知のアルゴリズムは、格子次元と共に指数関数的に成長する時間量を取るか、又は、格子次元と共に指数関数的に成長可能であるエラーをする。大きい次元の格子における最近傍ベクトル問題は、実現不可能であることが分かっている。Stehleは、ほとんどの既知の解析アルゴリズムは、次元が１８０に到達すると機能しなくなり始めることを報告している。発明者は、非常に大きい次元（次元５００がこの要件を満たすことが分かった）では、既存の解析アルゴリズムは、全く機能しないか、又は、実現不可能であるほどに低速であることを見出している。更なる利点として、最近傍ベクトル問題といった格子に基づいた問題は、素因数分解といった古典的な問題に基づいている既存の暗号アルゴリズムよりも、これから販売される量子コンピュータで解析することの方がより難しい。
【０１４４】
本実施形態では、公開鍵を生成する鍵生成デバイス１００のサイズは、ｂ、ｍ、α及びハッシュ関数の指定は除き、
【数６】
0006328333.tif 000007
である。
【０１４５】
ｂ、ｍ、α及びハッシュ関数の指定は、例えばこれらが、システムにおいて固定されている場合には不要である。ハッシュ関数は、ｆ個のビットを出力すると仮定して、ｂビットのメッセージＭを送信するための暗号文暗号化されたメッセージ４２２は、
【数７】
0006328333.tif 000008
である。
【０１４６】
上記実施形態において、Ｋ及びＭを足すことは、暗号化として使用されている。これは、例えばシステムが、コマンドメッセージといった比較的短いメッセージに適用される場合は、適切な選択である。この構成は、第２の対称鍵を暗号化するためにも使用されてよい。第２の対称鍵は、次に、Ｍを暗号化するために使用される。上記構成は、例えばＡＥＳ−１２８であるＡＥＳといった例えばブロック暗号である他の対称暗号化でも使用されてよい。
【０１４７】
上記説明は、様々な方法で変更することができる。幾つかの可能な変形を以下に説明する。
【０１４８】
例えば、すべての多項式係数（ｆｉ）ｊｋがゼロであることを必要とする場合（ｊ＝ｋ＝αの場合を除く）、復号化情報４２４のサイズが大幅に縮小されてもよい。これは、公開鍵のサイズを縮小するが、より重要なことには、これは、暗号化デバイス２００が、単一のｂｋ、即ち、ｂαを送信するだけでよく、したがって、暗号文のサイズが、（α＋４）ｂ個のビットに縮小することを意味する。
【０１４９】
Ｋが所与である場合に、秘密鍵ｓを見つける問題は、今度は、単一の方程式
【数８】
0006328333.tif 000009
から、ｓを解くことに変換する。
【０１５０】
これは、ｍ＞１、α＞１である場合には、依然として難しい問題である。
【０１５１】
Ｃを、〈Ｍ＋Ｋ〉２bとして形成することは、Ｋの略均一な分布は、メッセージＭが均一に分布されていなくても、Ｃが（略）均一に分布されることを確実にするので、良い選択である。他の可能な選択には、可逆関数の任意の１パラメータセットに対するＣ＝Ｆｋ（Ｍ）及び
【数９】
0006328333.tif 000010
が含まれる。例えば、所与の奇数Ａ、Ｂに対して、
【数１０】
0006328333.tif 000011
である。ＦＫ（Ｍ）＝Ｋ・Ｍ、ここで、暗号化デバイス２００は、この乱数ｒを、Ｋ（ｓ，ｒ）≠０であるように選ばなければならない。
ＦＫ（Ｍ）＝Ｋ＋Ｍ
【０１５２】
暗号化システム４００及びシステム４３０は、「環」における演算としても知られている乗算及び加算を行う別の計算システムで構成されてもよい。可換環がより望ましいと考えられる。環が一般に適用可能であるが、読み易さのために、以下の例は、多項式環について与えられる。多項式環は、整数環と同様に、可換環の例である。上記システムとの重要な相違点は、多項式の係数、暗号化乱数値及び秘密乱数値が、様々な多項式環からの要素であることである。使用されるすべての多項式環の形式的変数を示すために「ｔ」を使用する。
【０１５３】
多項式環自体は知られているため、以下に簡単な概要のみを与える。環Ｚｐ［ｔ］、即ち、Ｚｐ＝Ｚ／（ｐＺ）；｛０，１，…，ｐ−１｝における係数を有する変数ｔにおける多項式の環を検討する。この環の要素は、多項式
【数１１】
0006328333.tif 000012
であり、すべてαｋ∈Ｚｐであり、級数は終了する：ｋ＞Ｋについて、すべての係数αｋ＝０であるようなＫがある。Ａ（ｔ）の次数（ｄｅｇ（Ａ（ｔ））と示される）は、すべてのｋ＞Ｋについて、αｋ≠０及びαｋ＝０であるようなＫの値である。これは、零多項式を除き、Ｚｐ［ｔ］のすべての要素の次数を定義する。「０」の次数、即ち、零多項式は、定義されていない。
【０１５４】
Ｚｐ［ｔ］における２つの多項式の加算は、
【数１２】
0006328333.tif 000013
と定義される。ここで、〈・〉ｐは、独立変数が、ｐを法として評価され、Ｚｐにあることを示す。なお、非零多項式Ａ（ｔ）及びＢ（ｔ）（ただし、Ａ（ｔ）＋Ｂ（ｔ）≠０）について、ｄｅｇ（Ａ（ｔ）＋Ｂ（ｔ））＜ｍａｘ（ｄｅｇ（Ａ（ｔ），ｄｅｇ（Ｂ（ｔ）））が成り立つ。
【０１５５】
Ｚｐ［ｔ］における２つの多項式の乗算は、
【数１３】
0006328333.tif 000014
と定義される。なお、ｐが素数である場合、非零多項式Ａ（ｔ）及びＢ（ｔ）について、ｄｅｇ（Ａ（ｔ）・Ｂ（ｔ））＝ｄｅｇ（Ａ（ｔ））＋ｄｅｇ（Ｂ（ｔ））が常に成り立つ。ｐが素数でない場合、これは必ずしも成り立つとは限らない。以下では、ｐは素数であると仮定する。
【０１５６】
仮に、Ｑ（ｔ）を、（素数ｐについて）Ｚｐ［ｔ］における非零多項式であるとする。この場合、任意の多項式Ａ（ｔ）∈Ｚｐ［ｔ］が、Ａ（ｔ）＝Ｐ（ｔ）・Ｑ（ｔ）＋Ｒ（ｔ）（ただし、ｄｅｇ（Ｒ（ｔ））＜ｄｅｇ（Ｑ（ｔ）））と一意に表すことができる。ここでは、Ｐ（ｔ）は、Ｑ（ｔ）によるＡ（ｔ）の徐算の結果であり、Ｒ（ｔ）は、剰余である。この剰余は、〈Ａ（ｔ）〉Ｑ（ｔ）、即ち、Ｑ（ｔ）を法として簡約化されたＡ（ｔ）で示される。環Ｒ（Ｑ（ｔ），ｐ）：＝Ｚｐ［ｔ］／（Ｑ（ｔ）Ｚｐ［ｔ］）は、零多項式と、ｄｅｇ（Ｑ（ｔ））よりも小さい次数のＺｐにおける係数を有するｔにおけるすべての多項式とのセットとして定義される。２つのこのような多項式の加算は、Ｚｐ［ｔ］における加算と同じであり、乗算は、Ｚｐ［ｔ］における乗算と同じであり、その後に、Ｑ（ｔ）を法とする簡約化が続く。
【０１５７】
非負整数とｐ変数多項式との間には、自然マッピングがある。多項式係数は、整数のｐ変数の展開における数字に対応し、したがって、多項式に対応する整数は、ｔ＝ｐを当該多項式に代入し、それを、
【数１４】
0006328333.tif 000015
において評価することによって得られる。なお、このマッピングは、多項式Ｑ（ｔ）を法とする簡約化の、Ｑを法とする整数簡約化との等値を意味するものではない。例えば、Ｚ２［ｔ］において、１＋ｔ２＝（１＋ｔ）（１＋ｔ）が成り立ち、したがって、〈１＋ｔ２〉１＋ｔ＝０であるが、〈１＋２２〉１＋２＝〈５〉３＝２≠０である。
【０１５８】
環Ｒ（Ｑ（ｔ），ｐ）の要素のセットは、Ｑ（ｔ）の次数のみに依存する。これらの要素の加算は、ｐに依存する。これは、多項式係数がＺｐにあるが、Ｑ（ｔ）とは無関係であるからである。その一方で、これらの乗算の結果は、ｐ及びＱ（ｔ）に依存する。
【０１５９】
環Ｒ（Ｑ（ｔ），ｐ）において、定義された乗算及び加算を有することは、当該環における多項式を定義することを可能にする。これらの独立変数は、当該環の要素であり、要素は、環の値による係数（ring-valued coefficient）を有し、この環内の値をとる。Ｒ（Ｑ（ｔ），ｐ）の次数αの二変数多項式Ｆ（・，・）は、したがって、
【数１５】
0006328333.tif 000016
と表すことができ、ここで、（Ｚｐ［ｔ］の）合計は、モジュール簡易化演算の外でとることがきる。様々な環Ｒ（Ｑ１（ｔ），ｐ）、Ｒ（Ｑ２（ｔ），ｐ）、Ｒ（Ｑｍ（ｔ），ｐ）における多項式を（Ｚｐ［ｔ］で）加算することもできる：
【数１６】
0006328333.tif 000017
【０１６０】
すべての以下の実施形態では、ビット指向のデバイス上で実施することがより簡単である、ｐ＝２を使用する。しかし、ｐの他の値、特に素数値も可能であるため、これは限定ではない。例えば２５１及び６５５２１は、係数がそれぞれ１バイト及び２バイトでフィットするので適切な選択である。
【０１６１】
暗号化システム４００及び４３０と同じように、鍵生成デバイス１００は、秘密鍵生成器１１０と公開鍵生成器１２０とを含む。公開鍵生成器１２０は、以下のパラメータを選択するか、又は、電子形式で、他の方法で取得する。即ち、
Ｍと示される、公開グローバル簡約化多項式次数；
鍵のサイズ（Ｂ個のビット）
整数α、好適には、α＞1。
秘密乱数値及び暗号化乱数値のサイズを決定する安全性パラメータ「ｂ」
整数ｍ、好適には、ｍ＞２；
【０１６２】
パラメータＭの良い選択は、Ｍ＝２α（ｂ?１）＋Ｂ−１及びｂ＝Ｂである。システム設計者が、これらのパラメータを選択して、これらを鍵生成デバイスに送信してよい。更に、公開鍵生成器１２０は、電子形式で、以下のパラメータを選択するか、他の方法で取得する：
公開グローバル簡約化多項式Ｎ（ｔ）∈Ｚ２［ｔ］。その次数ｄｅｇ（Ｎ（ｔ））は、Ｍに等しい；
公開個別簡約化多項式Ｑ１（ｔ）、…、Ｑｍ（ｔ）
その２つの変数それぞれにおける次数αの二変数多項式Ｆｉ（  ，  ）の公開セット。各Ｒ（Ｑｉ（ｔ），２）において、係数Ｆｉ，ｊ，ｋ（ｔ）＝Ｆｉ，ｋ，ｊ（ｔ）（１＜ｉ＜ｍ、０＜ｊ、ｋ＜α）を有する二変数多項式Ｆｉ（・，・）。
【０１６３】
鍵のサイズ（Ｂ）とパラメータサイズ（ｂ）とは、異なっていてもよい。これらを等しく選択することは任意選択である。
【０１６４】
公開セットにおける各多項式と、公開個別簡約化多項式Ｑｉ（ｔ）が関連付けられ、またその反対もある。公開セットにおける各特定の多項式Ｆｉ（  ，  ）は、当該特定の多項式Ｆｉ（  ，  ）と関連付けられる公開個別簡約化多項式Ｑｉ（ｔ）を法とする多項式環から取られる係数Ｆｉ，ｊ，ｋ（ｔ）を有する二変数多項式である。多項式は、
【数１７】
0006328333.tif 000018
と示される。
【０１６５】
公開個別簡約化多項式Ｑｉ（ｔ）を選択する良いやり方は、次の通りである。最初に、次数Ｂの多項式γ（ｔ）∈Ｚ２［ｔ］を選択する。次に、すべてが最大でもＭ−α（ｂ−１）−Ｂに等しい次数を有し、かつ、少なくとも１つ（好適にはすべて)がＭ−２α（ｂ−１）−Ｂより大きい次数を有する、ｍ個の多項式β１（ｔ）、…、βｍ（ｔ）∈Ｚ２［ｔ］を選択する。次に、ｍ個の多項式Ｑ１（ｔ）、…、Ｑｍ（ｔ）を定義し、ここで、Ｑｉ（ｔ）＝Ｎ（ｔ）＋βｉ（ｔ）γ（ｔ）である。簡約化多項式についてのこの選択は、秘密鍵復号化デバイスの対称鍵取得器が、公開鍵暗号化デバイスよって使用されたものと同じ対称鍵を、秘密乱数値を復号化一変数多項式に代入することから直接的に取得することを確実にする。なお、公開個別簡約化多項式の次数の下限は、−１として取られる。−１より大きい次数は、次数が少なくとも０であるべきことを意味する。次数は、その結果、最大でもα＊（ｂ−１）−１に等しくなければならない。一実施形態では、公開個別簡約化多項式の少なくとも１つ、又は、すべてが、少なくとも２の次数を有する。
【０１６６】
鍵生成デバイスは、秘密乱数値ｓを｛０，１，…，２ｂ−１｝において、電子形式で取得し、秘密乱数値(１１２、ｓ)を、公開セットの多項式に代入することにより得られる一変数多項式を合計することにより、公開一変数多項式を計算する：
【数１８】
0006328333.tif 000019
【０１６７】
なお、非負整数とｐ変数（この場合は二進）多項式との間の自然マッピングを使用して、ｓがｓ（ｔ）にマッピングされている。即ち、ｓの二進展開の係数をｓ（ｔ）の係数とマッピングする。後者は、直接的に生成されることも可能である。
【０１６８】
既に述べたように、公開鍵暗号化デバイスは、対称鍵取得器、復号化情報生成器及び暗号化ユニットを含む。
【０１６９】
対称鍵取得器は、暗号化乱数値ｒを、｛０，１，…，２ｂ−１｝において、電子形式で取得する。暗号化乱数値は、公開一変数多項式に代入される。即ち、
【数１９】
0006328333.tif 000020
【０１７０】
ここで、結果は、公開グローバル簡約化多項式を法とし、次いで、γ（ｔ）を法として簡約化される。この代入及び簡約化の結果は、形式的な変数（ｔ）における多項式である。これから、対称鍵を様々な態様で取得することができる。例えば多項式は、自然マッピングを使用して、数に変換される。マッピングされた結果又は一連の係数を直接的にハッシュ処理してもよい。鍵の簡約化、拡張、エントロピー増幅等が必要に応じて適用されてよい。暗号化ユニットは、既に述べたように、メッセージを暗号化するために、対称鍵を使用する。
【０１７１】
復号化情報生成器は、暗号化乱数値（ｒ）を、公開セットの多項式(１２２、ｆｉ（ｒ，  ）)に代入することにより得られる一変数多項式を合計することによって、復号化一変数多項式を計算する。
【数２０】
0006328333.tif 000021
【０１７２】
秘密鍵復号化デバイスは、対称鍵取得器及び復号化ユニットを含む。
【０１７３】
秘密鍵復号化デバイスは、
【数２１】
0006328333.tif 000022
から、鍵ｋ（ｒ，ｓ）を計算する。
【０１７４】
興味深いことに、パラメータは、ｋ（ｒ，ｓ）＝ｋ（ｓ，ｒ）を保証する。場合により、暗号化デバイスと同じ導出を使用するこの鍵は、暗号テキストを復号化するために使用される。この場合、更なる再構築された鍵を導出する必要はない。
【０１７５】
二変数多項式Ｆｉ（・,・)は、対称二変数多項式として選択されてもよい。Ａｌｉｃｅが公開する鍵の材料が、
【数２２】
0006328333.tif 000023
であり、ＢｏｂがＡｌｉｃｅに送信する鍵材料が、
【数２３】
0006328333.tif 000024
であるので、これは不要である。Ａｌｉｃｅ及びＢｏｂは共に同じ鍵
【数２４】
0006328333.tif 000025
を計算する。
【０１７６】
図３は、集積回路５００の略ブロック図である。集積回路５００は、プロセッサ５２０と、メモリ５３０と、Ｉ／Ｏユニット５４０とを含む。集積回路５００のこれらのユニットは、バスといった相互接続５１０を介して互いの間で通信することができる。プロセッサ５２０は、本明細書で説明されるような方法を実行するために、メモリ５３０に記憶されるソフトウェアを実行する。このようにして、集積回路５００は、鍵生成デバイス１００、暗号化デバイス２００及び／又は復号化デバイス３００として構成される。メモリ５３０の一部が、必要に応じて、公開鍵、秘密鍵、プレーンメッセージ及び／又は暗号化されたメッセージを記憶してよい。
【０１７７】
Ｉ／Ｏユニット５４０は、デバイス１００、２００又は３００といった他のデバイスと通信するために使用されてよく、例えば公開又は秘密鍵を受信したり、暗号化されたメッセージを送受信したりする。Ｉ／Ｏユニット５４０は、無線通信用のアンテナを含んでよい。Ｉ／Ｏユニット５４０は、有線通信用の電気的インターフェースを含んでよい。
【０１７８】
集積回路５００は、コンピュータ、モバイルフォンといったモバイル通信デバイス等に組み込まれてよい。集積回路５００は更に、例えばＬＥＤデバイスが配置されている照明デバイスに組み込まれてもよい。例えば復号化デバイス３００として構成され、ＬＥＤといった照明ユニットが配置される集積回路５００は、公開鍵で暗号化されたコマンドを受信する。復号化デバイス３００だけが、コマンドを復号化し、実行することができる。例えば暗号化デバイス２００として構成され、ＬＥＤといった照明ユニットが配置される集積回路５００は、公開鍵で暗号化されたステータスメッセージといったメッセージを送信する。公開鍵に対応する秘密鍵へのアクセスを有する復号化デバイス３００だけが、コマンドを復号化し、実行することができる。
【０１７９】
多項式操作は、メモリ５３０に記憶される多項式操作ソフトウェアによって指示されるように、プロセッサ５２０によって行われるが、集積回路５００がオプションの多項式操作デバイス５５０を有するように構成される場合、鍵生成、暗号化及び復号化のタスクがより速い。多項式操作デバイス５５０は、代入及び簡約化演算を実行するハードウェアユニットである。
【０１８０】
図４は、集積回路５００が鍵生成デバイス１００として構成される場合に、メモリ５３０に使用されるメモリレイアウトの略ブロック図である。図４には、ｓといった秘密乱数整数５６２、Ｎといった公開グローバル簡約化整数５６４、ｆｉといった整数係数５８２〜５８６を有する対称二変数多項式、及び、ｑｉといった関連する公開簡約化整数５９２〜５９６が示される。更に、図４では、メモリの２つの部分が、公開鍵を計算するためのワーキングスペースとして確保されている。簡約化結果５６６を使用して、秘密乱数整数５６２を、対称二変数多項式の１つに代入し、公開簡約化整数を法として簡約化する。対称多項式のそれぞれについて、結果が、合計結果５６６に加算され、グローバル整数５６４を法として簡約化される。図４に示されるレイアウトは、ｍ＝３のシステムに適している。
【０１８１】
図４は、整数環について説明されているが、多項式環から係数を取ることも可能である。必要とされるメモリは、対応して適応されるべきである。
【０１８２】
図５は、暗号化システム６００の略ブロック図である。図６は、鍵生成デバイス１００及び復号化デバイス３００で構成される受信ユニット６１０と、暗号化デバイス２００で構成される送信ユニット６４０と、認証局６２０と、公開鍵データベース６３０とを示す。更に、図６は、送信ユニット６４０から受信ユニット６１０に送信される暗号化されたデータ６５０を示す。受信ユニット６１０及び送信ユニット６４０は、ネットワークの一部である。ネットワーク内の任意のデバイスが、対象受信者の公開鍵を使用してメッセージを暗号化することができる。対象受信者は、メッセージを復号化するための秘密鍵を所有している。
【０１８３】
送信ユニット６４０と受信ユニット６１０との間の２者間通信は、次のように行われる。
（１）受信ユニット６１０は、本明細書において説明されたように、その鍵生成デバイス１００を使用して、公開−秘密鍵対（ｅ，ｄ）を選択する。ここでは、ｅは、公開鍵を表し、ｄは、対応する秘密鍵を表す。
（２）次に、受信ユニット６１０は、暗号化鍵ｅを、送信ユニット６４０に送信するが、復号化鍵ｄは秘密にする。
（３）送信ユニット６４０は、ｃ＝Ｅｅ（ｍ）（「暗号文」）を計算することによって、メッセージｍ（「プレーンテキスト」）を受信ユニット６１０に送信することができる。
（４）受信ユニット６１０は、ｃを受信すると、ｍ＝Ｄｄ（ｃ）を計算することによって、元のメッセージを回収することができる。
【０１８４】
ネットワーク暗号化システム６００のより高度な実施形態は、公開鍵データベース６３０及び認証局６２０を使用する。
【０１８５】
受信ユニット６１０は、その公開鍵ｅを、認証局６２０（ＣＡ）に送る。公開鍵データベース６３０は、受信ユニット６１０のユーザのアイデンティティを確認するが、これは厳密には必要ではない。認証局６２０は、認証局６２０の公開鍵を使用して、公開鍵に署名する。認証局６２０は、公開鍵データベース６３０内で、署名された公開鍵を、場合によっては、当該アイデンティティと共に発行する。送信ユニット６４０が、メッセージを、例えばアイデンティティで特定された受信ユニット６１０に送りたい場合、送信ユニット６４０は、公開鍵データベース６３０内の公開鍵を、場合によっては、当該アイデンティティを検索索引として使用して探す。送信ユニット６４０は、認証局６２０の署名を確認する。
【０１８６】
公開セットにおける多項式を対称にすることは、実装を単純化する。公開鍵暗号化システム１００の一実施形態では、公開セット１２２における二変数多項式の少なくとも１つは非対称である。一実施形態では、公開セット１２２におけるすべての多項式が非対称である。
【０１８７】
鍵生成は、秘密乱数値１１２を、セット１２２の多項式の２つの変数のうちの特定の１つに代入するように鍵生成デバイスが構成されることを除いて、上述のように機能する。例えばｆ（ｘ，ｙ）が、セット１２２における二変数多項式のうちの１つであり、また、鍵生成デバイスは、２つの変数のうちの第１の変数を使用する場合、ｆ（ｓ，ｙ）を計算する。合計ステップ（ある場合には）は上述の通りである。暗号化デバイスは、公開一変数多項式１２４を受信する。一変数多項式は、１つの変数しか有さないので、暗号化乱数値２１２をそこに代入することにおいて相違はない。しかし、復号化一変数多項式２２２を計算するために、暗号化デバイスは、暗号化乱数値２１２を、２つの変数のうちの第２の変数、即ち、鍵生成デバイスによって使用されたものとは異なる変数に代入する。上記の例に従うに、暗号化デバイスは、ｆ（ｘ，ｒ）を計算することになる。最終的に、復号化デバイスは、一変数多項式を受信するので、代入に利用可能な変数は１つしかない。
【０１８８】
非対称多項式を使用することは、公開一変数多項式１２４と復号化一変数多項式２２２とが異なる構造を有することを保証するので、安全性を高めることができる。
【０１８９】
本明細書において与えられる、セット１２２における対称多項式を使用するすべての実施形態は、非対称多項式を使用するように変更されてもよい。必要とされる唯一の変更は、復号化一変数多項式２２２が、セット１２２における多項式の２つの変数のうちの一方の変数に代入することから取得される一方で、公開一変数多項式１２４が、セット１２２における多項式の２つの変数のうちの他方の変数に代入することから取得されることを確実にすることである。
【０１９０】
図６ａは、鍵生成方法７００の略フローチャートである。方法７００は、秘密乱数値を有する秘密鍵を生成するステップ７０２と、対称二変数多項式（ｆｉ（  ，  ））の公開セットを電子形式で取得するステップ７０４と、秘密乱数値（ｓ）を公開セットの多項式に代入すること（ｆｉ（ｓ，  ））によって取得される一変数多項式を合計することによって、公開一変数多項式を計算するステップ７０６と、公開一変数多項式及び公開セットを含む公開鍵を生成するステップ７０８とを含む。
【０１９１】
図６ｂは、暗号化方法７１０の略フローチャートである。方法７１０は、暗号化乱数値（ｒ）を電子形式で取得するステップ７１２と、暗号化乱数値（ｒ）を公開一変数多項式に代入することによって、対称鍵（Ｋ）を計算するステップ７１４と、暗号化乱数値（ｒ）を公開セットの多項式に代入すること（ｆｉ（ｒ，  ））によって取得される一変数多項式を合計することによって、復号化一変数多項式を計算するステップ７１６と、再構成された鍵（Ｋ’）が、対称鍵（Ｋ）に等しいかどうかを検証するために、対称鍵（Ｋ）から鍵確認データを計算するステップ７１８と、復号化一変数多項式を含む復号化情報を生成するステップ７２０と、対称鍵でメッセージを暗号化し、当該暗号化されたメッセージを復号化情報に関連付けるステップ７２２とを含む。
【０１９２】
図６ｃは、復号化方法７３０のフローチャートである。方法７３０は、秘密乱数値（ｓ）を、復号化一変数多項式に代入することによって、第１の対称鍵（Ｋ）を再構成するステップ７３２と、再構成された鍵（Ｋ’）が、対称鍵（Ｋ）に等しいかどうかを、鍵確認データから決定するステップ７３４と、等しくない場合は、例えば公開グローバル簡略化整数（Ｎ）又は複数の公開グローバル簡約化整数（Ｎ）を、第１の再構成された鍵（Ｋ’）に加算して、２の鍵長乗（２ｂ）を法として簡約化することによって、第１の再構成された鍵（Ｋ’）から、更なる再構成された鍵を導出するステップ７３６とを含む。ステップ７３４において、鍵確認データから、第１の再構成された鍵（Ｋ’）は、対称鍵（Ｋ）に等しいと決定されると、対称鍵（Ｋ）を用いてメッセージが復号化される（ステップ７３８）。
【０１９３】
当業者には明らかであるように、上記方法を実行する多くの異なるやり方が可能である。例えばステップの順番が変更可能であり、又は、幾つかのステップは、並列で実行されてもよい。更に、他の方法ステップが、ステップ間に挿入されてもよい。挿入されたステップは、本明細書に説明されたような方法の改良であってもよいし、又は、方法に関連していなくてもよい。
【０１９４】
本発明による方法は、プロセッサシステムに、方法７００、７１０及び７３０を行わせるための命令を含むソフトウェアを使用して実行されてよい。ソフトウェアは、システムの特定のサブエンティティによって行われるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー（登録商標）、メモリ等といった適切な記憶媒体に記憶されてよい。ソフトウェアは、有線若しくは無線によって、又は、例えばインターネットであるデータネットワークを使用して、信号として送信されてもよい。ソフトウェアは、ダウンロード及び／又はサーバ上でのリモート使用のために利用可能にされてもよい。
【０１９５】
当然のことながら、本発明は、コンピュータプログラム、特に本発明を実現するように適応される担体上又は担体内のコンピュータプログラムにも拡張される。プログラムは、部分的にコンパイルされた形式のソースコード、オブジェクトコード、コード中間ソース及びオブジェクトコードの形式、又は、本発明による方法の実施における使用に適した任意の他の形式であってよい。コンピュータプログラムプロダクトに関する一実施形態は、上記方法の少なくとも１つの方法の処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されても、及び／又は、静的若しくは動的にリンクされる１つ以上のファイルに記憶されてもよい。コンピュータプログラムプロダクトに関する別の実施形態は、上記システム及び／又はプロダクトの少なくとも１つについての手段のそれぞれに対応するコンピュータ実行可能命令を含む。
【０１９６】
なお、上記実施形態は、発明を例示するものであって、限定するものではない。当業者であれば、多くの代替実施形態をデザインすることができるであろう。
【０１９７】
請求項において、括弧内に置かれる参照符号は、その請求項を限定するものと解釈されるべきではない。「含む」との動詞及びその活用形の使用は、請求項に記載された要素又はステップ以外の要素又はステップの存在を排除するものではない。ある要素に先行する「ａ」又は「ａｎ」との冠詞は、かかる要素が複数存在することを排除するものではない。本発明は、いくつかの別個の要素を含むハードウェアによって実現されてもよいし、適切にプログラミングされたコンピュータによって実現されてもよい。いくつかの手段を列挙した装置の請求項において、かかる手段の幾つかが、全く同一のハードウェアアイテムによって実現されてもよい。特定の手段が互いに異なる従属請求項に記載されているということだけで、これらの手段の組合せを、有利に用いることができないことを示すものではない。
【０１９８】
好適な実施形態は、以下の通りにまとめることができる。
【０１９９】
実施形態１
公開鍵暗号化デバイスにおける使用のための公開鍵１２６と、秘密鍵復号化デバイスにおける使用のための対応する秘密鍵１１４とを生成する鍵生成デバイス１００であって、
秘密乱数値１１２、ｓを電子形式で取得し、
上記秘密乱数値１１２を含む上記秘密鍵１１４を生成する、秘密鍵生成器１１０と、
二変数多項式ｆｉ（  ，  ）の公開セット１２２を電子形式で取得し、
上記秘密乱数値１１２、ｓを上記公開セット１２２の上記二変数多項式に代入する（ｆｉ（ｓ，  ））ことによって取得される一変数多項式を合計することによって、公開一変数多項式１２４を計算し、
上記公開一変数多項式１２４及び上記公開セット１２２を含む上記公開鍵１２６を生成する、公開鍵生成器１２０と、
を含み、
異なる可換環が、二変数多項式の上記公開セットの各多項式に関連付けられ、
上記秘密乱数値ｓを上記公開セットの特定の多項式に代入すること（ｆｉ（ｓ，  ））によって取得される上記一変数多項式は、上記特定の一変数多項式と関連付けられる上記可換環において正準形に簡約化される、鍵生成デバイス。
【０２００】
実施形態２
公開鍵を使用して電子メッセージ４１０を暗号化する公開鍵暗号化デバイス２００であって、上記公開鍵は、公開一変数多項式と、二変数多項式ｆｉ（  ，  ）の公開セットとを含み、異なる可換環が、二変数多項式の上記公開セットの各多項式に関連付けられ、上記公開鍵暗号化デバイスは、
暗号化乱数値２１２、ｒを電子形式で取得し、
上記暗号化乱数値２１２、ｒを上記公開一変数多項式に代入することによって、対称鍵２１４、Ｋを計算する、対称鍵取得器２１０と、
上記暗号化乱数値ｒを、上記公開セット１２２の上記二変数多項式に代入すること（ｆｉ（ｒ，  ））によって取得される一変数多項式を合計することによって、復号化一変数多項式２２２を計算し、
上記復号化一変数多項式２２２を含む復号化情報４２４を生成する、復号化情報生成器２２０と、
上記対称鍵２１４で、上記電子メッセージ４１０を暗号化し、
暗号化された上記電子メッセージ４２２を上記復号化情報４２４と関連付ける、暗号化ユニット２３０と、
を含み、
上記暗号化乱数値ｒを、上記公開セットの特定の多項式に代入すること（ｆｉ（ｒ，  ））によって取得される上記一変数多項式は、上記特定の一変数多項式と関連付けられる上記可換環において正準形に簡約化される、公開鍵暗号化デバイス。
【０２０１】
実施形態３
実施形態２の上記公開鍵暗号化デバイスによって取得可能である復号化情報４２４と、秘密鍵１１４とを使用して、暗号化されたメッセージ４２２を復号化する秘密鍵復号化デバイス３００であって、
上記復号化情報は、復号化一変数多項式２２２を含み、上記秘密鍵は、秘密乱数値１１２、ｓを含み、
上記秘密鍵復号化デバイスは、
上記秘密乱数値ｓを、上記復号化一変数多項式２２２に代入することによって、対称鍵３１２、Ｋ’を再構成する対称鍵取得器３１０と、
上記再構成された対称鍵３１２、Ｋ’で、上記暗号化されたメッセージを復号化する復号化ユニット３２０と、
を含む、秘密鍵復号化デバイス。
【０２０２】
実施形態４
二変数多項式ｆｉ（  ，  ）の上記公開セットは、対称二変数多項式しか含まないか、及び／又は、
二変数多項式（ｆｉ（  ，  ））の上記公開セットは、少なくとも２つの異なる二変数多項式を含むか、及び／又は、
上記公開セットの少なくとも１つの多項式は、上記少なくとも１つの多項式の２つの変数のうちの１つの変数において、少なくとも２の次数を有する、実施形態２に記載の公開鍵暗号化デバイス。
【０２０３】
実施形態５
上記公開一変数多項式は、上記公開一変数多項式の係数のリストとして正準形で表され、
上記復号化一変数多項式は、上記復号化一変数多項式の係数のリストとして正準形で表される、実施形態２に記載の公開鍵暗号化デバイス。
【０２０４】
実施形態６
公開グローバル簡約化整数Ｎが、上記公開セットと関連付けられ、公開個別簡約化整数ｑｉが、上記公開セットの各多項式と関連付けられ、
上記秘密乱数値及び上記暗号化乱数値ｒは、整数であり、上記公開セットにおける各多項式は、整数係数を有する二変数多項式ｆｉ（  ，  ）であり、上記公開一変数多項式及び上記復号化一変数多項式は、整数係数を有する一変数多項式であり、
上記対称鍵ｋを計算することは、上記暗号化乱数値ｒを、上記公開一変数多項式に代入し、上記グローバル簡約化整数Ｎを法として簡約化することを含み、
上記復号化一変数多項式を計算することは、上記公開セットの各多項式について、上記暗号化秘密乱数値ｒを、上記多項式に代入ｆｉ（ｒ，  ））し、上記多項式に関連付けられている上記公開個別簡約化整数ｑｉを法として簡約化することによって一変数多項式のセットを取得することと、一変数多項式の上記セットを合計し、上記グローバル簡約化整数Ｎを法として簡約化することとを含む、実施形態２に記載の公開鍵暗号化デバイス。
【０２０５】
実施形態７
上記公開グローバル簡約化整数Ｎは、２（α＋２）ｂ−１よりも大きく、及び／又は、２（α＋２）ｂよりも小さい奇数であり、ここで、αは、上記公開セットにおける上記多項式の２つの変数のうちの１つの変数における最高次数を表し、ｂは、鍵長を表し、
各公開個別簡約化整数ｑｉについて、上記公開グローバル簡約化整数Ｎから上記公開個別簡約化整数ｑｉを減算したものは、２の鍵長乗の倍数（ｑｉ＝Ｎ−βｉ２ｂ、１＜βｉ＜２ｂ）であり、かつ、２の２倍の鍵長乗未満であり、
上記対称鍵Ｋを計算することは更に、２の鍵長乗２ｂを法として簡約化することを含む、実施形態６に記載の公開鍵暗号化デバイス。
【０２０６】
実施形態８
上記復号化情報は、上記対称鍵Ｋから計算され、再構成された鍵Ｋ’が上記対称鍵Ｋに等しいかどうかを確認するための鍵確認データを含み、上記復号化情報は、上記鍵確認データを含み、
上記対称鍵Ｋを再構成することは、
上記秘密乱数値ｓを、上記復号化一変数多項式に代入し、上記公開グローバル簡約化整数Ｎを法として簡約化したことの結果から、第１の再構成された鍵Ｋ’を導出し、
上記鍵確認データから、上記第１の再構成された鍵Ｋ’が上記対称鍵Ｋに等しいかどうかを決定し、等しくない場合に、上記第１の再構成された鍵Ｋ’から、更なる再構成された鍵を導出することを含む、実施形態３に記載の秘密鍵復号化デバイス。
【０２０７】
実施形態９
上記対称鍵Ｋを再構成することは、上記秘密乱数値ｓを、上記復号化一変数多項式に代入し、上記公開グローバル簡約化整数Ｎを法として簡約化することを含み、更なる再構成された鍵を導出することは、上記公開グローバル簡約化整数Ｎ又は複数の上記公開グローバル簡約化整数Ｎを、上記第１の再構成された鍵Ｋ’に追加し、２の鍵長乗２ｂを法として簡約化することを含む、実施形態８に記載の秘密鍵復号化デバイス。
【０２０８】
実施形態１０
公開グローバル簡約化多項式Ｎ（ｔ）が、上記公開セットと関連付けられ、公開個別簡約化多項式Ｑｉ（ｔ）が、上記公開セットの各多項式と関連付けられ、
上記秘密乱数値ｓ（ｔ）及び上記暗号化乱数値ｒ（ｔ）は、多項式であり、上記公開セットにおける各特定の多項式Ｆｉ（  ，  ）は、上記特定の多項式Ｆｉ（  ，  ）と関連付けられる上記公開個別簡約化多項式Ｑｉ（ｔ）を法とする上記多項式環から取られる係数Ｆｉ，ｊ，ｋ（ｔ）を有する二変数多項式であり、
上記公開一変数多項式及び上記復号化一変数多項式は、多項式係数を有し、
上記対称鍵Ｋを計算することは、上記暗号化乱数値ｒ（ｔ）を、上記公開一変数多項式に代入し、上記グローバル簡約化多項式Ｎ（ｔ）を法として簡約化することを含み、
上記復号化一変数多項式を計算することは、
上記公開セットの各多項式について、上記秘密乱数値ｒ（ｔ）を、上記多項式Ｆｉ（  ，ｒ）に代入し、上記多項式に関連付けられている上記公開個別簡約化多項式Ｑｉ（ｔ）を法として簡約化することによって一変数多項式のセットを取得し、一変数多項式の上記セットを合計することを含む、実施形態２に記載の公開鍵暗号化デバイス。
【０２０９】
実施形態１１
公開鍵暗号化方法における使用のための公開鍵と、秘密鍵復号化方法における使用のための対応する秘密鍵とを生成する鍵生成方法であって、
秘密乱数値ｓを電子形式で取得するステップと、
上記秘密乱数値を含む上記秘密鍵を生成するステップと、
二変数多項式ｆｉ（  ，  ）の公開セットを電子形式で取得するステップと、
上記秘密乱数値ｓ上記公開セットの上記二変数多項式に代入することｆｉ（ｓ，  ）によって取得される一変数多項式を合計することによって、公開一変数多項式を計算するステップと、
上記公開一変数多項式及び上記公開セットを含む上記公開鍵を生成するステップと、
を含み、
異なる可換環が、二変数多項式の上記公開セットの各多項式と関連付けられ、
上記秘密乱数値ｓを上記公開セットの特定の多項式に代入することｆｉ（ｓ，  ）によって取得される上記一変数多項式は、上記特定の一変数多項式と関連付けられる上記可換環において正準形に簡約化される、方法。
【０２１０】
実施形態１２
公開鍵を使用して電子メッセージを暗号化する公開鍵暗号化方法であって、上記公開鍵は、公開一変数多項式と、二変数多項式ｆｉ（  ，  ）の公開セットとを含み、異なる可換環が、二変数多項式の上記公開セットの各多項式と関連付けられ、上記方法は、
暗号化乱数値ｒを電子形式で取得するステップと、
上記暗号化乱数値ｒを上記公開一変数多項式に代入することによって、対称鍵Ｋを計算するステップと、
上記暗号化乱数値ｒを、上記公開セットの上記多項式に代入することｆｉ（ｒ，  ）によって取得される一変数多項式を合計することによって、復号化一変数多項式を計算するステップと、
上記復号化一変数多項式を含む復号化情報を生成するステップと、
上記対称鍵で、上記電子メッセージを暗号化するステップと、
暗号化された上記電子メッセージを上記復号化情報と関連付けるステップと、
を含み、
上記暗号化乱数値ｒを、上記公開セットの特定の多項式に代入することｆｉ（ｒ，  ）によって取得される上記一変数多項式は、上記特定の一変数多項式と関連付けられる上記可換環において正準形に簡約化される、方法。
【０２１１】
実施形態１３
実施形態１２の方法によって取得可能である復号化情報と、秘密鍵とを使用して、暗号化されたメッセージを復号化する秘密鍵復号化方法であって、
上記復号化情報は、復号化一変数多項式を含み、上記秘密鍵は、秘密乱数値ｓを含み、上記方法は、
上記秘密乱数値ｓを、上記復号化一変数多項式に代入することによって、対称鍵Ｋを再構成するステップと、
上記再構成された対称鍵Ｋで、上記暗号化されたメッセージを復号化するステップと、
を含む、方法。
【０２１２】
実施形態１４
コンピュータ上で実行された場合に、実施形態１１乃至１３の何れか一項の方法に記載のすべてのステップを行うコンピュータプログラムコード手段を含むコンピュータプログラム。
【０２１３】
実施形態１５
コンピュータ可読媒体上に具現化される実施形態１４に記載のコンピュータプログラム。
【０２１４】
図１乃至５における参照符号のリスト
１００  鍵生成デバイス
１１０  秘密鍵生成器
１１２  秘密乱数値
１１４  秘密鍵
１２０  公開鍵生成器
１２２  二変数多項式の公開セット
１２４  公開一変数多項式
１２６  公開鍵
２００  公開鍵暗号化デバイス
２１０  対称鍵取得器
２１２  暗号化乱数値
２１４  対称鍵
２２０  復号化情報生成器
２２２  復号化一変数多項式
２３０  暗号化ユニット
３００  秘密鍵復号化デバイス
３０１  秘密鍵復号化デバイス
３１０  対称鍵取得器
３１２  再構成された対称鍵
３２０  復号化ユニット
４００  暗号化システム
４１０  電子メッセージ
４２０  メッセージブロック
４２２  暗号化されたメッセージ
４２４  復号化情報
４３０  暗号化システム
５００  集積回路
５１０  バス
５２０  プロセッサ
５３０  メモリ
５４０  Ｉ／Ｏユニット
５５０  多項式操作デバイス
５６２  秘密乱数整数
５６４  公開グローバル簡約化整数
５６６  簡約化結果
５６８  合計結果
５８２〜５８６  整数係数を有する対称二変数多項式
５９２〜５９６  公開簡約化整数
６００  暗号化システム
６１０  受信ユニット
６２０  認証局
６３０  公開鍵データベース
６４０  送信ユニット
６５０  暗号化されたデータ
【図１】
0006328333.tif 000026
【図２】
0006328333.tif 000027
【図３】
0006328333.tif 000028
【図４】
0006328333.tif 000029
【図５】
0006328333.tif 000030
【図６ａ】
0006328333.tif 000031
【図６ｂ】
0006328333.tif 000032
【図６ｃ】
0006328333.tif 000033