JP2010525417A - 擬似乱数生成器のための初期シード管理 - Google Patents

擬似乱数生成器のための初期シード管理 Download PDF

Info

Publication number
JP2010525417A
JP2010525417A JP2010506480A JP2010506480A JP2010525417A JP 2010525417 A JP2010525417 A JP 2010525417A JP 2010506480 A JP2010506480 A JP 2010506480A JP 2010506480 A JP2010506480 A JP 2010506480A JP 2010525417 A JP2010525417 A JP 2010525417A
Authority
JP
Japan
Prior art keywords
seed
number generator
pseudo
file
initialization
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.)
Pending
Application number
JP2010506480A
Other languages
English (en)
Inventor
ローズ、グレゴリー・ゴードン
ガントマン、アレクサンダー
シャオ、ル
フィゲロア、デイビッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010525417A publication Critical patent/JP2010525417A/ja
Pending legal-status Critical Current

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/582Pseudo-random number generators
    • 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
    • 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
    • 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/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Abstract

予め記憶された初期化シードを使用することによる擬似乱数生成器のためのセキュアなシーディングおよび再シーディング方式が提供される。この方式は、エントロピー収集が利用できないときでも、擬似乱数生成器を未知状態に初期化する。プライマリシードファイルおよびシャドーシードファイルが初期化シード情報とともにセキュアなファイルシステム中に保持される。プライマリシードファイルが壊れている場合、擬似乱数生成器はシャドーシードファイルのコンテンツをシードされる。さらに、予め記憶されたシード情報が損なわれているときでも、信頼できるタイマまたはクロックを予め記憶された初期化シードと混合して、エントロピーを追加することができる。

Description

