JP6916871B2 - 真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 - Google Patents

真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 Download PDF

Info

Publication number
JP6916871B2
JP6916871B2 JP2019514244A JP2019514244A JP6916871B2 JP 6916871 B2 JP6916871 B2 JP 6916871B2 JP 2019514244 A JP2019514244 A JP 2019514244A JP 2019514244 A JP2019514244 A JP 2019514244A JP 6916871 B2 JP6916871 B2 JP 6916871B2
Authority
JP
Japan
Prior art keywords
raw
adjusted
value
instruction
entropy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019514244A
Other languages
English (en)
Other versions
JP2019537091A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019537091A publication Critical patent/JP2019537091A/ja
Application granted granted Critical
Publication of JP6916871B2 publication Critical patent/JP6916871B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/58Indexing scheme relating to groups G06F7/58 - G06F7/588

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

1つまたは複数の態様は、一般に、コンピューティング環境内の処理に関し、特に、真の乱数を生成することに関連付けられた処理に関する。
コンピュータ・アプリケーションは、データ暗号化キーの生成、複雑な現象のシミュレーション、大規模なデータ・セットからのサンプルの選択、ゲームなどを含むさまざまな機能に、乱数を使用する。乱数を生成するために、乱数発生器(RNG:random number generator)が使用される。乱数発生器は、ランダムな偶然による予測よりも正しく合理的に予測できない一連の数値またはシンボルを生成するように設計された計算デバイスまたは物理デバイスである。乱数は、疑似乱数または真の乱数であることがある。
疑似乱数は、疑似乱数発生器(PRNG:pseudorandom number generator)(決定論的ランダム・ビット発生器(DRBG:deterministic random bit generator)とも呼ばれる)を使用して生成される。疑似乱数発生器は、一連の乱数の特性に近い特性を有する一連の数値を生成するためのアルゴリズムである。PRNGによって生成されるシーケンスは、相対的に小さい初期値(PRNGのシードと呼ばれ、真にランダムな値を含んでよい)のセットによって完全に決定されるため、真にランダムではない。
真の乱数は、ハードウェア乱数発生器(真の乱数発生器(TRNG:true random number generator)とも呼ばれる)を使用して生成される。真の乱数発生器は、コンピュータ・プログラムではなく物理的プロセスから乱数を生成するデバイスである。例として、真の乱数発生器は、放射性同位元素の崩壊の量子効果、大気電波雑音、リング発振器の干渉などに基づいてよい。
The National Institute of Standards and Technology (NIST) DRAFT Special Publication 800-90B, Recommendation for the Entropy Sources Used for Random Bit Generation "z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March 2015 "Power ISA (TM) Version 2.07B," International Business Machines Corporation, April 9, 2015 Recommendation for Random Number Generation Using Deterministic Random Bit Generators, National Institute of Standards and Technology (NIST), NIST Special Publication 800-90A, January 2012 Secure Hash Standard (SHS), Federal Information Processing Standards Publication, FIPS PUB 180-4, National Institute of Standards and Technology, Gaithersburg, MD, March 2012
真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法を提供する。
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するために処理回路によって実行される命令を格納しているストレージ媒体を備える。この方法は、例えば、実行される命令を取得することを含んでおり、この命令は複数の機能を実行するように構成される。この命令は実行され、この実行することが、選択された値を含んでいる命令に関連付けられた機能コードに基づいて、命令の1つまたは複数の入力をチェックして、複数の機能のうちのどの1つまたは複数の機能が実行されるかを決定することを含む。第1の値を含んでいる1つまたは複数の入力のうちの第1の入力に基づいて、生のエントロピーを提供する機能を実行し、この生のエントロピーを提供することは、ある数の生の乱数を格納することを含む。第2の値を含んでいる1つまたは複数の入力のうちの第2の入力に基づいて、調整済みエントロピーを提供する別の機能を実行し、この調整済みエントロピーを提供することは、ある数の調整済み乱数(conditioned random numbers)を格納することを含む。
生のエントロピーまたは調整済みエントロピーあるいはその両方を提供することができる1つの命令が使用される。命令を使用して真の乱数が生成され、それらの乱数は、高度にセキュリティで保護されたデータ暗号化処理またはその他の処理あるいはその両方などの、コンピューティング環境内の処理を容易にする。
例として、この数の生の乱数は、プログラムによって指定された数の生の乱数を含み、この数の調整済み乱数は、プログラムによって指定された数の調整済み乱数を含む。
一実施形態では、機能コードが、命令に関連付けられたレジスタ内で提供され、1つまたは複数の入力が、命令によって示された1つまたは複数のレジスタ内で提供される。
1つの例として、1つまたは複数の入力が少なくとも1つの長さの値を含む。例えば、1つまたは複数の入力が、第1の長さの値および第2の長さの値を含み、チェックすることが、第1の長さの値および第2の長さの値をチェックすることを含む。第1の値を含んでいる第1の長さの値に基づいて、この数の生の乱数が格納され、第2の値を含んでいる第2の長さの値に基づいて、この数の調整済み乱数が格納される。
例として、第1の値が0より大きい値であり、第2の値が0より大きい値である。
さらに別の実施形態では、別の選択された値を含んでいる機能コードに基づいて、生と調整済みの間の比率が提供される。生と調整済みの間の比率は、例えば、あるバイト数の生のエントロピーが、対応するバイト数の調整済みエントロピーを生成するために使用されることを示す。この提供することは、例えば、このバイト数の生のエントロピーのカウントをパラメータ・ブロックの1つの位置に格納すること、およびこのバイト数の調整済みエントロピーのカウントをパラメータ・ブロックの別の位置に格納すること含む。
生のエントロピー、調整済みエントロピー、または生と調整済みの間の比率、あるいはその組み合わせを提供するために、1つの命令が使用されてよい。
1つまたは複数の態様に関連する方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
以下の図面を単に例として参照し、本発明の実施形態について説明する。
本発明の1つまたは複数の実施形態を組み込んで使用するためのコンピューティング環境の一例を示す図である。 本発明の実施形態による、図1のプロセッサをさらに詳細に示す図である。 本発明の1つまたは複数の実施形態を組み込んで使用するためのコンピューティング環境の別の例を示す図である。 本発明の実施形態による、図3のメモリをさらに詳細に示す図である。 本発明の実施形態による、乱数動作実行命令の書式の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令の1つまたは複数の実施形態によって使用される汎用レジスタ(汎用レジスタ0(GR0))の内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって使用される別の汎用レジスタ(汎用レジスタ1(GR1))の内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって1つまたは複数の実施形態において使用されるレジスタRの内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって1つまたは複数の実施形態において使用されるレジスタR+1の内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって1つまたは複数の実施形態において使用されるレジスタRの内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって1つまたは複数の実施形態において使用されるレジスタR+1の内容の一例を示す図である。 本発明の実施形態による、図5の乱数動作実行命令によって使用するためのパラメータ・ブロックの書式の一例を示す図である。 本発明の実施形態による、乱数動作実行に関連付けられた処理の一例を示す図である。 本発明の実施形態による、乱数動作実行命令の真の乱数発生器の機能に関連付けられた処理の一例を示す図である。 本発明の実施形態による、乱数動作実行命令の真の乱数発生器の機能に関連付けられた処理の別の例を示す図である。 本発明の実施形態による、複数の機能を実行するように構成された命令の実行に関連付けられた処理の一例を示す図である。 本発明の実施形態による、複数の機能を実行するように構成された命令の実行に関連付けられた処理の一例を示す図である。
1つまたは複数の実施形態によれば、真の乱数が提供される。例えば、高度にセキュリティで保護されたデータ暗号化処理において、およびその他の処理において、真の乱数が使用されてよい。1つの例として、本発明の実施形態によれば、真の乱数を生成する命令(例えば、設計されたマシン命令)が提供される。この命令は、騒音源からの直接的な生のエントロピー、疑似乱数発生器によって処理された生のエントロピーである調整済みエントロピー、あるいはその両方を生成してよい。さらに、一実施形態では、この命令は、生の出力と調整済み出力の間の比率を示す生と調整済みの間の比率をさらに提供する。さらに、この命令は、1つまたは複数のその他の機能を提供してよい。多くの変形が存在する。
The National Institute of Standards and Technology (NIST) DRAFT Special Publication 800-90B, Recommendation for the Entropy Sources Used for Random Bit Generationには、TRNGのエントロピー源モデルが記載されており、このモデルは、(a)騒音源(およびそのデジタル化)、(b)オプションの条件、および(c)正常性チェックを含んでいる。騒音源は、上で示されたメカニズムのいずれかを含んでよく、例としては、放射性同位元素の崩壊、大気電波雑音、リング発振器の干渉などが挙げられる。騒音源において生じる可能性があるバイアスを減らすため、またはエントロピーの比率を増やすために、調整が使用されてよい。正常性チェックは、騒音源およびエントロピー源が期待されるパラメータの範囲内で動作し続けることを保証する。
NISTの勧告の少なくとも1つの実施形態に従って、生のエントロピーまたは調整済みエントロピーあるいはその両方を生成し、生の出力と調整済み出力の間の比率を提供することができる命令(本明細書では、乱数動作実行命令と呼ばれる)が提供される。
本発明の1つまたは複数の実施形態を組み込んで使用するためのコンピューティング環境の一例が、図1を参照して説明される。1つの例では、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるz/Architectureに基づく。z/Architectureの一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。Z/ARCHITECTUREは、International Business Machines Corporation(米国ニューヨーク州アーモンク)の登録商標である。
別の例では、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるPower Architectureに基づく。Power Architectureの一実施形態は、“Power ISA (TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。POWER ARCHITECTUREは、International Business Machines Corporation(米国ニューヨーク州アーモンク)の登録商標である。
コンピューティング環境は、インテルx86アーキテクチャを含むが、これに限定されない、他のアーキテクチャに基づいてもよい。その他の例も存在する。
図1に示されているように、コンピューティング環境100は、例えば、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18を含んでよいが、これらに限定されない、コンピュータ・システム/サーバ12を含んでいる。
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、1つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnect)バスを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下でさらに示され、説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含むことができる。
例えば、一連の(少なくとも1つの)プログラム・モジュール42を含んでいるプログラム/ユーティリティ40がメモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの何らかの組み合わせは、それぞれネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。そのような通信は、入出力(I/O:Input/Output)インターフェイス22を介して行うことができる。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示されているように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ12と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
プロセッサ16は、命令を実行するために使用される複数の機能コンポーネントを含む。図2に示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント120と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット122と、デコードされた命令を実行するための命令実行コンポーネント124と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント126と、実行された命令の結果を提供するための書き戻しコンポーネント130とを含む。これらのコンポーネントのうちの1つまたは複数は、本発明の実施形態によれば、下でさらに説明されているように、真の乱数またはそれらの乱数に関連付けられた情報136を提供してよい。
プロセッサ16は、一実施形態では、機能コンポーネントのうちの1つまたは複数によって使用される1つまたは複数のレジスタ140も含む。
1つまたは複数の実施形態を組み込んで使用するためのコンピューティング環境の別の例が、図3を参照して説明される。この例では、コンピューティング環境200は、例えば、1つまたは複数のバス208またはその他の接続あるいはその両方などを介して互いに結合された、ネイティブ中央処理装置(CPU:central processing unit)202、メモリ204、および1つまたは複数の入出力デバイスまたはインターフェイス206あるいはその両方を含む。例として、コンピューティング環境200は、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるPowerPCプロセッサまたはpSeriesサーバ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテルItanium IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、またはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組み合わせを含んでよい。
ネイティブ中央処理装置202は、環境内で処理中に使用される1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ210を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置202は、メモリ204に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ204に格納されたエミュレータ・コード212を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード212は、z/Architecture以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、pSeriesサーバ、HP Superdomeサーバなど)が、z/Architectureをエミュレートし、z/Architectureに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
エミュレータ・コード212に関連する詳細が、図4を参照してさらに説明される。メモリ204に格納されたゲスト命令250は、ネイティブCPU202のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令250は、z/Architectureプロセッサ102上で実行するように設計されてよいが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU202上でエミュレートされる。1つの例では、エミュレータ・コード212は、メモリ204から1つまたは複数のゲスト命令250を取得するため、および取得された命令のローカル・バッファリングを必要に応じて提供するための命令フェッチ・ルーチン252を含む。エミュレータ・コード212は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令256に変換するための命令変換ルーチン254も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
さらに、エミュレータ212は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン260を含む。エミュレーション制御ルーチン260は、ネイティブCPU202に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令256の実行は、データをメモリ204からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置202によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ210を使用して、またはメモリ204内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令250、ネイティブ命令256、およびエミュレータ・コード212は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコード、ミリコード、またはマクロコード、あるいはその組み合わせを含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
1つの例では、取得され、変換されて実行されるゲスト命令250は、本明細書に記載された乱数動作実行命令である。あるアーキテクチャ(例えば、z/Architecture)の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ(例えば、PowerPC、pSeries、インテルなど)のネイティブ命令256のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
命令の明示的フィールドおよび暗黙的フィールドを含んでいる、乱数動作実行命令、ならびに(ネイティブ・システム内またはエミュレートされたシステム内の)プロセッサによる実行の一実施形態に関連する詳細が本明細書において説明される。本発明の実施形態によれば、乱数動作実行命令は、使用可能な機能の指示を提供するために使用される問い合わせ機能、疑似乱数機能(例えば、SHA−512−DRNG機能)、生のエントロピー、調整済みエントロピー、またはその両方を生成する真の乱数機能(TRNG)、および生と調整済みの間の比率の問い合わせ機能を含むが、これらに限定されない、複数の機能を提供し、これらの各機能が下でさらに詳細に説明される。他の実施形態では、機能のうちの1つまたは複数がサポートも提供もされなくてよく、または1つまたは複数の他の機能が提供されてよく、あるいはその両方が行われてよい。多くの可能性が存在する。
乱数動作実行命令の一実施形態が、図5を参照して説明される。1つの例では、乱数動作実行命令300は、乱数動作実行を示すためのオペレーション・コード(オペコード)を含んでいるオペコード・フィールド302(例えば、ビット0〜15)、少なくとも1つの第1のレジスタ(R)を指定するために使用される第1のレジスタ・フィールド304(例えば、ビット24〜27)、および少なくとも1つの第2のレジスタ(R)を指定するために使用される第2のレジスタ・フィールド306(例えば、ビット28〜31)を含む。各フィールド304〜306は、1つの例では、別々であり、オペコード・フィールドから独立している。さらに、一実施形態では、フィールド304〜306は、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合されてよい。
1つの例では、命令の書式は、拡張されたオペコード・フィールドを伴うレジスタ・アンド・レジスタ動作である。この書式では、Rフィールドによって指定された偶数と奇数のレジスタ対の内容は、第1のオペランドのアドレスおよび長さを含む。同様に、Rフィールドによって指定された偶数と奇数のレジスタ対の内容は、第2のオペランドのアドレスおよび長さを含む。
命令内でエンコードされるRおよびRに加えて、命令の1つの実装は、例えば汎用レジスタ0(GR0)および汎用レジスタ1(GR1)を含む、1つまたは複数のインプライド・レジスタを使用する。各レジスタが、図6〜11を参照して以下でさらに説明される。
最初に図6を参照して、汎用レジスタ0(320)の書式の一実施形態が説明される。1つの例では、汎用レジスタ0は、変更子(M:modifier)制御322(例えば、ビット56)、および機能コード(FC:function code)フィールド324(例えば、ビット57〜63)を含む。機能コード・フィールドは、実行される機能を指定する機能コードを含む。機能の一部は、本明細書において示されているように、パラメータ・ブロックを使用してよい。1つの例では、割り当てられる機能コードは、16のパラメータ・ブロック・サイズが割り当てられる問い合わせ機能のコード0と、240のパラメータ・ブロック・サイズが割り当てられるSHA−512−DRNG(決定論的乱数発生器)機能のコード3と、8のパラメータ・ブロック・サイズが割り当てられる乱数動作実行−TRNG−生と調整済みの間の比率問い合わせ機能(Perform Random Number Operation-TRNG-Query Raw-to-Conditioned Ratio function)のコード112と、パラメータ・ブロックを使用しない乱数動作実行−TRNGのコード114とを含む。汎用レジスタ0のビット57〜63が、割り当てられていないか、またはインストールされていない機能コードを指定している場合、1つの実装では、指定例外が認識される。
機能に応じて、ストレージ内のパラメータ・ブロック、第1のオペランド、または第2のオペランド、あるいはその組み合わせが、命令によってアクセスされてよい。適用可能な場合、図7に示されているように、330で汎用レジスタ1は、ストレージ内のパラメータ・ブロックの左端のバイトのアドレス332を含む。さらに、適用可能な場合、汎用レジスタRおよびRは、第1および第2のオペランドにそれぞれ対応する偶数と奇数の汎用レジスタ対を指定する。偶数番号が付けられたレジスタR(図8の340)、R(図10の360)は、ストレージ内のオペランドのアドレス342、362を含み、奇数番号が付けられたレジスタR+1(図9の350)、R+1(図11の370)は、各オペランドの長さ352、372を含む。対応するオペランドの長さがゼロ以外である場合に、オペランドに対応するストレージ位置がアクセスされる。
一実施形態では、アドレスを含んでいる汎用レジスタが、現在のアドレス指定モードの対象になる。例えば、24ビット・アドレス指定モードでは、レジスタのビット位置40〜63の内容がストレージ位置のアドレスを構成し、ビット位置0〜39の内容が無視される。31ビット・アドレス指定モードでは、レジスタのビット位置33〜63の内容がストレージ位置のアドレスを構成し、ビット位置0〜32の内容が無視される。64ビット・アドレス指定モードでは、レジスタのビット位置0〜63の内容がストレージ位置のアドレスを構成する。アクセス・レジスタ・モードでは、汎用レジスタ1、R、およびRが、パラメータ・ブロック、第1のオペランド、および第2のオペランドを含んでいるアドレス空間をそれぞれ指定する。
オペランドの長さを含んでいる奇数番号が付けられたレジスタも、現在のアドレス指定モードの対象になる。24ビット・アドレス指定モードまたは31ビット・アドレス指定モードのいずれかでは、レジスタのビット位置32〜63の内容が、ストレージ・オペランド内のバイト数を指定する32ビット符号なし2進整数を形成し、ビット位置0〜31が無視される。64ビット・アドレス指定モードでは、レジスタのビット位置0〜63の内容が、ストレージ・オペランド内のバイト数を指定する64ビット符号なし2進整数を形成する。
他の機能の利用可能性を示すためのメカニズムを提供する問い合わせ機能(例えば、機能コード0)の場合、汎用レジスタR、R+1、R、およびR+1の内容が無視される。
SHA−512−DRNG機能(例えば、機能コード3)の場合、変更子制御322が使用される。変更子制御が0である場合、生成動作が実行され、変更子制御が1である場合、シード動作が実行される。さらに、SHA−512−DRNG機能の生成動作の場合、命令の完了時に、汎用レジスタR+1内の第1のオペランドの長さが更新される。汎用レジスタR内の第1のオペランドのアドレスは更新されない。
TRNG生と調整済みの間の比率問い合わせ機能(例えば、機能コード112)の場合、汎用レジスタR、R+1、R、およびR+1の内容が無視される。
TRNG機能(例えば、機能コード114)の場合、命令の完了時に、汎用レジスタR、R+1、R、およびR+1内の第1のオペランドのアドレス、第1のオペランドの長さ、第2のオペランドのアドレス、および第2のオペランドの長さがそれぞれ更新されてよい。24ビット・アドレス指定モードでは、偶数番号が付けられたレジスタのビット40〜63が、各オペランドの処理されたバイト数だけインクリメントされ、レジスタのビット0〜31が変更されず、オペランドの長さに関わらず、レジスタのビット32〜39が0に設定されるか、または変更されなくてよい。31ビット・アドレス指定モードでは、偶数番号が付けられたレジスタのビット33〜63が、各オペランドの処理されたバイト数だけインクリメントされ、レジスタのビット0〜31が変更されず、オペランドの長さに関わらず、レジスタのビット32が0に設定されるか、または変更されなくてよい。64ビット・アドレス指定モードでは、偶数番号が付けられたレジスタのビット0〜63が、各オペランドの処理されたバイト数だけインクリメントされる。24ビット・アドレス指定モードまたは31ビット・アドレス指定モードのいずれかでは、偶数番号が付けられたレジスタのビット32〜63が、各オペランドの処理されたバイト数だけデクリメントされ、レジスタのビット0〜31が変更されない。64ビット・アドレス指定モードでは、偶数番号が付けられたレジスタのビット0〜63が、各オペランドによって処理されたバイト数だけデクリメントされる。
パラメータ・ブロックがストレージ・オペランドのいずれかの部分と重複する場合、結果は予測不可能になる。
他のCPU、およびI/Oサブシステムによって観察されるとき、パラメータ・ブロックおよびストレージ・オペランドへの参照は、多重アクセス参照であってよく、これらの位置へのアクセスは、必ずしもブロック・コンカレントではなく、これらのアクセスまたは参照のシーケンスは定義されない。
各機能が、以下でさらに説明される。
問い合わせ機能:
1つの例では、0の機能コードが問い合わせ機能を示す。問い合わせ機能を示すことに基づいて、状態ワード(例えば、128ビット)が、命令に関連付けられたパラメータ・ブロックに格納される。このフィールドのビット0〜127は、乱数動作実行命令の機能コード0〜127にそれぞれ対応する。ビットが1である場合、対応する機能がインストールされ、そうでない場合、その機能はインストールされない。例えば、SHA−512−DRNG機能がインストールされる場合、ビット3(機能コード3に対応する)が1に設定される。同様に、TRNG−生と調整済みの間の比率問い合わせ機能がインストールされる場合、ビット112(機能コード112に対応する)が1に設定され、TRNG動作がインストールされる場合、ビット114(機能コード114に対応する)が1に設定される。
問い合わせ機能の実行が完了したときに、条件コード0が設定され、条件コード3(例えば、機能の部分的完了を指定する)は、問い合わせ機能には適用できない。
DRNG機能:
1つの実装では、3の機能コードが、実行される決定論的乱数発生器(DRNG:deterministic random number generator)機能を指定する。変更子制御322(例えば、汎用レジスタ0のビット56)に応じて、DRNG機能は、決定論的疑似乱数生成動作または決定論的疑似乱数シード動作のいずれかを実行し、これらの各動作は、例えば512ビットのセキュア・ハッシュ・アルゴリズム(SHA−512)を使用する。
決定論的疑似乱数生成(決定論的ランダム・ビット生成とも呼ばれる)は、例えば、Recommendation for Random Number Generation Using Deterministic Random Bit Generators, National Institute of Standards and Technology (NIST), NIST Special Publication 800-90A, January 2012において定義されている。さらに、セキュア・ハッシュ・アルゴリズムの説明が、例えば、Secure Hash Standard (SHS), Federal Information Processing Standards Publication, FIPS PUB 180-4, National Institute of Standards and Technology, Gaithersburg, MD, March 2012に見られる。
DRNG機能の場合、決定論的乱数発生器の内部状態を表すパラメータ・ブロックが使用される。1つの例では、DRNG機能のパラメータ・ブロックが次を含む。
予備:パラメータ・ブロックのバイト0〜3、16、および128は予備である。
再シード・カウンタ:パラメータ・ブロックのバイト4〜7は、パラメータ・ブロックが最後にインスタンス化または再シードされてからの、命令が条件コード0を伴って完了した回数を示す32ビット符号なし2進整数を含む。
再シード・カウンタが0を含んでいる場合、以下が適用される。
* シード動作の実行が、再シード・カウンタを1の値に設定することを含む、初期値を使用したパラメータ・ブロックのインスタンス化を引き起こす。
* 生成動作の実行が、指定例外が認識されることを引き起こす。
再シード・カウンタがゼロ以外の値を含んでいる場合、パラメータ・ブロックがインスタンス化されていると見なされ、以下が適用される。
* シード動作の実行が、再シード・カウンタを1の値にリセットすることを含む、パラメータ・ブロックの再シードを引き起こす。
* 条件コード0をもたらす生成動作の実行が、再シード・カウンタが1だけインクリメントされることを引き起こし、再シード・カウンタ・フィールドのビット位置0の繰り上げが無視される。
ストリーム・バイト:パラメータ・ブロックのバイト8〜15は、64ビット符号なし2進整数を含む。ストリーム・バイト・フィールドは、パラメータ・ブロックをインスタンス化するときに(すなわち、再シード・カウンタが0であるときに)、シード動作の実行によって0に設定され、パラメータ・ブロックがすでにインスタンス化されている場合、このフィールドは、シード動作の実行によって変更されない。
生成動作の部分的完了または完全な完了は、ストリーム・バイト・フィールドの内容が、第1のオペランドに格納されたバイトの数だけインクリメントされることを引き起こし、ストリーム・バイト・フィールドのビット位置0の繰り上げが無視される。
値(V):パラメータ・ブロックのバイト17〜127は、例えば、パラメータ・ブロックによって表された乱数発生器の内部状態を示す888のビット値を含む。Vは、パラメータ・ブロックをインスタンス化するときに、シード動作の実行によって初期化される。Vは、(a)再シード・カウンタがゼロ以外であるときのシード動作の実行、または(b)条件コード0で終了する生成動作の実行のいずれかによって更新される。
定数(C):パラメータ・ブロックのバイト129〜239は、例えば、ブロックによって表された乱数発生器の内部状態を示す888のビット値を含む。Cは、シード動作の実行によって初期化され、生成動作によって調査される。
同じパラメータ・ブロックの書式が、生成動作およびシード動作(インスタンス化および再シードを含む)の両方によって使用される。すべて0を含んでいるパラメータ・ブロックは、インスタンス化されていないと見なされる。プログラムは、シード動作を発行してパラメータ・ブロックをインスタンス化する前に、パラメータ・ブロックに0を設定するべきであり、その後、プログラムは、パラメータ・ブロックの内容を、0を設定することを除いて、変更するべきではなく、そうしない場合、予測不可能な結果が命令によって生成されることがある。
DRNG機能(本明細書では、SHA−512−DRNG機能とも呼ばれる)のシード動作および生成動作に関する詳細が、下でさらに説明される。
SHA−512−DRNGシード動作が、例えば512ビットのセキュア・ハッシュ・アルゴリズムを使用して、決定論的疑似乱数生成パラメータ・ブロックをインスタンス化または再シードする。一実施形態では、動作がプロセッサによって実行されるが、他の実施形態では、動作が他のコンポーネントまたはコプロセッサによって実行される。
パラメータ・ブロックのバイト4〜7内の再シード・カウンタがゼロまたはゼロ以外のいずれであるかに応じて、インスタンス化動作または再シード動作がそれぞれ実行される。インスタンス化および再シードの詳細が、下でさらに説明される。
* インスタンス化動作の場合、ストレージ内の第2のオペランドが、エントロピー入力、ノンス、オプションのパーソナライゼーション文字列のうちの1つまたは複数を含み、これらはそれぞれ、下で説明される。この情報は、シードの材料を形成するために使用される。
一例として、エントロピー入力は、決定論的ランダム・ビット発生器(DRBG:Deterministic Random Bit Generator)メカニズムに関する予測不可能性の評価された最小量を提供する入力ビット文字列である。DRBGメカニズムは、ランダム・ビット発生器(RBG:random bit generator)の一部であり、RBGのインスタンス化およびアンインスタンス化、疑似ランダム・ビットの生成、オプションのRBGの再シード、およびDRBGメカニズムの正常性のテストを実行するための機能を含んでいる。
ランダム・ビット発生器(RBG)は、統計的に独立していて、バイアスされていないように見えるバイナリ・ビットのシーケンスを出力するデバイス、アルゴリズム、技術、またはメカニズムである。RBGの一例は、DRBGである。例えば、DRBGは、DRBGメカニズムを含んでいて、(少なくとも最初に)エントロピー入力のソースにアクセスできるRBGである。DRBGは、ビットのシーケンスを、シードと呼ばれる秘密の初期値およびその他の可能性のある入力から生成する。
シードは、DRBGメカニズムへの入力として使用されるビットの文字列である。シードは、DRBGの内部状態の一部を決定し、そのエントロピーは、DRBGのセキュリティ強度を支援するのに十分である。エントロピーは、閉鎖系における不規則性、ランダム性、または変動性の尺度である。最小エントロピーは、1つの実装で使用される尺度である。
ランダム変数Xの最小エントロピー(ビット単位)は、Xの各観測が少なくともmビットの情報を提供するという特性を有する最大の値mである(すなわち、Xの最小エントロピーは、Xの可能性がある観測の情報の内容に関する最大の下限である)。ランダム変数の最小エントロピーは、そのエントロピーに対する下限である。最小エントロピーの定式化は、確率p,...,pを含んでいる離散分布の場合、−(log max p)である。最小エントロピーは、多くの場合、ランダム変数の予測不可能性の最悪ケースの尺度として使用される。
ノンスは、多くても無視できる程度の反復の可能性がある時間的に変化する値であり、例えば、使用、タイムスタンプ、シーケンス番号、またはこれらの何らかの組み合わせごとに新たに生成されるランダムな値である。
パーソナライゼーション文字列は、秘密のエントロピー入力および(場合によっては)ノンスと結合されてシードを生成する、オプションのビットの文字列である。
* 再シード動作の場合(再シードは、DRBGメカニズムの内部状態に影響を与える追加ビットを取得する)、ストレージ内の第2のオペランドは、シードの材料を形成するために使用される、エントロピー入力およびオプションの追加の入力を含む。オプションの追加の入力は、ランダム性をさらに追加する、例えば時間値またはその他の任意の値などの、任意の望ましい情報であってよい。
インスタンス化動作を実行する場合、シードの材料は、第2のオペランドを使用して形成される。例えば、第2のオペランドの入力値が連結されて、シードの材料を形成する。しかし、再シード動作を実行する場合、シードの材料は、例えば、16進数の値01、パラメータ・ブロックのVフィールドの内容、および第2のオペランドの内容の連結から形成される。
インスタンス化動作または再シード動作のいずれかの場合、1つまたは複数のシード値が初期化/更新される。1つの例では、そのような1つのシード値は、次のように形成されるVnewである。1バイトのカウンタ、888の4バイト値、シードの材料(前述したように形成される)、および埋め込みが連結され、例えばSHA−512アルゴリズムへの入力として、初期ハッシュ値(初期チェイニング値とも呼ばれる)と共に使用される。一実施形態では、埋め込みは、16進数の80が、0〜127バイトの0と連結され、埋め込みを含んでいないSHA−512アルゴリズムへの入力のビット単位の長さ(すなわち、1バイトのカウンタ、888の4バイト値、およびシードの材料の長さ)を指定する16バイトの2進整数と連結された値である。例えば、初期ハッシュ値は64バイト値である。
SHA−512アルゴリズムが2回呼び出されて、2つの64ビットのハッシュされた結果を形成し、1バイトのカウンタが、SHA−512アルゴリズムの1回目の呼び出しでは値1を含み、2回目の呼び出しでは値2を含む。また、この2回目の呼び出しは、888の4バイト値、シードの材料、および埋め込みを、初期ハッシュ値と共に、SHA−512アルゴリズムへの入力として使用して、64ビットのハッシュされた結果を形成する。
2つの64バイトのハッシュされた結果が一緒に連結され、この例では、128バイトの連結の左端の111バイトが、パラメータ・ブロック内の新しい値フィールド(Vnew)を形成する。
newフィールドの形成と同様に、新しい定数フィールド(Cnew)が、インスタンス化動作中または再シード動作中に形成される。Cnewは、パラメータ・ブロックに格納される別のシード値である。1バイトのカウンタ、888の4バイト値、0の1バイト値、Vnewフィールド、および埋め込みが連結され、例えばSHA−512アルゴリズムへの入力として、初期ハッシュ値と共に使用される。例えば、埋め込みは、16進数の80が、122バイトの0と連結され、埋め込みを含んでいないSHA−512アルゴリズムへの入力のビット単位の長さ(すなわち、1バイトのカウンタ、888の4バイト値、0の1バイト値、およびVnewフィールドの長さ)を指定する16バイトの2進整数と連結された値である。
SHA−512アルゴリズムが2回呼び出されて、2つの64ビットのハッシュされた結果を形成し、1バイトのカウンタが、SHA−512アルゴリズムの1回目の呼び出しでは値1を含み、2回目の呼び出しでは値2を含む。また、この2回目の呼び出しは、888の4バイト値、0の1バイト値、Vnewフィールド、および埋め込みを、SHA−512アルゴリズムへの入力として、初期ハッシュ値と共に使用する。
2つの64バイトのハッシュされた結果が一緒に連結され、この例では、128バイトの連結の左端の111バイトが、新しい定数フィールド(Cnew)を形成する。
インスタンス化動作または再シード動作のいずれかの場合、パラメータ・ブロック内の再シード・カウンタ・フィールドが1の値に設定される。インスタンス化動作の場合、パラメータ・ブロック内のストリーム・バイト・フィールドが0に設定され、ストリーム・バイト・フィールドは、再シード動作によって変更されない。
SHA−512−DRNGシード動作の実行が完了したときに、条件コード0が設定され、条件コード3は、このシード動作には適用できない。
SHA−512−DRNG生成動作は、前述したように、インスタンス化または再シードされたパラメータ・ブロック、および例えば512ビットのセキュア・ハッシュ・アルゴリズムを使用して、疑似乱数を生成する。一実施形態では、動作がプロセッサによって実行されるが、他の実施形態では、動作が他のコンポーネントまたはコプロセッサによって実行される。
汎用レジスタRは、例えば第1のオペランドの左端のバイトのアドレスを含む。汎用レジスタR+1内の第1のオペランドの長さがゼロ以外である場合、第1のオペランドは、右端のブロックが64バイトより少ないバイトを含むことがあることを除き、64バイト・ブロックの単位で右から左への順序で格納される。部分的な右端のブロックを含む、格納されるブロックの数は、汎用レジスタR+1内の第1のオペランドの長さを64の倍数に切り上げ、その値を64で割ることによって決定される。第1のオペランドのブロックは、左から右へ、0〜n−1のように番号付けされ、n−1は右端のブロックを表す。
第1のオペランドの位置のブロックごとに、右端(n−1)のブロックから開始して左に進み、次の手順が実行される。
1.パラメータ・ブロックからの値(V)が、処理されているブロック番号に加算され、加算によって発生した桁あふれは無視される。
2.この加算の合計111バイトが、埋め込みの17バイトと連結されて、例えばSHA−512アルゴリズムへの入力として使用され、64バイトのハッシュ値が得られる。SHA−512アルゴリズムに提供される17バイトの埋め込みは、16進数の80の値の後に888(ビット単位のVの長さ)の16バイトの2進整数値が続いて構成される。
3.汎用レジスタR+1内の第1のオペランドの長さが64の倍数である場合、得られた64バイトのハッシュ値が、第1のオペランドの位置の各ブロックに格納され、汎用レジスタR+1内の長さが64だけデクリメントされる。
第1のオペランドの長さが64の倍数でない場合、得られた64バイトのハッシュ値の左端のmバイトが、第1のオペランドの右端の部分的なブロックに格納され、mは第1のオペランドの長さを64で割った余りを表す。この場合、汎用レジスタR+1内の長さがmだけデクリメントされる。
4.完全なブロックまたは部分的なブロックのいずれが格納されるかに関わらず、パラメータ・ブロックの例えばバイト8〜15内のストリーム・バイト・フィールドが、第1のオペランドの位置に格納されたバイトの数だけインクリメントされる。
上のプロセスは、汎用レジスタR+1内の第1のオペランドの長さが0になるか(正常完了と呼ばれる)、またはCPUによって決定されたブロック数が処理されるまで(部分的完了と呼ばれる)、繰り返される。CPUによって決定されたブロック数は、モデルによって決まり、命令が実行されるたびに異なる数であってよい。CPUによって決定されたブロック数は、通常、ゼロ以外である。特定の異常な状況では、この数は0であってよく、進行しないで、条件コード3が設定されてよい。ただし、CPUは、この進行しないケースの無限の再発を防ぐ。
汎用レジスタR+1内の第1のオペランドの長さが最初に0である場合、第1のオペランドの位置に格納せずに正常完了が発生するが、パラメータ・ブロックが、下で説明されているように更新される。
正常完了によって疑似乱数生成プロセスが終了した場合、パラメータ・ブロックが、下で説明されているように更新される。
1.16進数の03の1バイト値、パラメータ・ブロックからの111バイト値(V)、および埋め込みの144バイトが、例えばSHA−512アルゴリズムへの入力として使用され、64バイトのハッシュ値が得られる。埋め込みは、16進数の80が、127バイトの0と連結され、埋め込みを含んでいないSHA−512アルゴリズムへの入力のビット単位の長さ(すなわち、16進数の03の1バイト値およびVフィールドの長さ)を指定する16バイトの2進整数と連結された値で構成される。パラメータ・ブロック内の4バイトの再シード・カウンタ・フィールドならびに111バイト値(V)および定数(C)フィールドの値と、(上の計算からの)64バイトのハッシュ値とが加算される。この加算の目的で、各値が、符号なし2進整数として扱われ、必要に応じて0を使用して左に拡張される。加算によって発生した桁あふれは無視され、得られた合計111バイトが、パラメータ・ブロック内の値フィールド(Vnew)を置き換える。
2.パラメータ・ブロック内の4バイトの再シード・カウンタ・フィールドが、1だけインクリメントされる。
3.条件コード0が設定される。
部分的完了によって疑似乱数生成プロセスが終了した場合、汎用レジスタR+1内の第1のオペランドの長さが64のゼロ以外の倍数を含み、パラメータ・ブロック内の再シード・カウンタおよび値(V)フィールドが更新されず、条件コード3が設定される。
生成動作の場合、命令の1回の実行において処理される大きさよりも大きい第1のオペランドの部分に関して、アクセス例外が報告されることがある。ただし、第1のオペランドを包含していない位置に関してアクセス例外は認識されず、処理されている現在の位置から4Kバイトよりも大きく超える位置に関しても、アクセス例外は認識されない。
生成動作の場合、正常完了によって動作が終了したときに、条件コード0が設定され、汎用レジスタR+1内の得られた値が0になる。部分的完了によって動作が終了したときに、条件コード3が設定され、汎用レジスタR+1内の得られた値がゼロ以外になる。
TRNG生と調整済みの間の比率問い合わせ機能:
乱数動作実行命令の別の使用可能な機能は、TRNG生と調整済みの間の比率問い合わせ機能である。1つの実装では、乱数動作実行命令の機能コード324が112である場合、TRNG生と調整済みの間の比率問い合わせ機能が使用されて、TRNG機能によって両方の種類のエントロピーが要求されたときに生成される生のエントロピーと調整済みエントロピーの間の比率を決定してよい。
この機能の動作では、パラメータ・ブロックには、調整済みエントロピーのブロックを生成するために使用される生のエントロピーのブロック内のバイト数を示す、例えば2つの32ビット符号なし2進整数が格納される。1つの例では、図12を参照すると、パラメータ・ブロック390が、生のエントロピー・フィールド392および調整済みエントロピー・フィールド394を含んでいる。生のエントロピー・フィールド392は、生のエントロピーと調整済みエントロピーの間の比率を指定する分数の分子である、生のエントロピーの値を含む。この値は、メモリ内、レジスタ内、その他のハードウェア・デバイス内などの、格納された位置から取得され、生のエントロピー・フィールド392内に配置される。調整済みエントロピー・フィールド394は、生のエントロピーと調整済みエントロピーの間の比率を指定する分数の分母である、調整済みエントロピーの値を含む。やはり、この値も、メモリ内、レジスタ内、その他のハードウェア・デバイス内などの、格納された位置から取得され、調整済みエントロピー・フィールド394内に配置される。
生のエントロピーと調整済みエントロピーの間の比率は、調整済みエントロピーのブロックを生成するために使用される生のエントロピーのブロック内のバイト数を示す。
TRNG生と調整済みの間の比率問い合わせ機能の実行が完了したときに、条件コード0が設定され、条件コード3は、この機能には適用できない。
TRNG機能:
さらに、乱数動作実行命令の機能コードが114である場合、TRNG機能が実行される。例えば、一連のハードウェアによって生成された乱数が、第1のオペランドの位置および第2のオペランドの位置のいずれかまたは両方に格納される。一実施形態では、この機能の場合、パラメータ・ブロックは使用されず、汎用レジスタ1が無視される。
フィールドが、偶数と奇数の汎用レジスタ対を指定する。偶数番号が付けられたレジスタは、第1のオペランドの左端のバイトのアドレスを含み、奇数番号が付けられたレジスタは、第1のオペランドの長さを含む。第1のオペランドは、例えばハードウェア・ソース(例えば、騒音源)によって直接生成される、生のエントロピーの形態での乱数を含む。
フィールドが、偶数と奇数の汎用レジスタ対を指定する。偶数番号が付けられたレジスタは、第2のオペランドの左端のバイトのアドレスを含み、奇数番号が付けられたレジスタは、第2のオペランドの長さを含む。第2のオペランドは、生のエントロピー源から抽出された乱数を含み、その後、承認されたアルゴリズムによって調整される(例えば、SHA−256アルゴリズムに基づいてPRNGによって処理される)。
調整済みエントロピーのビットを生成するために使用される生のエントロピーのビットの比率は、TRNG生と調整済みの間の比率問い合わせ機能によって決定されてよい。1つの例では、この比率は6:1であるが、これは単なる例である。第1のオペランドの長さがゼロ以外である場合、生のエントロピーが第1のオペランドの位置(図13の400を参照)に格納され、同様に、第2のオペランドの長さがゼロ以外である場合、調整済みエントロピーが第2のオペランドの位置(図13の402)に格納される。第1および第2のオペランドの両方の長さがゼロ以外である場合、生のエントロピーおよび調整済みエントロピーが、生と調整済みの間の比率で、第1および第2のオペランドの位置にそれぞれ格納される。動作の1つの単位に格納されるバイトの数は、モデルに依存し、命令の実行ごとに変化してよい。
第1のオペランドの長さがゼロ以外であるが、第2のオペランドの長さがゼロである場合、プロセスは、生のエントロピーを第1のオペランドに格納することを続行する。同様に、第2のオペランドの長さがゼロ以外であるが、第1のオペランドの長さがゼロである場合、プロセスは、調整済みエントロピーを第2のオペランドに格納することを続行する。
命令の1回の実行において処理される大きさよりも大きい第1および第2のオペランドの部分に関して、アクセス例外が報告されることがある。ただし、第1または第2のオペランドを包含していない位置に関してアクセス例外は認識されず、処理されている現在の位置から4Kバイトよりも大きく超える位置に関しても、アクセス例外は認識されない。
このプロセスは、両方のオペランドの長さが0になるか(正常完了と呼ばれる)、またはCPUによって決定された数のバイトが格納されるか(部分的完了と呼ばれる)のいずれかが最初に発生するまで、続行する。正常完了によって動作が終了した場合、条件コード0が設定される。部分的完了によって動作が終了した場合、条件コード3が設定される。CPUによって決定されたバイト数は、モデルによって決まり、命令が実行されるたびに異なる数であってよい。CPUによって決定されたバイト数は、通常、ゼロ以外である。特定の異常な状況では、この数は0であってよく、進行しないで、条件コード3が設定されてよい。ただし、CPUは、この進行しないケースの無限の再発を防ぐ。
動作が正常完了または部分的完了のいずれによって終了するかに関わらず、汎用レジスタRおよびR+1が、第1のオペランドに格納されたバイトの数だけそれぞれインクリメントおよびデクリメントされ、汎用レジスタRおよびR+1が、第2のオペランドに格納されたバイトの数だけそれぞれインクリメントおよびデクリメントされる。
第1および第2のオペランドが重複する場合、結果は予測不可能である。例として、次の条件のいずれかが存在する場合に、指定例外が認識され、他の動作は実行されない:汎用レジスタ0のビット57〜63が、割り当てられていないか、またはインストールされていない機能コードを指定するか、あるいはRフィールドまたはRフィールドが、奇数番号が付けられたレジスタまたは汎用レジスタ0を指定する。SHA−512−DRNG機能のシード動作で、汎用レジスタR+1内の長さが512より大きい場合、機能コードに関わらず、この例外が認識される。SHA−512−DRNG機能の生成動作で、パラメータ・ブロック内の再シード・カウンタがゼロである場合、汎用オペランド・データ例外が認識される。
1つまたは複数の実施形態によれば、TRNG機能は、TRNGからの調整済みエントロピー源を使用して決定論的乱数発生器(SHA−512−DRNG機能によって提供される決定論的乱数発生器など)を定期的に再シードする、ハイブリッド乱数発生器(hybrid random-number generator)を実装する場合に、役立つことがある。
TRNG機能によって提供される調整済みエントロピーは、複数の独立してシードされる決定論的乱数発生器によって共有されてよい。独立性は、決定論的乱数発生器をシードするときに、一意のプログラムによって提供されるエントロピー、ノンス、またはパーソナライゼーション文字列によって実現されてよい。
第1のオペランドによって提供される生のエントロピーは、1つの例では、機能によって提供されるエントロピーの品質をテストする診断プログラムによる使用が意図される。
1つの例では、機能によって提供される生のエントロピーと調整済みエントロピーの間の比率は、同じ種類のモデルのすべてのプロセッサにわたって一定である。したがって、プログラムは、別の種類のモデルに再配置されない限り、比率を決定した後に、TRNG生と調整済みの間の比率問い合わせ機能を再実行する必要がない。
エントロピーは、TRNG生と調整済みの間の比率問い合わせ機能によって報告された生と調整済みの間の比率で、TRNG機能によって生成されるが、プログラムは、この比率で生のエントロピーおよび調整済みエントロピーを要求することを全く義務付けられない。
CPU、他のCPU、およびI/Oサブシステムによって観察されるとき、一貫性のない結果が、特定の機能に関して格納されるように定義された位置に簡単に格納されてよい。
上の例では、単一の命令を複数の機能に使用するために、機能コードが提供される。しかし、1つの機能のみが提供される場合、機能コードは使用されなくてよい。さらに、より多い機能、より少ない機能、または異なる機能を含むために、より多い機能コード、より少ない機能コード、または異なる機能コードが使用されてよい。多くの可能性が存在する。さらに、一実施形態では、複数の機能のうちの1つによって使用される変更子制御が提供される。しかし、1つまたは複数の他の実施形態では、サポートされる機能が変更子制御を使用しない場合、変更子制御が含められなくてよい。
本明細書に記載されているように、複数の機能を含んでいる単一のCPU命令が提供される。命令の1つの機能コードは、(a)プログラムによって指定された数の生の乱数(つまり、ハードウェアTRNGソース(hardware TRNG source)から直接得られる乱数)、または(b)生の乱数から生成される、プログラムによって指定された数の調整済み乱数のいずれか、あるいはその両方を生成するためにある。命令の別の機能は、比率(X/Y)を格納することであり、Xは、Y個の調整済み乱数を生成するために使用される真の乱数の数を示す。
真の乱数発生器の機能の一実施形態に関する詳細が、図14を参照してさらに説明される。最初に、命令が取得される(ステップ500)。次に、(少なくとも1つのプロセッサ上での)命令の実行に進む(ステップ502)。命令を実行することに基づいて、機能コードが取得され(ステップ504)、真の乱数発生器の機能が要求されているかどうかに関する判定が行われる(照会506)。真の乱数発生器の機能が指定されていない場合、前述したように、機能コードに基づいて処理が実行される(ステップ508)。次に、条件コードが設定され(ステップ510)、処理が完了する。しかし、機能コードによって真の乱数発生器の機能が指定されている場合、第1の長さ(例えば、R+1内で指定される)が0より大きいかどうかに関する判定がさらに行われる(照会520)。第1の長さが0より大きい場合、生のエントロピーが提供される(ステップ522)。その後、または第1の長さが0より大きくない場合、処理が、第2の長さ(例えば、R+1内で指定される)が0より大きいかどうかの判定(照会524)に進む。第2の長さが0より大きい場合、調整済みエントロピーが提供される(ステップ526)。第2の長さが0より大きくない場合、または調整済みエントロピーを提供した後に、条件コードが設定される(ステップ510)。
真の乱数発生器の機能の一実施形態に関する詳細が、図15を参照してさらに説明される。この論理は、少なくとも1つのプロセッサ上で実行される。
図15を参照すると、最初に、TRNG機能の動作が開始される(ステップ550)。この例は、生と調整済みの間の比率問い合わせ機能によって生成された生のバイトと調整済みバイトの間の比率を参照する。ある数(CB)の調整済みバイトを生成するために使用される生のバイトの数(RB)が、552および554にそれぞれ示されている。
機能が、格納される追加の真の乱数が存在するかどうかを判定する(照会556)。例えば、レジスタR+1およびR+1の両方の値が0である場合、機能が完了し、完了の指示が設定され(ステップ558)(例えば、条件コードが0に設定され)、命令が完了する。
照会556での判定が、格納される追加バイトが存在することを示している場合、機能はRBバイトの生データをハードウェア・エントロピー源(hardware entropy source)から取得する(ステップ560)。
機能は、生データが格納されることになっている(例えば、レジスタR+1内の値がゼロ以外である)かどうかを判定する(照会562)。格納されることになっている場合、機能は、格納されるバイトの数(M)を、RBおよびレジスタR+1内の値の最小値として計算する(ステップ564)。機能は、Mバイトの生データを指定された位置(例えば、レジスタR内のメモリ・アドレス)に格納する(ステップ566)。機能は、メモリ・アドレス(レジスタR)をMだけインクリメントし(ステップ568)、格納される残りのバイト数(レジスタR+1)をMだけデクリメントし(ステップ570)、照会572を続行する。
照会572で、機能は、調整済みデータが格納されることになっている(例えば、レジスタR+1内の値がゼロ以外である)かどうかを判定する。格納されることになっている場合、機能は、格納されるバイトの数(N)を、CBおよびレジスタR+1内の値の最小値として計算する(ステップ574)。機能は、Nバイトの調整済みデータを生データから生成し、Nバイトの調整済みデータを指定された位置(例えば、レジスタR内のメモリ・アドレス)に格納する(ステップ576)。機能は、メモリ・アドレス(レジスタR)をNだけインクリメントし(ステップ578)、格納される残りのバイト数(レジスタR+1)をNだけデクリメントし(ステップ580)、照会582を続行する。
照会582で、機能が、モデルに依存する処理量が発生したかどうかを判定する。モデルに依存するタイムアウトが発生しなかった場合、ステップ556で処理が続行する。モデルに依存するタイムアウトが発生した場合、ステップ584で部分的完了の指示が設定され(例えば、条件コードが3に設定され)、命令が完了する。
1つまたは複数の実施形態によれば、生データまたは調整済みデータのいずれかあるいはその両方を生成することができるか、プログラムによって指定された長さの生データまたは調整済みデータあるいはその両方を要求することができるか、条件コードが、要求された結果のすべてが格納されているかどうかを示すか、または別個の機能が生データと調整済みデータの間の比率を示すか、あるいはこれらの組み合わせが実行される。
複数の機能を実行するように構成された命令(例えば、設計されたマシン命令)を処理することに関連する詳細が、図16〜17を参照してさらに説明される。
最初に図16を参照すると、複数の機能を実行するように構成された命令がプロセッサによって取得される(ステップ600)。次に、マシン命令の実行に進む(ステップ602)。この実行することは、例えば、選択された値を含んでいる命令に関連付けられた機能コードに基づいて、命令の1つまたは複数の入力をチェックして、複数の機能のうちのどの1つまたは複数の機能が実行されるかを決定することを含む(ステップ604)。さらに、第1の値を含んでいる1つまたは複数の入力のうちの第1の入力に基づいて、生のエントロピーを提供する機能を実行し、生のエントロピーを提供することが、ある数の生の乱数を格納することを含み(ステップ606)、第2の値を含んでいる1つまたは複数の入力のうちの第2の入力に基づいて、調整済みエントロピーを提供する別の機能を実行し、調整済みエントロピーを提供することが、ある数の調整済み乱数を格納することを含む(ステップ608)。
一実施形態では、この数の生の乱数は、プログラムによって指定された数の生の乱数を含み(610)、この数の調整済み乱数は、プログラムによって指定された数の調整済み乱数を含む(612)。
さらに、1つの例では、機能コードが、命令に関連付けられたレジスタ内で提供され、1つまたは複数の入力が、命令によって示された1つまたは複数のレジスタ内で提供される(614)。さらに、1つまたは複数の入力が少なくとも1つの長さの値を含む(616)。
1つの例では、1つまたは複数の入力が第1の長さの値および第2の長さの値を含み、チェックすることが、第1の長さの値および第2の長さの値をチェックすることを含み、第1の値を含んでいる第1の長さの値に基づいて、この数の生の乱数を格納し、第2の値を含んでいる第2の長さの値に基づいて、この数の調整済み乱数を格納する(図17のステップ620)。例として、第1の値が0より大きい値であり、第2の値が0より大きい値である(622)。
さらに別の実施形態では、別の選択された値を含んでいる機能コードに基づいて、生と調整済みの間の比率が提供される(ステップ624)。生と調整済みの間の比率は、例えば、あるバイト数の生のエントロピーが、対応するバイト数の調整済みエントロピーを生成するために使用されることを示す(626)。
一実施形態では、この提供することは、このバイト数の生のエントロピーのカウントをパラメータ・ブロックの1つの位置に格納すること、およびこのバイト数の調整済みエントロピーのカウントをパラメータ・ブロックの別の位置に格納することを含む(ステップ628)。
本発明の実施形態は、データの暗号化などの、セキュリティに関連付けられた処理を含むが、これに限定されない、コンピューティング環境内の処理を改善するコンピュータ技術に密接に関係している。
真の乱数の生成は、疑似乱数の生成よりもCPUリソースを消費することがある。したがって、非常に長い命令の実行を避けるために、要求された結果の一部のみが生成されたことを示すことによって、命令が完了してよい。その場合、アドレスを含んでいるレジスタを、格納されたバイトの数だけインクリメントし、長さを含んでいるレジスタを同じ量だけデクリメントし、指示的な条件コード(例えば、CC3)を設定することによって、命令が完了する。すべての要求されたTRNG出力が生成されたときに、進行を示すようにアドレスおよび長さのレジスタを更新し、別の指示的な条件コード(例えば、CC0)を設定することによって、命令が完了する。
1つの使用法は、アプリケーション・プログラムが、TRNG機能を定期的に使用して調整済み出力を生成し、その後、その調整済みの結果を使用して、いくつかの反復回数のために疑似乱数発生を最初にシードすることである。したがって、この使用法の場合、調整済み出力が必要な唯一の結果である。しかし、TRNGの結果の統計的検証の場合、生のエントロピーおよび調整済みエントロピーの両方が存在することは有益であり、したがって、命令は両方を提供する。命令のTRNG機能は、生のエントロピーおよび調整済みエントロピーの両方を生成する。プログラムは、(もしあれば)生成される生のエントロピーのバイト数を指定し、プログラムは、(もしあれば)生成される調整済みエントロピーのバイト数を指定する。TRNG生と調整済みの間の比率問い合わせ機能は、Yバイトの調整済みエントロピーを生成するためにXバイトの生のエントロピーが使用されることを示す比率を生成する。
上の例では、機能コードまたはその他の入力あるいはその両方などの特定の情報がレジスタ内で提供されているとして示されたが、他の例では、それらの情報は、メモリ位置などのその他の位置で提供されてよい。さらに、生と調整済みの間の比率は、レジスタまたはその他のメモリ位置などの、パラメータ・ブロック以外の位置で返されてよい。多くのその他のそのような変形が可能である。
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数人の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
さらに別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・システムでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。多くの変形が可能である。
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える(comprise)」または「備えている(comprising)」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、1つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
添付の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等なものは、もしあれば、具体的に請求されるとき、その他の請求される要素と組み合わせて、機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。

