(57)【要約】【課題】暗号化法を実行して、コンポーネントの電力消費から又は電磁放射から、暗号化キーに関する情報を取得する物理的攻撃からコンポーネントを守る。【解決手段】本発明は入力とシークレットキーから出力を得るために連続的に実行される計算のＮサイクルを含むもので、入力をマスクし、計算サイクルにより使用され生成された各データをマスクするための第１マスキングレベルを生成するステップと、各計算サイクル内で操作されるデータをマスクするための第２マスキングレベルを生成するステップとからなる。【選択図】図３ａ
2008295108.tif 000002
【特許請求の範囲】
【請求項１】
連続的に実行されるＮ計算ラウンドを含み、入力キーとシークレットキーから出力データを生成するための暗号化計算方法であって、
前記暗号化計算方法は、次のステージを有することを特徴とする暗号化計算方法。
―入力データ（ＭＥ）をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第１マスキングステージと、
―各計算ラウンド内で演算されたデータをマスクする第２マスキングステージ。
【請求項２】
与えられたシークレットキー（Ｋ０）と入力データ（ＭＥ）とから暗号化データ（ＭＳ）を計算する暗号化計算方法であって、前記暗号化計算方法は、Ｎラウンドの計算を行い、
―入力データ（ＭＥ）をマスクし、計算ラウンドで計算により使用・生成された各中間データがマスクされる第１マスキングステージと、
―各計算ラウンド内で演算されるデータをマスクする第２マスキングステージであって、
前記第２マスキングステージは次のステージを有している暗号化計算方法。
―第ｉランキング計算ラウンド（ｉ＝１乃至Ｎ）に先行するステップの結果をマスクする第２マスキングステップＥＴ３と、
―非線形演算子ＳＢＯＸ’を使って、マスクされた結果を置換する置換ステップＥＴ６と、
―ステップＥＴ６の結果をアンマスキングする第２アンマスキングステップＥＴ９とを、含む第２マスキングステージ（但しステップＥＴ３，ＥＴ６，ＥＴ９は第２マスキングステージを形成する）。
【請求項３】
―第１マスキングステップ（ET01）において、第１マスキングパラメータ（Ｘ１）が入力データ（ＭＥ）にミックスされ、第１計算ラウンドで、マスクされた入力データ（ＭＥ’；Ｌ’０，Ｒ’０）を算出し、前記ミキシングは第１線形ミキシング演算子（＆）を使って行い、
―第１アンマスキングステップ（ET10）において、第１マスキングパラメータ（Ｘ１）により第Ｎ計算ラウンドの結果に対して生成される寄与が、第Ｎ計算ラウンドの結果から除去される、ことを特徴とする請求項３に記載の暗号化計算方法。
【請求項４】
―第１計算ラウンドの前に実行され、以下の関係を検証する非線形演算子ＳＢＯＸ’を生成するための、第３マスキングステップ（ＥＴ０３）を有する請求項２又は３記載の暗号化計算方法。
ＳＢＯＸ’［Ａ＠Ｘ３］＝ＳＢＯＸ［Ａ］＃Ｘ２、
但し、Ｘ２は第２マスキングパラメータ、
Ｘ３は、第３マスキングパラメータ、
ＳＢＯＸは、既知の非線形演算子、
＃は、第２ミキシング演算子、
＠は、第３ミキシング演算子である。
【請求項５】
第ｉ計算ラウンドのステップＥＴ９において、前記マスクされた非線形演算子ＳＢＯＸ’により生成された結果から、第２マスキングパラメータ（Ｘ０）により生成された寄与を除去することを特徴とする、請求項４記載の暗号化計算方法。
【請求項６】
第ｉ計算ラウンドは、以下のステップを有し、以下の順序で実行することを特徴とする請求項２乃至５に記載の暗号化計算方法。
―ステップＥＴ２：先行する計算ラウンドにより前もって計算されたマスクされた中間データの右側部（Ｒ’i-1）の拡張、
―ステップＥＴ３：第３マスキング演算子（＠）を使って、第３マスキングパラメータ（Ｘ３）で先行するステップＥＴ２の結果をマスクする。
―ステップＥＴ４：第１マスキングパラメータにより生成された寄与を先行するＥＴ３ステップの結果から除去する。
―ステップＥＴ５：前のステップ（ＥＴ４）の結果に、アップデートされた導出キー（Ｍｉ）でミキシングする。
―ステップＥＴ６：先行するステップ（ＥＴ５）の結果を、マスクされた非線形演算子ＳＢＯＸ’で置換し、第２マスキングパラメータ（Ｘ２）によりマスクされた結果を算出する。
―ステップＥＴ７：先行するステップ（ＥＴ６）の結果の順序換え。
―ステップＥＴ８：ＸＯＲ演算を使って、先行するＥＴ７の結果に、前に計算した中間データの左側部（Ｌ’i-1）を加算する。
―ステップＥＴ９：先行するステップＥＴ８の結果から、第２マスキングパラメータにより算出された寄与を除去し、中間データ（Ｌ′i、Ｒ′i）の右側部（Ｒ′i）を算出する。但し、前記中間データの左側部（Ｌ’i）は、前に計算された中間データ（Ｌ’i-1、Ｒ’i-1）の右側部に等しい。
【請求項７】
前記方法を実行する毎に、マスキングパラメータ（Ｘ１，Ｘ２、Ｘ３）の中から少なくとも１つをランダムに選択することを特徴とする請求項２乃至６のいずれか１項に記載の暗号化計算方法。
【請求項８】
前記方法を実行するＭ事例毎に、マスキングパラメータ（Ｘ１、Ｘ２、Ｘ３）の中から少なくとも１つをランダムに選択することを特徴とする請求項２乃至６のいずれか１項に記載の暗号化計算方法。
【請求項９】
第１ミキシング演算子（＆）及び／又は第２ミキシング演算子（＃）及び／又は第３ミキシング演算子（＠）がＸＯＲ演算子であることを特徴とする請求項２〜８のいずれか１項記載の暗号化計算方法。
【請求項１０】
既知のキー計算法によりシークレットキー（Ｋ０）からアップデートされた導出キーを算出するための導出計算ステップＥＴ１を有する請求項２乃至９のいずれか１項に記載の暗号化計算方法であって、
第４マスキングステップ（ＥＴ０６）が導出キー計算ステップ（ＥＴ１）の前に実行され、ミキシングパラメータ（Ｙ０）によりシークレットキー（Ｋ０）をマスクし、本方法を実行する毎に、前記計算された導出キー（Ｍ’1、Ｍ’i）が異なることを特徴とする請求項２〜９のいずれか１項に記載の暗号化計算方法。
【請求項１１】
連続的に実行されるＮの導出キー計算ステップ（ＥＴ１）を含む暗号化計算方法であって、
第ｉランキング導出キー計算ステップは、
同一第ｉランキング計算ラウンド（ラウンドｉ）において、マスクされ、アップデートされた導出キー（Ｍ’i）、及び、前に計算されマスクされたシークレットキー（Ｋ’i-1）からアップデータされマスクされたシークレットキー（Ｋ’i）を算出することを特徴とし、又、
第ｉランキング計算ラウンドは、特に、ステップＥＴ３とＥＴ６の間に実行される、次のステップＥＴ５とＥＴ１２を有することを特徴とする暗号化計算方法。
ＥＴ５：ランクｉの、アップデートされ、マスクされた導出キー（Ｍ’ｉ）と、前のステップの結果とのミキシング、
ＥＴ１２：ステップＥＴ５の結果から、ミキシングパラメータ（Ｙ０）により生成された寄与を除去する。
【請求項１２】
第４マスキングステップ（ＥＴ０６）が、第１導出キー計算ステップより前に実行されることを特徴とする請求項１１記載の暗号化計算方法。
【請求項１３】
第４マスキングステップ（ＥＴ０６）が、各導出キー計算ステップ（ＥＴ１）より前に実行されることを特徴とする請求項１１記載の暗号化計算方法。
【請求項１４】
第４マスキングステップ（ＥＴ０６）において、ランダムに選択したマスキングパラメータ（Ｙ０）が、第４マスキング演算子（｜）を使って、シークレットキー（Ｋ０）とミックスされ、マスクされたシークレットキー（Ｋ’０）を算出することを特徴とする請求項１０〜１３のいずれか１項に記載の暗号化計算方法。
但し、マスクされた導出キー（Ｍ’１、Ｍ’ｉ）はマスクされたキー（Ｋ’０）から計算される。
【請求項１５】
第４マスキングステップ（ＥＴ０６）において、以下の演算が実行されることを特徴とする請求項１４に記載の暗号化計算方法。
Ｋ’０＝Ｋ０｜Ｙ０
但しＫ’０は、マスクされたシークレットキー、
Ｋ０は、シークレットキー、
Ｙ０は，第４マスキングパラメータ、
｜は、第４ミキシング演算子。
【請求項１６】
第４ミキシング演算子（｜）がＸＯＲ演算子であることを特徴とする請求項１４又は１５に記載の暗号化計算方法。
【請求項１７】
連続的にＮ計算ラウンドを実行し、入力キーとシークレットキーから出力データを生成するための暗号化計算装置であって、
前記暗号化計算装置は、次の手段を有することを特徴とする暗号化計算装置。
―入力データ（ＭＥ）をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第１手段と、
―各計算ラウンド内で演算されたデータをマスクする第２マスキング手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シークレットキー又はプライベートキーを持つ暗号化計算方法及び装置に関するものである。更に、具体的に言えば、本発明は、前記方法又は装置が適用されたコンポーネントの電力消費から又は電磁放射から、シークレットキー又はプライベートキーに関する情報を取得する物理的攻撃からコンポーネントを守ることを目的とする。
【背景技術】
【０００２】
本発明によるコンポーネントは、特に、各種サービス及び／又はデータに対するアクセスが厳しく管理される用途に使用される。これらコンポーネントは、通常、マイクロプロセッサーと、特にシークレットキーを有するプログラムメモリの周辺に形成されるアーキテクチャを有している。
【０００３】
このコンポーネントは、例えば、スマートカード、特にバンキング用スマートカードにおいて、コントロール端末又は遠隔端末を介して使用される。
このコンポーネントは、１つ又は複数のシークレットキー暗号化法又はプライベートキー暗号化法を用いて、入力データから出力データを計算する。この方法を使って、例えば、暗号化、暗号解読、入力メッセージのサイン又は、その入力メッセージのサインの認証を行う。
【０００４】
取引の安全性を保証する為に、シークレットキー又はプライベートキー暗号化法は、アルゴリズムの入力データ及び／又は出力データから、使用されるシークレットキーを決定することができないように構築されている。しかし、コンポーネントのセキュリティは、シークレットキーを秘密保持する能力に依存している。
【０００５】
よく使われる一方法は、ＤＥＳ（Data Encryption Standard）法である。この方法を使って、例えば、６４ビットの平分メッセージＭＥ（即ち、入力データ）と５６ビットのシークレットキーＫ0とから、６４ビットでコード化された暗号化メッセージＭＳ（即ち出力データ）を作成することができる。
【０００６】
ＤＥＳのメインステップが図１に詳細に示されている。最初の順序換え（permutation）ＩＰの後、入力データの順序換えされたビットで形成されたブロックが、左側部Ｌ０と右側部Ｒ０とに分離される。
【０００７】
この後、１６ラウンドの同一演算が行われる。各演算ラウンドの間、先行する演算ラウンドにおいて計算された中間データの右側部（Ｒ0，・・・、Ｒ15）は、導出キー（derivative key）とミックスされる。このミキシングは変換Ｆと呼ばれる変換の間に行われる。変換Ｆの結果は、先行する演算ラウンドの時に計算された中間データの左側部（Ｌ0，・・・、Ｌ15）に加えられる（ＸＯＲ演算）。
【０００８】
第１６演算ラウンドの後に、第１６中間データの左側部Ｌ１６と右側部Ｒ１６は集められ、最終順序換えＩＰ−１（最初の順序換えＩＰの逆元である）でプロセスが終了する。
【０００９】
第ｉランキング演算ラウンドＬｉ（但し，ｉは１と１６の間に含まれる整数）が図２に詳細に示されている。キー計算ステップＥＴにおいて、先行するラウンドの時に計算された中間キーＫｉ−１の５６ビットは、シフトされ（演算Ｓｉ）、新規にアップデートされた中間キーＫｉを与える。次に、５６から４８ビットが順序換え／圧縮のＰＣ演算により選択され、導出キーＭｉを与える。但しＭｉ＝ＰＣ（Ｋｉ）＝ＰＣ（Ｓｉ（Ｋｉ−１））。
【００１０】
並行して、変換Ｆが実行される。先行するラウンドで計算された、１つの中間データの右側部Ｒｉ−１は、拡張演算（演算Ｅ）により、４８ビットに拡張され、ＸＯＲタイプ演算により導出されたキーＭｉと組合わされ、非線形置換演算により新規３２ビットに置換され（演算ＳＢＯＸで表される）、次に、再度順序換えされる（演算Ｐ）。
【００１１】
変換Ｆの結果は、次に、ＸＯＲ演算により、先行するラウンドで計算された中間データ（Ｌｉ―１、Ｒｉ―１）の左側部Ｌｉ―１と組合わされる。この組合わせはアップデートされた中間データの右側部Ｒｉを与える。アップデートされた中間データの左側部ＬｉはＲｉに等しい。
【００１２】
演算Ｆ、Ｐ、Ｅ、ＰＣ、ＳＢＯＸは、どのラウンドでも同一である。反対に、導出キーＫ１〜Ｋ16の計算に使われる演算Ｓ１〜Ｓ16は、ラウンド毎に異なる。
【００１３】
ＤＥＳ法実行時の演算Ｆ、Ｐ、Ｅ、ＰＣ、ＳＢＯＸの特性は、全て既知である：実行される計算、使われるパラメータ等。例えば、これら特性は特許出願WO 00/46953、又は、規格“Data Encryption Standard, FIPS PUB46”（１９７７，１，１５発行）に詳細に説明されている。
【００１４】
シークレットキー又はプライベートキーを使ったコンポーネントのセキュリティは、使うキーの秘密保持能力に依存している。安全にするためには、コンポーネントは、ＤＰＡ（Differential Power Analysis）アナリシスを受ける時に、シークレットキーを秘密保持できなければならない。
【００１５】
ＤＰＡアナリシスにおいて、コンポーネントの消費についての統計的アナリシスを行う。即ち、時間経過に従ってコンポーネントが残すトレースについての統計を行う。このためには、約１０００のトレースの測定のサンプルが使われる。入力データＭＥ［ｉ＝１〜１０００］に対応する各トレースは、互いに異なり、独立している。統計的研究により、シークレットキーのビットの値についての１つ又は複数の仮定を検証することができる。
【００１６】
ＤＥＳ暗号化法を使ったコンポーネントに対しＤＰＡアナリシスを行う実施例について、WO 00/46953に（特にその第３，４頁に）詳述されている。
ＤＥＳ暗号化法は、ＳＢＯＸ演算子の出力において、特にＤＰＡの攻撃に対して弱い。更に一般的に言えば、暗号化法は、シークレットキーが入力データ又は出力データと組合わせられて出現するポイントのＤＰＡアナリシスに対して弱い。
【００１７】
即ち、実際には，ＤＥＳ方法は、全演算ラウンドの、複数演算子（ＸＯＲ、Ｐ、Ｅ、ＰＣ、ＳＢＯＸ等）の全出力において攻撃に対して弱い。というのは、シークレットキーは、第１演算ラウンドの入力データと組合せられるからである。
例えば、入力データＭＥを知った上で、シークレットキーＫ０についての仮定を行うと、第１演算ラウンドの出力である中間データ（Ｌ１、Ｒ１）の少なくとも１ビットの値の予測が可能である。この予測が検証されれば、シークレットキーに関する仮定が検証される。
【００１８】
安全にするには、ＳＰＡ分析（Simple Power Analysis）を受ける時に、コンポーネントはシークレットキーを秘密保持できなければならない。
【００１９】
ＳＰＡ分析では、コンポーネントにより、同一入力データＭＥをそれに適用して、暗号化法が複数回実行される。この方法が実行される毎に、この実行のトレースは時間の関数として測定される。例えば、該トレースはコンポーネントの電力消費、又は、時間の関数として放出される電磁エネルギーを表す。測定の組は平均化され、測定からノイズを除去し、固定入力データＭＥに対して回路の現実のトレースを取得する。例えば、１０から１００の同一測定の組によれば、測定からノイズを十分除去でき、固定入力データＭＥについてコンポーネントの現実のトレースを取得できる。
【００２０】
フィルターリングの後、コンポーネントの実際のトレースについて、ＤＥＳ法の種々のステップを区別することができる。：最初の順序換えＩＰ、演算の１６ラウンド、及び最後の順序換えＩＰ-1。
【００２１】
ＤＥＳ法は、シークレットキーが最初の形Ｋ０又は他の形（中間キーＫ１、・・・、Ｋ16、導出キーＭ１、・・・、Ｍ16）で出現する時点で、ＳＰＡ分析に対して弱い（sensitive）。実際、ＳＰＡ分析により、演算の第ｉラウンドについて、導出キーＭｉのイメージを決定することが可能である。例えば、導出キーＭｉがＸＯＲ演算実行前に移動される（transferred）期間を同定することが可能である。全導出キーＭ１〜Ｍ16が、シークレットキーＫ０から既知の演算で得られるのであるから、導出キーの単純なイメージを知ることは、シークレットキーＫ０についての情報を与えることになる。
【００２２】
一般に、全ての暗号化法は多少ともＤＰＡ攻撃に弱い。特に、予測可能な中間結果が現われる場所では、そうである。前記中間結果とは、入力データ（又は入力データからの導出されたデータ）とシークレットキー又はプライベートキー（又はシークレットキー又はプライベートキーから得られるキー）、若しくは、出力データ（又は入力データから導出されるデータ）とシークレットキー（又はシークレットキーから得られるキー）の組合わせである。この種の中間結果は、実際、入力データ及び／又は出力データから、及び使用キーに関する仮定から、予測可能である。というのは、使用される暗号化法（使用する演算子、これら演算子の使用のオーダー等）が既知だからである。ＤＰＡ攻撃は、仮定を検証することにより、使用キーについての情報を与えるものである。
実際に、一旦入力データが始めてシークレットキーとミックスされてしまうと、全ての方法は入力データ（又は入力データの導出データ）を使ったそれらのステップ（又はサブステップ）の全演算子の出力において弱い。同様に、全ての方法は出力データ、及びシークレットキー又はプライベートキーに依存する結果を出力する全演算子の出力において弱い。入力データが初めてシークレットキー又はプライベートキーとミックスされる時、そうである。
【００２３】
同じように、シークレットキーを使う全暗号化法は、多少、ＳＰＡ分析に対して弱い。特にキーが、最初の形で、又はクリティカルステップとして知られているステップにおいて（この間に、シークレットキーは、直接に又は、既知の導出キー計算法を使って導出された形で使用される）、単独で現われるところでは、極めて弱い。この種のクリティカルステップとは、例えば、中間又は導出キー計算ステップである（この間、キーが、シークレット又はプライベートキー、又は以前に計算された中間キーから計算される）。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明の目的は、ＤＰＡの物理的攻撃に対し、免疫力をつけたシークレットキー又はプライベートキーで、暗号化計算の為の安全化方法を実装することである。即ち、暗号化計算の安全化方法は、本方法の実装の時、本方法が使用する入力データがどのようなものであるにせよ、本方法を使用する回数がどのようなものであるにせよ、又、トレースの統計的調査が行われるとしても、使用するキーについての情報を与えない。
【００２５】
本発明の他の目的は、シークレットキー又はプライベートキーを持つ暗号化計算の安全化法の実装であり、ＤＰＡの攻撃からシークレットキー又はプライベートキー保護するものである。
【００２６】
本発明は、これら目的をもつ暗号化計算の保護方法に関する。この方法は、Ｎの計算ラウンドを有し、連続的に実行し、入力データとシークレットキーから出力を生成する。
【００２７】
本発明によると、本方法（又は装置）は、以下を有する。
―入力データをマスクする第１マスキングステージ（第１マスキング手段）：結果、各中間データ（使用され、計算ラウンドで生成される）がマスクされる。
―各計算ラウンドの内部で演算されるデータをマスクする第２マスキングステージ（第２マスキング手段）。
【００２８】
また、本発明は電子コンポーネントに関するもので、前記の通り説明し、以下に説明する方法を使う。
【００２９】
用語「マスクされた」（又は「ミックスされた」）は、ここで又は本書の他の部分では、以下の意味に解すべきである。：本発明に従う方法において、データ、結果、オペランドは以下の時にマスクされたという。即ち、二つの本発明の実行の間に、特に同一入力データと同一シークレットキー又はプライベートキーを使う方法を２つ実行する間に、それらが異なる値を持つ時。
【００３０】
このように、本発明を使うと、計算ラウンドが算出するデータはマスクされる。なぜなら、計算ラウンド（最初のマスキングステージ）の前に入力データがマスクされるからである。従って、例え、入力データとシークレットキーが同一であっても、計算ラウンドが算出するデータは本方法の実行毎に異なる。
【００３１】
更に、本発明による方法（又は装置）における第２マスキングステージ（第２マスキング手段）は、計算ラウンド内部で演算されたデータのマスキングを可能にする。
このように、本発明で使われる二つのマスキングステージ（マスキング手段）は、計算ラウンドの内外で操作されるデータのマスキングを可能にする。
【００３２】
本発明の方法を使うコンポーネントに対し、電力消費（又は、電磁放射）の統計的調査をしても必ず失敗する。：使用されるキーに関する情報を取得することはできない。コンポーネントの電力消費が使用されるキーの値と無関係だからである。
【００３３】
第１マスキングステージ（第１マスキング手段）を実行するために、次のステップを実行することが好ましい。
―第１マスキングステップＥＴ０１（第１計算ラウンド（ラウンド１）の前に実行し、入力データをマスクする）と、
―第１アンマスキングステップＥＴ１０（第Ｎ回計算ラウンド（ラウンドＮ）の後に実行し、非マスクの出力データを算出する）。
【００３４】
第２マスキングステージ（第２マスキング手段）を実行するために、本方法の第ｉランキング計算ラウンドにおいて次のステップを実行することが好ましい。
―ｉランキング計算ラウンドに先行するステップの結果をマスクするための第２マスキングステップＥＴ３、
―マスクされた非線形演算子ＳＢＯＸ′を使ってマスクされた結果を置換するための置換ステップＥＴ６、
―ステップＥＴ６の結果をアンマスクするための第２アンマスキングステップＥＴ９。
【００３５】
第１マスキングステップＥＴ０１の間に、第１マスキングパラメータが、入力データＭＥとミックスされて、第１計算ラウンドでマスクされた入力データを算出する。このミキシングは、第１線形ミキシング演算子を使って行われる。
【００３６】
セキュリティを最大にする方法を提供するために、第１マスキングパラメータが、本方法の実行時に、マスキングステップの間でランダムに選択されることが好ましい。第１マスキングパラメータは、本方法を実行するＭ回のケースに対応する期間においてのみ、ランダムに選択することができる。この場合、Ｍ回の実行について同一のマスキングパラメータが使われる。
【００３７】
第１マスキングステップは、このように入力データをランダムパラメータとミキシングすることにより、入力データＭＥと中間データ（入力データＭＥから取得され、計算ラウンドで使用され生成された）の間の相関を除去する。
【００３８】
本方法の終了時、第１アンマスキングステップの間に、第Ｎ計算ラウンドの結果に対する寄与（contribution：第１マスキングパラメータにより作成された）が、第Ｎ回計算ラウンドの結果から減算される。本方法の最後で、アンマスキングステップは予測した出力データを取り出すことを可能にする。具体的には、本方法が同一の入力データと同一のシークレットキーを使って２回実行される場合、出力データＭＳは２回ともに同一となる。しかし、中間データは異なる。
【００３９】
第２マスキングステージ（第２マスキング手段）を実行するには、本方法が第３マスキングステップＥＴ０３（第１計算ラウンドの前に実行される）を有することが好ましい。これはマスクされた非線形演算子ＳＢＯＸ’を生成する。同演算子は各データＡについて、以下の関係式を検証する。
【００４０】
【数１】
2008295108.tif 000003
【００４１】
セキュリティを最大にするように、マスキングパラメータの中から少なくとも１つが本方法の実行時に選択されることが好ましい。
本発明の変形によれば、本方法の実施のＭ事例ごとに、マスキングパラメータの１つがランダムに選択される。
また、好ましくは、ミキシング演算子は線形である。一例として、ＸＯＲ演算子をミキシング演算子の１つとして選ぶことができる。
【００４２】
本発明による方法は、既知のキー計算法に従ってシークレットキーから導出キーを算出する導出キー計算ステップを含んでいる。本方法は、第４マスキングステップを追加（導出キー計算ステップの前に実行される）補完され、シークレットキーをマスクする。結果、計算された導出キーは本方法の実施毎に異なる。
【００４３】
このように、導出キー（１つ又は複数の）及び／又は中間計算キー（１つ又は複数の）は全てランダムパラメータを加算してマスクされるので、例えばＳＰＡによりコンポーネントの電力消費（power consumption）を分析しても、シークレットキーに関する情報を得ることはできない。
【００４４】
実行モードによると、第４マスキングステップの間に、ランダムに選択されたマスキングパラメータは、第４マスキング演算子によりシークレットキーとミックスされ、マスクされたシークレットキー、マスクされた導出キー（前記マスクされたシークレットキーから計算された）を算出する。
【発明を実施するための最良の形態】
【００４５】
上記説明したとおり、ＤＥＳ法は、シークレットキーＫ０と入力データＭＥから出力データを計算する。ＤＥＳ法には、１６計算ラウンドがある。最初の順序換えＩＰ（図３ａ）が、これに先行し、最後の順序換えＩＰ−１（図３ｂ）（これは最初の順序換えの逆元である）がこの後に続く。各計算ラウンドは（図２）、送出キー計算ステップＥＴ１、変換ステップＦ’、ＸＯＲ演算子による組合せステップＥＴ８を含む。
【００４６】
ＤＥＳ法は、本発明によれば、二つのマスキングステージを追加することにより、安全化される。第１のマスキングステージは、マスキングステップＥＴ０１（図３ａ）とアンマスキングステップＥＴ１０（図３ｂ）を有する。第２マスキングステージは、各計算ラウンドで実行され、マスキングステップＥＴ３と、マスクされる非線形演算子ＳＢＯＸ’による置換ステップＥＴ６とアンマスキングステップＥＴ９を含む。
【００４７】
図３ａ、３ｂの例において、本方法は、第４のサブステップＥＴ００〜ＥＴ０３を含む開始ステップＥＴ０を有する。開始ステップの目的は、第１マスキングステージ（ステップＥＴ０１：入力データＭＥのマスキング）（第１マスキング手段）を実行し、第２マスキングステージ（非線形演算子ＳＢＯＸ’による計算による）（第２マスキング手段）を準備することである。第２マスキングステージ（第２マスキング手段）は、各計算ラウンドで実行される。
【００４８】
ステップＥＴ００の間に、三つのマスキングパラメータＸ１，Ｘ２、Ｘ３がランダムに選択される。それらは、例えば、本方法の実行の際に変更される。それらは、本方法を実施するＭ回の事例で、変更される。
【００４９】
ステップＥＴ０１の間に、入力の左側部と右側部が分離され、パラメータＸ1によりマスクされて、マスクされた左側部Ｌ’０＝Ｌ０＆Ｘ１と、マスクされた右側部Ｒ’０＝Ｒ０＆Ｘ１を算出する。マスキングは第１マスキング演算子＆により行われる。
【００５０】
演算子＆は、ミキシングに使う二変数に関して線形である。一実施例において、演算子＆はＸＯＲ演算子である。一般に、データＡ，Ｂ，Ｃがどのようなものであろうとも、演算子＆は、以下の性質を有している。
【００５１】
【数２】
2008295108.tif 000004
【００５２】
演算子＆−１は、＆の逆元で、（Ａ＆Ｂ）＆−１Ａ＝Ｂ、ケースによっては、＆−１と＆は同一である。
【００５３】
ステップＥＴ０２において、変数ＶＸ１＝Ｅ（Ｘ１）、ＶＸ２＝Ｐ（Ｘ２）が計算される。既知のＤＥＳ法において規定されているように、演算子Ｅ、Ｐは、それぞれ拡張、及び単純な順序換えである。
ステップＥＴ０３の間に、新規非線形演算子ＳＢＯＸ’が、次の関係式により計算される。
ＳＢＯＸ’＝ＦＣＴ（ＳＢＯＸ、Ｘ２、Ｘ３）
但し、ＳＢＯＸは、既知のＤＥＳ法で使用される非線形演算子で、Ｘ２、Ｘ３は、ランダムパラメータである。ＦＣＴは、次の関数である。
ＳＢＯＸ’［Ａ＠Ｘ３］＝ＳＢＯＸ［Ａ］＃Ｘ２、（Ａの如何なる値に対しても）
＠、＃は、線形ミキシング演算子で、演算子＆と同様な性質を持つものである。
＠、＃は、互いに異なるもので、これらは、演算子＆と異なってもよい。
【００５４】
次に演算の第１ラウンドが実行される。；それは９のステップＥＴ１〜ＥＴ９にサブ分割することができる。
【００５５】
キー計算ステップＥＴ１の間に、導出キーＭ１がシークレットキーＫ０から計算される。第１のアップデートされた導出キーＭ１は次式から算出される。
Ｍ１＝ＰＣ（Ｓ１（Ｋ０））＝ＰＣ（Ｋ１）。
Ｋ１は第１のアップデートされた中間キーであり、その後、演算の第２ラウンドにおいて算出される（図４ａ、４ｂには示されない）。演算子ＰＣ、Ｓ１は、それぞれ、順序換え−圧縮、ビットシフト演算である。これらは、既知のＤＥＳ法で規定されている。ステップＥＴ１は、従って、既知のＤＥＳ法で規定されているキー計算ステップと同一である。
【００５６】
次のステップＥＴ２〜ＥＴ８は変換ステップＦ’を形成する。これは、従来技術の方法の変換Ｆ（ステップＥＴ３とＥＴ４を追加し、本発明による新規演算子ＳＢＯＸ’で演算子ＳＢＯＸを置換して、変更した）に対応するものである。
【００５７】
ステップＥＴ２のとき、データＲ’０に対して拡張が行われる。
この演算の結果、Ｅ（Ｒ’０）は、次に、第２のマスキング演算子＠により、パラメータＸ３とミックスされる。
【００５８】
次のステップＥＴ４は、第１アンマスキングステップで、前の演算結果から、この結果（これは、マスキングパラメータＸ１により形成された）に対する寄与を取除くものである。この目的のために、以下の演算が実行される。
【００５９】
【数３】
2008295108.tif 000005
【００６０】
次のステップＥＴ５の間に、前のステップＥＴ４の結果が、ＸＯＲ演算により、アップデートされた導出キーＭ１とミックスされる。ステップＥＴ５は、次の結果を算出する。
【００６１】
【数４】
2008295108.tif 000006
【００６２】
ステップＥＴ６において、非線形演算ＳＢＯＸ’が、前の演算の結果について実行される。ステップＥＴ６は、次の結果を算出する。
【００６３】
【数５】
2008295108.tif 000007
【００６４】
これは、非線形演算子ＳＢＯＸ’の定義に基づくものである。
次に、１ビット順序換えＰがこの結果（ステップＥＴ７）に行われる。こうして、次の式を得る。
【００６５】
【数６】
2008295108.tif 000008
【００６６】
この結果は、演算子Ｐの線形性から単純に導かれる。
【００６７】
次に、ステップＥＴ８において、順序換えＰの結果は、ＸＯＲ演算を使ってデータＬ’０（ステップＥＴ０１の間に計算された）に加算される。ステップＥＴ８は、既知のＤＥＳ法の対応するステップに類似している。こうして、次の式が得られる。
【００６８】
【数７】
2008295108.tif 000009
【００６９】
但し、Ｒ１は、既知のＤＥＳ法のコンテキストの中で規定されているように、第１中間データ（Ｌ１、Ｒ１）の右側部である。又、上記の全ての非等号（inequalities）は、演算子Ｐ、＆、＃の線形性という事実から導かれる。
【００７０】
次のステップＥＴ９は、第２のアンマスキングステップで、前の演算の結果から、マスキングパラメータＸ２により得られた結果に対する寄与を取除く。この目的のために、以下の演算が実行される。
【００７１】
【数８】
2008295108.tif 000010
【００７２】
第１ラウンドの終わりで、アップデートされた中間データは、（Ｌ’１、Ｒ’１）に等しい。但し、Ｌ’１＝Ｒ’０＝Ｒ０＆Ｘ１＝Ｌ１＆Ｘ１、及びＲ’１＝Ｒ１＆Ｘ１。
【００７３】
このように、本発明によるＤＥＳ法を用いて、中間データ（Ｌ’１、Ｒ’１：第１演算ラウンドに計算される）は中間データ（Ｌ１、Ｒ１）（非安全である既知のＤＥＳ法により算出され、演算子＆を使って、ランダムパラメータＸ１によりマスクされる）に等しい。
【００７４】
第２ラウンドが、新規アップデートされた中間データ（Ｌ’１、Ｒ’１）、及びアップデートされた中間キーＫ１（ステップＥＴ１の期間に計算された）を使って実行される。
【００７５】
一般に、本方法の演算の第ｉラウンドは、ステップＥＴ１〜ＥＴ９の９ステップにサブ分割される。
【００７６】
ステップＥＴ１において、導出キーＭ１は中間キーＫi-1（前のラウンドで計算される）から算出され、アップデートされる導出キーＭｉ＝ＰＣ（Ｓｉ（Ｋｉ―１））＝ＰＣ（Ｋｉ）  を算出する。Ｋｉは第１のアップデートされる中間キーで、その後、次の演算ラウンドに提供される（図４ａ、４ｂで図示されていない）。演算子ＰＣ、Ｓｉは、それぞれ、順序換え−圧縮、ビットシフト演算である。これらは、既知のＤＥＳ法で規定されている。
ステップＥＴ２において、拡張がデータＲ’ｉ−１について行われる。
この拡張の結果Ｅ（Ｒ’i-1）は、第２のマスキング演算子＠を使って、パラメータＸ３とミキシングされる。
次のステップＥＴ４において、以下の演算が実行される。
【００７７】
【数９】
2008295108.tif 000011
【００７８】
ステップＥＴ５において、ステップＥＴ４の結果は、ＸＯＲ演算を使ってアップデートされた導出キーＭｉとミックスされる。ステップＥＴ５は、こうして次の結果を算出する。
【００７９】
【数１０】
2008295108.tif 000012
【００８０】
ステップＥＴ６において、非線形演算ＳＢＯＸ’が前の演算の結果に対して実行される。ステップＥＴ６は、次の結果を算出する。
【００８１】
【数１１】
2008295108.tif 000013
【００８２】
これは、非線形演算ＳＢＯＸ’の定義から導かれるものである。
１ビット順序換え演算Ｐは、この結果（ステップＥＴ７）に適用される。こうして、次式を得る。
【００８３】
【数１２】
2008295108.tif 000014
【００８４】
ステップＥＴ８において、前記順序換えＰの結果は、（ＸＯＲ演算を使って）データＬ’ｉ−１（先行するラウンドで計算された）に加えられる。そして次式を得る。
【００８５】
【数１３】
2008295108.tif 000015
【００８６】
但し、Ｒｉは第ｉアップデートされたデータ（Ｌｉ、Ｒｉ）の右側部である。これは、既知のＤＥＳ法のコンテキストにおいて定義されているとおりである。又、上記の全ての等号は、演算子Ｐ、＆、＃の線形性という事実から導かれるものである。
【００８７】
次のステップＥＴ９は、第２アンマスキングステップであり、先行する演算の結果から、マスキングパラメータＸ２によりもたらされた結果に対する寄与を取除くものである。このために、以下の演算が実行される。
【００８８】
【数１４】
2008295108.tif 000016
【００８９】
第ｉラウンドの終わりに、アップデートされた中間データは、（Ｌ’ｉ、Ｒ’ｉ）に等しく、次式が成り立つ。
Ｌ’ｉ＝Ｒ’i-1＝Ｒi-1＆Ｘ１＝Ｌｉ＆Ｘ１、及び、Ｒ’i＝Ｒｉ＆Ｘｉ。
【００９０】
このように、本発明によるＤＥＳ法を使うと、第ｉラウンドにおいて計算された中間データ（Ｌ’ｉ、Ｒ’ｉ）は、非安全の既知のＤＥＳ法により、上記と同一のラウンドで与えられる中間データ（Ｌｉ、Ｒｉ：演算子＆を使ってランダムパラメータＸ１によりマスクされる）に等しい。
新規中間データ（Ｌ’ｉ、Ｒ’ｉ）は、次のラウンドで算出される。
【００９１】
本方法の第１６ラウンドで、第１６中間データ（Ｌ’16、Ｒ’16）が算出される。最終アンマスキングの第３ステップＥＴ１０において、第１６データに対するパラメータＸ１の寄与が演算子＆−１により取除かれる。：
Ｌ16＝Ｌ’16＆−１Ｘ１、Ｒ16＝Ｒ’16＆−１Ｘ１
【００９２】
最後の順序換えＩＰ−１は（ステップＥＴ１０の後実行される）、本発明に基づくＤＥＳ法を終了させる。順序換えＩＰ−１は、既知のタイプのＤＥＳ法の等価な順序換えと同一である。
【００９３】
入力データＭＥとシークレットキーＫ０が既知の方法及び本発明による方法について同一である限り、本発明によるＤＥＳ法を使って生成された出力データは、既知のＤＥＳ法が算出するものと同一である。
【００９４】
【数１５】
2008295108.tif 000017
【００９５】
本方法を実施する毎にＸ１、Ｘ２、Ｘ３はランダムに選択されるから、たとえ、入力データ（Ｌ０、Ｒ０）又は本発明の方法により使用されるシークレットキーＫ０の値がどのようなものであろうとも、全中間結果及び中間データの値は本方法を実施する毎に異なる。具体的には、本方法が同一の入力データＭＥと同一のシークレットキーＫ０を使って２回実行されるケースを含め、全ての中間結果の値は異なる。
【００９６】
少なくとも一つのランダムパラメータの存在により、シークレットキーＫ０と入力データＭＥとの間の全ての相関関係は、中間結果又は中間データのレベルで、除去される。従って、ＤＰＡの統計分析では、シークレットキー（本発明による安全化方法により使用される）についての情報を取得することはできない。
【００９７】
図３ａ、３ｂの方法における変更及び／又は改良は、本発明の枠を離れることなく可能である。
例えば、本方法の複数ステップの実行順序を変更することができる。
―複数ステップＩＰ、ＥＴ０１、ラウンド１、…、ラウンドｉ、…、ラウンド１６、ＥＴ１０、ＩＰ-1は、所望の方法が図１，２のものに類似である場合には、図３ａ、３ｂで示した順序で実行しなければならない。
―ステップＥＴ００は、ステップＥＴ０１より前に実行されなければならない。ステップＥＴ００は、ステップＩＰより前、又は同時に実行してもよい。
―ステップＥＴ０２は、ステップＥＴ００とステップＥＴ４（第１演算ラウンドの）の間に実行される。；それは、ステップＩＰ、ステップＥＴ０１とステップＥＴ１又はＥＴ２の前、又は同時に実行してもよい。
―ステップＥＴ０３は、演算の第１ラウンドのステップＥＴ００とステップＥＴ６（第１演算ラウンドの）の間に実行される。；それは、ステップＥＴ０１、複数ステップＥＴ１、ＥＴ２、ＥＴ３、ＥＴ４の前又は後に実行してもよい。対（symmetry）の理由により、ステップＥＴ０１がステップＩＰの前に実行される場合には、ステップＥＴ１０はステップＩＰ-1の後に実行される。反対に、ステップＥＴ０１がステップＩＰの後に実行される場合には、ステップＥＴ１０はステップＩＰ-1の前に実行される。
―各ラウンドｉにおいて、導出キーＭｉをステップＥＴ５の実行に利用する為に、ステップＥＴ１は実行されなければならない。；ステップＥＴ１は、例えば、複数ステップＥＴ２、ＥＴ３、ＥＴ４と同時に実行してもよい。
【００９８】
図３ａ、３ｂを参照して説明した例において、３つのランダムパラメータＸ１、Ｘ２、Ｘ３を使った。このやり方は、一番効率的なやり方で、全ての中間結果をマスクするものである。他の例においては、パラメータを２つだけ（Ｘ１、Ｘ２）使うことも可能である。この場合、ステップＥＴ０２は、Ｐ（Ｘ２）の計算に限定され、全演算ラウンドのステップＥＴ３、ＥＴ４が無くなり、ステップＥＴ０３は、変更されて、新規の非線形演算子ＳＢＯＸ''を、次の式で、計算する。
ＳＢＯＸ”＝ＦＣＴ”（ＳＢＯＸ、Ｘ１、Ｘ２）
但し、ＦＣＴ”は、次のような関数である。
ＳＢＯＸ”（Ａ＆Ｅ（Ｘ１））＝ＳＢＯＸ（Ａ）＃Ｘ２。
【００９９】
【数１６】
2008295108.tif 000018
【０１００】
同様に、図３ａ、３ｂを参照して説明してきた例において、三つのパラメータＸ１、Ｘ２、Ｘ３が、本方法を実施するごとに、ランダムに選択される。しかしながら、パラメータＸ１、Ｘ２、Ｘ３を、多少頻繁に変更することができる。例えば、第ｉ演算ラウンドの実行時に、パラメータ、特にＸ２及び／又はＸ３を変更することが可能である。この場合、ステップＥＴ０２、ＥＴ０３は、各ラウンドで変更パラメータＸ２、Ｘ３を考慮して、実行される。
【０１０１】
同じ考えで、ＤＰＡ攻撃を実行するにはＭ回の実行では十分でないと考えられる場合には、本方法を実施するＭのケース毎に、パラメータＸ１、Ｘ２、Ｘ３を変更することができる。但し、Ｍは整数である。この場合、ステップＥＴ０において、ステップＥＴ０１だけが実行される。複数ステップＥＴ００、ＥＴ０２、ＥＴ０３は本方法のＭ回の実行期間毎にのみ実行される。
【０１０２】
他の改良によっても、ＳＰＡ攻撃に対して本方法を安全化することができる。このタイプの分析に対し、導出キー計算ステップＭｉは特に弱い。従って、改良は、中間結果に加えて、導出キーをマスクすることである。図３ａ、３ｂの方法は、次のステップを追加することにより（図４参照）改良される。：
―開始ステップＥＴ０に、サブステップＥＴ０５、ＥＴ０６
―本方法の演算の１６ラウンドの各ラウンドに、ステップＥＴ１１、ＥＴ１２
説明を明瞭に簡単にするために、新規サブステップＥＴ０５とＥＴ０６をつけて、本方法の第ｉラウンドだけを図４に示した。
【０１０３】
ステップＥＴ０５において、第４パラメータＹ０をランダムに選択する。ステップＥＴ０５は、例えば、ステップＥＴ００と同時に実行される。又は、複数ステップＩＰ、ＥＴ０１、ＥＴ０２、ＥＴ０３の中の１つと同時に、実行される。
マスキングステップＥＴ０６において、第４マスキングパラメータＹ０（ステップＥＴ０５の後実行される）は、シークレットキーＫ０とミックスされ、マスクされたシークレットキーＫ’０を算出する。このミキシングは、次の式により行われる。：
Ｋ’０＝Ｋ０｜Ｙ０
【０１０４】
演算子｜は、ミックスする二変数に関して線形であるように選択される。一実施例では、演算子｜はＸＯＲである。又、演算子｜はどのタイプの線形演算子であってよい。一般に、演算子｜は、演算子＆、＠、＃のようなものと類似した性質を有する。
【０１０５】
次に、第１演算ラウンド（図４には示さないが）が実行される。キー計算ステップＥＴ１は、シークレットキーＫ０からは、もはや直接実行されず、マスクされたシークレットキーＫ’０から実行される。ステップＥＴ１は、次式によって、マスクされた導出キーＭ’１を算出する。
Ｍ’１＝ＰＣ（Ｓ１（Ｋ’０））＝ＰＣ（Ｓ１（Ｋ０｜Ｙ０））
＝ＰＣ（Ｓ１（Ｋ０））｜ＰＣ（Ｓ１（Ｙ０））
【０１０６】
最後の等号は、単に、演算子ＰＣ，Ｓ１及び｜が線形演算子であり、特に交換律（commutatif）又は結合律（associatif）を有するという事実から導かれる。
【０１０７】
ＰＣ（Ｓ１（Ｋ０））＝Ｋ１であるから、これから最終的に、Ｍ’１＝Ｍ１｜ＰＣ（Ｓ１（Ｙ０））となる。但し、Ｍ１は、計算された導出キーで、図３ａ、３ｂを参照して説明されたＤＥＳ法により計算されたものである。
【０１０８】
差計算ステップＥＴ１１は、例えば、キー計算ステップＥＴ１の前に、と同時に、又は、の後に、実行される。ステップＥＴ１１は、パラメータＹ０により計算されるマスクされた導出キーＭ’ｉに対する寄与Ｃｉを決定する。
【０１０９】
ステップＥＴ１１はステップＥＴ１と類似している。；ステップＥＴ１１は、マスキングパラメータＹ１＝Ｓ１（Ｙ０）（パラメータＹ０のビットをシフトしてアップデートされる）を算出する演算Ｓｉ及び、寄与Ｃｉを計算する演算ＰＣを含む。寄与Ｃ１は、次式に従って計算される。：Ｃ１＝ＰＣ（Ｓ１（Ｙ０））。最終的に、Ｍ’１＝Ｍ１｜Ｃ１が導かれる。このアップデートされたマスキングパラメータＹ１は演算の次のラウンドで計算される。
【０１１０】
アンマスキングステップＥＴ１２は、変換ステップＦ”のサブ分割である（Ｆ”は、図３ａ、３ｂにステップＥＴ１２を追加したＤＥＳ法の変換Ｆ'に対応する）。ステップＥＴ１２は、ステップＥＴ５とステップＥＴ６の間に実行される。ステップＥＴ１２は、アップデートされたマスキングパラメータＹ１により与えられる寄与Ｃ１を取除く。このために、演算子｜−１（これは、演算子｜の逆元である）が使用される。ステップＥＴ１２の出力において、次式が得られる。
【０１１１】
【数１７】
2008295108.tif 000019
【０１１２】
【数１８】
2008295108.tif 000020
【０１１３】
従って、変換Ｆ”の出力に現れる出力データは、図３ａ、３ｂの方法の変換Ｆ’の出力に現われるものと同一である。
【０１１４】
更に一般的に言えば、演算の第ｉラウンドにおいて、ステップＥＴ１は、次式により、マスクされ、導出されたキーＭ’ｉを算出する。
【数１９】
2008295108.tif 000021
【０１１５】
但し、Ｍｉは、図３ａ、３ｂを参照して説明したＤＥＳ法に従って計算したものである。
【０１１６】
複数演算子ＰＣが、本方法の全ラウンドに対して、同一である（同一特徴、同一パラメータ等）。反対に、ビットシフト演算Ｓｉは演算ラウンド毎に異なる。
【０１１７】
ステップＥＴ１１は、パラメータＹi-1（又は、一般的にＹ０）によりもたらされる、マスクされた導出キーＭ’に対する寄与Ｃｉを決定する。ステップＥＴ１１は、アップデートされたパラメータＹｉ＝Ｓｉ（Ｙi-1）、及び、次式に従ってアップデータされた寄与Ｃｉを算出する。
Ｃｉ＝ＰＣ（Ｓｉ（Ｙi-1））。
最後に、これからＭ’１＝Ｍｉ｜Ｃｉが導かれる。アップデートされたマスキングパラメータＹｉは次の演算ラウンドで算出される。
【０１１８】
ステップＥＴ１２はステップＥＴ５とステップＥＴ６の間に実行される。ステップＥＴ１２の出力において、次式を得る。
【０１１９】
【数２０】
2008295108.tif 000022
【０１２０】
こうして、寄与Ｃｉを除去した後で、ＳＢＯＸ’タイプの演算子の入力に現われる変数は、ＰＥ（Ｒｉ−１）＠Ｘ３＋Ｍｉと同一である。即ち、それは、図３ａ、３ｂを参照して説明したＤＥＳ法の演算子ＳＢＯＸ’の入力に現われる変数と同一である。変換ステップＦ′の出力に現われる出力データは、図３ａ、３ｂの方法変換演算Ｆ′の出力に現われるものと同一である。
【０１２１】
最後に、図４の方法によると、全中間結果は、パラメータＸ１、Ｘ２、Ｘ３（又はこれらパラメータから導出されたもの（form））の内の少なくとも一つによりマスクされる。更に、全中間キーＫ’ｉ、全導出キーＭ’ｉは、パラメータＹ０又はＹ０から導出されたものによりマスクされる。
【図面の簡単な説明】
【０１２２】
【図１】ＤＥＳタイプの既知の暗号化法を説明するブロック図である。
【図２】図１の方法の詳細ステップを説明する流れ図である。
【図３ａ】本発明に基づいて安全化された、図１の方法についての流れ図である。
【図３ｂ】本発明に基づいて安全化された、図１の方法についての流れ図である。
【図４】図３ａ，図３ｂの方法の改良したもののブロックダイアグラムである。
【図１】
2008295108.tif 000023
【図２】
2008295108.tif 000024
【図３ａ】
2008295108.tif 000025
【図３ｂ】
2008295108.tif 000026
【図４】
2008295108.tif 000027
【手続補正書】
【提出日】平成20年10月10日(2008.10.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
連続的に実行されるＮ計算ラウンドを含み、入力キーとシークレットキーから出力データを生成するための暗号化計算方法であって、
前記暗号化計算方法は、次のステージを有することを特徴とする暗号化計算方法。
―入力データ（ＭＥ）をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第１マスキングステージと、
―各計算ラウンド内で演算されたデータをマスクする第２マスキングステージ。
【請求項２】
与えられたシークレットキー（Ｋ０）と入力データ（ＭＥ）とから暗号化データ（ＭＳ）を計算する暗号化計算方法であって、前記暗号化計算方法は、Ｎラウンドの計算を行い、
―入力データ（ＭＥ）をマスクし、計算ラウンドで計算により使用・生成された各中間データがマスクされる第１マスキングステージと、
―各計算ラウンド内で演算されるデータをマスクする第２マスキングステージであって、
前記第２マスキングステージは次のステージを有している暗号化計算方法。
―第ｉランキング計算ラウンド（ｉ＝１乃至Ｎ）に先行するステップの結果をマスクする第２マスキングステップＥＴ３と、
―非線形演算子ＳＢＯＸ’を使って、マスクされた結果を置換する置換ステップＥＴ６と、
―ステップＥＴ６の結果をアンマスキングする第２アンマスキングステップＥＴ９とを、含む第２マスキングステージ。
【請求項３】
前記第１マスキングステージは、次の第１マスキングステップ（ET01）及び第１アンマスキングステップ（ET10）を含むステージであって、
―第１マスキングステップ（ET01）において、第１マスキングパラメータ（Ｘ１）が入力データ（ＭＥ）にミックスされ、第１計算ラウンドで、マスクされた入力データ（ＭＥ’；Ｌ’０，Ｒ’０）を算出し、前記ミキシングは第１線形ミキシング演算子（＆）を使って行い、
―第１アンマスキングステップ（ET10）において、第１マスキングパラメータ（Ｘ１）により第Ｎ計算ラウンドの結果に対して生成される寄与が、第Ｎ計算ラウンドの結果から除去される、
ことを特徴とする請求項２に記載の暗号化計算方法。
【請求項４】
―第１計算ラウンドの前に実行され、以下の関係を検証する非線形演算子ＳＢＯＸ’を生成するための、第３マスキングステップ（ＥＴ０３）を有する請求項２又は３に記載の暗号化計算方法。
ＳＢＯＸ’［Ａ＠Ｘ３］＝ＳＢＯＸ［Ａ］＃Ｘ２、
但し、Ｘ２は第２マスキングパラメータ、
Ｘ３は、第３マスキングパラメータ、
ＳＢＯＸは、既知の非線形演算子、
＃は、第２ミキシング演算子、
＠は、第３ミキシング演算子である。
【請求項５】
第ｉ計算ラウンドのステップＥＴ９において、前記マスクされた非線形演算子ＳＢＯＸ’により生成された結果から、第２マスキングパラメータ（Ｘ０）により生成された寄与を除去することを特徴とする、請求項４に記載の暗号化計算方法。
【請求項６】
第ｉ計算ラウンドは、以下のステップを有し、以下の順序で実行することを特徴とする請求項２乃至５の何れか一項に記載の暗号化計算方法。
―ステップＥＴ２：先行する計算ラウンドにより前もって計算されたマスクされた中間データの右側部（Ｒ’i-1）の拡張、
―ステップＥＴ３：第３マスキング演算子（＠）を使って、第３マスキングパラメータ（Ｘ３）で先行するステップＥＴ２の結果をマスクする。
―ステップＥＴ４：第１マスキングパラメータにより生成された寄与を先行するＥＴ３ステップの結果から除去する。
―ステップＥＴ５：前のステップ（ＥＴ４）の結果に、アップデートされた導出キー（Ｍｉ）でミキシングする。
―ステップＥＴ６：先行するステップ（ＥＴ５）の結果を、マスクされた非線形演算子ＳＢＯＸ’で置換し、第２マスキングパラメータ（Ｘ２）によりマスクされた結果を算出する。
―ステップＥＴ７：先行するステップ（ＥＴ６）の結果の順序換え。
―ステップＥＴ８：ＸＯＲ演算を使って、先行するＥＴ７の結果に、前に計算した中間データの左側部（Ｌ’i-1）を加算する。
―ステップＥＴ９：先行するステップＥＴ８の結果から、第２マスキングパラメータにより算出された寄与を除去し、中間データ（Ｌ′i、Ｒ′i）の右側部（Ｒ′i）を算出する。但し、前記中間データの左側部（Ｌ’i）は、前に計算された中間データ（Ｌ’i-1、Ｒ’i-1）の右側部に等しい。
【請求項７】
前記方法を実行する毎に、マスキングパラメータ（Ｘ１，Ｘ２、Ｘ３）の中から少なくとも１つをランダムに選択することを特徴とする請求項２乃至６のいずれか１項に記載の暗号化計算方法。
【請求項８】
前記方法を実行するＭ事例毎に、マスキングパラメータ（Ｘ１、Ｘ２、Ｘ３）の中から少なくとも１つをランダムに選択することを特徴とする請求項２乃至６のいずれか１項に記載の暗号化計算方法。
【請求項９】
第１ミキシング演算子（＆）及び／又は第２ミキシング演算子（＃）及び／又は第３ミキシング演算子（＠）がＸＯＲ演算子であることを特徴とする請求項２〜８のいずれか１項記載の暗号化計算方法。
【請求項１０】
既知のキー計算法によりシークレットキー（Ｋ０）からアップデートされた導出キーを算出するための導出計算ステップＥＴ１を有する請求項２乃至９のいずれか１項に記載の暗号化計算方法であって、
第４マスキングステップ（ＥＴ０６）が導出キー計算ステップ（ＥＴ１）の前に実行され、ミキシングパラメータ（Ｙ０）によりシークレットキー（Ｋ０）をマスクし、本方法を実行する毎に、前記計算された導出キー（Ｍ’1、Ｍ’i）が異なることを特徴とする請求項２〜９のいずれか１項に記載の暗号化計算方法。
【請求項１１】
連続的に実行されるＮの導出キー計算ステップ（ＥＴ１）を含む暗号化計算方法であって、
第ｉランキング導出キー計算ステップは、
同一第ｉランキング計算ラウンド（ラウンドｉ）において、マスクされ、アップデートされた導出キー（Ｍ’i）、及び、前に計算されマスクされたシークレットキー（Ｋ’i-1）からアップデータされマスクされたシークレットキー（Ｋ’i）を算出することを特徴とし、又、
第ｉランキング計算ラウンドは、特に、ステップＥＴ３とＥＴ６の間に実行される、次のステップＥＴ５とＥＴ１２を有することを特徴とする請求項１０に記載の暗号化計算方法。
ＥＴ５：ランクｉの、アップデートされ、マスクされた導出キー（Ｍ’ｉ）と、前のステップの結果とのミキシング、
ＥＴ１２：ステップＥＴ５の結果から、ミキシングパラメータ（Ｙ０）により生成された寄与を除去する。
【請求項１２】
第４マスキングステップ（ＥＴ０６）が、第１導出キー計算ステップより前に実行されることを特徴とする請求項１１に記載の暗号化計算方法。
【請求項１３】
第４マスキングステップ（ＥＴ０６）が、各導出キー計算ステップ（ＥＴ１）より前に実行されることを特徴とする請求項１１に記載の暗号化計算方法。
【請求項１４】
第４マスキングステップ（ＥＴ０６）において、ランダムに選択したマスキングパラメータ（Ｙ０）が、第４マスキング演算子（｜）を使って、シークレットキー（Ｋ０）とミックスされ、マスクされたシークレットキー（Ｋ’０）を算出することを特徴とする請求項１０〜１３のいずれか１項に記載の暗号化計算方法。
但し、マスクされた導出キー（Ｍ’１、Ｍ’ｉ）はマスクされたキー（Ｋ’０）から計算される。
【請求項１５】
第４マスキングステップ（ＥＴ０６）において、以下の演算が実行されることを特徴とする請求項１４に記載の暗号化計算方法。
Ｋ’０＝Ｋ０｜Ｙ０
但しＫ’０は、マスクされたシークレットキー、
Ｋ０は、シークレットキー、
Ｙ０は，第４マスキングパラメータ、
｜は、第４ミキシング演算子。
【請求項１６】
第４ミキシング演算子（｜）がＸＯＲ演算子であることを特徴とする請求項１４又は１５に記載の暗号化計算方法。
【請求項１７】
連続的にＮ計算ラウンドを実行し、入力キーとシークレットキーから出力データを生成するための暗号化計算装置であって、
前記暗号化計算装置は、次の手段を有することを特徴とする暗号化計算装置。
―入力データ（ＭＥ）をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第１手段と、
―各計算ラウンド内で演算されたデータをマスクする第２マスキング手段。