JP2003535362A - 暗号多項式の解読 - Google Patents

暗号多項式の解読

Info

Publication number
JP2003535362A
JP2003535362A JP2001588160A JP2001588160A JP2003535362A JP 2003535362 A JP2003535362 A JP 2003535362A JP 2001588160 A JP2001588160 A JP 2001588160A JP 2001588160 A JP2001588160 A JP 2001588160A JP 2003535362 A JP2003535362 A JP 2003535362A
Authority
JP
Japan
Prior art keywords
polynomial
message
cryptographic
coefficient
decrypting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001588160A
Other languages
English (en)
Inventor
エグモント ゲイリンガー フェリックス
シェルトン ダニエル
Original Assignee
タオ グループ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by タオ グループ リミテッド filed Critical タオ グループ リミテッド
Publication of JP2003535362A publication Critical patent/JP2003535362A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

(57)【要約】 秘密鍵fを使用して暗号多項式eを解読する方法であって、(a)試行多項式a=f*e(mod q)、qを整数として、計算すること、(b)試行多項式aに基づいて、多項式eが正しく復号されたか否か決定し、正しく復号をされていなければ、(i)試行多項式のaのどの係数が、復号失敗の原因となったであろうかを決定し、(ii)前記係数を調整して新しい試行多項式を定義し、(iii)新しい試行多項式を使用して暗号多項式eの復号を試みることを備えた方法。この方法は、特に、公開鍵暗号システムに応用することができ、さらに、多項式ベースのシステムに応用することができる。

Description

