"秘密鍵を使用する暗号計算プロシージャを使用した電子システムについてのセキュリティ保護を行う方法であって、クリティカル関数が、マスキングされない中間結果を出力で提供し入力で受け取るように前記プロシージャの少なくとも1つのクリティカル関数の入力または出力中の中間結果をマスキングすることを特徴とする方法。同じ計算を行うが入力または出力中で結果がマスキングされる前記プロシージャのクリティカル関数についての置換関数を含むことを特徴とする請求項1に記載の方法。置換関数を順序づけて前記プロシージャの入力および出力についてのマスキングされない結果を提供することから成ることを特徴とする請求項1または2に記載の方法。関係するクリティカル関数による異なるマスクを使用することから成ることを特徴とする請求項1から3のいずれか一項に記載の方法。入力がマスキングされる結果に対する置換関数が、以下の演算、すなわち、公開ではないマスキング演算、クリティカル関数と同じ計算を行うが結果がマスキング関数を使用してマスキングされる演算に基づいて構築されることを特徴とする請求項2に記載の方法。出力がマスキングされるデータに対する置換関数が、以下の演算、すなわち、クリティカル関数と同じ計算を行うがマスキング関数によってマスキングされる必要がある結果に対する演算、非公開のマスキング関数に基づいて構築されることを特徴とする請求項2に記載の方法。マスキング関数の演算をランダムな方法で順序づけることから成ることを特徴とする請求項5または6のいずれか一項に記載の方法。秘密鍵を使用する暗号計算プロシージャを記憶する手段と、前記計算プロシージャを実行する手段とを備える電子システムであって、クリティカル関数がマスキングされない中間結果を出力で提供し入力で受け取るように前記プロシージャの少なくとも1つのクリティカル関数の入力または出力中の中間結果をマスキングする手段を備えることを特徴とする電子システム。中間結果についてのマスキング手段、およびクリティカル関数による、マスキングされる前記結果を伴う計算が、S-ボックスから作られることを特徴とする請求項8に記載の電子システム。プログラムが電子システム中で実行されるときに請求項1から7のいずれか一項に記載の方法のステップを実行するプログラムコード命令を含むコンピュータプログラム。本発明の一目的は、秘密鍵または個人鍵をもつn個のセットまたは暗号電子システムの、すべてのnの値についてのn次のDPA攻撃のどのようなリスクもなくすることである。本発明の他の目的は、前述の基本的な仮説がもはや正しいことが確認されないような、すなわち、1組のn個の中間変数のいずれの知られている関数も、秘密鍵または個人鍵の簡単にアクセス可能なサブセットの知識に依存しないような、暗号電子システムについての保護を与えることであり、したがって高次のDPA攻撃を動作不可能にすることである。本発明は、秘密鍵を使用してメモリ中に記憶される暗号計算プロシージャを実装する、プロセッサおよびメモリを含む電子システムのためのセキュリティ保護を行う方法であって、そのクリティカル関数が、マスキングされない中間結果を出力において提供し入力において受け取るように、そのプロセッサを用いて実行される前記プロシージャの少なくとも1つのクリティカル関数の入力または出力の中間結果をマスキングすることから成ることを特徴とする方法に関する。本発明の他の目的、利点、および特徴は、ここに添付された図面を参照して非限定的な例として提供された本発明による方法の実装、およびこの実装に合わせて構成された電子システムの実施形態の態様についての以下の説明を読めば、理解されよう。本発明による方法は、秘密鍵を伴う暗号計算プロシージャを使用した電子システム、および例えばチップカードなどの基板上のon-boardシステムのセキュリティ保護を行うことを目指したものである。この電子システムは、プロセッサおよびメモリを含んでいる。この暗号計算プロシージャは、例えば前記システム用のROMタイプのメモリに組み込まれている。前記システム用のプロセッサは、例えばE2PROMタイプのメモリの秘密区域に記憶される秘密鍵を使用してこの計算プロシージャを実行する。本発明による方法は、以下でクリティカル関数と呼ぶ関数の入力または出力としてこの計算プロシージャ中で取得される、クリティカル情報を構成する中間結果をマスキングすることから成っている。この方法は、クリティカル関数を同じ計算を行うが修正された入力データまたは出力データを伴う関数で置き換えるものである。図1aおよび図1b上に示すように、ある計算テーブルを調べる一連の基本演算を介した計算を行う、nビットからmビットへの任意のf関数は、別のn’ビットからnビットへの関数g図1a、またはmビットからm’ビットへの関数h図1bを伴い、gがfの前に実行され、hがfの後で実行される、fから成る新しい関数pで置き換えられる。したがって、この方法では、この計算fがg->fまたはf->hで置き換えられる。図に示す例によれば、gおよびhは、排他的論理和形式のデータマスキング演算である。このp関数は、入力がgでマスキングされたデータを取り込み、または、hでマスキングされたデータを出力する。本説明中の用語マスキングmaskは、内部的な、カードユーザによって知られていない非公開関数、例えばハザードを使用した関数を使用して変換することを意味する。計算プロシージャにおける最初のクリティカル関数のマスキングは、h関数を伴う出力で行われる。計算プロシージャにおける最後のクリティカル関数のマスキングは、g関数を伴う入力で行われる。このようにして、この計算プロシージャは、非マスクデータを入力で受け取り出力で提供する。マスキングは、外側では透明clearである。このシステムに対してDPAタイプの攻撃を行おうと思う人は、検出可能な情報を作成するその中間結果がマスキングされていることを知らず、その人にとっては、その理由を理解せずにその結果からどのような結論を引き出すこともできないはずである。gの入力データおよびhの出力データのサイズは、必ずしもfと同じサイズである必要はないことに留意されたい。本発明は、修正された関数をどのようにして含めるかという計算プロシージャそれ自体を変換すること、ならびに例えばこの方法が、テーブルに基本的にアクセスする場合、新しいテーブルを構築する方法という修正された関数の計算態様という2つの態様を有している。以下の説明では、DESアルゴリズムに対する本発明の適用について説明している。まず、簡単化されているが理解しやすい第1の例を示して、次にこの第1の例に直接由来する様々な開発形態について検討することにする。本発明による方法では、以下の2つの問題が別々に解決される。修正されたS-ボックスを使用してDESをどのように構成するかどのようにしてこれらのS-ボックスを構築するか図2、図3aから図3e、および図4を参照して第1の簡単化された例における修正されたS-ボックスを使用するDESの構成を以下に説明する。まず、DESのi番目のラウンドについて考察する図2。マスキングされたデータを操作するために古典的なDESのS-ボックスを修正する。次いで、32ビットの任意の値を伴うαについて考察する。48ビットから32ビットへの2つの新しい関数S’1およびS’2を以下のように定義する。S’1x=SxxorEα32ビットの任意のxについてS’2x=SxxorP-1α32ビットの任意のxについて次いで、関数fKiに類似しているが、Sの代わりにS’1ボックスおよびS’2ボックスを使用した2つの関数f’1,Kiおよびf’2,Kiを定義する。これらの2つの新しい関数により、f’1,Kiがマスキングされない値から出発してαによってマスキングされた値を取得し、f’2,Kiではその逆になるようにすることができる。図3aから図3eは、αによってマスキングされ、またはマスキングされない値と様々なボックスSKi、S’1,KiまたはS’2,Kiとを使用することによって得られるDESのラウンドAからEについての図を全部示したものである。明瞭に示すためにそのマスキングされたデータは破線で示すのに対して、マスキングされていないデータ通常のものは実線で示している。図4は、オートマトンとして記号で表される、得られる可能性のあるラウンドシーケンスの全体を示している。前述のように、マスキングされていないデータで出発し到着するために開始状況はAまたはBであるのに対し、終了状況はAまたはEである。したがって、シーケンス:IP-BCDCDCEBCDCDCDCE-IP-1を用いた完全なDES16ラウンドを実行することが可能である。メッセージMと共に出発して、この方法では、マスキングされない入力および出力のない通常の暗号文シーケンスIP-AAAAAAAAAAAAAAAA-IP-1を用いて得られた暗号文を得ることが可能になる。多くの有効な組合せが存在する。一部には、例えばIP-BCEAAAAAAAAAABCE-IP-1など、マスキングされたラウンドの間には通常のラウンドタイプAを使用して最初と最後のラウンドだけをマスキング可能にするものさえある。本発明の開発によれば、データは、ラウンドに応じて異なるマスクを用いてマスキングされる。以上で使用されるラウンド表記法A、B、C、D、およびEを採用して、マスキングの際に使用される32ビットマスクを記号化するインデックスα、β、γ...が追加される。したがって、上記簡単化された例におけるBラウンドは、Bαと書かれることが分かる。マスクが含まれないのでAラウンドは、マスク値でインデックス付けする必要がないことにも留意されたい。かかる一般化例では、DESは、以下のシーケンスに従って行われる。IP-BαCαDαCαDαCαEαBβCβDβCβDβCβDβCβEβ-IP-1このようにして、これらのラウンド、および特に攻撃を受けやすい最初と最後のラウンドは、別々のマスクによって保護される。前述の計算を実行するためには、タイプS、S’1,α、S’2,α、S’1,βおよびS’2,βのS-ボックスを構築する必要がある。本発明によるこの方法に従って使用されるこれらの様々な修正されたS-ボックスは、以下の式に基づいてセキュリティ保護された方法で構築される。S’1,αx=SxxorEαS’1,βx=SxxorEβS’2,αx=SxxorP-1αS’2,βx=SxxorP-1β前記式は、以下に示される基本演算に従って分割される。α、β...などのランダム値を抽出する、Eα、P-1β...などの秘密値のビットの置換、S-ボックス入力または出力の通常の値に対応する値テーブルを用いて例えばP-1αなどの値のXORを実行する。nビットDESでは、n=32のランダム値の抽出が、以下のアルゴリズムに基づいて行われる。この方法が使用されるシステムは、nオクテットのテーブルtと、ランドrandと呼ばれるオクテットにわたるハザードソースとを含んでいる。このアルゴリズムは、以下のように実行される。0からn-1のiについて:t[i]:=rand20からm-1のiについて:t[randn]とt[randn]を置換する式中、mは、基本的にn以上の数である。は、モジュロ演算、すなわち全除算の残余である。求める結果は、テーブルtに含まれるnビットのチェーンchainである。第1のバージョンによれば、このシステムは、n/4オクテットのテーブルtを含む。0とn/4-1の間のiについて:t[i]:=rand0とmの間のiについて:t[randn/4]に対してt[randn/4]を置換する式中、mは基本的にn/4より大きな数である。結果は、tの各n/4オクテットについて最初の4ビットの連結となる。第2のバージョンによれば、n/2、n/3、n/8またはnについての任意の除算結果dividerを使用して、第1のバージョンに従ってこのアルゴリズムを再度行う。第3のバージョンによれば、ランダムな方法でケースを交換する代わりに、あるケースをランダムに選択し、それにランダム値に対するXOR演算を追加する。DESの場合には、P-1β:n=48およびm=32の置換、Eα:n=m=32の置換における秘密値からのnビットのmビットへの置換は、以下のアルゴリズムに基づいている。記述例では、nビットのinとマークされたテーブルをmビットのmとマークされたテーブルへ置換するのが望まれる。このシステムは、m個の値のテンプtempテーブルを含んでいる各ケースが、値n-1を含むこともある。テンプテーブル中で、数字0、1、2、...、m-2、m-1の置換が行われる。0からm-1のiについて:out[V[temp[i]]]:=in[temp[i]]実際には、これはランダムな方法でビットごとに置換を行うという問題である。第1のバージョンによれば、この置換は、ビットごとではなくてkビットごとに、すべてランダムな方法で行われる。第2のバージョンによれば、テーブルV中、または入力テーブルおよび/または出力テーブル中に、あるいはその両方にダミー値を追加することもできる。したがって、オクテットを使用してビットを記憶する場合、他の空いているビットをハザードで完全なものにすることが可能である。このXOR演算の実施形態は、m個の値のtテーブル中のnビットのP-1αなどの値を追加することから構成される。この演算は、出力テーブルのオクテットに対して、ならびにこれらのオクテットのビットに対してランダムな方法で実行することができる。あるバージョンによれば、αのビット中、ならびにテーブルt中にダミー値を追加することも可能である。本発明による方法では、S-ボックスが鍵を使用しないで構築されるときには、マスキングするための非公開関数が使用される。計算プロシージャが実行されるときには、マスクは使用されない。したがって、本発明による方法では、たとえそれを知らない場合でさえ、マスクを使用するどのような攻撃に対してもこの電子システムをセキュリティで保護することが可能になる。この修正されたS-ボックスを構築するためには他の任意のタイプの抽出および置換を使用することができることを強調しておく必要がある。さらに、説明した3つの演算に基づくS-ボックスの構築については、他の任意のタイプの形態を用いて、また特にこの説明における例として使用されるDESに特有のS-ボックス以外の別の形態で実行することができる。"