(57)【特許請求の範囲】
【請求項１】
ソフトウェア実行の間の動作の処理によってもたらされる消費電流の記録の統計的解析の阻止を構成する算術マスキングおよびブールマスキングを用いるステップと、
変換されるデータをサイズｋのニブルに分割するステップと、
ｋビットを超えるサイズを有する整数に対して前記算術マスキングから前記ブールマスキングへの変換を行なうステップと
を備えるＤＰＡ型の攻撃に対する対策方法であって、
変換ステップは、
ニブルを更新する関数と、
繰り上げを管理する関数と
の２つの関数を同時に有する１つの事前算出されたテーブルＴにより行なわれ、
前記テーブルＴは、モジュラー加算からニブルへのマスクされた繰り上がり数を加算しながら、ｋビットを超えるサイズを有する整数に対するｋビットニブルによって、算術マスキングからブールマスキングのｋビットニブルに切り替えるように構成されることを特徴とする対策方法。
【請求項２】
ｘ＝ｘ’＋ｒ  ｍｏｄ  ｍと、注目されるマスクされたデータｘ’により、保護されるデータｘを用いるステップであって、ｘのサイズはｍビットであり、整数ｒはランダムな整数であるステップと、
【数１】
0005823639.tif 000021
のように値Ａを取得するステップであって、ここで
【数２】
0005823639.tif 000022
は排他的論理和を意味するステップと
を備え、
マスクされたデータｘ’は、サイズｋのｎ個のニブルｘ’ｎ−１｜｜…｜｜ｘ’ｉ｜｜…｜｜ｘ’０に分割され、各入力ｘ’ｉに対して、テーブルＴは、変換されたニブルｘ’ｉおよびマスクされた繰り上がり数の値を出力する請求項１に記載の対策方法。
【請求項３】
各ニブルに対して、繰り上がり数値は、サイズｎ×ｋのランダムηの加算によりマスクされ、ここで、ｎはニブルの数である請求項１または２に記載の対策方法。
【請求項４】
マスクされた繰り上がり数は、算術マスキングからブールマスキングへのその変換よりも前にニブルに加算される請求項３に記載の対策方法。
【請求項５】
テーブルＴのサイズは
【数３】
0005823639.tif 000023
バイトであり、ここで、ｋは処理されたニブルのサイズであり、前記テーブルＴは、表１のように記載される請求項３および４に記載の対策方法。
【表１】
0005823639.tif 000024
【請求項６】
ｋビットを超えるサイズを有する整数に対する前記算術マスキングから前記ブールマスキングへの変換は、表２のステップを備える請求項５に記載の対策方法。
【表２】
0005823639.tif 000025
【請求項７】
テーブルＴのサイズは、
【数４】
0005823639.tif 000026
バイトであり、ここで、ｋは、処理されたニブルのサイズであり、前記テーブルＴは、表３のように記載される請求項３および４に記載の対策方法。
【表３】
0005823639.tif 000027
【請求項８】
Ｋビットを超えるサイズを有する整数に対する前記算術マスキングから前記ブールマスキングへの変換は、表４のステップを備える請求項７に記載の対策方法。
【表４】
0005823639.tif 000028
【請求項９】
繰り上がり数値は、排他的論理和によって、ランダムビットマスキングされる請求項１または２に記載の対策方法。
【請求項１０】
テーブルＴのサイズは、２ｋ＋１バイトであり、ここで、ｋは、処理されたニブルのサイズであり、前記テーブルＴは、表５のように記載される請求項２および９に記載の対策方法。
【表５】
0005823639.tif 000029
【請求項１１】
ｋビットを超えるサイズを有する整数に対する前記算術マスキングから前記ブールマスキングへの変換は、表６のステップを備える請求項１０に記載の対策方法。
【表６】
0005823639.tif 000030
【請求項１２】
請求項１〜１１のいずれか１項を用いることを特徴とする秘密鍵暗号化方法。
【請求項１３】
請求項１〜１１のいずれか１項に記載の前記対策方法を実行する手段を備える携帯型電子装置。
【請求項１４】
前記携帯型電子装置は、スマートカードまたは暗号トークンである請求項１３に記載の携帯型電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブール演算および算術演算を用いる暗号アルゴリズムへのサイドチャネル解析に対する対策方法、およびこのような対策方法を組み込む電子装置に関する。
【０００２】
本発明の方法は、サービスまたはデータに対するアクセスが厳密に制御されるアプリケーションに特に適している。
【背景技術】
【０００３】
Ｐａｕｌ・Ｋｏｃｈｅｒらは、ＤＰＡとして知られている「差分電力解析」の概念を１９９９年に公開した［１］。これらのＤＰＡ攻撃の原理は、アルゴリズムの実行の間に組み込み型装置によって生成される消費電力曲線を解析することによって組み込み型装置にて実現されるこのアルゴリズムの秘密キーに関する情報を引き出すという事実に基づく。初期目標は、データ暗号化規格（ＤＥＳ：Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、高度暗号化規格（ＡＥＳ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）候補などの対称暗号系、または公開鍵暗号方式であった。それらの攻撃の原理は、相関電力解析、電磁気解析などの他のいくつかの技術に及ぶ。物理的な漏洩に依存するこれらの攻撃は、すべて、さらに総称的にはサイドチャネル攻撃と呼ばれる。
【０００４】
それらの攻撃を阻止するために、すぐに対策が開発された。総称的な対策は、Ｃｈａｒｉら［２］によって、およびＬｏｕｉｓ・Ｇｏｕｂｉｎら［３］によって１９９９年に示された。それらの総称的な対策は、アルゴリズムの実行の間に処理されたすべての鍵依存中間変数の、いくつかの共有資源（ｓｈａｒｅ）への分割にある。
【０００５】
他のものに依存しないように考慮される、各共有資源の値は、ランダムに分配されて、秘密鍵の値に依存しない。そのため、共有資源の電力漏洩は、秘密情報を漏らさない。
【０００６】
攻撃を仕かけるために必要とされる電力曲線の数は、共有資源の数に伴って指数関数的に増大することが、２００１年に、Ｃｈａｒｉら［２］によって開示された。２つの共有資源だけが用いられる場合、方法は、すべての中間データをランダムにマスキングするようになる。この場合、インプリメンテーションが一次ＤＰＡから保護されると言われている。
【０００７】
Ｃｈａｒｉらによって指摘されるように、それらの一般法は、概して、要とされるメモリの量または計算時間を著しく増加する。さらに、中間ステップでさえもＤＰＡによって攻撃され得るので、変数の分割は、アルゴリズムのステップ毎に行なわれなければならないことが実証された。これは、特にスマートカードなどの組み込みシステムための、増設メモリおよび計算時間の問題をさらに重大にする。
【０００８】
ブールおよび算術演算を組み合わせるアルゴリズムのために、ブールマスキングおよび演算マスキングの２つの異なる種類のマスキングを用いられなければならない。多くのアルゴリズムは、この型、すなわちＳＨＡ−１ファミリーのハッシュ関数、ＳＨＡ−３コンペティションの２つのファイナリスト（ＢｌａｋｅおよびＳｋｅｉｎ）、ｅＳＴＲＥＡＭストリーム暗号コンペティションのすべてのソフトウェア指向ファイナリスト、Ｓｎｏｗ２．０およびＳｎｏｗ３Ｇのような他のストリーム暗号、ブロック暗号ＩＤＥＡなどを有する。
【０００９】
このような暗号のＤＰＡに保護されたインプリメンテーションのセキュリティは、算術マスキングとブールマスキングとの間の両方向の変換のセキュリティに強く依存する。
【００１０】
算術マスキングとブールマスキングとの間の両方向の安全な変換アルゴリズムを開示した文献米国特許第７３３４１３３号明細書が知られている。但し、この文献内に提案された算術からブールへの変換は、あまり効率的ではなく、いくつかのインプリメンテーションのボトルネックになり得る。
【００１１】
算術とブールマスキングとの間の変換アルゴリズムが、Ｃｏｒｏｎら［５］によって２００３年におよび文献欧州特許出願公開第１３４８２７５号明細書において開示されている。この方法は、データのサイズがｋより大きい場合の２つの事前算出されたテーブルの使用に基づき、ここで、ｋは処理されたデータのサイズである。各テーブルのサイズは、２ｋである。ｋの値は、典型的には４である。この場合、３２ビットの変数は、８つの４ビットニブルに分割され、そして、アルゴリズムは、８ステップにおいて作動し、各ステップは、３２ビットデータのうちの１ニブルを処理する。それらのテーブルの１つは、ニブルを算術マスキングからブールマスキングに変換する。他のテーブルは、モジュラー加算からの繰り上がり数を管理する。
【００１２】
第２の値のマスク表現（ｍａｓｋｅｄ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）の秘密が保持されるために第１の値のマスク表現からの遷移に依存する方法を開示する文献国際公開第２００５／０２４６０６号パンフレットが知られている。この遷移は、２つの事前算出されたテーブルＴおよびＣを使用することによって成される。
【００１３】
また、文献国際公開第２００５／０２４６０６号パンフレットによれば、Ｌ−ビットデータの各変換ために、ランダムなビットｚが生成されて、値Ｚ＝“ｚ｜｜ｚ｜｜…｜｜ｚ”が操作される。Ｚの値は、その結果、０ｘ００．．０または０ｘＦＦ．．ＦＦである。両方の値の間のハミング重みが最大の場合、値Ｚは、場合によってＳＰＡの技術を用いてスパイ行為をされ得る。ｚの値が発見されると、インプリメンテーションは、もはや、ＳＰＡ／ＤＰＡに対して安全ではない。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国特許第７３３４１３３号明細書
【特許文献２】欧州特許出願公開第１３４８２７５号明細書
【特許文献３】国際公開第２００５／０２４６０６号
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、事前算出された１つのテーブルのみを用いて、ＤＰＡ攻撃に対してフールプルーフであると判明した代替的な変換「算術からブール」アルゴリズムを提案することである。
【課題を解決するための手段】
【００１６】
本発明は、プロセッサおよびメモリを備える装置内部の機密情報を安全にかつ保護する方法、およびさらなるメモリ内に格納された暗号アルゴリズムに関わる。暗号アルゴリズムは、装置によって取り扱われる機密情報を保護するためにインプリメントされる。ブールマスキングおよび演算マスキングは、機密情報を保護するために利用される。
【００１７】
本発明は、広義には、ＤＰＡ型の攻撃に対する対策方法として定義され、前記方法は、
ソフトウェア実行の間の動作の処理によってもたらされる消費電流の記録の統計的解析の阻止を構成する算術マスキングおよびブールマスキングを用いるステップと、
変換されるデータをサイズｋのニブルに分割するステップと、
ｋビットを超えるサイズを有する整数に対して前記算術マスキングから前記ブールマスキングへの変換を実行するステップとを備え、
変換ステップは、
ニブルを更新する関数と、
繰り上げを管理する関数との２つの関数を同時に有する１つの事前算出されたテーブルＴにより行なわれ、
前記テーブルＴは、モジュラー加算からニブルへのマスクされた繰り上がり数を加算しながら、ｋビットを超えるサイズを有する整数に対するｋビットニブルによって、算術マスキングからブールマスキングのｋビットニブルに切り替えるように構成されることを特徴とする方法である。
【００１８】
本発明による方法は、別々にまたは組み合わせて考慮された付加的な特徴、とりわけ以下の特徴を含んでもよい。
【００１９】
実施形態において、前記対策方法は、
ｘ＝ｘ’＋ｒ  ｍｏｄ  ｍと、注目されるマスクされたデータｘ’により、保護されるデータｘを用いるステップであって、ｘのサイズはｍビットであり、整数ｒはランダムな整数であるステップと、
【００２０】
【数１】
0005823639.tif 000002
のように値Ａを取得するステップであって、ここで
【００２１】
【数２】
0005823639.tif 000003
は排他的論理和を意味するステップとを備え、
マスクされたデータｘ’は、サイズｋのｎ個のニブルｘ’ｎ−１｜｜…｜｜ｘ’ｉ｜｜…｜｜ｘ’０に分割され、各入力ｘ’ｉに対して、テーブルＴは、変換されたニブルｘ’ｉおよびマスクされた繰り上がり数の値を出力する。
【００２２】
別の実施形態において、各ニブルに対して、繰り上がり数値は、サイズｎ×ｋのランダムηの加算によりマスクされ、ここで、ｎはニブルの数である。
【００２３】
別の実施形態において、マスクされた繰り上がり数は、算術マスキングからブールマスキングへのその変換よりも前にニブルに加算される。
【００２４】
別の実施形態において、繰り上がり数値は、ランダムなビットをもつ排他的論理和によってマスクされる。
【００２５】
本発明は、また、本発明の対策方法を実行する手段を備える携帯型電子装置に関する。前記携帯型電子装置は、スマートカードまたは暗号トークンであり得る。
【００２６】
本発明は、また、本発明の対策方法を用いる秘密鍵暗号化方法に関する。
【００２７】
文献国際公開第２００５／０２４６０６号パンフレットによる、事前算出されたテーブルＴおよびＣが用いられる。メモリ内の単純なフィールド（ｓｉｍｐｌｅ  ｆｉｅｌｄ）においてＴおよびＣをセットアップすることができたとしても、２つのテーブルは、事前算出のステップの間に別々に生成されなければならない。一方、本発明においては、１つのテーブルのみが、事前算出のステップの間に直接生成され、これはより高速である。
文献一覧
以下の刊行物に対する参照は、従来技術のさらなる充分な理解を提供することになる。
【００２８】
［１］Ｐａｕｌ  Ｋｏｃｈｅｒ，  Ｊｏｓｈｕａ  Ｊａｆｆｅ  ａｎｄ  Ｂｅｎｊａｍｉｎ  Ｊｕｎ，  “Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ，”  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−ＣＲＹＰＴＯ  ’９９，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９９，  ｐｐ．  ３８８−３９７
［２］Ｓｕｒｅｓｈ  Ｃｈａｒｉ，  Ｃｈａｒａｎｔｊｉｔ  Ｓ．  Ｊｕｔｌａ，  Ｊｏｓｙｕｌａ  Ｒ．  Ｒａｏ  ａｎｄ  Ｐａｎｋａｊ  Ｒｏｈａｔｇｉ，  “Ｔｏｗａｒｄｓ  Ｓｏｕｎｄ  Ａｐｐｒｏａｃｈｅｓ  ｔｏ  Ｃｏｕｎｔｅｒａｃｔ  Ｐｏｗｅｒ−Ａｎａｌｙｓｉｓ  Ａｔｔａｃｋｓ，“  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−ＣＲＹＰＴＯ  ’９９，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９９，  ｐｐ．  ３９８−４１２
［３］Ｌｏｕｉｓ  Ｇｏｕｂｉｎ  ａｎｄ  Ｊａｃｑｕｅｓ  Ｐａｔａｒｉｎ，  “ＤＥＳ  ａｎｄ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ−Ｔｈｅ  Ｄｕｐｌｉｃａｔｉｏｎ  Ｍｅｔｈｏｄ，“  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  Ａｕｇｕｓｔ  １９９９，  ｐｐ．  １５８−１７２
［４］Ｌｏｕｉｓ  Ｇｏｕｂｉｎ  “Ａ  Ｓｏｕｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｗｉｔｃｈｉｎｇ  ｂｅｔｗｅｅｎ  Ｂｏｏｌｅａｎ  ａｎｄ  Ａｒｉｔｈｍｅｔｉｃ  Ｍａｓｋｉｎｇ”  ＣＨＥＳ’０１  Ｓｐｒｉｎｇｅｒ  ＬＮＣＳ  ２１６２／２００１，  ｐｐ．  ３−１５
［５］Ｊｅａｎ−Ｓｅｂａｓｔｉｅｎ  Ｃｏｒｏｎ  ａｎｄ  Ａｌｅｘｅｉ  Ｔｃｈｕｌｋｉｎｅ  “Ａ  Ｎｅｗ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｓｗｉｔｃｈｉｎｇ  ｆｒｏｍ  Ａｒｉｔｈｍｅｔｉｃ  ｔｏ  Ｂｏｏｌｅａｎ  Ｍａｓｋｉｎｇ“，  ＣＨＥＳ’０３，  Ｓｐｒｉｎｇｅｒ  ＬＮＣＳ  ２７７９／２００３，  ｐｐ．  ８９−９７
【発明を実施するための形態】
【００２９】
「差分電力解析」（ＤＰＡ）は、スマートカードや他の暗号装置内で動作する、トランジスタ論理ゲートおよびソフトウェアの特徴的挙動を探索し、および同一の鍵による多くの計算を通じて測定された消費電力の記録の統計的解析を実行することによって、（例えば、スマートカードまたは暗号トークン内に含まれる）秘密鍵についての情報を取得することを可能にする攻撃である。
【００３０】
この攻撃は、各命令の個別の消費電力、または、やがてはこれらの命令の各々の位置の認識を必要としない。攻撃者がアルゴリズムおよび対応する消費曲線の入力または出力を知るやいなや、同一の方法で正確に適用される。それは、アルゴリズムの計算の間に現われる中間変数があるという以下の基礎となる前提、すなわち、数ビットの（実際には３２ビット未満の）鍵の認識がこの変数に対して同一の中間値を与える２つの入力（またはそれぞれ２つの出力）の確率を決定することを可能にすることに専ら基づく。
【００３１】
本発明は、ＤＰＡが基礎を置く上記の前提がもはや立証されないように（すなわち、中間変数は、秘密鍵のサブセットの認識に常に依存しないように）アルゴリズムをプログラミングする「マスキング」方法の原理を用いる。
【００３２】
ブール関数と算術関数とを組み合わせるアルゴリズムに対して、以下の２種類のマスキングが用いられる。
【００３３】
ブールマスキング：
【００３４】
【数３】
0005823639.tif 000004
ここで、
【００３５】
【数４】
0005823639.tif 000005
は排他的論理和を意味する。
【００３６】
算術マスキング：ｘ’＝ｘ−ｒ  ｍｏｄ  ２ｋである。
【００３７】
ここで、ｘは、中間データであり、ｒは、マスクされた値ｘ’を取得するのに使用されるランダム値であり、これらの３つのデータのサイズは、ｋである。
【００３８】
本発明の目的は、マスクされるデータから中間変数が無相関化されることを確実にする間、算術マスキングからブールマスキングに切り替えるための効果的アルゴリズムを見出すことであり、それはＤＰＡへの抵抗力を保証する。
【００３９】
本発明の方法は、暗号アルゴリズムの事前計算段階の間に生成された１つの事前算出されたテーブルの使用に基づく。変換されるデータは、サイズｋのニブルに分割され、ここで、ｋは、サイズ４、５、６、７、８を実際上有する。例えば、ｋ＝４であれば、３２ビットの変数は、８つの４ビットのニブルに分割され、そして、アルゴリズムは、８つのステップにおいて作動し、各ステップは、３２ビットデータのうちの１ニブルを処理する。各ニブルは、算術的にマスクされたデータの一部である。２つのテーブルの代わりに１つのテーブルを有するために、テーブルは、２つの以下の関数を同時に有しなければならない。
【００４０】
新しいマスキングモードにおけるニブルの更新。実際は、各ニブルは、算術的にマスクされたデータの一部であり、ニブルｘｉ＝ｓ−ｒ  ｍｏｄ  ２ｋであり、ここで、ｓは、対応する秘密データのニブルであり、ｒは、対応するマスクのニブルである。したがって、テーブルは、ｘｉを値
【００４１】
【数５】
0005823639.tif 000006
に変換するために用いられ、ここで、
【００４２】
【数６】
0005823639.tif 000007
は、排他的論理和である。
【００４３】
繰り上がり数の管理。マスクされたデータｘをｎ個のニブルｘｎ−１｜｜…｜｜ｘｉ｜｜…｜｜ｘ０に分割されたものと見なそう。ここで｜｜は、連結を意味する。各変換されたニブルｘｉ’は、
【００４４】
【数７】
0005823639.tif 000008
に等しいが、但し、値ｘｉ＝ｘ’ｉ＋ｒは、場合によっては２ｋより大きくなり得る。この場合、繰り上がり数は、その変換よりも前に、ニブルｘｉ＋１に加算されなければならない。繰り上がり数値が秘密データから無相関化されないとき、繰り上がり数値は、マスク化されなければならない。
【００４５】
２つのテーブルの代わりに１つのテーブルを使用することは、性能の観点から明らかに有利である。実際は、第２のテーブルの生成時間、およびこの第２のテーブルに対する呼び出し時間は、変換段階の間に回避される。２つのテーブルの代わりに１つのテーブルを事前算出しなければならないために、ニブルの更新および繰り上がり数の管理を同時に考慮に入れるように単一のテーブルを可能にする新しい技術を用いることが必要である。これらの技術は、本発明の第１の実施形態および第２の実施形態において詳述される。
【００４６】
第１の実施形態：３２ビットのプロセッサ：
第１の実施形態において、本発明の方法は、３２ビットのアーキテクチャに特に適している。算術マスキングからブールマスキングに切り替える本方法は、１つの事前算出されたテーブルを用い、アルゴリズムの中間変数のほとんどサイズのデータを操作する。このサイズが主として３２ビットであるとき、この方法は、その結果、３２ビットのアーキテクチャ上の以下のアルゴリズムのインプリメンテーションに特に適している。すなわち、ＳＨＡ−１ファミリーのハッシュ関数、ＳＨＡ−３コンペティションのファイナリストＢｌａｋｅ、ｅＳＴＲＥＡＭストリーム暗号コンペティションのすべてのソフトウェア指向ファイナリスト、Ｓｎｏｗ２．０およびＳｎｏｗ３Ｇのような他のストリーム暗号などである。
【００４７】
この方法の原理は、サイズ
【００４８】
【数８】
0005823639.tif 000009
【００４９】
バイトの１つの事前算出されたテーブルＴに依存し、ここで、ｋは処理されたニブルのサイズである。
【００５０】
テーブルＴは、表１のように記載される。
【００５１】
【表１】
0005823639.tif 000010
【００５２】
本発明のテーブルＴは、モジュラー加算からの繰り上がり数を管理しながらニブルを算術マスキングからブールマスキングに変換する。
【００５３】
マスクされたデータｘ’がｎ個のニブルｘ’ｎ−１｜｜…｜｜ｘ’ｉ｜｜…｜｜ｘ’０に分割されると考えよう。ここで、各入力ｘ’ｉに対して、安全な方法で繰り上がり数を管理するために、テーブルＴは、サイズｎ×ｋのランダムηの加算によってマスクされた繰り上がり数値を出力する。
【００５４】
変換段階は、表２のアルゴリズムによって記載されることができる。
【００５５】
【表２】
0005823639.tif 000011
【００５６】
ここで、繰り上がり数は、テーブルＴによって直接考慮に入れることができる。なぜなら、Ｔの出力が処理されたデータ（ｎ・ｋビット）と同一のサイズが有するとき、値Ａ＋ｒがＴの事前計算の間に２ｋを超えるのであれば、（ｋ＋１）番目のＴ［Ａ］の最下位ビットが、その後、ηの加算によってマスクされる前に自動的に１に設定されるからである。変換アルゴリズムの間に、ニブルＡｌが置換されるときと同時に、繰り上がり数は、電流の変数（ライン５）に加算される。
【００５７】
テーブルＴの出力が繰り上がり数の値に依存しないので、各処理された中間変数は、秘密データから完全に無相関化される。実際、ランダム値ηは、変数Ａと同一のサイズを有し、繰り上がり数の値に対するＴの出力のあらゆる依存性が回避される。したがって、この第１の実施形態に開示された方法は、一次ＤＰＡに対する抵抗力がある。
【００５８】
この第１の実施形態に提案された方法は、また、（ブロック暗号ＩＤＥＡのような）１６ビットのデータを操作するアルゴリズムをもつ１６ビットプロセッサにも適する。
【００５９】
第１の実施形態の変形において、変換アルゴリズムの実行時間は、いくつかの命令をループの外に移動させることによって、低減され得る。
【００６０】
ある例において、以下のそれらの３つの命令は、セキュリティを低下させずに、ループから除外され得る。
・  ランダムなｒ（ライン３）による算術マスキングは、ループよりも前に実行され得る。
・  値η（ライン６）の減算は、ループよりも前に実行され得る。
・  ランダムなｒ（ライン８）によるブールアンマスキングは、ループの後に実行され得る。
【００６１】
実際には、これらの命令がループの外に移動される場合において、１つを除くＡのすべてのニブルは、アルゴリズムの実行の間に初期マスクＲによりマスクされたままであり、永続するニブル（ｌａｓｔｉｎｇ  ｎｉｂｂｌｅ）は、ランダム値ｒによってマスキングされる。すべての中間変数は、その後、実行を通じてランダムに分散される。
【００６２】
これらの命令をループの外に移動させるために、事前計算ステップの間にいくつかの必要以上の計算を行なわなければならない。方法の改良版は、その結果、以下の通りである。
【００６３】
テーブルＴは、表３のように記載されることができる。
【００６４】
【表３】
0005823639.tif 000012
【００６５】
変換段階は、表４のアルゴリズムによって記載されることができる。
【００６６】
【表４】
0005823639.tif 000013
【００６７】
第２の実施形態：１６ビットのプロセッサまたは８ビットのプロセッサ：
１６ビットまたは８ビットのプロセッサに対する、第１の実施形態に提案された方法の弱点は、操作されたデータのサイズがアルゴリズムの中間データのサイズと同一であるという事実である。この第１の実施形態で理解されるように、中間データに対する典型的なサイズは、３２ビットである。そして変換アルゴリズムの時間は、その後、１６ビットのプロセッサに対しては２を乗算し、８ビットのプロセッサに対しては４を乗算したものである。この第２の実施形態においては、レジスタが３２未満のサイズを有するプロセッサにさらに適した方法が提案される。
【００６８】
原理：
既知の原理は、アルゴリズム実行の間にマスクされたデータを保持する事前算出されたテーブルを用いることによって、マスク情報をメモリアドレスとして扱うことである。アイディアは、マスクされた１ビットの情報をメモリアドレス情報として扱うことである。繰り上げビットが１ビットの情報であるとき、この第２の実施形態の目的は、繰り上がり数に対してこの原理を適用することである。
【００６９】
第１の実施形態に提案されたように算術的にマスクされる代わりに、繰り上がり数がブールマスクによって保護されるものと仮定しよう。
【００７０】
保護は、そこで、排他的論理和によってもしくはランダムビットを繰り上がり数値に加算することになる。
【００７１】
このようなランダムビットをρと呼べば、２エントリテーブルＣは、表５の方法によって事前算出されたステップの間に生成され得る。
【００７２】
【表５】
0005823639.tif 000014
【００７３】
ブールのマスクρによって保護された繰り上がり数ｃが、変換アルゴリズムの間に操作されると仮定しよう。したがって、マスクされた値
【００７４】
【数９】
0005823639.tif 000015
は、繰り上がり数ｃを値Ａｈに加算するための表６の安全な方法で用いられ得る。
【００７５】
【表６】
0005823639.tif 000016
【００７６】
ρの値が何であっても、値Ｃ［ｂ］は、ｍｏｄ  ２ｎ．ｋで、γに加算された繰り上がり数ｃに等しい。さらに、処理された中間変数のすべては、ランダムに分散され、その後、それらはすべて、繰り上がり数の値から完全に無相関化され、その結果、この第２の実施形態に開示された方法は、一次ＤＰＡに対して抵抗力がある。
【００７７】
テーブルＴの生成：
この実施形態において、先に記載された原理に基づいて算術マスキングからブールマスキングに切り替えるためのアルゴリズムが提案される。第１の実施形態に関しては、アイディアは、時間性能を最大化するために１つの事前算出されたテーブルのみを用いることである。それに対して、テーブルＴの出力は、新しいマスキングされたニブルおよび繰り上げビットに関する情報を含んでいなければならない。
【００７８】
この第２の実施形態において、事前算出されたテーブルＴには以下の特性がある。
・  繰り上がり数値は、排他的論理和によって、ランダムビットでマスキングされる、
・  変換段階の間に、テーブルにおけるアドレスの選択は、ニブルの値に依存するだけでなく、前の繰り上がり数の値にも依存する。これは、Ｔが２ｋ＋１のサイズを有していることを意味している。
【００７９】
【表７】
0005823639.tif 000017
【００８０】
変換ステップは、その結果、表８の通りである。
【００８１】
【表８】
0005823639.tif 000018
【００８２】
再びここで、すべての処理された変数は、ランダムに分配され、一次ＤＰＡに対するアルゴリズムの抵抗力を誘導する。
【００８３】
ｋ＝８であれば、変換段階の時間が最適化される。但し、この場合、テーブルの出力データのサイズは、ｋ＋１＝９ビットである。これは、この格納されるデータが２バイトを必要とし、ＲＡＭ内のテーブルのサイズは、その結果１０２４バイトであることを意味する。このメモリの量は、昨今、多くの組み込みコンポーネント上で可能であるが、いくつかの場合においてはまだ大きすぎる可能性もある。
【００８４】
秘密データ
【００８５】
【数１０】
0005823639.tif 000019
のブールマスキングおよび同一のデータｘ’ａ＝ｘ−ｒ  ｍｏｄ  ２ｋの算術マスキングが、常に、同一の最下位ビットを有することに注意すると、メモリの量を半分に低減することが可能である。
したがって、
【００８６】
【数１１】
0005823639.tif 000020
の最下位ビットを格納することは必要ではない。結果として生じるアルゴリズムは、その結果、多少遅いが、但し、必要とされるメモリ量は、５１２バイトに低減される。