(57)【要約】少なくとも１つの乱数（ＲＮ；ＲＮ１）を発生する少なくとも１つの乱数発生ユニット（１０）を具える電子回路装置（１００）であって、ソフトウェア（２０）で使用される前記乱数（ＲＮ；ＲＮ１）の計算又は推定が不可能である、特に物理的な測定方法によっては不可能である電子回路装置を提供するために、少なくとも１つの追加の第２の乱数（ＲＮ２）を発生する少なくとも１つの追加の第２の乱数発生ユニット（１２）を提案する。
2008542894.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの第１の乱数を発生する少なくとも１つの第１の乱数発生ユニットを具える電子回路装置において、少なくとも１つの追加の第２の乱数を発生する少なくとも１つの追加の第２の乱数発生ユニットが設けられていることを特徴とする電子回路装置。
【請求項２】
請求項１に記載の電子回路装置において、前記追加の第２の乱数発生ユニットにより発生される前記追加の第２の乱数は、前記第１の乱数発生ユニットにより発生される前記第１の乱数に対し、いかなる相関関係をも有さないようにしたことを特徴とする電子回路装置。
【請求項３】
請求項２に記載の電子回路装置において、
前記第１の乱数発生ユニットにより発生される前記第１の乱数は、ソフトウェアの動作中に、特に秘密キーのようなキーの生成に用いられとともに、保護されており、又は、
前記追加の第２の乱数発生ユニットにより発生される前記追加の第２の乱数は、ハードウエアの動作中に、特に、中央処理ユニットのサイクルのランダム化、待ち状態の追加、プログラムの実行中の分岐及び遅延の双方又は何れか一方のランダム化等を行うのに用いられ、且つ外部から見え、これによりキーの生成に用いられるソフトウェアの動作をマスキングしうるようになっており、又は、
これら双方の乱数の処理が行われるようになっていることを特徴とする電子回路装置。
【請求項４】
請求項１〜３のいずれか一項に記載の電子回路装置において、前記追加の第２の乱数発生ユニットを用いるハードウエアの動作が、少なくとも１つのデータキャリア、特に少なくとも１つのスマートカードのような少なくとも１つのチップカードにおける内部処理を隠すための少なくとも１つのセキュリティー機能として作用するようになっており、このデータキャリアのセキュリティーが前記追加の第２の乱数発生ユニットにより改善されている電子回路装置。
【請求項５】
スマートカードのようなチップカードとするのが好ましいデータキャリアにおいて、請求項１〜４のいずれか一項に記載の少なくとも１つの電子回路装置が設けられていることを特徴とするデータキャリア。
【請求項６】
少なくとも１つの第１の乱数を発生する電子回路装置を動作させる電子回路装置動作方法において、少なくとも１つの追加の第２の乱数を発生させることを特徴とする電子回路装置動作方法。
【請求項７】
請求項６に記載の電子回路装置動作方法において、前記追加の第２の乱数が前記第１の乱数に対しいかなる相関関係をも有さないようにする電子回路装置動作方法。
【請求項８】
請求項６又は７に記載の電子回路装置動作方法において、
前記第１の乱数は、ソフトウェアの動作中に、特に秘密キーのようなキーの生成に用いるとともに、保護し、又は、
前記追加の第２の乱数は、ハードウエアの動作中に、特に、中央処理ユニットのサイクルのランダム化、待ち状態の追加、プログラムの実行中の分岐及び遅延の双方又は何れか一方のランダム化等を行うのに用い、且つ外部から見えるようにし、これによりキーの生成に用いられるソフトウェアの動作をマスキングしうるようにし、又は、
これら双方の乱数の処理を行なうことを特徴とする電子回路装置動作方法。
【請求項９】
請求項６〜８のいずれか一項に記載の電子回路装置動作方法において、前記ハードウエアの動作を、少なくとも１つのデータキャリア、特に少なくとも１つのスマートカードのような少なくとも１つのチップカードにおける内部処理を隠すための少なくとも１つのセキュリティー機能として作用させ、このデータキャリアのセキュリティーを前記追加の第２の乱数により改善することを特徴とする電子回路装置動作方法。
【請求項１０】
請求項１〜４のいずれか一項に記載の少なくとも１つの電子回路装置と、請求項６〜９のいずれか一項に記載の電子回路装置動作方法との双方又は何れか一方を、
‐少なくとも１つの秘密キーとするのが好ましい少なくとも１つのキーをオンチップ生成するために、又は、
‐少なくとも１つのスマートカードのような少なくとも１つのチップカードとするのが好ましい少なくとも１つの電子データキャリアと、少なくとも１つの端末を認証するために、又は、
‐少なくとも１つの中央処理ユニットの少なくとも１つのサイクルのランダム化のような、セキュリティー機能のために、又は、
‐待ち状態を追加するために、又は
‐少なくとも１つのプログラムの実行における分岐のランダム化のために、又は、
‐少なくとも１つのメモリスクランブル値として、又は、
‐これらの任意の組み合わせのために
用いる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して電子チップカード及び端末の認証の技術分野に関するものである。
【０００２】
本発明は特に、請求項１の序文に述べた電子回路装置及び請求項６の序文に述べた電子回路の動作方法に関するものである。
【背景技術】
【０００３】
セキュリティー上の理由で、キー、特に秘密キーの生成や、電子チップカード及び端末の認証のための乱数は実乱数とする必要があり、例えば、ソフトウェアで実行されるアルゴリズムにより発生される乱数のような疑似乱数としてはならない。
【０００４】
この理由で、最近のチップカード、特に最近のスマートカードは、上述した乱数を発生する、ハードウエアに基づく乱数発生器を有している。ハードウエアに基づくこのような乱数発生器は、この乱数発生器により発生される乱数の特性が、温度又は電源電圧のような外部の物理的特性により影響を受けないように実現する必要がある。如何なる場合にも、１つ以上の物理的特性の偶然な又は故意の操作により、発生される乱数が予測可能とならないようにする必要がある。
【０００５】
上述した条件を、（例えば、雑音源としてのＰＮ遷移を有する）シリコンで実現するのは極めて困難である為、内部の論理状態や帰還シフトレジスタを使用することにより、種々のパラメータにより発生されるクロック周波数でスイッチングしうるようにする。
【０００６】
ＣＰＵ（中央処理装置）により、このシフトレジスタを読み出す、すなわち、これから取り出した結果を読み出す場合には、このＣＰＵが、外部から確定的に決定しえない比較的良好な乱数を受ける。このようにして発生される乱数の特性を高くする前提条件は、乱数を読み出す時間間隔を、シフトレジスタに割り当てられたクロック周波数に比べて長くすることである。
【０００７】
従来のスマートカードは、図１に示すように、ハードウエアに基づいて実現された１つの乱数発生器（乱数発生ユニット）１０を有している。この乱数発生器１０は、発生された乱数が物理的な測定方法によって計算又は推定できないように設計する。
【０００８】
（追加の待ち状態を加える）ＣＰＵのサイクルをランダム化したり、プログラムの実行中の分岐をランダム化したり、スマートカードに関する他のランダム化処理を行ったりするようなセキュリティー機能のために、一般に、ハードウエアに基づく乱数発生器により発生された乱数から取り出した数値が用いられる。
【０００９】
これらの処理は、極めて高速に且つ極めて頻繁に行う必要があり、これらの理由で、これらの処理は時間的な条件、すなわち、乱数を読み出す時間間隔を、シフトレジスタに割り当てられたクロック周波数に比べて長くすることを満足しない。
【００１０】
しかも、プログラム実行中のランダム化、すなわち、ランダム化分岐、ランダムジャンプ又はランダム遷移が物理的な測定方法により明らかとなるおそれがある。明らかとなったこれらの測定結果から、現在用いられている乱数が算術方法により再び推定されるおそれがある。
【００１１】
キー、特に秘密キーのオンチップ（チップ上での）生成のためや、電子チップカード及び端末の認識のために乱数を用いる必要がある場合には、上述した時間間隔中に、物理的な測定方法により乱数発生器の内部状態を見うるようにしうるあらゆる（セキュリティー）操作を行うことなく、乱数を使用する必要がある。
【００１２】
上述した従来技術の場合、現行のプロパゲーションをランダムに加えることによりＣＰＵの処理を偽装することができるということは一般に知られている。
【００１３】
例えば、従来技術の文献である米国特許第６４１９１５９号明細書には、現行のプロパゲーションをランダムに加えることによりＣＰＵの処理を偽装するために、乱数発生器を用いることが開示されている。コードの実行は秘密状態に保つ必要があり、命令の実行を隠す遂行を必要とするが、乱数発生器の状態は故意に外部から見うるようになっている。しかし、米国特許第６４１９１５９号明細書の従来技術は、ソフトウェアにとっても乱数を必要としうるということを考慮していない。
【００１４】
他の例では、従来技術の文献である米国特許第６６９８６６２号明細書が、現行のプロパゲーションをランダムに加えることにより、ＣＰＵの処理、又は電気的に消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ）のプログラミングを偽装するのに乱数発生器を用いることを開示している。この場合、現行のコンサンプションがランダム化されているが、乱数発生器の状態は故意に外部から見うるようになっている。しかし、米国特許第６６９８６６２号明細書の従来技術は、ソフトウェアにとっても乱数を必要としうるということを考慮していない。
【００１５】
従来技術の文献である欧州特許第１２４４０７７号明細書では、ＣＰＵにより処理されるデータがその安全化のために変換及び再変換される。その結果、データの処理中、現行のプロパゲーションがランダムとなる。従って、この欧州特許第１２４４０７７号明細書の教示は、定ハミングウエイト・ランドマイザ（ランダム抽出装置）を用いて、処理の前後にデータを撹乱（ランダム化）することに基づくものであるが、ハードウエアに基づく乱数発生器は使用されていない。
【００１６】
従来技術の文献である欧州特許第１００６４９２号明細書では、（この場合、命令の多重実行により生ぜしめられる）現行のプロパゲーションをランダムに加えることにより、すなわち、処理の手順をランダム化することによりＣＰＵの処理を偽装するために、乱数発生器が用いられている。
【００１７】
従来技術の文献である米国特許公開第２００３／０１９４０８６号明細書は、命令をランダムに実行して暗号化処理を隠すことを言及しており、この目的のために、乱数発生器が用いられているが、この乱数発生器は外部から見うるものである。
【特許文献１】米国特許第６４１９１５９号、米国特許第６６９８６６２号、欧州特許第１２４４０７７号、欧州特許第１００６４９２号、米国特許公開第２００３／０１９４０８６号
【発明の開示】
【発明が解決しようとする課題】
【００１８】
上述した欠点に基づき、上述した従来技術を考慮するに、本発明の目的は、上述した種類の電子回路装置及び上述した種類の方法を、ソフトウェアに用いる乱数の計算又は評価が不可能となるように、特に物理的な測定方法によってできないように、更に改善することにある。
【００１９】
この本発明の目的は、請求項１の特徴事項を有する電子回路装置と、請求項６の特徴事項を有する方法により達成される。本発明の有利な実施例及び適切な改善はこれら請求項の従属請求項に開示してある。
【００２０】
本発明は、第１の乱数発生器により発生される数に対して補正しない乱数を発生する少なくとも１つの追加の第２の乱数発生器により、データキャリア、特にチップカード、例えば、スマートカードの少なくとも１つのチップのセキュリティーを改善する着想に基づくものである。
【００２１】
本発明の好適例によれば、第１の乱数発生器はソフトウェアのキーの生成に用いられるとともに保護されており、追加の第２の乱数発生器はＣＰＵサイクル、待ち状態、実行遅延等をランダム化するのに用いられるとともに外部から見うるようになっており、これによりキーの生成に用いられるソフトウェア動作をマスキングするようにする。
【００２２】
従って、安全な乱数を発生するハードウエアに基づく追加の第２の乱数発生器は、データキャリア、特にチップカード、例えば、スマートカード上で、データキャリアが第１の乱数発生器と完全に無関係に動作するように構成することができる。すなわち、第１の乱数発生器により発生された乱数と追加の第２の乱数発生器により発生された乱数との間に何の相関関係もないようにしうる。
【００２３】
本発明は更に、キー、特に秘密キーを発生させるための乱数は、セキュリティー機能を実現するのに用いられる乱数よりも良好に保護する必要があるという前提又は着想に基づくものである。
【００２４】
本発明の有利な例によれば、第１の乱数発生器が、キー、特に秘密キーをオンチップ生成させるための安全な乱数を発生するようにする。これらの安全な乱数は、ソフトウェアによってのみ用いられるようにするのが好ましい。
【００２５】
本発明の有利な例によれば、追加の第２の乱数発生器が、例えば、（待ち状態を追加する）ＣＰＵのサイクルをランダム化させるか、又はプログラムの実行内での分岐のランダム化のために、ハードウエアにより用いられる乱数を発生するようにする。これらの乱数は、本発明の方法の原理により外部から見うるものである。
【００２６】
上述したように構成することにより、追加の第２の乱数発生器を用いるハードウエア機能を、キーのオンチップ生成のための乱数の発生と同時に用いることができる。
【００２７】
このことは、キー、特に秘密キーをオンチップ生成させるために、且つ電子チップカード及び端末の確認のために乱数を用いる時間間隔中は、この処理を、乱数発生器の内部状態を物理的な測定方法により見うるようにしうるあらゆる（セキュリティー）処理を行わずに行う必要がある従来技術よりも著しく有利なことである。
【００２８】
本発明は、米国特許第６４１９１５９号、欧州特許第１００６４９２号及び米国特許公開第２００３／０１９４０８６号公報に記載された従来技術と相違して、追加の第２の乱数発生器の状態を安全にする、従って、後にソフトウェア自体により用いられるようにするためにこの乱数発生器により発生される乱数を安全にする原理、すなわち、これらの乱数が（例えば、現行のプロパゲーションにより）外部から見られずに秘密に保たれるようにする原理を開示するものである。
【００２９】
追加の第２の乱数発生器を用いるハードウエア動作は、データキャリア、特にチップカード、例えば、スマートカードにおける内部処理を偽装するためのセキュリティー機能を果たす為、追加の第２の乱数発生器の存在によりデータキャリアのセキュリティーが改善される。
【００３０】
追加の第２の乱数発生器がデータキャリア上で得られるようにすると、内部状態に基づくソフトウェアによるキー生成のために用いる乱数を物理的な測定方法によりもはや推定又は計算することができない。
【００３１】
第１の乱数発生器と、追加の第２の乱数発生器とは、互いに独立して動作し、互いに異なるタスクに対し用いられる。これにより、
‐第１の乱数発生器により発生され、外部から見ることができず、従って、キー、特に秘密キーを安全に発生させるためにソフトウェアにより用いることができる乱数と、
‐追加の第２の乱数発生器により発生され、外部から見うる乱数と
の分離が達成される。
【００３２】
本発明は更に、上述した少なくとも１つの電気回路装置を具えるデータキャリア、とくにチップカード、例えば、スマートカードにも関するものである。
【００３３】
本発明、特に上述した電気回路装置と上述した方法との双方又は何れか一方は、キー、特に秘密キーのオンチップ生成と、電子チップカード及び端末の確認とに適用しうる。このような処理に対しては、乱数がしばしば必要となる。
【００３４】
乱数は、
‐（待ち状態を追加する）ＣＰＵのランダム化のようなセキュリティー機能に対し、
‐プログラムの実行の分岐のランダム化に対し及び
‐“メモリスクランブル値”として
も用いられる。
【００３５】
前述したように、本発明の教示を有利に具体化及び改善する種々の選択肢が存在する。この目的のためには、請求項１及び請求項６に依存する請求項を参照されたい。
【発明を実施するための最良の形態】
【００３６】
図２では、図１の部分と対応する部分に図１と同じ符号を付してある。
図２に示すように、本発明により電子回路装置１００として構成した実施例は、特に安全な第１の乱数ＲＮ１を発生させる第１の乱数発生器１０と、安全な追加の第２の乱数ＲＮ２を発生する追加の第２の乱数発生器１２とを有する。この電子回路装置１００は、セキュリティー機能を改善させたスマートカード上に実現されるスマートカードチップの一部である。
【００３７】
追加の第２の乱数発生器１２は、第１の乱数発生器１０により発生される乱数ＲＮ１と、第２の乱数発生器１２により発生される乱数ＲＮ２との間で補正が行われないという点で、第１の乱数発生器１０と完全に独立している。
【００３８】
第１の乱数発生器１０は、キー生成に用いられ且つソフトウェア２０との関係でスマートカードの内部でのみ用いられる安全な第１の乱数ＲＮ１を発生するが、第２の乱数発生器１２は、例えば、ＣＰＵサイクルをランダム化するか、追加の待ち状態を加えるか、又はプログラムの実行中の分岐をランダム化するために、スマートカードのハードウエア３０に用いる第２の乱数ＲＮ２を発生する。
【００３９】
第２の乱数ＲＮ２はスマートカードの外部から見ることができる、すなわち、情報漏洩があるが、ソフトウェア２０内に用いられている第１の乱数ＲＮ１のいかなる計算もいかなる推定も不可能である。
【００４０】
本発明によれば、第２の乱数発生器１２を用いるハードウエア３０の機能と、キーのオンチップ生成のための第１の乱数ＲＮ１の生成とを同時に動作させることができる。このことは、これまで、スマートカードのプロセッサの内部の物理的状態を調査することにより得られる乱数に関する情報に基づく計算又は推定により、スマートカード内で生成されるキーが外部からかぎつけられるおそれを生じることなしには不可能であった。
【図面の簡単な説明】
【００４１】
【図１】図１は、従来技術による電子回路装置を示す線図である。
【図２】図２は、本発明の方法に応じて動作する本発明による電子回路装置の実施例を示す線図である。
【符号の説明】
【００４２】
１００    電子回路装置
１０      乱数発生器（第１の乱数発生器）
１２      追加の第２の乱数発生器
２０      ソフトウェア
２２      ソフトウェア２０の保護手段
３０      ハードウエア
３２      ソフトウェア２０内に用いられている第１の乱数ＲＮ１が計算も推定もされることのない情報漏洩
ＲＮ      乱数（図１の従来技術）
ＲＮ１    乱数（第１の乱数）
ＲＮ２    追加の第２の乱数
【図１】
2008542894.tif 000003
【図２】
2008542894.tif 000004
【国際調査報告】
2008542894.tif 000005
2008542894.tif 000006
2008542894.tif 000007