JP6182132B2 - メモリスタートアップ時のノイズに基づいた乱数生成システム - Google Patents

メモリスタートアップ時のノイズに基づいた乱数生成システム Download PDF

Info

Publication number
JP6182132B2
JP6182132B2 JP2014503151A JP2014503151A JP6182132B2 JP 6182132 B2 JP6182132 B2 JP 6182132B2 JP 2014503151 A JP2014503151 A JP 2014503151A JP 2014503151 A JP2014503151 A JP 2014503151A JP 6182132 B2 JP6182132 B2 JP 6182132B2
Authority
JP
Japan
Prior art keywords
random number
memory
internal state
generation system
random
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014503151A
Other languages
English (en)
Other versions
JP2014510354A (ja
Inventor
フアン・デル・スライス,エリツク
スフレイエン,ヘールト・ヤン
アンドシユー,エレナ
Original Assignee
イントリンシツク・イー・デー・ベー・ベー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イントリンシツク・イー・デー・ベー・ベー filed Critical イントリンシツク・イー・デー・ベー・ベー
Publication of JP2014510354A publication Critical patent/JP2014510354A/ja
Application granted granted Critical
Publication of JP6182132B2 publication Critical patent/JP6182132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)

Description

本発明は、乱数列を生成するための乱数生成システムに関する。
乱数生成は、例えば、モンテカルロ法のシミュレーション、例えば、ギャンブル用のスペクトル拡散周波数を選択するための電気通信システムなど、広くさまざまな分野で使用されている。これらの分野全てで、使用される乱数の質が重要であるが、特に、暗号技術の分野ではその質が重要である。
暗号技術の分野では、乱数は多くの目的に使用され、多くの場合、暗号システムのセキュリティは乱数の質で決まる。例えば、鍵生成周波数は、しばしば乱数ソースを採用する。暗号技術の野における乱数の他の用途として、初期化ベクトルとして、例えば、CBCモードで実行するブロック暗号用の初期化ベクトルとして、ノンスの生成、チャレンジレスポンスプロトコルで使用するチャレンジの生成が挙げられる。
他のセキュリティ用途でも同様に乱数を採用する場合があり、例えば、サイドチャネル解析対策はブラインド化乱数によって秘密情報のブラインド化を採用する場合もある。
これらの用途では、乱数が十分にランダムでない場合、乱数が使用されている暗号アプリケーションのセキュリティのレベルを低下させてしまう。
乱数列は、予測不可能であるのが好ましい。したがって、攻撃者は、偶然ではなくこれまで生成された乱数列を予測することはできない。同様に、乱数列を確実に再現することも不可能である。乱数列が生成された後に、再びその乱数列を生成することは不可能である。
予測不可能な列に対して、アプリケーションのセキュリティ要求を考えると、列を生成するハードウェアのアルゴリズムおよび以前に生成されたビットの全てを熟知していても、次のランダムビットが何になるかを予測することは不可能である。
真性乱数列はこれらの特性の全てを有するが、これらの特性は適切にランダムなシードがあれば決定論的乱数列からも得られる。
乱数生成器が生成するオブジェクトは、さまざまな方法で、一般には所定の範囲の数値、文字、ビットなどとして解釈されてもよい。ビット列は数値列にマッピングされてもよいし、その逆もまた同様のことが言える。用語「ランダムビット生成器」も使用され、0と1のランダムな整数を生成させる乱数生成器と考えられる。ランダムビット生成器に適用できるものは、必要な変更を加えて乱数生成器にも適用でき、その逆も同様のことが言える。
ランダムビット生成器(RBG)は、2つのクラスに細分されてもよい。一方のクラスの乱数生成器は、非決定論的にビットを生成し、いずれの出力ビットも予測不可能な物理的プロセスに基づいている。これらのランダムビット生成器は、通常、非決定論的ランダムビット生成器(NRBG)として周知である。他方のクラスの乱数生成器は、アルゴリズムを使用して決定論的にビットを演算する。このクラスのRBGは、決定論的ランダムビット生成器(DRBG)として周知である。NRBGは、真性乱数生成器とも呼ばれる。DRBGは、疑似乱数生成器とも呼ばれる。
決定論的ランダムビット生成器は、一般には、シードによって起動される。シードは、有限数列、例えば、決定論的乱数生成器への入力として使用されるビットストリングのことである。シードは、生成器の内部状態の全てもしくは一部分を決定するものである。シードのエントロピーは、DRBGのセキュリティ要件をサポートするのに十分でなければならない。シードは、真性乱数生成器から取得してもよい。
さらに決定論的ランダムビット生成器については、NIST Special Publication 800−90、「Recommendation for Random Number Generation Using Deterministic Random Bit Generators」(2007年3月)に詳細に記載されている。この文献をNIST規格と呼ぶことにする。
ほとんどの真性乱数生成器は、ランダム過程として熱雑音を使用するものである。例えば、集積回路内の熱雑音は、平衡状態の導体に見られる小さい電圧変動を表している。ランダム性の他の原因として、放射性物質の崩壊、量子力学プロセス、自励発振器の周波数の不安定性などが挙げられる。
真性乱数の別のソースは、「Power−up SRAM State as an Identifying Fingerprint and Source of True Random Numbers」(D.Holcomb、W.Burleson、K.Fu、IEEE Transactions on Computers、2009年)に記載されている。この論文には、SRAMがパワーアップされるとSRAMのメモリコンテンツは部分的にランダムになるので、真性乱数生成器としてSRAMが使用できるということが記載されている。
NIST Special Publication 800−90、「Recommendation for Random Number Generation Using Deterministic Random Bit Generators」(2007年3月) 「Power−up SRAM State as an Identifying Fingerprint and Source of True Random Numbers」(D.Holcomb、W.Burleson、K.Fu、IEEE Transactions on Computers、2009年)
Holcomb他による真性乱数生成器にはいくつかの不利点がある。メモリは固定サイズであるので、メモリから生成されるランダム性の程度は制限される。実際に、一般には、メモリは十分にランダムになることはないので、メモリコンテンツは条件付けされ、その結果、起動から取得されるランダムビット数は大幅に低減する。したがって、Holcomb他の設計は、ほとんどの実際の用途には適さなくなる。
さらに、使用されるメモリがコンピュータに組み込まれている場合には、さらに不利点がある。コンピュータのソフトリセットを行う場合、メモリのコンテンツは変更されない。メモリのコンテンツが真にランダムであると期待するアプリケーションは、二回目も同じ乱数を使用するであろう。暗号アプリケーションの場合、このことがシステムのセキュリティを大きく損なう恐れがある。さらに、再現不可能性の前提が崩れるので、他の乱数の用途にも支障を来す。
本発明による乱数列を生成するための乱数生成システムは、上述の不利点を克服する、もしくは軽減する。乱数生成システムは、メモリを備える。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。乱数生成システムはさらに、少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成されたインスタンス化ユニットを備える。乱数列は、シードに基づいて生成される。乱数生成システムはさらに、シードに基づいて乱数生成システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成された上書きユニットを備える。
メモリのコンテンツは、シードを生成するのに使用される。乱数列はシードに基づいて生成されるので、原則として、生成される乱数の量に制限はない。安全に生成される最大数の乱数を組み込む乱数生成スキームが使用されても、この数は、一般には、1回のメモリのパワーアップによって得られるランダム性の程度をはるかに上回る。
乱数生成システムを含むデバイスのソフトリセットの時には、メモリへの電力供給は中断されない。メモリがパワーアップされる度に(例えば、ハードリセット時に)、メモリは、新規な少なくとも部分的にランダムなメモリコンテンツを生成するが、この効果は、メモリが再びパワーアップされないソフトリセットの時には発生しない。しかし、通常、ハードリセット時にランダムなコンテンツが現れるメモリは乱数で上書きされるので、この問題は解決される。
ソフトリセットもしくはハードリセットの後に、乱数生成システムによって生成された乱数列は、ランダム性が劣るものではない。特に、ソフトリセット後に乱数生成システムによって作成された乱数は、メモリの前回のパワーアップ後に作成された乱数と同じではない。アプリケーションは、乱数の質に依存する場合がある。
強調すべきは、Holcombに開示されている設計と比較して、本発明は少なくとも2つの利点を有するということである。Holcombでは、メモリから導出される乱数の数は、メモリサイズのごくわずかな割合に制限されるので少ない。しかし、本発明では、乱数は、乱数生成システムを使用して、例えば、シードに基づいた決定論的乱数生成器を使用して、間接的にメモリから導出されるので、生成される乱数の数は上述したように制限されない。さらに、本発明では、乱数の質はソフトリセット後に低下することはないが、Holcombでは、ソフトリセット後に生成された乱数は、前回のリセット後に生成された乱数と全く等しくなる。
乱数列は、ビット列としてもよい。乱数は、例えば、0〜255の範囲の数字のバイト、または単語、または任意の他の適切な形にしてもよい。乱数は、文字などで表現されてもよい。乱数列は、乱数生成システムに含まれる出力に配置されてもよい。乱数生成システムは、乱数列の次の乱数を要求することができるAPIを備え、このAPIに基づいて乱数生成システムはその乱数を供給する。
メモリは、乱数によって上書きできるように書き込み可能である。メモリは揮発性であるので、乱数によるメモリの上書きは、ハードリセット後のメモリコンテンツに影響を及ぼすことはない。ハードリセット後には、メモリのパワーアップ後、メモリは新規な少なくとも部分的にランダムなメモリコンテンツを含む。この点は、メモリがパワーアップされた状態が維持されれば、メモリが途中でパワーダウンされる場合よりメモリへの不正アクセスがずっと難しくなるので、有利である。メモリは、独立型メモリにしてもよいが、大容量のメモリの一部としてもよい。例えば、メモリは、1つが大容量SRAMの2kbブロックの1つまたは複数のブロックとしてもよい。
大容量メモリの別の部分は、他の目的、例えば一時的なストレージに割り当てられてもよい。
上書きユニットがメモリの個々の場所を上書きする必要はないというのが本発明者の見解であった。上書きされたメモリの全エントロピーが、乱数列を使用するアプリケーションに必要なセキュリティ要求より小さくない限り、全メモリ量より少ない量を上書きすることによってオーバーヘッドを低減することができる。
ランダムなデータ以外に、他のランダムでないデータがメモリに書き込まれ得る。例えば、必ずしもランダムでない乱数生成システムの内部状態の要素、例えば、リシードカウンタがメモリに書き込まれてもよい。このことにより、ソフトリセット後にこれらの要素を回復することができる。リシードカウンタは、NIST規格に示されている。
揮発性ストレージとしても知られている揮発性メモリは、電力供給が維持される必要がない不揮発性メモリとは異なり、記憶情報を維持するのに電力が必要なコンピュータメモリである。
インスタンス化ユニットは、複数のソースからシードを導出することができる。一実施形態では、乱数生成システムは、エントロピーソースを備える。エントロピーソースは、メモリを備える。インスタンス化ユニットは、エントロピーソースからシードを導出する。エントロピーソースは、メモリ以外に、他のエントロピーソースを含んでもよい。例えば、エントロピーソースは、エントロピーソースとして使用されるクロックを含んでもよい。エントロピーソースは、予測不可能なデータのソースである。エントロピーソースは、必ずしも一様分布にする必要はない。インスタンス化ユニットは、NIST規格に従ったインスタンス化ユニットにしてもよいが、必ずしもこれに限らない。インスタンス化ユニットは、乱数の生成を開始するためのシードを作成する。
パワーアップ時のメモリのコンテンツは十分にランダムである必要はなく、またその分布が一様である必要もない。パワーアップ時のメモリコンテンツのエントロピーは、少なくともシードと同じだけ大きいことが好ましい。しかし、パワーアップ時のメモリコンテンツのエントロピーがシードより小さい場合でも、本発明は機能し、ソフトリセット後の乱数列の質も依然として改善される。コンテンツの個々の要素、すなわち、個々のビットもしくはバイトが同様にランダムである必要はなく、実際に、いくつかの個々の要素は全くランダムでない場合もある。
一実施形態では、インスタンス化ユニットは、内部エントロピープールのシード、一般には、内部状態の一部を記憶するように構成される。エントロピープールは、乱数生成システムの内部メモリに記憶されてもよい。乱数列は、内部エントロピープールに基づいて生成される。エントロピープールは、乱数列を生成した結果、変更されてもよいが、これは必須ではない。例えば、シードは、カウンタを使用して連結されてもよく、ハッシュを使用して、好ましくは、暗号技術上強いハッシュ、例えば、sha−256を使用して、ハッシュ化される。ハッシュの出力の全てもしくは一部は、乱数列の一部として使用される。
メモリコンテンツが十分にランダムである必要はない。メモリコンテンツは、理論的なシャノン最大エントロピーよりも小さいエントロピーを有してもよい。一実施形態では、乱数生成システムは、メモリコンテンツのエントロピーをメモリコンテンツのビット長より短いビット長を有するストリングに圧縮する条件付けユニットを備え、インスタンス化ユニットは、ストリングに基づいたシードを使用して乱数生成システムをシーディングするように構成される。
条件付けユニットは、条件関数を実行するのが好ましい。条件付けユニットは、エントロピーソースの一部としてもよいが、これに限らない。条件関数を含むまたはエントロピーソースの出力において条件付けが行われるエントロピーソースは、条件付きエントロピーソースとも呼ばれる場合がある。条件関数により、確実に条件付きエントロピーソースが十分なエントロピーのビットストリングを提供することができる。
一実施形態では、乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備える。例えば、生成ユニットは、列の乱数を作成するために内部状態に生成関数を適用し、内部状態を更新するために更新関数を適用するように構成されてもよい。生成ユニットは、内部状態メモリに新規内部状態を書き込むことによって、内部状態を更新してもよい。インスタンス化ユニットは、内部状態メモリに書き込むように、例えば、シードを書き込むように構成される。さらに、インスタンス化ユニットは、例えば、シードの長さを長くするためにシード上でさらなる処理を行い、さらなる処理の結果を内部状態メモリに書き込んでもよい。現在の内部状態および新規内部状態を含む内部状態は、所定の内部状態サイズ以下のビット長を有する。
一実施形態では、上書きユニットは、乱数列の生成の期間中、乱数でメモリの一部を上書きするように構成される。これには、いくつかの利点がある。この実施形態では、メモリコンテンツはソフトリセット後に適切にランダムになるので、上書きユニットは、リセットの場合に必ずしもリセット信号を受信する必要はない。また、ソフトリセットの場合に上書きユニットがリセット信号を受信したとしても、ソフトリセットが実行される前にメモリを上書きすることによって引き起こされる時間遅延が全くない。
さらに、セキュリティ上の利点もある。攻撃者がある時点で、ソフトリセット後にエントロピーソースとして使用されるメモリへの書き込みアクセス権を取得してしまった場合に、攻撃者がソフトリセット後の列のランダム性を低下させることができる可能性がある。しかし、メモリが継続的に更新されれば、この潜在的脅威は低減される。攻撃者には知られていない追加のエントロピーがすぐにメモリに書き込まれるからである。例えば、上書きユニットは、一連の所定の時間間隔の各経過時間内で、もしくは所定数のサイクル、例えば、中央処理装置のサイクル、つまりクロックサイクルが発生した後に、乱数を書き込むように構成されてもよい。
一実施形態では、上書きユニットは、シードに基づいて乱数生成システムによって生成された乱数を、乱数列の所定数の乱数が生成される都度、メモリに書き込むように構成される。例えば、乱数は、乱数が列に生成される度に、メモリの一部に書き込まれてもよい。
一実施形態では、上書きユニットは、シードに基づいて乱数生成システムによって生成された乱数を、乱数生成システムがアプリケーションから一定量のランダムなバイトの要求を受信した後に、メモリに書き込むように構成される。
一実施形態では、上書きユニットは、乱数生成システムがリセット信号を受信した時点で、シードに基づいて乱数生成システムによって生成された乱数でメモリを上書きするように構成される。特に、上書きユニットは、リセット信号を受信してもよい。
リセット信号の受信後にメモリを上書きすることは、徐々に上書きするのに費やす合計時間に比べて、上書きが迅速に行われるという利点がある。パフォーマンスが重要なアプリケーションの場合、通常の動作時の必須でないステップを最小限に減らすようにして、さらに、シャットダウン時に、例えば、ソフトリセット時に、より多くの時間が利用できるようにするのが好ましい。シャットダウン時、ソフトリセット時の上書きは、通常の動作時に生じるメモリへの攻撃の可能性に対処することができるという利点もある。あるいは、メモリの一部は、シードを導出した後に、例えば、初期設定の一部として、完全に上書きされてもよい。
リセット信号は、まず乱数生成システムによって受信され、その後、乱数生成システムが上書きユニットに上書きを開始するように信号を送る。
一実施形態では、メモリの少なくとも一部のビットサイズは、少なくともシードのビットサイズと同じである。これは、ソフトリセット後のメモリコンテンツから生成されるシードは、理想的に、ソフトリセット前に生成された乱数列のエントロピーに等しいエントロピーを有するという利点がある。起動関数、条件付け関数、生成関数などのうちの1つが、理論上最適とは言えない状態、すなわち、完全にエントロピーが保存された状態とは言えない状態で機能したとしても、ソフトリセット後の乱数列の質はソフトリセット前の乱数列の質にほぼ等しいと言える。
一方、オーバーヘッドを低減するために、全メモリ量未満を上書きしてもよい。一実施形態では、メモリの少なくとも一部のビットサイズは、シードのビットサイズに等しい。エントロピーの観点から見ると、完全に上書きされたメモリは最大でもシードのエントロピーと同程度のエントロピーを含むので、わずかにエントロピーの損失が生じるであろう。
これらの関数の可能性のある不完全性を補い、エントロピー損失を防ぐために、より多く上書きすることができる。例えば、乱数生成器の内部状態のビットと同じ数のランダムビットを上書きすることができる。例えば、一実施形態では、乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備え、メモリの少なくとも一部のビットサイズは、少なくとも内部状態のビットサイズと同じ大きさである。
しかし、さらにオーバーヘッドを低減するために、追加のビット量を、例えば内部状態のビットサイズの2倍未満、好ましくは、内部状態のビットサイズ以下に低減することができる。
メモリの少なくとも一部のビットサイズを内部状態のビットサイズに等しいサイズに選択することは、ライトバックされる量が内部状態のデータ量以上であるので、メモリの上書きの時にエントロピーの損失が全くないことをより簡単に証明することができるという利点がある。それと同時に、オーバーヘッドが最小限まで低減される。
メモリの一部を上書きするのに使用される乱数は、さまざまなソースから取得されてもよい。一実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部である。この手法の利点は、列用の乱数と上書き用の乱数の2つストリームを作成するのに、良好な乱数を作成する設計努力を繰り返す必要がないということである。
列で生成された乱数は、メモリの上書きに再利用される、すなわち、乱数は何らかのアプリケーションでの使用のために出力され、かつ、メモリに書き込まれる。次に初期化ステップが続くので、必ずしもソフトリセット後にこれらの値を再利用するとは限らない。しかし、別の実施形態では、列内の一部の数字は、メモリの上書きまたはアプリケーションへの出力のために使用されるが、これら両方を行うために使用されない。
上書きのために乱数列の一部を使用する代わりに、その目的のために特別に列を生成することも可能である。これには、アプリケーションで認められるランダムストリームはメモリ検査(可能である場合)によって認められたランダムストリームと相関関係がないという利点がある。しかし、これには、2つのストリームを生成する必要がある。
一実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含む。これには、上書き用乱数と出力用乱数には、同じストリームからの数字が使用された場合に比べて少なくとも相関性が低いという利点がある。しかし、追加の計算オーバーヘッドが生じない。
一実施形態では、本発明による乱数生成システムは、内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備え、生成ユニットは、現在の内部状態から乱数列の乱数を生成する前に、現在の内部状態から新規内部状態を導出するように構成され、上書きユニットは、現在の内部状態から乱数列の乱数を生成する前に、新規内部状態から導出された乱数でメモリの少なくとも一部を上書きするように構成される。
新規内部状態を事前に演算して、現在の状態を使用して、列内の次の乱数を生成する前に、メモリを上書きするのに新規内部状態を使用することによって、リセットがいつ発生しても、出力を生成するためにメモリ内の値が使用されることはないと言える。したがって、確実に状態情報が再利用されることはない。このことにも関わらず、本発明の解決策により、ソフトリセット後にランダムな出力ビットの生成を続けることができる。インスタンス化アルゴリズムは、リセット後の再開時に、メモリからの上書きに使用される内部状態を内部状態メモリにコピーするように構成される。
一実施形態では、乱数列は、完全にシードに依存している。シードを導出することは別にして、乱数生成器は決定論的乱数生成器である。決定論的乱数生成器は、一般には、より大きなスループットを有する。メモリ内の起動時のノイズからランダム性を導出する場合、真にランダムなシード生成とシードからの決定論的な列生成とを分離することにより、より多くの乱数を生成することができる。一実施形態では、乱数列は、完全に内部状態に依存している。
メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツをメモリの一部が含むように構成される任意のタイプの揮発性の書き込み可能なメモリを本発明に使用してもよい。特に適しているのは、SRAMメモリ、フリップフロップ、およびラッチである。例えば、フリップフロップの列をパワーアップ後に読み出してもよい。メモリとしてバスキーパーまたはバスキーパー群、それと共にバスキーパーに値を書き込むように構成された回路を使用することもできる。
SRAMおよびフリップフロップは、物理的複製不可能関数(PUF)を生成するのにも使用される。このような用途では、パワーアップ時の値がさまざまなパワーアップにわたって十分持続される限り、一定のランダム性は容認される。しかし、本発明では、起動後に極めてランダムなメモリも使用される。
揮発性の書き込み可能なメモリの別の選択肢として、DRAMがある。
乱数生成システムは、電気メモリを備えた電気式乱数生成システムとしてもよい。さらに、インスタンス化ユニットおよび上書きユニットも電気式であるのが好ましい。本発明による乱数生成システムはさらに、電子機器、特に、携帯電話、セットトップボックス、コンピュータなどの移動式電子機器に含まれてもよい。本発明の別の態様は、本発明による乱数生成システムを備えるスマートカードに関する。
本発明のさらに別の態様は、本発明による乱数生成システムを備える電子暗号装置である。例えば、電子暗号装置は、本発明による乱数生成システムを使用して、ノンス、チャレンジレスポンスプロトコルに使用するためのチャレンジ、例えば、CBCモードで実行するブロック暗号用初期化ベクトルのような初期化ベクトル、ブラインド化乱数、暗号鍵、例えば、対称鍵、非対称鍵、セッション鍵の任意の1つを生成するように構成されてもよい。
本発明のさらに別の態様は、乱数列を生成する方法に関する。該方法は、揮発性の書き込み可能なメモリであって、メモリの一部が、パワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成されたメモリをパワーアップするステップと、少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングするステップと、シードに基づいて乱数列を生成するステップと、シードに基づいて生成された乱数でメモリの少なくとも一部を上書きするステップとを含む。
本発明による乱数生成システムは、有利には、携帯電話、スマートカードリーダ、スマートフォン、組み込み装置、RFIDタグ、POS端末装置、VOIP電話、タブレット、セキュリティモジュール、TPMモジュール、MTMモジュール、ネットワークルータ、PC、ラップトップに含まれてもよい。
本発明の乱数生成システムを上述の電子機器などの電子機器に組み込むのは、電子メモリ、好ましくは、SRAMメモリ、インスタンス化ユニット、メモリを管理する装置を組み込むことで実現可能である。
本発明による方法は、コンピュータ実装方法としてコンピュータに実装されてもよいし、専用のハードウェアに実装されてもよいし、これら両方の組み合わせに実装されてもよい。本発明による方法の実行可能コードが、コンピュータプログラム製品に記憶されてもよい。コンピュータプログラム製品の例として、メモリデバイス、光学式記憶装置、集積回路、サーバ、オンラインソフトウェアなどがある。
好適な実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行される時に、本発明による方法の全てのステップを実行するように適合されたコンピュータプログラムコード手段を備える。好ましくは、コンピュータプログラムは、コンピュータ可読媒体上で具現化される。
本発明の特筆すべき面は、初めはセキュリティ用に設計されていなかった装置がセキュリティ機能をリトロフィットすることができるということである。特に、乱数生成装置のない装置でも、依然として安全な方法で乱数を生成する構成にすることができる。
したがって、本発明の一態様は、コンピュータソフトウェア命令を実行するプロセッサとメモリとを備えた装置に関する。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。該装置は、本発明によるインスタンス化ユニットおよび上書きユニットを実装するように構成されたコンピュータソフトウェア命令を含む追加メモリを備える。例えば、プロセッサは、マイクロコントローラ、例えば、8051プロセッサとしてもよい。例えば、ソフトウェアは、本発明によるソフトウェアとしてもよい。
本発明の一態様は、コンピュータソフトウェア命令を実行するプロセッサとメモリとを備えた装置をリトロフィットする方法に関する。メモリは、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。該装置は、コンピュータソフトウェア命令を含む追加メモリを備える。リトロフィットする方法は、本発明によるソフトウェアを追加メモリにインストールするステップを含む。
一例として、添付図面を参照しながら、本発明をより詳細に説明する。
図面全体にわたって、同様または一致する機能は、同じ参照番号で示されている。
本発明による一実施形態の概略図である。 本発明による一実施形態の概略図である。 本発明による一実施形態の概略図である。 本発明による一実施形態の概略図である。 スマートカードの図である。 スマートカードの概略図である。 本発明による方法を示したフローチャートである。 本発明による方法を示したフローチャートである。 本発明の方法を示したフローチャートである。
本発明は、多くのさまざまな形式の実施形態が可能であるが、本開示は本発明の原理の例にすぎないと考えるべきであって、本発明を図示および説明されている特定の実施形態に限定するものではないという理解のもとに、1つまたは複数の特定の実施形態を図示し、本明細書で詳細に説明する。
図1は、乱数生成システム100を示す図である。システム100は、メモリ110を備える。メモリ110は、書き込み可能かつ揮発性であり、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むように構成される。メモリ110は、大容量メモリの一部としてもよい。この場合、メモリ110は、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むメモリの一部であり、インスタンス化ユニット152によって使用されるメモリのことである。
以下に、メモリ110のいくつかの可能な選択肢の概要を示す。メモリ110は、スタティックランダムアクセスメモリ(SRAM)としてもよい。SRAMは、パワーアップ後に、オンビットとオフビット(1のビットと0のビットとも呼ばれる)のランダムパターンで満たされる。SRAMがこの次にパワーアップされればランダムパターンはある程度まで繰り返されることになるが、エントロピーソースとしての機能を果たすために次のSRAMのパワーアップとの間に十分な差異が生じる。
メモリ110は、メモリ素子群としてもよい。適切な揮発性メモリ素子は、フリップフロップおよびラッチを含む。メモリ素子(例えば、集積回路に含まれてもよい)は、起動時に、乱数値で満たされる。乱数値は、メモリ素子が製造される間の生成プロセスにおける明確なばらつきによって決まる。メモリ素子を構成する種々のコンポーネントの構造をわずかに変更することで、乱数値を変更することができる。
さらに、特定のメモリ素子のどのコンテンツがパワーアップするかを予測することは不可能である。これらのメモリ素子の一部はほぼ確実に再現するが、他のメモリ素子は高度のランダム性を示すことになる。メモリ110として、メモリ素子群が使用されてもよい。
生産時の不可避のばらつきにより、例えば、ディープサブミクロンのプロセスばらつきにより、互いに対するSRAMのコンポーネントの挙動は少なくともわずかにランダムになる。これらのばらつきは、例えば、SRAMのメモリセル内のトランジスタのわずかに異なる閾値電圧に反映される。SRAMが、例えば、書き込み動作の前に、未定義状態で読み出される場合、SRAMの出力はランダム構成によって決まる。
トランジスタの閾値電圧のバランスが取れたSRAMセルは、プロセスばらつきにより閾値電圧がわずかにアンバランスであるセルに比べて、ランダムな起動動作をしやすい。
メモリ110は、いわゆる物理的複製不可能関数(PUF)としてもよい。この場合、パワーアップ後のメモリ110のコンテンツは、例えば、ヘルパーデータアプリケーションを使用して、固有のストリングを導出するのに使用してもよい。ヘルパーデータは、メモリのパワーアップの度に少なくとも部分的にランダムなメモリコンテンツを含むメモリのコンテンツからノイズを除去することに留意されたい。固有のストリングは、暗号鍵として使用されてもよい。暗号鍵の導出後、導出前、または導出時に、元のメモリコンテンツ、すなわち、ノイズが除去されていないメモリコンテンツが、本発明によるシードを導出するのに使用されてもよい。
すなわち、メモリ110は、PUFとして、またエントロピーソースとして使用することができる。PUFの要件とエントロピーソースの要件とは異なり、ある程度相反する。PUFは、次のパワーアップとの間にある程度の重複部分が必要であるが、エントロピーソースはある程度の差異が必要である。
PUFは、入力を刺激の形で物理システムに提供して、刺激と物理システムとの相互作用の結果として生じる挙動を出力にマッピングすることによって入力用の関数の出力が取得されるような方法で物理システムとして具現化される関数であり、物理システムに物理的にアクセスせずに出力を取得することはできず、また物理システムを再現することができないほどまでに、この相互作用は予測不可能であり、基本的には物理システムの乱数によって決まる。PUFには、より広範囲のさまざまな入力が可能な種類もあれば、より限定された範囲の入力が可能な種類もあれば、単一の入力のみが可能な種類もある。何か1つのチャレンジでPUFにチャレンジ入力することは、PUFの「活性化」とも呼ばれる。
PUFに関して、同じチャンレンジに対して複数回評価された場合、PUFは全て等しい複数のレスポンスを生成するのが望ましい。しかし、この特性は必須ではなく、実際に、ほとんどのPUFにはこの特性がない。複数のレスポンスが互いに十分に近いものであれば、PUFは固有のストリングを導出するのに有効であると言える。実際にPUFの出力にノイズがあることを考えると、ランダムなシードを導出するのにPUFに基づいたメモリを使用してもよい。
メモリ110から固有のストリングを導出することは、全く随意である。実際に、本発明により起動時のコンテンツにこのような高いランダム性を有するメモリを使用することができるので、固有のストリングを導出するためにPUFとしてメモリを使用することは実用的でなくなる、または不可能になる。
本発明の別の利点は以下の通りである。PUFに使用される種類のメモリ、例えば、SRAMは、いわゆる経年による影響を受けやすい。例えば、長期にわたってSRAMメモリに同じデータパターンが記憶されている場合、トランジスタ閾値電圧は負のバイアス温度不安定性(NBTI)の影響により変化し、ノイズに負の影響をもたらす(すなわち、ノイズを低減する)可能性がある。しかし、ランダムデータをメモリ110に書き込むことで、メモリセルが特定の方向への経年変化を防ぐことができる。この効果は、上書きがメモリ110全体にわたる場合に改善される。この効果は、メモリ110がパワーアップされる期間中上書きが継続された場合に、同様におよび/または一層改善される。
システム100は、システム100の内部状態を記憶するための内部状態メモリ154を備える。
システム100はさらに、インスタンス化ユニット152を備える。インスタンス化ユニット152は、少なくとも部分的にランダムなメモリコンテンツに基づいたシードを使用して乱数生成システムをシーディングするように構成される。システム100において、インスタンス化ユニット152は、少なくとも部分的にランダムなメモリコンテンツを取得するためにメモリ110に接続される。インスタンス化ユニット152は、少なくとも部分的にランダムなメモリコンテンツから、および随意で他のソースから、シードを作成する。インスタンス化ユニット152は、内部状態メモリ154内にシードを記憶する。
インスタンス化ユニット152は、NIST規格に示されるように、ランダムデータを受信してシードを作成する、すなわち、内部状態として使用するための乱数初期値を作成するための1つまたは複数の入力を有する関数としてもよい。
システム100はさらに、生成ユニット156を備える。生成ユニット156は、リードアクセスおよび書き込みアクセスを行うために内部状態メモリ154に接続される。生成ユニット156は、例えば、内部状態メモリ154に記憶されている内部状態に基づいて乱数列を生成するように構成される。生成ユニット156は、出力生成アルゴリズムを使用して内部状態から乱数列の一部である新規乱数を生成することができ、生成ユニット156は、内部状態更新アルゴリズムを使用して、内部状態を新規内部状態に更新して、新規内部状態を内部状態メモリ154に書き込むことができる。
生成ユニット156は、最初に、インスタンス化関数から入力として初期状態を取り出す。生成ユニット156は、好ましくは、要求に応じて疑似乱数ビットを生成するように構成される。例えば、アプリケーション160から要求を受信すると、生成ユニット156は、乱数を生成して、新規要求の新規内部状態を生成する。あるいは、乱数は、最初に要求を受信せずに、プッシュされてもよい。要求は、最初に、乱数生成システムの他の部品によって受信されてもよい。
インスタンス化ユニット152によって使用されるインスタンス化関数および生成ユニット156によって使用される生成関数は、ハッシュ関数を使用して実行されてもよい。一例が、NIST規格のセクション10.1.1で規定されている。特に、本明細書の図8(45頁)は、インスタンス化ユニット152および生成ユニット156の可能な実施形態を示した図である。値「V」、「リシードカウンタ」、および「C」は、アルゴリズムの内部状態と見なされる。疑似乱数ビットは、システムの出力ビットである。
乱数列は、シードおよび内部状態に基づいて生成されることに留意されたい。
システム100は、生成ユニット156を介してアプリケーション160に接続される。例えば、アプリケーション160は、鍵交換プロトコルである、例えば、Diffie−Hellmanプロトコルである。Diffie−Hellmanプロトコルの過程において、プロトコルステップを実行するのに1つまたは複数の乱数が必要である。アプリケーション160は、生成ユニット156から乱数を受信する。アプリケーション160は、乱数を必要とする任意の他のアプリケーション、例えば、暗号アプリケーション、または他のアプリケーション、例えばモンテカルロシミュレーションアプリケーションとしてもよい。
システム100はさらに、上書きユニット159を備える。上書きユニット159は、同様にシードに基づいて乱数を取得する。図示するように、上書きユニット159がこれらの乱数を正確に取得する方法についてさまざまな選択肢がある。図1は、シードに基づいて乱数生成システムによって生成された乱数を取得するために、生成ユニット156に接続された上書きユニット159を示している。
上書きユニット159は、メモリ110を上書きするように構成される。メモリ110が大容量メモリの一部である場合、上書きユニット159は大容量メモリのその一部を上書きするだけでよく、インスタンス化ユニット152はそこからランダムなメモリコンテンツを取得することに留意されたい。また、上書きユニット159は、大容量メモリ全体を上書きしてもよい。
上書きユニット159は、一回の動作でメモリ110を上書きしてもよい。例えば、上書きユニット159は、リセット信号を受信した時に、メモリを上書きしてもよい。リセット信号は、ソフトリセットが実行中であることを示す。上書きユニット159は、オペレーティングシステムからリセット信号を受信してもよい。上書きユニット159は、例えば、上書きが完了した時点でオペレーティングシステムに、別の信号を送信して、ソフトリセットを開始できることを伝えてもよい。別の信号を使用するのは、随意である。その代わりに、上書きユニット159は、ソフトリセットサイクルと一致する所定時間を要するようにしてもよい。
さらに、上書きユニット159は、インスタンス化ユニット152がシードを導出した時点でメモリを上書きしてもよい。例えば、インスタンス化ユニット152は、シード完了信号を上書きユニット159に送信してもよく、上書きユニット159は、シード完了信号を受信した時にメモリ110の一部を上書きするように構成されてもよい。
さらに、上書きユニット159は、さらに長時間にわたって、メモリ110の上書きを拡大してもよい。例えば、上書きユニットは、乱数列の生成の初めから終わりまでずっと、乱数を使用してメモリの一部を上書きするように構成されてもよい。
上書きユニット159は、上書き完了フラグを備えてもよい。上書き完了フラグは、メモリ110が一旦上書きユニット159によって完全に上書きされた場合に設定される。上書きユニット159は、フラグが設定された場合、それ以上上書きを行わない。フラグは、ソフトリセットまたはハードリセットの時にリセットされる。上書き完了フラグは、メモリ110の所定数の記憶場所が上書きされた後に設定されてもよい。記憶場所の所定数は、メモリ110のサイズ、シードのサイズ、内部状態のサイズなどに対応してもよい。
上書きの拡大を実施する1つの方法は、乱数列の所定の数の乱数が生成される都度、シードに基づいて乱数生成システムによって生成された少なくとも1つの乱数を書き込むことである。例えば、所定数が1である場合、システム100、例えば、アプリケーション160のユーザが乱数列を要求または受信する度に、上書きユニット159は乱数をメモリ110に書き込むことになる。
例えば、上書きユニット159は、ポインタがメモリ110を指し示すようにすることができる。ソフトリセットまたはハードリセット時に、上書きユニット159は、ポインタをメモリ110の開始位置に設定する。上書きユニット159は、メモリ110に乱数を書き込む時に、ポインタで示されたメモリ110の場所に乱数を書き込んで、ポインタを進める。ポインタがメモリ110の終端に来ると、上書きユニット159は、完全な上書きを示す上書き完了フラグを設定してもよく、さらに上書きユニット159は、ポインタをメモリ110の開始位置に戻してもよい。完全な上書きが行われても上書きを継続することで、上書き後のメモリ110のコンテンツとシードとの相関性が若干低下する。というのは、ソフトリセット時のコンテンツはアプリケーションからの要求数または上書きユニット159がメモリを上書きしている期間に左右されるためである。あるいは、上書き完了フラグは、ポインタとメモリ110の開始位置との差が所定数になった場合に設定されてもよい。
動作時に、メモリ110はパワーアップされる。その結果、メモリ110は、ランダムな値または少なくとも部分的にランダムな値のパターンを含む。好ましくは、メモリ110に含まれるビットで測定されるエントロピーは、少なくともインスタンス化ユニット152によって作成されるシードのビットサイズと同じである。エントロピーは、さまざまな方法で、例えば、最小エントロピーを使用して評価されてもよい。
インスタンス化ユニット152は、コンテンツを取得して、シードを導出する。次いで、インスタンス化ユニット152は、シードを内部状態メモリ154に記憶する。アプリケーション160は、乱数が必要になると、乱数を生成ユニット156に要求する。アプリケーション160は、APIを使用してもよい。生成ユニット156は、乱数をプッシュしてもよい。生成ユニット156は、内部状態メモリ154に記憶されている内部状態から列の新規乱数を導出する。さらに、生成ユニット156は、内部状態を更新する。上書きユニット159は、シードから導出された乱数を使用して、メモリ110を上書きする。ある時点で、ソフトリセットが生じる。内部状態154は、削除される、例えば、ゼロで埋められる。メモリ110は、パワーダウンもパワーアップもされず、メモリ110の物理的特性に基づいた新しいランダム状態を含まなくなる。しかし、インスタンス化ユニット152は、新規シードの導出を開始すると、前回のパワーアップの時と比較してメモリ110内に異なるコンテンツを発見することになる。内部状態メモリ154は、異なる値を含むことになる。パワーサイクリングが発生しなくても、内部状態メモリ154がゼロで埋められていなくても、内部状態メモリ154はハードリセットされた場合に再シーディングされたような動作をする。ある時点でシステム100がハードリセットした場合に、メモリ110は物理的特性に基づいた新しいランダム状態を含むことになる。したがって、システム100がパワーダウンされている間に攻撃者がメモリ110から取得したいずれの情報も次のパワーアップ後のメモリ110のコンテンツに影響を与えることはない。
内部状態メモリ154と生成ユニット156とは、協働してシードに完全に依存した乱数列を生成してもよい。インスタンス化ユニット152、内部状態メモリ154、および生成ユニット156は、NIST規格のセクション8、9および10に規定されている決定論的ランダムビット生成器(DRBG)としてもよい。あるいは、動作時に、内部状態に追加エントロピーが追加されてもよい。例えば、アプリケーションが乱数を要求する正確な時間が追加されてもよい。
上書きユニット159は、上書きするために、生成ユニット156によって生成された乱数列の一部を使用してもよい。例えば、生成ユニット156によって生成された他の全ての乱数は、例えば、アプリケーション160への出力用に列の残りを上書きするために上書きユニット159によって使用される。さらに、上書きユニット159は、上書きするために、列の乱数以外の他の乱数を使用してもよい。
例えば、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含んでもよい。例えば、内部状態メモリ154の内部状態の一部が、すなわち最初の1バイトが上書きユニット159によって使用されてもよい。例えば、乱数は内部状態メモリ154から導出されてもよい。例えば、上書きユニット159は、乱数が必要となる度に、内部状態メモリ154のコンテンツをハッシュしてもよい。好ましくは、上書きユニット159は、ハッシュする前に、内部状態メモリ154のコンテンツに固定ストリング、例えば、固定バイト0x04を連結させ、これにより、確実に上書きのために上書きユニット159によって使用される乱数はシステムによって出力される乱数との相関関係がなくなる。もしくは、上書きユニット159は、RandomValues=h(internal state||0xA0A0A0A...)(hはハッシュ関数である)を使用してもよい。
さらに、上書きユニット159は、次の内部状態またはその内部状態から導出される情報の事前演算を使用してもよい。
特に、後者のオプションには、いくつか注目に値する利点がある。リセット信号が出された後、乱数生成器はリセットして、以前に出力されたいずれのデータとも無関係であるデータの出力を開始すべきである。疑似乱数出力ビットを生成する前に、次の内部状態値を事前演算して、それをメモリ110に記憶することによって、リセットが発生する時は常にPUFメモリ内の値が出力の生成に使用されることはない(記憶されている状態情報は次のランダムビットの要求でのみ使用されることになるため)。したがって、確実なことに、状態情報が再利用されることはない。このことに関わらず、本発明の解決策により、依然として、ソフトリセット後にランダムな出力ビットの生成を続けることができる。ソフトリセット後、アルゴリズムは、PUFメモリ内の記憶されている状態を読み出すことによって継続して、新しいインスタンス化ステップを実行することができる。
システム100は、電子回路として、例えば、集積回路(IC)および/またはプログラマブルロジックとして実装されてもよい。プルグラマブルロジックは、例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、またはデジタルシグナルプロセッサ(DSP)、マイクロプロセッサなどを備える。
図2は、乱数生成システム200を示す図である。システム200は、システム100の変形形態である。システム200は、システム100の要素全てに加えて、さらにいくつかの要素を有する。
システム200は、条件付けユニット120を備える。条件付けユニット120は、条件付けアルゴリズムによって構成される。条件付けアルゴリズムは、良好な拡散特性を有する圧縮関数である。例えば、条件付けアルゴリズムは、暗号学的ハッシュ関数として、CBCモードのブロック暗号として、または、例えば、NIST規格のセクション10.4に規定されている導出関数として実装されてもよい。条件付けユニット120の目的は、メモリ110内で発見されたエントロピーを小さいストリングに集中させることである。メモリ110のコンテンツのエントロピーが条件付けユニット120の出力サイズより大きい場合、条件付けユニット120の出力は最大エントロピーを有する。
システム200はさらに、追加エントロピーソース112を示す。追加エントロピーソース112は随意である。追加エントロピーソース112は、条件付けユニット120を使用してもよいが、独自の条件付けユニットを有してもよいし、または全くなくてもよい。追加エントロピーソース112は、クロック、または計測ユニット、例えばシーク時間を計測するためにハードドライブに取り付けられる計測ユニットとしてもよい。
システム200はさらに、識別装置130を備える。インスタンス化ユニット152は、識別装置130からストリングを受信するための追加入力で構成される。識別装置130は、システム200の出力がランダムでない場合に、確実に少なくとも他の装置と異なるようにストリングを生成する。これは、パワーアップ、またはソフトリセットおよびハードリセットを含むリセット、または装置のシリアル番号などを計数する識別装置130のカウンタによって達成される。識別装置130は、オプションである。
したがって、インスタンス化関数は、エントロピー入力を取得し、エントロピー入力をノンスおよび/またはパーソナライゼーションストリングと結合して、初期内部状態を生成することができるシードを作成してもよい。インスタンス化ユニット152は、シードを内部状態メモリ154に直接書き込んでもよいし、NIST規格に示されるように、シードから内部状態を導出してもよい。
システム200は、非インスタンス化ユニット158を備えてもよい。装置をシャットダウンする、またはリセット状態にする信号を受信すると、非インスタンス化ユニット158は内部状態を削除する。例えば、非インスタンス化ユニット158は、リセット信号を受信すると、ゼロで内部状態メモリ154を上書きする。
好ましくは、インスタンス化ユニット152、内部状態メモリ154、および生成ユニット156は共に決定論的乱数生成器を形成する。好ましくは、インスタンス化ユニット152、内部状態メモリ154、生成ユニット156、および非インスタンス化ユニット158は、NIST規格に準拠している。
例の実施として、2KBのSRAMメモリまたは2KBの大容量メモリのようなメモリ110を選択することができる。パワーアップ後にメモリコンテンツから導出されるシードは、256ビットになるように選択されてもよい。しかし、これらの数字は単なる例であり、実施形態とアプリケーションの目的によって決まる。メモリ110のサイズに対する多くの他の可能な選択肢のうち他の有効な値として、512バイト、1Kb、4Kbなどがある。シードのサイズに対する多くの他の可能な選択肢のうち他の有効な値として、80ビット、128ビット、512ビット、1024ビットなどがある。
NIST規格の付属書Cに記載されている方法を使用して、いわゆるSRAMの起動時の値の最小エントロピーを分析することによって、少なくとも256ビットの真性ランダムシードが2KBのサイズのSRAMの起動時の測定値から導出できることが算出される。この真性ランダムシードは、内部状態メモリ154に記憶されて、生成ユニット156の入力としての機能を果たすことができる。インスタンス化ユニット152、内部状態メモリ154、および生成ユニット156は、ランダムビットストリームを生成するDRBGとしてもよい。SRAMの再起動後、条件付けアルゴリズムにより、全く新しい真性ランダムシードがSRAM起動データから確実に生成される。
メモリ110のパワーアップコンテンツなどのPUF測定値のビットの一部のみにノイズがあるので、乱数を生成するエントロピーを含むことになる。条件付けアルゴリズムは、PUF測定値からノイズ、すなわちエントロピーの全てまたは少なくとも殆どを抽出して、これを一定サイズの十分なエントロピーのビットストリングに変える。決定論的ランダムビット生成器(DRBG)で使用するためのこのような条件付けアルゴリズムの一例は、NIST規格に規定されている。
動作時に、メモリ110および追加エントロピーソース112はパワーアップされる。メモリ110および追加エントロピーソース112の出力は、エントロピーを抽出するために条件付けユニット120によって処理される。インスタンス化ユニット152は、抽出エントロピーを取り込み、随意で識別装置130から識別入力を取り込んでシードを作成する。条件付けユニット120およびインスタンス化ユニット152は、1つのハッシュアプリケーションおよび/または1つのユニットに統合されてもよい。
内部状態メモリ154内の内部状態が事前に演算されて、メモリ110に記憶される場合、ソフトリセットの場合、条件付けユニット120の条件付けステップは省略されてもよい。
図3は、システム200のユニットの別の可能な配置方法である乱数生成システム300を示す図である。システム300では、既存のNIST規格に準拠したDRBGが本発明を使用するためにリトロフィットされている。決定論的乱数生成器150は、インスタンス化ユニット152、非インスタンス化ユニット158、内部状態メモリ154、および生成ユニット156を備える。決定論的乱数生成器150は、規格に準拠したDRBG、例えば、NIST規格に準拠したDRBGとしてもよい。場合により、決定論的乱数生成器150は、ブラックボックスとして、例えば集積回路として実装される。上書きユニット159は、他のアプリケーション(例えば、アプリケーション160)にも乱数を提供する同じ出力から乱数を受信するように構成される。場合により、条件付けユニット120は、インスタンス化ユニット152または決定論的乱数生成器150の一部である。
この実施形態では、メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数は、乱数生成システムによって生成される乱数列の一部である、またはその乱数列から導出される。
図4は、システム200のさらに別の変形形態である乱数生成システム400を示す図である。システム400は、非インスタンス化ユニット410を備え、この非インスタンス化ユニット410は非インスタンス化ユニット158および上書きユニット159を備える。非インスタンス化ユニット410は、リセット信号を受信するように構成される。非インスタンス化ユニット410は、リセット信号を受信すると、メモリ110と内部状態メモリ154の両方を上書きする。例えば、非インスタンス化ユニット410は、生成ユニット156を使用して、例えば、生成ユニット156に乱数を生成させ、次いで、内部状態メモリ154のコンテンツをメモリ110に書き込ませ、その後、内部状態メモリ154のコンテンツを削除させ、例えば、ゼロで上書きさせることで、内部状態を更新してもよい。
図7aは、列の乱数を生成して、内部状態メモリ154を更新する方法を示す図である。
乱数生成システム、例えば、システム100、200、300、または400のうちのいずれか1つの動作時に、乱数の要求が受信される(710)。この要求は、一般には、乱数の要求数を示している。例えば、要求は、乱数生成システムに、例えば、生成ユニット156に受信されて、例えば40個の乱数が必要であることを示すことができる。該要求を受信すると、生成ユニット156は、要求数の乱数を生成しようとする。
次に、現在の内部状態から乱数を生成する(720)。生成ユニット156は、内部状態メモリ154から現在の内部状態を取得して、生成関数を適用して要求数の乱数を取得する、例えば、要求された通りに40個の乱数が生成される。乱数が生成された後、生成関数156が内部状態を更新する。そのために、生成ユニット156は現在の内部状態から新規内部状態を導出する(730)。内部状態は、それまでに列のために生成された数の乱数を備えてもよい。すなわち、新規内部状態は、乱数の要求数によって決まる場合がある。
生成ユニット156は、現在の内部状態に更新関数を適用することで、新規内部状態を導出してもよい。次いで、生成ユニット156は、新規内部状態を内部状態メモリ154に書き込む(740)。生成された乱数は、例えば、内部状態メモリの更新が終わるまでその乱数をバッファリングすることによって、その更新後に、出力されてもよい。また、生成された乱数は、生成後すぐに出力されてもよい。後者は、バッファリングを回避するので、ハードウェアの点では好ましい。例えば、各々の数は、特定の数が生成されるとすぐに出力されてもよい。
上述したメモリ110を上書きする任意の方法は、この乱数生成方法と組み合わされてもよい。例えば、メモリ110の上書きは、出力された乱数を使用してもよい。メモリ110の上書きは、生成が開始される前に、例えば、シードが導出された後に、一度行われてもよいし、またはソフトリセット前のシャットダウンの時に一度行われてもよい。
図7bは、図7aに示された方法の有利な代替形態のフローチャートである。
乱数生成システム、例えば、システム100、200、または400のうちのいずれか1つの動作時に、乱数の要求が受信される(710)。この要求は、一般には、乱数の要求数を示している。例えば、要求は、乱数生成システムに、例えば、生成ユニット156に受信されて、例えば40個の乱数が必要であることを示すことができる。該要求を受信すると、生成ユニット156は、要求数の乱数を生成しようとする。
しかし、生成ユニット156は、要求数の乱数を生成する前に、現在の内部状態から新規内部状態を導出する(730)。これは、図7aの乱数生成後に導出される必要がある新規内部状態と同じ新規内部状態である。特に、新規内部状態がそれまでに列のために生成された乱数の数によって決まる場合、更新関数が新規内部状態を導出し、この新規内部状態は要求数の乱数の生成後に演算される必要がある。
次いで、新規内部状態は、メモリ110の上書きに使用される。例えば、新規内部状態は、メモリ110に書き込まれてもよい。さらに、新規内部状態に基づいたデータがメモリ110に書き込まれてもよい。例えば、ハッシュ、例えば、sha−256が新規内部状態に適用されてもよく、その結果がメモリ110に書き込まれる。
次に、現在の内部状態から要求された乱数を生成する(720)。乱数は、ちょうど演算された新規内部状態から取得されるのではなく、現在の内部状態から取得されることに留意されたい。生成ユニット156は、内部状態メモリ154から現在の内部状態を取得して、生成関数を適用して要求数の乱数を取得する、例えば、要求された通りに40個の乱数が生成される。
乱数が生成された後、生成関数156が内部状態を更新する。この更新は、すでに演算された新規内部状態を内部状態メモリに書き込むことによって行われてもよい。さらに、この更新は、再び新規内部状態を導出することによって行われてもよい。
図7bに示されるように、内部状態を更新するステップと乱数の生成ステップとを組み合わせる方法は、ソフトリセット前の列の質に比べて、ソフトリセット後の乱数の質を保証することができるという利点がある。このように乱数の質を保証することができるのは、暗号技術において有利であると考えられる。
一実施形態では、方法7bによって生成される乱数列は、行われる可能性のあるソフトリセットとは無関係である。これは、新規内部状態が導出され得るデータでメモリ110を上書きすることによって行われてもよい。例えば、新規内部状態自体をメモリ110に書き込むことによって、または暗号鍵で暗号化された内部状態をメモリ110に書き込むことによって行われてもよい。ソフトリセット後に、インスタンス化ユニット152に、ソフトリセットが発生したことを示す信号が送られる。次いで、インスタンス化ユニット152は、新規内部状態を取得して、それを内部状態メモリ154に書き込むことになる。このように、列は、ソフトリセットが発生しなかったかのように続くことになる。必要に応じて、インスタンス化ユニット152は、内部状態を取得するためにメモリ110内のデータを復号してもよい。
暗号鍵は、図7bの方法を実装するデバイスのプログラムメモリに記憶されている固定鍵としてもよい。しかし、一実施形態では、暗号鍵は、PUFとして使用される揮発性の鍵メモリ、例えばメモリ110を備える大容量メモリの別の一部のパワーアップコンテンツから導出される。鍵メモリから導出された暗号鍵は、メモリ110に書き込まれる前に新規内部状態を暗号化するのに使用される。例えば、鍵メモリにはPUFが使用されてもよく、暗号鍵はヘルパーデータを使用して導出されてもよい。このような鍵導出方法は、それ自体PUFの技術分野で既知である。
インスタンス化ユニット152には、オペレーティングシステムによって以前のソフトリセットに関する信号が送られてもよい。あるいは、生成ユニット156が所定のストリングをメモリ110に書き込んで、インスタンス化ユニット152が所定のストリングの存在を検出することによってソフトリセットが発生したと結論付けてもよい。
図5aは、本発明によるスマートカード500の概略上面図である。スマートカードは、集積回路510と、集積回路510を支承する一般にはプラスチック製のカード505とを備える。集積回路510のアーキテクチャは、図5bに概略的に示されている。回路510は、本発明による方法を実行するおよび/または本発明によるモジュールもしくはユニットを実装するためのコンピュータプログラムコンポーネントを実行する処理ユニット520、例えば、CPUを備える。回路510は、プログラミングコード、データ、暗号鍵、ヘルパーデータなどを記憶するメモリ522を備える。メモリ522の一部は、読み出し専用にしてもよい。メモリ522の一部は、安全性の高いメモリ、例えば、セキュリティ関連データ、例えば、鍵を記憶するヒューズメモリとしてもよい。回路510は、物理的複製不可能関数524を含む。物理的複製不可能関数524は、メモリ522と結合されてもよい。回路210は、通信要素526、例えば、アンテナ、コネクタパッド、またはその両方を備えてもよい。回路510、メモリ522、PUF524、および通信要素526は、バス530を介して互いに接続されてもよい。カードは、アンテナおよび/またはコネクタパッドをそれぞれ使用して、接触通信および/または非接触通信するように設計されてもよい。スマートカードは、例えば、コンテンツへのアクセスを制御するためのセットトップボックス、電気通信網へのアクセスを制御するための携帯電話、公共交通機関へのアクセスを制御するための公共交通システム、銀行口座へのアクセスを制御するための銀行カードなどで使用されてもよい。
例えば、メモリ522は、処理ユニット520によって実行するためのソフトウェアを備えてもよい。ソフトウェアが実行されると、コンピュータデバイスのモジュールの関数が実行される。PUF524は、メモリ110を含んでもよい。
図6は、本発明による方法600をフローチャートで示した図である。本発明による方法は、書き込み可能、揮発性のメモリをパワーアップするステップ(610)と、メモリの一部から取得された少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングするステップ(620)と、シードに基づいて乱数列を生成するステップ(630)と、シードに基づいて生成された乱数でメモリの少なくとも一部を上書きするステップ(640)とを含む。当業者には明らかであるように、本発明による方法を実行する多くのさまざまな方法が可能である。例えば、ステップの順序を変更してもよく、いくつかのステップは並行して実行されてもよい。さらに、ステップとステップの間に、他の方法ステップを挿入してもよい。挿入されるステップは、本明細書で示される方法を改良するステップとしてもよいし、または本発明による方法に無関係のステップとしてもよい。例えば、ステップ630とステップ640とは、少なくとも部分的に並行して実行されてもよい。さらに、所定のステップは、次のステップが開始される前に完全に終了していなくてもよい。
本発明による方法は、プロセッサシステムに方法600を実行させる命令を含むソフトウェアを使用して実行されてもよい。ソフトウェアは、システムの特定のサブエンティティによって実行されるステップのみを含んでもよい。ソフトウェアは、適切な記憶媒体、例えば、ハードディスク、フロッピー(登録商標)、メモリなどに記憶されてもよい。ソフトウェアは、ワイヤもしくはワイヤレスで、またはデータネットワーク、例えばインターネットを使用して、信号として送信されてもよい。ソフトウェアは、サーバでのダウンロード用および/または遠隔使用のために利用できるものとしてもよい。
当然、本発明の範囲は、コンピュータプログラム、特に、本発明を実現するのに適した担体上もしくは担体内のコンピュータプログラムにも及ぶ。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形などのソースとオブジェクトとの中間のコードの形式、または本発明による方法の実装に使用するのに適した任意の他の形式にしてもよい。コンピュータプログラムは、組み込みプロセッサの中に含まれてもよい。当然、このようなプログラムは、多くのさまざまなアーキテクチャデザインを有してもよい。例えば、本発明による方法またはシステムの機能性を実装するプログラムコードは、1つまたは複数のサブルーチンに細分されてもよい。これらのサブルーチンの中で機能性を分散する多くの異なる方法は、当業者には明らかであろう。サブルーチンは、1つの実行ファイルにまとめて記憶されて、自己完結型のプログラムを形成する。このような実行ファイルは、コンピュータ実行可能命令、例えば、プロセッサ命令および/またはインタプリタ命令(例えば、Java(登録商標)インタプリタ命令)を含んでもよい。あるいは、サブルーチンの1つまたは複数もしくは全てが少なくとも1つの外部ライブラリファイルに記憶されて、例えば、ランタイムに、静的もしくは動的のいずれかでメインプログラムとリンクされてもよい。メインプログラムは、サブルーチンのうちの少なくとも1つへの呼び出しを少なくとも1つ含む。さらに、サブルーチンは、互いに対する関数呼び出しを含んでもよい。コンピュータプログラム製品に関する一実施形態は、上述した方法の少なくとも1つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよいし、および/または静的もしくは動的にリンク可能な1つまたは複数のファイルに記憶されてもよい。コンピュータプログラムに関する別の実施形態は、上述したシステムおよび/または製品の少なくとも1つの手段の各々に対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよいし、および/または静的もしくは動的にリンク可能な1つまたは複数のファイルに記憶されてもよい。
コンピュータプログラムの担体は、プログラムを担持することが可能な任意のエンティティまたはデバイスとしてもよい。例えば、担体は、例えば、CD ROMもしくは半導体ROMなどのROM、または、例えば、フロッピーディスクもしくはハードディスクなどの磁気記録媒体のような記憶媒体を含んでもよい。さらに、担体は、電気ケーブルもしくは光ケーブルを介して、または無線手段もしくは他の手段を使用して搬送される電気信号または光信号などの伝達性担体としてもよい。プログラムがこのような信号に組み込まれる場合、担体はこのようなケーブルまたは他の装置もしくは他の手段によって構成されてもよい。あるいは、担体は、プログラムが組み込まれる集積回路であって、当該方法を実行するのに適した、または当該方法の実行時の使用に適した集積回路としてもよい。
上述の実施形態は、本発明を制限するというよりは例示するものであり、当業者は添付の請求項の範囲から逸脱せずに、多くの代替実施形態を設計することが可能であることに留意すべきである。請求項では、括弧内の符号は、請求項を制限するものと解釈されるべきではない。動詞「備える(comprise)」およびその活用を使用するのは、請求項で示された要素またはステップ以外の要素およびステップの存在を除外するものではない。要素の前の冠詞「1つの(a、an)」は、このような要素の複数の存在を除外するものではない。本発明は、互いに異なる複数の要素を備えるハードウェアを使用して、また適切にプログラムされたコンピュータを使用して実施されてもよい。複数の手段を列挙する装置クレームでは、これらの複数の手段は、ハードウェアの全く同一のアイテムによって具現化されてもよい。特定の方策が互いに異なる従属クレームで示されているのは、これらの方策の組み合わせの使用が有利でないことを示すものではない。
100 乱数生成システム
110 メモリ
112 追加エントロピーソース
120 条件付けユニット
130 識別装置
150 決定論的乱数生成器
152 インスタンス化ユニット
154 内部状態メモリ
156 生成ユニット
158 非インスタンス化ユニット
159 上書きユニット
160 アプリケーション
200,300,400 乱数生成システム
410 非インスタンス化ユニット
500 スマートカード
510 集積回路
505 カード
520 処理ユニット
522 メモリ
524 物理的複製不可能関数
526 通信要素
530 バス
540 スマートカード
600 フローチャート
610 書き込み可能、揮発性のメモリをパワーアップする
620 メモリの一部から取得された少なくとも部分的にランダムなメモリコンテンツに基づいたシードでシーディングする
630 シードに基づいて乱数列を生成する
640 シードに基づいて生成された乱数でメモリの少なくとも一部を上書きする
710 要求を受信する
720 現在の内部状態から乱数を生成する
730 現在の内部状態から新規内部状態を導出する
740 新規内部状態を内部状態メモリに書き込む
750 新規内部状態を使用してメモリを上書きする

