説明

安全化暗号化方法及び装置

【課題】暗号化法を実行して、コンポーネントの電力消費から又は電磁放射から、暗号化キーに関する情報を取得する物理的攻撃からコンポーネントを守る。
【解決手段】本発明は入力とシークレットキーから出力を得るために連続的に実行される計算のNサイクルを含むもので、入力をマスクし、計算サイクルにより使用され生成された各データをマスクするための第1マスキングレベルを生成するステップと、各計算サイクル内で操作されるデータをマスクするための第2マスキングレベルを生成するステップとからなる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シークレットキー又はプライベートキーを持つ暗号化計算方法及び装置に関するものである。更に、具体的に言えば、本発明は、前記方法又は装置が適用されたコンポーネントの電力消費から又は電磁放射から、シークレットキー又はプライベートキーに関する情報を取得する物理的攻撃からコンポーネントを守ることを目的とする。
【背景技術】
【0002】
本発明によるコンポーネントは、特に、各種サービス及び/又はデータに対するアクセスが厳しく管理される用途に使用される。これらコンポーネントは、通常、マイクロプロセッサーと、特にシークレットキーを有するプログラムメモリの周辺に形成されるアーキテクチャを有している。
【0003】
このコンポーネントは、例えば、スマートカード、特にバンキング用スマートカードにおいて、コントロール端末又は遠隔端末を介して使用される。
このコンポーネントは、1つ又は複数のシークレットキー暗号化法又はプライベートキー暗号化法を用いて、入力データから出力データを計算する。この方法を使って、例えば、暗号化、暗号解読、入力メッセージのサイン又は、その入力メッセージのサインの認証を行う。
【0004】
取引の安全性を保証する為に、シークレットキー又はプライベートキー暗号化法は、アルゴリズムの入力データ及び/又は出力データから、使用されるシークレットキーを決定することができないように構築されている。しかし、コンポーネントのセキュリティは、シークレットキーを秘密保持する能力に依存している。
【0005】
よく使われる一方法は、DES(Data Encryption Standard)法である。この方法を使って、例えば、64ビットの平分メッセージME(即ち、入力データ)と56ビットのシークレットキーK0とから、64ビットでコード化された暗号化メッセージMS(即ち出力データ)を作成することができる。
【0006】
DESのメインステップが図1に詳細に示されている。最初の順序換え(permutation)IPの後、入力データの順序換えされたビットで形成されたブロックが、左側部L0と右側部R0とに分離される。
【0007】
この後、16ラウンドの同一演算が行われる。各演算ラウンドの間、先行する演算ラウンドにおいて計算された中間データの右側部(R0,・・・、R15)は、導出キー(derivative key)とミックスされる。このミキシングは変換Fと呼ばれる変換の間に行われる。変換Fの結果は、先行する演算ラウンドの時に計算された中間データの左側部(L0,・・・、L15)に加えられる(XOR演算)。
【0008】
第16演算ラウンドの後に、第16中間データの左側部L16と右側部R16は集められ、最終順序換えIP−1(最初の順序換えIPの逆元である)でプロセスが終了する。
【0009】
第iランキング演算ラウンドLi(但し,iは1と16の間に含まれる整数)が図2に詳細に示されている。キー計算ステップETにおいて、先行するラウンドの時に計算された中間キーKi−1の56ビットは、シフトされ(演算Si)、新規にアップデートされた中間キーKiを与える。次に、56から48ビットが順序換え/圧縮のPC演算により選択され、導出キーMiを与える。但しMi=PC(Ki)=PC(Si(Ki−1))。
【0010】
並行して、変換Fが実行される。先行するラウンドで計算された、1つの中間データの右側部Ri−1は、拡張演算(演算E)により、48ビットに拡張され、XORタイプ演算により導出されたキーMiと組合わされ、非線形置換演算により新規32ビットに置換され(演算SBOXで表される)、次に、再度順序換えされる(演算P)。
【0011】
変換Fの結果は、次に、XOR演算により、先行するラウンドで計算された中間データ(Li―1、Ri―1)の左側部Li―1と組合わされる。この組合わせはアップデートされた中間データの右側部Riを与える。アップデートされた中間データの左側部LiはRiに等しい。
【0012】
演算F、P、E、PC、SBOXは、どのラウンドでも同一である。反対に、導出キーK1〜K16の計算に使われる演算S1〜S16は、ラウンド毎に異なる。
【0013】
DES法実行時の演算F、P、E、PC、SBOXの特性は、全て既知である:実行される計算、使われるパラメータ等。例えば、これら特性は特許出願WO 00/46953、又は、規格“Data Encryption Standard, FIPS PUB46”(1977,1,15発行)に詳細に説明されている。
【0014】
シークレットキー又はプライベートキーを使ったコンポーネントのセキュリティは、使うキーの秘密保持能力に依存している。安全にするためには、コンポーネントは、DPA(Differential Power Analysis)アナリシスを受ける時に、シークレットキーを秘密保持できなければならない。
【0015】
DPAアナリシスにおいて、コンポーネントの消費についての統計的アナリシスを行う。即ち、時間経過に従ってコンポーネントが残すトレースについての統計を行う。このためには、約1000のトレースの測定のサンプルが使われる。入力データME[i=1〜1000]に対応する各トレースは、互いに異なり、独立している。統計的研究により、シークレットキーのビットの値についての1つ又は複数の仮定を検証することができる。
【0016】
DES暗号化法を使ったコンポーネントに対しDPAアナリシスを行う実施例について、WO 00/46953に(特にその第3,4頁に)詳述されている。
DES暗号化法は、SBOX演算子の出力において、特にDPAの攻撃に対して弱い。更に一般的に言えば、暗号化法は、シークレットキーが入力データ又は出力データと組合わせられて出現するポイントのDPAアナリシスに対して弱い。
【0017】
即ち、実際には,DES方法は、全演算ラウンドの、複数演算子(XOR、P、E、PC、SBOX等)の全出力において攻撃に対して弱い。というのは、シークレットキーは、第1演算ラウンドの入力データと組合せられるからである。
例えば、入力データMEを知った上で、シークレットキーK0についての仮定を行うと、第1演算ラウンドの出力である中間データ(L1、R1)の少なくとも1ビットの値の予測が可能である。この予測が検証されれば、シークレットキーに関する仮定が検証される。
【0018】
安全にするには、SPA分析(Simple Power Analysis)を受ける時に、コンポーネントはシークレットキーを秘密保持できなければならない。
【0019】
SPA分析では、コンポーネントにより、同一入力データMEをそれに適用して、暗号化法が複数回実行される。この方法が実行される毎に、この実行のトレースは時間の関数として測定される。例えば、該トレースはコンポーネントの電力消費、又は、時間の関数として放出される電磁エネルギーを表す。測定の組は平均化され、測定からノイズを除去し、固定入力データMEに対して回路の現実のトレースを取得する。例えば、10から100の同一測定の組によれば、測定からノイズを十分除去でき、固定入力データMEについてコンポーネントの現実のトレースを取得できる。
【0020】
フィルターリングの後、コンポーネントの実際のトレースについて、DES法の種々のステップを区別することができる。:最初の順序換えIP、演算の16ラウンド、及び最後の順序換えIP-1
【0021】
DES法は、シークレットキーが最初の形K0又は他の形(中間キーK1、・・・、K16、導出キーM1、・・・、M16)で出現する時点で、SPA分析に対して弱い(sensitive)。実際、SPA分析により、演算の第iラウンドについて、導出キーMiのイメージを決定することが可能である。例えば、導出キーMiがXOR演算実行前に移動される(transferred)期間を同定することが可能である。全導出キーM1〜M16が、シークレットキーK0から既知の演算で得られるのであるから、導出キーの単純なイメージを知ることは、シークレットキーK0についての情報を与えることになる。
【0022】
一般に、全ての暗号化法は多少ともDPA攻撃に弱い。特に、予測可能な中間結果が現われる場所では、そうである。前記中間結果とは、入力データ(又は入力データからの導出されたデータ)とシークレットキー又はプライベートキー(又はシークレットキー又はプライベートキーから得られるキー)、若しくは、出力データ(又は入力データから導出されるデータ)とシークレットキー(又はシークレットキーから得られるキー)の組合わせである。この種の中間結果は、実際、入力データ及び/又は出力データから、及び使用キーに関する仮定から、予測可能である。というのは、使用される暗号化法(使用する演算子、これら演算子の使用のオーダー等)が既知だからである。DPA攻撃は、仮定を検証することにより、使用キーについての情報を与えるものである。
実際に、一旦入力データが始めてシークレットキーとミックスされてしまうと、全ての方法は入力データ(又は入力データの導出データ)を使ったそれらのステップ(又はサブステップ)の全演算子の出力において弱い。同様に、全ての方法は出力データ、及びシークレットキー又はプライベートキーに依存する結果を出力する全演算子の出力において弱い。入力データが初めてシークレットキー又はプライベートキーとミックスされる時、そうである。
【0023】
同じように、シークレットキーを使う全暗号化法は、多少、SPA分析に対して弱い。特にキーが、最初の形で、又はクリティカルステップとして知られているステップにおいて(この間に、シークレットキーは、直接に又は、既知の導出キー計算法を使って導出された形で使用される)、単独で現われるところでは、極めて弱い。この種のクリティカルステップとは、例えば、中間又は導出キー計算ステップである(この間、キーが、シークレット又はプライベートキー、又は以前に計算された中間キーから計算される)。
【発明の開示】
【発明が解決しようとする課題】
【0024】
本発明の目的は、DPAの物理的攻撃に対し、免疫力をつけたシークレットキー又はプライベートキーで、暗号化計算の為の安全化方法を実装することである。即ち、暗号化計算の安全化方法は、本方法の実装の時、本方法が使用する入力データがどのようなものであるにせよ、本方法を使用する回数がどのようなものであるにせよ、又、トレースの統計的調査が行われるとしても、使用するキーについての情報を与えない。
【0025】
本発明の他の目的は、シークレットキー又はプライベートキーを持つ暗号化計算の安全化法の実装であり、DPAの攻撃からシークレットキー又はプライベートキー保護するものである。
【0026】
本発明は、これら目的をもつ暗号化計算の保護方法に関する。この方法は、Nの計算ラウンドを有し、連続的に実行し、入力データとシークレットキーから出力を生成する。
【0027】
本発明によると、本方法(又は装置)は、以下を有する。
―入力データをマスクする第1マスキングステージ(第1マスキング手段):結果、各中間データ(使用され、計算ラウンドで生成される)がマスクされる。
―各計算ラウンドの内部で演算されるデータをマスクする第2マスキングステージ(第2マスキング手段)。
【0028】
また、本発明は電子コンポーネントに関するもので、前記の通り説明し、以下に説明する方法を使う。
【0029】
用語「マスクされた」(又は「ミックスされた」)は、ここで又は本書の他の部分では、以下の意味に解すべきである。:本発明に従う方法において、データ、結果、オペランドは以下の時にマスクされたという。即ち、二つの本発明の実行の間に、特に同一入力データと同一シークレットキー又はプライベートキーを使う方法を2つ実行する間に、それらが異なる値を持つ時。
【0030】
このように、本発明を使うと、計算ラウンドが算出するデータはマスクされる。なぜなら、計算ラウンド(最初のマスキングステージ)の前に入力データがマスクされるからである。従って、例え、入力データとシークレットキーが同一であっても、計算ラウンドが算出するデータは本方法の実行毎に異なる。
【0031】
更に、本発明による方法(又は装置)における第2マスキングステージ(第2マスキング手段)は、計算ラウンド内部で演算されたデータのマスキングを可能にする。
このように、本発明で使われる二つのマスキングステージ(マスキング手段)は、計算ラウンドの内外で操作されるデータのマスキングを可能にする。
【0032】
本発明の方法を使うコンポーネントに対し、電力消費(又は、電磁放射)の統計的調査をしても必ず失敗する。:使用されるキーに関する情報を取得することはできない。コンポーネントの電力消費が使用されるキーの値と無関係だからである。
【0033】
第1マスキングステージ(第1マスキング手段)を実行するために、次のステップを実行することが好ましい。
―第1マスキングステップET01(第1計算ラウンド(ラウンド1)の前に実行し、入力データをマスクする)と、
―第1アンマスキングステップET10(第N回計算ラウンド(ラウンドN)の後に実行し、非マスクの出力データを算出する)。
【0034】
第2マスキングステージ(第2マスキング手段)を実行するために、本方法の第iランキング計算ラウンドにおいて次のステップを実行することが好ましい。
―iランキング計算ラウンドに先行するステップの結果をマスクするための第2マスキングステップET3、
―マスクされた非線形演算子SBOX′を使ってマスクされた結果を置換するための置換ステップET6、
―ステップET6の結果をアンマスクするための第2アンマスキングステップET9。
【0035】
第1マスキングステップET01の間に、第1マスキングパラメータが、入力データMEとミックスされて、第1計算ラウンドでマスクされた入力データを算出する。このミキシングは、第1線形ミキシング演算子を使って行われる。
【0036】
セキュリティを最大にする方法を提供するために、第1マスキングパラメータが、本方法の実行時に、マスキングステップの間でランダムに選択されることが好ましい。第1マスキングパラメータは、本方法を実行するM回のケースに対応する期間においてのみ、ランダムに選択することができる。この場合、M回の実行について同一のマスキングパラメータが使われる。
【0037】
第1マスキングステップは、このように入力データをランダムパラメータとミキシングすることにより、入力データMEと中間データ(入力データMEから取得され、計算ラウンドで使用され生成された)の間の相関を除去する。
【0038】
本方法の終了時、第1アンマスキングステップの間に、第N計算ラウンドの結果に対する寄与(contribution:第1マスキングパラメータにより作成された)が、第N回計算ラウンドの結果から減算される。本方法の最後で、アンマスキングステップは予測した出力データを取り出すことを可能にする。具体的には、本方法が同一の入力データと同一のシークレットキーを使って2回実行される場合、出力データMSは2回ともに同一となる。しかし、中間データは異なる。
【0039】
第2マスキングステージ(第2マスキング手段)を実行するには、本方法が第3マスキングステップET03(第1計算ラウンドの前に実行される)を有することが好ましい。これはマスクされた非線形演算子SBOX’を生成する。同演算子は各データAについて、以下の関係式を検証する。
【0040】
【数1】