関連出願
本特許出願は、2006年8月23日に出願され、本願の譲受人に譲渡された、Gregory Gordon Roseらによる、「Cryptographically Secure Pseudo−Random Number Generator」と題する米国特許第11/509,215号に関連する。
本発明は、セキュア(secure)な擬似乱数生成器に関し、より詳細には、電子デバイス中の擬似乱数生成器を初期化するためのシード管理に関する。
乱数の生成には、たとえば暗号学的使用(たとえば、暗号化および完全性保護のために使用される鍵、セキュリティプロトコルのために使用されるナンス(nonce)など)を含む多くの適用例がある。真の乱数を平均より高い確率で予測することは不可能である。現実の世界では、完全な乱数ソースを取得することは極めて難しい。
決定性アルゴリズムを使用して擬似乱数を生成する擬似乱数生成器(pseudo-random number generator:PRNG)がしばしば採用される。PRNGは数を極めて高速に生成することができる。シード(seed)と呼ばれるランダム入力が与えられれば、擬似乱数の極めて長いシーケンスを決定論的に生成することができる。このシードについての知識なしに、生成器をランダムソースと区別することは不可能または極めて難しい。利用可能な多数のPRNGがあるが、大部分はセキュリティ適用例向けに設計されていない。PRNGは決定性アルゴリズムを使用するので、ハッキングにさらされ、それによりPRNGのセキュリティが弱まる。たとえば、PRNGとして線形合同生成器(linear congruential generator)が広く使用されているが、短い出力シーケンスが分析された後に破られる可能性がある。
暗号学的適用例などいくつかの適用例では、一般に「ランダムな」数を初期化ベクトル、鍵、ナンス、ソルト(salt)などとして使用する。概して、暗号学的にセキュアなPRNG(cryptographically secure PRNG:CSPRNG)は予測不可能な入力をセキュアな方法でシードされるので、その出力をランダムビットのシーケンスと区別することは不可能である。
擬似乱数生成方式はCSPRNGでは比較的簡単である。擬似乱数生成方式は、たとえば、カウンタモードまたは出力フィードバックモードで実行するブロック暗号、暗号鍵としてシードを使用するストリーム暗号、あるいはハッシングのネスト構造とすることができる。CSPRNG設計の複雑な部分は、CSPRNGをどのようにシードおよび再シード(reseed)するかである。理想的には、CSPRNGは、アプリケーションによって呼び出される前に生成器の内部状態を予測不可能にする何らかの情報をシードされる。再シーディング(reseeding)は、以前にシードされたCSPRNGの順序論理を新たなシードで更新するために使用されるプロセスである。そのような再シーディングは、決定論的数生成アルゴリズムを破ることをより困難にする。しかしながら、エントロピー収集モジュールが良好なシードを得るには時間がかかる。したがって、CSPRNGは、電源投入すると、そのようなシードが利用可能になる前にアプリケーションによって呼び出されることがあるので、CSPRNGがアプリケーションによって呼び出される前にCSPRNGをシードまたは再シードすることが共通の問題である。
FIPS186−2、ANSI X9.17−1985 Appendix C、ANSI X9.31−1998 Appendix A.2.4、ANSI X9.62−1998 Annex A.4など、いくつかの標準化されたCSPRNG設計が存在する。残念ながら、これらの設計の多くは、いくつかの状況下では満足のいくものではない。たとえば、Fast Software Encryption、5th International Workshop Proceedings、Springer−Verlag、1998において、J.KelseyらによってANSI X9.17PRNGの2つの設計不備が確認されている。さらに、国立標準技術研究所(NIST)Special Publication 800−90、名称「Recommendation for Random Number Generator Using Deterministic Random Bit Generators」、2006年6月も、擬似乱数生成器を初期化するためのシステムを開示しているが、ハッキングに対する適切なセキュリティ機能は提供していない。
したがって、シードを迅速にセキュアに取得することができる擬似乱数生成器が必要である。
予め記憶された初期化シードを使用することによる擬似乱数生成器のためのセキュアなシーディングおよび再シーディング方式が提供される。この方式は、エントロピー収集が利用できないときでも、擬似乱数生成器を未知状態に初期化する。プライマリシードファイルおよびシャドーシードファイルをシーディング情報とともにセキュアなファイルシステム中に保持することができる。プライマリシードファイルが壊れた場合、擬似乱数生成器はシャドーシードファイルのコンテンツをシードされる。シードファイルのハッキング対策として、信頼できるタイマをシーディング機構の一部として使用することができる。予め記憶されたシード情報が損なわれているときでも、信頼できるタイマまたはクロックを予め記憶されたシード情報と混合して、エントロピーを追加する。
擬似乱数生成器を動作させるための方法を提供する。擬似乱数生成器の始動内部状態(startup internal state)を予め記憶された原始シード(primordial seed)で初期化する。記憶された原始シードは、一度使用された後に破棄され得る。エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得し、その新たなシードを使用して擬似乱数生成器の内部状態を予測不可能な状態に変更することができる。擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成することができる。擬似ランダム出力は、次いで擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶できる。原始シードは、擬似乱数生成器の製造中にセキュアな位置に記憶できる。擬似乱数生成器の再シーディングは、間隔タイマに従って定期的に実行できる。
一例では、擬似乱数生成器が再始動された後に、初期化シードをシードファイルから取り出す。擬似乱数生成器の始動内部状態を初期化シードで初期化する。シードファイルのコンテンツを擬似乱数生成器から取得された新たな初期化シードと置き換える。
別の例では、次いで信頼できるソースから時間値(time value)を取得する。次いで、時間値と初期化シードを組み合わせて、変更された初期化シードを取得する。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせることができる。擬似乱数生成器の始動内部状態を変更された初期化シードで初期化する。次いで、シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換える。
さらに別の態様では、擬似ランダム出力をシードファイル中に記憶することは、(1)擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶すること、および(2)擬似ランダム出力をセキュアなファイルシステム中のシャドーシードファイル中に記憶することを含むことができる。擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかに関する判断を行う。プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化する。そうではなく、プライマリシードファイルの完全性検査が失敗した場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化する。
シード選択モジュール、シーディングモジュール(seeding module)、および数生成モジュールを備える擬似乱数生成器も提供される。シード選択モジュールは、1つまたは複数のシードソースから1つのシードを選択するように構成できる。シーディングモジュールは、シード選択モジュールに結合され、シード選択モジュールによって与えられるシードに従って擬似乱数生成器の内部状態を調整するように構成できる。数生成モジュールは、シーディングモジュールに結合され、擬似乱数生成器の内部状態に基づいて擬似ランダム出力を生成するように構成できる。シード選択モジュールは、(a)擬似乱数生成器が初めて開始された場合、予め記憶された原始シードを選択して、擬似乱数生成器の始動内部状態を初期化し、および/または(b)擬似乱数生成器が以前に開始されていた場合、予め記憶されたシードファイルから初期化シードを選択して、擬似乱数生成器の始動内部状態を初期化するようにさらに構成できる。シード選択モジュールは、記憶された原始シードを一度使用された後に破棄することができる。数生成モジュールは、シードファイル中に記憶されており、初期化シードとして使用される擬似ランダム出力を与えることができる。
1つの特徴によれば、擬似乱数生成器は、シーディングモジュールに結合された信頼できる時間ソースをさらに含むことができる。シーディングモジュールは、(a)信頼できる時間ソースから時間値を取得し、(b)時間値と初期化シードを組み合わせて、変更された初期化シードを取得し、(c)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化するようにさらに構成できる。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせることができる。
別の特徴によれば、擬似乱数生成器は、シードファイルを記憶するためのセキュアなファイルシステムをさらに含むことができる。シードファイルはプライマリシードファイルとシャドーシードファイルとを含むことができる。シード選択モジュールは、(a)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断し、(b)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化し、および/または(c)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化するようにさらに構成できる。
したがって、(a)擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化するための手段と、(b)記憶された原始シードを一度使用された後に破棄するための手段と、(c)エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得するための手段と、(d)擬似乱数生成器の内部状態を新たなシードで予測不可能な状態に変更するための手段と、(e)擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成するための手段と、(f)擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶するための手段と、(g)擬似乱数生成器の製造中に原始シードをセキュアな位置に記憶するための手段と、(h)擬似乱数生成器が再始動された後にシードファイルから初期化シードを取り出すための手段と、(i)擬似乱数生成器の始動内部状態を初期化シードで初期化するための手段と、および/または(j)シードファイルのコンテンツを擬似乱数生成器から取得された新たな初期化シードと置き換えるための手段とを備える擬似乱数生成器も提供される。
一例では、擬似乱数生成器は、(a)擬似乱数生成器が再始動された後にシードファイルから初期化シードを取り出すための手段と、(b)信頼できるソースから時間値を取得するための手段と、(c)時間値と初期化シードを組み合わせて、変更された初期化シードを取得するための手段と、(d)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化するための手段と、および/または(e)シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えるための手段とをさらに備えることができる。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせることができる。
別の例では、擬似乱数生成器はまた、(a)擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶するための手段と、(b)擬似ランダム出力をセキュアなファイルシステム中のシャドーシードファイル中に記憶するための手段と、(c)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断するための手段と、(d)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化するための手段と、および/または(e)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化するための手段とを備えることができる。
メモリデバイスと処理デバイスとを備える処理回路も提供される。メモリデバイスは、擬似乱数生成器の内部状態を記憶するための1つまたは複数の内部状態レジスタを含むことができる。処理デバイスは、メモリデバイスに結合され、(a)擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化し、(b)記憶された原始シードを一度使用された後に破棄し、(c)エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得し、(d)その新たなシードを擬似乱数生成器に再シードして、擬似乱数生成器の内部状態を予測不可能な状態に変更し、(e)擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成し、および/または(f)擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶するように構成できる。
1つの特徴によれば、処理デバイスは、(a)擬似乱数生成器が再始動された後、シードファイルから初期化シードを取り出し、(b)信頼できるソースから時間値を取得し、(c)時間値と初期化シードを組み合わせて、変更された初期化シードを取得し、(d)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化し、および/または(e)シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えるようにさらに構成できる。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせることができる。
1つの特徴によれば、処理デバイスは、(a)擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶し、(b)擬似ランダム出力をセキュアなファイルシステム中のシャドーシードファイル中に記憶し、(c)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断し、(d)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化し、および/または(e)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化するようにさらに構成できる。
プロセッサによって実行されたとき、プロセッサに、(a)擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化させ、(b)記憶された原始シードを一度使用された後に破棄させ、(c)エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得させ、(d)その新たなシードを擬似乱数生成器に再シードして、擬似乱数生成器の内部状態を予測不可能な状態に変更させ、(e)擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成させ、および/または(f)擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶させる、擬似ランダム出力を生成するための1つまたは複数の命令を有する機械可読媒体も提供される。
一例では、機械可読媒体は、プロセッサによって実行されたとき、プロセッサに、(a)擬似乱数生成器が再始動された後、シードファイルから初期化シードを取り出させ、(b)信頼できるソースから時間値を取得させ、(c)時間値と初期化シードを組み合わせて、変更された初期化シードを取得させ、(d)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化させ、および/または(e)シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えさせる、1つまたは複数の命令をさらに有することができる。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせられる。
1つの特徴によれば、シードファイルはセキュアなファイルシステム中にプライマリシードファイルとシャドーシードファイルとを含むことができる。機械可読媒体は、プロセッサによって実行されたとき、プロセッサに、(a)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断させ、(b)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化させ、および/または(c)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化させる、1つまたは複数の命令をさらに有することができる。
本明細書で説明する1つまたは複数の新規な特徴を実装することができる擬似乱数生成器の一例を示すブロック図。 初期シード管理を有する擬似乱数生成器の一例を示すブロック図。 一例による、予め記憶されたシードを使用して擬似乱数生成器を初期化するための方法を示す図。 電源遮断を予測し、擬似乱数生成器の後続の始動初期化用の擬似ランダム出力を記憶するシステムを示すブロック図。 何らかの電源切断イベントを検出すると初期化シードを生成し、保存するようにデバイスを動作させるための方法を示す図。 擬似乱数生成器用の初期化シードを記憶するためにプライマリシードファイルおよびシャドーシードファイルを使用するための方法を示す図。 シードファイルのハッキングに対処するために時間構成要素をどのように利用することができるかについての一例を示すブロック図。 擬似乱数生成器用の初期化シードの一部として時間を組み合わせるための方法を示す図。 擬似乱数生成器を実装するように構成された記憶媒体とプロセッサとを備える処理回路を示すブロック図。
詳細な説明
以下の説明では、実施形態の十分な理解が得られるように具体的な詳細を与える。ただし、実施形態は、これらの具体的な詳細なしに実施できることを、当業者は理解されよう。たとえば、実施形態を不必要な詳細で不明瞭にしないために、回路をブロック図で示すか、または全く図示しないことがある。他の場合、実施形態を不明瞭にしないために、周知の回路、構造および技術を詳細に図示しないことがある。
また、実施形態を、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明することがあることに留意されたい。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行できる。さらに、動作の順序を並べ替えることができる。プロセスは、その動作が完了すると終了する。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することがある。プロセスが関数に対応する場合、その終了は呼出し側関数またはメイン関数への関数の戻りに対応する。
さらに、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表す。「機械可読媒体(machine readable medium)」という用語は、携帯または固定記憶デバイス、光記憶デバイス、無線チャネル、および(1つまたは複数の)命令および/またはデータを記憶、含有、または搬送することが可能な様々な他の媒体を含むが、それらに限定されない。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの組合せによって実装できる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装した場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは記憶媒体または他の記憶手段など機械可読媒体中に記憶できる。プロセッサは必要なタスクを実行することができる。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツをパッシングおよび/または受信することによって別のコードセグメントまたはハードウェア回路に結合できる。情報、引数、パラメータ、データなどは、特にメモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信を含む適切な手段によってパッシング、転送、または送信できる。
1つの特徴では、予め記憶された初期化シードを使用することによる擬似乱数生成器のためのセキュアなシーディングおよび再シーディング方式を提供する。この方式は、エントロピー収集が利用できないときでも、擬似乱数生成器を未知状態に初期化する。
シーディング方式の別の態様では、プライマリシードファイルおよびシャドーシードファイルをシーディング情報とともにセキュアなファイルシステム中に保持することができる。プライマリシードファイルが壊れている場合、擬似乱数生成器はシャドーシードファイルのコンテンツをシードされる。
さらに別の特徴では、シードファイルのハッキング対策として、信頼できるタイマをシーディング機構の一部として使用することができる。予め記憶されたシード情報が損なわれているときでも、信頼できるタイマまたはクロックを予め記憶されたシード情報と混合して、エントロピーを追加する。
図1は、本明細書で説明する1つまたは複数の新規の特徴を実装することができる擬似乱数生成器の一例を示すブロック図である。始動すると、擬似乱数生成器102は、シード生成器モジュール104からシードを受信して、擬似乱数生成器102を未知状態に初期化するように構成される。擬似乱数生成器102を1つまたは複数のアプリケーション106、108および110によって呼び出して、ビット、シンボルおよび/または数の擬似ランダム出力を取得することができる。
擬似乱数生成器102の状態を初期化するために使用するエントロピーの収集には時間がかかるので、1つの特徴では、この目的で始動シード(startup seed)を予め記憶する。たとえば、シード生成器モジュール104はそのような始動シードを記憶し、それにより、他のエントロピー情報が利用できないときでも、そのような始動シードを使用して擬似乱数生成器を予測不可能な状態に初期化することができる。したがって、擬似乱数生成器102が始動すると、それを予め記憶されたシードによって迅速にシードすることができる。
図2は、初期シード管理を有する擬似乱数生成器の一例を示すブロック図である。擬似乱数生成器は、携帯電話、コンピュータ、回路基板、チップ、プロセッサ、半導体デバイス、セットトップボックスなどの電子デバイス、および/またはソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードモジュールの一部として組み込むことができる。デバイス固有の原始シード200は、電子デバイスの製造中に記憶デバイス202(たとえば、不揮発性メモリ)中に記憶できる。このプロセスでは、原始シード200は記憶デバイス202の外部インターフェースを介して記憶できる。そのような原始シード200は、たとえば、異なる乱数発生器を使用してオフラインで生成できる。後続の外部の読取りまたは書込み動作ができないように、原始シード200が記憶されている記憶デバイス202へのアクセスは、好ましくは制限される。これにより、ハッカーは原始シード200を変更または知ることができなくなる。
擬似乱数生成器212が動作のために初めて電源投入されると、原始シード200が擬似乱数生成器212に供給される。原始シード200中のエントロピーにより、擬似乱数生成器212は確実に未知または予測不可能な状態に初期化される。そうすることによって、擬似乱数生成器212は、始動するとすぐに、種々のアプリケーション用の擬似乱数(出力)を与えることができる。
一定時間後、エントロピー収集モジュール204は擬似乱数生成器212に別のシードを与え、これが擬似乱数生成器212に再シードされる。たとえば、擬似乱数生成器212にランダムデータのMバイト(たとえば、M=128バイト)を要求し、これらのMバイトをセキュアなファイルシステム208中のシードファイル206に記憶するプロセスを開始することができる。シードファイル206が生成されると、記憶デバイス202中の原始シード200は削除または破棄される(たとえば、すべてゼロにリセットされる)。
シード選択モジュール210は、擬似乱数生成器212と、1つまたは複数のシードソース202、204、および208とに結合できる。たとえば、擬似乱数生成器が開始または電源投入されると、シード選択モジュール210は原始シード200かシードファイル206かを選択するように構成できる。さらに、シード選択モジュール210は、擬似乱数生成器212を定期的にまたは散発的に再シードするために使用する(1つまたは複数の)シードをエントロピー収集モジュール204から取得することができる。エントロピー収集モジュール204は、後でシードを生成するために使用できる1つまたは複数のソースからランダムデータまたは情報を収集するように構成できる。
その後、擬似乱数生成器212が再始動されると(たとえば、パワーサイクリングの後)、シード選択モジュール210は記憶デバイス202を検査して、有効な原始シードが利用可能かどうかを判断する。記憶デバイス202中の原始シード200が削除または破棄されたので、記憶デバイス202は、シードファイル206が利用可能であること、および/またはそれを使用すべきであることを示すフラグまたはゼロを含むことができる。次いで、シード選択モジュール210は、シードファイル206から初期化シードを取得し、それを使用して擬似乱数生成器212の内部状態を未知または予測不可能な状態に初期化する。セキュアなファイルシステム208はシードファイル206の秘匿性および完全性を保証する。一例では、セキュアなファイルシステムは、暗号を使用して、シードファイル206のコンテンツの秘匿性および完全性を保護することができる。別の例では、セキュアなファイルシステムは、デバイスのユーザおよび/またはオペレーティングシステムがアクセス不可能であるが、シード選択モジュール210および/または擬似乱数生成器212によってアクセス可能である。
擬似乱数生成器212は、擬似乱数生成器212の(1つまたは複数の)内部状態を初期化するためにシードを受信するシーディングモジュール214を含むことができる。次いで、数生成器モジュール216は、シーディングモジュール214によって設定された状態に基づいて擬似ランダム出力を生成する。
擬似乱数生成器212からの擬似ランダム出力のいくつかは、後続の電源投入用の初期化シードとして記憶できる。シードファイル206中に新たなランダム情報を記憶し、それを使用して始動時に擬似乱数生成器212に再シードするプロセスが繰り返され、それにより毎回異なる初期化シードが使用されることになる。一実装形態では、擬似乱数生成器212が(たとえば、エントロピー収集モジュール204からの)エントロピーを含むシードを再シードされた後に、(初期化シードとして)シードファイル206中に記憶された擬似ランダム出力が取得される。
代替実装形態では、製造または他のセキュアな初期化手順の間に、原始シード200を代わりにシードファイル206中に直接記憶する。次いで、擬似乱数生成器212の最初の初期化後に原始シードを破棄し、擬似乱数生成器212の後続の再シーディング用にランダム情報をシードファイル206中に記憶する。
図3は、一例による、予め記憶されたシードを使用して擬似乱数生成器を初期化するための方法を示す。擬似乱数生成器の電源投入初期化(302)の間、原始シードが利用可能であるかどうかに関する判断を行う(304)。原始シードが利用可能であることは、擬似乱数生成器が初期化されるのは今回が初めてであることを示す。そのような原始シードが利用可能である場合、セキュアな記憶ソースから原始シードを取得し(306)、原始シードの記憶されたバージョンを使用された後で破棄する(308)。記憶された原始シードを破棄することは、擬似乱数生成器が以前に開始されたことを示す将来のインジケータの役目を果たす。代替的に、同じこと示すためにフラグをセキュアな位置に設定することができる。次いで、擬似乱数生成器の始動内部状態を原始シードで初期化して(310)、擬似ランダム出力を生成する(312)。この時点で、擬似乱数生成器は擬似ランダム出力(たとえば、数、ビット、バイト、シンボルなど)を呼出し側アプリケーションに与えることが可能である。
エントロピーの1つまたは複数のソースを使用して、新たなシードを取得する(314)。擬似乱数生成器の内部状態を新たなシードで予測不可能な状態に変更する(316)。次いで、擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成する(318)。擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶する(320)。始動内部状態(startup internal state)とは、電源投入された直後の擬似乱数生成器の状態をさす。
擬似乱数生成器が以後に電源投入されたとき、原始シードはもはや利用できない(304)。したがって、代わりに、予め記憶されたシードをシードファイルから取得する(322)。次いで、擬似乱数生成器の始動内部状態を予め記憶されたシードで初期化し(324)、擬似乱数生成器が擬似ランダム出力を生成することが可能になる(312)。擬似乱数生成器の後続の始動の間、この初期シーディングプロセスを繰り返す。
図4は、電源遮断を予測し、擬似乱数生成器の後続の始動初期化用の擬似ランダム出力を記憶するシステムを示すブロック図である。擬似乱数生成器は電子デバイスの一部(たとえば、チップ、回路など)として組み込むことができる。そのようなデバイスは、(1)ユーザがデバイスの電源をオフにしたとき、(2)デバイスが何らかの(1つまたは複数の)エラーによりそれ自体をシャットダウンしたとき、および/または(3)デバイスがクラッシュしたときに、電源切断される。
制御モジュール402は、様々なソースから情報を収集し、デバイスが遮断しようとしているかどうかを判断することができる。たとえば、ユーザがデバイスをオフにしたときを検出するために、制御モジュール402をユーザインターフェース404(たとえば、オン/オフスイッチなど)に結合することができる。同様に、エラーが起こったときを検出し、デバイスを制御された方法で遮断するエラーハンドラ406に制御モジュール402を結合することができる。ユーザインターフェース404またはエラーハンドラ406のいずれかが、デバイスがオフにされようとしていることを示すと、擬似乱数生成器410に、擬似ランダム出力を生成し、それをセキュアなファイルシステム412中のシードファイル414中に記憶させるように制御モジュール402を構成することができる。
図5は、何らかの電源切断イベントを検出すると初期化シードを生成し、保存するようにデバイスを動作させるための方法を示す。たとえば、電源切断信号が検出された場合(502)、またはシステムエラーが検出された場合(504)、デバイスの電源を切断する(510)前に、擬似ランダム出力を生成し(506)、セキュアなシードファイル中に記憶する(508)。セキュアなシードファイル中に記憶された擬似ランダム出力は、擬似乱数生成器を初期化するために、次の電源投入時に使用できる。
しかしながら、致命的エラーが起こる(たとえば、デバイスが電力を使い果たすか、またはサービス妨害攻撃によりメモリ破損が起こる)と、デバイスのクラッシュを検出することが困難になり、デバイスが遮断する前にシードファイル414を首尾よく更新することができない。この問題に対処するために、タイマ408が制御モジュール402に結合される。制御モジュール402は、擬似乱数生成器410がシードファイル414中に記憶される擬似ランダム出力を与えることを、制御モジュール402に要求させる周期信号をタイマ408から受信する。
シードファイル414を使用することの1つの脅威は、シードファイルの偽造である。1つの対策は、シードファイル414を特権的なパーティション中のセキュアなファイルシステム412中に配置することである。特権的なパーティションは、正常なファイルシステム外に常駐することができ、したがってシステム更新によって消去されることがない。システムの正常なファイルアクセスインターフェースは、セキュアなファイルシステム412の存在に気づかない。
別の特徴では、プライマリシードファイル414とシャドーシードファイル416とを(特権的なパーティション内の)セキュアなファイルシステム412中に保持することができる。シード情報は、最初にプライマリシードファイル414に保存され、次いでシャドーシードファイル416に保存される。プライマリシードファイル414への書込み中に致命的エラーが起きた場合、以前に使用されていないシード情報がまだシャドーシードファイル416中に記憶されており、次の電源投入時に擬似乱数生成器410を初期化するために使用される。このように、擬似乱数生成器410を初期化するための電源投入の間、常に良好なシード情報が入手可能である。
図6は、擬似乱数生成器用の初期化シードを記憶するためにプライマリシードファイルおよびシャドーシードファイルを使用するための方法を示す。擬似乱数生成器から擬似ランダム出力を取得する(602)。擬似ランダム出力(たとえば、ビット、シンボル、数など)を最初にプライマリシードファイル中に記憶し(604)、その後初期化シードとして使用する。擬似ランダム出力は、プライマリシードファイル中に以前に記憶された他のコンテンツと置き換わることができる。次いで、同じ擬似ランダム出力をシャドーシードファイル中に記憶する(606)。その後、擬似乱数生成器の電源を切断する(608)。
擬似乱数生成器の電源を再び投入すると(610)、プライマリシードファイルの完全性または真正性を検査して、それが有効かどうかを判断する(612)。プライマリシードファイルが有効な場合、初期化シードをプライマリシードファイルのコンテンツから取得する(614)。そうではなく、プライマリシードファイルが有効ではない(たとえば、ファイルコンテンツが壊れている)場合、初期化シードをシャドーシードファイルのコンテンツから取得する(616)。初期化シードを使用して、擬似乱数生成器を初期化する(618)。次いで、擬似乱数生成器は擬似ランダム出力を呼出し側アプリケーションに与える。擬似乱数生成器が電源切断および投入されるたびにこのプロセスを繰り返し、それにより、異なる初期化シードを使用して擬似乱数生成器を初期化することができる。
一部の実装形態では、(セキュアなファイルシステム412が保持されている)特権的なパーティションを使用することが不可能な場合がある。そのような特権的なパーティションがないと、ハッカーは、バックアップされた以前のシードファイルの正規のコピーでシードファイルを上書きすることが可能である。その場合、ハッカーは、(たとえば、電源を切断することによって)擬似乱数生成器を組み込んだデバイスを即時にクラッシュさせ、それによってデバイスをだまして、次の電源投入サイクル時に以前のシードファイルを使用させることができる。以前のシードファイルは、正規のコピーであるので、電源投入段階の間、擬似乱数生成器によって受け入れられることになる。その場合、擬似乱数生成器は、エントロピー収集モジュールによって再シードされるまで、ハッカーが同じ以前のシードファイルを使用するたびに、電源投入段階の間、同じ出力シーケンスを生成する。したがって、ハッカーは擬似乱数生成器の初期出力を制御することが可能である。
そのようなハッキングに対処するために、1つの特徴では、ハッキングに対して擬似乱数生成器をさらに保護するために始動初期化シードの一部として時間を使用することができる。図7は、シードファイルのハッキングに対処するために時間構成要素をどのように利用することができるかについての一例を示すブロック図である。時間キャプチャモジュール702は、信頼できる内部クロックから時間をキャプチャするために、またはネットワーク(たとえば、CDMAネットワーク)から何らかの時間信号をキャプチャするために使用される。シードファイル704からのシードコンテンツsは(時間キャプチャモジュール702からの)時間tと混合されて、初期シード708を形成する。混合関数706は、時間tの各ビット変化が関数出力の範囲全体に分散されるように選択または構成される。このようにして、時間tが変化すると初期化シード708全体が変化することになる。混合関数706の一例はハッシュアルゴリズム(hash algorithm)である(たとえば、init_seed=hash(s||t)、ここで「||」は結合(concatenation)を示す)。したがって、同じシードファイルを再使用する場合でも、新たな時間t’により初期シードhash(s||t’)はhash(s||t)とは異なる。次いで、初期シード708を使用して、擬似乱数生成器を初期化することができる。
図8は、擬似乱数生成器用の初期化シードの一部として時間を組み合わせるための方法を示す。擬似乱数生成器を電源投入すると(802)、予め記憶されたシードをシードファイルから取得する(804)。信頼できる時間を(セキュアなソースから)取得し(806)、予め記憶されたシードと組み合わせて、新たな初期化シードを形成する(808)。新たな初期化シードを使用して、擬似乱数生成器を初期化し(810)、擬似ランダム出力を生成する(812)。
図9は、擬似乱数生成器を実装するように構成された記憶媒体902とプロセッサ904とを備える処理回路900を示すブロック図である。記憶媒体902は、たとえば、擬似乱数生成器の内部状態を記憶するための1つまたは複数の内部状態レジスタを含むメモリデバイスおよび/またはハードドライブとすることができる。処理デバイス904は、擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化するように構成できる。記憶された原始シードは、一度使用された後に破棄することができる。エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得する。擬似乱数生成器を新たなシードで初期化し、擬似乱数生成器の内部状態を予測不可能な状態に変更する。擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成する。擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶する。
一実装形態では、処理デバイスは、(1)擬似乱数生成器が再始動された後、シードファイルから初期化シードを取り出し、(2)信頼できるソースから時間値を取得し、(3)時間値と初期化シードを組み合わせて、変更された初期化シードを取得し、(4)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化し、および/または(5)シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えるようにさらに構成できる。時間値と初期化シードは、時間値が、変更された初期化シードの範囲全体に分散されるように組み合わせることができる。
処理デバイスは、(1)擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイルおよびシャドーファイル中に記憶し、(2)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断し、(3)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化し、および/または(4)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化するようにさらに構成できる。
別の例では、記憶媒体902は、プロセッサ904によって実行されたとき、プロセッサ904に、(1)擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化させ、(2)記憶された原始シードを一度使用された後に破棄させ、(3)エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得させ、(4)その新たなシードを擬似乱数生成器に再シードして、擬似乱数生成器の内部状態を予測不可能な状態に変更させ、(5)擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成させ、および/または(6)擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶させることができる命令を記憶する機械可読媒体とすることができる。機械可読媒体(記憶媒体902)は、プロセッサ904によって実行されたとき、プロセッサに、(1)擬似乱数生成器が再始動された後、シードファイルから初期化シードを取り出させ、(2)信頼できるソースから時間値を取得させ、(3)時間値と初期化シードを組み合わせて、変更された初期化シードを取得させ、(4)擬似乱数生成器の始動内部状態を変更された初期化シードで初期化させ、および/または(5)シードファイルのコンテンツを擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えさせる、1つまたは複数の命令をさらに有することができる。
別の特徴によれば、シードファイルはセキュアなファイルシステム中にプライマリシードファイルとシャドーシードファイルとを含むことができる。機械可読媒体(記憶デバイス902)は、プロセッサによって実行されたとき、プロセッサに、(1)擬似乱数生成器を再始動すると、プライマリシードファイルの完全性が損なわれているかどうかを判断させ、(2)プライマリファイルの完全性が首尾よく検証された場合、プライマリシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化させ、および/または(3)そうでない場合、シャドーシードファイルの初期化シードで擬似乱数生成器の始動内部状態を初期化させる、1つまたは複数の命令をさらに有することができる。
したがって、(1)擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化するための手段と、(2)記憶された原始シードを一度使用された後に破棄するための手段と、(3)エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得するための手段と、(4)擬似乱数生成器の内部状態を新たなシードで予測不可能な状態に変更するための手段と、(5)擬似乱数生成器の変更された内部状態に基づいて擬似ランダム出力を生成するための手段と、(6)擬似ランダム出力を擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶するための手段とを備える擬似乱数生成器が提供される。擬似乱数生成器は、(7)擬似乱数生成器の製造中に原始シードをセキュアな位置に記憶するための手段と、(8)擬似乱数生成器が再始動された後にシードファイルから初期化シードを取り出すための手段と、(9)擬似乱数生成器の始動内部状態を初期化シードで初期化するための手段と、および/または(10)シードファイルのコンテンツを擬似乱数生成器から取得された新たな初期化シードと置き換えるための手段とをさらに備えることができる。
図1、図2、図3、図4、図5、図6、図7、図8および/または図9で示した構成要素、ステップ、および/または関数の1つまたは複数を、擬似乱数生成の動作に影響を及ぼすことなく、単一の構成要素、ステップ、または関数に再編成および/または組み合わせることができ、あるいは、いくつかの構成要素、ステップ、または関数で実施することができる。また、本発明から逸脱することなく追加の要素、構成要素、ステップ、および/または関数を追加することができる。図1、図2、図4、図7および/または図9に示した装置、デバイス、および/または構成要素は、図3、図5、図6および/または図8に記載した方法、特徴、またはステップの1つまたは複数を実行するように構成できる。本明細書に記載の新規のアルゴリズムは、ソフトウェアおよび/または組込みハードウェアで効率的に実施できる。
さらに、本明細書で開示する実施形態に関連して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能をハードウェアで実装するかソフトウェアで実装するかは、システム全体に課せられた特定の適用および設計上の制約に依存する。
実施形態についての説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置、ならびに多くの代替形態、修正形態、および変更形態に容易に適用できることが当業者には明らかであろう。

