(57)【特許請求の範囲】
【請求項１】
マスキングにより保護された暗号化回路であって、前記回路が少なくとも１つの鍵ｋｒｃを用いた複数の２進ワードを暗号化する手段と、前記ワードに線形処理（２１６）および非線形処理（２１３）を適用する手段と、前記ワードをマスキングする手段とを含み、前記２進ワードが、それぞれのマスクｋｒｉを用いることによって前記非線形処理の上流で脱マスキング（２１４）され、そしてそれぞれのマスクｋｒ＋１ｉを用いることによって前記非線形処理の下流でマスキング（２１５）され、前記マスクｋｒｉおよびｋｒ＋１ｉが前記回路の各実例に固有の、一組のマスクの部分を形成するものであって、
前記非線形処理と、前記非線形処理の上流での脱マスキング（２１４）と、前記非線形処理の下流での前記マスキング（２１５）とが、ＲＯＭタイプのメモリ（２０９）内に実装され、
前記マスクｋｒｉが、ｋｒ＋１ｉ＝Ｐ（ｋｒｉ）およびｋ０ｉ＝ｋｉであるような、主要マスクｋｉから推定される二次マスクであり、関数Ｐ（ｘ）がｘの要素を置換するための関数に相当し、
前記主要マスクｋｉが長さＷであって、長さＳの整数の部分マスクからなり、前記二次マスクｋｒｉが前記部分マスクの置換により生成され、
前記ＲＯＭタイプのメモリ（２０９）が不変のままであることを特徴とする回路。
【請求項２】
前記二次マスクの前記部分マスクが、次の式：
【数１】
0005987250.tif 000023
を用いて選ばれ、
ここで、
ｒはラウンド数、
ｉはランダムに引き出された４ビットの数、
Ｑは２つの連続する二次マスクｋｒｉとｋｒ＋１ｉの間の置換割合を制御するための整数、
Ｓはビットで表わされる部分マスクの長さ、
Ｗはビットで表わされる前記主要マスクの長さ、
ｍｏｄ（）は、ｍｏｄ（ａ，ｂ）=ａ  ｍｏｄｕｌｏ  ｂのような定義された関数であり、ａおよびｂは整数である
ことを特徴とする、請求項１に記載の回路。
【請求項３】
前記主要マスクｋｉが、回路内に記憶された一組の主要マスクから、マスクｋｉをランダムに選ぶことにより規則的に変更されることを特徴とする、請求項１または２に記載の回路。
【請求項４】
前記回路内に記憶された前記主要マスクのグループが回路ごとに異なることを特徴とする、請求項３に記載の回路。
【請求項５】
前記主要マスクのグループが、内部マスク生成回路を用いて得られることを特徴とする、請求項４に記載の回路。
【請求項６】
２つのマスクｋｒｉとｋｒ＋１ｉの間のハミング（Ｈａｍｍｉｎｇ）距離がＳ／２に等しいことを特徴とする、請求項１〜５のいずれか一項に記載の回路。
【請求項７】
前記主要マスクｋｉのハミング重みがＷ／２に等しいことを特徴とする、請求項１〜６のいずれか一項に記載の回路。
【請求項８】
前記非線形処理がＳボックス（２１３、３１０）を用いて実行されることを特徴とする、請求項１〜７のいずれか一項に記載の回路。
【請求項９】
前記非線形処理が、レジスター内における結果のサンプリングの直前に、同一の組み合わせブロックにおいて前記線形処理の後に適用されることを特徴とする、請求項１〜８のいずれか一項に記載の回路。
【請求項１０】
ＦＰＧＡ内に実装されることを特徴とする、請求項１〜９のいずれか一項に記載の回路。
【請求項１１】
前記主要マスクｋｉが、回路内に記憶された一組の主要マスクから、マスクｋｉをランダムに選ぶことにより規則的に変更されるものであり、
前記主要マスクのグループが、ＦＰＧＡ回路構成ファイルの変更を用いて得られることを特徴とする、請求項１０に記載の回路。
【請求項１２】
前記主要マスクｋｉが、回路内に記憶された一組の主要マスクから、マスクｋｉをランダムに選ぶことにより規則的に変更されるものであり、
前記非線形処理に対応する前記回路の部分を実装する、主要マスクとテーブルのグループを更新できるようにする、動的再構成手段を含むことを特徴とする、請求項１０に記載の回路。
【請求項１３】
ＡＳＩＣ内に実装されることを特徴とする、請求項１〜６のいずれか一項に記載の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマスキングによって保護され、そして観測による攻撃の範囲を減らし保護の実装費用を低減するために、回路に固有のカスタマイズを利用した電子回路に関する。本発明はとりわけ、その暗号化回路が一つの例である、機密データを取り扱う回路を保護する分野に適用される。
【背景技術】
【０００２】
電子回路の働きは電力消費量、計算時間、又は電磁放射のような物理量を通じて、それらの動作中に観測され得る。
【０００３】
これらの物理量は、計算の構成および、回路内で取り扱われるデータの双方に依存する。処理されたデータに関する情報は、従って隠れたチャンネル又は補助チャンネルと呼ばれる前記量の観測により回路の外部に対して間接的に利用できる。
【０００４】
これらの物理量の消散は、特に暗号法によって保護された機密データを処理するシステムの安全性を危険にさらし得る。従って、機密データが対称暗号アルゴリズムを用いることによって保護される場合、保護のロバスト性は暗号鍵を秘密に保つ能力にある。物理量の消散は、第三者が適切な攻撃を実行することにより、前記鍵を得ること、およびその結果として機密データへのアクセスを可能にし得る。前記回路により消散された物理量の観測による攻撃は、通常単に観測による攻撃と形容される。これ以降、記述の中で、第三者向けではないデータにアクセスするために、観測法による攻撃を用いる第三者は攻撃者と呼ばれ、消散した物理量は漏れ又は隠れたチャンネルと呼ばれる。
【０００５】
今日、保護された回路により処理されたデータにアクセスできるようにする、強力な観測攻撃が存在する。
【０００６】
従って、Ｐ．Ｃ．Ｋｏｃｈｅｒ，  Ｊ．Ｊａｆｆｅ  ａｎｄ  Ｂ．Ｊｕｎ  ｅｎｔｉｔｌｅｄ  “Ｔｉｍｉｎｇ  Ａｔｔａｃｋ  ｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ”（表題：Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎの実装に対するタイミング攻撃），  ＲＳＡ，  ＤＳＳ  ａｎｄ  Ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ，  Ｐｒｏｃｅｅｄｉｎｇｓ（会議記録）ｏｆ  ＣＲＹＰＴＯ’９６，  ｖｏｌｕｍｅ  １１０９  ＬＮＣＳ，  ｐａｇｅｓ  １０４−１１３，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９６の論文において記述されているように、回路のデータ処理時間を表わす漏れの観測による攻撃が存在する。
【０００７】
回路の電力消費量の観測による攻撃もまた、例えば、ＤＰＡタイプの方法を使用することにより、攻撃者によって用いられることができ、これらのタイプの攻撃はＰ．Ｃ．Ｋｏｃｈｅｒ，  Ｊ．Ｊａｆｆｅ  ａｎｄ  Ｂ．Ｊｕｎ  ｅｎｔｉｔｌｅｄ  “Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ”（表題：微分電力解析），  Ｐｒｏｃｅｅｄｉｎｇｓ（会議記録）ｏｆ  ＣＲＹＰＴＯ’９９，  ｖｏｌｕｍｅ  １６６６  ＬＮＣＳ，  ｐａｇｅｓ  ３８８−３９７，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９９の論文において記述されている。
【０００８】
これらの方法は、暗号法による数学的水準において与えられた安全性を脅かすことを可能にする。
【０００９】
処理時間の、時間に関係するアルゴリズムのバランスをとることは、比較的簡単である。電力消費の波形の瞬間的な観測に対して回路を保護することは、より困難である。
【００１０】
隠れたチャンネルに関する攻撃に対して電子回路を保護するために、様々な対策方法がある。それらの特性はとりわけ、例えばその頭字語ＦＩＰＳが“Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ（連邦情報処理規格）”を表わす、アメリカのＦＩＰＳ規格１４０（Ａｍｅｒｉｃａｎ  ＦＩＰＳ  ｓｔａｎｄａｒｄ  １４０）のような、国際的な水準において定義される共通の基準によって、又は規格によって規定されている。
【００１１】
幾つかの対策は、攻撃が成功するために必要な測定値の数を単に増加させる。そのようなものは、例えば計算論理と並行して実行される、機能的でないノイズ発生器を用いた対策方法に関する場合である。例えば、ランダムに初期化された疑似乱数発生器ＰＲＮＧは、この目的に役立つことができる。この場合、攻撃者によって集められたあらゆる測定値は、隠れたチャンネルに重ねられるノイズにより妨害される。攻撃は、対策の技術に関して期待される信号対雑音比（Ｓ／Ｎ比）が有効であるように増幅するために、より多くの測定を実際に行なう必要があるという理由で、より複雑になる。
【００１２】
別の対策技術は、隠れたチャンネルをマスキングすることにより、観測による攻撃に対して保護し、保護されるべき処理の間、通常はマスクと呼ばれる確率変数又は疑似確率変数ｍを含む。前記変数は、計算結果が前記マスクに依存せず、それに頼る隠れたチャンネルを通じた情報の漏れに依存するような方法で用いられる。
【００１３】
従って、マスキングに基づく対策技術は、マスクの変数ｍを有する暗号化回路内を流れる極秘データを交互配置することにより実行され、この交互配置は、隠れたチャンネルが攻撃者によって解析されるのを防ぐために用いられる。極秘データ又は変数ｘは、共に完全に予測可能な複数の変数に対応し、秘密事項と共に非ゼロの相互情報を共有する。この技術は、極秘データｘの表現を、これ以降の記述の中で頭字語ＸＯＲによっても示される、排他的ＯＲタイプの演算を示す演算
【数１】
0005987250.tif 000002
を用いて鍵ｍを適用することにより、ｘのＶｅｒｎａｍ暗号化に対応する量
【数２】
0005987250.tif 000003
の方に修正することに帰する。
【００１４】
マスクは各回路に固有の識別特長によって条件付けられ、その場合、鍵の漏洩は前記マスクにより暗号化される。この固有の特徴は、回路の複製が漏洩をモデル化するために使用され得る、いわゆる「タイプ分け」（“ｃａｔａｌｏｇｕｉｎｇ”）攻撃を回避する。
【００１５】
ランダム・マスキングを含む通常の対策技術は、例えば、ＤＰＡタイプの攻撃又は、“Ｃｏｒｒｅｌａｔｉｏｎ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ”（「相関電力解析」）を表わすＣＰＡタイプの攻撃のような、一次の攻撃レジスターの予測に対する直接的攻撃に耐える。それらは、例えば回路内のデータ処理経路を倍増することにより実行される。
【００１６】
この倍増は、マスキングされない実装と比較して、回路の複雑さの大幅な増加を示唆する。
【００１７】
さらに、これらの対策は２以上の次数の攻撃に耐えにくい。一例として、二次攻撃は漏洩の分散量が感応変数ｘに依存するという事実を利用する。分散量の推定は、
【数３】
0005987250.tif 000004
もまた使われるときに、２つの場合における情報の漏洩を組み合わせるか、又はマスクとマスキングされたデータが同時に使われるとき、ペア
【数４】
0005987250.tif 000005
の組み合わされた分布を推定することにより行なわれる。分散量の推定に基づく二次の攻撃は、“ｚｅｒｏ−ｏｆｆｓｅｔ”（「ゼロ・オフセット」）攻撃と呼ばれ、それはＥ．Ｐｅｅｔｅｒｓ，  Ｆ．Ｓｔａｎｄａｅｒｔ，  Ｎ．Ｄｏｎｃｋｅｒｓ  ａｎｄ  Ｊ−Ｊ．Ｑｕｉｓｑｕａｒｔｅｒ  ｅｎｔｉｔｌｅｄ  Ｉｍｐｒｏｖｅｄ  Ｈｉｇｈｅｒ  Ｏｒｄｅｒ  Ｓｉｄｅ−Ｃｈａｎｎｅｌ  Ａｔｔａｃｋｓ  ｗｉｔｈ  ＦＰＧＡ  ｅｃｐｅｒｉｍｅｎｔｓ，（表題：ＦＰＧＡ実験を伴う改善された高次側チャンネル攻撃）Ｊｏｓｙｕｌａ  Ｒ．Ｒａｏ  ａｎｄ  Ｂｅｒｋ  Ｓｕｎａｒ  ｅｄｉｔｏｒｓ，  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ（暗号ハードウェアおよび組み込まれたシステム）−Ｐｒｏｃｅｅｄｉｎｇｓ（会議記録）ｏｆ  ＣＨＥＳ，  ｖｏｌｕｍｅ  ３６５９  ＬＮＣＳ，  ｐａｇｅｓ  ３０９−３２３，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００５の論文において記載されている。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明の一つの目的は、特に上述の欠点を緩和することである。
【課題を解決するための手段】
【００１９】
このために、本発明の主題はマスキングにより保護された暗号化回路であり、前記回路は少なくとも１つの鍵ｋｒｃを用いた２進ワードを暗号化する手段、前記ワードに線形処理および非線形処理を適用する手段、前記ワードをマスキングする手段を含む。２進ワードは、マスクｋｒｉを用いることによって非線形処理の上流で脱マスキングされ、そしてマスクｋｒ＋１ｉを用いることによって前記処理の下流でマスキングされ、マスクｋｒｉおよびｋｒ＋１ｉは回路の各実例に固有の、一組のマスクの部分を形成する。
【００２０】
本発明の１つの態様によれば、非線形処理、非線形処理の上流における脱マスキング、および線形処理の下流におけるマスキングは、ＲＯＭタイプのメモリ内に実装される。
【００２１】
マスクｋｒｉは例えば、ｋｒ＋１ｉ＝Ｐ（ｋｒｉ）およびｋ０ｉ＝ｋｉであるような、主要マスクｋｉから推定される二次マスクであり、関数Ｐ（ｘ）はｘの要素を置換するための関数に相当し、ＲＯＭメモリは不変のままである。
【００２２】
１つの実施形態において、関数Ｐ（ｘ）は環状置換であり、添え字ｒ＋１の二次マスクは、選ばれたビット数ｄのマスクｋｒｉを環状に置換することにより、添え字ｒの二次マスクから推測される。
【００２３】
別の実施形態において、主要マスクｋｉは長さＷであって、長さＳの整数の部分マスクからなり、二次マスクｋｒｉは前記部分マスクの置換により生成される。
【００２４】
二次マスクの部分マスクは、例えば次の式：
【数５】
0005987250.tif 000006
を用いて選ばれ、
ここで、
ｒはラウンド数、
ｉはランダムに引き出された４ビットの数、
Ｑは２つの連続する二次マスクｋｒｉとｋｒ＋１ｉの間の置換割合を制御するための整数、
Ｓはビットで表わされる部分マスクの長さ、
Ｗはビットで表わされる主要マスクの長さ、
ｍｏｄ（）は、ｍｏｄ（ａ，ｂ）=ａ  ｍｏｄｕｌｏ  ｂのような定義された関数であり、ａおよびｂは整数である。
【００２５】
本発明の１つの態様によれば、主要な暗号化マスクｋｉは、回路内に記憶された一組の主要マスクから、マスクｋｉをランダムに選ぶことにより規則的に変更される。
【００２６】
本発明の別の態様によれば、回路内に記憶された主要マスクのグループは、回路ごとに異なる。
【００２７】
主要マスクのグループは、構成要素に固有のマスクを生成する回路を用いて得られる。
【００２８】
１つの実施形態において、２つのマスクｋｒｉとｋｒ＋１ｉの間のハミング（Ｈａｍｍｉｎｇ）距離は、実質的にＳ／２に等しい。
【００２９】
マスクｋｉのハミング重量は、例えば実質的にＷ／２に等しい。
【００３０】
本発明の１つの態様によれば、非線形処理はＳボックスを用いて実行される。
【００３１】
非線形処理は、例えばレジスター内における結果のサンプリングの直前に、同一の組み合わせブロックにおいて線形処理の後に適用される。
【００３２】
回路は、例えばＦＰＧＡ内に実装される。
【００３３】
主要マスクのグループは、例えばＦＰＧＡ回路構成ファイルの変更を用いて得られる。
【００３４】
回路は、例えば非線形処理に対応する回路の部分を実装する、主要マスクとテーブルのグループを更新できるようにする、動的再構成手段を含む。
【００３５】
１つの実施形態において、回路はＡＳＩＣ内に実装される。
【００３６】
本発明は、特に非線形処理を取り扱う回路の部分に関して、マスキングによる保護の実行を通じ、回路の複雑さを大きくは増加させないという利点をとりわけ有する。本発明はまた、縮小された大きさの所定のマスクのグループを使うことを可能にする利点を有し、前記グループは、同じ生成の列から得られる複数の回路の間で、保護を固有にするように、回路ごとに異なることができる。
【００３７】
本発明のその他の特徴および利点は、制限されない例示として与えられる以下の記述から、および添付図を踏まえて明らかになるであろう。
【図面の簡単な説明】
【００３８】
【図１】マスキングにより保護されているＦｅｉｓｔｅｌ関数の例を示す。
【図２】非線形部分がマスキングされていない、マスキングにより保護された暗号化回路の一例を示す。
【図３】本発明に従って、マスキングにより保護されたＡＥＳアルゴリズムの一つの実施を例示する。
【図４】マスキングにより保護された暗号化回路の一例を示す。
【発明を実施するための形態】
【００３９】
図１は、マスキングにより保護されているＦｅｉｓｔｅｌ関数の例を示す。
【００４０】
当業者に知られているマスキングの原理は、感応変数ｘの表現を冗長表現へと変更することにある。この表現は少なくとも２つの部分を含み、１つの部分は
【数６】
0005987250.tif 000007
で示されるマスキングされた極秘データに対応し、もう１つの部分はマスクｍに対応する。それらが定義されるバイナリ・ガロア（Ｇａｌｏｉｓ）域における、これら２つの部分の合計は、次の特性を用いることによって変数ｘを検索できるようにする。
【数７】
0005987250.tif 000008
【００４１】
一例として、ＤＥＳ又はＡＥＳのようなブロック暗号化アルゴリズムにおいて、データのブロックを暗号化するための演算結果は、複数ラウンド（ｒｏｕｎｄｓ）の反復から導かれる。１つの「ラウンド」（“ｒｏｕｎｄ”）は、１つが線形でもう１つが非線形であり、置換による変換とも呼ばれる、少なくとも２タイプの変換が実行されている計算サイクルである。
【００４２】
線形変換の目的は、以下に示す所定の規則により、その入力において与えられる記号又は記号のグループを混合すること、およびそうして拡散を作り出すことである。
【００４３】
置換による変換は通常、Ｓボックスと呼ばれる置換テーブルを用いて行なわれ、暗号構造の線形性を壊すのを助ける。このタイプの変換を用いることにより、記号又は記号のグループは混乱を作り出すために、別の記号又は記号のグループによって置き換えられる。
【００４４】
従って、
【数８】
0005987250.tif 000009
部分のペアは
【数９】
0005987250.tif 000010
のペアへと変換され、関数ｒｏｕｎｄ（）はラウンドの関数演算を示し、一方でｍ’は新たなラウンドのマスクである。
【００４５】
各ラウンドの線形部分は単純に２倍にされる。前記部分の関数Ｌ（）の線形性は、
【数１０】
0005987250.tif 000011
を意味する。
【００４６】
この線形性は、それゆえ変換後の新たなマスクとして、マスクｍＬ＝Ｌ（ｍ）を用いることを可能にする。
【００４７】
他方で、非線形部分すなわちＳボックスにおけるマスキングの実行は、実装費用に関して大幅な増大を引き起こす。この変換を考慮に入れ、そしてＳ（ｘ）を
【数１１】
0005987250.tif 000012
から検索できるようにするマスクｍＮＬは、
【数１２】
0005987250.tif 000013
となるように決定されなければならない。
【００４８】
このために、ｍＮＬは関数Ｓ’（）を用いて、
【数１３】
0005987250.tif 000014
となるように表わされ得る。
【００４９】
関数Ｓ’（）は従って関数Ｓ（）の２倍と多い入力を有する。それゆえ、非線形関数Ｓ（）に対するマスキングの実行は、Ｓの複雑さの二乗を加えることに帰する。
【００５０】
暗号化回路におけるマスキングの実行を例示するため、図１はマスキングによって保護されたＦｅｉｓｔｅｌ関数の例を示す。このタイプの関数はとりわけ“Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｂｌｏｃｋ”（「データ暗号化ブロック」）を表わす、ＤＥＳタイプのブロック暗号化用に使われる。
【００５１】
極秘データｘのマスキングの実行は、前に説明したように２つの部分１００、１０１を必要とする。
【００５２】
第一の部分１００は
【数１４】
0005987250.tif 000015
の部分に対して行なわれる処理に対応し、第二の部分１０１はｍの部分に対して行なわれる処理に対応する。
【００５３】
極秘データの暗号化は、その後にＳ（）関数であるＳボックスと、線形関数Ｌ（）の適用とが続く、暗号化されるべきブロックへの鍵ｋの適用により行なわれる。
【００５４】
回路の２つの経路１００、１０１によって処理される複数のデジタル信号は、各経路に対してレジスター１０２、１０３を使用することにより同期化される。
【００５５】
第一の経路１００は、マスキングされた極秘データｘを含む部分、すなわち
【数１５】
0005987250.tif 000016
を処理する。暗号鍵ｋはＸＯＲゲート１０６を用いることにより適用される。その結果生じる信号は、
【数１６】
0005987250.tif 000017
に対応する。Ｓボックス１０７は次に、線形関数Ｌ１０８がそれに適用される信号
【数１７】
0005987250.tif 000018
を得ることを可能にする。
【００５６】
第二の経路１０１は、マスクｍに対応する部分を処理する。前に説明したように、マスキングされた信号に対する非線形関数Ｓ（）１０７の適用は、通常それが第二の部分の処理において考慮されることを意味する。従って、式（４）により定義される関数Ｓ’（）は、２つのＳボックスおよび２つのＸＯＲゲート１０９、１１２を用いて実行される１１３。その関数は入力として、第一の経路１００において、一方でマスクｍ１０５および、他方で暗号鍵ｋの適用の結果生じる信号
【数１８】
0005987250.tif 000019
をとる。適用Ｓ’（）から生じる信号１１６は、第１の経路１００の線形関数１０８を考慮に入れるように、それに線形関数Ｌ（）１１４を適用している。関数Ｓ’（）は、それが観測による攻撃に対して守られるように、ＲＯＭタイプのメモリ内に実装され得る。実際に、例えばそのようなメモリにおける電力消費量の変動を観測することは、とりわけ困難である。
【００５７】
そのような実装がマスキングによって保護され、関数Ｓ’（）につながれた活動の観測は、観測することが困難であるにしても、セキュリティ・ループホールは特に二次の攻撃に対して、それを脆弱にする。例えば、攻撃者は２つの注目すべき回路分岐点において、電力消費量を観測するための２つのゾンデを、例えば各経路の２つの入力レジスターの出力１１８、１１９に置くことが可能である。分散量の推定に基づく、すなわち“ｚｅｒｏ−ｏｆｆｓｅｔ”（「ゼロ・オフセット」）タイプの攻撃は、この場合に非常に有効である。
【００５８】
図２は本発明がそれに基づくマスキングによって保護される、暗号化回路の一例を示す。前述のような二次の攻撃を、有利なことに不可能にする如何なるマスキング経路も、もはや存在しないことに注意されたい。
【００５９】
前に説明したように、暗号化回路のマスキングされない部分がメモリ内に含まれるとき、前記メモリの内部の変数を攻撃することは困難である。言い換えれば、メモリは情報の漏洩に対して保護された、ブラックボックスとして考えられる。入力又は出力だけが攻撃を受けやすい。記述されている回路の目的の１つは、適度の複雑さのカスタマイズされたマスキング方法を用いて、メモリ内における実装を利用することである。
【００６０】
さらに、メモリの使用が適切でないとき、計算素子は、非線形部分を出来る限りレジスターの出力から遠くに置くようなやり方で命令され得る。一例として、相関攻撃はそれが回路の組み合わせ論理内において深く行なわれるとき、その分だけ、逆に効果が少ない。
【００６１】
図２の例は、“Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ”（「置換順列ネットワーク」）を表わすＳＰＮのネットワークの使用に基づく回路における、本発明の一実施例を示す。このタイプのネットワークは、Ｓｈａｎｎｏｎ  Ｓ−Ｐネットワークとも呼ばれる。この例において、２つのラウンドにおける暗号化が考えられる。ｋｒｉおよびｋｒｃで示される添え字ｒの２進ワードは、それぞれマスキング鍵および暗号鍵として用いられる。
【００６２】
一例として示されている回路は複数の段、すなわち第一ラウンドに相当する段である入力段、第二ラウンドに相当する段、および出力段に分解され得る。暗号化されるべきデータは入力として、例えば４×８ビットの部分語へと細分された３２ビットワードの形で、入力段に与えられる。入力のマスキングは、３２ビット長を有する鍵ｋ０ｉを用いることにより適用され、前記鍵は４×８ビットの部分マスクｋ０ｉ［０］、ｋ０ｉ［１］、ｋ０ｉ［２］、ｋ０ｉ［３］へと細分され、前記部分マスクは４つのＸＯＲゲート２００、２０１、２０２、２０３を用いることにより、４×８ビットの部分語に適用される。
【００６３】
第一ラウンドの入力において、レジスター２０４は入力として、鍵ｋ０ｉによるマスキングから生じる４×８ビットの部分語をとる。このレジスターは様々なバイナリフローの同期化を可能にし、１つのフローは１つの入力における８ビットの部分語に対応する。ｋ０ｃ［０］、ｋ０ｃ［１］、ｋ０ｃ［２］、ｋ０ｃ［３］と称される４×８ビットの部分鍵へと細分された第一の暗号鍵ｋ０ｃは、前記レジスター２０４の出力として与えられる、マスキングされた部分語に対して、４つのＸＯＲゲート２０６、２０６、２０７、２０８の所で適用される。鍵ｋ０ｃは第一の暗号化ラウンドと関連する。ｋ０ｉによりマスキングされ、ｋ０ｃにより暗号化されたデータの４つの部分語は、次に例えばＲＯＭタイプのメモリ内に実装される、４つの処理ブロック２０９、２１０、２１１、２１２によってそれぞれ処理される。ＲＯＭメモリ内における関数、とりわけ非線形関数の実装の複雑さは、入力の数と共に指数関数的に増加することに注意されたい。暗号アルゴリズムはこの制約を包含し、実装の複雑さを最小限にするため、暗号化されるべきワードを、非線形関数のレベルにおいて、より小さいサイズの部分語として処理する。
【００６４】
各処理ブロックの入力において、８ビットの部分語はＸＯＲゲート２１４を用いて４×８ビットの部分マスクｋ０ｉ［０］、ｋ０ｉ［１］、ｋ０ｉ［２］、ｋ０ｉ［３］を適用することにより、脱マスキングされる。次に非線形関数が適用され、Ｓボックス２１３はそれを実行するために使われることができる。
【００６５】
各処理ブロックの出力の上流では、極秘データが４つの部分マスクｋ１ｉ［０］、ｋ１ｉ［１］、ｋ１ｉ［２］、ｋ１ｉ［３］へと細分されたマスクｋ１ｉにより、第一ラウンド段の出力においてマスキングされるように、出力においてデータをマスキングするためにＸＯＲゲート２１５が用いられる。線形変換Ｌ０（）が、そのラウンドの出力において適用され、これは処理ブロック内のマスキングに対して考慮される必要がある。このために、マスクｋｉ１の変更されたマスクＬ０−１（ｋｉ１）を用いることにより、マスキングが行なわれる。これは４×８ビットの変更された部分マスクＬ０−１（ｋｉ１［０］）、Ｌ０−１（ｋｉ１［１］）、Ｌ０−１（ｋｉ１［２］）、Ｌ０−１（ｋｉ１［３］）へと細分され、変換Ｌ０−１（）は線形変換Ｌ０（）２１６の逆数に対応する。
【００６６】
処理ブロック２０９、２１０、２１１、２１２の出力において、変換Ｌ０（）は前記ブロックからの出力として与えられる２進ワードに適用される。第一の暗号化ラウンドの結果は、線形変換２１６の出力における２進部分語に対応し、前記部分語はマスクｋ１ｉによりマスキングされた極秘データに対応し、それゆえ観測による攻撃に対して保護される。
【００６７】
第二ラウンドの入力は、第一ラウンドの出力であり、第一ラウンドの線形変換２１６から生じる４×８ビットの部分語に対応する。これら４つの部分語は、様々なバイナリフローの同期化を可能にするレジスター２１７に対する入力として与えられる。
【００６８】
ｋ１ｃ［０］、ｋ１ｃ［１］、ｋ１ｃ［２］、ｋ１ｃ［３］と称される４×８ビットの部分鍵へと細分された、第二ラウンドに固有の第二暗号鍵ｋ１ｃは、レジスター２１７からの出力として与えられる、マスキングされた部分語に対して、４つのＸＯＲゲート２１８、２１９、２２０、２２１の所で適用される。
【００６９】
ｋ１ｉによりマスキングされ、ｋ１ｃにより暗号化されたデータの４つの部分語は、次に例えばＲＯＭタイプのメモリ内に実装される、４つの処理ブロック２２２、２２３、２２４、２２５によってそれぞれ処理される。各ブロックの入力において、データはＸＯＲゲートを用いて鍵ｋ１ｉを適用することにより脱マスキングされる。
【００７０】
次に非線形関数が適用され、それを実行するため各ブロックにおいてＳボックスが使用され得る。各処理ブロックの出力において、極秘データがマスクｋｉ２により第二ラウンド段の出力の所でマスキングされるように、ＸＯＲゲートが出力においてデータをマスキングするために使われる。このために、マスキングは変更されたマスクＬ１−１（ｋｉ２）を用いて行なわれ、変換Ｌ１−１（）は線形変換Ｌ１（）２２６の逆数に対応する。
【００７１】
変換Ｌ１（）は、処理ブロック２０９、２１０、２１１、２１２からの出力として与えられる、２進部分語に対して適用される。第二の暗号化ラウンドの結果は、線形変換２２６の出力における２進部分語に対応し、前記部分語はマスキングされた極秘データに対応し、それゆえ観測による攻撃に対して保護される。
【００７２】
このタイプの実装の利点は、ラウンド１に対するｋ０ｃによる暗号化とｋ０ｉによるマスキング、およびラウンド２に対するｋ１ｃによる暗号化とｋ１ｉによるマスキングを逆にできることである。
【００７３】
実装の複雑さを軽減し、常に同じＲＯＭメモリを使用するために、主要マスクの置換により１つの段から別の段へと使用される、実装マスクを推測することが提案される。例えば、ｋｉが主要マスクである場合、二次マスクｋ０ｉ、ｋ１ｉ、およびｋ２ｉが次のように主要マスクから推測され得る。
ｋ０ｉ＝ｋｉ
ｋ１ｉ＝Ｐ（ｋ０ｉ）
ｋ２ｉ＝Ｐ（ｋ１ｉ）
関数Ｐ（ｂｉｎ）は置換関数、例えば２進ワードｂｉｎの環状置換を表わす。さらに、主要マスクｋｉは主要マスクの所定のグループからランダムに引き出され得る。主要マスクに基づくマスク置換の一例は、図３を用いて明細書の中で与えられている。
【００７４】
主要マスクのグループの小さいサイズは、有利なことに構成要素に固有の、すなわち回路の各実例に固有のカスタマイズされたマスクの使用を可能にする。この識別特徴の適用は、漏洩が従って回路に対して固有なものとなり、もはや回路のタイプに対してではないため、「タイプ分け」（“ｃａｔａｌｏｇｕｉｎｇ”）型の攻撃範囲を減らすことを可能にする。もはや固有のマスク経路が存在しないため、例えば“ｚｅｒｏ−ｏｆｆｓｅｔ”（「ゼロ・オフセット」）タイプの攻撃のような、“ｈｉｇｈ−ｏｒｄｅｒ  ｄｉｆｆｅｒｅｎｔｉａｌ  ｐｏｗｅｒ  ａｎａｌｙｓｉｓ”「（高次微分電力解析）」の表現から由来する頭字語である、高次の攻撃ＨＯ−ＤＰＡに戻される。それゆえ、（マスキングされた変数、マスク）のペアをもはや考慮することは出来ない。
【００７５】
図３はマスキングにより保護されたＡＥＳアルゴリズムの実装を例示する。
【００７６】
ＡＥＳが“Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ”（「先進の暗号化標準」）を表わすＡＥＳブロック暗号化アルゴリズムは、とりわけバイナリ・メッセージを秘密に保つ点において強力である。保護されるべきメッセージは固定されたサイズの２進ワードにより処理され、前記ワードは１２８、１９２、又は２５６ビットになり得る。暗号鍵の長さはＷであり、Ｗは処理されるワードの長さに等しい。そのアルゴリズムは３つの処理局面を含み、各局面は１つ以上のラウンドからなる。第一の局面Ｒ１は初期化ラウンドに相当し、第二の局面Ｒ２は同じ構造を繰り返し使用するＮラウンドに相当し、第三の局面Ｒ３は最終ラウンドに相当する。ＡＥＳアルゴリズムに固有のこれら３つの局面の原理は、当業者に知られている。
【００７７】
本回路は例えばＦＰＧＡ又はＡＳＩＣ回路である。
【００７８】
本発明に従うマスキングによる保護は、隠れたチャンネルの観測による攻撃に対して３つの局面Ｒ１，Ｒ２、およびＲ３を実行する、ＡＥＳ暗号化回路を保護するために導入され得る。
【００７９】
乱数発生器３００は、ｎがマスキングのエントロピーを表わす、例えばｎビットの２進ワードｉを生成するために用いられる。明細書内にこれ以降記載される例において、ｎは４ビットに対して表わされる。
【００８０】
カウンターＣＴＲ３０１は、現在のラウンド数に対応する変数ｒを増加させる。
【００８１】
保護された回路は、暗号化されるべきワードの長さに等しい、又はこの例においては１２８ビットである長さの一定のマスクのグループを特に記憶できるようにする、メモリ領域３０３を含む。
【００８２】
ランダムに生成される数ｉ３００は、主要マスクｋｉを記憶されたマスクのグループ３０３から選択できるようにする。その結果、ｎ＝４、１６に対して、異なる主要マスクｋｉがランダムに選択され得る。
【００８３】
さらに、構成要素内に記憶された主要マスクは、差別化された保護を得るため、および「タイプ分けによる攻撃」を避けるため、１つの製品の構成要素は別の製品の構成要素に対して異なり得る。
【００８４】
長さＷの主要マスクｋｉは、長さＳの整数の部分マスクで構成され、ＷはＳの倍数である。例えば、長さＷ＝１２８ビットのマスクｋｉは、例えばＳ＝８ビットの１６個の部分マスクを含み、前記部分マスクはｋ０ｉ［０］、ｋ０ｉ［１］、．．．、ｋ０ｉ［１５］と称される。
【００８５】
例えば、主要マスクを構成する部分マスクを置換するために、二次マスクが主要マスクから生成され得る。従って、単一の主要マスクから、異なる二次マスクが各ラウンドに対して使用され得る。
【００８６】
攻撃に対するロバスト性を増すために、１つの構成要素と別の構成要素とに対して異なる主要マスクｋｉのグループが存在し、それは前記構成要素間で差別化されたマスキング保護を実行するためである。変数ｉはランダムであり、各暗号化の前に生成され得る。
【００８７】
一旦主要マスクｋｉが選ばれると、添え字ｒ＋１の二次マスクは、置換Ｐを用いて選ばれたビット数ｄのマスクｋｒｉを環状に置換することにより、添え字ｒの二次マスクから推測され、添え字０のマスクはｋ０ｉ＝ｋｉであるように初期化される。
【００８８】
ｄは例えばｄ＝Ｓビット、すなわち部分マスクに対応する長さであるように選ばれ得る。
【００８９】
整数の部分マスクにより置換された、添え字ｒのマスクを持つこともまた可能である。従って、マスクｋｒ＋１ｉが次の式：
【数１９】
0005987250.tif 000020
を用いて生成されることができ、
ここで、
ｒはラウンド数、
ｉは発生器３００によりランダムに引き出された４ビットの数、
Ｑは２つの連続する二次マスクｋｒｉとｋｒ＋１ｉとの間の、置換割合を確認できるようにする整数、
Ｓはビットで表わされる部分マークの長さ、
Ｗはビットで表わされるマスクｋｉの長さ、
ｍｏｄ（）は、ｍｏｄ（ａ，ｂ）＝ａ  ｍｏｄｕｌｏ  ｂであるように定義された関数で、ａおよびｂは整数である。
【００９０】
主要マスクは、例えば新たなｉの値をランダムに引くことにより、暗号化手順の間に変更され得る。
【００９１】
有利なことに、例えばｋｒｉとｋｒ＋１ｉとの間のハミング（Ｈａｍｍｉｎｇ）距離が、実質的にＳ／２に等しいと保証することにより、二次マスク同士が相互に無関係であるように、主要マスクｋｉを選択することによって、観察による攻撃に対する抵抗力は最適化され得る。
【００９２】
マスクの平均した釣り合いもまた保護の強化を可能にし、前記釣り合いは、二次マスクの、および従って主要マスクのハミング（Ｈａｍｍｉｎｇ）重量が、実質的にＷ／２に等しいと保証することによって得られる。
【００９３】
図の例において、暗号化されるべきワードは１２８ビットのワードであり、そしてレジスターのベース３０２における暗号化装置への入力として表わされている。処理されるべきワードは、次にＸＯＲゲート３０４を用いて、置換されない鍵ｋ０ｉ＝ｋｉの適用によりマスキングされる。マスキングの結果は、次に第二のＸＯＲゲート３０５を用いて、ｋ０ｃと称される長さＷの暗号鍵の適用により暗号化される。
【００９４】
ｋ０ｉによりマスキングされ、ｋ０ｃにより暗号化されたワードは、レジスター３０６内に記憶され、前記レジスターは第二の処理局面Ｒ２を行なう回路の部分の入力に対応し、前記局面は反復の暗号化ループに対応し、１回の反復は１つの処理ラウンドに対応する。レジスター３０６内に記憶されたワードは、１２８ビットを１６×８ビットの部分語に細分する、制御モジュール３０７により処理される。制御モジュールの別の機能は、ラウンドの開始時にデータを脱マスキングするために用いられるマスクｋｉを選択することであり、１つのラウンドは添え字ｒの各反復に対して適用される。１６×８ビットの部分語は非線形関数モジュール３０８を用いて処理され、前記モジュールは例えばＲＯＭタイプのメモリ内に実装される。これらのモジュールはその入力に与えられる部分語の脱マスキング３０９を行ない、例えばＳボックスを用いてそれらに非線形処理３１０を適用し、そして前記処理の結果にマスキング３１１を行なう。処理されるべき各８ビット部分語用の非線形関数モジュール３０８が存在する。その結果、図３の例に対する１６の非線形関数モジュールがある。
【００９５】
添え字ｒのラウンドに対して、これらのモジュールは入力の脱マスキング３０９用に部分マスクｋｒｉ［０］、ｋｒｉ［１］、．．．、ｋｒｉ［１５］を使用し、出力のマスキング３１１用に部分マスクｋｒ＋１ｉ［０］、ｋｒ＋１ｉ［１］、．．．、ｋｒ＋１ｉ［１５］を用いる。例えば、１６個のＳボックスは、部分マスクｋｒｉ［］によりマスキングされ、そして部分マスクｋｒ＋１ｉ［］により脱マスキングされるために、前もって計算され得る。
【００９６】
非線形処理モジュールの出力における１６の部分語は、次にその機能が特に前記ワードを１２８ビットのワードへと連結することである、第二の制御モジュール３１２に向けて送られる。
【００９７】
１２８ビットのワードは、次に２つの線形処理モジュールにより処理され、第一のモジュールは通常「行シフト」（“ｓｈｉｆｔ  ｒｏｗｓ”）の表現により記述される、行の混合３１３を実行し、第二の処理は通常「列シフト」の表現により記述される、列の混合３１４を実行する。これら２つの線形処理は関数Ｌｒ（）によってモデル化され得る。
【００９８】
鍵ｋｒｃを用いる暗号化は、ＸＯＲ関数３１５を用いて前記線形処理から生じる１２８ビットのワードに適用される。
【００９９】
１２８ビットのマスクｋｉｎｔｉの適用３１６は、同じＳボックスを１つのラウンドから別のラウンドにかけて使うことができるように、ｋｒｃによる暗号化から生じるワードに対して行なわれる。マスクｋｉｎｔｉの記憶３０３は次の式：
【数２０】
0005987250.tif 000021
を用いることにより、事前に計算した後に行なわれる。
【０１００】
従って事前に計算された１２８ビットのワードｋｉｎｔｉが、メモリ１６内に存在する。
【０１０１】
局面Ｒ２の処理はＮ回繰り返して実行される。第二の局面Ｒ２のＮラウンドが実行されたとき、最終局面Ｒ３は、線形の行混合処理３１３と線形の列混合処理３１４との間で抽出される、１２８ビットのワードに対して実行される。
【０１０２】
抽出されたワードに対してＸＯＲ関数３１７により適用される鍵ｋｆｉｎｃを用いた最後の暗号化の後で、最後の脱マスキングが、ＸＯＲ関数３１８を用いて１２８ビットのマスクｋｆｉｎｉを適用することにより行なわれる。
【０１０３】
１６個で１２８ビットのマスクｋｆｉｎｉは、次の式：
【数２１】
0005987250.tif 000022
を用いることにより事前に計算された後で、保護回路内への記憶３０３が行なわれる。ここで、関数Ｌ’ｒ−１（）は行混合処理３１３の逆数を表わす。
【０１０４】
最終行の最後、すなわち処理局面Ｒ３の最後に得られるワードは、ＡＥＳ暗号化の最終結果に対応する。得られた暗号化メッセージは、出力レジスター３１９内へ書き込まれる。
【０１０５】
図４は、その中に非線形処理がラウンドの最後に位置する、マスキングにより保護された暗号化回路の一例を示す。
【０１０６】
非線形処理に対応する回路の部分が、メモリ内ではなく論理ゲート内に実装されるとき、前記処理の上流での脱マスキング関数および下流でのマスキング関数は攻撃の対象になり得る。
【０１０７】
これらの攻撃に対して回路を保護するために、１つの解決策は１つのラウンドの非線形処理をロジック・コーンの最後、すなわち登録された結果のサンプリングの直前に置くことである。そのとき、計算はそれらの時間分散により広げられ、攻撃の有効性は限定される。
【０１０８】
図４の例は、この原理を実行する、マスキングにより保護された暗号化回路の一例を示す。
【０１０９】
この例示的回路は図２によって与えられているものと類似している。暗号化はＦｅｉｓｔｅｌ構造を用いて行なわれ、そして１つの入力段、ラウンド１およびラウンド２と呼ばれる２つのラウンド段、次に１つの出力段の実行のおかげで行なわれる。
【０１１０】
図２で一例として与えられた回路とは異なり、例えばＳボックスを用いて実行された非線形処理は、ロジック・コーンの最後に置かれる。線形処理は従って１つのラウンドの最初に置かれる。それゆえ、第一ラウンドに対応する段において、最初の拡散関数Ｌ１（）に対応する線形処理の適用４０１が行なわれる。第二ラウンドに対応するステージにおいて、拡散関数Ｌ０（）に対応する線形処理の適用４０２が行なわれる。
【０１１１】
最初の拡散関数の逆数Ｌ１−１（）の適用４００が入力段の出力において行われ、最後の拡散関数Ｌ１（）の適用４０３が出力段の入力において行われる。
【０１１２】
１つのラウンドの開始時の電力消費量をモデル化することは困難であるのに対して、それはラウンドの最後における環境条件により大きく依存させられる。
【図１】
0005987250.tif 000024
【図２】
0005987250.tif 000025
【図３】
0005987250.tif 000026
【図４】
0005987250.tif 000027