【0041】
セキュリティを最大にするように、マスキングパラメータの中から少なくとも1つが本方法の実行時に選択されることが好ましい。
本発明の変形によれば、本方法の実施のM事例ごとに、マスキングパラメータの1つがランダムに選択される。
また、好ましくは、ミキシング演算子は線形である。一例として、XOR演算子をミキシング演算子の1つとして選ぶことができる。
【0042】
本発明による方法は、既知のキー計算法に従ってシークレットキーから導出キーを算出する導出キー計算ステップを含んでいる。本方法は、第4マスキングステップを追加(導出キー計算ステップの前に実行される)補完され、シークレットキーをマスクする。結果、計算された導出キーは本方法の実施毎に異なる。
【0043】
このように、導出キー(1つ又は複数の)及び/又は中間計算キー(1つ又は複数の)は全てランダムパラメータを加算してマスクされるので、例えばSPAによりコンポーネントの電力消費(power consumption)を分析しても、シークレットキーに関する情報を得ることはできない。
【0044】
実行モードによると、第4マスキングステップの間に、ランダムに選択されたマスキングパラメータは、第4マスキング演算子によりシークレットキーとミックスされ、マスクされたシークレットキー、マスクされた導出キー(前記マスクされたシークレットキーから計算された)を算出する。
【発明を実施するための最良の形態】
【0045】
上記説明したとおり、DES法は、シークレットキーK0と入力データMEから出力データを計算する。DES法には、16計算ラウンドがある。最初の順序換えIP(図3a)が、これに先行し、最後の順序換えIP−1(図3b)(これは最初の順序換えの逆元である)がこの後に続く。各計算ラウンドは(図2)、送出キー計算ステップET1、変換ステップF’、XOR演算子による組合せステップET8を含む。
【0046】
DES法は、本発明によれば、二つのマスキングステージを追加することにより、安全化される。第1のマスキングステージは、マスキングステップET01(図3a)とアンマスキングステップET10(図3b)を有する。第2マスキングステージは、各計算ラウンドで実行され、マスキングステップET3と、マスクされる非線形演算子SBOX’による置換ステップET6とアンマスキングステップET9を含む。
【0047】
図3a、3bの例において、本方法は、第4のサブステップET00〜ET03を含む開始ステップET0を有する。開始ステップの目的は、第1マスキングステージ(ステップET01:入力データMEのマスキング)(第1マスキング手段)を実行し、第2マスキングステージ(非線形演算子SBOX’による計算による)(第2マスキング手段)を準備することである。第2マスキングステージ(第2マスキング手段)は、各計算ラウンドで実行される。
【0048】
ステップET00の間に、三つのマスキングパラメータX1,X2、X3がランダムに選択される。それらは、例えば、本方法の実行の際に変更される。それらは、本方法を実施するM回の事例で、変更される。
【0049】
ステップET01の間に、入力の左側部と右側部が分離され、パラメータX1によりマスクされて、マスクされた左側部L’0=L0&X1と、マスクされた右側部R’0=R0&X1を算出する。マスキングは第1マスキング演算子&により行われる。
【0050】
演算子&は、ミキシングに使う二変数に関して線形である。一実施例において、演算子&はXOR演算子である。一般に、データA,B,Cがどのようなものであろうとも、演算子&は、以下の性質を有している。
【0051】
【数2】

