(57)【要約】      （修正有）【課題】スマートカードなどの処理の、外部からの不正な読み取りを防止する。【解決手段】入力データを処理して、出力データを生成するデータ処理装置は、第１の処理期間において所定のアルゴリズムに従ってその入力データを処理して、第１の出力データを生成する第１の処理装置と、第２の処理期間においてその所定のアルゴリズムに従ってその入力データを処理して、第２の出力データを生成する第２の処理装置と、その第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定する比較装置とを備え、その第１の処理装置および第２の処理装置は、第１の処理期間および第２の処理期間が重なり、重なる期間の間に少なくとも１度、その第１の処理装置および第２の処理装置が処理をその所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である。【選択図】図６Ａ
2004310752.tif 000002
【特許請求の範囲】
【請求項１】
入力データを処理して、出力データを生成するデータ処理装置であって、
第１の処理期間において所定のアルゴリズムに従って該入力データを処理して、第１の出力データを生成する第１の処理装置と、
第２の処理期間において該所定のアルゴリズムに従って該入力データを処理して、第２の出力データを生成する第２の処理装置と、
該第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定する比較装置と
を備え、
該第１の処理装置および第２の処理装置は、第１の処理期間および第２の処理期間が重なり、重なる期間の間に少なくとも１度、該第１の処理装置および第２の処理装置が処理を該所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、データ処理装置。
【請求項２】
前記第１の処理装置および第２の処理装置は、異なる時刻において、処理を開始するように動作可能である、請求項１に記載のデータ処理装置。
【請求項３】
前記所定のアルゴリズムは、前記入力データを暗号化する暗号化アルゴリズムである、請求項１または２に記載のデータ処理装置。
【請求項４】
前記所定のアルゴリズムは、複数の計算ラウンドの実行を含む、請求項３に記載のデータ処理装置。
【請求項５】
前記暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムである、請求項４に記載のデータ処理装置。
【請求項６】
クロック信号を受信する入力をさらに備え、前記第１の処理装置および第２の処理装置の動作は該クロック信号によって制御される、上記の請求項のいずれかに記載のデータ処理装置。
【請求項７】
前記第２の処理装置は、前記第１の処理装置の後に、所定の数のクロックサイクルの処理を開始するように動作可能である、請求項６に記載のデータ処理装置。
【請求項８】
前記所定の数のクロックサイクルは１である、請求項７に記載のデータ処理装置。
【請求項９】
前記第２の処理装置は、前記第１の処理装置の後に、所定の数の計算ラウンドの処理を開始するように動作可能である、請求項４または５、あるいは請求項４に従属する場合の請求項６または７に記載のデータ処理装置。
【請求項１０】
前記所定の数の計算ラウンドは１である、請求項９に記載のデータ処理装置。
【請求項１１】
前記処理装置の少なくとも１つは、処理の間、前記所定のアルゴリズムの一部として、１つ以上の遅延を追加するように動作可能である、上記の請求項のいずれかに記載のデータ処理装置。
【請求項１２】
前記処理装置の前記少なくとも１つは、そのような遅延の間、前記出力データに影響を与えない、ダミー処理を行うように動作可能である、請求項１１に記載のデータ処理装置。
【請求項１３】
前記１つ以上の遅延は、ランダムである、請求項１１または１２に記載のデータ処理装置。
【請求項１４】
前記ランダムな遅延は、実質的に電力がニュートラルである、請求項１３に記載のデータ処理装置。
【請求項１５】
前記第２の処理装置は、前記第１の処理装置の後に、ランダムな時刻に処理を開始するように動作可能である、請求項１〜７、９、および１１〜１４のいずれか１つに記載のデータ処理装置。
【請求項１６】
前記比較装置は、前記第１の出力データおよび第２の出力データが同じである場合に、処理誤りがあったと判定する、上記の請求項のいずれかに記載のデータ処理装置。
【請求項１７】
前記第２の処理期間内であり、前記第１の処理期間の外であるダウン期間の間、前記第１の処理装置がアクティブであることを確実にする処理制御装置をさらに備える、上記の請求項のいずれかに記載のデータ処理装置。
【請求項１８】
前記第１の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作する、請求項１７に記載のデータ処理装置。
【請求項１９】
前記第１の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行う、請求項４に従属する場合の請求項１７に記載のデータ処理装置。
【請求項２０】
前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも４分の１の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、上記の請求項のいずれかに記載のデータ処理装置。
【請求項２１】
前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも半分の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項２０に記載のデータ処理装置。
【請求項２２】
前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも４分の３の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項２１に記載のデータ処理装置。
【請求項２３】
前記第１の処理装置および第２の処理装置は、前記重なる期間全体の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、請求項２２に記載のデータ処理装置。
【請求項２４】
少なくとも１つのさらなる処理期間において、前記所定のアルゴリズムに従って、前記入力データを処理して、少なくとも１つのさらなる出力データを生成する、少なくとも１つのさらなる処理装置をさらに備え、前記比較装置は、前記第１の出力データ、第２の出力データ、および少なくとも１つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、前記第１の処理装置、第２の処理装置、および少なくとも１つのさらなる処理装置は、処理期間が重なり、重なる期間の間少なくとも１度、該第１の処理装置、第２の処理装置、および少なくとも１つのさらなる処理装置が処理を前記所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、上記の請求項のいずれかに記載のデータ処理装置。
【請求項２５】
前記比較装置は、処理誤りがあったと判定する場合に、前記第１の出力データ、第２の出力データ、または少なくとも１つのさらなる出力データのうちの１つを、前記入力データに対応する正しい出力データとして選択するようにさらに動作可能である、請求項２４に記載のデータ処理装置。
【請求項２６】
前記比較装置は、前記正しい出力データを多数決投票システムに基づいて判定する、請求項２５に記載のデータ処理装置。
【請求項２７】
処理誤りが発生したことを前記比較装置が判定する場合、出力データが前記データ処理装置から放出されない、請求項１〜２４のいずれか１つに記載のデータ処理装置。
【請求項２８】
入力データを処理して出力データを生成する、データ処理方法であって、
（ａ）第１の処理期間において、所定のアルゴリズムに従って該入力データを処理して、第１の出力データを生成するステップと、
（ｂ）第２の処理期間において、該所定のアルゴリズムに従って該入力データを処理して、第２の出力データを生成するステップと、
（ｃ）該第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定するステップと
を包含し、
該ステップ（ａ）および（ｂ）の処理は、該第１の処理期間および第２の処理期間が重なり、該重なる期間の間、該ステップ（ａ）および（ｂ）の処理が該所定のアルゴリズムの異なる部分に従って行われるように、行われる、方法。
【請求項２９】
実質的に、図６Ａ〜図１４を参照しながら上記で記載したとおりである、データ処理装置。
【請求項３０】
実質的に、図６Ａ〜図１４を参照しながら上記で記載したとおりである、データ処理方法。
【請求項３１】
請求項１〜２７および２９のいずれか１つに記載のデータ処理装置を備える、スマートカード。
【請求項３２】
データ処理デバイスにロードされる場合、該デバイスを、請求項１〜２７および２９のいずれか１つに記載の装置、あるいは、請求項３１に記載のスマートカードにする、オペレーティングプログラム。
【請求項３３】
データ処理デバイス上で実行される場合、該デバイスに請求項２８に記載の方法を実行させる、オペレーティングプログラム。
【請求項３４】
キャリアー媒体において実行される、請求項３２または３３に記載のオペレーティングプログラム。
【請求項３５】
前記キャリアー媒体が伝送媒体である、請求項３４に記載のオペレーティングプログラム。
【請求項３６】
前記キャリアー媒体が格納媒体である、請求項３４に記載のオペレーティングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置における誤り検出、具体的には、データを秘密にするため、暗号アルゴリズムを用いたスマートカードにおける誤り検出に関する。
【背景技術】
【０００２】
添付の図面の図１は、集積回路カード（ＩＣＣ）として公知の代表的なスマートカードの主な部分を示すブロック図である。図１のスマートカード１は、メモリ部３、中央処理装置（ＣＰＵ）５、入力／出力部（Ｉ／Ｏ）７、および処理装置９を含む。ＣＰＵ５は、メモリ部３、Ｉ／Ｏ部７、および処理装置９と双方向通信を行う。これらの部分は、通常は、スマートカード１に埋め込まれた１つの集積回路内に含まれる。スマートカード１は接触式タイプであってもよいし、非接触式タイプであってもよい。
【０００３】
スマートカード１は、ＰＯＷＥＲ（電力）およびＣＬＫチャンネルを介して外部デバイスと通信して、必要な電力およびクロック信号ＣＬＫを受信することができ（内部電源またはクロック源を有するスマートカードもあるが）、Ｉ／Ｏチャネルを介して外部デバイスと通信して、データをスマートカード１に通信し、スマートカード１から通信することができる。このような通信は、接触式カードのコンタクトピンを介する電気信号、あるいは、非接触式カードの誘導性、容量性または光学結合のいずれかによって行われる。
【０００４】
スマートカードは、カードに格納されたデータ、ならびに、カードに通信され、または、カードから通信されるデータのセキュリティおよび保全性が最も重要である場合に、多くの用途が見出される。例えば、スマートカードは、カード保持者の身元を証明するために用いられる身分証明書としての役割を果たし得る。スマートカードはまた、その人の病歴を全て格納した医療カードとしても用いられ得る。さらに、スマートカードは、オフライン取引ができるクレジット／デビットバンクカードとして用いられ得る。このような理由により、機密に関わるデータがＩ／Ｏチャネルを介してカードから出る前に暗号化されることができるように、スマートカードは暗号化／解読能力を有することが一般的である。
【０００５】
図１に示すスマートカード１において、このような暗号化は、処理装置９によって行われる。例えば、メモリ部３に格納されたデータがＩ／Ｏチャネルを介して外部のリクエストデバイスと通信する必要がある場合、このデータは、ＣＰＵ５によってメモリ部３からリクエストされ、入力データＤＩＮとして処理装置９に送信される。処理装置９は、入力データＤＩＮを暗号化して、暗号化された出力データＤＯＵＴを生成する。ＤＯＵＴは、ＣＰＵ５に返され、Ｉ／Ｏ部７に転送され、続いてＩ／Ｏチャネルで外部のリクエストデバイスに伝送される。
【０００６】
任意の適切な暗号化モデルが、暗号化を行うために処理装置９において用いられ得る。スマートカードにおいて用いられる暗号化アルゴリズムの例として、データ暗号化規格（ＤＥＳ）、トリプルＤＥＳ、アドバンスト暗号化規格（ＡＥＳ）、高速データ暗号化アルゴリズム（ＦＥＡＬ）および国際データ暗号化アルゴリズム（ＩＤＥＡ）などの対称（または秘密）鍵暗号がある。あるいは、ＲＳＡアルゴリズムおよびラビン暗号化方式などの非対称（または公開）鍵暗号化アルゴリズムの使用も可能である。
【０００７】
添付の図面の図２は、公開鍵暗号システムおよび秘密鍵暗号システムの両方を表す、従来の暗号化モデルを図示するブロック図である。このモデルにおいて、２つの当事者、ＸおよびＹは、暗号を用いて、公開チャネル１３にわたる非公開通信を行おうと試みる。当事者Ｘは、暗号化ユニットＥを用い、暗号化鍵ＫＸ（非対称暗号化モデルにおいては公開鍵であり、対称暗号化モデルにおいては秘密鍵である）を用いて、平文Ｐを暗号化して、当事者Ｙへと公開チャネル１３を介して通信される暗号文Ｃを生成する。当事者Ｙは、暗号化ユニットＤおよび鍵ＫＸに対応する秘密鍵ＫＹを用いて、暗号文Ｃを解読して、元の平文Ｐを再生する。
【０００８】
しかし、第三者ＺがＸとＹとの間の非公開なやりとりを、公開チャネル１３をモニタリングすることによって盗聴している。第三者Ｚは、用いられた暗号アルゴリズムについての全ての詳細を、秘密鍵ＫＸを除いて全て知り得、多くの暗号文のサンプルを持ち、いくつかの平文と暗号文との対を（他の何らかの手段によって当事者Ｘまたは当事者Ｙのいずれかから得られた平文とともに）有し得る。このように集められた情報は、その後、計算集約暗号解析にかけられて、用いられた暗号を解読して、暗号文を生成するために用いられた鍵ＫＸを判定する。
【０００９】
しかし、現代の暗号化技術は、従来の方法で集められた情報の力任せの計算解析に基づく、このような従来の攻撃に対してより抵抗力があるように開発されている。従って、暗号化システムの物理的な実施に基づいてよりわかりにくい情報ソースの使用が最近注目されている。
【００１０】
実際には、暗号システムは、その環境とインタラクトし、環境によって影響される物理デバイスにおいてインプリメントされる。ポケットベルおよびスマートカードのような電子デバイスは、動作する間、電力を消費し、放射を発し、また、温度変化および電磁場に反応する。これらの物理インタラクションが、Ｚのような第三者によって操作され、モニタリングされて、暗号解析において有用な情報をもたらし得る。図２に示す従来の暗号モデルは、現実の世界において暗号を用いることの物理的副作用について考慮しておらず、より現実的なモデルは、添付の図面の図３に示すように「サイドチャネル」の概念を用いて説明され得る。サイドチャネルは、物理的インプリメンテーションに固有の情報のソースであり、このような情報を用いた攻撃は、「サイドチャネル攻撃」と呼ばれる。
【００１１】
例えば、暗号関数の計算にかかる時間量は、その関数が何をするかのみに依存するのではなく、どのような入力が通過するかにも依存する。暗号化されるべきメッセージに加えて、暗号化関数は、通常、入力として秘密鍵をとり、従って、秘密鍵の値は、公に観察できるタイミング特徴に影響を与え得る。タイミングサイドチャンネル情報に基づくこのような攻撃は、Ｐａｕｌ  Ｋｏｃｈｅｒらによって、「Ｔｉｍｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ，ＲＳＡ，ＤＳＳ  ａｎｄ  Ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ」（ＣＲＹＰＴＯ‘９６）という名前の記事において提案されている。この文献において、攻撃者がいくつかのＲＳＡ署名を計算するのにかかる時間の測定値を解析し、署名したエンティティの秘密鍵を推測することができる、暗号解析方法が概説されている。
【００１２】
さらに、電子デバイスは、動作中、電源から電流を引く。電子デバイスが引く電流の量、すなわち、電力消費は、暗号化アルゴリズムの演算の間に論理ゲート（通常は、ＣＭＯＳ）が切り替わるにつれて、変動する。
【００１３】
電力消費は、行われている計算と相関するので、敵にとって有用である。電力解析に基づくサイドチャネル攻撃の中で最も脅威的なタイプのうちの１つは、Ｋｏｃｈｅｒらによって、「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」ＣＲＹＰＴＯ‘９９という文献において提案されている差動電力解析（ＤＰＡ）というタイプのものである。
【００１４】
サイドチャネル攻撃の他の形態として、暗号化システムに誤りを作為的に導入し、その誤りによって引き起こされた影響をその後モニタリングすることに基づくものがある。「Ｏｎ  ｔｈｅ  Ｉｍｐｏｒｔａｎｃｅ  ｏｆ  Ｃｈｅｃｋｉｎｇ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｆａｕｌｔｓ」（１９９７）という名称の文献において、Ｂｏｎｅｈ、ＤｅＭｉｌｌｏおよびＬｉｐｔｏｎは、インプリメントされた暗号化アルゴリズムについてのハードウェアデバイスリーク情報において誘発されるエラーの観察に基づく、誤りを利用したサイドチャネル攻撃を紹介している。暗号化デバイスをイオン化またはマイクロ波放射にさらすことによって、誤りは、ＲＳＡ公開鍵暗号アルゴリズムの係数を因数分解するために用いられ得る、レジスタのうちの１つのランダムビット位置に導入され得る。ＢｉｈｉｍおよびＳｈａｍｉｒは、差動誤り解析（ＤＦＡ）と呼ばれる誤りに基づくチャネル攻撃を、「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｆａｕｌｔ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｅｃｒｅｔ  Ｋｅｙ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ」（ＣＲＹＰＴＯ’９７）という名称の文献において提案した。この攻撃は、ＤＥＳなどの対称または秘密鍵暗号システムに対して有効である。ＤＦＡは、２００未満の暗号文（平文はなし）を用いて、最後のＤＥＳラウンド鍵を見つけることができ、さらに、スマートカードにインプリメントされた未知の暗号システムの構造を明らかにすることすらできる。もっとも良好なＤＥＳに対する非サイドチャネル攻撃は、６４テトラバイトよりわずかに少ない平文および１つの鍵で暗号化された暗号文しか必要としない。
【００１５】
このようなサイドチャネル攻撃は、デバイスの物理的インプリメンテーションについての秘密情報を明らかにするために、幅広い種類のデータ処理デバイスに適用され得る。このようなサイドチャネル攻撃がさらに高度になってきたため、サイドチャネルに漏れる情報を可能な限り少なくし、誤りを導入することをより困難にし、試みられた攻撃を検出することによって、その攻撃からスマートカードのようなデータ処理デバイスを保護することが重要である。
【発明の開示】
【課題を解決するための手段】
【００１６】
（発明の要旨）  
１.  入力データを処理して、出力データを生成するデータ処理装置であって、
第１の処理期間において所定のアルゴリズムに従って該入力データを処理して、第１の出力データを生成する第１の処理装置と、
第２の処理期間において該所定のアルゴリズムに従って該入力データを処理して、第２の出力データを生成する第２の処理装置と、
該第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定する比較装置と
を備え、
該第１の処理装置および第２の処理装置は、第１の処理期間および第２の処理期間が重なり、重なる期間の間に少なくとも１度、該第１の処理装置および第２の処理装置が処理を該所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、データ処理装置。
２．  前記第１の処理装置および第２の処理装置は、異なる時刻において、処理を開始するように動作可能である、項目１に記載のデータ処理装置。
３．  前記所定のアルゴリズムは、前記入力データを暗号化する暗号化アルゴリズムである、項目１または２に記載のデータ処理装置。
４．  前記所定のアルゴリズムは、複数の計算ラウンドの実行を含む、項目３に記載のデータ処理装置。
５．  前記暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムである、項目４に記載のデータ処理装置。
６．  クロック信号を受信する入力をさらに備え、前記第１の処理装置および第２の処理装置の動作は該クロック信号によって制御される、上記の項目のいずれかに記載のデータ処理装置。
７．  前記第２の処理装置は、前記第１の処理装置の後に、所定の数のクロックサイクルの処理を開始するように動作可能である、項目６に記載のデータ処理装置。
８．  前記所定の数のクロックサイクルは１である、項目７に記載のデータ処理装置。
９．  前記第２の処理装置は、前記第１の処理装置の後に、所定の数の計算ラウンドの処理を開始するように動作可能である、項目４または５、あるいは項目４に従属する場合の項目６または７に記載のデータ処理装置。
１０．  前記所定の数の計算ラウンドは１である、項目９に記載のデータ処理装置。
１１．  前記処理装置の少なくとも１つは、処理の間、前記所定のアルゴリズムの一部として、１つ以上の遅延を追加するように動作可能である、上記の項目のいずれかに記載のデータ処理装置。
１２．  前記処理装置の前記少なくとも１つは、そのような遅延の間、前記出力データに影響を与えない、ダミー処理を行うように動作可能である、項目１１に記載のデータ処理装置。
１３．  前記１つ以上の遅延は、ランダムである、項目１１または１２に記載のデータ処理装置。
１４．  前記ランダムな遅延は、実質的に電力がニュートラルである、項目１３に記載のデータ処理装置。
１５．  前記第２の処理装置は、前記第１の処理装置の後に、ランダムな時刻に処理を開始するように動作可能である、項目１〜７、９、および１１〜１４のいずれか１つに記載のデータ処理装置。
１６．  前記比較装置は、前記第１の出力データおよび第２の出力データが同じである場合に、処理誤りがあったと判定する、上記の項目のいずれかに記載のデータ処理装置。
１７．  前記第２の処理期間内であり、前記第１の処理期間の外であるダウン期間の間、前記第１の処理装置がアクティブであることを確実にする処理制御装置をさらに備える、上記の項目のいずれかに記載のデータ処理装置。
１８．  前記第１の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作する、項目１７に記載のデータ処理装置。
１９．  前記第１の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行う、項目４に従属する場合の項目１７に記載のデータ処理装置。
２０．  前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも４分の１の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、上記の項目のいずれかに記載のデータ処理装置。
２１．  前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも半分の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目２０に記載のデータ処理装置。
２２．  前記第１の処理装置および第２の処理装置は、前記重なる期間の少なくとも４分の３の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目２１に記載のデータ処理装置。
２３．  前記第１の処理装置および第２の処理装置は、前記重なる期間全体の間、処理を前記所定のアルゴリズムの異なる部分に従って行う、項目２２に記載のデータ処理装置。
２４．  少なくとも１つのさらなる処理期間において、前記所定のアルゴリズムに従って、前記入力データを処理して、少なくとも１つのさらなる出力データを生成する、少なくとも１つのさらなる処理装置をさらに備え、前記比較装置は、前記第１の出力データ、第２の出力データ、および少なくとも１つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、前記第１の処理装置、第２の処理装置、および少なくとも１つのさらなる処理装置は、処理期間が重なり、重なる期間の間少なくとも１度、該第１の処理装置、第２の処理装置、および少なくとも１つのさらなる処理装置が処理を前記所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、上記の項目のいずれかに記載のデータ処理装置。
２５．  前記比較装置は、処理誤りがあったと判定する場合に、前記第１の出力データ、第２の出力データ、または少なくとも１つのさらなる出力データのうちの１つを、前記入力データに対応する正しい出力データとして選択するようにさらに動作可能である、項目２４に記載のデータ処理装置。
２６．  前記比較装置は、前記正しい出力データを多数決投票システムに基づいて判定する、項目２５に記載のデータ処理装置。
２７．  処理誤りが発生したことを前記比較装置が判定する場合、出力データが前記データ処理装置から放出されない、項目１〜２４のいずれか１つに記載のデータ処理装置。
２８．  入力データを処理して出力データを生成する、データ処理方法であって、
（ａ）第１の処理期間において、所定のアルゴリズムに従って該入力データを処理して、第１の出力データを生成するステップと、
（ｂ）第２の処理期間において、該所定のアルゴリズムに従って該入力データを処理して、第２の出力データを生成するステップと、
（ｃ）該第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定するステップと
を包含し、
該ステップ（ａ）および（ｂ）の処理は、該第１の処理期間および第２の処理期間が重なり、該重なる期間の間、該ステップ（ａ）および（ｂ）の処理が該所定のアルゴリズムの異なる部分に従って行われるように、行われる、方法。
２９．  実質的に、図６Ａ〜図１４を参照しながら上記で記載したとおりである、データ処理装置。
３０．  実質的に、図６Ａ〜図１４を参照しながら上記で記載したとおりである、データ処理方法。
３１．  項目１〜２７および２９のいずれか１つに記載のデータ処理装置を備える、スマートカード。
３２．  データ処理デバイスにロードされる場合、該デバイスを、項目１〜２７および２９のいずれか１つに記載の装置、あるいは、項目３１に記載のスマートカードにする、オペレーティングプログラム。
３３．  データ処理デバイス上で実行される場合、該デバイスに項目２８に記載の方法を実行させる、オペレーティングプログラム。
３４．  キャリアー媒体において実行される、項目３２または３３に記載のオペレーティングプログラム。
３５．  前記キャリアー媒体が伝送媒体である、項目３４に記載のオペレーティングプログラム。
３６．  前記キャリアー媒体が格納媒体である、項目３４に記載のオペレーティングプログラム。
【００１７】
本発明の第１の局面によると、入力データを処理して、出力データを生成するデータ処理装置であって、第１の処理期間において所定のアルゴリズムに従って入力データを処理して、第１の出力データを生成する第１の処理装置と、第２の処理期間においてその所定のアルゴリズムに従って入力データを処理して、第２の出力データを生成する第２の処理装置と、第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定する比較装置とを備え、第１の処理装置および第２の処理装置は、第１の処理期間および第２の処理期間が重なり、重なる期間の間に少なくとも１度、第１の処理装置および第２の処理装置が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である、データ処理装置が提供される。
【００１８】
第１の処理装置および第２の処理装置は、異なる時刻において、処理を開始することが好ましい。これは、重なる期間の間少なくとも１度、第１の処理装置および第２の処理装置が、所定のアルゴリズムの異なる部分に従って処理を行うことを確実にする有効な態様である。
【００１９】
比較装置によって、処理誤りが発生したことが判定される場合、データ処理装置からの任意の出力データの放出を抑制することが可能である。このことは、外部に放出される任意のデータの保全性を保存し、誰かがデータ処理装置に対して誤りを利用するサイドチャネル攻撃を起こすことを困難にするために役立つ。
【００２０】
データ処理装置は、少なくとも１つのさらなる処理装置をさらに備え、少なくとも１つのさらなる処理装置は、少なくとも１つのさらなる処理期間の間、所定のアルゴリズムに従って、入力データを処理して、少なくとも１つのさらなる出力データを生成し、比較装置は、第１の出力データ、第２の出力データ、および少なくとも１つのさらなる出力データを比較して、処理誤りがあったか否かを判定し、第１の処理装置、第２の処理期間、および少なくとも１つのさらなる処理装置は、処理期間が重なり、重なる期間の間少なくとも１度、第１の処理装置、第２の処理装置、および少なくとも１つのさらなる処理装置が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である。３つ以上の処理装置をこのように用いることは、検出されないエラーをデータ処理装置に導入することを一層困難にし、従って、誤りを利用するサイドチャネル攻撃を一層困難にする。
【００２１】
比較装置は、２つ以上の出力データが同じでない場合に、処理誤りがあったと判定し得る。所定のアルゴリズムは、入力データを暗号化する暗号化アルゴリズムであってもよい。所定のアルゴリズムは、複数の計算ラウンドの実行を含み得る。例えば、暗号化アルゴリズムは、デジタル暗号化規格アルゴリズムであってもよい。
【００２２】
データ処理装置は、クロック信号を受信する入力をさらに備え、処理装置の動作はクロック信号によって制御され得る。処理装置のうちの１つは、他の処理装置の後に、所定の数のクロックサイクル、例えば、１クロックサイクルの処理を開始するように動作可能であってもよい。
【００２３】
所定のアルゴリズムが複数の計算ラウンドの実行を含む場合、処理装置のうちの１つは、他の処理装置の後に、所定の数の計算ラウンド、例えば、１ラウンドの処理を開始するように動作可能であってもよい。
【００２４】
少なくとも１つの処理装置は、処理の間、１つ以上の遅延を追加するように動作可能であってもよい。このような処理装置は、このような遅延の間、出力データに影響を与えない、ダミー処理を行うことが好ましい。このような遅延は、所定のアルゴリズムの一部であると考えられ得る。遅延は、ランダムであることが好ましく、電力がニュートラルであることが好ましい。処理装置のうちの１つは、他の処理装置の後に、ランダムに処理を開始するように動作可能であってもよい。これらの手段は、電力およびタイミングサイドチャネルを通じて外部に漏れる情報を低減することに役立ち、誤りの検出の可能性をより高める。
【００２５】
データ処理装置は、第２の処理期間内であり、第１の処理期間の外であるダウン期間の間、第１の処理装置がアクティブであることを確実にする処理制御装置をさらに備える。第１の処理装置は、そのようなダウン期間の間、ランダム入力データについて動作することが好ましい。あるいは、所定のアルゴリズムが複数の計算ラウンドの実行を含む場合、第１の処理装置は、そのようなダウン期間の間、入力データについて、暗号化ラウンドおよびその後に続く解読ラウンド、またはその逆を行うようにされてもよい。多くの処理装置がある場合、これらの処理装置のうち２つのみがこのように動作する場合でも、以前としてある程度の利点がある。これらの手段は、電力サイドチャネルを通じて外部に漏れる情報を低減することに役立ち得る。
【００２６】
処理誤りがあったと判定される場合に、比較装置、または他の何らかの装置は、出力データのうちの１つを、入力データに対応する正しい出力データとして選択し得る。例えば、３つ以上の処理装置が利用される場合、このような選択は、多数決投票システムに基づき得る。従って、誤り訂正および誤り検出が可能である。
【００２７】
第１の処理装置および第２の処理装置は、好ましくは、重なる期間の少なくとも４分の１の間、より好ましくは、重なる期間の少なくとも半分の間、さらに好ましくは、重なる期間の少なくとも４分の３の間、さらにより好ましくは、重なる期間全体の間、処理を所定のアルゴリズムの異なる部分に従って行う。
【００２８】
本発明の第２の局面によると、入力データを処理して出力データを生成する、データ処理方法であって、（ａ）第１の処理期間において、所定のアルゴリズムに従って入力データを処理して、第１の出力データを生成するステップと、（ｂ）第２の処理期間において、所定のアルゴリズムに従って入力データを処理して、第２の出力データを生成するステップと、（ｃ）第１の出力データおよび第２の出力データを比較して、処理誤りがあったか否かを判定するステップとを包含し、ステップ（ａ）および（ｂ）の処理は、第１の処理期間および第２の処理期間が重なり、重なる期間の間に少なくとも１度、ステップ（ａ）および（ｂ）の処理が所定のアルゴリズムの異なる部分に従って行われるように、行われる、方法が提供される。
【００２９】
本発明の第３の局面によると、本発明の第１の局面によるデータ処理装置を含む、スマートカードが提供される。
【００３０】
本発明の第４の局面によると、データ処理デバイスにロードされる場合、デバイスを、本発明の第１の局面による装置、あるいは、本発明の第３の局面によるスマートカードにする、オペレーティングプログラムが提供される。
【００３１】
本発明の第５の局面によると、データ処理デバイス上で実行される場合、デバイスに本発明の第２の局面による方法を実行させる、オペレーティングプログラムが提供される。
【発明を実施するための最良の形態】
【００３２】
例示のため、添付の図面が参照される。
【００３３】
本発明の主な目的は、誤りを利用するサイドチャネル攻撃に対して防御することであり、詳細な説明を提示する前に、以前に考慮されていた、このような攻撃を防御する方法についてまず簡略的に述べる。
【００３４】
一般的に、ＤＦＡなどの攻撃は、攻撃者が誤りを導入した後に、生成された誤りがある暗号文に攻撃者がアクセスできることが必要である。従って、このような攻撃を防ぐ方法の１つとして、誤りがある暗号文を攻撃者から遠ざけ、攻撃を無効にするように、デバイスが計算の出力を放出する前にチェックする方法がある。数回の攻撃が検出される場合、それ以上攻撃が試みられないように、スマートカードがロックされ得る。
【００３５】
誤り注入攻撃から保護する方法の１つとして、同じ入力で２回の暗号化を行い、２つの出力が同じであることをチェックする方法がある。攻撃者が、１つの計算に誤りを導入した場合、得られる暗号文は異なる。攻撃者が検出されず誤りを導入する唯一の方法は、同じ誤りを２回の計算の両方に導入することができる場合である。
【００３６】
図４Ａは、この保護メカニズムを実現する態様の１つを示すブロック図であり、図４Ｂは、図４Ａの回路の動作を示すタイミング図である。暗号化されるべきデータＤＩＮは、処理装置２を通過し、処理装置２は、第１の処理期間Ｔ１において、選択された暗号化アルゴリズムに従って入力データＤＩＮを処理して、第１の出力データＤＯＵＴ１を生成する。その後、処理期間Ｔ１の後に続く処理期間Ｔ２において、処理装置２は、同じ入力データＤＩＮを同じ暗号化アルゴリズムに従って処理して、第２の出力データＤＯＵＴ２を生成する。その後、比較期間ＴＣの間、比較装置４は、第１の出力データおよび第２の出力データを比較し、差が検出される場合、比較装置から出力されたエラー信号ＥＲＲが、誤りの検出を示すように変化する。差がない場合、出力データＤＯＵＴ（第１の出力データＤＯＵＴ１および第２の出力データＤＯＵＴ２と等しい）が比較装置４から出力される。
【００３７】
このようにして、図４Ａに示すデータ処理装置を用いて、入力データＤＩＮが直列に２回暗号化される。このような保護メカニズムが必要とするさらなるハードウェアは非常に少ないにも関わらず、計算を行うために約２倍の時間がかかる。さらに、攻撃者にとって同じ誤りを２回導入することは容易ではないが、以前として非常に可能性が高い。例えば、ランダム過渡誤りモデルにおいて、誤りが発生し得るビット位置が５１２あり、２つの誤り暗号がある場合、それぞれにおいて同じ誤りが発生する可能性は、５１２分の１である。従って、悪意あるユーザが必要な数の誤り暗号文を取得するために試みる必要がある暗号化の数は、５１２倍増えただけである。
【００３８】
図４Ａおよび図４Ｂを参照して説明されたように、直列に２倍した処理の代替例として、図５Ａおよび図５Ｂに示すように並列バージョンが実現され得る。図５Ａのデータ処理装置は、第１の処理装置６および別の第２の処理装置８を含む。第１の処理装置６は、第１の処理期間Ｔ１において、選択された暗号化アルゴリズムに従って、入力データＤＩＮを処理して、第１の出力データＤＯＵＴ１を生成する。第２の処理装置８は、第１の処理期間Ｔ１と完全に並列である第２の処理期間Ｔ２の間、同じ入力データＤＩＮを、同じ暗号化アルゴリズムに従って処理して、第２の出力データＤＯＵＴ２を生成する。第１の処理期間Ｔ１および第２の処理期間Ｔ２が並列であるという性質は、図５Ｂに図示されている。第１の出力データＤＯＵＴ１および第２の出力データＤＯＵＴ２が生成された後、比較装置４は、図４Ａを参照しながら上述した態様と同様の態様でデータを比較し、比較の結果に従って、比較装置から出力されたエラー信号ＥＲＲが、変化する。差がない場合、出力データＤＯＵＴ（第１の出力データＤＯＵＴ１および第２の出力データＤＯＵＴ２）が比較装置４から出力される。
【００３９】
図５Ａおよび図５Ｂを参照しながら説明される並列バージョンは、図４Ａおよび図４Ｂを参照しながら説明される直列バージョンと比較すると、余分にかかる時間が非常に少ないという利点を有するが、２倍の回路面積が必要である。しかし、さらなる大きな欠点は、例えば、電力異常が、計算において全く同じ時点で両方の計算に対して同様に影響を与えるため、同じ誤りが処理装置の両方に導入される可能性が非常に高いということである。これは十分な保護を提供しない可能性がある。
【００４０】
２つの異なる設計の処理装置を並列ブランチのそれぞれにおいて用いて、両方とも同じ入力に対して同じ出力を生成し得る。これは、同じ誤りが両方の計算に導入される可能性を低くする。しかし、これによって、設計に２倍の労力がかかり、同じ誤りが両方の処理装置に導入され得ないことを確実にすることは非常に複雑である。
【００４１】
上記の直列および並列技術の代わりとして、暗号化に続いて解読が行われ（またはその逆）、その後、最終的な結果がもとの入力と同じであるかチェックが行われてもよい。これは、公開鍵演算が秘密鍵演算よりもしばしばずっと速いＲＳＡなどのアルゴリズムについては特に有用であり得る。ＤＥＳなどの暗号については、暗号化は解読とほぼ同じであり、主な差は、ラウンド鍵が用いられる順序が反対になっていることである。
【００４２】
完全な暗号化演算を行い、結果をチェックすることと同様に、任意のステップサイズについて、ステップごとに、結果が同じであるかをチェックすることも可能である。例えば、繰り返しのラウンドを用いる計算について、結果は、全てのラウンドを行った後に比較するのではなく、個々のラウンドの後で比較され得る。これによって、誤りをより素早く検出し得るが、ＤＥＳなどの暗号については、全てのラウンドを行う時間が非常に短いので、実用的とは限らない。さらに、比較が多いということは、オーバーヘッドがより多いことを意味し得、ステップ間にエラーを導入することも可能であるので、それほど効率的とは限らない。
【００４３】
この代替的な技術は、Ｋａｒｒｉらによる「Ｃｏｎｃｕｒｒｅｎｔ  ｅｒｒｏｒ  ｄｅｔｅｃｔｉｏｎ  ｏｆ  ｆａｕｌｔ−ｂａｓｅｄ  ｓｉｄｅ−ｃｈａｎｎｅｌ  ｃｒｙｐｔａｎａｌｙｓｉｓ  ｏｆ  １２８−ｂｉｔ  ｓｙｍｍｅｔｒｉｃ  ｂｌｏｃｋ  ｃｉｐｈｅｒｓ」（２００１）に開示された同時エラー検出技術の基礎を形成する。この文献において記載されているように、暗号化／解読チェックは、アルゴリズムレベル（すなわち、暗号および解読全体を行った後のクロスチェック）、または、ラウンドレベル（暗号／解読ラウンドが終わる度のクロスチェック）の両方で、あるいは、演算レベル（ラウンド内の演算が終わる度のクロスチェック）でさえ、行われ得る。
【００４４】
図６Ａは、本発明を具現化するデータ処理装置を示すブロック図である。図６Ｂは、図６Ａのデータ処理装置の演算を示すタイミング図である。本発明を具現化するデータ処理装置は、第１の処理装置１２と、第２の処理装置１４と、比較装置４とを備える。
【００４５】
図５Ａを参照しながら上述したデータ処理回路の並列バージョンと同様に、第１の処理装置１２は、第１の処理期間Ｔ１において、所定の暗号化アルゴリズムに従って入力データＤＩＮを処理して、第１の出力データＤＯＵＴ１を生成し、第２の処理装置１４は、第２の処理期間Ｔ２において、同じ入力データＤＩＮを同じ暗号化アルゴリズムに従って処理して、第２の出力データＤＯＵＴ２を出力する。その後、比較期間ＴＣにおいて、比較装置４によって、２つのセットの出力データが比較されて、処理誤りがあるか否かが判定される。処理誤りがある場合、エラー信号ＥＲＲのレベルは、それに応じて設定され、大量の出力データが外部に放出されないことが確実にされ得る。出力データの抑制は、図示されたように比較装置４によって行われてもよいし、エラー信号ＥＲＲに依存して、他の何らかの装置によって行われてもよい。処理誤りがない場合、入力データＤＩＮに対応する出力データＤＯＵＴが放出され得る。
【００４６】
しかし、以前に考慮された技術とは異なり、本発明のこの実施形態において、第１の処理装置１２および第２の処理装置１４は、図６Ｂにおいて図示されるように第１の処理期間Ｔ１および第２の処理期間Ｔ２が重なるように、異なる時刻に処理を開始するように動作可能である。従って、一方の暗号化は、他方よりも僅かに遅延する。
【００４７】
このようにすると、総処理時間は、図５Ａおよび図５Ｂを参照しながら上述した並列バージョンよりもほんのわずかだけ長いが、２つの処理装置は、同じ暗号化演算を同時に行っていないので、誤りがある瞬間に導入される場合、計算の異なる部分に導入され、従って、異なる出力が生成される。従って、攻撃者にとって、同じ誤りを２回導入することは非常に困難であり、エラーチェックメカニズムの注意から逃れることは非常に困難である。
【００４８】
本発明のこの実施形態は、図４Ａおよび図４Ｂを参照しながら上述してきた直列バージョンよりもずっと、誤りを利用するサイドチャネル攻撃に対してロバストである。これは、直列方式において、異なる時刻における、２つの別個のエラー誘発動作（例えば、レーザビームの使用）が、実際に、同じエラーを両方の計算に導入すること（エラー誘発動作の間の時間が、直列処理期間の間の時間と同じである場合）が可能であるからである。このような場合、エラーの導入は、直接方式において検出を回避し、誤りがある暗号文が出力される。本発明を具現化する方式を用いると、処理の間の２つのこのような誤りを誘発する動作は、４つの異なるエラーを、２つを第１の処理期間において、２つを第２の処理期間において導入する可能性が高く、攻撃が検出される。この方式に対して攻撃を成功させるためには、攻撃者は、多くの誤りを、毎回、完全に正しい位置に注入する必要がある。攻撃者が一方の処理装置に注入した全ての誤りについて、他の（異なる）誤りが他方の処理装置に注入された可能性がある。これにより、新たに導入された誤りを相殺するために他の誤りを注入することが必要になり、それにより、今度は他の誤りがまた生成され、以下このように続く。
【００４９】
第１の処理装置１２が入力データＤＩＮの暗号化を開始する時刻と、第２の処理装置が入力データＤＩＮの暗号化を開始する時刻の間の時間差Ｄは、この技術が有効になるために大きくなる必要はない。例えば、１つのクロックサイクルの時間差Ｄは、適切であり、大幅な時間面での不利益を導入しないが、他の時間差も可能である。第１の処理装置１２および第２の処理装置１４がＤＥＳ暗号化アルゴリズムを行う実施形態において、ある処理装置は、他の処理装置が所定の数の暗号ラウンド、例えば１ラウンドを行った後で、処理を開始するように製造され得る。あるいは、ランダムな時間差が用いられてもよい。
【００５０】
誤りを利用するサイドチャネル攻撃に対する抵抗は、本発明のある実施形態において、処理装置によって行われる処理動作を通じて、遅延、好ましくは、ランダム遅延を追加することによってさらに向上し得る。これによって、同じ誤りを２回導入することがより困難になる。さらに、遅延が電力的にニュートラル（ｎｅｕｔｒａｌ）である場合（これは、遅延が電力追跡において見られることができないことを意味する）、差動電力解析（ＤＰＡ）などの他のサイドチャネル攻撃から保護するために役立ち得る。処理装置の少なくとも１つは、そのような遅延の間、出力データに影響しない、ダミー処理を行うようにされてもよい。このようなダミー処理の間、処理装置は、好ましくは、通常の計算を行っているかのように、同程度の電力を使い続ける。
【００５１】
図７Ａは、本発明を具現化する他のデータ処理装置を示すブロック図であり、図７Ｂは、図７Ａのデータ処理装置の演算を示すタイミング図である。図６Ａに示す第１の処理装置１２、第２の処理装置１４および比較装置４に加えて、図７Ａのデータ処理装置は、第３の処理装置１６を含む。第３の処理装置１６は、第１の処理装置１２および第２の処理装置１４と同じ入力データＤＩＮを同じ暗号化アルゴリズムに従って処理して、第３の出力ＤＯＵＴ３を生成する。この動作は、第３の処理期間Ｔ３の間に行われる。第１の処理装置１２、第２の処理装置１４、および第３の処理装置１６は、図７Ｂに示すように第１の処理期間Ｔ１、第２の処理期間Ｔ２、および第３の処理期間Ｔ３が重なるように、異なる時刻において処理を開始するように動作可能である。
【００５２】
従って、この実施形態は、３つのセットの出力データが比較装置４によって比較されて、処理誤りがあったか否かを判定することを可能にし、同じエラーを、３つのアルゴリズムに、各アルゴリズムにおいて同じ時点に導入する可能性はより低いので、よりすぐれた誤り検出性能の可能性を提供する。当然、エラー検出能力をさらに高めるため、３つより多い処理装置を設けることも可能である。
【００５３】
上記の実施形態において、処理誤りがあった場合、エラー信号ＥＲＲのレベルは、それに応じて設定され、大量の出力データが外部に放出されないことが保証され得る。しかし、３セット以上の出力データを用いる場合、出力データのうちどの１つ（または１つ以上）が正しい可能性があるのか判定し、その出力データを放出することも可能である。例えば、ＤＯＵＴ１およびＤＯＵＴ２が同じであるが、ＤＯＵＴ３がＤＯＵＴ１およびＤＯＵＴ２の両方と異なる場合、多数決投票システムに基づいて、ＤＯＵＴ１（または等しいＤＯＵＴ２）が、最終的な出力データＤＯＵＴとして選択され得る。このエラー補正機能は、図示されているように比較装置４によって行われてもよいが、別に設けられた装置によって行われてもよい。
【００５４】
差動電力解析（ＤＰＡ）攻撃に対する抵抗をさらに高めることは、両方の処理装置が可能な限り長い時間共に動作することを確実にすることによって達成され得る。なぜなら、一方の処理装置の電力消費が他方の処理装置の電力消費をマスキングするために役立ち得るからである。図６Ｂに示すタイミング図に従って動作する本発明を具現化する処理装置を用いると、暗号化演算の開始と終わりに、２つの処理装置のうちの１つのみが動作し、従って電力消費がより容易に解析され得る短い期間がある。
【００５５】
図８Ａは、図６Ａに示す部品に加えて、処理制御装置１８を含む、本発明を具現化するデータ処理装置を示すブロック図である。図８Ｂは、図８Ａのデータ処理装置の動作を示すタイミング図である。処理制御装置１８は、第１の処理装置および第２の処理装置の処理を制御するために設けられ、一方の処理装置が、他方の処理装置がその処理期間において処理を行っている間イナクティブにならないようにすることによって、上記のＤＰＡ攻撃に対して抵抗を高める。ダウン期間がない場合には一方または他方の処理装置がイナクティブになり得るダウン期間は、図８Ｂにおいて、ＴＤとして示される。例えば、第１の処理装置１２のダウン期間ＴＤは、第２の処理期間Ｔ２内（内側）にあり、第１の処理期間Ｔ１の外（外側）にある。前の実施形態において、処理装置の処理を制御する目的で提供される処理制御装置は、図６Ｂまたは図７Ｂに示す様態で制御を行う。
【００５６】
一つの可能性は、処理制御装置１８が、ダウン期間がない場合にはイナクティブになり得るダウン期間の間、処理装置１２または１４に、それに基づいて動作し得るランダムデータが提供されることを確実にすることである。このことは、以下の表に示されるが、この表において、「Ｅ」は、暗号化ラウンドを指し、「Ｄ」は解読ラウンドを示し、「Ｋｎ」はｎ番目のラウンド鍵を示す。
【００５７】
【表１】
2004310752.tif 000003
あるいは、１６ラウンドを有するＤＥＳなどの暗号を用いる場合、処理制御装置１８は、ダウン期間がない場合にイナクティブになるダウン期間の間、処理装置に暗号化のさらなるラウンドを行い、その後に同じラウンド鍵を用いて対応する解読のラウンドを行わせるように処理装置を制御し得、これは、最終的な出力に影響を与えない。この場合、第１の処理装置および第２の処理装置がそれぞれの処理を開始する時刻の差は、２ラウンドになり得る。このことは、以下の表に示されるが、この表において、「Ｅ」は、暗号化ラウンドを指し、「Ｄ」は解読ラウンドを示し、「Ｋｎ」はｎ番目のラウンド鍵を示す。
【００５８】
【表２】
2004310752.tif 000004
図９は、図８Ａの処理装置１２および処理装置１４によって行われる処理を模式的に示す、図８Ｂに対応する例示的なタイミング図である。図９において、第１の処理装置１２および第２の処理装置１４によって所定のアルゴリズムに従って行われる処理は、概念上の計算ブロック１〜８に分割される。例えば、計算ブロックは、ＤＥＳ暗号化アルゴリズムにおける暗号化ラウンドであり得る。処理装置１２および処理装置１４は、第１の処理装置１２が計算期間ｔ１において処理を開始し、第２の処理装置１４が計算期間ｔ２において処理を開始する状態で、それぞれ、９つの計算期間ｔ１〜ｔ９のうちの１つの間、計算ブロック１〜８を順次行う。計算期間ｔ９において第１の処理装置のダウン期間の間、処理装置１２によって、出力データＤＯＵＴに影響を与えない何らかの形の処理が行われ、処理装置１４についても、同様のことが処理期間ｔ１の間に行われる。ダウン期間の間のこのような処理は、図９において、「Ｆ」と表示される。
【００５９】
図８Ａ、図８Ｂおよび図９を参照しながら説明した実施形態において、処理制御装置１８は、第１の処理装置１２および第２の処理装置１４の処理を、異なる時刻に処理を開始する（それにより、遅延が処理に導入されない場合に第１の処理期間Ｔ１および第２の処理期間Ｔ２を異なる時刻に終了させるようにする）ように制御すると説明した。しかし、第１の処理装置１２および第２の処理装置１４が、処理を異なる時刻に開始することは必須ではなく、以下に説明するように、第１の処理装置１２および第２の処理装置１４が、異なる時刻において処理を完了することも必須ではない。
【００６０】
図１０は、図８Ａに示す装置を用いて、本発明の他の実施形態の動作を示す例示的なタイミング図である。図９と同様に、この実施形態において、第１の処理装置１２および第２の処理装置１４によって所定のアルゴリズムに従って行われる処理は、概念的な計算ブロック１〜８に分割されている。しかし、この実施形態における処理制御装置１８は、処理が同時に開始され、計算期間ｔ１の間に両方の処理装置によって第１の計算ブロック１が行われるように、第１の処理装置１２および第２の処理装置１４を制御する。その後、第１の処理装置１２は、続く計算期間ｔ２〜ｔ８において、それぞれ、続く計算ブロック２〜８を行う。
【００６１】
Ｘと表示される遅延期間が、計算期間ｔ２の間、第２の処理装置１４によって行われる処理に挿入される。その後、第２の処理装置１４は、計算期間ｔ３〜ｔ９において、それぞれ、続く計算ブロック２〜８を行う。遅延期間Ｘを挿入することによって、第１の処理装置１２および第２の処理装置１４は、処理を同じ時刻ｔ１に開始するが、処理を、異なる時刻ｔ８およびｔ９に完了する。
【００６２】
第２の処理装置１４は、遅延期間Ｘの間、アイドルであってよいが、電力サイドチャネルを通じる漏れを低減するために、出力データに影響を与えないダミー処理が行われることが好ましい。遅延期間Ｘは、第２の期間Ｔ２の間、ランダムな長さの時間にわたってランダム位置に挿入され得る。ランダムな遅延は、上述したように、差動電力解析（ＤＰＡ）などのサイドチャネル攻撃からさらに保護するために、電力的にニュートラルであることが好ましい。
【００６３】
図１１は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第１の処理装置１２および第２の処理装置１４は、異なる時刻ｔ１およびｔ２において、それぞれ処理を開始するようにされるが、計算期間ｔ８において第１の処理期間Ｔ１に遅延期間Ｘを挿入することによって、第１の処理装置１２および第２の処理装置１４は、同じ時刻ｔ９に処理を完了する。
【００６４】
図１２は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第１の処理装置１２および第２の処理装置１４は、両方とも、遅延期間Ｘをそれぞれ時刻ｔ２およびｔ８において、第１の処理期間Ｔ１および第２の処理期間Ｔ２に挿入することによって、計算期間ｔ１において処理を開始し、計算期間ｔ９において処理を完了する。
【００６５】
図１３は、本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態において、第１の処理装置１２は、第２の処理装置１４がｔ２において処理を開始する前に、ｔ１において処理を開始するが、第２の処理装置１４がｔ９において処理を完了した後に処理を完了する。これは、２つの遅延期間Ｘが、時刻ｔ４およびｔ８において第１の処理期間Ｔ１に挿入され、第２の処理期間Ｔ２に挿入される遅延期間がないためである。
【００６６】
図１４は、図１２の実施形態に類似する本発明の他の実施形態の動作を示す例示的なタイミング図である。この実施形態においては、遅延期間Ｘが、第１の処理期間Ｔ１および第２の処理期間Ｔ２に、それぞれ、時刻ｔ５およびｔ６において挿入される。
【００６７】
本発明を具現化する、図９〜図１４に示す処理方式の全ては、第１の処理装置１２および第２の処理装置１４は、第１の処理期間Ｔ１および第２の処理期間Ｔ２が重なり、また、重なる期間の間に少なくとも１度、第１の処理装置１２および第２の処理装置１４が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能であるという点が共通である。この点において、用語「重なり」は、処理期間Ｔ１およびＴ２の部分的な重なりがある図９〜図１１および図１３の場合と、第１の処理期間Ｔ１および第２の処理期間Ｔ２が同一である図１２および図１４に示す場合との両方とも含むことが理解されるべきである。
【００６８】
例えば、図９において、重なる期間は、計算期間ｔ２〜ｔ８を含み、第１の処理装置１２および第２の処理装置１４は、重なる期間全体の間に、所定のアルゴリズムの異なる部分に従って処理を行う。これは、重なる期間の間の任意の時刻に、装置に導入されるエラーは、両方の処理装置に影響を与える可能性があるが、計算の異なる部分の間であり、従ってそのようなエラーは検出される可能性が高いので有利である。エラーを両方の計算ブロック１に導入して、検出を避けようという試みは、ｔ２の間、そのエラーは、第２の処理装置１４の処理ブロック１と共に、第１の処理装置１２の処理ブロック２に影響を与える可能性が高いので、失敗する可能性が高い。
【００６９】
図９の方式において、計算ブロック１〜８のそれぞれは、少なくとも１つの異なる数字が付けられた計算ブロックによって保護される（カバーされる）。例えば、計算ブロック１は、計算期間ｔ２において、計算ブロック２によって保護される（カバーされる）。計算ブロック２は、計算期間ｔ２において計算ブロック１によって保護され（カバーされ）、また、計算期間ｔ３において、計算ブロック３によって覆われる。以下同様である。従って、エラーを、両方の処理装置において特定の計算ブロックに導入しようとする試みはまた、エラーを、少なくとも１つの他の計算ブロックの１つのインスタンスに導入し、従って検出される可能性がある。より劣りはするが、図１０〜１３に示す方式の場合と同様に、計算ブロックの全てがそのように保護されない場合でさえある程度の利点が得られる。
【００７０】
図１０において、重なる期間は、計算期間ｔ１〜ｔ８をカバーし、第１の処理装置１２および第２の処理装置１４は、ｔ２からｔ８まで、すなわち、重なる期間全体ではない所定アルゴリズムの異なる部分に従って処理を行う。この実施形態において、計算ブロック２〜８（すなわち、計算期間ｔ２〜ｔ８内に含まれる計算ブロック）のそれぞれは、少なくとも１つの異なる数字が付けられた計算ブロックによって、上述したように保護される。従って、ｔ１の間に両方の処理装置に導入されるエラーは、計算の同じ部分に影響を与える可能性が高く、従って、検出されないが、検出期間ｔ２〜ｔ８の間、保護は得られる。この点において、遅延期間Ｘは、出力データに影響を与えないが、所定のアルゴリズムの一部であると考慮され得る。
【００７１】
図１３において、処理は、計算ブロックｔ２、ｔ３、ｔ４、ｔ８、およびｔ９において、所定のアルゴリズムの異なる部分に従って行われ、計算ブロック１〜３、７および８のそれぞれ（すなわち、計算期間ｔ２、ｔ３、ｔ４、ｔ８およびｔ９に含まれるブロック）は、上述したように、少なくとも１つの異なる数字が付けられた計算ブロックによって保護される。類似の解析が、図１１および１２に適用される。
【００７２】
図１４において、重なる期間は、計算期間ｔ１〜ｔ９をカバーする。この実施形態において、遅延期間Ｘは、所定のアルゴリズムの一部であり、第１の処理装置１２および第２の処理装置１４が計算ブロックｔ５およびｔ６において所定のアルゴリズムの異なる部分に従って処理を行うと考えることができる。計算ブロック５は、少なくとも１つの異なる数字が付けられた計算ブロックによって上述したように保護されていないが（第１の処理装置１２および第２の処理装置１４は、重なる期間の間に少なくとも１度、出力データに実際に影響を与える所定のアルゴリズムの異なる部分に従って、処理を行うことが好ましいので、保護することは好ましい）、計算ブロック５は、ダミーブロックＸによってカバーされることによって保護される。
【００７３】
図１４に示す方式は、それぞれ、図４Ｂおよび図５Ｂを参照しながら上述した直列および並列バージョンの組合せに類似するが、両方に対して、別々に、潜在的な利点を有する。例えば、攻撃者が誤りを並列計算ブロック１〜４の法に導入し、直列計算ブロック５にも導入しようと試みる場合、同じエラーを２回ブロック５に正確に導入するのに十分な精度で攻撃のタイミングを調節することができない可能性が高い。それに加えて、攻撃者は、２つの並列な計算ブロックに同時に影響をあたえるような様態でエラーを導入する必要がある。これは、エラーを導入する可能性を制限する。さらに、この方式は、ブロック５を単に直列に追加し、他のブロックを保護しない方式よりも、単純である。
【００７４】
誤り検出技術の主な適用例を、図１に示すようなスマートカードにおける使用として、上記で説明してきたが、この技術は、他のセキュアデバイス、例えば、ＵＳＢトークン、セキュアメモリ、セキュアマルチメディア、およびセキュアアクセスモジュール（ＳＡＭ）などにおいて利用されてもよい。本発明の実施形態は、暗号化が行われる処理装置に限定されるわけではない。本発明の実施形態は、誤り検出が必要とされ、誤り訂正までもが必要とされる任意の用途において用いられ得る。誤り訂正については、データ処理アプリケーションが、エラー信号がある場合に、入力データＤＩＮを再処理するように設定されるか、図７Ａおよび図７Ｂを参照しながら説明したように３つ以上の処理装置が利用される場合、いずれの出力データが確実なものであるかを判定するために投票システムが用いられ得る。
【００７５】
本発明の実施形態は、ＤＥＳ、ＡＥＳ、および任意の他のタイプの対称暗号化アルゴリズムに適用され得る。ＲＳＡなどの非対称アルゴリズムにも適用され得る。同じ装置は、ＤＥＳおよびトリプルＤＥＳに用いられ得る。
【００７６】
本発明のある実施形態の処理装置が、ハードウェアにインプリメントされるとして説明されてきたが、本発明の実施形態はソフトウェアにインプリメントすることも可能である。例えば、図１を参照しながら上述したスマートカードデバイスにおいて、上述したように別個の処理装置９をスマートカード上に設けるのではなく、代わりに、オペレーティングプログラムが設けられて（メモリ部分３を用いて格納されて）、ＣＰＵ５を制御し、いわば、処理装置９の機能を果たす。
【００７７】
しかし、本発明の実施形態において、上述したように重なった様式で処理を行うために２つ以上の処理装置が必要とされるので、一般的に、１つのＣＰＵを用いることは可能でない。代わりに、同時処理を行うことが可能になるように、２つ以上の処理装置に対応する２つ以上のＣＰＵが設けられ得る。１つのＣＰＵは、そのＣＰＵ自体が演算の並列処理を行うように動作可能である場合に用いられ得る。例えば、ＣＰＵにおける多くの演算は、本質的に、ビット毎の演算（例えば、ＡＮＤ、ＯＲ、ＸＯＲ）であるが、３２ビットプロセッサは、３２ビットを同時に処理することができ、実質的に３２の演算を並列に行うことができる。従って、これらの３２ビットのうちのいくつかが１つの処理ラウンドからであり、いくつかが他の処理ラウンドからになるように、ＣＰＵを制御するように、オペレーティングプログラムを書くことが可能である。
【００７８】
本発明を具現化するオペレーティングプログラムは、コンピュータ読み出し可能媒体に格納され得るが、インターネットウェブサイトから提供されるダウンロード可能なデータ信号などの信号において実現されることもできる。添付の特許請求の範囲は、オペレーティングプログラム自体、キャリアー上の記録として、信号として、あるいは、任意の他の形態を含むと解釈されるべきである。
【００７９】
データ処理装置は、入力データ（ＤＩＮ）を処理して、出力データ（ＤＯＵＴ）を生成するために提供される。このデータ処理装置は、第１の処理期間（Ｔ１）において所定のアルゴリズムに従って入力データ（ＤＩＮ）を処理して、第１の出力データ（ＤＯＵＴ１）を生成する第１の処理装置（１２）と、入力データ（ＤＩＮ）を第２の処理期間（Ｔ２）において所定のアルゴリズムに従って処理して、第２の出力データ（ＤＯＵＴ２）を生成する第２の処理装置（１４）とを備える。このデータ処理装置は、さらに、第１および第２の出力データ（ＤＯＵＴ１およびＤＯＵＴ２）を比較して、処理誤りがあったか否かを判定する比較装置（４）を備える。第１および第２の処理装置（１２および１４）は、第１および第２の処理期間（Ｔ１およびＴ２）が重なり、重なる期間の間に少なくとも１度、第１および第２の処理装置（１２および１４）が処理を所定のアルゴリズムの異なる部分に従って行うように、処理を行うように動作可能である。
【００８０】
同じ入力データに対して同じ出力データを生成する、類似するが、必ずしも同じでない、２つの計算の連続は、同じアルゴリズムに従って実行されるとみなされることが理解される。
【図面の簡単な説明】
【００８１】
【図１】図１は、上述したように、代表的なスマートカードの主な部分を示すブロック図である。
【図２】図２は、上述したように、従来の暗号化モデルの説明において用いられる例示的なブロック図である。
【図３】図３は、上述したように、サイドチャネルを含む、暗号化モデルの説明に用いられる例示的なブロック図である。
【図４Ａ】図４Ａは、データ処理装置において誤りを検出する、以前に考えられていた直列技術の使用の説明に用いられる図である。
【図４Ｂ】図４Ｂは、データ処理装置において誤りを検出する、以前に考えられていた直列技術の使用の説明に用いられる図である。
【図５Ａ】図５Ａは、データ処理装置において誤りを検出する、以前に考えられていた並列技術の説明に用いられる図である。
【図５Ｂ】図５Ｂは、データ処理装置において誤りを検出する、以前に考えられていた並列技術の説明に用いられる図である。
【図６Ａ】図６Ａは、本発明の実施形態によるデータ処理装置を示す図である。
【図６Ｂ】図６Ｂは、本発明の実施形態によるデータ処理方法を示す図である。
【図７Ａ】図７Ａは、本発明の他の実施形態によるデータ処理装置を示す図である。
【図７Ｂ】図７Ｂは、本発明の他の実施形態によるデータ処理方法を示す図である。
【図８Ａ】図８Ａは、本発明の他の実施形態によるデータ処理装置を示す図である。
【図８Ｂ】図８Ｂは、本発明の他の実施形態によるデータ処理方法を示す図である。
【図９】図９は、図８Ａのデータ処理装置によって行われる処理を模式的に示すために図８Ｂに示すタイミング図に対応する例示的なタイミング図である。
【図１０】図１０は、本発明の他の実施形態の動作を示す例示的なタイミング図である。
【図１１】図１１は、本発明の他の実施形態の動作を示す例示的なタイミング図である。
【図１２】図１２は、本発明の他の実施形態の動作を示す例示的なタイミング図である。
【図１３】図１３は、本発明の他の実施形態の動作を示す例示的なタイミング図である。
【図１４】図１４は、本発明の他の実施形態の動作を示す例示的なタイミング図である。
【図１】
2004310752.tif 000005
【図２】
2004310752.tif 000006
【図３】
2004310752.tif 000007
【図４Ａ】
2004310752.tif 000008
【図４Ｂ】
2004310752.tif 000009
【図５Ａ】
2004310752.tif 000010
【図５Ｂ】
2004310752.tif 000011
【図６Ａ】
2004310752.tif 000012
【図６Ｂ】
2004310752.tif 000013
【図７Ａ】
2004310752.tif 000014
【図７Ｂ】
2004310752.tif 000015
【図８Ａ】
2004310752.tif 000016
【図８Ｂ】
2004310752.tif 000017
【図９】
2004310752.tif 000018
【図１０】
2004310752.tif 000019
【図１１】
2004310752.tif 000020
【図１２】
2004310752.tif 000021
【図１３】
2004310752.tif 000022
【図１４】
2004310752.tif 000023
【外国語明細書】
2004310752.tif 000024
2004310752.tif 000025
2004310752.tif 000026
2004310752.tif 000027
2004310752.tif 000028
2004310752.tif 000029
2004310752.tif 000030
2004310752.tif 000031
2004310752.tif 000032
2004310752.tif 000033
2004310752.tif 000034
2004310752.tif 000035
2004310752.tif 000036
2004310752.tif 000037
2004310752.tif 000038
2004310752.tif 000039
2004310752.tif 000040
2004310752.tif 000041
2004310752.tif 000042
2004310752.tif 000043
2004310752.tif 000044
2004310752.tif 000045
2004310752.tif 000046
2004310752.tif 000047
2004310752.tif 000048
2004310752.tif 000049
2004310752.tif 000050
2004310752.tif 000051
2004310752.tif 000052
2004310752.tif 000053
2004310752.tif 000054
2004310752.tif 000055
2004310752.tif 000056
2004310752.tif 000057
2004310752.tif 000058
2004310752.tif 000059
2004310752.tif 000060
2004310752.tif 000061
2004310752.tif 000062
2004310752.tif 000063
2004310752.tif 000064
2004310752.tif 000065
2004310752.tif 000066
2004310752.tif 000067
2004310752.tif 000068
2004310752.tif 000069
2004310752.tif 000070
2004310752.tif 000071
2004310752.tif 000072
2004310752.tif 000073
2004310752.tif 000074
2004310752.tif 000075
2004310752.tif 000076
2004310752.tif 000077