(57)【要約】      （修正有）【課題】１クロックサイクルで多くの擬似乱数を生成し、サイドチャネルの漏洩を低減する擬似乱数生成器を提供する。【解決手段】擬似乱数生成方法は、コールカウンタのカウンタ値を初期化し、ビット単位のカウンタ値をコールカウンタから混合関数へ送りビット単位のカウンタ値に対して混合処理を行って疑似乱数を生成する。混合関数は、ＸＯＲツリー、置換転置、又は二重混合ファイステルとすることができる。疑似乱数生成器は、コールカウンタのビットを混合したり、その出力を繰り返し混合したり、これら両方を行う。カウンタは、所定値だけインクリメントされる。後方秘匿性を実現するために、疑似乱数は、一方向性関数により処理されるか、或いは暗号ハッシュ関数を用いてハッシュ化されその結果が、混合関数の後続するサイクルのための入力値として用いられる。また、いくつかの混合関数を並列で機能させて、これらの出力をＸＯＲすることも可能である。【選択図】図４
2017107195.tif 000002
【特許請求の範囲】
【請求項１】
疑似乱数を生成するための方法であって、
コールカウンタのカウンタ値を初期化し、
ビット単位の前記カウンタ値を前記コールカウンタから混合関数処理へ送り、
前記ビット単位の前記カウンタ値に対して混合処理を行って疑似乱数を生成する、各ステップを含む方法。
【請求項２】
さらに、
所定値だけ前記カウンタ値をインクリメントし、
前記混合処理ステップにおける後続するサイクルのための入力値として、前記疑似乱数を使用する、各ステップの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
さらに、
入力レジスタの容量を超えない範囲で前記カウンタ値の全体をできる限り多く繰り返すことにより、前記入力レジスタに入力を行い、
前記入力レジスタが満たされるまで、前記入力レジスタにおける残りの空いたビットに前記カウンタ値の個々のビットを入力する、各ステップを含み、
前記混合処理ステップにおいては、セグメントの連結により、前記ビット単位の前記カウンタ値の入力の第１セグメントが前記ビット単位の前記カウンタ値の出力の第１セグメントとしてマッピングされ、少なくとも、
前記混合処理ステップは、可逆性を有すること、
前記混合処理ステップは、非線形であること、並びに
前記混合処理ステップは、排他的論理和「ＸＯＲ」ツリー混合関数、置換転置混合関数、及び、二重混合ファイステル混合関数からなる群から選択される関数を含むこと、のうちの１つの条件を満たす、請求項１に記載の方法。
【請求項４】
前記混合ステップは、さらに、並列混合関数において前記カウンタ値に対する混合処理を少なくとも２回行い、前記並列混合関数からの出力の排他的論理和をとる（「ＸＯＲ処理する」）、各ステップを含む、請求項１に記載の方法。
【請求項５】
さらに、
一方向性関数により前記疑似乱数を処理するか、或いは暗号化ハッシュ関数を用いて前記疑似乱数をハッシュ化し、
前記疑似乱数の前記一方向性関数又は前記疑似乱数のハッシュ化の結果を、前記混合関数の後続するサイクルのための入力値として用いる、各ステップを含む、請求項１に記載の方法。
【請求項６】
さらに、前記疑似乱数を用いてメモリに暗号化データを保存するステップを含む、請求項１に記載の方法。
【請求項７】
疑似乱数を生成するためのシステムであって、
カウンタ値で初期化されるコールカウンタと、
ビット単位の前記カウンタ値に対して混合処理を行って疑似乱数を生成する混合関数の処理部と、を含むシステム。
【請求項８】
前記カウンタ値は、所定値でインクリメントされる、請求項７に記載のシステム。
【請求項９】
前記疑似乱数は、前記混合関数の後続するサイクルのための入力値として機能する、請求項７に記載のシステム。
【請求項１０】
前記疑似乱数に基づいて暗号化データを保存するメモリを有する記憶装置をさらに含み、前記暗号化データは、暗号鍵、調整値、ノンス、及び初期値からなる群から選択される、請求項７に記載のシステム。
【請求項１１】
前記混合関数は、少なくとも、
セグメントの連結により、前記ビット単位の前記カウンタ値の第１セグメントを前記ビット単位の前記カウンタ値の出力の第１セグメントとしてマッピングするものであること、
ＸＯＲツリー混合関数、置換転置混合関数、及び、二重混合ファイステル混合関数からなる群から選択されること、並びに、
並列に機能する少なくとも２つの混合関数により実行され、前記少なくとも２つの混合関数からの出力がＸＯＲ処理されること、のうちの１つの条件を満たす、請求項７に記載のシステム。
【請求項１２】
少なくとも、
前記混合関数は、可逆性を有すること、及び、
前記混合関数は、非線形であること、のうちの一方の条件を満たす、請求項７に記載のシステム。
【請求項１３】
前記疑似乱数は、一方向性関数により処理されるか、或いは暗号化ハッシュ関数を用いてハッシュ化され、
前記疑似乱数の前記一方向性の処理又は前記疑似乱数のハッシュ化の結果は、前記混合関数の後続するサイクルのための入力値として用いられる、請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データの暗号化に関し、特に、暗号鍵、調整可能暗号（tweakable ciphers）のための調整値（tweak values）、並びに、暗号の多様化及びメッセージの認証コードのためのノンス（nonces）として使用可能な疑似乱数を生成し、且つ、サイドチャネル（side channels）への漏洩を防ぐために情報を隠すように改良されたシステム及び方法に関する。
【背景技術】
【０００２】
航空産業は、重要な情報技術（information technology：IT）インフラストラクチャの安定した機能性に大きく依存している。他の多くの産業と同様に、航空産業においては、このようなＩＴインフラストラクチャに対して十分なセキュリティを提供し、サイバー事象の影響を緩和することが求められている。サイバー事象とは、例えば、データ接続、データ送信、及び演算システムなどの航空機ネットワークの運用を危険に晒したり、危険に晒そうと試みたりする悪意ある事象や不審な事象をいう。
【０００３】
多くの科学的用途、工学的用途、及び、ＩＴセキュリティの用途においては、ランダムに見える多くの数字（random-looking numbers）が必要であり、これらの数字は、標準の統計的検定（statistical tests）では、真性乱数とは区別がつかない。一般に、マイクロプロセッサ上のソフトウェア、又は、特殊用途向け電子ハードウェアにおいて、アルゴリズムにより数字が生成される場合、それらの数字は、疑似乱数と呼ばれる。疑似乱数は、物理システムのシミュレート、構造化データのホワイトニング（whitening structured data）、及び、数理問題（numerical mathematical problems）を解決するためのランダム化演算などの用途において有用である。ＩＴセキュリティの用途において、疑似乱数は、ノンス（一回だけ用いられる番号）、初期値（ＩＶ）、データハイディング（data hiding）、及び、暗号鍵導出（cryptographic key derivation）などのプロトコルに用いられる。
【０００４】
従来、疑似乱数は、マイクロプロセッサで生成されるが、当該マイクロプロセッサは、各バイトの生成に数クロックサイクルを要する。最も速く実用的なアルゴリズムは、６４ビットのプロセッサ上で４…１２クロックサイクルで８バイト（６４ビット）を生成する。いくつかの用途、例えば、短時間で多量の疑似乱数が必要な場合などには、この疑似乱数の生成時間は長すぎる。場合によっては、アルゴリズムを高速化するために電子ハードウェアをカスタム設計することもできる。しかしながら、マイクロプロセッサを用いる従来の疑似乱数生成器は、低品質な（相関性や偏りのある）数字を生成し、低速であり、タスクでマイクロプロセッサを拘束し、メモリバスを滞らせ、大量の電力／エネルギーを消費する（この結果、放熱及びバッテリの消費が増大する）。
【０００５】
従来の疑似乱数生成器のさらなる欠点としては、これらの生成器は、サイドチャネル攻撃から保護されていないため、ＩＴのセキュリティ用途において多大なリスクが生じることである。データを処理する電子装置の稼働中、秘密鍵や機密データに関する情報のいくつかは、常にサイドチャネルに漏洩するものがあるが（意図しない情報拡散の物理的な原因）、そのような原因には、データに依存する応答時間のばらつき、消費電力の変動、又は、超音波若しくは電磁波の放射が含まれる。このため、攻撃者が電子装置に対して物理的にアクセスできない場合には、保存データ又は送信データの機密性及び完全性は、一般に、暗号手段により確保することができる。
【０００６】
したがって、１クロックサイクルで多くの疑似乱数を生成するとともに、処理時間、システムの複雑性、電子回路の寸法、又は、エネルギーの消費を大幅に増大させることなくサイドチャネルの漏洩を低減し、この低減により安全性を向上させることが可能な改良型疑似乱数生成器を提供することが望ましい。
【発明の概要】
【０００７】
上述した背景技術を考慮して、本開示の例示的な実施形態は、疑似乱数を生成するためのシステム及び方法を提示する。当該システム及び方法は、コールカウンタのカウンタ値を初期化し、ビット単位のカウンタ値をコールカウンタから混合関数へ送り、ビット単位のカウンタ値に対して混合処理を行って疑似乱数を生成するステップを含む。カウンタ値は、所定値でインクリメントされ、生成された疑似乱数は、混合関数の後続するサイクルのための入力値として用いることができる。疑似乱数を生成するための上記システム及び方法は、さらに、入力レジスタの容量を超えない範囲でカウンタ値の全体をできる限り多く繰り返すことにより、入力レジスタに入力を行い、入力レジスタにおける残りの空いたビットにカウンタ値の個々のビットを入力する、各ステップを含む。暗号化データは、生成された疑似乱数に基づいて記憶装置のメモリに保存することができる。
【０００８】
本開示の実施形態において、混合処理ステップは、混合関数により実行される。混合関数は、セグメントの連結により、ビット形態のカウンタ値の入力の第１セグメントをビット形態の出力の第１セグメントとしてマッピングする。混合関数は、可逆的且つ非線形であり、排他的論理和「ＸＯＲ」ツリー混合ユニット、置換転置混合ユニット、又は、二重混合ファイステル混合ユニットであってもよい。混合関数は、並列に機能する少なくとも２つの混合関数により実行されてもよく、これらの少なくとも２つの混合関数からの出力は、ＸＯＲ処理される。また、疑似乱数は、一方向性関数により処理されてもよいし、或いは暗号ハッシュ関数を用いてハッシュ化され、一方向性の処理又はハッシュ化の結果は、混合関数に後続するサイクルのための入力値として用いられる。
【０００９】
本明細書で述べた特徴、機能、及び利点は、様々な例示的な実施形態において個別に達成することができ、また、他の例示的な実施形態と組み合わせることもできる。さらなる詳細については、以下の説明及び図面を参照することによって明らかになるであろう。
【図面の簡単な説明】
【００１０】
本開示の例示的な実施形態を一般的な文言を用いて説明してきたが、以下では、添付の図面を参照する。これらの図面は、必ずしも正確な縮尺率で描かれているものではない。
【００１１】
【図１】本開示の例示的な実施形態による混合関数のためのＸＯＲツリー型の鍵生成器を示すロジック図である。
【図２】本開示の例示的な実施形態による混合関数のための置換転置ネットワーク型の鍵生成器を示すロジック図である。
【図３】本開示の例示的な実施形態による混合関数のための二重混合ファイステルネットワークを示すロジック図である。
【図４】本開示の例示的な実施形態による疑似乱数の生成方法を示すブロック図である。
【図５】航空機の製造及び保守方法を示すブロック図である。
【図６】航空機の概略図である。
【発明を実施するための形態】
【００１２】
本開示のいくつかの実施形態を、添付図面を参照して以下でより詳しく説明する。なお、図面には、本開示の実施形態のうちのいくつかが示されているが、全てが示されているわけではない。実際、本開示の様々な実施形態は、多くの異なる形態で実施することができるものであり、本明細書に記載の実施形態に限定されるものと解釈されるべきではない。むしろ、これらの例示的な実施形態は、本開示が十分且つ完全なものとなるように、そして、本開示の範囲を当業者に十分に伝えるために提示するものである。例えば、特に明記しない限り、第１、第２などの文言は、特定の順序を示しているわけではない。また、ある物体が、他の物体の上方にあると説明されていても（特に明記しない限り）、これに代えて、その物体は下方にあってもよいし、その逆であってもよい。また、同様に、ある物体が、他の物体の左側にあると説明されていても、これに代えて、その物体は右側にあってもよいし、その逆であってもよい。同様の符号は、図面全体に亘って同様の要素を示している。
【００１３】
本開示の例示的な実施形態は、主に、航空用途に関連させて説明している。しかしながら、例示的な実施形態は、航空産業及びそれ以外の産業の両方において、他の様々な用途に関連させて用いることができる。
【００１４】
本開示の例示的な実施形態によれば、複雑且つ非線形な方法で入力を難読化する混合関数（mixing function）を用いることにより、クロックサイクル毎に疑似乱数を生成するように改良されたシステムが提供される。
【００１５】
疑似乱数生成器（pseudorandom number generator：ＰＲＮＧ）は、シードにより初期化されなければならない。シードは、物理乱数、又は、ユーザ供給値であり、後に生成されるシーケンスを特有なものとすることができる。シードを用いてＰＲＮＧを初期化した後は、複数の要求（コール）を発することができる。多数のコールの各々は、前回のものとは異なる疑似乱数を返す。ある回数の要求（コール）の後、返された疑似乱数の繰り返しが始まる。真の乱数の挙動（behavior）を模倣するために、（低い確率での）繰り返しが許容可能であるか、或いは、望ましい場合、生成された疑似乱数を切り取れば（truncated）よい。繰り返しが許容可能ではない場合、意図する用途に対して十分に長い周期を確保するようにする。周期が再度開始される前に、ＰＲＮＧに対して、新たに取得した物理乱数を再シードする（re-seeding）ことにより、周期性の発生を妨ぐことができる。
【００１６】
上述したように、本開示の例示的な実施形態による改良型のＰＲＮＧは、混合関数を用いる。このような混合関数は、大量の秘密鍵材料に依存して機能する。この秘密鍵材料は、ハードコーディング（hard coded）、ヒューズへの焼き付け、又は、フリップフロップなどの揮発性メモリへの保存が可能である。秘密鍵材料は、一群の装置における全ての装置のためにハードコーディングしてもよいし、特定の装置の初期化を行う際に設定してもよいし、リセットを行う際又はＰＲＮＧに再シードするための明示的な要求を行う際に生成してもよい。
【００１７】
混合関数は、暗号に似ているが、暗号よりも遥かに高速である。また、混合関数は、入力と出力との間に相関関係があるため、暗号よりも安全性が低いため、それ単独では、暗号化処理には通常適さない。しかしながら、混合関数の入力又は出力のいずれかが攻撃者から隠されている場合、攻撃者は、従来の暗号解読攻撃やサイドチャネル攻撃を仕掛けることができない。したがって、高速の混合関数は、秘密鍵が別の秘密鍵を生み出すような暗号鍵の生成、及び、疑似乱数シーケンス、特にこれらの乱数が内部で用いられ、盗聴者から隠されている場合の疑似乱数シーケンスの生成に理想的である。
【００１８】
改良型ＰＲＮＧでの使用に適した混合関数は、以下の特性を有する。
１）ｎビットの入力をｎビットの出力にマッピングする（mapped）（ｎ＝ブロックサイズ）
２）混合処理は、大量の秘密鍵材料に依存しており、大量の秘密鍵材料は、１つの短い鍵から、或いは、真性乱数生成器により生成することが可能である。
３）混合関数は、全単射である（可逆性を有する）
４）全ての入力ビットは、全ての出力ビットに対して非線形に影響を及ぼす。
５）ほとんどの非空の（nonempty）入力ビットの組（これらは、鍵材料から個々に選択される）もまた、全ての出力ビットに影響を及ぼす（影響が打ち消されることはない）。
【００１９】
本開示の例示的な実施形態によれば、ＰＲＮＧでの使用に適した混合関数は、ＸＯＲツリー（図１）、置換転置ネットワーク（substitution-permutation networks）（図２）、及び、二重混合ファイステルネットワーク（double-mix Feistel networks）（図３）である。上述したような混合関数の非線形性は、シフトデータの加算又はＳボックスによりもたらされ、Ｓボックスは、（Ｎ）ＡＮＤ／ＯＲゲートに縮退（degenerate）することができる（２×１ビットのＳボックス）。
【００２０】
次に、混合関数がＸＯＲツリーである鍵生成器を示す図１を参照すると、入力ビットＡ１、Ａ２、Ａ３、Ａ４…は、ＸＯＲを行うために、対応するサブ鍵Ｋ１、Ｋ２、Ｋ３、Ｋ４…を選択する。最終的なスクランブル演算（scramble operation）のステップにより、構成を非線形にすることができる。このスクランブル演算は、回転加算演算（rotate-add operations）、又は、一連の非線形なＳボックス演算を含みうる。ＸＯＲツリー型の鍵生成器は、さらに、追加の入力選択とともに、第２組のサブ鍵を含みうる。サブ鍵は、回転、加算、又はＸＯＲ演算を含むビット操作演算により、いくつかのベースサブ鍵（base subkeys）から生成することができる。
【００２１】
次に、混合関数が置換転置ネットワークである鍵生成器を示す図２を参照すると、入力ビットは、ロジック図の上部から与えられ、出力は、ロジック図の底部から取り出される。サブ鍵Ｋiは、個々のランダムに生成された秘密鍵であってもよいし、いくつかのベースサブ鍵から導き出されてもよい。Ｓ1、Ｓ2…は、小さい非線形置換の可逆関数（non-linear substitution invertible functions）である。混合ネットワークの層数は、（全ての入力ビットが全ての出力ビットに影響する場合）混合処理の全深さ（full mixing depth）の少なくとも２倍に設定してもよいし、それ以下に設定して、回路の総遅延がクロックサイクルを超えないようにしてもよい。
【００２２】
次に、混合関数が二重混合ファイステルネットワークである鍵生成器を示す図３を参照すると、Ｆは、復元が非常に難しい（又は、不可能な）非線形関数であるが、Ｇは、可逆である。同一の回路のいくつかの層はカスケード接続される。並列動作する電気回路を用いた実施形態においては、二重混合ファイステルネットワークの１つの層の混合性能は、従来のファイステルネットワークの１つの層の混合性能の２倍である。［Ｌ0，Ｒ0］は、混合関数の入力であり、出力は、ロジック図の最後に繰り返される層の下部から取り出される。混合ネットワークの層数は、総遅延が１つのクロックサイクルに収まる範囲内でなるべく多く設定される。
【００２３】
上述した混合関数は、以下の例に示すように、疑似乱数生成のいくつかの演算モードにおいて用いることができる。
【００２４】
図４に示すように、カウンタモードにおいては、カウンタが、（短い）シードに初期化され（ブロック４０２）、ビット単位のカウンタ値が混合関数処理へと送られる（ブロック４０８）。図１〜図３に関連させて上述した混合関数のうちの１つに従って混合処理が行われ、疑似乱数が生成される（ブロック４１０）。疑似乱数が要求される毎に、所定の値だけカウンタがインクリメントされ（ブロック４２４）、カウンタは、オーバーフロー時にその値をラップアラウンドして（wrap around）、０からカウントを続ける。カウンタは、ＰＲＮＧに再シードする際にリセットされる。混合関数処理において入力値が異なると出力値も異なるため、カウンタは、例えば、繰り返しが発生するまでに４０億の固有な疑似乱数を生成することができる３２ビットの無符号整数とすることができる。必要であれば、より長いカウンタを用いて、入力ビットの残りを０に設定するか、或いは他の一定のビットパターン（このパターンは、シードから導出されうる）に設定することができる。さらに、２０ビットなどのより短いカウンタを用いることもできるが、この場合、１００万回のコール（２20）の後、ＰＲＮＧに対して真性乱数値が再シードされる。
【００２５】
スクランブルカウンタモードにおいては、上述したカウンタ（コールカウンタ）が用いられるが、入力ビットは不定値に初期化される（ブロック４０２）。例えば、３１ビットのカウンタを用いて、その値の全体を、入力レジスタに収まる範囲内でなるべく多く繰り返すようにしてもよい。２５６ビット幅の入力レジスタの場合、３１ビットのカウンタ値は、２５６／３１＝８（余りは８）であるため、全体で８回繰り返すことができる。余りの８は、カウンタ値の８つの個々のビット（最下位ビット）に対応しており、これらのビットは、入力レジスタの残りのビットに入力するために再度使用される最下位ビットであると看做される（ブロック４０６）。スクランブルカウンタモードにおいては、ビット単位のカウンタ値が、例えば、カウンタ値に対して混合処理を行う（ブロック４１０）ために用いられる置換転置混合関数（図２）などの混合関数へと送られる場合（ブロック４０８）、カウンタ幅は、Ｓボックスの入力サイズの倍数でない方が好ましい。これは、カウンタビットが、異なるＳボックスの異なる入力位置に分配されるからである。生成される数の周期は、カウンタから得られる異なる値の数と同じである。このスクランブルカウンタモードは、所望の長さのコールカウンタを用いるものであって（ただし、混合関数の入力サイズを超えない長さ）、生成される数が周期性を示す前に再シードを要求する。
【００２６】
帰納モードにおいては、混合関数の最初の入力は（長い）シードである。次の入力は、混合関数の前回の出力である。この例示的な実施形態においては、カウンタは必要ないが、生成された疑似乱数のシーケンスにおける周期の長さは分からない。ほとんどの場合、この周期は、どの用途で必要とするよりも遥かに長い（２５６ビットの入力サイズで少なくとも２128コール）。混合関数の連続する入力値は、カウンタモードの場合と比較すると相関性が低いため、混合処理の完全性を高めることができる。
【００２７】
ハイブリッドカウンタモードにおいては、コールカウンタが、（長い）シードの最下位ビット、又は、任意の固定ビット組に初期化される（ブロック４０２）。疑似乱数生成器のコール毎にカウンタがインクリメントされ（ブロック４２４）、オーバーフロー時に０にラップアラウンドされる。混合関数（ブロック４１０）の最初の入力（ブロック４０８）は、シードである。これに続く入力は、混合関数の前回の出力であるが（ブロック４２０）、入力に際して、カウンタ値に対する入力の指定ビットを変更することで修正が施される。これにより、生成される疑似乱数のシーケンスについての周期の長さが、カウンタモードの場合と比較して少なくとも同じ長さとなり、ほとんどの場合、カウンタモードと比較して長くなる。帰納モードと同様に、混合関数の連続する入力値は、コピーされる短いカウンタビットシーケンスを除けば、相関性がないように見える。このため、最低限の周期長を確保しつつ、混合処理の完全性を非常に高くすることができる。このハイブリッドカウンタモードは、所望の長さ（入力サイズを超えない長さ）のコールカウンタを用いることができ、生成された数が周期性を示す前に再シードを要求することができる。
【００２８】
適用可能な全ての場合において、コールカウンタは、大きい一定の奇数値（予め決定された値またはシードから生成された値）でインクリメントされてもよい（ブロック４２４）。これにより、連続するカウンタ値の相関性が、１でインクリメントする場合と比較して、低くなる。生成された疑似乱数は、暗号鍵、調整値、ノンス、初期値などの暗号化データをメモリへ保存し易くするために用いられる（ブロック４２２）。
【００２９】
本明細書で説明した混合関数を組み入れたＰＲＮＧは、鍵材料以外は、内部状態（カウンタ及び混合関数の出力）に関するいくつかの情報を公開することになる。安全性を確保は、この鍵材料を保護することにかかっている。この鍵材料が攻撃者に知れると、攻撃者は、混合関数コールを遡って、前回生成した乱数、さらには、将来生成される数を見つけることができる。本開示のさらなる実施形態においては、後方秘匿性（backward secrecy）を有するバージョンのＰＲＮＧが提供される。この場合、ＰＲＮＧの出力は、混合関数の未処理の出力ではなく、一方向性関数により処理されるか、或いは暗号化ハッシュ関数を用いてハッシュ化され（ブロック４１６）、結果が返される（ブロック４１８）。並列に機能している複数の混合関数（ブロック４１２）、及び、一緒にＸＯＲ処理されたこれらの出力（ブロック４１４）は、超高速な一方向性関数として機能することもできる。個々の混合関数の出力は、全体の出力であるこれらのＸＯＲ値から復元できないため、上記構成は、一方向性（可逆が困難）である。上記構成は、２クロックサイクルで何千もの擬似ランダムビットを生成できるため、従来のどの解決法と比較しても格段に高速である。本発明において、後方秘匿性を有する他の代替の実施形態は、混合関数を、並列に動作するいくつかの異なる混合関数及びＸＯＲ処理されたこれらの出力と置き換えることにより実現される。この集合混合関数は、鍵材料を知っていても簡単には元に戻せない関数であり、その実行時間は、上述したハッシュの構成のたった半分、すなわち、典型的には１クロックサイクルである。
【００３０】
上述したように、混合関数を組み入れたＰＲＮＧを使用するといくつかの利点がある。これらの利点には、典型的な演算装置において、例えば、１クロックサイクルで３２バイト（２５６ビット）を生成するための、非常に速い演算；一度に数百又は数千のランダムビットの生成；サイドチャネルへの漏洩を防ぐ並列性の高い処理；非線形のビット混合処理を用いた高品質な疑似乱数の生成；適切な場合、鍵材料及び初期カウンタ値として真性ランダムビットを単に与えて行う簡単な再シード；容易にパーソナライズできるとともに、要求に応じて容易に多様化又はリセットできる大量の秘密鍵材料の使用により、容易且つ確実に２つの処理内容（deployments）が同じにならないようにすること：及び、固定入力と固定鍵材料との使用をサポートすることにより予測可能なビット列を生成すること（試験を目的とする場合に有利）、が含まれる。これに加えて、本開示のＰＲＮＧは、従来のＰＲＮＧと比較して、他のタスクのためにプロセッサを解放し、エネルギーの消費を抑えることができる。本開示のＰＲＮＧの適用例としては、機内コンピュータにおける暗号化関数、軍事宇宙計画（military and space programs）、企業ネットワーク、パーソナルコンピュータ及びデスクトップコンピュータ、スマートモバイルデバイス、並びに、セキュア通信装置などが挙げられる。高速且つ高品質な疑似乱数は、セキュリティに関連のない用途、例えば、物理システムをシミュレートしてランダム化演算やモンテカルロ演算を行う際にも有用である。
【００３１】
本開示の例示的な実施形態によれば、本開示の改良型ＰＲＮＧの様々なコンポーネントは、ハードウェアを含む様々な手段により実現することができる。このハードウェアは、単独のハードウェア、又は、コンピュータ可読記憶媒体からの１つ又は複数のコンピュータプログラムコード命令、プログラム命令、若しくは実行可能なコンピュータ可読プログラムコード命令を受けるハードウェアである。
【００３２】
一例において提示される１つ又は複数の装置は、本明細書において図示及び説明したＰＲＮＧ及び各要素として機能するように構成されるか、或いは、これらを実現するように構成される。複数の装置を含む例においては、それぞれの装置は、例えば、有線又は無線のネットワーク等による直接的又は間接的な方法など、様々な方法で相互に接続又は通信することができる。
【００３３】
一般に、本開示のＰＲＮＧのための例示的な実施形態における装置は、上述したように、メモリ（例えば、記憶装置）に接続されたプロセッサ（例えば、プロセッサユニット）などの１つ又は複数のコンポーネントを含みうる。プロセッサは、概して、例えば、データ、コンピュータ可読プログラムコード、命令若しくはそれに類するもの（通常、ソフトウェアやファームウェアなどの「コンピュータプログラム」）、及び／又は、他の好適な電子情報などの情報を処理することができる任意のハードウェアである。より具体的には、例えば、プロセッサは、コンピュータプログラムを実行するように構成することができ、当該コンピュータプログラムは、プロセッサ上に格納されたものであってもよいし、（同じ又は別の装置の）メモリに格納されたものであってもよい。プロセッサは、特定の実施形態に応じて、複数のプロセッサ、マルチコアプロセッサコア、又は他の種類のプロセッサであってもよい。さらに、プロセッサは、複数の異種プロセッサシステムを用いて実現することができ、当該システムにおいては、メインプロセッサが、１つ又は複数の二次プロセッサと共に単一のチップ上に設けられている。他の例としては、プロセッサは、同種のプロセッサを複数個含む対称型マルチプロセッサシステムであってもよい。さらに別の例において、プロセッサは、１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などとして実現してもよいし、これを含んでもよい。したがって、プロセッサは、コンピュータプログラムを実行して１つ又は複数の機能を果たすことが可能であるが、様々な実施例のプロセッサは、コンピュータプログラムの助けなしに１つ又は複数の機能を実行可能であってもよい。
【００３４】
メモリは、概して、例えば、データ、コンピュータプログラム、及び／又は他の好適な情報を、一時的又は永続的に格納することができる任意のハードウェアである。メモリは、揮発性メモリ及び／又は不揮発性メモリを含んでもよく、固定又は着脱が可能である。好適なメモリの例としては、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハードドライブ、フラッシュメモリ、サムドライブ、着脱可能フロッピーディスク、光ディスク、磁気テープ、又は上記のいずれかの組み合わせが挙げられる。光ディスクは、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、読み出し／書き込み用コンパクトディスク（ＣＤ−Ｒ／Ｗ）、ＤＶＤなどを含みうる。様々な例において、メモリは、コンピュータ可読記憶媒体と呼ばれる場合がある。コンピュータ可読記憶媒体は、情報を記憶可能な非一時的なデバイスであり、ある場所から別の場所に情報を搬送可能な一時的な電子信号などのコンピュータ可読伝送媒体と区別することができる。本明細書で説明したようなコンピュータ可読媒体は、概括的に、コンピュータ可読記憶媒体又はコンピュータ可読伝送媒体を指す場合がある。
【００３５】
メモリに加えて、プロセッサは、情報を表示、送信、及び／又は受信するための１つ又は複数のインターフェースに接続されていてもよい。インターフェースは、通信インターフェース（例えば、通信ユニット）及び／又は１つ又は複数のユーザインターフェースを含みうる。通信インターフェースは、例えば、他の装置、ネットワーク等に対して情報を送信及び／又は受信するように構成することができる。通信インターフェースは、物理的（有線）通信リンク及び／又は無線通信リンクによって、情報を送信及び／又は受信するように構成することができる。好適な通信インターフェースの例には、ネットワークインタフェースコントローラ（ＮＩＣ）、無線ＮＩＣ（ＷＮＩＣ）等が含まれる。
【００３６】
ユーザインターフェースは、ディスプレイ、及び／又は、１つ又は複数のユーザ入力インターフェース（例えば、入力／出力ユニット）を含みうる。ディスプレイは、ユーザに情報を提示又は表示するように構成されており、その好適な例には、液晶ディスプレイ（ＬＣＤ）、発光ダイオードディスプレイ（ＬＥＤ）、プラズマディスプレイパネル（ＰＤＰ）などが含まれる。ユーザ入力インターフェースは、有線であっても無線であってもよく、ユーザからの情報を、処理、格納、及び／又は表示などを行うための装置に受け渡すように構成することができる。ユーザ入力インターフェースの好適な例には、マイクロフォン、イメージ又はビデオキャプチャデバイス、キーボード又はキーパッド、ジョイスティック、タッチセンシティブ面（タッチスクリーンとは分離したもの又はこれに組み込まれたもの）、生体センサなどが含まれる。ユーザインターフェースは、プリンタ、スキャナなどの周辺機器と通信するための１つ又は複数のインターフェースをさらに含んでもよい。
【００３７】
上述したように、プログラムコード命令が、メモリに格納され、プロセッサにより実行されることによって、ＰＲＮＧの機能を実現することができる。なお、任意の好適なプログラムコード命令を、コンピュータ可読記憶媒体からコンピュータ又はその他のプログラム可能な装置にロードすることによって特定の機械を作製し、当該機械が本明細書に記載した機能を実行するための手段となるようにしてもよい。これらのプログラムコード命令を、コンピュータ、プロセッサ、又はその他のプログラム可能な装置に対して特定の態様で機能するよう指示可能なコンピュータ可読記憶媒体に格納することによって、特定の機械又は特定の製品を作製してもよい。コンピュータ可読記憶媒体に格納された命令によって製品を作製し、当該製品を、本明細書に記載した機能を実行する手段としてもよい。プログラムコード命令を、コンピュータ可読記憶媒体から取得し、コンピュータ、プロセッサ、又は他のプログラム可能な装置にロードすることによって、コンピュータ、プロセッサ、又は他のプログラム可能な装置が、コンピュータ、プロセッサ、又は他のプログラム可能な装置で実行されるべき動作を実行するように構成することができる。
【００３８】
プログラムコード命令の取得、ロード、及び実行は、一度に１つの命令が取得、ロード、及び実行されるように順番に行ってもよい。いくつかの例示的な実施形態において、取得、ロード、及び／又は実行は、複数の命令が一度に取得、ロード、及び／又は実行されるように、並列に行ってもよい。プログラムコード命令を実行することによって、コンピュータ実施プロセスを作成し、コンピュータ、プロセッサ、又は他のプログラム可能な装置により実行される命令によって、本明細書に記載の機能を実現するための動作がもたらされるようしてもよい。
【００３９】
プロセッサによる命令の実行、又はコンピュータ可読記憶媒体への命令の格納は、指定された機能を実行するための動作の組み合わせをサポートする。なお、１つ又は複数の機能、及び機能の組み合わせは、特定の機能を実行するか、或いは専用ハードウェア及びプログラムコード命令を実行する専用ハードウェアベースのコンピュータシステム及び／又はプロセッサによって実行することができる。
【００４０】
上述したように、本開示の実施例は、航空機の製造及び保守方法に関連させて説明することができる。図５及び図６に示すように、生産前の工程として、例示的な方法５００は、航空機６０２の仕様決定及び設計（ブロック５０２）及び材料調達（ブロック５０４）を含みうる。生産中は、航空機６０２の部品及び小組立品の製造（ブロック５０６）及びシステムインテグレーション（ブロック５０８）が行われる。その後、航空機６０２は、例えば、認可及び納品（ブロック５１０）を経て、就航に入る（ブロック５１２）。就航期間中は、航空機６０２は、定例の整備及び保守のスケジュールに組み込まれる（ブロック５１４）。定例の整備および保守は、航空機６０２の１つ又は複数の改良、再構成、改装などを含みうる。
【００４１】
例示的な方法５００の各工程は、システムインテグレーター、第三者、及び／又はオペレーター（例えば、顧客）によって実行又は実施することができる。説明のために言及すると、システムインテグレーターは、航空機メーカーおよび主要システム下請業者をいくつ含んでいてもよいが、これに限定されない。第三者は、売主、下請業者、供給業者をいくつ含んでいてもよいが、これに限定されない。オペレーターは、航空会社、リース会社、軍事団体、サービス組織などであってもよい。
【００４２】
図６に示すように、例示的な方法５００によって製造される航空機６０２は、複数の高水準システム６００及び内装６１４を有する機体６１２を含みうる。高水準システム６００の例としては、１つ又は複数の推進系６０４、電気系６０６、油圧系６０８、及び環境系６１０が挙げられる。また、他のシステムをいくつ含んでもよい。航空宇宙産業に用いた場合を例として説明したが、本開示の原理は、例えば自動車産業などの他の産業に適用してもよい。したがって、航空機６０２に加えて、本明細書に記載の原理は、例えば、陸上車両、海上船舶、宇宙船などの他の輸送体にも適用可能である。
【００４３】
本明細書に図示又は記載した装置及び方法は、製造及び保守方法５００における１つ又は複数のどの段階において採用してもよい。例えば、部品及び小組立品の製造工程５０６に対応する部品又は小組立品を、航空機６０２の就航期間中に製造される部品又は小組立品と同様の方法で製造することができる。また、装置、方法、又はこれらの組み合わせの１つ又は複数の例を、製造工程５０６及び５０８で用いることによって、例えば、航空機６０２の組み立て速度を実質的に速めたりコストを実質的に削減したりすることができる。同様に、装置又は方法の１つ又は複数の実施例、或いはこれらの組み合わせを、航空機６０２の就航期間中、例えば、整備及び保守中（ブロック５１４）に用いてもよいが、これに限定されない。
【００４４】
さらに、本開示は、以下の付記による実施例を含む。
【００４５】
付記１．疑似乱数を生成するための方法であって、コールカウンタのカウンタ値を初期化し（ブロック４０２）、ビット単位の前記カウンタ値を前記コールカウンタから混合関数処理へ送り（ブロック４０８）、前記ビット単位の前記カウンタ値に対して混合処理を行って疑似乱数を生成する（ブロック４１０）、各ステップを含む方法。
【００４６】
付記２．さらに、所定値だけ前記カウンタ値をインクリメントするステップ（ブロック４２４）を含む、付記１に記載の方法。
【００４７】
付記３．さらに、前記混合処理ステップ（ブロック４１０）における後続するサイクルのための入力値として、前記疑似乱数を使用するステップを含む、付記１に記載の方法。
【００４８】
付記４．さらに、入力レジスタの容量を超えない範囲で前記カウンタ値の全体をできる限り多く繰り返すことにより、前記入力レジスタに入力を行い（ブロック４０４）、前記入力レジスタが満たされるまで、前記入力レジスタにおける残りの空いたビットに前記カウンタ値の個々のビットを入力する（ブロック４０６）、各ステップを含む、付記１に記載の方法。
【００４９】
付記５．前記混合処理ステップ（ブロック４１０）においては、セグメントの連結により、前記ビット単位の前記カウンタ値の入力の第１セグメントが前記ビット単位の前記カウンタ値の出力の第１セグメントとしてマッピングされる、付記４に記載の方法。
【００５０】
付記６．前記混合処理ステップ（ブロック４１０）は、可逆性を有する、付記５に記載の方法。
【００５１】
付記７．前記混合処理ステップ（ブロック４１０）は、非線形である、付記５に記載の方法。
【００５２】
付記８．前記混合ステップ（ブロック４１０）は、排他的論理和「ＸＯＲ」ツリー混合関数、置換転置混合関数、及び、二重混合ファイステル混合関数からなる群から選択される関数を含む、付記５に記載の方法。
【００５３】
付記９．前記混合ステップ（ブロック４１０）は、さらに、並列混合関数において前記カウンタ値に対する混合処理を少なくとも２回行い（ブロック４１２）、前記並列混合関数からの出力の排他的論理和をとる（「ＸＯＲ処理する」）（ブロック４１４）、各ステップを含む、付記１に記載の方法。
【００５４】
付記１０．さらに、一方向性関数により前記疑似乱数を処理するか、或いは暗号化ハッシュ関数を用いて前記疑似乱数をハッシュ化し（ブロック４１６）、前記疑似乱数の前記一方向性関数又は前記疑似乱数のハッシュ化の結果を、前記混合関数の後続するサイクルのための入力値として用いる（ブロック４１８）、各ステップを含む、付記１に記載の方法。
【００５５】
付記１１．さらに、前記疑似乱数を用いてメモリに暗号化データを保存するステップ（ブロック４２２）を含む、付記１に記載の方法。
【００５６】
付記１２．疑似乱数を生成するためのシステムであって、カウンタ値で初期化される（ブロック４０２）コールカウンタと、ビット単位の前記カウンタ値に対して混合処理を行って疑似乱数を生成する（ブロック４１０）混合関数の処理部と、を含むシステム。
【００５７】
付記１３．前記カウンタ値は、所定値でインクリメントされる（ブロック４２４）、付記１２に記載のシステム。
【００５８】
付記１４．前記疑似乱数は、前記混合関数の後続するサイクルのための入力値として機能する（ブロック４２０）、付記１２に記載のシステム。
【００５９】
付記１５．前記疑似乱数に基づいて暗号化データを保存する（ブロック４２２）メモリを有する記憶装置をさらに含み、前記暗号化データは、暗号鍵、調整値、ノンス、及び初期値からなる群から選択される、付記１２に記載のシステム。
【００６０】
付記１６．前記混合関数（ブロック４１０）は、セグメントの連結により、前記ビット単位の前記カウンタ値の第１セグメントを前記ビット単位の前記カウンタ値の出力の第１セグメントとしてマッピングする、付記１２に記載のシステム。
【００６１】
付記１７．前記混合関数（ブロック４１０）は、可逆性を有する、付記１２に記載のシステム。
【００６２】
付記１８．前記混合関数（ブロック４１０）は、非線形である、付記１２に記載のシステム。
【００６３】
付記１９．前記混合関数（ブロック４１０）は、ＸＯＲツリー混合関数、置換転置混合関数、及び、二重混合ファイステル混合関数からなる群から選択される、付記１２に記載のシステム。
【００６４】
付記２０．前記混合関数（ブロック４１０）は、並列に機能する少なくとも２つの混合関数により実行され（ブロック４１２）、前記少なくとも２つの混合関数からの出力がＸＯＲ処理される（ブロック４１４）、付記１２に記載のシステム。
【００６５】
付記２１．前記疑似乱数は、一方向性関数により処理されるか、或いは暗号化ハッシュ関数を用いてハッシュ化され（ブロック４１６）、前記疑似乱数の前記一方向性の処理又は前記疑似乱数のハッシュ化の結果は、前記混合関数の後続するサイクルのための入力値として用いられる（ブロック４１８）、付記１２に記載のシステム。
【００６６】
明細書に開示した種々の実施例の装置及び方法は、種々の部品、特徴、及び、機能を備える。なお、本明細書に開示した種々の実施例における装置及び方法は、本明細書に開示される他の実施例の装置及び方法の部品、特徴、及び機能をどのような組み合わせで含んでいてもよく、このような可能性の全ては本開示の思想及び範囲に含まれるものとする。
【００６７】
本開示に関連する当業者が上述の記載及び関連図面の教示による利点を念頭におけば、本明細書に記載された開示について多くの改変例及び他の実施形態が予測可能であろう。したがって、本開示は、記載された特定の実施形態に限定されるべきではなく、その改変例及び他の実施形態も、添付の請求の範囲に含まれる。さらに、上述の説明及び関連図面は、特定の要素及び／又は機能の例示的組み合わせについて記載しているが、添付する請求の範囲から逸脱することなく、異なる要素及び／又は機能の組み合わせを用いることも可能である。この点について、例えば、添付の特許請求の範囲に記載されている場合もあるように、先に明確に記載したものとは異なる要素及び／又は機能の組み合わせも考えられる。本明細書において特定の用途を用いているが、これらは、包括的且つ説明的な意味でのみ用いており、本開示を限定するものではない。
【図１】
2017107195.tif 000003
【図２】
2017107195.tif 000004
【図３】
2017107195.tif 000005
【図４】
2017107195.tif 000006
【図５】
2017107195.tif 000007
【図６】
2017107195.tif 000008
【外国語明細書】
2017107195000001.pdf
2017107195000002.pdf
2017107195000003.pdf
2017107195000004.pdf