【0052】
演算子&−1は、&の逆元で、(A&B)&−1A=B、ケースによっては、&−1と&は同一である。
【0053】
ステップET02において、変数VX1=E(X1)、VX2=P(X2)が計算される。既知のDES法において規定されているように、演算子E、Pは、それぞれ拡張、及び単純な順序換えである。
ステップET03の間に、新規非線形演算子SBOX’が、次の関係式により計算される。
SBOX’=FCT(SBOX、X2、X3)
但し、SBOXは、既知のDES法で使用される非線形演算子で、X2、X3は、ランダムパラメータである。FCTは、次の関数である。
SBOX’[A@X3]=SBOX[A]#X2、(Aの如何なる値に対しても)
@、#は、線形ミキシング演算子で、演算子&と同様な性質を持つものである。
@、#は、互いに異なるもので、これらは、演算子&と異なってもよい。
【0054】
次に演算の第1ラウンドが実行される。;それは9のステップET1〜ET9にサブ分割することができる。
【0055】
キー計算ステップET1の間に、導出キーM1がシークレットキーK0から計算される。第1のアップデートされた導出キーM1は次式から算出される。
M1=PC(S1(K0))=PC(K1)。
K1は第1のアップデートされた中間キーであり、その後、演算の第2ラウンドにおいて算出される(図4a、4bには示されない)。演算子PC、S1は、それぞれ、順序換え−圧縮、ビットシフト演算である。これらは、既知のDES法で規定されている。ステップET1は、従って、既知のDES法で規定されているキー計算ステップと同一である。
【0056】
次のステップET2〜ET8は変換ステップF’を形成する。これは、従来技術の方法の変換F(ステップET3とET4を追加し、本発明による新規演算子SBOX’で演算子SBOXを置換して、変更した)に対応するものである。
【0057】
ステップET2のとき、データR’0に対して拡張が行われる。
この演算の結果、E(R’0)は、次に、第2のマスキング演算子@により、パラメータX3とミックスされる。
【0058】
次のステップET4は、第1アンマスキングステップで、前の演算結果から、この結果(これは、マスキングパラメータX1により形成された)に対する寄与を取除くものである。この目的のために、以下の演算が実行される。
【0059】
【数3】

