"計算処理を実行する電子アセンブリを保護する方法であって、計算署名を得るため少なくとも1つの中間結果に検証関数によって追加演算を行うことを含むことを特徴とする、方法。起こりうるエラーを検知するために前記署名を再計算しそれらを比較するために、計算の全部または一部を少なくとも1回以上実行することを含むことを特徴とする、請求項1に記載の方法。より大きな集合から、および/またはより大きな集合に作用する別のスーパー関数演算を用いて基本的演算を行うことと、前記計算署名を得るために前記スーパー関数によって得られた結果を用いて前記検証関数による前記計算を行うことと、を含むことを特徴とする、請求項1または2に記載の方法。基本的演算の計算がスーパー関数の計算を用いて見出されることを特徴とする、請求項3に記載の方法。FにおけるEの基本的演算fがF’におけるE’の演算f’に置き換えられ、E’とF’がEとFのスーパー集合であり、1対1関数h1によりEからE’へ移動し、上への関数h2によりF’からFへ移動し、Eの任意の要素xに関して:h2f’h1x=fxである、ことを特徴とする、請求項3または4に記載の方法。計算処理の記憶手段と前記処理の処理手段を備える電子アセンブリであって、計算署名を得るために中間結果に追加の計算を行うため使用される検証関数の記憶手段を含むことを特徴とする、電子アセンブリ。プログラムがコンピュータシステム内で実行されるとき、請求項1から5のいずれか一項に記載の方法のステップを実行するプログラムコード命令を含むコンピュータプログラム。計算処理の記憶手段と前記処理の処理手段を備えるスマートカードであって、計算署名を得るために中間結果に追加の計算を行うため使用される検証関数の記憶手段を含むことを特徴とする、スマートカード。提案される発明は、攻撃者が、特定の関数は入力よりも小さな出力を有し、同じ出力を生むいくつかの入力があるという事実を利用する場合の攻撃のように拡張された攻撃にも関する。したがって、入力を変更することによって、正しい結果を出力で得ることができ、そのことは時に興味深い。本発明による方法の目的は、計算に含まれる関数を変更することにより、電子アセンブリまたはシステムへのDFA攻撃のリスクを除去することである。本発明のもう1つの目的は、上記の基本的仮定がもはや満たされないように、すなわち、エラーが投入される可能性のある中間の変数または関数がシステムに検知されないまま残ることがないように保護された暗号電子アセンブリによって実行される、暗号算出プロセスを変更することである。本発明は、情報処理手段と情報記憶手段を備える電子アセンブリ内でのプログラムの実行を保護する方法に関し、計算署名を得るために少なくとも1つの中間結果に検証関数によって追加の計算を行うことを含むことを特徴とする。さらに、本発明は、電子アセンブリと、例えば、上記方法を実行するのに使用されるスマートカードとプログラムに関する。本発明のその他の目的、特徴、および利点は、非限定例として与えられた、本発明による方法の実行と、この実行のために設計された電子アセンブリの実施形態に関して、以下の説明を読み、以下の添付図面を参照すると明白になるであろう。本発明による方法の目的は、電子アセンブリと、例えば、秘密鍵を用いる暗号計算処理を実行するスマートカードのようなオンボードシステムを保護することである。電子アセンブリは、プロセッサなどの情報処理手段とメモリなどの情報記憶手段とを含む。暗号計算処理は、上記アセンブリの例えばROMタイプのメモリにインストールされている。上記システムのプロセッサは、例えばEEPROMタイプのメモリの秘密領域に記憶されている秘密鍵を用いて計算処理を実行する。本発明の主題であり、図1および2に示される、エラー無しでなければならない従来の計算処理を実行する上記電子アセンブリを保護する方法は、計算で実行される関数fがより一般的な関数f’スーパー関数として知られているによって変更されるが、関数fの正常な結果を発見しやすい点で注目に値する。計算に投入されるエラーは、スーパー関数と関連付けられた検証関数Vにより検知される。これらのスーパー関数f’と検証関数Vを以下明白に説明し、多数の例も紹介する。本発明によるスーパー関数f’の原理を、図1および2を参照し以下説明する。電子装置により実行されるアルゴリズムは、常に一連の基本的演算である。ここで、これらの基本的演算のうちの1つについてのスーパー関数の原理を説明する。任意の基本的演算は、有限集合Eから有限集合Fへの関数fとして説明することができる図2。スーパー関数の原理は、E’からF’へのスーパー関数f’を検討することである。ここで、以下のようになる。E’は、E’内にEの1対1のマッピングh1が存在するすなわち、E内の2つの異なる要素をとる場合、E’内のh1によるそれらのイメージも異なる集合である。実質上、これは、E’が少なくともEと同じ数の要素を有すると言っているのと同じである。F’は、F内のF’の上へのマッピングh2が存在するすなわち、Fのすべての要素yについて、h2x=yとなるようにF’のx要素が存在する集合である。実質上、これは、F’が少なくともFと同じ数の要素を有すると言っているのと同じである。そして、特に、Eの任意の要素xに対して、以下の等式h2f’h1x=fxが成り立たなければならない。これは、関数fが、関数f’の計算を用いて、およびスーパー集合E’とF’により算出されることができると言っているのと同じである。エラー検知は、検証関数Vにより実行される。検証関数は、アルゴリズムの中間結果または重要であると考えられる結果をチェックするために使用される関数である。形式的に書くと、以下のようになる。B={0,1}二値ワードの集合E={xi}0<i<n1、ここで、要素xiは実質上はBの要素、我々が保護したいと考えるn個の中間結果の集合検証関数Vは、固定長Nの二値ワードとEのすべての要素とを関連付ける関数でありV:E→{0,1}N実質上、より具体的には、Vは、計算署名と中間値の集合とを関連付ける関数であり、この計算を繰り返すことにより、この署名は起こりうるエラーを検知するために使用される。我々は、実際にはNは8、32、または64の次数演算処理では通常サイズであり、保護される値の集合はより大きいため、検証関数は1対1でありえないと明白に理解できる。したがって、異なる計算から、Vにより同様の結果が出る可能性があるこの特性は、本文書の後で衝突と呼ばれる。したがって、Vは、衝突ができるだけ起こらず十分に分散されるように選択されるべきである。本発明によるセキュリティの原理は、先述した2つの方法を組み合わせること、すなわち、最初に関数を個々に保護するためスーパー関数の原理が適用され、次に検証関数が適用されることにある。これは計算署名を生成する。全ての、または一部の計算は、新しい署名を再計算するために1回以上繰り返されてよく、任意のエラーを検出するために署名が比較される。検証関数は、計算処理またはスーパー関数の演算からの少なくとも1つの中間結果に関して計算を実行する。中間結果は、最終結果に対向する、暗号計算処理の実行中に得られる結果である。説明のため、特別な実施形態によると、検討されるアルゴリズムの実行中に重要な点で得られる中間結果に1つ以上の検証関数を適用することが推奨される。本発明によるセキュリティの方法をDESアルゴリズムに適用する第1の例を、以下に述べる。スーパー関数に関しては、1つのみがSボックスを保護するために使用される。Sボックスは実際に、1つの6ビットの入力と1つの4ビットの出力を有する。したがって、いくつかの6ビットの値が、4ビットで同じ結果を出す可能性があり、これは攻撃者が使用できる。この場合、E={0.1}6とF={0.1}4であり、次いで、E’=Eとh1識別関数F’={0,1}6と単にFのワードの最上位ビットと最下位ビットを除去することから成るh2を導入する。f’は以下のように構築される。xがE’の要素であるすなわち6ビットの場合、f’xの最初のビットと最後のビットはxのビットである。中間の4ビットはボックスの通常の結果により与えられるビットである。Sボックスで使用される演算モードの簡単な分析は、Eのすべての要素に関して、h2f’h1x=S-boxxであることを示す。検証関数に関しては、それは最初に各ラウンド64ビットから出力される結果にそして関数f’の連結された出力64とみなされる48ビットに使用される。このような検証関数がその後に選択されねばならない。いくつかの例を以下に示す。本文書の以下に、チェックされる値の集合X={xi}0<i<n1と検証関数Vを示す。最初のjの値xiを考慮に入れる中間検証値は、Vjと書かれる場合がある。従って、Vx=Vnである。検証関数の第1の例は、値の連結である。これは、計算の全体にわたってトレースが保持されることを意味し、メモリの点からは費用がかかるが、衝突のリスクがないため効率的である。Vj1=Vj||xj1第2の例は、値の排他的論理和である。Vx1,...,xn=x1XOR...XORxn第3の例は、2Nを法とする加算剰余算Nは結果の長さである。これは、中間結果を加算し、所望の長さで結果を切り捨てることと同じである。Vj1=Vjxj1modulo2N第4の例は、値の通常CRCである。Vx1,...,xn=CRCx1,...,xn第5の例は、循環シフトが乱数のビット例えば1の中間結果に実行される場合の、値の排他的論理和である。Vj1=Vj<<1XORxj1第6の例は、乗算を有する値の排他的論理和である。各ステップで、XORは切り捨てられた中間検証値と現在のxjとの積を有する中間検証値で実行される。Vj1=VjXORVjxxj1modulo2N第7の例は、暗号関数によるデータハッシュである。例えば、すべての値は、SHA-1関数を用いて連結されハッシュされることができ、結果の必須ビット数を保持することができる。V=SHA-1X本発明によるセキュリティ方法をRSAアルゴリズムに適用する第2の例を以下に説明する。この例では、変数M、C1、C2、Nとビット列Dを用いて以下のループが実行されることがある。C1=1Fori=0toNdo:C2=C1×C1C1=C2×MIfbitiofD=0thenC1=C2EndIf.Endloop.OutputtheresultC1.攻撃者が例えばIfの前のC1を変更し、If命令が実行されれば、結果が正しく、したがって攻撃者はDの値に関する情報を得ることができると分かる。この場合には、スーパー関数が使用されない。単純な排他的論理和の中間値C1およびC2への適用がいかなるエラーも検知する。攻撃者がエラー投入を完全に制御しない場合がある。より大きなスペースで作業し、結果の一貫性をチェックすることによって、投入されたエラーが不可能な結果を生み出すため、投入されたエラーを検知することができる。例えば、2つの8ビット数が追加され、その結果が16ビットで記憶されると、結果に関して投入されたエラーが、7の最上位ビット演算の法則を用いて通常0に影響を及ぼす大きな変化を有し、それはエラーが検知されることを意味する。"