Claims (17)

  1. 乱数列を生成するための乱数生成システムであって、
    書き込み可能かつ揮発性であるメモリであって、メモリが少なくとも部分的にランダムなメモリコンテンツを含むように、メモリが、メモリのパワーアップの度にのみ、新たな少なくとも部分的にランダムなメモリコンテンツを生成し、少なくとも部分的にランダムなメモリコンテンツが、メモリが製造される間の生成プロセスにおけるばらつきによって決まる、メモリと、
    少なくとも部分的にランダムなメモリコンテンツから得られたシードを使用して乱数生成システムをシーディングするように構成されたインスタンス化ユニットと、
    シードに基づいて乱数列を生成するように構成された生成ユニットと、
    シードに基づいて乱数生成システムによって生成された乱数で少なくとも部分的にランダムなメモリコンテンツの少なくとも一部を上書きするように構成された上書きユニットと
    を備える乱数生成システム。
  2. 上書きユニットが、乱数列の生成の期間中、乱数でメモリを上書きするように構成される、請求項1に記載の乱数生成システム。
  3. 上書きユニットが、シードに基づいて乱数生成システムによって生成された乱数を、乱数列の所定数の乱数が生成される都度、書き込むように構成される、請求項2に記載の乱数生成システム。
  4. 上書きユニットが、乱数生成システムがリセット信号を受信した時点で、シードに基づいて乱数生成システムによって生成された乱数でメモリの少なくとも一部を上書きするように構成される、請求項1〜請求項3のうちのいずれか1項に記載の乱数生成システム。
  5. メモリの少なくとも一部のビットサイズが、少なくともシードのビットサイズと同じである、請求項1〜請求項4のうちのいずれか1項に記載の乱数生成システム。
  6. 内部状態を記憶するための内部状態メモリと、現在の内部状態から乱数列の乱数を生成すると共に、内部状態メモリ内に記憶されている現在の内部状態から新規内部状態を導出するように構成された生成ユニットとを備える、請求項1〜請求項5のうちのいずれか1項に記載の乱数生成システム。
  7. メモリの少なくとも一部のビットサイズが、少なくとも内部状態のビットサイズと同じである、請求項6に記載の乱数生成システム。
  8. メモリの少なくとも一部のビットサイズが、最大で内部状態のビットサイズの2倍であるか、または、最大で内部状態のビットサイズであるか、または、シードのビットサイズに等しい、請求項6に記載の乱数生成システム。
  9. メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数が、乱数生成システムによって生成される乱数列の一部である、請求項1〜請求項8のうちのいずれか1項に記載の乱数生成システム。
  10. メモリの少なくとも一部を上書きするためにシードに基づいて乱数生成システムにより生成される乱数が、乱数生成システムによって生成される乱数列の一部でない乱数生成システムの中間データを含む、請求項1〜請求項8のうちのいずれか1項に記載の乱数生成システム。
  11. 生成ユニットが、現在の内部状態から乱数列の乱数を生成する前に、現在の内部状態から新規内部状態を導出するように構成され、上書きユニットは、現在の内部状態から乱数列の乱数を生成する前に、新規内部状態から導出された乱数でメモリの少なくとも一部を上書きするように構成される、請求項1〜請求項10のうちのいずれか1項と組み合わされた請求項6に記載の乱数生成システム。
  12. 乱数列が、完全にシードに依存している、請求項1〜請求項11のうちのいずれか1項に記載の乱数生成システム。
  13. メモリが、SRAMメモリ、フリップフロップ、およびラッチのうちの任意の1つを備える、請求項1〜請求項12のうちのいずれか1項に記載の乱数生成システム。
  14. 請求項1〜請求項13のうちのいずれか1項に記載の乱数生成システムを備えるスマートカード。
  15. 乱数列を生成する方法であって、
    揮発性の書き込み可能なメモリであって、メモリが少なくとも部分的にランダムなメモリコンテンツを含むように、メモリが、メモリのパワーアップの度にのみ、新たな少なくとも部分的にランダムなメモリコンテンツを生成し、少なくとも部分的にランダムなメモリコンテンツが、メモリが製造される間の生成プロセスにおけるばらつきによって決まる、メモリをパワーアップするステップと、
    少なくとも部分的にランダムなメモリコンテンツから得られたシードでシーディングするステップと、
    シードに基づいて乱数列を生成するステップと、
    シードに基づいて生成された乱数で少なくとも部分的にランダムなメモリコンテンツの少なくとも一部を上書きするステップと
    を含む方法。
  16. コンピュータプログラムがコンピュータ上で実行される時に、請求項15に記載の全てのステップを実行するように適合されたコンピュータプログラムコード手段を備える、コンピュータプログラム。
  17. コンピュータ可読媒体上で具現化される、請求項16に記載のコンピュータプログラム。