【0060】
次のステップET5の間に、前のステップET4の結果が、XOR演算により、アップデートされた導出キーM1とミックスされる。ステップET5は、次の結果を算出する。
【0061】
【数4】

【0062】
ステップET6において、非線形演算SBOX’が、前の演算の結果について実行される。ステップET6は、次の結果を算出する。
【0063】
【数5】

【0064】
これは、非線形演算子SBOX’の定義に基づくものである。
次に、1ビット順序換えPがこの結果(ステップET7)に行われる。こうして、次の式を得る。
【0065】
【数6】

【0066】
この結果は、演算子Pの線形性から単純に導かれる。
【0067】
次に、ステップET8において、順序換えPの結果は、XOR演算を使ってデータL’0(ステップET01の間に計算された)に加算される。ステップET8は、既知のDES法の対応するステップに類似している。こうして、次の式が得られる。
【0068】
【数7】

【0069】
但し、R1は、既知のDES法のコンテキストの中で規定されているように、第1中間データ(L1、R1)の右側部である。又、上記の全ての非等号(inequalities)は、演算子P、&、#の線形性という事実から導かれる。
【0070】
次のステップET9は、第2のアンマスキングステップで、前の演算の結果から、マスキングパラメータX2により得られた結果に対する寄与を取除く。この目的のために、以下の演算が実行される。
【0071】
【数8】