Claims (30)

  1. 擬似乱数生成器を動作させるための方法であって、
    前記擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化することと、
    前記記憶された原始シードを一度使用された後に破棄することと、
    エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得することと、
    前記擬似乱数生成器の前記内部状態を前記新たなシードで予測不可能な状態に変更することと、
    前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成することと、
    前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶することと
    を備える方法。
  2. 前記擬似乱数生成器の製造中に前記原始シードをセキュアな位置に記憶すること
    をさらに備える、請求項1に記載の方法。
  3. 前記擬似乱数生成器の再シーディングが間隔タイマに従って定期的に実行される、請求項2に記載の方法。
  4. 前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
    前記擬似乱数生成器の前記始動内部状態を前記初期化シードで初期化することと、
    前記シードファイルのコンテンツを前記擬似乱数生成器から取得された新たな初期化シードと置き換えることと
    をさらに備える、請求項1に記載の方法。
  5. 前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すことと、
    信頼できるソースから時間値を取得することと、
    前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得することと、
    前記擬似乱数生成器の始動内部状態を前記変更された初期化シードで初期化することと、
    前記シードファイルの前記コンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えることと
    をさらに備える、請求項1に記載の方法。
  6. 前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わせられる、
    請求項5に記載の方法。
  7. 前記擬似ランダム出力をシードファイル中に記憶することが、
    前記擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶することと、
    前記擬似ランダム出力を前記セキュアなファイルシステム中のシャドーシードファイル中に記憶することとを含む、
    請求項1に記載の方法。
  8. 前記擬似乱数生成器を再始動すると、前記プライマリシードファイルの完全性が損なわれているかどうかを判断することと、
    前記プライマリファイルの前記完全性が首尾よく検証された場合、前記プライマリシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化することと、
    そうでない場合、前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化することと
    をさらに備える、請求項7に記載の方法。
  9. 擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化するための手段と、
    前記記憶された原始シードを一度使用された後に破棄するための手段と、
    エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得するための手段と、
    前記擬似乱数生成器の前記内部状態を前記新たなシードで予測不可能な状態に変更するための手段と、
    前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成するための手段と、
    前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶するための手段と
    を備える擬似乱数生成器。
  10. 前記擬似乱数生成器の製造中に前記原始シードをセキュアな位置に記憶するための手段
    をさらに備える、請求項9に記載の擬似乱数生成器。
  11. 前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すための手段と、
    前記擬似乱数生成器の前記始動内部状態を前記初期化シードで初期化するための手段と、
    前記シードファイルのコンテンツを前記擬似乱数生成器から取得された新たな初期化シードと置き換えるための手段と
    をさらに備える、請求項9に記載の擬似乱数生成器。
  12. 前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出すための手段と、
    信頼できるソースから時間値を取得するための手段と、
    前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得するための手段と、
    前記擬似乱数生成器の始動内部状態を前記変更された初期化シードで初期化するための手段と、
    前記シードファイルの前記コンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えるための手段と
    をさらに備える、請求項9に記載の擬似乱数生成器。
  13. 前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わせられる、
    請求項12に記載の擬似乱数生成器。
  14. 前記擬似ランダム出力をシードファイル中に記憶することが、
    前記擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶するための手段と、
    前記擬似ランダム出力を前記セキュアなファイルシステム中のシャドーシードファイル中に記憶するための手段とを含む、
    請求項9に記載の擬似乱数生成器。
  15. 前記擬似乱数生成器を再始動すると、前記プライマリシードファイルの完全性が損なわれているかどうかを判断するための手段と、
    前記プライマリファイルの前記完全性が首尾よく検証された場合、前記プライマリシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化するための手段と、
    そうでない場合、前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化するための手段と
    をさらに備える、請求項14に記載の擬似乱数生成器。
  16. 1つまたは複数のシードソースから1つのシードを選択するように構成されたシード選択モジュールと、
    前記シード選択モジュールに結合され、前記シード選択モジュールによって与えられるシードに従って擬似乱数生成器の内部状態を調整するように構成されたシーディングモジュールと、
    前記シーディングモジュールに結合され、前記擬似乱数生成器の前記内部状態に基づいて擬似ランダム出力を生成するように構成された数生成モジュールと
    を備える擬似乱数生成器であって、
    前記シード選択モジュールが、
    前記擬似乱数生成器が初めて開始された場合、予め記憶された原始シードを選択して、前記擬似乱数生成器の始動内部状態を初期化し、
    前記擬似乱数生成器が以前に開始されていた場合、予め記憶されたシードファイルから初期化シードを選択して、前記擬似乱数生成器の前記始動内部状態を初期化するように、さらに構成される、擬似乱数生成器。
  17. 前記シード選択モジュールが、前記記憶された原始シードを一度使用された後に破棄するようにさらに構成される、請求項16に記載の擬似乱数生成器。
  18. 前記数生成モジュールが、前記シードファイル中に記憶されており、前記初期化シードとして使用される擬似ランダム出力を与える、請求項16に記載の擬似乱数生成器。
  19. 前記シーディングモジュールに結合された信頼できる時間ソースをさらに備え、前記シーディングモジュールが、
    前記信頼できる時間ソースから時間値を取得し、
    前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得し、
    前記擬似乱数生成器の始動内部状態を前記変更された初期化シードで初期化するようにさらに構成される、
    請求項16に記載の擬似乱数生成器。
  20. 前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わせられる、
    請求項19に記載の擬似乱数生成器。
  21. 前記シードファイルを記憶するためのセキュアなファイルシステムをさらに備え、前記シードファイルがプライマリシードファイルとシャドーシードファイルとを含み、
    前記シード選択モジュールが、
    前記擬似乱数生成器を再始動すると、前記プライマリシードファイルの完全性が損なわれているかどうかを判断し、
    前記プライマリファイルの前記完全性が首尾よく検証された場合、前記プライマリシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化し、
    そうでない場合、前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化するようにさらに構成される、
    請求項16に記載の擬似乱数生成器。
  22. 擬似乱数生成器の内部状態を記憶するための1つまたは複数の内部状態レジスタを含むメモリデバイスと、
    前記メモリデバイスに結合され、
    前記擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化し、
    前記記憶された原始シードを一度使用された後に破棄し、
    エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得し、
    前記新たなシードを前記擬似乱数生成器に再シードして、前記擬似乱数生成器の前記内部状態を予測不可能な状態に変更し、
    前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成し、
    前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶する、ように構成された処理デバイスと、
    を備える処理回路。
  23. 前記処理デバイスが、
    前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出し、
    信頼できるソースから時間値を取得し、
    前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得し、
    前記擬似乱数生成器の始動内部状態を前記変更された初期化シードで初期化し、
    前記シードファイルのコンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換える、ようにさらに構成される、
    請求項22に記載の処理回路。
  24. 前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わせられる、
    請求項23に記載の処理回路。
  25. 前記処理デバイスが、
    前記擬似ランダム出力をセキュアなファイルシステム中のプライマリシードファイル中に記憶し、
    前記擬似ランダム出力を前記セキュアなファイルシステム中のシャドーシードファイル中に記憶するようにさらに構成される、
    請求項22に記載の処理回路。
  26. 前記処理デバイスが、
    前記擬似乱数生成器を再始動すると、前記プライマリシードファイルの完全性が損なわれているかどうかを判断し、
    前記プライマリファイルの前記完全性が首尾よく検証された場合、前記プライマリシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化し、
    そうでない場合、前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化するようにさらに構成される、
    請求項25に記載の処理回路。
  27. プロセッサによって実行されたとき、前記プロセッサに、
    擬似乱数生成器の始動内部状態を予め記憶された原始シードで初期化させ、
    前記記憶された原始シードを一度使用された後に破棄させ、
    エントロピーの1つまたは複数の予測不可能なソースから新たなシードを取得させ、
    前記新たなシードを前記擬似乱数生成器に再シードして、前記擬似乱数生成器の前記内部状態を予測不可能な状態に変更させ、
    前記擬似乱数生成器の前記変更された内部状態に基づいて擬似ランダム出力を生成し、
    前記擬似ランダム出力を前記擬似乱数生成器の後続の始動内部状態用の初期化シードとしてシードファイル中に記憶させる、
    擬似ランダム出力を生成するための1つまたは複数の命令を有する、機械可読媒体。
  28. プロセッサによって実行されたとき、前記プロセッサに、
    前記擬似乱数生成器が再始動された後に、前記シードファイルから前記初期化シードを取り出させ、
    信頼できるソースから時間値を取得させ、
    前記時間値と初期化シードを組み合わせて、変更された初期化シードを取得させ、
    前記擬似乱数生成器の始動内部状態を前記変更された初期化シードで初期化させ、
    前記シードファイルのコンテンツを前記擬似乱数生成器の擬似ランダム出力から取得された新たな初期化シードと置き換えさせる、
    1つまたは複数の命令をさらに有する、請求項27に記載の機械可読媒体。
  29. 前記時間値と初期化シードが、前記時間値が前記変更された初期化シードの範囲全体に分散されるように組み合わせられる、請求項28に記載の機械可読媒体。
  30. 前記シードファイルが、
    セキュアなファイルシステム中のプライマリシードファイルとシャドーシードファイルとを含み、
    プロセッサによって実行されたとき、前記プロセッサに、
    前記擬似乱数生成器を再始動すると、前記プライマリシードファイルの完全性が損なわれているかどうかを判断させ、
    前記プライマリファイルの前記完全性が首尾よく検証された場合、前記プライマリシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化させ、
    そうでない場合、前記シャドーシードファイルの前記初期化シードで前記擬似乱数生成器の前記始動内部状態を初期化させる1つまたは複数の命令をさらに有する、
    請求項27に記載の機械可読媒体。
