JP2003535378A - ビット単位の論理演算を使用した並列モジュロ演算 - Google Patents

ビット単位の論理演算を使用した並列モジュロ演算

Info

Publication number
JP2003535378A
JP2003535378A JP2002501162A JP2002501162A JP2003535378A JP 2003535378 A JP2003535378 A JP 2003535378A JP 2002501162 A JP2002501162 A JP 2002501162A JP 2002501162 A JP2002501162 A JP 2002501162A JP 2003535378 A JP2003535378 A JP 2003535378A
Authority
JP
Japan
Prior art keywords
message
bit
polynomial
word
modulo
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
JP2002501162A
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 JP2003535378A publication Critical patent/JP2003535378A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)

Abstract

(57)【要約】 並列モジュロ演算計算は、演算対象の数値をベクトル形式で格納し、複数の数値に対し算術演算を並列に実行することによりビット単位の論理演算を実行するように改造されたデバイス上で実行される。本発明では、暗号システムだけでなく他の分野における具体的応用例を取りあげている。

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つまたはそれ以上
の係数が正しくない可能性を考慮することができる。このアプローチでは、単独
またはグループでの復号の失敗の原因に関するそれぞれの期待値に応じて多項式
内の係数を並べ替える。期待値が最大の係数または係数のグループを調整して、
新しい試行多項式を作成する。それが失敗した場合、次の係数または係数のグル
ープを取り出して、適切な調整を行う。このプロセスを、暗号多項式が適切に復
号されるかまたは復号の試行が放棄されるまで繰り返す。
【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の文字列がデータストリームとして送
信されるときに「その後に続く(followed by)」という表現は必ずしも非メッ
セージ要素が必ずメッセージ要素の後に一時的に続く必要があることを意味せず
、まったく容易に一時的にメッセージ要素の前に来ることがあることは理解され
るであろう。
【0040】 変換関数は、考えられるすべての第2の種類の要素の組合せにより定義されて
いる領域よりも小さい出力領域に考えられるすべての第1の文字列をマップする
ように定められており、これにより変換関数でアクセスできない「使用不可能」
領域が定義される。メッセージ終了マーカは、組み合わせて「アクセス不可能」
な領域内に収まる第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進数つまりタート(terts)で表現できる。
【0061】 計算は、ソフトウェアで実行することもできるが、あるいは、たとえば、XOR
、AND、OR、およびNOTゲートを使用してハードウェアで実行することもできる。
【0062】 本発明は、上記の方法を使用する暗号化および/または暗号解読の方法にも拡
張される。
【0063】 暗号化の好ましい方法は、請求項1または請求項2に記載の方法を使用してN(N
≧3)を法とする係数を持つ多項式の加算、減算、または乗算を実行することによ
り鍵を生成するステップを含み、第1の多項式の係数は数値(x)列で、第2の多項
式の係数は他の数値(y)列である。
【0064】 暗号解読の好ましい方法は、請求項1または請求項2に記載の方法を使用してN(
N≧3)を法とする係数を持つ多項式の加算、減算、または乗算を実行するステッ
プを含み、第1の多項式の係数は数値(x)列で、第2の多項式の係数は他の数値(y)
列である。
【0065】 本発明は、上記の方法を実行するコンピュータプログラム、そのようなコンピ
ュータプログラムを伝送する物理的キャリア、およびそのようなコンピュータプ
ログラムを表すデータストリームにまで拡張される。
【0066】 本発明のさらなる態様では、ビット単位の論理演算を使用して並列モジュロ演
算を実行するデジタルデバイスが提示されており、これは、 (a)それぞれのビット単位のベクトルによって演算が行われる数値 (x) 列を表
す手段と、 (b)前記ベクトルのそれぞれの1つのビットから第1のワード(X〜0)を形成し、
前記ベクトルのそれぞれの他のビットから第2のワード(X1)を形成する手段と、 (c)それらのワードの一方または両方にビット単位の論理演算を実行する手段
を備える。
【0067】 本発明は、さまざまな方法で実践することができるが、例を使用して付属の図
面を参照しながら1つの特定のかつ好ましい実施形態について説明することにす
る。
【0068】 1.はじめに Tumbler(商標)は、本発明の出願人の暗号開発者ツールキットのブランド名
である。これは、多数の異なる暗号アルゴリズムと非アルゴリズム固有APIを備
えており、NTRU Corporationによって開発されているNTRU PKCSアルゴリズムを
中心として主に、ただしそれだけではないが、構築されている。詳細については
、「Hoffstein, Pipher and Silverman、NTRU:A Ring-Based Public Key Crypto
system、J P Buhler(ed)、Lecture Notes in Computer Science 1423、Spring-V
erlag、Berlin、1998、267-288」とNTRU Cryptosystems, Inc.名義のPCT特許出
願第W098/08323号に記載されている。全体を通して後者の文書を「NTRU特許出願
」と呼ぶことにする。
【0069】 このアルゴリズムにより暗号法の現状が打破されたのである。従来の「巨大整
数」ベース製品の世界から決別したこのアルゴリズムは、多項式混合法(polyno
mial mixing method)に基づいてより効率的で安全なシステムを構築する。しか
し、裸のアルゴリズムは暗号製品として使用できるのにはほど遠い。間に数多く
の機械類が必要である。NTRUの場合、優れた特長の源でもあるその独特のスタイ
ル故に、このアルゴリズムを扱うためこのような機械類を再発明する必要がある
【0070】 本書では、Tumblerに含まれるNTRU PKCS(Public Key Cryptosystem)の独自実
装について説明する。NTRU PKCSを実用的な暗号ツールとして実装しようとして
直面したいくつかの問題について概要を述べ、これらの問題を解決するためにTu
mblerで革新的な手法を使用する方法について説明する。
【0071】 Tumbler内で使用されているこれらの革新的手法の多くは互いに独立しており
、単独でまたは選択した任意の組合せにより使用することもできることは理解さ
れるであろう。たとえば、誤り訂正、メッセージ終了マーカ、チェックメカニズ
ム、大規模な状態疑似乱数発生器、モジュロ演算の使用、および複数の送信攻撃
からの保護などの手法はすべて、Tumblerの好ましい実施形態に含まれているが
、単独でまたは組み合わせて使用することがきる。また、Tumblerは、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】 暗号を使用する方法によっては、攻撃者が暗号を破るために使用できる追加情
報を取得する可能性が実際にあり得る。これに対する簡単な答えは、このような
操作を許す形で暗号を使用しないことである。しかし、場合によっては、実用目
的に対しては制限が強すぎることがある。以下で扱う2つの状況は、まったく同
じメッセージを複数回送信することが望ましい状況または潜在的攻撃者によりア
クセスされる可能性のある自動化システムをセットアップしたい状況である。
【0077】 NTRU特許出願では、暗号法の理論的アルゴリズムについて説明しているが、実
際のマシンでこのアルゴリズムの実行をどうするかということについては説明し
ていない。この理論的アルゴリズムはステップが比較的少なく、現代のコンピュ
ータであればすぐに実行でき、したがって当然高速な数学理論を採用している。
ただし、本出願では、このアルゴリズムを劇的に高速化する手法を考案した。
【0078】 1.3 Tumblerでの解決法 NTRU PKCSのTumblerでの実装により、理論と実用との間のギャップに橋が架け
られる。また、これは、NTRUに含まれる進歩に基づく多数の新しい手法も含み、
暗号、データ信号処理、およびコンピューティングの他の分野であっても使用で
きる。
【0079】 誤りを検出し、ラッピングとギャップ障害の両方を訂正する方法について以下
で詳述する。暗号をデータ機密保護の実用的な手段として使用できるようにする
ために、暗号解読されたメッセージの完全性に依存できる必要がある。NTRU特許
出願で説明されているオリジナルの方法を後述の検出および訂正システムととも
に使用することにより、これが最終的にそのケースであると確信される。
【0080】 首尾一貫した「ビットからタート」変換方式は、オリジナルの「メッセージ終
了マーカ」システムとともに機能し、標準のコンピュータデータファイルとNTRU 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よりも
かなり大きいと仮定する必要があることに注意されたい。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】 これは、係数が「折り返し(wrap around)」することを除き通常の多項式乗
算とまったく同じであり、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個少ない係数を持ち、そのため、逆元を求めること
ができる(invertable)。
【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特許出願(p.31、第1.2節)で説明しているように、秘密鍵多項式fを、
Nに依存する集合Lfからランダムに選択する。
【0102】 103.3を法としてfの逆元を計算する。「ユークリッドアルゴリズム」を使用す
る代わりに、もっと効率の良い「Almost Inverse Algorithm」を使用する。この
アルゴリズムは、論文「Fast Key Exchange with Elliptic Curve Systems’ by
Richard Schoeppel, et al(Advances in Cryptology-CRYPTO 95、Lecture Note
s in Computer Science 973, ed.D.Coppersmith、Springer-Verlag、New York、
1995、pp.43-56)」で取りあげられていた。逆元が存在しない可能性がある。こ
の場合、102に戻り、新しいfを選択する。このアルゴリズムを実装する際に、ベ
クトル表現に対する並列ビット演算による高速モジュロ演算のプロセスを使用す
る(詳細については、第12節を参照)。
【0103】 104.103の場合と同様であるが、ただし、2を法としてfの逆元を計算すること
を除く。このアルゴリズムを実装する際に、ベクトル表現に対する並列ビット演
算による高速モジュロ演算のプロセスを使用する(第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()を使用する。SHA-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進数、つまり「タート」は、PKCS暗号により
処理されるメッセージ多項式を形成する。N個よりも少ないタートが処理されな
いままである場合、残りのタートは次のメッセージ多項式内に入れられ、207で
メッセージ終了マーカが作成される。
【0115】 204.十分な数のタートが未処理のままであれば、メッセージ多項式は次のNか
ら構築され、暗号化される。平文データが尽きて、次のメッセージ多項式を埋め
るにはタートが不十分な場合、207でメッセージ終了マーカが作成される。
【0116】 205.ランダム多項式を選択し、公開鍵を掛ける。積多項式をメッセージ多項式
に加える。このプロセスは、パラメータpが公開鍵に組み込まれていることを除
いてNTRU特許出願(図4、ステップ450)で説明しているのと同じである。得られた
暗号多項式をパックしてバイトを埋め、チェックハッシュ関数に入力し、その後
、係数ごとに2ビットを使用するメッセージ多項式が続くが、これもパックして
バイトを埋める。チェックハッシュを計算して、暗号多項式の終わりに連結する
(第6節を参照)。このハッシュからの出力がブロックBiを形成する。
【0117】 206.メッセージ多項式を暗号化してから、平文の次のNタートを使用して次の
多項式に進む。
【0118】 207.タートに変換するためこの平文データがちょうどの数のメッセージ多項式
を埋めたり、さらには19ビットのちょうどの倍数を埋めることはあり得ない。20
3、204、205、および206で説明したプロセスを使用して完全に埋めることができ
るすべての多項式が処理されたら、メッセージ終了のメカニズムを使用して最後
のメッセージ多項式を完了する(第9節を参照)。このメカニズムにより、12ター
トのメッセージ終了マーカが作成される。このマーカは、平文に含まれ、最後の
未完了のメッセージ多項式には収まらないことがある。この場合、メッセージ終
了マーカは別のメッセージ多項式の中にあふれる。必要ならば、最後の多項式を
ランダムタートで完了する。
【0119】 208.最後の未完了平文メッセージ多項式とメッセージ終了マーカを含む最後の
メッセージ多項式(または、場合によっては最後の2つのメッセージ多項式)が他
のすべてのメッセージ多項式と同じようにして暗号化される。
【0120】 209.関連するチェックがすぐ後に続く、バイトを埋めるようにパックされてい
るが、最後の未完了バイト(もし存在すれば)がゼロで埋められているそれぞれの
暗号化された多項式の連結は暗号化されたメッセージ(暗号文)を形成する。
【0121】 3.3 暗号解読 ここでは、図3に示されているようなTumbler暗号解読システムを説明する。こ
れは、NTRU特許出願(図5)で説明されているオリジナルの暗号解読システムと比
較対照すべきである。
【0122】 301.暗号解読システムは、アルゴリズムパラメータNおよびqで、暗号文E、秘
密鍵多項式fおよびF3、誤り訂正レベル、および必要ならばMTA鍵kを受け取る。
このプロセスではさらに、SHA-1ハッシュ関数H()を使用する。図3では、記号‖
を使用して、いずれかの側へのオブジェクトの連結を示している。
【0123】 302.iは特定の暗号化された多項式を順番に参照するために使用するカウンタ
である。Rは、MTA保護がそのまま適用される暗号解読された平文データを含む(
第7節を参照)。
【0124】 303.単に209で使用しているパックシーケンスを逆転するだけで、それぞれの
暗号化された多項式および関連チェックブロックを暗号文から再構成する。
【0125】 304.メッセージに秘密鍵を乗算し、その後、秘密鍵の逆元を乗算する。これは
、誤り訂正のために必要な場合に最初の乗算の結果を記録することを除きNTRU特
許出願(図5、ステップ570および580)で説明されているプロセスと同じである。
【0126】 305.ハッシュを、205(第6節を参照)のeiおよびmiと同じようにしてeiおよびbi で構成し、暗号解読された多項式biをメッセージ多項式miとして取り扱う。この
ハッシュを送信されたチェックブロックBiと比較する。誤り訂正を多項式上で使
用する必要がある場合、このようなハッシュの多くを同じeiで計算しなければな
らないことがある。したがって、eiの入力の後、ただしbiの入力の前にハッシュ
関数の状態を記録すると効率的な場合がある。
【0127】 306.送信されたチェックブロックが305で作成したハッシュと一致する場合、
復号された多項式biはオリジナルのi番目のメッセージ多項式として受け付けら
れる。これらのメッセージ多項式のタートをビットに戻す必要がある(第8節を参
照)。この変換は、12タートの複数の集合で実行される。
【0128】 307.ビット-タート変換により、19ビットの集合が12タートの可能な集合の部
分集合に変換される。12タートからなる集合がこの部分集合に属する場合、これ
はビットに戻すために渡され、属さない場合、19ビットの変換された集合ではな
く、メッセージ終了マーカである(第9節を参照)。
【0129】 308.タートはビットに変換され(第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タートの範囲外の集合は、メッセージ終了マーカを示す。タートの前の
すべてのブロックが、ビットに変換され、Rに連結される。最後に、メッセージ
終了メカニズムを使用してこのブロックが解釈される(第9節を参照)。これは、R
に含まれるビットのいくつかを除去する必要がある場合がある。まだ変換されて
いなかったタートは破棄される。
【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)
【0141】 この最後の多項式pφ*g+f*mを考察する。適切なパラメータを選択するために
、ほとんどすべての場合に、係数はすべて-q/2+1からq/2の範囲に収まり、qを法
として係数を還元しても変化しないようにすることが可能である。つまり、qを
法としてf*eの係数を-q/2+1からq/2の区間に還元すると、正確に以下の多項式が
復元されるということである。 a=pφ*g+f*m
【0142】 「適切なパラメータを選択する」とは、主に、第2節で定義した値dg(N)、dφ(
N)、およびdf(N)のことを指している。これらの値が低いほど、多項式g、φ、お
よびfの係数が0である割合が大きくなる。この結果、上記の多項式内の係数が0
に近くなる確率が大きくなる。しかし、これらの値は、さらに、それぞれの種類
の可能な多項式がいくつあるかを示し、したがって、暗号文のセキュリティがど
れだけ効果的かを示す。これらの値が十分に大きければ、g、φ、およびfに対す
る可能な値が多すぎ、攻撃者が妥当な時間内に正確な値を推測できてしまう。こ
れらの値が小さくて上記の多項式の係数が-q/2+1からq/2の範囲を外れる可能性
がない場合、暗号文のセキュリティが損なわれることになる。
【0143】 Tumblerで使用するパラメータの選択により、多項式 pφ*g+f*m が-q/2+1からq/2の範囲外にある係数を持つ確率がおおよそ1/10000となる。つま
り、いくつかの係数の値は復号の最初のステップで±qにより変換され、したが
って、3を法とする変更された値を持つことになる。
【0144】 例 図5、6、および7は、ラッピングエラーの視覚的な例である。
【0145】 図5は、qを法として正の最小剰余に還元された多項式f*eの例をグラフにした
ものである。50個の係数が、その値に相対的な高さのところに配置されたドット
で表される(0からqの範囲)。これは、復号プロセスを通じて半分ほどデコーダが
復元する多項式である。多項式は、正の最小剰余類を使用して表示され、コンピ
ュータ内の2のべき乗を法とする最も単純な還元がこれらの剰余類内の数を残す
。メッセージを復元するために、多項式を最小絶対剰余類(-q/2+1からq/2の範囲
)にシフトする必要がある。しかし、多項式の現在の形式には、不正にラップす
る可能性が最も高いすべての係数が多項式の中心に集められるという利点がある
。このゾーンは、グラフ上で強調表示になっている(501と印されている領域)。
【0146】 図6は、qを法として最小絶対剰余類にシフトされていることを除き図5と同じ
多項式を示している。図5で501と印されていた領域は、今では、2つに分割され
ており、601および602と印されている。図5で502と印されていた係数は、q/2の
線分の真上にあり、したがって、qだけ下にシフトされており、グラフの下部に
ある(603と印されている)。これは、オリジナルのメッセージ多項式を復元する
ためにF3との合成積が取られる多項式の形式である。
【0147】 図7は、多項式pφ*g+f*mのグラフであり、5および6にグラフが示されている多
項式に関係している。この多項式は、qを法として還元されないが、その係数は
すべて-q/2+1からq/2の範囲内に収まり、図6の多項式が厳密な一致になることが
期待される。そうならば、メッセージは誤りなしで復元される。これは、適切な
パラメータを選択した場合、ごく一部の場合を除くすべての場合に生じる。この
例では、703と印されている係数は、指定された範囲を外れている。つまり、図6
に示されている多項式f*eは、qを法としてこの多項式と等価であるが、同じでは
なく、また3を法としては等価ではない。係数701は、図6で603と印されている位
置までラップされている。
【0148】 誤りが発生したかどうかを知ることができる何らかの手段が存在していること
が重要である。多項式φはエンクリプタにしか認識されず、多項式gおよびfはデ
コーダにしか認識されないため、ラッピング障害が発生するかどうかを予測する
ことは不可能である。障害を検出するには、暗号化/暗号解読プロセスでオリジ
ナルのデータの完全性を確認する何らかの種類のチェックハッシュを使用する。
このようなチェックは、ある種の形態の攻撃を防止するために必要である。
【0149】 復号障害を検出するためにTumblerで採用しているメカニズムについては、第6
節で詳述しており、これらの誤りを訂正する手段については第5節に従う。
【0150】 5.誤り訂正 ラッピングエラーは、NTRU暗号が提案されたときに認識されていた問題である
(NTRU特許出願、p.31、第1.3節)。しかし、これを解消するために提案されたル
ーチンは欠陥があり、さまざまなラッピング障害の訂正を行えなかった。この方
法では、3の倍数により上から多項式aをシフトする操作が必要だった。このため
、不正にラップされている係数の値が変化してラップされず、3を法として還元
したときに係数の値は変わらなかった。残念なことに、これにより、範囲の他端
に値がある係数が不正にラップされることがしばしばであった。これは先の場合
に発生しないであろう。
【0151】 提案されたラッピング誤り訂正も、ギャップ障害として知られている誤りを訂
正できなかった。これは、不正にラップされた係数の値が同じ符号の正しくラッ
プされた係数と少なくとも同じくらい0に近い場合に発生する。これは、元々、
問題として考えられておらず、これらの障害は非常にまれなものと思われていた
。ギャップ障害は、実際には、1000万個の多項式に1つの割合で発生し、これは
多くのアプリケーションで十分に多いといえる。
【0152】 Tumblerの誤り訂正システムの原理は単純である。誤りがあればそれを見つけ
て訂正するというものである。
【0153】 難しいのは、単純に見て、2つの可能な仕方で間違っていると思われる係数がN
個あるという点である(3を法として取り扱ったとき)。また、複数の同時誤りも
ありうる。したがって、考えられるすべての誤りをチェックすることは機能する
まで考えられるすべての3進数多項式を試してみることと同等である。暗号の性
質上、これは考えられないほどの時間がかかる。さらに、誤りは、復号障害が原
因でない場合さえあり、送信のエラーや攻撃者による故意の改変が原因の場合が
ある。
【0154】 Tumblerの解決法は、考えられるすべての誤りが元々等しいわけではないとい
う事実に基づく。誤りの考えられる原因を、最も可能性の高いものから最も可能
性の低いものへと順序付けた場合、誤りの原因について極めて効率の良い検索を
実行できる。実際、復号障害の原因で最もよくあるのが、10000のうちほぼ9999
の誤りという原因である(Tumblerで現在使用しているパラメータの選択に対して
)。
【0155】 第4節の復号障害の原因を思い起こすと、このアルゴリズムパラメータは、特
定の多項式の係数がほとんどいつでも-q/2+1からq/2の範囲の内側にあるように
選択されていた。この範囲内になければ、復号障害は発生したと言われる。実際
、係数がこの範囲を外れる確率は、多項式ごとに1/10000である。2つの係数がこ
の範囲を同時に外れる確率は、多項式ごとに1/100000000未満、さらに同時の誤
りについても同様である。また、係数がこの範囲を外れる場合、ほとんどいつで
も、わずかだけ範囲を外れる。距離が大きいほど、係数がその範囲からその距離
だけ外れる可能性が低くなる。
【0156】 さらに、係数がこの範囲のすぐ上に入る場合、この範囲の下側にラップする。
係数がこの範囲のすぐ下に入る場合、上側にラップされる。最初のケースでは、
値はqだけ小さすぎる、つまりxが3を法とするqの正の最小剰余とすると、3を法
としてxだけ小さすぎるということである。後者のケースでは、xだけ大きすぎる
【0157】 これは、誤りを見つける単純な手段となっている。-q/2+1からq/2の範囲の上
側および下側に最も近い値がチェックされ、(値が範囲の下側にあるのか上側に
あるのかに応じて)xを加えたり引いたりして3を法として値を訂正することが試
みられる。
【0158】 図8は、図5と同じグラフを示している(第4節で説明している)。直線q/2を囲む
領域が強調表示されており、801と印されている。この領域内にある係数は、誤
りの原因となる可能性が最も高いものである。最初の5個の係数に、直線q/2に近
い順に802、803、804、805、806とラベルを付ける。誤りの最も可能性の高い原
因は、値がxだけ小さすぎる802と印されている係数である。これは正確には、第
4節で説明した誤りであり、この係数の値にxを加えると、実際に、誤りが訂正さ
れる。
【0159】 これらの誤りを訂正するために採用すべき正確な方法は、暗号文の使用と、実
装されるプラットフォームに大きく依存する。アルゴリズム例を以下に示す。こ
の方法の前提は、訂正試行をできる限り速く何回も実行することで効率化できる
という考えである。しかし、10000のうち9999の誤りが最初の試行で訂正される
。速度の点で、可能な最も短い時間で最も可能性の高い誤りをチェックし、その
最初の試行が失敗した場合に検索を続行するのに必要な作業のみを行うことがベ
ストであると思われる。
【0160】 誤りは、10000個の全多項式で1回のオーダーでしか発生しないので、速度差は
平均すると小さく、流れ速度が一定であることが問題になる場合にのみ重要であ
る。ここで説明した方法にはいくつかの利点がある。適切なGの表(以下参照)を
用意すると、これは妥当な時間内にすべての復号誤りを修正する。最初の数ステ
ップで、オリジナルのデータを非常に効率の良い形式で格納することができ、オ
リジナルのqを法とするデータは再度参照することはまったく必要ない。
【0161】 図4は、次の誤り訂正アルゴリズムの流れ図である。NTRU特許出願では同等の
アルゴリズムを提示していない。この流れ図は、復号システムを記述する流れ図
のもう片方として設計される(図3を参照)。
【0162】 401.誤り訂正ルーチンではアルゴリズムパラメータNおよびqを使用している。
これはさらに、秘密鍵の逆元F3を使用するが、秘密鍵自体ではない。
【0163】 訂正レベルにより、誤り訂正ルーチンをどれだけ続けるべきかどうかが決定さ
れる。誤り訂正はゼロ以外の値でなければならず、または、誤り訂正ルーチンは
最初の場所で決して呼ばれていない。ほとんどすべての誤りが非常に高速に訂正
される。訂正レベルにより、誤りが復号障害以外の原因である確実度を制御でき
る。誤りの原因が送信にある場合に任意に高い訂正レベルだと、プロセスが任意
に長い時間の間続くことになる。既存の誤りはいずれも、最初の数回の試行で訂
正される可能性が極めて高い。したがって、未検出の誤りの確率が無視できるく
らい小さい、また多項式で復号できない事態がメッセージの送信時に発生した問
題が原因である可能性が高いと非常に迅速に結論することが可能である。
【0164】 訂正ルーチンは、半分復号されたqを法とする多項式aiと暗号多項式eiを取り
込む。これらは、復号システムによって使用される多項式に関係する(図3を参照
)。eiは、チェックブロックを作成するときにしか使用されない。新しいチェッ
クが必要になったときに、新しいハッシュインスタンスを入力するのではなく、
eiを入力した後ハッシュ関数の状態を記録してからこの状態に戻ることによりハ
ッシュ状態にeiを繰り返し入力するのを避けることができる。
【0165】 表Gjkは実験から構成され、さまざまな数の同時発生誤りをいろいろな深さで
訂正する順序を制御することができる。ほとんどすべての誤りは即座に訂正され
るため、第1の対のエントリを超えてこの表の理想的な値を決定することは難し
い。結果的に、正確な値はほとんど重要でない。
【0166】 402.訂正されたレベルは、訂正レベルと比較するために使用される単なるカウ
ンタである。
【0167】 値jは、表Gとともに使用される。これにより、現在Gのどの行が使用されてい
るかがわかる。
【0168】 値xからは、qを法として不正にラップされた値が3を法としてどれだけ変更さ
れているかがわかる。より一般的には、NTRU特許出願のpの値が3以外の値に選択
された場合、xは次の式で計算される。 x=q rem p
【0169】 qを法とする多項式を中心化するというのは、最小絶対剰余類(0を中心とする)
にシフトすることである。-q/2+1からq/2の範囲を使用する必要はないことに注
意されたい。代わりに、-q/2からq/2-1の範囲を使用することもできる。
【0170】 403.この時点で、-q/2とq/2への値の近さによりaiの係数の順序を決めるリス
トを作成する。正確にq/2に等しい値がステップ402で下にラップされた場合、負
の値の係数は同じ絶対値を持つ正の値の係数の前にリストされ、-q/2に正確に等
しい値が上にラップされた場合はその逆となる。図8で説明されている例では、
このリストは、802、803、804、805、および806というラベルの付いている係数
からこの順序で始まる。値自体ではなく範囲の端からのそれぞれの係数の値の距
離のみを記録することも可能である。ここで値全体を使用して、プロセスを簡単
にたどれるようにしている。
【0171】 404.3を法として還元した後、オリジナルのqを法とする多項式aiはもはや使用
されない。
【0172】 405.kは初期化される。これにより、チェックが行われる同時誤りの個数が制
御される。まず、不正にラップされている係数についてチェックが行われる。
【0173】 406.ここで、表から行うべきチェックの現在の深さを取る。表の第1行にある
場合、チェック手順は深さ0から始まる。値が前のjの値以下の場合、407でチェ
ックされていないkタプルはなく、アルゴリズムは次のkの値にそのままスキップ
することに注意されたい。
【0174】 407.アルゴリズムは、±q/2から一定距離以内にある値を持つ係数のすべてのk
タプルを検索する。このときに、まだチェックされていないkタプルが残されて
いるかどうかを判別する。小さい深さで検索時にチェックされたkタプルは、再
チェックする必要はない。
【0175】 408.値すべてが所定の範囲内にある係数のkタプルが選択される。このkタプル
は、アルゴリズムの前回の反復で選択されたkタプルと区別されなければならな
い。次に、選択されたkタプルの値を変えて、qを法とする可能なミスラップにつ
いて3を法として補正する。
【0176】 409.変更されたaI’を使用して、復号プロセスを完了する。
【0177】 410.復号された多項式および暗号多項式が完全性チェックに合格したかどうか
を確認するチェックを行う。
【0178】 411.完全性テストに合格した場合、biは次に暗号解読される多項式として受け
付けられる。
【0179】 412.可能なkタプルが尽きた場合、検索は±q/2から可能なより大きな距離に拡
大される。
【0180】 413.表Gの(j,k)の値から、kの現在の値についてkタプルでの誤りの検索を停止
する深さを得る。
【0181】 414.検索の意図する範囲に関してどこまで検索したかを記録するカウンタをイ
ンクリメントする。専用カウンタを設置するよりも、この方法をとるほうが明ら
かに経済的である。
【0182】 415.このときに、訂正されたレベルが与えられた訂正レベルに達したかどうか
を確認するチェックを行う。
【0183】 416.復号された多項式でステージ411において停止せずに指定された訂正レベ
ルに関する限りチェックを実行している場合、検索は放棄され、多項式は訂正さ
れない。現実的に、最低限の訂正レベルでは、これは誤りの原因が復号障害以外
の場合にのみ発生する。
【0184】 417.訂正手順が実行される同時誤りの個数を増やす。
【0185】 418.Gの行の終端は0になっている。終わりに達すると、kはリセットされ、シ
ングルトンの誤りの検索が再び開始される。
【0186】 419.アルゴリズムは、Gの次の行に移動する。
【0187】 以下の例は、表Gの使用法を詳細に示している。
【0188】 例 ai=45-ll7x-127x2-45x3-117x4 q/2=128 インデックス 値 符号 0 45 + 1 117 - 2 127 - 3 45 - 4 117 -
【0189】 インデックス2は、最大絶対値を持つ係数に対応する。インデックス1および4
の係数は、同じ絶対値と同じ符号を持ち、それら2つのうちいずれがリスト上位
に来るかはまったく任意である。例の残りについては、1がリストの最初に記述
される。インデックス0および3は、絶対値は同じで、符号が異なるため、-127か
ら128の範囲を使用すると仮定すると、3が先である。
【0190】 したがって、その結果の順序は{(2,-127),(1,-117),(4,-117),(3,-45),(0,45)
}となる。
【0191】 q=128=3 * 42+2。したがって、x=2。
【0192】 簡単にした次の表Gjkを考える。
【0193】 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
【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(FIPS 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には、複数送信攻撃(Multiple Transmission Attacks(MTAs))の保護機
能を追加するオプションが含まれる。
【0221】 MTA保護機能を使用せずに同じ公開鍵を使用して同じメッセージを暗号化して
複数回送信すると、攻撃を受けやすい。
【0222】 2つのメッセージの間に予測可能な類似性が存在する可能性のあることを知っ
ておくことが重要である。最も明白に識別可能なのは、電子メールで使用されて
いるようなメッセージのヘッダであり、これらは多くの場合予測可能である。い
くつかのメッセージの最初の数バイトが同一である場合、その最初のメッセージ
多項式も同一であり、したがってMTAを受けやすい。
【0223】 価格表を定期的に送信するものとする。攻撃者がそれらの価格が変更されてい
ないと正しい仮定を行った場合、MTAを採用できることになる。
【0224】 単一のメッセージ多項式のセキュリティは、その多項式の暗号化で使用される
乱数因子(random factor)に依存する。攻撃者がその乱数因子を判別し、公開
鍵にアクセスできた場合、攻撃者がオリジナルのメッセージを取り出すことは自
明なことである。
【0225】 メッセージを送信するごとに、各多項式について「オンザフライ」で乱数因子
を決定する。つまり、まったく同じメッセージを複数回送信するとしても、そこ
には異なる乱数因子が含まれるということである。攻撃者が2つまたはそれ以上
の横取りしたメッセージにまったく同じ平文が含まれていることを確実に知って
いれば、何とか使用されている乱数因子を決定しようとこれらのメッセージを比
較する。
【0226】 MTA保護がない場合でも、一般に、2つのコピーだけから乱数因子を完全に決定
することはできない。しかし、複数のコピーを送信することで攻撃者はメッセー
ジのほとんど(および最終的にはすべて)を判別できるときには、2つのコピーを
送信することでさえメッセージのセキュリティを著しく損なうおそれがある。
【0227】 Tumbler MTA保護システムでは、単純なストリーム暗号システムをランダムに
選択された鍵(たとえば、疑似乱数発生器を使用する)とともに採用して、平文メ
ッセージが同じ鍵を使用して送信された他の同一のメッセージからランダムに異
なるようにする。ストリーム暗号は、鍵でブロードキャストされるので、メッセ
ージのセキュリティに直接加わらず、したがって、特にセキュリティの高い暗号
である必要はない。2つの同一の平文が予測できない仕方で互いに異なるように
することだけが必要である。
【0228】 Tumbler MTA保護オプションを使用したエンコーディングでは、ランダムな(ま
たは疑似ランダムな)MTA鍵が平文の先頭に追加される。この鍵を使用して、Tumb
lerシーケンスジェネレータの初期状態を設定する(第11節、および図2のステッ
プ202を参照)。平文データの後続のバイトとシーケンスジェネレータからの出力
とのXORを取り、それをPKCS暗号に入力する。図2のステップ203を参照のこと。
【0229】 復号時に(図3)、PKCS暗号システムから返されたデータの先頭kバイトを使用し
て、シーケンスジェネレータの初期状態を設定する(第11節を参照)。後続のバイ
トとシーケンスジェネレータからの出力とのXORを取り、それを復号された平文
として出力する。図3のステップ315を参照のこと。
【0230】 8.ビットからタートへ データは従来ビットとして格納されているが、好ましいPKCSアルゴリズムでは
、係数が値0、1、または-1を取ることができる多項式としてメッセージを処理す
る。メッセージ多項式は、3進数(タート)列にすぎない。ビットをタートに変換
し、再びタートをビットに戻す方法が必要である。
【0231】 本発明では、メッセージの19ビットからなるそれぞれの完全な集合を12タート
に変換する。これにより、パック効率が98.65%になるが、変換に使用される算術
演算を32ビット整数で実行することができる。64ビットを超える整数を使用する
方法は、さらに効率的であるが、パック問題と比較するとパック効率の向上は無
視できるくらい小さいといえる。
【0232】 8.1 ビットからタートへの変換 xを最下位19ビットがメッセージからの19ビットのブロックと同じ構成で設定
され、他のビットがすべて0に設定されている整数とする。ここに、タートは値0
、1、または-1を取る整数と仮定する。
【0233】 1.xを3で割り、余りを計算する。この値を使用して、次のタートを決定できる
。0は、タートの値が0であることを決定し、1は、タートの値が1であることを決
定し、2はタートの値が-1であることを決定する。
【0234】 2.xを3で割り、余りを破棄する。
【0235】 3.ステップ1および2を合計12回実行する。
【0236】 明らかに、このプロセスは、ステップ1でxを3ではなく81で割った場合に加速
され、その余りをタートの81個の可能な4タプル(4個の要素を持つ順序付き集合)
の表とともに使用して次の4タートの値を決定することができる。その後、ステ
ップ2でxを81で割る。このアプローチを使用した場合、プロセスでは12回ではな
く3回の反復のみが必要である。
【0237】 xを729で割り、余りを取って、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}の値が得られる。したが
って、タートの可能な12タプルすべてを生成できるわけではない。これは、312=
531441は、219=524288よりも大きいためである。これは、この範囲を外れるター
トの集合はメッセージ終了を示すのに使用されるため重要である。
【0239】 最後の19ビットからなる不完全集合は、もしあれば、必要な数のランダムビッ
トで19ビットにパッディングされる。パッディングを除く実際のメッセージデー
タの長さは、記憶され、メッセージ終了マーカの値の判別に使用される。このさ
らなる詳細については、第9節を参照のこと。
【0240】 例 この例の目的のために、19ビットからなる列が0101101101001100010であり、
先頭および最下位ビットから最後および最上位ビットへ順序付けられている。10
進整数と見なすと、このビット列は144090である。各タートの値は次のように計
算できる。
【0241】
【表1】
【0242】 したがって、ビット列0101101101001100010はタート列{0,0,-1,-1,-1,1,-1,-1
,0,1,-1,0}に変換される。
【0243】 8.2 タートからビットへの変換 データが復号されている場合、再び、3進数多項式の形式を取り、ビットから
タートへの変換プロセスを次のように逆転する必要がある。
【0244】 1.yを前の12タートの集合から計算で求めたxの値ととる。これは明らかに、最
初のブロックについては関連性がなく、これに対し前の集合はない。最初にxを0
に設定する必要がある。
【0245】 2.この集合内のタートに、0から11まで順に番号を振る。i番目のタートが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】
【表2】
【0250】 xに19個を超える有意なビットがなく(144090<219)、2進数ではxは19ビット010
1101101001100010で表される。これらは、前の例で3進数に変換されたのと同じ1
9ビットである。
【0251】 9.メッセージ終了マーカ 符号化をするため2進数メッセージは、3進数に変換される(第8節を参照)。こ
れは、19ビットのブロックを使用して実行される。明らかに、すべてのメッセー
ジが、19ビットの正確な倍数となる長さを持つわけではなく、必要ならば、19ビ
ットの最後のブロックに乱数ビットをパッディングする。これらの乱数ビットは
、オリジナルメッセージの一部ではなく、復号時に除去する必要がある。したが
って、符号化されたメッセージはどのビットがメッセージの一部であり、どれを
破棄する必要があるかを正確に判別できる十分な情報を含んでいなければならな
い。
【0252】 さらに、エンコーディングメカニズムは、N個の係数を持つ3進数多項式に作用
するが、ただし、Nは鍵の強さによって決定される整数パラメータである。メッ
セージは、いったん3進数に変換されると、ちょうどの数の多項式を埋めること
を期待できない。そのため、最後の多項式は乱数3進数でパディングする必要も
ある。メッセージが復号されたら、これらのタートを無視することができなけれ
ばならない。
【0253】 そこで、メッセージ終了マーカをメッセージに追加して、オリジナルのデータ
が終了する位置を正確にデコーダに伝える。
【0254】 ビットをタートに変換する方法では、決して、{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タートに変換する。得られたタートの集合は{0,1,0,-1,1,0,-l,-l,1,-1,-1,-1
}から{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}の範囲内にある。これは、メッセ
ージ終了マーカである。多項式の余りは乱数タートでパディングされる。
【0258】 結果がメッセージを表すために使用される可能な領域の外にあるタートの列で
あり、またメッセージ終了マーカからどれがメッセージの最後のビットであるか
を判別できるとすれば、もちろん、他の計算をメッセージ終了マーカを作成する
ために使用できる。そのための1つの方法として、使用可能なメッセージ終了マ
ーカ領域を19個の部分に分割し、最後の19ビットのうちどれが実際のメッセージ
の終了を表すかを示すマーカを適切な部分から選択する方法がある(たとえば、
ランダムにあるいは実質的にランダムに)。
【0259】 メッセージブロックのパディングをブロックの先頭または終わりに配置し、メ
ッセージ終了マーカを得られたタートのブロックの前または終わりに追加するこ
とができる。ブロック内での方向は多少任意であり、したがって、ブロックを逆
に考えたときに「その後に続く(followed by)」などの表現が「の前に(in fr
ont of)」という表現を包含することができる。
【0260】 コーディング例 この例の目的のために、最後のブロックに達したときに符号化対象としてオリ
ジナルメッセージの4ビットのみが残されていると想定する。この状況で、15個
の乱数ビットを選択し、4個のメッセージビットと連結する。つまり、19のこの
ブロックの0番目、1番目、2番目、および3番目のビットはオリジナルメッセージ
に属しており、4番目、...、18番目のビットはランダムなパディングにすぎない
。したがって、Aは3に設定されるが、3番目のビットはオリジナルデータに属し
ている最後のビットだからである。その後、この19ビットのパディングされた集
合は通常のようにタートに変換される。この後、メッセージ終了マーカが選択さ
れる。最初に、乱数Bを0-375の範囲から選択する。この例の目的のため、Bに値1
22を与える。そこで、次の計算を実行する。 A+l9×B+219=3+19×122+219=526609
【0261】 この整数のタートへの変換により、{1,0,0,1,0,1,-1,0,-1,-1,-1,-1}が得られ
る。
【0262】 前の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}は、必須の終了マーカである。
【0263】 メッセージが復号されると、12タートの各集合が次々に変換され19ビットに戻
される。通常の動作であれば、復号プロセスでは最終的に12タートのブロックが
範囲を外れ、19ビットに戻される。換言すれば、2進数に変換して戻す操作を通
じて得られた整数は19個よりも多い有意ビットを持つ。(第8節を参照) この整数は、メッセージ終了マーカである。このメッセージ終了マーカが変換
され2進数に戻された後、219がそこから引かれる。その結果を19で割り、余りを
取る。Aが返される。終了マーカの直前にあるブロックの19ビットのうち、0番目
のビットからA番目のビットまでのビット列はオリジナルメッセージビットとし
て保持される。残りのビットは、ランダムパディングであり、残りのタートとと
もに破棄することができる。
【0264】 復号の例 この例の目的のために、前の例で計算した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
ビットは破棄できる。
【0265】 もちろん、メッセージ転送に使用できない領域内からメッセージ終了マーカを
使用することは上述のビットからタートへの変換例に制約されるわけではなく、
またもちろん、19ビットを12タートに変換する特定の例に制限されるわけでもな
いことは理解されるであろう。何らかの適当なアクセス不可能な領域が存在すれ
ば、法の変更を伴う他の変換も使用できる。
【0266】 10.疑似乱数発生器 Tumblerは、2つの疑似乱数発生アルゴリズムを備えている(本発明の出願者は
そのうち第2のもののみ保護可能であると考えている)。両方のアルゴリズムがSH
A-1を使用して、入力されたシード値に基づいて予測不可能なランダムに分散さ
れたビットストリームを生成する。
【0267】 すべての疑似乱数発生器(RPNG)は本質的に決定論的であり、生成される出力は
シードと同程度に予測不可能でしかないことは記憶すべき重要なことである。
【0268】 最初のTumblerアルゴリズムTSR(Tao SHA-1 Random)は、他の多くの市販ハッシ
ュベース暗号RPNGと似た動作をする。CounterpaneからRSAとYarrowによって提供
されるSHA1RandomおよびMD5Randomは、このカテゴリに分類される。初期入力の
ハッシュ値が計算され、カウンタでこのハッシュ出力について繰り返しハッシュ
値を計算し、ランダムビットストリームを生成する。どの段階でも、さらに入力
を追加することができ、これと現在の状態とともにハッシュ値を計算する。
【0269】 図9は、このような汎用PRNGが動作する仕方を簡略化して示している。
【0270】 901.PRNGに「シード値」を与える、つまりすべての後続出力の基になる初期状
態を与える。十分に予測できないデータを入力することでこれが達成されるが、
歪曲することがあり、したがって、疑似乱数データとしては使用できなくなる。
このようなデータは、通常、キーストロークやマウスの動きのタイミングなどの
現実世界のイベントを測定することにより得られる。このデータのことをエント
ロピと呼ぶ。
【0271】 902.ハッシュ関数を使用して、任意に大きなエントロピ量のハッシュ値を一緒
に計算する。これにより、このエントロピに基づくサイズの確定している内部状
態が与えられる。このようなエントロピの予測不可能性はそのサイズと同じでは
あり得ない。エントロピの10ビットには16個の可能な集合的な値しかなく、した
がって、4ビットの予測不可能性を持つ。このハッシュステップを使用して、十
分な予測不可能性を保証する十分なエントロピを入力できる。
【0272】 903.902からの出力と、904のカウンタの値とを合わせて、PRNGの内部状態が形
成される。
【0273】 904.内部カウンタを使用して、出力の各ブロックを変化させる。カウンタは、
ランダム出力の各ブロックとともに変化する。出力の各ブロックはカウンタに基
づくため、これにより、異なる出力が生成される。
【0274】 905.他のハッシュインスタンスにより、第1のハッシュ903の結果とカウンタ90
4とを組み合わせる。ランダムデータの新しいブロックが必要になるごとにこの
ハッシュを再び使用する。
【0275】 906.905のハッシュの結果は疑似ランダムデータである。アプリケーションに
よっては、これは疑似ランダムビット列であってよい(必要というわけではない)
【0276】 TSRの正確な説明は次のとおりである。
【0277】 H()をハッシュ関数、X‖YをXとYの連結、Cを整数カウンタ、Eiを乱数発生器に
加えるi番目のエントロピプール、PijをEの入力以降に生成されたランダムデー
タのj番目の106ビットプール、SiをPijを生成する160ビット内部状態と定義する
【0278】 - 最初にアルゴリズムを初期化すると、カウンタC、i、およびjが0に設定さ
れ、状態S00は160ビットすべてがアンセットされる。
【0279】 - i番目のエントロピプールがPRNGに入力されるときに、現在の状態がS(i-1) であると仮定すると、新しい状態SiがH(S(i-1)‖Ei)となる。
【0280】 - さらにデータが必要な場合、カウンタCが1だけインクリメントされ、新し
いプールPijがH(Si‖C)になる。
【0281】 この方法は、エントロピ入力から暗号ビットストリームを限りなく生成するセ
キュリティの高いメカニズムとして機能するが、1つのハッシュ出力のサイズで
内部状態を保持するだけであるという欠点がある。SHA-1は、160ビットを使用し
、現在一般にサポートされているハッシュアルゴリズムの最大のダイジェストサ
イズである。つまり、エントロピ入力の量にかかわらず、入力操作の間に生成さ
れる2160を超える異なるビットストリームはあり得ないということである。
【0282】 現代的な暗号法では、オブジェクト(秘密鍵など)を極めて大きな領域からラン
ダムに選択することが望ましい。たとえば、N=503の場合、NTRU PKCSの秘密鍵は
2720個があり得る。2160の内部状態でPRNGを使用した場合、シード値設定操作が
1回だけだと、可能な鍵のうち少なくとも2520個はまったく選択できない。
【0283】 オブジェクトの作成時にシード値設定操作を実行するのは常にごく単純な作業
である。シード値設定操作には、エントロピが必要であり、エントロピを得るに
は、現実世界を測定する。したがって、暗号が使用されているプラットフォーム
と現実世界とのやり取りを正確に知っている必要がある。
【0284】 そこで、プラットフォーム独立な仕方で十分にランダムなデータを得るという
問題に2つの解決法を提案する。
【0285】 第1は、自己再シード値設定(self re-seeding)PRNGである。この方法は、比
較的説明しやすいが、この方法を採用するシステムに対する要求条件がよけいに
あり、そのため準プラットフォーム独立でしかない。
【0286】 PRNGの基本的な内部メカニズムに変更はない。PRNGが動作することが期待され
るプラットフォームごとに、PRNGによって呼び出すことができる関数が存在し、
これによりPRNGにエントロピが供給される。
【0287】 PRNGは、通常のようにランダムデータを生成するが、生成されるデータの量を
記録する。これは、PRNGの内部状態とさらに最後に供給されたエントロピの予測
不可能性と比較される。PRNGが内部状態とエントロピの予測不可能性のうち小さ
い方と同程度の量のデータを生成した場合、これは、プラットフォーム固有の関
数を呼び出し、さらにエントロピを要求する。
【0288】 第2の解決法は、これより複雑ではあるが、完全にプラットフォーム独立であ
るという利点がある。
【0289】 この基本原理では、PRNGを非常に大きな内部状態とともに使用する必要がある
。このようなPRNGを生成する際の問題は、セキュリティの高いハッシュに必要な
内部状態よりもかなり小さい有限な出力があるときに暗号面のセキュリティを高
めることにある。
【0290】 大きな状態のPRNGのTumblerの実装は、TSR-LS(Tao SHA-1 Random-Large State
)アルゴリズムである(上述の2つのTumblerアルゴリズムのうちの第2のもの)。TS
R-LSでは、複数の同時ハッシュ関数を使用して、新しい生成操作ごとにオリジナ
ルのシードを再ハッシュする。これにより、2048ビットの内部状態が得られ、22 048 個の異なるビットストリームを2つの入力操作の間に生成できる。TSR-LSはTS
Rよりも遅いが、動的再シード値設定(dynamically re-seeding)PRNGほどは遅く
ない。TSR-LSの動的再シード値設定PRNGに勝る他の利点としては、後者では、シ
ードデータをバラバラに使用するため、初期出力はシードに依存しないという点
があげられる。TSR-LSでは、出力はすべて、シードのすべてに依存しており、20
48ビットの状態の違いで出力のすべてのビットを変更する可能性がある。
【0291】 TSR-LSでは、複数階層ハッシュ関数のシステムを使用する。簡単なバージョン
を図10に示す。ハッシュ関数はソフトウェアで実現できるが、あるいは、ハード
ウェアによるハッシュ手段を備えることもできる。
【0292】 1001.エントロピは、第1層のハッシュ関数のそれぞれに等しく分割する。ハッ
シュ関数の個数は、必要とする内部状態のサイズに依存する。シード値設定プロ
セスは、使用するハッシュ関数が多いほど低速になるが、操作が進むうちに時間
はハッシュの個数に依存しなくなる。
【0293】 1002.まず、第1層のハッシュ関数のそれぞれで、受け取るエントロピをハッシ
ュする。
【0294】 1004.第2層のハッシュでは、第1層のハッシュ1002のすべての出力を取り込み
、このすべてをまとめてハッシュする。このため、最終出力のすべてのビットは
初期シードのすべてのビットに基づく。
【0295】 1005.第2層のハッシュ1004からの出力により、PRNGの疑似ランダム出力が形成
される。
【0296】 PRNGを使用しているアプリケーションからさらにデータが要求されるごとに、
ハッシュ関数1002のいずれかが(ローテーションに基づいて)カウンタ1003を使用
して再ハッシュ操作を実行する。この再ハッシュ操作は、上述の通常状態のPRNG
によって使用されているのと同じでもよい。
【0297】 1003.このカウンタを使用して、すべての再ハッシュ操作で各ハッシュ関数が
新しい出力を生成するようにする。ここで、以下の例において、初期出力をカウ
ンタのインクリメントとして使用する。各ハッシュ関数1002は、それ専用のカウ
ンタ1003を保持することができる。
【0298】 特定の再ハッシュ関数の再ハッシュされた出力が第2層関数1004に供給され、
そこで他の関数1002から受け取っている出力でハッシュし、必要な新しい出力デ
ータ1005を生成する。このようにして、新しいデータの要求が生じたときに関数
1002のうち1つだけデータを再ハッシュし、そのデータを第2層関数1004に渡す。
【0299】 ハッシュ関数1002は、必要に応じてまた必要になったときに、プール1001から
追加エントロピを取得する。あるいは、追加エントロピをブロックで一度にすべ
ての関数1002に供給することができる。
【0300】 TSR-LSの正確な説明は次のとおりである。 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ビット中
間状態として定義される。
【0301】 - このアルゴリズムが最初に初期化されるときに、C0、C1、C2、C3、I0、I1
、I2、およびI3はすべての160ビットをアンセットし、i=0、k=-1とする。
【0302】 - i番目のエントロピプールがPRNGに入力されると、エントロピプールEiは分
割され、n番目のバイトがエントロピのサブプールEia内に置かれるが、ただしa
は4を法とするnの正の最小剰余であり、またこれはバイトが4の最後の不完全集
合の一部でない場合のことであり、一部である場合は、バイトのこの最後の集合
は分割され、n番目のビットがエントロピのサブプールEiaに含まれ、ただしaは4
を法とするnの正の最小剰余である。生成された最後の内部状態ブロックは、Sk
と定義する。ハッシュ関数Ha()ごとに、エントロピのサブプールをそのハッシュ
に入力された前のデータのすべてと連結する。この連結のダイジェストを計算し
て、その結果をSk+a+1内に置く。
【0303】 - さらデータが必要な場合、aを4を法とするjの正の最小剰余に取る。Caは、
2160を法としてこの値を加えることによりインクリメントIaでインクリメントす
る。次に、この値を、Ha()ですでにハッシュされている入力に連結し、その結果
を計算する。生成された最後の内部状態ブロックがSkであったと仮定する。この
場合、このハッシュの結果はSk+1に入り、新しいプールPijはH(S0‖S1‖...‖Sk +1 )となる。
【0304】 11.シーケンスジェネレータ 上で説明したMTA保護ハッシュにシーケンスジェネレータを使用する。このシ
ーケンスジェネレータの目的は、入力シード値がわかっており、ストリームが決
定論的でなければならないことを除き、PRNGと似た方法で疑似ランダムビットの
不確定なストリームを供給することである。それでも、任意に選択されたシーケ
ンスを生成する入力シード値を見つけたり、出力の一部から入力を計算すること
が計算上不可能でなければならない。
【0305】 PRNGは決定論的であるため、シーケンスジェネレータは、指定されたPRNGに既
知のシード値を供給することにより実現できる。Tumblerでは、PRNGと少し異な
る動作をする単純なシーケンスジェネレータを用意している(PRNGを使用するこ
ともできるが)。
【0306】 SHA-1のインスタンスを使用して初期シード値をハッシュし、このハッシュ出
力自体を使用可能なシーケンスデータの最初の20バイトとして使用する。その後
、前の出力ブロックとハッシュ入力とを連結してハッシュを再計算することによ
り新しいシーケンスデータを供給する。
【0307】 12.ベクトル表現に対する並列ビット演算を使用した効率的なモジュロ演算 Tumblerでは、ビットベースの技術を使用して小さな法でモジュロ演算を実行
する新しい方法を使用している。
【0308】 この方法では、ビット(つまり、2進数)ベースのデバイスを使用してモジュロ
演算を効率的に実行できる。これは、数値をベクトル形式で格納し、ビット単位
の論理演算の単純列を使用して複数の数値に対し算術演算を並列実行することに
より行う。この方法を使用すれば、どの基底でも効率のよいモジュロ演算を実行
できる。しかし、効率は、基底が小さいときに最大となる。Tumblerは、この方
法をPKCS 3進数演算の実行に使用する。
【0309】 12.1 モジュロ演算の詳細な説明 正の整数基底rに対する、rを法とする算術演算は、整数のr「剰余類」の間の
演算に関するものである。「剰余類」は、rで除算したときの共通の余りを共有
する整数から成り立っている。
【0310】 たとえば、法7に関して、64と15は両方とも同じ剰余類に属する。 64=9×7+1、15=2×7+1
【0311】 2つの整数の和または積を任意に与えられた整数で割った後の余りは、その同
じ整数でそれぞれの加数または因数を割った後の余りにのみに依存する。したが
って、剰余類の間の演算を考えることができる。
【0312】 剰余類の間の加算、減算、および乗算は、剰余類から任意に選んだ代表元の間
の通常の整数演算と同じように行われる。通常、前者は、各剰余類から元を1つ
取り出すという方法で代表元の集まりを選ぶことを含む。これらは、通常、正の
最小値からなる集合(つまり、{0,1,...,r-1})または最小絶対値からなる集合({[
-r/2]+1,...,0,...,[r/2]})のいずれかである。
【0313】 モジュロ演算は、理論的には、一般化された整数演算よりもかなり単純である
。しかし、現代のデジタルデバイスは一般化された整数演算を取り扱うように作
成されており、モジュロ演算の実行が非常に不効率である。
【0314】 12.2 マシンに関する仮定 そこで、nビットのワードを使用し、以下のビット単位の論理演算を実行でき
るデバイスが存在していると仮定する。 ・両方の入力ワードの対応するビットが両方ともセットされていないか、また
は両方ともクリアされていない場合かつその場合に限り各ビットがセットされた
ワードを返すように定義されている2項演算XOR。
【0315】 ・両方の入力ワードの対応するビットがセットされている場合かつその場合に
限り各ビットがセットされたワードを返すように定義されている2項演算AND。
【0316】 ・入力ワードのいずれか、または両方の対応するビットがセットされている場
合かつその場合に限り各ビットがセットされたワードを返すように定義されてい
る2項演算OR。
【0317】 ・入力ワードの対応するビットがクリアされている場合かつその場合に限り各
ビットがセットされたワードを返すように定義されている単項演算NOT。
【0318】 12.3 ベクトル表現 ここで説明している方法のポイントは、数値のベクトルビット単位の表現にあ
る。
【0319】 デジタルデバイスは、通常、1ワードの隣接するビットに2進形式の整数を格納
する。このため、「半加算器」などの、ビット間の桁上げが可能な回路を使用す
ることができる。ベクトル表現では、数の値は異なるワード内の対応する位置に
あるビットにより表現される。これらのビットの値は、数の2進数形式に関係す
る必要はない。後の例の3進数で示されているように、ビットを新しい方式で解
釈することで、効率が高まるだけでなく、その他の付随する利点が得られる。
【0320】 2つの整数の間の単一のモジュロ算術演算を実行する場合、通常の整数方式を
使用するよりもベクトル表現を使用したときのほうがかなり効率が悪い。これは
、数値を表す2×[log2 r]個のワードを組み合わせると一般に、O(log3 r)回の演
算が必要になるためである。
【0321】 しかし、出願人はベクトル表現の利点が限界のない並列安定性にあると理解し
ている。同時に実行可能な同じ演算の回数は、ワードのサイズでのみ制限される
【0322】 12.4 3進数表現 そこで、タートの3つの可能な値(3進数の表現)が0、1、および-1であると仮定
する。これは、任意の決定であり、システムはこれら3つのタートの名前とは独
立に適用する。
【0323】 タートは、2つの異なるワード内の対応する場所を占有する2つのビットにより
表される。第1のワード内にあるビットは、タートの値が0でない場合かつその場
合にかぎりセットされる。第2のワード内にあるビットは、タートの値が1の場合
かつその場合にかぎりセットされる。したがって、3つのタート0、1、および-1
は、それぞれ、ベクトル<0,0>、<1,1>、および<1,0>で表される。このようにし
て、nタートは2つのnビットワードで表すことができる。
【0324】 例 4つのタート0、0、-1、および1のベクトルビット単位の表現を使用すると仮定
する。上で指定されたベクトルを使用すると、次の表が得られる。
【0325】
【表3】
【0326】 そこで、1番目のビットと2番目のビットを別々に取り出して格納すると、この
情報を2つの別々の4ビットワード、つまり0011(1番目のビットを表す)および000
1(2番目のビットを表す)として取り扱うことができる。次に、たとえば、演算XO
R、AND、OR、およびNOTを使用して、個々のタートにではなく、またベクトルに
でもなく、ワード自体に対しモジュロ演算を実行することができる。これにより
、どんなにたくさんのタートを同時に操作するとしてもオーバーフローや桁上げ
を扱う状況を回避できる。
【0327】 モジュロ演算を実行する効率的な方法が提案されるほかに、このビットの解釈
により、単に第1の配列を調べることにより2を法としてタートの値を求めること
ができる。アルゴリズムは、0と0以外のタートを区別することに注目することが
多いため、これは、通常の2進形式に対し大きなメリットとなっている。
【0328】 対応するビットのペアがあり、第1のワード内のビットがクリアされている場
合、第2のワードにあるビットはセットされることはまったくない。しかし、シ
ステムはこのことに依存する必要はない。
【0329】 同様な原理は、もちろん、3以外の基底に関するモジュロ演算に適用すること
も可能であり、たとえば、基底5で演算を実行するには、3つの別々のワード、ベ
クトル表現内の第1のすべてのビットを表す第1、第2のすべてのビットを表す第2
、および第3のすべてのビットを表す第3に対し行う。このアプローチは、さらに
大きな基底についても機能する。
【0330】 12.5 3を法とする演算 3を法とする演算は、次のようにして計算される。
【0331】 X〜0およびX1は、n個のタートx0、...、xn-1を表す2つのnビットワードであり
、対応するタートが0でない場合にワードX〜0はセットされたビットを含み、対
応するタートが1の場合にワードX1はセットされたビットを含む。同様に、Y〜0
およびY1は、n個のタートy0、...、yn-1を表す2つのnビットワードである。
【0332】 n個のタートペア(xi,yi)をそれぞれ3を法としてi=0から(n-1)について加算す
ると、Z〜0およびZ1、つまりタート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
【0333】 xiからyiの値をそれぞれ3を法としてi=0から(n-1)について引くと、Z〜0およ
びZ1、つまりタート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
【0334】 n個のタートペア(xi,yi)をそれぞれ3を法としてi=0から(n-1)について乗算す
ると、Z〜0およびZ1、つまりタート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
【0335】 体F3では、2つの非ゼロ元である1と-1のみが自己逆元となっている。したがっ
て、除算は、乗算と区別できない。
【0336】 12.6 ハードウェアとソフトウェア この方法は、ハードウェアだと実装が簡単であり、図11、12、および13に示さ
れている回路図からわかる。図11は3を法とする加算の回路図、図12は3を法とす
る減算の回路図、図13は3を法とする乗算の回路図を示している。
【0337】 ソフトウェアでは、この方法により、スケーラブルな並列化が可能であるが、
それは、任意長のワードの全幅を利用できるからである。
【0338】 12.7 Tumblerでの使用 Tumbler PKCSでは、3を法とする多項式を使用するが、これはその係数すべて
が法3に関してのみ有意な値を持つ多項式である。アルゴリズムのさまざまな段
階で、これらの多項式を互いに加減する必要がある。特に、現在の鍵生成システ
ムの実装では、「Almost Inverse algorithm」(第3節を参照)あるいはユークリ
ッドアルゴリズムを使用し、3を法とする多項式で実行する。その結果これらの
アルゴリズムでは、多項式同士の加減算が必要である。この暗号解読システムは
、2つの3を法とする多項式の合成積(スター乗算)を必要とする。さらにスター乗
算アルゴリズムではさらに、多項式同士の加減算が必要である。
【0339】 2つの多項式を加えるには、それぞれの多項式からの対応する係数の値を足し
合わせる。第1の多項式からの第1の係数の値を第2の多項式の第1の係数の値に加
えて、その合計の第1の係数の値を出力する、というように続ける。
【0340】 第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
【0341】 同じことが減算についても成り立つ。各多項式を2つのビット配列として格納
することにより、上の減算方法を使用して2つの多項式の差を計算することがで
きる。
【0342】 Tumblerの各多項式は係数が503個もあるため、この方法をとると速度が著しく
高まる。
【0343】 モジュロ演算に対するこのようなアプローチは、デジタルデータ処理の分野の
アプリケーションに一般的に見られ、暗号システム内の使用に限られない。
【図面の簡単な説明】
【図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 AA18 AA20 JA01 JA03 JA04 NA04 NA12 NA17

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 ビット単位の論理演算を実行するように適合されたデバイス
    上で並列モジュロ演算を実行する方法であって、 (a)それぞれのビット単位のベクトルによって演算が行われる数値 (x) 列を表
    すステップと、 (b)前記ベクトルのそれぞれの1つのビットから第1のワード(X〜0)を形成し、
    前記ベクトルのそれぞれの他のビットから第2のワード(X1)を形成するステップ
    と、 (c)前記ワードの一方または両方にビット単位の論理演算を実行するステップ
    とを備えることを特徴とする方法。
  2. 【請求項2】 (d)それぞれのビット単位のベクトルによって演算が行われ
    るさらなる数値 (y) 列を表すステップと、 (e)前記ベクトルのそれぞれの前記1つのビットから他の第1のワード(Y〜0)を
    形成し、前記ベクトルのそれぞれの前記他のビットから他の第2のワード(Y1)を
    形成するステップと、 (f)前記それぞれの第1のワード(X〜0,Y〜0)の両方または前記それぞれの第2の
    ワード(X1,Y1)の両方にビット単位の演算を実行するステップとを含むことを特
    徴とする請求項1に記載の方法。
  3. 【請求項3】 前記第1のワード(X〜0)を一方の場所に格納し、前記第2のワ
    ード(X1)を他方の別の場所に格納することを特徴とする請求項1に記載の方法。
  4. 【請求項4】 前記それぞれの第1のワード(X〜0,Y〜0)を一方の場所に一緒
    に格納し、前記それぞれの第2のワード(X1,Y1)を他方の別の場所に格納すること
    を特徴とする請求項2に記載の方法。
  5. 【請求項5】 前記演算が行われる数値(x)は3を法とすることを特徴とする
    請求項1に記載の方法。
  6. 【請求項6】 前記演算が行われるさらなる数値(y)は3を法とすることを特
    徴とする請求項1に記載の方法。
  7. 【請求項7】 Z〜0を前記結果の1ビットを表すワード、Z1を前記結果の他
    のビットを表すワードとして、 Z1=(X〜0 XOR Y1)AND(X1 XOR Y〜0)、 Z〜0=(X〜0 XOR Y〜0)OR(X1 AND Y1)OR Z1 のようにしてZ〜0およびZ1を求めることにより数値(x)およびさらなる数値(y)の
    前記列からそれぞれの値のペア(xi,yi)の和(3を法とする)を計算することを含む
    ことを特徴とする請求項5および6に記載の方法。
  8. 【請求項8】 Z〜0を前記結果の1ビットを表すワード、Z1を前記結果の他
    のビットを表すワードとして、 Z〜0=(X〜0 XOR Y〜0)OR(X1 XOR Y1)、 Z1=(Y〜0 R X1)AND((NOT Y1)OR X〜0)AND Z〜0 のようにしてZ〜0およびZ1を求めることにより数値(x)およびさらなる数値(y)の
    前記列からそれぞれの値のペア(xi,yi)の減算(3を法とする)の結果を計算するこ
    とを含むことを特徴とする請求項5および6に記載の方法。
  9. 【請求項9】 Z〜0を前記結果の1ビットを表すワード、Z1を前記結果の他
    のビットを表すワードとして、 Z〜0=(X〜0 AND Y〜0)、 Z1=(NOT(X1 XOR Y1))AND Z〜0 のようにしてZ〜0およびZ1を求めることにより数値(x)およびさらなる数値(y)の
    前記列からそれぞれの値のペア(xi,yi)の乗算(3を法とする)の結果を計算するこ
    とを含むことを特徴とする請求項5および6に記載の方法。
  10. 【請求項10】 請求項1から9のいずれかに記載の方法を実行するステップ
    を含むことを特徴とする暗号化の方法。
  11. 【請求項11】 請求項1から9のいずれかに記載の方法を実行するステップ
    を含むことを特徴とする暗号解読の方法。
  12. 【請求項12】 請求項1または請求項2に記載の方法を使用してN(N≧3)を
    法とする係数を持つ多項式の加算、減算、または乗算を実行することにより鍵を
    生成するステップを含み、第1の多項式の前記係数は数値(x)列で、第2の多項式
    の前記係数はさらなる数値(y)列であることを特徴とする暗号化の方法。
  13. 【請求項13】 N=3であることを特徴とする請求項12に記載の方法。
  14. 【請求項14】 請求項1または2に記載の方法を使用してN(N≧3)を法とす
    る係数を持つ多項式の加算、減算、または乗算を実行するステップを含み、第1
    の多項式の前記係数は前記数値(x)列で、第2の多項式の前記係数は前記さらなる
    数値(y)列であることを特徴とする暗号解読の方法。
  15. 【請求項15】 N=3であることを特徴とする請求項14に記載の方法。
  16. 【請求項16】 請求項1から15までのいずれかに記載の方法を実行するこ
    とを特徴とするコンピュータプログラム。
  17. 【請求項17】 請求項16に記載のコンピュータプログラムを実行すること
    を特徴とする物理的キャリア。
  18. 【請求項18】 請求項16に記載のコンピュータプログラムを表すことを特
    徴とするデータストリーム。
  19. 【請求項19】 ビット単位の論理演算により並列モジュロ演算を実行する
    デジタルデバイスであって、 (a)それぞれのビット単位のベクトルによって演算が行われる数値 (x) 列を表
    す手段と、 (b)前記ベクトルのそれぞれの1つのビットから第1のワード(X〜0)を形成し、
    前記ベクトルのそれぞれの他のビットから第2のワード(X1)を形成する手段と、 (c)前記ワードの一方または両方にビット単位の論理演算を実行する手段とを
    備えることを特徴とするデジタルデバイス。
  20. 【請求項20】 (d)それぞれのビット単位のベクトルによって演算が行わ
    れるさらなる数値(y)列を表す手段と、 (e)前記ベクトルのそれぞれの前記1つのビットから他の第1のワード(Y〜0)を
    形成し、前記ベクトルのそれぞれの前記他のビットから他の第2のワード(Y1)を
    形成する手段と、 (f)前記それぞれの第1のワード(X〜0,Y〜0)の両方または前記それぞれの第2の
    ワード(X1,Y1)の両方にビット単位の演算を実行する手段とを含むことを特徴と
    する請求項19に記載のデバイス。
  21. 【請求項21】 前記第1のワードを格納するため一方の場所に置かれてい
    る格納手段と、前記第2のワードを格納するため他方の場所に置かれている格納
    手段とを含むことを特徴とする請求項19または20に記載のデバイス。
  22. 【請求項22】 前記それぞれの第1のワードを一緒に格納するため一方の
    場所に置かれている格納手段と、前記それぞれの第2のワードを格納するため他
    方の場所に置かれている格納手段とを含むことを特徴とする請求項19または20に
    記載のデバイス。
JP2002501162A 2000-06-01 2001-05-25 ビット単位の論理演算を使用した並列モジュロ演算 Pending JP2003535378A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0013355.3 2000-06-01
GBGB0013355.3A GB0013355D0 (en) 2000-06-01 2000-06-01 Parallel modulo arithmetic using bitwise logical operations
PCT/GB2001/002354 WO2001093015A1 (en) 2000-06-01 2001-05-25 Parallel modulo arithmetic using bitwise logical operations

Publications (1)

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

Family

ID=9892806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002501162A Pending JP2003535378A (ja) 2000-06-01 2001-05-25 ビット単位の論理演算を使用した並列モジュロ演算

Country Status (8)

Country Link
US (1) US20040083251A1 (ja)
EP (1) EP1292883A1 (ja)
JP (1) JP2003535378A (ja)
KR (1) KR20030027895A (ja)
AU (1) AU2001262492A1 (ja)
CA (1) CA2410421A1 (ja)
GB (1) GB0013355D0 (ja)
WO (1) WO2001093015A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7607019B2 (en) * 2005-02-03 2009-10-20 Apple Inc. Small memory footprint fast elliptic encryption
US7587047B2 (en) * 2005-06-22 2009-09-08 Apple Inc. Chaos generator for accumulation of stream entropy
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US7849125B2 (en) 2006-07-07 2010-12-07 Via Telecom Co., Ltd Efficient computation of the modulo operation based on divisor (2n-1)
US7827471B2 (en) * 2006-10-12 2010-11-02 Intel Corporation Determining message residue using a set of polynomials
US8689078B2 (en) * 2007-07-13 2014-04-01 Intel Corporation Determining a message residue
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
US7886214B2 (en) * 2007-12-18 2011-02-08 Intel Corporation Determining a message residue
US8261176B2 (en) * 2009-06-30 2012-09-04 Sandisk Il Ltd. Polynomial division
US8819098B2 (en) 2010-11-23 2014-08-26 International Business Machines Corporation Computation of a remainder by division using pseudo-remainders
EP2523385B1 (en) * 2011-05-05 2017-07-12 Proton World International N.V. Method and circuit for cryptographic operation
US9543963B2 (en) 2015-01-30 2017-01-10 International Business Machines Corporation Modulo-m binary counter
US20160285624A1 (en) * 2015-03-26 2016-09-29 Intel Corporation Pseudorandom bit sequences in an interconnect
GB2546352B (en) * 2015-05-27 2018-04-11 Imagination Tech Ltd Efficient modulo calculation
FR3076925B1 (fr) 2018-01-16 2020-01-24 Proton World International N.V. Fonction cryptographique
KR102155007B1 (ko) 2019-02-14 2020-09-11 국민대학교산학협력단 독립성 측정을 이용한 엔트로피 관리 장치 및 방법, 이를 이용한 난수 생성 장치
US11029920B1 (en) 2020-10-21 2021-06-08 Chariot Technologies Lab, Inc. Execution of a conditional statement by an arithmetic and/or bitwise unit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4564944A (en) * 1983-12-30 1986-01-14 International Business Machines Corporation Error correcting scheme
FR2605769B1 (fr) * 1986-10-22 1988-12-09 Thomson Csf Operateur polynomial dans les corps de galois et processeur de traitement de signal numerique comportant un tel operateur
US5768168A (en) * 1996-05-30 1998-06-16 Lg Semicon Co., Ltd. Universal galois field multiplier
IL128552A (en) * 1996-08-19 2004-06-01 Ntru Cryptosystems Inc Method and device of a public key in a crypto system
US6633181B1 (en) * 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array

Also Published As

Publication number Publication date
CA2410421A1 (en) 2001-12-06
GB0013355D0 (en) 2000-07-26
AU2001262492A1 (en) 2001-12-11
US20040083251A1 (en) 2004-04-29
KR20030027895A (ko) 2003-04-07
WO2001093015A1 (en) 2001-12-06
EP1292883A1 (en) 2003-03-19

Similar Documents

Publication Publication Date Title
EP1290544B1 (en) Pseudo-random number generator
KR101267109B1 (ko) 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
JP2003535378A (ja) ビット単位の論理演算を使用した並列モジュロ演算
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JP2003535363A (ja) 複数の送信攻撃から暗号システムを保護する方法
EP1287641B1 (en) A method of validating an encrypted message
EP1287638B1 (en) Decoding of cipher polynomials
JP2003535499A (ja) メッセージの終わりのマーカ
EP3285429A1 (en) Method for securely transmitting digital data
Starossek A short-key one-time pad cipher