JP2003535500A - 暗号化されたメッセージの妥当性を確認する方法 - Google Patents

暗号化されたメッセージの妥当性を確認する方法

Info

Publication number
JP2003535500A
JP2003535500A JP2001588162A JP2001588162A JP2003535500A JP 2003535500 A JP2003535500 A JP 2003535500A JP 2001588162 A JP2001588162 A JP 2001588162A JP 2001588162 A JP2001588162 A JP 2001588162A JP 2003535500 A JP2003535500 A JP 2003535500A
Authority
JP
Japan
Prior art keywords
message
polynomial
hash
value
bits
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
JP2001588162A
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 JP2003535500A publication Critical patent/JP2003535500A/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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

Landscapes

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

Abstract

(57)【要約】 暗号化されたメッセージの妥当性を確認する方法であって、(a)メッセージ(P)をメッセージ多項式(mi)として表すことと、(b)メッセージ多項式(mi)を暗号化して暗号多項式(ei)を形成することと、(c)メッセージ多項式と暗号多項式を表す第1と第2のハッシュ関数入力のハッシュ値を計算して1つまたは複数のハッシュ出力(Bi)を生成することと、(d)暗号多項式により定義された暗号化メッセージと前記1つまたは複数のハッシュ出力の両方を受信者に送信することを含む方法。この方法は、公開鍵暗号システムに特に応用することができる。

Description

