(57)【特許請求の範囲】
【請求項１】
半導体チップの外部から検出される可能性のある信号をそれぞれが生成する多数のコマンドを含むオペレーティングプログラムが格納されている少なくとも１つのメモリを有する半導体チップを有するデータ記憶媒体において、機密保護関連または安全関連の操作を実施するために半導体チップに記憶されている、またはこの半導体チップによって生成される秘密データを少なくとも３つのデータ部分に分けるために設計され、乱数の生成および該乱数による前記秘密データの除算を行うための演算器を備え、第１のデータ部分が除算処理の整数解であり、第２のデータ部分が前記除算処理の剰余であり、第３のデータ部分が乱数自体であることを特徴とするデータ記憶媒体。
【請求項２】
前記秘密データがメッセージを暗号化するための秘密鍵であることを特徴とする請求項１記載のデータ記憶媒体。
【請求項３】
前記秘密データが非対称暗号法における集合演算の計算のべき指数として用いられることを特徴とする請求項１または２記載のデータ記憶媒体。
【請求項４】
前記秘密データがモジュロ演算の計算のべき指数として用いられることを特徴とする請求項１から３いずれか１項記載のデータ記憶媒体。
【請求項５】
前記秘密鍵がモジュロ演算の計算のべき指数として用いられることを特徴とする請求項２記載のデータ記憶媒体。
【請求項６】
前記乱数は、前記乱数のハミング重みと前記乱数の長さが、いずれの乱数についても一定となるように選択されることを特徴とする請求項１から５いずれか１項記載のデータ記憶媒体。
【請求項７】
半導体チップの外部から検出される可能性のある信号をそれぞれが生成する多数のコマンドを含むオペレーティングプログラムが格納されている少なくとも１つのメモリを有する半導体チップを有するデータ記憶媒体の中の秘密データを保護する方法において、
前記データ記憶媒体の演算器が、機密保護関連または安全関連の操作を実施するために半導体チップに記憶されている、またはこの半導体チップによって生成される秘密データが少なくとも３つのデータ部分に分割し、該分割に際して乱数を最初に計算し、第１のデータ部分を秘密データを乱数で除算した整数解とし、第２のデータ部分を前記除算処理の剰余とし、第３のデータ部分を乱数自体とすることを特徴とするデータ記憶媒体の中の秘密データを保護する方法。
【請求項８】
前記秘密データがメッセージを暗号化するための秘密鍵であることを特徴とする請求項７記載の方法。
【請求項９】
前記秘密データは、非対称暗号法における集合演算の計算のべき指数として用いられることを特徴とする請求項７または８記載の方法。
【請求項１０】
前記秘密データがモジュロ演算の計算のべき指数として用いられることを特徴とする請求項７または８記載の方法。
【請求項１１】
前記秘密鍵がモジュロ演算の計算のべき指数として用いられることを特徴とする請求項８記載の方法。
【請求項１２】
前記乱数が、前記乱数のハミング重みと前記乱数の長さが、いずれの乱数についてほぼ一定となるように選択されることを特徴とする請求項７から１１いずれか１項記載の方法。
【請求項１３】
システムコンポーネントを認証するための、または署名を生成するためのシステム内において暗号文を形成する方法において、
−  前記システムが、乱数ｒを生成し、
−  前記システムが、秘密鍵ｄを、先に求めた乱数ｒで除算することにより、第１の鍵部分（ｄ１）を計算し、
−  前記システムが、ｄ  ｍｏｄ  ｒを生成することによって、前記鍵の第２の部分（ｄ２）を求め、
−  前記システムが、最初にＭｒ  ｍｏｄ  ｎを計算することによって暗号文の計算を開始し、
−  前記システムが、Ｄ１＝（Ｍｒ）ｄ１  ｍｏｄ  ｎおよびＤ２＝Ｍｄ２  ｍｏｄ  ｎを計算し、
−  前記システムが、前記中間結果Ｄ１とＤ２を掛け合わせ、ｎの法を生成することを特徴とする方法。
【請求項１４】
前記システムが、Ｄ１を計算するために、最初にＭｄ１  ｍｏｄ  ｎを計算し、続いて（Ｍｄ１）ｒ  ｍｏｄ  ｎを計算することを特徴とする請求項１３記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、秘密データを記憶および処理する半導体チップを有するデータ記憶媒体に関する。
【０００２】
チップ入りのデータ記憶媒体は、例えば、商品またはサービスに対する支払いのために、または、アクセスチェックを管理するための識別手段として数多くのさまざまな用途に用いられている。これらすべての用途では、許可されていない第三者のアクセスから保護しなくてはならない秘密データがデータ記憶媒体のチップ内で処理される。この保護は、特にこれらの構造内で処理される情報を取り出すことを目的とするこれらの構造へのアクセスがきわめて困難であるようにチップの内部構造が微細な寸法であることによって実現される。アクセスをさらに困難にするために、無理に取り除くと半導体ウエハが破壊されたり、少なくとも記憶されている秘密データが消去されたりする、きわめてしっかりと接着する化合物にチップを埋め込むことも可能である。また、半導体ウエハに、半導体ウエハを壊さなくては取り除くことのできない保護層を形成することもあり得る。
【０００３】
一般に知られているように、攻撃者は、きわめて高価であるが基本的には入手可能な適切な技術設備により、チップの内部構造を露出させたり調べたりすることできる。チップの内部構造は、例えば、特殊なエッチング方法または適した研削工程によって露出させることができる。このようにして露出させられた相互配線などのチップ構造は、これらの構造内の信号波形を調べるために、マイクロプローブを接触させたり、他の方法を用いて調査できる。さらに、不正操作に使用するために、検出された信号が、秘密鍵などの秘密データをデータ記憶媒体から判断するために使おうとされる可能性がある。同様に、構造内の信号波形にマイクロプローブを介して故意に影響を及ぼそうとされる可能性もある。
【０００４】
近年、秘密データ、特に秘密鍵、を消費電流すなわち暗号化処理のタイミングを測定することによって割り出す方法（Ｐａｕｌ  Ｃ．  Ｋｏｃｈｅｒ，  “Ｔｉｍｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ，  ＲＳＡ，  ＤＳＳ，  ａｎｄ  ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ”，Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ  １９９８；国際特許出願公開第９９／３５７８２号）が知れ渡ってきた。
【０００５】
この種の単純な攻撃の１つは「単純電力解析（Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）  （ＳＰＡ）」である。この解析法では、既知のメッセージＭが秘密鍵ｄを使って暗号化される、すなわち暗号文Ｙ＝Ｍｄ  ｍｏｄ  ｎが作成される。べき乗剰余算（ｍｏｄｕｌａｒ  ｅｘｐｏｎｅｎｔｉａｔｉｏｎ）処理の間、指数ｄに“１”があれば中間結果を利用して平方演算が実施され、さらにＭを使用した乗算演算が実施されるが、ｄに“０”があれば中間結果を利用した平方演算だけが実施される。Ｍが分かっていれば演算中の電流レスポンスおよび／またはタイミングを観察することによってメッセージＭが使用された回数を特定できる。また、ｄに“１”があれば必ずメッセージＭが使用されるので、何ら問題なく鍵を引き出すことができる。
【０００６】
この攻撃は、メッセージＭまたは鍵ｄを変更することによって対処できる。しかしながら、Ｐａｕｌ  Ｃ．  Ｋｏｃｈｅｒ著“Ｔｉｍｉｎｇ  ａｔｔａｃｋｓ  ｏｎ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ，  ＲＳＡ，  ＤＳＳ，  ａｎｄ  ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ”，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ  １９９８および国際特許出願公開第９９／３５７８２号により、たとえメッセージまたは鍵が変更されても、すなわち、スクランブルされても、集積回路の電流レスポンスを示す多数の測定曲線を記録することによって鍵を引き出すことができる解析法［電力差分攻撃（ＤＰＡ：  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）または高次ＤＰＡ］が周知となった。
【０００７】
機密保護手段として、秘密鍵ｄを直接使用しない、いわゆる「べき指数の隠蔽（Ｅｘｐｏｎｅｎｔ  Ｂｌｉｎｄｉｎｇ）」が提案されている。
【０００８】
第１に、暗号化処理に秘密鍵ｄではなくｄ＋ｒ＊Φ、ここでｒは乱数、Φはオイラーのファイ関数、が使用される。具体的には、ＲＳＡ暗号化アルゴリズムの場合はｎ＝ｐ＊ｑ、ここでｐとｑは素数、であり、したがってΦ＝（ｐ−１）＊（ｑ−１）である。オイラーの定理を用いるとＭｄ  ｍｏｄ  ｎ＝Ｍｄ＋ｒ＊Φ  ｍｏｄ  ｎである。
【０００９】
計算毎に異なる乱数ｒが使用されれば、一連の解析処理が何回実施されたとしても鍵ｄを引き出すことは不可能である。
【００１０】
あるいは、秘密鍵ｄをｄ１＊ｄ２  ｍｏｄ  Φに細分することもでき、それにより暗号化処理は次式のようになる。
【００１１】
Ｙ＝Ｍｄ１＊ｄ２  ｍｏｄ  Φ  ｍｏｄ  ｎ＝（Ｍｄ１）ｄ２  ｍｏｄ  ｎ
しかしながら、この保護選択肢の欠点は、メモリ空間の不足により素数ｐとｑ、またはΦがスマートカードに通常格納されないことである。
【００１２】
秘密鍵ｄは、ｄ１とｄ２の総和に細分することもできる。したがって、ｄ＝ｄ１＋ｄ２となり、暗号化処理は次式で表される。
【００１３】
Ｙ＝Ｍｄ１＊ｄ２  ｍｏｄ  Φ  ｍｏｄ  ｎ＝（Ｍｄ１）ｄ２  ｍｏｄ  ｎ（Ｍｄ１）ｄ２  ｍｏｄ  ｎ
十分に高い機密保護レベルを達成するには、計算のたびに新しい乱数対ｄ１／ｄ２を選択し、べき指数をｄ＝ｄ１＋ｄ２またはｄ＝ｄ１＊ｄ２  ｍｏｄ  Φに細分しなくてはならない。乱数の生成は一般に非常にゆっくりであるため、この方法はスマートカードで使用するのに適さない。また、べき乗剰余算処理の計算の複雑さが著しく増すため、これもスマートカードの使用に調和しない。
【００１４】
そこで本発明の目的の１つは、前述のように、携帯可能なデータ記憶媒体のチップに入っている秘密データを効率よく使用できることを保証するために、秘密データを不正なアクセスから保護することである。
【００１５】
この目的は、請求項１、７および１２の前文を背景にした各請求項の特徴構成によって達成される。
【００１６】
本発明は、半導体チップの外部から検出される可能性のある信号をそれぞれが生成する多数のコマンドを含むオペレーティングプログラムが格納されている少なくとも１つのメモリを有する半導体チップを有するデータ記憶媒体を提供する。
【００１７】
本発明によれば、このデータ記憶媒体は、機密保護関連または安全関連の操作を実施するために半導体チップに記憶されている、またはこの半導体チップによって生成される秘密データを、少なくとも３つのデータ部分に分けるために設計される。該データ記憶媒体は、乱数の計算および秘密データを乱数で除算するための計算器または演算器を含む。第１のデータ部分は、除算処理の整数解であり、第２のデータ部分は除算処理の剰余によって構成され、第３のデータ部分は乱数自体である。
【００１８】
本発明の有利な改良の１つによれば、秘密データは、メッセージを暗号化する秘密鍵から構成され、秘密鍵は非対称暗号法（例えば、楕円曲線暗号、ＲＳＡ等の公開鍵法）における集合演算またはモジュロ演算を研鑽するためのべき指数として使用されることが好ましい。
【００１９】
本発明の別の改良は、乱数のハミング重みの長さを加えた乱数の長さが異なる乱数についてほぼ一定となるように乱数が選択されることである。これは、べき乗剰余算処理の場合にべき指数の長さとべき指数のハミング重みとに比例している時間周期から秘密データを引き出せないことを意味する。
【００２０】
本発明による方法は、秘密鍵は比較的短い乱数で除算される。剰余の無い除算の解が鍵の第１の部分を構成し、剰余が鍵の第２の部分を構成し、乱数が第３の部分を構成する。
【００２１】
メッセージＭの暗号化の場合、Ｙ＝Ｍｄ  ｍｏｄ  ｎである。秘密鍵ｄは、ｄ１とｄ２とｒ、（但し、ｄ１＝ｄ／ｒ（ｒは乱数）、剰余なし）に分割される。この除算処理で出た剰余は、鍵ｄの第２の部分ｄ２であり、したがってｄ２＝ｄ  ｍｏｄ  ｒ、したがって鍵ｄについて、ｄ＝ｒ＊ｄｌ＋ｄ２となる。
【００２２】
この結果、次のような暗号文となる。
【００２３】
Ｙ＝Ｍｄ  ｍｏｄ  ｎ＝Ｍｒ＋ｄ１＋ｄ２  ｍｏｄ  ｎ＝（Ｍr）ｄ１＊Ｍｄ２  ｍｏｄ  ｎ＝（（Ｍｒ）ｄ１  ｍｏｄ  ｎ＊Ｍｄ２  ｍｏｄ  ｎ）  ｍｏｄ  ｎ
図１に暗号文Ｙを形成する手順を示す。
【００２４】
最初に、ステップ１で乱数ｒを生成する。次にステップ２で、秘密鍵ｄを予め求めた乱数ｒで除算し、第１の鍵部分ｄ１を計算する。ｄ  ｍｏｄ  ｒを生成することによって、鍵の第２の部分ｄ２を求める。
【００２５】
ステップ４において、最初にＭｒ  ｍｏｄ  ｎを計算することによって暗号文の計算を始める。次のステップ５で、Ｄ１＝（Ｍｒ）ｄ１  ｍｏｄ  ｎを計算し、そしてステップ６で、Ｄ２＝Ｍｄ２  ｍｏｄ  ｎを計算する。
【００２６】
当然のことながら、個々の計算演算のシーケンスは場合によって時間に遅れないように交替されることもある。したがって、（Ｍｒ）ｄ１  ｍｏｄ  ｎ＝（Ｍｄ１）ｒ  ｍｏｄ  ｎであるので、最初にＭｄ１  ｍｏｄ  ｎを計算し、それから（Ｍｄ１）ｒ  ｍｏｄ  ｎを計算することも可能である。
【００２７】
最後のステップ７において、中間結果Ｄ１とＤ２が掛け合わされ、ｎの法（モジュロ）が生成される。したがって、次式が成立する。
【００２８】
Ｄｌ＊Ｄ２  ｍｏｄ  ｎ＝Ｍｄ  ｍｏｄ  ｎ＝Ｙ
本発明は、Φを生成するために素数ｐおよびｑをカード上に格納する必要がないという利点を有し、さらに、非常に長い計算時間を要する長い乱数の生成を無くすという利点も有する。モジュロ演算の計算の複雑さは妥当な範囲内に維持されるので、本発明による解法はスマートカード内で確実かつ効率良く使用できる。また、これは不揮発性メモリを劣化させる時間のかかる処理であるので、データ記憶媒体の不揮発性メモリ内の情報は前述の方法で変更する必要はない。
【００２９】
べき乗剰余算は、べき指数およびべき指数のハミング重みの長さに比例する時間を要するので、ｒおよびｒのハミング重みが定数となる方法を使って乱数ｒが生成されると機密保護がさらに改善される。
【００３０】
本発明は数多くの暗号化システムに使用できる。例として、ＲＳＡ暗号化、ＥｌＧａｍａｌに基づく暗号化、ＤＳＡ、および楕円曲線暗号法を参照されたい。
【図面の簡単な説明】
【図１】  暗号文Ｙを形成する手順を示す図
【図１】
0004841785.tif 000002