(57)【特許請求の範囲】
【請求項１】
サイドチャネル攻撃に対抗する方法であって、当該方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成り、このブロック暗号アルゴリズムは、１つ以上の非線形関数を有する当該方法において、
当該複数の非線形関数のうちの少なくとも１つの非線形関数が、マッチ・イン・プレース（商標）関数を使用するマイクロプロセッサによって実装され、
前記マッチ・イン・プレース（商標）関数は、ビットをランダム化したマッチ・イン・プレース（商標）関数：
【数１】
0005892887.tif 000057
として定義され、
ａｄｒは、１つのメモリ内の１つのアドレスであり、ｄａｔａは、１つのメモリ内の１つのアドレスに記憶され得る１つの変数であり、ｂは、１つの値であり、この値は、前記ｄａｔａ変数がメモリ内の前記アドレスａｄｒに存在する実際のデータに等しいときは戻され、前記ｄａｔａ変数がメモリ内の前記アドレスａｄｒに存在する実際のデータに等しくないときは、ｂの補数が戻されることを特徴とする方法。
【請求項２】
【数２】
0005892887.tif 000058
【数３】
0005892887.tif 000059
は、ｂの補数である請求項１に記載の方法。
【請求項３】
当該複数の非線形関数のうちの少なくとも１つの非線形関数は：
【数４】
0005892887.tif 000060
によって定義されたｃｏｍｐａｒｅｂ関数から成り、
ｘは、前記ｃｏｍｐａｒｅｂ関数の第１入力変数であり、ｙは、前記ｃｏｍｐａｒｅｂ関数の第２入力変数であり、ｂは、ｘがｙに等しいときに戻される１つの値であり、
【数５】
0005892887.tif 000061
は、ｘがｙに等しくないときに戻される１つの値である結果、
メモリ内の１つのアドレスａｄｒに前記変数ｘを書き込むことによって、
【数６】
0005892887.tif 000062
として定義されたビットをランダム化したマッチ・イン・プレース（商標）関数を実行することによって、そしてＭＩＰＩ（ｙ；ａｄｒ，ｂ）を戻すことによって、前記ｃｏｍｐａｒｅｂ関数が実装され得る請求項１に記載の方法。
【請求項４】
前記非線形関数は、ＳｕｂＢｙｔｅ演算中に構成される請求項１に記載の方法。
【請求項５】
前記ブロック暗号アルゴリズムは、１つ以上の線形関数をさらに有し、前記１つ以上の線形関数のうちの少なくとも１つの線形関数が、当該関数の変数のＸＯＲをとることによって暗号化される請求項１に記載の方法。
【請求項６】
前記ブロック暗号アルゴリズムは、新暗号規格（ＡＥＳ）のアルゴリズムである請求項１に記載の方法。
【請求項７】
【数７】
0005892887.tif 000063
のステップから成る、２次のマスクされた入力から２次のマスクされたＳボックス関数を計算する方法において、
ｂは、１つのレジスタを指し示す１つのランダムビットを示す１つの変数であり、ａは、ステップ（ａ）−（ｃ）が実行されなければならない回数を規定する１つのインデックスを示す１つの変数であり、ｒ１，ｒ２は、一対の入力マスクであり、
【数８】
0005892887.tif 000064
は、マスクされた１つの値であり、
【数９】
0005892887.tif 000065
であり、ｓ１，ｓ２は、一対の出力マスクであり、ａｄｒは、自由な１つのメモリアドレスであり、ｃｍｐは、１つのレジスタを示し且つ関数ＭＩＰＩ（ｒ２；ａｄｒ；ｂ）の１つの出力である１つのビット変数であり、Ｒｃｍｐ及びＲｂはそれぞれ、１つのマイクロプロセッサの１つのレジスタのレジスタアドレスであり、
前記ＭＩＰＩ（ｒ２；ａｄｒ；ｂ）は：
【数１０】
0005892887.tif 000066
として定義されたビットをランダム化したマッチ・イン・プレース（商標）関数である当該方法。
【請求項８】
コンピュータプログラムから成るコンピュータ読み取り可能媒体において、
前記コンピュータプログラムは、請求項７に記載の方法を実行するために構成されている、当該コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号に対するサイドチャネル攻撃に対抗する方法及び限定的でないものの、特にマッチ・イン・プレース（商標）関数を使用する対抗の方法に関する。
【背景技術】
【０００２】
最も広く使用されるアルゴリズム「新暗号規格（ＡＥＳ）」のような、今日使用される多くの存在する暗号アルゴリズムは、差分電力解析（ＤＰＡ）に対して脆弱である。この差分電力解析は、サイドチャネル攻撃である。このサイドチャネル攻撃は、暗号化用の暗号化アルゴリズムで使用される秘密鍵をリカバーするために最初に暗号化アルゴリズムを実行するときのマイクロプロセッサの電力消費を測定し、次いで統計解析を実行する。秘密鍵が特定されると、暗号化された情報を復号することが可能である。
【０００３】
マイクロプロセッサの電磁放射が、暗号化用の暗号化アルゴリズムで使用される秘密鍵を特定するために測定されて利用されてもよい。
【０００４】
差分電力解析に対して秘密鍵アルゴリズムを保護するための通常技術は、全ての中間変数をランダムマスクでマスクすることから成る。このとき、当該マスクされたデータ及びランダムデータが、別々に処理され、結局は当該秘密鍵アルゴリズムの最後で再結合される。単一地点でマイクロプロセッサの電力消費を解析することを試みる攻撃者が、ランダム値（ランダムデータ値及びランダムマスク値）を取得する。したがって、このようなマスキングは、１次差分電力解析に対して安全である。
【０００５】
マスキング対抗手段は、付与された攻撃されやすい変数を保護するために使用されるランダムマスクの数を特徴とする。ｄ個のランダムマスクを有するランダム処理は、ｄ次マスキングと呼ばれる。ｄ次マスキングは、（ｄ＋１）次のサイドチャネル解析、つまりｄ＋１個の変数の処理を同時に要求する攻撃によってだけ破壊され得る。当該対抗手段を破壊するために要求される実行数は、次数ｄと共に指数関数的に増大する。したがって、この次数ｄは、良好な安全規準である。しかしながら、実際には、最も効率のいい対抗手段は、次数ｄ＝１だけである。
【０００６】
マスクされたデータを復号するための２次差分電力解析攻撃が可能であることが分かっている。したがって、完全に安全なデータ暗号化を得るためには、より良好な対抗手段が要求される。
【０００７】
対抗手段が、さらに発展されている。サイドチャネル攻撃に対する最近の対抗手段のうちの１つの対抗手段は、次数ｄ＝２による対抗手段である。
【０００８】
あらゆるマスキング対抗手段にとって、その主な困難性は、アルゴリズムの非線形部分を保護することである。新暗号規格（ＡＥＳ）にとって、当該アルゴリズムの非線形部分は、本質的にＳＢＯＸ関数である。使用される技術は、サブルーチンとして実行される比較アルゴリズムを使用して全体のＳＢＯＸ関数をＳＢＯＸのルックアップごとに繰り返すことにある。この比較アルゴリズムは、ＳＢＯＸ入力ごとに呼び出される。当該対抗手段が、あらゆる２次サイドチャネル攻撃に耐え得ることを示すことが可能である。
【０００９】
しかしながら、このようなマスキング対抗手段は、効率が著しく良くない。何故なら、このマスキング手段は、実行中に多数の演算を要求し、実行中にマイクロプロセッサの多くのメモリをも使用するからである。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、上述した欠点のうちの少なくとも幾つかの欠点を解消又は緩和することにある。
【課題を解決するための手段】
【００１１】
この課題は、本発明により、サイドチャネル攻撃に対する対抗手段の方法によって解決される。
すなわち、この課題は、
サイドチャネル攻撃に対抗する方法であって、当該方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成り、このブロック暗号アルゴリズムは、１つ以上の非線形関数を有する当該方法において、
当該複数の非線形関数のうちの少なくとも１つの非線形関数が、マッチ・イン・プレース（商標）関数を使用するマイクロプロセッサによって実装され、
前記マッチ・イン・プレース（商標）関数は、ビットをランダム化したマッチ・イン・プレース（商標）関数：
【数１】
0005892887.tif 000002
として定義され、
ａｄｒは、１つのメモリ内の１つのアドレスであり、ｄａｔａは、１つのメモリ内の１つのアドレスに記憶され得る１つの変数であり、ｂは、１つの値であり、この値は、前記ｄａｔａ変数がメモリ内の前記アドレスａｄｒに存在する実際のデータに等しいときは戻され、前記ｄａｔａ変数がメモリ内の前記アドレスａｄｒに存在する実際のデータに等しくないときは、ｂの補数が戻されることによって解決される。
この方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成る。この場合、１つ以上の非線形関数を有する当該ブロック暗号アルゴリズムは、当該非線形関数のうちの少なくとも１つの非線形関数が、マッチ・イン・プレース関数を使用して実行される。
【００１２】
本発明の方法は、この方法の効率を向上させるためにマッチ・イン・プレース関数を使用する。マッチ・イン・プレース関数を使用すると、サイドチャネル攻撃に対して有効な対抗手段を提供するために要求される演算回数が削減される。さらに、本発明の方法を実施するために要求されるメモリが、既知の方法に比べて少ない。
【００１３】
当該マッチ・イン・プレース関数は、ビットをランダム化したマッチ・イン・プレース関数でもよい（ＭＩＰＩ（ｄａｔａ；  ａｄｒ，ｂ））。
【００１４】
当該ビットをランダム化したマッチ・イン・プレース関数は：
【数２】
0005892887.tif 000003
として定義されてもよい。
この場合、ａｄｒは、メモリ内の１つのアドレスである。ｄａｔａは、メモリ内の１つのアドレスに記憶される１つの変数である。ｂは、このｄａｔａの変数がメモリ内のこのアドレスに存在する実際のデータに等しいときに戻される１つの値である。このｄａｔａの変数がメモリ内のこのアドレスに存在する実際のデータに等しくないときは、ｂの補数が戻される。ｂは、１ビットの値でもよい。
【００１５】
以下の関係が、存在してもよい：
【数３】
0005892887.tif 000004
この場合、
【数４】
0005892887.tif 000005
は、ｂの補数である。
【００１６】
非線形関数のうちの少なくとも１つの関数は：
【数５】
0005892887.tif 000006
によって定義されるｃｏｍｐａｒｅｂ関数でもよい。
この場合、ｘは、ｃｏｍｐａｒｅｂ関数の第１入力変数である。ｙは、ｃｏｍｐａｒｅｂ関数の第２入力変数である。ｂは、ｘがｙに等しいときに戻される１つの値である。その結果：
変数ｘをメモリ内の１つのアドレスａｄｒに書き込み、
【数６】
0005892887.tif 000007
によって定義されたビットをランダム化したマッチ・イン・プレース関数を実行し、そしてＭＩＰＩ（ｙ；  ａｄｒ，ｂ）を戻すことによって、ｃｏｍｐａｒｅｂ関数が実行され得る。
【００１７】
当該非線形関数は、ＳｕｂＢｙｔｅ演算部内に含まれてもよい。この非線形関数は、ＡＥＳ暗号アルゴリズムのＳｕｂＢｙｔｅ演算部内に含まれてもよい。
【００１８】
さらに、本発明のブロック暗号アルゴリズムは、１つ以上の線形関数を有してもよい。当該１つ以上の線形関数のうちの少なくとも１つの線形関数が、この線形関数のＸＯＲをとる変数によってマスクされてもよい。
【００１９】
当該ブロック暗号アルゴリズムは、新暗号規格（ＡＥＳ）のアルゴリズムでもよい。
【００２０】
本発明のさらなる側面によれば、上述した方法のうちの任意の１つの方法による方法を実行するために構成されているコンピュータプログラムから成るコンピュータ読み取り可能媒体が提供される。
【００２１】
本発明のさらなる側面によれば：
【数７】
0005892887.tif 000008
のステップから成る、２次マスクされた入力から２次マスクされたＳボックス関数を計算する方法が提供される。
この場合、ｂは、１つのレジスタを指し示す１つのランダムビットを示す１つの変数である。ａは、ステップ（ａ）−（ｃ）が実行されなければならない回数を定義する１つのインデックスを示す１つの変数である。ｒ１，ｒ２は、一対の入力マスクである。
【数８】
0005892887.tif 000009
は、マスクされた１つの値である。
この場合、
【数９】
0005892887.tif 000010
である。
ｓ１，ｓ２は、一対の出力マスクである。ａｄｒは、自由なメモリアドレスである。ｃｍｐは、１つのレジスタを指し示す１つのビット変数であり且つ関数ＭＩＰＩ（ｒ２；  ａｄｒ；  ｂ）の１つの出力である。Ｒｃｍｐは、マイクロプロセッサの１つのレジスタの１つのレジスタアドレスである。一般に、このマイクロプロセッサ内の少なくとも２つのレジスタＲ０及びＲ１が使用される（つまり、ｃｍｐは、０又は１であり得る。ｃｍｐ＝０のときに、第１レジスタＲ０が指し示される／アドレス付けされる。ｃｍｐ＝１のときに、第２レジスタＲ１が指し示される／アドレス付けされる。）。Ｒｂは、マイクロプロセッサの１つのレジスタの１つのレジスタアドレスである。一般に、このマイクロプロセッサ内の少なくとも２つのレジスタＲ０及びＲ１が使用される（つまり、ｂは、０又は１であり得る。ｂ＝０のときに、レジスタＲ０が指し示される／アドレス付けされる。ｂ＝１のときに、レジスタＲ１が指し示される／アドレス付けされる。）。ＭＩＰＩ（ｒ２；  ａｄｒ；  ｂ）は：
【数１０】
0005892887.tif 000011
として定義されるビットをランダム化したマッチ・イン・プレース関数である。
【００２２】
本発明のさらなる側面によれば、２次マスクされたＳボックス関数を計算する上述した方法を実行するために構成されているコンピュータプログラムから成るコンピュータ読み取り可能媒体が提供される。
【００２３】
本発明は、例示され且つ図面によって示された１つの実施の形態の説明によってより良好に理解される。
【図面の簡単な説明】
【００２４】
【図１】ＡＥＳ暗号用の疑似コードを示す。
【図２】ＡＥＳ暗号用の疑似コードを示す。
【図３】メモリ転送（プリプロセッサフェーズ）の数、ＸＯＲの数、メモリ転送（メインフェーズ）の数、及びｃｏｍｐａｒｅｂ関数を最初に実行するために要求されるメモリとｃｏｍｐａｒｅｂ関数を実行するために要求されるメモリとの数から成る本発明のテーブルを示す。
【図４】ＸＯＲの数、メモリ転送の数、及びｃｏｍｐａｒｅｂ関数を実行するための本発明の方法を使用する完全な第２Ｒｉｖａｉｎ−Ｄｏｔｔａｘ−Ｐｒｏｕｆｆ（ＲＤＰ２）アルゴリズムに対して要求されるメモリから成るテーブルを示す。
【発明を実施するための形態】
【００２５】
ＡＥＳ暗号アルゴリズムにおける本発明の方法の用途を詳しく説明する。しかしながら、本発明の方法は、ＡＥＳ暗号アルゴリズムで使用することに限定されないことが理解される。本発明の方法は、ブロック暗号アルゴリズムで使用され得る。
【００２６】
ＡＥＳ暗号アルゴリズムは、「ステート」と呼ばれるバイトｓｉ，ｊの４ｘ４アレイで動作する。暗号化のため、（最後のサブパート以外の）ＡＥＳ暗号アルゴリズムの各サブパートが、以下の４つのステージから成る：
１．ＡｄｄＲｏｕｎｄＫｅｙ：ステートの各バイトが、鍵スケジュール：
【数１１】
0005892887.tif 000012
から導かれるラウンド鍵ｋｉ，ｊでＸＯＲをとられる。
２．ＳｕｂＢｙｔｅｓ：ステートの各バイトが、８ビットのＳボックス関数：
【数１２】
0005892887.tif 000013
を使用して更新される。
Ｓボックス関数は：
【数１３】
0005892887.tif 000014
として定義される。
この場合、Ａｆｆは、ＧＦ（２８）上のアフィン関数であり、
【数１４】
0005892887.tif 000015
は、（０→０による）ＧＦ（２８）上の逆関数である。
３．ＳｈｉｆｔＲｏｗｓ：ステートのバイトが、特定のオフセットによって行ごとに周期的にシフトされる。最初の行が変更されないままである。
４．ＭｉｘＣｏｌｕｍｎｓ：ステートのバイトが、以下のコラム：
【数１５】
0005892887.tif 000016
による変更されるコラムである。
【００２７】
１２８ビットキーによるＡＥＳ暗号用の疑似コードが、図１中に示されている。ワードアレイ「Ｗ」が、鍵スケジュールアルゴリズムによって生成されるラウンド鍵（ｋｉ，ｊ）を有する。
【００２８】
暗号化のため、（最後の鍵以外の）いずれのラウンド鍵が、以下の演算から成る：
１．ＩｎｖＳｈｉｆｔＲｏｗｓは、ＳｈｉｆｔＲｏｗｓ演算（暗号化のステージ３）の逆である。ステートのバイト（段落［００２６］中で定義されているような、ＡＥＳ暗号で使用される一組の中間変数）が、特定のオフセットによって行ごとに周期的にシフトされる。当該バイトの最初の行が変更されないままである。
２．ＩｎｖＳｕｂＢｙｔｅｓは、ＳｕｂＢｙｔｅｓ演算（暗号化のステージ２）の逆である。Ｓボックスの逆関数（Ｓ−１）：
【数１６】
0005892887.tif 000017
が、このステートの各バイトに適用される。
３．ＡｄｄＲｏｕｎｄＫｅｙ：この演算は、この演算自体の逆に等しい。
４．ＩｎｖＭｉｘＣｏｌｕｍｎｓは、ＭｉｘＣｏｌｕｍｎｓ演算（暗号化のステージ４）の逆である。このステートのバイトが、以下のコラム：
【数１７】
0005892887.tif 000018
による変更されたコラムである。
逆暗号用の疑似コードが、図２中に示されている。
【００２９】
最後に、ラウンド鍵スケジュール（ｋｉ，ｊ）が、以下の演算に基づく：
１．ＳｕｂＷｏｒｄが、１つの４バイト入力ワードをとり、Ｓボックス（Ｓ（ｘ））を４バイトの各々に対して適応させる。
２．ＲｏｔＷｏｒｄは、入力として１ワード［ａ０；ａ１；ａ２；ａ３］をとり、［ａ１；ａ２；ａ３；ａ０］を戻すための周期的な置換を実行する。
３．Ｘｏｒ  ｗｉｔｈ  Ｒｃｏｎは、入力として３２ビットの１ワード及びｘｏｒをとり、このｘｏｒは、ラウンド定数ワードアレイＲｃｏｎ［ｉ］＝［（０２）ｉ−１；００；００；００］、ラウンド１≦ｉ≦１０を伴う。我々は、鍵スケジュールの全ての記術に対して［５］を引用する。
【００３０】
冒頭で説明したように、マスキング対抗手段の原理は、あらゆる中間変数を１つ以上のランダムマスクでマスクすることである。次数ｄ＝２によるマスキング対抗手段の場合、２つのマスクが使用される。これらのマスクは、全体で３つのシェアを与える。さらに詳しく言うと、（ＡＥＳでは１バイトとして示される）任意の状態変数ｐが、３つのシェア（ｐ０；ｐ１；ｐ２）に分割される：
【数１８】
0005892887.tif 000019
この場合、シェアｐ１及びｐ２は、マスクと呼ばれる。
【００３１】
先の関係が、暗号化アルゴリズムの実行にわたって保持されるように、３つのシェアｐ０、ｐ１及びｐ２が処理されなければならない。留意すべきは、
【数１９】
0005892887.tif 000020
のように、ラウンド鍵のあらゆるバイトｋが、同様に３つのシェア（ｋ０；ｋ１；ｋ２）に分割されなければならない点である。
【００３２】
ブロック暗号の線形部分は処理しやすい。以下の方程式（１）が成立する場合、関数ｆが線形であると言える：
【数２０】
0005892887.tif 000021
【００３３】
このとき、このような線形関数に対して：
【数２１】
0005892887.tif 000022
のような、３つのシェア（ｐ０；ｐ１；ｐ２）が入力として与えられた場合、ｆ（ｐ０）、ｆ（ｐ１）及びｆ（ｐ２）を別々に計算し、方程式（１）を立てて：
【数２２】
0005892887.tif 000023
を得ることで十分である。
したがって、３つの出力シェアｆ（ｐ０）、ｆ（ｐ１）及びｆ（ｐ２）が、出力ｆ（ｐ）の有効な分割である。ＡＥＳ暗号に対しては、ＡｄｄＲｏｕｎｄＫｅｙ、ＳｈｉｆｔＲｏｗｓ及びＭｉｘＣｏｌｕｍｎｓの演算が、線形関数であり、したがって当該方法で処理され得る。しかしながら、（ＡＥＳの場合のＳボックス関数のような）ＳｕｂＢｙｔｅ演算は、非線形であり、異なって処理されなければならない。
【００３４】
ＡＥＳの場合のＳボックス関数のような非線形演算を処理するため、アルゴリズムが、以下のように定義され得る：
【数２３】
0005892887.tif 000024
留意すべきは、ＡＥＳに対してはｎ＝ｍ＝８である点である。このアルゴリズムは、好ましくは以下のように定義されたマスクされた関数ｃｏｍｐａｒｅｂを有する：
【数２４】
0005892887.tif 000025
この場合、ｘ及びｙは、ｃｏｍｐａｒｅｂ関数の入力変数である。
【００３５】
２次のマスクされた入力から２次のマスクされたＳボックス関数を計算することは、以下のように実行されてもよい：
入力：  マスクされた１つの値は、
【数２５】
0005892887.tif 000026
である。この場合、ｒ１；ｒ２は、一対の入力マスクである。
【数２６】
0005892887.tif 000027
は、一対の出力マスクである。
出力：  当該マスクされたＳボックス関数が、
【数２７】
0005892887.tif 000028
を出力する。
【数２８】
0005892887.tif 000029
【００３６】
この場合、
【数２９】
0005892887.tif 000030
は、ｃｏｍｐａｒｅｂ関数の入力変数である。
【数３０】
0005892887.tif 000031
の場合、
【数３１】
0005892887.tif 000032
である。このｃｍｐは、
【数３２】
0005892887.tif 000033
を要求されたものとして与える。
【００３７】
この特別な実施の形態では、当該ｃｏｍｐａｒｅｂ関数を実行するときは中止しなければならない。すなわち、ｃｏｍｐａｒｅｂ（ｘ；ｙ）関数は、好ましくは
【数３３】
0005892887.tif 000034
を直接計算することによって実行されてはならない。何故なら、上記アルゴリズムでは、当該計算は、
【数３４】
0005892887.tif 000035
を計算することに等しいからである。
【数３５】
0005892887.tif 000036
と組み合わせられた
【数３６】
0005892887.tif 000037
は、２次を漏洩させる。
【００３８】
【数３７】
0005892887.tif 000038
に関する任意の１次サイドチャネル漏洩を阻止するためのｃｏｍｐａｒｅｂ関数を実行する方法を説明する。
【００３９】
ｃｏｍｐａｒｅｂ関数を再度示すと：
【数３８】
0005892887.tif 000039
として定義される。
【００４０】
当該ｃｏｍｐａｒｅｂ関数を実行する方法は、ランダムアクセスメモリ内の２ｎ個のビットのテーブルＴを要求する。このテーブルＴは、以下のように予備処理される：
【数３９】
0005892887.tif 000040
この予備処理が、予備処理ステップを完了させる。
【００４１】
この予備処理の最後に、テーブルＴが：
【数４０】
0005892887.tif 000041
を満たす。
このとき、ｃｏｍｐａｒｅｂ関数は：
【数４１】
0005892887.tif 000042
のように実行される。
この場合、計算中の全ての中間変数が、
【数４２】
0005892887.tif 000043
から独立している。このことは、
【数４３】
0005892887.tif 000044
に関する任意の１次サイドチャネル漏洩を阻止する。
【００４２】
ｃｏｍｐａｒｅｂ関数の上述した実行は、従来の技術において知られている。不都合にも、このｃｏｍｐａｒｅｂ関数の上述した実行は、非効率である。このｃｏｍｐａｒｅｂ関数のアルゴリズムは、ランダムアクセスメモリの２ｎ個のビットを要求する。しかしながら、実際には、ランダムアクセスメモリの２ｎ個のバイトを使用することが、より便利である。何故なら、さもなければ、ビットアクセス技術が使用される必要があり、このビットアクセス技術は、安全に実行するためには煩わしいからである。予備処理が、２ｎ＋１個のメモリ転送を要求する。このような予備処理は、ＲＤＰ２アルゴリズムに対する全ての呼び出し前に実行されなければならない。このとき、ｃｏｍｐａｒｅｂ関数に対する全ての呼び出しが、２つのＸＯＲ演算及び１つのメモリ転送を要求する。したがって、ｎ＝８によるＡＥＳに対しては、このｃｏｍｐａｒｅｂ関数が、予備処理中にランダムアクセスメモリの２５６バイト及び２５７回のメモリ転送を要求する。全体では、このときに、ＲＤＰ２アルゴリズムは、６・２ｎ個のＸＯＲ演算と、３・２ｎ＋１個のメモリ転送と、ｎ＋１個のランダムビットの生成とを要求する。
【００４３】
本発明による方法は、ｃｏｍｐａｒｅｂ関数の異なる実行に基づき、特にマッチ・イン・プレース関数を使用する実行に基づく。
【００４４】
あらゆるプロセッサが、メモリ内の或るアドレスａｄｒの或るデータを読み書きする通常の命令ｄａｔａ←ｒｅａｄ（ａｄｒ）及びｗｒｉｔｅ（ｄａｔａ；  ａｄｒ）を有する。マッチ・イン・プレース技術では、プロセッサが、以下のように作用する追加の関数ＭＩＰ（ｄａｔａ；  ａｄｒ）を有する：
【数４４】
0005892887.tif 000045
【００４５】
換言すれば、データが、当該メモリ位置ａｄｒで適合され、このアドレスａｄｒの値が、このメモリ位置から決して離れない。
【００４６】
本発明では、以下のように定義された、ＭＩＰ関数のビットをランダム化したバージョンである追加の関数ＭＩＰＩが提供される：
【数４５】
0005892887.tif 000046
【００４７】
好ましくは、以下の関係が存在する：
【数４６】
0005892887.tif 000047
【００４８】
当該ＭＩＰＩ関数を使用すると、ｃｏｍｐａｒｅｂ関数が、以下のように簡単に実行され得る。この場合、ａｄｒは、メモリ内の自由な１つのアドレスである。
【数４７】
0005892887.tif 000048
ｘが、メモリ内のアドレスａｄｒに書き込まれると、ｃｏｍｐａｒｅｂ関数によって要求されるように、ＭＩＰＩ（ｙ；  ａｄｒ；  ｂ）関数が、ｘ＝ｙのときにｂを戻し、ｘ≠ｙのときに
【数４８】
0005892887.tif 000049
を戻す。
【００４９】
当該ＭＩＰＩ関数を使用すると、２次のマスクされた入力から２次のマスクされたＳボックス関数を計算することが以下のようになる：
入力：  マスクされた値
【数４９】
0005892887.tif 000050
、一対の出力マスクｓ１、
【数５０】
0005892887.tif 000051
、自由な１つのメモリアドレスａｄｒ。
出力：  マスクされたＳボックス関数の出力
【数５１】
0005892887.tif 000052
【数５２】
0005892887.tif 000053
【００５０】
ＭＩＰＩ関数に基づく当該ＭＩＰＩ関数の実行が、当初のｃｏｍｐａｒｅｂ関数と同じ特性を満たす。すなわち、全ての中間変数が、
【数５３】
0005892887.tif 000054
に依存しない。
【００５１】
留意すべきは、ランダム化された関数ＭＩＰＩ（ｙ；  ａｄｒ；  ｂ）が好ましい点である。この代わりに、関数ＭＩＰ（ｙ；  ａｄｒ）が、（最初にＭＩＰ（ｙ；  ａｄｒ）を計算し、次いで）
【数５４】
0005892887.tif 000055
を戻すことによって）使用される場合は、当該実行は不安定である。何故なら、中間変数ＭＩＰ（ｙ；  ａｄｒ）が、
【数５５】
0005892887.tif 000056
から独立していないからである。
【００５２】
図３は、ｃｏｍｐａｒｅｂ関数の当初の実行の効率と本発明による（つまり、ＭＩＰＩ関数を使用する）ｃｏｍｐａｒｅｂ関数の実行の効率とを比較するテーブルを示す。本発明によるｃｏｍｐａｒｅｂ関数を実行するためには、より少ない演算及びより少ないランダムアクセスメモリで済むことが明らかである。
【００５３】
図４は、実行される当初のマスキングアルゴリズムの効率と本発明にしたがって実行される（つまり、ＭＩＰＩ関数を使用する）マスキングアルゴリズムの効率とを比較するテーブルを示す。ｎ＝８によるＡＥＳに対しては、本発明は、（２ｎの代わりに）ランダムアクセスメモリの１バイト、（１５３６の代わりに）１０２４回のＸＯＲ及び（７６９の代わりに）５１２回のメモリ転送を要求する。ＸＯＲ及びメモリ転送が、同じコストを有する場合、本発明のバリエーションは、当初の実行より３３％速い。したがって、同じ水準の安全性に対しては、本発明は、より少ないランダムアクセスメモリで済むより速い対抗手段を提供する。
【００５４】
特許請求の範囲で規定されたような本発明の範囲から離れることなしに、本発明の説明された実施の形態に対する様々な変更及びバリエーションが、当業者にとって明白である。本発明は、特定の好適な実施の形態に関連して説明されているものの、請求項に規定された本発明は、このような特定の実施の形態に不当に限定されるべきではないことが分かる。
【図１】
0005892887.tif 000067
【図２】
0005892887.tif 000068
【図３】
0005892887.tif 000069
【図４】
0005892887.tif 000070