【発明の詳細な説明】
【0001】 本発明は、暗号化メッセージの妥当性を確認する方法に関するが、特に、公開
鍵暗号システムには限られない。
【0002】 本発明は、そのさまざまな態様において、NTRU PCT特許出願WO 98/08323(「NT
RU特許出願」)で開示されている各種暗号化および暗号解読アルゴリズムととも
に使用するのが好ましい。ただし、後述のまたは請求項に定義された本発明の態
様はいずれも、その特定の文脈で使用することに制限されないことを理解すべき
である。
【0003】 本発明は、さまざまな態様において、さらに後述のような方法を実行するコン
ピュータプログラム、そのようなコンピュータプログラムを表すデータストリー
ム、およびそのようなコンピュータプログラムを伝送する物理的伝送媒体キャリ
アにまで拡張される。本発明はさらに、そのような方法を実行するように適合さ
れ、または構成された装置およびシステムまで拡張される。
【0004】 本発明の一態様では、秘密鍵fを使用して暗号多項式eを解読する方法が提示さ
れており、これは、 (a)qを整数、a=f*e(mod q)として、試行多項式aを計算するステップと、 (b)試行多項式aを基に、多項式eが正しく復号されたかどうかを判別し、正し
く復号されていなければ、 (i)復号失敗の原因となった可能性のある試行多項式aの係数を決定し、 (ii)前記係数または複数の係数を調整して新しい試行多項式を定義し、 (iii)新しい試行多項式を使用して暗号多項式eの復号を試みるステップを含
む。
【0005】 このアプローチは、個々の誤りの識別を試み、できる限り訂正しようとするも
のであり、これにより、個々の誤りを追跡せずに試行多項式a全体を一度に訂正
しようとする従来技術のアプローチに比べて効率が著しく向上する。
【0006】 さらに効率を高めるためには、このアルゴリズムを(発生時に)復号失敗の原因
となった可能性のある試行多項式の係数をアプリオリに決定するようにするのが
好ましい。また、復号の失敗の原因に関するそれぞれの期待値に応じて係数を並
べ替えることが好ましい。次いで、期待値の最大から最小への順序で係数を取り
出して、1つずつ調整する。各調整の後で、新しい(調整済み)試行多項式に基づ
いてさらに暗号多項式の復号を試みる。それが失敗した場合、次の係数を試す。
この作業を、暗号多項式が復号されるかまたは復号の試みが放棄されるまで繰り
返す。
【0007】 代替構成では2つまたは3つ以上の係数が正しくない可能性を考慮して、多項式
のさらに複雑な順序付けを計算することができる。このアプローチでは、単独ま
たはグループでの復号の失敗の原因に関するそれぞれの期待値に応じて多項式内
の係数を並べ替える。次いで、期待値が最大となる係数または係数のグループを
調整して、新しい試行多項式を生成する。それが失敗した場合、次の係数または
係数のグループを取り出して、適切な調整を行う。このプロセスを、暗号多項式
が適切に復号されるかまたは復号の試行が放棄されるまで繰り返す。
【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つで、ハッシュ
値を再度計算し、新しいハッシュ値出力を生成するのが好ましい。前記の新しい
ハッシュ値出力を第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,Y1)の双方に関し実行するステップとを含むことが好ま
しい。
【0059】 第1のワードまたはそれぞれの第1のワードはともに一方の場所に格納し、第2
のワードまたはそれぞれの第2のワードはともに、もう一方の間隔をあけた別の
場所に格納することが好ましい。これを達成するために、第1の格納手段および
第2の格納手段が提供されるであろう。
【0060】 一実施形態では、演算対象の数値および/または他の数値は、3を法として演算
が行われ、たとえば、3進数つまりタートで表現できる。
【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】 本発明は、さまざまな方法で実施することができるが、例示によって添付の図
面を参照しながらの特定の、好ましい一実施形態について説明する。
【0068】 1.はじめに Tumbler(商標)は、本発明の出願人にかかる暗号開発者ツールキットの商品
名である。これは、多数の異なる暗号アルゴリズムと非アルゴリズムスペシフィ
ックAPIを備えており、NTRU Corporationによって開発されているNTRU PKCSアル
ゴリズムだけではないが、主にこれを中心として、構築されている。詳細につい
ては、「Hoffstein, Pipher and Silverman、NTR U:A Ring-Based Public Key C
ryptosystem、J P Buhler(ed)、Lecture Notes in Computer Science 1423、Spr
ing-Verlag、Berlin、1998、267-288」とNTRU Cryptosystems, Inc.名義のPCT特
許出願第W098/08323号とに記載されている。全体を通して後者の文書を「NTRU特
許出願」と呼ぶことにする。
【0069】 このアルゴリズムは、暗号法の現状が打破されたことを示している。従来の「
巨大整数」ベース製品の世界から決別したこのアルゴリズムは、多項式混合法に
基づいてより効率的で安全なシステムを構築する。しかし、裸のアルゴリズムは
暗号製品として使用できるのにはほど遠い。間に数多くの機械類が必要である。
NTRUの場合、その独特のスタイルは、優れた特長の源泉でもあるが、このアルゴ
リズムを扱うためこのような装置を再発明する必要があることを意味する。
【0070】 本明細書では、Tumbler(商標)に含まれるNTRU PKCS(Public Key Cryptosyst
em)の独特な実装について説明する。NTRU PKCSを実用的な暗号ツールとして実装
しようとして直面したいくつかの問題について概要を述べ、これらの問題を解決
するためにTumbler(商標)で革新的な手法を使用する方法について説明する。
【0071】 Tumbler(商標)内で使用されているこれらの革新的手法の多くは互いに独立
しており、単独でまたは選択した任意の組合せにより使用することもできること
は理解されるであろう。たとえば、誤り訂正、メッセージエンドマーカ、チェッ
クメカニズム、大規模な状態疑似乱数発生器、モジュロ演算の使用、および複数
の送信攻撃からの保護などの手法はすべて、Tumbler(商標)の好ましい実施形
態に含まれているが、単独でまたは組み合わせて使用することがきる。また、Tu
mbler(商標)は、NTRU特許出願で述べているように、主に、NTRU PKCSアルゴリ
ズムを中心として構築されるが、この革新的手法のほとんどは応用範囲がかなり
広い。
【0072】 1.1 オリジナルのNTRU PKCS特許出願 NTRU特許出願では、公開鍵と秘密鍵という2つの関連する多項式を作成する方
法を説明している。次に、公開鍵を使用してメッセージを多項式形式で暗号化形
式に変換する方法について説明する。この暗号化されたメッセージは安全である
が、それは、暗号化されたメッセージと公開鍵のみを知ってオリジナルのメッセ
ージを取り出す作業は、現在の技術では合理的な時間内に実行するにはかなり複
雑すぎるからである。通常、暗号化形式もまた秘密鍵が分かれば、オリジナルの
メッセージを復元できるためメッセージを安全に転送(または格納)する手段の提
供が可能である。
【0073】 1.2 不完全解 通常、秘密鍵と暗号化形式を使用するとオリジナルメッセージを復元できる。
メッセージを復元できない場合、これは、ラッピング欠陥またはギャップ欠陥と
呼ばれるエラーのためである。最初は、ラッピング欠陥は所定の方法で簡単に復
旧でき、またギャップ欠陥はまれにしか発生しないため無視できると信じられて
いた(NTRU特許出願p.31、第1.3節)。しかし、ラッピング欠陥を修復する推奨方
法では誤りを是正できないことが多く、またギャップ欠陥はしばしば発生するた
め使い勝手に大きく影響することが明らかになった。また、誤り検出の問題もあ
った。メッセージを解読しようとする人は通常オリジナルを所有していないため
、そのメッセージが正しく解読されたかどうかを知ることは困難であった。
【0074】 項を計算する場合、任意のデータファイルは2進数からなる任意の長さの文字
列である。オリジナルのNTRU特許出願に記述されているように暗号法により固定
長の3進多項式が暗号化される。したがって、データファイルを固定長の3進多項
式列に変換し、また得られた多項式列を元のデータファイルに戻せるような方法
を提供する必要がある。
【0075】 暗号を通常使用している間、攻撃者と呼ばれる多くの人々が常時それを破ろう
としている。NTRU PKCSを使用する場合、暗号化されたメッセージと公開鍵のみ
を知ってオリジナルのメッセージを取り出す作業は、かなり複雑すぎるため、現
在の技術では適当な時間内に実行することはできない。攻撃者がこれを解決する
には、暗号化されたメッセージと公開鍵だけでなくそれ以上の情報を取得するこ
とが必要である。
【0076】 暗号を用い方によっては、攻撃者が暗号を破るために使用できる補足情報を実
際に取得する可能性がある。これに対しては、このような操作を許す形で暗号を
使用しないことにより容易に解決する事ができる。しかし、場合によって制限が
強すぎ、実用上問題となることがある。まったく同じメッセージを複数回送信す
ることが望ましい場合、または潜在的攻撃者によりアクセスされる可能性のある
自動化システムをセットアップしたい場合を以下に取りあげる。
【0077】 NTRU特許出願では、暗号法の理論的アルゴリズムについて説明しているが、実
際のマシンでこのアルゴリズムを如何に実行するかということについては説明し
ていない。理論的には、このアルゴリズムは、ステップが比較的少なくかつ現代
のコンピュータが素早く実行できる数学理論を採用しており、したがって生来的
に高速である。しかし、本出願では、このアルゴリズムを劇的に高速化する手法
を考案した。
【0078】 1.3 Tumbler(商標)での解決法 NTRU PKCSのTumbler(商標)での実装により、理論と実用との間のギャップに
橋が架けられる。また、これは、NTRUに含まれる進歩に基づく多数の新しい手法
も含み、暗号、データ信号処理、およびコンピューティングの他の分野であって
も使用できる。
【0079】 誤りを検出し、ラッピング欠陥とギャップ欠陥の両方を訂正する方法について
以下で詳述する。暗号をデータ機密保護の実用的な手段として使用できるように
するためには、暗号解読されたメッセージの完全性に依存できるようにする必要
がある。NTRU特許出願で説明されているオリジナルの方法を後述する検出および
訂正システムとともに使用することにより、これが最終的にそのケースであると
確信される。
【0080】 首尾一貫した「ビットからタート」変換方式は、オリジナルの「メッセージエ
ンドマーカ」システムとともに機能し、標準のコンピュータデータファイルとNT
RU PKCS多項式との間のインターフェイスをとる。
【0081】 Tumbler(商標)は、NTRU PKCSと同時に動作するプロセスを含み、またこれに
より、ユーザはまったく同じメッセージを複数回送信したり、潜在的攻撃者によ
るアクセスがあり得る自動化システムを、暗号法のセキュリティを低下させるこ
となく使用したりすることができる。
【0082】 Tumbler(商標)のNTRU PKCS実装の開発者は、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よりもかなり大きいと仮定する必要があることに注意されたい。Tumble
r(商標)の実装では、通常3であり、qは通常、Nのサイズに応じて64、128、ま
たは256である。他の実装では他の値を使用することもできる。
【0085】 切り捨て整数多項式の環R=Z[X]/(XN-1)を使用する。要素F∈Rは、多項式また
はベクトルとして次のように書かれる。
【0086】
【数1】
【0087】 Rにおける加算および乗算は、通常の多項式の演算とまったく同じように実行
される。ただし、乗算は法(XN-1)による還元を必要とする。
【0088】 記号*は、Rにおける乗算を表す。この*乗算は、巡回畳み込み積として次の式
で明示的に定義される。
【0089】 F*G=H ただし、
【0090】
【数2】
【0091】 これは、係数が「折り返し」することを除き通常の多項式乗算とまったく同じ
であり、XNの係数は定数係数と組み合わされ(追加され)、XN+1の係数はXの係数
と組み合わされ、というようになることに注意されたい。
【0092】 実際、通常は、pまたはqを法とする多項式の係数の値に関心がある。実際、演
算の多くは、環Zp[X]/(XN-1)またはZq[X]/(XN-1)で実行されると考えられるが、
pとqの両方を法として還元された単一多項式の剰余を考慮するのが望ましい。
【0093】 乗算をモジュロ(つまり)qを法として実行する場合、qを法として係数を還元す
ることになる。
【0094】 整数pを法として還元を行うときに覚えておくべき2つの有用な規則がある。
【0095】 ・a(mod p)+b(mod p)=(a+b)(mod p)、 ・(c(mod p)x a(mod p))(mod p)=(c x a)(mod p)、
【0096】 Rは体ではない。しかし、NTRUパラメータは、適切に選択された多項式がRにお
いて逆元を持つ確率が非常に高くなるように選択されている。Rは、一意分解整
域であるため、もしそのような多項式が存在するとすれば、その逆元は一意に定
まる。
【0097】 Lmは、pを法とする係数を持つRのすべての多項式からなる。Lf、Lg、およびL
φの元も、pを法とする係数を持つが、あらかじめ定められた重みが付けられて
いる。LgおよびLφの多項式は、それぞれ、正確にdg(N)個およびdφ(N)個の値1
をもつ係数とそれぞれ、正確にdg(N)個およびdφ(N)個の値-1をもつ係数とを有
し、残りの係数はすべて値が0である。Lfの多項式は、df(N)個の値1をもつ係数
とdf(N)-1個の値-1をもつ係数とを有し、残りの係数はすべて値が0である。Lf
多項式は、1個少ない値1をもつ係数を有し、そのため、逆元を求めることができ
る。
【0098】 3.概要 Tumbler(商標)暗号システムは、鍵生成システム、暗号化システム、および
暗号解読システムの3つの独立したシステムで形成される。このセクションでは
、これら3つのシステムのそれぞれについて簡単に調べ、多数の基本プロセスか
らそれぞれを構築する方法の概要を説明する。
【0099】 NTRU特許出願では、符号化と復号化を非常に単純な2または3ステップのプロセ
スとして記述している。Tumbler(商標)の実装にあたっては、多数の追加機能
を導入しており、これらのプロセスをより複雑なものにしている。後述のプロセ
スは各々、フロー図を用いて説明する。これら3つのフロー図とNTRU特許出願か
らの均等物とを比較することは興味深い(図3、4、および5)。
【0100】 鍵生成システムの場合、このプロセスは比較的単純なままである。しかし、鍵
生成の効率性においては、大きな優位性が達成された。
【0101】 3.1 鍵生成 ここでは、図1に示されているとおり、鍵生成システムを説明する(NTRU特許出
願の図3と比較)。
【0102】 101.このアルゴリズムでは鍵生成システムはパラメータNおよびqを取る。NTRU
特許出願で使用するパラメータpは3に固定されている。ただし、他の値も使用で
きる。
【0103】 102.NTRU特許出願(p.31、第1.2節)で説明しているように、秘密鍵多項式fを
、Nに依存する集合Lfからランダムに選択する。
【0104】 103.3を法としてfの逆元を計算する。「ユークリッドアルゴリズム」を使用す
る代わりに、もっと効率の良い「Almost Inverse Algorithm」を使用する。この
アルゴリズムは、論文「Fast Key Exchange with Elliptic Curve Systems' by
Richard Schoeppel, et al(Advances in Cryptology-CRYPTO 95、Lecture Notes
in Computer Science 973, ed.D.Coppersmith、Springer-Verlag、New York、1
995、pp.43-56)」で取りあげられていた。逆元が存在しない可能性がある。この
場合、102に戻り、新しいfを選択する。このアルゴリズムを実装する際に、ベク
トル表現に対する並列ビット演算による高速モジュロ演算のプロセスを使用する
(詳細については、第12節を参照)。
【0105】 104. 2を法としてfの逆元を計算することを除き、103の場合と同様である。こ
のアルゴリズムを実装する際に、ベクトル表現に対する並列ビット演算による高
速モジュロ演算のプロセスを使用する(第12節を参照)。
【0106】 105.素数を法とする逆元が与えられた場合、ブートストラッピングと呼ばれる
よく知られている数学的手法を使用し、その素数のべき乗を法としてそれから逆
元を計算することができる。これにより、2を法とする逆元からq(常に2のべき乗
)を法とする逆元を計算することができる。ブートストラッピングでは、次の原
理を使用する。Fが素数のべき乗pmを法とするfの逆元であるとすると、2F-f*F2
はp2mを法とするfの逆元となる。
【0107】 106.fと同様の方法で、ただし集合Lgから、gをランダムに選択する。
【0108】 107.これは、使用しやすくするために因数p(p=3)が含まれていることを除き、
NTRU特許出願で実行する計算と同じである(図3、ステップ350)。
【0109】 108.秘密鍵は、ペアf、F3である。
【0110】 109.次に、公開鍵hを公開することができる。これは、ステップ107で計算した
ものである。
【0111】 3.2 暗号化 ここでは、図2に示されているようなTumbler(商標)暗号化システムを説明す
る。これは、NTRU特許出願(図4)で説明されているオリジナルの暗号化システム
と比較対照すべきである。
【0112】 図2では、記号‖を使用して、いずれかの側へのオブジェクトの連結を示して
いる。
【0113】 201.暗号化システムは、オリジナルのメッセージデータ(平文)P内で不定長の
バイト(2進)列として、公開鍵多項式h、アルゴリズムパラメータNおよびq、およ
び必要ならば、多重伝送攻撃(Multiple Transmission Attack)保護鍵長(MTA鍵
)kを取る。このプロセスではさらに、SHA-1ハッシュ関数H()を使用する。SHA-1
は、米国政府の国立標準技術研究所のSecure Hash Standards(FIPS 180-1)で定
義されている。
【0114】 平文Pは、適当な標準2進表現に従って暗号化される実際の英数字(またはその
他の)メッセージを表すことが、当然に理解されるであろう。
【0115】 202.多重伝送攻撃保護が、暗号に必要とされる場合、符号化の前の平文に適用
される(第7節を参照)。ゼロでないkについて、kバイトの乱数データ(K)を生成し
、それらのバイトを使用して、シーケンスジェネレータのシード値とする(第11
節を参照)。MTA保護を使用しない場合、k=0、K=φとするが、シーケンスS(K)は
論理的にすべて0であるとみなされる。実際、すべて0の列では何も生じない。こ
れは、S(φ)と同じものではない。
【0116】 203.MTA鍵kは、暗号への入力について平文の最初のkバイトを形成する(第7節
を参照)。これに続いて、オリジナルの平文データバイトとシーケンスジェネレ
ータの出力とのXORが取られる(第11節を参照)。XORを取った平文を符号化するに
は、2進データを3進データに変換し、暗号に使用される3進多項式(m)を埋める必
要がある(第8節を参照)。これらの3進数、つまり「タート」は、PKCS暗号により
処理されるメッセージ多項式を形成する。処理されないままのタートが、N個よ
りも少ない場合、残りのタートは次のメッセージ多項式内に入れられ、207でメ
ッセージエンドマーカが作成される。
【0117】 204.十分な数のタートが未処理のままである限り、メッセージ多項式は次のN
から構築され、暗号化される。平文データが費やされて、次のメッセージ多項式
を埋めるにはタートが不十分な場合、207でメッセージエンドマーカが作成され
る。
【0118】 205.ランダム多項式を選択し、公開鍵を乗じる。積多項式をメッセージ多項式
に加える。このプロセスは、パラメータpが公開鍵に組み込まれていることを除
いてNTRU特許出願(図4、ステップ450)で説明しているのと同じである。得られた
暗号多項式をパックしてバイトを埋め、チェックハッシュ関数に入力し、その後
、係数ごとに2ビットを使用するメッセージ多項式が続くが、これもパックして
バイトを埋める。チェックハッシュを計算して、暗号多項式の終わりに連結する
(第6節を参照)。このハッシュからの出力がブロックBiを形成する。
【0119】 206.メッセージ多項式を暗号化してから、平文の次のNタートを使用して次の
多項式に進む。
【0120】 207.タートに変換するためこの平文データが正確な数のメッセージ多項式を埋
めたり、さらには19ビットの正確な倍数を埋めたりすることはあり得ない。203
、204、205、および206で説明したプロセスを使用して完全に埋めることができ
るすべての多項式が処理されたら、メッセージエンドのメカニズムを使用して最
後のメッセージ多項式を完了する(第9節を参照)。このメカニズムにより、12タ
ートのメッセージエンドマーカが作成される。このマーカは、平文に含まれ、最
後の完了のメッセージ多項式には収められないことがある。この場合、メッセー
ジエンドマーカはあふれて、別のメッセージ多項式の中に入るであろう。必要な
らば、最後の多項式をランダムタートで完了する。
【0121】 208.最後の未完了平文メッセージ多項式とメッセージエンドマーカを含む最後
のメッセージ多項式(または、場合によっては最後の2つのメッセージ多項式)が
他のすべてのメッセージ多項式と同じようにして暗号化される。
【0122】 209.関連するチェック情報であるチェックブロックがすぐ後に続く、バイトを
埋めるようにパックされているが、最後の未完了バイト(もし存在すれば)がゼロ
で埋められている暗号化された多項式の各々の連結は、暗号化されたメッセージ
(暗号文)を形成する。
【0123】 3.3 暗号解読 ここでは、図3に示されているようなTumbler(商標)暗号解読システムを説明
する。これは、NTRU特許出願(図5)で説明されているオリジナルの暗号解読シス
テムと比較対照すべきである。
【0124】 301.暗号解読システムは、アルゴリズムパラメータNおよびqにおいて、暗号文
E、秘密鍵多項式fおよびF3、誤り訂正レベル、および必要ならばMTA鍵kを取る。
このプロセスではさらに、SHA-1ハッシュ関数H()を使用する。図3では、記号‖
を使用して、いずれかの側へのオブジェクトの連結を示している。
【0125】 302.iは特定の暗号化された多項式を順番に参照するために使用するカウンタ
である。Rは、MTA保護がそのまま適用される暗号解読された平文データを含む(
第7節を参照)。
【0126】 303.単に209で使用しているパックシーケンスを逆転するだけで、各々の暗号
化された多項式および関連チェックブロックを暗号文から再構築する。
【0127】 304.メッセージに秘密鍵を乗算し、その後、秘密鍵の逆元を乗算する。これは
、誤り訂正のために必要な場合に最初の乗算の結果を記録することを除きNTRU特
許出願(図5、ステップ570および580)で説明されているプロセスと同じである。
【0128】 305.ハッシュを、205(第6節を参照)のeiおよびmiと同じようにしてeiおよびbi から作成し、暗号解読された多項式biをメッセージ多項式miとして取り扱う。こ
のハッシュを送信されたチェックブロックBiと比較する(暗号化メッセージの妥
当性を確認する)。誤り訂正を多項式上で使用する必要がある場合、このような
ハッシュの多くを同じeiで計算しなければならないことがある。したがって、ei の入力の後、ただしbiの入力の前にハッシュ関数の状態を記録すると効率的な場
合がある。
【0129】 306.送信されたチェックブロックが305で作成したハッシュと一致する場合、
復号された多項式biはオリジナルのi番目のメッセージ多項式として受け付けら
れる。これらのメッセージ多項式のタートをビットに戻す必要がある(第8節を参
照)。この変換は、12タートの複数の集合で実行される。
【0130】 307.ビット-タート変換により、19ビットの集合が12タートの可能な集合の部
分集合に変換される。これは、12タートからなる集合がこの部分集合に属する場
合ビットに戻すために渡され、属さない場合19ビットの変換された集合ではなく
、メッセージエンドマーカである(第9節を参照)。
【0131】 308.タートはビットに変換され(第8節を参照)、結果はRに連結される。Rは、
もちろん、2進文字列(バイト列を表す)である。
【0132】 309.前の多項式を復号した後、暗号解読システムは次の暗号化された多項式に
進む。
【0133】 310.送信されたチェックブロックが305で作成したハッシュと一致しない場合
、復号された多項式biはオリジナルのi番目のメッセージ多項式ではない。
【0134】 311.オプションの誤り訂正がアクティブな場合、誤り訂正システムがオリジナ
ルのメッセージ多項式の復元を試みる(第5節を参照)。
【0135】 312.誤り訂正システムがその成功不成功を報告する。成功した場合、結果のbi (304で計算したのと異なるbi)が次のメッセージ多項式として受け付けられ、暗
号文が通常どおり続く。
【0136】 313.誤りが発生し、訂正されなかった場合、そこに到達する。したがって、オ
リジナルの平文は復元できない。ほとんどの場合、メッセージ全体がこの段階で
破棄される。これは、PKCSのほとんどの使用では手を加えていなメッセージ全体
が必要だからである。しかし、得られた平文のどのバイトが現在の不正なメッセ
ージ多項式に関係しているかを単純に記録し、ステージ306にスキップし、通常
通り続けることも可能である。正確でないメッセージ多項式から直接変換された
平文ビットのみが影響を受ける。
【0137】 314.12タートの範囲外の集合は、メッセージエンドマーカを示す。タートの前
のすべてのブロックが、ビットに変換され、Rに連結される。最後に、メッセー
ジエンドメカニズムを使用してこのブロックが解釈される(第9節を参照)。これ
は、Rに含まれるビットのいくつかを除去する必要がある場合がある。まだ変換
されていなかったタートは破棄される。
【0138】 315.この段階で、RはMTA保護がそのまま適用される平文データである。最初の
kバイトにより、MTA鍵kが形成される。これらは、シーケンスジェネレータS(K)
のシード値を与えるために使用される。MTA保護を使用しない場合、k=0、K=φと
するが、シーケンスS(K)は論理的にすべて0であるとみなされる。実際、すべて0
の列では何も生じない。これは、S(φ)と同じことではない。S(K)からの出力とR
とのXORを取って、Pを出力する(第7節を参照)。
【0139】 316.復元された平文データは、実際のメッセージのバイトを表す2進文字列Pで
ある。
【0140】 4.復号の失敗 毎回NTRUアルゴリズムを使用して暗号多項式を復号するごとに、復号してオリ
ジナルのメッセージ多項式に戻せないという事態が発生する確率が、小さいがあ
る。
【0141】 秘密鍵fを使用して暗号多項式eを解読するために、まず、
【0142】 a≡f*e(mod q)
【0143】 を計算するが、その際に、aの係数は-q/2+1からq/2の区間内で選択する。aを整
数係数の多項式として取り扱うと、メッセージ多項式は、通常、以下の式を計算
することにより復元できる。
【0144】 Fp*a(mod p)、
【0145】 ただし、Fpはpを法とするfの逆元である(Fp*f≡1(mod p))。
【0146】 多項式aは以下を満たす。
【0147】 a≡f*e≡f*φ*h+f*m(mod q) =f*pφ*Fq*g+f*m(mod q) =pφ*g+f*m(mod q)
【0148】 この最後の多項式pφ*g+f*mを考察する。適切なパラメータの選択により、ほ
とんどすべての場合に、係数はすべて-q/2+1からq/2の範囲に収まり、qを法とし
て係数を還元しても変化しないようにすることが可能である。つまり、qを法と
してf*eの係数を-q/2+1からq/2の区間に還元すると、正確に以下の多項式が復元
されるということである。
【0149】 a=pφ*g+f*m
【0150】 「適切なパラメータの選択」とは、主に、第2で定義した値dg(N)、dφ(N)、お
よびdf(N)に関係している。これらの値が低いほど、多項式g、φ、およびfの係
数が0である割合が大きくなる。この結果、上記の多項式内の係数が0に近くなる
確率が大きくなる。しかし、これらの値は、さらに、それぞれの種類の可能な多
項式がいくつあるかを示しており、したがって、暗号文のセキュリティがどの程
度効果的かを示す。これらの値が十分に大きければ、g、φ、およびfに対する可
能な値が多すぎて、攻撃者が妥当な時間内に正確な値を推測できないであろう。
こらの値が小さく、上記の多項式の係数が-q/2+1からq/2の範囲を外れる可能性
がない場合、暗号文のセキュリティが損なわれるであろう。
【0151】 Tumbler(商標)で使用するパラメータの選択により、多項式
【0152】 pφ*g+f*m
【0153】 が-q/2+1からq/2の範囲外にある係数を持つ確率がおおよそ1/10000となる。つま
り、いくつかの係数の値は復号の最初のステップの間±qで変換され、したがっ
て、3を法とする変更された値を持つことになる。
【0154】 図5、6、および7は、ラッピングエラーの例を視覚化したものである。
【0155】 図5は、qを法として正の最小剰余に還元された多項式f*eの例をグラフにした
ものである。50個の係数が、その値に相対的な高さのところに配置された点で表
される(0からqの範囲)。これは、復号プロセスを通じて半分ほどデコーダによっ
て復元される多項式である。多項式は、正の最小剰余類を使用して表示され、コ
ンピュータ内の2のべき乗を法として最も単純に還元することによって、これら
の剰余類内の数を残される。メッセージを復元するために、多項式は、最小絶対
剰余類(-q/2+1からq/2の範囲)にシフトされなければならない。しかし、多項式
の現在の形式には、不正確にラップする可能性が最も高いすべての係数を多項式
の中心に集められるという利点がある。このゾーンは、グラフ上で強調表示にな
っている(501で示されている領域)。
【0156】 図6は、qを法として最小絶対剰余類にシフトされていることを除き、図5と同
じ多項式を示している。図5で501で示されていた領域は、ここでは、2つに分割
されており、601および602で示されている。図5で502で示されていた係数は、q/
2の線分の真上にあり、したがって、qだけ下にシフトされており、グラフの下部
にある(603で示されている)。これは、オリジナルのメッセージ多項式を復元す
るためのF3との合成積が取られる多項式の形式である。
【0157】 図7は、多項式pφ*g+f*mのグラフであり、5および6にグラフが示されている多
項式に関係している。この多項式は、qを法として還元されないが、その係数は
すべて-q/2+1からq/2の範囲内に収まり、図6の多項式が厳密な一致になることが
期待される。そうならば、メッセージは誤りなしで復元される。これは、適切な
パラメータを選択した場合、ごく一部の場合を除くすべての場合になされる。こ
の例では、703で示されている係数は、指定された範囲を外れている。つまり、
図6に示されている多項式f*eは、qを法として場合この多項式と等価であるが、
同じではなく、また3を法とした場合は等価ではない。係数701は、図6で603で示
されている位置までラップされている。
【0158】 誤りが発生したかどうかを知ることができる何らかの手段が存在していること
が重要である。多項式φはエンクリプタにしか認識されず、多項式gおよびfはデ
コーダにしか認識されないため、ラッピング欠陥が発生するかどうかを予測する
ことは不可能である。障害を検出するには、暗号化/暗号解読プロセスでオリジ
ナルのデータの完全性を確認する何らかの種類のチェックハッシュを使用する。
このようなチェックは、ある種の形態の攻撃を防止するために必要である。
【0159】 復号の失敗を検出するためのTumbler(商標)で採用しているメカニズムにつ
いては、第6で詳述しており、これらの誤りを訂正する手段については次の第5に
詳述する。
【0160】 5.誤り訂正 ラッピングエラーは、NTRU暗号が提案されたときに認識されていた問題である
(NTRU特許出願、p.31、第1.3節)。しかし、これを解消するために提案されたル
ーチンには欠陥があり、さまざまなラッピング欠陥の訂正を行えなかった。この
方法では、3の倍数により上から多項式aをシフトする操作が必要だった。このた
め、不正確にラップされている係数の値が、ラップされないように変化して、3
を法として還元したときに係数の値を改変しなかった。残念なことに、これによ
り、範囲内の他端にある値をもつ係数が不正確にラップされることが、しばしば
であった。これはこの場合事前には発生しなかったであろう。
【0161】 提案されたラッピング誤り訂正も、ギャップ欠陥として知られている誤りを訂
正できなかった。これは、不正確にラップされた係数の値が同じ符号の正しくラ
ップされた係数と少なくとも同程度に0に近い場合発生する。これは、元々、問
題として考えられておらず、これらの障害は非常にまれなものと思われていた。
実際には、ギャップ欠陥は、1000万個の多項式に1つの割合で発生し、これは多
くのアプリケーションで十分に多いといえる。
【0162】 Tumbler(商標)の誤り訂正システムの原理は単純である。誤りがあればそれ
を見つけて訂正するというものである。
【0163】 困難な点は、単純に見ると、2つの可能な仕方で間違っていると思われる係数
がN個あるという点である(3を法として取り扱ったとき)。また、複数の同時誤り
もありうる。したがって、考えられるすべての誤りをチェックするには、考えら
れるすべての3進数多項式をそれが機能するまで試してみることと同等の作業が
必要である。暗号の性質上、これは考えられないほどの時間がかかる。さらに、
誤りが復号の失敗を原因としない場合さえあり、送信のエラーや攻撃者による故
意の改変が原因の場合がある。
【0164】 Tumbler(商標)の解決法は、考えられるすべての誤りが元々等しいわけでは
ないという事実に基づく。誤りの考えられる原因を、最も可能性の高いものから
最も可能性の低いものへと順序付けた場合、誤りの原因について極めて効率の良
い検索を実行できる。実際、復号の失敗の原因で最もよくあるのが、(Tumbler(
商標)で現在使用しているパラメータの選択に対して)10000のうちほぼ9999の誤
りという原因である。
【0165】 第4の復号の失敗の原因を思い起こすと、このアルゴリズムパラメータは、特
定の多項式の係数がほとんどいつでも-q/2+1からq/2の範囲内にあるように選択
されていた。この範囲内になければ、復号の失敗が発生したと言われる。実際、
係数がこの範囲を外れる確率は、多項式ごとに1/10000である。2つの係数がこの
範囲を同時に外れる確率は、多項式ごとに1/100000000未満、さらに同時の誤り
についても同様である。また、係数がこの範囲を外れる場合、ほとんどいつでも
、わずかだけ範囲を外れる。距離が大きいほど、係数がその範囲からその距離だ
け外れる可能性が低くなる。
【0166】 さらに、係数は、この範囲のすぐ上に入る場合、この範囲の下側にラップされ
るであろう。係数がこの範囲のすぐ下に入る場合、上側にラップされる。最初の
ケースでは、値はqだけ小さすぎる、つまりxが3を法とするqの正の最小剰余とす
ると、3を法としてxだけ小さすぎるということである。後者のケースでは、xだ
け大きすぎる。
【0167】 これは、誤りを見つける単純な手段となっている。-q/2+1からq/2の範囲の上
側および下側に最も近い値がチェックされ、(値が範囲の下側にあるのか上側に
あるのかに応じて)xを加えたり引いたりして3を法として値を訂正することが試
みられる。
【0168】 図8は、図5と同じグラフを示している(第4で説明している)。直線q/2を囲む領
域が強調表示されており、801で示されている。この領域内にある係数は、誤り
の原因となる可能性が最も高いものである。最初の5個の係数に、直線q/2に近い
順に802、803、804、805、806とラベルを付ける。誤る可能性の最も高い原因は
、値がxだけ小さすぎる802で示されている係数である。これは正確には、第4で
説明した誤りであり、この係数の値にxを加えると、実際に、誤りが訂正される
【0169】 これらの誤りを訂正するために採用すべき正確な方法は、暗号文の使用と、実
装されるプラットフォームに大きく依存する。アルゴリズム例を以下に示す。こ
の方法では、訂正試行をできる限り速く何回も実行することで効率化できるとい
う考えが前提となる。しかし、10000のうち9999の誤りが最初の試行で訂正され
る。速度の点で、可能な最も短い時間で最も可能性の高い誤りをチェックし、そ
の最初の試行が失敗した場合に検索を続行するのに必要な作業のみを行うことが
ベストであると思われる。
【0170】 誤りは、10000個の全多項式で1回のオーダーでしか発生しないので、速度差は
平均すると小さく、流れ速度が一定であることが問題になる場合にのみ重要であ
る。ここで説明した方法にはいくつかの利点がある。適切なGの表(以下参照)を
用意すると、これは妥当な時間内にすべての復号誤りを修正する。最初の数ステ
ップで、オリジナルのデータを非常に効率の良い形式で格納することができ、オ
リジナルのqを法とするデータは再度参照する必要はまったくない。
【0171】 図4は、次の誤り訂正アルゴリズムのフロー図である。NTRU特許出願では同等
のアルゴリズムは提示されていない。このフロー図は、復号システムを記述する
フロー図のもう片方として設計される(図3を参照)。
【0172】 401.誤り訂正ルーチンではアルゴリズムパラメータNおよびqを使用している。
これはさらに、秘密鍵の逆元F3を使用するが、秘密鍵自体ではない。
【0173】 訂正レベルにより、誤り訂正ルーチンをどれだけ続けるべきかどうかが決定さ
れる。誤り訂正はゼロ以外の値でなければならず、さもなければ、誤り訂正ルー
チンは最初の場所では決して呼ばれなかったであろう。ほとんどすべての誤りが
非常に高速に訂正される。訂正レベルにより、誤りが復号の失敗以外の原因であ
る確実度を調整できる。誤りの原因が送信にある場合、随意に高い訂正レベルで
あると、プロセスが随意に長い時間の間続くことになる。既存の誤りは、最初の
数回の試行で訂正される可能性が極めて高い。したがって、非常に迅速に、未検
出の誤りの確率が無視できるくらい小さい、あるいは多項式で復号できない事態
がメッセージの送信時に発生した問題が原因である可能性が高いと結論づけるこ
とが可能である。
【0174】 訂正ルーチンは、qを法とする半分復号された多項式aiと暗号多項式eiを取り
込む。これらは、復号システムによって使用される多項式に関係する(図3を参照
)。eiは、チェックブロックを作成するときにしか使用されない。新しいチェッ
クが必要になったときに、新しいハッシュインスタンスを入力するのではなく、
eiを入力した後ハッシュ関数の状態を記録してからこの状態に戻ることによりハ
ッシュ状態にeiを繰り返し入力するのを避けることができる。
【0175】 表Gjkは実験にもとづいて構築され、さまざまな数の同時発生誤りを種々の深
度で訂正する順序を制御することができる。ほとんどすべての誤りは即座に訂正
されるため、第1の対のエントリを超えてこの表の理想的な値を決定することは
難しい。事実上、正確な値はほとんど重要でない。
【0176】 402.訂正されたレベルは、訂正レベルと比較するために使用される単なるカウ
ンタである。
【0177】 値jは、表Gとともに使用される。これにより、現在Gのどの行が使用されてい
るかがわかる。
【0178】 値xからは、qを法として不正確にラップされた値が3を法としてどれだけ変更
されているかがわかる。より一般的には、NTRU特許出願のpの値が3以外の値に選
択された場合、xは次の式で計算される。
【0179】 x=q rem p
【0180】 qを法とする多項式を中心化するというのは、(0を中心とする)最小絶対剰余類
にシフトすることである。-q/2+1からq/2の範囲を使用する必要はないことに注
意されたい。代わりに、-q/2からq/2-1の範囲を使用することもできる。
【0181】 403.この時点で、-q/2とq/2への値の近さによりaiの係数の順序を決めるリス
トを作成する。正確にq/2に等しい値がステップ402で下にラップされた場合、負
の値の係数は同じ絶対値を持つ正の値の係数の前にリストされ、-q/2に正確に等
しい値が上にラップされた場合はその逆となる。図8で説明されている例では、
このリストは、802、803、804、805、および806というラベルの付いている係数
からこの順序で始まる。値自体ではなく範囲の端からのそれぞれの係数の値の距
離のみを記録することも可能である。ここで値全体を使用して、プロセスを簡単
にたどれるようにしている。
【0182】 404.3を法として還元した後、オリジナルのqを法とする多項式aiはもはや使用
されない。
【0183】 405.kは初期化される。これにより、チェックが行われる同時誤りの個数が制
御される。まず、不正確にラップされている係数についてチェックが行われる。
【0184】 406.ここで、表から行うべきチェックの現在の深度を取る。表の第1行にある
場合、チェック手順は深さ0から始まる。値が前回のjの値以下の場合、407には
チェックされていないkタプルはなく、アルゴリズムは次のkの値にそのままスキ
ップする。
【0185】 407.アルゴリズムは、±q/2から一定距離以内にある値を持つ係数のすべてのk
タプルを検索する。この際、まだチェックされていないkタプルが残されている
かどうかを判別する。低い深度で検索時にチェックされたkタプルは、再チェッ
クする必要はない。
【0186】 408.値すべてが所定の範囲内にある係数のkタプルが選択される。このkタプル
は、アルゴリズムの前回の反復で選択されたkタプルと区別されなければならな
い。次に、選択されたkタプルの値を変えて、qを法とする可能なミスラップに対
し3を法として補正する。
【0187】 409.変更されたai'を使用して、復号プロセスを完了する。
【0188】 410.復号された多項式および暗号多項式が完全性チェックに合格したかどうか
を確認するチェックを行う。
【0189】 411.完全性テストに合格した場合、biは次に暗号解読される多項式として受け
付けられる。
【0190】 412.可能なkタプルが尽きた場合、検索は±q/2から可能なより大きな距離に拡
大される。
【0191】 413.表Gの(j,k)の値から、kの現在の値についてkタプルでの誤りの検索を停止
する深度を取得する。
【0192】 414.検索を意図する範囲のどこまで検索したかを記録するカウンタをインクリ
メントする。専用カウンタを設置するよりも、この方法をとるほうが明らかに経
済的である。
【0193】 415.このときに、訂正されたレベルが与えられた訂正レベルに達したかどうか
を確認するチェックを行う。
【0194】 416.復号された多項式でステージ411において停止せずに指定された訂正レベ
ルに関する限りチェックを実行している場合、検索は放棄され、多項式は訂正さ
れない。現実的に、最低限の訂正レベルでは、これは誤りの原因が復号の失敗以
外の場合にのみ発生する。
【0195】 417.訂正手順が実行される同時誤りの個数を増やす。
【0196】 418.Gの行の終端は0になっている。終わりに達すると、kはリセットされ、シ
ングルトンの誤りの検索が再び開始される。
【0197】 419.アルゴリズムは、Gの次の行に移動する。
【0198】 以下の例は、表Gの使用法を詳細に示している。
【0199】 例 ai=45-ll7x-127x2-45x3-117x4 q/2=128
【0200】 インデックス 値 符号 0 45 + 1 117 - 2 127 - 3 45 - 4 117 -
【0201】 インデックス2は、最大絶対値を持つ係数に対応する。インデックス1および4
の係数は、同じ絶対値と同じ符号を持ち、それら2つのうちいずれがリスト上位
に来るかはまったく任意である。この例の残りについては、1がリストの最初に
記述される。インデックス0および3は、絶対値は同じで符号が異なるため、-127
から128の範囲を使用すると仮定すると、3が先となる。
【0202】 したがって、この結果、順序は{(2,-127),(1,-117),(4,-117),(3,-45),(0,45)
}となる。
【0203】 q=128=3 * 42+2。したがって、x=2。
【0204】 簡単にした次の表Gjkを考える。
【0205】 k=1 k=2 k=3 k=4 j=1 3 2 0 0 j=2 11 11 4 0 j=3 11 11 5 0 j=4 15 12 11 1
【0206】 この表は、誤りをチェックする最適な順序を示している。誤りが発見され訂正
される場合、任意の段階でチェック手順は停止する。
【0207】 手順は、-128または128に等しいシングルトンの誤りを訂正する試みから始ま
る。何もないため、-128から-127の範囲、または127から128の範囲でシングルト
ンを進める。これらの範囲には、順序付けの例における最初のインデックスによ
り示されているようなもの、たとえば、2が含まれる。この係数は負であるため
、アルゴリズムでは2を加えて訂正しようとする。この例の目的のため、これが
失敗すると仮定する。
【0208】 G(1,1)=3なので、-128から-126または126から128の範囲内でシングルトンを訂
正し続ける必要がある。その範囲にそれ以上のシングルトンはない。
【0209】 このときに、ペアを訂正してみるのがよい。しかし、G(1,2)=4で指定される最
大範囲内にペアはない。G(1,3)=0、したがって、Gの次の行に切り替えて、もう
一度シングルトンの誤りの検索を開始する必要がある。
【0210】 検索は、前の行で止めたところから深度3で開始し、リストを下へ最大深度10
までシングルトンを探す。10で、さらに2つの潜在的誤りが見つかる。もう一度
、これらの誤りの訂正が失敗したと仮定する。
【0211】 そこで、深度4で検索を止めたところから始めて、誤りのペアについて訂正を
さらに試みる。深度10に達すると、その範囲に3つの係数が見つかり、したがっ
て、3つの潜在的ペアがある。インデックス2がリスト内の最初にあるので、これ
らのペアは(2,1)、(2,4)、そして最後に(1,4)という順序で訂正される。
【0212】 この例については、これらのペアの1つが実際に誤りの原因であったと仮定す
る。しかし、実際には誤りはほとんどいつでも、最初の数回の試行で訂正される
ことに注意されたい。
【0213】 6.テキスト認識対応 暗号システムにおいて暗号化されたデータが関連する平文の有効なエンコーデ
ィングであるかどうかを判別できれば、平文認識対応であるという。これは、通
常、ある種のチェックハッシュにより実現される。
【0214】 その使用にもよるが、平文認識対応でないシステムは攻撃を受けやすい場合が
ある。システムの認識対応の欠如につけ込む攻撃は、次のように行われる。
【0215】 攻撃者が符号化されたメッセージを横取りする。攻撃者は次に、符号化された
メッセージを少し修正してから、元々の宛先の受信者に送信する。
【0216】 このわずかな修正によりときに、メッセージが無効な暗号文、つまり平文を符
号化した形式ではない可能性のある暗号文に変えられる可能性がある。このよう
な場合、デコーダは、メッセージを解読できず、一般的には、メッセージの復号
に失敗したという通知を送信者(このシナリオでは攻撃者)に送る。
【0217】 あるいは、修正されたメッセージが有効な暗号文である場合もあり得る。この
ような場合、デコーダはメッセージを復号して解釈しようと試みる。符号化時に
修正されているため、デコーダはメッセージの意味を理解できない可能性がある
が、これは攻撃には無関係である。
【0218】 攻撃者は、このプロセスを数回繰り返し、各段階でどの修正により有効な暗号
文ができたかを記録する。その結果を分析することにより、攻撃者はオリジナル
のメッセージの一部を判別することができる。
【0219】 Tumbler(商標)では、このアプローチをさらに取り挙げ、平文と暗号文の両
方に基づいて自動的に定期的ハッシュチェックを作成する。このため、Tumbler
(商標)は一般に「テキスト認識対応」と呼ぶことができる。
【0220】 Tumbler(商標)では、SHA-1(Secure Hash Algorithm 1)を使用して、それぞ
れの符号化された多項式のチェックハッシュを計算するのが好ましい。SHA-1は
、米国政府の国立標準技術研究所のSecure Hash Standards(FIPS 180-1)で定義
されている。
【0221】 メッセージ多項式が符号化されるごとに、オリジナルのメッセージ多項式とそ
の結果である暗号文多項式の両方をSHA-1アルゴリズムのインスタンスへの入力
として使用する。
【0222】 符号化の間、暗号文多項式がまず入力として取り込まれるが、これにより、復
号エラーが発生した場合に復号プロセスがスピードアップされる。送信のため暗
号文多項式をまずパックして、後述のようにバイトに埋める。最初の係数を表す
のに必要なビットを最初のバイトの最下位端に置く、というように続け、最後の
バイトを必要ならばビットをアンセットして終わらせる。
【0223】 次にメッセージ多項式をパックしてバイトに埋め、このときに各係数は2つの
ビットで表される。対応する係数が0の場合は両方のビットがセットされず、対
応する係数が-1の場合は最初のビットがセットされ、第2のバイトがアンセット
され、対応する係数が1の場合は両方のビットがセットされる。最初のビットが
アンセットされているときに第2のビットがセットされることはない。
【0224】 パックされた暗号文およびメッセージ多項式が連結され、SHA-1アルゴリズム
を使用して一緒にハッシュされる。ハッシュされた(暗号化されていない)出力を
暗号文とともに受信者に送信する。通常、ハッシュを加えると、送信するテキス
トの量が20バイト前後増える。追加されたバイトを減らすこともできるが、セキ
ュリティが低下する。
【0225】 メッセージ多項式{-1,0,1,1}は、バイト10001111として符号化される。
【0226】 必要ならば、最後のバイトをビットをアンセットして終了する。この符号化さ
れた形式では、多項式はパックされた暗号文の終わりに連結され、受信者への送
信のためハッシュ値が計算される。
【0227】 復号時、暗号文および復号されたメッセージ多項式は連結され、SHA-1に入力
される。SHA-1からの出力を符号化プロセスで計算されたオリジナルのハッシュ
値と比較し、暗号文とともに受け取る。
【0228】 したがって、攻撃者が符号化されたメッセージを修正した場合、修正されたデ
ータを復号できるとしても、復号されたメッセージのハッシュ値をオリジナルの
メッセージのハッシュ値と一致させることは計算上不可能である。このため、暗
号文を改変し、そのままこのテストに通すことは本質的に不可能である。
【0229】 その後、システムは、ハッシュ値がオリジナルと一致しなかったすべてのメッ
セージを拒絶するが、その際に、暗号文が有効であったかどうかを送信者に知ら
せないよう注意する。
【0230】 ラッピング欠陥が復号されたメッセージ多項式の誤りの原因となっている可能
性がある。誤り訂正をオンにした場合、暗号システムは上述のアルゴリズムを使
用してその誤りを訂正しようとする。各段階で、チェックハッシュを再計算して
、誤りが是正されたかどうかを確認する必要がある。暗号文は同じまま、取り出
されたメッセージ多項式のみがチェックごとに異なるため、暗号文を1回だけハ
ッシュ計算に入力し、メッセージ多項式を毎回入力することが可能である。
【0231】 暗号文と平文のハッシュ値を双方に対して完全性テストを作成するために共に
計算する一般的方法は、NTRU依存ではないが、他の暗号についても同様にうまく
機能する。
【0232】 7.多重伝送 Tumbler(商標)には、多重伝送攻撃(Multiple Transmission Attacks(MTAs))
の保護機能を追加するオプションが含まれる。
【0233】 MTA保護機能を使用せずに同じ公開鍵を使用して同じメッセージを暗号化して
複数回送信すると、攻撃を受けやすい。
【0234】 2つのメッセージの間に予測可能な類似性が存在する可能性のあることを知っ
ておくことが重要である。電子メールで使用されているようなメッセージのヘッ
ダは、最も明白に識別可能であり、多くの場合予測可能である。いくつかのメッ
セージの最初の数バイトが同一である場合、その最初のメッセージ多項式も同一
であり、したがってMTAを受けやすい。
【0235】 価格表を定期的に送信するものとする。攻撃者がそれらの価格が変更されてい
ないと正しい仮定を行った場合、MTAを用いることとなる。
【0236】 単一のメッセージ多項式のセキュリティは、その多項式の暗号化で使用される
乱数に依存する。攻撃者がその乱数を判別し、公開鍵にアクセスできた場合、攻
撃者がオリジナルのメッセージを取り出すことは自明なことである。
【0237】 メッセージを送信するごとに、各多項式について「オンザフライ」で乱数を決
定する。つまり、まったく同じメッセージを複数回送信するとしても、そこには
異なる乱数が含まれるということである。攻撃者が2つまたは3つ以上の横取りし
たメッセージにまったく同じ平文が含まれていることを確実に知っていれば、何
とか使用されている乱数を決定しようとこれらのメッセージを比較する。
【0238】 MTA保護がない場合でも、一般に、2つのコピーだけから乱数を完全に決定する
ことはできない。しかし、複数のコピーを送信することで攻撃者はメッセージの
ほとんど(および最終的にはすべて)を判別できるときには、2つのコピーを送信
することでさえメッセージのセキュリティを著しく損なうおそれがある。
【0239】 Tumbler(商標) MTA保護システムでは、単純なストリーム暗号システムをラ
ンダムに選択された鍵(たとえば、疑似乱数発生器を使用する)とともに採用して
、平文メッセージが同じ鍵を使用して送信された他の同一のメッセージからラン
ダムに異なるようにする。ストリーム暗号は、鍵でブロードキャストされるので
、メッセージのセキュリティに直接加わらず、したがって、特にセキュリティの
高い暗号である必要はない。2つの同一の平文が予測できない仕方で互いに異な
るようにすることだけが必要である。
【0240】 Tumbler(商標) MTA保護オプションを使用した符号化では、ランダムな(また
は疑似ランダムな)MTA鍵が平文の先頭に追加される。この鍵を使用して、Tumble
r(商標)シーケンスジェネレータの初期状態を設定する(第11、および図2のス
テップ202を参照)。平文データの後続のバイトとシーケンスジェネレータからの
出力とのXORを取り、それをPKCS暗号に入力する。図2のステップ203を参照のこ
と。
【0241】 復号時に(図3)、PKCS暗号システムから返されたデータの先頭kバイトを使用し
て、シーケンスジェネレータの初期状態を設定する(第11節を参照)。後続のバイ
トとシーケンスジェネレータからの出力とのXORを取り、それを復号された平文
として出力する。図3のステップ315を参照のこと。
【0242】 8.ビットからタートへ データは従来ビットとして格納されているが、好ましいPKCSアルゴリズムでは
、係数が値0、1、または-1を取ることができる多項式としてメッセージを処理す
る。メッセージ多項式は、3進数(タート)列にすぎない。ビットをタートに変換
し、再びタートをビットに戻す方法が必要である。
【0243】 本発明では、メッセージの19ビットからなるそれぞれの完全な集合を12タート
に変換する。これにより、パック効率が98.65%になるが、変換に使用される算術
演算を32ビット整数を用いて実行することができる。64ビットを超える整数を使
用する方法は、さらにパック効率が向上するが、その他のパック問題と比較する
とパック効率の向上は無視できるくらい小さいといえる。
【0244】 8.1 ビットからタートへの変換 xを最下位19ビットがメッセージからの19ビットのブロックと同じ構成で設定
され、他のビットがすべて0に設定されている整数とする。ここに、タートは値0
、1、または-1を取る整数と仮定する。
【0245】 1.xを3で割り、余りを計算する。この値を使用して、次のタートを決定できる
。0は、タートの値が0であることを決定し、1は、タートの値が1であることを決
定し、2はタートの値が-1であることを決定する。
【0246】 2.xを3で割り、余りを破棄する。
【0247】 3.ステップ1および2を合計12回実行する。
【0248】 明らかに、このプロセスは、ステップ1でxを3ではなく81で割った場合に加速
され、その余りをタートの81個の可能な4タプル(4個の要素を持つ順序付き集合)
の表とともに使用して次の4タートの値を決定することができる。その後、ステ
ップ2でxを81で割る。このアプローチを使用した場合、プロセスでは12回ではな
く3回反復する必要があるだけである。
【0249】 xを729で割り、余りを取って、729個の可能なタートの6タプルの表を使用して
次の6個のタートの値を決定し、xを729で割る方法によりさらに高速化できる。
このオプションでは、1つの余りと1つの除算のみが必要である。しかし、このよ
うなスピードを向上する方法もまた、各々、それに対応してコードサイズが増加
する。531441個の可能な12タプルすべての表を直接検索する方法が、速度に関す
る究極的方法である。
【0250】 上記の方法のいずれを使用しても、変換プロセスにより、範囲{0,0,0,0,0,0,0
,0,0,0,0,0}から{-1,0,0,-1,1,0,-1,-1,1,-1,-l,-1}の値が得られる。したがっ
て、タートの可能な12タプルすべてを生成できるわけではない。これは、312=53
1441は、219=524288よりも大きいためである。これは、メッセージエンドを示す
のに、この範囲を外れるタートの集合を使用するため重要である。
【0251】 最後の19ビットからなる不完全集合は、もしあれば、必要な数のランダムビッ
トで19ビットにパッディングされる。パッディングを除く実際のメッセージデー
タの長さは、記憶され、メッセージエンドマーカの値の判別に使用される。この
詳細については、第9節を参照のこと。
【0252】 この例の目的のために、19ビットからなる列は、0101101101001100010であり
、先頭および最下位ビットから最後および最上位ビットへ順序付けられる。10進
整数と見なすと、このビット列は144090である。各タートの値は次のように計算
できる。
【0253】
【表1】
【0254】 したがって、ビット列0101101101001100010はタート列{0,0,-1,-1,-1,1,-1,-1
,0,1,-1,0}に変換される。
【0255】 8.2 タートからビットへの変換 データが復号されている場合、また、3進数多項式の形式を取っており、ビッ
トからタートへの変換プロセスを次のように逆転する必要がある。
【0256】 1.yを前の12タートの集合から計算で求めたxの値ととる。これは明らかに、最
初のブロックについては関連性がなく、これに対し前の集合はない。最初にxを0
に設定する必要がある。
【0257】 2.この集合内のタートに、0から11まで順に番号を振る。i番目のタートが0で
あれば0をxに加え、1であれば3iをxに加え、-1であれば2×3iをxに加える。
【0258】 3.xの有意なビットが19個以下(したがって、219よりも少ない)場合、yの最初
の19ビットがオリジナルのメッセージの次の19ビットである。xの有意なビット
が19個よりも多い場合、オリジナルのメッセージデータのエンドに達している。
【0259】 xの値を使用して、オリジナルメッセージの一部となるyのビットの個数および
破棄される数を正確に求めることができる。詳細については、第9節を参照のこ
と。
【0260】 上で計算した12タートの集合{0,0,-1,-1,-1,1,-1,-1,0,1,-1,0}を次のように
してビットに変換して戻すことができる。
【0261】
【表2】
【0262】 xに19個を超える有意なビットがなく(144090<219)、2進数ではxは19ビット010
1101101001100010で表される。これらは、前の例で3進数に変換されたのと同じ1
9ビットである。
【0263】 9.メッセージエンドマーカ 符号化するために2進数メッセージは、3進数に変換される(第8節を参照)。こ
れは、19ビットのブロックを使用して実行される。すべてのメッセージが、19ビ
ットの正確な倍数となる長さを持たないことは明らかであり、したがって、必要
ならば、19ビットの最後のブロックに乱数ビットをパッディングするであろう。
これらの乱数ビットは、オリジナルメッセージの一部ではなく、復号時に削除す
る必要がある。したがって、符号化されたメッセージはどのビットがメッセージ
の一部であり、どれを破棄する必要があるかを正確に判別できる十分な情報を含
んでいなければならない。
【0264】 さらに、符号化メカニズムは、N個の係数を持つ3進数多項式に作用するが、こ
こでNは鍵の強さによって決定される整数パラメータである。メッセージが、い
ったん3進数に変換されると、正確な数の多項式を埋めることは期待できない。
そのため、最後の多項式は無作為な3進数でパディングする必要もある。メッセ
ージが復号されたら、これらのタートを無視できるようにしなければならない。
【0265】 そこで、メッセージエンドマーカをメッセージに追加して、オリジナルのデー
タが終了する位置を正確にデコーダに伝える。
【0266】 ビットをタートに変換する方法では、決して、{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タ
プルを生成しないことに注意されたい。この範囲にある値はすべて、メッセージ
エンドマーカとして使用される。
【0267】 すでに述べたように、メッセージの最後のブロックは必要ならば19ビットに合
わせてパディングされ、その後12タートに変換される。このブロックの直後に、
12タートの別の集合がエンドマーカとしてメッセージに追加される。このエンド
マーカは、次のようにして計算される。
【0268】 1.Bを0-375の範囲の乱数整数と仮定し、Aを19ビットの不完全集合内の最後の
メッセージビットの個数であると仮定する。
【0269】 2.A+19×B+219を、19ビットの集合を前に変換したのとまったく同じようにし
て12タートに変換する。得られたタートの集合は{0,1,0,-1,1,0,-l,-l,1,-1,-1,
-1}から{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}の範囲内にある。これは、メッ
セージエンドマーカである。多項式の余りは無作為のタートでパディングされる
【0270】 結果がメッセージを表すために使用することができる領域の外にあるタートの
列であり、および、いずれがメッセージの最後のビットであるかをメッセージエ
ンドマーカから判別できる限り、当然、他の計算をメッセージエンドマーカ作成
のために使用できる。そのための1つの方法として、使用可能なメッセージエン
ドマーカ領域を19個の部分に分割し、最後の19ビットのうち実際のメッセージエ
ンドを示すマーカを適切な部分から(たとえば、ランダムにあるいは実質的にラ
ンダムに)選択する方法がある。
【0271】 メッセージブロックのパディングをブロックの先頭または終わりに配置し、メ
ッセージエンドマーカが得られたタートのブロックの前または終わりに追加する
ことができる。ブロック内での方向は、多かれ少なかれ任意であり、したがって
、ブロックを逆に考えたときに「後に...が続く」などの表現が「の前に」とい
う表現を包含しうる。
【0272】 符号化の例 この例の目的のために、最後のブロックに達したときに符号化対象としてオリ
ジナルメッセージの4ビットのみが残されていると想定する。この状況で、15個
の乱数ビットを選択し、4個のメッセージビットと連結する。つまり、19のこの
ブロックの0番目、1番目、2番目、および3番目のビットはオリジナルメッセージ
に属しており、4番目、...、18番目のビットはランダムなパディングにすぎない
。したがって、3番目のビットはオリジナルデータに属している最後のビットだ
から、Aは3に設定される。その後、この19ビットのパディングされた集合は通常
のようにタートに変換される。この後、メッセージエンドマーカが選択される。
最初に、乱数Bを0-375の範囲から選択する。この例の目的のため、Bに値122を与
える。そこで、次の計算を実行する。
【0273】 A+l9×B+219=3+19×122+219=526609
【0274】 この整数のタートへの変換により、{1,0,0,1,0,1,-1,0,-1,-1,-1,-1}が得られ
る。
【0275】 前の12タプルでは先行するタート(右にあるもの)のうち4つすべてが-1に設定
され、後の12タプルでは4番目のタートが1であるという事実からはっきりわかる
ように、これは、{0,1,0,-1,1,0,-1,-1,1,-1,-1,-1}よりも大きいことに注意さ
れたい。{1,0,0,1,0,1,-1,0,-1,-1,-1,-1}は、必須のエンドマーカである。
【0276】 メッセージが復号されると、12タートの各集合が次々に変換され19ビットに戻
される。通常の動作であれば、復号プロセスでは最終的に12タートのブロックが
範囲を外れ、19ビットに戻される。つまり、2進数に変換して戻す操作を通じて
得られた整数は19個よりも多い有意ビットを持つ。(第8節を参照)
【0277】 この整数は、メッセージエンドマーカである。このメッセージエンドマーカが
変換され2進数に戻された後、219がそこから引かれる。その結果を19で割り、余
りを取る。Aが返される。エンドマーカの直前にあるブロックの19ビットのうち
、0番目のビットからA番目のビットまでのビット列はオリジナルメッセージビッ
トとして保持される。残りのビットは、ランダムパディングであり、残りのター
トとともに破棄することができる。
【0278】 復号の例 この例の目的のために、前の例で計算した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
ビットは破棄できる。
【0279】 もちろん、メッセージ転送に使用できない領域内からメッセージエンドマーカ
を使用することは上述のビットからタートへの変換例に制約されるわけではなく
、また、19ビットを12タートに変換する特定の例に制限されるわけでもないこと
は理解されるであろう。何らかの適当なアクセス不可能な領域が存在すれば、法
の変更を伴う他の変換も使用できる。
【0280】 10.疑似乱数発生器 Tumbler(商標)は、2つの疑似乱数発生アルゴリズムを備えている(本発明の
出願者はそのうち第2のもののみ保護可能であると考えている)。双方のアルゴリ
ズムとも、SHA-1を使用し入力されたシード値に基づいて、ランダムに分散され
た予測不可能なビットストリームを生成する。
【0281】 すべての疑似乱数発生器(RPNG)は本質的に決定論的であり、生成される出力は
シードと同程度に予測不可能でしかない。
【0282】 最初のTumbler(商標)アルゴリズムTSR(Tao SHA-1 Random)は、他の多くの市
販ハッシュベース暗号RPNGと似た動作をする。RSAによって提供されるSHA1Rando
mおよびMD5RandomおよびCounterpaneからYarrowまでが、このカテゴリに分類さ
れる。初期入力のハッシュ値が計算され、カウンタでこのハッシュ出力について
繰り返しハッシュ値を計算し、ランダムビットストリームを生成する。どの段階
でも、さらに入力を追加することができ、これと現在の状態とともにハッシュ値
を計算する。
【0283】 図9は、このような汎用PRNGが動作する仕方を簡略化して示している。
【0284】 901.PRNGに「シード値」を与える、つまりすべての後続する出力の基になる初
期状態を与える。十分に予測不能なデータが、入力されることでこれを達成する
が、歪曲し、したがって、疑似乱数データとしては使用できないことがある。こ
のようなデータは、通常、キーストロークやマウスの動きのタイミングなどの現
実世界のイベントを測定することにより得られる。このデータのことをエントロ
ピと呼ぶ。
【0285】 902.ハッシュ関数を使用して、任意の大きさの量のエントロピのハッシュ値を
一緒に計算する。これにより、このエントロピに基づくサイズの定められた内部
状態が与えられる。このようなエントロピの予測不可能性はそのサイズと同じで
はあり得ない。10ビットのエントロピには16個の起こり得る集合的な値しかなく
、したがって、4ビットの予測不可能性を持つ。このハッシュステップを使用し
て、十分な予測不可能性を保証する十分なエントロピを入力できる。
【0286】 903.902からの出力と、904のカウンタの値とを合わせて、PRNGの内部状態が形
成される。
【0287】 904.内部カウンタを使用して、出力の各ブロックを変化させる。カウンタは、
ランダム出力の各ブロックとともに変化する。出力の各ブロックはカウンタに基
づくため、これにより、異なる出力が生成される。
【0288】 905.他のハッシュインスタンスにより、第1のハッシュ903の結果とカウンタ90
4とを組み合わせる。ランダムデータの新しいブロックが必要になるごとにこの
ハッシュを再び使用する。
【0289】 906.905のハッシュの結果は疑似ランダムデータである。アプリケーションに
よっては、(必要というわけではない)これは疑似ランダムビット列であってよい
【0290】 TSRの正確な説明は次のとおりである。
【0291】 H()をハッシュ関数、X‖YをXとYの連結、Cを整数カウンタ、Eiを乱数発生器に
加えるi番目のエントロピプール、PijをEの入力以降に生成されたランダムデー
タのj番目の106ビットプール、SiをPijを生成する160ビット内部状態と定義する
【0292】 -最初にアルゴリズムを初期化すると、カウンタC、i、およびjが0に設定され
、状態S00は160ビットすべてがアンセットされる。
【0293】 -i番目のエントロピプールがPRNGに入力されるときに、現在の状態がS(i-1)
あると仮定すると、新しい状態SiがH(S(i-1)‖Ei)となる。
【0294】 -さらにデータが必要な場合、カウンタCが1だけインクリメントされ、新しい
プールPijがH(Si‖C)になる。
【0295】 この方法は、エントロピ入力から暗号ビットストリームを限りなく生成するセ
キュリティの高いメカニズムとして機能するが、1つのハッシュ出力のサイズで
内部状態を保持するだけであるという欠点がある。SHA-1は、160ビットを使用し
が、これは現在一般にサポートされているハッシュアルゴリズムの最大のダイジ
ェストサイズである。つまり、エントロピ入力の量にかかわらず、入力操作の間
に生成される2160を超える異なるビットストリームはあり得ないということであ
る。
【0296】 現代の暗号手法では、オブジェクト(秘密鍵など)を極めて大きな空間からラン
ダムに選択することが望ましい。たとえば、N=503の場合、NTRU PKCSの秘密鍵は
2720個があり得る。2160の内部状態でPRNGを使用した場合、シード値設定操作が
1回だけだと、可能な鍵のうち少なくとも2520個はまったく選択できない。
【0297】 オブジェクトの作成時にシード値設定操作を実行するのは常にごく単純な作業
である。シード値設定操作には、エントロピが必要であり、エントロピを得るに
は、現実世界を測定する。したがって、暗号が使用されているプラットフォーム
と現実世界とのやり取りを正確に知っている必要がある。
【0298】 そこで、プラットフォーム独立であるような仕方で十分にランダムなデータを
得るという問題に2つの解決法を提案する。
【0299】 第1は、自己で再シード値を設定するPRNGである。この方法は、比較的説明し
やすいが、この方法を採用するにはシステムに対しさらなる要件が必要となり、
そのため準プラットフォーム独立でしかない。
【0300】 PRNGの基本的な内部メカニズムに変更はない。PRNGが動作することが期待され
るプラットフォームごとに、PRNGによって呼び出すことができる関数が存在し、
これによりPRNGにエントロピが供給される。
【0301】 PRNGは、通常のようにランダムデータを生成するが、生成されるデータの量を
記録する。これは、最後に供給されたエントロピの予測不可能性に加え、PRNGの
内部状態と比較される。PRNGは、内部状態とエントロピとの予測不可能性のうち
小さい方と同程度の量のデータを生成していた場合、プラットフォーム固有の関
数を呼び出し、さらにエントロピを要求する。
【0302】 第2の解決法は、これより複雑ではあるが、完全にプラットフォーム独立であ
るという利点がある。
【0303】 この基本原理では、PRNGを非常に大きな内部状態で使用する必要がある。この
ようなPRNGを生成する際の問題は、セキュリティの高いハッシュが、必要な内部
状態よりもかなり小さい有限な出力のときにも、暗号面のセキュリティを高める
ことである。
【0304】 大きな状態のPRNGのTumbler(商標)の実装は、TSR-LS(Tao SHA-1 Random-Lar
ge State)アルゴリズムである(これは、上述の2つのTumbler(商標)アルゴリズ
ムのうちの第2のものである)。TSR-LSでは、複数の同時ハッシュ関数を使用して
、新しい生成操作ごとにオリジナルのシードを再ハッシュする。これにより、20
48ビットの内部状態が得られ、22048個の異なるビットストリームを2つの入力操
作の間に生成できる。TSR-LSはTSRよりも遅いが、動的再シード値設定PRNGほど
は遅くない。TSR-LSの動的再シード値設定PRNGに勝る他の利点としては、後者で
は、シードデータをバラバラに使用するため、初期出力はシードに依存しないと
いう点があげられる。TSR-LSでは、出力はすべて、シードのすべてに依存してお
り、2048ビットの状態の違いで出力のすべてのビットを変更する可能性がある。
【0305】 TSR-LSでは、複数階層ハッシュ関数のシステムを使用する。簡単なバージョン
を図10に示す。ハッシュ関数はソフトウェアで実現できるが、あるいは、ハード
ウェアによるハッシュ手段を備えることもできる。
【0306】 1001.エントロピは、第1層のハッシュ関数のそれぞれに等しく分割する。ハッ
シュ関数の個数は、必要とする内部状態のサイズに依存する。シード値設定プロ
セスは、使用するハッシュ関数が多いほど低速になるが、オペレーションが進む
うちに時間はハッシュの個数に依存しなくなる。
【0307】 1002.まず、第1層のハッシュ関数の各々で、受け取るエントロピをハッシュす
る。
【0308】 1004.第2層のハッシュでは、第1層のハッシュ1002のすべての出力を取り込み
、このすべてをまとめてハッシュする。このため、最終出力のすべてのビットは
初期シードのすべてのビットに基づく。
【0309】 1005.第2層のハッシュ1004からの出力により、PRNGの疑似ランダム出力が形成
される。
【0310】 PRNGを使用しているアプリケーションからさらにデータが要求されるごとに、
ハッシュ関数1002のいずれかが(ローテーションに基づいて)カウンタ1003を使用
して再ハッシュオペレーションを実行する。この再ハッシュオペレーションは、
上述の通常状態のPRNGによって使用されているのと同じでもよい。
【0311】 1003.このカウンタを使用して、すべての再ハッシュオペレーションで各ハッ
シュ関数が新しい出力を生成するようにする。ここで、以下の例において、初期
出力をカウンタのインクリメントとして使用する。各ハッシュ関数1002は、専用
のカウンタ1003を保持することができる。
【0312】 特定の再ハッシュ関数の再ハッシュされた出力が第2層関数1004に供給され、
そこで他の関数1002から受け取っている出力でハッシュし、必要な新しい出力デ
ータ1005を生成する。このようにして、新しいデータの要求が生じたときに関数
1002のうち1つだけデータを再ハッシュし、そのデータを第2層関数1004に渡す。
【0313】 ハッシュ関数1002は、必要に応じてまた必要になったときに、プール1001から
追加エントロピを取得する。あるいは、追加エントロピをブロックで一度にすべ
ての関数1002に供給することができる。
【0314】 TSR-LSの正確な説明は次のとおりである。
【0315】 TSR-LSは、SHA-1ハッシュオブジェクトの5個の同時インスタンスを使用する。
H()、H0()、H1()、H2()、H3()はこれらのハッシュ関数として定義され、X‖Yは
上のTRSの場合として定義され、C0、C1、C2、およびC3は4つの160ビットカウン
タとして定義され、I0、I1、I2、およびI3は4つの160ビットインクリメントとし
て定義され、Eiは乱数発生器に加えられるエントロピのi番目のプールとして定
義され、Ei0、Ei1、Ei2、Ei3は各エントロピプールEiに対するエントロピの4つ
のサブプールとして定義され、PijはEiの入力以降に生成されたランダムデータ
のj番目の106ビットプールとして定義され、Skは生成されたk番目の160ビット中
間状態として定義される。
【0316】 -このアルゴリズムが最初に初期化されるときに、C0、C1、C2、C3、I0、I1、I2 、およびI3は、すべての160ビットをアンセットし、i=0、k=-1とする。
【0317】 -i番目のエントロピプールがPRNGに入力されると、エントロピプールEiは分割
され、n番目のバイトがエントロピのサブプールEia内に、このバイトが4の最後
の不完全集合の一部でない限り置かれるが、ここで、このバイトの最後の集合の
ビットは分割され、n番目のビットがエントロピのサブプールEiaに含まれ、aは4
を法とするnの正の最小剰余である。生成された最後の内部状態ブロックは、Sk
と定義する。ハッシュ関数Ha()ごとに、エントロピのサブプールをそのハッシュ
に入力された前のデータのすべてと連結する。この連結のダイジェストを計算し
て、その結果をSk+a+1内に置く。
【0318】 -さらにデータが必要な場合、aは4を法とするjの正の最小剰余とするように取
り込まれる。Caは、2160を法としてこの値を加えることによりインクリメントIa でインクリメントする。次に、この値を、Ha()ですでにハッシュされている入力
に連結し、その結果を計算する。生成された最後の内部状態ブロックがSkであっ
たと仮定する。この場合、このハッシュの結果はSk+1に入り、新しいプールPij
はH(S0‖S1‖...‖Sk+1)となる。
【0319】 11.シーケンスジェネレータ 上記で説明したMTA保護ハッシュにシーケンスジェネレータを使用する。この
シーケンスジェネレータの目的は、入力シード値がわかっており、ストリームが
決定論的でなければならないことを除き、PRNGと似た方法で疑似ランダムビット
のストリームを際限なく供給することである。それでも、任意に選択されたシー
ケンスを生成する入力シード値を見つけたり、出力の一部から入力を計算したり
することがコンピューティング不可能でなければならない。
【0320】 PRNGは決定論的であるため、シーケンスジェネレータは、指定されたPRNGに既
知のシード値を供給することにより実現することができる。Tumbler(商標)で
は、PRNGと少し異なる動作をする単純なシーケンスジェネレータを(PRNGを使用
することもできるが)用意している。
【0321】 SHA-1のインスタンスを使用して初期シード値をハッシュし、このハッシュ出
力自体を使用可能なシーケンスデータの最初の20バイトとして使用する。その後
、以前の出力ブロックとハッシュ入力とを連結してハッシュを再計算することに
より新しいシーケンスデータを供給する。
【0322】 12.ベクトル表現に関する並列ビット演算を使用した効率的なモジュロ演算 Tumbler(商標)では、ビットベースの技術を使用して小さな法でモジュロ演
算を実行する新しい方法を使用している。
【0323】 この方法では、ビット(つまり、2進数)ベースのデバイスを使用してモジュロ
演算を効率的に実行できる。これは、数値をベクトル形式で格納し、ビット単位
の論理演算の単純列を使用して複数の数値に対し算術演算を並列実行することに
より行う。この方法を使用すれば、いかなる基底でも効率のよいモジュロ演算を
実行できる。しかし、効率は、小さい基底のときに最大となる。Tumbler(商標
)は、この方法をPKCS 3進数演算の実行に使用する。
【0324】 12.1 モジュロ演算の詳細な説明 正の整数基底rに対する、rを法とする算術演算は、整数のr「剰余類」の間の
演算に関するものである。「剰余類」は、rで除算したときの共通の余りを共有
する整数から成り立っている。
【0325】 たとえば、法7に関して、64と15は両方とも同じ剰余類に属する。
【0326】 64=9×7+1、15=2×7+1
【0327】 2つの整数の和または積を任意に与えられた整数で割った後の余りは、その同
じ整数でそれぞれの加数または因数を割った後の余りにのみに依存する。したが
って、剰余類の間の演算を考えることができる。
【0328】 剰余類の間の加算、減算、および乗算は、剰余類から任意に選んだ代表元の間
の通常の整数算術演算と同じように行われる。通常、前者では、各剰余類から元
を1つ取り出すという方法で代表元の集まりを選ぶ。これらは、通常、正の最小
値からなる集合(つまり、{0,1,...,r-1})または最小絶対値からなる集合({[-r/2
]+1,...,0,...,[r/2]})のいずれかである。
【0329】 モジュロ演算は、理論的には、一般化された整数算術演算よりもかなり単純で
ある。しかし、現代のデジタルデバイスは一般化された整数算術演算を取り扱う
ように作成されており、モジュロ演算の実行がとてもに非効率である。
【0330】 12.2 マシンに関する仮定 そこで、nビットのワードを使用し、以下のビット単位の論理演算を実行でき
るデバイスが存在していると仮定する。
【0331】 ・両方の入力ワードの対応するビットが両方ともセットされていないか、また
は両方ともクリアされていない場合かつその場合に限り各ビットがセットされた
ワードを返すように定義されている2項演算XOR。
【0332】 ・双方の入力ワードの対応するビットがセットされている場合かつその場合に
限り各ビットがセットされたワードを返すように定義されている2項演算AND。
【0333】 ・入力ワードのいずれか、または双方の対応するビットがセットされている場
合かつその場合に限り各ビットがセットされたワードを返すように定義されてい
る2項演算OR。
【0334】 ・入力ワードの対応するビットがクリアされている場合かつその場合に限り各
ビットがセットされたワードを返すように定義されている単項演算NOT。
【0335】 12.3 ベクトル表現 ここで説明している方法のポイントは、数値のベクトルビット単位の表現にあ
る。
【0336】 デジタルデバイスは、通常、1ワードの隣接するビットに2進形式の整数を格納
する。このため、「半加算器」などの、ビット間の桁上げが可能な回路を使用す
ることができる。ベクトル表現では、数の値は異なるワード内の対応する位置に
あるビットにより表現される。これらのビットの値は、数の2進数形式に関係す
る必要はない。後の例の3進数で示されているように、ビットを新しい方式で解
釈することで、効率が高まるだけでなく、その他の付随する利点が得られる。
【0337】 2つの整数の間の単一のモジュロ算術演算を実行する場合、通常の整数方式を
使用するよりもベクトル表現を使用したときのほうがかなり効率が悪い。これは
、数値を表す2×[log2 r]個のワードを組み合わせると一般に、O(log3 r)回の演
算が必要になるためである。
【0338】 しかし、出願人はベクトル表現の利点が限界のない並列安定性にあると理解し
ている。同時に実行可能な同じ演算の回数は、ワードのサイズのみに制限される
【0339】 12.4 3進数表現 そこで、タートの3つの可能な値(3進数の表現)が0、1、および-1であると仮定
する。これは、任意の決定であり、システムはこれら3つのタートの名前とは独
立に適用する。
【0340】 タートは、2つの異なるワード内の対応する場所を占有する2つのビットにより
表される。第1のワード内にあるビットは、タートの値が0でない場合かつその場
合にかぎリセットされる。第2のワード内にあるビットは、タートの値が1の場合
かつその場合にかぎリセットされる。したがって、3つのタート0、1、および-1
は、それぞれ、ベクトル<0,0>、<1,1>、および<1,0>で表される。このようにし
て、nタートは2nビットワードで表すことができる。
【0341】 4つのタート0、0、-1、および1のベクトルビット単位の表現を使用すると仮定
する。上で指定されたベクトルを使用すると、次の表が得られる。
【0342】
【表3】
【0343】 そこで、1番目のビットと2番目のビットを別々に取り出して格納すると、この
情報を2つの別々の4ビットワード、つまり0011(1番目のビット)および0001(2番
目のビット)として取り扱うことができる。次に、たとえば、演算XOR、AND、OR
、またはNOTを使用して、個々のタートにではなく、またベクトルにでもなく、
ワード自体に対しモジュロ演算を実行することができる。これにより、どんなに
たくさんのタートを同時に操作するとしてもオーバーフローや桁上げを扱う状況
を回避できる。
【0344】 モジュロ演算を実行する効率的な方法が提案されるほかに、このビットの解釈
により、単に第1の配列を調べることにより2を法としてタートの値を求めること
ができる。アルゴリズムは、0と0以外のタートを区別することに注目することが
多いため、これは、通常の2進形式に対し大きなメリットとなっている。
【0345】 対応するビットのペアがあり、第1のワード内のビットがクリアされている場
合、第2のワードにあるビットはセットされることはまったくない。しかし、シ
ステムはこのことに依存する必要はない。
【0346】 同様な原理は、もちろん、3以外の基底に関するモジュロ演算に適用すること
も可能であり、たとえば、基底5で演算を実行するには、3つの別々のワード、ベ
クトル表現内の第1のすべてのビットを表す第1、第2のすべてのビットを表す第2
、および第3のすべてのビットを表す第3に対し行う。このアプローチは、さらに
大きな基底についても機能する。
【0347】 12.5 3を法とする演算 3を法とする演算は、次のようにして計算される。
【0348】 X〜0およびX1は、n個のタートx0、...、xn-1を表す2nビットワードであり、対
応するタートが0でない場合にワードX〜0はビットがセットされ、対応するター
トが1の場合にワードX1はビットがセットされる。同様に、Y〜0およびY1は、n個
のタートy0、...、yn-1を表す2nビットワードである。
【0349】 n個のタートペア(xi,yi)をそれぞれ3を法としてi=0から(n-1)について加算す
ると、Z〜0およびZ1、つまりタートx0+y0(mod 3)、...、xn-1+yn-1(mod 3)が得
られるが、これは次のように計算される。
【0350】 Z1=(X〜0 XOR Y1)AND(X1 XOR Y〜0)、 Z〜0=(X〜0 XOR Y〜0)OR(X1 AND Y1)OR Z1
【0351】 xiからyiの値をそれぞれ3を法としてi=0から(n-1)について引くと、Z〜0およ
びZ1、つまりタートx0-y0(mod 3)、...、xn-1-yn-1(mod 3)が得られるが、これ
は次のように計算される。
【0352】 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
【0353】 n個のタートペア(xi,yi)をそれぞれ3を法としてi=0から(n-1)について乗算す
ると、Z〜0およびZ1、つまりタートx0×y0(mod 3)、...、xn-1×yn-1(mod 3)が
得られるが、これは次のように計算される。
【0354】 Z〜0=(X〜0 AND Y〜0)、 Z1=(NOT(X1 XOR Y1))AND Z〜0
【0355】 体F3では、2つの非ゼロ元である1と-1のみが自己逆元となっている。したがっ
て、除算は、乗算と区別できない。
【0356】 12.6 ハードウェアとソフトウェア この方法は、ハードウェアだと実装が簡単であり、図11、12、および13に示さ
れている回路図からわかる。図11は3を法とする加算の回路図、図12は3を法とす
る減算の回路図、図13は3を法とする乗算の回路図を示している。
【0357】 ソフトウェアでは、この方法により、スケーラブルな並列化が可能であるが、
それは、任意長のワードの全幅を利用できるからである。
【0358】 12.7 Tumbler(商標)での使用 Tumbler(商標) PKCSでは、3を法とする多項式を使用するが、これはその係
数すべてが法3に関してのみ意味のある値を持つ多項式である。アルゴリズムの
さまざまな段階で、これらの多項式を互いに加減する必要がある。特に、現在の
鍵生成システムの実装では、「Almost Inverse algorithm」(第3節を参照)ある
いはユークリッドアルゴリズムを使用し、3を法とする多項式で実行する。さら
にこれらのアルゴリズムでは、多項式同士の加減算が必要である。この暗号解読
システムは、2つの3を法とする多項式の合成積(スター乗算)を必要とする。さら
にスター乗算アルゴリズムではさらに、多項式同士の加減算が必要である。
【0359】 2つの多項式を加えるには、それぞれの多項式からの対応する係数の値を足し
合わせる。第1の多項式からの第1の係数の値を第2の多項式の第1の係数の値に加
えて、その合計の第1の係数の値を出力する、というように続ける。
【0360】 第1の多項式が上記のように2つのビット配列X1およびX〜0で表され、第2の多
項式が2つのビット配列Y1およびY〜0で表される場合、2つの多項式の多項式和は
、4つの配列に対する次の3を法とする加算を実行することにより計算できる。
【0361】 Z1=(X〜0 XOR Y1)AND(X1 XOR Y〜0)、 Z〜0=(X〜0 XOR Y〜0)OR(X1 AND Y1)OR Z1
【0362】 同じことが減算についても成り立つ。各多項式を2つのビット配列として格納
することにより、上の減算方法を使用して2つの多項式の差を計算することがで
きる。
【0363】 Tumbler(商標)の各多項式は係数が503個もあるため、この方法をとると速度
が著しく高まる。
【0364】 モジュロ演算に対するこのようなアプローチは、デジタルデータ処理の分野の
アプリケーションに一般的に見られ、暗号システム内の使用に限られない。
【図面の簡単な説明】
【図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 AA08 AA22 LA03 NA02 NA12

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 暗号化されたメッセージの妥当性を確認する方法であって、 (a)メッセージをメッセージ多項式として表すことと、 (b)該メッセージ多項式を暗号化して暗号多項式を形成することと、 (c)前記メッセージ多項式および前記暗号多項式を表す入力をまとめてハッシ
    ングし、ハッシュ出力を生成することと、 (d)前記暗号多項式により定義された暗号化メッセージおよびハッシュ出力に
    基づくチェック情報の双方を受信者に送信することと を備えたことを特徴とする方法。
  2. 【請求項2】 ハッシュ値を計算する前に前記入力を連結することを特徴と
    する請求項1に記載の暗号化メッセージの妥当性を確認する方法。
  3. 【請求項3】 前記メッセージ多項式の入力は、バイトを埋めるためにパッ
    クされた多項式係数を表すビットを備えたことを特徴とする請求項1に記載の暗
    号化メッセージの妥当性を確認する方法。
  4. 【請求項4】 前記暗号多項式の入力は、バイトを埋めるためにパックされ
    た多項式係数を表すビットを備えたことを特徴とする請求項1に記載の暗号化メ
    ッセージの妥当性を確認する方法。
  5. 【請求項5】 前記ハッシングは、SHA-1アルゴリズムを使用して実行され
    ることを特徴とする請求項1乃至4のいずれかに記載の暗号化メッセージの妥当
    性を確認する方法。
  6. 【請求項6】 前記チェック情報から導かれた予想ハッシュ出力を、前記受
    信された暗号多項式と前記復号されたメッセージ多項式とに基づいて再計算され
    たハッシュ出力と比較して、前記送信された暗号化メッセージの妥当性の確認を
    裏付けることを含むことを特徴とする請求項1乃至5のいずれかに記載の暗号化
    メッセージの妥当性を確認する方法。
  7. 【請求項7】 請求項1乃至6のいずれかに記載の方法を実行することを特
    徴とするコンピュータプログラム。
  8. 【請求項8】 請求項7に記載のコンピュータプログラムを実行することを
    特徴とする物理的伝送媒体。
  9. 【請求項9】 請求項7に記載のコンピュータプログラムを表すことを特徴
    とするデータストリーム。
  10. 【請求項10】 暗号化されたメッセージの妥当性を確認する方法であって
    、 (a)前記メッセージ文を暗号化して暗号文を形成することと、 (b)前記暗号文を表す入力および前記メッセージ文をまとめてハッシングし、
    ハッシュ出力を生成することと、 (c)前記暗号文により定義された暗号化メッセージおよび前記ハッシュ出力に
    基づく情報の双方を受信者に送信することと を備えたことを特徴とする方法。
JP2001588162A 2000-06-01 2001-05-24 暗号化されたメッセージの妥当性を確認する方法 Pending JP2003535500A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0013356.1A GB0013356D0 (en) 2000-06-01 2000-06-01 A method of validating an encrypted message
GB0013356.1 2000-06-01
PCT/GB2001/002365 WO2001093497A1 (en) 2000-06-01 2001-05-24 A method of validating an encrypted message

Publications (1)

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

Family

ID=9892807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001588162A Pending JP2003535500A (ja) 2000-06-01 2001-05-24 暗号化されたメッセージの妥当性を確認する方法

Country Status (10)

Country Link
US (1) US20040103286A1 (ja)
EP (1) EP1287641B1 (ja)
JP (1) JP2003535500A (ja)
KR (1) KR20030019411A (ja)
AT (1) ATE343272T1 (ja)
AU (1) AU2001258646A1 (ja)
CA (1) CA2410608A1 (ja)
DE (1) DE60123949D1 (ja)
GB (1) GB0013356D0 (ja)
WO (1) WO2001093497A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243231A (ja) * 2002-10-09 2011-12-01 Intel Corp サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7292552B2 (en) * 2002-03-14 2007-11-06 Qualcomm Incorporated Method and apparatus for reducing interference in a wireless communication system
KR20040009766A (ko) * 2002-07-25 2004-01-31 학교법인 성균관대학 암호 시스템에서 송수신 장치 및 방법
JP4635009B2 (ja) 2003-05-21 2011-02-16 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 通信における証明された秘密値の使用
US7627764B2 (en) * 2004-06-25 2009-12-01 Intel Corporation Apparatus and method for performing MD5 digesting
US8542832B2 (en) * 2008-08-01 2013-09-24 Nikolajs VOLKOVS System and method for the calculation of a polynomial-based hash function and the erindale-plus hashing algorithm
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US11487885B2 (en) * 2018-01-31 2022-11-01 Salesforce, Inc. Enabling and validating data encryption
WO2019157503A1 (en) 2018-02-12 2019-08-15 Massachusetts Institute Of Technology Systems and methods for providing secure communications using a protocol engine
WO2020172234A1 (en) * 2019-02-19 2020-08-27 Massachusetts Institute Of Technology Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
WO2022266502A1 (en) * 2021-06-19 2022-12-22 Ntt Research, Inc. Broadcast encryption with improved resource utilization

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL128552A (en) * 1996-08-19 2004-06-01 Ntru Cryptosystems Inc Method and device of a public key in a crypto system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243231A (ja) * 2002-10-09 2011-12-01 Intel Corp サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化

Also Published As

Publication number Publication date
US20040103286A1 (en) 2004-05-27
DE60123949D1 (de) 2006-11-30
EP1287641B1 (en) 2006-10-18
KR20030019411A (ko) 2003-03-06
CA2410608A1 (en) 2001-12-06
EP1287641A1 (en) 2003-03-05
GB0013356D0 (en) 2000-07-26
ATE343272T1 (de) 2006-11-15
WO2001093497A1 (en) 2001-12-06
AU2001258646A1 (en) 2001-12-11

Similar Documents

Publication Publication Date Title
EP1290544B1 (en) Pseudo-random number generator
KR101246437B1 (ko) 유한체 연산을 사용하는 랜덤 번호 발생기를 포함하는 암호 시스템
US5870470A (en) Method and apparatus for encrypting long blocks using a short-block encryption procedure
KR101267109B1 (ko) 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
JP2003535378A (ja) ビット単位の論理演算を使用した並列モジュロ演算
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JP2003535363A (ja) 複数の送信攻撃から暗号システムを保護する方法
JP2003535500A (ja) 暗号化されたメッセージの妥当性を確認する方法
EP1287638B1 (en) Decoding of cipher polynomials
JP2003535499A (ja) メッセージの終わりのマーカ
JP5818768B2 (ja) マスク生成装置、情報処理装置、及びその方法、プログラム