JP2010506480A 2007-04-23 2008-04-23 擬似乱数生成器のための初期シード管理 Pending JP2010525417A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/738,972 US20080263117A1 (en) 2007-04-23 2007-04-23 Initial seed management for pseudorandom number generator
PCT/US2008/061341 WO2008131444A2 (en) 2007-04-23 2008-04-23 Initial seed management for pseudorandom number generator

Publications (1)

Publication Number Publication Date
JP2010525417A true JP2010525417A (ja) 2010-07-22

Family

ID=39682744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010506480A Pending JP2010525417A (ja) 2007-04-23 2008-04-23 擬似乱数生成器のための初期シード管理

Country Status (8)

Country Link
US (1) US20080263117A1 (ja)
EP (1) EP2150888B1 (ja)
JP (1) JP2010525417A (ja)
KR (1) KR101237104B1 (ja)
CN (1) CN101663642A (ja)
AT (1) ATE534949T1 (ja)
TW (1) TW200901723A (ja)
WO (1) WO2008131444A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014526094A (ja) * 2011-07-15 2014-10-02 イリテック インコーポレイテッド 生体イメージ情報を含む使い捨てパスワードを用いた認証方法及び装置取付装置
JP2019531541A (ja) * 2016-08-19 2019-10-31 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
JP2022517534A (ja) * 2018-12-28 2022-03-09 マイクロン テクノロジー,インク. リプレイ保護ノンス生成

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019802B2 (en) * 2005-08-24 2011-09-13 Qualcomm Incorporated Cryptographically secure pseudo-random number generator
KR20080104594A (ko) * 2007-05-28 2008-12-03 삼성전자주식회사 오프라인 장치를 위한 온라인 인증서 검증 장치 및 방법
US8250129B2 (en) * 2007-06-22 2012-08-21 Lsi Corporation Cryptographic random number generator using finite field operations
US8369521B2 (en) * 2008-10-17 2013-02-05 Oracle International Corporation Smart card based encryption key and password generation and management
US8226467B2 (en) 2008-11-12 2012-07-24 Igt Gaming system and method enabling player participation in selection of seed for random number generator
US9680637B2 (en) 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
US8239733B2 (en) * 2009-11-27 2012-08-07 Skymedi Corporation Memory device with protection capability and method of accessing data therein
GB2484931B (en) * 2010-10-26 2014-04-30 Nds Ltd Efficient delivery of structured data items
US8682948B2 (en) * 2011-01-06 2014-03-25 Microsoft Corporation Scalable random number generation
JP2012198065A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd 半導体集積回路、試験方法、情報処理装置、及びプログラム
EP2715968A4 (en) * 2011-05-26 2015-08-12 Certicom Corp RANDOM FOR ENCRYPTION OPERATIONS
KR101818445B1 (ko) 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
CN103092566B (zh) * 2011-11-07 2016-08-24 国民技术股份有限公司 伪随机数种子、伪随机数生成的方法和装置
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
US9092283B2 (en) 2012-03-30 2015-07-28 Freescale Semiconductor, Inc. Systems with multiple port random number generators and methods of their operation
US8856198B2 (en) * 2012-03-30 2014-10-07 Freescale Semiconductor, Inc. Random value production methods and systems
KR101373283B1 (ko) 2012-04-23 2014-03-11 한국전자통신연구원 비휘발성 메모리를 이용한 이중 트랙 방식의 난수 발생 방법 및 이를 위한 장치
US8954723B2 (en) 2012-05-09 2015-02-10 International Business Machines Corporation Anonymization of data within a streams environment
US9032005B2 (en) 2012-05-22 2015-05-12 Electronics And Telecommunications Research Institute Random number generation method and apparatus using low-power microprocessor
KR101438010B1 (ko) * 2012-05-22 2014-09-05 한국전자통신연구원 저전력 마이크로프로세서를 이용한 난수 발생 방법 및 이를 위한 장치
GB2502541A (en) * 2012-05-30 2013-12-04 Ibm Balancing consumption of random data using multiple sources with different levels of entropy
US9086936B2 (en) 2012-07-31 2015-07-21 International Business Machines Corporation Method of entropy distribution on a parallel computer
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
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
US9323499B2 (en) * 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US9552690B2 (en) 2013-03-06 2017-01-24 Igt System and method for determining the volatility of a game based on one or more external data feeds
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9306876B1 (en) * 2013-04-01 2016-04-05 Marvell Israel (M.I.S.L) Ltd. Multibank egress queuing system in a network device
US9542156B2 (en) * 2013-05-15 2017-01-10 Synopsys, Inc. Automatic control system and method for a true random number generator
DE102014206992A1 (de) * 2014-04-11 2015-10-15 Siemens Aktiengesellschaft Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
CN104469461A (zh) * 2014-12-19 2015-03-25 佛山市顺德区美的电热电器制造有限公司 随机数生成装置、电视机及随机数生成方法
US10348704B2 (en) * 2015-07-30 2019-07-09 Helder Silvestre Paiva Figueira Method for a dynamic perpetual encryption cryptosystem
CN106469042B (zh) * 2015-08-19 2019-05-28 阿里巴巴集团控股有限公司 伪随机数的生成方法和装置
CN105005462B (zh) * 2015-09-06 2017-08-08 电子科技大学 一种混合式随机数发生器及其产生随机数的方法
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
DE102016116042A1 (de) * 2016-08-29 2018-03-01 IPGATE Capital Holding AG Verfahren und System zum Öffnen und/oder Nutzung mindestens eines Fahrzeugs
US10503475B1 (en) * 2016-11-09 2019-12-10 The Florida State University Research Foundation, Inc. Forensically reproducible random number generator and associated method of use
CN107046564A (zh) * 2017-01-19 2017-08-15 腾讯科技(深圳)有限公司 一种数据选取方法及相关装置
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
US10776480B2 (en) 2018-04-02 2020-09-15 International Business Machines Corporation Producing volatile password hashing algorithm salts from hardware random number generators
CN110058843B (zh) * 2019-03-27 2023-03-03 创新先进技术有限公司 伪随机数的生成方法、装置和服务器
US11347860B2 (en) * 2019-06-28 2022-05-31 Seagate Technology Llc Randomizing firmware loaded to a processor memory
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11924338B2 (en) * 2020-11-04 2024-03-05 Advanced Micro Devices, Inc. Split random number generator
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
CN116034339A (zh) * 2021-08-25 2023-04-28 京东方科技集团股份有限公司 用于生成伪随机数的方法、随机数生成器和计算机可读介质
CN114466012B (zh) * 2022-02-07 2022-11-25 北京百度网讯科技有限公司 内容初始化方法、装置、电子设备和存储介质
US20240022400A1 (en) * 2022-07-12 2024-01-18 Veiovia Ltd. Computer implemented methods, apparatuses and software for random number generation based on genetic information
CN115277684A (zh) * 2022-09-29 2022-11-01 安徽华云安科技有限公司 文件传输方法、装置、设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675041U (ja) * 1993-03-19 1994-10-21 横河電機株式会社 データ二重化装置
JP2004158924A (ja) * 2002-11-01 2004-06-03 Hideji Ogawa ファイル転送システム、キーサーバ装置、ファイル送信装置、ファイル蓄積装置、ファイル受信装置、ならびに、プログラム
US20060104443A1 (en) * 2004-11-12 2006-05-18 Chari Suresh N Method, apparatus and system for resistance to side channel attacks on random number generators
WO2007037869A1 (en) * 2005-08-24 2007-04-05 Qualcomm Incorporated Cryptographically secure pseudo-random number generator

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727063A (en) * 1995-11-27 1998-03-10 Bell Communications Research, Inc. Pseudo-random generator
US5732138A (en) * 1996-01-29 1998-03-24 Silicon Graphics, Inc. Method for seeding a pseudo-random number generator with a cryptographic hash of a digitization of a chaotic system
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
US6104810A (en) * 1997-05-15 2000-08-15 International Business Machines Corporation Pseudorandom number generator with backup and restoration capability
US6044388A (en) * 1997-05-15 2000-03-28 International Business Machine Corporation Pseudorandom number generator
US6430170B1 (en) * 1999-05-27 2002-08-06 Qualcomm Inc. Method and apparatus for generating random numbers from a communication signal
US6253223B1 (en) * 1999-06-08 2001-06-26 General Instrument Corporation Robust random number generator
US7571199B1 (en) * 2000-11-15 2009-08-04 Microsoft Corporation Method and apparatus for generating random numbers
US6829628B2 (en) * 2001-05-02 2004-12-07 Portalplayer, Inc. Random number generation method and system
US7007050B2 (en) * 2001-05-17 2006-02-28 Nokia Corporation Method and apparatus for improved pseudo-random number generation
US20040162864A1 (en) * 2002-07-08 2004-08-19 Globespan Virata Inc. System and method for generating pseudo-random numbers
US7233965B2 (en) * 2002-09-30 2007-06-19 Sun Microsystems, Inc. Continuous random number generation method and apparatus
US6866584B2 (en) * 2003-02-21 2005-03-15 Igt Apparatus and method for generating a pool of seeds for a central determination gaming system
DE10357782B3 (de) * 2003-12-10 2005-05-04 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen von Zufallszahlen mit einem Pseudozufallsgenerator
US7359509B2 (en) * 2004-12-01 2008-04-15 Pitney Bowes Inc. Method and system for generation of cryptographic keys and the like

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675041U (ja) * 1993-03-19 1994-10-21 横河電機株式会社 データ二重化装置
JP2004158924A (ja) * 2002-11-01 2004-06-03 Hideji Ogawa ファイル転送システム、キーサーバ装置、ファイル送信装置、ファイル蓄積装置、ファイル受信装置、ならびに、プログラム
US20060104443A1 (en) * 2004-11-12 2006-05-18 Chari Suresh N Method, apparatus and system for resistance to side channel attacks on random number generators
WO2007037869A1 (en) * 2005-08-24 2007-04-05 Qualcomm Incorporated Cryptographically secure pseudo-random number generator

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014526094A (ja) * 2011-07-15 2014-10-02 イリテック インコーポレイテッド 生体イメージ情報を含む使い捨てパスワードを用いた認証方法及び装置取付装置
JP2019531541A (ja) * 2016-08-19 2019-10-31 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
JP7013447B2 (ja) 2016-08-19 2022-01-31 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
JP2022028727A (ja) * 2016-08-19 2022-02-16 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
JP7281523B2 (ja) 2016-08-19 2023-05-25 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
JP2022517534A (ja) * 2018-12-28 2022-03-09 マイクロン テクノロジー,インク. リプレイ保護ノンス生成
US11558359B2 (en) 2018-12-28 2023-01-17 Micron Technology, Inc. Replay protection nonce generation