【0072】
第1ラウンドの終わりで、アップデートされた中間データは、(L’1、R’1)に等しい。但し、L’1=R’0=R0&X1=L1&X1、及びR’1=R1&X1。
【0073】
このように、本発明によるDES法を用いて、中間データ(L’1、R’1:第1演算ラウンドに計算される)は中間データ(L1、R1)(非安全である既知のDES法により算出され、演算子&を使って、ランダムパラメータX1によりマスクされる)に等しい。
【0074】
第2ラウンドが、新規アップデートされた中間データ(L’1、R’1)、及びアップデートされた中間キーK1(ステップET1の期間に計算された)を使って実行される。
【0075】
一般に、本方法の演算の第iラウンドは、ステップET1〜ET9の9ステップにサブ分割される。
【0076】
ステップET1において、導出キーM1は中間キーKi-1(前のラウンドで計算される)から算出され、アップデートされる導出キーMi=PC(Si(Ki―1))=PC(Ki) を算出する。Kiは第1のアップデートされる中間キーで、その後、次の演算ラウンドに提供される(図4a、4bで図示されていない)。演算子PC、Siは、それぞれ、順序換え−圧縮、ビットシフト演算である。これらは、既知のDES法で規定されている。
ステップET2において、拡張がデータR’i−1について行われる。
この拡張の結果E(R’i-1)は、第2のマスキング演算子@を使って、パラメータX3とミキシングされる。
次のステップET4において、以下の演算が実行される。
【0077】
【数9】

【0078】
ステップET5において、ステップET4の結果は、XOR演算を使ってアップデートされた導出キーMiとミックスされる。ステップET5は、こうして次の結果を算出する。
【0079】
【数10】

【0080】
ステップET6において、非線形演算SBOX’が前の演算の結果に対して実行される。ステップET6は、次の結果を算出する。
【0081】
【数11】

【0082】
これは、非線形演算SBOX’の定義から導かれるものである。
1ビット順序換え演算Pは、この結果(ステップET7)に適用される。こうして、次式を得る。
【0083】
【数12】

【0084】
ステップET8において、前記順序換えPの結果は、(XOR演算を使って)データL’i−1(先行するラウンドで計算された)に加えられる。そして次式を得る。
【0085】
【数13】

【0086】
但し、Riは第iアップデートされたデータ(Li、Ri)の右側部である。これは、既知のDES法のコンテキストにおいて定義されているとおりである。又、上記の全ての等号は、演算子P、&、#の線形性という事実から導かれるものである。
【0087】
次のステップET9は、第2アンマスキングステップであり、先行する演算の結果から、マスキングパラメータX2によりもたらされた結果に対する寄与を取除くものである。このために、以下の演算が実行される。
【0088】
【数14】

【0089】
第iラウンドの終わりに、アップデートされた中間データは、(L’i、R’i)に等しく、次式が成り立つ。
L’i=R’i-1=Ri-1&X1=Li&X1、及び、R’i=Ri&Xi。
【0090】
このように、本発明によるDES法を使うと、第iラウンドにおいて計算された中間データ(L’i、R’i)は、非安全の既知のDES法により、上記と同一のラウンドで与えられる中間データ(Li、Ri:演算子&を使ってランダムパラメータX1によりマスクされる)に等しい。
新規中間データ(L’i、R’i)は、次のラウンドで算出される。
【0091】
本方法の第16ラウンドで、第16中間データ(L’16、R’16)が算出される。最終アンマスキングの第3ステップET10において、第16データに対するパラメータX1の寄与が演算子&−1により取除かれる。:
L16=L’16&−1X1、R16=R’16&−1X1
【0092】
最後の順序換えIP−1は(ステップET10の後実行される)、本発明に基づくDES法を終了させる。順序換えIP−1は、既知のタイプのDES法の等価な順序換えと同一である。
【0093】
入力データMEとシークレットキーK0が既知の方法及び本発明による方法について同一である限り、本発明によるDES法を使って生成された出力データは、既知のDES法が算出するものと同一である。
【0094】
【数15】

