(57)【要約】暗号化アルゴリズムを実行する暗号化エンジンで暗号化または復号化を行なう方法は、入力とＳ−ボックスからの出力とから鍵情報を明かす差動出力解析の危険を減じる。Ｓ−ボックスにおけるデータへアクセスするために用いられるデータ及びアドレス場所は暗号化される。暗号化されたＳ−ボックスからのデータの検索は、ルックアップ演算のために用いられる前記Ｓ−ボックスへの入力アドレスを変更するアドレス変更機能を実行し、前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するためのデータ変更機能を実行することによって達成され、前記アドレス変更機能および前記データ変更機能は、Ｓ−ボックスの暗号化を補償するように選択される。前記Ｓ−ボックス暗号化及び変更機能は、定期的に更新される。
2005527150.tif 000002
【特許請求の範囲】
【請求項１】
暗号化アルゴリズムを実行する暗号化エンジンで暗号化または復号化を行なう方法であって、
ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するためのアドレス変更機能を実行することにより、暗号化されたＳ−ボックスからデータを検索するステップと、前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するための前記データ変更機能を実行するステップとを含み、前記アドレス変更機能および前記データ変更機能は、Ｓ−ボックスの暗号化を補償するように選択される、方法。
【請求項２】
前記アドレス変更機能は、入力アドレスとアドレス変更定数ＲＡとのＸＯＲ結合を行なうことを含んでいる、請求項１に記載の方法。
【請求項３】
前記データ変更機能は、Ｓ−ボックスからの出力とデータ変更定数ＲＤとのＸＯＲ結合を行なうことを含んでいる、請求項２に記載の方法。
【請求項４】
ＤＥＳアルゴリズムに適用され、ＲＤが任意の３２ビット値であり、ＲＡ＝Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ））である、請求項３に記載の方法。
【請求項５】
前記アドレス変更機能と前記ルックアップ演算との間で行なわれる少なくとも１つの他のデータ変換ステップを更に含み、前記アドレス変更機能および前記データ変更機能は、前記少なくとも１つの他のデータ変換ステップの結果を補償するようにもなっている、請求項１に記載の方法。
【請求項６】
前記ルックアップ演算の前記出力と前記データ変更機能との間で行なわれる少なくとも１つの他のデータ変換ステップを更に含み、前記アドレス変更機能および前記データ変更機能は、前記少なくとも１つの他のデータ変換ステップの結果を補償するようにもなっている、請求項１に記載の方法。
【請求項７】
ＤＥＳアルゴリズムに適用され、前記データ変更機能は、次の暗号化ラウンドのために右ブロックから左ブロックへ転送される、データに適用される請求項６に記載の方法。
【請求項８】
前記アドレス変更機能は、前記Ｓ−ボックスに対するルックアップ演算の直前で適用される、請求項７に記載の方法。
【請求項９】
前記データ変更機能は、右ブロックデータとデータ変更定数ＤとのＸＯＲ結合を行なうことを含み、前記アドレス変更機能は、Ｓ−ボックスアドレスとアドレス変更定数ＣとのＸＯＲ結合を行なうことを含んでいる、請求項８に記載の方法。
【請求項１０】
ＣおよびＤの値は、各暗号化ラウンド毎に、テーブル１のリストにしたがって選択される、請求項９に記載の方法。
【請求項１１】
トリプルＤＥＳアルゴリズムの３つの段階のそれぞれに適用され、ラウンド１，２においてＤ＝ＲＤ、ラウンド３から４６においてＤ＝０、ラウンド４７，４８においてＤ＝ＲＤとなるように、また、Ｃ１４およびＣ１５にそれぞれ設定されるＣ４６およびＣ４７を除いてＣが変わらないように、ＣおよびＤの値が変更される、請求項１０に記載の方法。
【請求項１２】
ＡＥＳ暗号化アルゴリズムに適用され、前記アドレス変更機能は、連続するラウンドにおける各サブバイト演算へのデータ入力に適用され、前記データ変更機能が最後のラウンドで適用される、請求項１または６に記載の方法。
【請求項１３】
ＡＥＳ復号化アルゴリズムに適用され、前記アドレス変更機能は、連続するラウンドにおける各逆シフト横列演算へのデータ入力に適用され、前記データ変更機能が最後のラウンドで適用される、請求項１または６に記載の方法。
【請求項１４】
前記アドレス変更機能は、サブバイト変換への入力とアドレス変更定数ＣとのＸＯＲ結合を行なうことを含み、前記データ変更機能は、最後のラウンドにおける加算ラウンド鍵演算の出力とデータ変更定数ＤとのＸＯＲ結合を行なうことを含んでいる、請求項１２に記載の方法。
【請求項１５】
Ｃの値は、第１の暗号化ラウンドにおいてはＲＤであり、その後の暗号化ラウンドにおいては０であり、Ｄの値がＲＤとして選択される、請求項１４に記載の方法。
【請求項１６】
前記アドレス変更機能は、逆シフト横列変換への入力とアドレス変更定数ＣとのＸＯＲ結合を行なうことを含み、前記データ変更機能は、最後のラウンドにおける加算ラウンド鍵演算の出力とデータ変更定数ＤとのＸＯＲ結合を行なうことを含んでいる、請求項１３に記載の方法。
【請求項１７】
Ｃの値は、第１の復号化ラウンドにおいてはＲＤであり、その後の復号化ラウンドにおいては０であり、Ｄの値がＲＤとして選択される、請求項１６に記載の方法。
【請求項１８】
暗号化／復号化アルゴリズムのその後の繰り返しにおいて前記アドレス変更機能および前記データ変更機能を定期的に変化させるステップを更に含み、前記変化は、Ｓ−ボックスの暗号化における対応する変化を補償するように選択される、請求項１から１７のいずれか一項に記載の方法。
【請求項１９】
暗号化アルゴリズムを実行する暗号化エンジンで暗号化または復号化を行なう方法であって、
ａ）データと、Ｓ−ボックス内の前記データにアクセスするために使用されるアドレス場所とを暗号化するステップと、
ｂ）対応するアドレス変更機能とデータ変更機能とを規定して、データおよびＳ−ボックス内のアドレス場所の暗号化を補償するステップと、
ｃ）ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するための前記アドレス変更機能を使用することにより、暗号化されたＳ−ボックスからデータを検索するとともに、前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するための前記データ変更機能を実行するステップと、
ｄ）新たな暗号化機能を用いてステップａ）からｃ）を定期的に繰り返すステップと、
を含んでいる、方法。
【請求項２０】
暗号化機能と重ね合わされる所定の暗号化変換にしたがって、所定のデータ出力を入力値に応じて供給する暗号化されたＳ−ボックスと、
ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するためのアドレス変更機能を実行することにより、暗号化されたＳ−ボックスからデータを検索する手段と、
前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するためのデータ変更機能を実行するための手段であって、前記アドレス変更機能および前記データ変更機能がＳ−ボックスの暗号化を補償するように選択される手段と、
を備えている、暗号化エンジン。
【請求項２１】
新たな暗号化機能をＳ−ボックスに定期的に適用するとともに、この暗号化機能に対応するようにアドレス変更機能およびデータ変更機能を更新する手段を更に有している、請求項２０に記載の暗号化エンジン。
【請求項２２】
スマートカードデバイス内に設けられる、請求項２０または２１に記載の暗号化エンジン。
【請求項２３】
コンピュータプログラムコード手段を有するコンピュータ読取可能媒体を備えるコンピュータプログラムプロダクトであって、前記コンピュータプログラムコード手段は、前記プログラムがコンピュータ上にロードされる時に、請求項１から１９のいずれか一項に記載の処理をコンピュータに実行させるようになっている、コンピュータプログラムプロダクト。
【請求項２４】
電子的なデータ伝送によって分配可能なコンピュータプログラムであって、前記プログラムがコンピュータ上にロードされる時に、請求項１から１９のいずれか一項に記載の処理をコンピュータに実行させるようになっている、コンピュータプログラムコード手段を備えている、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックサイファを使用する暗号化および復号化技術に関し、特に、ブロックサイファにおけるＳ−ボックスの実施に関する。本発明は、デバイスの作動中にサイドチャンネル情報を得るために差動出力（電力）解析等の暗号解読技術に対して特に無防備となり得るスマートカードおよび他のデバイスに組み込まれるような暗号化デバイスに特定の用途を有しているが、そのような用途に限定されない。
【背景技術】
【０００２】
スマートカード等のデバイス上には、マイクロプロセッサおよび関連するロジックを使用して、多くの暗号化デバイスが実装されている。通常の入力および出力作業の最中に安全に暗号化されるデータをスマートカードから得るために、多くの出力（電力）解析技術を幅広く利用することができる。特に、例えばＫｏｃｈｅｒらによる「差動出力（電力）解析」（ｗｗｗ．ｃｒｙｐｔｏｇｒａｐｈｙ．ｃｏｍ）およびＭｅｓｓｅｒｇｅｓらによる「スマートカードに対する出力（電力）解析攻撃の調査」（スマートカード技術に関するＵＳＥＮＩＸ研究会の議事録、１９９９年５月、１５１頁〜１６１頁）に記載されているように、暗号化または復号化演算で使用されるラウンド鍵を作るために、暗号化または復号化演算を行なうロジックの電力消費量の解析が使用されても良い。
【０００３】
特に、データ暗号化規格（ＤＥＳ）ブロックサイファおよび拡張暗号化規格（ＡＥＳ）ブロックサイファで使用されるＳ−ボックスにアクセスする「ルックアップ」演算は、出力（電力）解析技術に対して特に無防備であり、また、Ｓ−ボックスの使用は、その非線形特性により、所定のサイドチャンネル攻撃に対して保護することが難しい。
【０００４】
従来技術において、国際公開公報第００／４６９５３号は、Ｓ−ボックスを２つの部分に分割することを提案したが、スマートカード上に暗号化デバイスを実装するような特定の用途において、これは、時として容易に利用可能であり或いは望ましい数よりも多い数のメモリを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、暗号化演算を行なう暗号化論理回路および特にＳ−ボックスが出力（電力）解析攻撃を殆ど受けないようにするブロックサイファに一般に適用可能な暗号化技術および復号化技術を提供することである。
【課題を解決するための手段】
【０００６】
一態様において、本発明は、暗号化アルゴリズムを実行する暗号化エンジンで暗号化及び／又は復号化を行なう方法であって、
ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するためのアドレス変更機能を実行することにより、暗号化されたＳ−ボックスからデータを検索するステップと、前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するための前記データ変更機能を実行するステップとを含み、前記アドレス変更機能および前記データ変更機能は、Ｓ−ボックスの暗号化を補償するように選択される方法を提供する。
【０００７】
他の態様において、本発明は、暗号化アルゴリズムを実行する暗号化エンジンで暗号化及び／又は復号化を行なう方法であって、
ａ）データと、Ｓ−ボックス内の前記データにアクセスするために使用されるアドレス場所とを暗号化するステップと、
ｂ）対応するアドレス変更機能とデータ変更機能とを規定して、データおよびＳ−ボックス内のアドレス場所の暗号化を補償するステップと、
ｃ）ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するための前記アドレス変更機能を使用することにより、暗号化されたＳ−ボックスからデータを検索するとともに、前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するための前記データ変更機能を実行するステップと、
ｄ）新たな暗号化機能を用いてステップａ）からｃ）を定期的に繰り返すステップと、
を含んでいる方法を提供する。
【０００８】
他の態様において、本発明は、暗号化機能と重ね合わされる所定の暗号化変換にしたがって、所定のデータ出力を入力値に応じて供給する暗号化されたＳ−ボックスと、
ルックアップ演算のために使用される前記Ｓ−ボックスへの入力アドレスを変更するためのアドレス変更機能を実行することにより、暗号化されたＳ−ボックスからデータを検索する手段と、
前記ルックアップ演算の結果として前記Ｓ−ボックスから出力されるデータを変更するためのデータ変更機能を実行するための手段であって、前記アドレス変更機能および前記データ変更機能がＳ−ボックスの暗号化を補償するように選択される手段と、
を備えている暗号化エンジンを提供する。
【発明を実施するための最良の形態】
【０００９】
ここで、添付図面を参照しながら、一例として、本発明の実施形態について説明する。
【００１０】
（ＤＥＳアルゴリズムの実施）
ここで、図１に流れ図の形態で概略的に示されているＤＥＳブロックサイファとの関連で、本発明の第１の詳細な実施を説明する。図中、情報の流れラインは、それぞれの情報の流れの中で転送されるデータビットの数を示している。
【００１１】
ＤＥＳブロックサイファは、それぞれが６４ビットの複数のプレーンテキストブロック１０を受ける。各６４ビットブロック１０は、所定のビットが所定の新たなビット位置に移動される初期置換（ＩＰ）機能１２を受ける。この演算からの出力は、左ブロックＬおよび右ブロックＲと称される２つの３２ビットブロック１４０，１５０にそれぞれ分割される。最初のラウンドにおいて、これらのブロックは、Ｌ０，Ｒ０として示されている。
【００１２】
この後において、左および右ブロックＬ，Ｒの演算には、１６個の連続するラウンドがある。各ラウンドにおいて、右ブロックＲは、新たなラウンドの左ブロックへ、例えば１４１のＬ１へと、変化することなく転送される。
【００１３】
また、右ブロックは、左ブロックの変換を生成するために使用される。このため、右ブロックＲ０の３２ビットは、１６１の暗号機能演算ｆにおいて、図２を参照して後述する第１の鍵ＲＫ１と結合される。この暗号機能演算ｆの３２ビット出力は、ＸＯＲ演算１７１において、左ブロックＬ０の３２ビットと結合され、それにより、新たな右ブロックＲ１が１５１に形成される。
【００１４】
このような処理は、１４０，１５０から始まって１４１６，１５１６に至るまで、左右のブロックにおける１６個のラウンドにわたって繰り返される。各ラウンドにおいては、鍵スケジュールアルゴリズムにしたがって６４ビットＤＥＳ鍵から得られる異なる４８ビット鍵ＲＫ１からＲＫ１６が使用される。
【００１５】
１６個のラウンドの最後に、１４１６，１５１６における左右のブロックＬ１６，Ｒ１６は、１８で示される６４ビットブロックへと再結合される。この場合、初期置換機能の逆機能ＩＰ−１は、ブロックのビットを、最終暗号文出力ブロック１９へと再編成する。
【００１６】
図２を参照しながら、１６１から１６ｎにおける暗号機能ｆの実施について説明する。
【００１７】
２１で示される３２ビット右ブロックＲｎは、予め決められた特定のビット位置を単に複製することにより、２２で示される４８ビットブロックＲｎ’に拡張される。その後、ＸＯＲ機能２３において、２０で示される４８ビットラウンド鍵ＲＫｎ＋１が、拡張された右ブロック２１と結合され、それにより、４８ビット出力値２４が生成される。この出力値は、８個の６ビットブロック２４０．．．．２４７に分割される。各６ビットブロックは、対応するＳ−ボックス（ルックアップテーブル）２６０から２６７への入力として使用されて、対応する４ビット出力２８０から２８７を生成し、これらの出力が結合されて３２ビットブロック２８が形成される。ブロック２８は、所定の置換機能２９に対して入力されることにより、３２ビット出力を生成し、この３２ビット出力は、ＸＯＲ機能１８ｎにおいてＬｎ（図１のブロック１４ｎ）と結合されることにより右ブロックＲｎ＋１（図１のブロック１５ｎ＋１）を生成する。
【００１８】
ＤＥＳアルゴリズムの多くのハードウェア実施において、Ｓ−ボックスは、その時々に、ＲＯＭまたはフラッシュメモリから暗号化エンジンへとダウンロードすることができる。本発明は、ダウンロードされたＳ−ボックスＳ０からＳ７の暗号化を提供する。
【００１９】
図３を参照すると、Ｓ−ボックス２６がその時々にＲＯＭから暗号化エンジンへとダウンロードされる度に、ルックアップテーブルのアドレスが任意の値ＲＡｉとＸＯＲ結合され、ダウンロードされたデータが任意の値ＲＤｉとＸＯＲ結合される。図２から分かるように、各Ｓ−ボックスアドレスは６ビットであり、データ出力は４ビットである。したがって、結合された８個の全てのＳ−ボックスにおいて、ＲＡｉ値は、４８ビット幅であり、ＲＡとして示され、また、ＲＤｉ値は、３２ビット幅であり、ＲＤとして示される。そのため、Ｓ−ボックスのデータ位置及びその値の両方が暗号化されたことが認識される。
【００２０】
このように、一般的な態様においては、Ｓ−ボックス内に記憶されたデータがデータ変更機能にしたがって変更されるとともに、データのアドレスがアドレス変更機能にしたがって変更される。好適な実施形態において、データ変更機能は、データと所定の任意の値とをＸＯＲ結合することを含む。好適な実施形態において、アドレス変更機能は、アドレスと所定の任意の値とをＸＯＲ結合することを含む。
【００２１】
暗号化されたＳ−ボックスからデータを回収するため、図２のルックアップ演算（検索操作）中に、最初に、アドレス値２４０から２４７を対応する任意の値ＲＡｉと結合されるとともに、データ出力値２８０から２８７を対応する任意の値ＲＤｉと結合されて、従来のＳ−ボックスと同じ結果を与えなければならない。この演算が図４に示されている。
【００２２】
このように、一般的な態様においては、ルックアップ演算中に、ルックアップのためのアドレス値がアドレス変更機能にしたがって変更されるとともに、ルックアップ演算からのデータ出力がデータ変更機能にしたがって変更される。好適な実施形態において、データ変更機能は、データ出力と所定の任意の値とをＸＯＲ結合することを含む。好適な実施形態において、アドレス変更機能は、アドレス入力と所定の任意の値とをＸＯＲ結合することを含む。
【００２３】
しかしながら、本発明の好適な実施形態において、ＸＯＲ機能（または、他の変更機能）は、Ｓ−ボックスの入力及び／又は出力で直接に適用されるのではなく、他の位置で適用され、それにより、Ｓ−ボックスがリロードされた時に暗号化エンジンにおけるレジスタおよびロジックの内容が変化するようになる。
【００２４】
図７は、従来のＤＥＳ暗号化ラウンドの略図を示している。各レジスタ１４，１５は３２ビットを含んでいる。Ｒは、エキスパンダ２２で４８ビットに拡張されるとともに、そのラウンドにおける４８ビットラウンド鍵ＲＫｎとＸＯＲ結合される。これは、８個の暗号化されていないＳ−ボックス２６に対して入力される。暗号化されていないＳ−ボックスの３２ビット出力は、２９で置換された後、Ｌレジスタ１４の内容とＸＯＲ結合され、それにより、次のラウンドのためのＲの新たな値が得られる。レジスタ１５内のＲの古い値は、次のラウンドのために、Ｌレジスタ１４内に移される。
【００２５】
比較のため、図８は、本発明の一実施形態にしたがって変更されたＤＥＳ暗号化ラウンドを示している。この構成において、Ｓ−ボックス８０は、そのローディング中に、図３に関連して説明した処理にしたがって暗号化された。Ｓ−ボックス８０の暗号化を補償するため、更に別のアドレス変更機能８１が、暗号化されたＳ−ボックス８０への入力部で挿入される。しかしながら、図４に関連して説明した暗号化Ｓ−ボックスルックアップ方法とは異なり、この構成において、暗号化されたＳ−ボックスからのデータ出力は、データ変更機能によって直ちに復号化されない。データ変更機能８２は、置換機能２９の後であって、レジスタ１５内のＲデータブロックをレジスタ１４内のＬデータブロックへ転送する際に、挿入される。
【００２６】
あるいは、鍵メモリ自体と、ラウンド鍵の生成の保護も行なうラウンド鍵生成器との間にアドレス変更機能８１が挿入されても良い。
【００２７】
図８の方式では、アドレス変更機能およびデータ変更機能のそれぞれにおいて使用されるデータ値ＲＡｉ，ＲＤｉ（図３）が、全てのｉ（すなわち、８個のＳ−ボックス）において、データ値Ｃ，Ｄに取って代えられる。Ｃ，Ｄにおける値は、次のラウンドへのデータ変更機能８２の遅れを補償するように選択される。
【００２８】
ＲＤは、３２ビットの任意の値である。先ず最初に、我々は、ＲＡ＝Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ））を選択する。ここで、Ｅｘｐｄは、ＤＥＳ拡張機能２２（図２）であり、Ｐｅｒｍは、置換機能２９（図２）である。この演算は、更なるハードウェアを必要としない。その理由は、置換機能がビットを単に置き換えているだけであり、拡張機能が選択されたデータビットを単に複製しているだけであるためである。
【００２９】
ＣおよびＤは、Ｌレジスタ１４およびＲレジスタ１５が標準的なＤＥＳと常に任意の値の分だけ異なるように（最初と最後のラウンドを除く）選択されることが好ましい。このことは、これらのデータ値が次のブロック暗号化で変更される際に、ＲレジスタおよびＬレジスタの内容が、先のブロック暗号化演算と異なっていることを意味している。また、他の論理素子の出力も異なる。これにより、任意の定数ＲＤがその時々で変更される場合には、暗号化システムにおける直接的なサイドチャンネル攻撃が非常に困難になり或いは不可能になる。
【００３０】
以下のテーブル１は、暗号化ラウンド毎のＣ，Ｄの典型的な値を示している。縦列Ｌｎ+ＬＮｎおよびＲｎ+ＲＮｎは、標準的なＤＥＳアルゴリズムと比較したレジスタＬ，Ｒの内容同士の間の差を示している。なお、最初と最後を除いて、４ラウンド繰り返す。
【表１】
2005527150.tif 000003
【００３１】
テーブルから分かるように、Ｄは、ＲＤまたは０のいずれかである。Ｃは、３つの可能な値、すなわち、Ｅｘｐｄ（ＲＤ），Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ）），Ｅｘｐｄ（ＲＤ+Ｐｅｒｍ（ＲＤ））有することができる。これらのうち、最後だけが、更に別のハードウェア、すなわち、３２ＸＯＲ論理ゲートを必要とする。レジスタＬ，Ｒは、３つの可能な値、すなわち、ＲＤ，Ｐｅｒｍ（ＲＤ），ＲＤ+Ｐｅｒｍ（ＲＤ）によって変更される。
【００３２】
ここで、図９および図１０を参照して、復号化ラウンドについて説明する。暗号化演算と比較すると、復号化では、左右のレジスタ１４，１５が逆になっており、また、４８ビットラウンド鍵ＲＫｎが逆の順序（ＲＫ１６からＲＫへと下がっていく）でＸＯＲ演算２３に対して適用される。図９は、従来のＤＥＳ復号化演算を示している。
【００３３】
図１０は、図８の暗号化ラウンドに対して補完的な、本発明の好適な実施にしたがって変更された対応する復号化演算を示している。Ｃ，Ｄを得るために、同じ修正項が加えられている。
【００３４】
（トリプルＤＥＳアルゴリズムの実施）
ＤＥＳアルゴリズムに適合される好適な実施について説明してきた。本発明は、トリプルＤＥＳアルゴリズムに対しても適用することができる。
【００３５】
トリプルＤＥＳ暗号化は、３つの部分、すなわち、ＤＥＳの１６個の暗号化ラウンドと、その次に異なるラウンド鍵の組を用いて行われる１６個の復号化ラウンドと、更に他の暗号化ラウンド鍵の組を用いた１６個の更なる暗号化ラウンドとから成る。
【００３６】
本発明の一実施形態においては、３つの部分のそれぞれにおいて、定数Ｃ，Ｄを使用することができる。しかしながら、各部分の最後において、レジスタＬ，Ｒは、任意の値によって変更されず、それにより、攻撃を受け易くなる。
【００３７】
そのため、更なる好適な実施形態では、トリプルＤＥＳ実施のため、定数Ｃ，Ｄが僅かに変更される。定数Ｄは、３番目の部分の最後の２つのラウンドを除く全てのラウンドにおいて、０に維持される。そのような場合において、テーブル１の４つのラウンドパターンは、ラウンド１６，３２においても繰り返される。ラウンド１６において、両方のレジスタＬ，Ｒは、任意の値ＲＤだけ、従来のトリプルＤＥＳ実施と異なる。これらの値の置き換えは、次の復号化ラウンドのため、修正項Ｃ，Ｄの生成には関係ない。
【００３８】
３番目の部分、すなわち、ラウンド３２への移行においても、同じことが言える。暗号化の最後にＬ，Ｒレジスタ内で正確な値を得るため、我々は、Ｃ４６およびＤ４６をそれぞれテーブル１に示されるＣ１４およびＤ１４と等しくしなければならない。また、同様に、Ｃ４７およびＤ４７をそれぞれＣ１５およびＤ１５と等しくしなければならない。
【００３９】
実際に、ＲＤは、３２ビット線形フィードバックシフトレジスタから生成することができる。リセット後、ＲＤは、特定の任意の時間の間、所定のプロトコルにしたがって実行される。あるいは、ＲＤは、任意の種類のランダム生成器によって生成されても良い。
【００４０】
ＲＤの値は、所定数の暗号化または復号化の後、攻撃の危険に応じて、あるいは、ユーザの好みにしたがって、更新される。その時、ＲＤとＸＯＲ結合されたデータおよびＲＡ＝Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ））とＸＯＲ結合されたアドレスを用いてＳ−ボックスが再びリロードされる。新たに暗号化されたデータを用いてＳ−ボックスを頻繁にリロードすれば、それに伴って処理時間が長くなるが、暗号化システムの安全性が高まることは言うまでもない。
【００４１】
（定数Ｃ，Ｄの計算）
以下では、通常のＤＥＳにおける値が引用符（’）を用いて示されている。これによれば、何を訂正しなければならないのかが簡単に分かる。
【００４２】
通常のＳ−ボックスにおいては、以下が適用される。
・ＳＢｏｘＩｎｎ’＝Ｅｘｐｄ（Ｒｎ’）+ＲＫｎ
・Ｒｎ’＝Ｐｅｒｍ（ＳＢｏｘｎ−１）’+Ｌ’ｎ−１
・Ｌｎ’＝Ｒｎ−１’
【００４３】
当初のＳ−ボックスおよび変更されたＳ−ボックスの内容よびアドレス指定は、以下の関係を有している。
１．ＳＢｏｘＩｎｎ’＝ＳＢｏｘＩｎｎ+ＲＡ
２．ＳＢｏｘｎ’＝ＳＢｏｘｎ+ＲＤ
【００４４】
変更されたＤＥＳ方式においては、以下が適用される。
Ｒｎ＝Ｌｎ−１+Ｐｅｒｍ（ＳＢｏｘｎ−１）＝
＝Ｌｎ−１+Ｐｅｒｍ（ＳＢｏｘ’ｎ−１）+Ｐｅｒｍ（ＲＤ）
＝Ｒｎ’+Ｌ’ｎ−１+Ｌｎ−１+Ｐｅｒｍ（ＲＤ）
Ｌｎ＝Ｒｎ−１+Ｄｎ−１
ＳＢｏｘＩｎｎ＝Ｅｘｐｄ（Ｒｎ）+ＲＫｎ+Ｃｎ＝
＝Ｅｘｐｄ（Ｒｎ）+ＲＫｎ+Ｃｎ+Ｅｘｐｄ（Ｒｎ’）+ＲＫｎ+ＳｂｏｘＩｎｎ+ＲＡ
したがって、
Ｃｎ＝Ｅｘｐｄ（Ｒｎ）+Ｅｘｐｄ（Ｒｎ’）+ＲＡ
＝Ｅｘｐｄ（Ｌ’ｎ−１+Ｌｎ−１）+Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ））+ＲＡ
【００４５】
我々は、ラウンド１，２においてＤ＝ＲＤを選択し、最後の２つのラウンドを除く残りのラウンドにおいてＤ＝０を選択する。また、我々は、Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ）＝ＲＡを選択する。
【００４６】
ここで、我々は、以下の関係を見出した。
Ｒｎ＝Ｒ’ｎ+Ｌ’ｎ−１+Ｌｎ−１+Ｐｅｒｍ（ＲＤ）
Ｌｎ＝Ｒｎ−１+Ｄｎ−１
Ｃｎ＝Ｅｘｐｄ（Ｌｎ−１+Ｌｎ−１）  （ここで、ｎ＞０）
Ｃ０＝ＲＡ＝Ｅｘｐｄ（Ｐｅｒｍ（ＲＤ））
【００４７】
また、我々は、ＤＰＡにより、以下の要件を有している。
Ｌｎ≠Ｌｎ’（ｎ＝０およびｎ＝１６を除く）
Ｒｎ≠Ｒｎ’  （ｎ＝０およびｎ＝１６を除く）
Ｒｎ＝Ｒｎ’+Ｌ’ｎ−１+Ｌｎ−１+Ｐｅｒｍ（ＲＤ）
Ｌｎ＝Ｒｎ−１+Ｄｎ−１
Ｒｎ＋１＝Ｒ’ｎ＋１+Ｌ’ｎ+Ｌｎ+Ｐｅｒｍ（ＲＤ）
Ｌｎ＋１＝Ｒｎ+Ｄｎ＝Ｒ’ｎ+Ｌ’ｎ−１+Ｐｅｒｍ（ＲＤ）+Ｄｎ
＝Ｌ’ｎ＋１+Ｌ’ｎ−１+Ｌｎ−１+Ｐｅｒｍ（ＲＤ）+Ｄｎ
Ｒｎ＋１+Ｒ’ｎ−１＝Ｌ’ｎ+Ｌｎ+Ｐｅｒｍ（ＲＤ）
Ｌｎ＋１+Ｌ’ｎ＋１＝Ｌ’ｎ−１+Ｌｎ−１+Ｐｅｒｍ（ＲＤ）+Ｄｎ
Ｒｎ＋２+Ｒ’ｎ＋２＝Ｌ’ｎ＋１+Ｌｎ＋１+Ｐｅｒｍ（ＲＤ）＝Ｌ’ｎ−１+Ｌｎ−１+Ｄｎ
Ｌｎ＋２+Ｌ’ｎ＋２＝Ｌ’ｎ+Ｌｎ+Ｐｅｒｍ（ＲＤ）+Ｄｎ＋１
Ｒｎ＋３+Ｒ’ｎ＋３＝Ｌ’ｎ＋２+Ｌｎ＋２+Ｐｅｒｍ（ＲＤ）＝Ｌ’ｎ+Ｌｎ+Ｄｎ＋１＝Ｒ’ｎ−１+Ｒｎ−１+Ｄｎ−１+Ｄｎ＋１
Ｌｎ＋３+Ｌ’ｎ＋３＝Ｌ’ｎ＋１+Ｌｎ＋１+Ｐｗｅｍ（ＲＤ）+Ｄｎ＋２＝
＝Ｌ’ｎ−１+Ｌｎ−１+Ｄｎ+Ｄｎ＋２
【００４８】
定数を除き、４ラウンド後に繰り返しがある。
Ｒｎ＋３+Ｒ’ｎ＋３＝Ｒ’ｎ−１+Ｒｎ−１+Ｄｎ−１+Ｄｎ＋１
Ｌｎ＋３+Ｌ’ｎ＋３＝Ｌ’ｎ−１+Ｌｎ−１+Ｄｎ+Ｄｎ＋２
【００４９】
最初の４ラウンドにおける関係が分かっている場合には、全てのラウンドにおける関係が分かる。
Ｒ０+Ｒ’０＝０
Ｌ０+Ｌ’０＝０
【００５０】
３つの次のラウンドにおいては、以下の式を使用する。
Ｒｎ＋１+Ｒ’ｎ＋１＝Ｌｎ+Ｌ’ｎ+Ｐｅｒｍ（ＲＤ）
Ｌｎ＋１+Ｌ’ｎ＋１＝Ｒｎ+Ｒ’ｎ+Ｄｎ
ラウンド１Ｄ０＝ＲＤ
Ｒ１+Ｒ’１＝Ｌ０+Ｌ’０+Ｐｅｒｍ（ＲＤ）＝Ｐｅｒｍ（ＲＤ）
Ｌ１+Ｌ’１＝Ｒ０+Ｒ’０+Ｄ０＝ＲＤ
ラウンド２Ｄ１＝ＲＤ
Ｒ２+Ｒ’２＝Ｌ１+Ｌ’１+Ｐｅｒｍ（ＲＤ）＝ＲＤ+Ｐｅｒｍ（ＲＤ）
Ｌ２+Ｌ’２＝Ｒ１+Ｒ’１+Ｄ１＝ＲＤ＝ＲＤ+Ｐｅｒｍ（ＲＤ）
ラウンド３Ｄ２＝ＲＤ
Ｒ３+Ｒ’３＝Ｌ２+Ｌ’２+Ｐｅｒｍ（ＲＤ）＝ＲＤ
Ｌ３+Ｌ’３＝Ｒ２+Ｒ’２+Ｄ２＝ＲＤ+Ｐｅｒｍ（ＲＤ）
【００５１】
次のラウンドにおいては、以下の式を使用する。
Ｒｎ＋３+Ｒ’ｎ＋３＝Ｒｎ−１+Ｒ’ｎ−１+Ｄｎ−１+Ｄｎ＋１
Ｌｎ＋１+Ｌ’ｎ＋１＝Ｒｎ−１+Ｒ’ｎ−１+Ｄｎ
ラウンド４，８，１２Ｄ３＝０；Ｄ７＝０；Ｄ１３＝０
Ｒ４+Ｒ’４＝Ｒ０+Ｒ’０+Ｄ０+Ｄ２＝ＲＤ
Ｌ４+Ｌ’４＝Ｒ３+Ｒ’３+Ｄ３＝ＲＤ
ラウンド５，１１Ｄ４＝０；Ｄ８＝０
Ｒ５+Ｒ’５＝Ｒ１+Ｒ’１+Ｄ１+Ｄ３＝Ｐｅｒｍ（ＲＤ）+ＲＤ
Ｌ５+Ｌ’５＝Ｒ４+Ｒ’４+Ｄ４＝ＲＤ
ラウンド６，１０，１４Ｄ５＝０；Ｄ９＝０；Ｄ１３＝０
Ｒ６+Ｒ’６＝Ｒ２+Ｒ’２+Ｄ２+Ｄ４＝Ｐｅｒｍ（ＲＤ）+ＲＤ
Ｌ６+Ｌ’６＝Ｒ５+Ｒ’５+Ｄ５＝ＲＤ+Ｐｅｒｍ（ＲＤ）
ラウンド７，１１Ｄ６＝０；Ｄ１０＝０
Ｒ７+Ｒ’７＝Ｒ３+Ｒ’３+Ｄ３+Ｄ５＝ＲＤ
Ｌ７+Ｌ’７＝Ｒ６+Ｒ’６+Ｄ６＝ＲＤ+Ｐｅｒｍ（ＲＤ）
【００５２】
我々は、最後において、Ｌ１６＝Ｌ‘１６およびＲ＋１６＋＝Ｒ’１６であることを必要とする。
ラウンド１５Ｄ１４＝ＲＤ
Ｒ１５+Ｒ’１５＝Ｒ１１+Ｒ’１１+Ｄ１１+Ｄ１３＝ＲＤ
Ｌ１５+Ｌ’１５＝Ｒ１４+Ｒ’１４+Ｄ１４＝Ｐｅｒｍ（ＲＤ）
ラウンド１６Ｄ１５＝ＲＤ
Ｒ１６+Ｒ’１６＝Ｒ１２+Ｒ’１２+Ｄ１２+Ｄ１４＝ＲＤ+Ｄ１４＝０
Ｌ１６+Ｌ’１６＝Ｒ１５+Ｒ’１５+Ｄ１５＝ＲＤ+Ｄ１５＝０
【００５３】
Ｓ−ボックスは、ランダムアクセスメモリ（ＲＡＭ）内で従来通りに実施されるが、ＲＯＭまたはフラッシュメモリからロードする必要がない事前設定可能なラッチを使用して実施されても良い。
【００５４】
プリセット後（ラッチが所定の初期状態を有している場合）、アドレスＡ+ＲＡにおいてデータがＲＤとＸＯＲ結合されるがＲＡおよびＲＤが任意のデータ値の代わりにプリセットされた所定のデータ値（０であっても良い）にあるように、Ｓ−ボックスがロードされる。
【００５５】
ＲＯＭまたはフラッシュメモリからのデータを使用する代わりに、アドレスＡ＋ＲＡ’で暗号化されたデータ（ＲＤ’）を用いてリロードするために、Ｓ−ボックスからのデータが使用される。
【００５６】
したがって、我々は、以下のアルゴリズムにしたがって、中間データを一時的に記憶するために、５ビットアドレスカウンタ（Ａ）と、２つの３２ビットレジスタ（Ｄ０，Ｄ１）とを必要とする。
ｆｏｒ  Ａ＝０  ｔｏ  ３１  ｄｏ
｛            Ｄ０＝ＳＢｏｘ｛Ａ｝
Ｄ１＝ＳＢｏｘ［Ａ+ＲＡ+ＲＡ’］
ＳＢｏｘ［Ａ］＝Ｄ１+ＲＤ+ＲＤ’
ＳＢｏｘ［Ａ+ＲＡ+ＲＡ’］＝Ｄ０+ＲＤ+ＲＤ’
【００５７】
我々は、口に出して、０．．．．３１の範囲の全てのアドレスにおいて、アドレスＡおよびアドレスＡ+ＲＡ+ＲＡ’の両方でＳ−ボックスを読み取るとともに、そのデータをＤ０およびＤ１に記憶する。その後、我々は、暗号化された新たなデータＤ１+ＲＤ+ＲＤ’をアドレスＡに書き込むとともに、暗号化された新たなデータＤ０+ＲＤ+ＲＤ’をアドレスＡ+ＲＡ+ＲＡ’に書き込む。これにより、結果的に、ＲＡの代わりにＲＡ’でアドレスにスクランブルがかけられるとともに、ＲＤの代わりにＲＤ’でデータにスクランブルがかけられる。ＲＡおよびＲＡ’の最上位ビットが異なり、それにより、Ａ+ＲＡ+ＲＡ’が３２．．．６３の範囲に常にあるというのが唯一の要件である。
【００５８】
（拡張暗号化規格の実施）
本発明の原理は、一般に、ＤＥＳアルゴリズムおよびＡＥＳアルゴリズムの両方に適用することができる。
【００５９】
したがって、前述した原理は、ＡＥＳアルゴリズムの修正において展開することができる。ＤＥＳアルゴリズムは、それぞれが６個の入力と４個の出力とを有する８個のＳ−ボックス５００．．．．５０７（図５に概略的に示されている）を使用するが、ＡＥＳアルゴリズムは、８個の入力と８個の出力とを有する１つのＳ−ボックスを使用する。８個のＳ−ボックス５００．．．．５０７を組み合わせて、同じメモリを共有し、それにより、ハードウェアリソースを節約することできる。
【００６０】
ＡＥＳにおけるそのようなＳ−ボックス実施が図６に示されている。Ｓ−ボックス６００．．．．６０７の全ての入力は、同じであり、アドレスの最下の６ビット、すなわち、Ｄｉｎ（５：０）に対応している。偶数の番号が付されたＳ−ボックス６００，６０２，６０４．．．．は、データ出力７：４を与えており、奇数の番号が付されたＳ−ボックス６０１，６０３，６０５．．．．は、データ出力３：０を与えている。マルチプレクサ６２は各Ｓ−ボックス対の８個の出力を多重化し、一方、アドレス入力Ｄｉｎ（７：６）の最上の２ビットは、８個のビット出力Ｄｏｕｔ（７：０）を生成するために何れのＳ−ボックス対の出力が使用されるのかを選択する。
【００６１】
図１１は、本発明にしたがって暗号化されたＳ−ボックスを使用するＡＥＳ暗号化演算の好適な実施形態の概略図を示している。この図から分かるように、処理ステップ１００から１０９がＡＥＳ暗号化アルゴリズムの従来の処理ステップに対応しており、これらの従来の処理ステップに対し、本発明の好適な実施形態にしたがってステップ１１０から１１２が加えられている。すなわち、ステップ１１０，１１１においてアドレス変更定数Ｓが０であり且つステップ１１２においてデータ変更定数Ｄが０である場合には、従来のＡＥＳ暗号化アルゴリズムまで処理が減る。
【００６２】
暗号化アルゴリズムの最初のラウンドにおいては、加算ラウンド鍵変換１０１への入力としてプレーンテキストブロック１００が供給される。加算ラウンド鍵変換は、１２８ビット入力ブロック１００に１２８ビットラウンド鍵をＸＯＲ結合するステップを含んでおり、ＡＥＳアルゴリズムの第１のラウンドを構成している。
【００６３】
最後のラウンドを除くその後の各ラウンド（１２８ビットを含んでいる入力ブロックにおいては、９個ある）において、ラウンド処理１１５は、（ｉ）逆数変換およびアフィン変換の両方を実施するＳ−ボックスルックアップ演算として従来通りに実行されるサブバイト変換１０２と、（ii）４×４行列として表わされる１６バイト（１２８ビット）ブロック内の各横列の円形の左シフトを備えるシフト横列変換１０３と、（iii）所定の多項式関数にしたがって各縦列を変換するミックス縦列変換１０４と、（iv）ミックス縦列変換からの出力と現在のラウンド鍵とをＸＯＲ結合することによってその後のラウンドのための新たなラウンド鍵を生成する加算ラウンド鍵変換１０５とを含んでいる。
【００６４】
この処理１１５は、ミックス縦列変換が省かれる最後のラウンド１２０に入る前に９回実行される（決定ボックス１０６の制御下で）
前述したＤＥＳの実施形態と同様に、サブバイト変換１０２で使用されるＳ−ボックスは、アドレス変更機能にしたがって変更された。前述した好適な実施形態において、アドレス変更機能は、ルックアップテーブルのアドレスと任意の値ＲＡとのＸＯＲ結合を含んでいる。同様に、Ｓ−ボックス内のデータは、データ変更機能にしたがって変更された。好適な実施形態において、データ変更機能は、データと任意の値ＲＤとのＸＯＲ結合を含んでいる。
【００６５】
サブバイトＳ−ボックスの変更された内容により、以下の関係が満たされなければならない。
サブバイトルックアップアドレス、ｂｒ，ｃ＝ｂ’ｒ，ｃ+ＲＡ
サブバイト出力、ｃｒ，ｃ＝ｃ’ｒ，ｃ+ＲＤ
【００６６】
第１のラウンド１０１において、アドレス変更定数Ｃ＝ＲＡである。
【００６７】
２．．．Ｎｒ−１（Ｎは、入力ブロック１００のサイズのために必要なラウンド数）の番号が付されたその後のラウンド１１５において、シフト横列変換１０３からの出力は、ｄ＝ＳｈｉｆｔＲｏｗｓ（ｃ）である。
【００６８】
この演算だけが１つの横列内のバイトを置き換えるため、データが変更されない。したがって、
ｄｒ，ｃ＝ｄ’ｒ，ｃ+ＲＤ
ミックス縦列変換からの出力、ｅ＝ＭｉｘＣｏｌｕｍｎ（ｄ）
ｅｒ，ｃ＝ｅ’ｒ，ｃ+ＲＤ
ａ＝ｅ+ＲｏｕｎｄＫｅｙ＝ｅ’+ＲＤ+ＲｏｕｎｄＫｅｙ＝ａ’+ＲＤ
ｂｒ，ｃ＝ａｒ，ｃ+Ｃ＝ａ’ｒ，ｃ+ＲＤ+Ｃ
ｂｒ，ｃ＝ｂ’ｒ，ｃ+ＲＡ＝ａ’ｒ，ｃ+ＲＡ（標準的なＡＥＳの場合、Ｃ＝０であるため）
その結果、ＲＤ+Ｃ＝ＲＡ
Ｃ＝ＲＤ+ＲＡ
ＲＤ＝ＲＡ、Ｃ＝０を選択すると、行なうべき修正はない。
【００６９】
全てのデータがＲＤとＸＯＲ結合される。そのため、ＲＤが規則的に変えられると、全てのデータが不規則に変えられ、差動出力（電力）解析が不可能になる。
【００７０】
最後のラウンドにおいて、出力データは、標準的なＡＥＳアルゴリズムの出力と等しくならなければならない。このことは、各バイトにＤ＝ＲＤを加えなければならないことを意味している。
【００７１】
前述した実施形態においては、鍵が変更されない。
【００７２】
鍵スケジューリングの幾つかのサイクル中において、鍵には、サブバイト変換が施される。好適な実施形態においては、この変換のために、同じハードウェアが使用される。この場合、鍵は、Ｓ−ボックスに入力される前に、ＲＤとＸＯＲ結合され、その出力もＲＤとＸＯＲ結合される。
【００７３】
要約すると、好適な実施形態において、我々は、ＲＤ＝ＲＡを選択する。第１のラウンドにおいて、Ｃ＝ＲＤである。中間のラウンドにおいて、Ｃ＝０である。最後のラウンドにおいて、Ｄ＝ＲＤである。全てのデータは、標準的なＡＥＳアルゴリズムに比べて、ＲＤだけ異なる。したがって、ＲＤの規則的な変化は、データを変化させるとともに、異なる出力（電力）解析に現在の手がかりを与える。
【００７４】
図１２は、本発明にしたがって暗号化されたＳ−ボックスを使用する復号化演算の好適な実施形態の概略図を示している。この図から分かるように、処理ステップ１２０から１２９がＡＥＳ復号化アルゴリズムの従来の処理ステップに対応しており、これらの従来の処理ステップに対し、本発明の好適な実施形態にしたがってステップ１３０から１３２が加えられている。すなわち、ステップ１３０，１３１においてアドレス変更定数Ｓが０であり且つステップ１３２においてデータ変更定数Ｄが０である場合には、従来のＡＥＳ復号化アルゴリズムまで処理が減る。
【００７５】
アルゴリズムの最初のラウンドにおいては、加算ラウンド鍵変換１２１への入力として暗号文入力ブロック１２０が供給される。加算ラウンド鍵変換は、１２８ビット入力ブロック１００に１２８ビットラウンド鍵をＸＯＲ結合するステップを含んでおり、ＡＥＳ復号化アルゴリズムの第１のラウンドを構成している。
【００７６】
最後のラウンドを除くその後の各ラウンド（１２８ビットを含んでいる入力ブロックにおいては、９個ある）において、ラウンド処理１３５は、（ｉ）シフト横列変換１０３の逆を行なう逆シフト横列変換１２２と、（ii）サブバイト変換１０２の逆を行なう逆サブバイト変換１２３と、（iii）ミックス縦列変換１０４の逆を行なう逆ミックス縦列変換１２５と、（iv）逆サブバイト変換からの出力と現在のラウンド鍵とをＸＯＲ結合することによってその後のラウンドのための新たなラウンド鍵を生成する加算ラウンド鍵変換１２４とを含んでいる。
【００７７】
この処理１１５は、逆ミックス縦列変換が省かれる最後のラウンド１４０に入る前に９回実行される（決定ボックス１２６の制御下で）
前述したＤＥＳの実施形態と同様に、逆サブバイト変換１２３で使用されるＳ−ボックスは、アドレス変更機能にしたがって変更された。前述した好適な実施形態において、アドレス変更機能は、ルックアップテーブルのアドレスと任意の値ＲＡとのＸＯＲ結合を含んでいる。同様に、Ｓ−ボックス内のデータは、データ変更機能にしたがって変更された。好適な実施形態において、データ変更機能は、データと任意の値ＲＤとのＸＯＲ結合を含んでいる。
【００７８】
逆サブバイトＳ−ボックスの変更された内容により、以下の関係が満たされなければならない。
ｃｒ，ｃ＝ｃ’ｒ，ｃ+ＲＡ
ｄｒ，ｃ＝ｄ’ｒ，ｃ+ＲＤ
【００７９】
第１のラウンドにおいて、Ｃ＝ＲＡである。
ａｒ，ｃ＝ａ’ｒ，ｃ
ｂｒ，ｃ＝ａｒ，ｃ+Ｃ＝ａ’ｒ，ｃ+Ｃ＝ｂ’ｒ，ｃ+Ｃ（ａ’ｒ，ｃ＝ｂ’ｒ，ｃであるため）
ｃ＝ＩｎｖＳｈｉｆｔＲｏｗｓ（ｂ）
この演算だけが１つの横列内のバイトを置き換えるため、データが変更されない。したがって、
ｃｒ，ｃ＝ｃ’ｒ，ｃ+Ｃ
そのため、我々は、第１のラウンドのためにＣ＝ＲＡを選択しなければならない。
【００８０】
２．．．Ｎｒ−１の番号が付されたその後の各ラウンドにおいて、逆サブバイトの出力は、以下を適用する。
ｄｒ，ｃ＝ｄ’ｒ，ｃ+ＲＤ
ｅ＝ｄ+ＲｏｕｎｄＫｅｙ＝ｄ’+ＲＤ+ＲｏｕｎｄＫｅｙ＝ｅ’+ＲＤ
ａ＝ＩｎｖＭｉｘＣｏｌｕｍｎｓ（ｅ）
ａｒ，ｃ＝ａ’ｒ，ｃ+ＲＤ
ｂｒ，ｃ＝ａｒ，ｃ+Ｃ＝ａ’ｒ，ｃ+ＲＤ+Ｃ＝ｂ’ｒ，ｃ+ＲＤ+Ｃ（ｂ’ｒ，ｃ＝ａ’ｒ，ｃであるため）
この演算だけが１つの横列内のバイトを置き換えるため、データが変更されない。したがって、
ｃｒ，ｃ＝ｃ’ｒ，ｃ+ＲＤ+Ｃ
これは、ｃｒ，ｃ＝ｃ’ｒ，ｃ+ＲＡでなければならない。
ここで、我々は、暗号に関して、Ｃ＝０およびＲＤ＝ＲＡを選択する。
【００８１】
全てのデータがＲＤとＸＯＲ結合される。そのため、ＲＤが定期的に不規則に変えられると、全てのデータが不規則に変化し、差動出力（電力）解析が不可能になる。
【００８２】
また、最後のラウンドにおいて、我々はＣ＝０を選択する。このラウンドにおいて、出力データは、標準的なＡＥＳの出力と等しくならなければならない。このことは、各バイトにＤ＝ＲＤを加えなければならないことを意味している。
【００８３】
前述した復号化演算と平行に行なわれる鍵スケジューリングの幾つかの部分においては、アフィン変換の前に行なわれる逆数変換、すなわち、暗号化サブバイト変換を行なう必要がある。好適な実施形態においては、同じハードウェアを使用してこの変換を行なうことが望ましい。このための処理ステップが図１３に示されている。まず最初に、サブ鍵がＲＤとＸＯＲ結合される（ステップ１５０）。その後、アフィン変換１５１が行なわれ、次の逆サブバイト変換１５２（図１２のステップ１２３に対応している）内に含まれる暗黙の逆アファイン変換を消滅させる。このルックアップ演算からの出力に対して再びアファイン変換１５４が施される。そして、出力とＲＤとをＸＯＲ結合して、新たなサブ鍵を生成することにより、演算が終了する。
【００８４】
要約すると、我々は、ＲＤ＝ＲＡを選択する。第１のラウンドにおいて、Ｃ＝ＲＤである。全ての他のラウンドにおいて、Ｃ＝０である。最後のラウンドにおいて、Ｄ＝ＲＤである。全てのデータは、標準的なＡＥＳアルゴリズムに比べて、ＲＤだけ異なる。したがって、ＲＤの規則的な変化は、データを変化させるとともに、様々な現在の手がかりを与える。
【００８５】
ＲＤの生成は、ＤＥＳエンジンと組み合わされても良い。このため、ＲＤは、３２ビットベクトルとなるように選択されるが、ＤＥＳにおいて、ＲＤは、４回繰り返されたバイトであっても良い。実際に、ＲＤは、３２ビット線形フィードバックシフトレジスタから生成することができる。リセット後、ＲＤは、特定の任意の時間の間、所定のプロトコルにしたがって実行される。あるいは、ＲＤは、任意の種類のランダム生成器によって生成されても良い。
【００８６】
ＲＤの値は、１セッション（例えば、１６個の暗号化演算）後に更新されることが好ましい。セッション間で、それが所定回数実行される。その後、ＲＤの新たな値とＸＯＲ結合されるデータおよびＲＡ＝ＲＤとＸＯＲ結合されるアドレスと共に（を用いて）Ｓ−ボックスがリロードされる。
【００８７】
本発明は、ＡＥＳアルゴリズムの１２８ビット（前述した）、１９２ビット、２５６ビットの鍵サイズにおける実施に容易に適合できるとともに、様々な鍵サイズおよびブロックサイズを有するＲｉｊｎｄａｅｌアルゴリズムの他の実施にも適合できる。
【００８８】
他の実施形態は、添付の請求の範囲内にある。
【図面の簡単な説明】
【００８９】
【図１】ＤＥＳブロックサイファアルゴリズムを使用する暗号化演算の実施を示す流れ図である。
【図２】図１の処理で展開されるＳ−ボックスルックアップ演算を示す詳細な流れ図である。
【図３】Ｓ−ボックスのローディングを示す概略図である。
【図４】Ｓ−ボックスにおけるルックアップ演算を示す概略図である。
【図５】図１のＤＥＳアルゴリズムを実施するためのＳ−ボックス構成の概略図である。
【図６】ＡＥＳブロックサイファアルゴリズムのためのＳ−ボックス構成の概略図である。
【図７】図１のＤＥＳ暗号化処理における従来の暗号化ラウンドを示す詳細な流れ図である。
【図８】本発明の一実施形態にしたがって変更されたＤＥＳ暗号化ラウンドを示す詳細な流れ図である。
【図９】ＤＥＳ復号化処理における従来の復号化ラウンドを示す詳細な流れ図である。
【図１０】本発明の一実施形態にしたがって変更されたＤＥＳ復号化ラウンドを示す詳細な流れ図である。
【図１１】本発明の一実施形態にしたがって変更されたＡＥＳ暗号化演算を示す概略図である。
【図１２】本発明の一実施形態にしたがって変更されたＡＥＳ復号化演算を示す概略図である。
【図１３】鍵スケジューリング演算の概略図である。
【図１】
2005527150.tif 000004
【図２】
2005527150.tif 000005
【図３】
2005527150.tif 000006
【図４】
2005527150.tif 000007
【図５】
2005527150.tif 000008
【図６】
2005527150.tif 000009
【図７】
2005527150.tif 000010
【図８】
2005527150.tif 000011
【図９】
2005527150.tif 000012
【図１０】
2005527150.tif 000013
【図１１】
2005527150.tif 000014
【図１２】
2005527150.tif 000015
【図１３】
2005527150.tif 000016
【国際調査報告】
2005527150.tif 000017
2005527150.tif 000018