JP2021501902A - 乱数生成器 - Google Patents

乱数生成器 Download PDF

Info

Publication number
JP2021501902A
JP2021501902A JP2019566283A JP2019566283A JP2021501902A JP 2021501902 A JP2021501902 A JP 2021501902A JP 2019566283 A JP2019566283 A JP 2019566283A JP 2019566283 A JP2019566283 A JP 2019566283A JP 2021501902 A JP2021501902 A JP 2021501902A
Authority
JP
Japan
Prior art keywords
bits
bit
prng
aes
branch
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.)
Granted
Application number
JP2019566283A
Other languages
English (en)
Other versions
JP6782863B1 (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Application granted granted Critical
Publication of JP6782863B1 publication Critical patent/JP6782863B1/ja
Publication of JP2021501902A publication Critical patent/JP2021501902A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

乱数(202)を生成する方法(300)は、内側ビットと外側ビットとを含む2,048ビットの状態を有する擬似乱数生成器(PRNG)(200)を初期化することを含み、内側ビットは、2,048ビットの第1の128ビットを含み、外側ビットは、2,048ビットの残りのビットを含む。当該方法は、AESラウンドキー(192)をキーソース(192)から検索することと、しきい値回数にわたって、128ビットの16ブランチを有するファイステルネットワークの奇数番号のブランチ(220)を、ファイステルネットワークの、対応する偶数番号の隣接ブランチの関数とXORすることにより、AESラウンドキーを用いてラウンド関数を実行することと、128ビットの各ブランチを所定の順序にシャッフルすることとも含む。当該方法は、並べ替えられた状態の内側ビットの、以前の状態の内側ビットとのXORを実行することも含む。

Description

技術分野
本開示は、乱数を生成することに関する。
背景
ランダムアルゴリズムは、クライアントに属するデータを安全に保つために、大きなデータストリームからソート、シャッフル、および/またはサンプリングを行うときに、擬似乱数生成器(PRNG:pseudorandom number generator)に一般的に依存する。PRNGは、決定論的アルゴリズムを用いて、シードと呼ばれるランダム入力から非常に高速に擬似乱数を生成する。PRNGに依存するアルゴリズムは、敵がPRNGの動きを予測できるとき、その性能の保証を失い得る。強力なPRNGは、敵からの攻撃耐性を提供する一方で、一般に回避策に時間がかかる。一方、速いPRNGは、一般に簡単に予測可能であり、当該PRNGは、攻撃者/敵による予期しない相関または搾取に対して脆弱になる。したがって、開発者は、ランダム化されたアプリケーションに対してPRNGを選択するときに、適切なセキュリティ/速度のトレードオフを決定することが必要になる。しばしば、開発者は、ランダム化されたアプリケーションが敵に対して脆弱であり得ることに気づいておらず、それゆえ、セキュリティに対して速度を犠牲にすることに消極的である。セキュリティ/速度のトレードオフを確認するために数万回のランダム生成器の使用を監査するタスクは、それが費用がかかるのと同じくらい困難である。
概要
本開示の一態様は、擬似乱数を生成するための方法を提供する。当該方法は、データ処理ハードウェアが、内側ビットと外側ビットとを含む2,048ビットの状態を有する擬似乱数生成器(PRNG)を初期化することを含む。内側ビットは、2,048ビットの第1の128ビットを含み、外側ビットは、2,048ビットの残りのビットを含む。当該方法は、データ処理ハードウェアが、先進暗号化標準(AES:Advanced Encryption Standard)ラウンドキーをキーソースから検索することによるPRNGの状態を並び替えることも含む。当該方法は、AESラウンドキーを用いてラウンド関数(Round Function)を実行することにより、PRNGの状態をしきい値回数にわたって並び替えることをさらに含む。ラウンド関数は、128ビットの16ブランチを有するファイステルネットワークの奇数番号のブランチを、ファイステルネットワークの、対応する偶数番号の隣接ブランチの関数とXORすることを含む。しきい値回数にわたって、当該方法は、128ビットの各ブランチを所定の順序にシャッフルすることによりPRNGの状態を並び替えることも含む。当該方法は、データ処理ハードウェアが、並べ替えられた状態の内側ビットの、以前の状態の内側ビットとのXORを実行することも含む。
いくつかまたは全ての状態、特にいくつかまたは全ての外側ビットは、要求されるさらに他の使用もしくは操作のために、擬似乱数として、または擬似乱数を提供するためにそのときに用いられ得る。
ファイステルネットワークは、一般化されたファイステルネットワーク、言い換えれば、より具体的には一般化された2型のファイステルネットワークであり得る。
本開示の実施形態は、1つ以上の以下の任意の特徴を含み得る。いくつかの実施形態において、PRNGを初期化することは、PRNGの状態をゼロに設定することと、外側ビットを任意のシード値に設定することとを含む。任意に、PRNGを初期化することは、PRNGの状態を以前の状態に設定することも含み得る。しきい値の回数は、少なくとも17回を含み得る。いくつかの例において、ラウンド関数は、AESの少なくとも2ラウンドを含む。これらの例において、AESの当該少なくとも2つのラウンドの各々は、AESの他のラウンドのAESラウンドキーとは異なる、対応するAESラウンドキーを用い得る。
いくつかの例において、ファイステルネットワークの奇数番号のブランチを、ファイステルネットワークの、対応する偶数番号の隣接ブランチの関数とXORすることは、ランダムビットという結果を生ずる。これらの例において、外側ビットは、結果として生じるランダムビットを含む。128ビットの各ブランチを所定の順序にシャッフルすることは、8回、ラウンド関数を実行して各ブランチをシャッフルした後、全サブブランチ拡散を実現し得る。いくつかの実施形態において、所定の順序は、{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む。任意に、当該方法は、内側ビットへのアクセスを防止し、外側ビットへのアクセスを許可することを含み得る。
本開示は、好適なコンピュータ機器上で実施されたときに、説明される方法を実行するように構成されているコンピュータプログラムコードを備える、1つ以上のコンピュータ読み取り可能な媒体も提供する。
本開示は、説明される方法を実施するために構成されている機器も提供する。例えば、本開示の別の態様は、乱数を生成するためのシステムを提供する。当該システムは、データ処理ハードウェアと、当該データ処理ハードウェアに通信するメモリハードウェアとを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると当該データ処理ハードウェアに動作を行わせる命令を格納する。当該動作は、内側ビットと外側ビットとを含む、2,048ビットの状態を有する疑似乱数生成器(PRNG)を初期化することを含む。内側ビットは、2,048ビットの第1の128ビットを含み、外側ビットは、2,048ビットの残りのビットを含む。当該動作は、先進暗号化標準(AES)ラウンドキーをキーソースから検索することにより、PRNGの状態を並べ替えることも含む。PRNGの状態を並び替えることは、しきい値回数にわたって、AESラウンドキーを用いてラウンド関数を実行することも含む。ラウンド関数は、128ビットの16ブランチを有するファイステルネットワークの奇数番号のブランチを、ファイステルネットワークの、対応する偶数番号の隣接ブランチの関数とXORすることを含む。PRNGの状態を並び替えることは、しきい値回数にわたって、128ビットの各ブランチを所定の順序にシャッフルすることをさらに含む。当該動作は、並べ替えられた状態の内側ビットの、以前の状態の内側ビットとのXORを実行することも含む。
本開示の実施形態は、1つ以上の以下の任意の特徴を含み得る。システムのいくつかの構成において、PRNGを初期化することは、PRNGの状態をゼロに設定することと、外側ビットを任意のシード値に設定することとを含む。しきい値回数は、少なくとも17回を含み得る。いくつかの例において、ラウンド関数は、AESの少なくとも2ラウンドを含む。これらの例において、AESの当該少なくとも2つのラウンドの各々は、AESの他のラウンドのAESラウンドキーとは異なる、対応するAESラウンドキーを用い得る。
いくつかの実施形態において、ファイステルネットワークの奇数番号のブランチを、ファイステルネットワークの、対応する偶数番号の隣接ブランチの当該関数とXORすることは、ランダムビットという結果を生ずる。128ビットの各ブランチを所定の順序にシャッフルすることは、8回、ラウンド関数を実行して各ブランチをシャッフルした後、全サブブランチ拡散を達成し得る。いくつかの実施形態において、所定の順序は、{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む。任意に、当該方法は、内側ビットへのアクセスを防止し、外側ビットへのアクセスを許可することを含み得る。
本開示の1つ以上の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴および利点は、説明および図面、ならびに請求の範囲から明らかになるであろう。
図面の説明
乱数を生成するための例示的なシステムの概略図である。 128ビットの16ブランチを有する一般化されたファイステルネットワークを実現する例示的な擬似乱数発生器(PRNG)の概略図である。 128ビットの16ブランチを有する一般化されたファイステルネットワークを実現する例示的な擬似乱数発生器(PRNG)の概略図である。 並べ替えられた状態の内側ビットと以前の状態の内側ビットとの間でXORを実行する、図2Aおよび図2BのPRNGの概略図である。 乱数を生成するための例示的な方法のフローチャートである。 例示的なコンピューティング装置の概略図である。
様々な図面における同様の参照記号は、同様の要素を示す。
詳細な説明
本明細書における実施形態は、より高い基準レベルのセキュリティを提供しながら、既存の汎用乱数生成器と互角の実行時間コストを達成する擬似乱数生成器(PRNG)に向けられる。例えば、「より高い基準レベルのセキュリティ」は、経験的ランダム性、予測不能性、およびバックトラッキング耐性の特性により特徴付けられるPRNGを指す。既存の汎用乱数生成器は、経験的ランダム性、予測不能性、およびバックトラッキング耐性のこれらの特性の1つまたは2つを示し得るが、速度を大幅に犠牲にすること(例えば、実行時間コストを増加すること)なく3つ全てを示すものは知られていない。
本明細書において用いられるように、「経験的ランダム性」は、シミュレーションに影響し得る相関などの欠陥の低減された可能性を示すPRNGを指し、「予測不能性」は、264以上のランダム出力を生成および格納できる比較的強力な敵がPRNGの現在の状態を知らない限り、当該敵が将来の出力を予測することをPRNGが防ぐことができることを指す。したがって、敵が現在の状態にアクセスするか、または少なくとも264クエリを発行できない限り、当該敵は、PRNGによる将来の出力を正しく予測する無視できるほどの可能性を有しているにすぎない。少なくとも264クエリの攻撃を発行するために110,000USDを超える費用が敵にかかり得るため、潜在的な攻撃者がランダムな出力を予測しようとすることを試みることをやめさせるための控えめな推定値として、264の下限が選択される。PRNGの「予測不能性」は、ランダムアルゴリズムにおいて敵が最悪のケースをトリガーすることを難しくすることにより、またはランダム化されたオンラインのサンプリングアルゴリズムにより描かれたサンプルに影響を及ぼすことにより、非暗号化アプリケーションに対してPRNGを役立つようにもする。最後に、「バックトラッキング耐性」は、PRNGの現在の状態が損なわれる場合であっても、過去の出力の再構築をPRNGが防ぐことを指す。シミュレーションアプリケーションに対して「バックトラッキング耐性」の特性は必要ではないかもしれないが、この特性は、入力サンプルがスニッフィング/サンプリングされた過去の動きの出力を敵が発見することを防ぐであろう。
いくつかの実施形態において、PRNGは、128ビットの16ブランチを有する一般化された2型のファイステルネットワークを採用して、先進暗号化標準ラウンドキーを用いてラウンド関数を実行することと、ラウンド関数を実行した後に128ビットの各ブランチを所定の順序にシャッフルすることとによりPRNGの状態を入れ替える。並び替えは、シャッフルが全ビット拡散を首尾よく達成するために、ラウンド関数の実行と後続のシャッフルとをしきい値回数にわたって繰り返し得る。本明細書において用いられるように、「しきい値回数」という用語は、各並べ替えラウンドが、AESキーを用いる対応するラウンド関数と後続のシャッフリングとを実行する、しきい値回数の並べ替えラウンドを指し得る。いくつかの例において、シャッフリングが16ラウンド後に2つのサブブロック拡散を達成するため、しきい値回数は、全ビット拡散に対して少なくとも17回を含む。さらに、ラウンド関数を実行することは、全ビット拡散を達成するためにAESの少なくとも2ラウンドを実行することを含む。一般に、AESの単一のラウンドは、アクティブな置換ボックスの比率の観点から、2回のAESラウンドよりも効率が低い。
図1を参照して、いくつかの実施形態において、システム100は、ユーザー10に関連付けられた1つ以上のクライアント装置110,110a〜nを含む。ユーザー10は、ネットワーク130を介して、リモートシステム140に通信し得る。リモートシステム140は、スケーラブルな/融通性のあるリソース142を有する分散システム(例えば、クラウド環境)であり得る。リソース142は、コンピューティングリソース144(例えば、データ処理ハードウェア)および/またはストレージリソース146(例えば、メモリハードウェア)を含む。いくつかの実施形態において、リモートシステム140は、先進暗号化標準(AES)ラウンドキー192を含むキーソース190と、キーソース190に通信し、ラウンド関数を実行することによりランダムビット202を生成するように構成されている擬似乱数生成器(PRNG)200とを実行する。ラウンド関数は、キーソース190から検索されたAESラウンドキー192を用いる。本明細書において用いられるように、ランダムビット202および乱数(複数可)という用語は、交換可能に用いられ得る。ラウンド関数は、AESの2ラウンドを含んでもよく、AESの各ラウンドが、AESの他のラウンドのAESラウンドキー192とは異なる、対応するAESラウンドキー192を用いる。ラウンド関数は、AESの2ラウンドよりも多いラウンドも含んでもよく、AESの各ラウンドは、異なる対応するAESラウンドキー192を用い得る。AESラウンドキー192は、対応するラウンドのAESが、全て等しい列を伴う平文の対称性を破ることを確実にするために、密であって互いに独立していてもよく、それにより敵からの攻撃を回避する。
いくつかの例において、リモートシステム140は、PRNG200へのアクセスを管理するためのPRNGマネージャ150を実行する。クライアント装置110は、ネットワーク130を介してPRNGマネージャ150に通信できる任意のコンピューティング装置であり得る。クライアント装置110は、ラップトップ、タブレット、スマートフォン、およびウェアラブルコンピューティング装置(例えば、ヘッドセットおよび/または時計)などの、デスクトップコンピューティング装置とモバイルコンピューティング装置とを含むが、これらに限定されない。クライアント装置110は、リモートシステム140上で実行されているソフトウェアアプリケーション170を配備、および/または当該ソフトウェアアプリケーション170にアクセスするリモートシステム140のユーザー10に対応し得る。例えば、リモートシステム140は、メモリハードウェア内に1つ以上のコンテナ180,180a−nを有するコンテナ環境を実行し、1つ以上のコンテナ180のコンテンツは、リモートシステム140上で実行されているソフトウェアアプリケーション170と集合的に関連付けられ得る。クライアント装置110は、追加的または代替的に、ソフトウェアアプリケーション170を実行し得る。
いくつかの実施形態において、PRNG200は、クライアント装置110から乱数リクエスト120を受信することに応答して乱数202を生成し、PRNGマネージャ150は、クライアント装置110に乱数202を送り返す。追加的または代替的に、リモートシステム140で実行されているソフトウェアアプリケーション170は、乱数リクエスト120を提供し、PRNG200により生成された乱数202をPRNGマネージャ150から直接受信し得る。本開示は、リクエスト120を提供する、いかなる1つの特定のソースにも限定されない。実際、PRNG200は、リクエスト120を受信することとは無関係にランダムビット202を生成するように構成され得る。いくつかのシナリオにおいて、ソフトウェアアプリケーション170は、入力シード値として乱数202を用いる。他のシナリオにおいては、ソフトウェアアプリケーション164は、宝くじ番号(または宝くじ番号の順序)としてPRNG200により出力された乱数202を用いる、電子宝くじなどのゲームアプリケーションに対応する。PRNG200は、乱数を必要とする任意のタスク/アルゴリズムによる使用のための乱数/ランダムビット202を生成し得る。
図1および図2A〜2Cを参照して、いくつかの実施形態において、PRNG200は、内側ビット210iと外側ビット210oとを含む2,048ビット210の状態を有する。内側ビット210iは、第1の128ビットを含み、外側ビット210oは、2,048ビットの残りのビットを含む。内側ビット210iは、スポンジの「容量」に関連する、アクセス不能な「内側」部分に対応する。暗号法において、スポンジ関数またはスポンジ構造は、任意の長さの入力ビットストリームを取得して任意の所望の長さの出力ビットストリームを生み出す有限内部状態を備えるアルゴリズムのクラスである。データ処理ハードウェア142は、(i)PRNG200を初期化し、それから、ファイステルネットワークを実装して、乱数202を生成するためのPRNG200の状態を入れ替える。PRNG200は、乱数202の再現可能な順序を生成するように構成されているため、外部エントロピーソースから状態をシードすることは望ましくない。いくつかのシナリオにおいて、PRNG200を初期化することは、PRNG200の状態をゼロに設定することと、外側ビット210oの少なくとも一部を任意のユーザー指定のシード値に任意に設定することとを含む。他のシナリオにおいて、PRNG200を初期化することは、PRNG200の状態を以前の状態に設定することを含む。PRNG200を初期化するこのシナリオは、状態をゼロに設定して外側ビット210oを任意のユーザー指定のシード値に設定することの初期化を通じてPRNG200が最初に構築された後に、用いられ得る。
PRNG200を初期化した後、データ処理ハードウェア142は、キーソース190からAESラウンドキー192を検索することにより、並べ替えを開始する。ファイステルネットワークは、各ブランチが128ビットを有する16のブランチ220を含む。ファイステルネットワークは、より小さなブロック/ブランチ(例えば、16〜32ビットブロックなど)からの相当な並べ替えを構築するために従来指定されている2型の一般化されたファイステルネットワークを含む。2型の一般化されたファイステルネットワーク構成は、疑似乱数関数の十分な数の並べ替えラウンドの後に強力な疑似ランダムな並べ替えを生み出すという意味において「堅実」である。けれども、8つよりも多いブランチ/ブロックを備えるファイステルネットワークを用いるいくつかの既存の数生成器とは異なり、本明細書において開示されているファイステルネットワークは、複数の独立した入力に依存しない。図2Aに示される例において、PRNG200が初期化されるとき(i)、第1のブランチSo220は、内側ビット210i(例えば、128ビット)を含み、第2から第16のブランチS〜S15220は、外側ビット210о(例えば、各ブランチS−S15における128外側ビット)を含む。並べ替えは、(1)ラウンド関数を実行することと;(2)ラウンド関数を実行した後に128ビットの各ブランチ220を所定の順序にシャッフルすることとの2つのステップを含む。
並べ替えの第1のステップの間、データ処理ハードウェア142は、AESラウンドキー192を用いてラウンド関数を実行する。ラウンド関数は、データ処理ハードウェア142上でハードウェアアクセラレートされるAESブロック暗号を含んでもよく、既存の乱数生成器による並び替えを上回りながら、ラウンド関数が、最適化されたソフトウェア実装よりも5倍から10倍速くなるようにAESNI命令を用い得る。PRNG200により採用されるラウンド関数は、ファイステルネットワークの奇数番号のブランチ220を、ファイステルネットワークの、対応する偶数番号の隣接ブランチ220の関数230とXORするためのXOR240を用いる。示される例において、ラウンド関数は、奇数番号のブランチS220を、対応する偶数番号の隣接ブランチS220の関数230とXORして、対応するランダム外側ビット210ORを出力する。同様に、ラウンド関数が最後の奇数番号のブランチS15220を対応する偶数番号の隣接ブランチS14220とXORして対応するランダム外側ビット210ORを出力するまで、ラウンド関数は、奇数番号のブランチS220を対応する偶数番号の隣接ブランチS220とXORして対応するランダム外側ビット210ORなどを出力する。したがって、1つのラウンド関数が2つの隣接する偶奇ブランチ220を含むため、並べ替えは、8つのラウンド関数を並列に実行する。対照的に、従来の並べ替え技術は、一度に1つのラウンド関数を実行するか、せいぜい4から6つのラウンド関数を並列に実行するにすぎない。しかしながら、ハードウェアアクセラレーションプロセッサの近年の進歩により、PRNG200は、AESの少なくとも2ラウンドを含む各ラウンド関数とともに、8つのラウンド関数を並列に実行できる。
PRNG200に2,048ビットの状態を提供することは、ラウンド関数の並列計算を可能にし、それゆえ、AESENC命令に関連する長いレイテンシを隠す。対照的に、より遅いコンピューティング性能により制限される既存の数生成器は、256ビットの状態を通常有し、それにより、ブランチを並び替えるために必要とされる合計4つのラウンド関数に対して、各々32ビットの8つのブランチを有するファイステルネットワークを必要とするにすぎない。
いくつかの例において、ラウンド関数は、AESの少なくとも2ラウンドを含み、AESの各ラウンドが、AESの他のラウンドのAESラウンドキー192とは異なる、対応するAESラウンドキー192を用いる。例えば、AESの2つのラウンドを含むラウンド関数は、次のように表現され得る。
Figure 2021501902
並べ替えの第2ステップの間に、シャッフラー250は、128ビットの各ブランチ220を所定の順序にシャッフルする。例えば、シャッフラーは、偶数番号のブランチS0,2,...,S14220の各々からビット210と、ファイステルネットワークの各奇数番号のブランチ220を、ファイステルネットワークの、対応する偶数番号の隣接ブランチ220の関数230とXORするラウンド関数により生成されたランダム外側ビット210ORとを受信する。いくつかの例において、シャッフラー250の所定の順序は、ファイステルネットワークが、8回の並べ替えラウンド(例えば、ラウンド関数の実行と後続のシャッフリングとが8回行われた)後に全サブブランチ拡散に達するように選択される。ここで、「全サブブランチ拡散」という用語は、1つおきの入力ブランチ220に依存するファイステルネットワークの各ブランチ220を指す。対照的に、巡回シフトを用いる従来のシャッフリング技術は、全サブブランチ拡散を達成するために16ブランチ上で16回の並べ替えラウンドを必要とするであろうため、速度がより遅い。ある実施形態において、シャッフラー250の所定の順序は、16ブランチを並び替えることに対して最善の攻撃耐性を提供すると知られている順序である{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む。例えば、ブランチ220を所定の順序にシャッフルするための並べ替えステップは、次のように表され得る。
Figure 2021501902
図2Aにおいて示されるように、シャッフラー250は、シャッフルされたブランチS',S,',S',S',..., S'14,S'15220'を第1の並べ替えラウンドの間に所定の順序で出力する。上述されたように、並び替えは、シャッフルが全ビット拡散を首尾よく達成するように、ラウンド関数の実行と後続のシャッフリングとを、並び替えラウンドのしきい値(n)回(例えば、しきい値回数)にわたって繰り返し得る。したがって、第1の並べ替えラウンドの後に発生する各並べ替えラウンドは、直前の並べ替えラウンドの間にシャッフラー250により出力されシャッフルされるブランチ220を用いる。例えば、図2Bは、第1の並べ替えラウンドから出力されシャッフルされるブランチS',S',...,S'14,S'15220'を、図2Aを参照して上述されたように、ラウンド関数の実行と後続のシャッフリングとに対して対応する入力として用いる第2の並べ替えラウンドを示す。ここで、シャッフラー250は、シャッフルされたブランチS”,S”,...S”14,S”15220”を第2の並べ替えラウンドの間に所定の順序で出力する。それにより、第3の並べ替えラウンドは、これらのシャッフルされたブランチを、ラウンド関数の実行と後続のシャッフルとに対する入力として用い、シャッフルされたブランチS’”,S’”,...S’”14,S’”15220’”を所定の順序で出力する。図2Bは、並べ替えラウンドのしきい値数(n)に達するまで、ラウンド関数の実行と後続のシャッフルとを繰り返して並べ替えることを示し、それによりシャッフラー250は、シャッフルされたブランチS ,S ,... ,S ,S 15220を所定の順序で出力する。ここで、ブランチS ,S ,... ,S ,S 15220は、並べ替え状態の2,048ビットを含む。いくつかの実施形態において、128ビットの各ブランチを{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}の所定の順序にシャッフルすることが、16の並べ替えラウンド後に2つのサブブロック拡散を実現するため、並べ替えラウンドのしきい値(n)は、全ビット拡散を達成するための少なくとも17の並べ替えラウンド(例えば、n=17)を含む。
上述されたように、データ処理ハードウェア142は、並べ替えの時にキーソース190からAESラウンドキー192を検索し得る。キーソース190は、暗号的に安全であり、PRNG200を初期化する時に任意の技術を用いてAESラウンドキー192を生成し得る。PRNG200を初期化し、17の並べ替えラウンドに対してPRNG200の状態を並べ替えすることは、以下のように表され得る。
Figure 2021501902
引き続き図2Bを参照して、第1のブランチS 220は、並べ替え状態の2,048ビットの第1の128ビットに対応する、並べ替えられた内側ビット210ipを含み、第2から第16のブランチSn 〜S 15の各々は、並べ替え状態の2,048ビットの残りのビットに対応する、並べ替えられたランダム外側ビット210ORを含む。ここで、ランダム外側ビット210ORは、リモートシステム140上でおよび/またはクライアント装置110上で実行されているソフトウェアアプリケーション170による使用のためにPRNG200によって生成および出力される、乱数(複数可)/ランダムビット202に対応する。
図2Cを参照して、いくつかの実施形態において、PRNG200は、(例えば、データ処理ハードウェア142を介して)並べ替え状態(例えば、状態[1])の並べ替えられた内側ビット210ipの、前の状態(例えば、状態[0])の内側ビット210iとのXORを実行して、XORされた内側ビット210ixを生成する。図示される例において、以前の状態の内側ビット210iは、PRNG200が初期化されたとき(図2A)、第1のブランチS220の第1の128ビットを含む。ここで、XORされた内側ビット210ixは、PRNG200の現在の状態(例えば、並べ替えられた状態[1])が損なわれた場合でも、過去の出力の再構築を防ぐために、PRNG200に前述の「バックトラッキング耐性」を提供する。したがって、攻撃者は、並べ替えに対する2127未満の順方向または逆方向のクエリを伴うランダムと以前の出力を(例えば、XORされた内側ビット210ixを推測することにより)区別することを期待できない。したがって、PRNG200は、乱数(複数可)/ランダムビット202に対応するランダム外側ビット210ORへのアクセスを許可し、内側ビット210i,210ixへのアクセスを防止する。並べ替えられた状態の内側ビットの、以前の状態の内側ビットとのXORを実行することは、次のように表され得る。
Figure 2021501902
図3は、乱数を生成するための例示的な方法300のフローチャートである。フローチャートは、データ処理ハードウェア142が、内側ビット210i,210と外側ビット210o,210とを含む2,048ビットの状態を有する擬似乱数生成器(PRNG)を初期化するとき、動作302において開始する。内側ビット210iは、2,048ビットの第1の128ビットを含み、外側ビット210oは、2,048ビットの残りのビットを含む。PRNG200の状態を初期化することは、PRNG200の状態をゼロに設定することと、外側ビット210oを任意のシード値に設定することとを含み得る。任意のシード値は、ユーザー指定であり得る。他の例において、PRNG200の状態を初期化することは、PRNG200の状態を以前の状態に設定することを含む。
動作304において、データ処理ハードウェア142は、キーソース190から先進暗号化標準(AES)ラウンドキー192をまず検索することにより、PRNG200の状態を並び替える。データ処理ハードウェア142は、少なくとも2つの異なるAESラウンドキー192を検索でき、キーソース190は、暗号的に安全であり得る。しきい値回数にわたって、データ処理142は、AESラウンドキー192を用いてラウンド関数を実行することと、ブランチ220をシャッフルすることとにより、PRNG200の状態をさらに並び替える。具体的には、動作306において、AESラウンドキー192を用いてラウンド関数を実行することは、128ビットの16ブランチを有するファイステルネットワークの奇数番号のブランチ220を、ファイステルネットワークの、対応する偶数番号の隣接ブランチ220の関数とXORすることを含む。いくつかの例において、ラウンド関数は、AESの少なくとも2ラウンドを含む。AESの少なくとも2つのラウンドの各々は、AESの他のラウンドのAESラウンドキー192とは異なる、対応するAESラウンドキー192を含み得る。動作308において、ブランチ220をシャッフルすることは、128ビットの各ブランチ220を所定の順序にシャッフルすることを含む。8回、ラウンド関数を実行して各ブランチ220をシャッフルした後に全サブブランチ拡散を達成するために、所定の順序は選択され得る。いくつかの例において、所定の順序は、{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む。いくつかの実施形態において、並べ替えが全ビット拡散を達成するために、しきい値回数は、少なくとも17回を含む。動作308において、データ処理ハードウェア142は、並べ替えられた状態の内側ビット210,210iPの、以前の状態の内側ビット210iとのXORを実行する。XORは、XORされた内側ビット210ixを生成し、PRNG200に「バックトラッキング耐性」を提供し、PRNG200の現在の状態(例えば、並べ替えられた状態[1])が損なわれた場合でも過去の出力の再構築を防ぐ。
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティング装置にタスクを行わせるコンピュータソフトウェアを指し得る。いくつかの例において、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」または「プログラム」と呼ばれ得る。例示的なアプリケーションは、システム診断アプリケーション、システム管理アプリケーション、システム保守アプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーションおよびゲームアプリケーションを含むが、これらに限定されない。
非一時的メモリは、コンピューティング装置による使用のための一時的または永続的な基盤上にプログラム(例えば、命令の列)またはデータ(例えば、プログラム状態情報)を格納するために用いられる物理的装置であり得る。非一時的メモリは、揮発性および/または不揮発性のアドレス指定できる半導体メモリであり得る。不揮発性メモリの例は、フラッシュメモリおよび読み取り専用メモリ(ROM:read-only memory)/プログラマブル読み取り専用メモリ(PROM:programmable read-only memory)/消去可能なプログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)/電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM:electronically erasable programmable read-only memory)(例えば、ブートプログラムなどのファームウェアに対して通常用いられる)を含むが、これらに限定されない。揮発性メモリの例は、ランダムアクセスメモリ(RAM:random access memory)、ダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、相変化メモリ(PCM: phase change memory)、およびディスクまたはテープを含むが、これらに限定されない。
図4は、本明細書において説明されるシステムおよび方法を実施するために用いられ得る例示的なコンピューティング装置400の概略図である。コンピューティング装置400は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを意図している。ここに示されている構成要素、それらの接続および関係、並びにそれらの機能は、例示的であることのみを意図しており、本明細書において説明および/または請求されている発明の実施を制限することを意図していない。
コンピューティング装置400は、プロセッサ410と、メモリ420と、ストレージ装置430と、メモリ420および高速拡張ポート440に接続する高速インターフェース/コントローラ440と、低速バス470およびストレージ装置430に接続する低速インターフェース/コントローラ460とを含む。PRNG200は、コンピューティング装置400上に存在し得る。構成要素410,420,430,440,450および460の各々は、様々なバスを用いて相互接続され、共通のマザーボード上に、または適切に他の方法で取り付けられ得る。プロセッサ410(例えば、データ処理ハードウェア142)は、高速インターフェース440に結合されたディスプレイ480などの外部の入力/出力装置上のグラフィカルユーザーインターフェース(GUI:graphical user interface)のためのグラフィカル情報を表示するためにメモリ420にまたはストレージ装置430上に格納された命令を含む、コンピューティング装置400内で実行するための命令を処理できる。他の実施形態において、多数のメモリおよび多数種類のメモリとともに、多数のプロセッサおよび/または多数のバスは、適切に用いられ得る。また、多数のコンピューティング装置400は、必要な動作の一部を提供する各装置と接続され得る(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)。
メモリ420(例えば、メモリハードウェア144)は、コンピューティング装置400内に一時的に情報を格納する。メモリ420は、コンピュータ読み取り可能な媒体、揮発性メモリユニット(複数可)、または不揮発性メモリユニット(複数可)であり得る。非一時的メモリ420は、コンピューティング装置400による使用のための一時的または永続的な基盤上のプログラム(例えば、命令の列)またはデータ(例えば、プログラム状態情報)を格納するために用いられる物理的な装置であり得る。不揮発性メモリの例は、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラマブル読み取り専用メモリ(PROM)/消去可能なプログラマブル読み取り専用メモリ(EPROM)/電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)(例えば、ブートプログラムなどのファームウェアに通常用いられる)を含むが、これらに限定されない。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープを含むが、これらに限定されない。
ストレージ装置430は、コンピューティング装置400のための大容量ストレージを提供できる。いくつかの実施形態において、ストレージ装置430は、コンピュータ読み取り可能な媒体である。様々な異なる実施形態において、ストレージ装置430は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、もしくはテープ装置、フラッシュメモリもしくは他の同様の固体メモリ装置、またはストレージエリアネットワークもしくはその他の構成における装置を含む、装置のアレイであり得る。追加的な実施形態において、コンピュータプログラム製品は、情報担体において明白に具現化される。コンピュータプログラム製品は、実行されると上述の方法などの1つ以上の方法を行う命令を含む。情報担体は、メモリ420、ストレージ装置430、またはプロセッサ410上のメモリなどの、コンピュータまたは機械読み取り可能な媒体である。
低速コントローラ460が低帯域幅集約型の動作を管理する一方で、高速コントローラ440は、コンピューティング装置400に対する帯域幅集約型の動作を管理する。デューティのそのような割り当ては例示的にすぎない。いくつかの実施形態において、高速コントローラ440は、メモリ420と、(例えば、グラフィックスプロセッサまたはアクセラレータを介して)ディスプレイ480と、様々な拡張カード(図示しない)を受け入れ得る高速拡張ポート450とに結合される。いくつかの実施形態において、低速コントローラ460は、ストレージ装置430と低速拡張ポート490とに結合される。低速拡張ポート490は、様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、ワイヤレスイーサネット)を含んでもよく、キーボード、ポインティング装置、スキャナー、または、例えばネットワークアダプタなどを介した、スイッチもしくはルーターなどのネットワーク装置などの1つ以上の入力/出力装置に結合され得る。
コンピューティング装置400は、図示されるように、いくつかの異なる形態において実現され得る。例えば、それは、標準サーバ400aとして若しくはそのようなサーバ400aのグループにおいて複数回、ラップトップコンピュータ400bとして、またはラックサーバシステム400cの一部として実現され得る。
本明細書において説明されるシステム及び技術の様々な実施形態は、デジタル電子回路および/もしくは光回路、集積回路、特定用途向け集積回路(ASICs:application specific integrated circuits)、コンピュータハードウェア、ファームウェア、ソフトウェア、並びに/又はそれらの組み合わせにおいて実現できる。これらの様々な実施形態は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実施形態を含み得る。そのシステムは、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータ並びに命令を受信し、それらにデータ並びに命令を送信するように結合された、専用または汎用のものであり得る。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られる)は、プログラマブルプロセッサのための機械命令を含み、高水準手続き型および/もしくはオブジェクト指向プログラミング言語、ならびに/またはアセンブリ/機械言語において実施され得る。本明細書において用いるとき、「機械読み取り可能な媒体」、および「コンピュータ読み取り可能な媒体」という用語は、機械命令および/もしくはデータをプログラマブルプロセッサに提供するために用いられる、任意のコンピュータプログラム製品、非一時的なコンピュータ読み取り可能な媒体、機器ならびに/または装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLDs:Programmable Logic Devices))を指す。当該媒体は、機械命令を機械読み取り可能な信号として受信する、機械読み取り可能な媒体を含む。「機械読み取り可能な信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意の信号を指す。
本明細書において説明されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を行うための、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって行われ得る。当該プロセスおよび論理フローは、専用の論理回路、例えばフィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)または特定用途向け集積回路(ASIC)によっても行われ得る。コンピュータプログラムの実行に対して好適なプロセッサは、例として、汎用のマイクロプロセッサおよび専用のマイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ若しくはランダムアクセスメモリ、またはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令を実行するためのプロセッサ、および命令とデータとを格納するための1つ以上のメモリ装置である。一般に、コンピュータは、データを格納するための1つ以上の大容量ストレージ装置、例えば磁気ディスク、光磁気ディスクもしくは光ディスクも含むか、当該1つ以上の大容量記憶装置からデータを受信するか若しくは当該1つ以上の大容量記憶装置にデータを転送するよう動作可能に結合されるか、または両方の場合がある。しかしながら、コンピュータは、そのような装置を有していなくてもよい。コンピュータプログラム命令およびデータを格納することに対して好適である、コンピュータ読み取り可能な媒体は、半導体メモリ装置、例えばEPROM、EEPROMおよびフラッシュメモリ装置;磁気ディスク、例えば内部のハードディスクまたはリムーバブルディスク;光磁気ディスク;ならびにCD−ROMおよびDVD−ROMディスクを例として含む、全ての形態の不揮発性メモリ、媒体ならびにメモリ装置を含む。プロセッサおよびメモリは、専用の論理回路によって補完され得るか、または専用の論理回路に組み込まれ得る。
ユーザーとの対話を提供するために、本開示の1つ以上の側面は、ユーザーに情報を表示するためのディスプレイ装置、例えば、陰極線管(CRT:cathode ray tube)、液晶ディスプレイ(LCD:liquid crystal display)モニターまたはタッチスクリーンと、任意にキーボード及びポインティング装置、例えば、マウスまたはトラックボールとを有するコンピュータ上で実施され得る。ユーザーは、当該キーボード及びポインティング装置により、コンピュータに入力を与えることができる。他の種類の装置は、ユーザーとの対話を与えるために同様に用いられ得る;例えば、ユーザーに与えられるフィードバックは、任意の形態の感覚のフィードバック、例えば、視覚のフィードバック、聴覚のフィードバック、又は触覚のフィードバックであり得る;そして、ユーザーからの入力は、音響、音声、又は触覚の入力を含む、任意の形態において受信され得る。加えて、コンピュータは、ユーザーにより用いられる装置へ文書を送信することにより、および当該装置から文書を受信することによりユーザーと対話できる;例えば、コンピュータは、ウェブブラウザーから受信されたリクエストに応答して、ユーザーのクライアント装置上のウェブブラウザーへウェブページを送信することにより、ユーザーと対話できる。
多くの実施形態が説明された。それにもかかわらず、本開示の趣旨および範囲から逸脱することなく、様々な変更がなされ得ることが理解されるであろう。したがって、他の実施形態は、以下の請求の範囲内にある。