【0095】
本方法を実施する毎にX1、X2、X3はランダムに選択されるから、たとえ、入力データ(L0、R0)又は本発明の方法により使用されるシークレットキーK0の値がどのようなものであろうとも、全中間結果及び中間データの値は本方法を実施する毎に異なる。具体的には、本方法が同一の入力データMEと同一のシークレットキーK0を使って2回実行されるケースを含め、全ての中間結果の値は異なる。
【0096】
少なくとも一つのランダムパラメータの存在により、シークレットキーK0と入力データMEとの間の全ての相関関係は、中間結果又は中間データのレベルで、除去される。従って、DPAの統計分析では、シークレットキー(本発明による安全化方法により使用される)についての情報を取得することはできない。
【0097】
図3a、3bの方法における変更及び/又は改良は、本発明の枠を離れることなく可能である。
例えば、本方法の複数ステップの実行順序を変更することができる。
―複数ステップIP、ET01、ラウンド1、…、ラウンドi、…、ラウンド16、ET10、IP-1は、所望の方法が図1,2のものに類似である場合には、図3a、3bで示した順序で実行しなければならない。
―ステップET00は、ステップET01より前に実行されなければならない。ステップET00は、ステップIPより前、又は同時に実行してもよい。
―ステップET02は、ステップET00とステップET4(第1演算ラウンドの)の間に実行される。;それは、ステップIP、ステップET01とステップET1又はET2の前、又は同時に実行してもよい。
―ステップET03は、演算の第1ラウンドのステップET00とステップET6(第1演算ラウンドの)の間に実行される。;それは、ステップET01、複数ステップET1、ET2、ET3、ET4の前又は後に実行してもよい。対(symmetry)の理由により、ステップET01がステップIPの前に実行される場合には、ステップET10はステップIP-1の後に実行される。反対に、ステップET01がステップIPの後に実行される場合には、ステップET10はステップIP-1の前に実行される。
―各ラウンドiにおいて、導出キーMiをステップET5の実行に利用する為に、ステップET1は実行されなければならない。;ステップET1は、例えば、複数ステップET2、ET3、ET4と同時に実行してもよい。
【0098】
図3a、3bを参照して説明した例において、3つのランダムパラメータX1、X2、X3を使った。このやり方は、一番効率的なやり方で、全ての中間結果をマスクするものである。他の例においては、パラメータを2つだけ(X1、X2)使うことも可能である。この場合、ステップET02は、P(X2)の計算に限定され、全演算ラウンドのステップET3、ET4が無くなり、ステップET03は、変更されて、新規の非線形演算子SBOX''を、次の式で、計算する。
SBOX”=FCT”(SBOX、X1、X2)
但し、FCT”は、次のような関数である。
SBOX”(A&E(X1))=SBOX(A)#X2。
【0099】
【数16】