【発明の詳細な説明】
【0001】 本発明は、暗号多項式を解読する方法に関する。特に、これに限らないが、公
開鍵暗号システムに関する。
【0002】 本発明は、様々な態様において、NTRU PCT特許出願WO 98/08
323(「NTRU特許出願」)に開示されている各種暗号化および暗号解読ア
ルゴリズムとともに使用するのが好ましい。ただし、後述のまたは請求項に定義
された本発明の態様は、特定の文脈で使用することに制限されないことを理解す
べきである。
【0003】 本発明は、様々な態様において、後述の方法を実行するコンピュータプログラ
ム、このようなコンピュータプログラムを表すデータストリーム、およびこのよ
うなコンピュータプログラムを伝送する物理的キャリアにまで拡張される。本発
明は、さらに、このような方法を実行するように適合され、または構成された装
置およびシステムにも拡張される。
【0004】 本発明の一態様では、秘密鍵fを使用して暗号多項式eを解読する方法が提示
されており、これは、 (a)qを整数、a=f*e(mod q)として、試行多項式aを計算すること、 (b)試行多項式aに基づいて、多項式eが正しく復号されたか否かを決定し
、正しく復号されていなければ、 (i)試行多項式aのどの係数が、復号の失敗の原因となったであろうかを
決定し、 (ii)係数を調整して新しい試行多項式を定義し、および、 (iii)新しい試行多項式を使用して暗号多項式eの復号を試みること を備えた。
【0005】 このアプローチは、個々の誤りの識別を試み、できる限り訂正しようとするも
のであり、個々の誤りを追跡せずに、試行多項式a全体を一度に訂正しようとす
る従来技術のアプローチに比べて、効率の点で著しく向上する。
【0006】 さらに効率を高めるために、アルゴリズムは、好ましくは、試行多項式aのど
の係数が、復号の失敗の原因となったであろうかを、演繹的に決定すること試み
る(発生時に)。また、好ましくは、復号の失敗の原因であることの各々の期待
値に応じて、係数を並べ替える。次に、最大から最小への期待値の順序で係数を
取り出して、1つずつ調整する。調整の後で、新しい試行多項式(調整済み)に
基づいて、さらに暗号多項式の復号を試みる。それが失敗した場合、次の係数を
試みる。この作業を、暗号多項式が復号されるか、または復号の試行を放棄する
まで繰り返す。
【0007】 代替の構成では、多項式のさらに複雑な順序付けを計算し、2以上の係数が正
しくない可能性を許容することができる。このアプローチでは、単独またはグル
ープで、復号の失敗の原因であることの各々の期待値に応じて、多項式内の係数
を並べ替える。最大の期待値を有する係数または係数のグループを調整して、新
しい試行多項式を生成する。それが失敗した場合、次の係数または係数のグルー
プを取り出して、適切な調整を行う。このプロセスを、暗号多項式が適切に復号
されるか、または復号の試行を放棄するまで繰り返す。
【0008】 係数または係数のグループが復号失敗の原因であることの演繹的な期待値を、
各々の係数値に応じて決定することができる。より具体的には、期待値は、各々
の係数値と事前定義された係数値との近接、または事前定義された最大および最
小の要求された値に応じて決定することができる。試行多項式を、qを法として
正の最小剰余に還元するとき、事前定義された係数値は、q/2を取ることがで
きる。あるいは、試行多項式を、qを法として絶対最小剰余に還元するとき、期
待値は、係数とq/2、および/または係数と−q/2+1との近接に基づくこ
とができる。あるいは、値q/2−1と−q/2の近接に基づくこともできる。
【0009】 係数値と事前定義された値との近接を、期待値の順序を定義する、または定義
するのを補助する誤り訂正ルックアップテーブルへのエントリポイントとして使
用することができる。好ましい実施形態では、多項式aは、0を中心としており
、期待値は係数の絶対値に基づく。
【0010】 係数は、整数値を加算し、または整数値を減算して調整することができる。該
当する場合、係数を上下に動かす量を、元のメッセージを復号するのに使用した
パラメータに基づいてあらかじめ決定することができる。典型的には、正確な所
要移動量を、移動の方向に沿ってあらかじめ計算することができる。
【0011】 本発明の他の態様により、暗号化されたメッセージの妥当性を確認する方法が
提示されており、これは、 (a)メッセージをメッセージ多項式として表すこと、 (b)メッセージ多項式を暗号化して暗号多項式を形成すること、 (c)メッセージ多項式と暗号多項式を表す入力をともにハッシングしてハッ
シュ出力を生成すること、および、 (d)暗号多項式により定義されている暗号化メッセージとハッシュ出力に基
づく情報の両方を受信者に送信することを備えた。
【0012】 ハッシュ関数の入力は、連結するのが好ましい。
【0013】 好ましくは、ハッシュ出力は、暗号化されたメッセージと関連して受信者に平
文として送信されるが(例えば、メッセージと連結されて)、別法として、ハッ
シュ出力を、送信する前に何らかの方法で操作することもできる(例えば、セキ
ュリティが著しく向上するわけではないが、それ自体を暗号化することもできる
)。
【0014】 メッセージを受け取ると、受信者は、受信した暗号多項式と復号されたメッセ
ージ多項式に基づいて、再計算された出力と突き合わせてハッシュ出力をチェッ
クすることにより、送信された暗号化メッセージの妥当性を確認することができ
る。2つの出力が一致した場合、復号されたメッセージを正しいものとして受け
入れることができる。一致しない場合、復号されたメッセージは、拒絶されなけ
ればならない。
【0015】 暗号多項式は、送信の前に、およびハッシュ関数に入力する前に、複数のバイ
トにまとめられたビット列により表すことができる。同様に、暗号多項式を、ビ
ット列で表すことができ(好ましくは1つの係数につき2ビット)、これらを同
様にハッシュされる前に複数のバイトにまとめることができる。
【0016】 この方法は、多項式ベースの暗号システムに制約されてはおらず、一般的には
暗号化されたメッセージの妥当性確認を行う方法にも拡張でき、これは、 (a)メッセージ文を暗号化して暗号文を形成すること、 (b)メッセージ文と暗号文を表す入力をともにハッシングしてハッシュ出力
を生成すること、および、 (c)暗号文により定義されている暗号化メッセージとハッシュ出力に基づく
情報の両方を受信者に送信することを備えた。
【0017】 メッセージ文(平文メッセージ)と暗号文をともにハッシングすることと、ハ
ッシュ値を受信者に送信することにより、攻撃者がメッセージ文または暗号文の
いずれかを検出せずに変更することを実質的に不可能にする。いずれかが変更さ
れると、受信者によって生成された対応するハッシュが一致しなくなり、システ
ムは、好ましくはそのメッセージを拒絶する。この情報が攻撃者に渡るのを防ぐ
ために、好ましいシステムでは、受信された暗号文が有効か否かを送信者に知ら
せない。
【0018】 平文メッセージは、好ましい実施形態では、バイト列からなる2進数表現でよ
く、各バイトは、安全に送信する必要のあるメッセージ内の英数字またはその他
の文字を表す。
【0019】 本発明の他の態様では、複数の送信攻撃から暗号システムを防御する方法が提
示されており、これは、 (a)暗号化される平文メッセージに暗号鍵をkとする保護暗号を適用して、
保護されたメッセージを出力すること、 (b)保護されたメッセージと暗号鍵kから暗号化入力メッセージを生成する
こと、および、 (c)入力メッセージを暗号化することを備えた。
【0020】 この方法は、同一メッセージが複数回送信されたとしても、毎回予測できない
形で、暗号化される文が異なるようにする。
【0021】 入力メッセージは、好ましくは、保護されたメッセージと暗号鍵とを連結する
ことにより生成される。暗号鍵は、入力メッセージの第1の部分、または入力メ
ッセージの最後の部分である。あるいは、暗号鍵を他の都合のよい方法で保護さ
れたメッセージと組み合わせ、暗号化入力メッセージを生成することもできる。
唯一必要なのは、受信されたメッセージが受信者によって復号されたときに、受
信者が暗号鍵を抽出して、保護されたメッセージから平文メッセージを復元でき
ることである。連結は、保護されたメッセージとともに暗号鍵を送信し、受信者
が簡単に利用できるようにする最も容易で最も便利な手段にすぎない。
【0022】 好ましくは、新しい平文メッセージごとに、暗号鍵をランダムに、または少な
くとも実質的にランダムに再生成する。暗号鍵を、適当なシード値を与えた疑似
乱数発生器を使って生成するか、または別法として、例えば、キーストロークや
マウスの移動のタイミングから導くことができるような「真のランダム」エント
ロピにより生成することができる。
【0023】 保護された暗号は、単純なストリーム暗号とすることができる。都合のよいア
プローチでは、暗号鍵を、疑似乱数の出力列を生成する疑似乱数発生器にシード
値を与えることに使用する。この数列の中の数を、平文メッセージの個々の要素
に適用して、保護されたメッセージを提供する。例えば、これは、平文メッセー
ジを表す数値に疑似乱数を加えたり引いたりして実行する。
【0024】 最も好ましい実施形態では、平文メッセージは2進数列として表され、暗号鍵
をシード値として、疑似乱数ビット列を生成するように疑似乱数発生器を配列す
る。平文メッセージのビットを、疑似乱数ビットとXORをとり、保護されたメ
ッセージを出力する。このようなアプローチにおいて、受信者は、受信したメッ
セージを解読した後で、単に暗号鍵kを抽出し、その暗号鍵を使用して乱数発生
器の初期状態を設定する。乱数発生器を使用して、保護されたメッセージを生成
するために最初に使用したのと同じ乱数ビット列を生成することができる。次に
、単に疑似乱数ビット列と受信した保護されたメッセージのビットのXORをと
ることにより平文メッセージを復元することができる。
【0025】 平文メッセージは、好ましい実施形態では、バイト列からなる2進数表現でよ
く、各バイトは、安全に送信する必要のあるメッセージ内の英数字またはその他
の文字を表す。
【0026】 入力メッセージは、好ましくは、公開鍵暗号、例えば多項式ベースの暗号を使
用して暗号化する。ただし、他の暗号、例えば楕円曲線技術に基づく暗号を使用
することもできる。
【0027】 本発明の他の態様によれば、疑似乱数発生器は、 (a)エントロピ入力を受け取り、各々のハッシュ出力を生成することができ
る複数の第1層ハッシング手段と、 (b)各々の第1層ハッシュ出力を入力として受け取り、疑似乱数を出力とし
て生成する第2層ハッシング手段とを備えた。
【0028】 第1層ハッシング手段の各々は、好ましくは、追加のエントロピ入力を必要に
応じて、必要なときに呼び出すことができる。あるいは、追加のエントロピ入力
を、ブロックで、一度に第1層ハッシング手段のすべてに供給することができる
【0029】 さらに疑似乱数が必要な場合には、第1層ハッシング手段の1つは、好ましく
は、再ハッシュ(re-hash)を計算し、新しいハッシュ出力を生成する。前述の
新しいハッシュ出力を、第2層ハッシング手段に渡し、そこで、ハッシュ出力を
使用してさらに疑似乱数を生成する。好ましくは、第2層ハッシング手段は、他
の第1層ハッシング手段により、すでに供給されているハッシュ出力とともに新
しいハッシュ出力を取り込み、すべてのハッシュ出力をまとめてハッシングして
、さらに疑似乱数を生成する。
【0030】 好ましくは、再ハッシュを実行する第1層ハッシング手段の1つは、再ハッシ
ュの一部として、すでに得られているハッシュ出力と関連するカウンタ手段から
の他の入力の両方を含む。これにより、再ハッシュした出力が、毎回異なること
になる。
【0031】 好ましくは、第1層ハッシング手段は、さらなる疑似乱数を生成すると必ず、
例えば次々に疑似乱数を選択することにより、利用可能な複数の第1層ハッシン
グ手段から変わる。あるいは、第1層ハッシング手段をランダムに選択すること
もできる。
【0032】 カウンタ手段を、第1層ハッシング手段の各々に用意することができ、あるい
は、単一のカウンタ手段を使用して、カウンタ入力を第1層ハッシング手段のす
べてに供給することもできる。
【0033】 第1層および第2層ハッシング手段を、ソフトウェアによるハッシュ関数、好
ましくはソフトウェアのハッシュ関数オブジェクトとして実現することができる
。あるいは、ハッシング手段をハードウェアで実現することもできる。
【0034】 本発明は、第1層ハッシング手段へエントロピを供給するエントロピプールを
含む疑似乱数発生器にも拡張する。エントロピプールが供給されると、これは、
サブプールに分割され、各々のサブプールは、各々の第1層ハッシング手段にエ
ントロピを供給するように配列される。
【0035】 さらに疑似乱数を生成するとき、第2層ハッシング手段では、入力として新し
いハッシュ出力だけでなく、第1層ハッシング手段の1つとは別の第1層ハッシ
ング手段からの前回のハッシュ出力を受け取ることができる。前回のハッシュ出
力および新しいハッシュ出力を連結して、第2層ハッシング手段への入力として
使用することができる。
【0036】 本発明は、より一般的には、多層システムにも拡張される。例えば、3層シス
テムにおいて、疑似乱数出力は、複数の第2層ハッシング手段によって供給され
る第3層ハッシング手段により提供される。これらのハッシング手段は、それ自
体、複数の第1層ハッシング手段によって供給される。第1層ハッシング手段は
、必要に応じてエントロピ入力を受け取る。他の類似の多層システムももちろん
考えられる。
【0037】 本発明は、さらに、疑似乱数を生成する対応する方法にも拡張される。例えば
、疑似乱数を生成する方法であって、 (a)エントロピ入力を複数の第1層ハッシュ関数に供給し、各々の複数のハ
ッシュ出力を生成すること、および、 (b)ハッシュ出力を入力として第2層ハッシュ関数に供給し、出力として疑
似乱数を生成することを備えた方法にも拡張される。
【0038】 本発明の他の態様では、デジタルメッセージの終わりを識別する方法が提示さ
れており、これは、 (a)第1の種類の複数のメッセージ要素から第1の文字列を構成し、メッセ
ージの要素の1つは、メッセージの終わりの要素を定義し、その後に第1の種類
の0またはそれ以上の非メッセージ要素を続けること、 (b)変換関数を第1の文字列に適用し、第2の種類の複数の要素を備えた第
2の文字列に変換し、変換関数は、すべての可能な第2の種類の要素の組合せに
より定義される領域よりも小さい出力領域に、可能なすべての文字列をマップす
るように配列されること、および、 (c)組合せにより変換関数の出力空間の外に置かれる第2の種類の複数の要
素からメッセージの終わりの要素の位置を識別するメッセージマーカの終わりを
選択することを備えた。
【0039】 第1および/または第2の文字列を、例えば、データストリームとして、要素
ごとに処理することができるが、必ずしもそうする必要はない。文字列は、あら
ゆる点で双方向なので、もちろん、第1の文字列がデータストリームとして送信
されるときに、「その後に続く」という表現は、必ずしも非メッセージ要素が必
ずメッセージ要素の後に一時的に続く必要があることを意味しないし、まったく
容易に、一時的にメッセージ要素の前に来ることがあることを理解されるであろ
う。
【0040】 変換関数は、考えられるすべての第1の文字列を、考えられるすべての第2の
種類の要素の組合せにより定義されている空間よりも小さい出力空間にマップす
るように定められており、これにより変換関数でアクセスできない「使用不可能
」空間が定義される。メッセージマーカの終わりは、組み合により「アクセス不
可能」な空間内に収まる第2の種類の複数の要素から選択される。
【0041】 好ましくは、第1の文字列は2進要素の列であり、第2の文字列は3進要素の
列である。最も好ましい実施形態では、変換関数は、19個の2進要素を12個
の3進要素に変換するように定められている。メッセージが19個の2進要素よ
りも長い場合(通常はそうである)、まず19個の要素からなるブロックに分け
、それぞれのブロックを互いに別々に処理する。最後のブロックは、メッセージ
が入っていなければ、非メッセージ要素で埋めることができる。
【0042】 メッセージマーカの終わりは、好ましくは、第2の文字列の長さと同じ長さと
する。特に、好ましい実施形態では、メッセージマーカの終わりは、12個の3
進要素を含む。
【0043】 本発明のより一般的な態様では、変換関数は、一方の基底の要素から異なる基
底の要素に変換することができる。好ましくは、この関数への入力は、関数から
の出力(例えば、3進)に比べて低い基底(例えば、2進)を持つが、高い基底
を持つこともできる。
【0044】 第2の文字列が作成されると、例えば、これをメッセージマーカの終わりと連
結して、第3の文字列を形成することができる。この方法を暗号化の文脈で使用
すると、第3の文字列を暗号化して、受信者に送信することができる。
【0045】 変換関数の出力空間の外にある空間は、複数の部分に分割することができ、各
々の部分は第1の文字列内の位置を表し、メッセージの終わりの要素の位置を、
対応する部分に入るメッセージマーカの終わりを選択することにより識別するこ
とができる。好ましい実施形態では、この空間は、19個の部分に分割され、各
々の部分は、第1の2進文字列内の位置の1つを表す。
【0046】 このような配列において、メッセージマーカの終わりを、その部分に入る可能
なマーカのグループから実質的にランダムに選択することができる。
【0047】 好ましくは、第1の文字列内で、メッセージの終わり要素は、もしあるとすれ
ば、非メッセージ要素のすぐ隣に配置する。しかし、これは本質的なことではな
く、例えば、非メッセージ要素を、非メッセージ要素から一定の要素数だけ常に
分離することを考えることもできる。この一定の要素数には、特定のアプリケー
ションでは、毎回送信する必要のあるヘッダまたはその他の情報を格納すること
もできる。必要なのは、メッセージの終わり要素の位置が、メッセージマーカの
終わりから一意に決定できるということだけである。
【0048】 本発明は、そのような方法を実行するコンピュータプログラム、そのようなコ
ンピュータプログラムを伝送する物理的キャリア、およびそのようなキャリアを
表すデータストリームにまで拡張される。
【0049】 本発明はさらに、上記の方法を使用して、メッセージの終わりを識別すること
を含むデジタルメッセージを暗号化する方法に拡張される。好ましくは、暗号化
は、暗号化された情報を受信者に渡す前に第3の文字列を暗号化するステップを
含む。
【0050】 本発明の他の態様では、デジタルメッセージの終わりを判別する方法が提示さ
れており、これは、 (a)逆変換関数を、第2の種類の複数の要素を含む第3の文字列に適用し、
逆変換関数は、入力として第2の種類の複数の要素を受け取り、それを第1の種
類の複数の要素に変換し、関数の出力が所定の値よりも第1の種類のより有意な
要素を有するとき、関数への入力として受け取られた複数の要素が、ともにメッ
セージマーカの終わりを備えたことを決定し、および、 (b)第1の文字列として、メッセージマーカの終わりを表していた出力の部
分を除く関数の出力を受け取り、メッセージマーカの終わりに従ってメッセージ
の終わり要素の第1の文字列内の位置を判別することを備えた。
【0051】 これは、本質的に、メッセージの終わりを識別する上記の方法の逆を表す。こ
の方法は、受け取った情報からメッセージマーカの終わりを抽出し、それから、
メッセージの最後の要素の位置を判別する必要のある受信者が使用する。その情
報を使用して、メッセージの全範囲を判別して、送信されたメッセージを抽出す
ることができる。
【0052】 好ましくは、逆変換関数は、入力として12個の3進要素を受け取り、出力と
して19個の2進要素を出力する。ただし、本発明のより一般的な形態では、こ
の関数は、一方の基底から異なる基底に単純に変換するだけでもよい。
【0053】 好ましくは、メッセージの終わり要素の位置は、入力としてメッセージマーカ
の終わりが与えられたときに、関数の出力が所定の値を超えたときの値に基づい
て決定することが好ましい。
【0054】 本発明は、そのような方法を実行するコンピュータプログラム、そのようなコ
ンピュータプログラムを伝送する物理的キャリア、およびそのようなコンピュー
タプログラムを表すデータストリームにまで拡張される。
【0055】 本発明の他の態様により、暗号化された文字列からデジタルメッセージを解読
する方法が提示されており、これは、 (a)暗号化された文字列を解読して第3の文字列を生成すること、 (b)逆変換関数を、第2の種類の複数の要素を含む第3の文字列に適用し、
逆変換関数は、入力として第2の種類の複数の要素を受け取り、それを第1の種
類の複数の要素に変換し、関数の出力が所定の値よりも第1の種類のより有意な
要素を有するとき、関数への入力として受け取られた複数の要素が、ともにメッ
セージマーカの終わりを備えたことを決定すること、 (c)第1の文字列として、メッセージマーカの終わりを表していた出力の部
分を除く関数の出力を受け取り、メッセージマーカの終わりに従ってメッセージ
の終わり要素の第1の文字列内の位置を判別すること、および、 (d)第1の文字列からメッセージを復元することを備えた。
【0056】 本発明はさらに、上述の方法のいずれか1つまたは組合せを組み込んだ暗号シ
ステムに拡張される。
【0057】 本発明の他の態様では、ビット単位の論理演算を実行するように適合されたデ
バイス上で並列モジュロ演算を実行する方法が提示されており、これは、 (a)各々のビット単位のベクトルによって演算が行われる数値列(x)を表
すこと、 (b)ベクトルの各々の1ビットから第1のワード(X〜0)を形成し、ベク
トルの各々の他のビットから第2のワード(X1)を形成すること、 (c)ワードの一方または両方にビット単位の論理演算を実行することを備え
た。
【0058】 好ましくは、上記の方法は、 (d)各々のビット単位のベクトルによって演算が行われる他の数値列(y)
を表すこと、 (e)ベクトルの各々の1ビットから他の第1のワード(Y〜0)を形成し、
ベクトルの各々の他のビットから他の第2のワード(Y1)を形成すること、 (f)各第1のワード(X〜0,Y〜0)の両方または各第2のワード(X1
1)の両方にビット単位の演算を実行することを含む。
【0059】 好ましくは、第1のワードまたは各第1のワードを、ともにある場所に格納し
、第2のワードまたは各第2のワードを、ともに他方の間隔をあけた別の場所に
格納することが好ましい。第1の格納手段および第2の格納手段を提供して、こ
れを達成することができる。
【0060】 一実施形態では、演算対象の数値および/または他の数値は、3を法として演
算が行われ、例えば、3進数(terts)により表現できる。
【0061】 計算は、ソフトウェアで実行することもできるが、あるいは、XOR、AND
、OR、およびNOTゲートを使用してハードウェアで実行することもできる。
【0062】 本発明は、上記の方法を使用する暗号化および/または暗号解読の方法にも拡
張される。
【0063】 暗号化の好ましい方法は、N(N≧3)を法とする係数を有する多項式の加算
、減算、または乗算を実行することにより鍵を生成することを含み、第1の多項
式の係数は、数値(x)列であり、第2の多項式の係数は、他の数値(y)列で
ある。
【0064】 暗号解読の好ましい方法は、N(N≧3)を法とする係数を有する多項式の加
算、減算、または乗算を実行することを含み、第1の多項式の係数は、数値(x
)列であり、第2の多項式の係数は、他の数値(y)列である。
【0065】 本発明は、上記の方法を実行するコンピュータプログラム、そのようなコンピ
ュータプログラムを伝送する物理的キャリア、およびそのようなコンピュータプ
ログラムを表すデータストリームにまで拡張される。
【0066】 本発明の他の態様では、ビット単位の論理演算を使用して並列モジュロ演算を
実行するデジタルデバイスが提示されており、これは、 (a)各々のビット単位のベクトルによって演算が行われる数値列(x)を表
す手段と、 (b)ベクトルの各々の1ビットから第1のワード(X〜0)を形成し、ベク
トルの各々の他のビットから第2のワード(X1)を形成する手段と、 (c)ワードの一方または両方にビット単位の論理演算を実行する手段を備え
た。
【0067】 本発明は、さまざまな方法で実践することができるが、例示によって、付属の
図面を参照しながら1つの特定のかつ好ましい実施形態について説明することに
する。
【0068】 (1.はじめに) Tumbler(登録商標)は、本発明の出願人の暗号開発者ツールキットのブラン
ド名である。これは、多数の異なる暗号アルゴリズムと非アルゴリズム固有AP
Iを含み、NTRU Corporationによって開発されたNTRU PKCSアルゴリズムを中心
として、ただしこれに限らないが、構築されている。詳細については、「Hoffst
ein, Pipher and Silverman, NTRU: A Ring-Based Public Key Cryptosystem, J
P Buhler (ed), Lecture Notes in Computer Science 1423, Spring-Verlag, B
erlin, 1998, 267-288と、NTRU Cryptosystems, Inc.名義のPCT特許出願第W
O98/08323号に記載されている。全体を通して後者の文書を「NTRU
特許出願」と呼ぶ。
【0069】 このアルゴリズムにより暗号法の現状が打破されたのである。従来の「巨大整
数」をベースとした製品群から決別したこのアルゴリズムは、多項式混合法に基
づいてより効率的で安全なシステムを構築する。しかし、裸のアルゴリズムは、
暗号製品として使用するにはほど遠い。間に数多くの機械類が必要である。NT
RUの場合、優れた特長の源でもあるその独特のスタイルは、この機械類を、こ
のアルゴリズムを扱うことができるように再発明すべきことを意味する。
【0070】 本書では、Tumbler(登録商標)に含まれるNTRU PKCS(Public Key
Cryptosystem)の独自の実装について説明する。NTRU PKCSを実用的な
暗号ツールとして実装しようとして直面したいくつかの問題について概要を述べ
、これらの問題を解決するためにTumbler(登録商標)で革新的な手法を使用す
る方法について説明する。
【0071】 Tumbler(登録商標)内で使用されているこれらの革新的手法の多くは、互い
に独立しており、単独でまたは選択した任意の組合せにより使用することもでき
ることは理解されるであろう。以下の手法はすべて、Tumbler(登録商標)の好
ましい実施形態に含まれている。例えば、誤り訂正、メッセージマーカの終わり
、チェックメカニズム、大規模な疑似乱数発生器、モジュロ演算の使用、および
複数の送信攻撃からの保護などが、単独でまたは組み合わせて使用することがき
る。また、Tumbler(登録商標)は、NTRU特許出願で述べているように、主
に、NTRU PKCSアルゴリズムを中心として構築されるが、この革新的手
法のほとんどは応用範囲がかなり広い。
【0072】 (1.1 元のNTRU PKCS特許出願) NTRU特許出願では、公開鍵と秘密鍵という2つの関連する多項式を作成す
る方法を説明している。次に、公開鍵を使用して多項式の形式において、メッセ
ージを暗号化形式に変換する方法について説明する。この暗号化されたメッセー
ジは安全である。暗号化されたメッセージと公開鍵のみの知識を与えられて、元
のメッセージを取り出す作業は、現在の技術により妥当な時間で実行するにはか
なり複雑だからである。秘密鍵を知ると、通常、元のメッセージを復元できるの
で、暗号化された形式は、メッセージを安全に転送(または格納)する手段を提
供することができる。
【0073】 (1.2 不完全解) 秘密鍵と暗号化形式を使用すると、通常、オリジナルメッセージを復元できる
。メッセージを復元できない場合、これは、ラッピング障害またはギャップ障害
と呼ばれるエラーのためである。ラッピング障害は、所定の方法で簡単に復旧で
き、またギャップ障害は、まれにしか発生しないため無視できると信じられてい
た(NTRU特許出願第1.3節, p.31)。しかし、ラッピング障害を修復する推
奨された方法では、しばしば誤りを訂正できず、ギャップ障害は、よく起こるた
め使い勝手に大きく影響することが明らかになった。また、誤り検出の問題もあ
った。メッセージを解読しようとする人は、通常オリジナルを所有していないた
め、そのメッセージが正しく解読されたかどうかを知ることは困難であった。
【0074】 計算項では、任意のデータファイルは、2進数からなる任意の長さの文字列で
ある。元のNTRU特許出願に記述されているように、暗号法により固定長の3
進多項式が暗号化される。したがって、データファイルを固定長の3進多項式列
に変換し、すなわち得られた多項式列を元のデータファイルに戻すことができる
方法を提供する必要がある。
【0075】 暗号を普通に使用していると、攻撃者と呼ばれる多くの人々は、常にそれを破
ろうと試みる。NTRU PKCSを使用する場合には、暗号化されたメッセー
ジと公開鍵のみを与えられ、元のメッセージを取り出す作業は、現在の技術では
妥当な時間内に実行するにはかなり複雑すぎる。攻撃者にとっての解決方法は、
暗号化されたメッセージと公開鍵だけでなく、それ以上の情報を取得することで
ある。
【0076】 暗号を使用する方法によっては、攻撃者が暗号を破るために使用できる追加の
情報を取得する可能性が実際にあり得る。これに対する簡単な答えは、これを許
す形で暗号を使用しないことである。しかし、場合によっては、実用目的に対し
ては制限が強すぎることがある。まったく同じメッセージを複数回送信すること
が望ましい状況、または潜在的攻撃者によりアクセスされる可能性のある自動化
されたシステムをセットアップしたい状況を以下で取りあげる。
【0077】 NTRU特許出願では、暗号法の理論的アルゴリズムについて開示しているが
、実際のマシンでこのアルゴリズムの実行をどのようにするかについては開示し
ていない。この理論的アルゴリズムは、ステップが比較的少なく、現代のコンピ
ュータであればすぐに実行できる、すなわち高速な数学理論を採用している。た
だし、本出願では、このアルゴリズムを劇的に高速化する手法を考案した。
【0078】 (1.3 Tumbler(登録商標)での解決法) NTRU PKCSのTumbler(登録商標)の実装により、理論と実用との間
のギャップに橋が架けられる。また、これは、NTRUに含まれる進歩に基づく
多数の新しい手法も含み、暗号、データ信号処理、およびコンピューティングの
他の分野であっても使用できる。
【0079】 誤りを検出し、ラッピング障害とギャップ障害の両方を訂正する方法について
以下で詳述する。暗号をデータ機密保護の実用的な手段として使用できるように
するために、暗号解読されたメッセージの完全性に依存できる必要がある。NT
RU特許出願で開示されている元の方法を、後述の検出および訂正システムとと
もに使用することにより、最終的な事例であると確信される。
【0080】 首尾一貫した「2進3進(bit to tert)」変換方式は、元の「メッセージマ
ーカの終わり」によるシステムとともに機能し、標準のコンピュータデータファ
イルとNTRU PKCS多項式との間をインタフェースする。
【0081】 Tumbler(登録商標)は、NTRU PKCSと同時に動作するプロセスを含
み、またこれにより、ユーザはまったく同じメッセージを複数回送信したり、暗
号法のセキュリティを低下させずに、潜在的攻撃者によるアクセスがあり得る自
動化されたシステムを使用することができる。
【0082】 NTRU PKCSを処理するための最適な解決法を見つけるために各種の標
準的な数学的ツールを分析するだけでなく、Tumbler(登録商標)のNTRU
PKCSの実装担当者は、一見して直観に反するような独創的な方法を生み出し
、これは、NTRU PKCSデータの多くを非常な高速で処理する。
【0083】 NTRU PKCSを使用した商用暗号法を促進するために、この内部アルゴ
リズムを多数のメカニズムと組み合わせて、一般的な攻撃から暗号の使用を保護
し、暗号と通常のデジタルデータ処理とをインタフェースし、および暗号法に内
在する問題を克服する必要がある。本出願では、このすべてがTumbler(登録商
標)で実現されていると確信している。
【0084】 (2.数学に関する用語) NTRU暗号システム、およびTumbler(登録商標)のバージョンは、3つの
整数パラメータ(N, p, q)と、整数の係数を有する次数N-1以下の4つの多項式の
集合(Lf, Lg, Lφ, Lm)とに依存する。pおよびqは、素数である必要はないが
、GCD(p, q)=1で、qは常にpよりもかなり大きいと仮定する必要があることに
注意されたい。Tumbler(登録商標)では、実装は通常3であり、qは通常Nの
サイズに応じて64、128、または256である。他の実装では、他の値を使
用することもできる。
【0085】 切り捨てられた整数多項式の環 R=Z[X]/(XN-1)を使用する。要素F∈Rは、多項
式またはベクトルとして次のように示される。
【0086】
【数1】
【0087】 Rにおける加算および乗算は、通常の多項式の演算とまったく同じように実行
される。ただし、乗算は、法(XN-1)による還元を必要とする。
【0088】 記号*は、Rにおける乗算を表す。この*乗算は、巡回畳み込み積として明示
的に与えられる。 F*G=H ただし、
【0089】
【数2】
【0090】 これは、係数「循環」すなわちXNの係数は、定数係数と組み合わされ(追加
され)、XN+1の係数はXの係数と組み合わされることを除き、通常の多項式乗
算とまったく同じであることに注意されたい。
【0091】 実際、pまたはqを法とする多項式の係数の値に関心がある。実際、演算の多
くは、環 Zp[X]/(XN-1)またはZq[X]/(XN-1)で実行されると考えられるが、pと
qの両方を法として還元された単一多項式の剰余を考慮するのが望ましい。
【0092】 モジュロ(つまり)qを法とする乗算を実行する場合、qを法として係数を還元
することになる。
【0093】 整数pを法として還元を行うときに覚えておくべき2つの有用な規則がある。 a(mod p)+b(mod p)=(a+b)(mod p) (c(mod p) x a(mod p))(mod p)=(c x a)(mod p)
【0094】 Rは体ではない。しかし、NTRUパラメータは、適切に選択された多項式が
Rにおいて逆元を持つ確率が非常に高くなるように選択されている。Rは、一意
の因数分解領域であるため、そのような多項式が存在するならば、逆元は一意に
定まる。
【0095】 Lmは、pを法とする係数を有するRのすべての多項式からなる。Lf、Lg
およびLφの元も、pを法とする係数を有するが、予め定義された重みが付けら
れている。LgとLφの多項式は、それぞれ、値1であり正確にdg(N)およびdφ(
N)の係数、および値−1であり正確にdg(N)およびdφ(N)の係数を有し、残りの
係数はすべて値が0である。Lfの多項式は、値1であるdf(N)の係数、および値
−1であるdf(N)-1の係数を有し、残りの係数はすべて値が0である。Lfの多項
式は、値1である1少ない係数を有し、逆元を求めることができる。
【0096】 (3.概要) Tumbler(登録商標)暗号システムは、鍵作成システム、暗号化システム、お
よび暗号解読システムの3つの独立したシステムで形成される。この章では、こ
れら3つのシステムのそれぞれについて簡単に調べ、多数の基本プロセスからそ
れぞれを構築する方法の概要を説明する。
【0097】 NTRU特許出願では、符号化と復号を非常に単純な2または3つのステップ
処理として記述している。Tumbler(登録商標)の実装では、多数の追加機能を
導入しており、これらのプロセスをより複雑なものにしている。後述のプロセス
はそれぞれ、流れ図の助けを借りて説明する。これら3つの流れ図とNTRU特
許出願からの等価物とを比較することは興味深い(図3、4および5)。
【0098】 鍵作成システムの場合、このプロセスは比較的単純である。しかし、鍵作成で
は、効率が大幅に向上している。
【0099】 (3.1 鍵作成) ここで、図1に示すように、鍵作成システムを説明する(NTRU特許出願の
図3と比較)。
【0100】 101.鍵作成システムは、このアルゴリズムではパラメータNおよびqを取
る。NTRU特許出願で使用するパラメータpは、3に固定されている。ただし
、他の値も使用できる。
【0101】 102.NTRU特許出願(第1.2節, p.31)で説明しているように、秘密鍵
多項式fを、Nに依存する集合Lfからランダムに選択する。
【0102】 103.3を法としてfの逆元を計算する。「ユークリッドアルゴリズム」を
使用する代わりに、もっと効率の良い「Almost Inverse Algorithm」を使用する
。このアルゴリズムは、論文「Fast Key Exchange with Elliptic Curve System
s」、Richard Schoeppel, et al (Advances in Cryptology-CRYPTO 95, Lecture
Notes in Computer Science 973, ed. D.Coppersmith, Springer-Verlag, New
York, 1995 pp.43-56)に示されている。逆元が存在しない可能性がある。この場
合には、102に戻り、新しいfを選択する。このアルゴリズムを実装する際に
、ベクトル表現に上の並列ビット演算による高速モジュロ演算のプロセスを使用
する(詳細については、第12節を参照)。
【0103】 104.2を法としてfの逆元を計算することを除き、103の場合と同様で
ある。このアルゴリズムを実装する際に、ベクトル表現に対する並列ビット演算
による高速モジュロ演算のプロセスを使用する(第12節を参照)。
【0104】 105.素数を法とする逆元が与えられた場合、ブートストラッピングと呼ば
れるよく知られている数学的手法を使用し、その素数のべき乗を法としてそれか
ら逆元を計算することができる。これにより、2を法とする逆元からq(常に2
のべき乗)を法とする逆元を計算することができる。ブートストラッピングでは
、次の原理を使用する。Fが素数のべき乗pmを法とするfの逆元であるとする
と、2F-f*F2 は、p2mを法とするfの逆元となる。
【0105】 106.fと同様の方法で、ただし集合Lgから、gをランダムに選択する。
【0106】 107.これは、NTRU特許出願で実行する計算と同じであるが(図3、ス
テップ350)、使用しやすいように含まれている因数p(p=3)は、除く。
【0107】 108.秘密鍵は、ペアf、F3である。
【0108】 109.次に、公開鍵hを公開することができる。これは、ステップ107で
計算されたものである。
【0109】 (3.2 暗号化) ここでは、図2に示されているようなTumbler(登録商標)暗号化システムを
説明する。これは、NTRU特許出願(図4)で開示されている元の暗号化シス
テムと比較対照すべきである。
【0110】 図2では、記号‖を使用して、いずれかの側へのオブジェクトの連結を示して
いる。
【0111】 201.暗号化システムは、元のメッセージデータ(平文)P内で、不定長の
バイト(2進)列として、公開鍵多項式h、アルゴリズムパラメータNおよびq
、および必要ならば、Multiple Transmission Attack保護鍵長(MTA鍵)kを
得る。このプロセスではさらに、SHA−1ハッシュ関数H()を使用する。S
HA−1は、米国政府の国立標準技術研究所のSecure Hash Standards(FIPS 180
-1)で定義されている。
【0112】 もちろん、平文Pは、都合のよい標準2進表現に従って暗号化される実際の英
数字(またはその他の)メッセージを表すことは理解されるであろう。
【0113】 202.暗号がMultiple Transmission Attack保護を要求すると、これは、符
号化の前に平文に適用される(第7節を参照)。ゼロでないkについて、ランダ
ムなデータ(K)からkバイトを生成し、それらのバイトを使用して、シーケンス
ジェネレータのシード値とする(第11節を参照)。MTA保護を使用しない場
合、k=0、K=φとするが、シーケンスS(K)は、論理的にすべて0であるとみなさ
れる。実際、すべて0の列では何も生じない。これは、S(φ)と同じことではな
い。
【0114】 203.MTA鍵kは、暗号への入力として平文の最初のkバイトを形成する
(第7節を参照)。次に、元の平文データバイトとシーケンスジェネレータの出
力とのXORが取られる(第11節を参照)。XORを取った平文を符号化する
には、2進データを3進データに変換し、暗号に使用される3進多項式(m)を埋
める必要がある(第8節を参照)。これら3進数、または「terts」(以下、タ
ートという)は、PKCS暗号により処理されるメッセージ多項式を形成する。
Nタートよりも少ない3進数が処理されないままである場合、残りの3進数は、
次のメッセージ多項式内に入れられ、207でメッセージマーカの終わりが作成
される。
【0115】 204.十分な数の3進数が未処理のままであれば、メッセージ多項式は、次
のNから構築され、暗号化される。平文データが尽きて、次のメッセージ多項式
を埋める3進数が不十分な場合、207でメッセージマーカの終わりが作成され
る。
【0116】 205.ランダム多項式を選択し、公開鍵を掛ける。次に、積多項式をメッセ
ージ多項式に加える。この処理は、パラメータpが公開鍵に組み込まれているこ
とを除いて、NTRU特許出願(図4、ステップ450)で開示されているのと
同じである。得られた暗号多項式は全てのバイトが埋められ、チェックハッシュ
関数に入力される。その後、係数ごとに2ビットを使用するメッセージ多項式が
続き、これも全てのバイトが埋められる。チェックハッシュを計算して、暗号多
項式の終わりに連結する(第6節を参照)。このハッシュからの出力がブロック
iを形成する。
【0117】 206.メッセージ多項式を暗号化してから、平文の次のNタートを使用して
次の多項式に進む。
【0118】 207.平文データが、メッセージ多項式の正確な数を埋めたり、3進数に変
換するための19ビットの倍数を埋めることはあり得ない。203、204、2
05および206で説明したプロセスを使用して、完全に埋めることができるす
べての多項式が処理されたら、メッセージメカニズムの終わりを使用して最後の
メッセージ多項式を完了する(第9節を参照)。このメカニズムにより、12タ
ートのメッセージマーカの終わりが作成される。このマーカは、平文に含まれ、
最後の不完全なメッセージ多項式には収まらないことがある。この場合、メッセ
ージマーカの終わりは、別のメッセージ多項式の中にあふれる。必要ならば、最
後の多項式をランダムタートで完了する。
【0119】 208.最後の不完全平文メッセージ多項式とメッセージマーカの終わりを含
む最後のメッセージ多項式(または、場合によっては最後の2つのメッセージ多
項式)は、他のすべてのメッセージ多項式と同じようにして暗号化される。
【0120】 209.全てのバイトが埋められているが、最後の不完全なバイト(もし存在
すれば)がゼロで埋められている各々の暗号化された多項式の連結は、関連する
チェックブロックがすぐ後に続き、暗号化されたメッセージ(暗号文)を形成す
る。
【0121】 (3.3 暗号解読) ここでは、図3に示されているようなTumbler(登録商標)暗号解読システム
を説明する。これは、NTRU特許出願(図5)で開示されている元の暗号解読
システムと比較対照すべきである。
【0122】 301.暗号解読システムは、アルゴリズムパラメータNおよびqにおいて、
暗号文E、秘密鍵多項式fおよびF3、誤り訂正レベル、および必要ならばMT
A鍵kを得る。このプロセスではさらに、SHA−1ハッシュ関数H()を使用
する。図3では、記号‖を使用して、いずれかの側へのオブジェクトの連結を示
している。
【0123】 302.iは、特定の暗号化された多項式を順番に参照するために使用するカ
ウンタである。Rは、MTA保護がそのまま適用される暗号解読された平文デー
タを含む(第7節を参照)。
【0124】 303.各々の暗号化された多項式および関連するチェックブロックを、単に
209で使用している埋め込み手順を逆転することにより、暗号文から再構成す
る。
【0125】 304.メッセージに秘密鍵を乗算し、次に、秘密鍵の逆元を乗算する。これ
は、誤り訂正のために必要な場合に最初の乗算の結果を記録することを除き、N
TRU特許出願(図5、ステップ570および580)で開示されている処理と
同じである。
【0126】 305.ハッシュを、205(第6節を参照)のeiおよびmiと同じようにし
てeiおよびbiで構成し、暗号解読された多項式biをメッセージ多項式miとし
て取り扱う。このハッシュを、送信されたチェックブロックBiと比較する。誤
り訂正を多項式上で使用する必要がある場合、このようなハッシュの多くを、同
じeiで計算しなければならないことがある。したがって、eiの入力の後、ただ
しbiの入力の前にハッシュ関数の状態を記録すると効率的な場合がある。
【0127】 306.送信されたチェックブロックが305で作成されたハッシュと一致す
る場合、復号された多項式biは、元のi番目のメッセージ多項式として受け取
られる。これらのメッセージ多項式の3進数を、ビットに戻す必要がある(第8
節を参照)。この変換は、12タートの集合で実行される。
【0128】 307.2進3進変換により、19ビットの集合が12タートの可能な集合の
部分集合に変換される。12タートの集合が、この部分集合に属するとき、これ
はビットに戻す変換のために渡され、属さないとき、19ビットの変換された集
合ではなく、メッセージマーカの終わりである(第9節を参照)。
【0129】 308.3進数はビットに変換され(第8節を参照)、結果はRに連結される
。Rは、もちろん2進文字列(バイト列を表す)である。
【0130】 309.前の多項式を復号した後、暗号解読システムは、次の暗号化された多
項式に進む。
【0131】 310.送信されたチェックブロックが305で作成されたハッシュと一致し
ない場合、復号された多項式biは元のi番目のメッセージ多項式ではない。
【0132】 311.オプションの誤り訂正がアクティブな場合、誤り訂正システムは、元
のメッセージ多項式の復元を試みる(第5節を参照)。
【0133】 312.誤り訂正システムがその成功を報告する。成功した場合、結果のbi
(304で計算されたのと異なるbi)が次のメッセージ多項式として受け取ら
れ、暗号文が通常どおり続く。
【0134】 313.誤りが発生し、訂正されなかった場合、ここに到達する。したがって
、元の平文は復元できない。ほとんどの場合、メッセージ全体がこの段階で破棄
される。これは、ほとんどのPKCSの用法では、手を加えていなメッセージ全
体が必要だからである。しかし、得られた平文のどのバイトが現在の不正なメッ
セージ多項式に関係しているかを単純に記録し、ステージ306にスキップし、
通常通り続けることもできる。正確でないメッセージ多項式から直接変換された
平文ビットのみが影響を受ける。
【0135】 314.12タートの範囲外の集合は、メッセージマーカの終わりを示す。3
進数の前のすべてのブロックが、ビットに変換され、Rに連結される。最後に、
このブロックは、メッセージの終わりメカニズムを使用して解釈される(第9節
を参照)。これは、Rに含まれるビットのいくつかを除去する必要がある場合が
ある。まだ変換されていなかった3進数は、破棄される。
【0136】 315.この段階で、Rは、MTA保護がそのまま適用される平文データであ
る。最初のkバイトにより、MTA鍵kが形成される。これらは、シーケンスジ
ェネレータS(K)のシード値を与えるために使用される。MTA保護を使用しない
場合、k=0、K=φとするが、シーケンスS(K)は論理的にすべて0であるとみなさ
れる。実際、すべて0の列では何も生じない。これは、S(φ)と同じことではな
い。S(K)からの出力とRとのXORを取って、Pを出力する(第7節を参照)。
【0137】 316.復元された平文データは、実際のメッセージのバイトを表す2進文字
列Pである。
【0138】 (4.復号の失敗) 毎回NTRUアルゴリズムを使用して暗号多項式を復号するごとに、元のメッ
セージ多項式に復号できないという事が生ずる確率が小さいながらもある。
【0139】 秘密鍵fを使用して暗号多項式eを解読するために、最初に、 a≡f*e(mod q) を計算する。このとき、-q/2+1からq/2の区間内のaの係数を選択する。aを整
数係数の多項式として取り扱うと、メッセージ多項式は、通常、以下の式を計算
することにより復元できる。 Fp*a(mod p) ただし、Fpは、pを法とするfの逆元である(Fp*f≡1(mod p))。
【0140】 多項式aは、以下を満たす。 a≡f*e≡f*φ*h+f*m(mod q) =f*pφ*Fq*g+f*m(mod q) =pφ*g+f*m(mod q) 最後の多項式 pφ*g+f*mを考察する。適切なパラメータを選択するために、ほ
とんどすべての場合に、係数はすべて-q/2+1からq/2の範囲に収まり、qを法と
して係数を還元しても変化しないようにすることができる。つまり、qを法とし
てf*eの係数を、-q/2+1からq/2の区間に還元すると、正確に以下の多項式が復元
される。 a=pφ*g+f*m
【0141】 「適切なパラメータを選択する」とは、主として、第2節で定義した値dg(N)
、dφ(N)およびdf(N)のことを指している。これらの値が低いほど、多項式g、
φ、およびfの係数が0である割合が大きくなる。この結果、上記の多項式内の
係数が0に近くなる確率が大きくなる。しかし、これらの値は、様々な種類の可
能な多項式がいくつあるかを示し、暗号文のセキュリティがどれだけ効果的かを
示す。これらの値が十分に大きければ、g、φおよびfに対する可能な値が多す
ぎ、攻撃者が妥当な時間内に正確な値を推測できてしまう。これらの値が小さく
て、上記多項式の係数が-q/2+1からq/2の範囲を外れる可能性がない場合、暗号
文のセキュリティが折り合う。
【0142】 Tumbler(登録商標)で使用するパラメータの選択により、多項式 pφ*g+f*m が、-q/2+1からq/2の範囲外にある係数を有する確率は、おおよそ1/10000となる
。つまり、いくつかの係数の値は、復号の最初のステップで±qにより変換され
、3を法とする変更された値を有する。
【0143】 (例) 図5、6および7は、ラッピングエラーの視覚的な例である。
【0144】 図5は、qを法として正の最小剰余に還元された多項式f*eの例をグラフにし
たものである。50個の係数が、その値(0からqの範囲)に応じた高さに配置
されたドットで表される。これは、復号プロセスを通じて半分ほどデコーダが復
元する多項式である。多項式は、正の最小剰余類を使用して表示され、コンピュ
ータ内の2のべき乗を法とする最も単純な還元が、これら剰余類に数を残す。メ
ッセージを復元するために、多項式を最小絶対剰余類(-q/2+1からq/2の範囲)
にシフトする必要がある。しかし、多項式の現在の形式は、不正にラップする可
能性が最も高いすべての係数が、多項式の中心に集められるという利点を有する
。この領域は、グラフ上で強調表示されている(501と印されている領域)。
【0145】 図6は、qを法として最小絶対剰余類にシフトされていることを除き、図5と
同じ多項式を示している。図5で501と印されていた領域は、2つに分割され
ており、601および602と印されている。図5で502と印されていた係数
は、q/2の線分の真上にあり、qだけ下にシフトされ、グラフの下部にある(6
03と印されている)。これは、元のメッセージ多項式を復元するためにF3
畳み込まれた多項式の形式である。
【0146】 図7は、多項式pφ*g+f*mのグラフであり、図5および6にグラフが示されて
いる多項式に関係している。この多項式は、qを法として還元されないが、その
係数はすべて-q/2+1からq/2の範囲内に収まり、図6の多項式が厳密な一致とな
ることが期待される。そうであるば、メッセージは誤りなしで復元される。これ
は、適切なパラメータを選択した場合、ごく一部の場合を除くすべての場合に生
じる。この例では、703と印されている係数は、指定された範囲を外れている
。つまり、図6に示されている多項式f*eは、qを法としてこの多項式と等価で
あるが、同じではなく、また3を法としては等価ではない。係数701は、図6
で603と印されている位置までラップされている。
【0147】 誤りが発生したかどうかを知ることができる何らかの手段が存在していること
が重要である。多項式φは、暗号化するものにしか認識されず、多項式gおよび
fは、デコーダにしか認識されないため、ラッピング障害が発生するかどうかを
予測することは不可能である。障害を検出するには、暗号化/暗号解読処理の間
、元のデータの完全性を確認するいくつかの種類のチェックハッシュを使用する
。このようなチェックは、ある種の形態の攻撃を防止するために必要である。
【0148】 復号障害を検出するためにTumbler(登録商標)で採用しているメカニズムに
ついては、第6節で詳述しており、これらの誤りを訂正する手段については第5
節に従う。
【0149】 (5.誤り訂正) ラッピングエラーは、NTRU暗号が提案されたときに認識されていた問題で
ある(NTRU特許出願、第1.3節, p.31)。しかし、これを解消するために提
案されたルーチンは弱点があり、ラッピング障害のいくつかの例を訂正できなか
った。この方法では、3の倍数により上から多項式aをシフトする操作が必要だ
った。このため、不正にラップされている係数の値が変化してラップされず、3
を法として還元したときに係数の値を変えなかった。残念なことに、これにより
、範囲の他端に値がある係数は、先の場合に発生しないであろう、不正にラップ
されることがしばしばであった。
【0150】 提案されたラッピング誤り訂正も、ギャップ障害として知られている誤りを訂
正できなかった。これは、不正にラップされた係数の値が同じ符号の正しくラッ
プされた係数と少なくとも同じくらい0に近い場合に生ずる。これは、元々、問
題として考慮されておらず、これらの障害は非常にまれなものと思われていた。
ギャップ障害は、実際には、1千万の多項式に1つの割合で発生し、これは多く
のアプリケーションで十分に多いといえる。
【0151】 Tumbler(登録商標)の誤り訂正システムの原理は、単純である。誤りがあれ
ばそれを見つけて訂正するというものである。
【0152】 難しいのは、単純に見て、2つの可能な方法において間違っていると思われる
係数がN個あるという点である(3を法として取り扱ったとき)。また、複数の
同時誤りもありうる。したがって、考えられるすべての誤りをチェックすること
は、機能するまで考えられるすべての3進数多項式を試してみることと同等であ
る。暗号の性質上、これは考えられないほどの時間がかかる。さらに、誤りは、
復号障害が原因でない場合さえあり、送信のエラーや攻撃者による故意の改変が
原因の場合がある。
【0153】 Tumbler(登録商標)の解決法は、考えられるすべての誤りが元々等しいわけ
ではないという事実に基づく。誤りの考えられる原因を、最も可能性の高いもの
から最も可能性の低いものへと順序付けた場合、誤りの原因について極めて効率
の良い検索を実行できる。実際、復号障害の原因で最もよくあるのが、10000の
うちほぼ9999の誤りの原因である(Tumbler(登録商標)で現在使用しているパラ
メータの選択に対して)。
【0154】 第4節の復号障害の原因を思い起こすと、このアルゴリズムパラメータは、特
定の多項式の係数がほとんどいつでも-q/2+1からq/2の範囲の内側にあるように
選択されていた。この範囲内になければ、復号障害は発生したと言われる。実際
、係数がこの範囲を外れる確率は、多項式ごとに1/10000である。2つの係数が
この範囲を同時に外れる確率は、多項式ごとに1/100000000未満、さらに同時の
誤りについても同様である。また、係数がこの範囲を外れる場合、ほとんどいつ
でも、わずかだけ範囲を外れる。距離が大きいほど、係数がその範囲からその距
離だけ外れる可能性が低くなる。
【0155】 さらに、係数がこの範囲のすぐ上に入る場合、この範囲の下側にラップする。
係数がこの範囲のすぐ下に入る場合、上側にラップされる。最初のケースでは、
値はqだけ小さすぎる、つまりxが3を法とするqの正の最小剰余とすると、3
を法としてxだけ小さすぎるということである。後者のケースでは、xだけ大き
すぎる。
【0156】 これは、誤りを見つける単純な手段となっている。-q/2+1からq/2の範囲の上
側および下側に最も近い値がチェックされ、(値が範囲の下側にあるのか上側に
あるのかに応じて)xを加えたり引いたりして3を法として値を訂正することが
試みられる。
【0157】 図8は、図5と同じグラフを示している(第4節で説明している)。直線q/2
を囲む領域が強調表示されており、801と印されている。この領域内にある係
数は、誤りの原因となる可能性が最も高いものである。最初の5個の係数に、直
線q/2に近い順に802、803、804、805、806とラベルを付ける。
誤りの最も可能性の高い原因は、値がxだけ小さすぎる802と印されている係
数である。これは正確には、第4節の例で説明した誤りであり、この係数の値に
xを加えると、誤りが訂正される。
【0158】 これらの誤りを訂正するために採用すべき正確な方法は、置換される暗号文の
使用と、実装されるプラットフォームに大きく依存する。アルゴリズムの例を以
下に示す。この方法の前提は、訂正の試行をできる限り速く何回も実行すること
により、効率化できることである。しかし、10000のうち9999の誤りは、最初の
試行で訂正される。速度の点で、可能な最も短い時間で最も可能性の高い誤りを
チェックし、その最初の試行が失敗した場合に、検索を続行するのに必要な作業
のみを行うことが最良であると思われる。
【0159】 誤りは、10000個の全多項式で1回のオーダーでしか発生しないので、速度差
は平均すると小さく、流れ速度が一定であることが問題になる場合にのみ重要で
ある。ここで説明した方法にはいくつかの利点がある。適切なGの表(以下参照
)を用意すると、妥当な時間内にすべての復号誤りを修正する。最初の数ステッ
プで、元のデータを非常に効率の良い形式で格納することができ、元のqを法と
するデータは、再度参照することはまったく必要ない。
【0160】 図4は、誤り訂正アルゴリズムの流れ図である。NTRU特許出願では同等の
アルゴリズムを提示していない。この流れ図は、復号システムを記述する流れ図
のもう片方として設計されている(図3を参照)。
【0161】 401.誤り訂正ルーチンは、アルゴリズムパラメータNおよびqを使用する
。さらに、秘密鍵の逆元F3を使用するが、秘密鍵自体ではない。
【0162】 訂正レベルにより、誤り訂正ルーチンをどれだけ続けるべきかどうかが決定さ
れる。誤り訂正は、ゼロ以外の値でなければならず、または、誤り訂正ルーチン
は、最初の場所で決して呼ばれることはない。ほとんどすべての誤りは、非常に
高速に訂正される。訂正レベルにより、誤りの中のいくつかが、復号障害以外の
原因により生ずる誤りとすることができるように制御する。誤りの原因が送信に
ある場合に、任意に高い訂正レベルだと、処理が任意に長い時間続くことになる
。既存の誤りは、最初の数回の試行で訂正される可能性が極めて高い。したがっ
て、未検出の誤りの確率が無視できるくらい小さいとき、および多項式で復号で
きない事態がメッセージの送信時に発生した問題による可能性が高いときに、非
常に迅速に結論することができる。
【0163】 訂正ルーチンは、半分復号されたqを法とする多項式aiと暗号多項式eiを得
る。これらは、復号システムによって使用される多項式に関係する(図3を参照
)。eiは、チェックブロックを作成するときにしか使用されない。eiを入力し
た後、および新しいチェックが必要になったとき、新しいハッシュインスタンス
の代わりに、この状態に戻るときに、ハッシュ関数の状態を記録することにより
、ハッシュインスタンスにeiを繰り返し入力するのを避けることができる。
【0164】 表Gjkは、実験から構成され、様々な数の同時発生する誤りを、様々な深さで
訂正する順序を制御することができる。ほとんどすべての誤りは、即座に訂正さ
れるため、第1対のエントリを超えてこの表の理想的な値を決定することは難し
い。事実上、正確な値はほとんど重要でない。
【0165】 402.訂正されたレベルは、訂正レベルと比較するために使用される単なる
カウンタである。
【0166】 値jは、表Gとともに使用される。これにより、現在Gのどの行が使用されて
いるかがわかる。
【0167】 値xからは、qを法として不正にラップされた値が3を法としてどれだけ変更
されているかがわかる。より一般的には、NTRU特許出願のpの値が3以外の
値に選択された場合、xは次の式で計算される。 x=q rem p
【0168】 qを法とする多項式を中心は、最小絶対剰余類(0を中心とする)にシフトす
ることである。-q/2+1からq/2の範囲を使用する必要はないことに注意されたい
。代わりに、-q/2からq/2-1の範囲を使用することもできる。
【0169】 403.この時点で、その値の-q/2とq/2との近さによりaiの係数の順序を決
めるリストを作成する。正確にq/2に等しい値がステップ402で下にラップさ
れた場合、負の値の係数は、同じ絶対値を持つ正の値の係数の前にリストされ、
-q/2に正確に等しい値が上にラップされた場合はその逆となる。図8で説明され
ている例では、このリストは、802、803、804、805および806と
いうラベルの付いている係数からこの順序で始まる。値自体ではなく範囲の端か
ら各々の係数の値の距離のみを記録することもできる。ここで値全体を使用して
、処理を簡単にたどれるようにしている。
【0170】 404.3を法として還元した後、元のqを法とする多項式aiは、もはや使
用されない。
【0171】 405.kは初期化される。これにより、チェックが行われる同時誤りの個数
が制御される。まず、不正にラップされている係数について、チェックが行われ
る。
【0172】 406.ここで、表から行うべきチェックの現在の深さを得る。表の第1行に
ある場合、チェック手順は深さ0から始まる。値が前のjの値以下の場合、40
7でチェックされていないkタプルはなく、アルゴリズムは次のkの値にそのま
まスキップする。
【0173】 407.アルゴリズムは、±q/2から一定距離以内にある値を有する係数のす
べてのkタプルを検索する。このとき、まだチェックされていないkタプルが残
されているかどうかを判別する。小さな深さで検索時にチェックされたkタプル
は、再チェックする必要はない。
【0174】 408.値すべてが所定の範囲内にある係数のkタプルが選択される。このk
タプルは、アルゴリズムの前回の反復で選択されたkタプルと区別されなければ
ならない。次に、選択されたkタプルの値を変えて、qを法とする可能なミスラ
ッピングについて3を法として補正する。
【0175】 409.変更されたai’を使用して、復号プロセスを完了する。
【0176】 410.復号された多項式および暗号多項式が、完全性のチェックに合格した
かどうかを確認するチェックを行う。
【0177】 411.完全性のテストに合格した場合、biは、次に暗号解読される多項式
として受け取られる。
【0178】 412.可能なkタプルが尽きた場合、検索は±q/2から可能なより大きな距
離に拡大される。
【0179】 413.表Gの(j,k)の値は、kの現在の値についてkタプルでの誤りの検索を
停止する深さを与える。
【0180】 414.検索の意図する範囲に関して、どこまで検索したかを記録するカウン
タをインクリメントする。専用カウンタを設置するよりも、この方法をとるほう
が明らかに経済的である。
【0181】 415.このときに、訂正されたレベルが与えられた訂正レベルに達したかど
うかを確認するチェックを行う。
【0182】 416.復号された多項式でステージ411において停止せずに指定された訂
正レベルに関する限りチェックを実行している場合、検索は放棄され、多項式は
訂正されない。現実的に、最低限の訂正レベルでは、誤りの原因が復号障害以外
の場合にのみ発生する。
【0183】 417.訂正手順が実行される同時誤りの個数を増やす。
【0184】 418.Gの行は、0に終端される。終わりに達すると、kはリセットされ、
単集合(singleton)の誤りの検索が再び開始される。
【0185】 419.アルゴリズムは、Gの次の行に移動する。
【0186】 以下の例は、表Gの使用法を詳細に示している。
【0187】 (例) ai=45-ll7x-127x2-45x3-117x4 q/2=128
【0188】
【表1】
【0189】 インデックス2は、最大絶対値を有する係数に対応する。インデックス1およ
び4の係数は、同じ絶対値と同じ符号を持ち、それら2つのうちいずれがリスト
上位に来るかはまったく任意である。例については、1がリストの最初に記述さ
れる。インデックス0および3は、絶対値は同じで、符号が異なるため、−12
7から128の範囲を使用すると仮定すると、3が先である。
【0190】 したがって、その結果の順序は、{(2,-127), (1,-117), (4,-117), (3,-45),
(0,45)}となる。
【0191】 q=128=3*42+2 ∴x=2
【0192】 簡略化した次の表Gjkを考える。
【0193】
【表2】
【0194】 この表は、誤りをチェックする最適な順序を示している。任意の段階で、誤り
が発見され訂正される場合、チェック手順を停止する。
【0195】 手順は、−128または128に等しい単集合の誤りを訂正する試みから始ま
る。何もないため、−128から−127の範囲、または127から128の範
囲で単集合に進む。これらの範囲には、順序付けの例の最初のインデックス例え
ば、2により示されている。この係数は負であるため、アルゴリズムでは2を加
えて訂正しようとする。この例の目的として、これが失敗すると仮定する。
【0196】 G(1,1)=3なので、−128から−126または126から128の範囲内で全
ての単集合を試みるまで、単集合を訂正し続ける必要がある。その範囲にそれ以
上の単集合はない。
【0197】 このとき、対を訂正してみるのもよい。しかし、G(1,2)=4で指定される最大範
囲内に対はない。G(1,3)=0、したがって、Gの次の行に切り替えて、もう一度単
集合の誤りの検索を開始する必要がある。
【0198】 検索は、前の行で止めたところから深さ3で開始し、リストを下へ深さ10ま
で単集合を探す。10で、さらに2つの潜在的誤りが見つかる。もう一度、これ
らの誤りの訂正が失敗したと仮定する。
【0199】 そこで、深さ4で検索を止めたところから始めて、誤りの対について訂正をさ
らに試みる。深さ10に達すると、その範囲に3つの係数が見つかり、したがっ
て、3つの潜在的対が見つかる。インデックス2がリスト内の最初にあるので、
これらのペアは、(2,1)、(2,4)、最後に(1,4)という順序で訂正される。
【0200】 この例については、これらの対の1つが実際に誤りの原因であったと仮定する
。しかし、実際には誤りはほとんどいつでも、最初の数回の試行で訂正されるこ
とに注意されたい。
【0201】 (6.テキスト認識) 暗号システムが、暗号化されたデータが関連する平文の有効なエンコーディン
グであるかどうかを判別できれば、平文認識を有するという。これは、通常、あ
る種のチェックハッシュにより実現される。
【0202】 その使用にもよるが、平文認識を有しないシステムは攻撃を受けやすい場合が
ある。システムの認識の欠如につけ込む攻撃は、次のように行われる。
【0203】 攻撃者がエンコードされたメッセージを横取りする。攻撃者は、エンコードさ
れたメッセージを少し修正してから、元の意図された受信者に送信する。
【0204】 このわずかな修正により、メッセージを無効な暗号文、つまり平文のエンコー
ドされた形式でないものに変えられる可能性がある。このような場合、デコーダ
は、メッセージを解読できず、一般的には、メッセージの復号に失敗したという
通知を送信者(このシナリオでは攻撃者)に送る。
【0205】 あるいは、修正されたメッセージは、有効な暗号文である場合もあり得る。こ
のような場合、デコーダはメッセージを復号して解釈しようと試みる。エンコー
ド時に修正されていると、デコーダは、メッセージの意味を理解できない可能性
があるが、これは攻撃には無関係である。
【0206】 攻撃者は、このプロセスを数回繰り返し、各段階でどの修正により有効な暗号
文ができたかを記録する。この結果を分析することにより、攻撃者は、オリジナ
ルのメッセージの一部を判別することができる。
【0207】 Tumbler(登録商標)では、このアプローチをとり、平文と暗号文の両方に基
づいて自動的に通常のハッシュチェックを作成する。このため、Tumbler(登録
商標)は、一般的に、「テキスト認識を有する」と呼ぶことができる。
【0208】 Tumbler(登録商標)は、SHA−1(Secure Hash Algorithm 1)を使用して
、それぞれのエンコードされた多項式のチェックハッシュを計算するのが好まし
い。SHA−1は、米国政府の国立標準技術研究所のSecure Hash Standards (F
IPS 180-1)で定義されている。
【0209】 メッセージ多項式がエンコードされるごとに、元のメッセージ多項式と結果で
ある暗号文多項式の両方を、SHA−1アルゴリズムのインスタンスへの入力と
して使用する。
【0210】 符号化中、最初に暗号文多項式を入力として得る。これにより、復号エラーに
イベントにおいて復号プロセスがスピードアップされる。暗号文多項式を、送信
のために、後述のようにバイトで埋める。最初の係数を表すのに必要なビットを
、最初のバイトの最下位端に置く、同様にして、最後のバイトを必要ならばアン
セットしたビットで終わらせる。
【0211】 次に、メッセージ多項式をバイトで埋め、このときに各係数は、2つのビット
で表される。対応する係数が0の場合は、両方のビットがアンセットされ、対応
する係数が−1の場合は、最初のビットがセットされ、かつ第2のビットがアン
セットされ、対応する係数が1の場合は、両方のビットがセットされる。最初の
ビットがアンセットされるときに、第2のビットがセットされることはない。
【0212】 埋められた暗号文およびメッセージ多項式が連結され、SHA−1アルゴリズ
ムを使用して一緒にハッシュされる。ハッシュされた出力を、暗号文とともに受
信者に送信する(暗号化されていない)。典型的には、ハッシュを加えると、送
信されるテキストの量が20バイト前後増える。使用される追加のバイトを減ら
すこともできるが、セキュリティが低下する。
【0213】 (例) メッセージ多項式{-1,0,1,1}は、バイト10001111としてエンコードされる。
【0214】 必要ならば、最後のバイトをアンセットされているビットで終了する。この符
号化された形式では、多項式は、埋められた暗号文の終わりに連結され、受信者
への送信のためハッシュされる。
【0215】 復号時、暗号文および復号されたメッセージ多項式は連結され、SHA−1に
入力される。SHA−1からの出力を、エンコード処理で計算された元のハッシ
ュ値と比較し、暗号文とともに受け取る。
【0216】 したがって、攻撃者がエンコードされたメッセージを修正した場合、修正され
たデータを復号できるとしても、復号されたメッセージのハッシュ値を元のメッ
セージのハッシュ値と一致させることは計算上不可能である。このため、暗号文
を改変し、このテストを通すことは、本質的に不可能である。
【0217】 次に、システムは、ハッシュ値が元のハッシュ値と一致しなかったすべてのメ
ッセージを拒絶し、そのとき、暗号文が有効であったかどうかを送信者に知らせ
ないよう注意する。
【0218】 ラッピング障害が、復号されたメッセージ多項式の誤りの原因となっている可
能性がある。誤り訂正をオンにした場合、暗号システムは、上述のアルゴリズム
を使用してその誤りを訂正しようとする。各段階で、チェックハッシュを再計算
して、誤りが是正されたかどうかを確認する必要がある。暗号文は同じままで、
取り出されたメッセージ多項式のみが、チェックごとに異なるので、暗号文を1
回だけハッシュ計算に入力し、メッセージ多項式を毎回入力することができる。
【0219】 暗号文と平文の両方に対してハッシングし、暗号文と平文の両方に完全性テス
トを行う一般的方法は、NTRU依存ではないが、他の暗号についても同様にう
まく機能する。
【0220】 (7.複数の送信) Tumbler(登録商標)には、複数送信攻撃(MTA:Multiple Transmission A
ttacks)の保護機能を追加するオプションが含まれる。
【0221】 同じメッセージを、同じ公開鍵を使用し、MTA保護機能を使用せずに、複数
回暗号化して送信すると、攻撃を受けやすい。
【0222】 2つのメッセージの間に予測可能な類似性が存在する可能性のあることを知っ
ておくことが重要である。最も明白に識別可能なのは、電子メールで使用されて
いるようなメッセージのヘッダであり、これらは多くの場合予測可能である。い
くつかのメッセージの最初の数バイトが同一である場合、その最初のメッセージ
多項式も同一であり、したがってMTAを受けやすい。
【0223】 価格表を定期的に送信するものとする。攻撃者がそれらの価格が変更されてい
ないと正しい仮定を行った場合、MTAを採用できることになる。
【0224】 単一のメッセージ多項式のセキュリティは、その多項式の暗号化で使用される
乱数に依存する。攻撃者がその乱数を判別し、公開鍵にアクセスできた場合、攻
撃者がオリジナルのメッセージを取り出すことは自明なことである。
【0225】 メッセージを送信するごとに、各多項式について「作動中に(on the fly)」
乱数を決定する。つまり、まったく同じメッセージを複数回送信するとしても、
そこには異なる乱数が含まれるということである。攻撃者が2つまたはそれ以上
の横取りしたメッセージにまったく同じ平文が含まれていることを確実に知って
いれば、何とか使用されている乱数を決定しようとこれらのメッセージを比較す
る。
【0226】 MTA保護がない場合でも、一般に、2つのコピーだけから乱数を完全に決定
することはできない。しかし、複数のコピーを送信することで、攻撃者がメッセ
ージのほとんど(および最終的にはすべて)を判別できるときには、2つのコピ
ーを送信することでさえ、メッセージのセキュリティを著しく損なうおそれがあ
る。
【0227】 Tumbler(登録商標)MTA保護システムでは、単純なストリーム暗号システ
ムをランダムに選択された鍵(例えば、疑似乱数発生器を使用する)とともに採
用して、平文メッセージが同じ鍵を使用して送信された他の同一のメッセージか
らランダムに異なるようにする。ストリーム暗号は、鍵でブロードキャストされ
るので、メッセージのセキュリティに直接加わらず、したがって、特にセキュリ
ティの高い暗号である必要はない。2つの同一の平文が予測できない方法で互い
に異なるようにすることだけが必要である。
【0228】 Tumbler(登録商標)MTA保護オプションを使用したエンコーディングは、
ランダムな(または疑似ランダムな)MTA鍵が平文の先頭に追加される。この
鍵を使用して、Tumbler(登録商標)シーケンスジェネレータの初期状態を設定
する(第11節、および図2のステップ202を参照)。平文データの後続のバ
イトとシーケンスジェネレータからの出力とのXORを取り、それをPKCS暗
号に入力する。図2のステップ203を参照のこと。
【0229】 復号時に(図3)、PKCS暗号システムから返されたデータの先頭kバイト
を使用して、シーケンスジェネレータの初期状態を設定する(第11節を参照)
。後続のバイトとシーケンスジェネレータからの出力とのXORを取り、それを
復号された平文として出力する。図3のステップ315を参照のこと。
【0230】 (8.2進数から3進数へ) データが従来ビットとして格納されているが、好ましいPKCSアルゴリズム
では、係数が値0、1、または−1を取ることができる多項式としてメッセージ
を処理する。メッセージ多項式は、3進数の列にすぎない。2進数を3進数に変
換し、再び3進数を2進数に戻す方法が必要である。
【0231】 本発明では、メッセージの19ビットからなるそれぞれの完全な集合を12タ
ートに変換する。これにより、パッキング効率が98.65%になるが、変換に
使用される算術演算を32ビット整数で実行することができる。64ビットを超
える整数を使用する方法は、さらに効率的であるが、パッキングの問題と比較す
るとパッキング効率の向上は無視できるくらい小さいといえる。
【0232】 (8.1 2進数から3進数への変換) xを整数とし、最下位19ビットがメッセージからの19ビットのブロックと
同じ構成で設定され、他のビットがすべて0に設定されている。ここで、3進数
は、値0、1、または−1を取る整数と仮定する。
【0233】 1.xを3で割り、余りを計算する。この値を使用して、次の3進数を決定す
る。0は、3進数の値が0であることを決定し、1は、3進数の値が1であるこ
とを決定し、2は3進数の値が−1であることを決定する。
【0234】 2.xを3で割り、余りを破棄する。
【0235】 3.ステップ1および2を合計12回実行する。
【0236】 明らかに、このプロセスは、ステップ1でxを3ではなく81で割ったとして
加速され、その余りを3進数の81個の可能な4タプル(4個の要素を持つ順序
付き集合)の表とともに使用して次の4タートの値を決定することができる。そ
の後、ステップ2でxを81で割る。このアプローチを使用した場合、プロセス
では12回ではなく3回の反復のみが必要である。
【0237】 xを729で割り、余りを取って、3進数の729個の可能な6タプルの表を
使用して次の6タートの値を決定し、xを729で割る方法によりさらに高速化
できる。このオプションでは、1つの余りと1つの除算のみが必要である。しか
し、このようなスピードを向上する方法もまた、それぞれ、それに対応してコー
ドサイズの増加を生じる。速度に関する最終的方法では、531441個の可能
な12タプルすべての表を直接検索する方法を取る。
【0238】 上記の方法のいずれを使用しても、変換プロセスにより、範囲{0,0,0,0,0,0,0
,0,0,0,0,0}から{-1,0,0,-1,1,0,-1,-1,1,-1,-l,-1}の値が得られる。したがっ
て、3進数の全ての可能な12タプルを生成できるわけではない。これは、312 =531441は、219=524288よりも大きいためである。これは、この
範囲を外れる3進数の集合は、メッセージの終わりを示すのに使用されるため重
要である。
【0239】 最後の19ビットからなる不完全集合は、もしあるならば、必要な数のランダ
ムビットで19ビットにパッディングされる。パッディングを除く実際のメッセ
ージデータの長さは、記憶され、メッセージマーカの終わりの値を判別するのに
使用される。この詳細については、第9節を参照のこと。
【0240】 (例) この例の目的のために、19ビットからなる列が、0101101101001100010であ
り、先頭および最下位ビットから最後および最上位ビットへ順序付けられている
。10進整数と見なすと、このビット列は144090である。各3進数の値は
次のように計算できる。
【0241】
【表3】
【0242】 したがって、ビット列0101101101001100010は、3進数の列{0,0,-1,-1,-1,1,-
1,-1,0,1,-1,0}に変換される。
【0243】 (8.2 3進数から2進数への変換) データが復号されている場合、再び、3進数多項式の形式を取り、2進数から
3進数への変換プロセスを次のように逆転する必要がある。
【0244】 1.yを前の12タートの集合から計算で求めたxの値をとる。これは明らか
に、最初のブロックについては関連性がなく、これに対し前の集合はない。最初
にxを0に設定する必要がある。
【0245】 2.この集合内の3進数に、0から11まで順に番号を振る。i番目の3進数
が0であれば0をxに加え、1であれば3iをxに加え、−1であれば2×3i
xに加える。
【0246】 3.xの有意なビットが19個以下(したがって、219よりも少ない)場合、
yの最初の19ビットが元のメッセージの次の19ビットである。xの有意なビ
ットが19個よりも多い場合、元のメッセージデータの終わりに達している。
【0247】 xの値を使用して、元のメッセージの一部となるyのビットの個数および破棄
される数を正確に求めることができる。詳細については、第9節を参照のこと。
【0248】 (例) 上で計算した12タートの集合{0,0,-1,-1,-1,1,-1,-1,0,1,-1,0}を次のよう
にしてビットに変換して戻すことができる。
【0249】
【表4】
【0250】 xに19個を超える有意なビットがなく(144090<219)、2進数にお
いて、xは19ビット0101101101001100010で表される。これらは、前の例で3
進数に変換されたのと同じ19ビットである。
【0251】 (9.メッセージマーカの終わり) 2進数メッセージは、エンコーディングのために3進数に変換される(第8節
を参照)。これは、19ビットのブロックを使用して実行される。明らかに、す
べてのメッセージが、19ビットの正確な倍数となる長さを持つわけではなく、
必要ならば、19ビットの最後のブロックにランダムビットをパッディングする
。これらのランダムビットは、元のメッセージの一部ではなく、復号時に削除す
る必要がある。したがって、エンコーディングされたメッセージは、どのビット
がメッセージの一部であり、どれを破棄する必要があるかを正確に判別できる十
分な情報を含んでいなければならない。
【0252】 さらに、エンコーディングメカニズムは、N個の係数を有する3進多項式に作
用するが、ここで、Nは、鍵の強さによって決定される整数パラメータである。
メッセージは、いったん3進数に変換されると、多項式の正確な数を埋めること
は期待できない。そのため、最後の多項式を、ランダムな3進数でパディングす
る必要がある。メッセージが復号されたら、これらの3進数を無視することがで
きなければならない。
【0253】 そこで、メッセージマーカの終わりをメッセージに追加して、元のデータが終
了する位置を正確にデコーダに伝える。
【0254】 2進数を3進数に変換する方法では、決して、{0,1,0,-1,1,0,-1,-1,1,-1,-1,
-1}から{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}の範囲内の3進数からなる12
タプルを生成しないことに注意されたい。この範囲にある値はすべて、メッセー
ジマーカの終わりとして使用される。
【0255】 すでに述べたように、メッセージの最後のブロックは、19ビットに合わせて
パディングされ、必要ならば12タートに変換される。このブロックの直後に、
12タートの別の集合に、終わりマーカとしてメッセージが追加される。この終
わりマーカは、次のようにして計算される。
【0256】 1.Bを0〜375の範囲のランダムな整数と仮定し、Aを19ビットの不完
全集合内の最後のメッセージビットの個数であると仮定する。
【0257】 2.A+19xB+219を、19ビットの集合を前に変換したのとまったく同
じようにして12タートに変換する。得られた3進数の集合は、{0,1,0,-1,1,0,
-l,-l,1,-1,-1,-1}から{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}の範囲内にある
。これは、メッセージマーカの終わりである。多項式の余りは、ランダムな3進
数でパディングされる。
【0258】 もちろん、他の計算を使用して、メッセージマーカの終わりを作成する。もし
、結果がメッセージを表すために使用される可能な領域の外にある3進数の列で
あり、またメッセージマーカの終わりから、どれがメッセージの最後のビットで
あるかを判別できるとすればである。そのための1つの方法として、使用可能な
メッセージマーカの終わり領域を、19個の部分に分割し、最後の19ビットの
うちどれが実際のメッセージの終わりを表すかを示すマーカを適切な部分から選
択する(例えば、ランダムにあるいは実質的にランダムに)方法がある。
【0259】 メッセージブロックのパディングを、ブロックの先頭または終わりに配置し、
メッセージマーカの終わりを、得られた3進数のブロックの前または終わりに追
加することができる。ブロック内での方向は、任意であり、したがって、ブロッ
クを逆に考えたときに「後に...が続く」などの表現は、「の前に」という表
現を包含することができる。
【0260】 (コーディング例) この例の目的のために、最後のブロックに達したときに、元のメッセージの4
ビットのみが残されてエンコードすると想定する。この状況で、15個のランダ
ムビットを選択し、4個のメッセージビットと連結する。つまり、19のブロッ
クの0番目、1番目、2番目および3番目のビットは、元のメッセージに属して
おり、4番目、...、18番目のビットは、ランダムなパディングにすぎない
。したがって、Aは3に設定される。3番目のビットは、元のデータに属してい
る最後のビットだからである。19ビットのパディングされた集合は、通常通り
3進数に変換される。
【0261】 この後、メッセージマーカの終わりが選択される。最初に、ランダムなBを0
〜375の範囲から選択する。この例の目的のため、Bに122の値を与える。
そこで、次の計算を実行する。 A+l9xB+219 = 3+19x122+219 = 526609
【0262】 この整数の3進数への変換により、{1,0,0,1,0,1,-1,0,-1,-1,-1,-1}が得られ
る。
【0263】 これは、{0,1,0,-1,1,0,-1,-1,1,-1,-1,-1}よりも大きく、前の12タプルに
おいて、先行する3進数(右にあるもの)のうち4つすべてが−1に設定され、
後の12タプルにおいては、4番目の3進数が1であるという事実からはっきり
わかることに注意されたい。{1,0,0,1,0,1,-1,0,-1,-1,-1,-1}は、要求された終
わりマーカである。
【0264】 メッセージが復号されると、12タートの各集合が、次々に変換され19ビッ
トに戻される。通常の動作であれば、復号プロセスは、最終的に12タートのブ
ロックが範囲を外れ、19ビットに戻される。つまり、2進数に変換して戻す操
作を通じて得られた整数は、19個よりも多い有意ビットを有する(第8節を参
照)。
【0265】 この整数は、メッセージマーカの終わりである。このメッセージマーカの終わ
りが変換され2進数に戻された後、219がそこから引かれる。その結果を19で
割り、余りを取る。Aが返される。終わりマーカの直前にあるブロックの19ビ
ットのうち、0番目のビットからA番目のビットまでのビット列は、元のメッセ
ージビットとして保持される。残りのビットは、ランダムパディングであり、残
りの3進数とともに破棄することができる。
【0266】 (復号の例) この例の目的のために、前の例で計算した12タートのブロック{1,0,0,1,0,1
,-1,0,-1,-1,-1,-1}が、ちょうど復号プロセスで受信されたと想定する。これら
12タートが変換されて2進数に戻された場合、値526609が求められる。
これは、少なくとも219程度である(または、言い換えると、その2進数表現に
19よりも多い有意ビットが含まれるということである)。219を引いて、19
で割った余りを取ると、値3が得られる。したがって、19ビットの前のブロッ
クの0番目、1番目、2番目および3番目のビットは、有効なメッセージビット
であると結論される。他の15ビットは破棄することができる。
【0267】 もちろん、メッセージ転送に使用できない領域内からメッセージマーカの終わ
りを使用することは、上述の2進数から3進数への変換例に制約されるわけでは
なく、また、19ビットを12タートに変換する特定の例に制限されるわけでも
ないことは理解されるであろう。何らかの適当なアクセス不可能な領域が存在す
れば、法の変更を伴う他の変換も使用できる。
【0268】 (10.疑似乱数発生器) Tumbler(登録商標)は、2つの疑似乱数発生アルゴリズムを備えている(本
発明の出願者はそのうち第2のもののみ保護可能であると考えている)。両方の
アルゴリズムがSHA−1を使用して、入力されたシード値に基づいて予測不可
能なランダムに分散されたビットストリームを生成する。
【0269】 すべての疑似乱数発生器(RPNG)は本質的に決定論的であり、生成される
出力は、シード値と同程度に予測不可能でしかない。
【0270】 最初のTumbler(登録商標)アルゴリズムTSR(Tao SHA-1 Random)は、他
の多くの市販されているハッシュベース暗号RPNGと似た動作をする。Counte
rpaneからRSAとYarrowによって提供されるSHA1RandomおよびMD5Randomは、この
カテゴリに分類される。初期入力のハッシュ値が計算され、カウンタでこのハッ
シュ出力について繰り返しハッシュ値を計算し、ランダムビットストリームを生
成する。どの段階でも、さらに入力を追加することができ、これと現在の状態と
ともにハッシュ値を計算する。
【0271】 図9は、このような汎用PRNGが動作する方法を簡略化して示している。
【0272】 901.PRNGに「シード値」を与える、つまりすべての後続出力の基にな
る初期状態を与える。十分に予測できないデータを入力することでこれが達成さ
れるが、歪曲することがあり、したがって、疑似乱数データとしては使用できな
い。このようなデータは、通常、キーストロークやマウスの動きのタイミングな
どの現実世界のイベントを測定することにより得られる。このデータのことをエ
ントロピと呼ぶ。
【0273】 902.ハッシュ関数を使用して、任意に大きなエントロピ量のハッシュ値を
一緒に計算する。これにより、このエントロピに基づくサイズの確定している内
部状態が与えられる。このようなエントロピの予測不可能性は、そのサイズと同
じではあり得ない。エントロピの10ビットは、16個の可能な集合的な値しか
なく、したがって、4ビットの予測不可能性を有する。このハッシュステップを
使用して、十分な予測不可能性を保証する十分なエントロピを入力できる。
【0274】 903.902からの出力と、904のカウンタの値とを合わせて、PRNG
の内部状態が形成される。
【0275】 904.内部カウンタを使用して、出力の各ブロックを変化させる。カウンタ
は、ランダム出力の各ブロックとともに変化する。出力の各ブロックは、カウン
タに基づくため、これにより、異なる出力が生成される。
【0276】 905.他のハッシュインスタンスにより、第1のハッシュ903の結果とカ
ウンタ904とを組み合わせる。ランダムデータの新しいブロックが必要になる
ごとに、このハッシュを再び使用する。
【0277】 906.905のハッシュの結果は、疑似ランダムデータである。アプリケー
ションによっては、これは疑似ランダムビット列であってよい(必要というわけ
ではない)。
【0278】 TSRの正確な説明は次のとおりである。 H()をハッシュ関数、X‖YをXとYの連結、Cを整数カウンタ、Eiを乱
数発生器に加えるi番目のエントロピプール、PijをEの入力以降に生成された
ランダムデータのj番目の106ビットプール、SiをPijを生成する160ビ
ット内部状態と定義する。
【0279】 〜最初にアルゴリズムを初期化すると、カウンタC、i、およびjが0に設定
され、状態S00は160ビットすべてがアンセットされる。
【0280】 〜i番目のエントロピプールをPRNGに入力するとき、現在の状態がS(i-1 ) であるとすると、新しい状態Siは、H(S(i-1)‖Ei)となる。
【0281】 〜さらにデータが必要な場合、カウンタCが1だけインクリメントされ、新し
いプールPijは、H(Si‖C)となる。
【0282】 この方法は、エントロピ入力から暗号ビットストリームを限りなく生成するセ
キュリティの高いメカニズムとして機能するが、1つのハッシュ出力のサイズと
して内部状態を保持するだけであるという欠点がある。SHA−1は、160ビ
ットを使用し、現在一般にサポートされているハッシュアルゴリズムの最大桁サ
イズである。つまり、エントロピ入力の量にかかわらず、入力操作の間に生成さ
れる2160を超える異なるビットストリームはあり得ないということである。
【0283】 現代的な暗号法では、オブジェクト(秘密鍵など)を極めて大きな領域からラ
ンダムに選択することが望ましい。例えば、N=503のとき、NTRU PK
CSの秘密鍵は、2720個があり得る。2160の内部状態でPRNGを使用した場
合、シード値設定操作が1回だけだと、可能な鍵のうち少なくとも2520個はま
ったく選択できない。
【0284】 オブジェクトの作成時にシード値設定操作を実行するのは、常にごく単純な作
業である。シード値設定操作は、エントロピを要求し、エントロピを得るには、
現実世界を測定する。したがって、暗号が使用されているプラットフォームと現
実世界とのやり取りを正確に知っている必要がある。
【0285】 そこで、プラットフォーム独立な方法で十分にランダムなデータを得るという
問題に2つの解決法を提案する。
【0286】 第1は、自身で再シード値を設定するPRNGである。この方法は、比較的説
明しやすいが、この方法を採用するシステムに対する余分な要求条件があり、そ
のため準プラットフォーム独立でしかない。
【0287】 PRNGの基本的な内部メカニズムに変更はない。PRNGが動作することが
期待されるプラットフォームごとに、PRNGによって呼び出すことができる関
数が存在し、これによりPRNGにエントロピが供給される。
【0288】 PRNGは、通常通りランダムデータを生成するが、生成されるデータの量を
記録する。これは、PRNGの内部状態とさらに最後に供給されたエントロピの
予測不可能性と比較される。PRNGが内部状態とエントロピの予測不可能性の
うち小さい方と同程度の量のデータを生成した場合、プラットフォーム固有の関
数を呼び出し、さらにエントロピを要求する。
【0289】 第2の解決法は、これより複雑ではあるが、完全にプラットフォーム独立であ
るという利点がある。
【0290】 この基本原理では、PRNGを非常に大きな内部状態とともに使用する必要が
ある。このようなPRNGを生成する際の問題は、安全なハッシュが要求される
内部状態よりかなり小さい有限な出力を有するとき、暗号面の安全性を高めるこ
とにある。
【0291】 大規模PRNGのTumbler(登録商標)の実装は、TSR−LS(Tao SHA-1 R
andom-Large State)アルゴリズムである(上述の2つのTumbler(登録商標)ア
ルゴリズムのうちの第2のもの)。TSR−LSでは、複数の同時ハッシュ関数
を使用して、新しい生成操作ごとに元のシード値を再ハッシュする。これにより
、2048ビットの内部状態が得られ、22048個の異なるビットストリームを2
つの入力操作の間に生成できる。TSR−LSは、TSRよりも遅いが、動的再
シード値設定PRNGほどは遅くない。TSR−LSの動的再シード値設定PR
NGに勝る他の利点としては、後者では、シードデータをバラバラに使用するた
め、初期出力はシード値に依存しないという点があげられる。TSR−LSでは
、出力はすべてが、シード値のすべてに依存しており、2048ビットの状態の
違いは、出力のすべてのビットを変更する可能性を有する。
【0292】 TSR−LSでは、複数階層ハッシュ関数のシステムを使用する。簡単なバー
ジョンを図10に示す。ハッシュ関数はソフトウェアで実現できるが、あるいは
、ハードウェアによるハッシュ手段を備えることもできる。
【0293】 1001.エントロピは、第1層のハッシュ関数のそれぞれに等しく分割する
。ハッシュ関数の個数は、必要とする内部状態のサイズに依存する。シード値設
定プロセスは、使用するハッシュ関数が多いほど低速になるが、操作が進むうち
に時間は、ハッシュの個数に依存しなくなる。
【0294】 1002.まず、第1層のハッシュ関数の各々は、受け取るエントロピをハッ
シュする。
【0295】 1004.第2層のハッシュは、第1層のハッシュ1002のすべての出力を
取り込み、このすべてをまとめてハッシュする。このため、最終出力のすべての
ビットは、初期シード値のすべてのビットに基づく。
【0296】 1005.第2層のハッシュ1004からの出力により、PRNGの疑似ラン
ダム出力を形成する。
【0297】 PRNGを使用しているアプリケーションからさらにデータが要求されるごと
に、ハッシュ関数1002のいずれかが(ローテーションに基づいて)、カウン
タ1003を使用して再ハッシュ操作を実行する。この再ハッシュ操作は、上述
の通常状態のPRNGによって使用されているのと同じでもよい。
【0298】 1003.このカウンタを使用して、すべての再ハッシュ操作で各ハッシュ関
数が新しい出力を生成するようにする。ここで、以下の例において、初期出力を
カウンタのインクリメントとして使用する。各ハッシュ関数1002は、それ専
用のカウンタ1003を保持することができる。
【0299】 特定の再ハッシュ関数の再ハッシュされた出力は、第2層関数1004に供給
され、そこで他の関数1002から事前に受け取っている出力でハッシュし、必
要な新しい出力データ1005を生成する。このようにして、新しいデータの要
求が生じたときに、関数1002のうち1つだけデータを再ハッシュし、そのデ
ータを第2層関数1004に渡す。
【0300】 ハッシュ関数1002は、必要に応じてまた必要になったときに、プール10
01から追加エントロピを取得する。あるいは、追加エントロピは、ブロックで
一度にすべてを関数1002に供給することができる。
【0301】 TSR−LSの正確な説明は次のとおりである。 TSR−LSは、SHA−1ハッシュオブジェクトの5個の同時インスタンス
を使用する。H()、H0()、H1()、H2()、H3()はこれらのハッシュ
関数として定義され、X‖Yは上述のTRSとして定義され、C0、C1、C2
よびC3は、4つの160ビットカウンタとして定義され、I0、I1、I2および
3は、4つの160ビットインクリメントとして定義され、Eiは乱数発生器に
加えられるエントロピのi番目のプールとして定義され、Ei0、Ei1、Ei2、Ei3 は、各エントロピプールEiに対するエントロピの4つのサブプールとして定
義され、Pijは、Eiの入力以降に生成されたランダムデータのj番目の106
ビットプールとして定義され、Skは、生成されたk番目の160ビット中間状
態として定義される。
【0302】 〜このアルゴリズムが最初に初期化されるときに、C0、C1、C2、C3、I0
、I1、I2およびI3は、すべての160ビットをアンセットし、i=0、k=-1とす
る。
【0303】 〜i番目のエントロピプールがPRNGに入力されると、エントロピプールEi は分割され、n番目のバイトがエントロピのサブプールEia内に置かれ、ここ
で、aは4を法とするnの正の最小剰余である。バイトが、最後の、4の不完全
な集合の一部でないかぎり、バイトの最後の集合のビットは分割され、n番目の
ビットがエントロピのサブプールEiaに含まれ、ここで、aは4を法とするnの
正の最小剰余である。生成された最後の内部状態ブロックを、Skと定義する。
ハッシュ関数Ha()ごとに、エントロピのサブプールをそのハッシュに入力さ
れた前のデータのすべてと連結する。この連結のダイジェストを計算して、その
結果をSk+a+1内におく。
【0304】 〜さらデータが必要な場合、aは、4を法とするjの正の最小剰余から得られ
る。Caは、2160を法としてこの値を加えることにより、インクリメントIa
インクリメントする。次に、この値を、Ha()ですでにハッシュされている入
力に連結し、その結果を計算する。生成された最後の内部状態ブロックがSk
あったと仮定する。この場合、このハッシュの結果はSk+1に入り、新しいプー
ルPijは、H(S0‖S1‖...‖Sk+1)となる。
【0305】 (11.シーケンスジェネレータ) シーケンスジェネレータに、上で説明したMTA保護ハッシュにを使用する。
このジェネレータの目的は、入力シード値がわかっており、ストリームが決定論
的でなければならないことを除き、PRNGと似た方法で疑似ランダムビットの
ストリームを際限なく供給することである。任意に選択されたシーケンスを生成
する入力シード値を見つけたり、出力の一部から入力を計算することが計算上不
可能でなければならない。
【0306】 PRNGは決定論的であるため、シーケンスジェネレータは、指定されたPR
NGに既知のシード値を供給することにより実現できる。Tumbler(登録商標)
では、PRNGと少し異なる動作をする単純なシーケンスジェネレータを用意し
ている(PRNGを使用することもできるが)。
【0307】 SHA−1のインスタンスを使用して初期シード値をハッシュし、このハッシ
ュ出力自体を使用可能なシーケンスデータの最初の20バイトとして使用する。
その後、前の出力ブロックとハッシュ入力とを連結してハッシュを再計算するこ
とにより、新しいシーケンスデータを供給する。
【0308】 (12.ベクトル表現上の並列ビット演算を使用した効率的なモジュロ演算) Tumbler(登録商標)では、ビットベースの技術を使用して小さな法でモジュ
ロ演算を実行する新しい方法を使用している。
【0309】 この方法では、ビット(つまり、2進数)ベースのデバイスを使用してモジュ
ロ演算を効率的に実行できる。これは、数値をベクトル形式で格納し、ビット単
位の論理演算の単純列を使用して、複数の数値に対し算術演算を並列実行するこ
とにより行う。この方法を使用すれば、どの基底でも効率のよいモジュロ演算を
実行できる。しかし、効率は、基底が小さいときに最大となる。Tumbler(登録
商標)は、この方法をPKCSの3進数演算の実行に使用する。
【0310】 (12.1 モジュロ演算の詳細な説明) 正の整数基底rに対する、rを法とする算術演算は、整数r「剰余類」の間の
演算に関する。「剰余類」は、rで除算したときの共通の余りを共有する整数か
ら成り立っている。
【0311】 例えば、法7に関して、64と15とは、両方とも同じ剰余類に属する。 64=9×7+1, 15=2×7+1
【0312】 2つの整数の和または積を任意に与えられた整数で割った後の余りは、その同
じ整数でそれぞれの加数または因数を割った後の余りにのみに依存する。したが
って、剰余類の間の演算を考えることができる。
【0313】 剰余類の間の加算、減算および乗算は、剰余類から任意に選んだ代表元の間の
通常の整数算術演算と同じように行われる。通常、前者は、各剰余類から元を1
つ取り出して、代表元の集まりを選ぶ。これらは、通常、正の最小値からなる集
合(つまり、{0,1,...,r-1})または最小絶対値からなる集合({[-r/2]+1,...,0
,...,[r/2]})のいずれかである。
【0314】 モジュロ演算は、理論的には、一般化された整数算術演算よりもかなり単純で
ある。しかし、現代のデジタルデバイスは、一般化された整数算術演算を取り扱
うように作成されており、モジュロ演算の実行が非常に不効率である。
【0315】 (12.2 マシンに関する仮定) そこで、nビットのワードを使用し、以下のビット単位の論理演算を実行でき
るデバイスが存在していると仮定する。
【0316】 2進演算XORは、両方の入力ワードの対応するビットが両方ともセットされ
ていないか、または両方ともクリアされていない場合、およびその場合に限り、
各ビットがセットされたワードを返すように定義されている。
【0317】 2進演算ANDは、両方の入力ワードの対応するビットがセットされている場
合、およびその場合に限り、各ビットがセットされたワードを返すように定義さ
れている。
【0318】 2進演算ORは、入力ワードのいずれかまたは両方の対応するビットがセット
されている場合、およびその場合に限り、各ビットがセットされたワードを返す
ように定義されている。
【0319】 単項演算NOTは、入力ワードの対応するビットがクリアされている場合、お
よびその場合に限り、各ビットがセットされたワードを返すように定義されてい
る。
【0320】 (12.3 ベクトル表現) ここで説明している方法のポイントは、数値のベクトルビット単位の表現にあ
る。
【0321】 デジタルデバイスは、通常、あるワードの隣接するビットに2進形式の整数を
格納する。このため、「半加算器」などの、ビット間の桁上げが可能な回路を使
用する。ベクトル表現では、数の値は、異なるワード内の対応する位置にあるビ
ットにより表現される。これらのビットの値は、数の2進数形式に関係する必要
はない。後の例の3進数で示されているように、ビットを新しい方式で解釈する
ことで、効率が高まるだけでなく、その他の付随する利点が得られる。
【0322】 2つの整数の間の単一モジュロ算術演算を実行することは、通常の整数方式を
使用するよりもベクトル表現を使用したときのほうがかなり効率が悪い。これは
、数値を表す2×[log2 r]個のワードを組み合わせると、一般的に、O(log3 r)回
の演算が必要になるためである。
【0323】 しかし、出願者は、ベクトル表現の利点が無限の並列安定性にあると理解して
いる。同時に実行可能な同じ演算の回数は、ワードのサイズでのみ制限される。
【0324】 (12.4 3進数表現) そこで、3進数の3つの可能な値(3進数の表現)が0、1および−1である
と仮定する。これは、任意の決定であり、システムはこれら3つの3進数の名前
とは独立に適用する。
【0325】 3進数は、2つの異なるワード内の対応する場所を占有する2つのビットによ
り表される。第1のワード内にあるビットは、3進数の値が0でない場合、およ
びその場合にかぎセットされる。第2のワード内にあるビットは、3進数の値が
1の場合、およびその場合にかぎセットされる。したがって、3つの3進数0、
1および−1は、それぞれ、ベクトル<0,0>、<1,1>および<1,0>で表される。こ
のようにして、nタートは、2つのnビットワードで表すことができる。
【0326】 (例) 4つの3進数0、0、−1および1のベクトルビット単位の表現を使用すると
仮定する。上で指定されたベクトルを使用すると、次の表が得られる。
【0327】
【表5】
【0328】 ここで、1番目のビットと2番目のビットを別々に取り出して格納すると、こ
の情報を2つの別々の4ビットワード、つまり0011(1番目のビット)およ
び0001(2番目のビット)として取り扱うことができる。次に、例えば、演
算XOR、AND、ORまたはNOTを使用して、個々の3進数にではなく、ま
たベクトルにでもなく、ワード自体に対しモジュロ演算を実行することができる
。これにより、どんなにたくさんの3進数を同時に操作するとしても、オーバー
フローや桁上げを扱う状況を回避できる。
【0329】 モジュロ演算を実行する効率的な方法が提案されるほかに、このビットの解釈
により、第1の配列を調べることにより単に2を法として3進数の値を求めるこ
とができる。アルゴリズムは、0と0以外の3進数を区別することに注目するこ
とが多いため、これは、通常の2進形式に対し大きなメリットとなっている。
【0330】 対応するビットの対があり、第1のワード内のビットがクリアされている場合
、第2のワードにあるビットはセットされることはまったくない。しかし、シス
テムはこのことに依存する必要はない。
【0331】 同様な原理は、もちろん、3以外の基底に関するモジュロ演算に適用すること
、例えば、基底5で演算を実行することもでき、このアプローチは、3つの別々
のワードを操作し、ベクトル表現内のすべての第1ビットを表す第1、すべての
第2ビットを表す第2、およびすべての第3ビットを表す第3に対し行う。さら
に大きな基底についても機能する。
【0332】 (12.5 3を法とする演算) 3を法とする演算は、次のようにして計算される。
【0333】 X〜0およびX1は、n個の3進数x0、...、xn-1を表す2つのnビットワ
ードであり、対応する3進数が0でない場合に、ワードX〜0はセットされたビ
ットを含み、対応する3進数が1の場合に、ワードX1はセットされたビットを
含む。同様に、Y〜0およびY1は、n個の3進数y0、...、yn-1を表す2つ
のnビットワードである。
【0334】 n個の3進数の対(xi,yi)を、それぞれ3を法としてi=0から(n-1)について加
算すると、Z〜0およびZ1、つまり3進数x0+y0(mod 3)、...、xn-1+yn-1(mod 3
)が得られ、この結果は次のように計算される。 Z1= (X〜0 XOR Y1) AND (X1 XOR Y〜0)、 Z〜0= (X〜0 XOR Y〜0) OR (X1 AND Y1) OR Z1
【0335】 xiからyiの値を、それぞれ3を法としてi=0から(n-1)について減算すると、
〜0およびZ1、つまり3進数x0-y0(mod 3)、...、xn-1-yn-1(mod 3)が得られ
、この結果は次のように計算される。 Z〜0= (X〜0 XOR Y〜0) OR (X1 XOR Y1) Z1= (Y〜0 XOR X1) AND ((NOT Y1) OR X〜0) AND Z〜0 n個のタートペア(xi,yi)を、それぞれ3を法としてi=0から(n-1)について乗
算すると、Z〜0およびZ1、つまり3進数x0×y0(mod 3)、...、xn-1×yn-1(mod
3)が得られ、この結果は次のように計算される。 Z〜0= (X〜0 AND Y〜0)、 Z1= (NOT (X1 XOR Y1)) AND Z〜0
【0336】 体F3では、2つの非ゼロ元である1と−1のみが自己逆元となっている。し
たがって、除算は、乗算と区別できない。
【0337】 (12.6 ハードウェアとソフトウェア) この方法は、ハードウェアでは実装が簡単であり、図11、12および13に
示されている回路図からわかる。図11は、3を法とする加算の回路図、図12
は、3を法とする減算の回路図、図13は、3を法とする乗算の回路図を示して
いる。
【0338】 ソフトウェアでは、この方法により、スケーラブルな並列化が可能であるが、
それは、任意長のワードの全幅を利用できるからである。
【0339】 (12.7 Tumbler(登録商標)での使用) Tumbler(登録商標)PKCSでは、3を法とする多項式を使用するが、これ
は、係数すべてが法3に関してのみ意味のある値を有する多項式である。アルゴ
リズムのさまざまな段階で、これらの多項式を互いに加減算する必要がある。特
に、現在の鍵生成システムの実装は、「Almost Inverse algorithm」(第3節を
参照)またはユークリッドアルゴリズムを使用し、3を法とする多項式で実行す
る。これらのアルゴリズムは、多項式同士の加減算が必要である。暗号解読シス
テムは、2つの3を法とする多項式の合成積(星型乗算(star-multiplication
))を必要とする。星型乗算アルゴリズムは、さらに、多項式同士の加減算が必
要である。
【0340】 2つの多項式を加えるには、それぞれの多項式から対応する係数の値を加算す
る。第1の多項式からの第1係数の値を、第2の多項式の第1係数の値に加えて
、その合計の第1係数の値を出力する、というように続ける。
【0341】 第1の多項式が、上記のように2つのビット配列X1およびX〜0で表され、第
2の多項式が2つのビット配列Y1およびY〜0で表される場合、2つの多項式の
多項式和は、4つの配列に対する次の3を法とする加算を実行することにより計
算できる。 Z1= (X〜0 XOR Y1) AND (X1 XOR Y〜0)、 Z〜0= (X〜0 XOR Y〜0) OR (X1 AND Y1) OR Z1
【0342】 同じことが減算についても成り立つ。各多項式を2つのビット配列として格納
することにより、上記の減算方法を使用して2つの多項式の差を計算することが
できる。
【0343】 Tumbler(登録商標)の各多項式は、503個の係数を有することができ、こ
の方法をとると速度が著しく高まる。
【0344】 モジュロ演算に対するこのようなアプローチは、デジタルデータ処理の分野の
アプリケーションに一般的に見られ、暗号システム内の使用に限られない。
【図面の簡単な説明】
【図1】 Tumbler(登録商標)における鍵生成システムを示す図である。
【図2】 暗号システムを示す図である。
【図3】 暗号解読システムを示す図である。
【図4】 誤り訂正アルゴリズムを示す図である。
【図5】 ラッピングエラーの概念を示す図である。
【図6】 ラッピングエラーの概念を示す図である。
【図7】 ラッピングエラーの概念を示す図である。
【図8】 係数に関する誤りをチェックする順序を示す図である。
【図9】 典型的な従来技術の疑似乱数発生器(PRNG)を示す図である。
【図10】 Tumbler(登録商標)内のPRNGを示す図である。
【図11】 3を法とする加算を示す回路図である。
【図12】 3を法とする減算を示す回路図である。
【図13】 3を法とする乗算を示す回路図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CO,CR,CU,CZ,DE ,DK,DM,DZ,EC,EE,ES,FI,GB, GD,GE,GH,GM,HR,HU,ID,IL,I N,IS,JP,KE,KG,KP,KR,KZ,LC ,LK,LR,LS,LT,LU,LV,MA,MD, MG,MK,MN,MW,MX,MZ,NO,NZ,P L,PT,RO,RU,SD,SE,SG,SI,SK ,SL,TJ,TM,TR,TT,TZ,UA,UG, US,UZ,VN,YU,ZA,ZW (72)発明者 ダニエル シェルトン イギリス アールジー1 3キューエイ リーディング セント バーソロミューズ ロード 51 Fターム(参考) 5J104 JA21

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 秘密鍵fを使用して暗号多項式eを解読する方法であって、
    (a)qを整数、a=f*e(mod q)として、試行多項式aを計算すること、 (b)前記試行多項式aに基づいて、多項式eが正しく復号されたか否かを決定
    し、正しく復号されていなければ、 (i)前記試行多項式aのどの係数が、復号の失敗の原因となったであろうか
    を決定し、 (ii)前記係数を調整して新しい試行多項式を定義し、および、 (iii)前記新しい試行多項式を使用して前記暗号多項式eの復号を試みる
    こと を備えたことを特徴とする方法。
  2. 【請求項2】 前記試行多項式aの少なくともいくつかの前記係数は、復号
    の失敗の原因であることの各々の期待値に応じて並べ替えられ、最大の期待値を
    有する係数は、前記新しい試行多項式を生成するように調整されることを特徴と
    する請求項1に記載の暗号多項式を解読する方法。
  3. 【請求項3】 前記新しい試行多項式が復号に失敗する事象において、次に
    大きな期待値を有する係数は、他の新しい試行多項式を生成するように調整され
    ることを特徴とする請求項2に記載の暗号多項式を解読する方法。
  4. 【請求項4】 新しい試行多項式は、eを適切に復号する試行多項式が見つ
    かるまで、または復号の試行が放棄されるまで、期待値の逆の順序で前記係数を
    調整することにより、繰り返し生成されることを特徴とする請求項3に記載の暗
    号多項式を解読する方法。
  5. 【請求項5】 前記試行多項式aの少なくともいくつかの前記係数は、単独
    でまたはグループで、復号の失敗の原因であることの各々の期待値に応じて並べ
    替えられ、最大の期待値を有する係数または係数のグループは、前記新しい試行
    多項式を生成するように調整されることを特徴とする請求項1に記載の暗号多項
    式を解読する方法。
  6. 【請求項6】 前記新しい試行多項式が復号に失敗する事象において、次に
    大きな期待値を有する係数または係数のグループは、他の試行多項式を生成する
    ように調整されることを特徴とする請求項5に記載の暗号多項式を解読する方法
  7. 【請求項7】 新しい試行多項式は、eを適切に復号する試行多項式が見つ
    かるまで、または復号の試行が放棄されるまで、期待値の逆の順序で前記係数お
    よび係数のグループを調整することにより、繰り返し生成されることを特徴とす
    る請求項6に記載の暗号多項式を解読する方法。
  8. 【請求項8】 係数または係数のグループの期待値は、前記各々の係数値に
    応じて決定されることを特徴とする請求項2ないし7のいずれかに記載の暗号多
    項式を解読する方法。
  9. 【請求項9】 前記期待値は、前記各々の係数値と事前定義された係数値と
    の近接、または事前定義された最大および最小の要求された値に応じて決定され
    ることを特徴とする請求項8に記載の暗号多項式を解読する方法。
  10. 【請求項10】 前記期待値は、誤り訂正ルックアップテーブルに保持され
    た値を参照して決定されることを特徴とする請求項8または9に記載の暗号多項
    式を解読する方法。
  11. 【請求項11】 前記試行多項式aの計算は、qを法とする正の最小剰余に
    還元することを含むことを特徴とする請求項1ないし10のいずれかに記載の暗
    号多項式を解読する方法。
  12. 【請求項12】 前記事前定義された係数値は、q/2であることを特徴と
    する請求項10および11に記載の暗号多項式を解読する方法。
  13. 【請求項13】 前記多項式eが正しく復号されたか否かの決定は、qを法
    として前記多項式aを最小絶対剰余に還元することを含むことを特徴とする請求
    項1ないし12のいずれかに記載の暗号多項式を解読する方法。
  14. 【請求項14】 前記多項式eが正しく復号されたか否かの決定は、前記多
    項式aとpを法とするfの逆元Fpとの合成積を計算し、pを法として還元する
    ことを含むことを特徴とする請求項13に記載の暗号多項式を解読する方法。
  15. 【請求項15】 前記係数は、整数値xを加算または減算することにより調
    整されることを特徴とする請求項1ないし14のいずれかに記載の暗号多項式を
    解読する方法。
  16. 【請求項16】 xは、q rem pで定義されることを特徴とする請求項14
    および15に記載の暗号多項式を解読する方法。
  17. 【請求項17】 qは、2の因数であることを特徴とする請求項1ないし1
    6のいずれかに記載の暗号多項式を解読する方法。
  18. 【請求項18】 qは、64、128または256であることを特徴とする
    請求項17に記載の暗号多項式を解読する方法。
  19. 【請求項19】 pは、3であることを特徴とする請求項14に記載の暗号
    多項式を解読する方法。
  20. 【請求項20】 請求項1ないし19のいずれかに記載されている方法を実
    行することを特徴とするコンピュータプログラム。
  21. 【請求項21】 請求項20に記載されているコンピュータプログラムを実
    行することを特徴とする物理的キャリア。
  22. 【請求項22】 請求項20に記載されているコンピュータプログラムを表
    すことを特徴とするデータストリーム。