JP2014503151A 2011-04-05 2012-04-05 メモリスタートアップ時のノイズに基づいた乱数生成システム Active JP6182132B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161471771P 2011-04-05 2011-04-05
US61/471,771 2011-04-05
PCT/EP2012/056277 WO2012136763A2 (en) 2011-04-05 2012-04-05 Random number generating system based on memory start-up noise

Publications (2)

Publication Number Publication Date
JP2014510354A JP2014510354A (ja) 2014-04-24
JP6182132B2 true JP6182132B2 (ja) 2017-08-16

Family

ID=46025630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014503151A Active JP6182132B2 (ja) 2011-04-05 2012-04-05 メモリスタートアップ時のノイズに基づいた乱数生成システム

Country Status (6)

Country Link
US (1) US9383969B2 (ja)
EP (1) EP2695052B1 (ja)
JP (1) JP6182132B2 (ja)
KR (1) KR101972126B1 (ja)
ES (1) ES2530944T3 (ja)
WO (1) WO2012136763A2 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793296B2 (en) * 2012-02-02 2014-07-29 Kaohsiung Medical University Random number generating method
US8879733B2 (en) 2012-07-10 2014-11-04 Infineon Technologies Ag Random bit stream generator with guaranteed minimum period
US8861725B2 (en) * 2012-07-10 2014-10-14 Infineon Technologies Ag Random bit stream generator with enhanced backward secrecy
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
US9323499B2 (en) * 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9582465B2 (en) 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
US9026719B2 (en) 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
US8966310B2 (en) 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile memory
KR101653121B1 (ko) * 2012-12-11 2016-08-31 미쓰비시덴키 가부시키가이샤 통합 시큐리티 장치 및 통합 시큐리티 장치에 이용되는 신호 처리 방법
US9449197B2 (en) * 2013-06-13 2016-09-20 Global Foundries Inc. Pooling entropy to facilitate mobile device-based true random number generation
US9558358B2 (en) 2013-06-27 2017-01-31 Visa International Service Association Random number generator in a virtualized environment
EP3105884A4 (en) 2014-02-11 2018-03-21 Yaana Technologies, LLC Mathod and system for metadata analysis and collection with privacy
US9693263B2 (en) 2014-02-21 2017-06-27 Yaana Technologies, LLC Method and system for data flow management of user equipment in a tunneling packet data network
US10447503B2 (en) 2014-02-21 2019-10-15 Yaana Technologies, LLC Method and system for data flow management of user equipment in a tunneling packet data network
US10334037B2 (en) 2014-03-31 2019-06-25 Yaana Technologies, Inc. Peer-to-peer rendezvous system for minimizing third party visibility and method thereof
DE102014206992A1 (de) 2014-04-11 2015-10-15 Siemens Aktiengesellschaft Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
EP2940923B1 (en) * 2014-04-28 2018-09-05 Université de Genève Method and device for optics based quantum random number generator
US10216484B2 (en) * 2014-06-10 2019-02-26 Texas Instruments Incorporated Random number generation with ferroelectric random access memory
US10285038B2 (en) 2014-10-10 2019-05-07 Yaana Technologies, Inc. Method and system for discovering user equipment in a network
US9548862B1 (en) * 2014-11-17 2017-01-17 Safelogic, Inc. Managing entropy in computing devices for cryptographic key generation
US10542426B2 (en) 2014-11-21 2020-01-21 Yaana Technologies, LLC System and method for transmitting a secure message over a signaling network
US9880929B2 (en) * 2014-12-17 2018-01-30 Schneider Electric It Corporation Systems and methods for generating a unique device id
US10079675B2 (en) * 2015-04-20 2018-09-18 Certicom Corp. Generating cryptographic function parameters from a puzzle
US10375070B2 (en) 2015-04-20 2019-08-06 Certicom Corp. Generating cryptographic function parameters from compact source code
US10361844B2 (en) 2015-04-20 2019-07-23 Certicom Corp. Generating cryptographic function parameters based on an observed astronomical event
WO2016176661A1 (en) 2015-04-29 2016-11-03 Yaana Technologies, Inc. Scalable and iterative deep packet inspection for communications networks
EP3332402B1 (en) * 2015-08-06 2020-10-07 Intrinsic ID B.V. Cryptographic device having physical unclonable function
US20170142578A1 (en) * 2015-11-13 2017-05-18 Yaana Technologies Llc System and method for providing secure and anonymous device-to-device communication
WO2017083855A1 (en) 2015-11-13 2017-05-18 Yaana Technologies Llc System and method for discovering internet protocol (ip) network address and port translation bindings
JP6249421B2 (ja) * 2016-03-25 2017-12-20 三菱電機株式会社 距離測定装置
CN106020771B (zh) * 2016-05-31 2018-07-20 东南大学 一种基于puf的伪随机序列发生器
EP3258292A1 (en) * 2016-06-17 2017-12-20 Airbus DS GmbH Technique for position calculation of a receiver under use of encrypted signals of a public regulated service
US10019236B2 (en) 2016-08-11 2018-07-10 Taiwan Semiconductor Manufacturing Co., Ltd. SRAM-based true random number generator
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US11080228B2 (en) * 2017-03-13 2021-08-03 International Business Machines Corporation Distributed random binning featurization with hybrid two-level parallelism
EP3407528A1 (en) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
US10481872B2 (en) * 2017-08-29 2019-11-19 Colossio, Inc. Cryptographically secure random number generator
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
KR102045764B1 (ko) 2018-02-02 2019-11-18 안상욱 진난수 발생용 에스램 셀 및 이를 구비한 에스램 셀 어레이 구동회로
US10880101B2 (en) 2018-04-11 2020-12-29 Taiwan Semiconductor Manufacturing Co., Ltd. Method and circuit for de-biasing PUF bits
US11055065B2 (en) * 2018-04-18 2021-07-06 Ememory Technology Inc. PUF-based true random number generation system
US11063755B2 (en) 2018-05-07 2021-07-13 Cryptography Research, Inc. Generating a key at a device based on a memory of the device
US10754619B2 (en) * 2018-09-27 2020-08-25 Intel Corporation Self-calibrated von-neumann extractor
US10402172B1 (en) * 2019-02-28 2019-09-03 Qrypt, Inc. Multi-source entropy and randomness aggregation and distribution network
US11126404B2 (en) * 2019-05-20 2021-09-21 Nxp B.V. Random number generator using multiple entropy sources and a method for generating random numbers
US20210026602A1 (en) * 2019-07-25 2021-01-28 PUFsecurity Corporation Entropy Generator and Method of Generating Enhanced Entropy Using Truly Random Static Entropy
US11532358B2 (en) 2019-08-28 2022-12-20 Micron Technology, Inc. Memory with automatic background precondition upon powerup
US10990317B2 (en) * 2019-08-28 2021-04-27 Micron Technology, Inc. Memory with automatic background precondition upon powerup
WO2021064444A1 (en) * 2019-09-30 2021-04-08 Nokia Technologies Oy Physical layer security by pseudo-random layer mapping
US11341064B2 (en) * 2019-12-05 2022-05-24 Realtek Singapore Private Limited Method of protecting sensitive data in integrated circuit and integrated circuit utilizing same
CN112306457B (zh) * 2020-08-07 2023-07-14 神州融安数字科技(北京)有限公司 一种随机数生成方法及装置
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
US11977856B2 (en) 2021-01-25 2024-05-07 International Business Machines Corporation Random number generation from SRAM cells
US20220261221A1 (en) * 2021-02-18 2022-08-18 PUFsecurity Corporation Random number generator
TWI811642B (zh) * 2021-03-08 2023-08-11 新唐科技股份有限公司 亂數產生電路及亂數產生方法
KR20220135750A (ko) * 2021-03-31 2022-10-07 에스케이하이닉스 주식회사 메모리 및 메모리의 동작 방법
TWI785702B (zh) * 2021-05-07 2022-12-01 旺宏電子股份有限公司 用於產生識別碼之儲存裝置及識別碼產生方法
US11984166B2 (en) 2021-05-07 2024-05-14 Macronix International Co., Ltd. Storage device for generating identity code and identity code generating method
US20220385451A1 (en) * 2021-05-26 2022-12-01 Micron Technology, Inc. Data invalidation for memory
US20220385485A1 (en) * 2021-06-01 2022-12-01 Micron Technology, Inc. Identity theft protection with no password access

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820203B1 (en) * 1999-04-07 2004-11-16 Sony Corporation Security unit for use in memory card
GB0102840D0 (en) * 2001-02-05 2001-03-21 Cambridge Silicon Radio Ltd Generating random data
JP2002268874A (ja) * 2001-03-07 2002-09-20 Toshiba Corp 乱数シード生成回路及びこれを備えたドライバ、並びに、sdメモリカードシステム
US7233965B2 (en) * 2002-09-30 2007-06-19 Sun Microsystems, Inc. Continuous random number generation method and apparatus
DE10357782B3 (de) * 2003-12-10 2005-05-04 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen von Zufallszahlen mit einem Pseudozufallsgenerator
JP2006024140A (ja) * 2004-07-09 2006-01-26 Sony Corp 乱数生成装置
US7496616B2 (en) 2004-11-12 2009-02-24 International Business Machines Corporation Method, apparatus and system for resistance to side channel attacks on random number generators
US7676531B2 (en) * 2005-12-22 2010-03-09 Sony Computer Entertainment Inc. Methods and apparatus for random number generation
JP2007234001A (ja) * 2006-01-31 2007-09-13 Semiconductor Energy Lab Co Ltd 半導体装置
KR20070018986A (ko) * 2006-12-07 2007-02-14 후지쯔 가부시끼가이샤 난수 생성 장치, 생성 방법, 생성기 평가 방법 및 난수사용 방법
EP2300909B1 (en) * 2008-05-23 2015-04-15 Agere Systems, Inc. Secure random number generator
JP2010266417A (ja) 2009-05-18 2010-11-25 Sony Corp 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム

Also Published As

Publication number Publication date
EP2695052B1 (en) 2014-11-26
KR20140022869A (ko) 2014-02-25
WO2012136763A2 (en) 2012-10-11
KR101972126B1 (ko) 2019-04-24
WO2012136763A3 (en) 2013-01-03
JP2014510354A (ja) 2014-04-24
ES2530944T3 (es) 2015-03-09
EP2695052A2 (en) 2014-02-12
US9383969B2 (en) 2016-07-05
US20140040338A1 (en) 2014-02-06

Similar Documents

Publication Publication Date Title
JP6182132B2 (ja) メモリスタートアップ時のノイズに基づいた乱数生成システム
CN107078904B (zh) 混合密码密钥导出
JP6692234B2 (ja) グローバルプラットフォーム仕様を使用した発行元セキュリティドメインの鍵管理のためのシステム及び方法
US9483664B2 (en) Address dependent data encryption
JP6267207B2 (ja) 物理的クローン不能関数として使用されるメモリから暗号化キーを生成するためのシステム
CN108449172B (zh) 加密/解密方法和计算设备的集成电路
CN110892673A (zh) 安全硬件签名以及相关方法和应用
US11126404B2 (en) Random number generator using multiple entropy sources and a method for generating random numbers
US10146701B2 (en) Address-dependent key generation with a substitution-permutation network
TW201346637A (zh) 用於提供記憶體機密性、完整性及重播保護的低負擔密碼方法及裝置
JP2016535310A (ja) 素数の生成および記憶のための方法および装置
US11321475B2 (en) Entropy data based on error correction data
CN114764512A (zh) 加密密钥管理
Sassani et al. Evaluating encryption algorithms for sensitive data using different storage devices
CN106100829A (zh) 加密存储的方法及装置
Oh et al. Implementation and characterization of flash‐based hardware security primitives for cryptographic key generation
WO2023073368A1 (en) Methods and systems for secure data storage
JP6203532B2 (ja) 半導体記憶装置及びデータ処理システム
CN109902492B (zh) 集成电路外部存储器中写加密信息集合的方法和集成电路
US10785031B2 (en) Data encryption of a storage area
US20240176897A1 (en) Unlimited reprovisionable hardware root of trust
CN107908980B (zh) 一种存储器数据加密保护的实现方法
Zalivaka et al. NAND Flash Memory Devices Security Enhancement Based on Physical Unclonable Functions
WO2024094290A1 (en) Apparatus and method for storage protection
CN117494234A (zh) 一种熵采集方法及装置、电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161220

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170721

R150 Certificate of patent or registration of utility model

Ref document number: 6182132

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250