Also Published As

Publication number Publication date
TW200901723A (en) 2009-01-01
WO2008131444A2 (en) 2008-10-30
WO2008131444A3 (en) 2009-04-23
KR101237104B1 (ko) 2013-02-25
ATE534949T1 (de) 2011-12-15
EP2150888B1 (en) 2011-11-23
US20080263117A1 (en) 2008-10-23
KR20100003301A (ko) 2010-01-07
EP2150888A2 (en) 2010-02-10
CN101663642A (zh) 2010-03-03

Similar Documents

Publication Publication Date Title
EP2150888B1 (en) Initial seed management for pseudorandom number generator
US8019802B2 (en) Cryptographically secure pseudo-random number generator
US8135766B2 (en) Method, apparatus and system for resistance to side channel attacks on random number generators
Barker et al. Recommendation for random bit generator (RBG) constructions
US9235712B1 (en) Securing external memory data
US9542157B2 (en) Random number generator and method for generating random numbers
EP3518128B1 (en) Enabling a software application to be executed on a hardware device
US20140016776A1 (en) Establishing unique key during chip manufacturing
US7681046B1 (en) System with secure cryptographic capabilities using a hardware specific digital secret
US11243744B2 (en) Method for performing a trustworthiness test on a random number generator
EP3503463A1 (en) Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
Van Herrewege et al. Software only, extremely compact, Keccak-based secure PRNG on ARM Cortex-M
TWI551993B (zh) 記憶體中攻擊防阻技術
US20090172414A1 (en) Device and method for securing software
EP3753197A1 (en) Protecting cryptographic key data
EP3657318A1 (en) Client-side entropy collection for server-side usage
US20220407679A1 (en) Information security protection system and information security protection method
Kietzmann et al. PUF for the Commons: Enhancing Embedded Security on the OS Level
JP2000242470A (ja) 乱数生成装置および方法および記録媒体
Aitchison et al. On the integration of physically unclonable functions into ARM trustzone security technology
KR20230144611A (ko) 보안 암호화 코프로세서
CN117411634A (zh) 用于保护电子装置免受旁信道攻击的方法和电路

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120612

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120912

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120920

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121212

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130508

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130515

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130607