JP4386766B2 - データ処理装置における誤り検出 - Google Patents

データ処理装置における誤り検出 Download PDF

Info

Publication number
JP4386766B2
JP4386766B2 JP2004068254A JP2004068254A JP4386766B2 JP 4386766 B2 JP4386766 B2 JP 4386766B2 JP 2004068254 A JP2004068254 A JP 2004068254A JP 2004068254 A JP2004068254 A JP 2004068254A JP 4386766 B2 JP4386766 B2 JP 4386766B2
Authority
JP
Japan
Prior art keywords
processing
data
processing device
period
output data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004068254A
Other languages
English (en)
Other versions
JP2004310752A (ja
Inventor
ノンウェラ ジョン
ケイ アンドリュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Publication of JP2004310752A publication Critical patent/JP2004310752A/ja
Application granted granted Critical
Publication of JP4386766B2 publication Critical patent/JP4386766B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、データ処理装置における誤り検出、具体的には、データを秘密にするため、暗号アルゴリズムを用いたスマートカードにおける誤り検出に関する。
添付の図面の図1は、集積回路カード(ICC)として公知の代表的なスマートカードの主な部分を示すブロック図である。図1のスマートカード1は、メモリ部3、中央処理装置(CPU)5、入力/出力部(I/O)7、および処理装置9を含む。CPU5は、メモリ部3、I/O部7、および処理装置9と双方向通信を行う。これらの部分は、通常は、スマートカード1に埋め込まれた1つの集積回路内に含まれる。スマートカード1は接触式タイプであってもよいし、非接触式タイプであってもよい。
スマートカード1は、POWER(電力)およびCLKチャンネルを介して外部デバイスと通信して、必要な電力およびクロック信号CLKを受信することができ(内部電源またはクロック源を有するスマートカードもあるが)、I/Oチャネルを介して外部デバイスと通信して、データをスマートカード1に通信し、スマートカード1から通信することができる。このような通信は、接触式カードのコンタクトピンを介する電気信号、あるいは、非接触式カードの誘導性、容量性または光学結合のいずれかによって行われる。
スマートカードは、カードに格納されたデータ、ならびに、カードに通信され、または、カードから通信されるデータのセキュリティおよび保全性が最も重要である場合に、多くの用途が見出される。例えば、スマートカードは、カード保持者の身元を証明するために用いられる身分証明書としての役割を果たし得る。スマートカードはまた、その人の病歴を全て格納した医療カードとしても用いられ得る。さらに、スマートカードは、オフライン取引ができるクレジット/デビットバンクカードとして用いられ得る。このような理由により、機密に関わるデータがI/Oチャネルを介してカードから出る前に暗号化されることができるように、スマートカードは暗号化/解読能力を有することが一般的である。
図1に示すスマートカード1において、このような暗号化は、処理装置9によって行われる。例えば、メモリ部3に格納されたデータがI/Oチャネルを介して外部のリクエストデバイスと通信する必要がある場合、このデータは、CPU5によってメモリ部3からリクエストされ、入力データDINとして処理装置9に送信される。処理装置9は、入力データDINを暗号化して、暗号化された出力データDOUTを生成する。DOUTは、CPU5に返され、I/O部7に転送され、続いてI/Oチャネルで外部のリクエストデバイスに伝送される。
任意の適切な暗号化モデルが、暗号化を行うために処理装置9において用いられ得る。スマートカードにおいて用いられる暗号化アルゴリズムの例として、データ暗号化規格(DES)、トリプルDES、アドバンスト暗号化規格(AES)、高速データ暗号化アルゴリズム(FEAL)および国際データ暗号化アルゴリズム(IDEA)などの対称(または秘密)鍵暗号がある。あるいは、RSAアルゴリズムおよびラビン暗号化方式などの非対称(または公開)鍵暗号化アルゴリズムの使用も可能である。
添付の図面の図2は、公開鍵暗号システムおよび秘密鍵暗号システムの両方を表す、従来の暗号化モデルを図示するブロック図である。このモデルにおいて、2つの当事者、XおよびYは、暗号を用いて、公開チャネル13にわたる非公開通信を行おうと試みる。当事者Xは、暗号化ユニットEを用い、暗号化鍵K(非対称暗号化モデルにおいては公開鍵であり、対称暗号化モデルにおいては秘密鍵である)を用いて、平文Pを暗号化して、当事者Yへと公開チャネル13を介して通信される暗号文Cを生成する。当事者Yは、暗号化ユニットDおよび鍵Kに対応する秘密鍵Kを用いて、暗号文Cを解読して、元の平文Pを再生する。
しかし、第三者ZがXとYとの間の非公開なやりとりを、公開チャネル13をモニタリングすることによって盗聴している。第三者Zは、用いられた暗号アルゴリズムについての全ての詳細を、秘密鍵Kを除いて全て知り得、多くの暗号文のサンプルを持ち、いくつかの平文と暗号文との対を(他の何らかの手段によって当事者Xまたは当事者Yのいずれかから得られた平文とともに)有し得る。このように集められた情報は、その後、計算集約暗号解析にかけられて、用いられた暗号を解読して、暗号文を生成するために用いられた鍵Kを判定する。
しかし、現代の暗号化技術は、従来の方法で集められた情報の力任せの計算解析に基づく、このような従来の攻撃に対してより抵抗力があるように開発されている。従って、暗号化システムの物理的な実施に基づいてよりわかりにくい情報ソースの使用が最近注目されている。
実際には、暗号システムは、その環境とインタラクトし、環境によって影響される物理デバイスにおいてインプリメントされる。ポケットベルおよびスマートカードのような電子デバイスは、動作する間、電力を消費し、放射を発し、また、温度変化および電磁場に反応する。これらの物理インタラクションが、Zのような第三者によって操作され、モニタリングされて、暗号解析において有用な情報をもたらし得る。図2に示す従来の暗号モデルは、現実の世界において暗号を用いることの物理的副作用について考慮しておらず、より現実的なモデルは、添付の図面の図3に示すように「サイドチャネル」の概念を用いて説明され得る。サイドチャネルは、物理的インプリメンテーションに固有の情報のソースであり、このような情報を用いた攻撃は、「サイドチャネル攻撃」と呼ばれる。
例えば、暗号関数の計算にかかる時間量は、その関数が何をするかのみに依存するのではなく、どのような入力が通過するかにも依存する。暗号化されるべきメッセージに加えて、暗号化関数は、通常、入力として秘密鍵をとり、従って、秘密鍵の値は、公に観察できるタイミング特徴に影響を与え得る。タイミングサイドチャンネル情報に基づくこのような攻撃は、Paul Kocherらによって、「Timing Attacks on Implementation of Diffie−Hellman,RSA,DSS and Other Systems」(CRYPTO‘96)という名前の記事において提案されている。この文献において、攻撃者がいくつかのRSA署名を計算するのにかかる時間の測定値を解析し、署名したエンティティの秘密鍵を推測することができる、暗号解析方法が概説されている。
さらに、電子デバイスは、動作中、電源から電流を引く。電子デバイスが引く電流の量、すなわち、電力消費は、暗号化アルゴリズムの演算の間に論理ゲート(通常は、CMOS)が切り替わるにつれて、変動する。
電力消費は、行われている計算と相関するので、敵にとって有用である。電力解析に基づくサイドチャネル攻撃の中で最も脅威的なタイプのうちの1つは、Kocherらによって、「Differential Power Analysis」CRYPTO‘99という文献において提案されている差動電力解析(DPA)というタイプのものである。
サイドチャネル攻撃の他の形態として、暗号化システムに誤りを作為的に導入し、その誤りによって引き起こされた影響をその後モニタリングすることに基づくものがある。「On the Importance of Checking Cryptographic Protocols for Faults」(1997)という名称の文献において、Boneh、DeMilloおよびLiptonは、インプリメントされた暗号化アルゴリズムについてのハードウェアデバイスリーク情報において誘発されるエラーの観察に基づく、誤りを利用したサイドチャネル攻撃を紹介している。暗号化デバイスをイオン化またはマイクロ波放射にさらすことによって、誤りは、RSA公開鍵暗号アルゴリズムの係数を因数分解するために用いられ得る、レジスタのうちの1つのランダムビット位置に導入され得る。BihimおよびShamirは、差動誤り解析(DFA)と呼ばれる誤りに基づくチャネル攻撃を、「Differential Fault Analysis of Secret Key Cryptosystems」(CRYPTO’97)という名称の文献において提案した。この攻撃は、DESなどの対称または秘密鍵暗号システムに対して有効である。DFAは、200未満の暗号文(平文はなし)を用いて、最後のDESラウンド鍵を見つけることができ、さらに、スマートカードにインプリメントされた未知の暗号システムの構造を明らかにすることすらできる。もっとも良好なDESに対する非サイドチャネル攻撃は、64テトラバイトよりわずかに少ない平文および1つの鍵で暗号化された暗号文しか必要としない。
このようなサイドチャネル攻撃は、デバイスの物理的インプリメンテーションについての秘密情報を明らかにするために、幅広い種類のデータ処理デバイスに適用され得る。このようなサイドチャネル攻撃がさらに高度になってきたため、サイドチャネルに漏れる情報を可能な限り少なくし、誤りを導入することをより困難にし、試みられた攻撃を検出することによって、その攻撃からスマートカードのようなデータ処理デバイスを保護することが重要である。
(発明の要旨)
1. 入力データを処理して、出力データを生成するデータ処理装置であって、
第1の処理期間において、該入力データを暗号化する暗号化アルゴリズムである所定のアルゴリズムに従って該入力データを処理して、第1の出力データを生成する第1の処理装置と、
第2の処理期間において該所定のアルゴリズムに従って該入力データを処理して、第2の出力データを生成する第2の処理装置と、
該第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定する比較装置と
を備え、
該第1の処理装置および第2の処理装置は、それぞれにおける入力データの処理に同時に誤りが導入されたとき、該第1の出力データが該第2の出力データとは異なるデータとなるよう、それぞれの処理装置における入力データの処理を、その開示時刻を該第1の処理期間および第2の処理期間が重なる範囲でずらせて行う、データ処理装置。
. 前記所定のアルゴリズムは、複数の計算ラウンドの実行を含む、項目に記載のデータ処理装置。
. 前記暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムである、項目に記載のデータ処理装置。
. クロック信号を受信する入力をさらに備え、前記第1の処理装置および前記第2の処理装置の動作は該クロック信号によって制御される、項目1〜3のいずれかに記載のデータ処理装置。
. 前記第2の処理装置は、前記第1の処理装置の後に、所定の数のクロックサイクルの処理を開始するように動作可能である、項目に記載のデータ処理装置。
. 前記所定の数のクロックサイクルは1である、項目に記載のデータ処理装置。
. 前記第2の処理装置は、前記第1の処理装置の後に、所定の数の計算ラウンドの処理を開始するように動作可能である、項目または、あるいは項目に従属する場合の項目またはに記載のデータ処理装置。
. 前記所定の数の計算ラウンドは1である、項目に記載のデータ処理装置。
. 前記処理装置の少なくとも1つは、処理の間、前記所定のアルゴリズムの一部として、1つ以上の遅延を追加するように動作可能である、項目1〜8のいずれかに記載のデータ処理装置。
10. 前記処理装置の前記少なくとも1つは、そのような遅延の間、前記出力データに影響を与えない、ダミー処理を行うように動作可能である、項目に記載のデータ処理装置。
11. 前記1つ以上の遅延は、ランダムである、項目または10に記載のデータ処理装置。
12. 前記ランダムな遅延は、実質的に電力がニュートラルである、項目11に記載のデータ処理装置。
13. 前記第2の処理装置は、前記第1の処理装置の後に、ランダムな時刻に処理を開始するように動作可能である、項目1〜、および12のいずれか1つに記載のデータ処理装置。
14. 前記比較装置は、前記第1の出力データおよび第2の出力データが同じである場合に、処理誤りがあったと判定する、項目1〜13のいずれかに記載のデータ処理装置。
15. 前記第2の処理期間内であり、前記第1の処理期間の外であるダウン期間の間、前記第1の処理装置がアクティブであることを確実にする処理制御装置をさらに備える、項目1〜14のいずれかに記載のデータ処理装置。
16. 前記第1の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作する、項目15に記載のデータ処理装置。
17. 前記第1の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行う、項目に従属する場合の項目15に記載のデータ処理装置。
18. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも4分の1の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目1〜17のいずれかに記載のデータ処理装置。
19. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも半分の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目18に記載のデータ処理装置。
20. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも4分の3の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目19に記載のデータ処理装置。
21. 前記第1の処理装置および第2の処理装置は、前記重なる期間全体の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目20に記載のデータ処理装置。
22. 少なくとも1つのさらなる処理期間において、前記所定のアルゴリズムに従って、前記入力データを処理して、少なくとも1つのさらなる出力データを生成する、少なくとも1つのさらなる処理装置をさらに備え、前記比較装置は、前記第1の出力データ、前記第2の出力データ、および少なくとも1つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、前記第1の処理装置、前記第2の処理装置、および該少なくとも1つのさらなる処理装置は、それぞれにおける入力データの処理に同時に誤りが導入されたとき、該第1の出力データ、該第2の出力データ、および該少なくとも1つのさらなる出力データが互いに異なるデータとなるよう、それぞれの処理装置における入力データの処理を、その開示時刻を該第1の処理期間、第2の処理期間、および少なくとも1つのさらなる処理期間が重なる範囲でずらせて行う、項目1〜21のいずれかに記載のデータ処理装置。
23. 前記比較装置は、処理誤りがあったと判定する場合に、前記第1の出力データ、第2の出力データ、または少なくとも1つのさらなる出力データのうちの1つを、前記入力データに対応する正しい出力データとして選択するようにさらに動作可能である、項目22に記載のデータ処理装置。
24. 前記比較装置は、前記正しい出力データを多数決投票システムに基づいて判定する、項目23に記載のデータ処理装置。
25. 処理誤りが発生したことを前記比較装置が判定する場合、出力データが前記データ処理装置から放出されない、項目1〜22のいずれか1つに記載のデータ処理装置。
26. 入力データを処理して出力データを生成する、データ処理方法であって、
(a)第1の処理期間において、第1の処理装置が、該入力データを暗号化する暗号化アルゴリズムである所定のアルゴリズムに従って該入力データを処理して、第1の出力データを生成するステップと、
(b)第2の処理期間において、第2の処理装置が、該所定のアルゴリズムに従って該入力データを処理して、第2の出力データを生成するステップと、
(c)比較装置が、該第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定するステップと
を包含し、
該ステップ(a)および(b)では、該第1の処理装置および該第2の処理装置における入力データの処理に同時に誤りが導入されたとき、該第1の出力データが該第2の出力データとは異なるデータとなるよう、それぞれの処理装置における入力データの処理が、その開示時刻を、該第1の処理期間と該第2の処理期間が重なる範囲でずらせて行われる
、方法。
27. 項目1〜25のいずれか1つに記載のデータ処理装置を備える、スマートカード。
28. データ処理デバイスにロードされる場合、該デバイスを、項目1〜25のいずれか1つに記載の装置、あるいは、項目27に記載のスマートカードにする、オペレーティングプログラム。
29. データ処理デバイス上で実行される場合、該デバイスに項目26に記載の方法を実行させる、オペレーティングプログラム。
30. キャリアー媒体において実行される、項目28または29に記載のオペレーティングプログラム。
31. 前記キャリアー媒体が伝送媒体である、項目30に記載のオペレーティングプログラム。
32. 前記キャリアー媒体が格納媒体である、項目30に記載のオペレーティングプログラム。
本発明の第1の局面によると、入力データを処理して、出力データを生成するデータ処理装置であって、第1の処理期間において所定のアルゴリズムに従って入力データを処理して、第1の出力データを生成する第1の処理装置と、第2の処理期間においてその所定のアルゴリズムに従って入力データを処理して、第2の出力データを生成する第2の処理装置と、第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定する比較装置とを備え、第1の処理装置および第2の処理装置は、第1の処理期間および第2の処理期間が重なり、重なる期間の間に少なくとも1度、第1の処理装置および第2の処理装置が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、データ処理装置が提供される。
第1の処理装置および第2の処理装置は、異なる時刻において、処理を開始することが好ましい。これは、重なる期間の間少なくとも1度、第1の処理装置および第2の処理装置が、所定のアルゴリズムの異なる部分に従って処理を行うことを確実にする有効な態様である。
比較装置によって、処理誤りが発生したことが判定される場合、データ処理装置からの任意の出力データの放出を抑制することが可能である。このことは、外部に放出される任意のデータの保全性を保存し、誰かがデータ処理装置に対して誤りを利用するサイドチャネル攻撃を起こすことを困難にするために役立つ。
データ処理装置は、少なくとも1つのさらなる処理装置をさらに備え、少なくとも1つのさらなる処理装置は、少なくとも1つのさらなる処理期間の間、所定のアルゴリズムに従って、入力データを処理して、少なくとも1つのさらなる出力データを生成し、比較装置は、第1の出力データ、第2の出力データ、および少なくとも1つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、第1の処理装置、第2の処理期間、および少なくとも1つのさらなる処理装置は、処理期間が重なり、重なる期間の間少なくとも1度、第1の処理装置、第2の処理装置、および少なくとも1つのさらなる処理装置が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である。3つ以上の処理装置をこのように用いることは、検出されないエラーをデータ処理装置に導入することを一層困難にし、従って、誤りを利用するサイドチャネル攻撃を一層困難にする。
比較装置は、2つ以上の出力データが同じでない場合に、処理誤りがあったと判定し得る。所定のアルゴリズムは、入力データを暗号化する暗号化アルゴリズムであってもよい。所定のアルゴリズムは、複数の計算ラウンドの実行を含み得る。例えば、暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムであってもよい。
データ処理装置は、クロック信号を受信する入力をさらに備え、処理装置の動作はクロック信号によって制御され得る。処理装置のうちの1つは、他の処理装置の後に、所定の数のクロックサイクル、例えば、1クロックサイクルの処理を開始するように動作可能であってもよい。
所定のアルゴリズムが複数の計算ラウンドの実行を含む場合、処理装置のうちの1つは、他の処理装置の後に、所定の数の計算ラウンド、例えば、1ラウンドの処理を開始するように動作可能であってもよい。
少なくとも1つの処理装置は、処理の間、1つ以上の遅延を追加するように動作可能であってもよい。このような処理装置は、このような遅延の間、出力データに影響を与えない、ダミー処理を行うことが好ましい。このような遅延は、所定のアルゴリズムの一部であると考えられ得る。遅延は、ランダムであることが好ましく、電力がニュートラルであることが好ましい。処理装置のうちの1つは、他の処理装置の後に、ランダムに処理を開始するように動作可能であってもよい。これらの手段は、電力およびタイミングサイドチャネルを通じて外部に漏れる情報を低減することに役立ち、誤りの検出の可能性をより高める。
データ処理装置は、第2の処理期間内であり、第1の処理期間の外であるダウン期間の間、第1の処理装置がアクティブであることを確実にする処理制御装置をさらに備える。第1の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作することが好ましい。あるいは、所定のアルゴリズムが複数の計算ラウンドの実行を含む場合、第1の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行うようにされてもよい。多くの処理装置がある場合、これらの処理装置のうち2つのみがこのように動作する場合でも、以前としてある程度の利点がある。これらの手段は、電力サイドチャネルを通じて外部に漏れる情報を低減することに役立ち得る。
処理誤りがあったと判定される場合に、比較装置、または他の何らかの装置は、出力データのうちの1つを、入力データに対応する正しい出力データとして選択し得る。例えば、3つ以上の処理装置が利用される場合、このような選択は、多数決投票システムに基づき得る。従って、誤り訂正および誤り検出が可能である。
第1の処理装置および第2の処理装置は、好ましくは、重なる期間の少なくとも4分の1の間、より好ましくは、重なる期間の少なくとも半分の間、さらに好ましくは、重なる期間の少なくとも4分の3の間、さらにより好ましくは、重なる期間全体の間、処理を所定のアルゴリズムの異なる部分に従って行う。
本発明の第2の局面によると、入力データを処理して出力データを生成する、データ処理方法であって、(a)第1の処理期間において、所定のアルゴリズムに従って入力データを処理して、第1の出力データを生成するステップと、(b)第2の処理期間において、所定のアルゴリズムに従って入力データを処理して、第2の出力データを生成するステップと、(c)第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定するステップとを包含し、ステップ(a)および(b)の処理は、第1の処理期間および第2の処理期間が重なり、重なる期間の間に少なくとも1度、ステップ(a)および(b)の処理が所定のアルゴリズムの異なる部分に従って行われるように、行われる、方法が提供される。
本発明の第3の局面によると、本発明の第1の局面によるデータ処理装置を含む、スマートカードが提供される。
本発明の第4の局面によると、データ処理デバイスにロードされる場合、デバイスを、本発明の第1の局面による装置、あるいは、本発明の第3の局面によるスマートカードにする、オペレーティングプログラムが提供される。
本発明の第5の局面によると、データ処理デバイス上で実行される場合、デバイスに本発明の第2の局面による方法を実行させる、オペレーティングプログラムが提供される。
例示のため、添付の図面が参照される。
本発明の主な目的は、誤りを利用するサイドチャネル攻撃に対して防御することであり、詳細な説明を提示する前に、以前に考慮されていた、このような攻撃を防御する方法についてまず簡略的に述べる。
一般的に、DFAなどの攻撃は、攻撃者が誤りを導入した後に、生成された誤りがある暗号文に攻撃者がアクセスできることが必要である。従って、このような攻撃を防ぐ方法の1つとして、誤りがある暗号文を攻撃者から遠ざけ、攻撃を無効にするように、デバイスが計算の出力を放出する前にチェックする方法がある。数回の攻撃が検出される場合、それ以上攻撃が試みられないように、スマートカードがロックされ得る。
誤り注入攻撃から保護する方法の1つとして、同じ入力で2回の暗号化を行い、2つの出力が同じであることをチェックする方法がある。攻撃者が、1つの計算に誤りを導入した場合、得られる暗号文は異なる。攻撃者が検出されず誤りを導入する唯一の方法は、同じ誤りを2回の計算の両方に導入することができる場合である。
図4Aは、この保護メカニズムを実現する態様の1つを示すブロック図であり、図4Bは、図4Aの回路の動作を示すタイミング図である。暗号化されるべきデータDINは、処理装置2を通過し、処理装置2は、第1の処理期間Tにおいて、選択された暗号化アルゴリズムに従って入力データDINを処理して、第1の出力データDOUTを生成する。その後、処理期間Tの後に続く処理期間Tにおいて、処理装置2は、同じ入力データDINを同じ暗号化アルゴリズムに従って処理して、第2の出力データDOUTを生成する。その後、比較期間Tの間、比較装置4は、第1の出力データおよび第2の出力データを比較し、差が検出される場合、比較装置から出力されたエラー信号ERRが、誤りの検出を示すように変化する。差がない場合、出力データDOUT(第1の出力データDOUTおよび第2の出力データDOUTと等しい)が比較装置4から出力される。
このようにして、図4Aに示すデータ処理装置を用いて、入力データDINが直列に2回暗号化される。このような保護メカニズムが必要とするさらなるハードウェアは非常に少ないにも関わらず、計算を行うために約2倍の時間がかかる。さらに、攻撃者にとって同じ誤りを2回導入することは容易ではないが、以前として非常に可能性が高い。例えば、ランダム過渡誤りモデルにおいて、誤りが発生し得るビット位置が512あり、2つの誤り暗号がある場合、それぞれにおいて同じ誤りが発生する可能性は、512分の1である。従って、悪意あるユーザが必要な数の誤り暗号文を取得するために試みる必要がある暗号化の数は、512倍増えただけである。
図4Aおよび図4Bを参照して説明されたように、直列に2倍した処理の代替例として、図5Aおよび図5Bに示すように並列バージョンが実現され得る。図5Aのデータ処理装置は、第1の処理装置6および別の第2の処理装置8を含む。第1の処理装置6は、第1の処理期間Tにおいて、選択された暗号化アルゴリズムに従って、入力データDINを処理して、第1の出力データDOUTを生成する。第2の処理装置8は、第1の処理期間Tと完全に並列である第2の処理期間Tの間、同じ入力データDINを、同じ暗号化アルゴリズムに従って処理して、第2の出力データDOUTを生成する。第1の処理期間Tおよび第2の処理期間Tが並列であるという性質は、図5Bに図示されている。第1の出力データDOUTおよび第2の出力データDOUTが生成された後、比較装置4は、図4Aを参照しながら上述した態様と同様の態様でデータを比較し、比較の結果に従って、比較装置から出力されたエラー信号ERRが、変化する。差がない場合、出力データDOUT(第1の出力データDOUTおよび第2の出力データDOUT)が比較装置4から出力される。
図5Aおよび図5Bを参照しながら説明される並列バージョンは、図4Aおよび図4Bを参照しながら説明される直列バージョンと比較すると、余分にかかる時間が非常に少ないという利点を有するが、2倍の回路面積が必要である。しかし、さらなる大きな欠点は、例えば、電力異常が、計算において全く同じ時点で両方の計算に対して同様に影響を与えるため、同じ誤りが処理装置の両方に導入される可能性が非常に高いということである。これは十分な保護を提供しない可能性がある。
2つの異なる設計の処理装置を並列ブランチのそれぞれにおいて用いて、両方とも同じ入力に対して同じ出力を生成し得る。これは、同じ誤りが両方の計算に導入される可能性を低くする。しかし、これによって、設計に2倍の労力がかかり、同じ誤りが両方の処理装置に導入され得ないことを確実にすることは非常に複雑である。
上記の直列および並列技術の代わりとして、暗号化に続いて解読が行われ(またはその逆)、その後、最終的な結果がもとの入力と同じであるかチェックが行われてもよい。これは、公開鍵演算が秘密鍵演算よりもしばしばずっと速いRSAなどのアルゴリズムについては特に有用であり得る。DESなどの暗号については、暗号化は解読とほぼ同じであり、主な差は、ラウンド鍵が用いられる順序が反対になっていることである。
完全な暗号化演算を行い、結果をチェックすることと同様に、任意のステップサイズについて、ステップごとに、結果が同じであるかをチェックすることも可能である。例えば、繰り返しのラウンドを用いる計算について、結果は、全てのラウンドを行った後に比較するのではなく、個々のラウンドの後で比較され得る。これによって、誤りをより素早く検出し得るが、DESなどの暗号については、全てのラウンドを行う時間が非常に短いので、実用的とは限らない。さらに、比較が多いということは、オーバーヘッドがより多いことを意味し得、ステップ間にエラーを導入することも可能であるので、それほど効率的とは限らない。
この代替的な技術は、Karriらによる「Concurrent error detection of fault−based side−channel cryptanalysis of 128−bit symmetric block ciphers」(2001)に開示された同時エラー検出技術の基礎を形成する。この文献において記載されているように、暗号化/解読チェックは、アルゴリズムレベル(すなわち、暗号および解読全体を行った後のクロスチェック)、または、ラウンドレベル(暗号/解読ラウンドが終わる度のクロスチェック)の両方で、あるいは、演算レベル(ラウンド内の演算が終わる度のクロスチェック)でさえ、行われ得る。
図6Aは、本発明を具現化するデータ処理装置を示すブロック図である。図6Bは、図6Aのデータ処理装置の演算を示すタイミング図である。本発明を具現化するデータ処理装置は、第1の処理装置12と、第2の処理装置14と、比較装置4とを備える。
図5Aを参照しながら上述したデータ処理回路の並列バージョンと同様に、第1の処理装置12は、第1の処理期間Tにおいて、所定の暗号化アルゴリズムに従って入力データDINを処理して、第1の出力データDOUTを生成し、第2の処理装置14は、第2の処理期間Tにおいて、同じ入力データDINを同じ暗号化アルゴリズムに従って処理して、第2の出力データDOUTを出力する。その後、比較期間Tにおいて、比較装置4によって、2つのセットの出力データが比較されて、処理誤りがあるか否かが判定される。処理誤りがある場合、エラー信号ERRのレベルは、それに応じて設定され、大量の出力データが外部に放出されないことが確実にされ得る。出力データの抑制は、図示されたように比較装置4によって行われてもよいし、エラー信号ERRに依存して、他の何らかの装置によって行われてもよい。処理誤りがない場合、入力データDINに対応する出力データDOUTが放出され得る。
しかし、以前に考慮された技術とは異なり、本発明のこの実施形態において、第1の処理装置12および第2の処理装置14は、図6Bにおいて図示されるように第1の処理期間Tおよび第2の処理期間Tが重なるように、異なる時刻に処理を開始するように動作可能である。従って、一方の暗号化は、他方よりも僅かに遅延する。
このようにすると、総処理時間は、図5Aおよび図5Bを参照しながら上述した並列バージョンよりもほんのわずかだけ長いが、2つの処理装置は、同じ暗号化演算を同時に行っていないので、誤りがある瞬間に導入される場合、計算の異なる部分に導入され、従って、異なる出力が生成される。従って、攻撃者にとって、同じ誤りを2回導入することは非常に困難であり、エラーチェックメカニズムの注意から逃れることは非常に困難である。
本発明のこの実施形態は、図4Aおよび図4Bを参照しながら上述してきた直列バージョンよりもずっと、誤りを利用するサイドチャネル攻撃に対してロバストである。これは、直列方式において、異なる時刻における、2つの別個のエラー誘発動作(例えば、レーザビームの使用)が、実際に、同じエラーを両方の計算に導入すること(エラー誘発動作の間の時間が、直列処理期間の間の時間と同じである場合)が可能であるからである。このような場合、エラーの導入は、直接方式において検出を回避し、誤りがある暗号文が出力される。本発明を具現化する方式を用いると、処理の間の2つのこのような誤りを誘発する動作は、4つの異なるエラーを、2つを第1の処理期間において、2つを第2の処理期間において導入する可能性が高く、攻撃が検出される。この方式に対して攻撃を成功させるためには、攻撃者は、多くの誤りを、毎回、完全に正しい位置に注入する必要がある。攻撃者が一方の処理装置に注入した全ての誤りについて、他の(異なる)誤りが他方の処理装置に注入された可能性がある。これにより、新たに導入された誤りを相殺するために他の誤りを注入することが必要になり、それにより、今度は他の誤りがまた生成され、以下このように続く。
第1の処理装置12が入力データDINの暗号化を開始する時刻と、第2の処理装置が入力データDINの暗号化を開始する時刻の間の時間差Dは、この技術が有効になるために大きくなる必要はない。例えば、1つのクロックサイクルの時間差Dは、適切であり、大幅な時間面での不利益を導入しないが、他の時間差も可能である。第1の処理装置12および第2の処理装置14がDES暗号化アルゴリズムを行う実施形態において、ある処理装置は、他の処理装置が所定の数の暗号ラウンド、例えば1ラウンドを行った後で、処理を開始するように製造され得る。あるいは、ランダムな時間差が用いられてもよい。
誤りを利用するサイドチャネル攻撃に対する抵抗は、本発明のある実施形態において、処理装置によって行われる処理動作を通じて、遅延、好ましくは、ランダム遅延を追加することによってさらに向上し得る。これによって、同じ誤りを2回導入することがより困難になる。さらに、遅延が電力的にニュートラル(neutral)である場合(これは、遅延が電力追跡において見られることができないことを意味する)、差動電力解析(DPA)などの他のサイドチャネル攻撃から保護するために役立ち得る。処理装置の少なくとも1つは、そのような遅延の間、出力データに影響しない、ダミー処理を行うようにされてもよい。このようなダミー処理の間、処理装置は、好ましくは、通常の計算を行っているかのように、同程度の電力を使い続ける。
図7Aは、本発明を具現化する他のデータ処理装置を示すブロック図であり、図7Bは、図7Aのデータ処理装置の演算を示すタイミング図である。図6Aに示す第1の処理装置12、第2の処理装置14および比較装置4に加えて、図7Aのデータ処理装置は、第3の処理装置16を含む。第3の処理装置16は、第1の処理装置12および第2の処理装置14と同じ入力データDINを同じ暗号化アルゴリズムに従って処理して、第3の出力DOUTを生成する。この動作は、第3の処理期間Tの間に行われる。第1の処理装置12、第2の処理装置14、および第3の処理装置16は、図7Bに示すように第1の処理期間T、第2の処理期間T、および第3の処理期間Tが重なるように、異なる時刻において処理を開始するように動作可能である。
従って、この実施形態は、3つのセットの出力データが比較装置4によって比較されて、処理誤りがあったか否かを判定することを可能にし、同じエラーを、3つのアルゴリズムに、各アルゴリズムにおいて同じ時点に導入する可能性はより低いので、よりすぐれた誤り検出性能の可能性を提供する。当然、エラー検出能力をさらに高めるため、3つより多い処理装置を設けることも可能である。
上記の実施形態において、処理誤りがあった場合、エラー信号ERRのレベルは、それに応じて設定され、大量の出力データが外部に放出されないことが保証され得る。しかし、3セット以上の出力データを用いる場合、出力データのうちどの1つ(または1つ以上)が正しい可能性があるのか判定し、その出力データを放出することも可能である。例えば、DOUTおよびDOUTが同じであるが、DOUTがDOUTおよびDOUTの両方と異なる場合、多数決投票システムに基づいて、DOUT(または等しいDOUT)が、最終的な出力データDOUTとして選択され得る。このエラー補正機能は、図示されているように比較装置4によって行われてもよいが、別に設けられた装置によって行われてもよい。
差動電力解析(DPA)攻撃に対する抵抗をさらに高めることは、両方の処理装置が可能な限り長い時間共に動作することを確実にすることによって達成され得る。なぜなら、一方の処理装置の電力消費が他方の処理装置の電力消費をマスキングするために役立ち得るからである。図6Bに示すタイミング図に従って動作する本発明を具現化する処理装置を用いると、暗号化演算の開始と終わりに、2つの処理装置のうちの1つのみが動作し、従って電力消費がより容易に解析され得る短い期間がある。
図8Aは、図6Aに示す部品に加えて、処理制御装置18を含む、本発明を具現化するデータ処理装置を示すブロック図である。図8Bは、図8Aのデータ処理装置の動作を示すタイミング図である。処理制御装置18は、第1の処理装置および第2の処理装置の処理を制御するために設けられ、一方の処理装置が、他方の処理装置がその処理期間において処理を行っている間イナクティブにならないようにすることによって、上記のDPA攻撃に対して抵抗を高める。ダウン期間がない場合には一方または他方の処理装置がイナクティブになり得るダウン期間は、図8Bにおいて、Tとして示される。例えば、第1の処理装置12のダウン期間Tは、第2の処理期間T内(内側)にあり、第1の処理期間Tの外(外側)にある。前の実施形態において、処理装置の処理を制御する目的で提供される処理制御装置は、図6Bまたは図7Bに示す様態で制御を行う。
一つの可能性は、処理制御装置18が、ダウン期間がない場合にはイナクティブになり得るダウン期間の間、処理装置12または14に、それに基づいて動作し得るランダムデータが提供されることを確実にすることである。このことは、以下の表に示されるが、この表において、「E」は、暗号化ラウンドを指し、「D」は解読ラウンドを示し、「Kn」はn番目のラウンド鍵を示す。
Figure 0004386766
あるいは、16ラウンドを有するDESなどの暗号を用いる場合、処理制御装置18は、ダウン期間がない場合にイナクティブになるダウン期間の間、処理装置に暗号化のさらなるラウンドを行い、その後に同じラウンド鍵を用いて対応する解読のラウンドを行わせるように処理装置を制御し得、これは、最終的な出力に影響を与えない。この場合、第1の処理装置および第2の処理装置がそれぞれの処理を開始する時刻の差は、2ラウンドになり得る。このことは、以下の表に示されるが、この表において、「E」は、暗号化ラウンドを指し、「D」は解読ラウンドを示し、「Kn」はn番目のラウンド鍵を示す。
Figure 0004386766
図9は、図8Aの処理装置12および処理装置14によって行われる処理を模式的に示す、図8Bに対応する例示的なタイミング図である。図9において、第1の処理装置12および第2の処理装置14によって所定のアルゴリズムに従って行われる処理は、概念上の計算ブロック1〜8に分割される。例えば、計算ブロックは、DES暗号化アルゴリズムにおける暗号化ラウンドであり得る。処理装置12および処理装置14は、第1の処理装置12が計算期間tにおいて処理を開始し、第2の処理装置14が計算期間tにおいて処理を開始する状態で、それぞれ、9つの計算期間t〜tのうちの1つの間、計算ブロック1〜8を順次行う。計算期間tにおいて第1の処理装置のダウン期間の間、処理装置12によって、出力データDOUTに影響を与えない何らかの形の処理が行われ、処理装置14についても、同様のことが処理期間tの間に行われる。ダウン期間の間のこのような処理は、図9において、「F」と表示される。
図8A、図8Bおよび図9を参照しながら説明した実施形態において、処理制御装置18は、第1の処理装置12および第2の処理装置14の処理を、異なる時刻に処理を開始する(それにより、遅延が処理に導入されない場合に第1の処理期間Tおよび第2の処理期間Tを異なる時刻に終了させるようにする)ように制御すると説明した。しかし、第1の処理装置12および第2の処理装置14が、処理を異なる時刻に開始することは必須ではなく、以下に説明するように、第1の処理装置12および第2の処理装置14が、異なる時刻において処理を完了することも必須ではない。
図10は、図8Aに示す装置を用いて、本発明の他の実施形態の動作を示す例示的なタイミング図である。図9と同様に、この実施形態において、第1の処理装置12および第2の処理装置14によって所定のアルゴリズムに従って行われる処理は、概念的な計算ブロック1〜8に分割されている。しかし、この実施形態における処理制御装置18は、処理が同時に開始され、計算期間tの間に両方の処理装置によって第1の計算ブロック1が行われるように、第1の処理装置12および第2の処理装置14を制御する。その後、第1の処理装置12は、続く計算期間t〜tにおいて、それぞれ、続く計算ブロック2〜8を行う。
Xと表示される遅延期間が、計算期間tの間、第2の処理装置14によって行われる処理に挿入される。その後、第2の処理装置14は、計算期間t〜tにおいて、それぞれ、続く計算ブロック2〜8を行う。遅延期間Xを挿入することによって、第1の処理装置12および第2の処理装置14は、処理を同じ時刻tに開始するが、処理を、異なる時刻tおよびtに完了する。
第2の処理装置14は、遅延期間Xの間、アイドルであってよいが、電力サイドチャネルを通じる漏れを低減するために、出力データに影響を与えないダミー処理が行われることが好ましい。遅延期間Xは、第2の期間Tの間、ランダムな長さの時間にわたってランダム位置に挿入され得る。ランダムな遅延は、上述したように、差動電力解析(DPA)などのサイドチャネル攻撃からさらに保護するために、電力的にニュートラルであることが好ましい。
図11は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第1の処理装置12および第2の処理装置14は、異なる時刻tおよびtにおいて、それぞれ処理を開始するようにされるが、計算期間tにおいて第1の処理期間Tに遅延期間Xを挿入することによって、第1の処理装置12および第2の処理装置14は、同じ時刻tに処理を完了する。
図12は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第1の処理装置12および第2の処理装置14は、両方とも、遅延期間Xをそれぞれ時刻tおよびtにおいて、第1の処理期間Tおよび第2の処理期間Tに挿入することによって、計算期間tにおいて処理を開始し、計算期間tにおいて処理を完了する。
図13は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第1の処理装置12は、第2の処理装置14がtにおいて処理を開始する前に、tにおいて処理を開始するが、第2の処理装置14がtにおいて処理を完了した後に処理を完了する。これは、2つの遅延期間Xが、時刻tおよびtにおいて第1の処理期間Tに挿入され、第2の処理期間Tに挿入される遅延期間がないためである。
図14は、図12の実施形態に類似する本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態においては、遅延期間Xが、第1の処理期間Tおよび第2の処理期間Tに、それぞれ、時刻tおよびtにおいて挿入される。
本発明を具現化する、図9〜図14に示す処理方式の全ては、第1の処理装置12および第2の処理装置14は、第1の処理期間Tおよび第2の処理期間Tが重なり、また、重なる期間の間に少なくとも1度、第1の処理装置12および第2の処理装置14が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能であるという点が共通である。この点において、用語「重なり」は、処理期間TおよびTの部分的な重なりがある図9〜図11および図13の場合と、第1の処理期間Tおよび第2の処理期間Tが同一である図12および図14に示す場合との両方とも含むことが理解されるべきである。
例えば、図9において、重なる期間は、計算期間t〜tを含み、第1の処理装置12および第2の処理装置14は、重なる期間全体の間に、所定のアルゴリズムの異なる部分に従って処理を行う。これは、重なる期間の間の任意の時刻に、装置に導入されるエラーは、両方の処理装置に影響を与える可能性があるが、計算の異なる部分の間であり、従ってそのようなエラーは検出される可能性が高いので有利である。エラーを両方の計算ブロック1に導入して、検出を避けようという試みは、tの間、そのエラーは、第2の処理装置14の処理ブロック1と共に、第1の処理装置12の処理ブロック2に影響を与える可能性が高いので、失敗する可能性が高い。
図9の方式において、計算ブロック1〜8のそれぞれは、少なくとも1つの異なる数字が付けられた計算ブロックによって保護される(カバーされる)。例えば、計算ブロック1は、計算期間tにおいて、計算ブロック2によって保護される(カバーされる)。計算ブロック2は、計算期間tにおいて計算ブロック1によって保護され(カバーされ)、また、計算期間tにおいて、計算ブロック3によって覆われる。以下同様である。従って、エラーを、両方の処理装置において特定の計算ブロックに導入しようとする試みはまた、エラーを、少なくとも1つの他の計算ブロックの1つのインスタンスに導入し、従って検出される可能性がある。より劣りはするが、図10〜13に示す方式の場合と同様に、計算ブロックの全てがそのように保護されない場合でさえある程度の利点が得られる。
図10において、重なる期間は、計算期間t〜tをカバーし、第1の処理装置12および第2の処理装置14は、tからtまで、すなわち、重なる期間全体ではない所定アルゴリズムの異なる部分に従って処理を行う。この実施形態において、計算ブロック2〜8(すなわち、計算期間t〜t内に含まれる計算ブロック)のそれぞれは、少なくとも1つの異なる数字が付けられた計算ブロックによって、上述したように保護される。従って、tの間に両方の処理装置に導入されるエラーは、計算の同じ部分に影響を与える可能性が高く、従って、検出されないが、検出期間t〜tの間、保護は得られる。この点において、遅延期間Xは、出力データに影響を与えないが、所定のアルゴリズムの一部であると考慮され得る。
図13において、処理は、計算ブロックt、t、t、t、およびtにおいて、所定のアルゴリズムの異なる部分に従って行われ、計算ブロック1〜3、7および8のそれぞれ(すなわち、計算期間t、t、t、tおよびtに含まれるブロック)は、上述したように、少なくとも1つの異なる数字が付けられた計算ブロックによって保護される。類似の解析が、図11および12に適用される。
図14において、重なる期間は、計算期間t〜tをカバーする。この実施形態において、遅延期間Xは、所定のアルゴリズムの一部であり、第1の処理装置12および第2の処理装置14が計算ブロックtおよびtにおいて所定のアルゴリズムの異なる部分に従って処理を行うと考えることができる。計算ブロック5は、少なくとも1つの異なる数字が付けられた計算ブロックによって上述したように保護されていないが(第1の処理装置12および第2の処理装置14は、重なる期間の間に少なくとも1度、出力データに実際に影響を与える所定のアルゴリズムの異なる部分に従って、処理を行うことが好ましいので、保護することは好ましい)、計算ブロック5は、ダミーブロックXによってカバーされることによって保護される。
図14に示す方式は、それぞれ、図4Bおよび図5Bを参照しながら上述した直列および並列バージョンの組合せに類似するが、両方に対して、別々に、潜在的な利点を有する。例えば、攻撃者が誤りを並列計算ブロック1〜4の法に導入し、直列計算ブロック5にも導入しようと試みる場合、同じエラーを2回ブロック5に正確に導入するのに十分な精度で攻撃のタイミングを調節することができない可能性が高い。それに加えて、攻撃者は、2つの並列な計算ブロックに同時に影響をあたえるような様態でエラーを導入する必要がある。これは、エラーを導入する可能性を制限する。さらに、この方式は、ブロック5を単に直列に追加し、他のブロックを保護しない方式よりも、単純である。
誤り検出技術の主な適用例を、図1に示すようなスマートカードにおける使用として、上記で説明してきたが、この技術は、他のセキュアデバイス、例えば、USBトークン、セキュアメモリ、セキュアマルチメディア、およびセキュアアクセスモジュール(SAM)などにおいて利用されてもよい。本発明の実施形態は、暗号化が行われる処理装置に限定されるわけではない。本発明の実施形態は、誤り検出が必要とされ、誤り訂正までもが必要とされる任意の用途において用いられ得る。誤り訂正については、データ処理アプリケーションが、エラー信号がある場合に、入力データDINを再処理するように設定されるか、図7Aおよび図7Bを参照しながら説明したように3つ以上の処理装置が利用される場合、いずれの出力データが確実なものであるかを判定するために投票システムが用いられ得る。
本発明の実施形態は、DES、AES、および任意の他のタイプの対称暗号化アルゴリズムに適用され得る。RSAなどの非対称アルゴリズムにも適用され得る。同じ装置は、DESおよびトリプルDESに用いられ得る。
本発明のある実施形態の処理装置が、ハードウェアにインプリメントされるとして説明されてきたが、本発明の実施形態はソフトウェアにインプリメントすることも可能である。例えば、図1を参照しながら上述したスマートカードデバイスにおいて、上述したように別個の処理装置9をスマートカード上に設けるのではなく、代わりに、オペレーティングプログラムが設けられて(メモリ部分3を用いて格納されて)、CPU5を制御し、いわば、処理装置9の機能を果たす。
しかし、本発明の実施形態において、上述したように重なった様式で処理を行うために2つ以上の処理装置が必要とされるので、一般的に、1つのCPUを用いることは可能でない。代わりに、同時処理を行うことが可能になるように、2つ以上の処理装置に対応する2つ以上のCPUが設けられ得る。1つのCPUは、そのCPU自体が演算の並列処理を行うように動作可能である場合に用いられ得る。例えば、CPUにおける多くの演算は、本質的に、ビット毎の演算(例えば、AND、OR、XOR)であるが、32ビットプロセッサは、32ビットを同時に処理することができ、実質的に32の演算を並列に行うことができる。従って、これらの32ビットのうちのいくつかが1つの処理ラウンドからであり、いくつかが他の処理ラウンドからになるように、CPUを制御するように、オペレーティングプログラムを書くことが可能である。
本発明を具現化するオペレーティングプログラムは、コンピュータ読み出し可能媒体に格納され得るが、インターネットウェブサイトから提供されるダウンロード可能なデータ信号などの信号において実現されることもできる。添付の特許請求の範囲は、オペレーティングプログラム自体、キャリアー上の記録として、信号として、あるいは、任意の他の形態を含むと解釈されるべきである。
データ処理装置は、入力データ(DIN)を処理して、出力データ(DOUT)を生成するために提供される。このデータ処理装置は、第1の処理期間(T)において所定のアルゴリズムに従って入力データ(DIN)を処理して、第1の出力データ(DOUT)を生成する第1の処理装置(12)と、入力データ(DIN)を第2の処理期間(T)において所定のアルゴリズムに従って処理して、第2の出力データ(DOUT)を生成する第2の処理装置(14)とを備える。このデータ処理装置は、さらに、第1および第2の出力データ(DOUTおよびDOUT)を比較して、処理誤りがあったか否かを判定する比較装置(4)を備える。第1および第2の処理装置(12および14)は、第1および第2の処理期間(TおよびT)が重なり、重なる期間の間に少なくとも1度、第1および第2の処理装置(12および14)が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である。
同じ入力データに対して同じ出力データを生成する、類似するが、必ずしも同じでない、2つの計算の連続は、同じアルゴリズムに従って実行されるとみなされることが理解される。
図1は、上述したように、代表的なスマートカードの主な部分を示すブロック図である。 図2は、上述したように、従来の暗号化モデルの説明において用いられる例示的なブロック図である。 図3は、上述したように、サイドチャネルを含む、暗号化モデルの説明に用いられる例示的なブロック図である。 図4Aは、データ処理装置において誤りを検出する、以前に考えられていた直列技術の使用の説明に用いられる図である。 図4Bは、データ処理装置において誤りを検出する、以前に考えられていた直列技術の使用の説明に用いられる図である。 図5Aは、データ処理装置において誤りを検出する、以前に考えられていた並列技術の説明に用いられる図である。 図5Bは、データ処理装置において誤りを検出する、以前に考えられていた並列技術の説明に用いられる図である。 図6Aは、本発明の実施形態によるデータ処理装置を示す図である。 図6Bは、本発明の実施形態によるデータ処理方法を示す図である。 図7Aは、本発明の他の実施形態によるデータ処理装置を示す図である。 図7Bは、本発明の他の実施形態によるデータ処理方法を示す図である。 図8Aは、本発明の他の実施形態によるデータ処理装置を示す図である。 図8Bは、本発明の他の実施形態によるデータ処理方法を示す図である。 図9は、図8Aのデータ処理装置によって行われる処理を模式的に示すために図8Bに示すタイミング図に対応する例示的なタイミング図である。 図10は、本発明の他の実施形態の動作を示す例示的なタイミング図である。 図11は、本発明の他の実施形態の動作を示す例示的なタイミング図である。 図12は、本発明の他の実施形態の動作を示す例示的なタイミング図である。 図13は、本発明の他の実施形態の動作を示す例示的なタイミング図である。 図14は、本発明の他の実施形態の動作を示す例示的なタイミング図である。

Claims (32)

  1. 入力データを処理して、出力データを生成するデータ処理装置であって、
    第1の処理期間において、該入力データを暗号化する暗号化アルゴリズムである所定のアルゴリズムに従って該入力データを処理して、第1の出力データを生成する第1の処理装置と、
    第2の処理期間において該所定のアルゴリズムに従って該入力データを処理して、第2の出力データを生成する第2の処理装置と、
    該第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定する比較装置と
    を備え、
    該第1の処理装置および第2の処理装置は、それぞれにおける入力データの処理に同時に誤りが導入されたとき、該第1の出力データが該第2の出力データとは異なるデータとなるよう、それぞれの処理装置における入力データの処理を、その開示時刻を該第1の処理期間および第2の処理期間が重なる範囲でずらせて行う、データ処理装置。
  2. 前記所定のアルゴリズムは、複数の計算ラウンドの実行を含む、請求項に記載のデータ処理装置。
  3. 前記暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムである、請求項に記載のデータ処理装置。
  4. クロック信号を受信する入力をさらに備え、前記第1の処理装置および前記第2の処理装置の動作は該クロック信号によって制御される、請求項1〜3のいずれかに記載のデータ処理装置。
  5. 前記第2の処理装置は、前記第1の処理装置の後に、所定の数のクロックサイクルの処理を開始するように動作可能である、請求項に記載のデータ処理装置。
  6. 前記所定の数のクロックサイクルは1である、請求項に記載のデータ処理装置。
  7. 前記第2の処理装置は、前記第1の処理装置の後に、所定の数の計算ラウンドの処理を開始するように動作可能である、請求項または、あるいは請求項に従属する場合の請求項またはに記載のデータ処理装置。
  8. 前記所定の数の計算ラウンドは1である、請求項に記載のデータ処理装置。
  9. 前記処理装置の少なくとも1つは、処理の間、前記所定のアルゴリズムの一部として、1つ以上の遅延を追加するように動作可能である、請求項1〜8のいずれかに記載のデータ処理装置。
  10. 前記処理装置の前記少なくとも1つは、そのような遅延の間、前記出力データに影響を与えない、ダミー処理を行うように動作可能である、請求項に記載のデータ処理装置。
  11. 前記1つ以上の遅延は、ランダムである、請求項または10に記載のデータ処理装置。
  12. 前記ランダムな遅延は、実質的に電力がニュートラルである、請求項11に記載のデータ処理装置。
  13. 前記第2の処理装置は、前記第1の処理装置の後に、ランダムな時刻に処理を開始するように動作可能である、請求項1〜、および12のいずれか1つに記載のデータ処理装置。
  14. 前記比較装置は、前記第1の出力データおよび第2の出力データが同じである場合に、処理誤りがあったと判定する、請求項1〜13のいずれかに記載のデータ処理装置。
  15. 前記第2の処理期間内であり、前記第1の処理期間の外であるダウン期間の間、前記第1の処理装置がアクティブであることを確実にする処理制御装置をさらに備える、請求項1〜14のいずれかに記載のデータ処理装置。
  16. 前記第1の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作する、請求項15に記載のデータ処理装置。
  17. 前記第1の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行う、請求項に従属する場合の請求項15に記載のデータ処理装置。
  18. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも4分の1の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項1〜17のいずれかに記載のデータ処理装置。
  19. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも半分の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項18に記載のデータ処理装置。
  20. 前記第1の処理装置および第2の処理装置は、前記重なる期間の少なくとも4分の3の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項19に記載のデータ処理装置。
  21. 前記第1の処理装置および第2の処理装置は、前記重なる期間全体の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項20に記載のデータ処理装置。
  22. 少なくとも1つのさらなる処理期間において、前記所定のアルゴリズムに従って、前記入力データを処理して、少なくとも1つのさらなる出力データを生成する、少なくとも1つのさらなる処理装置をさらに備え、前記比較装置は、前記第1の出力データ、前記第2の出力データ、および少なくとも1つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、前記第1の処理装置、前記第2の処理装置、および該少なくとも1つのさらなる処理装置は、それぞれにおける入力データの処理に同時に誤りが導入されたとき、該第1の出力データ、該第2の出力データ、および該少なくとも1つのさらなる出力データが互いに異なるデータとなるよう、それぞれの処理装置における入力データの処理を、その開示時刻を該第1の処理期間、第2の処理期間、および少なくとも1つのさらなる処理期間が重なる範囲でずらせて行う、請求項1〜21のいずれかに記載のデータ処理装置。
  23. 前記比較装置は、処理誤りがあったと判定する場合に、前記第1の出力データ、第2の出力データ、または少なくとも1つのさらなる出力データのうちの1つを、前記入力データに対応する正しい出力データとして選択するようにさらに動作可能である、請求項22に記載のデータ処理装置。
  24. 前記比較装置は、前記正しい出力データを多数決投票システムに基づいて判定する、請求項23に記載のデータ処理装置。
  25. 処理誤りが発生したことを前記比較装置が判定する場合、出力データが前記データ処理装置から放出されない、請求項1〜22のいずれか1つに記載のデータ処理装置。
  26. 入力データを処理して出力データを生成する、データ処理方法であって、
    (a)第1の処理期間において、第1の処理装置が、該入力データを暗号化する暗号化アルゴリズムである所定のアルゴリズムに従って該入力データを処理して、第1の出力データを生成するステップと、
    (b)第2の処理期間において、第2の処理装置が、該所定のアルゴリズムに従って該入力データを処理して、第2の出力データを生成するステップと、
    (c)比較装置が、該第1の出力データおよび第2の出力データを比較して、処理誤りがあったか否かを判定するステップと
    を包含し、
    該ステップ(a)および(b)では、該第1の処理装置および該第2の処理装置における入力データの処理に同時に誤りが導入されたとき、該第1の出力データが該第2の出力データとは異なるデータとなるよう、それぞれの処理装置における入力データの処理が、その開示時刻を、該第1の処理期間と該第2の処理期間が重なる範囲でずらせて行われる
    、方法。
  27. 請求項1〜25のいずれか1つに記載のデータ処理装置を備える、スマートカード。
  28. データ処理デバイスにロードされる場合、該デバイスを、請求項1〜25のいずれか1つに記載の装置、あるいは、請求項27に記載のスマートカードにする、オペレーティングプログラム。
  29. データ処理デバイス上で実行される場合、該デバイスに請求項26に記載の方法を実行させる、オペレーティングプログラム。
  30. キャリアー媒体において実行される、請求項28または29に記載のオペレーティングプログラム。
  31. 前記キャリアー媒体が伝送媒体である、請求項30に記載のオペレーティングプログラム。
  32. 前記キャリアー媒体が格納媒体である、請求項30に記載のオペレーティングプログラム。
JP2004068254A 2003-03-12 2004-03-10 データ処理装置における誤り検出 Expired - Fee Related JP4386766B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0305596A GB2399426A (en) 2003-03-12 2003-03-12 Fault detection in data processing apparatus

Publications (2)

Publication Number Publication Date
JP2004310752A JP2004310752A (ja) 2004-11-04
JP4386766B2 true JP4386766B2 (ja) 2009-12-16

Family

ID=9954585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004068254A Expired - Fee Related JP4386766B2 (ja) 2003-03-12 2004-03-10 データ処理装置における誤り検出

Country Status (2)

Country Link
JP (1) JP4386766B2 (ja)
GB (1) GB2399426A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2614330A1 (en) * 2005-07-05 2007-01-11 Viasat, Inc. Synchronized high-assurance circuits
US8190877B2 (en) 2005-07-05 2012-05-29 Viasat, Inc. Trusted cryptographic processor
US8527741B2 (en) 2005-07-05 2013-09-03 Viasat, Inc. System for selectively synchronizing high-assurance software tasks on multiple processors at a software routine level
JP4117008B2 (ja) * 2006-10-30 2008-07-09 シャープ株式会社 暗号化装置
FR2935823B1 (fr) * 2008-09-11 2010-10-01 Oberthur Technologies Procede et dispositif de protection d'un microcircuit contre les attaques.
EP2290575A1 (en) * 2009-08-31 2011-03-02 Incard SA IC Card comprising an improved processor
JP5433498B2 (ja) * 2010-05-27 2014-03-05 株式会社東芝 暗号処理装置
WO2011148558A1 (ja) * 2010-05-28 2011-12-01 日本電気株式会社 署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体
JP6516097B2 (ja) * 2015-06-11 2019-05-22 大日本印刷株式会社 演算装置、icカード、演算方法、及び演算処理プログラム
US11461505B2 (en) * 2019-10-17 2022-10-04 Arm Limited Obfuscation of operations in computing devices
CN115442247B (zh) * 2022-11-03 2023-03-24 湖南警云智慧信息科技有限公司 一种采用人工智能数据处理运维箱

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099241A (en) * 1973-10-30 1978-07-04 Telefonaktiebolaget L M Ericsson Apparatus for facilitating a cooperation between an executive computer and a reserve computer
FR2728369B1 (fr) * 1994-12-19 1997-01-31 Sgs Thomson Microelectronics Procede et dispositif pour accroitre la securite d'un circuit integre
GB2317032A (en) * 1996-09-07 1998-03-11 Motorola Gmbh Microprocessor fail-safe system
US6058491A (en) * 1997-09-15 2000-05-02 International Business Machines Corporation Method and system for fault-handling to improve reliability of a data-processing system
CA2258338C (en) * 1999-01-11 2009-02-24 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors

Also Published As

Publication number Publication date
JP2004310752A (ja) 2004-11-04
GB0305596D0 (en) 2003-04-16
GB2399426A (en) 2004-09-15

Similar Documents

Publication Publication Date Title
Barenghi et al. Fault injection attacks on cryptographic devices: Theory, practice, and countermeasures
KR102628466B1 (ko) 메시지 부호화 및 복호화를 위한 블록 암호화 방법 및 이 방법을 구현하기 위한 암호화 장치
US7543159B2 (en) Device and method with reduced information leakage
US9571289B2 (en) Methods and systems for glitch-resistant cryptographic signing
US20040025032A1 (en) Method and system for resistance to statiscal power analysis
JPH10154976A (ja) タンパーフリー装置
Dassance et al. Combined fault and side-channel attacks on the AES key schedule
Tunstall Smart card security
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
JP4386766B2 (ja) データ処理装置における誤り検出
BR112013012216B1 (pt) proteção contra as escutas passivas
JP2010164904A (ja) 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法
US11336425B1 (en) Cryptographic machines characterized by a Finite Lab-Transform (FLT)
Gallais et al. Hardware trojans for inducing or amplifying side-channel leakage of cryptographic software
JP5261088B2 (ja) 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
US20210367766A1 (en) A computation device using shared shares
Gupta et al. Impact of side channel attack in information security
Blömer et al. Wagner’s Attack on a secure CRT-RSA Algorithm Reconsidered
Karri et al. Parity-based concurrent error detection in symmetric block ciphers
CA2327037A1 (en) Method to detect fault attacks against cryptographic algorithms
Breier et al. Introduction to fault analysis in cryptography
Hammouri et al. Novel puf-based error detection methods in finite state machines
Rivain On the physical security of cryptographic implementations
Asanuma et al. Even-Mansour Space-hard Cipher: White-box Cryptography Cipher Meets Physically Unclonable Function
Garay et al. MAC precomputation with applications to secure memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090903

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090929

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090929

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees