(57)【特許請求の範囲】
【請求項１】
通信システムにおいて、送信メッセージを表わしている一組のメッセージ信号を変換するための方法であって、
第一の鍵付き変換に従って前記組のメッセージ信号の一つを第一の符号化手段によって第一に符号化すること、
少なくとも一つの付加鍵付き変換に従って、前記第一に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを第二の符号化手段によって第二に符号化すること、
前記組のメッセージ信号の少なくとも一つが変更される自己反転変換に従って、前記第二に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを第三の符号化手段によって第三に符号化すること、
少なくとも一つの付加逆鍵付き変換に従って、前記第三に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを第四の符号化手段によって第四に符号化する工程、ここで、前記少なくとも一つの付加逆鍵付き変換の各々は、前記少なくとも一つの付加鍵付き変換の対応する反転である、及び
第一の逆鍵付き変換に従って、前記第四に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを第五の符号化手段によって第五に符号化する工程、ここで、前記第一の逆鍵付き変換は、前記第一の鍵付き変換の反転である、
ここにおいて、前記第一に符号化する工程は第一のテーブルに従って及び第一の方向において実施され、前記第二に符号化する工程は前記第一のテーブルに従って実施され、そして、前記付加鍵付き変換の各々は交互の方向において実行される、
ここにおいて、少なくとも符号化に用いられる変換はバッファのインデックスに基づいて行われ、及び、該第１の方向は該変換がバッファの先頭から末尾にかけて実行される方向である、
を具備する該方法。
【請求項２】
前記第一の符号化の工程は、第一のテーブルに従って及び第一の方向において実施され、前記第二の符号化の工程は、前記第一のテーブルに従って及び前記第一の方向において実施される、請求項1の方法。
【請求項３】
前記第一の符号化の工程は、第一のテーブルに従って及び第一の方向において実施され、前記第二の符号化の工程は、前記第一のテーブルに従って実施され、そして、前記付加鍵付き変換の各々は交互の方向において実行される、請求項1の方法。
【請求項４】
前記第一の符号化の工程は、第一のテーブルに従って及び第一の方向において実施され、前記第二の符号化の工程は、少なくとも一つの付加テーブルに従って及び前記第一の方向において実施される、請求項1の方法。
【請求項５】
前記第一の符号化の工程は、第一のテーブルに従って及び第一の方向において実施され、そして、前記第二の符号化の工程は少なくとも一つの付加テーブルに従って実施され、そして、前記付加鍵付き変換の各々は交互の方向において実施される、請求項1の方法。
【請求項６】
前記第一の符号化の工程は、第一のテーブルに従って実施され、そして、前記第二の符号化の工程は前記第一のテーブルに従って実施される、請求項1の方法。
【請求項７】
前記第一の符号化の工程は、第一の方向に従って実施され、そして、前記第二の符号化の工程は、前記第一の方向に従って実施される、請求項1の方法。
【請求項８】
前記第一の符号化の工程は、第一のテーブルに従って実施され、そして、前記第一のテーブルは順列である、請求項1の方法。
【請求項９】
前記第一の符号化の工程は、第一のテーブルに従って実施され、そして、前記第一のテーブルは順列ではない、請求項1の方法。
【請求項１０】
前記第二の符号化の工程は、少なくとも一つの付加テーブルに従って実施され、そして、前記少なくとも一つの付加テーブルは順列である、請求項1の方法。
【請求項１１】
前記第二の符号化の工程は、少なくとも一つの付加テーブルに従って実施され、そして、前記少なくとも一つの付加テーブルは順列ではない、請求項1の方法。
【請求項１２】
前記第三の符号化の工程は、鍵付き変換に従って実施される、請求項1の方法。
【請求項１３】
前記第三の符号化の工程は、鍵付きではない変換に従って実施される、請求項1の方法。
【請求項１４】
前記第一の鍵付き変換は、指標値を受信する工程、テーブルを受信する工程、及び前記指標値及び前記テーブルに従ってテーブル ルックアップを実施する工程、を具備する請求項1の方法。
【請求項１５】
更に前記指標値を処理する工程を具備し、及びテーブル ルックアップを実施する前記工程は、前記指標値の前記処理する工程の結果に従って実施される、請求項14の方法。
【請求項１６】
前記テーブル ルックアップした結果に基づく付加処理をさらに具備する、請求項15の方法。
【請求項１７】
前記テーブルルックアップした結果に基づく前記付加処理は、前記結果に従って前記テーブルにおいて付加テーブル ルックアップを実施することを具備する請求項16の方法。
【請求項１８】
前記テーブル ルックアップした結果上での前記付加処理は、前記結果に基づくブール演算の実施を具備する、請求項16の方法。
【請求項１９】
下記の工程を具備するメッセージを表わしている一組のメッセージ信号を変換するための方法：
第一の鍵付き変換に従って前記組のメッセージ信号の一つを第一の符号化手段によって第一に符号化する、
少なくとも一つの付加鍵付き変換に従って、前記第一に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを第二の該符号化手段によって第二に符号化する、
前記組のメッセージ信号の少なくとも一つが変更される自己反転変換に従って、前記第二に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第三に符号化する、
少なくとも一つの付加逆鍵付き変換に従って、前記第三に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第四に符号化する、ここで、前記少なくとも一つの付加逆鍵付き変換の各々は、前記少なくとも一つの付加鍵付き変換の対応する反転である、及び
第一の逆鍵付き変換に従って、前記第四に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第五に符号化する、ここで、前記第一の逆鍵付き変換は、前記第一の鍵付き変換の反転である、
ここにおいて前記第一の符号化の工程は、第一のテーブルに従って及び第一の方向において実施される、ここにおいて前記第二の符号化の工程は、少なくとも１つの付加テーブルに従って実施される、そして、ここにおいて前記付加鍵付き変換の各々は交互の方向において実行される、
ここにおいて、少なくとも符号化に用いられる変換はバッファのインデックスに基づいて行われ、及び、該第１の方向は該変換がバッファの先頭から末尾にかけて実行される方向である。
【請求項２０】
下記の工程を具備するメッセージを表わしている一組のメッセージ信号を変換するための方法：
第一の鍵付き変換に従って前記組のメッセージ信号の一つを符号化手段によって第一に符号化する、
少なくとも一つの付加鍵付き変換に従って、前記第一に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第二に符号化する、
前記組のメッセージ信号の少なくとも一つが変更される自己反転変換に従って、前記第二に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第三に符号化する、
少なくとも一つの付加逆鍵付き変換に従って、前記第三に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第四に符号化する、ここで、前記少なくとも一つの付加逆鍵付き変換の各々は、前記少なくとも一つの付加鍵付き変換の対応する反転である、及び
第一の逆鍵付き変換に従って、前記第四に符号化する工程により符号化された、前記組のメッセージ信号の前記一つを該符号化手段によって第五に符号化する、ここで、前記第一の逆鍵付き変換は、前記第一の鍵付き変換の反転である、
ここにおいて前記第一の符号化の工程は、第一の方向に従って実施される、ここにおいて前記第二の符号化の工程は、少なくとも１つの付加方向に従って実施される、
ここにおいて、少なくとも符号化に用いられる変換はバッファのインデックスに基づいて行われ、及び、該第１の方向は該変換がバッファの先頭から末尾にかけて実行される方向である。
【請求項２１】
通信システムにおいて、送信メッセージを表わしている一組のメッセージ信号を変換するのに適した装置であって、
第一の鍵付き変換に従って前記組のメッセージ信号の一つを符号化するための第一の符号化手段：
少なくとも一つの付加鍵付き変換に従って、前記第一に符号化する工程により符号化された、前記組のメッセージ信号の前記第一に符号化された一つを符号化するための第二の符号化手段、
前記組のメッセージ信号の少なくとも一つが変更される自己反転変換に従って、前記第二に符号化する工程により符号化された、前記組のメッセージ信号の前記第二に符号化された一つを符号化するための第三の符号化手段、
少なくとも一つの付加逆鍵付き変換に従って、前記第三に符号化する工程により符号化された、前記組のメッセージ信号の前記第三に符号化された一つを符号化するための第四の符号化手段、ここで、前記少なくとも一つの付加逆鍵付き変換の各々は、前記少なくとも一つの付加鍵付き変換の対応する反転である、及び
第一の逆鍵付き変換に従って、前記第四に符号化する工程により符号化された、前記組のメッセージ信号の前記第四に符号化された一つを符号化するための第五の符号化手段、ここで、前記第一の逆鍵付き変換は前記第一の鍵付き変換の反転である、
ここにおいて前記第一の符号化手段は第一のテーブルに従って実施される、ここにおいて前記第二の符号化手段は少なくとも一つの付加テーブルに従って実施され、あるいは前記第一の符号化手段は第一の方向に従って実施される、そして、ここにおいて前記第二の符号化手段は少なくとも一つの付加方向に従って実施される、
ここにおいて、少なくとも符号化に用いられる変換はバッファのインデックスに基づいて行われ、及び、該第１の方向は該変換がバッファの先頭から末尾にかけて実行される方向である、を具備する該装置。
【請求項２２】
請求項１乃至５、６および７乃至１８のいずれか１つの方法を計算装置に行わせるためのプログラム命令を有するコンピュータプログラム。
【請求項２３】
請求項22のコンピュータプログラムを記録したコンピユータ読み取り可能な記録媒体。
【請求項２４】
請求項22のコンピュータプログラムを記録したコンピユータ読み取り可能な読み出し専用メモリ。
【発明の詳細な説明】
発明の背景。
I.発明の技術分野。
本発明は、送信信号を暗号化するための方法と装置を関する。
II.関連技術の説明。
無線通信システムにおいて、サービス提供者が遠隔局からのサービス要求が正当なユーザからのものであることを確認できることが望ましい。例えばAMPSアナログ技術を使っているような、いくつかの現在のセルラー電話システムにおいて、いかなる設備も、システムへの許可されていないアクセスを妨げるようにはされていない。従って、不正行為がこれらのシステムにおいて起こる。サービスを得るためのひとつの不正の手段が、クローニング(cloning)として知られている。それは、許可されていないユーザが通話を始めるために必要な情報を横取りする(intercepts)。その後、許可されていないユーザは横取りした情報を使用して移動電話をプログラムすることができ、及びその電話を使用して不正に電話サービスを受信することができる。
これら及び他の困難を克服するために、多くのセルラー電話システムは、例えば、それはEIA/TIA/IS-54-Bの通信工業会(TIA)によって、標準化されたような、認証スキーム(authentication schemes)を実行した。この認証スキームのひとつの側面は、サービスを受信することを要求される大気上を送信される情報の暗号化である。この情報は、移動電話メッセージ暗号化アルゴリズム(CMEA)を使用して暗号化される。CMEAアルゴリズムは、「移動電話のための暗号化システム」というタイトルのアメリカ特許No.5,159,634に開示されている。この特許はここに引用されて、取り込まれる。
CMEAにおいて,いくつかの主な欠点が発見された。それは、比較的短期間に現在の標準の計算装置を使用して暗号化された情報が解読されることである。これらの欠点は、それらの欠点を克服する本発明の明細書において、以下に全体的に概説される。CMEAは、インターネット上で公表された。それゆえに、これらの欠点はオープンにされ、そうすることに関心を持つ誰でも発見することができる。このように、暗号化のための新しいアルゴリズムは、CMEAとの置き換え、セルラー・サービスを始めるのに必要な認証情報の横取り及び不正使用、を避けるために望まれる。
発明の概要
本発明の一態様に従って、通信システムの送信ためのメッセージを表示する一組のメッセージ信号を送信する方法が提供される。該方法は下記を具備する：第一の鍵付き(keyed)変換に従って前記組のメッセージ信号の一つを第一に符号化する、少なくとも一つの付加鍵付き(additional keyed)変換に従って前記組の前記一つを第二に符号化する、前記組のメッセージ信号の少なくとも一つが変更されている自己反転(self-inverting)変換に従って前記組のメッセージ信号の前記一つを第三に符号化する、少なくとも一つの付加反転鍵付き(additional inverse keyed)変換に従って前記組のメッセージ信号の前記一つを第四に符号化する、ここにおいて、前記少なくとも一つの付加反転鍵付き変換の各々は、前記少なくとも一つの付加鍵付き変換の反転(inverse)に対応し、及び第一の反転鍵付き(inverse keyed)変換に従って前記組のメッセージ信号の前記一つを第５に符号化する、ここにおいて、前記の第一の反転鍵付き変換は、前記第一の鍵付き変換の反転である。
本発明の別の観点に従って、送信信号を暗号化する方法が提供される。該方法は、鍵付き、自己反転、及び又は反転鍵付き変換の所定の組み合わせである複数の変換を、それに対して適用することによって、前記信号を符号化することを具備する。
本発明の更なる態様に従って、送信信号を暗号化する装置が提供される。該装置は、対応する多数の変換を適用することによって、送信信号のために調整された複数の符号化段を具備している。その変換は、鍵付き、自己反転および／または反転鍵付き変換の予め定められた組合せである。
本発明を具体化する、及びここで記述される、ブロック暗号可変長(BEVL)符号化(Block Encryption Variable Length encoding)は、CMEAアルゴリズムの同じ欠点を克服する。本発明の好適な実施例は、以下の特徴を有する：
・暗号可変長ブロック、好ましくは長さにおいて少なくとも２バイト、
・自己反転、
・非常に小さいダイナミックメモリ、及び512バイトの静止テーブルのみの使用、
・８ビット・マイクロプロセッサ上で評価するのに効率的、及び
・より長いかより短い鍵を使用するために単に修正されることができる、64ビット・鍵を使用する。
CMEAにおいて、関係する第一の欠点は、テーブルルックアップする(table lookups)ために使用されるCAVE(セルラー証明音声プライバシー及び暗号(Cellular Authentication Voice Privacy and Encryption))が不完全であることである。それは、256の代わりに164の別個の値のみを産する。多数の不可能な値の存在は、tbox()または鍵・バイトのリターン値を推測すること、及び該推測値を確認することを可能にする。この第一の欠点は、CAVEテーブルの利用可能統計指標を排除するために選択された二つの異なるテーブルでCAVEテーブルを置き換えることによって、本発明において、緩和される。これらのテーブル(t1box及びt2boxと呼ばれる)は256の８ビット整数の厳格な順列(permutation)である。ここで、いずれのエントリ(entry)もそれ自身のインデックス位置では出現しない。それに加えて、iの全ての値に関して、t1box[i]はt2box[i]に等しくない。これらの２つのテーブルは、上記基準を満たしていないところの破棄されている(discarded)候補でランダムに形成された。
CMEAの第二の欠点は、ゼロで評価される、tbox()と呼ばれる関数値の反覆した使用である。値tbox(O)は、第一のバイトの暗号化において、二回使用される。これは、tbox(O)を推測することを可能とし、及び暗号で書く(ciphering)プロセスに関する他の情報、特に最終バイトのためのCMEAの第一の手順の結果と第二バイトを暗号化するのに使用されたtbox()の２つの値に関する論旨(arguments)、を決定する際に該推測値を使用することを可能とする。それはまた、選ばれた平文攻撃(achosen-plaintext attack)を通して、公認のパターンが暗号文に出現するまでに種々の平文の値(plaintext values)を試みることによりtbox()を決定することを可能とする。この第二の欠点は、CMEAにおいて、使用される自己反転手順を、選ばれた組のより良い混合を提供する手順に変えることにより緩和される。これは、異なるテーブル(t2box)を使用する第二のパス(pass)を導入することによって行われる。この状況において、お互いにマスクするのに役立つ等しい有意性を持つ異なるテーブルから引き出された２つの値のtbox()が存在する。
CMEAにおける関連した欠点は、異なる長さの分析文から集められた情報は一般に結合され得るということである。BEVLで第２の臨界の(critical)tbox()エントリを使用することは、メッセージの長さに依存し、より実行可能でない異なる長さのテキストの分析を結合することになる。
CMEAにおいて、発見される第三の欠点は、より上位のバッファエントリ(upper buffer entriesis)の不完全な混合である。平文の最後のn/2バイトは、ひとつのtbox()値を単に加えること、それから他の値を取り去ること、第一の半分のバイトのみに影響する中間ステップ、によって暗号化される。暗号文と平文との間の相違は、二つの値のtbox()間の相違である。BEVLは、データ上で３の代わりに５のパスを実行することによりこの第三の欠点に取り組む。中間のパスにおいてのみCMEAにより実行される混合は、バッファバックの終端から開始端の方へデータを混合する第二及び第四のパスにおいて行われる。CMEAの中間のパスはまた、第三のパスが暗号復元しないことを確実にするために、少なくともいくつかのバイトの変更を保証する。改良された方法において、BEVLは、最高でも１バイトが変化しないまま残るというような方法で、バッファの変換に依存して鍵を作ることにより中間のパスにおけるこの目標を達成する。
CMEAの第四の欠点は、第一のバイトの最小桁のビット(LSB)の暗号化の欠如である。tbox(O)の繰り返される使用とCMEAの第二手順でのLSBの固定された反転は、平文の第一のバイトのLSBの単なる反転である暗号文の第一のバイトのLSBの結果となる。BEVLは、中間のパスの期間中のバッファの修正に依存している鍵を介してこの第四の欠点を避ける。この中間のパスは、長さにおいて、２バイト以上のバッファ上で予測できない第一のバイトのLSBを作る。
CMEAの第５の欠点は、効果的な鍵・サイズが64のビットよりむしろ60であるということである。このように、各鍵は、15の他に等しい。BEVLは、テーブルルックアップする数を増加すると同時に、数値演算の数を減らし、及び鍵の全ての64のビットが有意であることの保証を確保する。
最後に、CMEAのtbox()関数は、中間ー遭遇攻撃(meet-in-the-middle attack)により効率的に危険にさらされる(compromised)。一度、４つのtbox()値が引き出されると、中間ー遭遇攻撃は、CAVEテーブルの構成に依存せずに、2∧30のオーダー上の空間と時間の要件で成し遂げられる。BEVLは、多くの方法でこれに取り組む(address)。tbox()関数の構造は、該鍵の２つの未使用ビットを回復する(recover)。tbox()の始めと終わりでの暗号鍵の最小桁８ビットとの組合せの繰り返しは、最小値計算と空間が８ビット増加されるべきであることを意味する。各テーブルの二つのサイドと、２つの異なるテーブルがあるので、最小の複雑さ(the minimum complexity)は、2∧42のオーダー上の最小値空間と時間要件に導く(Leading)、他の２つのビットにより増加されなければならない。さらに、CMEAへの中間-遭遇攻撃は、少なくともいくつかのtbox()エントリ(entries)の回復を要求する。これは、BEVLを使用して作られたさらなる難しさであり、tbox()値の二つの別々の組上での同時の攻撃を要求し、お互いに隠す傾向がある。
【図面の簡単な説明】
本発明の特徴、目的及び利点は、同様の引用符号が全体を通して対応して特定されている図面と連携した後述の本発明の詳細に説明された好適な実施例の説明からより明らかになる：
図１は、本発明を具体化している暗号化システムのブロック線図である。
図２は、本発明において、文字ブロックを暗号化する方法の例示的な実施態様の系統図である。
図３は、文字ブロックを暗号化する方法の例示的な実施態様を実行している「C」プログラムである。
図４は、t1boxの例示的な実施態様である。及び
図５は、t2boxの例示的な実施態様である。
実施例の詳細な説明。
本発明の例示的な実施態様は、図１に示されるように、第二受信局2000への無線送信のためのデータを暗号化する第一局1000から構成されている。第一局1000は、基地局でよい第二局2000に送信している遠隔局でよい。あるいは、第一局1000は、遠隔局でよい第二局2000に送信している基地局でよい。同様に、遠隔局及び基地局は、送受信手段と同様に、暗号化及び暗号解読の手段を有するが、図１示される簡略化されたシステムは、本発明を可能にするために要求される要素を明確に示めしている。さらに、この発明の特徴は無線通信に限定されず、安全なデータが横取りされやすい媒体上で送信されなければならない、いずれの状況においても容易に適用されることができる。これは、関連した技術の当業者によく理解される。
図１において、本発明を具体化するBEVLアルゴリズムに従って暗号化のための必要なデータを含んでいるメモリ10は、プロセッサ20に接続される。例示的な実施態様において、プロセッサー20は、BEVL符号19に格納されている指示を実行できる比較的単純な８ビット・マイクロプロセッサである。プロセッサ20は、例えばビットごとの(bitwise)排他的論理和OR(以降、単にXOR又は▲＋▼として引用される)、整数付加、及び引算、などのような、単純な８ビット指示を実行できる演算論理ユニット(ALU。図示せず)を含む。プロセッサ20は、また、全般的なプログラムフロー命令をすることができ、及びメモリ(例えばメモリ10)からの値を装填し記憶する能力がある。それらの当業者は、これらの要件が全く最小であること、本発明をサイズ及び/または費用要件が単純なマイクロプロセッサを可搬式の装置のようにシンプルにする応用に全く適しているようにすること、を承認するであろう。明らかに、本発明は、同様により強力なマイクロプロセッサを使用して、容易に実行されることができる。
メモリ10は、テーブルt1box12及びt2box14、暗号鍵16、及び実行されるべき符号(BEVL符号)19を含む。暗号化されるデータはプロセッサ20に入力され、それはデータ18と称される位置のメモリ10中にそのデータを格納する。図１は一つのメモリ中の全てのこれらの要素を表すが、複数の記憶装置が使用されてもよいとことが理解される。好適な実施例において、BEVIL符号19と同様にテーブル12及び14は、不揮発性メモリ(例えばEEPROMまたはFLASHメモリ)に格納される。メモリのこれらの部分は書き込みを必要としない。
暗号化鍵16は、公知技術である多くの手段により形成されることができる。単純な実施態様は、該局がサービスのために起動させられる時に一度プログラムされる不揮発性メモリー中に鍵16を有することができる。例示的な実施態様において、鍵16は、上記のEIA/TLA/IS-54-Bにて説明されたプロトコルに従って形成され、変更される。
暗号化されるデータ(データ18)は、ランダムアクセスメモリ(RAM)中に格納される。暗号化は「正しい位置で(in place)」実行される。それは、手順の初めにおいて暗号化されていないデータを保持しているメモリ位置は、最終的に暗号化されたデータと同様に中間値(intermediate values)をまた保持することを意味する。
データ18は、t1box12、t2box14、及び暗号化鍵16を使用して、BEVL符号19に従ってプロセッサ20において、暗号化される。暗号化プロセスは以下に詳細に説明される。
暗号化データ18は、プロセッサ20により引き出され送信器30に送られる。そこで、それは変調され、増幅され、アンテナ40上での送信のためにアップコンバートされる。アンテナ50は、データを受信し、受信器60にそれを渡す。そこで、該データはダウンコンバートされ、増幅され、復調され、そしてプロセッサ70に引き渡される。例示的な実施態様において、図１に表される２つの局間の無線通信のためのフォーマットは、「デュアル モード ワイド バンドペクトラム拡散セルラシステムのための移動局-基地局互換性標準、TIA/EIA/IS-95-A」に記載されている。無線電話システムのような多重アクセス通信システムにおけるCDMA技術の使用は、「衛星又は地上中継器を使用するスペクトル拡散多重アクセスシステム(SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATIONシステムUSING SATELLITE OR TERRESTIAL REPEATERS)」とタイトル付けられた、米国特許第4,901,307号に開示されている。これは、本発明の譲受人に譲渡され、及び引用されることによって、ここに組み入れられる。多重アクセス通信システムにおけるCDMA技術の使用は、CDMAセルラ電話システムにおいて、信号波形を形成するためのシステムと方法(SYSTEM AND METHOD FOR GENERATING SIGNAL WAVEFORMS IN A CDMA CELLULAR TLEPHONE SYSTEM)」とタイトル付けられた米国特許第5,103,459号において、さらに開示されている。これは、本発明の譲受人に譲渡され、及び引用されることによって、ここに組み入れられる。
プロセッサ70(これはプロセッサ20と同じ要件を有する)は、メモリ80に接続される。メモリ80は、それぞれ、メモリ12、14、16、18及び19に類似しているメモリ82、84、86、88及び89を具備する。プロセッサ70は、暗号化されたデータをデータ・メモリ88に格納する。鍵86は、前に記述されているように、鍵16と同様の形式で決定される。テーブル82及び84は、テーブル12及び14と同一である。本発明のデータ処理が自己反転であることから、BEVL符号89(BEVL符号19と同一)は、データ18の暗号化プロセスにおいて行われたように、暗号化されたデータ88上で、t1box 82,t2box 84及び鍵86と連動してプロセッサ70において実行される。前述のように、データ処理は「正しい位置において」実行され、データ88の結果は、解読されたデータで存在する。プロセッサ70は、メモリ80から復号されたデータを読み出し、次の使用ためにデータ出力を介してそれを渡す。例示的な実施態様において、結果としてのデータは、EIA/TIA/IS-54-Bに開示されるような認証手続において使用される。
図２は、それぞれ、プロセッサ20及び70によって、先に述べたメモリ素子10及び80と連動して使用される方法のフローチャートを示す。前に述べように、暗号化プロセスは自己反転であり、復号プロセスは暗号化プロセスと同じであることを意味する。それゆえに、暗号化プロセスだけが詳細に説明されている。前に説明されるように、復号プロセスは、図１に類似している復号ブロックで図１の暗号化ブロックを置き換えることによって、明らかになるであろう。
ブロック99は、暗号化プロセスの始めを記す。buf[]と名付けられた文字列は、データ・メモリ18に格納されたような暗号化される文字を記述するために使用される。変数nは、文字の数に関して暗号化されるメッセージの長さを表示する。前に述べたように、BEVLプロセスに存在する一つの改善は、発生する５パス暗号化である。５パスの各々は、一点鎖線で輪郭を描かれ、それらを容易に区別するために符合1-5を付した。各パスは、著しい類似性と、相違を有している。パス１、３及び５は、テーブルt1box12を使用し、バッファの開始端から終端の方へ動く。パス２及び４は、テーブルt2box14を使用し、開始に至るまでバッファの終端から動く。BEVLの自己反転特性は、パス１がパス５の反転であり、パス２はパス４の反転であるが、パス３は自己反転であるという事実に由来する。
本発明の好適な実施例において、この複数のパスは反対方向に作られる。別の実施例において、複数のパスは、同じか異なるテーブルを使用するパスを交互にする(alternating)ことで同じ方向に進んでもよい(多数のパス中で同じテーブルを再利用することは、より強い暗号化をなすが、異なるテーブルが使用される時と同程度には強くはない)。付加パスを挿入することは他の二者択一であり、いずれかのアプローチと連携して使用されることができる。パスが同じ方向に作られる状況において、第一のバッファ・エントリに対する修正は、バッファのさらに下への修正を減少させる予測性で、より予測可能である。交互に反対のパス方向が使用されるときに、バッファ中の第一のバイトに対する修正はかなり予測できる。しかし、第二パス中のそのバイトに対する修正は、バッファ中の全てのバイトに依存し、ほとんどそれを予測できない。同様の形態で、より予測可能な変化が第二においてなされるが、該バッファ中の最終バイトに対する修正は、第一パス間の該バッファ中の全てのバイトに依存する。変化の予測性が、反対方向に複数のパスを使用して、より均一に分配されるので、そうすることは、同じ方向に多数のパスを使用することより、好ましい。作られる変化は同一のいずれかの方向であることから、パス３は一つの方向を実際に有さないことに留意する。
各パスにおいて、関数(function)tbox()が使用される。鍵16が組み入れられることは、この関数の中である。関数tbox()に渡されるパラメータは、256バイト・テーブルから構成されており、それは、t1box12またはt2box14に渡され、インデックスがtvと付けられる。例示的な実施態様において、tbox()は次のように定義される。：
tbox(B,tv)=B[B[B[B[B[B[B[B[B[tv▲＋▼k0]+k1]▲＋▼k2]+k3]▲＋▼k4]+k5]▲＋▼k6]+k7]▲＋▼k0],  (１)
ここで、k0からk7は、連接された時に64-ビット鍵16を形成する８つの８ビットセグメントを表す、
B[x]は、列Bのx番目の８ビット要素である、
▲＋▼は、ビットごとの排他的論理和演算を表示する、及び
+は、モジュロ256の付加を表わす。
ある長さの鍵が、あまりに強いとみなされる暗号化を提供する別の実施例において、鍵の強さは、tbox()関数を変更することによって、鍵の長さを変えることなく人為的に規制されることができる。例えば、64ビット鍵は、それが2∧24他と等しいクラスにあるような方法で64ビット鍵を使用することによって、人為的に40ビットに規制されることができる。しかし、該鍵に対するいずれか一つのビットの変化が異なる結果を作り出すことを依然として確実にする。tbox()に関する下記の定義は、64ビット・鍵を効果的に40ビット・鍵にするための推奨される変化を示している：
tbox(B,tv)=B[B[B[B[B[B[B[B[B[tv▲＋▼k0]+k1]▲＋▼(k2▲＋▼
k3)]+(k2▲＋▼k3)]▲＋▼(k4▲＋▼k5)]+(k4▲＋▼k5)]▲＋▼(k6▲＋▼k7)]+(k6▲＋▼k7)]▲＋▼k0]、  (２)
ここで、k0からk7は、連接された(concatenated)時に64-ビット鍵16を形成する８つの８ビットセグメントを表す、
B[x]は、列Bのx番目の８ビット要素である、
▲＋▼は、ビットごとの排他的論理和演算を表す、及び
+は、モジュロ256の付加を表す。
tbox()関数は、中間操作の各々が順列(permutations)であるように設計され、各入力は、出力に対して１対１の写像(mapping)を有することを意味する。例示的な実施態様において、使用される操作は、モジュロ256の付加、及び排他的論理和ORである。tbox()に渡される入力値が順列であり、そしてルックアップが同様である(as well)場合、これらの関数の使用は、tbox()の出力がまた一対一関数(a one-to-one function)であることを保証する。換言すれば、tbox()関数は全体として、それに渡されるテーブルがまたそうである場合、順列であることを保証される。これは、CMEAに関するケースではない。ここでは、tbox()関数中の該手順は１対１でない。したがって、CMEAにおいて、たとえCAV13テーブル(それは順列ではない)が、順列であるテーブルにより置き換えられるべきであっても、tbox()の出力はまだ順列ではない。BEVLに関して逆に、最終の順列を形成するために鍵材料を結合するための複数の一対一関数の中のいずれの選択も、受け入れ可能(acceptable)である。例示的な実施態様は、そのような方法の一つである。この順列原理になお順応する当業者は、代替の方法を容易に置き換えることができる。出力について１対１の性質(the one-to-one nature)を維持しない中間関数は、BEVL tbox()関数において、代わって使用されることができるが、結果は準最適状態であろう。
tbox()の定義において、含まれるさらなる改善は、いくつかの鍵ビットが始めと終わりの両方で使用されることである。例示的な実施態様においては、鍵バイトk0が使用されるが、別の実施例はいずれの鍵ビットも使用することができ、そして同じ改善をなしとげることができる。同じ値の使用は、中間ー遭遇攻撃を砕く。始めと終わりの両方で少なくいくつかの鍵情報の再使用に失敗することは、計算機的に複雑であるが、tbox()関数の少数の値から該鍵の率直な導出(derivation)を可能とする。この再使用で、暗号化を攻撃する努力において、使用されるテーブルは、非常により多くの空間を必要とし、解答を見いだすために必要とする計算は、ずっと大規模である。
BEVLの例示的な実施態様は２つのテーブルt1boxとt2boxboxに関連して、tbox()関数の使用を詳細に説明する。結果として生じる出力は、可能な入力の鍵-依存の順列である。しかし、関数の値は鍵のみに依存し、該データには依存しないことから、該関数は、256の可能な入力と、メモリに格納された結果を持つ２つの可能なテーブルとに関して、代わって事前計算される(pre-computed)ことができる。このように、テーブル ルックアップは、関数の再評価の代わりをすることができる。当業者は、本発明の実施態様を使用する時に、これらの２つの方法は機能的に等価であり、そして時間対空間をトレードオフにすることができることを認識するであろう。等価な代替は、256の可能な入力の順列で初期化された複数のテーブルを持って開始すべきであり、鍵が初期化されるときはそれらのテーブルの鍵-依存シャフリング(a key-dependent shuffling)を実行すべきである。それから、次の暗号化の間、テーブルインデックス操作が、tbox()への現在の電話に代わって、等しい影響を持つて使用される。
テーブルt1box及びt2boxは厳格な順列である。ここで、テーブル中のいずれのエントリもそのインデックスに等しくない。この厳格さは、tbox()計算中の中間値が変化しないままでいることを可能とすることにより他のどの鍵よりも弱い鍵は存在しないこと、を保証する。テーブルが順列であるという事実は、関数tbox()の説明で前に記載したように、重要である。テーブルが順列ではなく、それからtbox()関数中の該テーブル ルックアップ後ではない場合、結果として存在することはありえないいくつかの値が存在するであろう。これらの不可能な値は、64ビット鍵をかなり予測する仕事を減じて、tbox()からのリターン値と、削除される該鍵の部分を予想することを可能とする。別の実施例は、順列ではないが、暗号化が準最適状態であるテーブルを使用してもよい。
CMEAの暗号解析のいずれの形も、tbox()関数の値を引き出すことにより開始しなければならない。完全な解析は(ここにおいて、256の可能な入力のための全ての出力が既知である)、CMEAが初めの鍵を知らなくても、適用されることを可能とする。しかし、鍵の回復(recovery)は、該関数の４つの別個の値と同様に少数として知られていないとは限らない。このように、BEVLは、他の出力でtbox()からの出力、特にtbox(O)の値を隠す(disguising)ことに力点を置く。多くの代替が、この隠すことを達成するために想像される。好適な実施例は、第二の異なるテーブル、t2boxと追加された一対のパスを使用する。その各々は反対方向に実行される。これらの三つの修正のいずれか、またはそれのサブコンビネーションは、ある程度まで該問題に取り組む。しかし、全ての三つの組合せは、最高の安全を提供する。
好適な実施例において、前と後のパスは、tbox()関数と関連して異なるテーブルt1box及びt2boxを使用する。これは、暗号の解読が、ちょうどひとつの組よりはむしろ、２つの補集合(complementary sets)の関数値の発見を必要とするように行われる。パスはお互いを隠す(disguise)傾向があるので、２つのテーブルは最良の安全を提供する。一つのテーブルだけを使用する別の実施例が想像される。これらの方法は安全ではあるが、それらは、２つのテーブルが使用されるものより低い安全である。
ブロック99からブロック102まで進むことによって、パス１を開始する。ここで、変数v及びバッファーインデックスiはゼロに初期化される。それから、ブロック104において、各文字buf[i]は、関数呼出しtbox(t1box(V▲＋▼i)の結果をそれ自体に加えることにより修正される。変数vは、その後それ自身を新しい値のbuf[i]とXORすることによりアップデートされる。バッファーインデックスiは、それから増加される。ブロック106において、i<nである場合、パスは完全でなく、フローはブロック104にリターンする。全部の文字がブロック104に従って修正された時、iはnに等しくなり、パス１は完全である。文字は、buf[0]で開始して終端buf[n-1]の方に向かって修正される点に留意する。
ブロック106からブロック202に進むことによって、パス２を開始する。ここで、変数vは値nに初期化され、バッファーインデックスiは値n-1に初期化される。それから、ブロック204において、各文字buf[i]は、関数呼出しtbox(t2box(v▲＋▼i)の結果をそれ自身に加えることにより修正される。変数vは、その後それ自身を新しい値buf[i]でXORすることによって、アップデートされる。バッファーインデックスiは、それから減らされる。ブロック206において、i≧0である場合、パスは完全でなく、フローはブロック204に戻る。全ての文字がブロック204に従って修正されたときに、iは-1に等しく、パス２は完全である。パス１とは違って、文字は、buf[n-1]で開始し、開始端buf[0]に向かって修正されること、及びテーブルt2box14は、テーブルt1box12の代わりに使用されたことに留意する。
パス３はブロック302で開始する。バッファーインデックスiはゼロに初期化される。変数vは、このパスにおいて使用されない。それから、ブロック304において、各文字buf[i]は、関数呼出しtbox(t1box、i+1)の結果をそれ自身でXORすることにより修正される。バッファーインデックスiは、それから増加される。ブロック306において、i<nである場合、パスは完全でなく、フローはブロック304に戻る。全ての文字がブロック304に従って修正されたときに、iはnに等しく、パス３は完全である。パス１と同様に、文字はbuf[0]で開始し、終端buf[n-1]に向かって修正され、そしてテーブルt1box12が使用されたことに留意する。前に述べたように、しかし、パス３の方向は重要でない。なぜならば、同一の結果がどちらの方向でも達成されるから。
パス３において、tbox()と異なる出力が、各buf[]エントリと結合される。tbox()からの出力は順列を形成するので、最高でも、ただ一つのそのような値がゼロでありえる。ゼロであるかどうかは、鍵に依存する。BEVLにおいて、バッファにおける変化は、鍵ー依存(key-iependent)であり、予測するのが非常に難しい。平均して、値のうちの１つがゼロであるチャンスはn/256である。ここで、nはバッファの長さである。バッファの値が変更されることを保証するいずれの自己反転鍵-依存、又はデータ-依存変化も、十分に暗号化を確実にする。CMEAにおいて、変化しないままである値はアルゴリズムが全く暗号化に失敗するケースに導くので、これはBEVLのために重要な改善である。
ブロック306からブロック402に進むことによりパス４を開始する。ここで、変数vはnに初期化され、バッファーインデックスiは値n-1に初期化される。それから、ブロック404において、一時変数(a temporary variable)tは、関数呼出しtbox(t2box、v▲＋▼i)により戻された値を割り当てられる。変数vは、その後それ自身をbuf[i]の現在の値でXORすることによりアップデートされる。各文字buf[i]は、それから、それ自身から一時変数tの値を引き去ることにより修正される。バッファーインデックスiは、それから減らされる。ブロック406において、i≧0である場合、パスは完全でなく、フローはブロック404に戻る。全ての文字がブロック404に従って修正されたときに、iは-1に等しく、パス４は完全である。パス２と同様に、文字はbuf[n-1]で開始し、開始端buf[0]に向かって修正され、及び、テーブルt2box14が使用されたこと留意する。
ブロック406からブロック502へ進むことによって、パス５を開始する。ここで、変数vとバッファーインデックスiは値ゼロに初期化される。それから、ブロック504において、一時変数tは、関数呼出しtbox(t1box、v▲＋▼i)により戻された値を割り当てられる。変数vは、その後それ自身をbuf[i]の現在の値でXORすることによりアップデートされる。各文字buf[i]は、それから一時変数tの値をそれ自身から引き去ることにより修正される。バッファーインデックスiはそれから増加される。ブロック506において、i<nである場合、パスは完全でなくて、フローはブロック504に戻る。全ての文字がブロック504に従って修正されたときに、iはnに等しく、パス５は完全である。パス１及び３の同様に、文字は、buf[n-1]で開始し,開始端buf[0]に向かってを修正され、テーブルt1box 12が使用されたことに留意する。
今、ブロック600に進む。暗号化は、現在完全である。Buf[]は、安全な送信のための暗号化された文字を現在有する。
上記に記された操作を実行するプログラム「C」が、図３に供される。テーブルt1box 12は、図４中の「C」に供給される。テーブルt2box 14は、図５中の「C」に供給される。
好適な実施例に関する前記の説明は、当業者が本発明を作り、利用できるようにするために行われた。これらの実施態様に対する種々の修正は、容易に当業者にとって明らかであり、及び、ここで定義される一般的な原理は、他の実施態様に発明の才を使わずに、適用されることができる。このように、本発明は、ここで示される実施態様に限定されることを意図しておらず、ここで開示した原理と新しい特徴に合致した最も広い範囲を与えられる。
【図１】
0004260896.tif 000002
【図２Ａ】
0004260896.tif 000003
【図２Ｂ】
0004260896.tif 000004
【図３】
0004260896.tif 000005
【図４】
0004260896.tif 000006
【図５】
0004260896.tif 000007