(57)【要約】  基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行う処理手段と、整数ｋを生成すること、整数ｋにモジュラスＮを乗算すること、および基数ｍに乗算の結果を加算することによって、モジュラ累乗法演算の結果に影響を与えることなく、累乗法演算が行われる前に基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する、基数ブラインディング手段とを含む、データ処理装置。【選択図】  図４
2004304800.tif 000002
【特許請求の範囲】
【請求項１】
基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行う処理手段と、
整数ｋを生成すること、該整数ｋにモジュラスＮを乗算すること、および該基数ｍに該乗算の結果を加算することによって、該モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する、基数ブラインディング手段と
を含む、データ処理装置。
【請求項２】
前記基数ブラインディング手段は、前記基数ｍを予測不可能な様態で変更する、請求項１に記載の装置。
【請求項３】
前記基数ブラインディング手段は、擬似ランダムアルゴリズムに従って、前記整数ｋを生成する、請求項２に記載の装置。
【請求項４】
前記基数ブラインディング手段は、このようなモジュラ累乗法演算が行われるたびに新たな整数ｋを生成する、上記の請求項のいずれか１つに記載の装置。
【請求項５】
前記モジュラ累乗法演算は暗号アルゴリズムの一部である、上記の請求項のいずれか１つに記載の装置。
【請求項６】
前記暗号化アルゴリズムは、ＲＳＡアルゴリズムである、請求項５に記載の装置。
【請求項７】
整数ｉを生成すること、Ｎのオイラートチエント関数φ（Ｎ）を計算すること、該オイラートチエント関数φ（Ｎ）に該整数ｉを乗算すること、および前記べき指数ｄに該乗算の結果を加算することによって、前記モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該べき指数ｄを変更して、装置から漏れるサイドチャネル情報の量をさらに低減する、べき指数ブラインディング手段をさらに含む、上記の請求項のいずれか１つに記載の装置。
【請求項８】
前記モジュラ累乗法演算は、一連の中間計算として行われる、上記の請求項のいずれか１つに記載の装置。
【請求項９】
前記モジュラ累乗法演算は、二乗および乗算技術に従って行われる、請求項８に記載の装置。
【請求項１０】
前記中間計算は、前記基数ｍを変更する効果が前記モジュラ累乗法演算が行われる間を通じて続くように行われる、請求項８または９に記載の装置。
【請求項１１】
前記モジュロ還元演算ｍｏｄ  Ｎは、形式ｍｄの累乗法演算が完了した後に行われる、請求項８、９または１０に記載の装置。
【請求項１２】
前記モジュロ還元演算ｍｏｄ  Ｎは、１つ以上の前記中間計算の後に行われる、請求項８〜１１のいずれか１つに記載の装置。
【請求項１３】
整数ｊを生成すること、およびブラインドされていないモジュラスＮに該整数ｊを乗算することによってブラインドされたモジュラスＷを生成し、前記処理手段に、式（ｍｄ  ｍｏｄ  Ｗ）に従って前記累乗法演算を行わせて、該モジュラ累乗法演算の結果に影響を与えず、前記装置から漏れるサイドチャネル情報の量をさらに低減する、モジュラスブラインディング手段をさらに含む、請求項１〜１１のいずれか１つに記載の装置。
【請求項１４】
請求項８に従属すると解釈される場合、前記モジュロ還元演算ｍｏｄ  Ｗは、１つ以上の前記中間計算後に行われる、請求項１３に記載の装置。
【請求項１５】
基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行うデータ処理装置において用いられるデータ処理方法であって、
整数ｋを生成すること、該整数ｋにモジュラスＮを乗算すること、および該基数ｍに該乗算の結果を加算することによって、該モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する工程
を包含する、方法。
【請求項１６】
実質的に、図４〜図８を参照して上記のとおりである、データ処理装置。
【請求項１７】
実質的に、図４〜図８を参照して上記のとおりである、データ処理方法。
【請求項１８】
請求項１〜１４および１６のいずれか１つに記載のデータ処理装置を備える、スマートカード。
【請求項１９】
データ処理デバイスにロードされる場合、該デバイスを、請求項１〜１４および１６のいずれか１つに記載の装置、あるいは、請求項１８に記載のスマートカードにする、オペレーティングプログラム。
【請求項２０】
データ処理デバイス上で実行される場合、該デバイスに請求項１５または１７に記載の方法を実行させる、オペレーティングプログラム。
【請求項２１】
キャリア媒体において実行される、請求項１９または２０に記載のオペレーティングプログラム。
【請求項２２】
前記キャリア媒体が伝送媒体である、請求項２１に記載のオペレーティングプログラム。
【請求項２３】
前記キャリア媒体が格納媒体である、請求項２１に記載のオペレーティングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置における、例えば、データを秘密にするため暗号アルゴリズムを用いたスマートカードにおけるサイドチャネル攻撃防止に関する。
【背景技術】
【０００２】
添付の図面の図１は、集積回路カード（ＩＣＣ）として公知の代表的なスマートカードの主な部分を示すブロック図である。図１のスマートカード１は、メモリ部３、中央処理装置（ＣＰＵ）５、入力／出力（Ｉ／Ｏ）部７、および処理装置９を含む。ＣＰＵ５は、メモリ部３、Ｉ／Ｏ部７、および処理装置９と双方向通信を行う。これらの部分は、通常は、スマートカード１に埋め込まれた１つの集積回路内に含まれる。スマートカード１は接触式タイプであってもよいし、非接触式タイプであってもよい。
【０００３】
スマートカード１は、ＰＯＷＥＲ（電力）およびＣＬＫチャンネルを介して外部デバイスと通信して、必要な電力およびクロック信号ＣＬＫを受信することができ（内部電源またはクロック源を有するスマートカードもあるが）、Ｉ／Ｏチャネルを介して外部デバイスと通信して、データをスマートカード１に通信し、スマートカード１から通信することができる。このような通信は、接触式カードのコンタクトピンを介する電気信号、あるいは、非接触式カードの誘導性、容量性または光学結合のいずれかによって行われる。
【０００４】
スマートカードは、カードに格納されたデータ、ならびに、カードに通信され、または、カードから通信されるデータのセキュリティおよび保全性が最も重要である場合に、多くの用途が見出される。例えば、スマートカードは、カード保持者の身元を証明するために用いられる身分証明書としての役割を果たし得る。スマートカードはまた、その人の病歴を全て格納した医療カードとしても用いられ得る。さらに、スマートカードは、オフライン取引ができるクレジット／デビットバンクカードとして用いられ得る。このような理由により、機密に関わるデータがＩ／Ｏチャネルを介してカードから出る前に暗号化されることができるように、スマートカードは暗号化／解読能力を有することが一般的である。
【０００５】
図１に示すスマートカード１において、このような暗号化は、処理装置９によって行われる。例えば、メモリ部３に格納されたデータがＩ／Ｏチャネルを介して外部のリクエストデバイスと通信する必要がある場合、このデータは、ＣＰＵ５によってメモリ部３からリクエストされ、入力データＤＩＮとして処理装置９に送信される。処理装置９は、入力データＤＩＮを暗号化して、暗号化された出力データＤＯＵＴを生成する。ＤＯＵＴは、ＣＰＵ５に返され、Ｉ／Ｏ部７に転送され、続いてＩ／Ｏチャネルで外部のリクエストデバイスに伝送される。
【０００６】
任意の適切な暗号化モデルが、暗号化を行うために処理装置９において用いられ得る。スマートカードにおいて用いられる暗号化アルゴリズムの例として、データ暗号化規格（ＤＥＳ）、トリプルＤＥＳ、アドバンスト暗号化規格（ＡＥＳ）、高速データ暗号化アルゴリズム（ＦＥＡＬ）および国際データ暗号化アルゴリズム（ＩＤＥＡ）などの対称（または秘密）鍵暗号がある。あるいは、リベスト−シャミール−アルドレマン（ＲＳＡ）アルゴリズムおよびラビン暗号化方式などの非対称（または公開）鍵暗号化アルゴリズムの使用も可能である。
【０００７】
添付の図面の図２は、公開鍵暗号システムおよび秘密鍵暗号システムの両方を表す、従来の暗号化モデルを図示するブロック図である。このモデルにおいて、２つの当事者、ＸおよびＹは、暗号を用いて、公開チャネル１３にわたる非公開通信を行おうと試みる。当事者Ｘは、暗号化ユニットＥを用い、暗号化鍵ＫＸ（非対称暗号化モデルにおいては公開鍵であり、対称暗号化モデルにおいては秘密鍵である）を用いて、平文Ｐを暗号化して、当事者Ｙへと公開チャネル１３を介して通信される暗号文Ｃを生成する。当事者Ｙは、暗号化ユニットＤおよび鍵ＫＸに対応する秘密鍵ＫＹを用いて、暗号文Ｃを解読して、元の平文Ｐを再生する。
【０００８】
しかし、第三者ＺがＸとＹとの間の非公開なやりとりを、公開チャネル１３をモニタリングすることによって盗聴している。第三者Ｚは、用いられた暗号アルゴリズムについての全ての詳細を、秘密鍵ＫＸを除いて全て知り得、多くの暗号文のサンプルを持ち、いくつかの平文と暗号文との対を（他の何らかの手段によって当事者Ｘまたは当事者Ｙのいずれかから得られた平文とともに）有し得る。このように集められた情報は、その後、計算集約暗号解析にかけられて、用いられた暗号を解読して、暗号文を生成または解読するために用いられた秘密鍵を判定する。
【０００９】
しかし、現代の暗号化技術は、従来の方法で集められた情報の力任せの計算解析に基づく、このような従来の攻撃に対してより抵抗力があるように開発されている。従って、暗号化システムの物理的な実施に基づいてよりわかりにくい情報ソースの使用が最近注目されている。
【００１０】
実際には、暗号システムは、その環境とインタラクトし、環境によって影響される物理デバイスにおいてインプリメントされる。ポケットベルおよびスマートカードのような電子デバイスは、動作する間、電力を消費し、放射を発し、また、温度変化および電磁場に反応する。これらの物理インタラクションが、Ｚのような第三者によって操作され、モニタリングされて、暗号解析において有用な情報をもたらし得る。図２に示す従来の暗号モデルは、現実の世界において暗号を用いることの物理的副作用について考慮しておらず、より現実的なモデルは、添付の図面の図３に示すように「サイドチャネル」の概念を用いて説明され得る。サイドチャネルは、物理的インプリメンテーションに固有の情報のソースであり、このような情報を用いた攻撃は、「サイドチャネル攻撃」と呼ばれる。
【００１１】
例えば、暗号関数の計算にかかる時間量は、その関数が何をするかのみに依存するのではなく、どのような入力が通過するかにも依存する。暗号化されるべきメッセージに加えて、暗号化関数は、通常、入力として秘密鍵をとり、従って、秘密鍵の値は、公に観察できるタイミング特徴に影響を与え得る。タイミングサイドチャンネル情報に基づくこのような攻撃は、Ｐａｕｌ  Ｋｏｃｈｅｒらによって、「Ｔｉｍｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ，ＲＳＡ，ＤＳＳ  ａｎｄ  Ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ」（ＣＲＹＰＴＯ‘９６）という名前の記事において提案されている。この文献において、攻撃者がいくつかのＲＳＡ署名を計算するのにかかる時間の測定値を解析し、署名したエンティティの秘密鍵を推測することができる、暗号解析方法が概説されている。
【００１２】
さらに、電子デバイスは、動作中、電源から電流を引く。電子デバイスが引く電流の量、すなわち、電力消費は、暗号化アルゴリズムの演算の間に論理ゲート（通常は、ＣＭＯＳ）が切り替わるにつれて、変動する。電力消費は、行われている計算と相関するので、敵にとって有用である。電力解析に基づくサイドチャネル攻撃の中で最も脅威的なタイプのうちの１つは、Ｋｏｃｈｅｒらによって、「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」ＣＲＹＰＴＯ‘９９という文献において提案されている差動電力解析（ＤＰＡ）というタイプのものである。
【００１３】
サイドチャネル攻撃の他の形態として、暗号化システムに誤りを作為的に導入し、その誤りによって引き起こされた影響をその後モニタリングすることに基づくものがある。「Ｏｎ  ｔｈｅ  Ｉｍｐｏｒｔａｎｃｅ  ｏｆ  Ｃｈｅｃｋｉｎｇ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｆａｕｌｔｓ」（１９９７）という名称の文献において、Ｂｏｎｅｈ、ＤｅＭｉｌｌｏおよびＬｉｐｔｏｎは、インプリメントされた暗号化アルゴリズムについてのハードウェアデバイスリーク情報において誘発されるエラーの観察に基づく、誤りを利用したサイドチャネル攻撃を紹介している。暗号化デバイスをイオン化またはマイクロ波放射にさらすことによって、誤りは、ＲＳＡ公開鍵暗号アルゴリズムの係数を因数分解するために用いられ得る、レジスタのうちの１つのランダムビット位置に導入され得る。ＢｉｈｉｍおよびＳｈａｍｉｒは、差動誤り解析（ＤＦＡ）と呼ばれる誤りに基づくチャネル攻撃を、「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｆａｕｌｔ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｓｅｃｒｅｔ  Ｋｅｙ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ」（ＣＲＹＰＴＯ’９７）という名称の文献において提案した。この攻撃は、ＤＥＳなどの対称または秘密鍵暗号システムに対して有効である。ＤＦＡは、２００未満の暗号文（平文はなし）を用いて、最後のＤＥＳラウンド鍵を見つけることができ、さらに、スマートカードにインプリメントされた未知の暗号システムの構造を明らかにすることすらできる。もっとも良好なＤＥＳに対する非サイドチャネル攻撃は、６４テラバイトよりわずかに少ない平文および１つの鍵で暗号化された暗号文しか必要としない。
【００１４】
このようなサイドチャネル攻撃は、デバイスの物理的インプリメンテーションについての秘密情報を明らかにするために、幅広い種類のデータ処理デバイスに適用され得る。このようなサイドチャネル攻撃がさらに高度になってきたため、サイドチャネルに漏れる情報を可能な限り少なくし、誤りを導入することをより困難にし、試みられた攻撃を検出することによって、このような技術的課題に対処し、その攻撃からスマートカードのようなデータ処理デバイスを保護することが重要である。
【発明の開示】
【課題を解決するための手段】
【００１５】
１．  基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行う処理手段と、
整数ｋを生成すること、該整数ｋにモジュラスＮを乗算すること、および該基数ｍに該乗算の結果を加算することによって、該モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する、基数ブラインディング手段と
を含む、データ処理装置。
【００１６】
２．  前記基数ブラインディング手段は、前記基数ｍを予測不可能な様態で変更する、項目１の装置。
【００１７】
３．  前記基数ブラインディング手段は、擬似ランダムアルゴリズムに従って、前記整数ｋを生成する、項目２の装置。
【００１８】
４．  前記基数ブラインディング手段は、このようなモジュラ累乗法演算が行われるたびに新たな整数ｋを生成する、項目１〜３の装置。
【００１９】
５．  前記モジュラ累乗法演算は暗号アルゴリズムの一部である、項目１〜４の装置。
【００２０】
６．  前記暗号化アルゴリズムは、ＲＳＡアルゴリズムである、項目５の装置。
【００２１】
７．  整数ｉを生成すること、Ｎのオイラートチエント関数φ（Ｎ）を計算すること、該オイラートチエント関数φ（Ｎ）に該整数ｉを乗算すること、および前記べき指数ｄに該乗算の結果を加算することによって、前記モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該べき指数ｄを変更して、装置から漏れるサイドチャネル情報の量をさらに低減する、べき指数ブラインディング手段をさらに含む、項目１〜６の装置。
【００２２】
８．  前記モジュラ累乗法演算は、一連の中間計算として行われる、項目１〜７の装置。
【００２３】
９．  前記モジュラ累乗法演算は、二乗および乗算技術に従って行われる、項目８の装置。
【００２４】
１０．  前記中間計算は、前記基数ｍを変更する効果が前記モジュラ累乗法演算が行われる間を通じて続くように行われる、項目８または９の装置。
【００２５】
１１．  前記モジュロ還元演算ｍｏｄ  Ｎは、形式ｍｄの累乗法演算が完了した後に行われる、項目８、９または１０の装置。
【００２６】
１２．  前記モジュロ還元演算ｍｏｄ  Ｎは、１つ以上の前記中間計算の後に行われる、項目８〜１１の装置。
【００２７】
１３．  整数ｊを生成すること、およびブラインドされていないモジュラスＮに該整数ｊを乗算することによってブラインドされたモジュラスＷを生成し、前記処理手段に、式（ｍｄ  ｍｏｄ  Ｗ）に従って前記累乗法演算を行わせて、該モジュラ累乗法演算の結果に影響を与えず、前記装置から漏れるサイドチャネル情報の量をさらに低減する、モジュラスブラインディング手段をさらに含む、項目１〜１１の装置。
【００２８】
１４．  項目８に従属すると解釈される場合、前記モジュロ還元演算ｍｏｄ  Ｗは、１つ以上の前記中間計算後に行われる、項目１３の装置。
【００２９】
１５．  基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行うデータ処理装置において用いられるデータ処理方法であって、
整数ｋを生成すること、該整数ｋにモジュラスＮを乗算すること、および該基数ｍに該乗算の結果を加算することによって、該モジュラ累乗法演算の結果に影響を与えることなく、該累乗法演算が行われる前に該基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する工程
を包含する、方法。
【００３０】
１６．  実質的に、図４〜図８を参照して上記のとおりである、データ処理装置。
【００３１】
１７．  実質的に、図４〜図８を参照して上記のとおりである、データ処理方法。
【００３２】
１８．  項目１〜１４および１６のいずれか１つのデータ処理装置を備える、スマートカード。
【００３３】
１９．  データ処理デバイスにロードされる場合、該デバイスを、請求項１〜１４および１６のいずれか１つの装置、あるいは、項目１８のスマートカードにする、オペレーティングプログラム。
【００３４】
２０．  データ処理デバイス上で実行される場合、該デバイスに項目１５または１７の方法を実行させる、オペレーティングプログラム。
【００３５】
２１．  キャリア媒体において実行される、項目１９または２０のオペレーティングプログラム。
【００３６】
２２．  前記キャリア媒体が伝送媒体である、項目２１のオペレーティングプログラム。
【００３７】
２３．  前記キャリア媒体が格納媒体である、項目２１のオペレーティングプログラム。
【００３８】
本発明の第１の局面によると、基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行う処理手段と、整数ｋを生成すること、整数ｋにモジュラスＮを乗算すること、および基数ｍに乗算の結果を加算することによって、モジュラ累乗法演算の結果に影響を与えることなく、累乗法演算が行われる前に基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する、基数ブラインディング手段とを含む、データ処理装置が提供される。
【００３９】
従って、実際に行われるモジュラ累乗法演算は、（ｍ＋ｋ＊Ｎ）ｄ  ｍｏｄ  Ｎである。この記載の文脈において、装置から漏れるサイドチャネル情報の量を低減したいという要求は、攻撃者にとって何らかの役に立ち得るサイドチャネル情報の量を低減したいという要求を意味する。つまり、装置から外部へとサイドチャネルを介して漏れることを防ぐことが理想的であるはずの秘密情報の漏れである。これは、サイドチャネル攻撃をより難しくすることと同等の効果を有する。従って、本発明の実施形態は、実際の技術的利点を提供する。
【００４０】
基数ブラインディング手段は、例えば、ランダムまたは擬似ランダムアルゴリズムに従って、整数ｋを生成する、基数ｍを予測不可能な様態で変更することが好ましい。基数ブラインディング手段は、このようなモジュラ累乗法演算が行われるたびに新たな整数ｋを生成することが好ましい。モジュラ累乗法演算は、ＲＳＡアルゴリズムのような暗号アルゴリズムの一部であってもよい。
【００４１】
データ処理装置は、整数ｉを生成すること、Ｎのオイラートチエント関数φ（Ｎ）を計算すること、オイラートチエント関数φ（Ｎ）に整数ｉを乗算すること、およびべき指数ｄに乗算の結果を加算することによって、モジュラ累乗法演算の結果に影響を与えることなく、累乗法演算が行われる前にべき指数ｄを変更して、装置から漏れるサイドチャネル情報の量をさらに低減する、べき指数ブラインディング手段をさらに含んでもよい。
【００４２】
モジュラ累乗法演算は、例えば、二乗および乗算技術に従って、一連の中間計算として行われてもよい。中間計算は、基数ｍを変更する効果がモジュラ累乗法演算が行われる間を通じて続くように行われることが好ましい。言及される効果は、装置から漏れるサイドチャネル情報の量を低減する技術的効果、すなわち、サイドチャネル攻撃をより困難にする技術的効果である。
【００４３】
モジュロ還元演算ｍｏｄ  Ｎは、形式ｍｄの累乗法演算が完了した後に行われてもよい。モジュロ還元演算ｍｏｄ  Ｎはまた、１つ以上の中間計算の後に行われてもよい。
【００４４】
データ処理装置は、整数ｊを生成すること、およびブラインドされていないモジュラスＮに整数ｊを乗算することによってブラインドされたモジュラスＷを生成し、処理手段に、式（ｍｄ  ｍｏｄ  Ｗ）に従って累乗法演算を行わせて、モジュラ累乗法演算の結果に影響を与えず、装置から漏れるサイドチャネル情報の量をさらに低減する、モジュラスブラインディング手段をさらに含んでもよい。
【００４５】
このようなモジュラスブラインディング手段を用いて、モジュラ累乗法演算が一連の中間計算として行われる場合、モジュロ還元演算ｍｏｄ  Ｎではなく、モジュロ還元演算ｍｏｄ  Ｗが、１つ以上の中間計算後に行われ得る。
【００４６】
本発明の第２の局面によると、基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む処理演算を行うデータ処理装置において用いられるデータ処理方法であって、整数ｋを生成すること、整数ｋにモジュラスＮを乗算すること、および基数ｍに乗算の結果を加算することによって、モジュラ累乗法演算の結果に影響を与えることなく、累乗法演算が行われる前に基数ｍを変更して、装置から漏れるサイドチャネル情報の量を低減する工程を包含する方法が提供される。
【００４７】
本発明の第３の局面によると、本発明の第１の局面によるデータ処理装置を含む、スマートカードが提供される。
【００４８】
本発明の第４の局面によると、データ処理デバイスにロードされる場合、デバイスを、本発明の第１の局面による装置、あるいは、本発明の第３の局面によるスマートカードにする、オペレーティングプログラムが提供される。データ処理装置の処理手段および基数ブラインディング手段は、それぞれの機能を果たすように適応すると言われ得る。
【００４９】
本発明の第５の局面によると、データ処理デバイス上で実行される場合、デバイスに本発明の第２の局面による方法を実行させる、オペレーティングプログラムが提供される。
【００５０】
このようなオペレーティングプログラムは、キャリア媒体において実行され得る。キャリア媒体は、伝送媒体または格納媒体であってもよい。
【発明を実施するための最良の形態】
【００５１】
本発明のある実施形態は、特に、代表的にＲＳＡアルゴリズムに関連付けられたモジュラ累乗法演算を行うデータ処理装置におけるサイドチャネル攻撃（例えば、電力、タイミング、および誤りに基づく攻撃）に対する保護に関連する。このアルゴリズムと、このようなアルゴリズムを用いてこのようなサイドチャネルから暗号装置を守る、以前に考えられた様々な方法は、本発明の各種の実施形態の説明の前に、まず説明される。
【００５２】
当事者ＸがＲＳＡアルゴリズムを用いてメッセージｍを暗号化し、当事者Ｙが受け取って解読するとする。当事者Ｘは、まず、当事者Ｙの公開鍵（Ｎ、ｅ）を取得し、これに基づいて、暗号化されるメッセージｍを整数として間隔［０：Ｎ−１］で表す。その後、当事者Ｘは、メッセージｍを暗号化して、以下のアルゴリズムを用いて、暗号文ｃを生成する：
ｃ＝ｍｅ  ｍｏｄ  Ｎ。
【００５３】
以下により詳細に説明される標準的な二乗および乗算技術を用いると、このアルゴリズムは、ｍにｍをｅ回乗算し、解をモジュロＮで表したものと等しい。
【００５４】
ｃから平文ｍを復元するため、当事者Ｙは、自身の秘密鍵ｄを用いて、以下のアルゴリズムを用いる：
ｍ＝ｃｄ  ｍｏｄ  Ｎ。
【００５５】
従って、この解読演算は、暗号化演算と同じモジュラ累乗法形式を用いる。
【００５６】
公開鍵（Ｎ、ｅ）を生成し、対応する秘密鍵ｄを生成するため、当事者Ｙによって用いられる方法は、以下の通りである。２つの大きな素数、ｐおよびｑが選択され、その積Ｎ＝ｐｑが計算される。ただし、Ｎは公開鍵モジュールを形成する。公開鍵からの値ｅは、Ｎより小さく、（ｐ−１）（ｑ−１）と互いに素になるように選択される。これは、ｃと（ｐ−１）（ｑ−１）とは、１以外に公約数を持たないことを意味する。ｄの値は、（ｅｄ−１）が（ｐ−１）（ｑ−１）によって乗算できるようになっていることが分かる。因子ｐおよびｑは、破棄されてもよいし、強化秘密鍵（ｄ、ｐ、ｑ）と共に保持されてもよい。さらなる詳細を、例えば、Ｍｅｎｅｚｅｓらによる「Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ」に見出すことができる。
【００５７】
公開鍵（Ｎ、ｅ）を用いることの代替例として、送信されたデータを秘密にし、その後、対応する秘密鍵ｄを以降の解読に用いることがある。秘密鍵ｄは、署名の一形態として、メッセージｍを暗号化するために、代替的に用いられ得、そのことによって、受け取り側の当事者は、メッセージｍが本物であることと、改竄されていないこととの両方が保証され得る。このようにして、当事者Ｙは、ｓ＝ｍｄ  ｍｏｄ  Ｎを用いることによって、自身の秘密鍵ｄを用いてデジタル署名ｓを作成し得る。その後、当事者Ｙは、ｍとｓとの両方を当事者Ｙに送信し得る。署名を照合するため、当事者Ｘは、当事者Ｙの公開鍵（Ｎ、ｅ）を用いてｍ＝ｓｅ  ｍｏｄ  Ｎを計算し、元のメッセージｍが復元されたことをチェックする。
【００５８】
従って、暗号化および認証は、秘密鍵を共有することなく行われる。それぞれが、他方の公開鍵または自身の秘密鍵のみを用いる。誰でも、暗号化されたメッセージを送信するか、または署名されたメッセージを照合することができるが、正確な秘密鍵を所有する者のみがメッセージを解読するか、または署名することができる。
【００５９】
ＲＳＡの中国の剰余定理（ＣＲＴ）バージョンは類似し、同じ結果をもたらす：
ｓ＝（ｍｄ  ｍｏｄ  ｐ＋ｐ＊（ｐ−１  ｍｏｄ  ｑ）＊（ｍｄ  ｍｏｄ  ｑ−ｍｄ  ｍｏｄ  ｐ））ｍｏｄ  ｐ＊ｑ。
【００６０】
このアルゴリズムの秘密鍵は、（ｄ、ｐ、ｑ）である。ただし、（ｐ＊ｑ）は、公開鍵モジュールＮと等しい。ＣＲＴバージョンにおいて、スピード効率（ｍｄ  ｍｏｄ  ｐ）は、（ｍｄ  ｍｏｄ  ｐ−１  ｍｏｄ  ｑ）として計算され、（ｍｄ  ｍｏｄ  ｑ）は（ｍｄ  ｍｏｄ  ｑ−１  ｍｏｄ  ｑ）として計算される。従って、２つの別個の累乗法演算が行われる。
【００６１】
ＲＳＡアルゴリズムに対してサイドチャネル攻撃を行うことをより困難にするため、可能な限り計算にランダムさを加えることが有用である。これは、低いレベルで、例えば、演算のタイミングをランダムにすること、ランダムな間隔にダミー演算を追加すること、または、場合によっては、中間の工程を計算する複数の異なる様式からランダムに選択することによって行われ得る。あるいは、入力および計算がランダムになるが、出力が正確であり続けるように、マスキングがＲＳＡなどのアルゴリズムの入力に追加され得る。
【００６２】
米国特許第５，９９１，４１５号にある技術が既に提示されている。この特許において、べき指数は、数φ（Ｎ）のランダムな倍数を加えることによって「ブラインドされる」。ここで、φ（Ｎ）は、モジュラスＮのオイラーのトチエント関数である：
ｓ＝ｍｄ＋ｋ＊φ（Ｎ）  ｍｏｄ  Ｎ。
ただし、ｋはランダムな整数である。オイラーのトチエント関数φ（Ｎ）は、Ｎと互いに素である（すなわち、Ｎと公約数を持たない）、≦Ｎの正の整数であると定義される。ただし、１は、全ての数と互いに素であるとみなされる。所与の数以下であり、所与の数と互いに素である数は、トテイティブ（ｔｏｔａｔｉｖｅ）と呼ばれるので、トチエント関数は、Ｎのトテイティブの数と定義され得る。例えば、２４のトテイティブは８個（１，５，７、１１、１３、１７、１９および２３）なので、φ（２４）＝８である。Ｎが素数である場合、φ（Ｎ）＝Ｎ−１であり、Ｎ＝ｐ＊ｑ（ＲＳＡのＣＲＴバージョンと同様）の場合、φ（Ｎ）＝（ｐ−１）＊（ｑ−１）である。
【００６３】
上記のブラインドされたアルゴリズムは、ブラインドされていないアルゴリズムと同じ出力を生成することが示され得る。ブラインドされたアルゴリズムでは、電力の形跡は、秘密のべき指数が用いられるたびに非常に異なって見え、これによりＤＰＡに対して防御する。計算にランダムな要素が導入されることによって、時間および誤りに基づくサイドチャネル攻撃に対する保護も提供される。この技術は、本明細書中、「べき指数ブラインディング」と呼ばれる。
【００６４】
同様に、以下のアルゴリズムを用いて、モジュラスＮをブラインドすることが追加され得る：
ｓ＝（ｍｄ  ｍｏｄ  ｋ＊Ｎ）ｍｏｄ  Ｎ。
ただし、ｋは、ランダムな非ゼロの整数である。これは、モジュラスＮ（ｐおよびｑからなる）が秘密に保持される必要があるＲＳＡアルゴリズムのＣＲＴバージョンにとって特に有用である。この技術は、本明細書中、「モジュラスブラインディング」と呼ばれる。
【００６５】
同様に、以下のアルゴリズムを用いて、メッセージｍをブラインドすることが追加され得る。
ｓ＝（（ｋ＊ｍ）ｄ）＊（ｋ−ｄ）ｍｏｄ  Ｎ
ただし、ｋはランダムな非ゼロの整数である。この技術は、本明細書中、「メッセージブラインディング」と呼ばれる。このメッセージブラインディング技術の変形例には、第２の累乗法に、公開鍵べき指数ｃを用いる（すなわち、ｋではなくｊｅが用いられ、（ｊｅ＊ｍ）ｄおよび（ｊｅ）−ｄが得られる場合、ｃを用いる累乗法は、ｄを用いる累乗法よりも一般的には安価であり、従ってｊｅはｋｄおよび（ｊｅ）−ｄ≡（ｊｅｄ）−１≡ｊ−１よりも安価であり、余分な作業は、反転および余分な公開鍵累乗法になる）こと、または、ｋの以前の値を格納し、例えば二乗して新たな殆どランダムなｋを得ることが含まれる。メッセージ自体はまた、メッセージをランダム化する（そして、効率的にブラインドする）パディング方式（例えば、ＰＫＣＳ＃１  ｖ２．１規格に書かれている、パディング方式「ＥＭＳＡ−ＰＳＳ」）を用いてパディングされ得る。これは、メッセージブラインディング技術と共に、あるいは、メッセージブラインディング技術の代わりに用いられ得る。
【００６６】
これらの各種の各紙技術は、以下のアルゴリズムにおいて、組合せられ得る。
【００６７】
【数１】
2004304800.tif 000003
ただし、ｋ１、ｋ２、およびｋ３は、全てランダムな数であり、ｋ１およびｋ３は非ゼロである。このアルゴリズムは、べき指数ブラインディング（ｋ２による）、モジュラスブラインディング（ｋ３による）、およびメッセージブラインディング（ｋ１による）を用いる。
【００６８】
上述したメッセージブラインディング技術は、反転および余分な累乗法を必要とし、従って、比較的遅い。
【００６９】
図４は、本発明の第１の実施形態による、データ処理装置を示すブロック図である。このデータ処理装置は、計算装置４を有する処理装置２と、乗算装置８、加算装置１０、および整数生成装置１２を有する基数ブラインディング装置６とを含む。本発明の第１の実施形態によるデータ処理装置の演算は、図５に示すフローチャートを参照しながら説明される。
【００７０】
処理装置２は、各種の処理演算を行い、この実施形態においては、入力データＤＩＮを処理して出力データＤＯＵＴを生成する。処理装置２によって行われる処理演算には、計算装置４によって行われる形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算を含む。ただし、ｍはモジュラ累乗法演算の基数であり、ｄはべき指数であり、Ｎはモジュラスである。例えば、入力データＤＩＮ内の、基数メッセージｍは、図５に示すステップＳ１において受け取られる。
【００７１】
しかし、累乗法演算が行われる前に、基数ブラインディング装置６は、基数ｍを、モジュラ累乗法演算の結果に影響しないように、以下に説明するように変更する。Ｎおよびｍの値は、処理装置２から基数ブラインディング装置６に送られる。ステップＳ２において、整数生成装置１２は、整数ｋを生成する。ステップＳ３において、乗算装置８は、整数ｋにモジュラスＮを乗算する。ステップＳ４において、加算装置１０は、乗算の結果を基数ｍに加算して、変更された基数Ｍ＝ｍ＋ｋＮを生成し、この変更された基数Ｍが処理装置２に戻される。ステップＳ５において、計算装置４は、ｍｄ  ｍｏｄ  Ｎではなく、モジュラ累乗法演算Ｍｄ  ｍｏｄ  Ｎを計算し、同様の結果を生成する。
【００７２】
従って、図４のデータ処理装置は、ｍｄ  ｍｏｄ  Ｎではなく、以下のモジュラ累乗法演算を計算する：
ｓ＝（ｍ＋ｋ＊Ｎ）ｄ  ｍｏｄ  Ｎ。
【００７３】
これによって、ｓ＝ｍｄ  ｍｏｄ  Ｎと同じ結果が得られる。なぜなら、式（ｍ＋ｋ＊Ｎ）ｄは、ｍｄにＮの様々なべきを加えたものに等しいからである。ただし、Ｎのべきは、モジュロＮにおいて全てゼロである。
【００７４】
累乗法演算Ｍｄは、本発明の実施形態において、以下の擬似コードに示すように、「二乗および乗算」方法に関連するアルゴリズムを用いて、実行され得る。ただし、ｄｉは、ｄのｉ番目の二進数字である。
【００７５】
【数２】
2004304800.tif 000004
効率化のため、このようなアルゴリズムにおいては、この実施形態の場合のように、全体の結果のｍｏｄ  Ｎが全ての中間計算  ｍｏｄ  Ｎを還元させ、乗算演算が「ａ＝（ａ＊Ｍ）ｍｏｄ  Ｎ」になり、二乗演算がａ＝（ａ＊ａ）  ｍｏｄ  Ｎになるようにすることが一般的である。しかし、本発明のある実施形態において、これは、メッセージブラインディングの効果が第１の中間計算の後に消えることを意味する。同様に、乗算演算は、しばしば、全て「ｍｏｄ  Ｎ」である、多くのより小さい演算のシーケンスとして実行され得る。
【００７６】
従って、本発明のある実施形態において、例えば、累乗法Ｍｄが完了した後までモジュラ還元ステップ「ｍｏｄ  Ｎ」を残すことによって、メッセージブラインディングの効果が演算の間を通じて残るように累乗法演算Ｍｄが実行されることが好ましい。しかし、メッセージブラインディングの効果が、演算全体でなくても、演算の少なくとも一部の間残る場合も有益である。例えば、メッセージブラインディングの効果が、いくつかの中間計算の後に失われる場合も、依然としてある程度有益である。このような二乗および乗算アルゴリズムにおいてメッセージブラインディングの効果が失われないことを確実する他の手段が、第３の実施形態に関連して以下に説明される。
【００７７】
モジュラ累乗法演算において用いられる基数ｍを変更するために基数ブラインディング装置６を用いることは、データ処理装置によって行われる物理プロセスを変化させる効果を有し、従って、この装置から外部へと漏れるサイドチャネル情報の量が低減される。
【００７８】
基数ブラインディング装置６は、予測不可能な様態、すなわち、装置から放射されるサイドチャネル情報をモニタリングしようと試みる、データ処理装置の外部の者にとって少なくとも擬似様式において予測不可能な様態で、基数ｍを変更することが好ましい。例えば、整数生成装置１２は、擬似ランダムアルゴリズムに従って整数ｋを生成し得る。
【００７９】
モジュラ累乗法演算が行われるたびに基数ブラインディング装置６が新たな整数ｋを生成することが好ましいが、これは必須ではない。新たな整数ｋが生成される頻度が低い場合、または、基数ブラインディング装置６が一時ディアクティブにされ、基数ブラインディング装置６がイナクティブである期間に基数ｍをブラインドしない状態でｍｄ  ｍｏｄ  Ｎとしてモジュラ累乗法演算が行われる場合でさえ、依然としてある程度有益である。
【００８０】
本発明のある実施形態は、モジュラ累乗法演算を用いる任意のタイプのデータ処理装置から漏れるサイドチャネル情報の量を低減するために有用であるが、モジュラ累乗法演算が暗号アルゴリズムの一部である特定の用途を有する。例えば、図４のデータ処理装置は、図１を参照しながら上述したようなスマートカードにおいて用いられ得、従って、図４の入力データＤＩＮが暗号化されるデータを表し、図４の出力データＤＯＵＴが暗号化されたデータを表し得る。図４の処理装置２は、復号演算を同様に行い得る。暗号アルゴリズムは、上述したように、モジュラ累乗法演算を利用するＲＳＡアルゴリズムであり得る。暗号アルゴリズムはまた、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎアルゴリズム、またはモジュラ累乗法演算を利用する任意の他のこのようなアルゴリズムであってもよい。暗号アルゴリズムは、ＲＳＡのＣＲＴバージョンにおける両方のべき指数に用いられ得る。
【００８１】
本発明のある実施形態は、以前に考えられたブラインディング技術と比較して、技術的な利点を有する。これは、加算および乗算演算が、累乗法演算または反転演算と比較して非常に効率的であるからである。本発明のある実施形態はまた、無視できるような追加コストで、計算により多くの不確定性を加えるという利点を有し得る。
【００８２】
図６は、本発明の第２の実施形態によるデータ処理装置のブロック図である。第２の実施形態は、計算装置４を有する処理装置２と、基数ブラインディング装置６とを含む。基数ブラインディング装置６は、図４および５を参照しながら上述したように動作して、基数ｍを効果的に（ｍ＋ｋ＊Ｎ）と置き換えることによってブラインドする。第２の実施形態は、図４に示す部材に加えて、オイラートチエント装置１６と、乗算装置１８と、加算装置２０と、整数生成装置２２とを有するべき指数ブラインディング装置１４を含む。
【００８３】
累乗法演算が行われる前に、べき指数ブラインディング装置１４は、累乗法演算の結果を影響しないように、以下に説明するようにべき指数ｄを変更する。Ｎおよびｄの結果は、処理装置２からべき指数ブラインディング装置１４に送られる。オイラートチエント装置１６は、上述したように、オイラートチエント関数φ（Ｎ）を計算し、整数生成装置２２は、整数ｉを生成する。乗算装置１８は、整数ｉをトチエント関数φ（Ｎ）で乗算し、加算装置２０は、乗算の結果をべき指数ｄに加算して、変更されたべき指数Ｄ＝ｄ＋ｉ＊φ（Ｎ）を生成する。この変更されたべき指数を処理装置２に戻す。このようにして、計算装置４は、ｍｄ  ｍｏｄ  Ｎではなくモジュラ累乗法演算ＭＤ  ｍｏｄ  Ｎを計算することができる。ただし、Ｍは変更された（ブラインドされた）基数ｍであり、同じ結果を生成する。従って、行われる全ての計算は以下の通りである：
ｓ＝（ｍ＋ｋ＊Ｎ）ｄ＋ｉ＊φ（Ｎ）ｍｏｄ  Ｎ。
【００８４】
モジュラ累乗法演算において用いられるべき指数を変更するためにべき指数ブラインディング装置１４をさらに用いることは、データ処理装置によって行われる物理プロセスをさらに変化させる効果を有し、従って、この装置から外部に漏れるサイドチャネル情報の量はさらに低減される。
【００８５】
図７は、本発明の第３の実施形態によるデータ処理装置のブロック図である。第３の実施形態は、計算装置４を有する処理装置２と、基数ブラインディング装置６とを含む。基数ブラインディング装置６は、図４および５を参照しながら上述したように動作して、基数ｍを（ｍ＋ｋ＊Ｎ）と効果的に置き換えることによってブラインドする。第３の実施形態は、図４に示す部材に加えて、モジュラス計算装置２８と、乗算装置２６と、整数生成装置３０とを有するモジュラスブラインディング装置２４を含む。
【００８６】
この実施形態において、Ｍが、基数ブラインディング装置６によって生成された、変更された（ブラインドされた）基数ｍである、累乗法演算Ｍｄが行われた後、モジュラスブラインディング装置２４はモジュラスの計算を、通常のＭｄ  ｍｏｄ  Ｎと比較するとわずかに変更された形式で、モジュラ累乗法演算の結果に影響を与えないように行う。ＮおよびＭｄの値は、処理装置２からモジュラスブラインディング装置２４へと送られる。整数生成装置３０は非ゼロ整数ｊを生成し、乗算装置２６は整数ｊに、ブラインドされていないモジュラスＮを乗算して、ブラインドされたモジュラスＷ＝ｊ＊Ｎを生成する。その後、モジュラス計算装置２８は、Ｍｄ  ｍｏｄ  Ｎではなく、（Ｍｄ  ｍｏｄ  Ｗ）ｍｏｄ  Ｎを計算することによって、変更されたモジュラ演算を行う。同じ結果が生成され、処理装置２に戻される。従って、行われる全ての計算は以下の通りである：
ｓ＝（（ｍ＋ｋ＊Ｎ）ｄ  ｍｏｄ  ｊ＊Ｎ）ｍｏｄ  Ｎ。
【００８７】
モジュラ累乗法演算において用いられるモジュラス計算を変更するためにモジュラスブラインディング装置２４をさらに用いることは、データ処理装置によって行われる物理プロセスをさらに変化させる効果を有し、従って、この装置から外部へと漏れるサイドチャネル情報の量はさらに低減される。
【００８８】
効率上の理由から、「ｍｏｄ  ｊ＊Ｎ」が累乗法演算（ｍ＋ｋ＊Ｎ）ｄにおいて用いられる中間計算のそれぞれに適用されることが好ましい。例えば、第１の実施形態に関連して上述された二乗および乗算技術が用いられる場合、乗算演算は、Ｍ＝ｍ＋ｋ＊Ｎである「ａ＝（ａ＊Ｍ）ｍｏｄ  ｊ＊Ｎ」になり、二乗演算は、「ａ＝（ａ＊ａ）ｍｏｄ  ｊ＊Ｎ」である。モジュロＮ還元演算は、二乗および乗算演算（ｍｏｄ  ｊ＊Ｎ）が完了した後行われる。
【００８９】
この方式は、中間モジュロ還元を伴う効率的な二乗および乗算技術が、上で強調されたメッセージブラインディングの効果を完全になくすことなく、本発明の実施形態において用いられることを可能にするという利点を有する。モジュラ累乗法演算全体にわたってｊが「１」と等しい場合、メッセージブラインディングはその演算において失われるが、異なる値のｊが次の演算に用いられ得、有用なサイドチャネル情報の漏れが依然として低減される。また、異なる値のｊが、中間モジュラ計算のそれぞれにおいて生成される。
【００９０】
図８は、本発明の第４の実施形態によるデータ処理装置のブロック図である。第４の実施形態は、本質的に第２の実施形態と第３の実施形態との組合せである。第４の実施形態は、計算装置４を有する処理装置２と、基数ブラインディング装置６と、べき指数ブラインディング装置１４と、モジュラスブラインディング装置２４とを含む。これらの部材は、全体的に、図４〜７を参照しながら上述したように動作して、モジュラべき累乗法演算の結果に影響することなく、基数ｍ、べき指数ｄ、およびモジュラスＮのそれぞれをブラインドする。従って、行われる全ての計算は以下の通りである：
ｓ＝（（ｍ＋ｋ＊Ｎ）ｄ＋ｉ＊φ（Ｎ）ｍｏｄ  ｊ＊Ｎ）ｍｏｄ  Ｎ。
【００９１】
３通りのブラインディング方法の全てを用いて、モジュラ累乗法演算を変更することは、データ処理装置によって行われる物理プロセスを大幅に変化させる効果を有し、従って、この装置から外部へと漏れるサイドチャネル情報の量はかなり低減される。
【００９２】
第２〜第４の実施形態において、べき指数装置１４およびモジュラスブラインディング装置２４は、それぞれ、予測不可能な様態、すなわち、装置から放射されるサイドチャネル情報をモニタリングしようと試みる、データ処理装置の外部の者にとって少なくとも擬似様式において予測不可能な様態で、べき指数ｄおよびモジュラスＮを変更することが好ましい。例えば、整数生成装置２２および３０は、それぞれ、擬似ランダムアルゴリズムに従って、整数ｉおよびｊを生成し得る。
【００９３】
べき指数装置１４およびモジュラスブラインディング装置２４が、モジュラ累乗法演算が行われるたびに新たな整数ｉおよびｊを生成することが好ましいが、これは必須ではない。新たな整数ｉおよびｊが生成される頻度が低い場合、または、べき指数装置１４およびモジュラスブラインディング装置２４が一時ディアクティブされ、これらの装置がイナクティブである期間、べき指数ｄおよびモジュラスＮのいずれかもしくは両方がブラインドされることなく、モジュラ累乗法演算が行われる場合でさえ、依然として何らかの利点が得られる。
【００９４】
整数生成装置１２、２２、３０、乗算装置８、１８、２６、および加算装置１０、２０が例示され、別個の装置として説明されてきたが、当然、１タイプよりも多いブラインディング装置に対してその機能を果たすように、組み合わせられてよいことが理解される。当業者はまた、図４、６および７に示す構成が、本発明の実施形態によって行われる機能に影響をあたえることなく、いくつかの他の様式で変更および／または組合せされ得ることを理解する。例えば、ブラインディング装置６、１４、２４のうちの１つ以上が、処理装置２自体の中に配置され得る。
【００９５】
また、ブラインディング技術の主な用途のうちの１つが、図１に示すようなスマートカードにおける使用として説明されてきたが、この技術は、ＵＳＢトークン、セキュアメモリ、セキュアマルチメディア、およびセキュアアクセスモジュール（ＳＡＭ）において用いられ得る。
【００９６】
本発明の実施形態はハードウェアに実装されるとして説明されてきたが、本発明の実施形態は、ソフトウェアに実装されることも可能である。例えば、図１を参照しながら例示されたスマートカードデバイスにおいて、説明したように別個の処理装置９をスマートカード上に設けるのではなく、代わりに、オペレーティングプログラムが、提供されて（用いられるためにメモリ部３に格納されて）、ＣＰＵ５が処理装置９の機能を果たすように制御する。スマートカード（または他のデータ処理装置）の関連部分は、このようにして、本発明の上述した実施形態において例示された部材と同じ機能を果たすように適応される。
【００９７】
本発明を具現化するオペレーティングプログラムは、コンピュータ読み出し可能媒体に格納され得るが、インターネットウェブサイトから提供されるダウンロード可能なデータ信号などの信号において実現されることもできる。添付の特許請求の範囲は、オペレーティングプログラム自体、キャリア上の記録として、信号として、あるいは、任意の他の形態を含むと解釈されるべきである。
【００９８】
基数ｍ、べき指数ｄおよびモジュラスＮを有する形式ｍｄ  ｍｏｄ  Ｎのモジュラ累乗法演算（４）を含む処理演算を行う処理装置（２）が提供される。データ処理装置（２）はまた、整数ｋを生成すること（１２）、整数ｋにモジュラスＮを乗算すること（８）および基数ｍに乗算の結果を加算すること（１０）によって、モジュラ累乗法演算の結果に影響を与えることなく、累乗法演算（４）が行われる前に基数ｍを変更する基数ブラインディング装置（６）を含む。これは、装置（２）から漏れるサイドチャネル情報の量を低減する効果を有し、従って、モジュラ累乗法演算がＲＳＡアルゴリズムのような暗号アルゴリズムの一部であるような特定の用途を有する。例えば、データ処理装置（２）は、スマートカードデバイスにおいて用いられ得る。
【図面の簡単な説明】
【００９９】
例示のため、添付の図面が参照される。
【図１】図１は、上述したように、代表的なスマートカードの主な部分を示すブロック図である。
【図２】図２は、上述したように、従来の暗号化モデルの説明において用いられる例示的なブロック図である。
【図３】図３は、上述したように、サイドチャネルを含む、暗号化モデルの説明に用いられる例示的なブロック図である。
【図４】図４は、本発明の第１の実施形態による、データ処理装置のブロック図である。
【図５】図５は、本発明の第１の実施形態の動作を説明するフローチャートである。
【図６】図６は、本発明の第２の実施形態による、データ処理装置のブロック図である。
【図７】図７は、本発明の第３の実施形態による、データ処理装置のブロック図である。
【図８】図８は、本発明の第４の実施形態による、データ処理装置のブロック図である。
【図１】
2004304800.tif 000005
【図２】
2004304800.tif 000006
【図３】
2004304800.tif 000007
【図４】
2004304800.tif 000008
【図５】
2004304800.tif 000009
【図６】
2004304800.tif 000010
【図７】
2004304800.tif 000011
【図８】
2004304800.tif 000012
【外国語明細書】
2004304800.tif 000013
2004304800.tif 000014
2004304800.tif 000015
2004304800.tif 000016
2004304800.tif 000017
2004304800.tif 000018
2004304800.tif 000019
2004304800.tif 000020
2004304800.tif 000021
2004304800.tif 000022
2004304800.tif 000023
2004304800.tif 000024
2004304800.tif 000025
2004304800.tif 000026
2004304800.tif 000027
2004304800.tif 000028
2004304800.tif 000029
2004304800.tif 000030
2004304800.tif 000031
2004304800.tif 000032
2004304800.tif 000033
2004304800.tif 000034
2004304800.tif 000035
2004304800.tif 000036
2004304800.tif 000037
2004304800.tif 000038
2004304800.tif 000039
2004304800.tif 000040
2004304800.tif 000041
2004304800.tif 000042
2004304800.tif 000043
2004304800.tif 000044
2004304800.tif 000045
2004304800.tif 000046
2004304800.tif 000047