説明

誤りに基づく攻撃から電子回路を保護する方法

【課題】本発明は、エラー投入による攻撃に対して任意のアルゴリズムを実行する電子アセンブリを保護する方法に関する。
【解決手段】本発明による方法は、計算署名を得るため少なくとも1つの中間結果に検証関数を用いる追加の計算を行うことと、前記署名を再計算し、起こりうるエラーを検知するためにそれらを比較するため、計算の全部または一部を少なくとも1回以上行うことを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中間のステップに関してであろうと中間のデータに関してであろうと、アルゴリズムが正しく実行されるように保証するためにチェックが行われねばならない場合に、任意のアルゴリズムを実行する電子アセンブリを保護する方法に関する。特に、この方法の目的は、差分誤り解析または拡張誤り解析として知られており、これは、1つ以上のエラーが投入されるときの電子アセンブリの算出手順を調査することにより、アルゴリズム計算に含まれる1つ以上のデータ項目または演算についての情報を得ようと試みることである、1つ以上のエラーの投入による特定の種類の攻撃に対して脆弱でないアルゴリズムのバージョンを生成することである。
【0002】
本文書で以下検討するアルゴリズムは、入力情報に従い出力情報を算出する秘密鍵を用いる暗号化アルゴリズムの非限定的な例であり、これは、暗号化、復号、署名、署名確認、認証または非拒絶作業に関連する可能性がある。これらは、入力または出力を知っている攻撃者が、秘密鍵自体に関する任意の情報を実質的に推論することができないように構築されている。
【0003】
しかし、本発明は、計算に含まれるすべての中間ステップおよびデータにエラーがないことを確認するために、テストが実行されなければならない場合のアルゴリズムを対象とする。
【背景技術】
【0004】
エラー投入を用いる最初の攻撃は1996年に遡る。
【0005】
・参考(0):New Threat Model Breaks Crypto Codes−D.Boneh,R.DeMillo,R.Lipton−Bellcore Press Release
【0006】
DES秘密鍵を伴う暗号化アルゴリズムに対するこの種の攻撃の例(参考(1))は、1996年にEli BihamとAdi Shamirが発表した論文(参考(2))に見ることができる。
・参考(1):FIPS PUB46−2、Data Encryption Standard、1994
・参考(2):A New Cryptanalytic Attack on DES,Draft
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】New Threat Model Breaks Crypto Codes−D.Boneh,R.DeMillo,R.Lipton−Bellcore Press Release
【非特許文献2】FIPS PUB46−2、Data Encryption Standard、1994
【非特許文献3】A New Cryptanalytic Attack on DES,Draft
【発明の概要】
【発明が解決しようとする課題】
【0008】
提案される発明は、攻撃者が、特定の関数は入力よりも小さな出力を有し、同じ出力を生むいくつかの入力があるという事実を利用する場合の攻撃のように拡張された攻撃にも関する。したがって、入力を変更することによって、正しい結果を出力で得ることができ、そのことは時に興味深い。
【0009】
本発明による方法の目的は、計算に含まれる関数を変更することにより、電子アセンブリまたはシステムへのDFA攻撃のリスクを除去することである。
【0010】
本発明のもう1つの目的は、上記の基本的仮定がもはや満たされないように、すなわち、エラーが投入される可能性のある中間の変数または関数がシステムに検知されないまま残ることがないように保護された暗号電子アセンブリによって実行される、暗号算出プロセスを変更することである。
【課題を解決するための手段】
【0011】
本発明は、情報処理手段と情報記憶手段を備える電子アセンブリ内でのプログラムの実行を保護する方法に関し、計算署名を得るために少なくとも1つの中間結果に検証関数によって追加の計算を行うことを含むことを特徴とする。
【0012】
さらに、本発明は、電子アセンブリと、例えば、上記方法を実行するのに使用されるスマートカードとプログラムに関する。
【0013】
本発明のその他の目的、特徴、および利点は、非限定例として与えられた、本発明による方法の実行と、この実行のために設計された電子アセンブリの実施形態に関して、以下の説明を読み、以下の添付図面を参照すると明白になるであろう。
【図面の簡単な説明】
【0014】
【図1】本発明による方法の実施形態を概略的に図示したものである。
【図2】本発明による方法の実施形態を概略的に図示したものである。
【発明を実施するための形態】
【0015】
本発明による方法の目的は、電子アセンブリと、例えば、秘密鍵を用いる暗号計算処理を実行するスマートカードのようなオンボードシステムを保護することである。電子アセンブリは、プロセッサなどの情報処理手段とメモリなどの情報記憶手段とを含む。暗号計算処理は、上記アセンブリの例えばROMタイプのメモリにインストールされている。上記システムのプロセッサは、例えばEEPROMタイプのメモリの秘密領域に記憶されている秘密鍵を用いて計算処理を実行する。
【0016】
本発明の主題であり、図1および2に示される、エラー無しでなければならない従来の計算処理を実行する上記電子アセンブリを保護する方法は、計算で実行される関数fがより一般的な関数f’(「スーパー関数」として知られている)によって変更されるが、関数fの正常な結果を発見しやすい点で注目に値する。計算に投入されるエラーは、「スーパー関数」と関連付けられた検証関数Vにより検知される。これらのスーパー関数f’と検証関数Vを以下明白に説明し、多数の例も紹介する。
【0017】
本発明によるスーパー関数f’の原理を、図1および2を参照し以下説明する。電子装置により実行されるアルゴリズムは、常に一連の基本的演算である。ここで、これらの基本的演算のうちの1つについてのスーパー関数の原理を説明する。任意の基本的演算は、有限集合Eから有限集合Fへの関数fとして説明することができる(図2)。スーパー関数の原理は、E’からF’へのスーパー関数f’を検討することである。ここで、以下のようになる。
【0018】
・E’は、E’内にEの1対1のマッピングhが存在する(すなわち、E内の2つの異なる要素をとる場合、E’内のhによるそれらのイメージも異なる)集合である。実質上、これは、E’が少なくともEと同じ数の要素を有すると言っているのと同じである。
【0019】
・F’は、F内のF’の上へのマッピングhが存在する(すなわち、Fのすべての要素yについて、h(x)=yとなるようにF’のx要素が存在する)集合である。実質上、これは、F’が少なくともFと同じ数の要素を有すると言っているのと同じである。
【0020】
・そして、特に、Eの任意の要素xに対して、以下の等式h(f’(h(x)))=f(x)が成り立たなければならない。これは、関数fが、関数f’の計算を用いて、およびスーパー集合E’とF’により算出されることができると言っているのと同じである。
【0021】
エラー検知は、検証関数Vにより実行される。検証関数は、アルゴリズムの中間結果(または重要であると考えられる結果)をチェックするために使用される関数である。
形式的に書くと、以下のようになる。
・B={0,1}二値ワードの集合
・E={x0<i<n+1、ここで、要素xは実質上はBの要素、我々が保護したいと考えるn個の中間結果の集合
検証関数Vは、固定長Nの二値ワードとEのすべての要素とを関連付ける関数でありV:E→{0,1}
【0022】
実質上、より具体的には、
・Vは、計算「署名」と中間値の集合とを関連付ける関数であり、この計算を繰り返すことにより、この署名は起こりうるエラーを検知するために使用される。
【0023】
・我々は、実際にはNは8、32、または64の次数(演算処理では通常サイズ)であり、保護される値の集合はより大きいため、検証関数は1対1でありえないと明白に理解できる。したがって、異なる計算から、Vにより同様の結果が出る可能性がある(この特性は、本文書の後で衝突と呼ばれる)。したがって、Vは、衝突ができるだけ起こらず十分に分散されるように選択されるべきである。
【0024】
本発明によるセキュリティの原理は、先述した2つの方法を組み合わせること、すなわち、最初に関数を個々に保護するためスーパー関数の原理が適用され、次に検証関数が適用されることにある。これは計算署名を生成する。全ての、または一部の計算は、新しい署名を再計算するために1回以上繰り返されてよく、任意のエラーを検出するために署名が比較される。検証関数は、計算処理またはスーパー関数の演算からの少なくとも1つの中間結果に関して計算を実行する。中間結果は、最終結果に対向する、暗号計算処理の実行中に得られる結果である。説明のため、特別な実施形態によると、検討されるアルゴリズムの実行中に重要な点で得られる中間結果に1つ以上の検証関数を適用することが推奨される。
【0025】
本発明によるセキュリティの方法をDESアルゴリズムに適用する第1の例を、以下に述べる。
【0026】
スーパー関数に関しては、1つのみがSボックスを保護するために使用される。Sボックスは実際に、1つの6ビットの入力と1つの4ビットの出力を有する。したがって、いくつかの6ビットの値が、4ビットで同じ結果を出す可能性があり、これは攻撃者が使用できる。この場合、
・E={0.1}とF={0.1}
であり、次いで、
・E’=Eとh識別関数
・F’={0,1}と単にFのワードの最上位ビットと最下位ビットを除去することから成るh
を導入する。
【0027】
・f’は以下のように構築される。xがE’の要素である(すなわち6ビットの)場合、f’(x)の最初のビットと最後のビットはxのビットである。中間の4ビットはボックスの通常の結果により与えられるビットである。Sボックスで使用される演算モードの簡単な分析は、Eのすべての要素に関して、h(f’(h(x))=S−box(x)であることを示す。検証関数に関しては、それは最初に各ラウンド(64ビット)から出力される結果にそして関数f’の連結された出力(64とみなされる48ビット)に使用される。
【0028】
このような検証関数がその後に選択されねばならない。いくつかの例を以下に示す。
【0029】
本文書の以下に、チェックされる値の集合X={x0<i<n+1と検証関数Vを示す。最初のjの値xを考慮に入れる中間検証値は、Vと書かれる場合がある。従って、V(x)=Vである。
【0030】
検証関数の第1の例は、値の連結である。これは、計算の全体にわたってトレースが保持されることを意味し、メモリの点からは費用がかかるが、衝突のリスクがないため効率的である。
j+1=V||xj+1
【0031】
第2の例は、値の排他的論理和である。
V(x,...,x)=xXOR...XORx
【0032】
第3の例は、2を法とする加算剰余算(Nは結果の長さ)である。これは、中間結果を加算し、所望の長さで結果を切り捨てることと同じである。
j+1=(V+xj+1)modulo2
【0033】
第4の例は、値の通常CRCである。
V(x,...,x)=CRC(x,...,x
【0034】
第5の例は、循環シフトが乱数のビット(例えば1)の中間結果に実行される場合の、値の排他的論理和である。
j+1=(V<<1)XOR xj+1
【0035】
第6の例は、乗算を有する値の排他的論理和である。各ステップで、XORは切り捨てられた中間検証値と現在のxとの積を有する中間検証値で実行される。
j+1=VXOR((Vxxj+1)modulo2
【0036】
第7の例は、暗号関数によるデータハッシュである。例えば、すべての値は、SHA−1関数を用いて連結されハッシュされることができ、結果の必須ビット数を保持することができる。
V=SHA−1(X)
【0037】
本発明によるセキュリティ方法をRSAアルゴリズムに適用する第2の例を以下に説明する。この例では、変数M、C1、C2、Nとビット列Dを用いて以下のループが実行されることがある。
C1=1
For i=0 to N do:
C2=C1×C1
C1=C2×M
If bit i of D=0 then
C1=C2
End If.
End loop.
Output the result C1.
【0038】
攻撃者が例えば「If」の前のC1を変更し、If命令が実行されれば、結果が正しく、したがって攻撃者はDの値に関する情報を得ることができると分かる。
【0039】
この場合には、スーパー関数が使用されない。単純な排他的論理和の中間値C1およびC2への適用がいかなるエラーも検知する。
【0040】
攻撃者がエラー投入を完全に制御しない場合がある。より大きなスペースで作業し、結果の一貫性をチェックすることによって、投入されたエラーが不可能な結果を生み出すため、投入されたエラーを検知することができる。例えば、2つの8ビット数が追加され、その結果が16ビットで記憶されると、結果に関して投入されたエラーが、7の最上位ビット(演算の法則を用いて通常0)に影響を及ぼす大きな変化を有し、それはエラーが検知されることを意味する。

【特許請求の範囲】
【請求項1】
計算処理を実行する電子アセンブリを保護する方法であって、計算署名を得るため少なくとも1つの中間結果に検証関数によって追加演算を行うことを含むことを特徴とする、方法。
【請求項2】
起こりうるエラーを検知するために前記署名を再計算しそれらを比較するために、計算の全部または一部を少なくとも1回以上実行することを含むことを特徴とする、請求項1に記載の方法。
【請求項3】
・より大きな集合から、および/またはより大きな集合に作用する別の「スーパー関数」演算を用いて基本的演算を行うことと、
・前記計算署名を得るために前記スーパー関数によって得られた結果を用いて前記検証関数による前記計算を行うことと、
を含むことを特徴とする、請求項1または2に記載の方法。
【請求項4】
基本的演算の計算がスーパー関数の計算を用いて見出されることを特徴とする、請求項3に記載の方法。
【請求項5】
FにおけるEの基本的演算fがF’におけるE’の演算f’に置き換えられ、
・E’とF’がEとFのスーパー集合であり、
・1対1関数hによりEからE’へ移動し、
・上への関数hによりF’からFへ移動し、
・Eの任意の要素xに関して:h(f’(h(x)))=f(x)である、
ことを特徴とする、請求項3または4に記載の方法。
【請求項6】
計算処理の記憶手段と前記処理の処理手段を備える電子アセンブリであって、計算署名を得るために中間結果に追加の計算を行うため使用される検証関数の記憶手段を含むことを特徴とする、電子アセンブリ。
【請求項7】
プログラムがコンピュータシステム内で実行されるとき、請求項1から5のいずれか一項に記載の方法のステップを実行するプログラムコード命令を含むコンピュータプログラム。
【請求項8】
計算処理の記憶手段と前記処理の処理手段を備えるスマートカードであって、計算署名を得るために中間結果に追加の計算を行うため使用される検証関数の記憶手段を含むことを特徴とする、スマートカード。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2011−72040(P2011−72040A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−2280(P2011−2280)
【出願日】平成23年1月7日(2011.1.7)
【分割の表示】特願2004−519119(P2004−519119)の分割
【原出願日】平成15年7月7日(2003.7.7)
【出願人】(504326572)アクサルト・エス・アー (31)
【Fターム(参考)】