Claims (20)

  1. ンピュータ・プログラムであって、コンピュータに
    実行される命令を取得することであって、前記命令が、生のエントロピーまたは調整済みエントロピーあるいはその両方を生成する真の乱数発生器の機能を含む複数の機能を実行するように構成された単一の設計されたマシン命令である、前記取得することと、
    前記命令を実行することとを含んでおり、前記実行することが、
    選択された値を含んでいる前記命令に関連付けられた機能コードに基づいて、前記命令の1つまたは複数の入力をチェックして、前記複数の機能のうちのどの1つまたは複数の機能が実行されるかを決定することと、
    第1の値を含んでいる前記1つまたは複数の入力のうちの第1の入力に基づいて、生のエントロピーを提供する機能を実行することであって、前記生のエントロピーを提供することが、ある数の生の乱数を格納することを含んでいる、前記機能を実行することと、
    第2の値を含んでいる前記1つまたは複数の入力のうちの第2の入力に基づいて、調整済みエントロピーを提供する別の機能を実行することであって、前記調整済みエントロピ
    ーを提供することが、ある数の調整済み乱数を格納することを含んでいる、前記別の機能を実行することと
    行わせるための、コンピュータ・プログラム。
  2. 前記数の生の乱数が、プログラムによって指定された数の生の乱数を含んでいる、請求項1に記載のコンピュータ・プログラム。
  3. 前記数の調整済み乱数が、プログラムによって指定された数の調整済み乱数を含んでいる、請求項1に記載のコンピュータ・プログラム。
  4. 前記機能コードが、前記命令に関連付けられたレジスタ内で提供され、前記1つまたは複数の入力が、前記命令によって示された1つまたは複数のレジスタ内で提供される、請求項1に記載のコンピュータ・プログラム。
  5. 前記1つまたは複数の入力が、少なくとも1つの長さの値を含んでいる、請求項1に記載のコンピュータ・プログラム。
  6. 前記1つまたは複数の入力が第1の長さの値および第2の長さの値を含んでおり、前記チェックすることが、前記第1の長さの値および前記第2の長さの値をチェックすることを含んでおり、前記第1の値を含んでいる前記第1の長さの値に基づいて、前記数の生の乱数を格納し、前記第2の値を含んでいる前記第2の長さの値に基づいて、前記数の調整済み乱数を格納する、請求項1に記載のコンピュータ・プログラム。
  7. 前記第1の値が0より大きい値であり、前記第2の値が0より大きい値である、請求項6に記載のコンピュータ・プログラム。
  8. 別の選択された値を含んでいる前記機能コードに基づいて、生と調整済みの間の比率を提供する、請求項1に記載のコンピュータ・プログラム。
  9. 前記生と調整済みの間の比率が、あるバイト数の生のエントロピーが、対応するバイト数の調整済みエントロピーを生成するために使用されることを示す、請求項8に記載のコンピュータ・プログラム。
  10. 前記生と調整済みの間の比率を前記提供することが、前記バイト数の生のエントロピーのカウントをパラメータ・ブロックの1つの位置に格納すること、および前記バイト数の調整済みエントロピーのカウントを前記パラメータ・ブロックの別の位置に格納することを含む、請求項9に記載のコンピュータ・プログラム。
  11. コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
    実行される命令を取得することであって、前記命令が、生のエントロピーまたは調整済みエントロピーあるいはその両方を生成する真の乱数発生器の機能を含む複数の機能を実行するように構成された単一の設計されたマシン命令である、前記取得することと、
    前記命令を実行することとを含んでおり、前記実行することが、
    選択された値を含んでいる前記命令に関連付けられた機能コードに基づいて、前記命令の1つまたは複数の入力をチェックして、前記複数の機能のうちのどの1つまたは複数の機能が実行されるかを決定することと、
    第1の値を含んでいる前記1つまたは複数の入力のうちの第1の入力に基づいて、生のエントロピーを提供する機能を実行することであって、前記生のエントロピーを提供することが、ある数の生の乱数を格納することを含んでいる、前記機能を実行することと、
    第2の値を含んでいる前記1つまたは複数の入力のうちの第2の入力に基づいて、調整済みエントロピーを提供する別の機能を実行することであって、前記調整済みエントロピーを提供することが、ある数の調整済み乱数を格納することを含んでいる、前記別の機能を実行することと
    を含んでいる、コンピュータ・システム。
  12. 前記数の生の乱数が、プログラムによって指定された数の生の乱数を含んでおり、前記数の調整済み乱数が、プログラムによって指定された数の調整済み乱数を含んでいる、請求項11に記載のコンピュータ・システム。
  13. 前記機能コードが、前記命令に関連付けられたレジスタ内で提供され、前記1つまたは複数の入力が、前記命令によって示された1つまたは複数のレジスタ内で提供される、請求項11に記載のコンピュータ・システム。
  14. 前記1つまたは複数の入力が第1の長さの値および第2の長さの値を含んでおり、前記チェックすることが、前記第1の長さの値および前記第2の長さの値をチェックすることを含んでおり、前記第1の値を含んでいる前記第1の長さの値に基づいて、前記数の生の乱数を格納し、前記第2の値を含んでいる前記第2の長さの値に基づいて、前記数の調整済み乱数を格納する、請求項11に記載のコンピュータ・システム。
  15. 別の選択された値を含んでいる前記機能コードに基づいて、生と調整済みの間の比率を提供し、前記生と調整済みの間の比率が、あるバイト数の生のエントロピーが、対応するバイト数の調整済みエントロピーを生成するために使用されることを示す、請求項11に記載のコンピュータ・システム。
  16. ンピュータで行う方法であって、
    実行される命令を取得することであって、前記命令が、生のエントロピーまたは調整済みエントロピーあるいはその両方を生成する真の乱数発生器の機能を含む複数の機能を実行するように構成された単一の設計されたマシン命令である、前記取得することと、
    前記命令を実行することとを含んでおり、前記実行することが、
    選択された値を含んでいる前記命令に関連付けられた機能コードに基づいて、前記命令の1つまたは複数の入力をチェックして、前記複数の機能のうちのどの1つまたは複数の機能が実行されるかを決定することと、
    第1の値を含んでいる前記1つまたは複数の入力のうちの第1の入力に基づいて、生のエントロピーを提供する機能を実行することであって、前記生のエントロピーを提供することが、ある数の生の乱数を格納することを含んでいる、前記機能を実行することと、
    第2の値を含んでいる前記1つまたは複数の入力のうちの第2の入力に基づいて、調整済みエントロピーを提供する別の機能を実行することであって、前記調整済みエントロピーを提供することが、ある数の調整済み乱数を格納することを含んでいる、前記別の機能を実行することと
    を含んでいる、コンピュータで行う方法。
  17. 前記数の生の乱数が、プログラムによって指定された数の生の乱数を含んでおり、前記数の調整済み乱数が、プログラムによって指定された数の調整済み乱数を含んでいる、請求項16に記載のコンピュータで行う方法。
  18. 前記機能コードが、前記命令に関連付けられたレジスタ内で提供され、前記1つまたは
    複数の入力が、前記命令によって示された1つまたは複数のレジスタ内で提供される、請求項16に記載のコンピュータで行う方法。
  19. 前記1つまたは複数の入力が第1の長さの値および第2の長さの値を含んでおり、前記チェックすることが、前記第1の長さの値および前記第2の長さの値をチェックすることを含んでおり、前記第1の値を含んでいる前記第1の長さの値に基づいて、前記数の生の乱数を格納し、前記第2の値を含んでいる前記第2の長さの値に基づいて、前記数の調整済み乱数を格納する、請求項16に記載のコンピュータで行う方法。
  20. 別の選択された値を含んでいる前記機能コードに基づいて、生と調整済みの間の比率を提供し、前記生と調整済みの間の比率が、あるバイト数の生のエントロピーが、対応するバイト数の調整済みエントロピーを生成するために使用されることを示す、請求項16に記載のコンピュータで行う方法。
