(57)【特許請求の範囲】
【請求項１】
ディジタルデータのメッセージブロックを暗号化又は復号化するための電子ブロック暗号装置であって、
ルックアップテーブルの形式で複数の換字ボックスを格納するストレージユニットであって、前記複数の換字ボックスは、ブロック暗号の換字レイヤをともに形成し、前記換字レイヤにおける前記換字ボックスは、それらの入力及び出力を符号化することによって、難読化され、前記換字レイヤは、換字レイヤ入力をとり、前記換字レイヤ入力を換字レイヤ出力に変換し、前記複数の換字ボックスの少なくとも１つの換字ボックスは、同じ換字レイヤにおける複数の換字ボックスの２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信する、前記ストレージユニットと、
前記メッセージブロックにブロック暗号ラウンドのシーケンスを適用することによって、前記ブロック暗号を前記ディジタルデータの前記メッセージブロックに適用する制御ユニットであって、前記ブロック暗号ラウンドの１つは、前記換字レイヤを有する、前記制御ユニットと、
を有し、
前記換字レイヤは、第４及び第３の換字ボックスの両方が、第１及び第２の換字ボックスの出力から入力を受信する特性を持つ第１、第２、第３、及び、第４の換字ボックスを有する、
電子ブロック暗号装置。
【請求項２】
前記複数の換字ボックスのうちの少なくとも１つの換字ボックスは、前記少なくとも１つの換字ボックスの出力の第１の部分が、前記少なくとも１つの換字ボックスと同一の換字レイヤにおける他の換字ボックスの入力の一部として用いられ、前記少なくとも１つの換字ボックスの前記出力の第２の部分が、前記同一の換字レイヤにおける他の異なる換字ボックスの入力の一部として用いられるように、構成される、請求項１記載の電子ブロック暗号装置。
【請求項３】
前記換字レイヤは、複数のサブレイヤを有し、前記複数のサブレイヤの第１のサブレイヤは、前記換字レイヤ入力を入力として受信し、次のサブレイヤは、前の換字レイヤの前記出力を入力として受信し、前記次のサブレイヤの１つは、前記換字レイヤ出力を作る最後のサブレイヤである、請求項１又は２に記載の電子ブロック暗号装置。
【請求項４】
前記第１のサブレイヤにおける第１の換字ボックスは、前記換字レイヤ入力のみから入力を受信し、前記第１のサブレイヤにおける第２の換字ボックスは、前記換字レイヤ入力と前記第１の換字ボックスの出力との両方から入力を受信する、請求項３記載の電子ブロック暗号装置。
【請求項５】
前記換字レイヤは、第４の換字ボックスが、第３の換字ボックスの出力から入力を受信し、前記第３の換字ボックスが、第２の換字ボックスの出力から入力を受信し、前記第２の換字ボックスが、第１の換字ボックスの出力から入力を受信する特性を持つ第１、第２、第３、及び、第４の換字ボックスを有する、請求項１乃至４のいずれか１項に記載の電子ブロック暗号装置。
【請求項６】
前記第１及び第２の換字ボックスは、前記換字レイヤ入力から各入力の一部を受信し、及び／又は、
前記第３及び第４の換字ボックスは、各出力として、前記換字レイヤ出力の一部を作る、請求項１乃至５のいずれか一項に記載の電子ブロック暗号装置。
【請求項７】
前記メッセージブロックから始めて、前記メッセージブロックと同じデータサイズの中間データブロックのシーケンスを作り、次の中間データブロックの各々は、前の中間データブロックに依存する、請求項１乃至６のいずれか１項に記載の電子ブロック暗号装置。
【請求項８】
前記換字レイヤは、換字レイヤ入力として、中間データブロックを受信し、出力として、次の中間データブロックを作る、請求項７記載の電子ブロック暗号装置。
【請求項９】
前記ブロック暗号ラウンドのシーケンスは、前記ブロック暗号ラウンドの換字レイヤに組み込まれる暗号化ラウンドキーに従って、前記メッセージブロックを変換する、請求項１乃至８のいずれか１項に記載の電子ブロック暗号装置。
【請求項１０】
コンピュータが実行するディジタルデータのメッセージブロックを暗号化又は復号化するための電子ブロック暗号方法であって、
前記コンピュータはストレージユニット及び制御ユニットを有し、
前記ストレージユニットが、ルックアップテーブルの形式で複数の換字ボックスを格納するステップであって、前記複数の換字ボックスは、ブロック暗号の換字レイヤをともに形成し、前記換字レイヤにおける前記換字ボックスは、それらの入力及び出力を符号化することによって、難読化され、前記換字レイヤは、換字レイヤ入力をとり、前記換字レイヤ入力を換字レイヤ出力に変換し、前記複数の換字ボックスの少なくとも１つの換字ボックスは、同じ換字レイヤにおける複数の換字ボックスの２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信する、ステップと、
前記制御ユニットが、前記メッセージブロックにブロック暗号ラウンドのシーケンスを適用することによって、前記ブロック暗号を前記ディジタルデータの前記メッセージブロックに適用するステップであって、前記ブロック暗号ラウンドの１つは、前記換字レイヤを有する、ステップと、
を有し、
前記換字レイヤは、第４及び第３の換字ボックスの両方が、第１及び第２の換字ボックスの出力から入力を受信する特性を持つ第１、第２、第３、及び、第４の換字ボックスを有する、電子ブロック暗号方法。
【請求項１１】
コンピュータプログラムが前記コンピュータ上で実行された場合に、請求項１０記載の全てのステップを実行するように適合されたコンピュータプログラムコード手段を有する、コンピュータプログラム。
【請求項１２】
コンピュータ読み取り可能な媒体上に表された、請求項１１記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルックアップテーブルの形式で複数の換字ボックスを格納するストレージユニットと、メッセージブロックに対してブロック暗号のラウンドのシーケンスを適用することによって、ディジタルデータのメッセージブロックにブロック暗号を適用するように構成された制御ユニットと、を有するディジタルデータのメッセージブロックを暗号化又は復号化するための電子ブロック暗号装置に関し、前記換字ボックスは、ブロック暗号の換字レイヤをともに形成しており、前記換字レイヤは、換字レイヤ入力をとるように構成されるとともに、換字レイヤ入力を換字レイヤ出力へ変換し、前記ブロック暗号のラウンドの１つは、換字レイヤを有する。
【０００２】
本発明は、電子ブロック暗号方法及び対応するソフトウェアにも関する。
【背景技術】
【０００３】
ブロック暗号は、暗号学において、しばしば用いられる原理である。ブロック暗号は、暗号キーの制御の下、ディジタルデータのメッセージブロックを暗号化又は復号化するためのアルゴリズムである。ブロック暗号は、慣例的にビットサイズである、幾つかの所定のブロックサイズのディジタルデータのメッセージブロック上で動作する。通常のブロックサイズは、６４ビット、１２８ビット、１９２ビット、及び、２５６ビットを含む。上記の動作は、決定論的全単射の（ひいては可逆な）動作である。既知のブロック暗号は、ＤＥＳ及びＡＥＳを含む。
【０００４】
例えば、コンテンツ配布システムは、海賊版対策のため、配布前に、コンテンツを暗号化してもよい。暗号化されたコンテンツは、安全でないチャネル上で、例えばインターネット上で配布され得るが、暗号化に用いられたキーは、より安全な手段、例えばＤＲＭシステムを用いて配布され得る。しかしながら、上記キーの配布でさえ、リスクがないわけではない。ＤＲＭ実装でさえ、その秘密（秘密キーなど）を復元するために解読され得る。このため、及び、他の理由で、リバースエンジニアリングに対して保護され得る、安全な暗号化／復号化原理への要望がある。
【０００５】
例えば、マスターキーなどの、ＤＲＭ実装において使用されるキーを保護するための１つの方法は、ブロック暗号の実装を用いることであり得る。ホワイトボックス暗号は、秘密キーが「インスタンス化」された、ブロック暗号のソフトウェア実装である。実装においてキーをインスタンス化することは、キーを固定し、キーについての部分的な評価によって、キーを実装に埋め込むことであり、即ち、キー入力は不要となる。キーに依存する計算が、メッセージブロック入力の知識なく、可能な限り評価される。典型的に、キースケジュールが計算され、ラウンドキーが、他のステップと結合され得る。しばしば、ラウンドキーは、換字レイヤと結合され得る。即ち、換字レイヤにおける換字ボックスの出力に対してラウンドキーが追加される。
【０００６】
次に、実装は、難読化される。典型的に、これは、暗号をテーブルネットワークとして表現し、ネットワークのテーブルの符号化にによってなされる。目的は、ホワイトボックス暗号からインスタンス化されたキーを回復する努力が、潜在する暗号上のブラックボックス（例えば、ブルートフォース）アタックと少なくとも同じくらい大きいことである。
【０００７】
１つの理想的な解決法は、１つの大きいルックアップテーブルとして暗号を実装することであろう。しかしながら、これは、実際のブロック暗号にとって、実施不可能である。この理想にアプローチするホワイトボックス戦略が、コンピュータサイエンス２００３における講義ノートのディジタル著作権管理（ＤＲＭ）において、２００２年に発行された、S. Chow, P. Eisen、H. Johnson、及び、P.C. van Oorschot等による、「A White-Box DES Implementation for DRM Applications」で紹介されている。計算、特に、ブロック暗号が、キー情報がネットワーク全体に拡散されるように、ランダム化された、ルックアップテーブルのネットワークとして実装され得る。全ての構成ブロックが、キーから外見上独立しているように作られ得る。暗号を解読しようとする者は、秘密キー情報を得るために、完全なネットワークを分析することを強いられる。テーブルネットワークの難読化は、テーブルに書き出された変換に対して難読化の変換を加える（プリペンド及びアペンド）ことによって可能である。このようにして、全ての難読化変換の組み合わせがキャンセルしたまま、各テーブルがランダム化される。他の例は、Chow, Eisen及びvan Oorschot等による、「White-Box Cryptography and an AES Implementation」において与えられている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ホワイトボックス暗号化では、ブロック暗号は、たとえ攻撃者が実装に対して完全なアクセスを有していたとしても、攻撃者が、キーを抽出することが困難であるように、ソフトウェアにおいて実装される。しかしながら、本発明者は、従来のホワイトボックス技術を用いて安全にすることが難しいという観点において、特定の種類のブロック暗号、いわゆる置換線形変換ネットワーク（Substitution-Linear Transformation Network）が、脆弱性を有することを発見した。より詳細には、Wil Michiels、Paul Gorissen、及び、Henk D. L. Hollmann等による「Cryptanalysis of a Generic Class of White-Box Implementations」を参照されたい。問題は、ＳＬＴ（Substitution-Linear Transformation）タイプの暗号が組織化される、即ち、Chow等によって用いられるような、ホワイトボックス技術を用いた上述のタイプのブロック暗号の任意のホワイトボックス実装が、脆弱であるということに関する。
【課題を解決するための手段】
【０００９】
改善されたブロック暗号を有することが好ましい。
【００１０】
ディジタルデータのメッセージブロックを暗号化又は復号化するように構成された電子ブロック暗号装置が、提供される。当該ブロック暗号装置は、ストレージユニットと、制御ユニットとを有する。
【００１１】
上記ストレージユニットは、ルックアップテーブルの形式で複数の換字ボックスを格納するように構成され、複数の換字ボックスは、ブロック暗号の換字レイヤをともに形成し、換字レイヤは、換字レイヤ入力をとり、換字レイヤ入力を換字レイヤ出力に変換し、少なくとも１つの換字ボックスは、同じ換字レイヤにおける２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信する。
【００１２】
上記制御ユニットは、メッセージブロックにブロック暗号ラウンドのシーケンスを適用することによって、ブロック暗号をディジタルデータのメッセージブロックに適用するように構成され、ブロック暗号ラウンドの１つは、換字レイヤを有する。
【００１３】
少なくとも１つの換字ボックスが、入力として、同じ換字レイヤにおける２以上の他の換字ボックスの少なくとも一部の組み合わせを受信するように構成されるため、換字レイヤは、完全にパラレルではない。これは、ホワイトボックスにおいて用いられるような、このレイヤの入力−出力符号化が、上述の態様において、除去されることができないということを意味する。より一般的には、ブロック暗号部分が、かかる率直な態様において分析され得ることは望ましくないと考えられている。
【００１４】
また、ブロック暗号は、本発明者の、「Computing device configured with a table network」というタイトルで２０１２年１２月２１日に出願された米国特許出願第６１／７４０７２６号明細書に説明されるようなシステムの使用にとても良く適している。さらに、一般的なブロック暗号よりも、上記タイプのソフトウェア実装ブロック暗号上で用いられる場合、自動化ソフトウェア難読化システムが、一般的に、より効果的である。
【００１５】
実際、上述の線形変換レイヤ手法とは異なる方法で、大きい非線形関数が、より小さい非線形関数（Ｓ−ボックス）から作られ、これは、ホワイトボックスアタックコンテキストにおける実装により適している。換字ボックスは、ルックアップテーブルであり、ディジタル入力をとり、当該入力をディジタル出力に変換するように構成される。好ましくは、上記Ｓ−ボックスは、非線形である。
【００１６】
また、非並列性が、少なくとも１つの換字ボックスのディジタル出力の第１の部分が、少なくとも１つの換字ボックスと同じ換字レイヤにおける他の換字ボックスの入力の一部として用いられ、少なくとも１つの換字ボックスのディジタル出力の第２の部分が、同じ換字レイヤにおける他の異なる換字ボックスの入力の一部として用いられるように構成された少なくとも１つの換字ボックスを持つことによって得られる。
【００１７】
ある実施形態では、換字レイヤは、複数のサブレイヤを有し、前記複数のサブレイヤの第１のサブレイヤは、前記換字レイヤ入力を入力として受信し、次のサブレイヤは、前の換字レイヤの前記出力を入力として受信し、前記次のサブレイヤの１つは、前記換字レイヤ出力を作る最後のサブレイヤである。複数のサブレイヤを用いることが、換字レイヤの範囲内で拡散が発生することを保証するための効果的な方法であることが発見された。
【００１８】
ブロック暗号装置は、携帯電話などの携帯電子装置を有していてもよく、携帯電子装置において使用されてもよい。ブロック暗号装置は、セットトップボックス、コンピュータなどを有していてもよく、セットトップボックス、コンピュータなどにおいて使用されてもよい。
【００１９】
本発明の一態様は、ディジタルデータのメッセージブロックを暗号化又は復号化するための電子ブロック暗号方法であって、ルックアップテーブルの形式で複数の換字ボックスを格納するステップであって、前記複数の換字ボックスは、ブロック暗号の換字レイヤをともに形成し、前記換字レイヤは、換字レイヤ入力をとり、前記換字レイヤ入力を換字レイヤ出力に変換し、少なくとも１つの換字ボックスは、同じ換字レイヤにおける２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信するステップと、前記メッセージブロックにブロック暗号ラウンドのシーケンスを適用することによって、前記ブロック暗号を前記ディジタルデータの前記メッセージブロックに適用するステップであって、前記ブロック暗号ラウンドの１つは、前記換字レイヤを有するステップと、を有する方法に関する。
【００２０】
本発明に従った方法は、コンピュータ実装された方法として、又は、専用のハードウェアにおいて、又は、それらの組み合わせにおいて、コンピュータ上で実装されてもよい。本発明に従った方法のための実行可能なコードが、コンピュータプログラム製品上に記録されてもよい。コンピュータプログラム製品の例は、メモリ装置、光学ストレージ装置、集積回路、サーバ、オンラインソフトウェアなどを含む。好ましくは、コンピュータプログラム製品は、上記プログラム製品がコンピュータ上で実行された場合に、本発明に従った方法を実行するために、コンピュータ読み取り可能な媒体に記録された非一時的なプログラムコード手段を有する。
【００２１】
好ましい実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行された場合に、本発明に従った方法の全てのステップを実行するために適合されたコンピュータプログラムコード手段を有する。好ましくは、コンピュータプログラムは、コンピュータ読み取り可能な媒体上に表される。
【図面の簡単な説明】
【００２２】
本発明のこれらの態様及び他の態様が、以下説明される実施形態を参照して、明確且つ明らかとなる。
【図１ａ】図１ａは、ブロック暗号を図示しているブロック図である。
【図１ｂ】図１ｂは、ブロック暗号のラウンドを図示しているブロック図である。
【図２】図２は、換字レイヤを図示しているブロック図である。
【図３】図３は、換字レイヤを図示しているブロック図である。
【図４】図４は、換字レイヤを図示しているブロック図である。
【図５ａ】図５ａは、換字レイヤを図示しているブロック図である。
【図５ｂ】図５ｂは、符号化を含んだ換字レイヤを図示しているブロック図である。
【図６】図６は、計算機を図示しているブロック図である。
【００２３】
異なる図面において同一の参照符号を有するアイテムは、同一の構造的特徴及び同一の機能を持ち、又は、同一の信号であることに留意すべきである。かかるアイテムの機能及び／又は構造が説明されている場合、詳細な説明において、それらの説明を繰り返す必要はない。
【発明を実施するための形態】
【００２４】
本発明は、多くの異なる形式の実施形態を許容可能であるが、本開示が、本発明の原理の一例であると考えられるべきであり、図示及び詳述される特定の実施形態に本発明を限定する意図はないという理解の下、ここでは、１又は複数の特定の実施形態が、図示及び詳述される。
【００２５】
図１ａは、概略的な形式で、ブロック暗号を示している。ブロック暗号は、ブロック暗号ラウンド１１２，１１４，１１６で示される、複数のラウンドを有する。ラウンドの数は、ブロック暗号の設計に依存する。例えば、８又は１２又は１６個のラウンドが、しばしば用いられる。典型的には、ラウンドの数は、８以上である。また、ディジタルデータのメッセージ入力部１１０が示されている。当該メッセージ入力部は、典型的に、バイナリデータであり、固定されたブロックサイズを有する。通常のブロックサイズは、６４、１２８、１９２、２５６であり、特に、１２８が便利な選択である。入力として受信されるメッセージブロックは、例えば、それぞれ８ビットのバイト、又は、それぞれ４ビットのニブルなどのワードに分割されてもよい。ラウンドの最後において、ブロックサイズのメッセージ出力部１２０が作られる。
【００２６】
メッセージブロック１１０から始めて、ラウンド１１２〜１１６が、順次適用され、各ラウンドは、ブロックサイズの中間結果を作る。図１ａの場合、例えば、第１のラウンド１１２が、第１の中間結果を作るために適用され、ラウンド１１４が、第２の中間結果を作るために、第１の中間結果に対して適用される。第１の中間データブロックは、ブロック暗号入力のみに依存し、それぞれ、次の中間データブロックは前の中間データブロックに依存し、一般的に、ラウンド１１４〜１１６は、入力として受信し、ラウンドキーであろう、中間結果のみに依存する。
【００２７】
時々、第１及び最後のラウンドは、様々な実際の理由のために幾らか異なるが、しばしば、全てのブロック暗号ラウンドは、同一のアルゴリズムを用いる。ラウンドは、異なるラウンドキーを用いるため、しばしば、異なる。ラウンドキーは、キースケジュールを用いて、暗号化キーから抽出され得る。ブロック暗号が難読化される方法において実装される場合、ラウンドキーは、固定されてもよく、ラウンドが、部分的に評価される。例えば、多くのブロック暗号（例えば、ＡＥＳ）において、ラウンドキー適用を換字レイヤと結合することが可能である。ブロック暗号は、電子ブロック暗号装置において、便利に実装される。
【００２８】
ラウンドは、換字レイヤ及び線形変換レイヤを有していてもよい。換字レイヤ動作では、換字ボックス（Ｓ−ボックス）がデータブロックに適用される。線形変換レイヤは、データブロック全体に線形変換を適用する。
【００２９】
安全なブロック暗号を得るために、擬似ランダム関数に匹敵する転字Ｅｋ（全単射）を実装すべきであるが、暗号化関数も効率的に実装可能であるべきである。非線形関数のみが、小さいワードサイズのために効率的に実装されることができ、これは、一般的に、ルックアップテーブルによって実装され、これらのテーブルは、ブロックサイズととも指数関数的に増加するサイズを持つ。線形関数は、大きいブロックサイズのために効率的に実装されることができるが、極めて安全ではない。ＡＥＳ及び３ＤＥＳなどの人気のあるブロック暗号は、これらの２つの可能性を結合する。つまり、ブロック暗号ラウンドは、キー適用ステップと、２つのレイヤとを有する。これらのレイヤの第１のレイヤが、Ｓ−ボックスと呼ばれる換字ボックスのセットによって特定される。Ｓ−ボックスは、例えば、ｋビットの小さいワード上の非線形関数である（典型的に、ワードサイズは、バイト又はニブルである）。入力は、ｋビットのワードに分割され、各ワードが、Ｓ−ボックスに与えられる。ＡＥＳ及びＤＥＳでは、上記レイヤは、異なるワードのビット間に依存性を作らず、同一ワードのビット間のみに依存性を作る。第２のレイヤは、線形関数を実行する。線形関数は、完全なｎビットのデータブロック上で動作する。このため、このレイヤは、異なるワードのビット間に依存性を作る。かかるブロック暗号は、置換−線形変換（ＳＬＴ：Substitution-Linear Transformation）ネットワークと呼ばれる。
【００３０】
図１ｂは、図１ａにおいてブロック暗号ラウンドとして使用される、ＳＬＴ暗号のブロック暗号ラウンドの可能な実装を開示している。
【００３１】
ラウンド入力１３０が図示されている。ラウンド入力は、例えば、バイナリなどのディジタルであり、ブロックサイズ幅を有するデータである。図示されるラウンド入力は、ふくすのラウンド入力ワード１３２〜１３６として与えられる。各ワードは、例えば、４又は８ビットの、換字ボックスのサイズを有する。ラウンドは、換字レイヤ１４０を持つ。換字レイヤ１４０は、Ｓ−ボックス１４２〜１４６を有する。各Ｓ−ボックスは、ラウンド入力ワードに対して、ラウンド入力ワード関数を実装する。当該関数は、典型的に、非線形である。例えば、ＸＯＲ動作について非線形である。入力部１３０におけるワードの各々に関し、異なるＳ−ボックスが使用され得る。全てのワードに対して同一のＳ−ボックスが使用されてもよい。換字レイヤ１４０の適用前にラウンドキーが適用される、例えば、ラウンド入力１３０を有するブロックサイズのラウンドキーのＸＯＲされ得ることに留意すべきである。しかしながら、我々は、ラウンドキーが、部分的評価を用いて換字レイヤ１４０に組み込まれてきたことを想定している。
【００３２】
換字レイヤにおけるＳボックス１４２〜１４６の結合結果に対して、例えば、結果は連結され、マトリクス動作などの線形変換１５０が適用される。線形変換は、例えば、ＡＥＳにおけるワードシフトなど、複数の線形結合で作られてもよい。線形変換１５０の結果が、ラウンド出力１６０であり、ここでは、複数のラウンド出力ワード１６２〜１６６として示されている。
【００３３】
換字レイヤ１４０は、このブロックサイズの場合、換字レイヤ入力１３０を入力としてとり、この中間結果の場合、複数のワードを他のワードと置換することによって、換字レイヤ入力１３０を換字レイヤ出力に変換する。Ｓボックスは、ルックアップテーブルであってもよい。換字レイヤ１４０は、完全にパラレルであり、各Ｓボックスは、１つのラウンド入力ワードのみに正確に依存し、各Ｓボックスは、出力として、１つのラウンド出力ワードを作る。ラウンド出力ワードは、この換字レイヤにおいて、再度用いられることはない。換言すれば、換字レイヤ１４０は、同一の換字レイヤにおける２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信するように構成された換字ボックスを持たない。
【００３４】
典型的には、図１ａ及び図１ｂのブロック暗号を実装する装置は、装置に格納される適切なソフトウェアを実行するマイクロプロセッサを有し、例えば、そのソフトウェアは、ＲＡＭなどの揮発性メモリ、又は、Flashなどの不揮発性メモリ（図示省略）である、対応するメモリにダウンロード及び格納されたものであってもよい。
【００３５】
数学的表記では、通常、ＳＬＴネットワークにおいて、ｎビットの非線形関数は、線形変換１５０を介してＳ１、Ｓ２、・・・、Ｓｍのｎ個の出力ビットを混合することによって、ｍ個の小さい、好ましくは高次の、非線形関数（Ｓボックス）Ｓ１、Ｓ２、・・・、Ｓｍ（１４２〜１４６）から形成される。
【００３６】
図１ｂは、典型的なＳＬＴネットワークの構造を示している。ラウンドの入力１３０は、１３２〜１３６として示される、ｋビット（ｎ＝ｍｋ）のｍ個の等しいサイズのワードｘ１、ｘ２、・・・、ｘｍに分割される。通常のワードレングスは、４〜８ビットである（例えば、３ＤＥＳには６ビット、ＡＥＳには８ビット）。入力は、ラウンドキーでＸＯＲ処理され（図１ｂにおいて別途示されてはいない）、この操作の結果が、ｍ個のＳボックスＳ１、Ｓ２、・・・、Ｓｍに与えられる。即ち、ワード１３２が、Ｓボックス１４２に与えられ、ワード１３４が、Ｓボックス１３６に与えられ、入力１３０の各ワードが、対応するＳボックスに与えられる。例えば、ワードｉは、ＳボックスＳｉに与えられる。ｋビット毎の単一の関数において、ラウンドキー追加関数
0006415542.tif 000002
とＳｉとが結合されてもよい。我々は、この関数をＴｉと称する。次に、線形変換１５０が、Ｓボックスの出力に適用される。線形変換は、マトリクスＭとの乗算として表現されてもよい。結果は、ラウンドの出力を与える。ラウンド出力は、次のラウンドへの入力として用いられてもよく、ブロック暗号の出力として用いられてもよく、又は、ブロック暗号への出力として処理及び使用されてもよい。例えば、最終的なラウンドキー適用又は最終的な転字が、前のラウンドとは異なる最終的なラウンドにおいて適用されてもよい。
【００３７】
本発明者は、一般的に、図１ａ及び図１ｂに示されるタイプのＳＬＴブロック暗号が、特に、ホワイトボックス実装などにおいて、難読化された実装を抽出する点で脆弱性を持つことを発見した。ここでは、難読化実装に対して、より良好に適した換字レイヤが示されている。
【００３８】
換字レイヤは、連続的な換字ボックスによって、入力ブロックを出力ブロックに変換する。幾つかの換字ボックスは、換字レイヤ出力の一部を供給し、例えば、出力ボックスの幾つかのビットは、換字レイヤ出力の一部として直接使用され、これらのボックスは、出力ボックスとして表されてもよい。レイヤにおける幾つかの換字ボックスは、換字レイヤ出力から入力を受信し、我々は、入力ボックスとしてこれらのボックスを表し得る。好ましくは、換字レイヤ出力の各部分は、当該レイヤにおけるＳボックスの出力から得られる。好ましくは、換字レイヤ入力の各部分は、当該レイヤにおけるＳボックスのための入力として使用される。
【００３９】
換字レイヤが、ＳＬＴネットワークにおいて使用される場合、換字レイヤは、可逆であるべきである。さらに、かかる換字レイヤの入力及び出力サイズは、ブロックサイズと等しい。しかしながら、換字レイヤが、異なる構造において使用される場合、例えば、ＤＥＳなどのファイステルタイプのネットワークにおいて換字レイヤを置き換える場合、当該レイヤは、可逆である必要もないし、入力及び出力サイズをブロックサイズと等しくする必要もない。実際、換字レイヤ入力のサイズを換字レイヤ出力と等しくないように（典型的には大きく）してもよい。
【００４０】
上述の換字レイヤは、符号化の非線形部分が、入力／出力符号化のアフィン部分から隔離され得るという利点を有することに留意すべきである。かかる分離は、これらの暗号に対する攻撃に直接つながるため、特に、ＳＬＴ暗号において問題である。しかしながら、かかる弱点は、特に、ホワイトボックス攻撃モデルのコンテキストで実装される場合、任意のブロック暗号において好ましくない。
【００４１】
図２、図３、図４、図５ａ及び図５ｂにおいて、この弱点に苦しまない換字レイヤの例が示されている。これらの換字レイヤは、以下に示される換字レイヤと換字レイヤ１４０を置き換えることによって、図１ａ及び図１ｂに示されるＳＬＴ暗号において直接使用されてもよい。次に、幾つか又は全てのラウンドが、換字レイヤ及び可能なラウンドキー付加のみを含む場合、線形変換１５０を除去することも可能である。これは、例えば、換字レイヤが完全な拡散を持つ場合になされることができる。これを確立するための１つの方法は、換字レイヤ出力の各ビットが、換字レイヤ入力の各ビットに依存していることを必要とする。これを保証するための１つの基準は、換字レイヤ出力における各ビット位置ｘ及び換字レイヤ入力における各入力ビット位置ｙに関し、ビット位置ｙにおいてのみ異なるとともに、ｗ１及びｗ２に関する換字レイヤ出力が、少なくともビット位置ｘにおいて異なるという特性をもつ、２つの換字レイヤ入力ｗ１及びｗ２が存在することを必要とする。理想的には、この特性は、各ラウンドキーのために保持されるべきであるが、実際には、ランダムに選択される１つのラウンドキーに関して確立する場合、又は、全てゼロなどに固定される場合に、満足され得る。
【００４２】
より進化したアプリケーションでは、アバランチェ基準が満足されることも必要とされ得る（ラウンド入力などの入力において任意のビットを入れ替え、出力において任意のビットの１／２の入れ替えの可能性を与え、可能性マージンをプラス又はマイナスする）。
【００４３】
アバランチェ基準の定義については、例えば、
0006415542.tif 000003
Vergili及びMelek Yucel等による、「Avalanche and Bit Independence Properties for the Ensembles of Randomly Chosen n x n S-Boxes」の２．１項を参照すればよい。アバランチェ基準は、入力される平文におけるわずかなビット差異が、変更の崩壊につながる、つまり、大きな暗号文ビット差異をもたらすという、ブロック暗号の重要な暗号化特性であると考えられている。より正式には、ある入力ビットが変更された場合に、平均的に、出力ビットの半分が変わる場合、関数は、アバランチェ基準を満たす。アバランチェ基準のこの定義の正確な要件は、現実的でなく、誤り間隔が許容される。アバランチェ基準は、Ｓボックスレベルと同様、ブロック暗号レベルにおいて使用され得る。
【００４４】
一般的に、より小さなＳボックスから作られる大きなＳボックスと同程度に小さく、換字レイヤが用いられ得る。大きなＳボックスは、次に、より小さいＳボックスと同様の方法で、置換線形変換ネットワークにおいて使用されることができるが、ファイステルネットワークにおいても、又は、一般的に、換字ボックスの交換としても、使用され得る。また、このようにして、我々は、より安全な難読化された実装が存在するブロック暗号を作ることができる。新たな手法は、このため、小さいＳボックスからのｎビット上で、非線形関数を作るために得られる。この非線形関数は、難読化実装のためにより適している。図２、図３、図４、図５ａ、及び、図５ｂにおいて、図１ｂに示されるようなＳボックスのパラレルなアプリケーションは使用されないが、Ｓボックスのネットワーク化されたアプリケーションが使用される。つまり、線形変換１５０に対して全てのＳボックスの出力を直接与える代わりに、Ｓボックスの一部の出力部分が、他のＳボックスの入力として使用される。
【００４５】
図において、Ｓボックスは、ボックスとして図示されており、Ｓボックスに向かう矢印は、少なくとも１ビットのＳボックスへの入力を示し、Ｓボックスから出て行く矢印は、少なくとも１ビットの出力を示している。
【００４６】
図２は、換字レイヤ２００を示している。また、換字レイヤ入力２０２と換字レイヤ出力２０４とが示されている。換字レイヤ２００は、第１のサブレイヤ２１０と第２のサブレイヤ２２０とを持つ。第１のサブレイヤ２１０は、換字ボックス２１２〜２１６を有し、第２のサブレイヤ２２０は、換字ボックス２２２〜２２６を有する。
【００４７】
第１のサブレイヤ２１０における各換字ボックスは、換字レイヤ入力２０２から入力の全て又は一部を受信する。第１のサブレイヤ２１０における第１の換字ボックス２１２は、換字レイヤ入力２０２からの入力のみを受信し、第１のサブレイヤ２１０における次の各換字ボックスは、前の換字ボックス及び換字レイヤ入力２０２の両方からの入力を受信する。例えば、換字ボックス２１２は、例えば、８ビットの、換字レイヤ入力２０２からの入力を受信する。換字ボックス２１４は、例えば、４ビットの、換字レイヤ入力２０２からの入力を受信するとともに、例えば、４ビットの、換字レイヤ２１２の出力からの入力を受信する。
【００４８】
ある実施形態では、各換字ボックスは、偶数個の入力ビットをとり、前の出力から半分を受信し、レイヤ入力２０２から半分を受信する（第１の換字ボックスが、レイヤ入力２０２から全てをとることは例外である）。しかし、これらの数は、必要であれば、例えば、前の出力から２ビット又は１ビットをとったり、１以外の全てをとったりするなど、変更されてもよい。
【００４９】
第２のレイヤ２２０における各換字ボックスは、第１のレイヤ２１０における対応するＳボックスから入力を受信する。第１の換字ボックス２２６は、第１のレイヤ２１０における対応するＳボックス２１６からの入力のみを受信し、次の各換字ボックスは、第１のレイヤ２１０における対応するＳボックスからの入力と第２のレイヤ２２０における前のＳボックスからの入力とを受信する。
【００５０】
第１のレイヤ２１０におけるＳボックスの入力は、レイヤ入力２０２を共に形成している。第２のレイヤ２２０の出力は、レイヤ出力２０４を共に形成している。
【００５１】
第２のレイヤにおけるＳボックス２２６を除く全ての換字ボックスは、入力として、同じ換字レイヤにおける２以上の他の換字ボックス、つまり、第１のサブレイヤ２１０における１つのＳボックス及び同じサブレイヤにおける前のＳボックスの出力の少なくとも一部の組み合わせを受信することに留意すべきである。この特徴は、Ｓボックスに適用されるホワイトボックス符号化の単純化のクラスを阻止する。
【００５２】
第２のサブレイヤにおける各Ｓボックスの出力は、第１のレイヤにおける各Ｓボックスの入力に依存していることに留意すべきである。この特徴は、特に、より大きなＳボックスについて、換字レイヤが完全な拡散（各出力ビットが、各入力ビットに依存している）を引き起こす確からしさを高くする。Ｓボックスは、好ましくは、非線形関数として選択される。例えば、追加されるラウンドキーが可能であれば、ＡＥＳのＳボックス又はランダムな非線形関数がとられてもよい。
【００５３】
例えば、ブロックサイズとして、１２８などの、３２以上の２のべき乗がとられ、これが、入力２０２のサイズのために使用されてもよい。各Ｓボックスは、入力及び出力として、４又は８ビットなどの、より小さな２のべき乗を受信してもよい。Ｓボックスが、２以上のソースに対して、入力をとる、又は、出力を送る場合、入力又は出力は、例えば、最上位及び最下位の半分など、２つのソースに等しく分割される（他の分割が可能である）。
【００５４】
図２は、長い依存性チェインの特性を示している。例えば、第４の換字ボックスが第３の換字ボックスの出力から入力を受信し、第３の換字ボックスが第２の換字ボックスの出力から入力を受信し、第２の換字ボックスが第１の出力から入力を受信する特性を持つ、第１の換字ボックス（２１２）、第２の換字ボックス（２１４）、第３の換字ボックス（２２４）、及び、第４の換字ボックス（２２２）がある。これは、例えば、差分又は線形暗号解析に関し、Ｓボックスを通じたチェインの不規則性を特に困難にする。
【００５５】
図３は、換字レイヤ３００を示している。換字レイヤ入力３０２と換字レイヤ出力３０４とが示されている。換字レイヤ３００は、第１のサブレイヤ３１０と第２のサブレイヤ３２０とを持つ。第１のサブレイヤ３１０は、換字ボックス３１２〜３１６を有し、第２のサブレイヤ３２０は、換字ボックス３２２〜３２６を有する。
【００５６】
第１のサブレイヤ３１０における各換字ボックスは、換字レイヤ入力３０２から全ての入力を受信する。第２のサブレイヤ３２０における各換字ボックスは、換字レイヤ３１０における換字ボックスの出力から全ての入力を受信する。第２のサブレイヤ３２０における各換字ボックスは、少なくとも２つの他の換字ボックス又はそれ以上の他の換字ボックスから入力を受信する。例えば、第１及び第２のレイヤにおいて、各Ｓボックスが出力において８ビットを有する、８個のＳボックスがあってもよい。第１のレイヤにおける各Ｓボックスから１ビットを受信する第２のレイヤにおける各Ｓボックスは、第１のサブレイヤ３１０の各出力が、正確に使用されるものであってもよい。
【００５７】
図３の換字レイヤは、図２の長いチェイン特性を持たないが、換字レイヤが、第４及び第３の換字ボックスの両方が、第１及び第２の換字ボックスの出力から入力を受信するという特性を持つ第１の換字ボックス（３１２）、第２の換字ボックス（３１４）、第３の換字ボックス（３２４）、及び、第４の換字ボックス（３２２）を有するという特性を持つ。
【００５８】
図４は、３個のサブレイヤが用いられる図２の変形例を示している。換字レイヤ入力４０２を受信し、換字レイヤ出力４０４を作る換字レイヤ４００が示されている。換字レイヤ４００は、換字ボックス４１２〜４１６を持つ第１のサブレイヤ４１０と、換字ボックス４２２〜４２６を持つ第２のサブレイヤ４２０と、換字ボックス４３２〜４３６を持つ第３のサブレイヤとを有する。サブレイヤの数は、３より多くに増加されてもよいし、あるいは、例えば、３２（又はより多く）又は６４まで増加されてもよい。かかる換字レイヤは、線形拡散レイヤ１５０なしで用いられてもよい。
【００５９】
図２〜図４に示される換字レイヤの全てが、個別のＳボックスが可逆である場合はいつでも可逆であることに留意すべきである。
【００６０】
図５ａは、ラウンドキーがＳボックスに含まれる図２の例を示している。この例では、ラウンドワードは、ｋ＝８のサイズを有する。使用されるＳボックスの数は、ｐによって与えられている。Ｓボックスのネットワークは、左（第１）レイヤと右（第２）レイヤとからなる。左レイヤでは、ＳボックスＴｉ（ｉ＜ｐ）の出力バイトが、２つのニブルに分割される（２つのワードへの他の分割も可能である）。一のニブルは、右レイヤのＳボックスＴｐ＋Ｉに対する入力として与えられ、他のニブルは、左レイヤにおける次のＳボックスＳｉ＋１に与えられる。
【００６１】
好ましくは、ネットワークの各出力ビットは、ネットワークの各入力ビットによって影響を受ける。この特性（拡散特性）は、ＳＬＴ暗号において線形変換レイヤを導入したためである。この特性を実現、又は、少なくとも近似するために、左レイヤにおける各Ｓボックスから右レイヤにおける各Ｓボックスへの、ネットワーク内の経路が存在する。
【００６２】
上述したように与えられるＳボックスＴ１、Ｔ２、・・・、Ｔ２ｐのネットワークを考える。ｐ＝３をとることによって、我々は、１６ビット上で、非線形全単射関数を構築することができる。この関数を実装するために、我々は、各Ｔｉに１つが割り当てられる、６個のルックアップテーブルを必要とする。これらのルックアップテーブルは、２８個の行からなり、各行は、１バイトを含む。このため、ストレージ要件は、１５３６バイトである。対称的に、我々が、単一のルックアップテーブルによって、任意の１６ビットのＳボックスＧを実装する場合、これは、各行が２バイトからなる、２１６行からなるルックアップテーブルを必要とする。これは、１３１０７２バイトのストレージ要件を示している。より一般的には、Ｆのためのストレージ要件は、２ｐ・２８である一方、Ｇのためのストレージ要件は、２４＋４ｐである。このため、Ｆのストレージ要件は、ｐにおいて線形的に大きくなり、Ｇのストレージ要件は、ｐにおいて指数関数的に大きくなる。
【００６３】
図５ａは、全ての入力／出力分割が２つのｋ／２サイズの部分である場合、サイズｋ（ｐ＋１）／２の入力を許容している。入力として２のべき乗を持つことが望まれる場合、２のべき乗として、ｋ及び（ｐ＋１）が選択されるべきである。
【００６４】
図５ａの構成によって得られる換字レイヤは、様々な方法において、Ｆから、ｎビット上でブロック暗号を構築するように採用され得る。我々は、ブロック暗号の単一ラウンドがどのように構築され得るのかを説明する事に対し、我々を制限する。完全なブロック暗号が、複数の上記ラウンドのシーケンスによって単純に得られる。Ｆがｎビット上の関数となるようにｐを選択する、又は、Ｆがｌビット上の関数となるようにｐを選択する。ここで、ｌはｎを分割する、即ち、あるｒに関し、ｎ＝ｌ・ｒである。（Ｆ１、Ｆ２、・・・、Ｆｒによって示される）係る関数の生成ｒに関し、図１ａ及び図１ｂに図示されるようなＳＬＴネットワークが、Ｓボックス１４２〜１４６がＦｉ及びｍ＝ｒによって与えられ、構築され得る。得られた暗号は、特に、ホワイトボックス実装に関し、標準的なＳＬＴ暗号よりも、ホワイトボックス攻撃モデルのコンテキストにおける難読化実装に適している。
【００６５】
図５ｂのように、難読化された実装は、実装に対して完全なアクセスを持つ攻撃者からキーを隠す。当該技術自体は既知であり、以下により行なわれる。最初に、テーブルネットワークとして難読化されるべき関数を表現し、即ち、当該関数は、各テーブルが、ブロック暗号入力又は他のテーブルの出力などの、ネットワーク入力の一部を入力としてそれぞれ受信する、テーブルのネットワークによって計算され、他のテーブルに対してブロック暗号出力及び／又は入力を出力として作る。次に、上記テーブルが、テーブルに対して符号化を適用することによって、難読化される。出力及び入力に対する符号化をキャンセルすることを保証することによって、ネットワーク全体が同一の関数を計算することが保証されるが、この定時性はネットワーク全体に亘って分布される。換字ネットワークが既にテーブルネットワークであるため、この技術は、ここで説明される換字ネットワークに対してよく適合する。
【００６６】
我々は、ルックアップテーブルによって、図５ａのネットワークにおけるＳボックスＴｉを実装する。我々は、次に、その入力及び出力を符号化することによって、（キーを含む）これらのルックアップテーブルを難読化する。テーブルＴｉの入力及び出力を全単射関数ｆｉ及びｇｉで符号化することは、テーブルＴｉを
0006415542.tif 000004
によって、置換することにそれぞれ対応する。このため、我々は、それを、入力復号化及び出力符号化に組み込む。符号化のアプリケーションが難読化を実現するため、ルックアップテーブルの入力を符号化することが行の順序を変えること、及び、出力を符号化することが行の値を変えることであることを観測する。
【００６７】
符号化は、全ての実装の機能が影響されないように適用される。これは、テーブルの入力符号化を選択することによってなされ、結果、ネットワークにおいて先行するテーブルによってその入力データが置かれた符号化とマッチする。このことが、図５ｂに図示されている。
【００６８】
我々が、同様の難読化技術をＳＬＴ暗号に適用する場合、最終的な実装は安全ではない。即ち、かかる難読化された実装からキーを抽出するための幾つかの攻撃が、知られている。これらの全ての攻撃は、ＳＬＴ暗号にとって典型的であり、図５ｂによって規定される暗号に存在しない脆弱性を悪用する。
【００６９】
図６は、ストレージ装置６１０と、コンピュータプロセッサ６５０と、Ｉ／Ｏ装置６６０とを有するブロック暗号装置６００を示している。ストレージ装置６１０は、（ルックアップテーブル６２１及び６２２として示されている）ルックアップテーブルと、コンピュータコード６５５とを格納する。ルックアップテーブルは、可能であれば、例えば、ホワイトボックス形式などの符号化された形式の換字ボックスに対応している。Ｉ／Ｏ装置６６０は、ネットワークを介してメッセージを送受信するためのネットワーク装置であってもよい。
【００７０】
動作中、Ｉ／Ｏ装置６６０は、符号化されたメッセージを受信し得る。メッセージブロックが、受信されたメッセージから抽出される。プロセッサ６５０は、コンピュータコード６５５の制御下で、メッセージブロックにブロック暗号を適用する。例えば、プロセッサ６５０は、ルックアップテーブルにおいて表現されるように、メッセージブロックに対して換字レイヤを適用してもよい。例えば、ストレージ装置６１０は、ルックアップテーブルがどのデータに適用される必要があるかを示すテーブルを格納してもよい。換字レイヤの後で、プロセッサ６５０は、線形変換を適用してもよい。後者は、テーブルの形式よりもむしろコードの形式で表現され得る。しかし、当該変換は、テーブルネットワークの形式で格納されてもよい。後者は、ホワイトボックス攻撃モデルのコンテキストにおいて好まれる。このように、プロセッサ６５０は、それぞれ換字レイヤを具備する複数のラウンドを適用する。キーが、換字レイヤに組み込まれている場合、ラウンドにおいて、ラウンドキーの適用は必要とされない。ブロック暗号が完了し、全てのラウンドが実行された場合、プロセッサ６５０は、受信したメッセージブロックの暗号化バージョンにアクセスできる。全てのブロックが暗号化された場合、プロセッサ６５０は、例えば、それが暗号化されたコンテンツである場合、それを表示するなど、結果を処理してもよい。
【００７１】
逆に、暗号化された通信を送る必要がある場合、プロセッサ６５０は、暗号化されたメッセージブロックを得るために、平文テキストブロックに対してブロック暗号を適用する。しばしば、同一のブロック暗号が、暗号化の場合、反対の関数を実行するために適用され得る。しかしながら、ホワイトボックス攻撃モデルのコンテキストでは、暗号化及び復号化のために異なる実装を有することが好ましい。
【００７２】
ストレージ装置６１０において、暗号化キーを明確に格納する必要はないことに留意すべきである。むしろキーは、ブロック暗号自体に埋め込まれる。符号化の難読化及び換字レイヤの特性のため、このキーは、抽出されにくい。
【００７３】
ディジタルデータのメッセージブロックを暗号化又は復号化するための電子ブロック暗号方法では、格納ステップと、適用ステップとがある。格納ステップは、ルックアップテーブルの形式で複数の換字ボックスを格納するステップであって、複数の換字ボックスは、ブロック暗号の換字レイヤをともに形成し、換字レイヤは、換字レイヤ入力をとり、換字レイヤ入力を換字レイヤ出力に変換し、少なくとも１つの換字ボックスは、同じ換字レイヤにおける複数の換字ボックスの２以上の他の換字ボックスの出力の少なくとも一部の組み合わせを入力として受信する。適用ステップでは、メッセージブロックにブロック暗号ラウンドのシーケンスを適用することによって、ブロック暗号がディジタルデータのメッセージブロックに適用され、ブロック暗号ラウンドの１つは、換字レイヤを有する。
【００７４】
当該技術分野における当業者には明らかであるように、上記方法を実行する多くの異なる方法が可能である。本発明に従った方法は、プロセッサシステムに上記方法を実行させるための命令を有するソフトウェアを用いて実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって実行される上記ステップのみを含んでいてもよい。当該ソフトウェアは、ハードディスク、フロッピー、メモリなどの、適切なストレージ媒体に格納されてもよい。上記ソフトウェアは、有線又は無線で、あるいは、インターネットなどのデータネットワークを用いて、信号として送信されてもよい。上記ソフトウェアは、ダウンロード用に、及び／又は、サーバ上で遠隔使用できるように、利用可能であってもよい。
【００７５】
当然のことながら、本発明は、本発明を実施するために適合された、特に、媒体上又は媒体内のコンピュータプログラムなどの、コンピュータプログラムにも拡張される。当該プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式などのソースコード及びオブジェクトコードの中間コードの形式、又は、本発明に従った方法の実装において用いられる適切な任意の他の形式であってもよい。コンピュータプログラム製品に関する実施形態は、上記方法の少なくとも１つの処理ステップの各々に対応するコンピュータ実行可能な命令を有する。これらの命令は、サブルーチンに分割されてもよいし、及び／又は、静的又は動的にリンクされ得る１又は複数のファイルに格納されてもよい。コンピュータプログラム製品に関する他の実施形態は、上記システム及び／又は製品の少なくとも１つの手段の各々に対応するコンピュータ実行可能な命令を有する。
【００７６】
上記実施形態は例示であって、本発明を限定せず、当該技術分野における当業者は、多くの代替的な実施形態を設計可能であることに留意すべきである。
【００７７】
請求項中、括弧内の任意の参照符号は、請求項を限定するものとして解釈されるべきではない。「有する」なる動詞及びその活用形の使用は、請求項に規定された要素又はステップ以外の要素又はステップの存在を除外しない。単数形は、かかる要素が複数存在することを除外しない。本発明は、幾つかの区別可能な要素を有するハードウェアにより実装されてもよく、適切にプログラムされたコンピュータにより実装されてもよい。幾つかの手段を規定している装置クレームにおいて、これらの手段の幾つかは、全く同一のハードウェアによって実現されてもよい。特定の特徴が相互に異なる従属請求項において言及されているという単なる事実は、これらの特徴の組み合わせが好適に用いられないということを示すものではない。
【符号の説明】
【００７８】
１００  ブロック暗号
１１０  メッセージ入力部
１１２〜１１６  ブロック暗号ラウンド
１２０  メッセージ出力部
１３０  ラウンド入力
１３２〜１３６  ラウンド入力文字
１４０  換字レイヤ
１４２〜１４６  換字ボックス
１５０  線形変換
１６０  ラウンド出力
１６２〜１６６  ラウンド出力文字
２００  換字レイヤ
２０２  換字レイヤ入力
２０４  換字レイヤ出力
２１０  第１のサブレイヤ
２２０  第２のサブレイヤ
２１２〜２２６  換字ボックス
３００  換字レイヤ
３０２  換字レイヤ入力
３０４  換字レイヤ出力
３１０  第１のサブレイヤ
３２０  第２のサブレイヤ
３１２〜３２６  換字ボックス
４００  換字レイヤ
４０２  換字レイヤ入力
４０４  換字レイヤ出力
４１０  第１のサブレイヤ
４２０  第２のサブレイヤ
４３０  第３のサブレイヤ
４１２〜４３６  換字ボックス
６００  計算機
６１０  ストレージ装置
６２１，６２２  ルックアップテーブル
６５０  コンピュータプロセッサ
６５５  コンピュータコード
６６０  Ｉ／Ｏ装置
【図１ａ】
0006415542.tif 000005
【図１ｂ】
0006415542.tif 000006
【図２】
0006415542.tif 000007
【図３】
0006415542.tif 000008
【図４】
0006415542.tif 000009
【図５ａ】
0006415542.tif 000010
【図５ｂ】
0006415542.tif 000011
【図６】
0006415542.tif 000012