【0100】
同様に、図3a、3bを参照して説明してきた例において、三つのパラメータX1、X2、X3が、本方法を実施するごとに、ランダムに選択される。しかしながら、パラメータX1、X2、X3を、多少頻繁に変更することができる。例えば、第i演算ラウンドの実行時に、パラメータ、特にX2及び/又はX3を変更することが可能である。この場合、ステップET02、ET03は、各ラウンドで変更パラメータX2、X3を考慮して、実行される。
【0101】
同じ考えで、DPA攻撃を実行するにはM回の実行では十分でないと考えられる場合には、本方法を実施するMのケース毎に、パラメータX1、X2、X3を変更することができる。但し、Mは整数である。この場合、ステップET0において、ステップET01だけが実行される。複数ステップET00、ET02、ET03は本方法のM回の実行期間毎にのみ実行される。
【0102】
他の改良によっても、SPA攻撃に対して本方法を安全化することができる。このタイプの分析に対し、導出キー計算ステップMiは特に弱い。従って、改良は、中間結果に加えて、導出キーをマスクすることである。図3a、3bの方法は、次のステップを追加することにより(図4参照)改良される。:
―開始ステップET0に、サブステップET05、ET06
―本方法の演算の16ラウンドの各ラウンドに、ステップET11、ET12
説明を明瞭に簡単にするために、新規サブステップET05とET06をつけて、本方法の第iラウンドだけを図4に示した。
【0103】
ステップET05において、第4パラメータY0をランダムに選択する。ステップET05は、例えば、ステップET00と同時に実行される。又は、複数ステップIP、ET01、ET02、ET03の中の1つと同時に、実行される。
マスキングステップET06において、第4マスキングパラメータY0(ステップET05の後実行される)は、シークレットキーK0とミックスされ、マスクされたシークレットキーK’0を算出する。このミキシングは、次の式により行われる。:
K’0=K0|Y0
【0104】
演算子|は、ミックスする二変数に関して線形であるように選択される。一実施例では、演算子|はXORである。又、演算子|はどのタイプの線形演算子であってよい。一般に、演算子|は、演算子&、@、#のようなものと類似した性質を有する。
【0105】
次に、第1演算ラウンド(図4には示さないが)が実行される。キー計算ステップET1は、シークレットキーK0からは、もはや直接実行されず、マスクされたシークレットキーK’0から実行される。ステップET1は、次式によって、マスクされた導出キーM’1を算出する。
M’1=PC(S1(K’0))=PC(S1(K0|Y0))
=PC(S1(K0))|PC(S1(Y0))
【0106】
最後の等号は、単に、演算子PC,S1及び|が線形演算子であり、特に交換律(commutatif)又は結合律(associatif)を有するという事実から導かれる。
【0107】
PC(S1(K0))=K1であるから、これから最終的に、M’1=M1|PC(S1(Y0))となる。但し、M1は、計算された導出キーで、図3a、3bを参照して説明されたDES法により計算されたものである。
【0108】
差計算ステップET11は、例えば、キー計算ステップET1の前に、と同時に、又は、の後に、実行される。ステップET11は、パラメータY0により計算されるマスクされた導出キーM’iに対する寄与Ciを決定する。
【0109】
ステップET11はステップET1と類似している。;ステップET11は、マスキングパラメータY1=S1(Y0)(パラメータY0のビットをシフトしてアップデートされる)を算出する演算Si及び、寄与Ciを計算する演算PCを含む。寄与C1は、次式に従って計算される。:C1=PC(S1(Y0))。最終的に、M’1=M1|C1が導かれる。このアップデートされたマスキングパラメータY1は演算の次のラウンドで計算される。
【0110】
アンマスキングステップET12は、変換ステップF”のサブ分割である(F”は、図3a、3bにステップET12を追加したDES法の変換F'に対応する)。ステップET12は、ステップET5とステップET6の間に実行される。ステップET12は、アップデートされたマスキングパラメータY1により与えられる寄与C1を取除く。このために、演算子|−1(これは、演算子|の逆元である)が使用される。ステップET12の出力において、次式が得られる。
【0111】
【数17】

【0112】
【数18】

【0113】
従って、変換F”の出力に現れる出力データは、図3a、3bの方法の変換F’の出力に現われるものと同一である。
【0114】
更に一般的に言えば、演算の第iラウンドにおいて、ステップET1は、次式により、マスクされ、導出されたキーM’iを算出する。
【数19】

【0115】
但し、Miは、図3a、3bを参照して説明したDES法に従って計算したものである。
【0116】
複数演算子PCが、本方法の全ラウンドに対して、同一である(同一特徴、同一パラメータ等)。反対に、ビットシフト演算Siは演算ラウンド毎に異なる。
【0117】
ステップET11は、パラメータYi-1(又は、一般的にY0)によりもたらされる、マスクされた導出キーM’に対する寄与Ciを決定する。ステップET11は、アップデートされたパラメータYi=Si(Yi-1)、及び、次式に従ってアップデータされた寄与Ciを算出する。
Ci=PC(Si(Yi-1))。
最後に、これからM’1=Mi|Ciが導かれる。アップデートされたマスキングパラメータYiは次の演算ラウンドで算出される。
【0118】
ステップET12はステップET5とステップET6の間に実行される。ステップET12の出力において、次式を得る。
【0119】
【数20】

【0120】
こうして、寄与Ciを除去した後で、SBOX’タイプの演算子の入力に現われる変数は、PE(Ri−1)@X3+Miと同一である。即ち、それは、図3a、3bを参照して説明したDES法の演算子SBOX’の入力に現われる変数と同一である。変換ステップF′の出力に現われる出力データは、図3a、3bの方法変換演算F′の出力に現われるものと同一である。
【0121】
最後に、図4の方法によると、全中間結果は、パラメータX1、X2、X3(又はこれらパラメータから導出されたもの(form))の内の少なくとも一つによりマスクされる。更に、全中間キーK’i、全導出キーM’iは、パラメータY0又はY0から導出されたものによりマスクされる。
【図面の簡単な説明】
【0122】
【図1】DESタイプの既知の暗号化法を説明するブロック図である。
【図2】図1の方法の詳細ステップを説明する流れ図である。
【図3a】本発明に基づいて安全化された、図1の方法についての流れ図である。
【図3b】本発明に基づいて安全化された、図1の方法についての流れ図である。
【図4】図3a,図3bの方法の改良したもののブロックダイアグラムである。

【特許請求の範囲】
【請求項1】
連続的に実行されるN計算ラウンドを含み、入力キーとシークレットキーから出力データを生成するための暗号化計算方法であって、
前記暗号化計算方法は、次のステージを有することを特徴とする暗号化計算方法。
―入力データ(ME)をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第1マスキングステージと、
―各計算ラウンド内で演算されたデータをマスクする第2マスキングステージ。
【請求項2】
与えられたシークレットキー(K0)と入力データ(ME)とから暗号化データ(MS)を計算する暗号化計算方法であって、前記暗号化計算方法は、Nラウンドの計算を行い、
―入力データ(ME)をマスクし、計算ラウンドで計算により使用・生成された各中間データがマスクされる第1マスキングステージと、
―各計算ラウンド内で演算されるデータをマスクする第2マスキングステージであって、
前記第2マスキングステージは次のステージを有している暗号化計算方法。
―第iランキング計算ラウンド(i=1乃至N)に先行するステップの結果をマスクする第2マスキングステップET3と、
―非線形演算子SBOX’を使って、マスクされた結果を置換する置換ステップET6と、
―ステップET6の結果をアンマスキングする第2アンマスキングステップET9とを、含む第2マスキングステージ(但しステップET3,ET6,ET9は第2マスキングステージを形成する)。
【請求項3】
―第1マスキングステップ(ET01)において、第1マスキングパラメータ(X)が入力データ(ME)にミックスされ、第1計算ラウンドで、マスクされた入力データ(ME’;L’,R’)を算出し、前記ミキシングは第1線形ミキシング演算子(&)を使って行い、
―第1アンマスキングステップ(ET10)において、第1マスキングパラメータ(X)により第N計算ラウンドの結果に対して生成される寄与が、第N計算ラウンドの結果から除去される、ことを特徴とする請求項3に記載の暗号化計算方法。
【請求項4】
―第1計算ラウンドの前に実行され、以下の関係を検証する非線形演算子SBOX’を生成するための、第3マスキングステップ(ET03)を有する請求項2又は3記載の暗号化計算方法。
SBOX’[A@X]=SBOX[A]#X2、
但し、Xは第2マスキングパラメータ、
は、第3マスキングパラメータ、
SBOXは、既知の非線形演算子、
#は、第2ミキシング演算子、
@は、第3ミキシング演算子である。
【請求項5】
第i計算ラウンドのステップET9において、前記マスクされた非線形演算子SBOX’により生成された結果から、第2マスキングパラメータ(X0)により生成された寄与を除去することを特徴とする、請求項4記載の暗号化計算方法。
【請求項6】
第i計算ラウンドは、以下のステップを有し、以下の順序で実行することを特徴とする請求項2乃至5に記載の暗号化計算方法。
―ステップET2:先行する計算ラウンドにより前もって計算されたマスクされた中間データの右側部(R’i-1)の拡張、
―ステップET3:第3マスキング演算子(@)を使って、第3マスキングパラメータ(X)で先行するステップET2の結果をマスクする。
―ステップET4:第1マスキングパラメータにより生成された寄与を先行するET3ステップの結果から除去する。
―ステップET5:前のステップ(ET4)の結果に、アップデートされた導出キー(Mi)でミキシングする。
―ステップET6:先行するステップ(ET5)の結果を、マスクされた非線形演算子SBOX’で置換し、第2マスキングパラメータ(X)によりマスクされた結果を算出する。
―ステップET7:先行するステップ(ET6)の結果の順序換え。
―ステップET8:XOR演算を使って、先行するET7の結果に、前に計算した中間データの左側部(L’i-1)を加算する。
―ステップET9:先行するステップET8の結果から、第2マスキングパラメータにより算出された寄与を除去し、中間データ(L′i、R′i)の右側部(R′i)を算出する。但し、前記中間データの左側部(L’i)は、前に計算された中間データ(L’i-1、R’i-1)の右側部に等しい。
【請求項7】
前記方法を実行する毎に、マスキングパラメータ(X,X、X)の中から少なくとも1つをランダムに選択することを特徴とする請求項2乃至6のいずれか1項に記載の暗号化計算方法。
【請求項8】
前記方法を実行するM事例毎に、マスキングパラメータ(X、X、X)の中から少なくとも1つをランダムに選択することを特徴とする請求項2乃至6のいずれか1項に記載の暗号化計算方法。
【請求項9】
第1ミキシング演算子(&)及び/又は第2ミキシング演算子(#)及び/又は第3ミキシング演算子(@)がXOR演算子であることを特徴とする請求項2〜8のいずれか1項記載の暗号化計算方法。
【請求項10】
既知のキー計算法によりシークレットキー(K)からアップデートされた導出キーを算出するための導出計算ステップET1を有する請求項2乃至9のいずれか1項に記載の暗号化計算方法であって、
第4マスキングステップ(ET06)が導出キー計算ステップ(ET)の前に実行され、ミキシングパラメータ(Y)によりシークレットキー(K)をマスクし、本方法を実行する毎に、前記計算された導出キー(M’1、M’i)が異なることを特徴とする請求項2〜9のいずれか1項に記載の暗号化計算方法。
【請求項11】
連続的に実行されるNの導出キー計算ステップ(ET1)を含む暗号化計算方法であって、
第iランキング導出キー計算ステップは、
同一第iランキング計算ラウンド(ラウンドi)において、マスクされ、アップデートされた導出キー(M’i)、及び、前に計算されマスクされたシークレットキー(K’i-1)からアップデータされマスクされたシークレットキー(K’i)を算出することを特徴とし、又、
第iランキング計算ラウンドは、特に、ステップET3とET6の間に実行される、次のステップET5とET12を有することを特徴とする暗号化計算方法。
ET5:ランクiの、アップデートされ、マスクされた導出キー(M’i)と、前のステップの結果とのミキシング、
ET12:ステップET5の結果から、ミキシングパラメータ(Y)により生成された寄与を除去する。
【請求項12】
第4マスキングステップ(ET06)が、第1導出キー計算ステップより前に実行されることを特徴とする請求項11記載の暗号化計算方法。
【請求項13】
第4マスキングステップ(ET06)が、各導出キー計算ステップ(ET1)より前に実行されることを特徴とする請求項11記載の暗号化計算方法。
【請求項14】
第4マスキングステップ(ET06)において、ランダムに選択したマスキングパラメータ(Y)が、第4マスキング演算子(|)を使って、シークレットキー(K)とミックスされ、マスクされたシークレットキー(K’)を算出することを特徴とする請求項10〜13のいずれか1項に記載の暗号化計算方法。
但し、マスクされた導出キー(M’、M’)はマスクされたキー(K’)から計算される。
【請求項15】
第4マスキングステップ(ET06)において、以下の演算が実行されることを特徴とする請求項14に記載の暗号化計算方法。
K’=K|Y
但しK’は、マスクされたシークレットキー、
は、シークレットキー、
は,第4マスキングパラメータ、
|は、第4ミキシング演算子。
【請求項16】
第4ミキシング演算子(|)がXOR演算子であることを特徴とする請求項14又は15に記載の暗号化計算方法。
【請求項17】
連続的にN計算ラウンドを実行し、入力キーとシークレットキーから出力データを生成するための暗号化計算装置であって、
前記暗号化計算装置は、次の手段を有することを特徴とする暗号化計算装置。
―入力データ(ME)をマスクし、計算ラウンドで使用され、生成される各中間データがマスクされる第1手段と、
―各計算ラウンド内で演算されたデータをマスクする第2マスキング手段。

【図1】
image rotate

【図2】
image rotate

【図3a】
image rotate

【図3b】
image rotate

【図4】
image rotate


【公開番号】特開2008−295108(P2008−295108A)
【公開日】平成20年12月4日(2008.12.4)
【国際特許分類】
【出願番号】特願2008−232720(P2008−232720)
【出願日】平成20年9月10日(2008.9.10)
【分割の表示】特願2002−563650(P2002−563650)の分割
【原出願日】平成14年2月6日(2002.2.6)
【出願人】(591035139)エステーミクロエレクトロニクス ソシエテ アノニム (31)
【Fターム(参考)】