Claims (20)

  1. 乱数(202)を生成するための方法(300)であって、前記方法は、
    データ処理ハードウェア(142)が、内側ビット(210i)と外側ビット(210o)とを含む2,048ビットの状態を有する擬似乱数生成器(PRNG:pseudo-random number generator)(200)を初期化することを備え、
    前記内側ビット(210i)は、前記2,048ビットの第1の128ビットを含み、前記外側ビット(210o)は、前記2,048ビットの残りのビットを含み、
    前記方法は、さらに、前記データ処理ハードウェア(142)が、前記PRNG(200)の前記状態を並べ替えることを備え、
    前記並べ替えることは、
    キーソース(190)から先進暗号化標準(AES:Advanced Encryption Standard)ラウンドキー(192)を検索することと、
    しきい値回数にわたって、前記AESラウンドキー(192)を用いてラウンド関数を実行することとによって実行され、
    前記ラウンド関数は、128ビットの16ブランチ(220)を有するファイステルネットワークの奇数番号のブランチ(220)を、前記ファイステルネットワークの、対応する偶数番号の隣接ブランチ(220)の関数とXORすることを含み、
    前記並べ替えることは、さらに、
    前記しきい値回数にわたって、128ビットの各ブランチ(220)を所定の順序にシャッフルすることによって実行され、
    前記方法は、さらに、
    前記データ処理ハードウェア(142)が、前記並べ替えられた状態の前記内側ビット(210i)の、以前の状態の前記内側ビット(210i)とのXORを実行することを備える、方法。
  2. 前記PRNG(200)を初期化することは、
    前記PRNG(200)の前記状態をゼロに設定することと、
    前記外側ビット(210o)を任意のシード値に設定することとを含む、請求項1に記載の方法(300)。
  3. 前記PRNG(200)を初期化することは、前記PRNG(200)の前記状態を以前の状態に設定することを含む、請求項1に記載の方法(300)。
  4. 前記しきい値回数は、少なくとも17回を含む、請求項1〜3のいずれか1項に記載の方法(300)。
  5. 前記ラウンド関数は、AESの少なくとも2ラウンドを含む、請求項1〜4のいずれか1項に記載の方法(300)。
  6. AESの前記少なくとも2ラウンドの各々は、AESの他のラウンドの前記AESラウンドキー(192)とは異なる、対応するAESラウンドキー(192)を用いる、請求項1〜5のいずれか1項に記載の方法(300)。
  7. 前記ファイステルネットワークの前記奇数番号のブランチ(220)を、前記ファイステルネットワークの、対応する偶数番号の隣接ブランチ(220)の前記関数とXORすることは、ランダムビット(210)という結果を生じ、前記外側ビット(210o)は、前記結果として生じるランダムビット(210)を含む、請求項1〜6のいずれか1項に記載の方法(300)。
  8. 128ビットの各ブランチ(220)を前記所定の順序にシャッフルすることは、8回、前記ラウンド関数を実行して各ブランチ(220)をシャッフルした後に、全サブブランチ拡散を達成する、請求項1〜7のいずれか1項に記載の方法(300)。
  9. 前記所定の順序は、{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む、請求項1〜8のいずれか1項に記載の方法(300)。
  10. 前記内側ビット(210i)へのアクセスを防止し、前記外側ビット(210o)へのアクセスを許可することをさらに含む、請求項1〜9のいずれか1項に記載の方法(300)。
  11. システム(100)であって、前記システムは、
    データ処理ハードウェア(142)と、
    前記データ処理ハードウェア(142)に通信するメモリハードウェア(144)とを備え、前記メモリハードウェア(144)は、前記データ処理ハードウェア(142)上で実行されると前記データ処理ハードウェア(142)に以下の動作を行わせる命令を格納し、前記動作は、
    内側ビット(210i)と外側ビット(210o)とを含む2,048ビットの状態を有する擬似乱数生成器(PRNG)(200)を初期化することを含み、
    前記内側ビット(210i)は、前記2,048ビットの第1の128ビットを含み、前記外側ビット(210o)は、前記2,048ビットの残りのビットを含み、
    前記動作は、さらに、前記PRNG(200)の前記状態を並べ替えることを含み、
    前記並べ替えることは、
    キーソース(190)から先進暗号化標準(AES)ラウンドキー(192)を検索することと、
    しきい値回数にわたって、前記AESラウンドキー(192)を用いてラウンド関数を実行することとによって実行され、
    前記ラウンド関数は、128ビットの16ブランチ(220)を有するファイステルネットワークの奇数番号のブランチ(220)を、前記ファイステルネットワークの、対応する偶数番号の隣接ブランチ(220)の関数とXORすることを含み、
    前記並べ替えることは、さらに、
    前記しきい値回数にわたって、128ビットの各ブランチ(220)を所定の順序にシャッフルすることによって実行され、
    前記動作は、さらに、
    前記並べ替えられた状態の前記内側ビット(210i)の、以前の状態の前記内側ビット(210i)とのXORを実行することを含む、システム。
  12. 前記PRNG(200)を初期化することは、
    前記PRNG(200)の前記状態をゼロに設定することと、
    前記外側ビット(210o)を任意のシード値に設定することとを含む、請求項11に記載のシステム(100)。
  13. 前記PRNG(200)を初期化することは、前記PRNG(200)の前記状態を以前の状態に設定することを含む、請求項11に記載のシステム(100)。
  14. 前記しきい値回数は、少なくとも17回を含む、請求項11〜13のいずれか一項に記載のシステム(100)。
  15. 前記ラウンド関数は、AESの少なくとも2ラウンドを含む、請求項11〜14のいずれか一項に記載のシステム(100)。
  16. AESの前記少なくとも2ラウンドの各々は、AESの他のラウンドの前記AESラウンドキー(192)とは異なる、対応するAESラウンドキー(192)を用いる、請求項11〜15のいずれか1項に記載のシステム(100)。
  17. 前記ファイステルネットワークの前記奇数番号のブランチ(220)を、前記ファイステルネットワークの、対応する偶数番号の隣接ブランチ(220)の前記関数とXORすることは、ランダムビット(202)という結果を生じ、前記外側ビット(210o)は、前記結果として生じるランダムビット(202)を含む、請求項11〜16のいずれか1項に記載のシステム(100)。
  18. 128ビットの各ブランチ(220)を前記所定の順序にシャッフルすることは、8回、前記ラウンド関数を実行して各ブランチ(220)をシャッフルした後に、全サブブランチ拡散を達成する、請求項11〜17のいずれか1項に記載のシステム(100)。
  19. 前記所定の順序は、{7,2,13,4,11,8,3,6,15,0,9,10,1,14,5,12}を含む、請求項11〜18のいずれか1項に記載のシステム(100)。
  20. 前記動作は、前記内側ビット(210i)へのアクセスを防止し、前記外側ビット(210o)へのアクセスを許可することをさらに含む、請求項11〜19のいずれか1項に記載のシステム(100)。
JP2019566283A 2017-11-07 2017-11-07 乱数生成器 Active JP6782863B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/060275 WO2019093992A1 (en) 2017-11-07 2017-11-07 Random number generator

Publications (2)

Publication Number Publication Date
JP6782863B1 JP6782863B1 (ja) 2020-11-11
JP2021501902A true JP2021501902A (ja) 2021-01-21

Family

ID=60409424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019566283A Active JP6782863B1 (ja) 2017-11-07 2017-11-07 乱数生成器

Country Status (6)

Country Link
US (2) US11449311B2 (ja)
EP (1) EP3616052B1 (ja)
JP (1) JP6782863B1 (ja)
KR (1) KR102217865B1 (ja)
CN (1) CN111279307B (ja)
WO (1) WO2019093992A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907684B2 (en) 2021-02-16 2024-02-20 Cassy Holdings Llc High clock-efficiency random number generation system and method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100388059B1 (ko) * 2000-12-23 2003-06-18 한국전자통신연구원 비대칭키 암호 알고리즘을 이용한 데이터 암호화 시스템및 그 방법
US9361617B2 (en) * 2008-06-17 2016-06-07 Verifone, Inc. Variable-length cipher system and method
DE102009050493A1 (de) * 2009-10-23 2011-04-28 Röllgen, Bernd Blockdatenverschlüsselungsverfahren
KR101194403B1 (ko) * 2010-12-06 2012-10-25 삼성에스디에스 주식회사 암호학적 안전성이 보장된 의사난수 생성 장치 및 그 방법
US20130168450A1 (en) * 2011-12-30 2013-07-04 Clay W. von Mueller Format preserving cipher system and method
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
CN105376055B (zh) * 2015-12-09 2019-11-01 捷德(中国)信息科技有限公司 一种生成伪随机数的方法及伪随机数发生器
US10103873B2 (en) * 2016-04-01 2018-10-16 Intel Corporation Power side-channel attack resistant advanced encryption standard accelerator processor

Also Published As

Publication number Publication date
CN111279307A (zh) 2020-06-12
WO2019093992A1 (en) 2019-05-16
US20220405058A1 (en) 2022-12-22
US11449311B2 (en) 2022-09-20
JP6782863B1 (ja) 2020-11-11
KR20200003111A (ko) 2020-01-08
KR102217865B1 (ko) 2021-02-18
US20200401375A1 (en) 2020-12-24
EP3616052A1 (en) 2020-03-04
EP3616052B1 (en) 2021-08-25
CN111279307B (zh) 2023-05-12
US11755287B2 (en) 2023-09-12

Similar Documents

Publication Publication Date Title
Ohrimenko et al. The Melbourne shuffle: Improving oblivious storage in the cloud
JP6285536B2 (ja) データを暗号化するシステムおよび方法
CN107017981B (zh) 硬件辅助快速伪随机数生成
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
US10078493B2 (en) Secured pseudo-random number generator
JP2014178716A (ja) 不確定性ランダム値発生器
JP6911158B2 (ja) 差分プライバシーを備える忘却型アクセス
Liu et al. Efficient searchable symmetric encryption for storing multiple source dynamic social data on cloud
Teh et al. GPUs and chaos: a new true random number generator
US11328097B2 (en) Encryption circuit for performing virtual encryption operations
AL-khatib et al. Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR
US11755287B2 (en) Random number generator
Chang et al. Rig: A simple, secure and flexible design for password hashing
WO2019113844A1 (zh) 生成随机数的方法、芯片和电子设备
Karimovich et al. Computer's source based (Pseudo) random number generation
Beckers et al. Fault analysis of the chacha and salsa families of stream ciphers
Alzhrani et al. Windows and linux random number generation process: A comparative analysis
Chen et al. Distributed pseudo-random number generation and its application to cloud database
JP2007041199A (ja) データ分割装置、データ分割方法およびコンピュータプログラム
Hussein A proposed impregnable 256-bit hash producer
Maldonado et al. A novel hybrid mechanism for generation of pseudo-random sequences for data protection purposes
US20220368514A1 (en) Methods and Systems For Protecting Against Memory-Based Side-Channel Attacks
Tripathy et al. Efficiency Comparison and Analysis of Pseudo-random Generators in Network Security
Jackson et al. Quadrivium: A Trivium-Inspired Pseudorandom Number Generator.
Zhang et al. The research of applying chaos theory to speech communicating encryption system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200722

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200722

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200722

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200909

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201020

R150 Certificate of patent or registration of utility model

Ref document number: 6782863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250