JP2019514244A 2016-09-30 2017-09-26 真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 Active JP6916871B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/281,159 US10235138B2 (en) 2016-09-30 2016-09-30 Instruction to provide true random numbers
US15/281,159 2016-09-30
PCT/EP2017/074329 WO2018060180A1 (en) 2016-09-30 2017-09-26 Instruction to provide true random numbers

Publications (2)

Publication Number Publication Date
JP2019537091A JP2019537091A (ja) 2019-12-19
JP6916871B2 true JP6916871B2 (ja) 2021-08-11

Family

ID=60022065

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019514244A Active JP6916871B2 (ja) 2016-09-30 2017-09-26 真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法

Country Status (12)

Country Link
US (1) US10235138B2 (ja)
EP (1) EP3519941B1 (ja)
JP (1) JP6916871B2 (ja)
CN (1) CN109804347B (ja)
AU (1) AU2017336193B2 (ja)
BR (1) BR112019006625B1 (ja)
CA (1) CA3036108A1 (ja)
HU (1) HUE053728T2 (ja)
IL (1) IL265551B (ja)
PL (1) PL3519941T3 (ja)
TW (1) TWI650708B (ja)
WO (1) WO2018060180A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US10333708B1 (en) * 2017-02-03 2019-06-25 Amazon Technologies, Inc. Hybrid random-number generator
US10970417B1 (en) * 2017-09-01 2021-04-06 Workday, Inc. Differential privacy security for benchmarking
CN110083386B (zh) * 2019-04-04 2024-03-19 平安普惠企业管理有限公司 随机数产生控制方法、装置、计算机设备及存储介质
TWI752491B (zh) * 2020-05-08 2022-01-11 黃杏怡 量子隨機數產生裝置
US11792233B1 (en) 2022-08-07 2023-10-17 Uab 360 It Securing network devices against network vulnerabilities

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954770B1 (en) 2001-08-23 2005-10-11 Cavium Networks Random number generator
JP4248950B2 (ja) 2003-06-24 2009-04-02 株式会社ルネサステクノロジ 乱数発生装置
US7890561B2 (en) 2005-08-16 2011-02-15 International Business Machines Corporation Random number generator
US8595277B2 (en) 2008-02-13 2013-11-26 Infineon Technologies Ag Hybrid random number generator
US8131789B2 (en) 2008-03-28 2012-03-06 Atmel Corporation True random number generator
US8539009B2 (en) * 2008-12-16 2013-09-17 Lsi Corporation Parallel true random number generator architecture
US8489660B2 (en) * 2009-06-26 2013-07-16 Intel Corporation Digital random number generator using partially entropic data
US10521231B2 (en) * 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
CN102176199B (zh) * 2011-01-28 2013-06-19 中国科学院西安光学精密机械研究所 一种真随机数产生方法及装置
ES2530944T3 (es) * 2011-04-05 2015-03-09 Intrinsic Id Bv Sistema de generación de números aleatorios basándose en el ruido de arranque de una memoria
EP2798771A4 (en) 2011-12-29 2015-10-07 Intel Corp METHOD AND APPARATUS FOR NON-DETERMINISTIC RAND BIT GENERATOR (NRBG)
US8879733B2 (en) 2012-07-10 2014-11-04 Infineon Technologies Ag Random bit stream generator with guaranteed minimum period
TWI506540B (zh) 2012-07-19 2015-11-01 Nuvoton Technology Corp 亂數產生電路與方法
US9304740B2 (en) 2012-10-09 2016-04-05 King Abdullah University Of Science And Technology Chaos-based pseudo-random number generation
US20140108478A1 (en) 2012-10-15 2014-04-17 Qualcomm Incorporated Magnetic tunnel junction based random number generator
US9311051B2 (en) * 2013-01-10 2016-04-12 Advanced Micro Devices, Inc. Hardware random number generator
US9152380B2 (en) * 2013-03-12 2015-10-06 Qualcomm Incorporated Interrupt driven hardware random number generator
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) * 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US9449197B2 (en) 2013-06-13 2016-09-20 Global Foundries Inc. Pooling entropy to facilitate mobile device-based true random number generation
US9444580B2 (en) * 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
CN104572014B (zh) 2013-10-15 2019-02-22 恩智浦美国有限公司 具有重复激活的振荡器的真随机数生成器
CN104216678B (zh) * 2014-09-18 2017-11-07 中国科学技术大学 一种无偏真随机数发生器及随机数生成方法
CN104317551A (zh) * 2014-10-17 2015-01-28 北京德加才科技有限公司 一种超高安全的真随机数生成方法及真随机数生成系统
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers

Also Published As

Publication number Publication date
CA3036108A1 (en) 2018-04-05
AU2017336193B2 (en) 2019-09-26
CN109804347A (zh) 2019-05-24
PL3519941T3 (pl) 2021-07-05
IL265551A (en) 2019-05-30
WO2018060180A1 (en) 2018-04-05
AU2017336193A1 (en) 2019-04-04
HUE053728T2 (hu) 2021-07-28
IL265551B (en) 2021-01-31
EP3519941A1 (en) 2019-08-07
BR112019006625A2 (pt) 2019-07-02
TWI650708B (zh) 2019-02-11
JP2019537091A (ja) 2019-12-19
CN109804347B (zh) 2023-03-24
US20180095729A1 (en) 2018-04-05
EP3519941B1 (en) 2021-03-03
BR112019006625B1 (pt) 2022-05-03
US10235138B2 (en) 2019-03-19
TW201816602A (zh) 2018-05-01

Similar Documents

Publication Publication Date Title
JP6916871B2 (ja) 真の乱数を提供するための命令を実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法
US10133575B2 (en) Instruction for performing a pseudorandom number generate operation
JP6395737B2 (ja) 擬似乱数シード操作を実施するための命令
TWI642294B (zh) 具有鑑認指令之密碼訊息之電腦程式產品、系統及方法
JP6986556B2 (ja) コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190521

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210716

R150 Certificate of patent or registration of utility model

Ref document number: 6916871

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150