(57)【要約】【課題】ワンタイムパッド暗号化方法を改良すること【解決手段】ＩＭ−ビット長さのメッセージＭを暗号化するための方法は、ａ）ＩＲ−ビット長さ（ＩＲ≧ＩＭ）の第１ランダムビットシーケンスを発生するステップと、ｂ）メッセージＭをＩＳビット（ここでＩＳ≦ＩＭ）のユニタリーメッセージストリングにサブ分割するステップと、ｃ）各ユニタリーメッセージストリングに対し、暗号化されたユニタリーストリングを発生するよう、前記ユニタリーメッセージストリングと前記第１ランダムビットシーケンスのＩＳビットとのＸＯＲ演算を実行するステップと、ｄ）前記暗号化されたユニタリーストリングを暗号テキストに組み立てるステップとを備える。本発明によれば、暗号テキストの組み立ては、前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して、前記暗号化テキスト内の前記暗号化されたユニタリーストリングの位置を入れ替えるように行う。換言すれば、前記暗号化されたユニタリーストリングを暗号テキストに組み立てるステップは、前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して前記暗号テキスト内の前記暗号化されたユニタリーストリングの位置をランダムに入れ替えるステップを含む。【特許請求の範囲】
【請求項１】
ＩＲ−ビット長（ＩＲ≧ＩＭ）の第１ランダムビットシーケンスを発生するステップと、
メッセージＭをＩＳ−ビット（ここでＩＳ≦ＩＭ）のユニタリーメッセージストリングにサブ分割するステップと、
各ユニタリーメッセージストリングに対し、暗号化されたユニタリーストリングを発生するよう、前記ユニタリーメッセージストリングと前記第１ランダムビットシーケンスのＩＳビットとのＸＯＲ演算を実行するステップと、
前記暗号化されたユニタリーストリングを暗号テキストに組み立てるステップとを備える、ＩＭ−ビット長のメッセージＭを暗号化するための方法において、
前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して、前記暗号化テキスト内の前記暗号化されたユニタリーストリングの位置を入れ替える（この位置の入れ替えは前記第１ランダムビットシーケンスに基づく）ことを特徴とする、暗号化方法。
【請求項２】
前記暗号化されたユニタリーストリングを暗号テキストに組み立てる前記ステップは、前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して、前記暗号テキスト内の前記暗号化されたユニタリーストリングの位置を、前記第１ランダムビットシーケンスに基づき、ランダムに入れ替えるステップを備える、請求項１に記載の方法。
【請求項３】
前記メッセージＭは、平文の多数のＩＰビットとＩＨビット長さのハッシュ値（ここで、ＩＰ＋ＩＨ≦ＩＭ）とを含み、前記ハッシュ値は前記平文のビットによって決定される、請求項１または２のうちのいずれか１項に記載の方法。
【請求項４】
前記暗号テキスト長さに対応する長さの第２ランダムビットシーケンスを発生するステップと、
前記暗号化されたメッセージを発生するよう、前記暗号テキストと前記第２ランダムビットシーケンスとのＸＯＲ演算を実行するステップとを更に備える、請求項１〜３のうちのいずれか１項に記載の方法。
【請求項５】
第１および／または第２ランダムビットシーケンスを発生する前記ステップは、
ａ）（ＢＦＴ）に、ｍＢＦＴのアドレス指定可能なビットＢＴｊ（ここで０≦ｊ≦ｍＢＦＴ−１）（前記はランダム分布した同じ数の「０」ビットと「１」ビットとを含む）を提供するステップと、
ｂ）前記第１および／または第２ランダムビットシーケンスの各ビットに対し、
ｉ．０とｍＢＦＴ−１との間のレンジ内のアドレスＦＡを発生し、
ｉｉ．前記からアドレスＦＡを有するビットＢＴＦＡを選択し、
ｉｉｉ．前記からの前記ビットＢＴＦＡに等しくなるよう、前記第１および／または第２ランダムビットシーケンスのうちの前記ビットをセットするステップとを備えた、請求項１〜４のうちのいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最高セキュリティアプリケーションのための暗号化方法に関し、より詳細には、改良されたワンタイムパッド暗号化方法に関する。
【背景技術】
【０００２】
ワンタイムパッドの発明は、ＡＴ＆Ｔ社のギルバート・バーナム氏と、キャプテン・ジョセフ・モーボルニュ氏の共同作業として見なされている。ワンタイムパッドでは、暗号化すべき平文とこの平文と同じ長さのランダム鍵、すなわちパッドとを組み合わせる。メッセージ内の各文字は、（乱数で、秘密であって、１回しか使用されない）パッドからの文字と組み合わせられる。したがって、パッドは少なくともメッセージの長さになっていなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
理論的には、パッドの内容を知ることなく、力づくでの攻撃を使ってメッセージを解読する方法はない。この理由から、パッドを保護（すなわち秘密に）し、乱数（すなわちだれにも予測できないもの）とし、１回しか使用しないことが重要である。そうでない場合、暗号が容易に脅かされてしまう。平文と、それに対応する暗号文の双方が知られると、パッドが容易に決定されてしまう。
【０００４】
最近の暗号学では、ＯＴＰを使用することにいくつかの欠点が存在する。第１の欠点は、膨大なボリュームの必要とされる乱数データを安全に配布すること、およびこの乱数データを安全に記憶することが困難であることに関するものであり、第２のグループの欠点は、安全でない伝送チャンネル（すなわち公衆インターネット）を通して伝送中にメッセージが変わってしまう可能性があることに関するものである。
【０００５】
第１の欠点は、高品位の乱数を発生するようになっている適当な乱数発生器を使用することによって克服でき、第２の欠点を解消するためには、最近のメッセージ認証アルゴリズムのうちの１つを使用することが、論理的な解決案であるように見える。かかる組み合わせは、基本的には破ることのできないセキュリティを保証できよう。しかしながら、所定の分野のアプリケーション、特に（ｅ−バンキングのように）多数の通信メッセージがすべてのメッセージで標準的で既知の小さい同じテキスト部分を使用することが極めて多くなっているアプリケーションでは、暗号化方法によって得られる保護を更に高めることに関心がある。
【０００６】
本発明の目的は、改良されたワンタイムパッド暗号化方法を提供することにある。
【課題を解決するための手段】
【０００７】
この目的は、請求項１に記載の暗号化方法によって達成され、本方法の更なる変形例は従属請求項に記載されている。
【０００８】
ＩＭ−ビット長さのメッセージＭを暗号化するための本発明に係わる方法は、ａ）ＩＲ−ビット長さ（ＩＲ≧ＩＭ）の第１乱数ビットシーケンスを発生するステップと、ｂ）メッセージＭをＩＳ−ビット（ここでＩＳ≦ＩＭ）のユニタリーメッセージストリングにサブ分割するステップと、ｃ）各ユニタリーメッセージストリングに対し、暗号化されたユニタリーストリングを発生するよう、前記ユニタリーメッセージストリングと前記第１乱数ビットシーケンスのＩＳビットとのＸＯＲ演算を実行するステップと、ｄ）前記暗号化されたユニタリーストリングを暗号テキストに組み立てるステップとを備える。本発明によれば、暗号テキストの組み立ては、前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して、前記暗号化テキスト内の前記暗号化されたユニタリーストリングの位置を入れ替えるように行うが、この位置の入れ替えは第一のランダムビットシーケンスに基づいている。換言すれば、前記暗号化されたユニタリーストリングを暗号テキストに組み立てるステップは、前記メッセージ内の対応するユニタリーメッセージストリングの位置に対して前記暗号テキスト内の前記暗号化されたユニタリーストリングの位置を―第一のランダムビットシーケンスに基づいて―ランダムに入れ替えるステップを含む。  
【０００９】
暗号化されたメッセージでは、ユニタリーストリング、例えば元の平文のバイトは、その位置をランダムに変えている。このことは、同じショート標準メッセージの暗号化と伝送とを繰り返さなければならないアプリケーションでも、生じ得る攻撃者に対し、ランダムビットのシーケンスとして生じるビットストリングが立ちはだかることを意味する。
【００１０】
本発明の好ましい実施例では、前記メッセージＭは、平文の多数のＩＰビットとＩＨビット長さのハッシュ値（ここで、ＩＰ＋ＩＨ≦ＩＭ）とを含み、前記ハッシュ値は前記平文のビットによって決定される。適当な任意のハッシングアルゴリズム、例えばＭＤ５アルゴリズムにより発生できるハッシュ値は、受信側でのメッセージの認証を可能にするので、伝送中にメッセージが変更されたかどうかを判断することが可能となる。
【００１１】
暗号化前、およびバイト位置のランダムに入れ替える前に、平文に対してメッセージ認証情報が追加されることが理解できよう。従って、この結果生じる暗号化されたメッセージでは、メッセージ認証コード（１６バイト＝１２８ビット）の位置でも未知であり、よってこの情報に対する攻撃は不可能である。
【００１２】
第１暗号化ステップおよび暗号テキストへの暗号化されたユニタリーストリングのその後の組み立ての後で、その結果得られる暗号テキストを異なるランダムビットシーケンスで再び暗号化することが望ましい。従って、この方法は、前記暗号テキスト長さに対応する長さの第２ランダムビットシーケンスを発生するステップと、前記暗号化されたメッセージを発生するよう、前記暗号テキストと前記第２ランダムビットシーケンスとのＸＯＲ演算を実行するステップとを更に備えることが好ましい。
【００１３】
ワンタイムパッドを構成するランダムビットシーケンスは、高品位の乱数を発生するようになっている任意の適当な乱数発生器によって発生できることが理解できよう。本方法の好ましい実施例では、第１および／または第２ランダムビットシーケンスを発生する前記ステップは、
ａ）（ＢＦＴ）に、ｍＢＦＴのアドレス指定可能なビットＢＴｊ（ここで０≦ｊ≦ｍＢＦＴ−１）（前記はランダム分布した同じ数の「０」ビットと「１」ビットとを含む）を提供するステップと、
ｂ）前記第１および／または第２ランダムビットシーケンスの各ビットに対し、  ｉ）０とｍＢＦＴ−１との間のレンジ内のアドレスＦＡを発生し、  ｉｉ）前記からアドレスＦＡを有するビットＢＴＦＡを選択し、  ｉｉｉ）前記からの前記ビットＢＴＦＡに等しくなるよう、前記第１および／または第２ランダムビットシーケンスのうちの前記ビットをセットするステップとを備える。
【００１４】
ランダムビットシーケンスを発生するためのこの方法は、ランダム分布する同じ数の「０」ビットと「１」ビットを含む、ランダムビットテーブルから１つのビットをランダムに選択することにより、コインフロッピングの原理の結果を再現する。このコインフロッピングシミュレーションのその後の結果から、発生すべきランダムビットシーケンスをビットごとに組み立てる。
【００１５】
所定のレンジ内のアドレスの高品位のランダム性を保証する、適当な方法により、（ＢＦＴ）から選択すべきビットのアドレスＦＡをランダムに発生することができる。良好に分布した乱数を得るために、発生される最終アドレスＦＡは、ビットフィッシングテーブルＢＦＴのアドレススペース全体にわたってランダムにも分布しなければならない。このような目的を達成するための適当な対策は、特定の複雑な最終アドレス組み立てパラメータに従って、多数の基本ランダム性値の選択されたビットからＦＡアドレスを組み立てることを含むことができる。この基本ランダム性自らは、フィードバック変更子を使ってランダムに発生でき、この変更子は所定の数の、以前発生されたビットに影響される。
【００１６】
従って、かかる方法は、高品位の乱数を発生し、一方でこの方法は、任意の標準的コンピュータ、例えばシンプルなパソコンによって容易に実現できる。
【発明を実施するための最良の形態】
【００１７】
本発明に係わる方法は、任意の標準的なパソコンまたはスマートカード、もしくは例えば３２ビットプロセッサを有するＵＳＢトークンのような小型物理的サポートでも容易に実施できることが理解できよう。このことは、特定の実現例の次の説明からより明らかとなろう。
【００１８】
ファイルの安全な伝送を可能にするだけでなく、ｅ−バンキングのようなフルデュプレクスの内部伝送で作動するために、本明細書で提案する方法は、暗号化すべき平文メッセージを、１０００バイトの長さを有する平文ブロックに分解する。次に、各平文ブロックを１０２４バイトの長さの暗号テキストブロックに変換する。この暗号テキストブロックは（ファイルまたはセッションの）ブロック数に関する情報、データグラム内に記憶されるテキストの長さ、およびメッセージ認証情報を含む。可能な実現例では、メッセージ認証情報は、例えばＭＤ５タイプのアルゴリズムによって得られる。
【００１９】
「ランダムに入れ替えられた位置」なる用語は、元のテキストの各バイトが、暗号化中に暗号テキスト内の位置をランダムに換えたことを示す。すなわち最初の平文ブロックのバイト５は、最初の暗号テキストブロック内の位置８４４に存在することができ、他方、第２の平文のブロックのバイト５は、第２暗号テキストブロック内の位置４５に位置することができる、などである。
【００２０】
このように暗号化を行う動機は、（ｅ−バンクのように）多数の伝送メッセージがすべてのメッセージ内で、標準的な既知の同じ小さいテキスト部分を使用することが極めて多いという事実に基づく。各バイトがその位置をランダムに変更し、各ビットが異なるランダムビットと２回ＸＯＲ演算されるよう、その結果として生じる暗号テキストが、８１９２のパーフェクトランダムビットのビットストリングによる攻撃を受ける可能性が残っている。
【００２１】
メッセージ認証コード（１６バイト＝１２８ビット）の位置が未知であっても、この情報に対する攻撃は不可能である。
【００２２】
この暗号化は次のステップを含む。すなわち
ａ）バイトを単位として構成されたメモリエリア内に８１９２のランダムビットの第１シーケンス、すなわちベースを発生するステップ
ｂ）１０２４個のフラグの空リストと、暗号テキストを記憶するための１０２４バイトの暗号テキストメモリスペースを作成するステップ
ｃ）８バイト（６４ビット）のヘッダー部分にサブ分割できる１０２４バイトの平分メモリスペース、１０００バイトのテキスト部分および１６バイトのハッシュ部分を作成するステップ
ｄ）平文メモリスペースのヘッダー部分内に平文テキストブロックのブロック数（５４ビット）およびデータグラムの長さ（１０ビット）を記憶するステップ
ｅ）平文テキストメモリスペースのうちのテキスト部分に１０００バイトまでの平文テキストを記憶するステップ（平文テキストが１０００よりも短い場合、残りのバイトはゼロとなる）
ｆ）メッセージダイジェストを認証として計算し、次に我々が１０２４バイトの暗号化すべき元のテキストを有するように、この結果得られる１６バイトを平文テキストメモリスペースのうちのハッシュ部分に記憶するステップ
ｇ）暗号位置カウンターおよび元のテキストカウンターにゼロを記憶させることにより、暗号位置カウンターおよび元のテキストカウンターを初期化するステップ
ｈ）暗号位置カウンターによって表示されるバイトからの最小５ビット（０〜３１）をベースから抽出し、これら５ビットを暗号位置カウンターに加算し、結果が１０２４またはそれより大となる場合に、このカウンターへのすべての加算の次に１０２４の減算が続かなければならないように注意を払うステップ
ｉ）暗号位置カウンターに対応するフラグが空であるかどうかをチェックし、空でなければ、空の位置を見つけるまで、暗号位置カウンターを１つだけ増加させるステップ（カウンターが１０２４に達した場合、位置０で再スタートするように、１０２４だけ減算しなければならない）
ｊ）元のテキストカウンターが参照する元のテキストからのバイトと暗号位置カウンターが参照するベースのバイトとのＸＯＲ演算を実行し、暗号文内の同じバイト位置に、前記ＸＯＲの結果を記憶するステップ
ｋ）フラグリスト内の占有されている位置と同じ位置にフラグを立てるステップ
ｌ）元のテキストカウンターおよび暗号位置カウンターを１つだけ増加し、その結果が１０２４またはそれ以上である場合、このカウンターへのすべての加算の次に１０２４の減算が従わなければならないように、再び注意を払うステップ
ｍ）上記ステップｈ）からｌ）を１０２２回繰り返すステップ
ｎ）８１９２個のランダムビットの第２シーケンスを発生するステップ
ｏ）暗号ブロックと、この８１９２ビットストリングとのＸＯＲ演算を実行し、送るべき暗号テキストを我々に与えるステップ
【００２３】
受信側での暗号解読は次のステップを実行することにより、暗号化の逆を行う。
ａ）暗号文と８１９２個のランダムビットの第２シーケンスとのＸＯＲ演算を実行するステップ
ｂ）８１９２個のランダムビットの第１シーケンス、すなわちベースを使って、元のテキストの位置を探し、暗号文とベースからの対応するバイトとのＸＯＲ演算を実行し、元のテキストを我々に与えるステップ
ｃ）元のテキストの１０２４バイトを完了した後に、ブロック数およびデータグラムの長さをチェックし、生じ得るエラーを検出するステップ
ｄ）最後の１６バイト、メッセージ認証をセーブし、これらバイトをゼロに置き換えるステップ
ｅ）メッセージダイジェストを再計算し、この結果とセーブされた１６バイトとを比較し任意の手段による、すなわち伝送エラーまたは攻撃者による変更を検出できるようにするステップ
【００２４】
上記方法は、長いプロセスのように見えるが、コンピュータはメッセージの暗号化および解読の役目を果たすことを忘れてはならない。３ＧＨｚで作動するＥＭ６４Ｔを有するインテル（登録商標）のペンティアム（登録商標）ＩＶは、毎秒約６０００ブロックで処理でき、上記のような乱数の発生は、毎秒６メガバイトのスループットを与える。
【００２５】
当然ながら、本方法は、毎秒１０ギガビットのリンクに対する解決案とはならないが、鍵変換のための提案方法と組み合わされたＡＥＳのような対称の暗号化の組み合わせは、いわゆる量子暗号化技術の使用と同じ高いセキュリティを保証し、利点として低コストおよび欧州とオーストラリアのような長距離を容易にリンクする可能性を与える。
【００２６】
保護されたメモリを有するＭＰＵを含む小型の物理的サポートを、乱数発生のための秘密ランダムビットテーブルと容易にペアにしてプログラムできることが理解できよう。保護されたメモリ内に記憶されていることに起因し、遠距離のパートナーに物理的にトランスポートする間のコピーは不可能であるので、ＣＤまたはテープによりワイタイムパッドのための乱数を交換する場合に、情報がリークするソースとなり得ることを防止できる。上記乱数発生器が、かかるＭＰＵ内に組み込まれている場合、対称暗号化アプリケーションでも使用すべき新しい鍵の発生を同じように実行できる。
【００２７】
例えば認証およびログインのための小さいメッセージを考える場合、現時点で提案する方法のセキュリティは、より明らかとなる。これらメッセージは常に、８１９２個のランダムビット内に隠すことができるので、攻撃者にとって、伝送されるメッセージを暗号分析することが不可能となる。
【００２８】
上記乱数発生器を使用する場合、ビットフィッシングテーブル（ＢＦＴ）と称されるランダムビットテーブルは、発生される数の乱数性に対する決定的な要素となる。このことは、暗号アプリケーションでこのような乱数発生器を使用する場合、（シードではなく）ＢＦＴだけが秘密に保持すべき要素となる。従って、（Ｅメールの主題またはフルデュプレックスチャンネルの同期内で）暗号解読のために使用するシードをオープンに表示できる。フルデュプレックスでは、応答者は同じ乱数を２度使用することを回避するために、最初のシードプラス１を使用することができる。
【００２９】
ポイントツーポイントの通信を超えるように使用を拡張するための、２つの可能性が存在する。適当であれば、どの参加者とも異なるランダムビットテーブルＢＦＴを共用する、信頼できる安全なポストオフィスを創出することができる。ポストオフィスは（認証と共に）受信したメッセージを内部で解読し、適当なＢＦＴにより新しく暗号化した後に、メッセージを宛て先人に送るので、グループのうちのどのメンバーも、グループの他のメンバーとの間で秘密メッセージを送受信できる。このことは、ローカルの機関、より巨大な会社などにとって最良の解決案のように見える。
【００３０】
より小さい、クローズされたグループに対する別の解決案は、共通ランダムビットテーブルＢＦＴを共用し、かつどの暗号化ユニットも２６４の可能なシードの限られた数のスペースしか使用しないように、暗号化ユニットを認証することである。次に、本方法に従って暗号化されたメッセージの第１の暗号化ブロックは、メッセージを送りたい先の１つ以上の宛て先人を含んでいなければならない。第１ブロックの宛て先人リスト内に自らのメンバーの数が含まれていない場合、他のメンバーのユニットの解読プログラムはメッセージの解読を拒否することができる。
【００３１】
他のアプリケーションとして、コンピュータとプリンタとの間に解読ユニットを設け、会社のＩＴネットワーク内で平文内では決して示されない文章をプリントするためのパスワードで保護された自らのスマートカードを使用することを宛て先人に強制することにより、組織内部で秘密文書を配布することを挙げることができる。
【００３２】
同じように、本発明に係わる暗号システムにより、全てのコンピュータを遮蔽でき、信頼できる、会社規模のコンピュータネットワークを構築し、インターネットを通したすべての内部通信を可能にできる。このことは、法律事務所、弁理士、銀行家などにも適用できる。
【国際調査報告】
2009531728.tif 000002
2009531728.tif 000003
2009531728.tif 000004