擬群を用いる、暗号法の基本要素、エラーコーディング、及び擬似ランダム数改善方法
初期擬群のオートトープである擬群を、選択可能な長さnの秘密初期キーKinに基づいて決定することと、ワーキングキーを決定することと、バイナリの付加的な暗号のためのキーストリームを、前記決定されたワーキングキー、前記決定された擬群、及び前記初期擬群から生成することと、前記バイナリ付加的暗号に、前記メッセージを入力ストリームとして導入することと、前記暗号化されたメッセージを含む前記バイナリ付加的暗号の出力ストリームを作り出すこととを含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一般的な領域は、情報の送信である。本発明のより詳細な領域は、データ暗号化/復号化である。本発明の他のより詳細な領域はエラーコーディングである。本発明の更なる他の詳細な領域は擬似ランダム数である。
【背景技術】
【0002】
暗号法は、データ通信のためのデータインテグリティ及び/又はデータセキュリティを提供するために用いてもよい。後者は、有線及び無線チャンネルを含むチャンネルを通して、通信されるデータを保護するために重要であろう。暗号化の一種は、ストリーム暗号を用いる。同じブロック入力に応答して同じブロック出力を生成することを特徴とするブロック暗号と反対に、ストリーム暗号は同一の入力に応答して、別の時には別の出力を提供することができる。ストリーム暗号は、キーの無い関係者には暗号化されたストリングがランダムシーケンスに見えるという目標を持つ、シード又はキーと呼ばれる入力を用いて、入力ストリング(例えば、メッセージ)を暗号化された出力ストリング(例えば、暗号文)に変換する。暗号化のレベルと、ある程度は暗号化に徹するリソースとが、他の関係者に対するセキュリティの(すなわちランダム性)のレベルを決定する。
【0003】
ストリーム暗号は、特定の入力に対する固定の出力が存在しないことから、ブロック暗号を超える改善されたセキュリティを提供する。技術的には、自己同期式(ときどき非同期式と呼ばれる)と同期式暗号とがある。同期式ストリーム暗号では、復号化されたストリームのより後の出力は、変換の間に起こったエラーの影響を受けない(実際の誤りビット上のエラー又はビット(ブロック)グループのエラーを除く)。エラーが復号化されたストリームに影響する場合には、自己同期式ストリーム暗号が用いられている。自己同期式暗号ストリーム手法は、エラー後にストリームを正しく復号化しても、多数のブロックを誤りを持って復号化又は送信させる。
【0004】
ブロック及びストリーム暗号、並びに暗号法又は送信方法は全体として、ある重要な支援手法を利用する。一例として、(擬似)ランダム数生成が暗号に用いられる。擬似ランダム数は、例えば、暗号化及び復号化方法のためのシードすなわち基準数を提供するために、生成される。他の例としては、一般的には通信を改善するために、具体的には雑音のあるチャンネルに対して用いてもよいエラー訂正コードも同様に、暗号法にメリットを提供するであろう。
【発明の開示】
【課題を解決するための手段】
【0005】
本発明の好ましい一実施形態によれば、同期式ストリーム暗号、自己同期式ストリーム暗号、及び完全非同期式ストリーム暗号を含む、多数のストリーム暗号が提供され、これらは、ワーキングキー及び擬群変換を用いており、ここで用いられる擬群は初期秘密鍵に基づいている。エラー訂正及び擬似ランダム数発生改善物についての方法が同様に提供され、両者とも擬群変換を採用している。
【発明を実施するための最良の形態】
【0006】
一般に、本発明の特定の実施形態では、選択可能なキーの長さを有する、同期式ストリーム暗号が提供される。例示的な実施形態では、平文データのストリームと付加的に合成されて暗号化された出力ストリームを生成する、一様に分布したキーストリームの生成のためのステップが提供される。このキーストリーム生成ステップは、秘密初期キーに基づいて1つのワーキング擬群変換を決定することを含み、また、このワーキング擬群を用いてキーストリームを生成することを含む。好ましい同期式ストリーム暗号はまた、アタックに対するコンピュータ的に実行不可能な防壁を提供する。キーの長さは、暗号のセキュリティを改善するために変更してもよく、キーサイズが大きくなるときに暗号化及び復号化のためのアルゴリズムを再設計することはしなくてよい。十分に小さなキーサイズに対しては、動作はハードウエア又はファームウエア実装でパイプライン化することができる。
【0007】
本発明の他の実施形態では、キー長さが可変の自己同期式ストリーム暗号が提供され、同様に、キーサイズが大きくなっても暗号化及び復号化のためのアルゴリズムを再設計する必要はない。自己同期式ストリーム暗号の特定の実施形態では、暗号化及び復号化は、秘密初期キーに基づいてワーキング擬群を決定し、ワーキングキー、ワーキング擬群、及びメッセージの暗号化及び復号化されるべき固定数の文字の関数としてメッセージを暗号化及び復号化することにより実行される。好ましい同期式ストリーム暗号と同様に、好ましい自己同期式ストリーム暗号はアタックすることはコンピュータ的に実行不可能であり、十分に小さなキーを用いることにより、ハードウエア又はファームウエア実装でパイプライン化することができる。
【0008】
本発明の更なる他の実施形態では、新規のタイプの暗号、すなわち完全非同期式ストリーム暗号が提供され、ここで出力ストリームは、ワーキングキー、初期キーに基づいて決定されるワーキング擬群、及び個定数の入力ストリームの前の文字の関数として生成される。このタイプの暗号は、敵対者による多様なアタックに対して安全であることが示されている。同期式暗号、自己同期式暗号、及び非同期式暗号は、本発明の実施形態によって擬群を用いて実装される暗号法の基本要素の例である。ここで用いられるように、用語「擬群」は、擬群又はこの代数学的な均等物を示している。
【0009】
本発明の他の実施形態では、メッセージのブロックをコード語にマッピングすることによって、バイナリシンメトリックチャンネルの中のエラーを訂正する方法を提供し、ここでマッピングは反復的であり、且つ任意のコード語に対して、長さrのCのサブストリングの分布は一様である。好ましい一実施形態によるこのマッピングは、擬群変換を用いて実行される。好ましい一実施形態は、例えば数百ビットのブロックで10−5の範囲の低いビットエラー率を提供し、数千ビットのブロックでこのようなビットエラー率を実現するターボコーディング及びLDPCをしのぐ。
【0010】
本発明の更なる他の実施形態は、擬似ランダム数発生器の出力を改善する改善物を提供する。この発生器の出力上の弱点は、この改善物により対応される。改善物実施形態は、擬似ランダムストリングの周期を、任意の必要な長さに拡大することができる。擬似ランダムストリングは、文字、文字対、3つ文字組み、及び一般にkタプルの分布が均一にされる可能性があるという意味で、一様にされる。この好ましい改善物は、発生器の特性を引き継ぎはせず、発生器が平凡な出力(例えば、文字ストリングのみで構成される)を作り出したとしても、機能することができる。好ましい一実施形態は、擬群ストリング変換で認識されている特性を考慮に入れている。複雑度は線形(O(n))で、ここでnは入力擬似ランダムストリングの長さである)であり、従って、改善物は非常に速い。これは柔軟性があり、全てのn>1に対して、nビット文字の文字体系上で働く。改善物の実施形態は、例えば、1Kb未満のメモリ空間の中に実装できる。好ましい一実施形態の改善物は、低品質の擬似ランダムストリングを受け入れる。このストリングは、選択された次数の擬群を用いて変換され、変換の回数は同様に選択可能である。高品質の擬似ランダムストリングが、この改善物により出力される。
【0011】
図を参照すると、本発明の方法は、通信システム14で用いられる送信器10及び/又は受信器12に実装しても良い。送信器10は、メッセージ16を情報ソース18から受信し、チャンネル20を介しての信号の送信のために、このメッセージを暗号化(又は、もしエラーコーディング又は擬似ランダム数改善が用いられている場合は、このメッセージを改善)しても良い。技術的に理解されるように、チャンネル20は雑音がある可能性がある。受信器12はこの信号(暗号化されたメッセージ、エラーを含むメッセージ、擬似ランダム数等)を受信し、またこの信号メッセージを復号化及び/又は信号内のエラーを訂正して、復号化又は訂正されたメッセージ22を生成しても良い。このメッセージ22は宛て先24に送信される。
【0012】
送信器10及び/又は受信器12は、本発明の1つまたはそれ以上の方法を実装することが予期されている。さらに、コンピュータで読み取り可能な媒体、チップ、伝播された信号、コンピュータ等が、本発明の1つまたはそれ以上の方法を実装するために又は実装させるために用いられてもよい。ここで、本発明の態様による多様な方法を論じよう。
【0013】
本発明の第1のタイプの実施形態では、明細書中、EdonXと呼ばれるフレキシブルな付加的ストリーム暗号(flexible additive stream cipher)に、好ましくはニブル(すなわち4つのビットの組)であるビット組の入力ストリームを変換する証明可能なセキュリティが備わっている。EdonXのキーの長さは可変であり、nニブルの任意のストリングとすることができる。EdonXは擬群ストリング変換(quasigroup string transformation)を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonXは、好ましい実施形態においては、128バイトの中に格納することができる16次の擬群を用い、内部メモリ及び実行コードと共に1kb未満の中に実装することができる。従って、好ましい一実施形態では、EdonXは組み込みシステムにおけるハードウエア実装に適している。
【0014】
一般的に、ストリーム暗号は、時間と共に変化する暗号化変換を用いて、平文メッセージの個別の文字(通常バイナリディジット)を1つずつ暗号化し、一方、ブロック暗号は固定暗号化変換を用いて、平文メッセージの複数の文字グループを同時に暗号化する。暗号として強固で且つ質的に高度なストリーム暗号を設計することについての問題に取り組むために、ニブル(すなわち4つのビット組み)の入力ストリームを変換する証明可能なセキュリティを備えた、フレキシブルな付加的ストリーム暗号、すなわちEdonXが開示される。EdonXのキーの長さは可変であり、nニブルの任意のストリームとすることができるが、セキュリティ上の理由でn≧32を提案する。EdonXは擬群ストリング変換を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonXの設計は、128バイトの中に格納することができる16次の擬群を用い、内部メモリ及び実行コードと共に1kb未満の中に実装することができる。従ってEdonXは、組み込みシステムにおけるハードウエア実装に適している。
【0015】
本発明者らは、A.Menezes、P.van Oorschot、及びS.Vanstone、Handbook of Applied Cryptography:CRC Press,Inc.、1997中で定義されたように、同期ストリーム暗号の定義について簡単に述べよう。
【0016】
定義1:同期ストリーム暗号は、キーストリームが平文メッセージ及び暗号文とは独立に生成される暗号である。
同期ストリーム暗号の暗号化プロセスは、以下の式
σi+1=f(σi,k),zi=g(σi,k),ci=h(zi,mi)
で表され、ここでσ0は初期状態であってキーkから決定され、fは次状態(next−state)関数であり、gはキーストリームziを生成する関数であり、hはキーストリーム及び平文miを合成して暗号文ciを生成する出力関数である。
【0017】
定義2:バイナリ付加的ストリーム暗号は、同期式且つストリーム式暗号であり、こでキーストリーム、平文、及び暗号文ディジットはバイナリディジットであり、また出力関数hはXOR関数
【0018】
【数5】
(以降、この記号をΘで表示する)である。
【0019】
好ましい一実施形態によるEdonXストリーム暗号は、バイナリ付加的ストリーム暗号である。EdonXは、擬群作用及び擬群ストリング変換を用いることにより定義される。ここで、簡単に要約すると、本明細書で用いられる「擬群」という用語は、擬群の代数的な均等物をも示すということを言っておく。
【0020】
定義3:擬群(Q,*)は、
(∀u,v∈Q)(∃!x,y,∈Q)u*x=v&y*u=v
を満たす亜群である。
ここで、本発明者らは有限の擬群のみを用いよう。すなわちQは有限の集合である。有限擬群に密接に関連した組み合わせの構造は、いわゆるラテン方格である。
【0021】
定義4:濃度|Q|=nの有限の集合Q上のラテン方格Lは、Qからの要素を伴うn×n行列であって、マトリックスの各行及び各列がQの置換であるようになっている。
乗算テーブルにより与えられる任意の有限擬群(Q,*)に対し、このテーブルの本体により形成されるマトリックスから成るラテン方格Lが関連付けられ、集合Q上の各ラテン方格Lが擬群(Q,*)を定義する。
【0022】
2つの擬群間のイソトピズム(isotopism)及びオートトピズム(autotopism)の関係は、次のように定義される。
定義5:擬群(K,*)は、もし各x,y∈Kに対しγ(x*y)=α(x)・β(y)となるようなKからQ上への全単射α、β、γが存在する場合には、擬群(Q,・)に対してイソトピックであると言われる。その結果、3つ組(α,β,γ)は、(K,*)から(Q,・)へのイソトピズムと呼ばれる。
【0023】
(K,*)のオートトピズムは、(K,*)の自分自身へのイソトピズムである。本発明者らは、あるオートトピズムによって得られた擬群を、Autotope(K,*)により表す。(K,*)に対してオートトピックな擬群は、|K|3を越えては存在しないということに留意されたい。もし、α=1且つβ=1が恒等置換であり、γが互換の場合、オートトピズム(1,1,γ)の下で(K,*)に対してオートトピックな擬群をγ(K,*)により表す。
【0024】
2つのオートトピズム(α,β,γ)と(α’,β’,γ’)の積は、構成要素の観点から定義され、すなわち、
(α,β,γ)(α’,β’,γ’)=(αα’,ββ’,γγ’)
となる。
以下の特性は、EdonXのセキュリティの提供において用いられるであろう。
【0025】
命題1:擬群(Q,*)の全てオートトピズムの集合γは、オートトピズムの積の作用の下での群である。
この特性は、Denes,J.,Keedwell,A.D.:Latin Squares and their Applications,English Univer.Press Ltd.,1974で更に説明されている。擬群(Q,*)を考えると、いわゆるパラストロフ(parastrophe)又は随伴作用(adjoint operation)と呼ばれる5つの新規の作用が、作用*に由来する。本発明者らは、以下の2つ、つまり\及び/により表され(左及び右パラストロフと呼ぶ)、
【0026】
x*y=z⇔y=x\z⇔x=z/y
で定義されるもののみ必要とするであろう。
次に、代数(Q,*,\,/)は、恒等式
x\(x*y)=y,x*(x\y)=y,(x*y)/y=x,(x/y)*y=x
を満足し、且つ(Q,\)、(Q,/)もまた擬群である。
【0027】
次に、擬群ストリング変換の方法を定義する。文字体系(alphabet)(すなわち、有限集合)Qを考え、Qの要素により形成される全ての非空の単語(nonempty words)(すなわち、限定ストリング)の集合をQ+と表す。Q+の要素は、(a1,a2,...,an)よりもむしろa1,a2,...,anで表され、ここでai∈Qである。仮に*を集合Q上への擬群作用としよう。すなわち、擬群(Q,*)を考える。各a∈Qに対し、2つの関数ea,*,da,*:Q+→Q+を次のように定義する。
【0028】
仮に、ai∈Q、α=a1a2...anとする。
次に、以下の表に示すように、
ea,*(α)=b1b2...bn⇔b1=a*a1,b2=b1*a2,...bn=bn−1*an
【0029】
【表1】
となるようにする。すなわち、各i+0,1,...,n−1に対してbi+1=bi*ai+1であり、ここでb0=aである。また、以下の表に示すように、
da,*(α)=c1c2...cn⇔c1=a*a1,c2=a1*a2,...,cn=an−1*an
【0030】
【表2】
とする。すなわち、各i=0,1,...,n−1に対してci+1=ai*ai+1であり、ここでa0=aである。
【0031】
関数ea,*、da,*は、リーダ(leader)aを伴う、作用*に基づくQ+のe変換及びd変換と呼ばれる。
例えば、Q={0,1,2,3}を取り、擬群(Q,*)及びこのパラストロフ(Q,\)が以下の表の乗算スキームにより与えられるとしよう。
【0032】
【表3】
ストリングM=00102300120010020003を考察し、且つリーダ0を選択する。次に、変換e0,*により、本発明者らは変換されたストリングC=e0,*(M)=21023130113013002131を得、またd0,\変換により、ストリングD=d0,\(M)=22110202133211203223を得るであろう。
【0033】
もし、ストリングC上に変換d0,\を適用するか又はストリングD上に変換e0,*を適用すれば、元のストリングMを得るだろう。実際、Markovski,S.,Gligroski,D.,Bakeva,V.:Quasigroup String Precessing:Part 1,Maced.Acad.of Sci.and Arts,Sc.Math.Thech.Scien.XX 1−2,(1999)13 28で議論されたように、以下の特性は真実である。
【0034】
命題2:各ストリングM∈Q+及びリーダl∈Qに対し、dl,\(el,*(M))=M=el,*(dl,\(M))が成り立つ。すなわち、el,*及びdl,\は互いにQ+の逆置換である。
好ましくは、EdonXはニブルすなわち4ビットの変数上で動作し、その結果、データのストリームに擬群ストリング変換を行うために、16次の擬群(Q,*)を用いる。従って、対応するラテン方格の値は、4ビットで表される。ワーキングキーKの値に対しても同様であり、これはn個の内部変数Kiの中に格納され、すなわちK=K0K1...Kn−1であり、変数Kiは{0.1,...,15}の範囲の値を有する。Kのi番目の値はまた、K[i](=Ki)により表される。
【0035】
EdonXは、初期化フェーズにおけるワーキングキーKの初期秘密値Kin=Kin[0]Kin[1]...Kin[n−1]を用いる。この16次の初期擬群(Q,・)は、秘密又は公開とすることができる。Kinの中に格納された秘密情報によって、EdonXは初期擬群(Q,・)上、及び同様にKinの値にも変換をかける。EdonXはまた、好ましい一実施形態では、2つの一時的な変数T及びX、並びに付加的な整数変数Counterを用いる。EdonXの復号化機能は、暗号化機能と同じである。
【0036】
EdonX暗号化(復号化)機能は、次の手順により定義される。作用*は、特定の初期擬群の作用・からのオートトピズムにより得られる擬群である。作用Θはニブル(すなわち4ビット文字)上のビット単位のXOR演算である。数m=maxn,64はワーキングキーの長さを表し、これは初期キーの長さnに依存するが、本発明者らはセキュリティ上の理由でm≧64をとる。初期化フェーズは別の手順により、追って説明される。
【0037】
【表4】
【0038】
このアルゴリズムの非常に重要なフェーズは、初期化フェーズである。これは、例えば秘密に共有される初期キーKinの、パディング、拡張、変換のような、暗号化アルゴリズムにおける既知の手法を組み込んでいる。拡張及び変換されたキーKinからの情報は、次に、ワーキングキーKのmニブルの初期値の設定に加えて、初期的に与えられた擬群の変換に用いられる。初期キーの長さn(ニブルでの)は、任意の正の整数とすることができ、高度のセキュリティのためにはより大きいn(常にそうであるように、セキュリティに対する代償は、システムの速度である)であるが、本発明者らは32≦n≦255を提案する。このキーの選択の柔軟性は、EdonXの重要な特徴である。
初期化フェーズは以下のアルゴリズムにより記述される。
【0039】
【表5】
【0040】
本発明者らは、初期化フェーズに用いられるいくつかの演算及びシンボルを明確にする必要がある。まず、Kinは初期キーを意味し、Kexは拡張されたキーを意味し、記号‖は4ビット文字の連結(concatenation)を意味する。次に、通知(notification)Kin[j]はKinのj番目のニブルを意味する。関数RotateLeft(Kex)は、i=0,1,2、...,510に対しKex[i]←Kex[i+1]、且つKex[511]←Kex[0]とするように、Kexの値を循環的に回転させる。関数SwapRows及びSwapColumnsの名前は、自分自身を物語っており、これらは擬群の行及び列を交換する関数である。
【0041】
初期化フェーズの最後に、敵対者に未知の、2つのワーキング構造が得られる。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、約(16!)3≒2132のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密鍵Kinを置き換える長さ4mビット(mニブル)のワーキングキーKである。(しかしながら、16次の擬群のオートトープクラスの正確な数は知られておらず、最もよく知られている公に利用可能な結果は、11次の擬群に対するものである。)
【0042】
さて、簡単化された(2ビット)EdonXを用いた、初期化、暗号化、及び復号化操作についての実施例を紹介する。この実施例は、EdonXの原則上で機能するが、説明を簡単にするために、16次の擬群を使う代わりに4次の擬群を用いる。従って、ニブルの代わりに、2ビットの文字(すなわち、0、1、2、及び3)を扱う。さらに、長さ512の長さの拡張キーを用いる代わりに、16の長さに短縮し、またm=nとする。その上、EdonXの初期化フェーズであるフェーズ5を、以下の単純な形式に変更する。
【0043】
【表6】
仮に、初期擬群(Q,*)を前の例と同じとしよう。
【0044】
【表7】
初期値をKin=131(ニブルで)に設定する。Kinの長さは3なので、また2つの2ビット文字で数3を表現すると、0011=00‖11)であるから、KinにパディングするとKin=13103を得る。次に、Kinを何回か連結することにより、長さ16のKex、すなわちKex=1310313103131031を得る。次に、この拡張キーをel,・変換する(ここで、リーダlはパディングされたKinの値になるように巡回的に取られる値)と、Kexの最終値が得られる。以下の表で、これらの変換を要約する。
【0045】
【表8】
【0046】
最後の値Kex=3203330012212323で、初期擬群(Q,・)のオートトープを得るために、インタラティブリ(interatively)に、この初期擬群の行の交換、列の交換、及び要素の置き換えが開始される。そこで、以下の表に示すように、まず行3と2を交換し、次に列0と3を交換し、その後、要素2と3を置き換えする等を行う。
【0047】
【表9】
最後に得られる擬群は、暗号化及び復号化に用いられるワーキング擬群(Q,*)である。
【0048】
【表10】
ワーキングキーKは、Kexの最後のn=3文字を取り、K=323となる。
さて、平文メッセージM=30102300をエンコードしよう。EdonXの好ましい一実施形態を用いて実行される計算を次の表に示す。
【0049】
【表11】
EdonXは、バイナリの付加的なストリーム暗号なので、復号化フェーズに対する計算は同じであり、違いは最後の2つの行にのみ存在するであろう(この場合は入力がCであれば、出力M=XΘC)。
【0050】
始めは、Counter=0、p=[3/2]=1、及び初期ワーキングキーKは値K=323=3‖2‖3を有しており、Xの値はX=K[Counter mod3]=K0=3、Tの値はT=K[(Counter+p)mod3]=K1=2である。次に、アルゴリズムに従って、X及びTの中間値及びキーKの新たな値を、以下のように得る。すなわちi=0に対し、X←X0=K0*X=3*3=3、T←T0=T・X=2・3=1、K0←X=3を得、i=1に対して、X←X1=K1*X=2*3=0、T←T1=T・X=0・0=2、K1←X=0を得、またi=2に対して、X←X2=K2*X=3*0=0、T←T・X=1・0=1、K2←X=0を得る。この後、K2の値をK2←T=1に変更する。このようにして、Counter=1に対する新たなワーキングキーはK=K0K1K2=X0X1T2=301であるということを得て、出力値C0=XΘM0=0Θ3=3を得る。Counter=0、Counter=1、...、Counter=7の全てに対する計算は、上記の表で与えられる。このようにして、入力平文ストリングM=30102300は、暗号文ストリングC=30020312に暗号化された。
【0051】
次に、同期ストリーム暗号EdonXの好ましい実施形態のセキュリティ上の利点について議論及び実証する。セキュリティを考慮して、初期秘密鍵Kinの長さnは少なくとも32と仮定する。また、敵対者が平文/暗号文アタックを選択する可能性、すなわち、或る平文を選択し且つ対応する暗号文を得ることができる可能性を有しており、初期擬群(Q,・)及び初期キーの長さnが公開されていると仮定する。更に、秘密鍵Kinの初期値と、暗号化の内部状態(すなわち、ワーキングキーK、ワーキング擬群(Q,*)、並びにX及びTの値)は、敵対者には知られておらず、これらに物理的にアクセスできないと仮定する。もしこの敵対者がワーキングキーK並びにX及びTの値の一部を成功裏に再構築することができる場合に、EdonXが敵対者に破られたと考えられる。
【0052】
初期キーKinについての知識が無ければ、ワーキング擬群(Q,*)及びワーキングキーKの初期値を知る、コンピュータ的に実現可能な方法はないということが示され得る。敵対者はワーキングキーK並びにX及びTの値の一部の情報を効率的に得ることができないということの証明を、以下のステップで示す。以下の分析で、擬群ストリング変換の以下の特性を用いる。
【0053】
定理3:仮に(Q,*)が擬群、αはQ+の任意のストリング、及びel,*はリーダlを伴う変換としよう。もし、el,*をα上にk回適用すると、得られるストリングβ=(el,*)k(α)は、文字、文字の対、...、k組の文字の一様な分布を有する。
【0054】
EdonXの初期化フェーズを分析するために、キーKinの初期値は、本発明者らの前提では、少なくとも128ビットの長さを持つことができる。初期キーがどれだけ長かったかについての情報によるKinのパディングは、例えばハッシュ関数などの他の原始的な暗号における標準的な手順である。この役割は、2つの異なる初期キーで同じ結果を得る可能性を排除することである。例えば、もしパディングが無ければ、初期キー
【0055】
【数6】
は同じワーキングキーKを生成するであろう。他方では、パディングは開始拡張キーKexは、違う初期キーKinに対しては異なるであろうということを確実にする。拡張キーKexは、512ニブルの長さを有する。これは、公に知られた16次の擬群(Q,・)によって512回変換される。定理3により、次の系(Corollary)が得られる。
【0056】
系1:Kexの中の文字、文字の対、文字の3つ組み、...の分布は一様である。
キーKexの分布の一様性は、ワーキングキーKの分布の均一性を暗示する。Kの長さは少なくとも64ニブルすなわち256ビットであるため、敵対者はワーキングキーを2−256以下の確率でしか推測できない。
系1の結果として、以下の特性も得られる。
定理(Theorem)1:ワーキング擬群(Q,*)は、初期擬群(Q,・)のランダムに得られたオートトープである。
【0057】
証明(Proof):EdonXの初期化のフェーズ5の中の繰り返し過程で、行(row1row2)及び列(column1column2)を交換し、また互換γを適用する。これは、各繰り返しステップでオートトピズム(α,β,γ)を適用するということを意味し、ここで、α=(row1row2)、β=(column1column2)は置換(permutation)、すなわち反復された擬群上の置き換えである。従って、フェーズ5の各繰り返しステップの後で、入力したもののオートトープである擬群が得られる。命題1より、ワーキング擬群(すなわちフェーズ5の最終出力)は、初期擬群のオートトピズム(α’,β’,γ’)の下でのオートトープである擬群である。置換α’、β’、γ’は実際、フェーズ5で得られた、α=(row1row2)、β=(column1column2)、及びγそれぞれの全64回の置き換えの帰結である。16個の元の集合上への置換のそれぞれは、たった15回の置き換えの帰結として提供することができ、置き換えα、β、γはランダムキーKexから得られるので、α’、β’、γ’は可能性のある16!の置換の任意のものであるということが得られる。結果として、ワーキング擬群は、初期公開擬群の任意のオートトープであり得るということが得られる。
16次の擬群上には約16!≒2132のオートトピズムが存在するので、ワーキング擬群はおよそ2−132の確率でのみ推測できるということが分かった。
【0058】
EdonXの暗号化/復号化フェーズを分析するために、前のセクションより、ワーキング擬群(Q,*)及び開始ワーキングキーK=K0K1...Kn−1=K−1,0K−1,1...K−1,n−1は敵対者には知られていないということを得ている。なぜKjをK−1,jにより表すかについては以下により明らかである。
【0059】
敵対者が、平文/暗号文ストリングの1つの対(M,C)=((M0M1...),(C0C1...))を選択したとしよう。更に本発明者らは、以下の表記法を用いる。Counter=iの場合、Kj(j=0,1,...,n−1)という表記法の代わりに、Ki,jという表記法を用いよう。同じ表記法が変数X及びTに対して用いられ、すなわちXi,j(Ti,j)は、j回目の繰り返しにおけるCounter=iのときの変数X(T)を意味する。
【0060】
従って、Counter=i(i∈{0,1,2,...})に対するEdonXの暗号化/復号化アルゴリズムにより、敵対者は以下の方程式の系を得ることができる(p=[m/2]は定数であることに留意のこと)。
Xi,0=Ki−1,0*Ki−1,i mod m
Ti,0=Ki−1,i+P mod m・Xi,0
Xi,1=Ki−1,1*Xi,0
Ti,1=Ti,0・Xi,1
...
Xi,64=Ki−1,64*Xi,63 (4)
Ti,64=Ti,63・Xi,64
...
Xi,m−1=Ki−1,m−1*Xi,m−2
Ti,m−1=Ti,m−2・Xi,m−1
Xi,m−1ΘM0=C0
【0061】
上の最後の方程式から、M0、C0が既知であることから、敵対者はXi,n−1=C0ΘM0を得ることができる。上の組の残りは、2m個の未知の変数Ki−1,0、...、Ki−1,m−1、...Xi,0、...、Xi,m−2、Ti,m−1を伴う、以下のm+1(ここでm≧64)個の擬群方程式の系と同じである。
Xi,0=Ki−1,0*Ki−1,i mod m
Xi,1=Ki−1,1*Xi,0
...
Xi,m−2=Ki−1,m−2*Xi,m−3 (5)
M0ΘC0=Ki−1,m−1*Xi,m−2
Ti,m=((...(Ki−1,i+p mod m)・Xi,0)・...)・Xi,m−2)・(M0ΘC0)
(すなわち、
Ti,1=Ti,0・Xi,1=(Ki−1,i+p mod m・Xi,0)・Xi,1Ti,2=
Ti,1・Xi,2=((Ki−1,i+p mod m・Xi,0)・Xi,1)・Xi,2,...)
である。
【0062】
その上、敵対者はワーキング擬群(Q,*)を知らず、従って、集合{0,1,2,...,15}上への、擬群作用*を定義する必要があり、その後で系を解く必要がある。実際、すぐ前の系は、2mの未知数を伴うm+1の方程式から成る、1つの未知の擬群作用*を有する関数方程式の系である。本発明者らは、次の定理を得、その証明として上記の恒等式を用いる。
【0063】
定理2:Q={0,1,2,...,15}である任意の16次の擬群(Q,*)は、1つの未知の擬群作用*と、Q上の未知の変数x0、x1、...、xm−2、y0、y1、...ym−1、zを伴う以下の関数方程式の系、
【0064】
【数7】
の解であり、ここで、・はQ上への特定の擬群作用であり、またi(0≦i≦m−1),p=[m/2],及びa∈Qが与えられる。
証明:仮に、*をQ上への任意の擬群作用としよう。2つのケースを考察する。
【0065】
ケース1:0≦i≦m−2(すなわち、0≦i mod m≦m−2)
未知数y0,yi∈Qに対して任意の値を選ぶ。次に、x0=y0*yiになるような、固有の値x0∈Qを得る。未知のy1∈Qに対して任意の値を選び、次にx1=y1*x0になるような固有の値x1∈Qを得る。このようにして続け、未知数yi−1∈Qに対して任意の数を選び、次にxi−1=yi−1*xi−2になるような固有の値xi−1∈Qを得る。次に、値xi=yi*xi−1∈Qを計算し、この後、未知のyi+1∈Qに対して任意の値を選び、値xi+1=yi+1*xi∈Qを計算する等を行う。このようにして、未知数y0、y1、...ym−2に対して任意の値を選ぶことができ、これらから未知数(固有の)x0、x1..、xm−2を計算する。最後に、方程式a=ym−1*xm−2から、ym−1=a/xm−2∈Qを得、次に、z=(yi+p mod m・x0)・x1)・...)・xm−2)・a∈Qを計算することができる。
【0066】
ケース2:i=m−1(すなわち、i mod m=m−1)
この場合、ケース1の手順を逆に繰り返す。任意の値ym−1∈Qを選び、次に、式a=ym−1*xm−2から値xm−2=ym−1\a∈Qを計算する。この後、ym−2,ym−3,...y2,y1∈Qに対して任意の値を選択し、各選択の後、値xj=yj+1\xj+1∈Q、j=m−3,m−2,...,0を計算する。最後に、方程式x0=y0*ym−1から、値y0=x0/ym−1を計算し、次に、z=(yi+p mod m・x0)・x1)・...)・xm−2)・a∈Qを計算することができる。
【0067】
定理2の結果として、(5)の変数Ki−1,jおよびXi,jについての適切な値を見つけるために、敵対者は、上に示した関数方程式の系の、16n≧2128の可能な初期キーの1つを選ばなければならず、また16m−2又は(16m−1)≧1662=2248の可能な解の1つyjを選択しなければならない。全てを合わせると、少なくとも2376通りの選択の可能性が存在する。
【0068】
次に本発明者らは、敵対者は、もし平文/暗号文ストリングのいくつかの連続したニブルからの情報を用いた場合、実行可能な時間内にはシステムを破ることができないということを示そう。すなわち、以下の定理を証明しよう。
定理3:0.5を超える確立でEdonXシステムを破るために、アタッカーは少なくとも2190回の試行をなければならない。
【0069】
一般性を失うことなく、定理3の証明の考え方は、Counter=0&Counter=1&Counter=2のケースから、すなわち長さ3の平文/暗号文ストリームM0M1M2/C0C1C2が既知のときに、理解することができる。この場合、以下の方程式においてEdonXの暗号化/復号化アルゴリズムに従って、得ることができる(ここで、(5)の中のような単純化が同様に成される)。
【0070】
X0,0=K−1,0*K−1,0
K0,0=X0,0
X0,1=K−1,1*X0,0
K0,1=X0,1
...
X0,m−2=K−1,m−2*X0,m−3 (7)
K0,m−2=X0,m−2
M0ΘC0=K−1,m−1*X0,m−2
T0,m−1=((...(K−1,p mod m・X0,0)・...)・X0,m−2)・(M0ΘC0)
K0,m−1=T0,m−1
X1,0=K0,0*K0,1
K1,0=X1,0
X1,1=K0,1*X1,0
K1,1=X1,1
...
X1,m−2=K0,m−2*X1,m−3 (8)
K1,m−2=X1,m−2
M1ΘC1=K0,m−1*X1,m−2
T1,m−1=((...(K0,1+p mod m・X1,0)・...)・X1,m−2)・(M1ΘC1)
K1,m−1=T1,m−1
X2,0=K1,0*K1,2
K2,0=X2,0
X2,1=K1,1*X2,0
K2,1=X2,1
...
X2,m−2=K1,m−2*X2,m−3 (9)
K2,m−2=X1,m−2
M2ΘC2=K1,m−1*X2,m−2
T2,m−1=((...(K1,2+p mod m・X2,0)・...)・X2,m−2)・(M2ΘC2)
K2,m−1=T2,m−1
【0071】
(7)はCounter=0に対応し、(8)はCounter=1に対応し、(9)はCounter=2に対応するということに留意されたい。また、X0,m−1=M0ΘC0,X1,m−1=M1ΘC1,X2,m−1=M2ΘC2が得られる。明確にするために、(7),(8),(9)の中の未知数の置き換えを用い、K−1,i=yi、K0,i=zi,K1,i=ui,K2,i=vi、X0,i=xi,X1,i=x’i,X2,i=x”i、T0,i=ti、T1,i=t’i,T2,i=t”iとする。その結果、(7)、(8)、(9)から成る方程式の系は、次のように書き直される。
【0072】
x0=y0*y0
z0=x0
x1=y1*x0
z1=x1
...
xm−2=ym−2*xm−3
zm−2=xm−2
M0ΘC0=ym−1*xm−2
tm−1=((...(yp・x0)・...)・xm−2)・(M0ΘC0)
zm−1=tm−1
x’0=z0*z1
u0=x’0
x’1=z1*x’0
u1=x’1
... (10)
x’m−2=zm−2*x’m−3
um−2=x’m−2
M1ΘC1=zm−1*x’m−2
t’m−1=((...(y1+p・x’0)・...)・x’m−2)・M1ΘC1)
um−1=t’m−1
x”0=u0*u2
v0=x”0
x”1=u1*x”0
v1=x”1
...
x”m−2=um−2*x”m−3
vm−2=x”m−2
M2ΘC2=um−1*x”m−2
t”m−1=((...(y2+p・x”0)・...)・x”m−2)・(M2ΘC2)
vm−1=t”m−1
【0073】
未知数x0、...、xm−2、x’0、...、x’m−2、x”0、...、x”m−2、tm−1、t’m−1、t”m−1を、z0、...、zm−2、u0、...、um−2、v0、...、vm−2、zm−1、um−1、vm−1にそれぞれ置き換えた後に、以下の表の左側に与えられるような新たな方程式の系を得、これは上記の系(10)に等しい。
【0074】
【表12】
【0075】
定理3の証明:この証明の間、上記の表を用いる。方程式(10)の系の中には、未知の擬群作用*、4mの未知の変数、及び3mの方程式がある。従って、敵対者は、いくつかのこれらの未知の変数に任意の値を割り当てしなければならず、その後、この系を解こうとするであろう。敵対者は予めQ={0,1,...,15}上への擬群作用*をいくつか選ばなければならない。仮に、敵対者が未知数Y0、Y1、..、Ym−2に値を割り当てしたとしよう(そして、これは「選択(Choose)」欄の中に記されている)。変数Y0、Y1、..、Ym−2に対してこれらの特定の値を用いることにより、敵対者は(10)の全ての他の変数に対して、値を計算することができる。「計算(Compute)」欄に、変数Z0、...、zm−2、ym−1、u0、...の計算の順序が提示されている(上から下に示されている)。このように、敵対者は先ずZ0=Y0*Y0(Y0は割り当てられた値)を計算し、次にz1=y1*z0(y1は割り当て値であり、z0は計算値)等を、um−2の値が計算されるまで同様に行う。さて、zm−1及びum−2は、既に割り当てられた値であるから、敵対者は方程式M1ΘC1=zm−1*um−2が満足されるかどうかを調べなければならず、この状況は上の表の中のチェックポイント(Check Point)により表されている。チェックポイントは、以下のような方法により、系へのアタックをより容易にする。敵対者は、擬群を選択し、y0、...、ym−2に対して値を割り当てる。次に、敵対者は、各チェックポイントにおいて、これらがうまく選択されたかどうかをチェックする。答えがNOの場合、彼らはアタックのための新たなデータを選択する(新たな擬群作用*及び/又はY0、...、Ym−2への新たな値)。答えYESは、偶然起こる可能性があることから、データがうまく選択されたことを意味しない。敵対者は、いくつかの連続的な答えYESを集めて、系が破られたということを確実にしなければならない。
【0076】
敵対者は、他の戦略を選択しても良い。すなわち、変数Y0、...、Ym−2に対して値を割り当てる代わりに、他のいくつかの変数に値を割り当てすることができる。とは言っても、m−1の変数に値を割り当てしなければならないだろうし、また同じ数のチェックポイント(カウンタの数のより1少ない数)を得るであろう。
【0077】
全ての可能な試行の数は、可能な擬群作用(約2132)とY0、...、Ym−2に対する値の割り当て数の積であり、これは16m−22≧1662=2248である。従って、0.5を超える確率でEdonX系を破るには、アタッカーは少なくとも0.5・2380=2190試行を行う必要がある。
【0078】
上述のように、EdonXは、柔軟性及び多くの自身のコンポーネントの数学的な確率を特徴とする付加的な同期ストリーム暗号である。これから、これらの事実の重要性について指摘しよう。
【0079】
EdonXの柔軟性については、EdonXの初期秘密鍵の長さnは、任意の正の整数であり得、32≧n≧256を提案するということを述べ、実際、アルゴリズムをこれらの制約の下で提示した。しかし、アルゴリズムをより詳細に見てみると、上記の制約は表面上のことであり、512ニブルを用いる代わりに1024、2048、128、又は任意の他のニブル数を用いることにより、同様の方法でアルゴリズムを設計することができるだろうということが分かる。この事実の重要性は、EdonXは、平均的なものから極端なものまでの、異なるセキュリティ基準を満足させることができ、従って、非常に懐疑的なユーザは1K(又は1M)ニブルの、すなわち4K(又は4M)ビットの秘密鍵を用いることができるということである。より高いセキュリティのためには、より長い秘密鍵を選択すべきであるが、計算の回数は鍵の長さに直線的に依存する。従って、可能性のあるアタッカー及び彼らの計算能力を予測することにより、EdonXのソフトウエア及び/又はハードウエアを、得られる必要なセキュリティに応じたやり方で設計することができる。
【0080】
秘密鍵の長さの柔軟性は、EdonXが、設計している閾値セキュリティ(threshold security)で用いられることを可能とする。仮に、キーが人物A、B、Cの3人で共有され、人物単独では完全なキーを持っておらず、彼らの任意の2人のみが完全なキーを持っている、自明な事例を考えてみよう。次に、192ニブルの秘密初期キーK=K0‖...‖k191を取り、以下のように分配する。つまり、人物Aが部分K=K0‖...‖k127、人物Bが部分K=K64‖...‖k191、及び人物Cが部分K=K0‖...‖k63とK=K127‖...‖k191とを得るように分配する。それぞれの人物は、秘密鍵の64ニブルについては知らず、秘密鍵を完成させるには1664=2256の可能なバリエーションが存在する。(s,p)閾値システムに対する適切な安全設計を同様に定義することができる。
【0081】
EdonXのセキュリティの分析で、本発明者らはセキュリティに対する起こりうる最悪のケースを想定したが、これは、初期キーのみが秘密であり、敵対者が選択された平文/暗号文へのアタックを実現できるというものである。このシステムのセキュリティは、もし初期擬群及び同様に初期キーの長さも秘密だと仮定するならば、非常に強くなる。従って、約(16!)3≒2132個のオートトピズムどころか、もしも初期擬群が秘密である場合、敵対者は16次の擬群作用の全てを考慮しなければならず、そして、これらの数は未知であるが10120≒2400よりも大きいのである。
【0082】
初期キーの長さnを秘密とすることもできる。この場合、アタッカーは、いくつかの長さn=k、n=k+1、n=k+2、...を調べなければならないが、ここでkは大きくはない(例えば、k=5を選択することができ、且つ、適切なセキュリティを同様に一部のアプリケーションで得ことができる)。もし、アタッカーがEdonXのハードウエア又はソフトウエアの実装を有しており、従って、長さnを計算する可能性を有している場合、エンプティサイクル(empty cycle)をEdonXの計算の間に付加することができる。この追加セキュリティに対する代償は、エンプティサイクルに対して費やす時間によって償わなければならない。
【0083】
好ましい一実施形態によるEdonXの設計の特徴は、これが4ビットレジスタ上で動作し、また、たった256バイトの中に格納できる、16次の擬群である2つの固定ルックアップテーブルを用いることである。内部メモリ及びアルゴリズムの実行コードとともに、EdonXは1Kb未満の中に実装することができる。従って、EdonXは、極端に小さなメモリ量、すなわち1KB未満のメモリを伴うチップカードの中の組み込みシステムのように、ハードウエア実装に適切である。
【0084】
暗号の特性の中の主な区分けの1つは、ストリーム暗号及びブロック暗号の区分けである。ブロック暗号は、固定された1式の変換を用いることから、平文の同じ入力ブロックに対して、常に同じクロック暗号文を提供する。他方、ストリーム暗号は、繰り返し(iteration)の度に変化する変換を用いることから、平文の同じシーケンスに対して、異なる出力を提供する。
【0085】
本発明の別の態様では、EdonYは、擬群ストリング変換の特性に基づく自己同期式ストリーム暗号であり、この特性とは、その動作の多くが如何に数学的に証明可能かというものである。EdonYは、好ましい実施形態では、暗号的に強固で且つ質的に高いストリーム暗号が提供される。EdonYの重要な利点は、設計の柔軟性であり、理由は、これがn=2、3、4、...に対する任意のnビット文字の文字体系上で作動することができるからである。この5ビット文字の文字体系バージョンは、これらが2Kbメモリ空間未満の中に実装可能であることから、組み込みシステム用に用いるのに適している。
【0086】
EdonYは、それぞれのr≧5に対して、rタプル(tuple:組)のビットの入力ストリームを変換する証明可能なセキュリティを備えた、柔軟性のある自己同期式ストリーム暗号である。EdonYのキーの長さは可変であり、nrタプルの任意のストリングとすることができ、セキュリティ上の理由でn≧32と提案する。EdonYは擬群ストリング変換(quasigroup string transformation)を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonYの設計は、2r次の擬群を用い、r=5のEdonYは組み込みシステムにおけるハードウエア実装に適している。
【0087】
EdonYは、上で定義されたように、擬群作用と擬群ストリング変換を用いることにより定義される。擬群定義に対する均等物は、簡約律、及びそれぞれのa,b∈Qに対して、方程式a*x=b、y*a=bの解x、yが存在するということの結合である。
【0088】
EdonXと同様に、上記の命題1は、EdonYのセキュリティの提供において用いられるであろう。
例として、Q={0,1,2,3}を取り、擬群(Q,*)及びこのパラストロフ(Q,\)が以下の表の乗算スキームにより与えられるとしよう。
【0089】
【表13】
ストリングα=1021000000000112102201010300を考え、リーダ0を選択する。次に、e0,*及びd0,*変換により、以下の変換されたストリングe0,*(α)及びd0,*(α)を得るであろう。
【0090】
e0,*(α)=1322130213021011211133013130
d0,*(α)=1302322222222101230311313302
以下の表でe変換の4つの連続的な適用を示す。
【0091】
【表14】
ここで、以下の表に示すように、最後に得られたストリングβ=e0,*4(α)上にd0,\変換を4回適用する。
【0092】
【表15】
α内の0、1、2、3の初期分布16/28、7/28、4/28、1/28が、e0,*4(α)内では7/28、7/28、10/28、4/28へと変わり、従って、分布はより均等になったことに気づくことができる。また、α=d0,\4(β)=d0,\4(e0,*4(α))を得る。上記の命題2は依然として当てはまる。
【0093】
いくつかの擬群作用を集合Q上で定義することができ、*1、*2、...、*kをこのような作用のシーケンスとしよう(必ずしも独特なものではない)。また、リーダl1,l2,...,lk∈Qを選択し(これも必ずしも独特なものではない)、次にマッピングの構成
【0094】
【数8】
は、Q+のE変換及びD変換とそれぞれ言われる。命題2に従って、E及びDは置換であり、
【0095】
【数9】
の逆元は変換
【0096】
【数10】
であり、ここで\iは作用*iの対応するパラストロフである。
【0097】
【数11】
【0098】
は恒等関数なので、Eは暗号化関数として、またDは復号化関数として用いることができ、本発明者らはEdonYの好ましい設計でまさにこれらの関数を用いる。
EdonYが自己同期化されるということの証明は、以下の定理の直接の帰結であろう。
定理4:仮に、
【0099】
【数12】
及び
【0100】
【数13】
としよう。一部の固定のiに対してE(b1b2...bk)=c1c2...ck及びd≠ciと仮定する。その結果、
一部のd1,...,dn+1∈Aに対して
D(c1...ci−1dci+1...ck)=b1...bi−1d1...dn+1bi+n+1...bkとなる。
証明:簡単にするために、n=2、すなわち
【0101】
【数14】
及び
【0102】
【数15】
を取る。等式E(b1b2...bk)=c1c2...ckは、あるx1,...,xn∈Aに対して
【0103】
【数16】
、且つ
【0104】
【数17】
を得ることを意味する。次に、e変換の定義によって、
l2*2b1=x1,x1*2b2=x2,x2*2b3=x3,...,xk−1*2bk=xk (4)
l1*1x1=c1,c1*1x2=c2,c2*1x3=c3,...,ck−1*1xk=ck (5)
を得る。
仮に、あるzj∈Aに対して、D(c1...ci−1dci+1...ck)=z1...zkとしよう。その結果、
【0105】
【数18】
、及び
【0106】
【数19】
となるような、y1,...,yn∈Aが存在する。d変換の定義及び(5)より、
【0107】
【数20】
を得る。
さて、
【0108】
【数21】
(4)及び(6)は、
【0109】
【数22】
を暗示している。
従って、ストリングE(b1b2...bk)内の1つのエラーは、ストリングD(E(b1b2...bk))ではn+1=2+1=3個のエラーに増殖する。関数Eの以下の特性は、EdonYのセキュリティを議論するときに用いられるであろう。
命題3:仮に(Q,*)を擬群、αをQ+の任意のストリング、及び
【0110】
【数23】
としよう。その結果、ストリングβ=E(α)は、文字、文字の対、...、kタプルの文字の一様な分布を有する。
【0111】
EdonYの典型的な構成では、32次の擬群(5ビット文字上で定義された)を用いる。しかしながら、64次、128次、...の擬群も同様に用いることができ、この場合、構成のわずかな変更のみがなされる必要がある。実際、適切な大きな次数の擬群をどれでも用いることができ、セキュリティは擬群の次数に比例的に決まる。更に、Q={0,1,2,...31}を取り、Q上への擬群作用・を用いて構成が成される。(Q,・)は、パブリック擬群とする。EdonYの秘密鍵Kは、n個の内部変数Kiの中に格納され、すなわち、K=K0K1...Kn−1であり、変数Kiは{0,1,...31}の範囲の値を有している。Kのi番目の値は同様に、K[i](=Ki)により表される。キーKの長さをn≧32に取る。すなわちキーKは少なくとも160ビットを有している。常にそうであるように、より大きなキーの長さは、より高いセキュリティを意味し、その代償はシステムの性能がより遅くなることで支払われ、これは擬群の次数に対しても同様である。この設計の柔軟性は、EdonYの最良の特性の1つであるということを強調しておく。
【0112】
EdonYアルゴリズムの主なステップは、以下のとおりである。擬群(Q,・)及びキーKの初期秘密値を用い、(Q,・)の未知のオートトープ(Q,*)を生成する。入力メッセージ、すなわち平文M=M0M1M2...を、以下のように文字毎に暗号化する。ここでMiは5ビット文字である。先ず、Kの値によりMを乗算し、補助的な平文B=B0B1B2...を得る。ここで、
【0113】
【数24】
である。
次に、Bに対してE変換
【0114】
【数25】
を適用し、得られたストリングC=E(B)=C0C1C2...がMの暗号文である。暗号文Cを得る事により、補助的な平文Bは、D変換
【0115】
【数26】
をC上に適用することにより再生される。すなわち、B=D(C)である。最後に、元の平文メッセージM=M0M1M2...が、補助的な平文B=B0B1B2...から、
【0116】
【数27】
として、文字毎に得られる。
EdonY暗号化アルゴリズム及び復号化アルゴリズムは、以下の表に示すように、次の手順により正確に定義され、ここでM=M0M1M2M3...(C=C0C1C2C3...)は、暗号化アルゴリズムの入力(出力)ストリングであり、C=C0C1C2C3...=(M=M0M1M2M3...)は復号化アルゴリズムの入力(出力)ストリングである。復号化アルゴリズムの中の変数X及びYは、補助的な5ビット変数である。
【0117】
【表16】
【0118】
【表17】
【0119】
EdonXと同様に、初期化フェーズは、ワーキングキーKと同様に、秘密初期キー及び公開擬群(Q,・)から生成される秘密ワーキング擬群(Q,*)を用いる。さて、数nを2つの5ビット文字ストリングb9b8b7b6b5‖b4b3b2b1b0=n1‖n2で表したいことから、キー(5ビット文字での)の長さnが、32≦n≦510に抑えられると仮定する。ここで、b9b8b7b6b5b4b3b2b1b0はnのバイナリ表現である。ここで、‖は、ストリングの連結を意味する。(もちろん、このアルゴリズムは、単純な方法で任意の長さnに再設計することができる。)
EdonXに対して用いられたのと同様に、初期化フェーズは次のアルゴリズムにより説明される。
【0120】
【表18】
【0121】
関数RotateLeft(Kex)、SwapRows、及びSwapcolumnsは、EdonXに関して上記で述べたように作動する。
初期化フェーズの最後に、敵対者には未知の2つのワーキング構造を得る。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、(32!)3≒2352のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密キーKを置き換える長さ5nビットのワーキングキーKである(32次の擬群のオートトープクラスの正確な数は、知られていないということを強調して置く)。
【0122】
定理4から、EdonYは自己同期化されるということが導かれるが、理由は、暗号文Cの中の1エラーは、再生された平文M’でn+1個のエラーに増殖するため、すなわち元のメッセージMとM’はn+1の連続的な文字において相違するためである。もし、Cの中に長さrのエラーストリングがあると、再生された平文はr+n個のエラーを有するであろう。事例1から、どの方法でEdonYの暗号化及び復号化プロセスが働くかが分かる。
【0123】
EdonYの好ましい実施形態のセキュリティが、これから議論される。敵対者が選択した平文/暗号文へのアタックを実行することができるということ、すなわち1つの平文を選ぶことができ、且つ対応する暗号文を得ることができると仮定する。更に、暗号の内部状態(ワーキングキーK、ワーキング擬群(Q,*)、及びX及びYの値)と同様に、秘密鍵Kの初期値は敵対者には知られておらず、敵対者はこれらに物理的にアクセスできないと仮定する。もしこの敵対者がワーキングキーK及びワーキング擬群(Q,*)を実現可能な時間内に再構成できる場合に、EdonYは破られたと考えられる。
【0124】
初期キーKinについての知識が無ければ、ワーキング擬群(Q,*)及びワーキングキーKの初期値を知る、コンピュータ的に実現可能な方法はないということを示そう。敵対者はワーキングキーK並びに擬群(Q,*)の一部の情報を効率的に得ることができないということの証明を、以下で行う。
【0125】
初期化フェーズに関しては、秘密鍵の初期値は、仮定によれば、少なくとも32個の5ビット文字の長さ、従って160ビットの長さを有することができる。初期キーの長さについての情報による該キーのパディングは、上述のように、2つの異なる初期キーで同じ結果を得る可能性を除外するためのものである。典型的な拡張されたキーKexは、長さ512の5ビット文字を有している。これは、公に知られた32次の擬群(Q,・)によって512回変換される。
【0126】
EdonXと同様に、EdonY内のKexの中の文字、文字の対、文字の3つ組み、...の分布は一様である。キーKexの分布の一様性は、ワーキングキーKの分布の一様性を暗示する。Kの長さは少なくとも32個の5ビット文字であるため、敵対者はワーキングキーを2−160よりも小さい確率でしか推測できない。
【0127】
更に、EdonXと同様に、ワーキング擬群(Q,*)は、初期擬群(Q,・)のランダムに得られたオートトープであるということを示すことができる。32次の擬群(Q,*)上には、約32!3≒2352のオートトピズムが存在するので、ワーキング擬群は、約2−352の確率でのみ推測可能である。
【0128】
暗号化/復号化フェーズについては、ワーキング擬群(Q,*)及び初期ワーキングキーK=K0K1...Kn−1は、敵対者には知られていない、すなわち再生するにはコンピュータ的に実現不可能だということを割り出した。sタプルの文字の分布を用いることによる統計的な類のアタックも同様に、命題3によりコンピュータ的に実現不可能である。次の定理は、既知の暗号文アタックによって、キー及び擬群を再生するのはコンピュータ的に実現不可能であり、よって敵対者は2−1000未満の確率でしか推測できないということを暗示している(32次の擬群の数は未知であるが、21000よりもずっと大きい)。
【0129】
定理5:暗号文Cが与えられると、Q={0,1,...,31}上への各擬群作用*及び各キーK=K0k1...kn−1に対して、Cを自身の暗号文とするような平文Mが存在する。
証明:仮に、C=C0C1C2...,Ci∈Qが与えられたとして、Q上への任意の擬群作用*及び任意のキーK=K0k1...kn−1を選択したとしよう。EdonYの暗号化プロセスは、以下の表により表される(p=[n/2]が定数であることに留意)。
【0130】
【表19】
【0131】
Ci、Kjが与えられていることから、表の他の変数を次のように一歩一歩計算することができる。
Kn−1*Tn−2=C0 ⇒Tn−2=Kn−1\C0
Kn−2*Tn−3=Tn−2⇒Tn−3=Kn−2\Tn−2
...
K1*T0=T1⇒T0=K1\T1
K0*(M0/Kp)=T0⇒M0/Kp=K0\T0
【0132】
今、M0=(M0/Kp)*Kpが得られた。すなわち自身の暗号がC0であるメッセージMの最初の文字が見つかった。Tiの既知の値を用いて、変数Sn−2=C0\C1、Sn−3=Tn−2\Sn−2、...、を得るために先の計算を繰り返し、C1により暗号化されるM1に対する値に帰着することができる。同じ方法で、M2、M3、...の値を見つけることが可能である。
【0133】
既知の暗号文の下での、EdonY上で実現することができる他の可能な統計的なアタックは、n+1タプルの暗号文の辞書を作成することであり、ここでnはキーの長さである。次の表を用いて、このようなアタックがどのように実現できるかを説明するが、簡単にするためにn=3を取る。敵対者が暗号文C0C1...CjCj+1を持っていると仮定する。
【0134】
【表20】
次に、先ずx1、x2、...、次にy1、y2、...、そして最後にz1、z2、...を計算することができる。従って、値z1、z2、z3、...は、暗号文のサブストリングcici+1ci+2ci+3、ci+1ci+2ci+3ci+4、ci+2ci+3ci+4ci+5、...により、固有に決定される。これは、Cの中の長さn+1=3+1=4のサブストリングの分布がストリングB=B0B1B2、...の中の文字の分布に等しいということを暗示しており、ここで
【0135】
【数28】
【0136】
であり、このことから平文Mの分布についての一部の知識を抽出することができる。従って、敵対者はn+1タプルの暗号化文字の辞書を作成しなければならない。n=3のケースの辞書は、324=220の単語から成り、メモリの中に入れることができる。n≧32を取ったことから、EdonYに対する辞書は少なくとも3233=2165語を必要とし、物理法則では実現できない。従って、以下の定理を証明した。
【0137】
定理6:EdonY上への辞書の類の統計的なアタックは、コンピュータ的に実現不可能である。
次に、EdonY上の選択された平文/暗号文へのアタックは、コンピュータ的に同様に実現不可能であるということを証明しよう。仮に、敵対者が平文/暗号文ストリングの任意の対(M,C)=((M0M1...),(C0C1...))を生成できると仮定しよう。次に、以下の表から情報を引き出すことができる。ここで簡単にするためにn=4とする。
【0138】
【表21】
変数Ki、xi、yi、ziは、未知数であり、以下の擬群方程式の系が得られる。ここで、Q={0,1,2,...31}上への作用“・”は未知である。
【0139】
【数29】
【0140】
上記の系の方程式C0・x1=C1、C1・x2=C2、C2・x3=C3、C3・x4=C4、...から推察される情報は、以下である。平文Mは任意に選択することができるので、暗号文Cは、サブストリングとして(a,b)∈Q2である全ての可能な322のabの対を含むであろう。方程式Ci・xi+1=Ci+1より、要素Ci+1は擬群(Q,・)の乗算テーブルの中のCi番目の行且つxi+1番目の列に位置していることが分かる。言いかえれば、もし(Q,・)内の乗算をi・j=qi,jで表すとすると、
【0141】
【数30】
ある。その結果として、(Q,・)の乗算テーブルの列に対する完全な情報が得られる。例えば、x1の値は知らないが、
【0142】
【数31】
は知っている。このようにして、(Q,・)の乗算テーブルの完成された列と共に、32個の異なる変数xi0,...,xi31を抽出することができる。簡単にするために、ij=jとすると、次の(Q,・)の乗算テーブルが得られる。
【0143】
【表22】
【0144】
xiは未知のため、(Q,*)の元の乗算テーブルは、(Q,・)の乗算テーブルの列の置換である。仮に、未知数x0、x1、...x31の値を割り当てしたとしよう。次に、上記の方程式の系から、一歩一歩、未知数K3=c0/x0、y1=x0\x1、y2=x1\x2、y3=x2\x3、...、z2=y1\y2、z3=y2\y3、z4=y3\y4、...の一意的に決定された値を計算することができる。ここで、キーの値を、K1=M3/(z2\z3)、K2=M4(z3\z4)、K3=M5/(z4\z5)、K0=M6/(z5\z6)、K1=M7/(z6\z7)により、計算することができる。変数Kiの多さは有限であるので(この単純化されたバージョンではたった4つであるが、EdonYの好ましい適用においてはn≧32)、敵対者は割り当てられた値x0、x1、...、x31が正しいかどうかを確認する機会を有している。すなわち、もしこれらが正しいとしたら、等式M3/(z2\z3)=M7/(z6\z7)(=K1)、M4/(z3\z4)=M8/(z7\z8)(=K2)、...が満足されなければならない。もしこれらが満足されなかった場合、敵対者は未知数x0、x1、...x31に別の割り当てをし、再度これらが正しいかを確認する必要があり、以下同様である。32!=2117の異なる可能な割り当てが存在するので、本発明者らは以下の定理を得る。
【0145】
定理7:選択された平文/暗号文のアタック下では、擬群作用*又はEdonYのキーの再生はコンピュータ的に実現不可能である。
上に示すように、EdonYは、この柔軟性及び多くのこのコンポーネントについての数学的な証明可能性を特徴とする、自己同期式ストリーム暗号である。EdonYの自己同期化は定理4の帰結である。この定理により、もし長さnのキーを持っているとすると、暗号文の中の1つのエラーは、復号化プロセスの間に平文のn+1個の連続的なエラーを生成する。EdonYの暗号化及び復号化アルゴリズムは、非常に単純で且つ線形複雑度のものであり、従って、EdonYは安全なオンライン通信のために用いることができる(またこれは、必要に応じて、より早い通信を得るために自明の方法で並列化することができる)。
【0146】
EdonYの例示的な構成は、5ビット文字の文字体系を用いるが、どのように暗号化及び復号化アルゴリズムをmビット文字に再設計できるかについては明らかなはずである。設計の柔軟性及び所望の長さのキーの選択の可能性は、EdonYの非常に重要な特性である。従って、EdonYは閾値セキュリティを設計する場合にも同様に用いることができる。仮に、キーが人物A、B、Cの3人で共有され、人物単独では完全なキーを持っておらず、彼らの任意の2人のみが完全なキーを持っている、自明な事例を考えてみよう。次に、長さ192の秘密初期キーK=K0‖...‖k191を取り、以下のように分配する。つまり、人物Aが部分K=K0‖...‖k127、人物Bが部分K=K64‖...‖k191、及び人物Cが部分K=K0‖...‖k63‖K127‖...‖k191を得るように分配する。それぞれの人物は、秘密鍵の64個の5ビット文字については知らず、秘密鍵を完成させるには3264=2320の可能なバリエーションが存在する。(s,p)閾値システムに対する適切な安全設計を同様に定義することができる。
【0147】
32次の擬群は1Kbの中に格納することができるので、好ましくEdonYを設計すると、小さなメモリ量、すなわち2Kb未満のメモリを伴う組み込みシステムの中にEdonYのハードウェア実装を組み込むことが可能となる。
【0148】
もし初期の32次の擬群もまた秘密であれば、このような擬群の数は21000よりも大きいことから、更なるEdonYのセキュリティが得られるということを書き留めておく。
【0149】
本発明の他の態様では、新しいタイプのストリーム暗号「完全非同期ストリーム暗号(TASC:Totally Asynchronous Stream Cypher)の概念を導入し、これらの暗号に対するいくつかの利点について実地に示す。上述のように、ストリーム暗号は、このストリーム暗号を用いる2者間の通信で受信したエラーへの行動の仕方により、分類される。もし、復号化されたストリームが、送信の間に起こったエラーの影響をうけていなければ(実際に誤ったバイト、又はバイトブロック上のエラーを除き)、同期ストリーム暗号について話している。他方では、もしこのエラーが復号化されたストリームに影響を与えるのであれば、非同期ストリーム暗号について話している。しかしながら、文献で定義された全ての非同期暗号は、自己同期性であるという特性を有している。すなわち、誤って復号化されるであろういくつかの送信ブロックの後で、ストリームの正しい復号化が再度確立されるだろう。正しいデータのストリームが再度流れはじめることを確実にするという観点からすると、自己同期は非常に好都合な特性である。しかしながら、同期式及び自己同期式ストリーム暗号は、通信ラインをモニタする敵対者による、データ改ざんアタックを受ける可能性がある(いわゆる動的アタックを受ける)。従って、ストリーム暗号(同期又は自己同期式)などの原始的な暗号法を用いる場合は、データインテグリティを確実化するための更なるメカニズムを用いる必要があるだろう。
【0150】
同期式暗号EdonXの一般的な特性は、通信の過程で取り込まれたエラーからの回復はできないものの、この確実な証明可能性が、同期式バージョンに対して適用される同じ数学的な定理により保証されるという重要な特性を依然として有する暗号を提供するために、用いることができる。完全な非同期ストリーム暗号であるという特性は欠点と見られるけれども、実際には、このような暗号にはいくつかの有用な応用が存在する。すなわち、データインテグリティ、認証、及びエラー訂正を保証できる、証明可能な安全なストリーム暗号である。
【0151】
同期式ストリーム暗号は、キーストリームが平文メッセージ及び暗号文とは独立的に生成される暗号として、上記で定義された。自己同期式すなわち非同期式ストリーム暗号は、一方、キーストリームがキー及び前の暗号文の一定数のディジットの関数として生成される暗号である。
【0152】
自己同期ストリーム暗号の暗号化関数は、式
σi=(ci−t,ci−t+1,...,ci−1)、zi=g(σi,k)、ci=h(zi,mi)
で記述することができ、ここでσ0=(ci−t,ci−t+1,...,c−1)は(非秘密の)初期状態、kはキー、gはキーストリームziを生成する関数、及びhはキーストリームと平文miを結合して暗号文ciを生成する出力関数である。
【0153】
これに反して、完全非同期式ストリーム暗号は、キーストリームが中間キー及び一定数の前の平文ディジットとの関数として生成される暗号である。完全非同期式ストリーム暗号の暗号化関数は、式
ki+1=f(ki,mi),ci=f(ki,mi)
【0154】
により記述することができ、ここでk0はキーの初期秘密状態であり、fはキーの次状態関数であり、hは非線形にキー及び平文miを結合して暗号文ciを生成する出力関数である。
完全非同期式ストリーム暗号の復号化関数は、式
ki+1=f−1(ki,ci),mi=h−1(ki,ci)
により記述することができる。
【0155】
従って、この定義から、自己同期式及び完全非同期式ストリーム暗号は、どのようにキーストリームが生成されるかの方法が異なることは明らかである。自己同期式ストリーム暗号は前の暗号文のディジットの一定の数に依存する一方で、完全非同期式ストリーム暗号は前の平文ディジットの一定の数に依存する。ここで、重大な問題を提起することができる。すなわち、もし平文のソースがランダム性の観点から見て、お粗末な特性を持っていたらどうだろうかということである。平文のストリームが非常に低いエントロピー(極端な場合にはエントロピーが0)を持っていたらどうだろうか。もし、完全非同期式ストリーム暗号の定義が、シフトレジスタ技術及びSボックスを用いる良く知られた古典的なストリーム暗号に適用された場合、このような完全非同期式ストリーム暗号の結果は、短い予測可能な周期を伴うキーストリームを生成する、まったく貧弱なストリーム暗号であろう。従って、質の高い完全非同期式ストリーム暗号を設計することに対する主な課題は、キーストリームが前の平文の一定の数のディジットに従属するが、それでも短い周期には陥らず、また、平文ディジットのソースがエントロピー0でさえあっても、貧弱なランダム性特性を持つキーストリームを生成しない、ストリーム暗号を設計することである。図2の中に、完全非同期式ストリーム暗号を例示する。擬群ストリング変換を用いた完全非同期式ストリーム暗号の、例としての可能な実装を提示する。
【0156】
上で提供された擬群及びラテン方格の定義を前提とし、また上で提供されたイソトピズム及びオートトピズムの関係を前提とすると、ラテン方格Lの列及び行上への任意の置換は、以下の補助定理の中に集約され得るということを示すことができる。
【0157】
補助定理:擬群(Q,*)に関連する、ラテン方格Ln×nの行及び列上への任意の置換は、新しいラテン方格L’n×nに帰着し、この関連する擬群Q,*’は元の擬群(Q,*)に対してオートトピックである。
【0158】
この補助定理からの直接の帰結として、次数nの各擬群(Q,*)に対して(n!)2−1個の、(Q,*)に対する異なるオートトピックな擬群(Q,*)が存在するということを得る。
【0159】
擬群を(Q,*)とすると、集合Qへの新たな5つの作用*−1、−1*、−1(*−1)、(−1*)−1、**は、
*−1(x,y)=z⇔x*z=y
−1*(x,y)=z⇔z*y=x
−1(*−1)(x,y)=z⇔*−1(z,y)=x⇔z*x=y
(−1*)−1(x,y)=z⇔−1*(x,z)=y⇔y*z=x
**(x,y)=z⇔y*x=z
により得られる。
【0160】
集合Par(*)={*,*−1,−1*,−1(*−1),(−1*)−1,**}は、*のパラストロフの集合であると言われる。その結果、各g∈Par(*)に対して、(Q,g)もまた擬群であり、またPar(*)=Par(g)である。通常、乗法的に表される擬群(Q,*)に対して、*−1,−1*の代わりに、それぞれ\、/で表し、上述のようにこれらを左及び右パラストロフと呼ぶ。その結果、
【0161】
x*y=z⇔y=x\z⇔x=z/y
となる。
次に、代数(Q,*,\,/)は、恒等式
x\(x*y)=y、(x*y)/y=x、x*(x\y)=y、(x/y)*y=x
を満足する。
擬群ストリング変換の方法は、上で説明されている。
【0162】
EdonXと同様にEdonZは、好ましくはニブル(すなわち4ビット変数)である。これは、データのストリーム上への擬群ストリング変換を実行するために、16次の擬群(Q,*)を用いるのが好ましいからである。従って、対応するラテン方格の値は4ビットにより表される。キーKの値に対しても同様である。これはn=64個の内部変数Ki、すなわちK=K0K1...Kn−1の中に格納される。変数Kiは{0,1,...,15}の範囲の値を有している。
【0163】
EdonZは、初期化段階のためにKinの初期値を用いる。Kinの中に格納された情報によって、EdonZは初期擬群(Q,*)上に変換をかけ、及び同様にKinの値にも変換をかける。Kの値は、ストリームの処理が実行されるときに同様に変化する。EdonZはまた、好ましい一実施形態では、2つの一時的な4ビットの変数T及びXを用いる。EdonZは、同期式EdonXとは、どのように変数X及びTの初期値が設定されるか、及びどのようにXの最後の計算が成されるかの方法に違いがある。しかしながら、復号化フェーズでは、EdonXは、Q(*)の左パラストロフについては、これがバイナリの付加的ストリーム暗号であることから用いないが、EdonZはQpar(*)を必要とする。EdonZの好ましい動作を例示している表を以下に示す。
【0164】
【表23】
【0165】
【表24】
【0166】
【表25】
【0167】
作用Θは、4ビット変数上への排他的又は(XOR)である。
EdonZアルゴリズムの非常に重要なフェーズは、初期化フェーズである。これは、EdonXと同様に、例えばメッセージのパディング、メッセージの拡張、及びこの拡張されたメッセージの変換のような、暗号化アルゴリズムにおける既知の手法を組み込んでいることが好ましい。この場合、メッセージは、秘密に共有される初期キーKinである。拡張及び変換されたキーからの情報は、次に、ワーキングキーKの64ニブル(256ビット)の初期値の設定と同様に、初期的に与えられた擬群の変換に用いられる。
【0168】
初期化フェーズの最後に、敵対者には未知の2つのワーキング構造を得る。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、且つ(16!)3≒2132のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密鍵Kinを置き換える長さ4mビット(mニブル)のワーキングキーKである。
TASCとしてのEdonZの他の非常に重要な特性は、次の定理により述べることができる。
定理8:仮に、M=M1M2...Mμを、サブブロックMiへのMの表現とし、ここで
【0169】
【数32】
などであり、また、仮に(Ki,Ci)=(Ki−1,Mi)とし、ここでK0=k0が初期キーとしよう。その結果、サブブロックへのMの表現の任意のものに対し、結果としての暗号文C=c1c2...cl=C1C2...Cμは同じである。
【0170】
証明は、メッセージMの長さ上への数学的帰納法により容易である。
上記の定理は、EdonZがストリーム暗号にもかかわらず、入力平文を小さな部分(ブロック)で処理することができ、また、暗号化の前にブロックに対しどんなMの表現を選択しようとも、最後の暗号文は同じになるということを、確実にする。従って、ブロックは1文字でも、4文字でも、又は100文字でさえあっても良く、また、結果としての暗号文は同じである。
【0171】
次に、EdonZの原理で働く事例を説明するが、説明を簡単にするために、好ましい16×16の擬群の代わりに、4次の擬群の使用を続けよう。その上、長さ512の拡張キーを用いる代わりに、これを長さ16に短縮する。初期キーは、1から15の長さを持つことができ、従ってこれは、{0,1,2,3}の範囲からの2つの連結された2ビット文字により表され、ワーキングキーは長さ4となる。
初期擬群Q(*)は、上述のEdonXの実施例1で与えられたものと同じ、すなわち擬群Q(*)は、
【0172】
【表26】
と仮定しよう。
【0173】
更に、初期値をKin=131と設定しよう。Kinの長さは3であり、数値3の2つの2ビット文字による表現は03であるため、Kinをパディングし、Kin13103を得るであろう。次に、Kinを何回か連結することにより、長さ16のKex、すなわちKex=1310313103131031を得る。次に、この拡張キーをel、*変換する(ここで、リーダlはパディングされたKinの値になるように巡回的に取られる)と、Kexの最終値を得る。以下の表で、これらの変換を要約する。
【0174】
【表27】
【0175】
最後の値Kexで、初期擬群Q(*)のオートトープを得るために、反復的に、この初期擬群の行及び列を交換することを開始する。そこで、まず行3と2を交換し、次に列0と3を交換し、再度行3と行3を交換(この場合は交換はせず)、などを行う。これらの全ての交換の最後の結果は、以下に示す擬群Q(*)をもたらす(この擬群により、この左パラストロフQpar(*)も同様に計算することができる。)
【0176】
【表28】
ワーキングキーKは、Kexの最後の4文字を取り、K=2323となる。さて、或る平文ストリームを暗号化しよう。仮に、平文メッセージをM={0,0,1,0,2,3,0,0, 1,2,0,0,1, 0,0,2,0,0,0,3}としよう。EdonZの暗号化ステップを、次の表に示す。
【0177】
【表29】
初期値X=X0は、入力ストリームニブルの値であり、Tの初期値は常に0である。最終値X=X3は、実は出力ニブルである。キーKの新たな値の処理に対しても状況は同じであるということに留意されたい。すなわち、常にK=K0K1K2K3=X0X1X2T3であり、ここでT3=X0ΘX1ΘX2ΘX3である。
【0178】
次に、EdonZのセキュリティが、分析される。敵対者が1またはそれ以上の(平文、暗号文)対についての知識を持つだろうということを仮定する。更に、暗号の内部状態(ワーキングキーK、ワーキング擬群Q(*)及びQpar(*)、並びにX及びTの値)と同様に、キーKの初期値は敵対者には知られておらず、敵対者はこれらに物理的にアクセスできないと仮定する。本発明者らは、もしこの対(平文、暗号文)のみを知ることにより、敵対者がワーキングキーKの一部を再構成することができる場合に、EdonXは破られたと考える。
【0179】
分析の最初の部分で、初期キーKinについての知識が無ければ、ワーキングキーK及びワーキング擬群Q(*)の初期値について知る効率的な方法は無いと言うことを示そう。次に、同期式モード及び完全同期式モードにおけるEdonXについて更に分析しよう。
【0180】
初期化フェーズのセキュリティに対しては、これが好ましくはEdonXと同じであるため、EdonZの初期化フェーズは暗号的に安全であると言うことができる。非同期式モードにおけるEdonZのセキュリティについては、ワーキング擬群Q(*)が敵対者(がそうしない限り)に知られていないということは、はじめに与えられた擬群Q(*)のオートトープの集合全てについて網羅的な調査を引き起こし、この調査の数は2132であるということを仮定する。また、敵対者は64ニブルすなわち256ビットの長さのワーキングキーKの初期値を知らないと仮定する。
【0181】
EdonZが、選択された平文のアタックに対して安全であるということを証明するために、敵対者が、(多くの中の)1対の(平文/暗号文(M,C)=((M0M1...),(C0C1...))を知っているとしよう。同期式ストリーム暗号のケースのように、K及びXにおけるi番目の世代のニブルに対しKi,jXi,jという表記法をそれぞれ用いる。
最初のニブル対M0C0に対し、敵対者は以下の擬群方程式の系を得ることができる。
【0182】
【数33】
【0183】
C0=X0,63の値を知って敵対者は、方程式K0,63*X0,62=X0,63を解くことができる。この式は、2つの未知の変数、すなわちK0,63及びX0,62を有している。擬群作用*もまた未知であるから、敵対者は256個の可能な解の任意のものを推測することができる。これらの値を推測として設定して、上方向に、K0,62*X0,61=X0,62などの解を見つけようとするが、これらも同様に256の任意の解を持つことができる、といったように続く。最後に、敵対者は最初の方程式K0,0*M0=X0,0に到達し、値K0,0を得る。
【0184】
ここで再び、敵対者が、これもやはり2252×2132=2384の推測の総回数を与える全ての式(最初の方程式を除く)をざっと調べないかぎり、キーK及び擬群作用Q(*)の値に対して良い推測をしたかどうかを知る、他のメカニズムは存在しないという状況が得られる。
【0185】
EdonZの用法は、通信のパブリックチャンネルを通しての受信データのインテグリティを確認するためのセキュリティプロトコルを、2つのタイプの暗号アルゴリズム、すなわちストリーム暗号及びメッセージ認証コード(またはセキュアハッシュ関数:Secure Hash Function)を用いることなく、実装することにおいて存在するであるであろうということが予期されている。TASCの概念は、両方の特性を備えている。EdonX及びEdonYと共に、擬群ストリーム暗号としてのEdonZはまた、次の特性を有している。
【0186】
柔軟性:EdonZの初期化フェーズをよく見ると、初期キーの最大64ニブルを用いる代わりにこの数を128、1024、2048又は他のニブル数に拡大するのは簡単であるということがわかる。この事実の重要性は、EdonZが平均的なものから極端なものまでの、異なるセキュリティ基準を満足させることができ、従って、非常に懐疑的なユーザは1K(又は1M)ニブルの、すなわち4K(又は4M)ビットの秘密鍵を、アルゴリズムを再設計する必要なく用いることができるということである。より高いセキュリティのためには、より長い初期秘密鍵を選択すべきであるが、計算の回数は鍵の長さに直線的に依存する。
【0187】
付加的なセキュリティ:このシステムのセキュリティは、もし初期擬群及び初期キーの長さも秘密と仮定するならば、非常に強くなる。従って、もしも初期擬群が秘密である場合、約(16!)3≒2132個のオートトピズムどころか、敵対者は16次の擬群作用の全てを考慮しなければならず、そして、これらの数は未知であるが10120≒2400よりも大きいのである。
【0188】
EdonXと同様に、好ましい設計によるEdonZは4ビットレジスタ上で動作し、また、たった256バイトの中に格納できる、16次の擬群である2つの固定ルックアップテーブルを用いる。内部メモリ及びアルゴリズムの実行コードとともに、EdonZは1Kb未満の中に実装することができる。従って、EdonZは、極端に小さなメモリ量、すなわち1KB未満のメモリを伴うチップカードの中の組み込みシステムのように、ハードウエア実装に適切である。
【0189】
他のEdonZ又は同様のTASCストリーム暗号の潜在的な利用法は、エラー訂正アルゴリズムの領域にある。好ましくはEdonZのようなTASCを用いる典型的なエラー訂正アルゴリズムを、これから論議する。この方法は、もし受信データの重要な部分がエラーにより破壊されていたとさえしても、比較的速く復号化することができるランダムコードを生成するための中核となる方法である。擬群ストリング変換により生成され、殆どランダムであり、また効率的に復号化可能なコードの種類が存在することを示す。最初の数値的な実験により、これらのコードはターボ及びLDPCコードを大きくしのぐ可能性があるということが分かった。例えば、SNR=0.0dB、レート1/2、及びブロック長がわずか288ビットに対し、これらのコードはBER=1.7×10−4を提供し、またSNR=−0.5dB、レート1/4、ブロック長わずか864ビットに対してはBER=4.1×10−5を実現させる。
【0190】
雑音のある通信路のコーディング定理についてのこの非構造的な証明により、任意の雑音のある通信路に対して良好なブロックコードが存在することが分かり、またその上、殆ど全てのブロックコードが良好であるということが分かった。しかしながら、シャノン(Shannon)が彼の独創的な著作「通信の数学的理論」で証明したと同程度に良好な、明確且つ実用的な暗号器及び復号器を書き留めるのは、依然として未解決の問題である。最近、2つのコードのクラス、すなわちターボコード及び低密度パリティ検査(LDPC:Low−density parity−check)コードがシャノン限界に極めて近いレートで機能するということが認識された。ターボ及びLDPCコードは、同じ考え、すなわち、或る固定パラメータに加えランダム性により表され、反復的なアルゴリズム又はメッセージパッシング復号器を用いて復号化される、制約されたランダムコードの組み合わせに基づいている。
【0191】
本発明の更なる態様は、以下の2つの特性を有するエラー訂正コードの種類を提供する。第1に、任意のコード語Cに対して、長さrのCのサブストリングの分布は一様であり、第2に、暗号化は反復的であり、これは短い長さのストリング上で定義されるマッピングの構成を意味する。第1の特性は、コードは殆どランダムだということを確実にする。もちろん、ランダムコードの復号化はNP完全問題である。しかしながら、第2の特性は、コードが効率的に復号化され得るということを確実にする。このようなコードが擬群ストリング変換と共に実装される事例について、詳細に説明する。予備的な数字的シミュレーションの結果、提案されたコードは対応するターボ及びLDPCコードを大きくしのぐことが分かった。
【0192】
好ましいコードを説明するために、情報のソースがシンボル(symbol)のストリームを生成すると考える。このストリームは、長さNblockのブロックの中に分割される。可能な2
【0193】
【数34】
ブロックのそれぞれは、暗号器により長さN>Nblockのコード語(すなわちビットのシーケンス)にマッピングされ、チャンネルを通して送信される。従って、エラー訂正コードは、マッピング
【0194】
【数35】
として定義される。
【0195】
本発明の実施形態によるコードTは、次のように定義される。仮にMを、Nblockビットのブロックとする。先ず、ゼロビットを加え、長さNのブロックLを生成する。第2に、Lを、L=L1L2...Lpのように書き直す。ここで、各Liはsビットのブロックである(N=spと仮定する)。第3に、このブロックLは、以下の方法で全単射によりブロックC=C1C2...Cpにマッピングされる。
仮に、K1,1、K1,2、...、K1,nをそれぞれの長さsのn個の初期ストリングとしよう。ブロックLは、
【0196】
【数36】
としてCへとマッピングされ、ここでf及びgは適切な作用である。(1)は、コードTを一意的に定義するということに留意されたい。
【0197】
もしi=1,2,...p+1に対してk(i)=ki,1,ki,2...ki,nと書くとすると、方程式(1)はまた以下の2つの写像を定義する:第1に、(k(p+1),C)=F(k(1),L)となるような写像F:An×Ap→An×Apであり、ここでA={0,1}1は、長さlの全てのストリングの集合である。第2に、各i=1,2,...,pに対して(k(i+1),Ci)=G1(k(i),Li)となるような写像G1:An×A1→An×A1である。この理由により、コードは両様で反復的である。すなわち、(1)各Li,fに対して、fはn回繰り返されてCiを生成し、(2)k(1)はp回繰り返されてk(p+1)を与える。
以下では、G1の代わりに、写像G4≡Gで作業する。簡単にするために、p=4rのみを仮定しよう。その結果、方程式(1)は
【0198】
【数37】
と書き直しすることができる。
方程式(2)は、l=1,2,...,rに対して(k(4l+1),C(l))=G(k(4l−3),L(l))となるような写像G:An×A4→An×A4を定義する。
加えて、このコードは以下の特性を有している。すなわちこのコードは殆どランダムであり、これは全ての
【0199】
【数38】
に対して、長さk(kは1≦k≦n)のC=T(M)∈{0,1}Nのサブストリングの分布は、Nが十分に大きい場合は一様であるということを意味している。
【0200】
擬群作用及び擬群ストリング変換は、例えば、EdonX、EdonY、及びEdonZのものと同様に実行される。文字体系(すなわち有限集合)Aを考え、A+によって、Aの元により形成された全ての非空の語の集合(すなわち有限ストリング)を表そう。A+の元は、(a1,a2,...an)よりもむしろ、a1,a2...anで表されるであろう。尚、ここでa1∈Aである。仮に、*を集合A上への擬群作用としよう。
【0201】
各l∈Aに対して、関数el,*:A+→A+を以下のように定義する。
仮に、ai∈A,α=a1a2...anとする。その結果、それぞれi=0,1,...,n−1に対して
el,*(α)=b1...bn⇔bi+1=bi*ai+1 (3)
であり、ここでb0=Iである。関数el,*は、リーダIを伴う作用*に基づくA+のe変換と呼ばれる。
【0202】
いくつかの擬群作用を集合A上で定義することができ、仮に*1,*2,...,*kをこのような作用の順序だとしよう(必ずしも独特なものではない)。また、リーダl1,l2,...,lk∈Aを選択し(これも必ずしも独特なものではない)、その結果マッピングの構成
【0203】
【数39】
は、A+のE変換と言われる。実際のところ、置換である関数Ekは、多くの興味深い特性を有している。非常に顕著なものは以下である。
【0204】
定理9:任意のストリングα=a1a2...an∈A+を考え、ここでai∈Aであり、また、β=Ek(α)としよう。もしnが十分に大きい整数の場合、各l(1≦l≦k)に対して、長さlのβのサブストリングの分布は一様である。(l>kに対しては、長さlのβのサブストリングの分布は一様ではない可能性がある。)
【0205】
この符号化は2つの重要な部分を有している。ここで提供される実施例では、1/2レートのコードのみについての設計を説明するが、他の符号化率(coding rate)への一般化は容易である。送信すべきメッセージがM=m1m2...m18の形式を有していると仮定する。ここで、miはニブル(4ビット文字)である。最初の部分で、冗長情報を追加し、L=L(1)L(2)L(3)L(4)L(5)L(6)L(7)L(8)L(9)を得、ここで、L(1)=m1m2m304、L(2)=M4m5m604、L(3)=M7m8m904、L(4)=04040404、L(5)=m10m11m1204、L(6)=m13m14m1504、L(7)=m16m17m1804、L(8)=04040404、L(9)=04040404である(04は4つのゼロのストリング(ゼロニブル))。従って、各L(i)は16ビットのストリングである。18個のゼロニブルを追加したので、符号化率は1/2である。これは概略的に以下の表に示されている。
表I
レート1/2及び1/4を伴うコード
【0206】
【表30】
表II
実験で用いた16次の擬群
【0207】
【表31】
この表では、また、レート1/4のコードを示す。この1/2コードに対しては、(72,144)コード(Mの長さが72であり、Lの長さが144)とも言う。
【0208】
第2の部分の符号化では、fを表IIで定義される擬群作用であるように選択し、またgを
もしj=1,...n−1なら、ki+1,j=bi,j
ki+1,n=bi,1Θ...Θbi,n
であるように選ぶ。
【0209】
ここで示される数値的な実験で、コード(144,288)を用いる。実験は以下の方法で行われる。仮に、Lを2つのサブパターンの連結L104として書き直ししよう。ここで、L1=L(1)L(2)...L(8)である。その結果、コード(144,288)はL=L1L20404、と記述することができる。ここで、L2=L(9)L(10)...L(16)である。
288ビットのブロックと共に作動し、レート1/4を有する実施例を紹介する。暗号化及び復号化で用いたTASCアルゴリズムを次の表に示す。
表III
完全非同期式ストリーム暗号
【0210】
【表32】
【0211】
上述のアルゴリズムでは、表記法Q[Ki,X]は、擬群作用Ki*Xを意味し、作用Θは排他的ORである。表記法Qpar[temp,X]は、擬群Q(*)に対する左パラストロフ擬群作用を用いるということを意味する。
【0212】
変換されたコード語はCである。ノイズにより、異なったシンボルのシーケンスD=d1d2...d36(ここでdiはニブル)が受信される。復号化の問題は、D、コードの定義、及び雑音のあるチャンネルの特性を所与として、Lを推定することである。このチャンネルをバイナリのシンメトリックチャンネルと仮定する。H(h1,h2)を、同じ長さ(ビットの)の2つのストリングh1とh2間のハミング距離を返す関数だとしよう。
表IV
実験に用いた擬群Q(*)の左パラストロフQpar(\)
【0213】
【表33】
TASCECAアルゴリズムは、以下のアルゴリズムにより定義された。
【0214】
1)復号化候補の最初の集合S0={(k0,λ)}を定義する。
2)For i=1 to μ do
si={(k,m’)|∃(k”,m”)∈Si−1,D”,H(D”,D’)
≦B,(k,m”d)=f−1(k”,D”),m’=m”m”d、
ここでm”dはM’iと同じ冗長情報を有する}
3)最後の集合Sμから元(k,m’)∈Sμを選択する。
4)m’からメッセージMを得る。
例えば、以下のメッセージ
M=4d616365646f6e6961
【0215】
を、バイナリシンメトリックチャンネルを通して、レート1/4且つブロック長288ビットのTASCECAで送りたいと仮定する。結果をより簡潔に示すために、小さい値Bmax=3を用いる。これは、全ての受信された4文字語Di(すなわち受信された16ビット語)に対して、ハミング距離3以下を有するこの隣接の語の全てをくまなく検索するということを意味する。このような近接した隣接語の総数は、(16/0)+(16/1)+(16/2)+(16/3)=697である。上記の表より、メッセージMを以下のメッセージ(4文字語の連結として表された)
【0216】
M’=4d00 6100 6000 0000 3600 5000 6000 0000 4600 f600 e000 0000 6900 6000 1000 0000 0000 0000
に変換する。
【0217】
この場合の4文字語の総数は、L=18であることに留意されたい。仮に、キーkの長さをn=5に選び、k0の初期値をk0=01234としよう。暗号化プロセスは、もしM’を関数T及び初期値k0で変換する場合は、即時に終了することができる。もし、これを行うと、以下の対を得る。
【0218】
(k,C)=T(k0,M’)=(98f91,26ab c306 b63b 50df 3965 39cbb564 5521 a059 6bOf 611e 2700 239f 7c7c 6973 ge53 bd9a 5f26)
【0219】
しかしながら、暗号化プロセスを示すために方程式2が以下の表で反復して用いられる。以下の表の値は、反復的に、すなわち(k1,C1)=(15b40,26ab)=T(k0,M’1)=T(01234,4d00)、次に(k2,C2)=(7fd9a,c306)=T(k0,M’2)=T(15b40,6100)などと得られる。
【0220】
復号化フェーズは、以下の反復的処理の表の中に記述されている。紙面の節約のため、集合Siの元は、(k,M’)の形式で示されており、復号化フェーズのステップ2の中に記載されたものからは若干異なっている。すなわち、M’は冗長性が取り除かれて、すなわち冗長な0無しで示されている。更に、集合Siの各元に加えて、ハミングウェート(Hamming weight)Bmax=3の太字体の4文字語がある。この語からは、この変更された語に逆関数T−1が適用された時に、結果が冗長情報の必要とする構造を有するよう受信された4文字語Di上にどんな変更が成されたかがわかる。従って、例えばi=1に対しては、行「(6803e,4e),01a8」は、(6803e,4e00)=T−1(01234,24abΘ01a8)を意味し、次に行「(15b40,4d),0200」は、(15b4 0,4dOO)=T−1(01234,24abΘ0200)を示し、以下同様である。次に、i=2に対して、行「(21a6 9,4ed1),0460」は、(21a6 9,d1000)=T−1(6803e,c326Θ0460)を意味し、以下同様である。
【0221】
表V
キーkiの中間値、対応するCiと異なるDi値で示されるメッセージM’のエンコードの反復プロセス、あるエラーがバイナリシンメトリカルチャンネルによって導入させる
【0222】
【表34】
バイナリシンメトリカルチャンネル
【0223】
【表35】
【0224】
復号化の過程で、j=1+4(i−1)、i=1,2,...9に対して、反復的に4タプルのDi=djdj+1dj+2dj+3を復号化し、また04が対応するLiの最後のニブルかどうか、又はL4、L8、L9がゼロのみのストリングかどうかをチェックする。しかしながら、j=1+4(i−1)、i=1,2,...9に対してDi=djdj+1dj+2dj+3が対応するコード語Ci=cjcj+1cj+2cj+3からは一部のビットが異なるために、復号化の過程でDiからBビット距離よりも少ない全ての4タプルを復号化する。手短に言えば、コード語の復号化は、復号化されたときに最後のニブルが4つのゼロのストリングか、又はL4、L8、L9がゼロのみであるDisを探す過程である。
【0225】
このステップが、非常に重要な復号化の反復的な部分であることは明らかである。復号化の過程で、集合Sの中の全ての可能な候補の元の数を劇的に増加させることができ、従って、この数を制御下において置くということが重要である。Lの中への冗長データの配置は、上記のレートコード表に示すように、この目的のために用いられるが、もっともありそうもない候補を除外するための他の手法も同様に適用することができる。反復的な復号化の最後に、最終的にSの中の元の数は1つに減り、これは全てのエラーが見つかり訂正されたということを意味する。この復号器はまた、以下の特性を有する。すなわち、どういうわけか正しい候補が候補の集合Sから削除されてしまった場合、復号化プロセスへの更なる数ステップを行うと、最終的に空の集合Sに帰着し、これは或る間違った復号化判断がなされたということの証拠となる。
【0226】
更に、集合Sの中の元の数が制御下に維持されているという仮定の下で、復号化のために、BERの上限を計算することができる。すなわちエラー確率pを有する、バイナリシンメトリックチャンネルに対して、受信された4タプル(複数)のDiに対する最大ハミング距離がB=Bmaxを超えないと仮定し、且つK=N/16を長さNのコード語の中の4タプルの数だとすると、BERの上限は以下の式
【0227】
【数40】
により計算され、ここで
【0228】
【数41】
は、Bmaxを超えるエラーが16ビットのストリングで起こる確率である。
【0229】
このコードに対する実験の結果、ターボ及びLDPCコードに比較して、顕著に改善することが分かった。例えば、SNR=0.0dB、レート1/2、及び長さわずか288ビットに対し、好ましいコードはBER=1.7×10−4を提供し、またSNR=−0.5dB、レート1/4、ブロック長わずか864ビットに対してはBER=4.1×10−5を実現させる。こうした数値上の実験から、この時点で、現在最良のエラー訂正コードの能力をはるかにこえる潜在的可能性があることがわかる。
【0230】
更なる他の本発明の態様は、擬似ランダム数発生器(PRNG:pseudo−random number generator)の改善物を提供し、この改善されたPRNGは、殆ど測定不可能な周期と、文字、文字対、3つ文字組み、等々の一様な分布とを有し、またランダム性についての全ての統計的なテストをパスするようにする。PRNGの好ましい改善物は、擬群ストリング変換によって設計され、またこの特性は数学的に証明可能である。これは極めて柔軟性が有り、入力/出力ストリングは、2ビット文字、4ビット文字、バイト、2バイト文字、等々のものとすることができる。加えて、この複雑度は線形であり、2ビット及び4ビット実装では1Kb未満のメモリしか必要とせず、従って、同様に組み込みシステム用として適している。
【0231】
擬似ランダム数発生器(PRNG)及び/又はランダム性の無バイアス物理ソース(unbiased physical sources of randomness)上に構成し、(擬似)ランダム数発生器(PRNG)に対するいくつかの改善物がある。PRNGに対する全ての改善物の一般的な特徴は、これらがソースにより生成された情報の各ビットを用いないということか、又はこれらのアルゴリズムが指数関数的な性質を有しており、その結果、近似式が関係する必要があるかのいずれかである。PRNGの改善物に対して提案されたアルゴリズムでは、コンピュータ的に効果的な方法で実装することができるものもあれば、同時に、要求される特性のために数学的な証明が提供されるものもある。
【0232】
本発明の実施形態によれば、擬群ストリング変換に基づくPRNGのための改善物が提供される。好ましい1つの改善物は、情報ソースにより生成された情報の各ビットを用いる。その上、好ましい改善物は、1つの信号(例えば、ゼロ)のみを生成する固定ソースから、擬似ランダム数シーケンス(高品質の)を生成することができる。好ましいアルゴリズムの複雑度は線形である。すなわち、長さnの出力ストリングが、複雑度O(n)を持つ長さnの入力ストリングから生成される。これは、この改善物についての、コンピュータ的に非常に効果的なソフトウエア及びハードウエアの実装が設計され得るということを意味する。この好ましいアルゴリズムは、非常に柔軟性があり、文字が2ビット、4ビット、バイト、2バイト、からなるストリングのために同じ設計を用いることができ、一般的にこれはnビット文字の文字体系(n≧2)に合わせて設計することができる。
【0233】
擬群の定義は、上記で提供されている。上で提供されたのと同様に、擬群の定義は簡約律x*y=x*z⇒y=z、y*x=z*x⇒y=zを暗示し、方程式a*x=b、y*a=bは、それぞれのa,b∈Qに対して一意的な解x、yを有している。もし、Q(*)が擬群だとしたら、*は擬群作用と呼ばれる。
【0234】
いくつかの擬群ストリング変換は定義することができる。そのうち興味あるものについて以下に説明しよう。文字体系(すなわち有限の集合)Aを考え、A+によって、Aの元により形成された全ての非空の語の集合(すなわち有限ストリング)を表す。A+の元は、(a1,a2,...,an)よりもむしろ、a1a2...anで表されるであろう。尚、ここでa1∈Aである。仮に、*を集合A上への擬群作用としよう。各l∈Aに対して、2つの関数el,*,e’l,*,:A+→A+を以下のように定義する。仮に、ai∈A,α=a1a2...anとする。その結果、i=0,1,...,n−1に対して
【0235】
el,*(α)=b1...bn⇔bi+1=bi*ai+1
e’l,*(α)=b1...bn⇔bi+1=ai+1*bi
であり、ここでb0=lである。関数el,*及びe’l,*は、リーダlを伴う作用*に基づくA+のe変換及びe’変換と呼ばれる。e及びe’変換の図式的な表現は、以下の表に示されている。
【0236】
【表36】
一例として、A={0,1,2,3}とし、擬群(A,*)が以下に示す乗算スキームにより与えられるとしよう。
【0237】
ストリングα=1021000000000112102201010300を考え、リーダ0を選択する。その結果、変換e0,*及びe’0,*により、以下の変換されたストリングを得る。
【0238】
e0,*(α)=1 322 1 302 1 302 10112111 330 13130
及び
e’0,*(α)=33033333333 332 1211 233 2033111
【0239】
【表37】
【0240】
上記表で、これらの変換を連続4回適用したものを示す。αの中の0、1、2、3の最初の分布16/28、7/28、4/28、1/28が、e0,*4(α)では7/28、7/28、10/28、4/28に、またe’0,*4(α)では、5/28、10/28、5/28、8/28へと変化しており、従って、分布はより均一になったということに気づくことができる。
【0241】
集合A上へのいくつかの擬群作用を定義することができ、仮に*1、*2、...、*kをこのような作用の順序だとしよう(必ずしも独特なものではない)。本発明者らはまた、リーダl1,l2,...,lk∈Aを選択し(これも必ずしも独特なものではない)、その結果マッピングの構成
【0242】
【数42】
は、それぞれA+のE変換及びE’変換と言われる。関数Ek及びE’kは、多くの興味深い特性を有しており、もっとも重要なものは以下である。
【0243】
定理10:変換Ek及びE’kは、A+の置換である。
定理11:任意のストリングα=a1a2...an∈A+を考え、ここでai∈Aであり、また、β=Ek(α)、β=E’k(α)としよう。もしnが十分に大きい整数の場合、各l(ここで1≦l≦k)に対して、長さlのβ及びβ’のサブストリングの分布は一様である。(l>kに対しては、長さlのβ及びβ’のサブストリングの分布は一様ではない可能性があるということを書き留めておく。)
【0244】
ストリングα=a1a2...an∈A+(ここでai∈A)は、もしpがそれぞれのi≧0に対してai+1ai+2...ai+p=ai+p+1ai+p+2...ai+2pであるような最小の正の整数である場合、周期pを持つということを言っておく。仮に、α、β、β’を、定理10に有るようなものとし、変換Ek及びEk’のリーダをa*a≠aであるように仮定しよう。その結果、以下の特性を得る。
【0245】
定理12:ストリングβ及びβ’の周期は、kにより少なくとも直線的に増加している。
この周期の増加は擬群作用に基づいており、これら増加した周期のあるものについては、増加が指数関数的であり、すなわちもしαが周期pを有している場合は、β=Ek(α)及びβ=E’k(α)はp2kを超える周期を有する可能性がある、ということに注目すべきである。これについて、もっと詳細に論じよう。
【0246】
以下の実施例では、通常E変換のみを用いるが、理由は結果がE’変換に対しても対称的に成り立つからである。
擬群PRNG改善物を特に説明する上で、A+からのストリングを生成する別個の情報ソースSIを持つ。すなわち、SIの文字体系がAであり、ここでA={a0,a1,...,as−1}は有限の文字体系である。SIからの出力ストリングが擬似ランダム数であると考えても良い。すなわちAの元は基数sにおけるディジットで、SIはPRNGと考えてもよい。次に、PRNG改善物のための2つのアルゴリズムを、E変換及びE’変換にそれぞれ基づいて定義する。これらをEアルゴリズム及びE’アルゴリズムと呼ぶことにする。これらのアルゴリズムで、いくつかの内部変数b、L1、...、Lnを使用し、アルゴリズムの入力は擬群の次数s、次数sの擬群A,*、固定の元l∈A(リーダ)、変換el,*及びe’l,*の適用回数を与える整数n、並びに文字体系Aを伴う情報SIのあるソースから得られた擬似ランダムストリングb0,b1,b2,b3,...である。出力は、改善された擬似ランダムストリングである。
【0247】
【表38】
E’アルゴリズムはEアルゴリズムとはステップ6のみが異なる。
【0248】
【表39】
【0249】
指数擬群の意味を説明し、数s及びnに対する適切なパラメータを提供しなければならない。実際、数sは、ある意味では情報ソースSIにより定義されるものの、完全にではない。仮に、SIの文字体系を、全ての8ビットの文字からなるASCIIとしよう。その結果、Aについての次の選択肢、すなわちA={0,1,2,3},A={0,1,2,...,7}、A={0,1,...,15}、A={0,1,...,31}、A={0,1,...,63}、A={0,1,2,...,127}を得る。すなわち、SIの出力ストリングは、ビットのストリングと考えられ、その後、これらのビットは2つ、3つなどを単位としてグループ分けされる。(この場合、2バイト文字、3バイト文字等を伴う文字体系を考えることができるが、512次以上の擬群は多くの記憶メモリを必要とし、且つ一般的に計算がより遅くなり、望ましくはないだろう。)数nは、「より小さなsに対してはより大きいn」の原則により選択すべきであり、この選択は情報ソースSIに依存する。従って、もしSIが一定の出力(例えば、ゼロ)を提供する場合は、実験によれば、規則の1つは「ns≧512&n>8」ということも有りうる。もしSIが一種のランダムシーケンスを生成し、nは小さくできる場合は、時々n=1でまったく充分である。例えば、Pascalで用いられるPRNGは、バッテリ「diehard」における統計的なテストをパスしないが、e変換のたった1回の適用の後では、これらの全てをパスする。もちろん、より大きいsに対してはより良い出力擬似ランダムストリングが得られるが、利用可能な性能(アルゴリズムの速度、アクセス可能なメモリ等)により最適化されるべきである。これらの言及された特性の全ては、定理11及び定理12と、数百回の実験を通して得られた経験とに基づいている。
【0250】
PRNGを定義及び改善するための擬群の可能性が、考察された。以前の研究により、有限擬群のクラスは2つの互いに素なサブクラス、すなわち線形(つまりフラクタルな)擬群のクラス及び指数(つまり均一な)擬群のクラスに分離され得るということを結論付けることができる。これらの2つのクラスを分けるいくつかの特性があり、本発明者らの目的のためにはこの1つが重要である。有限の集合Q={q0,q1,...qs−1}を仮定し、仮に(Q,*)が擬群とし、周期nの無限(すなわち十分に長い)ストリングα=q0q1...qs−1q0q1...qn−1q0q1...qs−1...から始めよう。α上にel,*変換をr回適用し、得られたストリングをαrで表す。次に、もしストリングαrの周期がrの一次関数の場合は、擬群(Q,*)は線形であると呼ばれる。逆の場合は、ストリングαrの周期が指数関数nr(1<n≦sである定数nに対して)であり、擬群(Q,*)は指数だと言われる。数nは、指数擬群(Q,*)の成長周期と呼ばれる。(線形と指数の2種類の有限擬群しか存在しないのかという問題については、まだ答えが出ていない。)
【0251】
Dimitrova,V.及びMarkovski J.による「擬群擬似ランダムシーケンス生成器について」(Proc.of the 1−st Balkan Conference in Informatics,YManolopoulos and P.Spirakis eds.,21−23 Nov.2004,Thessaloniki,pp.393−401)で提供された統計的な結果により、線形擬群の割合は、擬群の次数が増加すると減少するということが示された。更に、「悪い」擬群、すなわち成長周期s≦2を伴う線形擬群及び指数擬群は、擬群の次数により指数関数的に減少する。次の表は、Dimitrova他による次数4、5、6、7、8、9、10の擬群に対する「悪い」擬群の割合を例示している。
【0252】
【表40】
上記の結果は、7回のみのe変換を適用して結果が得られたことから、あまり正確ではない(完全な分類が得られた4次の擬群を除いて)ということに注意しなければならない。すなわち、たまたま7回の適用を超えた後に一部の擬群が≧2の成長周期を得ることが有り得る。
【0253】
ランダムに選ばれた106個の16次の擬群に対して以下の実験を行った。周期16を伴う次の周期的なストリング、0、1、2、...、14、15、0、1、2、...、14、15、0、1、2、...、14、15、...上に、各擬群のel,*変換を5回適用した後の成長周期をカウントした。リーダlの値は、結果には影響しなかった。成長周期についての得られた分布は、次の表に示されている。
【0254】
【表41】
【0255】
この表から、907個の擬群が、5回のe変換の適用後に、成長周期<2を有しているということが分かる。本発明者らは、これらの各擬群を6回適用した後に成長周期をカウントし、これらの中の15個のみが成長周期<2を有しているということを得た。7回の適用後では、1つの擬群のみが成長周期<2を有していたが、これはe変換の10回の適用の後で成長周期2を得た。この実験は、16次の線形擬群をランダムに見つけるのは容易ではないということを示している。
【0256】
好ましい一実施形態によるこれらのPRNG改善物は、ソフトウエア及びハードウエアの中に非常に効果的に実装可能である。これらは、線形複雑度を有しており、もし次数≦16の擬群が用いられる場合には、1Kb未満のワーキングメモリの中にインストールすることができる。従って、これらは組み込みシステムで用いることができる。アルゴリズムの性能は、定理10、11、12に基づく。定理10より、Eアルゴリズム及びE’アルゴリズムは単射であり、情報ソースSIから得られる異なる入力ストリングは、異なる出力ストリングを生成するということを意味する。定理11は、文字、文字の対、3つ文字組、等の分布が一様である、均一な出力ランダムストリングを得る事を可能とする。最後に、定理12及び統計的な結果は、出力ランダムストリングの周期は、必要とされるのと同じくらい大きくすることができる、ということを示している(実際のところ、これは潜在的に無限である)。出力ランダムストリングの望ましい特性は、適切な(指数)擬群を用いることにより、及び適切なパラメータsの選択により、容易に実現することができる。上記の特性は良好な擬似ランダムストリングを得るには不十分であるということは、明確である。得られた擬似ランダムストリングを、利用可能な統計的なテスト(Diehard)を用いてチェックしたが、これらは全てのテストをパスした。
【0257】
定理11及び12の証明が、これから提供される。定理11に関しては、証明における専門的な事項を簡単にするため、文字体系Aは{0,...,s−1}、ここで0、1、...、s−1は整数(s>1)とし、且つ*はA上への擬群作用とする。ランダム変数{Yn|n≧1}のシーケンスを以下のように定義する。各i=0,1,...,s−1に対してqi>0且つ
【0258】
【数43】
となるような、文字0、1、...、s−1の確率分布(q0,q1,...qs−1)を持つとしよう。e変換を考え、仮にγ=E(β)としよう。ここで、β=b1...bk,γ=c1...ck∈A+(bi,ci∈A)である。ストリングβは、任意に選択されたと仮定する。次に、ストリングγの中のm番目の文字がまさにiであるランダム事象を、{Ym=i}により表す。(1)により与えられるe変換の定義は、γの中のm番目の要素の出現はγの中の(m−1)番目の要素にのみ依存し、(m−2)番目、...、1番目には依存しないことから、P(Ym=j|Ym−1=jm−1,...,Y1=j1)=P(Ym=j|Ym−1=jm−1)を暗示している。従って、シーケンス{Ym|m≧1}は、マルコフ連鎖(Markov chain)であり、本発明者らはこれを、擬群マルコフ連鎖(qMc)と呼ぶ。仮に、pijを、ストリングγで文字jが特定の文字iの後に現れる確率を表すとする。すなわち、
【0259】
i,j=0,1,...,s−1に対して、pij=P(Ym=j|Ym−1=i)
である。
このqMcの定義は、pijはmに依存しないことを暗示し、従ってqMcは一様なマルコフ連鎖であるということがわかる。確率pijは以下のように決定される。仮に、i,j,t∈Aとし、擬群(A,*)でi*t=jが真に等しいとしよう。その結果、方程式i*x=jは未知のxに対して一意的な解を有していることから、
【0260】
P(Ym=j|Ym−1=i)=qt
である。従って、各i,j=0,...,s−1に対してpij>0、すなわちqMcの遷移マトリックスII=(pij)は正則である。明らかに、如何なるマルコフ連鎖でも、
【0261】
【数44】
である。しかしながら、qMcに対しては同様に、
【0262】
【数45】
を得る。すなわち、qMcの遷移マトリックスIIは二重に確率論的である。
IIの正則性は、pII=pになるような固有の一定確率ベクトルp=(p0,...,ps−1)が存在し、pの全ての要素は正であるということを暗示する。また、IIも二重に確率論的であるために、
【0263】
(1/s,1/s,...,1/s)は、pII=pの解であることを確認することができる。従って、pi=1/s(i=0,...,s−1)である。このようにして、以下の補助定理を得る。
【0264】
補助定理:仮にβ=b1b2...bk∈A+及びγ=E(1)(β)としよう。その結果、各i∈A及び各m=1,2,...kに対してストリングγ=c1...ckのm番目の場所における文字iの出現確率は、およそ1/sである。
【0265】
この補助定理より、qspにより十分に大きなストリングβから得られたストリングγ=E(β)の中の文字の分布は、均一であるであるということがわかる。ストリングγ=E”(β)(β=b1b2...bk∈A+)のサブストリングci+1...ci+lを考えることにより議論を進める。ここで、l≧1は固定で、i∈{0,1,...,k−l}である。いつものように、ci+1...ci+lはγ長さlのサブストリングと言う。ランダムな変数のシーケンス{Zm(n)|m≧1}を
【0266】
【数46】
により定義し、ここで(及びこの先も含め)上付き文字(n)で、enのような変換によりストリングβから得られたストリングγ=i1(n)i2(n)…ik(n)のサブストリングを考えているということを表わす。従って、Ym(n)はまさに、前のように定義されたランダム変数Ymである。以下のマッピング、
【0267】
【数47】
は、Alから{0,1,...,sl−1}への全単射であり、従って、シーケンス{Zm(n)|m≧1}は明確である。シーケンス{Zm(n)|m≧1}は、γの中のl個の連続したシンボルのサブストリングim(n)im+1(n)…im+l−1(n)の出現が、先行するim−1(n)im(n)im+l(n)…im+l−2(n)にのみ依存することから、同様にマルコフ連鎖(n−qMc)である。t及びt’により、以下の数を表す。
【0268】
【数48】
仮に、Pt’tを、あるストリングγ=E(n)(β)で、γのサブストリングim(n)…im+l−2(n)im+l−1(n)(m番目からm+l−1番目の位置までの)が、γの特定のサブストリングim−1(n)im(n)…im+l−3(n)im+l−2(n)(m−1番目からm+l−2番目まで)の後に、出現する(オーバーラップを伴って)確率だとする。明らかに、もしj∈{m,m−1,...,m+l−2}に対してij(n)とij‘(n)とが等しくないなら、Pt’t=0である。逆の場合(l−1文字がオーバーラップする場合)、
【0269】
【数49】
を得る。
【0270】
擬群変換の数nについての帰納法を用いることにより、定理11を証明しよう。すなわち、この以下の変形、
「仮に、1≦l≦n、β=b1b2...bk∈A+、且つγ=E(n)(β)とする。そうすると、長さlのγのサブストリングの分布は一様である。」
を証明する。
【0271】
A={0,...,s−1}という表記法を思い出して頂きたい。n=1に対してこの補助定理を得、且つn=r+1、r≧1としよう。帰納法的な仮説によれば、γ’=Er(β)において、l≧rに対して長さlのサブストリングの分布は一様である。先ず、l≦rと仮定し、
【0272】
【数50】
の長さlのサブストリングを考える。A上への擬群作用を、*1,...,*r+1と取り、
【0273】
【数51】
を思い起こそう。(A,*r+1)は擬群であるので、各j、2≦j≧kに対して方程式
【0274】
【数52】
は、xに対する一意的な解を有し、これをx=ij(r)で表す。ii(r)により、方程式
【0275】
【数53】
の解を表し、ここでαr+1∈AはEr+1の定義における固定の要素である。このようにして、任意のd、0≦d≦k−mに対し、γのサブストリングim(r+1)im+1(r+1)…im+d(r+1)で作業する代わりに、γ’=E(r)(β)のサブストリングim(r)im+1(r)…im+d(r)を考えることができる。擬群方程式における解の一意性は、
【0276】
【数54】
を同様に得るということを暗示している。ここでi0(r+1)=ar+1である。その結果、(3)及び(4)により(d=l−1、d=l−2及びn=r+1に対して、
【0277】
【数55】
を得、ここでl≦rである。帰納法的な仮説により、本発明者らは、
【0278】
【数56】
すなわちpt’t=1/sを得る。従って、確率Pt’tに対して本発明者らは、
【0279】
【数57】
を得る。
【0280】
これは、n−qMcの遷移IIのsl×slマトリックスの各列の中に、まさに1/sに等しいs個の要素が存在するであろうし(j=m,...,m+l−2に対し、ij‘(r+l)=ij(r+l)となるものに対して)、他の構成要素は0に等しく、その結果IIの各列の要素の合計は1に等しいであろう:従って、遷移マトリックスIIは、二重に確率論的である。これは、マトリックスIIlの各要素が正であることから、正則行列でもある。これは、系PII=Pは、一意的な固定の確率ベクトル
【0281】
【数58】
を解として持っているということを暗示している。すなわち、長さl≦rのγのサブストリングの分布は一様である。ここでl=r+1を仮定し、仮に数t、t’および確率pt’tが前と同様に定義されるとしよう。すると、pt’tに対して、上記の方程式がpt’tについても成り立つということを得る。すなわち、
【0282】
【数59】
である。
前に行ったのと同様にして、方程式
【0283】
【数60】
が一意的な解x=ij(u−1)を擬群(A,*u)の中に持っており、ここでu=r,r−1,...,2,1であり、γ’=E(r)(β),γ”=E(r−1)(β),...,γ(r)=E(1)(β),γ(r=1)=E(0)(β)=βのサブストリングを考えることができる。その結果、確率pt’tに対して、方程式(4)及び(6)を繰り返し用いながら、上付き文字(r)を(r−1)へ、(r−2)へ、...,(1)へと減じていく。すなわち、
【0284】
【数61】
を得る。
ここで、
【0285】
【数62】
である。
【0286】
【数63】
なので、
【0287】
【数64】
を得、これは
【0288】
【数65】
を暗示している。
本発明者らは、方程式
【0289】
【数66】
が、各u=r+1,r,...,2,1に対して擬群
【0290】
【数67】
の中に一意的な解を有していることから、方程式
【0291】
【数68】
が正しいということが成り立つ。
従って、遷移行列IIは二重に確率論的であり、正則であり(IIr+1は正のエントリを持っている)、これは系pII=pが一意的且つ固定の確率ベクトル
【0292】
【数69】
を解として持つということを意味する。
【0293】
一般的に、ストリングγ=E(n)(β)の中の長さlのサブストリングの分布は、l>nに対しては一様でない。すなわち、l=n+1に対して先の証明の最後の部分と同じようなやり方により、
【0294】
【数70】
であり、その結果(上述の暗示された要約の中にあるように)本発明者らは、
【0295】
【数71】
を得る。
【0296】
もちろん、最後の合計は1と同じであるはずがない。つまり、遷移行列IIは二重に確率論的であるはずはない。同じ考察を、l=n+2,n+3,...に対して同様に成すことができよう。
【0297】
定理12を証明するために、次数sの有限擬群(A,*)を考え、a*a≠aとなるような固定の元a∈Aを取る。定理12を、より極端なケースで証明することにし、従って、周期1のストリングα=a1...akを取り、ここで各i≧1に対してaj=aである。次に、α上にE=ea,*変換を数回適用する。Enは、Eがn回適用されたことを意味し、En(α)=a1(n)…ak(n)で表す)。結果は、以下の表に示されている。
【0298】
【表42】
a*a≠a且つ
【0299】
【数72】
であることから、或るp>1に対してa’p=aを得(従って、pは少なくともsであることを得る)、仮にpをこの特性を持つ最小の整数としよう。ストリングE(α)は周期的であり周期pを伴うということがいえる。同じような理由で、ストリングE(α)のそれぞれが周期的であるということを得る。全てのストリングE(α)が同じ周期pを持つことは不可能であるということを示そう。もしこれを真と仮定するならば、各n≧に対してap(n)=aを得るであろう。次に、同様に以下の方程式が成り立つようなbjEAが存在するということを得る。
【0300】
【数73】
次に、a*b1=b1を得、そしてこれは書くn≧1に対してa1(n)=b1を暗示している。a*a=a*b1=b1を得たが、これはa=b1を暗示、すなわちa*a≠aとの矛盾を暗示する。結果として、
【0301】
【数74】
を得る。ストリングEa(p+1)(α)の周期はpでないと結論付けられる。
【0302】
次に、もしストリングβ∈A+が周期pを有しており、且つγ=E(β)が周期qを有している場合、pはqの因数であるということを示そう。定理10によるE変換は置換であるということを思い起こそう。そうすると、逆変換E−1が存在するということになる。さて、もしγ=b1...bqb1...bq...b1...bqであれば、β=E−1(γ)=c1c2...cqc1c2...cq...c1c2...cqは周期≦qを持つ周期的なストリングである。従って、p≦qであり、これはpはqの因数であることを暗示する。
【0303】
上記の結果を組み合わせて、以下の定理12の変形を証明した。
仮に、αを周期p0を持つストリングとする。すると、ストリングβ=Ea(n)(α)は周期的であって周期pnを有しており、これはp0の倍数である。βの周期pnは不等式
各n≧1に対して
ppn−1>pn−1
を満足する。
【0304】
本発明の特定の実施形態が示され説明されたが、その他の変更物、置換物、及び代替物は、通常の技術的スキルを有する当業者には明らかであるということが、理解されるべきである。このような、変更物、置換物、及び代替物は、本発明の精神及び範囲から離れることなく成すことができ、これについては添付の請求項から判断されるべきである。
本発明の多様な特徴が、添付の請求項で説明される。
【図面の簡単な説明】
【0305】
【図1】本発明の実施形態による送信器及び受信器を含む、基本的な通信システムのブロック図である。
【図2】完全非同期式ストリーム暗号を説明するためのブロック図である。
【技術分野】
【0001】
本発明の一般的な領域は、情報の送信である。本発明のより詳細な領域は、データ暗号化/復号化である。本発明の他のより詳細な領域はエラーコーディングである。本発明の更なる他の詳細な領域は擬似ランダム数である。
【背景技術】
【0002】
暗号法は、データ通信のためのデータインテグリティ及び/又はデータセキュリティを提供するために用いてもよい。後者は、有線及び無線チャンネルを含むチャンネルを通して、通信されるデータを保護するために重要であろう。暗号化の一種は、ストリーム暗号を用いる。同じブロック入力に応答して同じブロック出力を生成することを特徴とするブロック暗号と反対に、ストリーム暗号は同一の入力に応答して、別の時には別の出力を提供することができる。ストリーム暗号は、キーの無い関係者には暗号化されたストリングがランダムシーケンスに見えるという目標を持つ、シード又はキーと呼ばれる入力を用いて、入力ストリング(例えば、メッセージ)を暗号化された出力ストリング(例えば、暗号文)に変換する。暗号化のレベルと、ある程度は暗号化に徹するリソースとが、他の関係者に対するセキュリティの(すなわちランダム性)のレベルを決定する。
【0003】
ストリーム暗号は、特定の入力に対する固定の出力が存在しないことから、ブロック暗号を超える改善されたセキュリティを提供する。技術的には、自己同期式(ときどき非同期式と呼ばれる)と同期式暗号とがある。同期式ストリーム暗号では、復号化されたストリームのより後の出力は、変換の間に起こったエラーの影響を受けない(実際の誤りビット上のエラー又はビット(ブロック)グループのエラーを除く)。エラーが復号化されたストリームに影響する場合には、自己同期式ストリーム暗号が用いられている。自己同期式暗号ストリーム手法は、エラー後にストリームを正しく復号化しても、多数のブロックを誤りを持って復号化又は送信させる。
【0004】
ブロック及びストリーム暗号、並びに暗号法又は送信方法は全体として、ある重要な支援手法を利用する。一例として、(擬似)ランダム数生成が暗号に用いられる。擬似ランダム数は、例えば、暗号化及び復号化方法のためのシードすなわち基準数を提供するために、生成される。他の例としては、一般的には通信を改善するために、具体的には雑音のあるチャンネルに対して用いてもよいエラー訂正コードも同様に、暗号法にメリットを提供するであろう。
【発明の開示】
【課題を解決するための手段】
【0005】
本発明の好ましい一実施形態によれば、同期式ストリーム暗号、自己同期式ストリーム暗号、及び完全非同期式ストリーム暗号を含む、多数のストリーム暗号が提供され、これらは、ワーキングキー及び擬群変換を用いており、ここで用いられる擬群は初期秘密鍵に基づいている。エラー訂正及び擬似ランダム数発生改善物についての方法が同様に提供され、両者とも擬群変換を採用している。
【発明を実施するための最良の形態】
【0006】
一般に、本発明の特定の実施形態では、選択可能なキーの長さを有する、同期式ストリーム暗号が提供される。例示的な実施形態では、平文データのストリームと付加的に合成されて暗号化された出力ストリームを生成する、一様に分布したキーストリームの生成のためのステップが提供される。このキーストリーム生成ステップは、秘密初期キーに基づいて1つのワーキング擬群変換を決定することを含み、また、このワーキング擬群を用いてキーストリームを生成することを含む。好ましい同期式ストリーム暗号はまた、アタックに対するコンピュータ的に実行不可能な防壁を提供する。キーの長さは、暗号のセキュリティを改善するために変更してもよく、キーサイズが大きくなるときに暗号化及び復号化のためのアルゴリズムを再設計することはしなくてよい。十分に小さなキーサイズに対しては、動作はハードウエア又はファームウエア実装でパイプライン化することができる。
【0007】
本発明の他の実施形態では、キー長さが可変の自己同期式ストリーム暗号が提供され、同様に、キーサイズが大きくなっても暗号化及び復号化のためのアルゴリズムを再設計する必要はない。自己同期式ストリーム暗号の特定の実施形態では、暗号化及び復号化は、秘密初期キーに基づいてワーキング擬群を決定し、ワーキングキー、ワーキング擬群、及びメッセージの暗号化及び復号化されるべき固定数の文字の関数としてメッセージを暗号化及び復号化することにより実行される。好ましい同期式ストリーム暗号と同様に、好ましい自己同期式ストリーム暗号はアタックすることはコンピュータ的に実行不可能であり、十分に小さなキーを用いることにより、ハードウエア又はファームウエア実装でパイプライン化することができる。
【0008】
本発明の更なる他の実施形態では、新規のタイプの暗号、すなわち完全非同期式ストリーム暗号が提供され、ここで出力ストリームは、ワーキングキー、初期キーに基づいて決定されるワーキング擬群、及び個定数の入力ストリームの前の文字の関数として生成される。このタイプの暗号は、敵対者による多様なアタックに対して安全であることが示されている。同期式暗号、自己同期式暗号、及び非同期式暗号は、本発明の実施形態によって擬群を用いて実装される暗号法の基本要素の例である。ここで用いられるように、用語「擬群」は、擬群又はこの代数学的な均等物を示している。
【0009】
本発明の他の実施形態では、メッセージのブロックをコード語にマッピングすることによって、バイナリシンメトリックチャンネルの中のエラーを訂正する方法を提供し、ここでマッピングは反復的であり、且つ任意のコード語に対して、長さrのCのサブストリングの分布は一様である。好ましい一実施形態によるこのマッピングは、擬群変換を用いて実行される。好ましい一実施形態は、例えば数百ビットのブロックで10−5の範囲の低いビットエラー率を提供し、数千ビットのブロックでこのようなビットエラー率を実現するターボコーディング及びLDPCをしのぐ。
【0010】
本発明の更なる他の実施形態は、擬似ランダム数発生器の出力を改善する改善物を提供する。この発生器の出力上の弱点は、この改善物により対応される。改善物実施形態は、擬似ランダムストリングの周期を、任意の必要な長さに拡大することができる。擬似ランダムストリングは、文字、文字対、3つ文字組み、及び一般にkタプルの分布が均一にされる可能性があるという意味で、一様にされる。この好ましい改善物は、発生器の特性を引き継ぎはせず、発生器が平凡な出力(例えば、文字ストリングのみで構成される)を作り出したとしても、機能することができる。好ましい一実施形態は、擬群ストリング変換で認識されている特性を考慮に入れている。複雑度は線形(O(n))で、ここでnは入力擬似ランダムストリングの長さである)であり、従って、改善物は非常に速い。これは柔軟性があり、全てのn>1に対して、nビット文字の文字体系上で働く。改善物の実施形態は、例えば、1Kb未満のメモリ空間の中に実装できる。好ましい一実施形態の改善物は、低品質の擬似ランダムストリングを受け入れる。このストリングは、選択された次数の擬群を用いて変換され、変換の回数は同様に選択可能である。高品質の擬似ランダムストリングが、この改善物により出力される。
【0011】
図を参照すると、本発明の方法は、通信システム14で用いられる送信器10及び/又は受信器12に実装しても良い。送信器10は、メッセージ16を情報ソース18から受信し、チャンネル20を介しての信号の送信のために、このメッセージを暗号化(又は、もしエラーコーディング又は擬似ランダム数改善が用いられている場合は、このメッセージを改善)しても良い。技術的に理解されるように、チャンネル20は雑音がある可能性がある。受信器12はこの信号(暗号化されたメッセージ、エラーを含むメッセージ、擬似ランダム数等)を受信し、またこの信号メッセージを復号化及び/又は信号内のエラーを訂正して、復号化又は訂正されたメッセージ22を生成しても良い。このメッセージ22は宛て先24に送信される。
【0012】
送信器10及び/又は受信器12は、本発明の1つまたはそれ以上の方法を実装することが予期されている。さらに、コンピュータで読み取り可能な媒体、チップ、伝播された信号、コンピュータ等が、本発明の1つまたはそれ以上の方法を実装するために又は実装させるために用いられてもよい。ここで、本発明の態様による多様な方法を論じよう。
【0013】
本発明の第1のタイプの実施形態では、明細書中、EdonXと呼ばれるフレキシブルな付加的ストリーム暗号(flexible additive stream cipher)に、好ましくはニブル(すなわち4つのビットの組)であるビット組の入力ストリームを変換する証明可能なセキュリティが備わっている。EdonXのキーの長さは可変であり、nニブルの任意のストリングとすることができる。EdonXは擬群ストリング変換(quasigroup string transformation)を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonXは、好ましい実施形態においては、128バイトの中に格納することができる16次の擬群を用い、内部メモリ及び実行コードと共に1kb未満の中に実装することができる。従って、好ましい一実施形態では、EdonXは組み込みシステムにおけるハードウエア実装に適している。
【0014】
一般的に、ストリーム暗号は、時間と共に変化する暗号化変換を用いて、平文メッセージの個別の文字(通常バイナリディジット)を1つずつ暗号化し、一方、ブロック暗号は固定暗号化変換を用いて、平文メッセージの複数の文字グループを同時に暗号化する。暗号として強固で且つ質的に高度なストリーム暗号を設計することについての問題に取り組むために、ニブル(すなわち4つのビット組み)の入力ストリームを変換する証明可能なセキュリティを備えた、フレキシブルな付加的ストリーム暗号、すなわちEdonXが開示される。EdonXのキーの長さは可変であり、nニブルの任意のストリームとすることができるが、セキュリティ上の理由でn≧32を提案する。EdonXは擬群ストリング変換を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonXの設計は、128バイトの中に格納することができる16次の擬群を用い、内部メモリ及び実行コードと共に1kb未満の中に実装することができる。従ってEdonXは、組み込みシステムにおけるハードウエア実装に適している。
【0015】
本発明者らは、A.Menezes、P.van Oorschot、及びS.Vanstone、Handbook of Applied Cryptography:CRC Press,Inc.、1997中で定義されたように、同期ストリーム暗号の定義について簡単に述べよう。
【0016】
定義1:同期ストリーム暗号は、キーストリームが平文メッセージ及び暗号文とは独立に生成される暗号である。
同期ストリーム暗号の暗号化プロセスは、以下の式
σi+1=f(σi,k),zi=g(σi,k),ci=h(zi,mi)
で表され、ここでσ0は初期状態であってキーkから決定され、fは次状態(next−state)関数であり、gはキーストリームziを生成する関数であり、hはキーストリーム及び平文miを合成して暗号文ciを生成する出力関数である。
【0017】
定義2:バイナリ付加的ストリーム暗号は、同期式且つストリーム式暗号であり、こでキーストリーム、平文、及び暗号文ディジットはバイナリディジットであり、また出力関数hはXOR関数
【0018】
【数5】
(以降、この記号をΘで表示する)である。
【0019】
好ましい一実施形態によるEdonXストリーム暗号は、バイナリ付加的ストリーム暗号である。EdonXは、擬群作用及び擬群ストリング変換を用いることにより定義される。ここで、簡単に要約すると、本明細書で用いられる「擬群」という用語は、擬群の代数的な均等物をも示すということを言っておく。
【0020】
定義3:擬群(Q,*)は、
(∀u,v∈Q)(∃!x,y,∈Q)u*x=v&y*u=v
を満たす亜群である。
ここで、本発明者らは有限の擬群のみを用いよう。すなわちQは有限の集合である。有限擬群に密接に関連した組み合わせの構造は、いわゆるラテン方格である。
【0021】
定義4:濃度|Q|=nの有限の集合Q上のラテン方格Lは、Qからの要素を伴うn×n行列であって、マトリックスの各行及び各列がQの置換であるようになっている。
乗算テーブルにより与えられる任意の有限擬群(Q,*)に対し、このテーブルの本体により形成されるマトリックスから成るラテン方格Lが関連付けられ、集合Q上の各ラテン方格Lが擬群(Q,*)を定義する。
【0022】
2つの擬群間のイソトピズム(isotopism)及びオートトピズム(autotopism)の関係は、次のように定義される。
定義5:擬群(K,*)は、もし各x,y∈Kに対しγ(x*y)=α(x)・β(y)となるようなKからQ上への全単射α、β、γが存在する場合には、擬群(Q,・)に対してイソトピックであると言われる。その結果、3つ組(α,β,γ)は、(K,*)から(Q,・)へのイソトピズムと呼ばれる。
【0023】
(K,*)のオートトピズムは、(K,*)の自分自身へのイソトピズムである。本発明者らは、あるオートトピズムによって得られた擬群を、Autotope(K,*)により表す。(K,*)に対してオートトピックな擬群は、|K|3を越えては存在しないということに留意されたい。もし、α=1且つβ=1が恒等置換であり、γが互換の場合、オートトピズム(1,1,γ)の下で(K,*)に対してオートトピックな擬群をγ(K,*)により表す。
【0024】
2つのオートトピズム(α,β,γ)と(α’,β’,γ’)の積は、構成要素の観点から定義され、すなわち、
(α,β,γ)(α’,β’,γ’)=(αα’,ββ’,γγ’)
となる。
以下の特性は、EdonXのセキュリティの提供において用いられるであろう。
【0025】
命題1:擬群(Q,*)の全てオートトピズムの集合γは、オートトピズムの積の作用の下での群である。
この特性は、Denes,J.,Keedwell,A.D.:Latin Squares and their Applications,English Univer.Press Ltd.,1974で更に説明されている。擬群(Q,*)を考えると、いわゆるパラストロフ(parastrophe)又は随伴作用(adjoint operation)と呼ばれる5つの新規の作用が、作用*に由来する。本発明者らは、以下の2つ、つまり\及び/により表され(左及び右パラストロフと呼ぶ)、
【0026】
x*y=z⇔y=x\z⇔x=z/y
で定義されるもののみ必要とするであろう。
次に、代数(Q,*,\,/)は、恒等式
x\(x*y)=y,x*(x\y)=y,(x*y)/y=x,(x/y)*y=x
を満足し、且つ(Q,\)、(Q,/)もまた擬群である。
【0027】
次に、擬群ストリング変換の方法を定義する。文字体系(alphabet)(すなわち、有限集合)Qを考え、Qの要素により形成される全ての非空の単語(nonempty words)(すなわち、限定ストリング)の集合をQ+と表す。Q+の要素は、(a1,a2,...,an)よりもむしろa1,a2,...,anで表され、ここでai∈Qである。仮に*を集合Q上への擬群作用としよう。すなわち、擬群(Q,*)を考える。各a∈Qに対し、2つの関数ea,*,da,*:Q+→Q+を次のように定義する。
【0028】
仮に、ai∈Q、α=a1a2...anとする。
次に、以下の表に示すように、
ea,*(α)=b1b2...bn⇔b1=a*a1,b2=b1*a2,...bn=bn−1*an
【0029】
【表1】
となるようにする。すなわち、各i+0,1,...,n−1に対してbi+1=bi*ai+1であり、ここでb0=aである。また、以下の表に示すように、
da,*(α)=c1c2...cn⇔c1=a*a1,c2=a1*a2,...,cn=an−1*an
【0030】
【表2】
とする。すなわち、各i=0,1,...,n−1に対してci+1=ai*ai+1であり、ここでa0=aである。
【0031】
関数ea,*、da,*は、リーダ(leader)aを伴う、作用*に基づくQ+のe変換及びd変換と呼ばれる。
例えば、Q={0,1,2,3}を取り、擬群(Q,*)及びこのパラストロフ(Q,\)が以下の表の乗算スキームにより与えられるとしよう。
【0032】
【表3】
ストリングM=00102300120010020003を考察し、且つリーダ0を選択する。次に、変換e0,*により、本発明者らは変換されたストリングC=e0,*(M)=21023130113013002131を得、またd0,\変換により、ストリングD=d0,\(M)=22110202133211203223を得るであろう。
【0033】
もし、ストリングC上に変換d0,\を適用するか又はストリングD上に変換e0,*を適用すれば、元のストリングMを得るだろう。実際、Markovski,S.,Gligroski,D.,Bakeva,V.:Quasigroup String Precessing:Part 1,Maced.Acad.of Sci.and Arts,Sc.Math.Thech.Scien.XX 1−2,(1999)13 28で議論されたように、以下の特性は真実である。
【0034】
命題2:各ストリングM∈Q+及びリーダl∈Qに対し、dl,\(el,*(M))=M=el,*(dl,\(M))が成り立つ。すなわち、el,*及びdl,\は互いにQ+の逆置換である。
好ましくは、EdonXはニブルすなわち4ビットの変数上で動作し、その結果、データのストリームに擬群ストリング変換を行うために、16次の擬群(Q,*)を用いる。従って、対応するラテン方格の値は、4ビットで表される。ワーキングキーKの値に対しても同様であり、これはn個の内部変数Kiの中に格納され、すなわちK=K0K1...Kn−1であり、変数Kiは{0.1,...,15}の範囲の値を有する。Kのi番目の値はまた、K[i](=Ki)により表される。
【0035】
EdonXは、初期化フェーズにおけるワーキングキーKの初期秘密値Kin=Kin[0]Kin[1]...Kin[n−1]を用いる。この16次の初期擬群(Q,・)は、秘密又は公開とすることができる。Kinの中に格納された秘密情報によって、EdonXは初期擬群(Q,・)上、及び同様にKinの値にも変換をかける。EdonXはまた、好ましい一実施形態では、2つの一時的な変数T及びX、並びに付加的な整数変数Counterを用いる。EdonXの復号化機能は、暗号化機能と同じである。
【0036】
EdonX暗号化(復号化)機能は、次の手順により定義される。作用*は、特定の初期擬群の作用・からのオートトピズムにより得られる擬群である。作用Θはニブル(すなわち4ビット文字)上のビット単位のXOR演算である。数m=maxn,64はワーキングキーの長さを表し、これは初期キーの長さnに依存するが、本発明者らはセキュリティ上の理由でm≧64をとる。初期化フェーズは別の手順により、追って説明される。
【0037】
【表4】
【0038】
このアルゴリズムの非常に重要なフェーズは、初期化フェーズである。これは、例えば秘密に共有される初期キーKinの、パディング、拡張、変換のような、暗号化アルゴリズムにおける既知の手法を組み込んでいる。拡張及び変換されたキーKinからの情報は、次に、ワーキングキーKのmニブルの初期値の設定に加えて、初期的に与えられた擬群の変換に用いられる。初期キーの長さn(ニブルでの)は、任意の正の整数とすることができ、高度のセキュリティのためにはより大きいn(常にそうであるように、セキュリティに対する代償は、システムの速度である)であるが、本発明者らは32≦n≦255を提案する。このキーの選択の柔軟性は、EdonXの重要な特徴である。
初期化フェーズは以下のアルゴリズムにより記述される。
【0039】
【表5】
【0040】
本発明者らは、初期化フェーズに用いられるいくつかの演算及びシンボルを明確にする必要がある。まず、Kinは初期キーを意味し、Kexは拡張されたキーを意味し、記号‖は4ビット文字の連結(concatenation)を意味する。次に、通知(notification)Kin[j]はKinのj番目のニブルを意味する。関数RotateLeft(Kex)は、i=0,1,2、...,510に対しKex[i]←Kex[i+1]、且つKex[511]←Kex[0]とするように、Kexの値を循環的に回転させる。関数SwapRows及びSwapColumnsの名前は、自分自身を物語っており、これらは擬群の行及び列を交換する関数である。
【0041】
初期化フェーズの最後に、敵対者に未知の、2つのワーキング構造が得られる。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、約(16!)3≒2132のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密鍵Kinを置き換える長さ4mビット(mニブル)のワーキングキーKである。(しかしながら、16次の擬群のオートトープクラスの正確な数は知られておらず、最もよく知られている公に利用可能な結果は、11次の擬群に対するものである。)
【0042】
さて、簡単化された(2ビット)EdonXを用いた、初期化、暗号化、及び復号化操作についての実施例を紹介する。この実施例は、EdonXの原則上で機能するが、説明を簡単にするために、16次の擬群を使う代わりに4次の擬群を用いる。従って、ニブルの代わりに、2ビットの文字(すなわち、0、1、2、及び3)を扱う。さらに、長さ512の長さの拡張キーを用いる代わりに、16の長さに短縮し、またm=nとする。その上、EdonXの初期化フェーズであるフェーズ5を、以下の単純な形式に変更する。
【0043】
【表6】
仮に、初期擬群(Q,*)を前の例と同じとしよう。
【0044】
【表7】
初期値をKin=131(ニブルで)に設定する。Kinの長さは3なので、また2つの2ビット文字で数3を表現すると、0011=00‖11)であるから、KinにパディングするとKin=13103を得る。次に、Kinを何回か連結することにより、長さ16のKex、すなわちKex=1310313103131031を得る。次に、この拡張キーをel,・変換する(ここで、リーダlはパディングされたKinの値になるように巡回的に取られる値)と、Kexの最終値が得られる。以下の表で、これらの変換を要約する。
【0045】
【表8】
【0046】
最後の値Kex=3203330012212323で、初期擬群(Q,・)のオートトープを得るために、インタラティブリ(interatively)に、この初期擬群の行の交換、列の交換、及び要素の置き換えが開始される。そこで、以下の表に示すように、まず行3と2を交換し、次に列0と3を交換し、その後、要素2と3を置き換えする等を行う。
【0047】
【表9】
最後に得られる擬群は、暗号化及び復号化に用いられるワーキング擬群(Q,*)である。
【0048】
【表10】
ワーキングキーKは、Kexの最後のn=3文字を取り、K=323となる。
さて、平文メッセージM=30102300をエンコードしよう。EdonXの好ましい一実施形態を用いて実行される計算を次の表に示す。
【0049】
【表11】
EdonXは、バイナリの付加的なストリーム暗号なので、復号化フェーズに対する計算は同じであり、違いは最後の2つの行にのみ存在するであろう(この場合は入力がCであれば、出力M=XΘC)。
【0050】
始めは、Counter=0、p=[3/2]=1、及び初期ワーキングキーKは値K=323=3‖2‖3を有しており、Xの値はX=K[Counter mod3]=K0=3、Tの値はT=K[(Counter+p)mod3]=K1=2である。次に、アルゴリズムに従って、X及びTの中間値及びキーKの新たな値を、以下のように得る。すなわちi=0に対し、X←X0=K0*X=3*3=3、T←T0=T・X=2・3=1、K0←X=3を得、i=1に対して、X←X1=K1*X=2*3=0、T←T1=T・X=0・0=2、K1←X=0を得、またi=2に対して、X←X2=K2*X=3*0=0、T←T・X=1・0=1、K2←X=0を得る。この後、K2の値をK2←T=1に変更する。このようにして、Counter=1に対する新たなワーキングキーはK=K0K1K2=X0X1T2=301であるということを得て、出力値C0=XΘM0=0Θ3=3を得る。Counter=0、Counter=1、...、Counter=7の全てに対する計算は、上記の表で与えられる。このようにして、入力平文ストリングM=30102300は、暗号文ストリングC=30020312に暗号化された。
【0051】
次に、同期ストリーム暗号EdonXの好ましい実施形態のセキュリティ上の利点について議論及び実証する。セキュリティを考慮して、初期秘密鍵Kinの長さnは少なくとも32と仮定する。また、敵対者が平文/暗号文アタックを選択する可能性、すなわち、或る平文を選択し且つ対応する暗号文を得ることができる可能性を有しており、初期擬群(Q,・)及び初期キーの長さnが公開されていると仮定する。更に、秘密鍵Kinの初期値と、暗号化の内部状態(すなわち、ワーキングキーK、ワーキング擬群(Q,*)、並びにX及びTの値)は、敵対者には知られておらず、これらに物理的にアクセスできないと仮定する。もしこの敵対者がワーキングキーK並びにX及びTの値の一部を成功裏に再構築することができる場合に、EdonXが敵対者に破られたと考えられる。
【0052】
初期キーKinについての知識が無ければ、ワーキング擬群(Q,*)及びワーキングキーKの初期値を知る、コンピュータ的に実現可能な方法はないということが示され得る。敵対者はワーキングキーK並びにX及びTの値の一部の情報を効率的に得ることができないということの証明を、以下のステップで示す。以下の分析で、擬群ストリング変換の以下の特性を用いる。
【0053】
定理3:仮に(Q,*)が擬群、αはQ+の任意のストリング、及びel,*はリーダlを伴う変換としよう。もし、el,*をα上にk回適用すると、得られるストリングβ=(el,*)k(α)は、文字、文字の対、...、k組の文字の一様な分布を有する。
【0054】
EdonXの初期化フェーズを分析するために、キーKinの初期値は、本発明者らの前提では、少なくとも128ビットの長さを持つことができる。初期キーがどれだけ長かったかについての情報によるKinのパディングは、例えばハッシュ関数などの他の原始的な暗号における標準的な手順である。この役割は、2つの異なる初期キーで同じ結果を得る可能性を排除することである。例えば、もしパディングが無ければ、初期キー
【0055】
【数6】
は同じワーキングキーKを生成するであろう。他方では、パディングは開始拡張キーKexは、違う初期キーKinに対しては異なるであろうということを確実にする。拡張キーKexは、512ニブルの長さを有する。これは、公に知られた16次の擬群(Q,・)によって512回変換される。定理3により、次の系(Corollary)が得られる。
【0056】
系1:Kexの中の文字、文字の対、文字の3つ組み、...の分布は一様である。
キーKexの分布の一様性は、ワーキングキーKの分布の均一性を暗示する。Kの長さは少なくとも64ニブルすなわち256ビットであるため、敵対者はワーキングキーを2−256以下の確率でしか推測できない。
系1の結果として、以下の特性も得られる。
定理(Theorem)1:ワーキング擬群(Q,*)は、初期擬群(Q,・)のランダムに得られたオートトープである。
【0057】
証明(Proof):EdonXの初期化のフェーズ5の中の繰り返し過程で、行(row1row2)及び列(column1column2)を交換し、また互換γを適用する。これは、各繰り返しステップでオートトピズム(α,β,γ)を適用するということを意味し、ここで、α=(row1row2)、β=(column1column2)は置換(permutation)、すなわち反復された擬群上の置き換えである。従って、フェーズ5の各繰り返しステップの後で、入力したもののオートトープである擬群が得られる。命題1より、ワーキング擬群(すなわちフェーズ5の最終出力)は、初期擬群のオートトピズム(α’,β’,γ’)の下でのオートトープである擬群である。置換α’、β’、γ’は実際、フェーズ5で得られた、α=(row1row2)、β=(column1column2)、及びγそれぞれの全64回の置き換えの帰結である。16個の元の集合上への置換のそれぞれは、たった15回の置き換えの帰結として提供することができ、置き換えα、β、γはランダムキーKexから得られるので、α’、β’、γ’は可能性のある16!の置換の任意のものであるということが得られる。結果として、ワーキング擬群は、初期公開擬群の任意のオートトープであり得るということが得られる。
16次の擬群上には約16!≒2132のオートトピズムが存在するので、ワーキング擬群はおよそ2−132の確率でのみ推測できるということが分かった。
【0058】
EdonXの暗号化/復号化フェーズを分析するために、前のセクションより、ワーキング擬群(Q,*)及び開始ワーキングキーK=K0K1...Kn−1=K−1,0K−1,1...K−1,n−1は敵対者には知られていないということを得ている。なぜKjをK−1,jにより表すかについては以下により明らかである。
【0059】
敵対者が、平文/暗号文ストリングの1つの対(M,C)=((M0M1...),(C0C1...))を選択したとしよう。更に本発明者らは、以下の表記法を用いる。Counter=iの場合、Kj(j=0,1,...,n−1)という表記法の代わりに、Ki,jという表記法を用いよう。同じ表記法が変数X及びTに対して用いられ、すなわちXi,j(Ti,j)は、j回目の繰り返しにおけるCounter=iのときの変数X(T)を意味する。
【0060】
従って、Counter=i(i∈{0,1,2,...})に対するEdonXの暗号化/復号化アルゴリズムにより、敵対者は以下の方程式の系を得ることができる(p=[m/2]は定数であることに留意のこと)。
Xi,0=Ki−1,0*Ki−1,i mod m
Ti,0=Ki−1,i+P mod m・Xi,0
Xi,1=Ki−1,1*Xi,0
Ti,1=Ti,0・Xi,1
...
Xi,64=Ki−1,64*Xi,63 (4)
Ti,64=Ti,63・Xi,64
...
Xi,m−1=Ki−1,m−1*Xi,m−2
Ti,m−1=Ti,m−2・Xi,m−1
Xi,m−1ΘM0=C0
【0061】
上の最後の方程式から、M0、C0が既知であることから、敵対者はXi,n−1=C0ΘM0を得ることができる。上の組の残りは、2m個の未知の変数Ki−1,0、...、Ki−1,m−1、...Xi,0、...、Xi,m−2、Ti,m−1を伴う、以下のm+1(ここでm≧64)個の擬群方程式の系と同じである。
Xi,0=Ki−1,0*Ki−1,i mod m
Xi,1=Ki−1,1*Xi,0
...
Xi,m−2=Ki−1,m−2*Xi,m−3 (5)
M0ΘC0=Ki−1,m−1*Xi,m−2
Ti,m=((...(Ki−1,i+p mod m)・Xi,0)・...)・Xi,m−2)・(M0ΘC0)
(すなわち、
Ti,1=Ti,0・Xi,1=(Ki−1,i+p mod m・Xi,0)・Xi,1Ti,2=
Ti,1・Xi,2=((Ki−1,i+p mod m・Xi,0)・Xi,1)・Xi,2,...)
である。
【0062】
その上、敵対者はワーキング擬群(Q,*)を知らず、従って、集合{0,1,2,...,15}上への、擬群作用*を定義する必要があり、その後で系を解く必要がある。実際、すぐ前の系は、2mの未知数を伴うm+1の方程式から成る、1つの未知の擬群作用*を有する関数方程式の系である。本発明者らは、次の定理を得、その証明として上記の恒等式を用いる。
【0063】
定理2:Q={0,1,2,...,15}である任意の16次の擬群(Q,*)は、1つの未知の擬群作用*と、Q上の未知の変数x0、x1、...、xm−2、y0、y1、...ym−1、zを伴う以下の関数方程式の系、
【0064】
【数7】
の解であり、ここで、・はQ上への特定の擬群作用であり、またi(0≦i≦m−1),p=[m/2],及びa∈Qが与えられる。
証明:仮に、*をQ上への任意の擬群作用としよう。2つのケースを考察する。
【0065】
ケース1:0≦i≦m−2(すなわち、0≦i mod m≦m−2)
未知数y0,yi∈Qに対して任意の値を選ぶ。次に、x0=y0*yiになるような、固有の値x0∈Qを得る。未知のy1∈Qに対して任意の値を選び、次にx1=y1*x0になるような固有の値x1∈Qを得る。このようにして続け、未知数yi−1∈Qに対して任意の数を選び、次にxi−1=yi−1*xi−2になるような固有の値xi−1∈Qを得る。次に、値xi=yi*xi−1∈Qを計算し、この後、未知のyi+1∈Qに対して任意の値を選び、値xi+1=yi+1*xi∈Qを計算する等を行う。このようにして、未知数y0、y1、...ym−2に対して任意の値を選ぶことができ、これらから未知数(固有の)x0、x1..、xm−2を計算する。最後に、方程式a=ym−1*xm−2から、ym−1=a/xm−2∈Qを得、次に、z=(yi+p mod m・x0)・x1)・...)・xm−2)・a∈Qを計算することができる。
【0066】
ケース2:i=m−1(すなわち、i mod m=m−1)
この場合、ケース1の手順を逆に繰り返す。任意の値ym−1∈Qを選び、次に、式a=ym−1*xm−2から値xm−2=ym−1\a∈Qを計算する。この後、ym−2,ym−3,...y2,y1∈Qに対して任意の値を選択し、各選択の後、値xj=yj+1\xj+1∈Q、j=m−3,m−2,...,0を計算する。最後に、方程式x0=y0*ym−1から、値y0=x0/ym−1を計算し、次に、z=(yi+p mod m・x0)・x1)・...)・xm−2)・a∈Qを計算することができる。
【0067】
定理2の結果として、(5)の変数Ki−1,jおよびXi,jについての適切な値を見つけるために、敵対者は、上に示した関数方程式の系の、16n≧2128の可能な初期キーの1つを選ばなければならず、また16m−2又は(16m−1)≧1662=2248の可能な解の1つyjを選択しなければならない。全てを合わせると、少なくとも2376通りの選択の可能性が存在する。
【0068】
次に本発明者らは、敵対者は、もし平文/暗号文ストリングのいくつかの連続したニブルからの情報を用いた場合、実行可能な時間内にはシステムを破ることができないということを示そう。すなわち、以下の定理を証明しよう。
定理3:0.5を超える確立でEdonXシステムを破るために、アタッカーは少なくとも2190回の試行をなければならない。
【0069】
一般性を失うことなく、定理3の証明の考え方は、Counter=0&Counter=1&Counter=2のケースから、すなわち長さ3の平文/暗号文ストリームM0M1M2/C0C1C2が既知のときに、理解することができる。この場合、以下の方程式においてEdonXの暗号化/復号化アルゴリズムに従って、得ることができる(ここで、(5)の中のような単純化が同様に成される)。
【0070】
X0,0=K−1,0*K−1,0
K0,0=X0,0
X0,1=K−1,1*X0,0
K0,1=X0,1
...
X0,m−2=K−1,m−2*X0,m−3 (7)
K0,m−2=X0,m−2
M0ΘC0=K−1,m−1*X0,m−2
T0,m−1=((...(K−1,p mod m・X0,0)・...)・X0,m−2)・(M0ΘC0)
K0,m−1=T0,m−1
X1,0=K0,0*K0,1
K1,0=X1,0
X1,1=K0,1*X1,0
K1,1=X1,1
...
X1,m−2=K0,m−2*X1,m−3 (8)
K1,m−2=X1,m−2
M1ΘC1=K0,m−1*X1,m−2
T1,m−1=((...(K0,1+p mod m・X1,0)・...)・X1,m−2)・(M1ΘC1)
K1,m−1=T1,m−1
X2,0=K1,0*K1,2
K2,0=X2,0
X2,1=K1,1*X2,0
K2,1=X2,1
...
X2,m−2=K1,m−2*X2,m−3 (9)
K2,m−2=X1,m−2
M2ΘC2=K1,m−1*X2,m−2
T2,m−1=((...(K1,2+p mod m・X2,0)・...)・X2,m−2)・(M2ΘC2)
K2,m−1=T2,m−1
【0071】
(7)はCounter=0に対応し、(8)はCounter=1に対応し、(9)はCounter=2に対応するということに留意されたい。また、X0,m−1=M0ΘC0,X1,m−1=M1ΘC1,X2,m−1=M2ΘC2が得られる。明確にするために、(7),(8),(9)の中の未知数の置き換えを用い、K−1,i=yi、K0,i=zi,K1,i=ui,K2,i=vi、X0,i=xi,X1,i=x’i,X2,i=x”i、T0,i=ti、T1,i=t’i,T2,i=t”iとする。その結果、(7)、(8)、(9)から成る方程式の系は、次のように書き直される。
【0072】
x0=y0*y0
z0=x0
x1=y1*x0
z1=x1
...
xm−2=ym−2*xm−3
zm−2=xm−2
M0ΘC0=ym−1*xm−2
tm−1=((...(yp・x0)・...)・xm−2)・(M0ΘC0)
zm−1=tm−1
x’0=z0*z1
u0=x’0
x’1=z1*x’0
u1=x’1
... (10)
x’m−2=zm−2*x’m−3
um−2=x’m−2
M1ΘC1=zm−1*x’m−2
t’m−1=((...(y1+p・x’0)・...)・x’m−2)・M1ΘC1)
um−1=t’m−1
x”0=u0*u2
v0=x”0
x”1=u1*x”0
v1=x”1
...
x”m−2=um−2*x”m−3
vm−2=x”m−2
M2ΘC2=um−1*x”m−2
t”m−1=((...(y2+p・x”0)・...)・x”m−2)・(M2ΘC2)
vm−1=t”m−1
【0073】
未知数x0、...、xm−2、x’0、...、x’m−2、x”0、...、x”m−2、tm−1、t’m−1、t”m−1を、z0、...、zm−2、u0、...、um−2、v0、...、vm−2、zm−1、um−1、vm−1にそれぞれ置き換えた後に、以下の表の左側に与えられるような新たな方程式の系を得、これは上記の系(10)に等しい。
【0074】
【表12】
【0075】
定理3の証明:この証明の間、上記の表を用いる。方程式(10)の系の中には、未知の擬群作用*、4mの未知の変数、及び3mの方程式がある。従って、敵対者は、いくつかのこれらの未知の変数に任意の値を割り当てしなければならず、その後、この系を解こうとするであろう。敵対者は予めQ={0,1,...,15}上への擬群作用*をいくつか選ばなければならない。仮に、敵対者が未知数Y0、Y1、..、Ym−2に値を割り当てしたとしよう(そして、これは「選択(Choose)」欄の中に記されている)。変数Y0、Y1、..、Ym−2に対してこれらの特定の値を用いることにより、敵対者は(10)の全ての他の変数に対して、値を計算することができる。「計算(Compute)」欄に、変数Z0、...、zm−2、ym−1、u0、...の計算の順序が提示されている(上から下に示されている)。このように、敵対者は先ずZ0=Y0*Y0(Y0は割り当てられた値)を計算し、次にz1=y1*z0(y1は割り当て値であり、z0は計算値)等を、um−2の値が計算されるまで同様に行う。さて、zm−1及びum−2は、既に割り当てられた値であるから、敵対者は方程式M1ΘC1=zm−1*um−2が満足されるかどうかを調べなければならず、この状況は上の表の中のチェックポイント(Check Point)により表されている。チェックポイントは、以下のような方法により、系へのアタックをより容易にする。敵対者は、擬群を選択し、y0、...、ym−2に対して値を割り当てる。次に、敵対者は、各チェックポイントにおいて、これらがうまく選択されたかどうかをチェックする。答えがNOの場合、彼らはアタックのための新たなデータを選択する(新たな擬群作用*及び/又はY0、...、Ym−2への新たな値)。答えYESは、偶然起こる可能性があることから、データがうまく選択されたことを意味しない。敵対者は、いくつかの連続的な答えYESを集めて、系が破られたということを確実にしなければならない。
【0076】
敵対者は、他の戦略を選択しても良い。すなわち、変数Y0、...、Ym−2に対して値を割り当てる代わりに、他のいくつかの変数に値を割り当てすることができる。とは言っても、m−1の変数に値を割り当てしなければならないだろうし、また同じ数のチェックポイント(カウンタの数のより1少ない数)を得るであろう。
【0077】
全ての可能な試行の数は、可能な擬群作用(約2132)とY0、...、Ym−2に対する値の割り当て数の積であり、これは16m−22≧1662=2248である。従って、0.5を超える確率でEdonX系を破るには、アタッカーは少なくとも0.5・2380=2190試行を行う必要がある。
【0078】
上述のように、EdonXは、柔軟性及び多くの自身のコンポーネントの数学的な確率を特徴とする付加的な同期ストリーム暗号である。これから、これらの事実の重要性について指摘しよう。
【0079】
EdonXの柔軟性については、EdonXの初期秘密鍵の長さnは、任意の正の整数であり得、32≧n≧256を提案するということを述べ、実際、アルゴリズムをこれらの制約の下で提示した。しかし、アルゴリズムをより詳細に見てみると、上記の制約は表面上のことであり、512ニブルを用いる代わりに1024、2048、128、又は任意の他のニブル数を用いることにより、同様の方法でアルゴリズムを設計することができるだろうということが分かる。この事実の重要性は、EdonXは、平均的なものから極端なものまでの、異なるセキュリティ基準を満足させることができ、従って、非常に懐疑的なユーザは1K(又は1M)ニブルの、すなわち4K(又は4M)ビットの秘密鍵を用いることができるということである。より高いセキュリティのためには、より長い秘密鍵を選択すべきであるが、計算の回数は鍵の長さに直線的に依存する。従って、可能性のあるアタッカー及び彼らの計算能力を予測することにより、EdonXのソフトウエア及び/又はハードウエアを、得られる必要なセキュリティに応じたやり方で設計することができる。
【0080】
秘密鍵の長さの柔軟性は、EdonXが、設計している閾値セキュリティ(threshold security)で用いられることを可能とする。仮に、キーが人物A、B、Cの3人で共有され、人物単独では完全なキーを持っておらず、彼らの任意の2人のみが完全なキーを持っている、自明な事例を考えてみよう。次に、192ニブルの秘密初期キーK=K0‖...‖k191を取り、以下のように分配する。つまり、人物Aが部分K=K0‖...‖k127、人物Bが部分K=K64‖...‖k191、及び人物Cが部分K=K0‖...‖k63とK=K127‖...‖k191とを得るように分配する。それぞれの人物は、秘密鍵の64ニブルについては知らず、秘密鍵を完成させるには1664=2256の可能なバリエーションが存在する。(s,p)閾値システムに対する適切な安全設計を同様に定義することができる。
【0081】
EdonXのセキュリティの分析で、本発明者らはセキュリティに対する起こりうる最悪のケースを想定したが、これは、初期キーのみが秘密であり、敵対者が選択された平文/暗号文へのアタックを実現できるというものである。このシステムのセキュリティは、もし初期擬群及び同様に初期キーの長さも秘密だと仮定するならば、非常に強くなる。従って、約(16!)3≒2132個のオートトピズムどころか、もしも初期擬群が秘密である場合、敵対者は16次の擬群作用の全てを考慮しなければならず、そして、これらの数は未知であるが10120≒2400よりも大きいのである。
【0082】
初期キーの長さnを秘密とすることもできる。この場合、アタッカーは、いくつかの長さn=k、n=k+1、n=k+2、...を調べなければならないが、ここでkは大きくはない(例えば、k=5を選択することができ、且つ、適切なセキュリティを同様に一部のアプリケーションで得ことができる)。もし、アタッカーがEdonXのハードウエア又はソフトウエアの実装を有しており、従って、長さnを計算する可能性を有している場合、エンプティサイクル(empty cycle)をEdonXの計算の間に付加することができる。この追加セキュリティに対する代償は、エンプティサイクルに対して費やす時間によって償わなければならない。
【0083】
好ましい一実施形態によるEdonXの設計の特徴は、これが4ビットレジスタ上で動作し、また、たった256バイトの中に格納できる、16次の擬群である2つの固定ルックアップテーブルを用いることである。内部メモリ及びアルゴリズムの実行コードとともに、EdonXは1Kb未満の中に実装することができる。従って、EdonXは、極端に小さなメモリ量、すなわち1KB未満のメモリを伴うチップカードの中の組み込みシステムのように、ハードウエア実装に適切である。
【0084】
暗号の特性の中の主な区分けの1つは、ストリーム暗号及びブロック暗号の区分けである。ブロック暗号は、固定された1式の変換を用いることから、平文の同じ入力ブロックに対して、常に同じクロック暗号文を提供する。他方、ストリーム暗号は、繰り返し(iteration)の度に変化する変換を用いることから、平文の同じシーケンスに対して、異なる出力を提供する。
【0085】
本発明の別の態様では、EdonYは、擬群ストリング変換の特性に基づく自己同期式ストリーム暗号であり、この特性とは、その動作の多くが如何に数学的に証明可能かというものである。EdonYは、好ましい実施形態では、暗号的に強固で且つ質的に高いストリーム暗号が提供される。EdonYの重要な利点は、設計の柔軟性であり、理由は、これがn=2、3、4、...に対する任意のnビット文字の文字体系上で作動することができるからである。この5ビット文字の文字体系バージョンは、これらが2Kbメモリ空間未満の中に実装可能であることから、組み込みシステム用に用いるのに適している。
【0086】
EdonYは、それぞれのr≧5に対して、rタプル(tuple:組)のビットの入力ストリームを変換する証明可能なセキュリティを備えた、柔軟性のある自己同期式ストリーム暗号である。EdonYのキーの長さは可変であり、nrタプルの任意のストリングとすることができ、セキュリティ上の理由でn≧32と提案する。EdonYは擬群ストリング変換(quasigroup string transformation)を用いることにより定義され、このセキュリティは擬群の数学的な特性と擬群ストリング変換に基づいている。EdonYの設計は、2r次の擬群を用い、r=5のEdonYは組み込みシステムにおけるハードウエア実装に適している。
【0087】
EdonYは、上で定義されたように、擬群作用と擬群ストリング変換を用いることにより定義される。擬群定義に対する均等物は、簡約律、及びそれぞれのa,b∈Qに対して、方程式a*x=b、y*a=bの解x、yが存在するということの結合である。
【0088】
EdonXと同様に、上記の命題1は、EdonYのセキュリティの提供において用いられるであろう。
例として、Q={0,1,2,3}を取り、擬群(Q,*)及びこのパラストロフ(Q,\)が以下の表の乗算スキームにより与えられるとしよう。
【0089】
【表13】
ストリングα=1021000000000112102201010300を考え、リーダ0を選択する。次に、e0,*及びd0,*変換により、以下の変換されたストリングe0,*(α)及びd0,*(α)を得るであろう。
【0090】
e0,*(α)=1322130213021011211133013130
d0,*(α)=1302322222222101230311313302
以下の表でe変換の4つの連続的な適用を示す。
【0091】
【表14】
ここで、以下の表に示すように、最後に得られたストリングβ=e0,*4(α)上にd0,\変換を4回適用する。
【0092】
【表15】
α内の0、1、2、3の初期分布16/28、7/28、4/28、1/28が、e0,*4(α)内では7/28、7/28、10/28、4/28へと変わり、従って、分布はより均等になったことに気づくことができる。また、α=d0,\4(β)=d0,\4(e0,*4(α))を得る。上記の命題2は依然として当てはまる。
【0093】
いくつかの擬群作用を集合Q上で定義することができ、*1、*2、...、*kをこのような作用のシーケンスとしよう(必ずしも独特なものではない)。また、リーダl1,l2,...,lk∈Qを選択し(これも必ずしも独特なものではない)、次にマッピングの構成
【0094】
【数8】
は、Q+のE変換及びD変換とそれぞれ言われる。命題2に従って、E及びDは置換であり、
【0095】
【数9】
の逆元は変換
【0096】
【数10】
であり、ここで\iは作用*iの対応するパラストロフである。
【0097】
【数11】
【0098】
は恒等関数なので、Eは暗号化関数として、またDは復号化関数として用いることができ、本発明者らはEdonYの好ましい設計でまさにこれらの関数を用いる。
EdonYが自己同期化されるということの証明は、以下の定理の直接の帰結であろう。
定理4:仮に、
【0099】
【数12】
及び
【0100】
【数13】
としよう。一部の固定のiに対してE(b1b2...bk)=c1c2...ck及びd≠ciと仮定する。その結果、
一部のd1,...,dn+1∈Aに対して
D(c1...ci−1dci+1...ck)=b1...bi−1d1...dn+1bi+n+1...bkとなる。
証明:簡単にするために、n=2、すなわち
【0101】
【数14】
及び
【0102】
【数15】
を取る。等式E(b1b2...bk)=c1c2...ckは、あるx1,...,xn∈Aに対して
【0103】
【数16】
、且つ
【0104】
【数17】
を得ることを意味する。次に、e変換の定義によって、
l2*2b1=x1,x1*2b2=x2,x2*2b3=x3,...,xk−1*2bk=xk (4)
l1*1x1=c1,c1*1x2=c2,c2*1x3=c3,...,ck−1*1xk=ck (5)
を得る。
仮に、あるzj∈Aに対して、D(c1...ci−1dci+1...ck)=z1...zkとしよう。その結果、
【0105】
【数18】
、及び
【0106】
【数19】
となるような、y1,...,yn∈Aが存在する。d変換の定義及び(5)より、
【0107】
【数20】
を得る。
さて、
【0108】
【数21】
(4)及び(6)は、
【0109】
【数22】
を暗示している。
従って、ストリングE(b1b2...bk)内の1つのエラーは、ストリングD(E(b1b2...bk))ではn+1=2+1=3個のエラーに増殖する。関数Eの以下の特性は、EdonYのセキュリティを議論するときに用いられるであろう。
命題3:仮に(Q,*)を擬群、αをQ+の任意のストリング、及び
【0110】
【数23】
としよう。その結果、ストリングβ=E(α)は、文字、文字の対、...、kタプルの文字の一様な分布を有する。
【0111】
EdonYの典型的な構成では、32次の擬群(5ビット文字上で定義された)を用いる。しかしながら、64次、128次、...の擬群も同様に用いることができ、この場合、構成のわずかな変更のみがなされる必要がある。実際、適切な大きな次数の擬群をどれでも用いることができ、セキュリティは擬群の次数に比例的に決まる。更に、Q={0,1,2,...31}を取り、Q上への擬群作用・を用いて構成が成される。(Q,・)は、パブリック擬群とする。EdonYの秘密鍵Kは、n個の内部変数Kiの中に格納され、すなわち、K=K0K1...Kn−1であり、変数Kiは{0,1,...31}の範囲の値を有している。Kのi番目の値は同様に、K[i](=Ki)により表される。キーKの長さをn≧32に取る。すなわちキーKは少なくとも160ビットを有している。常にそうであるように、より大きなキーの長さは、より高いセキュリティを意味し、その代償はシステムの性能がより遅くなることで支払われ、これは擬群の次数に対しても同様である。この設計の柔軟性は、EdonYの最良の特性の1つであるということを強調しておく。
【0112】
EdonYアルゴリズムの主なステップは、以下のとおりである。擬群(Q,・)及びキーKの初期秘密値を用い、(Q,・)の未知のオートトープ(Q,*)を生成する。入力メッセージ、すなわち平文M=M0M1M2...を、以下のように文字毎に暗号化する。ここでMiは5ビット文字である。先ず、Kの値によりMを乗算し、補助的な平文B=B0B1B2...を得る。ここで、
【0113】
【数24】
である。
次に、Bに対してE変換
【0114】
【数25】
を適用し、得られたストリングC=E(B)=C0C1C2...がMの暗号文である。暗号文Cを得る事により、補助的な平文Bは、D変換
【0115】
【数26】
をC上に適用することにより再生される。すなわち、B=D(C)である。最後に、元の平文メッセージM=M0M1M2...が、補助的な平文B=B0B1B2...から、
【0116】
【数27】
として、文字毎に得られる。
EdonY暗号化アルゴリズム及び復号化アルゴリズムは、以下の表に示すように、次の手順により正確に定義され、ここでM=M0M1M2M3...(C=C0C1C2C3...)は、暗号化アルゴリズムの入力(出力)ストリングであり、C=C0C1C2C3...=(M=M0M1M2M3...)は復号化アルゴリズムの入力(出力)ストリングである。復号化アルゴリズムの中の変数X及びYは、補助的な5ビット変数である。
【0117】
【表16】
【0118】
【表17】
【0119】
EdonXと同様に、初期化フェーズは、ワーキングキーKと同様に、秘密初期キー及び公開擬群(Q,・)から生成される秘密ワーキング擬群(Q,*)を用いる。さて、数nを2つの5ビット文字ストリングb9b8b7b6b5‖b4b3b2b1b0=n1‖n2で表したいことから、キー(5ビット文字での)の長さnが、32≦n≦510に抑えられると仮定する。ここで、b9b8b7b6b5b4b3b2b1b0はnのバイナリ表現である。ここで、‖は、ストリングの連結を意味する。(もちろん、このアルゴリズムは、単純な方法で任意の長さnに再設計することができる。)
EdonXに対して用いられたのと同様に、初期化フェーズは次のアルゴリズムにより説明される。
【0120】
【表18】
【0121】
関数RotateLeft(Kex)、SwapRows、及びSwapcolumnsは、EdonXに関して上記で述べたように作動する。
初期化フェーズの最後に、敵対者には未知の2つのワーキング構造を得る。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、(32!)3≒2352のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密キーKを置き換える長さ5nビットのワーキングキーKである(32次の擬群のオートトープクラスの正確な数は、知られていないということを強調して置く)。
【0122】
定理4から、EdonYは自己同期化されるということが導かれるが、理由は、暗号文Cの中の1エラーは、再生された平文M’でn+1個のエラーに増殖するため、すなわち元のメッセージMとM’はn+1の連続的な文字において相違するためである。もし、Cの中に長さrのエラーストリングがあると、再生された平文はr+n個のエラーを有するであろう。事例1から、どの方法でEdonYの暗号化及び復号化プロセスが働くかが分かる。
【0123】
EdonYの好ましい実施形態のセキュリティが、これから議論される。敵対者が選択した平文/暗号文へのアタックを実行することができるということ、すなわち1つの平文を選ぶことができ、且つ対応する暗号文を得ることができると仮定する。更に、暗号の内部状態(ワーキングキーK、ワーキング擬群(Q,*)、及びX及びYの値)と同様に、秘密鍵Kの初期値は敵対者には知られておらず、敵対者はこれらに物理的にアクセスできないと仮定する。もしこの敵対者がワーキングキーK及びワーキング擬群(Q,*)を実現可能な時間内に再構成できる場合に、EdonYは破られたと考えられる。
【0124】
初期キーKinについての知識が無ければ、ワーキング擬群(Q,*)及びワーキングキーKの初期値を知る、コンピュータ的に実現可能な方法はないということを示そう。敵対者はワーキングキーK並びに擬群(Q,*)の一部の情報を効率的に得ることができないということの証明を、以下で行う。
【0125】
初期化フェーズに関しては、秘密鍵の初期値は、仮定によれば、少なくとも32個の5ビット文字の長さ、従って160ビットの長さを有することができる。初期キーの長さについての情報による該キーのパディングは、上述のように、2つの異なる初期キーで同じ結果を得る可能性を除外するためのものである。典型的な拡張されたキーKexは、長さ512の5ビット文字を有している。これは、公に知られた32次の擬群(Q,・)によって512回変換される。
【0126】
EdonXと同様に、EdonY内のKexの中の文字、文字の対、文字の3つ組み、...の分布は一様である。キーKexの分布の一様性は、ワーキングキーKの分布の一様性を暗示する。Kの長さは少なくとも32個の5ビット文字であるため、敵対者はワーキングキーを2−160よりも小さい確率でしか推測できない。
【0127】
更に、EdonXと同様に、ワーキング擬群(Q,*)は、初期擬群(Q,・)のランダムに得られたオートトープであるということを示すことができる。32次の擬群(Q,*)上には、約32!3≒2352のオートトピズムが存在するので、ワーキング擬群は、約2−352の確率でのみ推測可能である。
【0128】
暗号化/復号化フェーズについては、ワーキング擬群(Q,*)及び初期ワーキングキーK=K0K1...Kn−1は、敵対者には知られていない、すなわち再生するにはコンピュータ的に実現不可能だということを割り出した。sタプルの文字の分布を用いることによる統計的な類のアタックも同様に、命題3によりコンピュータ的に実現不可能である。次の定理は、既知の暗号文アタックによって、キー及び擬群を再生するのはコンピュータ的に実現不可能であり、よって敵対者は2−1000未満の確率でしか推測できないということを暗示している(32次の擬群の数は未知であるが、21000よりもずっと大きい)。
【0129】
定理5:暗号文Cが与えられると、Q={0,1,...,31}上への各擬群作用*及び各キーK=K0k1...kn−1に対して、Cを自身の暗号文とするような平文Mが存在する。
証明:仮に、C=C0C1C2...,Ci∈Qが与えられたとして、Q上への任意の擬群作用*及び任意のキーK=K0k1...kn−1を選択したとしよう。EdonYの暗号化プロセスは、以下の表により表される(p=[n/2]が定数であることに留意)。
【0130】
【表19】
【0131】
Ci、Kjが与えられていることから、表の他の変数を次のように一歩一歩計算することができる。
Kn−1*Tn−2=C0 ⇒Tn−2=Kn−1\C0
Kn−2*Tn−3=Tn−2⇒Tn−3=Kn−2\Tn−2
...
K1*T0=T1⇒T0=K1\T1
K0*(M0/Kp)=T0⇒M0/Kp=K0\T0
【0132】
今、M0=(M0/Kp)*Kpが得られた。すなわち自身の暗号がC0であるメッセージMの最初の文字が見つかった。Tiの既知の値を用いて、変数Sn−2=C0\C1、Sn−3=Tn−2\Sn−2、...、を得るために先の計算を繰り返し、C1により暗号化されるM1に対する値に帰着することができる。同じ方法で、M2、M3、...の値を見つけることが可能である。
【0133】
既知の暗号文の下での、EdonY上で実現することができる他の可能な統計的なアタックは、n+1タプルの暗号文の辞書を作成することであり、ここでnはキーの長さである。次の表を用いて、このようなアタックがどのように実現できるかを説明するが、簡単にするためにn=3を取る。敵対者が暗号文C0C1...CjCj+1を持っていると仮定する。
【0134】
【表20】
次に、先ずx1、x2、...、次にy1、y2、...、そして最後にz1、z2、...を計算することができる。従って、値z1、z2、z3、...は、暗号文のサブストリングcici+1ci+2ci+3、ci+1ci+2ci+3ci+4、ci+2ci+3ci+4ci+5、...により、固有に決定される。これは、Cの中の長さn+1=3+1=4のサブストリングの分布がストリングB=B0B1B2、...の中の文字の分布に等しいということを暗示しており、ここで
【0135】
【数28】
【0136】
であり、このことから平文Mの分布についての一部の知識を抽出することができる。従って、敵対者はn+1タプルの暗号化文字の辞書を作成しなければならない。n=3のケースの辞書は、324=220の単語から成り、メモリの中に入れることができる。n≧32を取ったことから、EdonYに対する辞書は少なくとも3233=2165語を必要とし、物理法則では実現できない。従って、以下の定理を証明した。
【0137】
定理6:EdonY上への辞書の類の統計的なアタックは、コンピュータ的に実現不可能である。
次に、EdonY上の選択された平文/暗号文へのアタックは、コンピュータ的に同様に実現不可能であるということを証明しよう。仮に、敵対者が平文/暗号文ストリングの任意の対(M,C)=((M0M1...),(C0C1...))を生成できると仮定しよう。次に、以下の表から情報を引き出すことができる。ここで簡単にするためにn=4とする。
【0138】
【表21】
変数Ki、xi、yi、ziは、未知数であり、以下の擬群方程式の系が得られる。ここで、Q={0,1,2,...31}上への作用“・”は未知である。
【0139】
【数29】
【0140】
上記の系の方程式C0・x1=C1、C1・x2=C2、C2・x3=C3、C3・x4=C4、...から推察される情報は、以下である。平文Mは任意に選択することができるので、暗号文Cは、サブストリングとして(a,b)∈Q2である全ての可能な322のabの対を含むであろう。方程式Ci・xi+1=Ci+1より、要素Ci+1は擬群(Q,・)の乗算テーブルの中のCi番目の行且つxi+1番目の列に位置していることが分かる。言いかえれば、もし(Q,・)内の乗算をi・j=qi,jで表すとすると、
【0141】
【数30】
ある。その結果として、(Q,・)の乗算テーブルの列に対する完全な情報が得られる。例えば、x1の値は知らないが、
【0142】
【数31】
は知っている。このようにして、(Q,・)の乗算テーブルの完成された列と共に、32個の異なる変数xi0,...,xi31を抽出することができる。簡単にするために、ij=jとすると、次の(Q,・)の乗算テーブルが得られる。
【0143】
【表22】
【0144】
xiは未知のため、(Q,*)の元の乗算テーブルは、(Q,・)の乗算テーブルの列の置換である。仮に、未知数x0、x1、...x31の値を割り当てしたとしよう。次に、上記の方程式の系から、一歩一歩、未知数K3=c0/x0、y1=x0\x1、y2=x1\x2、y3=x2\x3、...、z2=y1\y2、z3=y2\y3、z4=y3\y4、...の一意的に決定された値を計算することができる。ここで、キーの値を、K1=M3/(z2\z3)、K2=M4(z3\z4)、K3=M5/(z4\z5)、K0=M6/(z5\z6)、K1=M7/(z6\z7)により、計算することができる。変数Kiの多さは有限であるので(この単純化されたバージョンではたった4つであるが、EdonYの好ましい適用においてはn≧32)、敵対者は割り当てられた値x0、x1、...、x31が正しいかどうかを確認する機会を有している。すなわち、もしこれらが正しいとしたら、等式M3/(z2\z3)=M7/(z6\z7)(=K1)、M4/(z3\z4)=M8/(z7\z8)(=K2)、...が満足されなければならない。もしこれらが満足されなかった場合、敵対者は未知数x0、x1、...x31に別の割り当てをし、再度これらが正しいかを確認する必要があり、以下同様である。32!=2117の異なる可能な割り当てが存在するので、本発明者らは以下の定理を得る。
【0145】
定理7:選択された平文/暗号文のアタック下では、擬群作用*又はEdonYのキーの再生はコンピュータ的に実現不可能である。
上に示すように、EdonYは、この柔軟性及び多くのこのコンポーネントについての数学的な証明可能性を特徴とする、自己同期式ストリーム暗号である。EdonYの自己同期化は定理4の帰結である。この定理により、もし長さnのキーを持っているとすると、暗号文の中の1つのエラーは、復号化プロセスの間に平文のn+1個の連続的なエラーを生成する。EdonYの暗号化及び復号化アルゴリズムは、非常に単純で且つ線形複雑度のものであり、従って、EdonYは安全なオンライン通信のために用いることができる(またこれは、必要に応じて、より早い通信を得るために自明の方法で並列化することができる)。
【0146】
EdonYの例示的な構成は、5ビット文字の文字体系を用いるが、どのように暗号化及び復号化アルゴリズムをmビット文字に再設計できるかについては明らかなはずである。設計の柔軟性及び所望の長さのキーの選択の可能性は、EdonYの非常に重要な特性である。従って、EdonYは閾値セキュリティを設計する場合にも同様に用いることができる。仮に、キーが人物A、B、Cの3人で共有され、人物単独では完全なキーを持っておらず、彼らの任意の2人のみが完全なキーを持っている、自明な事例を考えてみよう。次に、長さ192の秘密初期キーK=K0‖...‖k191を取り、以下のように分配する。つまり、人物Aが部分K=K0‖...‖k127、人物Bが部分K=K64‖...‖k191、及び人物Cが部分K=K0‖...‖k63‖K127‖...‖k191を得るように分配する。それぞれの人物は、秘密鍵の64個の5ビット文字については知らず、秘密鍵を完成させるには3264=2320の可能なバリエーションが存在する。(s,p)閾値システムに対する適切な安全設計を同様に定義することができる。
【0147】
32次の擬群は1Kbの中に格納することができるので、好ましくEdonYを設計すると、小さなメモリ量、すなわち2Kb未満のメモリを伴う組み込みシステムの中にEdonYのハードウェア実装を組み込むことが可能となる。
【0148】
もし初期の32次の擬群もまた秘密であれば、このような擬群の数は21000よりも大きいことから、更なるEdonYのセキュリティが得られるということを書き留めておく。
【0149】
本発明の他の態様では、新しいタイプのストリーム暗号「完全非同期ストリーム暗号(TASC:Totally Asynchronous Stream Cypher)の概念を導入し、これらの暗号に対するいくつかの利点について実地に示す。上述のように、ストリーム暗号は、このストリーム暗号を用いる2者間の通信で受信したエラーへの行動の仕方により、分類される。もし、復号化されたストリームが、送信の間に起こったエラーの影響をうけていなければ(実際に誤ったバイト、又はバイトブロック上のエラーを除き)、同期ストリーム暗号について話している。他方では、もしこのエラーが復号化されたストリームに影響を与えるのであれば、非同期ストリーム暗号について話している。しかしながら、文献で定義された全ての非同期暗号は、自己同期性であるという特性を有している。すなわち、誤って復号化されるであろういくつかの送信ブロックの後で、ストリームの正しい復号化が再度確立されるだろう。正しいデータのストリームが再度流れはじめることを確実にするという観点からすると、自己同期は非常に好都合な特性である。しかしながら、同期式及び自己同期式ストリーム暗号は、通信ラインをモニタする敵対者による、データ改ざんアタックを受ける可能性がある(いわゆる動的アタックを受ける)。従って、ストリーム暗号(同期又は自己同期式)などの原始的な暗号法を用いる場合は、データインテグリティを確実化するための更なるメカニズムを用いる必要があるだろう。
【0150】
同期式暗号EdonXの一般的な特性は、通信の過程で取り込まれたエラーからの回復はできないものの、この確実な証明可能性が、同期式バージョンに対して適用される同じ数学的な定理により保証されるという重要な特性を依然として有する暗号を提供するために、用いることができる。完全な非同期ストリーム暗号であるという特性は欠点と見られるけれども、実際には、このような暗号にはいくつかの有用な応用が存在する。すなわち、データインテグリティ、認証、及びエラー訂正を保証できる、証明可能な安全なストリーム暗号である。
【0151】
同期式ストリーム暗号は、キーストリームが平文メッセージ及び暗号文とは独立的に生成される暗号として、上記で定義された。自己同期式すなわち非同期式ストリーム暗号は、一方、キーストリームがキー及び前の暗号文の一定数のディジットの関数として生成される暗号である。
【0152】
自己同期ストリーム暗号の暗号化関数は、式
σi=(ci−t,ci−t+1,...,ci−1)、zi=g(σi,k)、ci=h(zi,mi)
で記述することができ、ここでσ0=(ci−t,ci−t+1,...,c−1)は(非秘密の)初期状態、kはキー、gはキーストリームziを生成する関数、及びhはキーストリームと平文miを結合して暗号文ciを生成する出力関数である。
【0153】
これに反して、完全非同期式ストリーム暗号は、キーストリームが中間キー及び一定数の前の平文ディジットとの関数として生成される暗号である。完全非同期式ストリーム暗号の暗号化関数は、式
ki+1=f(ki,mi),ci=f(ki,mi)
【0154】
により記述することができ、ここでk0はキーの初期秘密状態であり、fはキーの次状態関数であり、hは非線形にキー及び平文miを結合して暗号文ciを生成する出力関数である。
完全非同期式ストリーム暗号の復号化関数は、式
ki+1=f−1(ki,ci),mi=h−1(ki,ci)
により記述することができる。
【0155】
従って、この定義から、自己同期式及び完全非同期式ストリーム暗号は、どのようにキーストリームが生成されるかの方法が異なることは明らかである。自己同期式ストリーム暗号は前の暗号文のディジットの一定の数に依存する一方で、完全非同期式ストリーム暗号は前の平文ディジットの一定の数に依存する。ここで、重大な問題を提起することができる。すなわち、もし平文のソースがランダム性の観点から見て、お粗末な特性を持っていたらどうだろうかということである。平文のストリームが非常に低いエントロピー(極端な場合にはエントロピーが0)を持っていたらどうだろうか。もし、完全非同期式ストリーム暗号の定義が、シフトレジスタ技術及びSボックスを用いる良く知られた古典的なストリーム暗号に適用された場合、このような完全非同期式ストリーム暗号の結果は、短い予測可能な周期を伴うキーストリームを生成する、まったく貧弱なストリーム暗号であろう。従って、質の高い完全非同期式ストリーム暗号を設計することに対する主な課題は、キーストリームが前の平文の一定の数のディジットに従属するが、それでも短い周期には陥らず、また、平文ディジットのソースがエントロピー0でさえあっても、貧弱なランダム性特性を持つキーストリームを生成しない、ストリーム暗号を設計することである。図2の中に、完全非同期式ストリーム暗号を例示する。擬群ストリング変換を用いた完全非同期式ストリーム暗号の、例としての可能な実装を提示する。
【0156】
上で提供された擬群及びラテン方格の定義を前提とし、また上で提供されたイソトピズム及びオートトピズムの関係を前提とすると、ラテン方格Lの列及び行上への任意の置換は、以下の補助定理の中に集約され得るということを示すことができる。
【0157】
補助定理:擬群(Q,*)に関連する、ラテン方格Ln×nの行及び列上への任意の置換は、新しいラテン方格L’n×nに帰着し、この関連する擬群Q,*’は元の擬群(Q,*)に対してオートトピックである。
【0158】
この補助定理からの直接の帰結として、次数nの各擬群(Q,*)に対して(n!)2−1個の、(Q,*)に対する異なるオートトピックな擬群(Q,*)が存在するということを得る。
【0159】
擬群を(Q,*)とすると、集合Qへの新たな5つの作用*−1、−1*、−1(*−1)、(−1*)−1、**は、
*−1(x,y)=z⇔x*z=y
−1*(x,y)=z⇔z*y=x
−1(*−1)(x,y)=z⇔*−1(z,y)=x⇔z*x=y
(−1*)−1(x,y)=z⇔−1*(x,z)=y⇔y*z=x
**(x,y)=z⇔y*x=z
により得られる。
【0160】
集合Par(*)={*,*−1,−1*,−1(*−1),(−1*)−1,**}は、*のパラストロフの集合であると言われる。その結果、各g∈Par(*)に対して、(Q,g)もまた擬群であり、またPar(*)=Par(g)である。通常、乗法的に表される擬群(Q,*)に対して、*−1,−1*の代わりに、それぞれ\、/で表し、上述のようにこれらを左及び右パラストロフと呼ぶ。その結果、
【0161】
x*y=z⇔y=x\z⇔x=z/y
となる。
次に、代数(Q,*,\,/)は、恒等式
x\(x*y)=y、(x*y)/y=x、x*(x\y)=y、(x/y)*y=x
を満足する。
擬群ストリング変換の方法は、上で説明されている。
【0162】
EdonXと同様にEdonZは、好ましくはニブル(すなわち4ビット変数)である。これは、データのストリーム上への擬群ストリング変換を実行するために、16次の擬群(Q,*)を用いるのが好ましいからである。従って、対応するラテン方格の値は4ビットにより表される。キーKの値に対しても同様である。これはn=64個の内部変数Ki、すなわちK=K0K1...Kn−1の中に格納される。変数Kiは{0,1,...,15}の範囲の値を有している。
【0163】
EdonZは、初期化段階のためにKinの初期値を用いる。Kinの中に格納された情報によって、EdonZは初期擬群(Q,*)上に変換をかけ、及び同様にKinの値にも変換をかける。Kの値は、ストリームの処理が実行されるときに同様に変化する。EdonZはまた、好ましい一実施形態では、2つの一時的な4ビットの変数T及びXを用いる。EdonZは、同期式EdonXとは、どのように変数X及びTの初期値が設定されるか、及びどのようにXの最後の計算が成されるかの方法に違いがある。しかしながら、復号化フェーズでは、EdonXは、Q(*)の左パラストロフについては、これがバイナリの付加的ストリーム暗号であることから用いないが、EdonZはQpar(*)を必要とする。EdonZの好ましい動作を例示している表を以下に示す。
【0164】
【表23】
【0165】
【表24】
【0166】
【表25】
【0167】
作用Θは、4ビット変数上への排他的又は(XOR)である。
EdonZアルゴリズムの非常に重要なフェーズは、初期化フェーズである。これは、EdonXと同様に、例えばメッセージのパディング、メッセージの拡張、及びこの拡張されたメッセージの変換のような、暗号化アルゴリズムにおける既知の手法を組み込んでいることが好ましい。この場合、メッセージは、秘密に共有される初期キーKinである。拡張及び変換されたキーからの情報は、次に、ワーキングキーKの64ニブル(256ビット)の初期値の設定と同様に、初期的に与えられた擬群の変換に用いられる。
【0168】
初期化フェーズの最後に、敵対者には未知の2つのワーキング構造を得る。すなわち、第1の未知の構造は、元の擬群Q(・)のオートトープであり、且つ(16!)3≒2132のオートトープの1つである、ワーキング擬群(Q,*)であり、第2の未知の構造は、元の初期秘密鍵Kinを置き換える長さ4mビット(mニブル)のワーキングキーKである。
TASCとしてのEdonZの他の非常に重要な特性は、次の定理により述べることができる。
定理8:仮に、M=M1M2...Mμを、サブブロックMiへのMの表現とし、ここで
【0169】
【数32】
などであり、また、仮に(Ki,Ci)=(Ki−1,Mi)とし、ここでK0=k0が初期キーとしよう。その結果、サブブロックへのMの表現の任意のものに対し、結果としての暗号文C=c1c2...cl=C1C2...Cμは同じである。
【0170】
証明は、メッセージMの長さ上への数学的帰納法により容易である。
上記の定理は、EdonZがストリーム暗号にもかかわらず、入力平文を小さな部分(ブロック)で処理することができ、また、暗号化の前にブロックに対しどんなMの表現を選択しようとも、最後の暗号文は同じになるということを、確実にする。従って、ブロックは1文字でも、4文字でも、又は100文字でさえあっても良く、また、結果としての暗号文は同じである。
【0171】
次に、EdonZの原理で働く事例を説明するが、説明を簡単にするために、好ましい16×16の擬群の代わりに、4次の擬群の使用を続けよう。その上、長さ512の拡張キーを用いる代わりに、これを長さ16に短縮する。初期キーは、1から15の長さを持つことができ、従ってこれは、{0,1,2,3}の範囲からの2つの連結された2ビット文字により表され、ワーキングキーは長さ4となる。
初期擬群Q(*)は、上述のEdonXの実施例1で与えられたものと同じ、すなわち擬群Q(*)は、
【0172】
【表26】
と仮定しよう。
【0173】
更に、初期値をKin=131と設定しよう。Kinの長さは3であり、数値3の2つの2ビット文字による表現は03であるため、Kinをパディングし、Kin13103を得るであろう。次に、Kinを何回か連結することにより、長さ16のKex、すなわちKex=1310313103131031を得る。次に、この拡張キーをel、*変換する(ここで、リーダlはパディングされたKinの値になるように巡回的に取られる)と、Kexの最終値を得る。以下の表で、これらの変換を要約する。
【0174】
【表27】
【0175】
最後の値Kexで、初期擬群Q(*)のオートトープを得るために、反復的に、この初期擬群の行及び列を交換することを開始する。そこで、まず行3と2を交換し、次に列0と3を交換し、再度行3と行3を交換(この場合は交換はせず)、などを行う。これらの全ての交換の最後の結果は、以下に示す擬群Q(*)をもたらす(この擬群により、この左パラストロフQpar(*)も同様に計算することができる。)
【0176】
【表28】
ワーキングキーKは、Kexの最後の4文字を取り、K=2323となる。さて、或る平文ストリームを暗号化しよう。仮に、平文メッセージをM={0,0,1,0,2,3,0,0, 1,2,0,0,1, 0,0,2,0,0,0,3}としよう。EdonZの暗号化ステップを、次の表に示す。
【0177】
【表29】
初期値X=X0は、入力ストリームニブルの値であり、Tの初期値は常に0である。最終値X=X3は、実は出力ニブルである。キーKの新たな値の処理に対しても状況は同じであるということに留意されたい。すなわち、常にK=K0K1K2K3=X0X1X2T3であり、ここでT3=X0ΘX1ΘX2ΘX3である。
【0178】
次に、EdonZのセキュリティが、分析される。敵対者が1またはそれ以上の(平文、暗号文)対についての知識を持つだろうということを仮定する。更に、暗号の内部状態(ワーキングキーK、ワーキング擬群Q(*)及びQpar(*)、並びにX及びTの値)と同様に、キーKの初期値は敵対者には知られておらず、敵対者はこれらに物理的にアクセスできないと仮定する。本発明者らは、もしこの対(平文、暗号文)のみを知ることにより、敵対者がワーキングキーKの一部を再構成することができる場合に、EdonXは破られたと考える。
【0179】
分析の最初の部分で、初期キーKinについての知識が無ければ、ワーキングキーK及びワーキング擬群Q(*)の初期値について知る効率的な方法は無いと言うことを示そう。次に、同期式モード及び完全同期式モードにおけるEdonXについて更に分析しよう。
【0180】
初期化フェーズのセキュリティに対しては、これが好ましくはEdonXと同じであるため、EdonZの初期化フェーズは暗号的に安全であると言うことができる。非同期式モードにおけるEdonZのセキュリティについては、ワーキング擬群Q(*)が敵対者(がそうしない限り)に知られていないということは、はじめに与えられた擬群Q(*)のオートトープの集合全てについて網羅的な調査を引き起こし、この調査の数は2132であるということを仮定する。また、敵対者は64ニブルすなわち256ビットの長さのワーキングキーKの初期値を知らないと仮定する。
【0181】
EdonZが、選択された平文のアタックに対して安全であるということを証明するために、敵対者が、(多くの中の)1対の(平文/暗号文(M,C)=((M0M1...),(C0C1...))を知っているとしよう。同期式ストリーム暗号のケースのように、K及びXにおけるi番目の世代のニブルに対しKi,jXi,jという表記法をそれぞれ用いる。
最初のニブル対M0C0に対し、敵対者は以下の擬群方程式の系を得ることができる。
【0182】
【数33】
【0183】
C0=X0,63の値を知って敵対者は、方程式K0,63*X0,62=X0,63を解くことができる。この式は、2つの未知の変数、すなわちK0,63及びX0,62を有している。擬群作用*もまた未知であるから、敵対者は256個の可能な解の任意のものを推測することができる。これらの値を推測として設定して、上方向に、K0,62*X0,61=X0,62などの解を見つけようとするが、これらも同様に256の任意の解を持つことができる、といったように続く。最後に、敵対者は最初の方程式K0,0*M0=X0,0に到達し、値K0,0を得る。
【0184】
ここで再び、敵対者が、これもやはり2252×2132=2384の推測の総回数を与える全ての式(最初の方程式を除く)をざっと調べないかぎり、キーK及び擬群作用Q(*)の値に対して良い推測をしたかどうかを知る、他のメカニズムは存在しないという状況が得られる。
【0185】
EdonZの用法は、通信のパブリックチャンネルを通しての受信データのインテグリティを確認するためのセキュリティプロトコルを、2つのタイプの暗号アルゴリズム、すなわちストリーム暗号及びメッセージ認証コード(またはセキュアハッシュ関数:Secure Hash Function)を用いることなく、実装することにおいて存在するであるであろうということが予期されている。TASCの概念は、両方の特性を備えている。EdonX及びEdonYと共に、擬群ストリーム暗号としてのEdonZはまた、次の特性を有している。
【0186】
柔軟性:EdonZの初期化フェーズをよく見ると、初期キーの最大64ニブルを用いる代わりにこの数を128、1024、2048又は他のニブル数に拡大するのは簡単であるということがわかる。この事実の重要性は、EdonZが平均的なものから極端なものまでの、異なるセキュリティ基準を満足させることができ、従って、非常に懐疑的なユーザは1K(又は1M)ニブルの、すなわち4K(又は4M)ビットの秘密鍵を、アルゴリズムを再設計する必要なく用いることができるということである。より高いセキュリティのためには、より長い初期秘密鍵を選択すべきであるが、計算の回数は鍵の長さに直線的に依存する。
【0187】
付加的なセキュリティ:このシステムのセキュリティは、もし初期擬群及び初期キーの長さも秘密と仮定するならば、非常に強くなる。従って、もしも初期擬群が秘密である場合、約(16!)3≒2132個のオートトピズムどころか、敵対者は16次の擬群作用の全てを考慮しなければならず、そして、これらの数は未知であるが10120≒2400よりも大きいのである。
【0188】
EdonXと同様に、好ましい設計によるEdonZは4ビットレジスタ上で動作し、また、たった256バイトの中に格納できる、16次の擬群である2つの固定ルックアップテーブルを用いる。内部メモリ及びアルゴリズムの実行コードとともに、EdonZは1Kb未満の中に実装することができる。従って、EdonZは、極端に小さなメモリ量、すなわち1KB未満のメモリを伴うチップカードの中の組み込みシステムのように、ハードウエア実装に適切である。
【0189】
他のEdonZ又は同様のTASCストリーム暗号の潜在的な利用法は、エラー訂正アルゴリズムの領域にある。好ましくはEdonZのようなTASCを用いる典型的なエラー訂正アルゴリズムを、これから論議する。この方法は、もし受信データの重要な部分がエラーにより破壊されていたとさえしても、比較的速く復号化することができるランダムコードを生成するための中核となる方法である。擬群ストリング変換により生成され、殆どランダムであり、また効率的に復号化可能なコードの種類が存在することを示す。最初の数値的な実験により、これらのコードはターボ及びLDPCコードを大きくしのぐ可能性があるということが分かった。例えば、SNR=0.0dB、レート1/2、及びブロック長がわずか288ビットに対し、これらのコードはBER=1.7×10−4を提供し、またSNR=−0.5dB、レート1/4、ブロック長わずか864ビットに対してはBER=4.1×10−5を実現させる。
【0190】
雑音のある通信路のコーディング定理についてのこの非構造的な証明により、任意の雑音のある通信路に対して良好なブロックコードが存在することが分かり、またその上、殆ど全てのブロックコードが良好であるということが分かった。しかしながら、シャノン(Shannon)が彼の独創的な著作「通信の数学的理論」で証明したと同程度に良好な、明確且つ実用的な暗号器及び復号器を書き留めるのは、依然として未解決の問題である。最近、2つのコードのクラス、すなわちターボコード及び低密度パリティ検査(LDPC:Low−density parity−check)コードがシャノン限界に極めて近いレートで機能するということが認識された。ターボ及びLDPCコードは、同じ考え、すなわち、或る固定パラメータに加えランダム性により表され、反復的なアルゴリズム又はメッセージパッシング復号器を用いて復号化される、制約されたランダムコードの組み合わせに基づいている。
【0191】
本発明の更なる態様は、以下の2つの特性を有するエラー訂正コードの種類を提供する。第1に、任意のコード語Cに対して、長さrのCのサブストリングの分布は一様であり、第2に、暗号化は反復的であり、これは短い長さのストリング上で定義されるマッピングの構成を意味する。第1の特性は、コードは殆どランダムだということを確実にする。もちろん、ランダムコードの復号化はNP完全問題である。しかしながら、第2の特性は、コードが効率的に復号化され得るということを確実にする。このようなコードが擬群ストリング変換と共に実装される事例について、詳細に説明する。予備的な数字的シミュレーションの結果、提案されたコードは対応するターボ及びLDPCコードを大きくしのぐことが分かった。
【0192】
好ましいコードを説明するために、情報のソースがシンボル(symbol)のストリームを生成すると考える。このストリームは、長さNblockのブロックの中に分割される。可能な2
【0193】
【数34】
ブロックのそれぞれは、暗号器により長さN>Nblockのコード語(すなわちビットのシーケンス)にマッピングされ、チャンネルを通して送信される。従って、エラー訂正コードは、マッピング
【0194】
【数35】
として定義される。
【0195】
本発明の実施形態によるコードTは、次のように定義される。仮にMを、Nblockビットのブロックとする。先ず、ゼロビットを加え、長さNのブロックLを生成する。第2に、Lを、L=L1L2...Lpのように書き直す。ここで、各Liはsビットのブロックである(N=spと仮定する)。第3に、このブロックLは、以下の方法で全単射によりブロックC=C1C2...Cpにマッピングされる。
仮に、K1,1、K1,2、...、K1,nをそれぞれの長さsのn個の初期ストリングとしよう。ブロックLは、
【0196】
【数36】
としてCへとマッピングされ、ここでf及びgは適切な作用である。(1)は、コードTを一意的に定義するということに留意されたい。
【0197】
もしi=1,2,...p+1に対してk(i)=ki,1,ki,2...ki,nと書くとすると、方程式(1)はまた以下の2つの写像を定義する:第1に、(k(p+1),C)=F(k(1),L)となるような写像F:An×Ap→An×Apであり、ここでA={0,1}1は、長さlの全てのストリングの集合である。第2に、各i=1,2,...,pに対して(k(i+1),Ci)=G1(k(i),Li)となるような写像G1:An×A1→An×A1である。この理由により、コードは両様で反復的である。すなわち、(1)各Li,fに対して、fはn回繰り返されてCiを生成し、(2)k(1)はp回繰り返されてk(p+1)を与える。
以下では、G1の代わりに、写像G4≡Gで作業する。簡単にするために、p=4rのみを仮定しよう。その結果、方程式(1)は
【0198】
【数37】
と書き直しすることができる。
方程式(2)は、l=1,2,...,rに対して(k(4l+1),C(l))=G(k(4l−3),L(l))となるような写像G:An×A4→An×A4を定義する。
加えて、このコードは以下の特性を有している。すなわちこのコードは殆どランダムであり、これは全ての
【0199】
【数38】
に対して、長さk(kは1≦k≦n)のC=T(M)∈{0,1}Nのサブストリングの分布は、Nが十分に大きい場合は一様であるということを意味している。
【0200】
擬群作用及び擬群ストリング変換は、例えば、EdonX、EdonY、及びEdonZのものと同様に実行される。文字体系(すなわち有限集合)Aを考え、A+によって、Aの元により形成された全ての非空の語の集合(すなわち有限ストリング)を表そう。A+の元は、(a1,a2,...an)よりもむしろ、a1,a2...anで表されるであろう。尚、ここでa1∈Aである。仮に、*を集合A上への擬群作用としよう。
【0201】
各l∈Aに対して、関数el,*:A+→A+を以下のように定義する。
仮に、ai∈A,α=a1a2...anとする。その結果、それぞれi=0,1,...,n−1に対して
el,*(α)=b1...bn⇔bi+1=bi*ai+1 (3)
であり、ここでb0=Iである。関数el,*は、リーダIを伴う作用*に基づくA+のe変換と呼ばれる。
【0202】
いくつかの擬群作用を集合A上で定義することができ、仮に*1,*2,...,*kをこのような作用の順序だとしよう(必ずしも独特なものではない)。また、リーダl1,l2,...,lk∈Aを選択し(これも必ずしも独特なものではない)、その結果マッピングの構成
【0203】
【数39】
は、A+のE変換と言われる。実際のところ、置換である関数Ekは、多くの興味深い特性を有している。非常に顕著なものは以下である。
【0204】
定理9:任意のストリングα=a1a2...an∈A+を考え、ここでai∈Aであり、また、β=Ek(α)としよう。もしnが十分に大きい整数の場合、各l(1≦l≦k)に対して、長さlのβのサブストリングの分布は一様である。(l>kに対しては、長さlのβのサブストリングの分布は一様ではない可能性がある。)
【0205】
この符号化は2つの重要な部分を有している。ここで提供される実施例では、1/2レートのコードのみについての設計を説明するが、他の符号化率(coding rate)への一般化は容易である。送信すべきメッセージがM=m1m2...m18の形式を有していると仮定する。ここで、miはニブル(4ビット文字)である。最初の部分で、冗長情報を追加し、L=L(1)L(2)L(3)L(4)L(5)L(6)L(7)L(8)L(9)を得、ここで、L(1)=m1m2m304、L(2)=M4m5m604、L(3)=M7m8m904、L(4)=04040404、L(5)=m10m11m1204、L(6)=m13m14m1504、L(7)=m16m17m1804、L(8)=04040404、L(9)=04040404である(04は4つのゼロのストリング(ゼロニブル))。従って、各L(i)は16ビットのストリングである。18個のゼロニブルを追加したので、符号化率は1/2である。これは概略的に以下の表に示されている。
表I
レート1/2及び1/4を伴うコード
【0206】
【表30】
表II
実験で用いた16次の擬群
【0207】
【表31】
この表では、また、レート1/4のコードを示す。この1/2コードに対しては、(72,144)コード(Mの長さが72であり、Lの長さが144)とも言う。
【0208】
第2の部分の符号化では、fを表IIで定義される擬群作用であるように選択し、またgを
もしj=1,...n−1なら、ki+1,j=bi,j
ki+1,n=bi,1Θ...Θbi,n
であるように選ぶ。
【0209】
ここで示される数値的な実験で、コード(144,288)を用いる。実験は以下の方法で行われる。仮に、Lを2つのサブパターンの連結L104として書き直ししよう。ここで、L1=L(1)L(2)...L(8)である。その結果、コード(144,288)はL=L1L20404、と記述することができる。ここで、L2=L(9)L(10)...L(16)である。
288ビットのブロックと共に作動し、レート1/4を有する実施例を紹介する。暗号化及び復号化で用いたTASCアルゴリズムを次の表に示す。
表III
完全非同期式ストリーム暗号
【0210】
【表32】
【0211】
上述のアルゴリズムでは、表記法Q[Ki,X]は、擬群作用Ki*Xを意味し、作用Θは排他的ORである。表記法Qpar[temp,X]は、擬群Q(*)に対する左パラストロフ擬群作用を用いるということを意味する。
【0212】
変換されたコード語はCである。ノイズにより、異なったシンボルのシーケンスD=d1d2...d36(ここでdiはニブル)が受信される。復号化の問題は、D、コードの定義、及び雑音のあるチャンネルの特性を所与として、Lを推定することである。このチャンネルをバイナリのシンメトリックチャンネルと仮定する。H(h1,h2)を、同じ長さ(ビットの)の2つのストリングh1とh2間のハミング距離を返す関数だとしよう。
表IV
実験に用いた擬群Q(*)の左パラストロフQpar(\)
【0213】
【表33】
TASCECAアルゴリズムは、以下のアルゴリズムにより定義された。
【0214】
1)復号化候補の最初の集合S0={(k0,λ)}を定義する。
2)For i=1 to μ do
si={(k,m’)|∃(k”,m”)∈Si−1,D”,H(D”,D’)
≦B,(k,m”d)=f−1(k”,D”),m’=m”m”d、
ここでm”dはM’iと同じ冗長情報を有する}
3)最後の集合Sμから元(k,m’)∈Sμを選択する。
4)m’からメッセージMを得る。
例えば、以下のメッセージ
M=4d616365646f6e6961
【0215】
を、バイナリシンメトリックチャンネルを通して、レート1/4且つブロック長288ビットのTASCECAで送りたいと仮定する。結果をより簡潔に示すために、小さい値Bmax=3を用いる。これは、全ての受信された4文字語Di(すなわち受信された16ビット語)に対して、ハミング距離3以下を有するこの隣接の語の全てをくまなく検索するということを意味する。このような近接した隣接語の総数は、(16/0)+(16/1)+(16/2)+(16/3)=697である。上記の表より、メッセージMを以下のメッセージ(4文字語の連結として表された)
【0216】
M’=4d00 6100 6000 0000 3600 5000 6000 0000 4600 f600 e000 0000 6900 6000 1000 0000 0000 0000
に変換する。
【0217】
この場合の4文字語の総数は、L=18であることに留意されたい。仮に、キーkの長さをn=5に選び、k0の初期値をk0=01234としよう。暗号化プロセスは、もしM’を関数T及び初期値k0で変換する場合は、即時に終了することができる。もし、これを行うと、以下の対を得る。
【0218】
(k,C)=T(k0,M’)=(98f91,26ab c306 b63b 50df 3965 39cbb564 5521 a059 6bOf 611e 2700 239f 7c7c 6973 ge53 bd9a 5f26)
【0219】
しかしながら、暗号化プロセスを示すために方程式2が以下の表で反復して用いられる。以下の表の値は、反復的に、すなわち(k1,C1)=(15b40,26ab)=T(k0,M’1)=T(01234,4d00)、次に(k2,C2)=(7fd9a,c306)=T(k0,M’2)=T(15b40,6100)などと得られる。
【0220】
復号化フェーズは、以下の反復的処理の表の中に記述されている。紙面の節約のため、集合Siの元は、(k,M’)の形式で示されており、復号化フェーズのステップ2の中に記載されたものからは若干異なっている。すなわち、M’は冗長性が取り除かれて、すなわち冗長な0無しで示されている。更に、集合Siの各元に加えて、ハミングウェート(Hamming weight)Bmax=3の太字体の4文字語がある。この語からは、この変更された語に逆関数T−1が適用された時に、結果が冗長情報の必要とする構造を有するよう受信された4文字語Di上にどんな変更が成されたかがわかる。従って、例えばi=1に対しては、行「(6803e,4e),01a8」は、(6803e,4e00)=T−1(01234,24abΘ01a8)を意味し、次に行「(15b40,4d),0200」は、(15b4 0,4dOO)=T−1(01234,24abΘ0200)を示し、以下同様である。次に、i=2に対して、行「(21a6 9,4ed1),0460」は、(21a6 9,d1000)=T−1(6803e,c326Θ0460)を意味し、以下同様である。
【0221】
表V
キーkiの中間値、対応するCiと異なるDi値で示されるメッセージM’のエンコードの反復プロセス、あるエラーがバイナリシンメトリカルチャンネルによって導入させる
【0222】
【表34】
バイナリシンメトリカルチャンネル
【0223】
【表35】
【0224】
復号化の過程で、j=1+4(i−1)、i=1,2,...9に対して、反復的に4タプルのDi=djdj+1dj+2dj+3を復号化し、また04が対応するLiの最後のニブルかどうか、又はL4、L8、L9がゼロのみのストリングかどうかをチェックする。しかしながら、j=1+4(i−1)、i=1,2,...9に対してDi=djdj+1dj+2dj+3が対応するコード語Ci=cjcj+1cj+2cj+3からは一部のビットが異なるために、復号化の過程でDiからBビット距離よりも少ない全ての4タプルを復号化する。手短に言えば、コード語の復号化は、復号化されたときに最後のニブルが4つのゼロのストリングか、又はL4、L8、L9がゼロのみであるDisを探す過程である。
【0225】
このステップが、非常に重要な復号化の反復的な部分であることは明らかである。復号化の過程で、集合Sの中の全ての可能な候補の元の数を劇的に増加させることができ、従って、この数を制御下において置くということが重要である。Lの中への冗長データの配置は、上記のレートコード表に示すように、この目的のために用いられるが、もっともありそうもない候補を除外するための他の手法も同様に適用することができる。反復的な復号化の最後に、最終的にSの中の元の数は1つに減り、これは全てのエラーが見つかり訂正されたということを意味する。この復号器はまた、以下の特性を有する。すなわち、どういうわけか正しい候補が候補の集合Sから削除されてしまった場合、復号化プロセスへの更なる数ステップを行うと、最終的に空の集合Sに帰着し、これは或る間違った復号化判断がなされたということの証拠となる。
【0226】
更に、集合Sの中の元の数が制御下に維持されているという仮定の下で、復号化のために、BERの上限を計算することができる。すなわちエラー確率pを有する、バイナリシンメトリックチャンネルに対して、受信された4タプル(複数)のDiに対する最大ハミング距離がB=Bmaxを超えないと仮定し、且つK=N/16を長さNのコード語の中の4タプルの数だとすると、BERの上限は以下の式
【0227】
【数40】
により計算され、ここで
【0228】
【数41】
は、Bmaxを超えるエラーが16ビットのストリングで起こる確率である。
【0229】
このコードに対する実験の結果、ターボ及びLDPCコードに比較して、顕著に改善することが分かった。例えば、SNR=0.0dB、レート1/2、及び長さわずか288ビットに対し、好ましいコードはBER=1.7×10−4を提供し、またSNR=−0.5dB、レート1/4、ブロック長わずか864ビットに対してはBER=4.1×10−5を実現させる。こうした数値上の実験から、この時点で、現在最良のエラー訂正コードの能力をはるかにこえる潜在的可能性があることがわかる。
【0230】
更なる他の本発明の態様は、擬似ランダム数発生器(PRNG:pseudo−random number generator)の改善物を提供し、この改善されたPRNGは、殆ど測定不可能な周期と、文字、文字対、3つ文字組み、等々の一様な分布とを有し、またランダム性についての全ての統計的なテストをパスするようにする。PRNGの好ましい改善物は、擬群ストリング変換によって設計され、またこの特性は数学的に証明可能である。これは極めて柔軟性が有り、入力/出力ストリングは、2ビット文字、4ビット文字、バイト、2バイト文字、等々のものとすることができる。加えて、この複雑度は線形であり、2ビット及び4ビット実装では1Kb未満のメモリしか必要とせず、従って、同様に組み込みシステム用として適している。
【0231】
擬似ランダム数発生器(PRNG)及び/又はランダム性の無バイアス物理ソース(unbiased physical sources of randomness)上に構成し、(擬似)ランダム数発生器(PRNG)に対するいくつかの改善物がある。PRNGに対する全ての改善物の一般的な特徴は、これらがソースにより生成された情報の各ビットを用いないということか、又はこれらのアルゴリズムが指数関数的な性質を有しており、その結果、近似式が関係する必要があるかのいずれかである。PRNGの改善物に対して提案されたアルゴリズムでは、コンピュータ的に効果的な方法で実装することができるものもあれば、同時に、要求される特性のために数学的な証明が提供されるものもある。
【0232】
本発明の実施形態によれば、擬群ストリング変換に基づくPRNGのための改善物が提供される。好ましい1つの改善物は、情報ソースにより生成された情報の各ビットを用いる。その上、好ましい改善物は、1つの信号(例えば、ゼロ)のみを生成する固定ソースから、擬似ランダム数シーケンス(高品質の)を生成することができる。好ましいアルゴリズムの複雑度は線形である。すなわち、長さnの出力ストリングが、複雑度O(n)を持つ長さnの入力ストリングから生成される。これは、この改善物についての、コンピュータ的に非常に効果的なソフトウエア及びハードウエアの実装が設計され得るということを意味する。この好ましいアルゴリズムは、非常に柔軟性があり、文字が2ビット、4ビット、バイト、2バイト、からなるストリングのために同じ設計を用いることができ、一般的にこれはnビット文字の文字体系(n≧2)に合わせて設計することができる。
【0233】
擬群の定義は、上記で提供されている。上で提供されたのと同様に、擬群の定義は簡約律x*y=x*z⇒y=z、y*x=z*x⇒y=zを暗示し、方程式a*x=b、y*a=bは、それぞれのa,b∈Qに対して一意的な解x、yを有している。もし、Q(*)が擬群だとしたら、*は擬群作用と呼ばれる。
【0234】
いくつかの擬群ストリング変換は定義することができる。そのうち興味あるものについて以下に説明しよう。文字体系(すなわち有限の集合)Aを考え、A+によって、Aの元により形成された全ての非空の語の集合(すなわち有限ストリング)を表す。A+の元は、(a1,a2,...,an)よりもむしろ、a1a2...anで表されるであろう。尚、ここでa1∈Aである。仮に、*を集合A上への擬群作用としよう。各l∈Aに対して、2つの関数el,*,e’l,*,:A+→A+を以下のように定義する。仮に、ai∈A,α=a1a2...anとする。その結果、i=0,1,...,n−1に対して
【0235】
el,*(α)=b1...bn⇔bi+1=bi*ai+1
e’l,*(α)=b1...bn⇔bi+1=ai+1*bi
であり、ここでb0=lである。関数el,*及びe’l,*は、リーダlを伴う作用*に基づくA+のe変換及びe’変換と呼ばれる。e及びe’変換の図式的な表現は、以下の表に示されている。
【0236】
【表36】
一例として、A={0,1,2,3}とし、擬群(A,*)が以下に示す乗算スキームにより与えられるとしよう。
【0237】
ストリングα=1021000000000112102201010300を考え、リーダ0を選択する。その結果、変換e0,*及びe’0,*により、以下の変換されたストリングを得る。
【0238】
e0,*(α)=1 322 1 302 1 302 10112111 330 13130
及び
e’0,*(α)=33033333333 332 1211 233 2033111
【0239】
【表37】
【0240】
上記表で、これらの変換を連続4回適用したものを示す。αの中の0、1、2、3の最初の分布16/28、7/28、4/28、1/28が、e0,*4(α)では7/28、7/28、10/28、4/28に、またe’0,*4(α)では、5/28、10/28、5/28、8/28へと変化しており、従って、分布はより均一になったということに気づくことができる。
【0241】
集合A上へのいくつかの擬群作用を定義することができ、仮に*1、*2、...、*kをこのような作用の順序だとしよう(必ずしも独特なものではない)。本発明者らはまた、リーダl1,l2,...,lk∈Aを選択し(これも必ずしも独特なものではない)、その結果マッピングの構成
【0242】
【数42】
は、それぞれA+のE変換及びE’変換と言われる。関数Ek及びE’kは、多くの興味深い特性を有しており、もっとも重要なものは以下である。
【0243】
定理10:変換Ek及びE’kは、A+の置換である。
定理11:任意のストリングα=a1a2...an∈A+を考え、ここでai∈Aであり、また、β=Ek(α)、β=E’k(α)としよう。もしnが十分に大きい整数の場合、各l(ここで1≦l≦k)に対して、長さlのβ及びβ’のサブストリングの分布は一様である。(l>kに対しては、長さlのβ及びβ’のサブストリングの分布は一様ではない可能性があるということを書き留めておく。)
【0244】
ストリングα=a1a2...an∈A+(ここでai∈A)は、もしpがそれぞれのi≧0に対してai+1ai+2...ai+p=ai+p+1ai+p+2...ai+2pであるような最小の正の整数である場合、周期pを持つということを言っておく。仮に、α、β、β’を、定理10に有るようなものとし、変換Ek及びEk’のリーダをa*a≠aであるように仮定しよう。その結果、以下の特性を得る。
【0245】
定理12:ストリングβ及びβ’の周期は、kにより少なくとも直線的に増加している。
この周期の増加は擬群作用に基づいており、これら増加した周期のあるものについては、増加が指数関数的であり、すなわちもしαが周期pを有している場合は、β=Ek(α)及びβ=E’k(α)はp2kを超える周期を有する可能性がある、ということに注目すべきである。これについて、もっと詳細に論じよう。
【0246】
以下の実施例では、通常E変換のみを用いるが、理由は結果がE’変換に対しても対称的に成り立つからである。
擬群PRNG改善物を特に説明する上で、A+からのストリングを生成する別個の情報ソースSIを持つ。すなわち、SIの文字体系がAであり、ここでA={a0,a1,...,as−1}は有限の文字体系である。SIからの出力ストリングが擬似ランダム数であると考えても良い。すなわちAの元は基数sにおけるディジットで、SIはPRNGと考えてもよい。次に、PRNG改善物のための2つのアルゴリズムを、E変換及びE’変換にそれぞれ基づいて定義する。これらをEアルゴリズム及びE’アルゴリズムと呼ぶことにする。これらのアルゴリズムで、いくつかの内部変数b、L1、...、Lnを使用し、アルゴリズムの入力は擬群の次数s、次数sの擬群A,*、固定の元l∈A(リーダ)、変換el,*及びe’l,*の適用回数を与える整数n、並びに文字体系Aを伴う情報SIのあるソースから得られた擬似ランダムストリングb0,b1,b2,b3,...である。出力は、改善された擬似ランダムストリングである。
【0247】
【表38】
E’アルゴリズムはEアルゴリズムとはステップ6のみが異なる。
【0248】
【表39】
【0249】
指数擬群の意味を説明し、数s及びnに対する適切なパラメータを提供しなければならない。実際、数sは、ある意味では情報ソースSIにより定義されるものの、完全にではない。仮に、SIの文字体系を、全ての8ビットの文字からなるASCIIとしよう。その結果、Aについての次の選択肢、すなわちA={0,1,2,3},A={0,1,2,...,7}、A={0,1,...,15}、A={0,1,...,31}、A={0,1,...,63}、A={0,1,2,...,127}を得る。すなわち、SIの出力ストリングは、ビットのストリングと考えられ、その後、これらのビットは2つ、3つなどを単位としてグループ分けされる。(この場合、2バイト文字、3バイト文字等を伴う文字体系を考えることができるが、512次以上の擬群は多くの記憶メモリを必要とし、且つ一般的に計算がより遅くなり、望ましくはないだろう。)数nは、「より小さなsに対してはより大きいn」の原則により選択すべきであり、この選択は情報ソースSIに依存する。従って、もしSIが一定の出力(例えば、ゼロ)を提供する場合は、実験によれば、規則の1つは「ns≧512&n>8」ということも有りうる。もしSIが一種のランダムシーケンスを生成し、nは小さくできる場合は、時々n=1でまったく充分である。例えば、Pascalで用いられるPRNGは、バッテリ「diehard」における統計的なテストをパスしないが、e変換のたった1回の適用の後では、これらの全てをパスする。もちろん、より大きいsに対してはより良い出力擬似ランダムストリングが得られるが、利用可能な性能(アルゴリズムの速度、アクセス可能なメモリ等)により最適化されるべきである。これらの言及された特性の全ては、定理11及び定理12と、数百回の実験を通して得られた経験とに基づいている。
【0250】
PRNGを定義及び改善するための擬群の可能性が、考察された。以前の研究により、有限擬群のクラスは2つの互いに素なサブクラス、すなわち線形(つまりフラクタルな)擬群のクラス及び指数(つまり均一な)擬群のクラスに分離され得るということを結論付けることができる。これらの2つのクラスを分けるいくつかの特性があり、本発明者らの目的のためにはこの1つが重要である。有限の集合Q={q0,q1,...qs−1}を仮定し、仮に(Q,*)が擬群とし、周期nの無限(すなわち十分に長い)ストリングα=q0q1...qs−1q0q1...qn−1q0q1...qs−1...から始めよう。α上にel,*変換をr回適用し、得られたストリングをαrで表す。次に、もしストリングαrの周期がrの一次関数の場合は、擬群(Q,*)は線形であると呼ばれる。逆の場合は、ストリングαrの周期が指数関数nr(1<n≦sである定数nに対して)であり、擬群(Q,*)は指数だと言われる。数nは、指数擬群(Q,*)の成長周期と呼ばれる。(線形と指数の2種類の有限擬群しか存在しないのかという問題については、まだ答えが出ていない。)
【0251】
Dimitrova,V.及びMarkovski J.による「擬群擬似ランダムシーケンス生成器について」(Proc.of the 1−st Balkan Conference in Informatics,YManolopoulos and P.Spirakis eds.,21−23 Nov.2004,Thessaloniki,pp.393−401)で提供された統計的な結果により、線形擬群の割合は、擬群の次数が増加すると減少するということが示された。更に、「悪い」擬群、すなわち成長周期s≦2を伴う線形擬群及び指数擬群は、擬群の次数により指数関数的に減少する。次の表は、Dimitrova他による次数4、5、6、7、8、9、10の擬群に対する「悪い」擬群の割合を例示している。
【0252】
【表40】
上記の結果は、7回のみのe変換を適用して結果が得られたことから、あまり正確ではない(完全な分類が得られた4次の擬群を除いて)ということに注意しなければならない。すなわち、たまたま7回の適用を超えた後に一部の擬群が≧2の成長周期を得ることが有り得る。
【0253】
ランダムに選ばれた106個の16次の擬群に対して以下の実験を行った。周期16を伴う次の周期的なストリング、0、1、2、...、14、15、0、1、2、...、14、15、0、1、2、...、14、15、...上に、各擬群のel,*変換を5回適用した後の成長周期をカウントした。リーダlの値は、結果には影響しなかった。成長周期についての得られた分布は、次の表に示されている。
【0254】
【表41】
【0255】
この表から、907個の擬群が、5回のe変換の適用後に、成長周期<2を有しているということが分かる。本発明者らは、これらの各擬群を6回適用した後に成長周期をカウントし、これらの中の15個のみが成長周期<2を有しているということを得た。7回の適用後では、1つの擬群のみが成長周期<2を有していたが、これはe変換の10回の適用の後で成長周期2を得た。この実験は、16次の線形擬群をランダムに見つけるのは容易ではないということを示している。
【0256】
好ましい一実施形態によるこれらのPRNG改善物は、ソフトウエア及びハードウエアの中に非常に効果的に実装可能である。これらは、線形複雑度を有しており、もし次数≦16の擬群が用いられる場合には、1Kb未満のワーキングメモリの中にインストールすることができる。従って、これらは組み込みシステムで用いることができる。アルゴリズムの性能は、定理10、11、12に基づく。定理10より、Eアルゴリズム及びE’アルゴリズムは単射であり、情報ソースSIから得られる異なる入力ストリングは、異なる出力ストリングを生成するということを意味する。定理11は、文字、文字の対、3つ文字組、等の分布が一様である、均一な出力ランダムストリングを得る事を可能とする。最後に、定理12及び統計的な結果は、出力ランダムストリングの周期は、必要とされるのと同じくらい大きくすることができる、ということを示している(実際のところ、これは潜在的に無限である)。出力ランダムストリングの望ましい特性は、適切な(指数)擬群を用いることにより、及び適切なパラメータsの選択により、容易に実現することができる。上記の特性は良好な擬似ランダムストリングを得るには不十分であるということは、明確である。得られた擬似ランダムストリングを、利用可能な統計的なテスト(Diehard)を用いてチェックしたが、これらは全てのテストをパスした。
【0257】
定理11及び12の証明が、これから提供される。定理11に関しては、証明における専門的な事項を簡単にするため、文字体系Aは{0,...,s−1}、ここで0、1、...、s−1は整数(s>1)とし、且つ*はA上への擬群作用とする。ランダム変数{Yn|n≧1}のシーケンスを以下のように定義する。各i=0,1,...,s−1に対してqi>0且つ
【0258】
【数43】
となるような、文字0、1、...、s−1の確率分布(q0,q1,...qs−1)を持つとしよう。e変換を考え、仮にγ=E(β)としよう。ここで、β=b1...bk,γ=c1...ck∈A+(bi,ci∈A)である。ストリングβは、任意に選択されたと仮定する。次に、ストリングγの中のm番目の文字がまさにiであるランダム事象を、{Ym=i}により表す。(1)により与えられるe変換の定義は、γの中のm番目の要素の出現はγの中の(m−1)番目の要素にのみ依存し、(m−2)番目、...、1番目には依存しないことから、P(Ym=j|Ym−1=jm−1,...,Y1=j1)=P(Ym=j|Ym−1=jm−1)を暗示している。従って、シーケンス{Ym|m≧1}は、マルコフ連鎖(Markov chain)であり、本発明者らはこれを、擬群マルコフ連鎖(qMc)と呼ぶ。仮に、pijを、ストリングγで文字jが特定の文字iの後に現れる確率を表すとする。すなわち、
【0259】
i,j=0,1,...,s−1に対して、pij=P(Ym=j|Ym−1=i)
である。
このqMcの定義は、pijはmに依存しないことを暗示し、従ってqMcは一様なマルコフ連鎖であるということがわかる。確率pijは以下のように決定される。仮に、i,j,t∈Aとし、擬群(A,*)でi*t=jが真に等しいとしよう。その結果、方程式i*x=jは未知のxに対して一意的な解を有していることから、
【0260】
P(Ym=j|Ym−1=i)=qt
である。従って、各i,j=0,...,s−1に対してpij>0、すなわちqMcの遷移マトリックスII=(pij)は正則である。明らかに、如何なるマルコフ連鎖でも、
【0261】
【数44】
である。しかしながら、qMcに対しては同様に、
【0262】
【数45】
を得る。すなわち、qMcの遷移マトリックスIIは二重に確率論的である。
IIの正則性は、pII=pになるような固有の一定確率ベクトルp=(p0,...,ps−1)が存在し、pの全ての要素は正であるということを暗示する。また、IIも二重に確率論的であるために、
【0263】
(1/s,1/s,...,1/s)は、pII=pの解であることを確認することができる。従って、pi=1/s(i=0,...,s−1)である。このようにして、以下の補助定理を得る。
【0264】
補助定理:仮にβ=b1b2...bk∈A+及びγ=E(1)(β)としよう。その結果、各i∈A及び各m=1,2,...kに対してストリングγ=c1...ckのm番目の場所における文字iの出現確率は、およそ1/sである。
【0265】
この補助定理より、qspにより十分に大きなストリングβから得られたストリングγ=E(β)の中の文字の分布は、均一であるであるということがわかる。ストリングγ=E”(β)(β=b1b2...bk∈A+)のサブストリングci+1...ci+lを考えることにより議論を進める。ここで、l≧1は固定で、i∈{0,1,...,k−l}である。いつものように、ci+1...ci+lはγ長さlのサブストリングと言う。ランダムな変数のシーケンス{Zm(n)|m≧1}を
【0266】
【数46】
により定義し、ここで(及びこの先も含め)上付き文字(n)で、enのような変換によりストリングβから得られたストリングγ=i1(n)i2(n)…ik(n)のサブストリングを考えているということを表わす。従って、Ym(n)はまさに、前のように定義されたランダム変数Ymである。以下のマッピング、
【0267】
【数47】
は、Alから{0,1,...,sl−1}への全単射であり、従って、シーケンス{Zm(n)|m≧1}は明確である。シーケンス{Zm(n)|m≧1}は、γの中のl個の連続したシンボルのサブストリングim(n)im+1(n)…im+l−1(n)の出現が、先行するim−1(n)im(n)im+l(n)…im+l−2(n)にのみ依存することから、同様にマルコフ連鎖(n−qMc)である。t及びt’により、以下の数を表す。
【0268】
【数48】
仮に、Pt’tを、あるストリングγ=E(n)(β)で、γのサブストリングim(n)…im+l−2(n)im+l−1(n)(m番目からm+l−1番目の位置までの)が、γの特定のサブストリングim−1(n)im(n)…im+l−3(n)im+l−2(n)(m−1番目からm+l−2番目まで)の後に、出現する(オーバーラップを伴って)確率だとする。明らかに、もしj∈{m,m−1,...,m+l−2}に対してij(n)とij‘(n)とが等しくないなら、Pt’t=0である。逆の場合(l−1文字がオーバーラップする場合)、
【0269】
【数49】
を得る。
【0270】
擬群変換の数nについての帰納法を用いることにより、定理11を証明しよう。すなわち、この以下の変形、
「仮に、1≦l≦n、β=b1b2...bk∈A+、且つγ=E(n)(β)とする。そうすると、長さlのγのサブストリングの分布は一様である。」
を証明する。
【0271】
A={0,...,s−1}という表記法を思い出して頂きたい。n=1に対してこの補助定理を得、且つn=r+1、r≧1としよう。帰納法的な仮説によれば、γ’=Er(β)において、l≧rに対して長さlのサブストリングの分布は一様である。先ず、l≦rと仮定し、
【0272】
【数50】
の長さlのサブストリングを考える。A上への擬群作用を、*1,...,*r+1と取り、
【0273】
【数51】
を思い起こそう。(A,*r+1)は擬群であるので、各j、2≦j≧kに対して方程式
【0274】
【数52】
は、xに対する一意的な解を有し、これをx=ij(r)で表す。ii(r)により、方程式
【0275】
【数53】
の解を表し、ここでαr+1∈AはEr+1の定義における固定の要素である。このようにして、任意のd、0≦d≦k−mに対し、γのサブストリングim(r+1)im+1(r+1)…im+d(r+1)で作業する代わりに、γ’=E(r)(β)のサブストリングim(r)im+1(r)…im+d(r)を考えることができる。擬群方程式における解の一意性は、
【0276】
【数54】
を同様に得るということを暗示している。ここでi0(r+1)=ar+1である。その結果、(3)及び(4)により(d=l−1、d=l−2及びn=r+1に対して、
【0277】
【数55】
を得、ここでl≦rである。帰納法的な仮説により、本発明者らは、
【0278】
【数56】
すなわちpt’t=1/sを得る。従って、確率Pt’tに対して本発明者らは、
【0279】
【数57】
を得る。
【0280】
これは、n−qMcの遷移IIのsl×slマトリックスの各列の中に、まさに1/sに等しいs個の要素が存在するであろうし(j=m,...,m+l−2に対し、ij‘(r+l)=ij(r+l)となるものに対して)、他の構成要素は0に等しく、その結果IIの各列の要素の合計は1に等しいであろう:従って、遷移マトリックスIIは、二重に確率論的である。これは、マトリックスIIlの各要素が正であることから、正則行列でもある。これは、系PII=Pは、一意的な固定の確率ベクトル
【0281】
【数58】
を解として持っているということを暗示している。すなわち、長さl≦rのγのサブストリングの分布は一様である。ここでl=r+1を仮定し、仮に数t、t’および確率pt’tが前と同様に定義されるとしよう。すると、pt’tに対して、上記の方程式がpt’tについても成り立つということを得る。すなわち、
【0282】
【数59】
である。
前に行ったのと同様にして、方程式
【0283】
【数60】
が一意的な解x=ij(u−1)を擬群(A,*u)の中に持っており、ここでu=r,r−1,...,2,1であり、γ’=E(r)(β),γ”=E(r−1)(β),...,γ(r)=E(1)(β),γ(r=1)=E(0)(β)=βのサブストリングを考えることができる。その結果、確率pt’tに対して、方程式(4)及び(6)を繰り返し用いながら、上付き文字(r)を(r−1)へ、(r−2)へ、...,(1)へと減じていく。すなわち、
【0284】
【数61】
を得る。
ここで、
【0285】
【数62】
である。
【0286】
【数63】
なので、
【0287】
【数64】
を得、これは
【0288】
【数65】
を暗示している。
本発明者らは、方程式
【0289】
【数66】
が、各u=r+1,r,...,2,1に対して擬群
【0290】
【数67】
の中に一意的な解を有していることから、方程式
【0291】
【数68】
が正しいということが成り立つ。
従って、遷移行列IIは二重に確率論的であり、正則であり(IIr+1は正のエントリを持っている)、これは系pII=pが一意的且つ固定の確率ベクトル
【0292】
【数69】
を解として持つということを意味する。
【0293】
一般的に、ストリングγ=E(n)(β)の中の長さlのサブストリングの分布は、l>nに対しては一様でない。すなわち、l=n+1に対して先の証明の最後の部分と同じようなやり方により、
【0294】
【数70】
であり、その結果(上述の暗示された要約の中にあるように)本発明者らは、
【0295】
【数71】
を得る。
【0296】
もちろん、最後の合計は1と同じであるはずがない。つまり、遷移行列IIは二重に確率論的であるはずはない。同じ考察を、l=n+2,n+3,...に対して同様に成すことができよう。
【0297】
定理12を証明するために、次数sの有限擬群(A,*)を考え、a*a≠aとなるような固定の元a∈Aを取る。定理12を、より極端なケースで証明することにし、従って、周期1のストリングα=a1...akを取り、ここで各i≧1に対してaj=aである。次に、α上にE=ea,*変換を数回適用する。Enは、Eがn回適用されたことを意味し、En(α)=a1(n)…ak(n)で表す)。結果は、以下の表に示されている。
【0298】
【表42】
a*a≠a且つ
【0299】
【数72】
であることから、或るp>1に対してa’p=aを得(従って、pは少なくともsであることを得る)、仮にpをこの特性を持つ最小の整数としよう。ストリングE(α)は周期的であり周期pを伴うということがいえる。同じような理由で、ストリングE(α)のそれぞれが周期的であるということを得る。全てのストリングE(α)が同じ周期pを持つことは不可能であるということを示そう。もしこれを真と仮定するならば、各n≧に対してap(n)=aを得るであろう。次に、同様に以下の方程式が成り立つようなbjEAが存在するということを得る。
【0300】
【数73】
次に、a*b1=b1を得、そしてこれは書くn≧1に対してa1(n)=b1を暗示している。a*a=a*b1=b1を得たが、これはa=b1を暗示、すなわちa*a≠aとの矛盾を暗示する。結果として、
【0301】
【数74】
を得る。ストリングEa(p+1)(α)の周期はpでないと結論付けられる。
【0302】
次に、もしストリングβ∈A+が周期pを有しており、且つγ=E(β)が周期qを有している場合、pはqの因数であるということを示そう。定理10によるE変換は置換であるということを思い起こそう。そうすると、逆変換E−1が存在するということになる。さて、もしγ=b1...bqb1...bq...b1...bqであれば、β=E−1(γ)=c1c2...cqc1c2...cq...c1c2...cqは周期≦qを持つ周期的なストリングである。従って、p≦qであり、これはpはqの因数であることを暗示する。
【0303】
上記の結果を組み合わせて、以下の定理12の変形を証明した。
仮に、αを周期p0を持つストリングとする。すると、ストリングβ=Ea(n)(α)は周期的であって周期pnを有しており、これはp0の倍数である。βの周期pnは不等式
各n≧1に対して
ppn−1>pn−1
を満足する。
【0304】
本発明の特定の実施形態が示され説明されたが、その他の変更物、置換物、及び代替物は、通常の技術的スキルを有する当業者には明らかであるということが、理解されるべきである。このような、変更物、置換物、及び代替物は、本発明の精神及び範囲から離れることなく成すことができ、これについては添付の請求項から判断されるべきである。
本発明の多様な特徴が、添付の請求項で説明される。
【図面の簡単な説明】
【0305】
【図1】本発明の実施形態による送信器及び受信器を含む、基本的な通信システムのブロック図である。
【図2】完全非同期式ストリーム暗号を説明するためのブロック図である。
【特許請求の範囲】
【請求項1】
同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである擬群を、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
バイナリの付加的な暗号のためのキーストリームを、前記決定されたワーキングキー、前記決定された擬群、及び前記初期擬群から生成することと、
前記バイナリ付加的暗号に、前記メッセージを入力ストリームとして導入することと、
前記暗号化されたメッセージを含む前記バイナリ付加的暗号の出力ストリームを作り出すこととを含む、方法。
【請求項2】
前記ワーキングキーは、前記秘密初期キーKinを用いて決定される、請求項1に記載の方法。
【請求項3】
前記擬群を決定することは、
前記秘密初期キーKinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを、既定のサイズに拡張することと、
前記拡張されたキーを前記初期擬群を用いて変換することと、
前記初期擬群を前記決定された擬群に、前記拡張されたキーを用いて変換することとを含む、請求項2に記載の方法。
【請求項4】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項3に記載の方法。
【請求項5】
前記キーストリームを生成することは、
a)カウンタのCounterを0;p=[m/2]に設定し、ここでmは前記ワーキングキーの長さであることと、
b)初期暫定変数XにK[Counter mod n]を割り当てることと、
c)初期暫定変数TにK[Counter+p mod n]を割り当てることと、
d)暫定変数Xを、km−1にTを割り当てして
for i=0 to m−1 do
begin
X←Ki*X;
T←T・X;
Ki←X;
end;
に従って決定することと、
e)前記出力ストリーム、
Output:
【数1】
を提供し、ここでInputは前記入力ストリームの部分を含んでいることと、
f)CounterをCounter+1とすることと、
g)b)に戻ることを含み、
前記出力ストリームを作り出すことは、ステップe)を実行することと、・は任意の擬群作用であることとを含む、請求項1〜4のいずれかに記載の方法。
【請求項6】
同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである擬群を、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
バイナリの付加的な暗号のためのキーストリームを、前記決定されたワーキングキー、前記決定された擬群、及び前記初期擬群から生成することと、
前記バイナリ付加的暗号に、前記暗号化されたメッセージを入力ストリームとして導入することと、
前記復号化されたメッセージを含む前記バイナリ付加的暗号の出力ストリームを作り出すこととを含む方法。
【請求項7】
前記ワーキングキーは前記秘密初期キーkinを用いて決定される、請求項6に記載の方法。
【請求項8】
前記擬群を決定することは、
前記秘密初期キーKinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項7に記載の方法。
【請求項9】
前記ワーキングキーを決定することは、
前記拡張されたキーの部分集合を選択することを含む、請求項8に記載の方法。
【請求項10】
前記キーストリームを生成することは、
a)カウンタのCounterを0;p=[m/2]に設定し、ここでmは前記ワーキングキーの長さであることと、
b)初期暫定変数XにK[Counter mod n]を割り当てることと、
c)初期暫定変数TにK[Counter+p mod n]を割り当てることと、
d)暫定変数Xを、km−1にTを割り当てして、
for i=0 to m−1 do
begin
X←Ki*X;
T←T・X;
Ki←X;
end;
に従って決定することと、
e)前記出力ストリーム、
Output:
【数2】
を提供し、ここでInputは前記入力ストリームの部分を含んでいることと、
f)CounterをCounter+1とすることと、
g)b)に戻ることとを含み、
前記出力ストリームを作り出すことは、ステップe)を実行することと、・は任意の擬群作用であることとを含む、請求項6〜9のいずれかに記載の方法。
【請求項11】
前記初期擬群は秘密である、請求項1〜10のいずれかに記載の方法。
【請求項12】
自己同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージの暗号化を、前記決定されたワーキングキー、前記決定された擬群、及び前記暗号化されるメッセージの固定数の前の文字の関数として実行することとを含む方法。
【請求項13】
前記ワーキングキーは前記秘密初期キーkinを用いて決定される、請求項12に記載の方法。
【請求項14】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項13に記載の方法。
【請求項15】
前記ワーキングキーを前記決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項14に記載の方法。
【請求項16】
前記暗号化することは、
a)Counterを0;p=[n/2]に設定することと、
b)キー値K0をK0*(MCounter*KCounter+p mod n)に決定することと、
c)for i=0 to n−1 do
begin
Ki←Ki*Ki−1;
end;
とすることと、
d)出力CCounter=Kn−1を決定することと、
e)CounterをCounter+1に設定することと、
f)b)に戻ることとを含む、請求項12〜15のいずれかに記載の方法。
【請求項17】
自己同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージの復号化を、前記決定されたワーキングキー、前記決定された擬群、及び前記復号化されるメッセージの固定数の前に決定された文字の関数として実行することとを含む方法。
【請求項18】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項17に記載の方法。
【請求項19】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項18に記載の方法。
【請求項20】
前記ワーキングキーを前記決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項19に記載の方法。
【請求項21】
前記復号化することは、
a)Counterを0;p=[n/2]に設定することと、
b)暫定変数XにKn−1、Kn−1にCCounterを割り当てることと、
c)for i=n−2 down to 0 do
begin
Y←Ki;
Ki←X\Ki+1;
X←Y;
end;
とすることと、
d)復号化出力:
MCounter=(X\K0)/KCounter+p mod n
を決定することと、
e)CounterをCounter+1に設定することと、
g)b)に戻ることとを含み、
ここで、\及び/は決定される擬群*のパラストロフ作用である、請求項16〜20のいずれかに記載の方法。
【請求項22】
前記初期擬群は秘密である、請求項12〜21のいずれかに記載の方法。
【請求項23】
非同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージを、前記決定されたワーキングキー、前記決定された擬群、及び前記メッセージの固定数の前の文字の関数として暗号化することとを含む方法。
【請求項24】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項23に記載の方法。
【請求項25】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項24に記載の方法。
【請求項26】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項25に記載の方法。
【請求項27】
前記暗号化することは、長さnのワーキングキーk0を用いて、
a)初期変数XをInputに設定し、ここでInputは前記メッセージのrビット文字であることと、
b)初期変数T←0を設定することと、
c)for i=0 to n−1 do
X←Q[Ki,X];
【数3】
Ki←X;
とすることと、
d)Kn−1をTとすることと、
e)前記暗号化されたメッセージとしてXを出力することと、
f)a)に戻ることとを含む、
請求項16〜20のいずれかに記載の方法。
【請求項28】
非同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージを、前記決定されたワーキングキー、前記決定された擬群、及び前記暗号化されたメッセージの固定数の前の文字の関数として暗号化することとを含む方法。
【請求項29】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項28に記載の方法。
【請求項30】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項29に記載の方法。
【請求項31】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項30に記載の方法。
【請求項32】
前記暗号化することは、長さnのワーキングキーk0を用いて、
a)初期変数X、TをInputに定義し、ここでInputは前記暗号化されたメッセージのrビット文字であることと、
b)暫定変数tempをKn−1に定義することと、
c)for i=n−1 down to 0 do
X←Qpar[temp,X];
【数4】
temp←Ki−1;
Ki←X;
とすることと、
d)Kn−1をTとすることと、
e)前記復号化されたメッセージとしてXを出力することと、
f)a)に戻ることとを含み、
ここでQparは、前記決定された擬群に対する左パラストロフの擬群作用である、請求項28〜32のいずれかに記載の方法。
【請求項33】
チャンネルを介して送信されるメッセージに対するエラー訂正コードを提供する方法であって、前記メッセージは長さNblockのブロックへと分割されたシンボルのストリームを含み、前記方法は、
前記起こりうる2Nblockのブロックの各々を長さN>Nblockのコード語Cに、前記エラー訂正コードがマッピングT:{0,1}NblockをT:{0,1}Nして定義されるようにマッピングすることと、
前記マッピングされたコード語を前記チャンネルを介して送信することとを含み、
前記マッピングは反復的であり、
任意のコード語Cに対して、長さrのCのサブストリングの分布は一様である、方法。
【請求項34】
前記マッピングは、NblockビットのブロックMに対して、
長さNのブロックLを、ブロックMに冗長情報を付加することにより作り出し、LはL1L2...Lpを含み、ここで各Liはsビットのブロックであり且つN=spであることと、
前記ブロックLを、全単射によりブロックC=C1C2...Cpへとマッピングすることとを含む、請求項33に記載の方法。
【請求項35】
前記ブロックLの前記マッピングは、
仮に、k1,1,k1,2,...k1,nをそれぞれサイズ長さsのn個の初期ストリングとすると、ブロックLをCに
for i=1,2,...p
bi,0=Li
for j=1,2,...n
bi,j=f(ki,j,bi,j−1)
end j
Ci=bi,n
end i;
のようにマッピングし、ここでf、gは作用であることを含む、請求項34に記載の方法。
【請求項36】
f及びgは擬群作用を含む、請求項35に記載の方法。
【請求項37】
前記マッピングは、前記メッセージM上に非同期式ストリーム暗号演算を実行することを含む、請求項33〜36のいずれかに記載の方法。
【請求項38】
文字体系Aを伴う情報ソースSIから得られる、擬似ランダムストリングb0、b1、b2、b3、...のランダム化を改善する方法であって、
次数sの指数擬群(A,*)を選択し、ここでsは選択可能な正の整数であり、
前記擬似ランダムストリングの要素上にn擬群変換を実行することにより、前記擬似ランダムストリングを変換し、ここでnは選択可能な正の整数である、方法。
【請求項39】
前記変換は、
a)for i=1 to n do Li←l;
b)do
b←RandomElement(SI);
L1←L1*b;
for i=2 to n do Li←Li*Li−1;
Output:Ln;
loop;
を含み、
ここで、*は前記選択された指数擬群(A,*)である、請求項38に記載の方法。
【請求項40】
前記変換は、
a)for i=1 to n do Li←l;
b)do
b←RandomElement(SI);
L1←b*L1;
for i=2 to n do Li←Li−1*Li;
Output:Ln;
loop;
を含み、
ここで、*は前記選択された指数擬群(A,*)である、請求項39に記載の方法。
【請求項41】
正の整数sを選択することと、
正の整数nを選択することとを更に含む、請求項38〜40のいずれかに記載の方法。
【請求項42】
請求項1〜41のいずれかに記載の方法を実行するための、コンピュータで読み取り可能な手段。
【請求項43】
請求項1〜41のいずれかに記載の方法を実行するためにエンコードされたチップ。
【請求項44】
請求項1〜41のいずれかに記載の方法をコンピュータに実行させるために構成された、伝播信号。
【請求項45】
請求項1〜41のいずれかに記載の方法を実行するためにプログラムされた、コンピュータ。
【請求項46】
メッセージを情報ソースから受信し、且つ、請求項1〜41のいずれかに記載の方法を実行するために構成された、送信器。
【請求項47】
チャンネルからメッセージを受信し、且つ、請求項1〜41のいずれかに記載の方法を実行するために構成された、受信器。
【請求項1】
同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである擬群を、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
バイナリの付加的な暗号のためのキーストリームを、前記決定されたワーキングキー、前記決定された擬群、及び前記初期擬群から生成することと、
前記バイナリ付加的暗号に、前記メッセージを入力ストリームとして導入することと、
前記暗号化されたメッセージを含む前記バイナリ付加的暗号の出力ストリームを作り出すこととを含む、方法。
【請求項2】
前記ワーキングキーは、前記秘密初期キーKinを用いて決定される、請求項1に記載の方法。
【請求項3】
前記擬群を決定することは、
前記秘密初期キーKinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを、既定のサイズに拡張することと、
前記拡張されたキーを前記初期擬群を用いて変換することと、
前記初期擬群を前記決定された擬群に、前記拡張されたキーを用いて変換することとを含む、請求項2に記載の方法。
【請求項4】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項3に記載の方法。
【請求項5】
前記キーストリームを生成することは、
a)カウンタのCounterを0;p=[m/2]に設定し、ここでmは前記ワーキングキーの長さであることと、
b)初期暫定変数XにK[Counter mod n]を割り当てることと、
c)初期暫定変数TにK[Counter+p mod n]を割り当てることと、
d)暫定変数Xを、km−1にTを割り当てして
for i=0 to m−1 do
begin
X←Ki*X;
T←T・X;
Ki←X;
end;
に従って決定することと、
e)前記出力ストリーム、
Output:
【数1】
を提供し、ここでInputは前記入力ストリームの部分を含んでいることと、
f)CounterをCounter+1とすることと、
g)b)に戻ることを含み、
前記出力ストリームを作り出すことは、ステップe)を実行することと、・は任意の擬群作用であることとを含む、請求項1〜4のいずれかに記載の方法。
【請求項6】
同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである擬群を、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
バイナリの付加的な暗号のためのキーストリームを、前記決定されたワーキングキー、前記決定された擬群、及び前記初期擬群から生成することと、
前記バイナリ付加的暗号に、前記暗号化されたメッセージを入力ストリームとして導入することと、
前記復号化されたメッセージを含む前記バイナリ付加的暗号の出力ストリームを作り出すこととを含む方法。
【請求項7】
前記ワーキングキーは前記秘密初期キーkinを用いて決定される、請求項6に記載の方法。
【請求項8】
前記擬群を決定することは、
前記秘密初期キーKinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項7に記載の方法。
【請求項9】
前記ワーキングキーを決定することは、
前記拡張されたキーの部分集合を選択することを含む、請求項8に記載の方法。
【請求項10】
前記キーストリームを生成することは、
a)カウンタのCounterを0;p=[m/2]に設定し、ここでmは前記ワーキングキーの長さであることと、
b)初期暫定変数XにK[Counter mod n]を割り当てることと、
c)初期暫定変数TにK[Counter+p mod n]を割り当てることと、
d)暫定変数Xを、km−1にTを割り当てして、
for i=0 to m−1 do
begin
X←Ki*X;
T←T・X;
Ki←X;
end;
に従って決定することと、
e)前記出力ストリーム、
Output:
【数2】
を提供し、ここでInputは前記入力ストリームの部分を含んでいることと、
f)CounterをCounter+1とすることと、
g)b)に戻ることとを含み、
前記出力ストリームを作り出すことは、ステップe)を実行することと、・は任意の擬群作用であることとを含む、請求項6〜9のいずれかに記載の方法。
【請求項11】
前記初期擬群は秘密である、請求項1〜10のいずれかに記載の方法。
【請求項12】
自己同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージの暗号化を、前記決定されたワーキングキー、前記決定された擬群、及び前記暗号化されるメッセージの固定数の前の文字の関数として実行することとを含む方法。
【請求項13】
前記ワーキングキーは前記秘密初期キーkinを用いて決定される、請求項12に記載の方法。
【請求項14】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項13に記載の方法。
【請求項15】
前記ワーキングキーを前記決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項14に記載の方法。
【請求項16】
前記暗号化することは、
a)Counterを0;p=[n/2]に設定することと、
b)キー値K0をK0*(MCounter*KCounter+p mod n)に決定することと、
c)for i=0 to n−1 do
begin
Ki←Ki*Ki−1;
end;
とすることと、
d)出力CCounter=Kn−1を決定することと、
e)CounterをCounter+1に設定することと、
f)b)に戻ることとを含む、請求項12〜15のいずれかに記載の方法。
【請求項17】
自己同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージの復号化を、前記決定されたワーキングキー、前記決定された擬群、及び前記復号化されるメッセージの固定数の前に決定された文字の関数として実行することとを含む方法。
【請求項18】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項17に記載の方法。
【請求項19】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項18に記載の方法。
【請求項20】
前記ワーキングキーを前記決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項19に記載の方法。
【請求項21】
前記復号化することは、
a)Counterを0;p=[n/2]に設定することと、
b)暫定変数XにKn−1、Kn−1にCCounterを割り当てることと、
c)for i=n−2 down to 0 do
begin
Y←Ki;
Ki←X\Ki+1;
X←Y;
end;
とすることと、
d)復号化出力:
MCounter=(X\K0)/KCounter+p mod n
を決定することと、
e)CounterをCounter+1に設定することと、
g)b)に戻ることとを含み、
ここで、\及び/は決定される擬群*のパラストロフ作用である、請求項16〜20のいずれかに記載の方法。
【請求項22】
前記初期擬群は秘密である、請求項12〜21のいずれかに記載の方法。
【請求項23】
非同期式ストリーム暗号を用いてメッセージを暗号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージを、前記決定されたワーキングキー、前記決定された擬群、及び前記メッセージの固定数の前の文字の関数として暗号化することとを含む方法。
【請求項24】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項23に記載の方法。
【請求項25】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項24に記載の方法。
【請求項26】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項25に記載の方法。
【請求項27】
前記暗号化することは、長さnのワーキングキーk0を用いて、
a)初期変数XをInputに設定し、ここでInputは前記メッセージのrビット文字であることと、
b)初期変数T←0を設定することと、
c)for i=0 to n−1 do
X←Q[Ki,X];
【数3】
Ki←X;
とすることと、
d)Kn−1をTとすることと、
e)前記暗号化されたメッセージとしてXを出力することと、
f)a)に戻ることとを含む、
請求項16〜20のいずれかに記載の方法。
【請求項28】
非同期式ストリーム暗号を用いてメッセージを復号化する方法であって、
初期擬群のオートトープである次数r2の擬群を、rビット文字に属する、選択可能な長さnの秘密初期キーKinに基づいて決定することと、
ワーキングキーを決定することと、
前記メッセージを、前記決定されたワーキングキー、前記決定された擬群、及び前記暗号化されたメッセージの固定数の前の文字の関数として暗号化することとを含む方法。
【請求項29】
前記ワーキングキーは前記秘密初期キーKinを用いて決定される、請求項28に記載の方法。
【請求項30】
前記擬群を決定することは、
前記秘密初期キーkinを受信することと、
前記キーをパディングすることと、
前記パディングされたキーを既定のサイズまで拡張することと、
前記初期擬群を用いて前記拡張されたキーを変換することと、
前記拡張されたキーを用いて前記初期擬群を前記決定される擬群に変換することとを含む、請求項29に記載の方法。
【請求項31】
前記ワーキングキーを決定することは、
長さnの前記拡張されたキーの部分集合を選択することを含む、請求項30に記載の方法。
【請求項32】
前記暗号化することは、長さnのワーキングキーk0を用いて、
a)初期変数X、TをInputに定義し、ここでInputは前記暗号化されたメッセージのrビット文字であることと、
b)暫定変数tempをKn−1に定義することと、
c)for i=n−1 down to 0 do
X←Qpar[temp,X];
【数4】
temp←Ki−1;
Ki←X;
とすることと、
d)Kn−1をTとすることと、
e)前記復号化されたメッセージとしてXを出力することと、
f)a)に戻ることとを含み、
ここでQparは、前記決定された擬群に対する左パラストロフの擬群作用である、請求項28〜32のいずれかに記載の方法。
【請求項33】
チャンネルを介して送信されるメッセージに対するエラー訂正コードを提供する方法であって、前記メッセージは長さNblockのブロックへと分割されたシンボルのストリームを含み、前記方法は、
前記起こりうる2Nblockのブロックの各々を長さN>Nblockのコード語Cに、前記エラー訂正コードがマッピングT:{0,1}NblockをT:{0,1}Nして定義されるようにマッピングすることと、
前記マッピングされたコード語を前記チャンネルを介して送信することとを含み、
前記マッピングは反復的であり、
任意のコード語Cに対して、長さrのCのサブストリングの分布は一様である、方法。
【請求項34】
前記マッピングは、NblockビットのブロックMに対して、
長さNのブロックLを、ブロックMに冗長情報を付加することにより作り出し、LはL1L2...Lpを含み、ここで各Liはsビットのブロックであり且つN=spであることと、
前記ブロックLを、全単射によりブロックC=C1C2...Cpへとマッピングすることとを含む、請求項33に記載の方法。
【請求項35】
前記ブロックLの前記マッピングは、
仮に、k1,1,k1,2,...k1,nをそれぞれサイズ長さsのn個の初期ストリングとすると、ブロックLをCに
for i=1,2,...p
bi,0=Li
for j=1,2,...n
bi,j=f(ki,j,bi,j−1)
end j
Ci=bi,n
end i;
のようにマッピングし、ここでf、gは作用であることを含む、請求項34に記載の方法。
【請求項36】
f及びgは擬群作用を含む、請求項35に記載の方法。
【請求項37】
前記マッピングは、前記メッセージM上に非同期式ストリーム暗号演算を実行することを含む、請求項33〜36のいずれかに記載の方法。
【請求項38】
文字体系Aを伴う情報ソースSIから得られる、擬似ランダムストリングb0、b1、b2、b3、...のランダム化を改善する方法であって、
次数sの指数擬群(A,*)を選択し、ここでsは選択可能な正の整数であり、
前記擬似ランダムストリングの要素上にn擬群変換を実行することにより、前記擬似ランダムストリングを変換し、ここでnは選択可能な正の整数である、方法。
【請求項39】
前記変換は、
a)for i=1 to n do Li←l;
b)do
b←RandomElement(SI);
L1←L1*b;
for i=2 to n do Li←Li*Li−1;
Output:Ln;
loop;
を含み、
ここで、*は前記選択された指数擬群(A,*)である、請求項38に記載の方法。
【請求項40】
前記変換は、
a)for i=1 to n do Li←l;
b)do
b←RandomElement(SI);
L1←b*L1;
for i=2 to n do Li←Li−1*Li;
Output:Ln;
loop;
を含み、
ここで、*は前記選択された指数擬群(A,*)である、請求項39に記載の方法。
【請求項41】
正の整数sを選択することと、
正の整数nを選択することとを更に含む、請求項38〜40のいずれかに記載の方法。
【請求項42】
請求項1〜41のいずれかに記載の方法を実行するための、コンピュータで読み取り可能な手段。
【請求項43】
請求項1〜41のいずれかに記載の方法を実行するためにエンコードされたチップ。
【請求項44】
請求項1〜41のいずれかに記載の方法をコンピュータに実行させるために構成された、伝播信号。
【請求項45】
請求項1〜41のいずれかに記載の方法を実行するためにプログラムされた、コンピュータ。
【請求項46】
メッセージを情報ソースから受信し、且つ、請求項1〜41のいずれかに記載の方法を実行するために構成された、送信器。
【請求項47】
チャンネルからメッセージを受信し、且つ、請求項1〜41のいずれかに記載の方法を実行するために構成された、受信器。
【図1】
【図2】
【図2】
【公表番号】特表2008−516296(P2008−516296A)
【公表日】平成20年5月15日(2008.5.15)
【国際特許分類】
【出願番号】特願2007−537042(P2007−537042)
【出願日】平成17年10月13日(2005.10.13)
【国際出願番号】PCT/US2005/038245
【国際公開番号】WO2006/045114
【国際公開日】平成18年4月27日(2006.4.27)
【出願人】(505088684)ザ リージェンツ オブ ザ ユニバーシティ オブ カリフォルニア (18)
【Fターム(参考)】
【公表日】平成20年5月15日(2008.5.15)
【国際特許分類】
【出願日】平成17年10月13日(2005.10.13)
【国際出願番号】PCT/US2005/038245
【国際公開番号】WO2006/045114
【国際公開日】平成18年4月27日(2006.4.27)
【出願人】(505088684)ザ リージェンツ オブ ザ ユニバーシティ オブ カリフォルニア (18)
【Fターム(参考)】
[ Back to top ]