JP2001588160A 2000-06-01 2001-05-24 暗号多項式の解読 Pending JP2003535362A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0013399.1 2000-06-01
GBGB0013399.1A GB0013399D0 (en) 2000-06-01 2000-06-01 Decryption of cipher polynomials
PCT/GB2001/002327 WO2001093495A1 (en) 2000-06-01 2001-05-24 Decryption of cipher polynomials

Publications (1)

Publication Number Publication Date
JP2003535362A true JP2003535362A (ja) 2003-11-25

Family

ID=9892834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001588160A Pending JP2003535362A (ja) 2000-06-01 2001-05-24 暗号多項式の解読

Country Status (10)

Country Link
US (1) US20040078414A1 (ja)
EP (1) EP1287638B1 (ja)
JP (1) JP2003535362A (ja)
KR (1) KR20030028747A (ja)
AT (1) ATE334524T1 (ja)
AU (1) AU2001258624A1 (ja)
CA (1) CA2410607A1 (ja)
DE (1) DE60121763D1 (ja)
GB (1) GB0013399D0 (ja)
WO (1) WO2001093495A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2148463A3 (en) * 2001-10-19 2015-04-22 Panasonic Intellectual Property Management Co., Ltd. A numerical array output device, a numerical array output method, an encryption device, and a decryption device
CN100535962C (zh) 2004-05-12 2009-09-02 松下电器产业株式会社 加密系统、加密装置、解密装置和集成电路
US7792286B2 (en) * 2005-04-18 2010-09-07 Panasonic Corporation Signature generation device and signature verification device
KR100790511B1 (ko) * 2006-11-03 2008-01-02 김경원 암호화 및 복호화 시스템과 암호화 및 복호화 방법
US9780948B1 (en) * 2016-06-15 2017-10-03 ISARA Corporation Generating integers for cryptographic protocols
CN106254059B (zh) * 2016-07-26 2020-03-20 华为技术有限公司 一种运算方法和安全芯片
US10812252B2 (en) 2017-01-09 2020-10-20 Microsoft Technology Licensing, Llc String matching in encrypted data
US11196539B2 (en) 2017-06-22 2021-12-07 Microsoft Technology Licensing, Llc Multiplication operations on homomorphic encrypted data
US10541805B2 (en) 2017-06-26 2020-01-21 Microsoft Technology Licensing, Llc Variable relinearization in homomorphic encryption
US10749665B2 (en) 2017-06-29 2020-08-18 Microsoft Technology Licensing, Llc High-precision rational number arithmetic in homomorphic encryption
DE102017117899A1 (de) * 2017-08-07 2019-02-07 Infineon Technologies Ag Durchführen einer kryptografischen Operation
US10218494B1 (en) * 2018-02-23 2019-02-26 ISARA Corporation Performing block form reductions modulo non-Mersenne primes in cryptographic protocols

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797921A (en) * 1984-11-13 1989-01-10 Hitachi, Ltd. System for enciphering or deciphering data
US5054066A (en) * 1988-11-16 1991-10-01 Grumman Corporation Error correcting public key cryptographic method and program
JP4068664B2 (ja) * 1996-08-19 2008-03-26 エヌティーアールユー クリプトシステムズ,インコーポレーテッド 公開鍵暗号システム方法および装置
US6959085B1 (en) * 1999-05-03 2005-10-25 Ntru Cryptosystems, Inc. Secure user identification based on ring homomorphisms

Also Published As

Publication number Publication date
AU2001258624A1 (en) 2001-12-11
DE60121763D1 (de) 2006-09-07
US20040078414A1 (en) 2004-04-22
KR20030028747A (ko) 2003-04-10
ATE334524T1 (de) 2006-08-15
CA2410607A1 (en) 2001-12-06
WO2001093495A1 (en) 2001-12-06
GB0013399D0 (en) 2000-07-26
EP1287638A1 (en) 2003-03-05
EP1287638B1 (en) 2006-07-26

Similar Documents

Publication Publication Date Title
EP1290544B1 (en) Pseudo-random number generator
KR101267109B1 (ko) 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법
US7907725B2 (en) Simple universal hash for plaintext aware encryption
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
US20020051537A1 (en) Method and apparatus for realizing a parallelizable variable-input-length pseudorandom function
US20040083251A1 (en) Parallel modulo arithmetic using bitwise logical operations
US20040078570A1 (en) Method of protecting a cryptosystem from a multiple transmission attack
JP2003535362A (ja) 暗号多項式の解読
EP1287641B1 (en) A method of validating an encrypted message
JP2003535499A (ja) メッセージの終わりのマーカ
AU5342000A (en) A method of combining a serial keystream output with binary information