JP4669046B2 - 暗号的に安全な擬似乱数生成器 - Google Patents

暗号的に安全な擬似乱数生成器 Download PDF

Info

Publication number
JP4669046B2
JP4669046B2 JP2008528208A JP2008528208A JP4669046B2 JP 4669046 B2 JP4669046 B2 JP 4669046B2 JP 2008528208 A JP2008528208 A JP 2008528208A JP 2008528208 A JP2008528208 A JP 2008528208A JP 4669046 B2 JP4669046 B2 JP 4669046B2
Authority
JP
Japan
Prior art keywords
seed
number generator
internal state
status registers
registers
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.)
Expired - Fee Related
Application number
JP2008528208A
Other languages
English (en)
Other versions
JP2009506438A (ja
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 JP2009506438A publication Critical patent/JP2009506438A/ja
Application granted granted Critical
Publication of JP4669046B2 publication Critical patent/JP4669046B2/ja
Expired - Fee Related 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Description

発明の分野
米国特許法第119条のもとでの優先権の主張
本特許出願は、2005年8月24日に出願され、本発明の譲受人に譲渡され、参照によって本明細書に明示的に取り入れられる仮出願第60/711,148号(“Cryptographically Secure Pseudo-Random Number Generator”)に対して優先権を主張している。
本発明は、暗号法(cryptography)、より具体的には、電子デバイスにおける擬似乱数の安全な(secure)生成に関する。
発明の背景
乱数の生成は、多くの応用を有し、例えば、暗号使用(cryptographic use)(例えば、暗号化および完全性の保護に使用される鍵、セキュリティプロトコルに使用されるナンス(nonce)、等)を含む。真の乱数は、平均よりも高い確率で予測することが不可能である。現実の世界では、完全な乱数源を得ることは非常に困難である。
回路部品からの熱雑音のような物理的な源(physical source)は、ときどき、非常に良いランダムな出力を生成する。しかしながら、物理的な源は外部干渉にさらされ、これは出力に相当なバイアスを負わせ得る。さらに、物理的な源は、それが新しいエントロピー(ランダム性)を与えることができる速さにおいて制限される。多くの応用は、乱数を長時間待つことができない。さらに、ハードウェア依存の生成器は、ときどき、長い期間の後で故障し、そのような場合に、非常に悪い乱数を生成する。
擬似乱数を生成する確定的アルゴリズムを使用する擬似乱数生成器(pseudo-random number generator, PRNG)が、しばしば使用される。PRNGは、非常に高速で数を生成することができる。シード(seed)と呼ばれるランダムな入力を与えられると、非常に長い擬似乱数列を確定的に生成することができる。このシードについての知識がないと、生成器とランダムな源とを区別するのは実行不可能(infeasible)であるか、または非常に困難である。利用可能な多くのPRNGがある一方で、大部分はセキュリティの応用のために設計されていない。PRNGは確定的アルゴリズムを使用するので、それらはハッキングにさらされ、そのためにPRNGのセキュリティを弱める。例えば、線形合同生成器(linear congruential generator)は、PRNGとして広く使用されているが、短い出力列が解析された後で壊され得る。
暗号の応用では、通常、初期化ベクトル、鍵、ナンス(nonce)、ソルト(salt)、等に“ランダムな(random)”数を使用する。一般に、暗号的に安全なPRNG(cryptographically secure PRNG, CSPRNG)は、ランダムビット列からその出力を区別することが実行不可能であるような安全なやり方で、予測不可能な入力を用いてシードを与えられる(seed)。本明細書で定義されているように、CSPRNGは、普通のPRNGの全ての特性をもち、さらに、少なくとも2つの他の特性をもつ。これらの特性の1つは、“次のビットの試験(next bit test)”と呼ばれ、生成器から生成されたmビットの列を与えられたとき、実行可能な方法では、(m+1)番目のビットを、2分の1よりも相当に高い確率で予測できないことを示す。第2の特性は、“悪質なシーディングに対する耐性(malicious seeding resistance)”と呼ばれ、攻撃が、一定期間の間CSPRNGへの入力を全てまたは部分的に制御することができても、CSPRNGからの任意のランダムな出力を予測または再生することが依然として実行不可能であることを示す。
擬似乱数生成方式は、CSPRNGにおいて比較的に直接的(straightforward)である。これは、例えば、カウンタモードまたは出力フィードバックモードで実行されるブロック暗号、シードを暗号鍵として使用するストリーム暗号、またはハッシングの入れ子構造(nested structure)であり得る。CSPRNGの設計における複雑な部分は、CSPRNGにシードを与える(seed)、および再びシードを与える(reseed)やり方である。再シーディング(reseeding)は、以前にシードを与えられたCSPRNGの順序論理(sequential logic)を、新しいシードを用いて更新するのに使用されるプロセスである。このような再シーディングは、確定的数生成アルゴリズムを壊す(break)のをより困難にする。
多数の標準化されたCSPRNGの設計、例えば、FIPS 186−2、ANSI X9.17−1985 Appendix C、ANSI X9.31−1998 Appendix A.2.4、およびANSI X9.62−1998 Annex A.4が存在する。都合の悪いことに、これらの設計の多くは、ある環境下では十分ではない。例えば、ANSI X9.17のPRNGの2つの設計の欠点は、J.Kelsey、他による文献(Fast Software Encryption, 5th International Workshop Proceedings, Springer-Verlag, 1998)において確認(identify)されている。
ヤロー(Yarrow)およびフォーチュナ(Fortuna)は、2つの周知のCSPRNGの設計である。文献(“Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator”, J. Kelsey, B. Schneier, およびN. Ferguson著, Sixth Annual Workshop on Selected Areas in Cryptography, Springer Verlag, 1999年8月、並びに“Practical Cryptography”, N. Ferguson およびB. Schneier著,Wiley発行, 2003年)参照。
ヤローおよびフォーチュナの両者は、エントロピーの蓄積のための複雑な方式にサポートされて再シーディングを制御する。最も速いエントロピー プールの源が準備できたとき、ヤローは、再シーディングのためのエントロピーを評価する具体的な方法を指定せず、一方でフォーチュナは、システムに周期的に再びシードを与える。これらの両者は、擬似乱数生成のためにカウンタモードでブロック暗号を使用し、再シーディングのためにハッシュアルゴリズムを拡張的に使用する。カウンタモードにおけるブロック暗号および再シーディングのためのハッシュアルゴリズムの使用は、計算上コスト高であり、時間がかかる。
したがって、より良い、複雑さをより軽減し、および/またはより効率的な擬似乱数生成器が必要とされている。
発明の概要
安全な擬似乱数生成器を操作する方法が与えられる。方法は、(1)エントロピーの1つ以上の予測不可能な源を得て、シードを与えることと、(2)数生成器の現在の内部状態とシードとの関数として内部状態を修正することによって、数生成器の内部状態においてエントロピーを蓄積することと、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成することとを含む。修正された内部状態は、現在の内部状態とシードとに対して非線形フィードバック シフトレジスタの動作を使用することによって得ることができる。エントロピーの1つ以上の予測不可能な源は、シードに結合され得る。
初期化シードは、数生成器のシャットダウン時に記憶され得る。初期化シードは、数生成器によって生成された擬似乱数である。次に、数生成器のスタートアップの内部状態は、数生成器のスタートアップ時に、記憶されている初期化シードを用いて初期化することができる。初期化シードは、セキュア ファイル システム(secure file system)に記憶されている。数生成器のスタートアップの内部状態の初期化前に、初期化シードの完全性が損なわれているかどうかについて判断される。記憶されている初期化シードの完全性が損なわれているときは、別の予測不可能な源を使用して、数生成器のスタートアップの内部状態を初期化する。
1つの暗号プリミティブオペレーション(cryptographic primitive operation)が、数生成器の修正された内部状態を得て、擬似乱数を生成するのに使用される。1つの暗号プリミティブオペレーションは、2進ワード演算、一定のオフセットを有するビットシフト演算、またはテーブル検索(table lookup)の何れか1つであり得る。
数生成器は、1つ以上の予測不可能な源から連続的に再びシードを与えられ、数生成器の内部状態を変更し得る。予測不可能な源は、量子化可能な情報をもつ物理的な源を含む。さらに、数生成器は、呼び出しアプリケーションから受信した新しいシードを用いて再びシードを与えられ、数生成器の内部状態を変更し得る。
数生成器の修正された内部状態は、(1)1つ以上の状態レジスタの現在の内容との排他的論理和演算によって、数生成器の1つ以上の状態レジスタにシードをロードすることと、(2)複数の状態レジスタのビットシフトされた内容を非線形関数に供給し、結果を得ることと、(3)結果と1つ以上の状態レジスタの1つとの間で排他的論理和演算を行って、フィードバックの数を得ることと、(4)第1の状態レジスタから第2の状態レジスタへ内容をシフトし、第3のレジスタにフィードバックの数をロードすることによって1つ以上の状態レジスタを修正することとによって得ることができる。
別の特徴は、1つ以上の状態レジスタが再シーディング動作間でシフトされる回数のカウンタを維持する。次に、1つ以上の状態レジスタの1つは、カウンタに基づいて修正される。
追加の特徴は、擬似乱数が生成されるたびに変更する間隔カウンタ(interval counter)を維持する。数生成器は、1つ以上の予測不可能な源から再びシードを与えられ、間隔カウンタによって定義された間隔においてのみ、数生成器の内部状態を変更する。数生成器は、システム時間を用いて、間隔カウンタによって定義された間隔で再びシードを与えられ得る。シードは、少なくとも128ビット長であり、数生成器の内部状態は、18ワードサイズのレジスタである。
別の実施形態は、暗号的に安全な数生成器であって、(1)シード情報の1つ以上の予測不可能な源を得て、シードを与えるように構成されたシードローダと、(2)数生成器の内部状態を記憶する複数の状態レジスタとを含み、シードローダは状態レジスタの現在の内容とシードとに基づいて、状態レジスタに再びシードを与え、数生成器の内部状態を修正し、エントロピーを蓄積し、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成するように構成された擬似乱数生成器をさらに含む、暗号的に安全な数生成器を与える。修正された内部状態は、状態レジスタの内容とシードとに対して非線形フィードバック シフトレジスタの動作を使用することによって得られる。擬似乱数生成器は、(1)数生成器のシャットダウン時に初期化シードを生成し、(2)初期化シードを記憶するようにさらに構成され得る。シードローダは、数生成器の再始動時に、記憶されている初期化シードを用いて、複数の状態レジスタを初期化するようにさらに構成され得る。シードローダは、1つ以上の予測不可能な源から得た追加のシードを用いて、複数の状態レジスタを連続的に修正するようにさらに構成され得る。予測不可能な源は、量子化可能な情報をもつ物理的な源を含み得る。
シードローダは、さらに、呼び出しアプリケーションから受信した新しいシードを用いて、複数の状態レジスタをオンデマンドで修正し得る。1つの暗号プリミティブオペレーションは、状態レジスタに再びシードを与え、擬似乱数を生成するのに使用され得る。
別の実施は、(1)エントロピーの1つ以上の予測不可能な源からシードを得て、(2)数生成器の内部状態を、現在の内部状態とシードとの関数として修正し、数生成器にエントロピーを蓄積し、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成するように構成された処理デバイスを含む処理回路を与える。処理回路は、数生成器の内部状態を記憶する1つ以上の内部状態レジスタを含むメモリデバイスをさらに含み得る。処理回路は、(1)数生成器によって生成された擬似乱数である初期化シードを、数生成器のシャットダウン時にメモリデバイスに記憶し、(2)数生成器のスタートアップの内部状態を初期化する前に、初期化シードの完全性が損なわれているかどうかを判断し、(3)(a)記憶されている初期化シードの完全性が損なわれているときは、別の予測不可能な源を用いて、(b)そうでなければ、記憶されている初期化シードを用いて、数生成器のスタートアップの内部状態に再びシードを与えるようにさらに構成され得る。処理回路は、(1)シード情報の1つ以上の予測不可能な源から得た追加のシードを用いて、内部状態を連続的に修正し、(2)呼び出しアプリケーションから受信した新しいシードを用いて、内部状態をオンデマンドで修正するようにさらに構成され得る。
別の実施は、擬似乱数を生成する1つ以上の命令を有する機械読み出し可能媒体であって、命令は、プロセッサによって実行されたときに、プロセッサに、(1)エントロピーの1つ以上の予測不可能な源からシードを得ることと、(2)数生成器の内部状態を、現在の内部状態とシードとの関数として修正し、数生成器にエントロピーを蓄積することと、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成することとを行わせる、機械読み出し可能媒体を与える。
好ましい実施形態の詳細な説明
次の説明では、実施形態の完全な理解をもたらすように、具体的な詳細を与える。しかしながら、当業者は、これらの具体的な詳細がなくても、実施形態が実行され得ることが分かるであろう。例えば、不要な詳細で実施形態を不明瞭にしないように、回路は、ブロック図で示されるか、または全く示されていないこともある。他の例では、周知の回路、構造、および技術は、実施形態を不明瞭にしないように詳細に示され得る。
さらに、実施形態がフローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明され得ることに注目する。フローチャートは、動作を順次のプロセスとして説明し得るが、動作の多くは並行してまたは同時に行うことができる。さらに、動作の順序は並べ替えてもよい。その動作が完了すると、プロセスは終了する。プロセスは、方法、機能、手続き、サブルーチン、サブプログラム、等に相当し得る。プロセスが機能に相当するとき、その終了は、機能が呼び出し機能またはメイン機能に戻ることに相当する。
さらに、記憶媒体は、データを記憶する1つ以上のデバイス、例えば、読み出し専用メモリ(read-only memory, ROM)、ランダム アクセス メモリ(random access memory, RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュ メモリ デバイス、および/または情報を記憶する他の機械読み出し可能媒体を表わし得る。“機械読み出し可能媒体(machine readable medium)”という用語は、ポータブルまたは固定の記憶デバイス、光記憶デバイス、無線チャネル、並びに命令および/またはデータを記憶、収容、あるいは搬送することができる種々の他の媒体を含むが、それらに限定されない。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはその組合せによって実施され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実施されるとき、必要なタスクを行うプログラムコードまたはコードセグメントは、記憶媒体または他の記憶手段のような機械読み出し可能媒体に記憶され得る。プロセッサは必要なタスクを行い得る。コードセグメントは、手続き、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、パッケージソフト(software package)、クラス、あるいは命令、データ構造、またはプログラム文(program statement)の組合せを表わし得る。コードセグメントは、情報、データ、引き数、パラメータ、またはメモリ内容を送信および/または受信することによって、別のコードセグメントまたはハードウェア回路に連結され得る。情報、引き数、パラメータ、データ、等は、適切な手段、とくに、メモリの共有、メッセージの受け渡し(passing)、トークンの受け渡し、およびネットワーク送信によって、受け渡し、転送、または送信され得る。
1つの特徴は、セキュリティアプリケーションにおいて、数生成器に再びシードを与え、擬似乱数列を得る、暗号的に安全な擬似乱数生成器(cryptographically secure pseudo-random number generator, CSPRNG)のための斬新なアルゴリズムを与える。1つの実施において、ストリーム暗号非線形SOBER(Non-Linear SOBER, NLS)生成器は、ステートフルな再シーディング機構(stateful reseeding mechanism)が異なる物理的な源からのエントロピーを蓄積し続けるように修正された。(HAWKES、Philip、他、“Primitive Specification NLS”、〔オンライン〕、〔2006-08-21で検索される〕を参照。インターネット<URL: www.ecrypt.eu.org/stream/ciphers/nls/nls.pdf>から検索される)。NLSは、単純なワード指向動作(word-oriented operation)に基づいて秘密鍵を生成するのに使用される同期ストリーム暗号である。
さらに、従来技術と異なり、この再シーディング方式は、数生成器を既知の状態にリセットせず、したがって数生成器をハッキングする機会を低減する。その代わりに、生成器の次の状態は、現在の状態と新しいシードとの関数である。
さらに、別の特徴は、システムがシャットダウンする前に、安全なシード(secure seed)を生成して記憶し、その後で、システムが再始動するときに、それを使用して、システムを初期化する。
別の態様は、CSPRNGのアクティブおよびパッシブな再シーディングの両者を与える。アクティブな再シーディングは、生成器(CSPRNG)によって規則的または連続的に行われる。パッシブな再シーディングは、CSPRNGを起動し(invoke)、それら自身のエントロピーを生成器(CSPRNG)に個々に与えるアプリケーションによって行われる。新しいエントロピーは、現在の状態によっても影響を受けるようなやり方で、CSPRNGの順序論理の状態を変更する。この斬新なCSPRNGには、2576個の可能な状態があるので、アプリケーションは、それ自身のエントロピーを与えることに基づいて、次の状態を推定することができない。
さらに別の特徴は、擬似乱数のストリームが、最新の設計よりも相当に速く、生成され得ることである。ストリーム暗号NLSにおいて使用される動作は、32ビットプロセッサのために十分に最適化されている。その結果、ランダムビットは、プロセッサインテンシブ(processor intensive)であるカウンタモードのブロック暗号を使用するもの(例えば、ヤロー(Yarrow)およびフォーチュナ(Fortuna))よりも、ソフトウェアおよび埋め込みハードウェアにおいて相当に速く生成される。
さらに、再シーディングおよびエントロピーの蓄積ために、比較的に複雑でない構造を与え、それによって実施コストおよびプロセッサの必要を低減する。ヤローおよびフォーチュナは両者とも、ハッシュコンテキストの多数の部分を必要とし、エントロピーをローカルに保持する。対照的に、開示される数生成方式は、外部アプリケーションのインターフェースを与え、シード関数を外部で呼び出す。その結果、エントロピーの蓄積のために、特別なローカルメモリを割り振る必要がない。実際に、幾つかの実施形態において、72バイトのみが、生成器の内部状態を記憶するのに必要とされ得る。状態遷移中に、エントロピーの入力は、内部状態ビットの長い範囲に拡散される。
さらに、CSPRNGの1つの実施は、非線形フィードバック シフトレジスタを使用して、擬似乱数列を生成する。この軽量の再シーディング機構および非線形内部構造は、暗号のセキュリティを強化し、システム効率を最適化するように選択される。
図1は、暗号的に安全な擬似乱数生成器(cryptographically secure pseudo-random number generator, CSPRNG)を実施するように修正され得るストリーム暗号NLSを示すブロック図である。ストリーム暗号NLS104では、秘密鍵102を使用して、ストリーム暗号104を発見不可能な状態に構成する。鍵スケジューラ106は、ストリーム暗号NLS104の状態(例えば、順序論理)を構成し得る。さらに、内部状態レジスタ108がストリーム暗号NLS104によって維持され得る。ストリーム暗号NLS104は、128ビット長よりも長い秘密鍵102をサポートし、18ワードサイズのレジスタ(r〔0〕ないしr〔16〕、およびコンスト(Konst))108を使用して、ストリーム暗号NLS104の内部レジスタ状態を記憶し得る。秘密鍵102の長さと状態レジスタ108とにより、ブルート フォース アタック(brute force attack)を使用してストリーム暗号NLS104を壊す試みを実行不可能にする。鍵ストリーム生成器110は、内部状態レジスタ108と秘密鍵102とに基づいて、出力鍵ストリーム112を生成する。出力鍵ストリーム112を使用し、平文データ114を暗号文116へ暗号化することができる。NLSは、モジュロ2加算を使用して、ストリーム暗号出力(すなわち、鍵ストリーム)112と平文114とを混合(mix)する加法的ストリーム暗号(additive stream cipher)である。
ストリーム暗号NLS104は、高速乱数生成のためにわずかに修正され、セキュリティアプリケーションに十分に強い数生成器を実施し得る。単純な、有効な、および/または効率的なシーディングおよび再シーディング機構は、異なる源からエントロピーを集め、安全に、少ない処理オーバーヘッドで、乱数を生成するように実施される。数生成器の次の状態は、現在の状態と新しいシードとの関数である。数生成器は、最初に、物理的な源からの十分にランダムなビットを用いて、システムによってシードされる。数生成器が長い間再びシードを与えられなくても、最初のシードを推定することは、128ビットの鍵ストリーム暗号を解読する(break)のと同じくらい困難であり、これは計算上実行不可能(infeasible)である。数生成器の特徴として、出力は、ランダムビット列と区別できないはずである。例えば、数生成器の擬似乱数出力は、
Figure 0004669046
として定義される数であり、これはストリーム暗号NLSによって使用される出力アルゴリズムである。擬似乱数は、初期化ベクトル、キー、ナンス、ソルト、等として使用され得る。
本発明を説明するために、数生成器は、32ビットの演算のために最適化され、32ビットの演算は、32ビットプロセッサ、例えば、複雑命令セットコンピュータ(Complex Instruction Set Computer, CISC)プロセッサのインテル ペンティアム(登録商標)シリーズおよび縮小命令型コンピュータ(Reduced Instruction Set Computer, RISC)プロセッサのARMシリーズ上で実施することができる。ここで、“ワード(word)”という用語は、32ビットのストリングを指し、“バイト(byte)”という用語は、8ビットのストリングを指す。しかしながら、当業者には、開示されたCSPRNGは、異なるビット数で別の演算のために実施され得ることが明らかであるだろう。
図2は、1つの実施にしたがって、擬似乱数生成器202が別々の関数としてどのように表わされ得るかを示している。シード関数SEED( )204は1つ以上の予測不可能な源206をシードとして使用し、生成器202を構成する。具体的には、1つ以上の予測不可能な源206は、シードを生成する1つ以上の異なる物理的な源を含み得る。幾つかの実施において、各予測不可能な源206からの情報は、別々のシードに量子化され、別々のシードは、シード関数SEED( )204に順次に供給される。他の実施において、予測不可能な源206の2つ以上からの情報は量子化され、1つのシードに結合され(例えば、乗算、XOR、等)、その1つのシードがシード関数SEED( )204にパラメータとして供給される。シード関数SEED( )204が、パラメータとして“シード”により呼び出される(invoke)されるたびに、数生成器202の内部状態は、内部状態レジスタのシフティングに関与する非線形動作によって更新される(すなわち、“再びシードを与えられる(reseeded)”)。
擬似ランダム列生成関数RAND( )208は、数生成器202の内部状態を使用し、擬似ランダム出力210を得る。生成された擬似乱数(出力)210は、ナンス、初期化ベクトル、等として使用され得る。
予測不可能な源206は、量子化可能な情報の異なる源から得ることができる。例えば、送信エラー、帯域幅中の雑音ピーク、プロセッサの温度の読み出し、CDMAサーチャ、等のような物理的な源を、シードへの入力として使用することができる。
入力源206の幾つかがハッカーによって操作される場合、ハッカーの攻撃は、1つ以上の源から数生成器202に連続的にまたは頻繁に再シーディングすることによって、阻止される傾向がある。シードは、予測不可能な入力206を用いて連続的または頻繁に更新されるので、ハッカーは、入力源206の幾つかを操作することによって新しい擬似ランダム出力210を予測することができ難くなる。
図3は、シード関数204の一例を示すブロック図である。数生成器が最初に始動されるとき、状態レジスタイニシャライザ302(NLS_INITSTATE)は、数生成器の状態レジスタを初期化する。例えば、フィボナッチ数は、状態レジスタr〔0〕ないしr〔16〕を初期化するのに使用される。コンスト(Konst)レジスタもランダムに選択された数(例えば、0x6996c53a)に初期化される。例えば、特定の固定値が、相互運用性のためにコンストに使用され得る。第2に、シードローダ304(NLS_LOADKEY)は、排他的論理和
Figure 0004669046
を使用して、シード300を状態レジスタ(r〔0〕ないしr〔16〕)へ1ワードずつロードする。シード300の長さも、ワードとしてロードされ得る。シードローダ304は、さらに、非線形フィードバックモードにおいて状態レジスタ((r〔0〕ないしr〔16〕)を同時にシフトし、シード300が任意の長さをもつことを可能にする。第3に、コンスト(Konst)生成器306(Konst generator, GENKONST)は、現在の生成器の状態と現在のコンスト値とに基づいて、新しいコンスト値でコンストレジスタを更新する。このコンスト値は、擬似乱数の出力210中に定数として使用される。
図4は、シーディング関数204によって使用される状態レジスタイニシャライザ302の一例を示すブロック図である。数生成器が最初に始動されると、その状態レジスタが初期化される。状態レジスタイニシャライザ302は、数生成器の状態レジスタr〔0〕...r〔16〕を初期化するフィボナッチ数テーブル402を含み得る。例えば、r〔0〕=r〔1〕=1、およびr〔i〕=r〔i−1〕+r〔i−2〕(なお、2≦i≦16)。定数404は、コンスト(Konst)レジスタを初期化するのに使用される。定数404の値は、そのビット列内に幾つかのエントロピーをもつことが好ましい任意の数であり得る。
図5は、一例にしたがって数生成器にシードを与える(seed)、および/または再びシードを与える(reseed)のに使用され得るシードローダ304によって行われる関数を説明するブロック図である。シードローダ304は、シード入力の全ビットが結果の状態レジスタの全ビットに確実に影響を与えるようにする非線形機構を含み得る。(HAWKES、Philip、他、“Primitive Specification NLS”、〔オンライン〕、〔2006-08-21で検索される〕を参照。インターネット<URL: www.ecrypt.eu.org/stream/ciphers/nls/nls.pdf>から検索される)。インクルーダ(Includer)関数501は、シード514の各ワードを状態レジスタr〔15〕のモジュロ232に加える。シード長(バイト)も状態レジスタr〔15〕に加えられる。ディフューザ(Diffuser)関数503は、状態レジスタr〔0〕ないしr〔16〕のレジスタのシフティング500を行い、したがって、rt+1〔i〕=r〔i+1〕(なお、i=0...15)になる。フィードバック関数502は、(r〔0〕<<<19)+(r〔15〕<<<9)+Konstとしてその入力を得る。なお、“<<<k”は、kビットの左ロテーション(left rotation)を示す。フィードバック関数502の出力は、r〔4〕とXOR504され、フィードバック内容508を得る。状態レジスタr〔16〕は、フィードバック内容508に設定され、一方でrt+1〔4〕 XOR output(t+1)に設定される。なお、output(t+1)の関数208は、擬似乱数出力210である。しかしながら、シードローダ304の一部として呼び出されるときは、output(t+1)208は数生成器の内部で保持され、外部アプリケーションに与えられない。
フィードバック関数502は、4つの8×8の代入ボックス(Substitution-box)に基づいて、32ビットのマッピングを行い得る。
レジスタシフタ500の出力が1サイクルに収まる可能性は非常に低いが、それでも可能性はある。このような周期的な出力が現れるのを防ぐために、カウンタtを使用して、最後の再シーディング動作以後にレジスタシフタ500によってシフトされたワード数のカウントを維持し得る。カウンタtは状態レジスタに加えられ、周期的な出力が現れるのを防ぐ。例えば、tが(216+1)の倍数であるとき、r〔2〕は、r〔2〕+t(モジュロ232)に設定される。他の実施において、カウンタtは、異なる演算を行うことによって、異なるレジスタ(例えば、r〔0〕ないしr〔16〕)に加えられる、および/またはレジスタに挿入され得る。
1つの実施において、シード514はインクルーダ関数501を使用してロードされ、次に、ディフューザ関数503が呼び出される。次に、シードの長さは、インクルーダ関数501を使用してロードされ、ディフューザ関数503は17回呼び出されて、シード入力の全ビットが、結果の状態レジスタr〔0〕...r〔16〕の全ビットに非線形に確実に影響を与えるようにする。
図6は、NLS鍵スケジューリングから修正されたシード関数を実行する方法を示している。シードは、1つ以上の予測不可能な源に基づいて得られ(602)、パラメータとしてシード関数に渡される。シードは、幾つかのエントロピーを含むが、完全にランダムである必要のない、任意の長さをもつバイトストリングとして定義される。例えば、シードを生成する源は、プロセッサの温度、通信リンクエラー、チャネル内における検出された周波数ピーク、等のような物理的な源からの測定値を量子化することによって得ることができる。
シード関数が呼び出されると、state_initializedフラグがチェックされ(604)、生成器の状態レジスタが初期化されたかどうかを判断する。従来のストリーム暗号NLSアルゴリズムは、再シーディング時に状態レジスタをリセットまたはクリアし、それによって、エントロピーを蓄積しない。対照的に、現在の修正されたアルゴリズムは、(例えば、状態レジスタをクリアせずに)現在の状態レジスタと新しいシードを結合することによって、エントロピーを蓄積する。生成器が始動した後で、シード関数が始めて呼び出されると、内部状態レジスタ(例えば、r〔0〕ないしr〔16〕、コンスト(Konst)、等)は初期化され(606)、state_initializedフラグは、生成器の状態レジスタが初期化されたことを示すように設定される(608)。例えば、NLS INITSTATE関数が呼び出されて、NLSアルゴリズムのために予め定められた内部状態レジスタを初期化し得る。そうでなければ、状態レジスタは、(設定されたstate_initializedフラグによって示されているように)既に初期化されており、初期化ステップはスキップされる。
数生成器の新しい状態が現在の状態とシードとの関数として得られると、シードはNLS LOADKEY関数に渡される(610)。例えば、シードおよびその長さは、XORを使用して、状態レジスタにロードされ、新しい状態は、現在の状態とシードとの両者の関数になる。したがって、現在のシードの知識を使用して、生成器の前の状態、現在の状態、または次の状態を推定するのは、実現不可能である。システムは、新しい予測不可能なシードからのエントロピーを数生成器に加え続ける。さらに、シード関数は、数生成器を呼び出すアプリケーションによって呼び出され(invoke)され得る。この意味で、アプリケーションは、シード関数を呼び出して(call)、ランダム性のためにエントリピーを与え、予測不可能なやり方で生成器状態を変更する。その結果、同じ入力シードを用いた再シーディングは、異なる時間において、異なる出力をもたらす。このことは、同じシードが使用されるときは必ず同じ出力列を生成する一般的なPRNGと区別できる。次に、現在の生成器の状態に基づいて、コンスト(Konst)値が更新される(612)。例えば、NLS GENKONST関数を呼び出して、漸進的に変化する(evolving)生成器の状態から新しいコンスト(Konst)を得ることができる。コンストは、既に説明したように、出力にマスクするのに使用され得る。出力緩衝器は、フラッシュされ(614)、次のシードを生成するために新しい擬似ランダムビットを保持する。
CSPRNGを実施する便宜上、シードおよび擬似ランダム列の両者は、バイトのストリングであり得る。ストリーム暗号NLSはワード指向(word-oriented)であるので、シードは、SEED( )によって内部で0ないし3バイトのゼロでパッドされる。同様に、RAND( )が擬似ランダム列を出力緩衝器に送る前に、最後のワード内の余分な0ないし3バイトは捨てられる。
図2を再び参照すると、実施中に、周期的および/またはランダムに、幾つかの物理的な源を用いて生成器202にシードを与えることが望ましい。CDMA移動電話において利用可能な1つの提案される源は、サーチャからの低いオーダのエネルギサンプルである。サーチャはアンテナを使用し、マルチパスのエネルギピークを得る。これはランダム性のために連続的な源を与える。パケットストリームにおける遅延ジッタのような、幾つかのより低ランダムな源(low random source)を取り入れることができる。
生成器のランダム性のために予測不可能な物理的な源を取り入れることは、生成器の出力を予測する攻撃を妨害する。1つのタイプの攻撃において、ハッカーは、物理的な源の全てではないが、幾つかを制御し得る。解決案として、生成器に、全ての源を用いてパワーアップ中にシードを与える。出力列が生成されているときに、幾つかの源は真(real)のエントロピーをまだ与えているので、ハッカーは状態を推定することができない。別のタイプの攻撃では、ハッカーは、生成器にシードを与えるのに使用されている全ての利用可能な物理的な源を制御する。そのような場合、RAND( )関数208を呼び出すアプリケーションが、生成器自体にシードを与えることによってエントロピーを得ることができる。例えば、そのアプリケーションは、源として、それ自身の予測不可能なイベントでSEED( )関数204を呼び出すことによって、生成器にシードし得る。
物理的な源の性質に応じて、パワーアップ中のシーディング手続きは、相当に時間がかかり得る。1つの改良では、セキュア ファイル システム(Secure File System, SFS)を使用し、パワー シャットダウン前に、シードファイルの権利(seed file right)を記憶する。図7は、擬似乱数生成器に関連付けられたセキュア ファイル システムにシードを記憶する方法を示している。セキュア ファイル システムは、暗号プリミティブを使用し、ファイル内容の機密性および完全性を保護する。デバイスがオフにされる前に、セキュア ファイル システムが利用可能であるとき(702)、システムはRAND( )を呼び出し、128ビットのストリングをシードとして生成する(704)。シードは、SFSにファイルとして記憶される(706)。
図8は、スタートアップ時に、シードファイルに記憶されたシードを使用して、擬似乱数生成器を初期化する方法を示している。例えば、CDMA移動電話におけるCSPRNGは、スタートアップ時に、このシードファイルを使用して初期化され得る。デバイスの初期化をパワーアップするとき(802)、システムは、セキュア ファイル システムが利用可能であるかどうかを判断する(804)。SFSがパワーアップ中に利用可能であるとき、シードファイルは完全性検証のために解読される(806)。成功すると(808)、内容はシードファイルから回復され(810)、SEED( )関数にシードを与えるのに使用される(812)。シードファイルは、その内容が抽出されると、SFSから取り去られる。正常なパワーダウン手続きが損なわれると、このような構成は、同じシードが、次に電話がパワーアップするときに使用されるのを防ぐ。SFSが利用可能でないか、またはシードファイルが完全性の試験に失敗すると、予測不可能な源を使用し、(例えば)128ビットを第1のシードとして与える(814)。
1つの特徴によると、アプリケーションは、SEED( )関数を使用することによって、それ自身のエントロピーを加えることができる。アプリケーションによって与えられるシードは、完全にランダムである必要はなく、幾つかの新しいエントロピーを含まなければならないだけである。これは、乱数の要求に対する任意のタイプの情報、例えば、システム時間またはCPUサイクルカウンタであり得る。予測可能なデータを用いた再シーディングは安全であり、アプリケーションは、任意のやり方で入力データを“削除(trim)”する必要はない。予測可能なデータを使用して、エントロピーを加えるとき、それはばらばらに、または不規則な再シーディングパターンで使用され、アプリケーションがそれ自身のエントロピーを加える一方で、ハッカーが生成器を危険にさらすのを防ぐことができる。
図9は、アプリケーションがどのように数生成器に再びシードを与え得るかを示している。カウンタnが既に初期化されているかどうかを判断するために、チェックが行われる(902)。初期化されていないときは、カウンタnはパラメータN(例えば、32)で初期化される(904)。次に、RAND( )関数を使用して、乱数Rを生成する(906)。RAND( )が呼び出されるたびに、カウンタnは1ずつディクレメントされる(908)。n=0であるとき、数生成器は、system timeを入力源として用いるSEED( )関数を使用して、再びシードを与えられる(912)。カウンタnはN/2+(RモジュロN/2)にリセットされ、なお、Rは、アプリケーションが得た最新の乱数である(914)。そうではなく、n≠0であるとき、再シーディングは行われない。再シーディングが頻繁に行われ過ぎると、システム時間は、エントロピーの蓄積を十分に大きく変えない。カウンタnに応じて再シーディングを行うことによって、図9の方式は、2つの再シーディング呼び出し間の時間が十分に長い(すなわち、RAND( )の実行のN/2回よりも長い)ことを保証する。(RモジュロN/2)が関与するので、再びシードを与えるときを予測するのは、より困難である。
1つの実施において、数生成器(すなわち、CSPRNG)は、保護されたメモリにおけるサーバプロセスとして実行され、一方でアプリケーションは、クライアントプロセスからのランダム列に再びシードを与える、またはそれを要求する。データは、プロセス間通信を使用して、CSPRNGとアプリケーションとの間で伝達される。全てのランダム源を一緒に混合するために、全アプリケーションに対して1つのCSPRNGのインスタンスを維持することが望ましい。すなわち、数生成器およびレジスタ状態は、全ての呼び出しアプリケーションに使用される。
シード関数SEED( )およびランダム出力関数RAND( )は、最小(atomic)であり、相互に排他的であることに注意すべきである。例えば、攻撃者が、シード関数SEED( )とRAND( )関数からのランダム列の出力との両者にアクセスすると仮定する。攻撃者は、不良の(poor)エントロピーの幾つかの既知の値でCSPRNGにシードを与え得る。生成器(すなわち、CSPRNG)は、他の独立の源によって、またはSFSシードファイルからシードされているので、CSPRNGの現在の状態を推測するのは依然として実行不可能である。内部状態が示されなければ、RAND( )関数の出力列は予測可能ではない。
他方で、CSPRNGが長い間再シーディングされずに実行されても、任意の攻撃の複雑さは、ストリーム暗号NLSを壊すのに劣らないであろう。徹底的な鍵探索が、ストリーム暗号NLSを壊すのに必要であり、現在の鍵探索技術に与えられた鍵のサイズ(例えば、128ビット)では、このようなブルートフォース サーチは実行不可能である。本明細書で説明されている実施形態によって生成されたランダムビットは、国立標準技術研究所(National Institute of Standards and Technology, NIST)の暗号アプリケーションのための乱数生成器および擬似乱数生成器の検証のための統計試験スイート(Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications, NIST Special Pub. 800-22)における全ての試験に合格した。
図10は、暗号的に安全な擬似乱数生成器を実施するように構成された記憶媒体1002およびプロセッサ1004を含むコンピューティングデバイス1000を示すブロック図である。記憶媒体1002は、例えば、メモリデバイスおよび/またはハードドライブであり得る。記憶媒体1002は、プロセッサ1004によって実行されたときに、擬似乱数を生成する命令を記憶している。命令は、プロセッサ1004に(1)エントロピーの1つ以上の予測不可能な源を得て、シードを与えることと、(2)数生成器の現在の内部状態を、現在の内部状態とシードとの関数として修正し、エントロピーを蓄積することと、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成することと、(4)エントロピーの1つ以上の予測不可能な源にシードに結合することと、(5)シード情報の1つ以上の予測不可能な源から得たシードを用いて、現在の内部状態を修正し続けることと、および/または(6)呼び出しアプリケーションから受信した情報を用いて、現在の内部状態をオンデマンドで修正することとを行わせ得る。プロセッサは、(1)数生成器によって生成された擬似乱数である初期化シードを、数生成器のシャットダウン時に記憶し、(2)数生成器のスタートアップ時の内部状態を初期化する前に、初期化シードの完全性が損なわれているかどうかを判断し、(3)(a)記憶されている初期化シードの完全性が損なわれているときは、別の予測不可能な源を用いて、(b)そうでなければ、記憶されている初期化シードを用いて、数生成器のスタートアップの内部状態に再びシードを与えるようにさらに構成され得る。
したがって、(1)エントロピーの1つ以上の予測不可能な源を得て、シードを与える手段と、(2)数生成器の現在の内部状態を、現在の内部状態とシードとの関数として修正し、エントロピーを蓄積する手段と、(3)数生成器の修正された内部状態に基づいて、擬似乱数を生成する手段とを含む数生成器が与えられる。
図11は、1つの実施にしたがって、擬似乱数生成器回路1100を示すブロック図である。擬似乱数生成器回路1100は、エントロピーの1つ以上の源を利用して、シードの数を生成するシード生成器1102と、生成器状態のメモリ1104と、シード生成器1102からのシードを利用して、鍵ストリームを得る数生成器1106とを含む。生成器回路1100は、本明細書に記載されている種々の実施形態にしたがって、その機能を実行するソフトウェアおよび/または埋め込みハードウェア構成要素を含み得る。
種々の実施にしたがうと、デバイス1000および/またはデバイス1100は、移動電話、パーソナル データ アシスタント(personal data assistant)、スマートフォン、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、電子ゲーミングデバイス(electronic gaming device)、または他の種々の電子デバイスであり得る。さらに、デバイス1000および1100は、説明のために単純化されているが、デバイス1000および/または1100は、実施に応じて他の要素または構成要素を含み得る。
本明細書に説明されている斬新なアルゴリズムは、ソフトウェアおよび/または埋め込みハードウェアにおいて効率的に実施され得る。とくに、本発明は、外部アプリケーションのためのインターフェースを与え、シード関数SEED( )を外部で呼び出すので、特別なローカルメモリを、エントロピーの蓄積のために割り振る必要はない。事実、本明細書に記載されている数生成アルゴリズムは、72バイトのみを使用して、生成器の内部状態を記憶し、これは、メモリが限られている環境において魅力的である。対照的に、ヤロー(Yarrow)およびフォーチュナ(Fortuna)アルゴリズムは、通常、多数のハッシュコンテキスト(それぞれ、2および32コンテキスト)を必要とし、エントロピーをローカルに保持する。さらに、ヤローまたはフォーチュナによって使用されるブロック暗号は、ラウンド鍵(round key)を記憶するのに、より多くのメモリを必要とする。
本明細書に説明されている幾つかの実施形態は、幾つかの既存の技術よりも、より少ないオーバーヘッドで、より高速の再シーディングを与える。とくに、mバイトの情報での再シーディングにかかる時間は、m+72バイトの擬似ランダム出力を生成するのにかかる時間とほぼ同じであり得る。対照的に、ヤローは、再シーディングのために、エントロピー入力をP+2回ハッシュする。なお、Pは、負でないユーザ定義のパラメータである。32個のエントロピーのプールが関与するとき、フォーチュナは、より複雑な再シーディング制御方式を有する。控え目にみて(conservatively)、NLS鍵スケジューリングアルゴリズムがハッシュ関数と同じ時間複雑性をもつと仮定すると、CSPRNGは、ヤローよりも少なくともP+2倍速く、フォーチュナよりも3倍速く再シーディングを行う。
また別の特徴は、擬似ランダム列の生成の速度が、カウンタモードにおけるブロック暗号(例えば、AES)よりも相当に高速であることである。これは、ストリーム暗号NLSが、加算、XOR、ロテーション(rotation)のような単純なワード演算を、一定のオフセットおよびテーブル索引(table lookup)と共に使用するからである。その結果、1バイトの出力は、例えば、インテル セントリーノ(Intel Centrino)プロセッサ上で平均7.347クロックかかり、これは、カウンタモードでブロック暗号を使用するほどプロセッサインテンシブではない。
したがって、開示された実施形態は、先行技術のものよりも、多くの点で優れているであろう。1つにおいて、それらは、ハッシュ関数とブロック暗号との組合せではなく、1つの暗号プリミティブのみを使用し得る。
図1、2、3、4、5、6、7、8、9、10、および/または11に示されている構成要素、ステップ、および/または機能の1つ以上は、擬似乱数生成の動作に影響を与えることなく、並べ替えられ得る、および/または1つの構成要素、ステップ、または機能に結合され得るか、あるいは幾つかの構成要素、ステップ、または機能において具現され得る。追加の要素、構成要素、ステップ、および/または機能も、本発明から逸脱することなく加えられ得る。図1、2、3、4、5、10、および/または11に示されている装置、デバイス、および/または構成要素は、図6、7、8、および/または9に記載されている方法、特徴、またはステップの1つ以上を行うように構成され得る。
当業者は、本明細書に開示されている実施形態に関連して説明されている種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実施され得ることも分かるであろう。ハードウェアとソフトウェアとのこの互換性を明らかに示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップは、それらの機能性に関して上述で概ね説明された。このような機能性がハードウェアとして実施されるか、またはソフトウェアとして実施されるかは、システム全体に課された個々の用途および設計の制約に依存する。
実施形態の説明は、例示することを意図しており、請求項の範囲を限定することを意図していない。したがって、提示された教示は、他のタイプの装置に容易に適用され、多くの代案、修正、およびバリエーションが当業者には明らかであるだろう。
暗号的に安全な擬似乱数生成器(CSPRNG)を実施するように修正され得るストリーム暗号NLSを示すブロック図。 1つの実施にしたがって、擬似乱数生成器が別々の関数としてどのように表わされ得るか示す図。 シード関数の一例を示すブロック図。 シーディング関数によって使用される状態レジスタ イニシャライザの一例を示すブロック図。 一例にしたがって、数生成器にシードを与える、および/または再びシードを与えるのに使用され得るシードローダによって行われる機能を示すブロック図。 NLS鍵スケジューリングから修正されるシード関数を実行する方法を示す図。 擬似乱数生成器に関連付けられるセキュア ファイル システムにシードを記憶する方法を示す図。 スタートアップ時に、シードファイルに記憶されているシードを使用し、擬似乱数生成器を初期化する方法を示す図。 アプリケーションが数生成器にどのように再びシードを与え得るかを示す図。 暗号的に安全な擬似乱数生成器を実施するように構成された記憶媒体およびプロセッサを含むコンピューティングデバイスを示すブロック図。 1つの実施にしたがう擬似乱数生成器回路を示すブロック図。
符号の説明
1000・・・コンピューティングデバイス、1100・・・擬似乱数生成器回路。

Claims (34)

  1. 安全な擬似乱数生成器を操作する方法であって、
    エントロピーの1つ以上の予測不可能な源を得て、シードを与えることと、
    前記数生成器の現在の内部状態と前記シードとの関数として内部状態を修正することによって、前記数生成器の内部状態においてエントロピーを蓄積することと、
    前記数生成器の前記修正された内部状態に基づいて、擬似乱数を生成することと、
    を含み、
    前記修正された内部状態は、
    前記数生成器の複数の状態レジスタのうちの1つの状態レジスタの現在の内容と前記シードとの演算によって、前記1つの状態レジスタに前記シードをロードすることと、
    前記複数の状態レジスタのうちの一部の複数の状態レジスタの内容に演算を行って、フィードバックの数を得ることと、
    異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの1つの状態レジスタに前記フィードバックの数をロードすること、
    によって得られる、方法。
  2. エントロピーの1つ以上の予測不可能な源を前記シードに結合することをさらに含む請求項1記載の方法。
  3. 前記数生成器によって生成された擬似乱数である初期化シードを、前記数生成器のシャットダウン時に記憶することと、
    前記数生成器のスタートアップ時に、記憶されている前記初期化シードを用いて、前記数生成器のスタートアップの内部状態を初期化することとをさらに含む請求項1記載の方法。
  4. 前記初期化シードはセキュア ファイル システムに記憶され、
    前記数生成器の前記スタートアップの内部状態を初期化する前に、前記初期化シードの完全性が損なわれているかどうかを判断することと、
    記憶されている前記初期化シードの完全性が損なわれているときは、別の予測不可能な源を使用して、前記数生成器の前記スタートアップの内部状態を初期化することと
    をさらに含む請求項記載の方法。
  5. 1つの暗号プリミティブオペレーションを使用し、前記数生成器の前記修正された内部状態を得て、前記擬似乱数を生成する請求項1記載の方法。
  6. 前記1つの暗号プリミティブオペレーションは、2進ワード演算、一定のオフセットを有するビットシフト演算、またはテーブル検索の何れか1つを含む請求項記載の方法。
  7. 1つ以上の予測不可能な源から前記数生成器に連続的に再シーディングし、前記数生成器の内部状態を変更することをさらに含む請求項1記載の方法。
  8. 前記予測不可能な源は、量子化可能な情報をもつ物理的な源を含む請求項記載の方法。
  9. 呼び出しアプリケーションから受信した新しいシードを用いて前記数生成器に再シーディングし、前記数生成器の内部状態を変更することをさらに含む請求項記載の方法。
  10. 前記安全な擬似乱数生成器は、非線形SOBER構造をもつ請求項1記載の方法。
  11. 前記修正された内部状態は、
    複数の状態レジスタのうちの1つの状態レジスタの現在の内容との排他的論理和演算によって、前記数生成器の前記1つの状態レジスタにシードをロードすることと、
    前記複数の状態レジスタのうちの少なくとも2つの状態レジスタのそれぞれのワードシフトされた内容を非線形関数に供給して、結果を得ることと、
    前記結果と前記複数の状態レジスタのうちの第1の状態レジスタとの間で排他的論理和演算を行って、フィードバックの数を得ることと、
    前記複数の状態レジスタのうちの異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの第2の状態レジスタに前記フィードバックの数をロードすること、
    によって得られる請求項10記載の方法。
  12. 前記複数の状態レジスタが、再シーディング動作間でシフトされる回数のカウンタを維持することと、
    前記カウンタに基づいて、前記複数の状態レジスタのうちの1つを修正することと、
    をさらに含む請求項1記載の方法。
  13. 擬似乱数が生成されるたびに変わる間隔カウンタを維持することと、
    前記1つ以上の予測不可能な源から前記数生成器に再シーディングし、前記間隔カウンタによって定義された間隔でのみ、前記数生成器の内部状態を変更することと
    をさらに含む請求項1記載の方法。
  14. システム時間を用いて、前記間隔カウンタによって定義された間隔で前記数生成器に再シーディングすることをさらに含む請求項13記載の方法。
  15. 前記シードが、少なくとも128ビット長であり、前記数生成器の内部状態が、18ワードサイズの複数の状態レジスタである請求項1記載の方法。
  16. 暗号的に安全な数生成器であって、
    シード情報の1つ以上の予測不可能な源を得て、シードを与えるように構成されたシードローダと、
    前記数生成器の内部状態を記憶する複数の状態レジスタと、
    前記シードローダは、前記複数の状態レジスタの現在の内容と前記シードとに基づいて前記複数の状態レジスタに再びシードを与え、前記数生成器の内部状態を修正し、エントロピーを蓄積し、
    前記数生成器の修正された内部状態に基づいて、擬似乱数を生成するように構成された擬似乱数生成器と、
    含み、
    前記シードローダは、
    複数の状態レジスタのうちの1つの状態レジスタの現在の内容と前記シードとの演算によって、前記数生成器の前記1つの状態レジスタに前記シードをロードし、
    前記複数の状態レジスタのうちの一部の複数の状態レジスタの内容に演算を行って、フィードバックの数を得、
    前記複数の状態レジスタのうちの異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの1つの状態レジスタに前記フィードバックの数をロードすることによって、前記内部状態を修正する、暗号的に安全な数生成器。
  17. 前記擬似乱数生成器は、
    前記数生成器のシャットダウン時に、初期化シードを生成し、
    前記初期化シードを記憶するようにさらに構成されている請求項16記載の数生成器。
  18. 前記シードローダは、前記数生成器の再始動時に、記憶されている前記初期化シードを用いて前記複数の状態レジスタを初期化するようにさらに構成されている請求項17記載の数生成器。
  19. 前記シードローダは、
    前記1つ以上の予測不可能な源から得た新しいシードを前記複数の状態レジスタに連続的にロードするようにさらに構成されている請求項16記載の数生成器。
  20. 前記予測不可能な源は、量子化可能な情報をもつ物理的な源を含む請求項16記載の数生成器。
  21. 前記シードローダは、
    呼び出しアプリケーションから得た新しいシードを前記複数の状態レジスタへロードするようにさらに構成されている請求項16記載の数生成器。
  22. 1つの暗号プリミティブオペレーションは、前記複数の状態レジスタに再びシードを与え、前記擬似乱数を生成するのに使用される請求項16記載の数生成器。
  23. シードローダ、複数の状態レジスタ、および擬似乱数生成器は、非線形SOBER構造として構成される請求項16記載の数生成器。
  24. 数生成器であって、
    エントロピーの1つ以上の予測不可能な源を得て、シードを与える手段と、
    前記数生成器の現在の内部状態と前記シードとの関数として内部状態を修正することによって、前記数生成器の内部状態においてエントロピーを蓄積する手段と、
    前記数生成器の前記修正された内部状態に基づいて、擬似乱数を生成する手段と、
    を含み、
    前記エントロピーを蓄積する手段は、
    (a)複数の状態レジスタのうちの1つの状態レジスタの現在の内容と前記シードとの演算によって、前記1つの状態レジスタに前記シードをロードし、(b)前記複数の状態レジスタのうちの一部の複数の状態レジスタの内容に演算を行って、フィードバックの数を得、(c)前記複数の状態レジスタのうちの異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの1つの状態レジスタに前記フィードバックの数をロードすることによって内部状態を修正する、数生成器。
  25. エントロピーの1つ以上の予測不可能な源をシードに結合する手段をさらに含む請求項24記載の数生成器。
  26. 前記数生成器によって生成された擬似乱数である初期化シードを、前記数生成器のシャットダウン時に記憶する手段と、
    前記数生成器のスタートアップの内部状態を初期化する前に、前記初期化シードの完全性が損なわれているかどうかを判断する手段と、
    記憶されている前記初期化シードの完全性が損なわれているときは、別の予測不可能な源、そうでなければ、記憶されている前記初期化シード、の何れか一方を用いて、前記数生成器のスタートアップの内部状態に再びシードを与える手段と、
    をさらに含む請求項24記載の数生成器。
  27. エントロピーの1つ以上の予測不可能な源から得た追加のシードを用いて現在の内部状態を連続的に修正する手段と、
    呼び出しアプリケーションから受信した新しいシードを用いて現在の内部状態をオンデマンドで修正する手段と、
    をさらに含む請求項24記載の数生成器。
  28. エントロピーの1つ以上の予測不可能な源からシードを得て、現在の内部状態と前記シードとの関数として数生成器の内部状態を修正し、前記数生成器にエントロピーを蓄積し、前記数生成器の修正された内部状態に基づいて、擬似乱数を生成するように構成された処理デバイスと、
    前記数生成器の内部状態を記憶する複数の内部状態レジスタを含むメモリデバイスと
    を含み、
    前記処理デバイスは、
    前記複数の状態レジスタのうちの1つの状態レジスタの現在の内容と前記シードとの演算によって、前記1つの状態レジスタに前記シードをロードし、
    前記複数の状態レジスタのうちの一部の複数の状態レジスタの内容に演算を行って、フィードバックの数を得、
    前記複数の状態レジスタのうちの異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの1つの状態レジスタに前記フィードバックの数をロードすることによって、前記内部状態を修正する、処理回路。
  29. 前記処理回路は、
    前記数生成器によって生成された擬似乱数である初期化シードを、前記数生成器のシャットダウン時に前記メモリデバイスに記憶し、
    前記数生成器のスタートアップの内部状態を初期化する前に、前記初期化シードの完全性が損なわれているかどうかを判断し、
    記憶されている前記初期化シードの完全性が損なわれているときは、別の予測不可能な源、そうでなければ、記憶されている前記初期化シード、の何れか一方を用いて、前記数生成器のスタートアップの内部状態に再びシードを与えるようにさらに構成されている請求項28記載の処理回路。
  30. 前記処理回路は、
    エントロピーの1つ以上の予測不可能な源から追加のシードを連続的に得て、前記数生成器の内部状態を修正し、
    呼び出しアプリケーションから受信した新しいシードに基づいて、前記数生成器の内部状態を修正するようにさらに構成されている請求項28記載の処理回路。
  31. 前記処理回路は、
    前記現在の内部状態と前記シードとに基づいて、1つの暗号プリミティブオペレーションと非線形フィードバック関数とを使用することによって、内部状態を修正するようにさらに構成されている請求項28記載の処理回路。
  32. 擬似乱数を生成する1つ以上の命令をもつ機械読み出し可能媒体であって、命令は、プロセッサによって実行されたときに、前記プロセッサに、
    エントロピーの1つ以上の予測不可能な源からシードを得ることと、
    現在の内部状態と前記シードとの関数として、数生成器の内部状態を修正し、前記数生成器にエントロピーを蓄積することと、
    前記数生成器の修正された内部状態に基づいて、擬似乱数を生成することと、
    を行わせ、
    前記内部状態は、(a)複数の状態レジスタのうちの1つの状態レジスタの現在の内容と前記シードとの演算によって、前記1つの状態レジスタに前記シードをロードすることと、(b)前記複数の状態レジスタのうちの一部の複数の状態レジスタの内容に演算を行って、フィードバックの数を得ることと、(c)前記複数の状態レジスタのうちの異なる2つの状態レジスタの一方から他方へ内容をシフトし、前記複数の状態レジスタのうちの1つの状態レジスタに前記フィードバックの数をロードすること、によって修正する、機械読み出し可能媒体。
  33. 前記現在の内部状態と前記シードとに基づいて、1つの暗号プリミティブオペレーションと非線形フィードバック関数とを使用することによって、前記内部状態を修正する請求項32記載の機械読み出し可能媒体。
  34. プロセッサによって実行されたときに、前記プロセッサに、
    シード情報の1つ以上の予測不可能な源から追加のシードを連続的に得て、前記数生成器の内部状態を修正することと、
    呼び出しアプリケーションから受信した新しいシードに基づいて、前記数生成器の内部状態を修正することと、
    を行わせる1つ以上の命令をさらにもつ請求項32記載の機械読み出し可能媒体。
JP2008528208A 2005-08-24 2006-08-24 暗号的に安全な擬似乱数生成器 Expired - Fee Related JP4669046B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US71114805P 2005-08-24 2005-08-24
PCT/US2006/033270 WO2007037869A1 (en) 2005-08-24 2006-08-24 Cryptographically secure pseudo-random number generator

Publications (2)

Publication Number Publication Date
JP2009506438A JP2009506438A (ja) 2009-02-12
JP4669046B2 true JP4669046B2 (ja) 2011-04-13

Family

ID=37575097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008528208A Expired - Fee Related JP4669046B2 (ja) 2005-08-24 2006-08-24 暗号的に安全な擬似乱数生成器

Country Status (8)

Country Link
US (1) US8019802B2 (ja)
EP (1) EP1927214A1 (ja)
JP (1) JP4669046B2 (ja)
KR (1) KR101004269B1 (ja)
CN (1) CN101292464B (ja)
AR (1) AR055392A1 (ja)
TW (1) TWI327855B (ja)
WO (1) WO2007037869A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077866A (ko) * 2018-12-21 2020-07-01 국민대학교산학협력단 구명용 비상신호 발신장치 및 방법

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4823904B2 (ja) * 2005-03-31 2011-11-24 パナソニック株式会社 データ暗号化装置及びデータ暗号化方法
US8374351B2 (en) * 2006-07-21 2013-02-12 Nec Corporation Encryption device, program, and method
US8457304B2 (en) * 2007-02-23 2013-06-04 Choy Sai Foundation L.L.C. Efficient encoding processes and apparatus
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator
US8145905B2 (en) * 2007-05-07 2012-03-27 Qualcomm Incorporated Method and apparatus for efficient support for multiple authentications
DE102007025780A1 (de) * 2007-05-22 2008-11-27 Atmel Germany Gmbh Vorrichtung und Verfahren zur Erzeugung einer Zufallszahl
US20080298583A1 (en) * 2007-05-31 2008-12-04 Lucent Technologies Inc. System and method of quantum encryption
US20090083361A1 (en) * 2007-09-24 2009-03-26 Moore Charles H Shift-add based multiplication
US8788552B2 (en) * 2008-01-25 2014-07-22 Tata Consultancy Services Ltd. Deterministic random number generator for cryptography and digital watermarking
EP2300954B1 (en) * 2008-06-24 2014-12-03 NDS Limited Security within integrated circuits
US8832122B2 (en) * 2008-09-30 2014-09-09 Apple Inc. Media list management
US8369521B2 (en) * 2008-10-17 2013-02-05 Oracle International Corporation Smart card based encryption key and password generation and management
US9026571B2 (en) * 2008-10-27 2015-05-05 Microsoft Technology Licensing, Llc Random number generation failure detection and entropy estimation
US9552191B2 (en) * 2008-11-12 2017-01-24 Igt Canada Solutions Ulc Secure random number generation
FR2941114B1 (fr) 2009-01-13 2011-07-01 Viaccess Sa Procede et module de renouvellement du code d'un algorithme cryptographique, procede et module de generation d'une graine, processeur de securite et support d'enregistrement pour ces procedes
US8738676B2 (en) * 2009-05-29 2014-05-27 International Business Machines Corporation Entropy generation on a parallel computer system
US9495190B2 (en) * 2009-08-24 2016-11-15 Microsoft Technology Licensing, Llc Entropy pools for virtual machines
GB2469393C (en) * 2010-04-22 2014-08-06 Cen Jung Tjhai Public encryption system using deliberatily corrupted codewords from an error correcting code
US8626656B2 (en) * 2010-04-28 2014-01-07 Ing Direct N.V. System and method for securing payment instruments
GB2484931B (en) * 2010-10-26 2014-04-30 Nds Ltd Efficient delivery of structured data items
GB2473154B (en) * 2010-11-16 2011-06-15 Martin Tomlinson Public key encryption system using error correcting codes
US9465582B1 (en) * 2010-11-18 2016-10-11 The Boeing Company Significant random number generator
CN102541508A (zh) * 2010-12-29 2012-07-04 鸿富锦精密工业(深圳)有限公司 真随机数产生系统及方法
GB2491896A (en) * 2011-06-17 2012-12-19 Univ Bruxelles Secret key generation
US9008303B1 (en) * 2011-12-22 2015-04-14 Emc Corporation Method and apparatus for generating forward secure pseudorandom numbers
US9300472B2 (en) 2011-09-30 2016-03-29 Nokia Technologies Oy Method and apparatus for improving digital signatures
WO2013069392A1 (ja) * 2011-11-09 2013-05-16 Kddi株式会社 非線形処理器、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、マスク処理方法、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
EP3605940B1 (en) * 2011-11-30 2021-06-02 BlackBerry Limited Assessing cryptographic entropy
US8837720B2 (en) 2012-03-16 2014-09-16 Paul de Roulet Cryptographically secure pseudorandom number generator
US8954723B2 (en) 2012-05-09 2015-02-10 International Business Machines Corporation Anonymization of data within a streams environment
US8861725B2 (en) * 2012-07-10 2014-10-14 Infineon Technologies Ag Random bit stream generator with enhanced backward secrecy
US8879733B2 (en) * 2012-07-10 2014-11-04 Infineon Technologies Ag Random bit stream generator with guaranteed minimum period
US9086936B2 (en) 2012-07-31 2015-07-21 International Business Machines Corporation Method of entropy distribution on a parallel computer
KR101425600B1 (ko) * 2012-11-02 2014-08-04 한국전자통신연구원 입력 시간 정보를 이용하는 난수 생성 장치 및 방법
CN103906048B (zh) * 2012-12-25 2017-06-20 广东乐心医疗电子股份有限公司 通过蓝牙技术安全地传送数据的方法与装置
US9049232B2 (en) * 2013-02-28 2015-06-02 Amazon Technologies, Inc. Configurable-quality random data service
US9819727B2 (en) 2013-02-28 2017-11-14 Amazon Technologies, Inc. Computing infrastructure for configurable-quality random data
SG11201506784TA (en) * 2013-02-28 2015-09-29 Amazon Tech Inc Configurable-quality random data service
US9270649B1 (en) * 2013-03-11 2016-02-23 Emc Corporation Secure software authenticator data transfer between processing devices
US9201629B2 (en) * 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US9542156B2 (en) 2013-05-15 2017-01-10 Synopsys, Inc. Automatic control system and method for a true random number generator
US9449197B2 (en) * 2013-06-13 2016-09-20 Global Foundries Inc. Pooling entropy to facilitate mobile device-based true random number generation
KR20150033895A (ko) 2013-09-25 2015-04-02 삼성전자주식회사 소모품 유닛에 탑재 가능한 crum 칩과 이를 인증하는 화상형성장치 및 그 인증 방법
TWI712915B (zh) 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
JP6348019B2 (ja) * 2014-08-28 2018-06-27 ルネサスエレクトロニクス株式会社 通信システム、通信装置、自動車および通信方法
JP6501873B2 (ja) * 2014-09-14 2019-04-17 デュランド アレクサンドルDURAND Alexandre 暗号システムの再現可能なランダムシーケンス
US9569176B2 (en) 2014-10-30 2017-02-14 Seagate Technology Llc Deriving entropy from multiple sources having different trust levels
US9548862B1 (en) * 2014-11-17 2017-01-17 Safelogic, Inc. Managing entropy in computing devices for cryptographic key generation
US9658832B2 (en) 2015-05-18 2017-05-23 Red Hat Israel, Ltd. Multi-factor entropy sourcing for random number generators
US10116441B1 (en) 2015-06-11 2018-10-30 Amazon Technologies, Inc. Enhanced-security random data
US10348704B2 (en) * 2015-07-30 2019-07-09 Helder Silvestre Paiva Figueira Method for a dynamic perpetual encryption cryptosystem
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
US9755792B1 (en) * 2016-05-09 2017-09-05 Xilinx, Inc. Generating and checking a quaternary pseudo random binary sequence
US9891889B2 (en) * 2016-06-30 2018-02-13 International Business Machines Corporation Injecting CPU time jitter to improve entropy quality for random number generator
WO2018034699A1 (en) * 2016-08-19 2018-02-22 Oracle International Corporation Collecting entropy from diverse sources
US10078493B2 (en) 2016-10-10 2018-09-18 International Business Machines Corporation Secured pseudo-random number generator
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
CN107196760B (zh) * 2017-04-17 2020-04-14 徐智能 具有可调整性的伴随式随机重构密钥的序列加密方法
US10536266B2 (en) * 2017-05-02 2020-01-14 Seagate Technology Llc Cryptographically securing entropy for later use
US10402169B2 (en) * 2017-07-12 2019-09-03 Dell Products L.P. Method and system of secure random seed generation for a cryptographically secure pseudo-random number generator
KR101971001B1 (ko) * 2017-09-08 2019-04-22 국민대학교산학협력단 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
KR102628008B1 (ko) * 2017-11-08 2024-01-23 삼성전자주식회사 적어도 두 개의 알고리즘을 이용하여 랜덤 넘버를 생성하는 랜덤 넘버 생성기 및 이를 포함하는 보안 장치
US11082432B2 (en) 2017-12-05 2021-08-03 Intel Corporation Methods and apparatus to support reliable digital communications without integrity metadata
KR101888548B1 (ko) 2018-05-08 2018-08-14 (주)위즈네트 랜덤 넘버 생성 방법, 랜덤 넘버 생성기 및 이를 포함하는 통신 장치
US20210291048A1 (en) * 2018-08-09 2021-09-23 Wgames Incorporated Multi-process interface controller
JP2020088458A (ja) * 2018-11-16 2020-06-04 株式会社デンソーテン 情報処理装置
CN111465008A (zh) * 2019-01-21 2020-07-28 苹果公司 在无线通信中执行加密和认证时的初始化向量生成
CN110058843B (zh) * 2019-03-27 2023-03-03 创新先进技术有限公司 伪随机数的生成方法、装置和服务器
CN110851112A (zh) * 2019-11-06 2020-02-28 成都卫士通信息产业股份有限公司 一种随机比特生成方法、装置及电子设备和存储介质
US11586418B2 (en) 2020-01-17 2023-02-21 Macronix International Co., Ltd. Random number generator, random number generating circuit, and random number generating method
WO2023023988A1 (en) * 2021-08-25 2023-03-02 Boe Technology Group Co., Ltd. Method for generating pseudo-random number, random number generator, and computer-program product
WO2023158500A1 (en) * 2022-02-21 2023-08-24 Google Llc Secure pseudo-random number generator (prng) reseeding

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06342257A (ja) * 1993-06-02 1994-12-13 Matsushita Electric Ind Co Ltd 逐次暗号方式
JPH0736672A (ja) * 1993-07-20 1995-02-07 Canon Inc 乱数発生器、及びそれを用いた通信システム及びその方法
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
JP2000244480A (ja) * 1999-02-23 2000-09-08 Nec Corp データ暗号化/復号化回路およびデータ暗号化/復号化方法
WO2005062523A1 (en) * 2003-12-23 2005-07-07 Electronics And Telecommunications Research Institute Apparatus and method for generating random number using digital logic

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628786B1 (en) 1997-09-30 2003-09-30 Sun Microsystems, Inc. Distributed state random number generator and method for utilizing same
US20040162864A1 (en) * 2002-07-08 2004-08-19 Globespan Virata Inc. System and method for generating pseudo-random numbers
US7826613B2 (en) 2002-08-19 2010-11-02 Qualcomm Incorporated Stream cipher cryptographic system and method
US7139785B2 (en) 2003-02-11 2006-11-21 Ip-First, Llc Apparatus and method for reducing sequential bit correlation in a random number generator
DE10347455B4 (de) * 2003-10-13 2010-08-26 Infineon Technologies Ag Pseudozufallszahlengenerator für einen Stream Cipher
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
US7894602B2 (en) * 2006-03-31 2011-02-22 Sap Ag System and method for generating pseudo-random numbers
ES2590280T3 (es) * 2006-08-03 2016-11-21 Tubitak Generación de números aleatorios usando caos de tiempo continuo
WO2008065596A1 (en) * 2006-11-28 2008-06-05 Koninklijke Philips Electronics N.V. A method of generating arbitrary numbers given a seed
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06342257A (ja) * 1993-06-02 1994-12-13 Matsushita Electric Ind Co Ltd 逐次暗号方式
JPH0736672A (ja) * 1993-07-20 1995-02-07 Canon Inc 乱数発生器、及びそれを用いた通信システム及びその方法
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
JP2000244480A (ja) * 1999-02-23 2000-09-08 Nec Corp データ暗号化/復号化回路およびデータ暗号化/復号化方法
WO2005062523A1 (en) * 2003-12-23 2005-07-07 Electronics And Telecommunications Research Institute Apparatus and method for generating random number using digital logic

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077866A (ko) * 2018-12-21 2020-07-01 국민대학교산학협력단 구명용 비상신호 발신장치 및 방법
KR102156568B1 (ko) * 2018-12-21 2020-09-16 국민대학교산학협력단 구명용 비상신호 발신장치 및 방법

Also Published As

Publication number Publication date
TW200740164A (en) 2007-10-16
TWI327855B (en) 2010-07-21
AR055392A1 (es) 2007-08-22
CN101292464A (zh) 2008-10-22
JP2009506438A (ja) 2009-02-12
EP1927214A1 (en) 2008-06-04
KR20080041272A (ko) 2008-05-09
CN101292464B (zh) 2011-11-09
KR101004269B1 (ko) 2011-01-03
US20070230694A1 (en) 2007-10-04
US8019802B2 (en) 2011-09-13
WO2007037869A1 (en) 2007-04-05

Similar Documents

Publication Publication Date Title
JP4669046B2 (ja) 暗号的に安全な擬似乱数生成器
Aumasson Serious cryptography: a practical introduction to modern encryption
JP4828068B2 (ja) コンピュータで効率的な線形フィードバック・シフト・レジスタ
Rogaway et al. A software-optimized encryption algorithm
JP4728657B2 (ja) 回転バッファを用いたストリーム暗号設計
Guillen et al. Towards post-quantum security for IoT endpoints with NTRU
US9225521B2 (en) Apparatus and method for skein hashing
JP2010525417A (ja) 擬似乱数生成器のための初期シード管理
Andrade et al. Lyra2: Efficient password hashing with high security against time-memory trade-offs
JP6287785B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US8005215B2 (en) Table shuffle cipher system
US11791981B2 (en) Generating cryptographic random data from raw random data
ALMashrafi et al. Analysis of indirect message injection for mac generation using stream ciphers
Nishinaga et al. Implementation of µNaCl on 32-bit ARM Cortex-M0
Yu et al. An Energy-Efficient Double Ratchet Cryptographic Processor With Backward Secrecy for IoT Devices
Hilewitz et al. Accelerating the whirlpool hash function using parallel table lookup and fast cyclical permutation
Hafsa et al. A lightweight and robust block cipher algorithm for real-time applications
Erdem et al. Use of Rijndael Block Cipher on J2ME Devices for encryption and hashing
Kashmar et al. Pseudorandom number generator using Rabbit cipher
Huang et al. Random Cladding with Feedback Mechanism for encrypting mobile messages
Trojnara Evolution of the StreamHash hash function family
Dasari Random Number Generator
Chao et al. An Efficient Stream Cipher Using Variable Sizes of Key-Stream

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101013

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: 20101214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4669046

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees