(57)【要約】  乱数列を生成するための乱数生成システムであって、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成されたメモリと、少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成され、乱数列はシードに基づいて生成されるインスタンス化ユニットと、シードに基づいて乱数システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成された上書きユニットとを備える乱数生成システム。
2014510354.tif 000002
【特許請求の範囲】
【請求項１】
乱数列を生成するための乱数生成システムであって、
書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成されたメモリと、
少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成され、乱数列はシードに基づいて生成されたインスタンス化ユニットと、
シードに基づいて乱数システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成された上書きユニットと
を備える乱数生成システム。
【請求項２】
上書きユニットが、乱数列の生成の期間中、乱数でメモリの一部を上書きするように構成される、請求項１に記載の乱数生成システム。
【請求項３】
上書きユニットが、シードに基づいて乱数生成システムによって生成された乱数を、乱数列の所定数の乱数が生成される都度、書き込むように構成される、請求項２に記載の乱数生成システム。
【請求項４】
上書きユニットが、乱数生成システムがリセット信号を受信した時点で、シードに基づいて乱数生成システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成される、請求項１〜請求項３のうちのいずれか１項に記載の乱数生成システム。
【請求項５】
メモリの少なくとも一部のビットサイズが、少なくともシードのビットサイズと同じである、請求項１〜請求項４のうちのいずれか１項に記載の乱数生成システム。
【請求項６】
内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備える、請求項１〜請求項５のうちのいずれか１項に記載の乱数生成システム。
【請求項７】
メモリの少なくとも一部のビットサイズが、少なくとも内部状態のビットサイズと同じである、請求項６に記載の乱数生成システム。
【請求項８】
メモリの少なくとも一部のビットサイズが、最大で内部状態のビットサイズの２倍であり、好ましくは、最大で内部状態のビットサイズであり、好ましくは、シードのビットサイズに等しい、請求項６に記載の乱数生成システム。
【請求項９】
メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数が、乱数生成システムによって生成される乱数列の一部である、請求項１〜請求項８のうちのいずれか１項に記載の乱数生成システム。
【請求項１０】
メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数が、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含む、請求項１〜請求項８のうちのいずれか１項に記載の乱数生成システム。
【請求項１１】
生成ユニットが、現在の内部状態から乱数列の乱数を生成する前に、現在の内部状態から新規内部状態を導出するように構成され、上書きユニットは、現在の内部状態から乱数列の乱数を生成する前に、新規内部状態から導出された乱数でメモリの少なくとも一部を上書きするように構成される、請求項１〜請求項１０のうちのいずれか１項と組み合わされた請求項６に記載の乱数生成システム。
【請求項１２】
乱数列が、完全にシードに依存している、請求項１〜請求項１１のうちのいずれか１項に記載の乱数生成システム。
【請求項１３】
メモリが、ＳＲＡＭメモリ、フリップフロップ、およびラッチのうちの任意の１つを備える、請求項１〜請求項１２のうちのいずれか１項に記載の乱数生成システム。
【請求項１４】
請求項１〜請求項１３のうちのいずれか１項に記載の乱数生成システムを備えるスマートカード。
【請求項１５】
乱数列を生成する方法であって、
揮発性の書き込み可能なメモリであって、パワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成されたメモリをパワーアップするステップと、
少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングするステップと、
シードに基づいて乱数列を生成するステップと、
シードに基づいて生成された乱数でメモリの少なくとも一部を上書きするステップと
を含む方法。
【請求項１６】
コンピュータプログラムがコンピュータ上で実行される時に、請求項１５に記載の全てのステップを実行するように適合されたコンピュータプログラムコード手段を備える、コンピュータプログラム。
【請求項１７】
コンピュータ可読媒体上で具現化される、請求項１６に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数列を生成するための乱数生成システムに関する。
【背景技術】
【０００２】
乱数生成は、例えば、モンテカルロ法のシミュレーション、例えば、ギャンブル用のスペクトル拡散周波数を選択するための電気通信システムなど、広くさまざまな分野で使用されている。これらの分野全てで、使用される乱数の質が重要であるが、特に、暗号技術の分野ではその質が重要である。
【０００３】
暗号技術の分野では、乱数は多くの目的に使用され、多くの場合、暗号システムのセキュリティは乱数の質で決まる。例えば、鍵生成周波数は、しばしば乱数ソースを採用する。暗号技術の野における乱数の他の用途として、初期化ベクトルとして、例えば、ＣＢＣモードで実行するブロック暗号用の初期化ベクトルとして、ノンスの生成、チャレンジレスポンスプロトコルで使用するチャレンジの生成が挙げられる。
【０００４】
他のセキュリティ用途でも同様に乱数を採用する場合があり、例えば、サイドチャネル解析対策はブラインド化乱数によって秘密情報のブラインド化を採用する場合もある。
【０００５】
これらの用途では、乱数が十分にランダムでない場合、乱数が使用されている暗号アプリケーションのセキュリティのレベルを低下させてしまう。
【０００６】
乱数列は、予測不可能であるのが好ましい。したがって、攻撃者は、偶然ではなくこれまで生成された乱数列を予測することはできない。同様に、乱数列を確実に再現することも不可能である。乱数列が生成された後に、再びその乱数列を生成することは不可能である。
【０００７】
予測不可能な列に対して、アプリケーションのセキュリティ要求を考えると、列を生成するハードウェアのアルゴリズムおよび以前に生成されたビットの全てを熟知していても、次のランダムビットが何になるかを予測することは不可能である。
【０００８】
真性乱数列はこれらの特性の全てを有するが、これらの特性は適切にランダムなシードがあれば決定論的乱数列からも得られる。
【０００９】
乱数生成器が生成するオブジェクトは、さまざまな方法で、一般には所定の範囲の数値、文字、ビットなどとして解釈されてもよい。ビット列は数値列にマッピングされてもよいし、その逆もまた同様のことが言える。用語「ランダムビット生成器」も使用され、０と１のランダムな整数を生成させる乱数生成器と考えられる。ランダムビット生成器に適用できるものは、必要な変更を加えて乱数生成器にも適用でき、その逆も同様のことが言える。
【００１０】
ランダムビット生成器（ＲＢＧ）は、２つのクラスに細分されてもよい。一方のクラスの乱数生成器は、非決定論的にビットを生成し、いずれの出力ビットも予測不可能な物理的プロセスに基づいている。これらのランダムビット生成器は、通常、非決定論的ランダムビット生成器（ＮＲＢＧ）として周知である。他方のクラスの乱数生成器は、アルゴリズムを使用して決定論的にビットを演算する。このクラスのＲＢＧは、決定論的ランダムビット生成器（ＤＲＢＧ）として周知である。ＮＲＢＧは、真性乱数生成器とも呼ばれる。ＤＲＢＧは、疑似乱数生成器とも呼ばれる。
【００１１】
決定論的ランダムビット生成器は、一般には、シードによって起動される。シードは、有限数列、例えば、決定論的乱数生成器への入力として使用されるビットストリングのことである。シードは、生成器の内部状態の全てもしくは一部分を決定するものである。シードのエントロピーは、ＤＲＢＧのセキュリティ要件をサポートするのに十分でなければならない。シードは、真性乱数生成器から取得してもよい。
【００１２】
さらに決定論的ランダムビット生成器については、ＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−９０、「Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｉｏｎ  Ｕｓｉｎｇ  Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｒａｎｄｏｍ  Ｂｉｔ  Ｇｅｎｅｒａｔｏｒｓ」（２００７年３月）に詳細に記載されている。この文献をＮＩＳＴ規格と呼ぶことにする。
【００１３】
ほとんどの真性乱数生成器は、ランダム過程として熱雑音を使用するものである。例えば、集積回路内の熱雑音は、平衡状態の導体に見られる小さい電圧変動を表している。ランダム性の他の原因として、放射性物質の崩壊、量子力学プロセス、自励発振器の周波数の不安定性などが挙げられる。
【００１４】
真性乱数の別のソースは、「Ｐｏｗｅｒ−ｕｐ  ＳＲＡＭ  Ｓｔａｔｅ  ａｓ  ａｎ  Ｉｄｅｎｔｉｆｙｉｎｇ  Ｆｉｎｇｅｒｐｒｉｎｔ  ａｎｄ  Ｓｏｕｒｃｅ  ｏｆ  Ｔｒｕｅ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒｓ」（Ｄ．Ｈｏｌｃｏｍｂ、Ｗ．Ｂｕｒｌｅｓｏｎ、Ｋ．Ｆｕ、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ、２００９年）に記載されている。この論文には、ＳＲＡＭがパワーアップされるとＳＲＡＭのメモリコンテンツは部分的にランダムになるので、真性乱数生成器としてＳＲＡＭが使用できるということが記載されている。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】ＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−９０、「Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｉｏｎ  Ｕｓｉｎｇ  Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｒａｎｄｏｍ  Ｂｉｔ  Ｇｅｎｅｒａｔｏｒｓ」（２００７年３月）
【非特許文献２】「Ｐｏｗｅｒ−ｕｐ  ＳＲＡＭ  Ｓｔａｔｅ  ａｓ  ａｎ  Ｉｄｅｎｔｉｆｙｉｎｇ  Ｆｉｎｇｅｒｐｒｉｎｔ  ａｎｄ  Ｓｏｕｒｃｅ  ｏｆ  Ｔｒｕｅ  Ｒａｎｄｏｍ  Ｎｕｍｂｅｒｓ」（Ｄ．Ｈｏｌｃｏｍｂ、Ｗ．Ｂｕｒｌｅｓｏｎ、Ｋ．Ｆｕ、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ、２００９年）
【発明の概要】
【発明が解決しようとする課題】
【００１６】
Ｈｏｌｃｏｍｂ他による真性乱数生成器にはいくつかの不利点がある。メモリは固定サイズであるので、メモリから生成されるランダム性の程度は制限される。実際に、一般には、メモリは十分にランダムになることはないので、メモリコンテンツは条件付けされ、その結果、起動から取得されるランダムビット数は大幅に低減する。したがって、Ｈｏｌｃｏｍｂ他の設計は、ほとんどの実際の用途には適さなくなる。
【００１７】
さらに、使用されるメモリがコンピュータに組み込まれている場合には、さらに不利点がある。コンピュータのソフトリセットを行う場合、メモリのコンテンツは変更されない。メモリのコンテンツが真にランダムであると期待するアプリケーションは、二回目も同じ乱数を使用するであろう。暗号アプリケーションの場合、このことがシステムのセキュリティを大きく損なう恐れがある。さらに、再現不可能性の前提が崩れるので、他の乱数の用途にも支障を来す。
【課題を解決するための手段】
【００１８】
本発明による乱数列を生成するための乱数生成システムは、上述の不利点を克服する、もしくは軽減する。乱数生成システムは、メモリを備える。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。乱数生成システムはさらに、少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成されたインスタンス化ユニットを備える。乱数列は、シードに基づいて生成される。乱数生成システムはさらに、シードに基づいて乱数生成システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成された上書きユニットを備える。
【００１９】
メモリのコンテンツは、シードを生成するのに使用される。乱数列はシードに基づいて生成されるので、原則として、生成される乱数の量に制限はない。安全に生成される最大数の乱数を組み込む乱数生成スキームが使用されても、この数は、一般には、１回のメモリのパワーアップによって得られるランダム性の程度をはるかに上回る。
【００２０】
乱数生成システムを含むデバイスのソフトリセットの時には、メモリへの電力供給は中断されない。メモリがパワーアップされる度に（例えば、ハードリセット時に）、メモリは、新規な少なくとも部分的にランダムなメモリコンテンツを生成するが、この効果は、メモリが再びパワーアップされないソフトリセットの時には発生しない。しかし、通常、ハードリセット時にランダムなコンテンツが現れるメモリは乱数で上書きされるので、この問題は解決される。
【００２１】
ソフトリセットもしくはハードリセットの後に、乱数生成システムによって生成された乱数列は、ランダム性が劣るものではない。特に、ソフトリセット後に乱数生成システムによって作成された乱数は、メモリの前回のパワーアップ後に作成された乱数と同じではない。アプリケーションは、乱数の質に依存する場合がある。
【００２２】
強調すべきは、Ｈｏｌｃｏｍｂに開示されている設計と比較して、本発明は少なくとも２つの利点を有するということである。Ｈｏｌｃｏｍｂでは、メモリから導出される乱数の数は、メモリサイズのごくわずかな割合に制限されるので少ない。しかし、本発明では、乱数は、乱数生成システムを使用して、例えば、シードに基づいた決定論的乱数生成器を使用して、間接的にメモリから導出されるので、生成される乱数の数は上述したように制限されない。さらに、本発明では、乱数の質はソフトリセット後に低下することはないが、Ｈｏｌｃｏｍｂでは、ソフトリセット後に生成された乱数は、前回のリセット後に生成された乱数と全く等しくなる。
【００２３】
乱数列は、ビット列としてもよい。乱数は、例えば、０〜２５５の範囲の数字のバイト、または単語、または任意の他の適切な形にしてもよい。乱数は、文字などで表現されてもよい。乱数列は、乱数生成システムに含まれる出力に配置されてもよい。乱数生成システムは、乱数列の次の乱数を要求することができるＡＰＩを備え、このＡＰＩに基づいて乱数生成システムはその乱数を供給する。
【００２４】
メモリは、乱数によって上書きできるように書き込み可能である。メモリは揮発性であるので、乱数によるメモリの上書きは、ハードリセット後のメモリコンテンツに影響を及ぼすことはない。ハードリセット後には、メモリのパワーアップ後、メモリは新規な少なくとも部分的にランダムなメモリコンテンツを含む。この点は、メモリがパワーアップされた状態が維持されれば、メモリが途中でパワーダウンされる場合よりメモリへの不正アクセスがずっと難しくなるので、有利である。メモリは、独立型メモリにしてもよいが、大容量のメモリの一部としてもよい。例えば、メモリは、１つが大容量ＳＲＡＭの２ｋｂブロックの１つまたは複数のブロックとしてもよい。
【００２５】
大容量メモリの別の部分は、他の目的、例えば一時的なストレージに割り当てられてもよい。
【００２６】
上書きユニットがメモリの個々の場所を上書きする必要はないというのが本発明者の見解であった。上書きされたメモリの全エントロピーが、乱数列を使用するアプリケーションに必要なセキュリティ要求より小さくない限り、全メモリ量より少ない量を上書きすることによってオーバーヘッドを低減することができる。
【００２７】
ランダムなデータ以外に、他のランダムでないデータがメモリに書き込まれ得る。例えば、必ずしもランダムでない乱数生成システムの内部状態の要素、例えば、リシードカウンタがメモリに書き込まれてもよい。このことにより、ソフトリセット後にこれらの要素を回復することができる。リシードカウンタは、ＮＩＳＴ規格に示されている。
【００２８】
揮発性ストレージとしても知られている揮発性メモリは、電力供給が維持される必要がない不揮発性メモリとは異なり、記憶情報を維持するのに電力が必要なコンピュータメモリである。
【００２９】
インスタンス化ユニットは、複数のソースからシードを導出することができる。一実施形態では、乱数生成システムは、エントロピーソースを備える。エントロピーソースは、メモリを備える。インスタンス化ユニットは、エントロピーソースからシードを導出する。エントロピーソースは、メモリ以外に、他のエントロピーソースを含んでもよい。例えば、エントロピーソースは、エントロピーソースとして使用されるクロックを含んでもよい。エントロピーソースは、予測不可能なデータのソースである。エントロピーソースは、必ずしも一様分布にする必要はない。インスタンス化ユニットは、ＮＩＳＴ規格に従ったインスタンス化ユニットにしてもよいが、必ずしもこれに限らない。インスタンス化ユニットは、乱数の生成を開始するためのシードを作成する。
【００３０】
パワーアップ時のメモリのコンテンツは十分にランダムである必要はなく、またその分布が一様である必要もない。パワーアップ時のメモリコンテンツのエントロピーは、少なくともシードと同じだけ大きいことが好ましい。しかし、パワーアップ時のメモリコンテンツのエントロピーがシードより小さい場合でも、本発明は機能し、ソフトリセット後の乱数列の質も依然として改善される。コンテンツの個々の要素、すなわち、個々のビットもしくはバイトが同様にランダムである必要はなく、実際に、いくつかの個々の要素は全くランダムでない場合もある。
【００３１】
一実施形態では、インスタンス化ユニットは、内部エントロピープールのシード、一般には、内部状態の一部を記憶するように構成される。エントロピープールは、乱数生成システムの内部メモリに記憶されてもよい。乱数列は、内部エントロピープールに基づいて生成される。エントロピープールは、乱数列を生成した結果、変更されてもよいが、これは必須ではない。例えば、シードは、カウンタを使用して連結されてもよく、ハッシュを使用して、好ましくは、暗号技術上強いハッシュ、例えば、ｓｈａ−２５６を使用して、ハッシュ化される。ハッシュの出力の全てもしくは一部は、乱数列の一部として使用される。
【００３２】
メモリコンテンツが十分にランダムである必要はない。メモリコンテンツは、理論的なシャノン最大エントロピーよりも小さいエントロピーを有してもよい。一実施形態では、乱数生成システムは、メモリコンテンツのエントロピーをメモリコンテンツのビット長より短いビット長を有するストリングに圧縮する条件付けユニットを備え、インスタンス化ユニットは、ストリングに基づいたシードを使用して乱数生成システムをシーディングするように構成される。
【００３３】
条件付けユニットは、条件関数を実行するのが好ましい。条件付けユニットは、エントロピーソースの一部としてもよいが、これに限らない。条件関数を含むまたはエントロピーソースの出力において条件付けが行われるエントロピーソースは、条件付きエントロピーソースとも呼ばれる場合がある。条件関数により、確実に条件付きエントロピーソースが十分なエントロピーのビットストリングを提供することができる。
【００３４】
一実施形態では、乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備える。例えば、生成ユニットは、列の乱数を作成するために内部状態に生成関数を適用し、内部状態を更新するために更新関数を適用するように構成されてもよい。生成ユニットは、内部状態メモリに新規内部状態を書き込むことによって、内部状態を更新してもよい。インスタンス化ユニットは、内部状態メモリに書き込むように、例えば、シードを書き込むように構成される。さらに、インスタンス化ユニットは、例えば、シードの長さを長くするためにシード上でさらなる処理を行い、さらなる処理の結果を内部状態メモリに書き込んでもよい。現在の内部状態および新規内部状態を含む内部状態は、所定の内部状態サイズ以下のビット長を有する。
【００３５】
一実施形態では、上書きユニットは、乱数列の生成の期間中、乱数でメモリの一部を上書きするように構成される。これには、いくつかの利点がある。この実施形態では、メモリコンテンツはソフトリセット後に適切にランダムになるので、上書きユニットは、リセットの場合に必ずしもリセット信号を受信する必要はない。また、ソフトリセットの場合に上書きユニットがリセット信号を受信したとしても、ソフトリセットが実行される前にメモリを上書きすることによって引き起こされる時間遅延が全くない。
【００３６】
さらに、セキュリティ上の利点もある。攻撃者がある時点で、ソフトリセット後にエントロピーソースとして使用されるメモリへの書き込みアクセス権を取得してしまった場合に、攻撃者がソフトリセット後の列のランダム性を低下させることができる可能性がある。しかし、メモリが継続的に更新されれば、この潜在的脅威は低減される。攻撃者には知られていない追加のエントロピーがすぐにメモリに書き込まれるからである。例えば、上書きユニットは、一連の所定の時間間隔の各経過時間内で、もしくは所定数のサイクル、例えば、中央処理装置のサイクル、つまりクロックサイクルが発生した後に、乱数を書き込むように構成されてもよい。
【００３７】
一実施形態では、上書きユニットは、シードに基づいて乱数生成システムによって生成された乱数を、乱数列の所定数の乱数が生成される都度、メモリに書き込むように構成される。例えば、乱数は、乱数が列に生成される度に、メモリの一部に書き込まれてもよい。
【００３８】
一実施形態では、上書きユニットは、シードに基づいて乱数生成システムによって生成された乱数を、乱数生成システムがアプリケーションから一定量のランダムなバイトの要求を受信した後に、メモリに書き込むように構成される。
【００３９】
一実施形態では、上書きユニットは、乱数生成システムがリセット信号を受信した時点で、シードに基づいて乱数生成システムによって生成された乱数でメモリを上書きするように構成される。特に、上書きユニットは、リセット信号を受信してもよい。
【００４０】
リセット信号の受信後にメモリを上書きすることは、徐々に上書きするのに費やす合計時間に比べて、上書きが迅速に行われるという利点がある。パフォーマンスが重要なアプリケーションの場合、通常の動作時の必須でないステップを最小限に減らすようにして、さらに、シャットダウン時に、例えば、ソフトリセット時に、より多くの時間が利用できるようにするのが好ましい。シャットダウン時、ソフトリセット時の上書きは、通常の動作時に生じるメモリへの攻撃の可能性に対処することができるという利点もある。あるいは、メモリの一部は、シードを導出した後に、例えば、初期設定の一部として、完全に上書きされてもよい。
【００４１】
リセット信号は、まず乱数生成システムによって受信され、その後、乱数生成システムが上書きユニットに上書きを開始するように信号を送る。
【００４２】
一実施形態では、メモリの少なくとも一部のビットサイズは、少なくともシードのビットサイズと同じである。これは、ソフトリセット後のメモリコンテンツから生成されるシードは、理想的に、ソフトリセット前に生成された乱数列のエントロピーに等しいエントロピーを有するという利点がある。起動関数、条件付け関数、生成関数などのうちの１つが、理論上最適とは言えない状態、すなわち、完全にエントロピーが保存された状態とは言えない状態で機能したとしても、ソフトリセット後の乱数列の質はソフトリセット前の乱数列の質にほぼ等しいと言える。
【００４３】
一方、オーバーヘッドを低減するために、全メモリ量未満を上書きしてもよい。一実施形態では、メモリの少なくとも一部のビットサイズは、シードのビットサイズに等しい。エントロピーの観点から見ると、完全に上書きされたメモリは最大でもシードのエントロピーと同程度のエントロピーを含むので、わずかにエントロピーの損失が生じるであろう。
【００４４】
これらの関数の可能性のある不完全性を補い、エントロピー損失を防ぐために、より多く上書きすることができる。例えば、乱数生成器の内部状態のビットと同じ数のランダムビットを上書きすることができる。例えば、一実施形態では、乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備え、メモリの少なくとも一部のビットサイズは、少なくとも内部状態のビットサイズと同じ大きさである。
【００４５】
しかし、さらにオーバーヘッドを低減するために、追加のビット量を、例えば内部状態のビットサイズの２倍未満、好ましくは、内部状態のビットサイズ以下に低減することができる。
【００４６】
メモリの少なくとも一部のビットサイズを内部状態のビットサイズに等しいサイズに選択することは、ライトバックされる量が内部状態のデータ量以上であるので、メモリの上書きの時にエントロピーの損失が全くないことをより簡単に証明することができるという利点がある。それと同時に、オーバーヘッドが最小限まで低減される。
【００４７】
メモリの一部を上書きするのに使用される乱数は、さまざまなソースから取得されてもよい。一実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部である。この手法の利点は、列用の乱数と上書き用の乱数の２つストリームを作成するのに、良好な乱数を作成する設計努力を繰り返す必要がないということである。
【００４８】
列で生成された乱数は、メモリの上書きに再利用される、すなわち、乱数は何らかのアプリケーションでの使用のために出力され、かつ、メモリに書き込まれる。次に初期化ステップが続くので、必ずしもソフトリセット後にこれらの値を再利用するとは限らない。しかし、別の実施形態では、列内の一部の数字は、メモリの上書きまたはアプリケーションへの出力のために使用されるが、これら両方を行うために使用されない。
【００４９】
上書きのために乱数列の一部を使用する代わりに、その目的のために特別に列を生成することも可能である。これには、アプリケーションで認められるランダムストリームはメモリ検査（可能である場合）によって認められたランダムストリームと相関関係がないという利点がある。しかし、これには、２つのストリームを生成する必要がある。
【００５０】
一実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含む。これには、上書き用乱数と出力用乱数には、同じストリームからの数字が使用された場合に比べて少なくとも相関性が低いという利点がある。しかし、追加の計算オーバーヘッドが生じない。
【００５１】
一実施形態では、本発明による乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備え、生成ユニットは、現在の内部状態から乱数列の乱数を生成する前に、現在の内部状態から新規内部状態を導出するように構成され、上書きユニットは、現在の内部状態から乱数列の乱数を生成する前に、新規内部状態から導出された乱数でメモリの少なくとも一部を上書きするように構成される。
【００５２】
新規内部状態を事前に演算して、現在の状態を使用して、列内の次の乱数を生成する前に、メモリを上書きするのに新規内部状態を使用することによって、リセットがいつ発生しても、出力を生成するためにメモリ内の値が使用されることはないと言える。したがって、確実に状態情報が再利用されることはない。このことにも関わらず、本発明の解決策により、ソフトリセット後にランダムな出力ビットの生成を続けることができる。インスタンス化アルゴリズムは、リセット後の再開時に、メモリからの上書きに使用される内部状態を内部状態メモリにコピーするように構成される。
【００５３】
一実施形態では、乱数列は、完全にシードに依存している。シードを導出することは別にして、乱数生成器は決定論的乱数生成器である。決定論的乱数生成器は、一般には、より大きなスループットを有する。メモリ内の起動時のノイズからランダム性を導出する場合、真にランダムなシード生成とシードからの決定論的な列生成とを分離することにより、より多くの乱数を生成することができる。一実施形態では、乱数列は、完全に内部状態に依存している。
【００５４】
メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツをメモリの一部が含むように構成される任意のタイプの揮発性の書き込み可能なメモリを本発明に使用してもよい。特に適しているのは、ＳＲＡＭメモリ、フリップフロップ、およびラッチである。例えば、フリップフロップの列をパワーアップ後に読み出してもよい。メモリとしてバスキーパーまたはバスキーパー群、それと共にバスキーパーに値を書き込むように構成された回路を使用することもできる。
【００５５】
ＳＲＡＭおよびフリップフロップは、物理的複製不可能関数（ＰＵＦ）を生成するのにも使用される。このような用途では、パワーアップ時の値がさまざまなパワーアップにわたって十分持続される限り、一定のランダム性は容認される。しかし、本発明では、起動後に極めてランダムなメモリも使用される。
【００５６】
揮発性の書き込み可能なメモリの別の選択肢として、ＤＲＡＭがある。
【００５７】
乱数生成システムは、電気メモリを備えた電気式乱数生成システムとしてもよい。さらに、インスタンス化ユニットおよび上書きユニットも電気式であるのが好ましい。本発明による乱数生成システムはさらに、電子機器、特に、携帯電話、セットトップボックス、コンピュータなどの移動式電子機器に含まれてもよい。本発明の別の態様は、本発明による乱数生成システムを備えるスマートカードに関する。
【００５８】
本発明のさらに別の態様は、本発明による乱数生成システムを備える電子暗号装置である。例えば、電子暗号装置は、本発明による乱数生成システムを使用して、ノンス、チャレンジレスポンスプロトコルに使用するためのチャレンジ、例えば、ＣＢＣモードで実行するブロック暗号用初期化ベクトルのような初期化ベクトル、ブラインド化乱数、暗号鍵、例えば、対称鍵、非対称鍵、セッション鍵の任意の１つを生成するように構成されてもよい。
【００５９】
本発明のさらに別の態様は、乱数列を生成する方法に関する。該方法は、揮発性の書き込み可能なメモリであって、メモリの一部が、パワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成されたメモリをパワーアップするステップと、少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングするステップと、シードに基づいて乱数列を生成するステップと、シードに基づいて生成された乱数でメモリの少なくとも一部を上書きするステップとを含む。
【００６０】
本発明による乱数生成システムは、有利には、携帯電話、スマートカードリーダ、スマートフォン、組み込み装置、ＲＦＩＤタグ、ＰＯＳ端末装置、ＶＯＩＰ電話、タブレット、セキュリティモジュール、ＴＰＭモジュール、ＭＴＭモジュール、ネットワークルータ、ＰＣ、ラップトップに含まれてもよい。
【００６１】
本発明の乱数生成システムを上述の電子機器などの電子機器に組み込むのは、電子メモリ、好ましくは、ＳＲＡＭメモリ、インスタンス化ユニット、メモリを管理する装置を組み込むことで実現可能である。
【００６２】
本発明による方法は、コンピュータ実装方法としてコンピュータに実装されてもよいし、専用のハードウェアに実装されてもよいし、これら両方の組み合わせに実装されてもよい。本発明による方法の実行可能コードが、コンピュータプログラム製品に記憶されてもよい。コンピュータプログラム製品の例として、メモリデバイス、光学式記憶装置、集積回路、サーバ、オンラインソフトウェアなどがある。
【００６３】
好適な実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行される時に、本発明による方法の全てのステップを実行するように適合されたコンピュータプログラムコード手段を備える。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上で具現化される。
【００６４】
本発明の特筆すべき面は、初めはセキュリティ用に設計されていなかった装置がセキュリティ機能をリトロフィットすることができるということである。特に、乱数生成装置のない装置でも、依然として安全な方法で乱数を生成する構成にすることができる。
【００６５】
したがって、本発明の一態様は、コンピュータソフトウェア命令を実行するプロセッサとメモリとを備えた装置に関する。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。該装置は、本発明によるインスタンス化ユニットおよび上書きユニットを実装するように構成されたコンピュータソフトウェア命令を含む追加メモリを備える。例えば、プロセッサは、マイクロコントローラ、例えば、８０５１プロセッサとしてもよい。例えば、ソフトウェアは、本発明によるソフトウェアとしてもよい。
【００６６】
本発明の一態様は、コンピュータソフトウェア命令を実行するプロセッサとメモリとを備えた装置をリトロフィットする方法に関する。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。該装置は、コンピュータソフトウェア命令を含む追加メモリを備える。リトロフィットする方法は、本発明によるソフトウェアを追加メモリにインストールするステップを含む。
【００６７】
一例として、添付図面を参照しながら、本発明をより詳細に説明する。
【００６８】
図面全体にわたって、同様または一致する機能は、同じ参照番号で示されている。
【図面の簡単な説明】
【００６９】
【図１】本発明による一実施形態の概略図である。
【図２】本発明による一実施形態の概略図である。
【図３】本発明による一実施形態の概略図である。
【図４】本発明による一実施形態の概略図である。
【図５ａ】スマートカードの図である。
【図５ｂ】スマートカードの概略図である。
【図６】本発明による方法を示したフローチャートである。
【図７ａ】本発明による方法を示したフローチャートである。
【図７ｂ】本発明の方法を示したフローチャートである。
【発明を実施するための形態】
【００７０】
本発明は、多くのさまざまな形式の実施形態が可能であるが、本開示は本発明の原理の例にすぎないと考えるべきであって、本発明を図示および説明されている特定の実施形態に限定するものではないという理解のもとに、１つまたは複数の特定の実施形態を図示し、本明細書で詳細に説明する。
【００７１】
図１は、乱数生成システム１００を示す図である。システム１００は、メモリ１１０を備える。メモリ１１０は、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。メモリ１１０は、大容量メモリの一部としてもよい。この場合、メモリ１１０は、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むメモリの一部であり、インスタンス化ユニット１５２によって使用されるメモリのことである。
【００７２】
以下に、メモリ１１０のいくつかの可能な選択肢の概要を示す。メモリ１１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）としてもよい。ＳＲＡＭは、パワーアップ後に、オンビットとオフビット（１のビットと０のビットとも呼ばれる）のランダムパターンで満たされる。ＳＲＡＭがこの次にパワーアップされればランダムパターンはある程度まで繰り返されることになるが、エントロピーソースとしての機能を果たすために次のＳＲＡＭのパワーアップとの間に十分な差異が生じる。
【００７３】
メモリ１１０は、メモリ素子群としてもよい。適切な揮発性メモリ素子は、フリップフロップおよびラッチを含む。メモリ素子（例えば、集積回路に含まれてもよい）は、起動時に、乱数値で満たされる。乱数値は、メモリ素子が製造される間の生成プロセスにおける明確なばらつきによって決まる。メモリ素子を構成する種々のコンポーネントの構造をわずかに変更することで、乱数値を変更することができる。
【００７４】
さらに、特定のメモリ素子のどのコンテンツがパワーアップするかを予測することは不可能である。これらのメモリ素子の一部はほぼ確実に再現するが、他のメモリ素子は高度のランダム性を示すことになる。メモリ１１０として、メモリ素子群が使用されてもよい。
【００７５】
生産時の不可避のばらつきにより、例えば、ディープサブミクロンのプロセスばらつきにより、互いに対するＳＲＡＭのコンポーネントの挙動は少なくともわずかにランダムになる。これらのばらつきは、例えば、ＳＲＡＭのメモリセル内のトランジスタのわずかに異なる閾値電圧に反映される。ＳＲＡＭが、例えば、書き込み動作の前に、未定義状態で読み出される場合、ＳＲＡＭの出力はランダム構成によって決まる。
【００７６】
トランジスタの閾値電圧のバランスが取れたＳＲＡＭセルは、プロセスばらつきにより閾値電圧がわずかにアンバランスであるセルに比べて、ランダムな起動動作をしやすい。
【００７７】
メモリ１１０は、いわゆる物理的複製不可能関数（ＰＵＦ）としてもよい。この場合、パワーアップ後のメモリ１１０のコンテンツは、例えば、ヘルパーデータアプリケーションを使用して、固有のストリングを導出するのに使用してもよい。ヘルパーデータは、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むメモリのコンテンツからノイズを除去することに留意されたい。固有のストリングは、暗号鍵として使用されてもよい。暗号鍵の導出後、導出前、または導出時に、元のメモリコンテンツ、すなわち、ノイズが除去されていないメモリコンテンツが、本発明によるシードを導出するのに使用されてもよい。
【００７８】
すなわち、メモリ１１０は、ＰＵＦとして、またエントロピーソースとして使用することができる。ＰＵＦの要件とエントロピーソースの要件とは異なり、ある程度相反する。ＰＵＦは、次のパワーアップとの間にある程度の重複部分が必要であるが、エントロピーソースはある程度の差異が必要である。
【００７９】
ＰＵＦは、入力を刺激の形で物理システムに提供して、刺激と物理システムとの相互作用の結果として生じる挙動を出力にマッピングすることによって入力用の関数の出力が取得されるような方法で物理システムとして具現化される関数であり、物理システムに物理的にアクセスせずに出力を取得することはできず、また物理システムを再現することができないほどまでに、この相互作用は予測不可能であり、基本的には物理システムの乱数によって決まる。ＰＵＦには、より広範囲のさまざまな入力が可能な種類もあれば、より限定された範囲の入力が可能な種類もあれば、単一の入力のみが可能な種類もある。何か１つのチャレンジでＰＵＦにチャレンジ入力することは、ＰＵＦの「活性化」とも呼ばれる。
【００８０】
ＰＵＦに関して、同じチャンレンジに対して複数回評価された場合、ＰＵＦは全て等しい複数のレスポンスを生成するのが望ましい。しかし、この特性は必須ではなく、実際に、ほとんどのＰＵＦにはこの特性がない。複数のレスポンスが互いに十分に近いものであれば、ＰＵＦは固有のストリングを導出するのに有効であると言える。実際にＰＵＦの出力にノイズがあることを考えると、ランダムなシードを導出するのにＰＵＦに基づいたメモリを使用してもよい。
【００８１】
メモリ１１０から固有のストリングを導出することは、全く随意である。実際に、本発明により起動時のコンテンツにこのような高いランダム性を有するメモリを使用することができるので、固有のストリングを導出するためにＰＵＦとしてメモリを使用することは実用的でなくなる、または不可能になる。
【００８２】
本発明の別の利点は以下の通りである。ＰＵＦに使用される種類のメモリ、例えば、ＳＲＡＭは、いわゆる経年による影響を受けやすい。例えば、長期にわたってＳＲＡＭメモリに同じデータパターンが記憶されている場合、トランジスタ閾値電圧は負のバイアス温度不安定性（ＮＢＴＩ）の影響により変化し、ノイズに負の影響をもたらす（すなわち、ノイズを低減する）可能性がある。しかし、ランダムデータをメモリ１１０に書き込むことで、メモリセルが特定の方向への経年変化を防ぐことができる。この効果は、上書きがメモリ１１０全体にわたる場合に改善される。この効果は、メモリ１１０がパワーアップされる期間中上書きが継続された場合に、同様におよび／または一層改善される。
【００８３】
システム１００は、システム１００の内部状態を記憶するための内部状態メモリ１５４を備える。
【００８４】
システム１００はさらに、インスタンス化ユニット１５２を備える。インスタンス化ユニット１５２は、少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成される。システム１００において、インスタンス化ユニット１５２は、少なくとも部分的にランダムなメモリコンテンツを取得するためにメモリ１１０に接続される。インスタンス化ユニット１５２は、少なくとも部分的にランダムなメモリコンテンツから、および随意で他のソースから、シードを作成する。インスタンス化ユニット１５２は、内部状態メモリ１５４内にシードを記憶する。
【００８５】
インスタンス化ユニット１５２は、ＮＩＳＴ規格に示されるように、ランダムデータを受信してシードを作成する、すなわち、内部状態として使用するための乱数初期値を作成するための１つまたは複数の入力を有する関数としてもよい。
【００８６】
システム１００はさらに、生成ユニット１５６を備える。生成ユニット１５６は、リードアクセスおよび書き込みアクセスを行うために内部状態メモリ１５４に接続される。生成ユニット１５６は、例えば、内部状態メモリ１５４に記憶されている内部状態に基づいて乱数列を生成するように構成される。生成ユニット１５６は、出力生成アルゴリズムを使用して内部状態から乱数列の一部である新規乱数を生成することができ、生成ユニット１５６は、内部状態更新アルゴリズムを使用して、内部状態を新規内部状態に更新して、新規内部状態を内部状態メモリ１５４に書き込むことができる。
【００８７】
生成ユニット１５６は、最初に、インスタンス化関数から入力として初期状態を取り出す。生成ユニット１５６は、好ましくは、要求に応じて疑似乱数ビットを生成するように構成される。例えば、アプリケーション１６０から要求を受信すると、生成ユニット１５６は、乱数を生成して、新規要求の新規内部状態を生成する。あるいは、乱数は、最初に要求を受信せずに、プッシュされてもよい。要求は、最初に、乱数生成システムの他の部品によって受信されてもよい。
【００８８】
インスタンス化ユニット１５２によって使用されるインスタンス化関数および生成ユニット１５６によって使用される生成関数は、ハッシュ関数を使用して実行されてもよい。一例が、ＮＩＳＴ規格のセクション１０．１．１で規定されている。特に、本明細書の図８（４５頁）は、インスタンス化ユニット１５２および生成ユニット１５６の可能な実施形態を示した図である。値「Ｖ」、「リシードカウンタ」、および「Ｃ」は、アルゴリズムの内部状態と見なされる。疑似乱数ビットは、システムの出力ビットである。
【００８９】
乱数列は、シードおよび内部状態に基づいて生成されることに留意されたい。
【００９０】
システム１００は、生成ユニット１５６を介してアプリケーション１６０に接続される。例えば、アプリケーション１６０は、鍵交換プロトコルである、例えば、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎプロトコルである。Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎプロトコルの過程において、プロトコルステップを実行するのに１つまたは複数の乱数が必要である。アプリケーション１６０は、生成ユニット１５６から乱数を受信する。アプリケーション１６０は、乱数を必要とする任意の他のアプリケーション、例えば、暗号アプリケーション、または他のアプリケーション、例えばモンテカルロシミュレーションアプリケーションとしてもよい。
【００９１】
システム１００はさらに、上書きユニット１５９を備える。上書きユニット１５９は、同様にシードに基づいて乱数を取得する。図示するように、上書きユニット１５９がこれらの乱数を正確に取得する方法についてさまざまな選択肢がある。図１は、シードに基づいて乱数生成システムによって生成された乱数を取得するために、生成ユニット１５６に接続された上書きユニット１５９を示している。
【００９２】
上書きユニット１５９は、メモリ１１０を上書きするように構成される。メモリ１１０が大容量メモリの一部である場合、上書きユニット１５９は大容量メモリのその一部を上書きするだけでよく、インスタンス化ユニット１５２はそこからランダムなメモリコンテンツを取得することに留意されたい。また、上書きユニット１５９は、大容量メモリ全体を上書きしてもよい。
【００９３】
上書きユニット１５９は、一回の動作でメモリ１１０を上書きしてもよい。例えば、上書きユニット１５９は、リセット信号を受信した時に、メモリを上書きしてもよい。リセット信号は、ソフトリセットが実行中であることを示す。上書きユニット１５９は、オペレーティングシステムからリセット信号を受信してもよい。上書きユニット１５９は、例えば、上書きが完了した時点でオペレーティングシステムに、別の信号を送信して、ソフトリセットを開始できることを伝えてもよい。別の信号を使用するのは、随意である。その代わりに、上書きユニット１５９は、ソフトリセットサイクルと一致する所定時間を要するようにしてもよい。
【００９４】
さらに、上書きユニット１５９は、インスタンス化ユニット１５２がシードを導出した時点でメモリを上書きしてもよい。例えば、インスタンス化ユニット１５２は、シード完了信号を上書きユニット１５９に送信してもよく、上書きユニット１５９は、シード完了信号を受信した時にメモリ１１０の一部を上書きするように構成されてもよい。
【００９５】
さらに、上書きユニット１５９は、さらに長時間にわたって、メモリ１１０の上書きを拡大してもよい。例えば、上書きユニットは、乱数列の生成の初めから終わりまでずっと、乱数を使用してメモリの一部を上書きするように構成されてもよい。
【００９６】
上書きユニット１５９は、上書き完了フラグを備えてもよい。上書き完了フラグは、メモリ１１０が一旦上書きユニット１５９によって完全に上書きされた場合に設定される。上書きユニット１５９は、フラグが設定された場合、それ以上上書きを行わない。フラグは、ソフトリセットまたはハードリセットの時にリセットされる。上書き完了フラグは、メモリ１１０の所定数の記憶場所が上書きされた後に設定されてもよい。記憶場所の所定数は、メモリ１１０のサイズ、シードのサイズ、内部状態のサイズなどに対応してもよい。
【００９７】
上書きの拡大を実施する１つの方法は、乱数列の所定の数の乱数が生成される都度、シードに基づいて乱数生成システムによって生成された少なくとも１つの乱数を書き込むことである。例えば、所定数が１である場合、システム１００、例えば、アプリケーション１６０のユーザが乱数列を要求または受信する度に、上書きユニット１５９は乱数をメモリ１１０に書き込むことになる。
【００９８】
例えば、上書きユニット１５９は、ポインタがメモリ１１０を指し示すようにすることができる。ソフトリセットまたはハードリセット時に、上書きユニット１５９は、ポインタをメモリ１１０の開始位置に設定する。上書きユニット１５９は、メモリ１１０に乱数を書き込む時に、ポインタで示されたメモリ１１０の場所に乱数を書き込んで、ポインタを進める。ポインタがメモリ１１０の終端に来ると、上書きユニット１５９は、完全な上書きを示す上書き完了フラグを設定してもよく、さらに上書きユニット１５９は、ポインタをメモリ１１０の開始位置に戻してもよい。完全な上書きが行われても上書きを継続することで、上書き後のメモリ１１０のコンテンツとシードとの相関性が若干低下する。というのは、ソフトリセット時のコンテンツはアプリケーションからの要求数または上書きユニット１５９がメモリを上書きしている期間に左右されるためである。あるいは、上書き完了フラグは、ポインタとメモリ１１０の開始位置との差が所定数になった場合に設定されてもよい。
【００９９】
動作時に、メモリ１１０はパワーアップされる。その結果、メモリ１１０は、ランダムな値または少なくとも部分的にランダムな値のパターンを含む。好ましくは、メモリ１１０に含まれるビットで測定されるエントロピーは、少なくともインスタンス化ユニット１５２によって作成されるシードのビットサイズと同じである。エントロピーは、さまざまな方法で、例えば、最小エントロピーを使用して評価されてもよい。
【０１００】
インスタンス化ユニット１５２は、コンテンツを取得して、シードを導出する。次いで、インスタンス化ユニット１５２は、シードを内部状態メモリ１５４に記憶する。アプリケーション１６０は、乱数が必要になると、乱数を生成ユニット１５６に要求する。アプリケーション１６０は、ＡＰＩを使用してもよい。生成ユニット１５６は、乱数をプッシュしてもよい。生成ユニット１５６は、内部状態メモリ１５４に記憶されている内部状態から列の新規乱数を導出する。さらに、生成ユニット１５６は、内部状態を更新する。上書きユニット１５９は、シードから導出された乱数を使用して、メモリ１１０を上書きする。ある時点で、ソフトリセットが生じる。内部状態１５４は、削除される、例えば、ゼロで埋められる。メモリ１１０は、パワーダウンもパワーアップもされず、メモリ１１０の物理的特性に基づいた新しいランダム状態を含まなくなる。しかし、インスタンス化ユニット１５２は、新規シードの導出を開始すると、前回のパワーアップの時と比較してメモリ１１０内に異なるコンテンツを発見することになる。内部状態メモリ１５４は、異なる値を含むことになる。パワーサイクリングが発生しなくても、内部状態メモリ１５４がゼロで埋められていなくても、内部状態メモリ１５４はハードリセットされた場合に再シーディングされたような動作をする。ある時点でシステム１００がハードリセットした場合に、メモリ１１０は物理的特性に基づいた新しいランダム状態を含むことになる。したがって、システム１００がパワーダウンされている間に攻撃者がメモリ１１０から取得したいずれの情報も次のパワーアップ後のメモリ１１０のコンテンツに影響を与えることはない。
【０１０１】
内部状態メモリ１５４と生成ユニット１５６とは、協働してシードに完全に依存した乱数列を生成してもよい。インスタンス化ユニット１５２、内部状態メモリ１５４、および生成ユニット１５６は、ＮＩＳＴ規格のセクション８、９および１０に規定されている決定論的ランダムビット生成器（ＤＲＢＧ）としてもよい。あるいは、動作時に、内部状態に追加エントロピーが追加されてもよい。例えば、アプリケーションが乱数を要求する正確な時間が追加されてもよい。
【０１０２】
上書きユニット１５９は、上書きするために、生成ユニット１５６によって生成された乱数列の一部を使用してもよい。例えば、生成ユニット１５６によって生成された他の全ての乱数は、例えば、アプリケーション１６０への出力用に列の残りを上書きするために上書きユニット１５９によって使用される。さらに、上書きユニット１５９は、上書きするために、列の乱数以外の他の乱数を使用してもよい。
【０１０３】
例えば、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含んでもよい。例えば、内部状態メモリ１５４の内部状態の一部が、すなわち最初の１バイトが上書きユニット１５９によって使用されてもよい。例えば、乱数は内部状態メモリ１５４から導出されてもよい。例えば、上書きユニット１５９は、乱数が必要となる度に、内部状態メモリ１５４のコンテンツをハッシュしてもよい。好ましくは、上書きユニット１５９は、ハッシュする前に、内部状態メモリ１５４のコンテンツに固定ストリング、例えば、固定バイト０ｘ０４を連結させ、これにより、確実に上書きのために上書きユニット１５９によって使用される乱数はシステムによって出力される乱数との相関関係がなくなる。もしくは、上書きユニット１５９は、ＲａｎｄｏｍＶａｌｕｅｓ＝ｈ（ｉｎｔｅｒｎａｌ  ｓｔａｔｅ｜｜０ｘＡ０Ａ０Ａ０Ａ．．．）（ｈはハッシュ関数である）を使用してもよい。
【０１０４】
さらに、上書きユニット１５９は、次の内部状態またはその内部状態から導出される情報の事前演算を使用してもよい。
【０１０５】
特に、後者のオプションには、いくつか注目に値する利点がある。リセット信号が出された後、乱数生成器はリセットして、以前に出力されたいずれのデータとも無関係であるデータの出力を開始すべきである。疑似乱数出力ビットを生成する前に、次の内部状態値を事前演算して、それをメモリ１１０に記憶することによって、リセットが発生する時は常にＰＵＦメモリ内の値が出力の生成に使用されることはない（記憶されている状態情報は次のランダムビットの要求でのみ使用されることになるため）。したがって、確実なことに、状態情報が再利用されることはない。このことに関わらず、本発明の解決策により、依然として、ソフトリセット後にランダムな出力ビットの生成を続けることができる。ソフトリセット後、アルゴリズムは、ＰＵＦメモリ内の記憶されている状態を読み出すことによって継続して、新しいインスタンス化ステップを実行することができる。
【０１０６】
システム１００は、電子回路として、例えば、集積回路（ＩＣ）および／またはプログラマブルロジックとして実装されてもよい。プルグラマブルロジックは、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）、またはデジタルシグナルプロセッサ（ＤＳＰ）、マイクロプロセッサなどを備える。
【０１０７】
図２は、乱数生成システム２００を示す図である。システム２００は、システム１００の変形形態である。システム２００は、システム１００の要素全てに加えて、さらにいくつかの要素を有する。
【０１０８】
システム２００は、条件付けユニット１２０を備える。条件付けユニット１２０は、条件付けアルゴリズムによって構成される。条件付けアルゴリズムは、良好な拡散特性を有する圧縮関数である。例えば、条件付けアルゴリズムは、暗号学的ハッシュ関数として、ＣＢＣモードのブロック暗号として、または、例えば、ＮＩＳＴ規格のセクション１０．４に規定されている導出関数として実装されてもよい。条件付けユニット１２０の目的は、メモリ１１０内で発見されたエントロピーを小さいストリングに集中させることである。メモリ１１０のコンテンツのエントロピーが条件付けユニット１２０の出力サイズより大きい場合、条件付けユニット１２０の出力は最大エントロピーを有する。
【０１０９】
システム２００はさらに、追加エントロピーソース１１２を示す。追加エントロピーソース１１２は随意である。追加エントロピーソース１１２は、条件付けユニット１２０を使用してもよいが、独自の条件付けユニットを有してもよいし、または全くなくてもよい。追加エントロピーソース１１２は、クロック、または計測ユニット、例えばシーク時間を計測するためにハードドライブに取り付けられる計測ユニットとしてもよい。
【０１１０】
システム２００はさらに、識別装置１３０を備える。インスタンス化ユニット１５２は、識別装置１３０からストリングを受信するための追加入力で構成される。識別装置１３０は、システム２００の出力がランダムでない場合に、確実に少なくとも他の装置と異なるようにストリングを生成する。これは、パワーアップ、またはソフトリセットおよびハードリセットを含むリセット、または装置のシリアル番号などを計数する識別装置１３０のカウンタによって達成される。識別装置１３０は、オプションである。
【０１１１】
したがって、インスタンス化関数は、エントロピー入力を取得し、エントロピー入力をノンスおよび／またはパーソナライゼーションストリングと結合して、初期内部状態を生成することができるシードを作成してもよい。インスタンス化ユニット１５２は、シードを内部状態メモリ１５４に直接書き込んでもよいし、ＮＩＳＴ規格に示されるように、シードから内部状態を導出してもよい。
【０１１２】
システム２００は、非インスタンス化ユニット１５８を備えてもよい。装置をシャットダウンする、またはリセット状態にする信号を受信すると、非インスタンス化ユニット１５８は内部状態を削除する。例えば、非インスタンス化ユニット１５８は、リセット信号を受信すると、ゼロで内部状態メモリ１５４を上書きする。
【０１１３】
好ましくは、インスタンス化ユニット１５２、内部状態メモリ１５４、および生成ユニット１５６は共に決定論的乱数生成器を形成する。好ましくは、インスタンス化ユニット１５２、内部状態メモリ１５４、生成ユニット１５６、および非インスタンス化ユニット１５８は、ＮＩＳＴ規格に準拠している。
【０１１４】
例の実施として、２ＫＢのＳＲＡＭメモリまたは２ＫＢの大容量メモリのようなメモリ１１０を選択することができる。パワーアップ後にメモリコンテンツから導出されるシードは、２５６ビットになるように選択されてもよい。しかし、これらの数字は単なる例であり、実施形態とアプリケーションの目的によって決まる。メモリ１１０のサイズに対する多くの他の可能な選択肢のうち他の有効な値として、５１２バイト、１Ｋｂ、４Ｋｂなどがある。シードのサイズに対する多くの他の可能な選択肢のうち他の有効な値として、８０ビット、１２８ビット、５１２ビット、１０２４ビットなどがある。
【０１１５】
ＮＩＳＴ規格の付属書Ｃに記載されている方法を使用して、いわゆるＳＲＡＭの起動時の値の最小エントロピーを分析することによって、少なくとも２５６ビットの真性ランダムシードが２ＫＢのサイズのＳＲＡＭの起動時の測定値から導出できることが算出される。この真性ランダムシードは、内部状態メモリ１５４に記憶されて、生成ユニット１５６の入力としての機能を果たすことができる。インスタンス化ユニット１５２、内部状態メモリ１５４、および生成ユニット１５６は、ランダムビットストリームを生成するＤＲＢＧとしてもよい。ＳＲＡＭの再起動後、条件付けアルゴリズムにより、全く新しい真性ランダムシードがＳＲＡＭ起動データから確実に生成される。
【０１１６】
メモリ１１０のパワーアップコンテンツなどのＰＵＦ測定値のビットの一部のみにノイズがあるので、乱数を生成するエントロピーを含むことになる。条件付けアルゴリズムは、ＰＵＦ測定値からノイズ、すなわちエントロピーの全てまたは少なくとも殆どを抽出して、これを一定サイズの十分なエントロピーのビットストリングに変える。決定論的ランダムビット生成器（ＤＲＢＧ）で使用するためのこのような条件付けアルゴリズムの一例は、ＮＩＳＴ規格に規定されている。
【０１１７】
動作時に、メモリ１１０および追加エントロピーソース１１２はパワーアップされる。メモリ１１０および追加エントロピーソース１１２の出力は、エントロピーを抽出するために条件付けユニット１２０によって処理される。インスタンス化ユニット１５２は、抽出エントロピーを取り込み、随意で識別装置１３０から識別入力を取り込んでシードを作成する。条件付けユニット１２０およびインスタンス化ユニット１５２は、１つのハッシュアプリケーションおよび／または１つのユニットに統合されてもよい。
【０１１８】
内部状態メモリ１５４内の内部状態が事前に演算されて、メモリ１１０に記憶される場合、ソフトリセットの場合、条件付けユニット１２０の条件付けステップは省略されてもよい。
【０１１９】
図３は、システム２００のユニットの別の可能な配置方法である乱数生成システム３００を示す図である。システム３００では、既存のＮＩＳＴ規格に準拠したＤＲＢＧが本発明を使用するためにリトロフィットされている。決定論的乱数生成器１５０は、インスタンス化ユニット１５２、非インスタンス化ユニット１５８、内部状態メモリ１５４、および生成ユニット１５６を備える。決定論的乱数生成器１５０は、規格に準拠したＤＲＢＧ、例えば、ＮＩＳＴ規格に準拠したＤＲＢＧとしてもよい。場合により、決定論的乱数生成器１５０は、ブラックボックスとして、例えば集積回路として実装される。上書きユニット１５９は、他のアプリケーション（例えば、アプリケーション１６０）にも乱数を提供する同じ出力から乱数を受信するように構成される。場合により、条件付けユニット１２０は、インスタンス化ユニット１５２または決定論的乱数生成器１５０の一部である。
【０１２０】
この実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部である、またはその乱数列から導出される。
【０１２１】
図４は、システム２００のさらに別の変形形態である乱数生成システム４００を示す図である。システム４００は、非インスタンス化ユニット４１０を備え、この非インスタンス化ユニット４１０は非インスタンス化ユニット１５８および上書きユニット１５９を備える。非インスタンス化ユニット４１０は、リセット信号を受信するように構成される。非インスタンス化ユニット４１０は、リセット信号を受信すると、メモリ１１０と内部状態メモリ１５４の両方を上書きする。例えば、非インスタンス化ユニット４１０は、生成ユニット１５６を使用して、例えば、生成ユニット１５６に乱数を生成させ、次いで、内部状態メモリ１５４のコンテンツをメモリ１１０に書き込ませ、その後、内部状態メモリ１５４のコンテンツを削除させ、例えば、ゼロで上書きさせることで、内部状態を更新してもよい。
【０１２２】
図７ａは、列の乱数を生成して、内部状態メモリ１５４を更新する方法を示す図である。
【０１２３】
乱数生成システム、例えば、システム１００、２００、３００、または４００のうちのいずれか１つの動作時に、乱数の要求が受信される（７１０）。この要求は、一般には、乱数の要求数を示している。例えば、要求は、乱数生成システムに、例えば、生成ユニット１５６に受信されて、例えば４０個の乱数が必要であることを示すことができる。該要求を受信すると、生成ユニット１５６は、要求数の乱数を生成しようとする。
【０１２４】
次に、現在の内部状態から乱数を生成する（７２０）。生成ユニット１５６は、内部状態メモリ１５４から現在の内部状態を取得して、生成関数を適用して要求数の乱数を取得する、例えば、要求された通りに４０個の乱数が生成される。乱数が生成された後、生成関数１５６が内部状態を更新する。そのために、生成ユニット１５６は現在の内部状態から新規内部状態を導出する（７３０）。内部状態は、それまでに列のために生成された数の乱数を備えてもよい。すなわち、新規内部状態は、乱数の要求数によって決まる場合がある。
【０１２５】
生成ユニット１５６は、現在の内部状態に更新関数を適用することで、新規内部状態を導出してもよい。次いで、生成ユニット１５６は、新規内部状態を内部状態メモリ１５４に書き込む（７４０）。生成された乱数は、例えば、内部状態メモリの更新が終わるまでその乱数をバッファリングすることによって、その更新後に、出力されてもよい。また、生成された乱数は、生成後すぐに出力されてもよい。後者は、バッファリングを回避するので、ハードウェアの点では好ましい。例えば、各々の数は、特定の数が生成されるとすぐに出力されてもよい。
【０１２６】
上述したメモリ１１０を上書きする任意の方法は、この乱数生成方法と組み合わされてもよい。例えば、メモリ１１０の上書きは、出力された乱数を使用してもよい。メモリ１１０の上書きは、生成が開始される前に、例えば、シードが導出された後に、一度行われてもよいし、またはソフトリセット前のシャットダウンの時に一度行われてもよい。
【０１２７】
図７ｂは、図７ａに示された方法の有利な代替形態のフローチャートである。
【０１２８】
乱数生成システム、例えば、システム１００、２００、または４００のうちのいずれか１つの動作時に、乱数の要求が受信される（７１０）。この要求は、一般には、乱数の要求数を示している。例えば、要求は、乱数生成システムに、例えば、生成ユニット１５６に受信されて、例えば４０個の乱数が必要であることを示すことができる。該要求を受信すると、生成ユニット１５６は、要求数の乱数を生成しようとする。
【０１２９】
しかし、生成ユニット１５６は、要求数の乱数を生成する前に、現在の内部状態から新規内部状態を導出する（７３０）。これは、図７ａの乱数生成後に導出される必要がある新規内部状態と同じ新規内部状態である。特に、新規内部状態がそれまでに列のために生成された乱数の数によって決まる場合、更新関数が新規内部状態を導出し、この新規内部状態は要求数の乱数の生成後に演算される必要がある。
【０１３０】
次いで、新規内部状態は、メモリ１１０の上書きに使用される。例えば、新規内部状態は、メモリ１１０に書き込まれてもよい。さらに、新規内部状態に基づいたデータがメモリ１１０に書き込まれてもよい。例えば、ハッシュ、例えば、ｓｈａ−２５６が新規内部状態に適用されてもよく、その結果がメモリ１１０に書き込まれる。
【０１３１】
次に、現在の内部状態から要求された乱数を生成する（７２０）。乱数は、ちょうど演算された新規内部状態から取得されるのではなく、現在の内部状態から取得されることに留意されたい。生成ユニット１５６は、内部状態メモリ１５４から現在の内部状態を取得して、生成関数を適用して要求数の乱数を取得する、例えば、要求された通りに４０個の乱数が生成される。
【０１３２】
乱数が生成された後、生成関数１５６が内部状態を更新する。この更新は、すでに演算された新規内部状態を内部状態メモリに書き込むことによって行われてもよい。さらに、この更新は、再び新規内部状態を導出することによって行われてもよい。
【０１３３】
図７ｂに示されるように、内部状態を更新するステップと乱数の生成ステップとを組み合わせる方法は、ソフトリセット前の列の質に比べて、ソフトリセット後の乱数の質を保証することができるという利点がある。このように乱数の質を保証することができるのは、暗号技術において有利であると考えられる。
【０１３４】
一実施形態では、方法７ｂによって生成される乱数列は、行われる可能性のあるソフトリセットとは無関係である。これは、新規内部状態が導出され得るデータでメモリ１１０を上書きすることによって行われてもよい。例えば、新規内部状態自体をメモリ１１０に書き込むことによって、または暗号鍵で暗号化された内部状態をメモリ１１０に書き込むことによって行われてもよい。ソフトリセット後に、インスタンス化ユニット１５２に、ソフトリセットが発生したことを示す信号が送られる。次いで、インスタンス化ユニット１５２は、新規内部状態を取得して、それを内部状態メモリ１５４に書き込むことになる。このように、列は、ソフトリセットが発生しなかったかのように続くことになる。必要に応じて、インスタンス化ユニット１５２は、内部状態を取得するためにメモリ１１０内のデータを復号してもよい。
【０１３５】
暗号鍵は、図７ｂの方法を実装するデバイスのプログラムメモリに記憶されている固定鍵としてもよい。しかし、一実施形態では、暗号鍵は、ＰＵＦとして使用される揮発性の鍵メモリ、例えばメモリ１１０を備える大容量メモリの別の一部のパワーアップコンテンツから導出される。鍵メモリから導出された暗号鍵は、メモリ１１０に書き込まれる前に新規内部状態を暗号化するのに使用される。例えば、鍵メモリにはＰＵＦが使用されてもよく、暗号鍵はヘルパーデータを使用して導出されてもよい。このような鍵導出方法は、それ自体ＰＵＦの技術分野で既知である。
【０１３６】
インスタンス化ユニット１５２には、オペレーティングシステムによって以前のソフトリセットに関する信号が送られてもよい。あるいは、生成ユニット１５６が所定のストリングをメモリ１１０に書き込んで、インスタンス化ユニット１５２が所定のストリングの存在を検出することによってソフトリセットが発生したと結論付けてもよい。
【０１３７】
図５ａは、本発明によるスマートカード５００の概略上面図である。スマートカードは、集積回路５１０と、集積回路５１０を支承する一般にはプラスチック製のカード５０５とを備える。集積回路５１０のアーキテクチャは、図５ｂに概略的に示されている。回路５１０は、本発明による方法を実行するおよび／または本発明によるモジュールもしくはユニットを実装するためのコンピュータプログラムコンポーネントを実行する処理ユニット５２０、例えば、ＣＰＵを備える。回路５１０は、プログラミングコード、データ、暗号鍵、ヘルパーデータなどを記憶するメモリ５２２を備える。メモリ５２２の一部は、読み出し専用にしてもよい。メモリ５２２の一部は、安全性の高いメモリ、例えば、セキュリティ関連データ、例えば、鍵を記憶するヒューズメモリとしてもよい。回路５１０は、物理的複製不可能関数５２４を含む。物理的複製不可能関数５２４は、メモリ５２２と結合されてもよい。回路２１０は、通信要素５２６、例えば、アンテナ、コネクタパッド、またはその両方を備えてもよい。回路５１０、メモリ５２２、ＰＵＦ５２４、および通信要素５２６は、バス５３０を介して互いに接続されてもよい。カードは、アンテナおよび／またはコネクタパッドをそれぞれ使用して、接触通信および／または非接触通信するように設計されてもよい。スマートカードは、例えば、コンテンツへのアクセスを制御するためのセットトップボックス、電気通信網へのアクセスを制御するための携帯電話、公共交通機関へのアクセスを制御するための公共交通システム、銀行口座へのアクセスを制御するための銀行カードなどで使用されてもよい。
【０１３８】
例えば、メモリ５２２は、処理ユニット５２０によって実行するためのソフトウェアを備えてもよい。ソフトウェアが実行されると、コンピュータデバイスのモジュールの関数が実行される。ＰＵＦ５２４は、メモリ１１０を含んでもよい。
【０１３９】
図６は、本発明による方法６００をフローチャートで示した図である。本発明による方法は、書き込み可能、揮発性のメモリをパワーアップするステップ（６１０）と、メモリの一部から取得された少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングするステップ（６２０）と、シードに基づいて乱数列を生成するステップ（６３０）と、シードに基づいて生成された乱数でメモリの少なくとも一部を上書きするステップ（６４０）とを含む。当業者には明らかであるように、本発明による方法を実行する多くのさまざまな方法が可能である。例えば、ステップの順序を変更してもよく、いくつかのステップは並行して実行されてもよい。さらに、ステップとステップの間に、他の方法ステップを挿入してもよい。挿入されるステップは、本明細書で示される方法を改良するステップとしてもよいし、または本発明による方法に無関係のステップとしてもよい。例えば、ステップ６３０とステップ６４０とは、少なくとも部分的に並行して実行されてもよい。さらに、所定のステップは、次のステップが開始される前に完全に終了していなくてもよい。
【０１４０】
本発明による方法は、プロセッサシステムに方法６００を実行させる命令を含むソフトウェアを使用して実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって実行されるステップのみを含んでもよい。ソフトウェアは、適切な記憶媒体、例えば、ハードディスク、フロッピー（登録商標）、メモリなどに記憶されてもよい。ソフトウェアは、ワイヤもしくはワイヤレスで、またはデータネットワーク、例えばインターネットを使用して、信号として送信されてもよい。ソフトウェアは、サーバでのダウンロード用および／または遠隔使用のために利用できるものとしてもよい。
【０１４１】
当然、本発明の範囲は、コンピュータプログラム、特に、本発明を実現するのに適した担体上もしくは担体内のコンピュータプログラムにも及ぶ。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形などのソースとオブジェクトとの中間のコードの形式、または本発明による方法の実装に使用するのに適した任意の他の形式にしてもよい。コンピュータプログラムは、組み込みプロセッサの中に含まれてもよい。当然、このようなプログラムは、多くのさまざまなアーキテクチャデザインを有してもよい。例えば、本発明による方法またはシステムの機能性を実装するプログラムコードは、１つまたは複数のサブルーチンに細分されてもよい。これらのサブルーチンの中で機能性を分散する多くの異なる方法は、当業者には明らかであろう。サブルーチンは、１つの実行ファイルにまとめて記憶されて、自己完結型のプログラムを形成する。このような実行ファイルは、コンピュータ実行可能命令、例えば、プロセッサ命令および／またはインタプリタ命令（例えば、Ｊａｖａ（登録商標）インタプリタ命令）を含んでもよい。あるいは、サブルーチンの１つまたは複数もしくは全てが少なくとも１つの外部ライブラリファイルに記憶されて、例えば、ランタイムに、静的もしくは動的のいずれかでメインプログラムとリンクされてもよい。メインプログラムは、サブルーチンのうちの少なくとも１つへの呼び出しを少なくとも１つ含む。さらに、サブルーチンは、互いに対する関数呼び出しを含んでもよい。コンピュータプログラム製品に関する一実施形態は、上述した方法の少なくとも１つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよいし、および／または静的もしくは動的にリンク可能な１つまたは複数のファイルに記憶されてもよい。コンピュータプログラムに関する別の実施形態は、上述したシステムおよび／または製品の少なくとも１つの手段の各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよいし、および／または静的もしくは動的にリンク可能な１つまたは複数のファイルに記憶されてもよい。
【０１４２】
コンピュータプログラムの担体は、プログラムを担持することが可能な任意のエンティティまたはデバイスとしてもよい。例えば、担体は、例えば、ＣＤ  ＲＯＭもしくは半導体ＲＯＭなどのＲＯＭ、または、例えば、フロッピーディスクもしくはハードディスクなどの磁気記録媒体のような記憶媒体を含んでもよい。さらに、担体は、電気ケーブルもしくは光ケーブルを介して、または無線手段もしくは他の手段を使用して搬送される電気信号または光信号などの伝達性担体としてもよい。プログラムがこのような信号に組み込まれる場合、担体はこのようなケーブルまたは他の装置もしくは他の手段によって構成されてもよい。あるいは、担体は、プログラムが組み込まれる集積回路であって、当該方法を実行するのに適した、または当該方法の実行時の使用に適した集積回路としてもよい。
【０１４３】
上述の実施形態は、本発明を制限するというよりは例示するものであり、当業者は添付の請求項の範囲から逸脱せずに、多くの代替実施形態を設計することが可能であることに留意すべきである。請求項では、括弧内の符号は、請求項を制限するものと解釈されるべきではない。動詞「備える（ｃｏｍｐｒｉｓｅ）」およびその活用を使用するのは、請求項で示された要素またはステップ以外の要素およびステップの存在を除外するものではない。要素の前の冠詞「１つの（ａ、ａｎ）」は、このような要素の複数の存在を除外するものではない。本発明は、互いに異なる複数の要素を備えるハードウェアを使用して、また適切にプログラムされたコンピュータを使用して実施されてもよい。複数の手段を列挙する装置クレームでは、これらの複数の手段は、ハードウェアの全く同一のアイテムによって具現化されてもよい。特定の方策が互いに異なる従属クレームで示されているのは、これらの方策の組み合わせの使用が有利でないことを示すものではない。
【符号の説明】
【０１４４】
１００  乱数生成システム
１１０  メモリ
１１２  追加エントロピーソース
１２０  条件付けユニット
１３０  識別装置
１５０  決定論的乱数生成器
１５２  インスタンス化ユニット
１５４  内部状態メモリ
１５６  生成ユニット
１５８  非インスタンス化ユニット
１５９  上書きユニット
１６０  アプリケーション
２００，３００，４００  乱数生成システム
４１０  非インスタンス化ユニット
５００  スマートカード
５１０  集積回路
５０５  カード
５２０  処理ユニット
５２２  メモリ
５２４  物理的複製不可能関数
５２６  通信要素
５３０  バス
５４０  スマートカード
６００  フローチャート
６１０  書き込み可能、揮発性のメモリをパワーアップする
６２０  メモリの一部から取得された少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングする
６３０  シードに基づいて乱数列を生成する
６４０  シードに基づいて生成された乱数でメモリの少なくとも一部を上書きする
７１０  要求を受信する
７２０  現在の内部状態から乱数を生成する
７３０  現在の内部状態から新規内部状態を導出する
７４０  新規内部状態を内部状態メモリに書き込む
７５０  新規内部状態を使用してメモリを上書きする
【図１】
2014510354.tif 000003
【図２】
2014510354.tif 000004
【図３】
2014510354.tif 000005
【図４】
2014510354.tif 000006
【図５ａ】
2014510354.tif 000007
【図５ｂ】
2014510354.tif 000008
【図６】
2014510354.tif 000009
【図７ａ】
2014510354.tif 000010
【図７ｂ】
2014510354.tif 000011
【国際調査報告】
2014510354.tif 000012
2014510354.tif 000013
2014510354.tif 000014