(57)【要約】  ２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、電子部品において暗号計算が行われる。ｋビットの初期のデータ・ブロックから、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされた中間のデータ・ブロックが生成される。次に、ｊビットの変更されたデータ・ブロックを生成する２ｊエントリを有する置換テーブル（１０６）の助けを借りて、ｊビットのマスキングされた中間のデータ・ブロックの少なくとも１つに、非線形動作Sが適用される。ｊビットの変更されたデータ・ブロック及びｊビットの少なくともマスキングされた中間のデータ・ブロックの幾つかが、特定された非線形動作を含む変換によりｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロック（ａ’）を形成するために結合される。
2008502931.tif 000002
【特許請求の範囲】
【請求項１】
２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、電子部品における暗号計算を行うための方法であって、
ｋビットの初期のデータ・ブロック（ａ）から、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされた中間のデータ・ブロック
【数１】
2008502931.tif 000025
を生成する段階と、
ｊビットの変更されたデータ・ブロック
【数２】
2008502931.tif 000026
を生成する２ｊエントリを有する置換テーブル（１０６）により、ｊビットのマスキングされた中間のデータ・ブロック
【数３】
2008502931.tif 000027
の少なくとも１つに、非線形動作Ｓを適用する段階と、
ｊビットの変更されたデータ・ブロック及びｊビットの前記マスキングされた中間のデータ・ブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロック（ａ’）に結合する段階と、
を含む方法。
【請求項２】
初期のデータ・ブロックは、中間のデータ・ブロックを生成する段階の前にマスキングされる請求項１に記載の方法。
【請求項３】
中間のデータ・ブロック（１０３）は、非線形動作を適用する前にマスキングされる請求項１に記載の方法。
【請求項４】
生成する段階は、ｋビットのデータ・ブロックをｊブロックのデータ・ブロック（ｂ、ｃ）に分解することから成る分解動作（Ｔ）を含み、結合する段階は、ｊビットのデータ・ブロック（Ｂ、Ｃ）からのｋビットのデータ・ブロックをｋビットのデータ・ブロック（ａ’）に構成することから成る逆分解動作（Ｔ−１）を含む請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
暗号計算は、さらに、少なくとも１つの線形動作を含み、前記マスキングされた線形動作は、分解動作（Ｔ）の前にまたは逆分解動作（Ｔ−１）の後に行われる請求項４に記載の方法。
【請求項６】
暗号計算は、さらに、線形動作を含み、前記マスキングされた線形動作は、分解動作（Ｔ）の後にまたは逆分解動作（Ｔ−１）の前に行われる請求項４に記載の方法。
【請求項７】
分解動作（Ｔ）は、暗号アルゴリズムの開始において与えられ、逆分解動作（Ｔ−１）は、暗号アルゴリズムの終りにおいて与えられる請求項４に記載の方法。
【請求項８】
マスキングされた中間のデータ・ブロックを生成する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取るマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を含んで、２つのマスキングされないデータ・ブロックのマスキングされた積を提供する請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
中間のデータ・ブロック及び変更されたデータ・ブロックを結合する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取るマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を含んで、２つのマスキングされないデータ・ブロックのマスキングされた積を提供する請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
データ・ブロックは１バイトのサイズを有し、置換テーブルは８バイトのサイズを有し、そして、非線形動作は全単射（bijective: バイジェクティブ）であって、非ヌル要素に対して、有限フィールドにおける逆数である請求項１乃至９のいずれか１項に記載の方法。
【請求項１１】
データ・ブロックは、データ・ブロック及びランダム・マスク間で排他的論理和を行うことによりマスキングされる請求項１乃至１０のいずれか１項に記載の方法。
【請求項１２】
暗号アルゴリズムは、サイズｋの初期のデータ・ブロックの決定された数を含むメッセージを入力として取り、そして、前記メッセージの初期データ・ブロックの各々に対して順次的に、置換テーブルが生成されて記憶され、そして次に、前記データ・ブロックが処理される請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
置換テーブルは、メッセージの初期のデータ・ブロックの各々に対して、同時に生成されて記憶され、次に、メッセージのデータ・ブロックは同時に処理される請求項１２に記載の方法。
【請求項１４】
データ・ブロックは、暗号アルゴリズムの開始点において生成される置換テーブルを、暗号アルゴリズムの動作のすべてに対して用いて暗号化される請求項１２または１３に記載の方法。
【請求項１５】
各マスキングされた非線形動作の前に置換テーブルが生成される請求項１２または１３に記載の方法。
【請求項１６】
アルゴリズムは、ラウンドの決定された数を含み、少なくとも最初のラウンド及び少なくとも最後のラウンドに対して置換テーブルが生成されて記憶される請求項１２または１３に記載の方法。
【請求項１７】
暗号アルゴリズムは、ＡＥＳである請求項１乃至１６のいずれか１項に記載の方法。
【請求項１８】
２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、暗号計算を行うための電子部品であって、
ｋビットの初期のデータ・ブロックから、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされたブロックを生成するための手段と、
ｊビットの変更されたデータ・ブロックを生成する２ｊエントリを有する置換テーブルにより、ｊビットのマスキングされたブロックの少なくとも１つに、非線形動作Ｓを適用するための手段と、
ｊビットの変更されたブロック及びｊビットの前記マスキングされたブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロックに結合するための手段と、
を備えた電子部品。
【請求項１９】
暗号アルゴリズムは、ＡＥＳである請求項１８に記載の電子部品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号の分野に関し、特に、暗号アルゴリズムによって用いられるキーの秘密性の保護に関するものである。それを、暗号または解読機能に対するその非制限的な応用において以下に説明する。
【背景技術】
【０００２】
暗号のためのアルゴリズム、すなわち、それぞれ解読のためのまたは再度暗号化するためのアルゴリズムは、データを暗号化すること、それぞれ解読化することを目的としている。このようなアルゴリズムは、幾つかの動作または計算を一緒にしたチェーニングを一般的に含んでおり、該チェーニングは、暗号化されたデータ項目を得るように暗号化されるべきであるデータ項目に連続的に適用される。これらのアルゴリズムは秘密キーを用いる。
【０００３】
このような暗号アルゴリズムは、用いられるキーの秘密性を侵害することを目的とする“アタック（ａｔｔａｃｋｓ）”からの不利益をこうむり得る。今日では、多くの種類のアタックが知られている。
【０００４】
このように、或るアタックは、暗号アルゴリズムの実行中に検出される情報漏れに基づいている。これらのアタックは、一般に、データ項目の及びキーまたは複数のキーの、暗号アルゴリズムによる処理中に検出される情報漏れ間の（現在の、電磁放射計算時間等の消費を分析することによるアタック）相関に基づいている。
【０００５】
このようなアタックに対する保護のための手順が知られている。一般に用いられている該保護手順の１つは、暗号または解読アルゴリズムによって操作される中間データのランダムなマスキングである。この種の保護においては、入力データはランダム値によってマスキングされる。このように、アルゴリズムにおいて行われる動作から帰結する中間データは、キーまたは複数のキーとは相関され得ない。
【０００６】
暗号アルゴリズムの秘密キーの秘密性を侵害（妨害）することを目的とするアタックは、解読アルゴリズムの秘密キーの秘密性を侵害（妨害）することを目的とするアタックと類似している。以下のセクションにおいては、解読アルゴリズムとの関係で説明される特徴は、解読アルゴリズムとも関係している。
【０００７】
暗号アルゴリズムは、一般に、幾つかの線形及び／または非線形動作を含む。暗号化されるべき初期のデータ項目に対して、中間データ項目が、暗号アルゴリズムの動作の各々の後に得られる。マスキングされた中間データが操作されるとき、マスキングされた中間データ項目が、各動作の後に得られる。暗号アルゴリズムはこのように保護される。
【０００８】
しかしながら、データ項目を“デマスキング（demasking）”することによってこれらの動作の各々の後に、マスキングされない（unmasked）中間データを回復することは、有用である。線形動作から帰結する中間データ項目をデマスキングすることは容易である。特に、ランダムなマスクｍで排他的論理和によりマスキングされたデータ項目ｘに与えられる線形動作Ｌは、以下の形式で書かれ得る：
【数１】
2008502931.tif 000003
【０００９】
このように、ｍを知れば、Ｌ（ｘ）を得るために、
【数２】
2008502931.tif 000004
をデマスキングすることは容易である。
【００１０】
非線形動作に対しては、全く状況が異なる。特に、ランダムなマスクｍで排他的論理和によりマスキングされたデータ項目ｘに与えられる非線形動作Ｆに対しては、一般に、以下のように書くことが可能である： 
【数３】
2008502931.tif 000005
【００１１】
暗号アルゴリズムによって操作される中間データ項目をデマスキングするために、保護されるべき暗号アルゴリズムに依存して、複雑で高価であり得る一連の計算を行うことが必要である。
【００１２】
ＤＥＳ（“データ暗号基準”）アルゴリズムまたは他にはＡＥＳ（“進歩した暗号基準”）アルゴリズムのような非線形動作を用いた暗号アルゴリズムが知られている。ＡＥＳアルゴリズムのマスキングによる保護の幾つかの方法は、既に提案されてきている。
【００１３】
このようなアルゴリズムにおいては、非線形動作は置換テーブルの形態で一般には履行される。従って、データ項目ｘに与えられる、置換テーブルのタブ［ｉ］に対応する非線形動作は、以下の形態で書かれ得る：
【数４】
2008502931.tif 000006
【００１４】
この場合におけるマスキングによる保護は、ランダムにマスキングされたテーブルを急いで生成することが必要である。従って、ランダムなマスクｍ１によってマスキングされたデータ項目ｘに与えられる、マスキングされた置換テーブルのタブ’［ｉ］に対応するマスキングされた非線形動作は、以下の形式で書かれ得る。
【数５】
2008502931.tif 000007
【００１５】
このようにして得られたデータ項目ｙ’をデマスキングすることができるために、１つの解決法は、マスキングされたテーブルを記憶することにある。この種の保護手順は、Ｌｏｕｉｓ  Ｇｏｕｂｉｎ  及びＪａｑｕｅｓ  Ｐａｔａｒｉｎによる文献‘ＤＥＳ及び差動パワー分析―“複製” 方法（DES and Differential Power Analysis − The “Duplication” Method）’において、編集者Ｃｅｔｉｎ  Ｋａｙａ  Ｋｏｃ及びＣｈｒｉｓｔｏｆ  ＰａａｒにおけるＰｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＣＨＥＳ’９９、‘コンピュータサイエンスにおける講演録’の第１７１７巻、ページ１５８―１７２、Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ、２０００において、並びにフランス特許ＦＲ２８０２７４  １の‘Ｄｅｓｉｐｏｓｉｔｉｆ  ｍｅｔｔａｎｔ  ｅｎ  ｏｅｕｖｒｅ  ｕｎ  ａｌｇｏｒｉｔｈｍｅ  ｄｅ  ｃｈｉｆｆｒａｇｅ  ｐａｒ  ｂｌｏｃ  ａ  ｒｅｐｅｔｉｔｉｏｎ  ｄｅ  ｒｏｎｄｅｓ’  ［ラウンドの繰返しを有するブロックワイズの暗号アルゴリズムを履行する装置］において、ＤＥＳ暗号アルゴリズムに対して提案されている。
【００１６】
しかしながら、このような解決法は、記憶余地に関して極端に高価であることが分かり、特に、マスキングされない（unmasked）置換テーブルが比較的大きいサイズのものであるときには、一層高価なものであることが分かり得る。
【００１７】
例えば、ＡＥＳの非線形動作は、２５６バイトのサイズを有する置換テーブルを用いて履行され得る。メッセージの１６バイトの同時暗号化は、２５６バイトの各々の１６のマスキングされた置換テーブルの記憶を必要とする。このように履行される非線形動作をマスキングするために必要とされるメモリのサイズは結果的に４ｋｂである。
【００１８】
従って、この種の保護の欠点は、それが必然的なメモリ・サイズを必要とすることである。
【００１９】
また、２００４年３月４日に発行された、Ｊｏｈａｎｎｅｓ  Ｂｌｏｍｅｒ、Ｇｕａｒｊａｒｄｏ  Ｍｅｒｃｈａｎ、及びＶｏｌｋｅｒ  Ｋｒｕｍｅｌによる文献‘Ｐｒｏｖａｂｌｙ  Ｓｅｃｕｒｅ  Ｍａｓｋｉｎｇ  ｏｆ  ＡＥＳ’、並びに、ＡＥＳアルゴリズムの非線形動作が、有限のフィールドＧＦ（４）において実行されるということを提案している、２００４年６月４日付けの、Ｅ、Ｏｓｗａｌｄ、Ｓｔｅｐｈａｎ  Ｍａｎｇａｒｄ及びＮｏｒｂｅｒｔ  Ｐｒａｍｓｔａｌｌｅｒの文献‘Ｓｅｃｕｒｅ  ａｎｄ  Ｅｆｆｉｃｉｅｎｔ  Ｍａｓｋｉｎｇ  ｏｆ  ＡＥＳ−Ａ  Ｍｉｓｓｉｏｎ  Ｉｍｐｏｓｓｉｂｌｅ’のバージョン１も知られている。
【００２０】
後者の論文は、中間マスキングされたデータ項目の非線形動作が、１つの有限フィールド（ＧＦ（２８））からもう１つの（ＧＦ（４））への置き換えによって線形動作に変換されるという、ＡＥＳアルゴリズムの動作をマスキングするための手順を提案している。
【００２１】
しかしながら、ＡＥＳのマスキングのこのような方法は、非線形動作がＧＦ（４）において実行され、従って、ビットは２×２で操作されるということを提案している。
【００２２】
一般に、マイクロプロセッサによって同時に処理されるビットの数とは実質的に非常に異なっているサイズのビットのブロックで実行される動作よりもむしろ、用いられるマイクロプロセッサによって同時に処理されるビットの数と実質的に等しいサイズのビットのブロックで実行される動作を効果的に履行することが一層容易である。
【００２３】
２×２のビットを操作する暗号アルゴリズムの効果的な履行は、８、１６、３２または６４ビットのマイクロプロセッサでさえ容易ではない。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明は、これらの欠点を軽減するための解決策を提案することを目的としている。
【課題を解決するための手段】
【００２５】
本発明の第１の態様は、２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、電子部品における暗号計算を実行する方法であって、
ｋビットの初期のデータ・ブロックから、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされた中間のデータ・ブロックを生成する段階と、
ｊビットの変更されたデータ・ブロックを生成する２ｊエントリを有する置換テーブルにより、ｊビットのマスキングされた中間のデータ・ブロックの少なくとも１つに、非線形動作を適用する段階と、
ｊビットの変更されたデータ・ブロック及びｊビットの前記マスキングされた中間のデータ・ブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロックに結合する段階と、
を含む方法を提案している。
【００２６】
このように、サイズｊの幾つかの中間のデータ・ブロックを生成することにより、サイズｊのデータ・ブロックに関するサイズｋのデータ・ブロック上に特定される非線形動作を行うことが可能であり、該サイズは、サイズｋのデータ・ブロックからビットで表現される。中間のデータ・ブロックを操作してしまった後、そして、特に、非線形動作を適用した後、このようにして得られたデータ・ブロックは、初期のデータ・ブロックの変換に対応するサイズｋのデータ・ブロックを回復するために結合される。この変換は、特定の非線形動作を含む。また、それは、アルゴリズムの他の動作をも含む。特に、ｋビットのデータ・ブロックを再度得るためにこれらのブロックを結合する前に、ｋビットのデータ・ブロックよりもむしろ、ｊビットのデータ・ブロックに関するアルゴリズムの他の動作を行うことが有利であり得る。
【００２７】
初期のデータ・ブロックから幾つかの中間のデータ・ブロックを生成するステップは、以下のセクションで詳細にするように、幾つかのステップを含み得る。従って、長所的には、アルゴリズムによって暗号化されるべき初期のデータ・ブロックよりも小さいサイズのデータ・ブロックが操作される。それ故、暗号アルゴリズムに含まれる特定された非線形動作は、一層小さいサイズの中間のデータ・ブロックに適用され得、従って、中間のデータ・ブロックに適用される非線形動作に対応する置換テーブルは、初期のデータ・ブロックに適用されるアルゴリズムの特定された非線形動作に対応するであろう置換テーブルのサイズよりも厳密に小さいサイズのものである。
【００２８】
これらの提供のおかげで、特にこの非線形動作が比較的大きいサイズの置換テーブルに対応するであろう場合において、非線形動作を含む暗号アルゴリズムの暗号計算をマスキングすることにより保護することが可能である。
【００２９】
マスキング・ステップは、長所的には、中間のデータ・ブロックを生成することにあるステップの前に初期のデータ・ブロックに関して行われるか、または、中間のデータ・ブロックに関して行われるか、のいずれかに関して行われ得る。
【００３０】
本発明の実施形態において、生成する段階は、ｋビットのデータ・ブロックをｊブロックのデータ・ブロック（ｂ、ｃ）に分解することから成る分解動作（Ｔ）を含み、結合する段階は、ｊビットのデータ・ブロック（Ｂ、Ｃ）からｋビットのデータ・ブロック（ａ’）を構成することにある逆分解動作（Ｔ−１）を含む。
【００３１】
本発明の実施形態において、暗号計算は、さらに、少なくとも１つの線形動作を含み、マスキングされた線形動作は、分解動作Ｔの前にまたは逆分解動作Ｔ−１の後に行われる。この場合において、暗号アルゴリズムが非線形動作の前に線形動作を含むとき、分解動作Ｔが線形動作の後に行われる。暗号アルゴリズムが非線形動作の後に線形動作を含むとき、逆分解動作Ｔ−１が線形動作の前に行われる。
【００３２】
もう１つの実施形態において、暗号アルゴリズムが線形動作を含むとき、これらのマスキングされた線形動作は、分解動作Ｔの後に及び逆分解動作Ｔ−１の前に行われる。このように、暗号アルゴリズムがラウンドの繰返しを有するアルゴリズムであり、ラウンドの各々が少なくとも１つの線形動作及び少なくとも１つの非線形動作を含むとき、各ラウンドは、分解動作Ｔの後に、及び分解動作Ｔ−１の前に行われる。
【００３３】
また、分解動作Ｔを暗号アルゴリズムの開始において与え、そして逆分解動作Ｔ−１を暗号アルゴリズムの終りにおいて与えることが可能である。従って、このようなアルゴリズムがラウンドの繰返しを有する暗号アルゴリズムであるとき、アルゴリズムのすべてのラウンドのすべての動作は、初期のデータ・ブロックのサイズよりも厳密に小さいサイズのブロックを操作することにより行われる。
【００３４】
図２は、ＡＥＳタイプのアルゴリズムに適用されるかかる実施形態を示す。このように、暗号化２０１されるべきサイズｋのデータ・ブロックは、分解動作Ｔにより、サイズｊの暗号化されるべき幾つかの中間のデータ・ブロック（２０２）に分解される。サイズｋのデータ・ブロックに対して特定されるＡＥＳタイプのアルゴリズムのものと等価であるマスキング２０３によって保護される動作は、次に、サイズｊの中間のデータ・ブロックに適用される。暗号化された中間のデータ・ブロック２０４が得られる。次に、逆分解動作Ｔ−１が、サイズｋの暗号化されたデータ・ブロック２０５を得るために適用される。従って、このような実施形態は、アルゴリズムの動作の変更を必要とし、それ故、それらは中間のデータ・ブロックに適用可能である。
【００３５】
マスキングされた中間のデータ・ブロックを生成する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取って２つのマスキングされないデータ・ブロックのマスキングされた積を提供するマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を含み得る。
【００３６】
中間のデータ・ブロック及び変更されたデータ・ブロックを結合する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取って２つのマスキングされないデータ・ブロックのマスキングされた積を提供するマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を同様に含み得る。
【００３７】
以下のセクションにおいて詳細に説明するように、初期のデータ・ブロックが１バイトのサイズを有するとき、そして特定された非線形動作が、ＡＥＳタイプのアルゴリズムにおけるように、２５６バイトに等しいサイズの置換テーブルによって履行され得るとき、８バイトのサイズを有する置換テーブルを用いて、中間のデータ・ブロックに非線形動作を適用することが長所的に可能である。
【００３８】
本発明の実施形態において、非線形動作は全単射（bijective: バイジェクティブ）であって、非ヌル要素に対して、有限フィールドにおける逆数である。好ましくは、規約により、この動作は、要素０から要素０にマッピングする。
【００３９】
本発明の実施形態において、サイズｋの初期のデータ・ブロックの決定された数を含むメッセージを入力として取る暗号アルゴリズムは、初期データ・ブロックの各々を順次的に処理する。このように、置換テーブルが、各初期のデータ・ブロックごとに生成されて記憶され、そして次に、各データ・ブロックは次々に処理される。
【００４０】
本発明のもう１つの実施形態において、暗号アルゴリズムは、入力メッセージのデータ・ブロックのすべてを同時に処理する。このように、置換テーブルは、メッセージの初期のデータ・ブロックの各々に対して、同時に生成されて記憶され、次に、メッセージの前記データ・ブロックは同時に処理される。ブロックのこのタイプの同時処理は、データ・ブロックの順次処理よりも一層大きいサイズのメモリ領域を必要とする。このようなコンテクストにおいて、以下のセクションで詳細に説明するように、本発明によって提案されるように非線形動作に対応する置換テーブルを減少することが非常に有利であることが分かる。
【００４１】
本発明の実施形態において、初期のデータ・ブロックは、暗号アルゴリズムの開始点において生成される置換テーブルを、暗号アルゴリズムの非線形動作が行われる時間ごとに用いて処理される。このように、同じ置換テーブルが、暗号アルゴリズムにより初期のデータ・ブロックの処理を通して用いられる。
【００４２】
各マスキングされた非線形動作の前に置換テーブルを生成して記憶することも可能である。この実施形態においては、新しい置換テーブルが、非線形動作の各適用の前に用いられる。
【００４３】
このようなアルゴリズムは、各々が線形動作及び少なくとも１つの非線形動作を含む幾つかのラウンドを通常は含んでいる。このようなアルゴリズムにおける計算の実行の最も頻繁なアタックは、最初のラウンドの及び最後のラウンドの実行中の情報漏れに基づいており、その理由は、暗号化されるべきデータ・ブロック及び暗号化されたデータ・ブロックに近いデータ・ブロックを操作するのがラウンドであるからである。従って、これらのアタックからこのようなアルゴリズムを保護するために、最初のラウンドまたはラウンド達において及び／または最後のラウンドまたはラウンド達において操作されるデータ・ブロックをマスキングすることが可能である。それ故、少なくとも最初のラウンド及び少なくとも最後のラウンドに対して置換テーブルを生成して記憶することが有利であり得る。
【００４４】
本発明の第２の態様は、２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、暗号計算を実行するための電子部品であって、
ｋビットの初期のデータ・ブロックから、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされたブロックを生成するための手段と、
ｊビットの変更されたデータ・ブロックを生成する２ｊエントリを有する置換テーブルにより、ｊビットのマスキングされたブロックの少なくとも１つに、非線形動作を適用するための手段と、
ｊビットの変更されたブロック及びｊビットの前記マスキングされたブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロックに結合するための手段と、
を備えた電子部品を提案している。
【００４５】
これらの提供のおかげで、マスキングされたデータ・ブロックを操作することにより、及び２５６バイトに等しいサイズのマスキングされた置換テーブルの代わりに８バイトに等しいサイズのマスキングされた置換テーブルを用いることにより、非線形動作を含むＡＥＳタイプの暗号アルゴリズムを用いた電子部品を、情報漏れ検出アタックから保護することが可能である。
【００４６】
それ故、暗号アルゴリズムを保護するこのような方法は、比較的小さいメモリ・サイズを必要とする。従って、それは、比較的小さいサイズのメモリ領域を呈する暗号電子部品において用いられ得る。
【００４７】
さらに、本発明の実施形態においては、サイズ４ビットの中間データ・ブロックが操作される。このようなサイズは、一層小さいサイズのデータ・ブロックが操作されるときよりも実行するのが一層容易である効果的な履行を許容する。
【００４８】
本発明の他の観点、目的及び長所はその実施形態の１つの説明を読めば明瞭となるであろう。
【００４９】
本発明は、また、添付図面の助けを借りて一層良好に理解されるであろう。
【発明を実施するための最良の形態】
【００５０】
本発明の実施形態においては、サイズｋの初期のデータ・ブロックから、ｋよりも厳密に（はっきりと）少ないサイズの幾つかのデータ・ブロックを生成するよう、有限フィールド（Galoisフィールド（ガロア域）（GF））の既知の数学的特性を用いている。本発明の実施形態は、１６バイトからなるメッセージを入力として取る、ＡＥＳタイプの暗号アルゴリズムをマスキングすることによって保護するよう説明されており、バイトの各々は、一連の線形動作及び少なくとも１つの非線形動作を各々が含むラウンド（rounds）の繰返しによって処理される。本発明は、ラウンドの繰返しがあろうと無かろうと、少なくとも１つの非線形動作を含む暗号アルゴリズムの他のタイプを包含する。
【００５１】
ＡＥＳタイプのアルゴリズムにおいては、非線形動作は、有限フィールドＧＦ（２８）における、非ヌル要素のための逆数（multiplicative inversion）に対応する。従って、データ・ブロックから、厳密に一層小さいサイズの幾つかの中間データ・ブロックを生成するために、線形動作がフィールドＧＦ（２８）からフィールドＧＦ（（２４）２）に置き換えられるということが提案されている。
【００５２】
Ｔｓｉｎｇ−Ｆｕ  Ｌｉｎｇ、Ｃｈｉｈ―Ｐｉｎ  Ｓｕ、Ｃｈｉｈ−Ｔｓｕｎ  Ｈｕａｎｇ、及びＣｈｅｎｇ−Ｗｅｎ  Ｗｕによる文献‘Ａ  ｈｉｇｈ−ｔｈｒｏｕｇｈｐｕｔ  ｌｏｗ−ｃｏｓｔ  ＡＥＳ  ｃｉｐｈｅｒ  ｃｈｉｐ’、また、Ｖｉｎｃｅｎｔ  Ｒｉｊｍｅｎによる文献‘Ｅｆｆｉｃｉｅｎｔ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  Ｒｉｊｎｄａｅｌ  Ｓ−ｂｏｘ’、及びＡｔｒｉ  Ｒｕｄｒａ、Ｐｒａｄｅｅｐ  Ｋ．  Ｄｕｂｅｙ、Ｃｈａｒａｎｊｉｔ  Ｓ．  Ｊｕｔｌａ、Ｖｉｊａｙ  Ｋｕｍａｒ、Ｊｏｓｙｕｌａ  Ｒ．  Ｒａｏ、及びＰａｎｋａｊ  ｒｏｈａｔｇｉによる文献‘Ｅｆｆｉｃｉｅｎｔ  Ｒｉｊｎｄａｅｌ  Ｅｎｃｒｙｐｔｉｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｗｉｔｈ  Ｃｏｍｐｏｓｉｔｅ  Ｆｉｅｌｄ  Ａｒｉｔｈｍｅｔｉｃ’、そして次にＲ．Ｗ．  Ｗａｒｄ  及びＴ．Ｃ．Ａ  Ｍｏｌｔｅｎｏによる文献‘Ｅｆｆｉｃｉｅｎｔ  ｈａｒｄｗａｒｅ  ｃａｌｕｃｌａｔｉｏｎ  ｏｆ  ｉｎｖｅｒｓｉｏｎ  ｉｎ  ＧＦ（２８）’は、ＡＥＳアルゴリズムの線形動作が如何にして合成フィールドＧＦ（（２４）２）に移送され得るかを示すものとして、並びにこのような置き換えが暗号アルゴリズムの性能を改善することを可能とするということを示すものとして知られている。
【００５３】
従って、従来は、ＡＥＳは、１６バイトからなるメッセージを入力として取る。幾つかのラウンドが、これらのバイトの各々に与えられ、各ラウンドは主秘密キーから導出されるサブキーを用いる。ＡＥＳは一般に以下の動作を含む：
【００５４】
―  入力メッセージの１６バイトの各々に与えられる、８ビットから８ビットへの置換テーブルに対応する、ＳｕｂＢｙｔｅｓとして通常参照される線形動作；
【００５５】
―  サブキーの１６バイトと入力メッセージの１６バイトとの間に与えられる、ＡｄｄＲｏｕｎｄＫｅｙとして通常参照される線形排他的論理和動作；
【００５６】
―  １６バイトに与えられる摂動に対応する、ＳｈｉｆｔＲｏｗｓとして通常参照される線形動作；
【００５７】
―  １６バイトに与えられる混合コラムとして通常参照される線形動作。
【００５８】
ＡＥＳアルゴリズムのＳｕｂＢｙｔｅｓ動作は、有限フィールドＧＦ（２８）において、非ヌル要素のために、逆数に対応する非線形動作を含む。このような動作は、合成フィールドＧＦ（（２４）２）に移送され得、これにより、サイズ４ビットのデータ・ブロックが、バイトを操作する他の動作のための逆分解動作Ｔ−１を実行する前に、操作される。
【００５９】
ＧＦ（２４）及びフィールド多項式の表示を以下のように選択する。
【数６】
2008502931.tif 000008
Ｄ及びＥは有限フィールドＧＦ（２４）の要素である。
【００６０】
それ故、以下のように書くことができる。
【数７】
2008502931.tif 000009
【００６１】
図１は、本発明の実施形態を示す。
【００６２】
以下のように書くことができる分解動作Ｔ １０２を構成する：
【数８】
2008502931.tif 000010
ここに、ａはＧＦ（２８）の要素であり、（ｂｘ＋ｃ）は、ＧＦ（（２４）２）の要素であり、ｂ及びｃは、有限フィールドＧＦ（２４）の要素である。
【００６３】
この分解動作Ｔは、１つのバイトに等しいサイズのデータ・ブロックａから、４ビットに等しいサイズの中間のデータ・ブロックｂ及びｃを生成する。
【００６４】
この分解動作は、８×８行列との乗算の形態で履行され得る。
【００６５】
この分解動作の後に、操作されたデータ・ブロックは、初期の８ビット・ブロックのサイズよりも厳密に（はっきりと）一層小さい、サイズ４ビットの中間のデータ・ブロックである。
【００６６】
このような分解動作Ｔは，最初の非線形動作に対応する置換テーブルのサイズを減少することができるような方法で操作されるデータ・ブロックのサイズを減少することが可能である。従って、それは、非線形動作を行う前に行われる。しかしながら、それは、暗号アルゴリズムの種々のステップにおいて行われ得る。このように、入力メッセージの１６バイトの各々上で、この分解動作は、アルゴリズムの開始点において、または、アルゴリズムのラウンドの各々の開始点において、もしくは、他には非線形動作の各アプリケーションの前でのいずれかにおいて行われ得る。
【００６７】
本発明は、この分解動作が行われるアルゴリズム・ステップがある場合の実施形態をも包含する。
【００６８】
次に、置換テーブルを用いた線形動作が行われてしまったとき、有限フィールドＧＦ（２８）に復帰するために、逆分解動作Ｔ−１を行って、再度バイトを操作することが可能である。
【００６９】
本発明は、逆分解動作が行われるアルゴリズム・ステップがある場合の実施形態をも包含する。
【００７０】
分解動作Ｔ及び逆分解動作Ｔ−１が行われるステップに従って、ＧＦ（２８）におけるアルゴリズムの他に決定された動作が、有限フィールドＧＦ（（２４）２）に適合される。
【００７１】
このように、分解動作Ｔが非線形動作の前に行われて、次に、逆分解動作Ｔ−１が非線形動作の後に行われるならば、アルゴリズムの他の動作を有限フィールドＧＦ（（２４）２）に適合させることは必要でない。他方、分解動作Ｔがアルゴリズムの開始点において行われ、逆分解動作Ｔ−１が暗号アルゴリズムの終りで行われる場合には、アルゴリズムの動作のすべては、有限フィールドＧＦ（（２４）２）に適合される。暗号アルゴリズムの動作は、次に、有限フィールドＧＦ（（２４）２）におけるそれらの等価物によって取って代わられる。
【００７２】
本発明の実施形態において、以下のセクションによって詳細にされるように、ＡＥＳアルゴリズムの少なくとも最初のラウンドと最後のラウンドに対する非線形動作のときに操作される少なくとも中間のデータ・ブロックをマスキングする（１０３）。本発明は、また、非線形動作のときに操作される中間のブロックが、アルゴリズムのラウンドのすべてに対してマスキングされるという実施形態を包含し、もしくは、他に、これらのデータ・ブロックがＧＦ（２８）の要素であろうとまたはＧＦ（（２４）２）の要素であろうと、アルゴリズムの実行中に操作される中間のデータ・ブロックのすべてまたは部分が、マスクイングされるという実施形態を包含する。
【００７３】
本発明の実施形態において、非線形動作は、非ヌル要素のためのＧＦ（２４）における逆数である。
【００７４】
有限フィールドＧＦ（（２４）２）において、要素（ｂｘ＋ｃ）の反転は、以下の形態で書かれ得る：
【数９】
2008502931.tif 000011
ここに、Δ＝ｂ２Ｅ＋ｂｃＤ＋ｃ２である。
【００７５】
このように、有限フィールドＧＦ（（２４）２）に置き換えられる有限フィールドＧＦ（２８）の逆数の第１の非線形動作は、逆数の乗算、加算及び非線形動作に対応する。有限フィールドＧＦ（（２４）２）におけるこの非線形動作は、８バイトを占める４ビット置換テーブルに４ビットを通して履行され得る。
【００７６】
説明したように、このように操作されたデータ・ブロックをマスキングすることを望む。加算のマスキングは良く知られている。
【００７７】
乗算をマスキングするために、マスキングされた乗算アルゴリズムＭ（ｘ、ｙ、ｚ））１０４が導入される。以下に説明するものにおいて、要素ｍ１、ｍ２、ｍ３、ｎ、ｎ’、ｎ１、ｎ２はランダム・マスクである。このようなアルゴリズムは、入力として以下のものを取る：
―  ＧＦ（２４）のマスキングされた要素
【数１０】
2008502931.tif 000012
―  マスクｍ３
【００７８】
このようなアルゴリズムは、
【数１１】
2008502931.tif 000013
の形態におけるマスキングされた積を出力する。
【００７９】
以下のステップが書かれ得る：
【数１２】
2008502931.tif 000014
【００８０】
本発明の実施形態において、最初の中間のデータ・ブロックがマスキングされる。このようにして、以下の形態で書かれ得る最初のマスキングされた分解を得る：
【数１３】
2008502931.tif 000015
【００８１】
次に、以下の形態
【数１４】
2008502931.tif 000016
においてマスキングされた乗算を計算するために、マスキングされた乗算アルゴリズムを用いる。
【００８２】
次に、同じ方法で、ステップ１０５により、マスキングされたデータ・ブロックΔを得るために以下の積を計算する：
【数１５】
2008502931.tif 000017
【００８３】
結果的に以下の数式
【数１６】
2008502931.tif 000018
を得る。
【００８４】
このように、有限フィールドＧＦ（２４）において加算及び乗算により、マスキングされたデータ・ブロック
【数１７】
2008502931.tif 000019
を得、このブロックに対して、逆数の非線形動作が与えられる。
【００８５】
本発明の実施形態において、この非線形動作は、以下の式
【数１８】
2008502931.tif 000020
を満足する、ステップ１０６による、マスキングされた置換テーブルｔａｂ［ｘ］を用いて、マスキングされたデータ・ブロック上で行われる。
【００８６】
従って、このマスキングされた置換テーブルは、マスキングされたデータ・ブロックの反転、すなわち、
【数１９】
2008502931.tif 000021
を得ることを可能とする。
【００８７】
マスキングされた乗算アルゴリズムを適用することにより、
【数２０】
2008502931.tif 000022
を計算する。
【００８８】
このように、マスキングされたデータ・ブロック
【数２１】
2008502931.tif 000023
を結合する（１０８）ことにより、Ｂｘ＋Ｃを得る。
【００８９】
従って、この非線形動作を行うために、マスキングされないデータ・ブロックｂ、ｃ及びΔを操作しなければならないということはなく、（ｂｘ＋ｃ）−１のマスキングされた値を得る。
【００９０】
次に、逆分解動作Ｔ−１１０９が、要素１１０を得るために行われる。
【数２２】
2008502931.tif 000024
【００９１】
本発明の実施形態において、Ｄは、行われるべき乗算の数を減少するように、１に等しく決定される。
【００９２】
従って、長所的には、非線形動作は、有限フィールドＧＦ（２８）から有限フィールドＧＦ（（２４）２）に置き換えられ、それにおいて、非線形動作は、一層少ない要素を有するフィールドにおける等価の非線形動作の、乗算の、そして加算の、組み合わせに対応する。
【００９３】
従って、減少されたサイズのデータ・ブロック上にこの非線形動作と等価の動作を行うことによって非線形動作を含む暗号計算の実行中の情報漏れを検出することにより、アタックから電子部品を保護することが可能であり、それにより、対応の置換テーブルが減少されたサイズのものであるので、マスキングされたデータ・ブロック上にこれらの計算を行うことを可能とする。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施形態による暗号アルゴリズムを保護する方法を示す図である。
【図２】本発明の実施形態によるＡＥＳタイプの暗号アルゴリズムを保護する方法を示す図である。
【図１】
2008502931.tif 000028
【図２】
2008502931.tif 000029
【手続補正書】
【提出日】平成18年5月23日(2006.5.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、電子部品における暗号計算を行うための方法であって、
ｋビットの初期のデータ・ブロック（ａ）から、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされた中間のデータ・ブロック
【数１】
2008502931.tif 000030
を生成する段階と、
ｊビットの変更されたデータ・ブロック
【数２】
2008502931.tif 000031
を生成する２ｊエントリを有する置換テーブル（１０６）により、ｊビットのマスキングされた中間のデータ・ブロック
【数３】
2008502931.tif 000032
の少なくとも１つに、前記特定された非線形動作に対応する非線形動作Ｓを適用する段階と、
ｊビットの変更されたデータ・ブロック及びｊビットの前記マスキングされた中間のデータ・ブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロック（ａ’）に結合する段階と、
を含む方法。
【請求項２】
初期のデータ・ブロックは、中間のデータ・ブロックを生成する段階の前にマスキングされる請求項１に記載の方法。
【請求項３】
中間のデータ・ブロック（１０３）は、非線形動作を適用する前にマスキングされる請求項１に記載の方法。
【請求項４】
生成する段階は、ｋビットのデータ・ブロックをｊブロックのデータ・ブロック（ｂ、ｃ）に分解することから成る分解動作（Ｔ）を含み、結合する段階は、ｊビットのデータ・ブロック（Ｂ、Ｃ）からのｋビットのデータ・ブロックをｋビットのデータ・ブロック（ａ’）に構成することから成る逆分解動作（Ｔ−１）を含む請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
暗号計算は、さらに、少なくとも１つの線形動作を含み、前記マスキングされた線形動作は、分解動作（Ｔ）の前にまたは逆分解動作（Ｔ−１）の後に行われる請求項４に記載の方法。
【請求項６】
暗号計算は、さらに、線形動作を含み、前記マスキングされた線形動作は、分解動作（Ｔ）の後にまたは逆分解動作（Ｔ−１）の前に行われる請求項４に記載の方法。
【請求項７】
分解動作（Ｔ）は、暗号アルゴリズムの開始において与えられ、逆分解動作（Ｔ−１）は、暗号アルゴリズムの終りにおいて与えられる請求項４に記載の方法。
【請求項８】
マスキングされた中間のデータ・ブロックを生成する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取るマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を含んで、２つのマスキングされないデータ・ブロックのマスキングされた積を提供する請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
中間のデータ・ブロック及び変更されたデータ・ブロックを結合する段階は、サイズｊのマスキングされたデータ・ブロック及びランダム・マスクを入力として取るマスキングされた乗算アルゴリズムに従って行われるマスキングされた加算及びマスキングされた乗算を含んで、２つのマスキングされないデータ・ブロックのマスキングされた積を提供する請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
データ・ブロックは１バイトのサイズを有し、置換テーブルは８バイトのサイズを有し、そして、非線形動作は全単射（bijective: バイジェクティブ）であって、非ヌル要素に対して、有限フィールドにおける逆数である請求項１乃至９のいずれか１項に記載の方法。
【請求項１１】
データ・ブロックは、データ・ブロック及びランダム・マスク間で排他的論理和を行うことによりマスキングされる請求項１乃至１０のいずれか１項に記載の方法。
【請求項１２】
暗号アルゴリズムは、サイズｋの初期のデータ・ブロックの決定された数を含むメッセージを入力として取り、そして、前記メッセージの初期データ・ブロックの各々に対して順次的に、置換テーブルが生成されて記憶され、そして次に、前記データ・ブロックが処理される請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
置換テーブルは、メッセージの初期のデータ・ブロックの各々に対して、同時に生成されて記憶され、次に、メッセージのデータ・ブロックは同時に処理される請求項１２に記載の方法。
【請求項１４】
データ・ブロックは、暗号アルゴリズムの開始点において生成される置換テーブルを、暗号アルゴリズムの動作のすべてに対して用いて暗号化される請求項１２または１３に記載の方法。
【請求項１５】
各マスキングされた非線形動作の前に置換テーブルが生成される請求項１２または１３に記載の方法。
【請求項１６】
アルゴリズムは、ラウンドの決定された数を含み、少なくとも最初のラウンド及び少なくとも最後のラウンドに対して置換テーブルが生成されて記憶される請求項１２または１３に記載の方法。
【請求項１７】
暗号アルゴリズムは、ＡＥＳである請求項１乃至１６のいずれか１項に記載の方法。
【請求項１８】
２よりも大きい整数であるｋのビットのデータ・ブロック上で特定される少なくとも１つの非線形動作を含む決定された暗号アルゴリズムに従って、暗号計算を行うための電子部品であって、
ｋビットの初期のデータ・ブロックから、ｋよりも小さい整数であるｊのビットの幾つかのマスキングされたブロックを生成するための手段と、
ｊビットの変更されたデータ・ブロックを生成する２ｊエントリを有する置換テーブルにより、ｊビットのマスキングされたブロックの少なくとも１つに、前記特定された非線形動作に対応する非線形動作Ｓを適用するための手段と、
ｊビットの変更されたブロック及びｊビットの前記マスキングされたブロックの少なくとも或るものを、前記特定された非線形動作を含む変換を通して、ｋビットの初期のデータ・ブロックに対応するｋビットの結果のブロックに結合するための手段と、
を備えた電子部品。
【請求項１９】
暗号アルゴリズムは、ＡＥＳである請求項１８に記載の電子部品。
【国際調査報告】
2008502931.tif 000033
2008502931.tif 000034
2008502931.tif 000035
2008502931.tif 000036