(57)【要約】【課題】ＳＰＡ攻撃からＤＥＳ暗号化法に保護するために、シークレットキー（Ｋ０）をマスクし、各アップデートされた導出計算キー（Ｍ’１、Ｍ’ｉ）が、本方法の各実行時異なるようにする。【解決手段】ＤＥＳ法の各ステップは、先立つキー計算ステップの間に、既知のキー計算方法に基づいて、以前に計算された導出キーから、アップデートされた導出キー（Ｍ’１、Ｍ’ｉ）を算出する、複数キー計算ステップ（ＥＴ２）を有する。最初のアップデートされた導出キー（Ｍ’１）は、シークレットキー（Ｋ０）から取得されるものである。【選択図】図６
2008295109.tif 000002
【特許請求の範囲】
【請求項１】
入力データ（ＭＥ）とシークレットキー（Ｋ０）から出力データ（ＭＳ）を得る暗号化計算方法であって、
前記暗号化計算方法は、既知のキー計算方法に基づいて、先行するキー計算ステップの間に計算された導出キー（Ｍ’ｉ−１）からアップデートされた導出キー（Ｍ′i）を算出する複数の演算ステップ（ＥＴ２）を有し（但し、最初のアップデートされた導出キー（Ｍ′1）はシークレットキー（Ｋ0）から算出される）、
また、前記暗号化計算方法は、最初のキー計算ステップ（ＥＴ２）の前に実行される単一のマスキングステップ（ＥＴ１）を有し、シークレットキー（Ｋ０）をマスクし、各アップデートされた導出計算キー（Ｍ’１、…、Ｍ’ｉ、…）が本方法の各実行時異なることを特徴とする暗号化計算方法。
【請求項２】
マスキングステップ（ＥＴ１）の間に、ランダムに選択されたマスキングパラメータ（Ｘ０）がシークレットキー（Ｋ０）とミックスされ、マスクされたシークレットキー（Ｋ′０）が算出され、最初のキー計算ステップ（ＥＴ２）において、最初の導出キー（Ｍ’１）はマスクされたシークレットキー（Ｋ０）から計算されることを特徴とする請求項１に記載の暗号化計算方法。
【請求項３】
マスキングステップ（ＥＴ１）は、前記方法の開始ステップ（ＥＴ０，ＥＴ１）の間に実行されることを特徴とする請求項２に記載の暗号化計算方法。
【請求項４】
―アップデータされた導出キー（Ｍ’１、…、Ｍ’ｉ、…）を使う計算ステップ（ＥＴ５）と、
―以前の計算ステップの結果からマスキングパラメータ（Ｘ０）の寄与を除去するために、計算ステップ（ＥＴ５）の後に実行するアンマスキングステップ（ＥＴ４）と、
を含む請求項２又は請求項３に記載の暗号化計算方法。
【請求項５】
マスキングステップ（ＥＴ１）の間に、
Ｋ’０＝Ｋ０｜Ｘ’０
但し、Ｋ’０は、マスクされたシークレットキーであり、
Ｋ０は、シークレットキーであり、
Ｘ０は、マスキングパラメータであり、
｜は、ミキシング演算子である。
の演算が実行されることを特徴とする請求項２〜４のいずれか１項に記載の暗号化計算方法。
【請求項６】
前記ミキシング演算子は、２パラメータ線形演算子であることを特徴とする請求項５に記載の暗号化計算方法。
【請求項７】
ミキシング演算子は、ＸＯＲ演算子であることを特徴とする請求項５又は６に記載の暗号化計算方法。
【請求項８】
アンマスキングステップ（ＥＴ４）において、ミキシング演算子の反転演算子が使われることを特徴とする請求項４に記載の暗号化計算方法。
【請求項９】
アップデートされた導出キー（Ｍ’１、…、Ｍ’ｉ、…）を使う複数計算ステップ（ＥＴ５）を有し、又、各計算ステップ（ＥＴ５）の後、アンマスキングステップ（ＥＴ４）を実行し、先行する計算ステップ（ＥＴ５）の結果からマスキングパラメータ（Ｘ０）の寄与を除去することを特徴とする請求項２〜８のいずれか１項に記載の暗号化計算方法。
【請求項１０】
各ラウンドの演算はアップデートされた導出キー（Ｍ′１、…、Ｍ′１６）を使い、第１ラウンドより前にマスキングステップ（ＥＴ１）を実行する、１６ラウンドの演算を行うＤＥＳ方法による、請求項２〜８のいずれか１項の暗号化計算方法。
【請求項１１】
各操作ラウンドにおいて、次の演算を含む変換Ｆが実行される請求項１０に記載の暗号化計算方法。
―先行するラウンドで計算された中間データと、アップデータされた導出キー（Ｍ’１、…Ｍ’１６）とを組合わせる計算ステップ（ＥＴ５）と、
―前記計算ステップの後実行するアンマスキングステップ（ＥＴ４）と、
を含む、請求項１０記載の方法。
【請求項１２】
入力データ（ＭＥ）とシークレットキー（Ｋ０）から出力データ（ＭＳ）を得る暗号化計算装置であって、
前記暗号化計算装置は、所定のキー計算方法を使って、先行するキー計算の間に計算された導出キー（Ｍ’ｉ−１）からアップデートされた導出キー（Ｍ′i）を算出する複数の演算手段を有し（但し、最初のアップデートされた導出キー（Ｍ′1）はシークレットキー（Ｋ0）から算出される）、
また、前記暗号化計算方法は、単一のマスキング演算を最初のキー計算の前に実行し、シークレットキー（Ｋ０）をマスクする演算をおこない、各アップデートされた導出計算キー（Ｍ’１、Ｍ’ｉ）が各演算ラウンド毎に異なることを特徴とする暗号化計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シークレットキー又はプライベートキーを持つ暗号化計算方法及び装置に関するものである。更に、具体的に言えば、本発明は、ＳＰＡ（Simple Power Analysis）物理的攻撃から前記方法又は装置を適用されたコンポーネントを保護することである。この種の攻撃は、暗号化法を実行するとき、コンポーネントの電力消費から又は電磁放射から、シークレットキー又はプライベートキーに関する情報を取得することを目的としている。
【背景技術】
【０００２】
本発明によるコンポーネントは、特に、各種サービス及び／又はデータに対するアクセスが厳しく管理される用途に使用される。これらコンポーネントは、通常、マイクロプロセッサーと、特にシークレットキーを有するプログラムメモリの周辺に形成されるアーキテクチャを有している。
【０００３】
このコンポーネントは、例えば、スマートカード、特にバンキング用スマートカードにおいて、コントロール端末又は遠隔端末を介して使用される。
このコンポーネントは、１つ又は複数のシークレットキー暗号化又はプライベートキー暗号化法を用いて、入力データから出力データを計算する。この方法を使って、例えば、暗号化、暗号解読、認証又は、入力メッセージのサインその他、前記入力メッセージのサインの認証を行う。
【０００４】
取引の安全性を確保する為には、シークレットキー又はプライベートキー暗号化法の構築は、アルゴリズムの、入力データ及び／又は出力データの知識から、使用されるシークレットキーを決定することが、できないようにする。しかし、コンポーネントのセキュリティは、使用するシークレットキーを秘密保持する能力に依存する。というのは、このキーは変更することができないからである。
【０００５】
よく使われる一方法は、ＤＥＳ（Data Encryption Standard）法である。この方法を使って、例えば、６４ビットの平文メッセージＭＥ（即ち入力データ）と５６ビットのシークレットキーＫ０から、６４ビットでコード化され、暗号化されたメッセージＭＳ（即ち出力データ）を作成することができる。
【０００６】
ＤＥＳのメインステップを、図１に詳細に記載する。最初の順序換え（permutation）ＩＰの後、入力データの該順序換えされたビットで形成するブロックが、左側部Ｌ０と右側部Ｒ０とに分離される。
【０００７】
この後、１６ラウンドの同一演算が行われる。前記演算の各ラウンドの間、演算の先行するラウンドの間に計算された中間データの、右側部（Ｒ０,・・・、Ｒ１５）は、変換Ｆと呼ばれる変換の間に、導出キー（derivative key）と組合わせられる。変換Ｆの結果は、演算の前ラウンドの間に計算された中間データの、左側部（Ｌ０,・・・、Ｌ１５）に加えられる（XOR演算）。
【０００８】
第１６中間データの１６ラウンドの演算の後に、左側部Ｌ16と右側部Ｒ16は集められ、最終順序換えＩＰ−１（これは、最初の順序換えＩＰの反転である）でプロセスは完了する。
【０００９】
１と１６の間に含まれる演算のｉランキングラウンドについて、図２に詳細に記載する。前ラウンドの間に計算された中間キーＫｉ−１の56ビット/は、シフトされ（演算Ｓi）、新規アップデートされた中間キーＫiを与える。次に、56から48ビットを、順序換え/圧縮のＰＣ演算が選択し、導出キーＭiを与える。但しＭi＝ＰＣ（Ｋi）＝ＰＣ（Ｓi（Ｋi-1））。ステップＰＣとＳｉは、キー計算ステップＥＴ2（キー計算手段）を形成する。
【００１０】
並行して変換Ｆが実行される。先行するラウンドにおいて計算された、１つの中間データの右側部Ｒｉ-1は、拡張演算（演算Ｅ）により48ビットに拡張され、ＸＯＲタイプ演算により導出されたキーＭと組合わされ、置換演算（substitution operation）により新規32ビットにより置換され（演算ＳＢＯＸで表される）、次に、再度順序換えされる（演算Ｐ）。実施する際は、演算Ｆ、Ｐ、Ｅ、ＰＣ、ＳＢＯＸは、どのラウンドでも同一である。反対に、導出キーＫ1からＫ16の計算の間に使用される演算Ｓ1からＳ16は、ラウンド毎に異なる。
【００１１】
ＤＥＳ法の実行時の演算Ｆ、Ｐ、Ｅ、ＰＣ、ＳＢＯＸの特徴は、全て既知である：実行された演算、使用されたパラメータ等。これら特徴は、例えば、特許出願WO  00/46953。又は、“Data Encryption Standard, FIPS PUB46”(1977,1,15発行)に、詳細に説明されている。
【００１２】
シークレットキー又はプライベートキーを使ったコンポーネントのセキュリティは、それが使うキーの秘密維持する能力に依存している。特に、ＳＰＡ分析を受ける時にはそうである。
【００１３】
ＳＰＡ分析において、コンポーネントは、実行するとき、同一入力データMEを適用して、複数回、暗号化法を実行するように構成される。該実行のトレースは、時間の関数として測定される。例えば、該トレースは、コンポーネントの電力消費、又は、時間の関数として放出される電磁エネルギーを表す。測定の組は、平均化され、測定からノイズを除去し、固定入力データＭＥの回路の現実のトレースを取得する。例えば、１組の10から1000の同一測定によれば、測定からノイズを十分除去でき、固定入力データＭＥのコンポーネントの現実のトレースを取得できる。
【００１４】
ＤＥＳ方法の場合の、このようなトレースの形態を図３に示す。この形は、明瞭に、ＤＥＳ法の異なるステップを示す。即ち、最初の順序換え（ｔ1以前の）、ｔ2とｔ1、ｔ3とｔ2、…ｔ17とｔ16の間の16ラウンドの演算、最後の順序換え（ｔ17後の）。
【００１５】
図３のトレースから見て分かるように、標準DES法を使うコンポーネントの場合に使用されるシークレットキーに関する情報を得ることは、極めて簡単である。例えば、演算の各ラウンドで、時間インターバル（この間に、導出キー伝達命令（a derived transfer instruction）が、前記ＸＯＲ演算の実行前に実行される）を同定しながら、導出キーMｉのイメージを決定することができる。全導出キーＭ1〜Ｍ16は、既知の演算で、シークレットキーから取得されるから、前記導出キーの単純なイメージについて知り得れば、シークレットキーについての情報が与えられる。
【００１６】
更に一般的に、シークレットキーを使った暗号化法は、全て、ＳＰＡ分析に対し、多かれ少なかれ弱い。その弱さ（sensitivity）は、特に、シークレットキーが直接に、又は、既知の導出キースケジューリング法により取得され導出された形で使用される、クリティカル段階を実行する期間、特に重要である。例えば、この種のクリティカル段階は、導出キースケジューリング段階（この間に、アップデートされた導出キーＭiは、前回算出されたキーＭi-1から計算される）である。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明の目的は、ＳＰＡの物理的攻撃に対し、免疫力をつけたシークレットキー又はプライベートキーで、暗号化計算の為の安全化方法を実装することである。即ち、暗号化計算の安全化方法は、本方法を実行する時、使用する入力データがどのようなものであるにせよ、本方法を使用する回数がどのようなものであるにせよ、本方法は使用するキーについての情報を与えないものである。
【００１８】
この目的をもって、本発明は、入力データ（ＭＥ）とシークレットキー（Ｋ０）から、出力データを与える暗号化計算法に関する。本方法は、複数の導出キースケジューリングステップ（ＥＴ２）（キー計算手段）を有するもので、既知のキースケジューリング法に従って、前に算出された導出キーからアップデートされた導出キー（Ｍ‘１、…、Ｍ’ｉ、…）を供給するものである。最初のアップデートされた導出キーは、シークレットキー（Ｋ0）から取られる。
【００１９】
本発明によると、本方法は、マスキングステップ（ＥＴ１）（このステップは、シークレットキー（Ｋ０）をマスクするための、最初のキースケジューリングステップ（ＥＴ２）の前に実行される）を含む。なお、アップデートされた導出キー（Ｍ’１，…，Ｍ’ｉ，…）は、本方法を実行する時点毎に異なる。
【００２０】
本発明は、又、本発明による暗号化計算法を使う電子的コンポーネントに関するものである。用語「マスクされた」（即ち「ミックスされた」）は、ここで又は本書の他の部分では、以下の意味に解すべきである。：本発明に従う方法において、データ、結果がマスクされたといわれる時は、二つの実行の間に、特に同一入力データと同一シークレットキーを使った方法を２回実行する間、それらが異なる値を持つ場合である。
【００２１】
このように、本発明による暗号化計算法を使うと、同一入力データで本方法を２回実行するコンポーネントは、二つの異なるトレースを出力する。特に、本方法のクリティカル命令（これは導出キーを使用する）が残すトレースに対応するクリティカル時間インターバル時に。
換言すれば、使用された入力データがどのようなものであるにせよ、例え本発明による暗号化計算法の数回にわたる実行の間に入力データは同一であるにせよ、コンポーネントが残すトレースは、常に、一つの実行時と他の実行時では異なる。
【００２２】
この結果を得るために、マスキングステップの間に、ランダムに選択されたマスキングパラメータはシークレットキーとミックスされ、マスクされたシークレットキーが出力される。最初の導出キーは、最初のキースケジューリングステップの間に、マスクされたシークレットキーから計算される。
マスキングステップの後、非マスクのシークレットキーは消去してもよい。というのは、その後使用されないからである。しかし、シークレットキーは、本方法の次のステップで使用される。本方法のセキュリティはこのように増強される。
【００２３】
このように、本発明では、本発明の実施時に現実に操作されたキー全ては、ランダム数である。何故ならば、それはランダム数（マスキングパラメータ）のマスキングから導かれるものであるからである。従って、本方法の１つの実施から他の実施で、本方法を使うコンポーネントのトレースは、それ自身ランダムである。各実施の前にランダムに選択するマスキングパラメータがあるからである。
【００２４】
従って、コンポーネントのトレースについての、多数の測定を行う時に、同一の入力データを使う場合には、これら測定結果を平均すると、平均トレースになる。これは時間の関数として一定（１組のランダムトレースの平均）である。そして、クリティカルな演算が行われたとしても、これは、使われたキーの値に関する情報を与えない。このように、本発明を使うと、コンポーネントは、如何なるＳＰＡタイプの物理的攻撃に対しも完全に免疫抵抗を有する。
【００２５】
本発明は、このように、ＳＰＡ攻撃の弱点を使い、コンポーネントを保護するものである。確かに、ＳＰＡ攻撃が成功した場合、即ち、ＳＰＡ攻撃がコンポーネントが使うシークレットキーに関する情報を提供する場合、必ず、以下のためのクリティカルな時間インターバルが必要になる。
―入力データＭＥが同一である時、コンポーネントのトレースが、このインターバルに関し同一である、
―このインターバルの期間、可視情報（visible information）は関係がある（relevant）。即ち、この期間、前記情報が、シークレットキー全部又は一部、及び/又は、シークレットキーから導出されたキーの全部又は一部を表す。
【００２６】
仮に使用する入力データが同一であっても、本発明のコンポーネントは、本発明の方法を実施する間には、種々のトレースを与える。従って、クリティカルなインターバル（一つの方法の実施から他の方法の実施において、可視情報は関係が有り、同一である）を見つけることは不可能である。従って、コンポーネントに対するＳＰＡ攻撃はシークレットキーに関する情報を提供することできない。
【００２７】
変形例によると、本発明の方法は、又、以下を含むものである。
―導出計算されたキー又はアップデートされた導出キーを使った計算ステップ、
―前記計算ステップの後で実行され、前記計算ステップの結果に関するマスキングパラメータの寄与を除去するアンマスキングステップ（unmasking step）。
【００２８】
他の変形例において、本発明の方法は、複数計算ステップを有し、各ステップはアップデートされた導出キーを使い、アンマスキングステップは、各計算ステップの後に実行され、先行する計算ステップの結果に関するマスキングパラメータの寄与を除去する。
【００２９】
マスキングステップの間、例えば、以下の演算が実行される。
Ｋ’０＝Ｋ０｜Ｘ０、
Ｋ’０は、マスクされたシークレットキー、
Ｋ０は、シークレットキー、
Ｘ０は、マスキングパラメータである。
演算子｜はミキシング演算子で、好ましくは、２パラメータ線形演算子である。一つの例において、ミキシング演算子は、ＸＯＲ演算子である。
アンマスキングステップの間、ミキシング演算子の逆元（inverse）の演算子は、アップデートされた導出キーから導かれるマスキングパラメータの寄与を除去するのに使用されることが好ましい。
【００３０】
本発明の好ましい実施例によると、本方法は、安全なＤＥＳ法であって、１６ラウンドの演算を有する。各ラウンドの演算は、アップデート導出キーを使う。
【００３１】
一つの実施例において、単一マスキングステップはＤＥＳ方法の第１ラウンド１に先立って実行される。他の実施例では、マスキングステップは、マスキングステップは、ＤＥＳタイプ法の各ラウンドのスタート時に実行される。
各演算ラウンドにおいて、
―計算ステップを含む変換が実行され、これは、先行するラウンド間に計算された        中間データとアップデータされた導出キーを組合わせるものである。
―前記計算ステップの後で、アンマスキングステップが実行される。
【００３２】
各マスクされアップデータされた導出キーが演算ラウンド間に計算される。又は、導出キーの全ては、演算のラウンドとは独立して、別に計算してもよい。例えば、導出キーは、本方法の開始段階の前、又は期間に実施されてもよい。
【発明を実施するための最良の形態】
【００３３】
以下に示す第１の例において、図４に示すダイアグラムの方法を説明する。32ビットの入力データＲ0をエンコードし、シークレットキーＫ０と前記入力データＲ０とから32ビットの出力データＲ１を作成する。
本方法は、導出キー計算ステップＥＴ２と変換ステップＦに、大別することができる。
導出キー計算ステップＥＴ2（導出キー計算手段）は、シークレットキーＫ0から導出キーＭ1を算出する。前記キー計算ステップは、変数Ｋ0の複数ビットをシフトする演算Ｓ1が形成する。これにより、Ｋ１＝Ｓ１（Ｋ０）と順序換え／圧縮演算ステップＰＣが行われる。このように、導出キーＭ１が、次の関係式（relation）により得られる。
Ｍ1＝ＰＣ（Ｓ1（Ｋ0））。
【００３４】
前記変換ステップＦは、前記入力データＲ0及び導出キーＭ1から出力データＲ１を与える。
変換ステップＦは標準ＤＥＳ法のステップＦと同一であり、次のように分割される。データＲ０は拡張Eにより32ビットから48ビットに拡張され、ＸＯＲ演算により、導出キーＭ１と組合わせられ、置換演算ＳＢＯＸの間に、新規の32ビットにより置換され、次に順序換えされる(演算Ｐ)。このように、出力データＲ１は、次の関係式から得られる。
Ｒ１＝Ｐ（ＳＢＯＸ（Ｅ（Ｒ０）＋Ｍ１））．
【００３５】
図４の方法は、本発明によるもので、開始ステップＥＴ０、マスキングステップＥＴ１、差分計算ステップ（a difference computing step）ＥＴ３とアンマスキングステップＥＴ４（図５）を加えて行われる。
開始ステップＥＴ０の間、マスキングパラメータＸ０がランダムに選択される。
マスキングステップＥＴ１（これは、前記開始ステップＥＴ０の後に実行される）の間、マスキングパラメータＸ０は、シークレットキーＫ０とミックスされ、マスクされたシークレットキーＫ’０を出力する。ミキシングは、次の関係式により行われる。
Ｋ’０＝Ｋ０｜Ｘ０。
【００３６】
演算子｜は、ミックスする二変数に関して線形であるように選ばれる。一つの実施例において、演算子｜はＸＯＲ演算子である。演算子｜は、又、線形演算子タイプであってよい。一般的に、演算子｜は、データＡ，Ｂ，Ｃが何であろうとも、次の性質を持つ。
【００３７】
【数１】
2008295109.tif 000003
【００３８】
−演算子｜-1が存在し、｜の逆演算子である。即ち（Ａ｜Ｂ）｜-1Ａ＝Ｂ、
｜ と ｜-1 が同一でありえる。
【００３９】
次に、キー計算ステップＥＴ２（キー計算手段）がシークレットキーＫ’０から実行され、マスクされた導出キーＭ’１を算出する。このように、マスクされ、導出されたキーが次関係式により与えられる。
Ｍ’１＝ＰＣ（Ｓ１（Ｋ’０））＝ＰＣ（Ｓ１（Ｋ０｜Ｘ０））
＝ＰＣ（Ｓ１（Ｋ０）｜ＰＣ（Ｓ１（Ｘ０））
最後の等号は、演算子ＰＣ、Ｓ１、｜が線形演算子であるという事実から導かれる。
ＰＣ（Ｓ１（Ｋ０）＝Ｍ１（図４の例を参照）であるから、それからＭ’１＝Ｍ１｜ＰＣ（Ｓ１（Ｘ０））が導かれる。但し、Ｍ１は、図４の方法により計算された導出キーで、安全なものではない（non secured）。
【００４０】
差分計算ステップＥＴ３（差分計算手段）は、開始ステップＥＴ０の後で実行される。ステップＥＴ３は、キー計算ステップＥＴ２（キー計算手段）の前に、同時に、又は後で実行してもよい。
ステップＥＴ３は、マスクされた導出キーＭ’１に対するパラメータＸ０の寄与（contribution）Ｃ１を決定する。
ステップＥＴ３は、ステップＥＴ２と類似している。ステップＥＴ３は演算Ｓ１及び演算ＰＣを含む。演算Ｓ１はマスキングパラメータＸ１＝Ｓ１（Ｘ０）（Ｘ０のビットをシフトすることでアップデートされる）を出力し、演算ＰＣは寄与Ｃ１を計算する。寄与Ｃ１は、次関係式に基づいて計算される。
Ｃ１＝ＰＣ（Ｓ１（Ｘ０））。
最後にそれからＭ’１＝Ｍ１｜Ｃ１が導かれる。
【００４１】
アンマスキングステップＥＴ４は、変換ステップＦ’（これは、本発明によるステップＥＴ４の追加により修正された変換Ｆに対応する）のサブステップである。ステップＥＴ４は、ＸＯＲ演算子による組合せ演算と非線形置換演算ＳＢＯＸとの間で実行される。
ステップＥＴ４は、アップデートされたパラメータＸ１が組合せ演算の結果に与えた寄与Ｃ１を除去することを目的とする。このために、演算子｜-1が使われる。これは、｜の逆線形演算子である。例えば、演算子｜がＸＯＲとすると、演算子｜-1も又、ＸＯＲである。ステップＥＴ４の出力において、次式を得る。
【００４２】
【数２】
2008295109.tif 000004
【００４３】
このように、寄与Ｃ１を取去った後、ＳＢＯＸ演算子の入力に出現する変数はＥ（Ｒ０）＋Ｍ１である。即ち、本発明に基づくが、しかし安全ではない類似の方法（図４）の演算子ＳＢＯＸの入力に現われる変数と同一である。従って、変換ステップＦ’の出力に現われる出力データは、図４の非安全化方法の変換演算Ｆの出力に現われるものと同一である。
【００４４】
これまで説明してきたように、図４と５の方法が与える結果は、厳密に言って同一である。即ち、入力データ要素とシークレットキーが同一の場合、出力データ値は、両者のケースで同一である。
【００４５】
従来のＤＥＳ法の場合のように、図４の方法は、同一の理由により、ＳＰＡ攻撃に弱い。実際、同一のシークレットキーＫ０に対し、導出キーＭ１の値は、本方法の各実施において、同一である。従って、ＳＰＡ攻撃は、本方法のトレースを測定することにより、可能である。特に、キー計算ステップＥＴ２と変換ステップＦ’の間である時間インターバルにおいて可能である。
【００４６】
これとは、対照的に、本発明による図５の方法は、ＳＰＡタイプ攻撃に対し、免疫抵抗力がある。実際、１つの同一のシークレットキー値Ｋ０に対し、対応する導出キーＭ’１の値は、本方法の一つの実施と他の実施では、常に異なる。なぜならば、アルゴリズムの開始期間にランダムに選択されたマスキングパラメータＸ０は、導出キーＭ’１に対し、ランダムな寄与Ｃ１をする。
このように、本発明によると、本方法は、ＳＰＡ攻撃に対し、ランダムなマスキングパラメータを付加することにより、保護されるのである。
【００４７】
他の例において、図１、２に示すＤＥＳ法を説明する。上記に見られるように、ＤＥＳ暗号化法は、シークレットキーＫ０と入力ＭＥから出力データＭＳを計算する。ＤＥＳ法は１６ラウンド演算から構成されており、入力順序換えＩＰがそれに先行し、出力順序変えＩＰ−１（これは、入力順序換えの反転演算である）が後続する。各演算ラウンドは、特に（ステップ２）、導出キー計算ステップＥＴ２（導出キー計算手段）と変換ステップＦを含む。
【００４８】
本発明によると、開始ステップＥＴ０、マスキングステップＥＴ１の追加及び、各演算ラウンドで差計算ステップＥＴ３、アンマスキングステップＥＴ４の追加により、ＤＥＳ法は安全化される（図６）。これは、図５と同様である。説明を明確に単純にするために、第ｉラウンドの演算だけを図６に示す。演算は本発明の特徴ステップＥＴ０〜ＥＴ４を有している。但し、ｉは１〜１６の間の整数である。
【００４９】
開始ステップＥＴ０の間に、マスキングパラメータＸ０がランダムに選択される。
マスキングステップＥＴ１の間に、開始ステップＥＴ０の後で、マスキングパラメータＸ０は、シークレットキーＫ０とミックスされ、上記実施例に示したように、マスクされたシークレットキーＫ’０を与える。このミキシングは、次の関係式に基づいて行われる。：
Ｋ’０＝Ｋ０｜Ｘ０
【００５０】
第ｉラウンドにおいて、キー計算ステップＥＴ２（キー計算手段）は、第ｉランキングのマスクされた中間キーＫ’i-1（先行するｉ−1ランキングラウンドのステップＥＴ２の間に計算された、）からマスクされた導出キーＭ’ｉを与える。ステップＥＴ２は、演算Ｓｉ（前に計算されマスクされた中間キーＫ’ｉ−１のビットをシフトする）と演算ＰＣを含む。以下の関係式を得る。
【００５１】
【数３】
2008295109.tif 000005
【００５２】
最後の複数等号は、線形演算子ＰＣ、Ｓi、｜の性質から得られるものである。更に、ＰＣ（Ｓi（Ｋi-1））＝Ｍi（図２の例参照）から、次式が導かれる。
Ｍ’ｉ＝Ｍi｜ＰＣ（Ｓｉ（Ｘｉ−１））
【００５３】
差計算ステップＥＴ３は、開始ステップＥＴ０の後、実行される。ステップＥＴ３は、ステップＥＴ２の前に、平行して、又は後に、実行してもよい。ステップＥＴ３は、マスキングパラメータＸ０の値をアップデートし、Ｘｉ−１が導出キーＭ’ｉに与える寄与Ｃｉを決定する。
【００５４】
ステップＥＴ３は、キー計算ステップＥＴ２（キー計算ステップ）と同様である。ＥＴ３は、演算Ｓｉ（パラメータＸｉ−１のビットをシフトすることによりＸｉを出力する）と演算ＰＣ（寄与Ｃｉを出力するように順序換え／圧縮を行う）を有する。寄与Ｃｉは、次の関係式から計算される。
Ｃｉ＝ＰＣ（Ｘｉ）＝ＰＣ（Ｓｉ（Ｘｉ−１））。
これから、最後に、次式が導かれる。
Ｍ’i＝Ｍi｜Ｃi
【００５５】
アンマスキングステップＥＴ４は変換ステップＦ’（本発明のステップＥＴ４を追加して修正される変換Ｆに対応する）のサブステップである；ステップＥＴ４は、ＸＯＲ演算子の組合せ演算と非線形置換演算ＳＢＯＸの間で実行される。ステップＥＴ４は、演算子｜-1を使ってアップデートされたマスキングパラメータＸｉが与える寄与Ｃｉを除去するものである。ステップＥＴ４の後に、ＳＢＯＸ演算子の入力に現われる変数は、次に等しい。
【００５６】
【数４】
2008295109.tif 000006
【００５７】
従って、それは類似の方法であるが（図１、２）、本発明によるが安全なものではない方法の演算子ＳＢＯＸの入力に現われる変数と同一である。従って、変換ステップＦ’の出力に現れるデータＲｉは、非安全（non-secured）ＤＥＳ法（図１，２）の変換演算Ｆの出力に現われるものと同一である。
【００５８】
このように、本発明による安全化ＤＥＳ法を使うと、計算される中間データＬｉ、Ｒｉ（但しｉは、1〜16の整数である）は、標準的なＤＥＳ法で得られるものと同一である。これとは対照的に、本発明による安全化法を使うと、使用されるどのキー（シークレットキー、中間キー、導出キー）も、ＳＰＡ攻撃にアクセスされることはない。更に具体的に言えば、導出キー計算に対応する本方法のステップに対するＳＰＡ攻撃は、シークレットキーに関する、及び／又は、複数中間キーＫｉ又は複数導出キーの１つに関する情報を与えるものでない。実際、これらキ-の値は、本方法が使用する入力データ又はシークレットキーが、どのようなものであろうと、本方法の実行時に異なっている。
【００５９】
図６の方法の修正及び/又は改良は、本発明の範囲から逸脱しない範囲で可能である。
例えば、図６のＤＥＳ法において、キー計算ステップＥＴ２（キー計算手段）と差分計算ステップＥＴ３（差分計算手段）は、キーＭ’ｉと寄与Ｃｉ（これは、ステップＥＴ２，ＥＴ３により生成される）を使う演算ラウンドの期間に実行される。
【００６０】
しかし、ＤＥＳ法の演算ラウンドとは独立に、ステップＥＴ２、ＥＴ３を実行することは、可能である。例えば、本方法の開始フェーズの間に、Ｘ０を選択するためのステップＥＴ０の後で、全ステップＥＴ２、ＥＴ３を実行することは可能である。全キーＭ’1，Ｍ’１６及び全寄与Ｃ１〜Ｃ１６は、この場合、記憶され、使用される演算ラウンドで供給される。
最後に、留意すべきは、個々に説明した例全部は、本発明の範囲を制限するものではないと考えるべきである。
【００６１】
本発明に不可欠なことは、ランダムパラメータを暗号化法に導入することである。それは、入力データ及び/又はシークレットキー及び/又は出力データの値がどのようなものであろうと、コンポーネントによる本方法の二つの実施の間に、このコンポーネントが、異なる複数キー（シークレットキー、中間キー、導出キー）を使用するようにするためである。特に、同一入力データ及び/又は同一シークレットキー及び/又は同一出力データを使用する二つの実施の間に。
このように、本方法を実施する場合において、異なるキーを使用することによって、本方法は、異なるトレースを生成する。従って、本方法は、ＳＰＡ攻撃に強いものである。
【図面の簡単な説明】
【００６２】
【図１】シークレットキーを使った既知の暗号化法を説明するブロック図である。
【図２】図１の方法の詳細ステップを説明する流れ図である。
【図３】時間の関数として、図１の暗号化法を使った部品が残した実際のトレースである。
【図４】簡単化された暗号化法の流れ図である。
【図５】本発明により安全化された図４の方法の流れ図である。
【図６】本発明により安全化されたＤＥＳタイプの流れ図である。
【図１】
2008295109.tif 000007
【図２】
2008295109.tif 000008
【図３】
2008295109.tif 000009
【図４】
2008295109.tif 000010
【図５】
2008295109.tif 000011
【図６】
2008295109.tif 000012
【手続補正書】
【提出日】平成20年10月10日(2008.10.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力データ（ＭＥ）とシークレットキー（Ｋ０）から出力データ（ＭＳ）を得る暗号化計算方法であって、
前記暗号化計算方法は、既知のキー計算方法に基づいて、先行するキー計算ステップの間に計算された導出キー（Ｍ’ｉ−１）からアップデートされた導出キー（Ｍ′i）を算出する複数の演算ステップ（ＥＴ２）を有し（但し、最初のアップデートされた導出キー（Ｍ′1）はシークレットキー（Ｋ0）から算出される）、
また、前記暗号化計算方法は、最初のキー計算ステップ（ＥＴ２）の前に実行される単一のマスキングステップ（ＥＴ１）を有し、シークレットキー（Ｋ０）をマスクし、各アップデートされた導出計算キー（Ｍ’１、Ｍ’ｉ）が本方法の各実行時異なることを特徴とする暗号化計算方法。
【請求項２】
マスキングステップ（ＥＴ１）の間に、ランダムに選択されたマスキングパラメータ（Ｘ０）がシークレットキー（Ｋ０）とミックスされ、マスクされたシークレットキー（Ｋ′０）が算出され、最初のキー計算ステップ（ＥＴ２）において、最初の導出キー（Ｍ’１）はマスクされたシークレットキー（Ｋ０）から計算されることを特徴とする請求項１に記載の暗号化計算方法。
【請求項３】
マスキングステップ（ＥＴ１）は、前記方法の開始ステップ（ＥＴ０，ＥＴ１）の間に実行されることを特徴とする請求項２に記載の暗号化計算方法。
【請求項４】
―アップデータされた導出キー（Ｍ’１、…、Ｍ’ｉ、…）を使う計算ステップ（ＥＴ５）と、
―以前の計算ステップの結果からマスキングパラメータ（Ｘ０）の寄与を除去するために、計算ステップ（ＥＴ５）の後に実行するアンマスキングステップ（ＥＴ４）と、
を含む請求項２又は請求項３に記載の暗号化計算方法。
【請求項５】
マスキングステップ（ＥＴ１）の間に、
Ｋ’０＝Ｋ０｜Ｘ０
但し、Ｋ’０は、マスクされたシークレットキーであり、
Ｋ０は、シークレットキーであり、
Ｘ０は、マスキングパラメータであり、
｜は、マスキング演算子である。
の演算が実行されることを特徴とする請求項２〜４のいずれか１項に記載の暗号化計算方法。
【請求項６】
前記ミキシング演算子は、２パラメータ線形演算子であることを特徴とする請求項５に記載の暗号化計算方法。
【請求項７】
ミキシング演算子は、ＸＯＲ演算子であることを特徴とする請求項５又は６に記載の暗号化計算方法。
【請求項８】
アンマスキングステップ（ＥＴ４）において、ミキシング演算子の反転演算子が使われることを特徴とする請求項４に記載の暗号化計算方法。
【請求項９】
アップデートされた導出キー（Ｍ’１、…、Ｍ’ｉ、…）を使う複数計算ステップ（ＥＴ５）を有し、又、各計算ステップ（ＥＴ５）の後、アンマスキングステップ（ＥＴ４）を実行し、先行する計算ステップ（ＥＴ５）の結果からマスキングパラメータ（Ｘ０）の寄与を除去することを特徴とする請求項２〜８のいずれか１項に記載の暗号化計算方法。
【請求項１０】
各ラウンドの演算はアップデートされた導出キー（Ｍ′１、…、Ｍ′１６）を使い、第１ラウンドより前にマスキングステップ（ＥＴ１）を実行する、１６ラウンドの演算を行うＤＥＳ方法による、請求項２〜８のいずれか１項の暗号化計算方法。
【請求項１１】
各操作ラウンドにおいて、次の演算を含む変換Ｆが実行される請求項１０に記載の暗号化計算方法。
―先行するラウンドで計算された中間データと、アップデータされた導出キー（Ｍ’１、…Ｍ’１６）とを組合わせる計算ステップ（ＥＴ５）と、
―前記計算ステップの後実行するアンマスキングステップ（ＥＴ４）と、
を含む、請求項１０記載の方法。
【請求項１２】
入力データ（ＭＥ）とシークレットキー（Ｋ０）から出力データ（ＭＳ）を得る暗号化計算装置であって、
前記暗号化計算装置は、所定のキー計算方法を使って、先行するキー計算の間に計算された導出キー（Ｍ’ｉ−１）からアップデートされた導出キー（Ｍ′i）を算出する複数の演算手段を有し（但し、最初のアップデートされた導出キー（Ｍ′1）はシークレットキー（Ｋ0）から算出される）、
また、前記暗号化計算装置は、単一のマスキング演算を最初のキー計算の前に実行し、シークレットキー（Ｋ０）をマスクする演算をおこない、各アップデートされた導出計算キー（Ｍ’１、Ｍ’ｉ）が各演算ラウンド毎に異なることを特徴とする暗号化計算装置。