(57)【要約】      （修正有）【課題】安全なデータ転送に関し、真のランダムビット生成を促進するためのシステムと方法を提供する。【解決手段】システム３００において、複数のメモリセルを含む第１のメモリ３１５で、第１の真のランダムビットストリームを受信し、複数のメモリセルの各々が、第１の真のランダムビットストリームの各１ビットを保存する。更に、第１の真のランダムビットストリームの各ペアに基づいて、第２の真のランダムビットストリームの各ビットを、論理回路によって生成し、第２のメモリ３２５に第２の真のランダムビットストリームを保存する。【選択図】図３
2019082676.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセル（７１０Ａ、７１０Ｂ）を含む第１のメモリ（７０５）に第１の真性ランダムビットストリームを受信すること（１１０５）であって、前記複数のメモリセルの各々は前記第１の真性ランダムビットストリームの各１ビットを保存する、受信すること（１１０５）、
前記第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを、論理回路（７１５）によって生成すること（１１１０）、及び、
第２のメモリ（５１０）に前記第２の真性ランダムビットストリームを保存すること（１１１５）
を含む方法。
【請求項２】
前記生成することは、
前記第１のメモリから前記第２の真性ランダムビットストリームの現ビットに関連する前記ビットペアを読み出すこと（１２０５）、
前記第２の真性ランダムビットストリームの前記現ビットを取得するため、前記ビットペアにビットワイズ演算を実行すること（１２１０）、及び、
前記第２の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することとを繰り返すこと
を含む、請求項１に記載の方法。
【請求項３】
前記読み出すことは、前記複数のメモリセルの第１のメモリセル（７１０Ａ）から前記現ビットに関連する前記ビットペアの一方を、前記複数のメモリセルの第２のメモリセル（７１０Ｂ）から前記ビットペアの他方を読み出すことを含み、
前記方法は、前記現ビットに関連する前記ビットペアの読み出し後に、前記第２の真性ランダムビットストリームの次のビットに関連する前記ビットペアの一方を前記第１のメモリセルに、また、前記次のビットに関連する前記ビットペアの他方を前記第２のメモリセルに提供することを更に含む、請求項２に記載の方法。
【請求項４】
前記第１のメモリはシフトレジスタを備え、前記提供することは、
前記第２のメモリセルから前記次のビットに関連する前記ビットペアの前記一方を前記第１のメモリセルに、また、前記複数のメモリセルの第３のメモリセル（７１０Ｃ）から前記次のビットに関連する前記ビットペアの前記他方を前記第２のメモリセルに、シフトすることを含む、請求項３に記載の方法。
【請求項５】
前記第１のメモリはシフトレジスタを備え、前記提供することは、
前記複数のメモリセルの第３のメモリセル（７１０Ｃ）から前記次のビットに関連する前記ビットペアの前記一方を前記第１のメモリセルに、また、前記複数のメモリセルの第４のメモリセル（７１０Ｄ）から前記次のビットに関連する前記ビットペアの前記他方を前記第２のメモリセルに、シフトすることを含む、請求項３に記載の方法。
【請求項６】
前記シフトすることは、
前記複数のメモリセルの最終メモリセル（７１０Ａ）に保存された前記第１の真性ランダムビットストリームのビットをシフトアウトすること、及び、
前記第１の真性ランダムビットストリームの各残存ビットをシフトオーバーすること
を含む、請求項５に記載の方法。
【請求項７】
前記最終メモリセルは前記複数のメモリセルの前記第１のメモリセルである、請求項６に記載の方法。
【請求項８】
前記ビットワイズ演算は論理的等価性を有する、請求項２に記載の方法。
【請求項９】
第１のメモリセル（７１０Ａ）から第３の真性ランダムビットストリームの現ビットに関連する前記ビットペアの一方を、前記複数のメモリセルの第３のメモリセル（７１０Ｃ）から前記ビットペアの他方を読み出すこと（１２０５）、
前記第３の真性ランダムビットストリームの前記現ビットを取得するため、前記現ビットに関連する前記ビットペアにビットワイズ演算を実行すること（１２１０）、及び、
前記第３の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することを繰り返すこと、
によって、前記第１の真性ランダムビットストリームに基づいて前記第３の真性ランダムビットストリームの各ビットを前記論理回路によって生成することを更に含む、請求項１に記載の方法。
【請求項１０】
前記第２の真性ランダムビットストリームの各ビットペアに基づいて、第３の真性ランダムビットストリームの各ビットを前記論理回路によって生成すること、及び、
前記第３の真性ランダムビットストリームを第３のメモリに保存すること
を更に含む、請求項１に記載の方法。
【請求項１１】
前記第２の真性ランダムビットストリームはシフトレジスタに保存される、請求項１０に記載の方法。
【請求項１２】
前記第２及び第３の真性ランダムビットストリームでのビットワイズ演算に基づいて、第４の真性ランダムビットストリームの各ビットを前記論理回路によって生成することを更に含む、請求項１０に記載の方法。
【請求項１３】
複数のメモリセル（７１０Ａ、７１０Ｂ）を含むメモリ（７０５）であって、前記複数のメモリセルの各々は第１の真性ランダムビットストリームの各１ビットを保存するように構成されるメモリ（７０５）、及び、
前記第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを生成するように構成される論理回路（７１５）
を備えるデバイス。
【請求項１４】
前記メモリから前記第２の真性ランダムビットストリームの現ビットに関連する前記ビットペアを読み出すこと（１２０５）、
前記第２の真性ランダムビットストリームの前記現ビットを取得するため、前記ビットペアにビットワイズ演算を実行すること（１２１０）、及び、
前記第２の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することとを繰り返すこと
によって、前記論理回路は、前記第２の真性ランダムビットストリームの各ビットを生成するように構成される、請求項１３に記載のデバイス。
【請求項１５】
前記メモリは、
第２の真性ランダムビットストリームの前記現ビットに関連する前記ビットペアの一方をシフトレジスタの第１のメモリセル（７１０Ａ）に保存し、
前記第２の真性ランダムビットストリームの前記現ビットに関連する前記ビットペアの他方を前記シフトレジスタの第２のメモリセル（７１０Ｂ）に保存し、
前記第２の真性ランダムビットストリームの前記現ビットの取得後、前記第２の真性ランダムビットストリームの次のビットに関連する前記ビットペアの一方を前記第１のメモリセルに、また、前記次のビットに関連する前記ビットペアの他方を前記第２のメモリセルにシフトする
ように構成されるシフトレジスタ（７０５）を備える、請求項１４に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は概して安全なデータ転送に関し、より具体的には、真のランダムビット生成を促進するためのシステム及び方法に関する。
【背景技術】
【０００２】
インターネットなどの相互接続ネットワーク及び企業内ネットワーク上で、安全なデータ転送を提供することはますます重要になってきている。安全なデータ転送は、ネットワーク上で送信されるデータの暗号化及び復号化によって支えられうる。強力な暗号化キーを用いて暗号化されるデータは、攻撃者が総当たり攻撃法などによって、暗号化されたデータを復号化するのを防止しうる。
【発明の概要】
【０００３】
更に本書に記載の様々な実施例によれば、真性ランダムビット（ｔｒｕｌｙ  ｒａｎｄｏｍ  ｂｉｔｓ）（例えば、真のランダムビット（ｔｒｕｅ  ｒａｎｄｏｍ  ｂｉｔｓ）、絶対的ランダムビット（ａｂｓｏｌｕｔｅｌｙ  ｒａｎｄｏｍ  ｂｉｔｓ）、又は絶対的真性ランダムビット（ａｂｓｏｌｕｔｅｌｙ  ｔｒｕｌｙ  ｒａｎｄｏｍ  ｂｉｔｓ）とも称される）、及び真性ランダムビットストリーム（ｔｒｕｌｙ  ｒａｎｄｏｍ  ｂｉｔ  ｓｔｒｅａｍｓ）（例えば、真のランダムビットストリーム（ｔｒｕｅ  ｒａｎｄｏｍ  ｂｉｔ  ｓｔｒｅａｍｓ）、絶対的ランダムビットストリーム（ａｂｓｏｌｕｔｅｌｙ  ｒａｎｄｏｍ  ｂｉｔ  ｓｔｒｅａｍｓ）、又は絶対的真性ランダムビットストリーム（ａｂｓｏｌｕｔｅｌｙ  ｔｒｕｌｙ  ｒａｎｄｏｍ  ｂｉｔ  ｓｔｒｅａｍｓ）とも称される）は、ギガヘルツ域などの所望のレートで生成されうる。真性ランダムビットストリームは、一又は複数の真性ランダムビット発生源によって生成されうる。一態様では、真性ランダムビット発生源は、真性ランダムビット発生回路であってよく、真性ランダムビット発生回路を含んでよく、或いは、真性ランダムビット発生回路の一部であってよい。追加の真性ランダムビットストリームは、真性ランダムビット発生源によって生成される１つの真性ランダムビットストリームのビットとそれ自体、及び／又は、第２の真性ランダムビット発生源によって生成される別の真性ランダムビットストリームのビットとをインターミキシングすることによって生成されうる。場合によっては、これらの追加の真性ランダムビットストリームはそれ自体と、及び／又は、更なる追加の真性ランダムビットストリームを生成するため、あらかじめ生成された他の真性ランダムビットストリームとインターミキシングされうる。このように、様々な実施例を用いると、真性ランダムビット発生源による生成と、一又は複数の生成された真性ランダムビットストリームのインターミキシングによって、高レートの真性ランダムビット生成が達成されうる。一実施例では、真性ランダムビットストリームは、キーマテリアル（例えば、暗号化キー、復号化キー）として使用されてもよく、或いはキーマテリアルを導き出すために使用されてもよい。一態様では、ランダムビットストリームは、真のランダムビットストリームになりうる。場合によっては、真のランダムビットストリームは、量子プロセス、他の物理（又は自然）現象や自然エントロピー源の測定に基づきうる。これらの生成源、或いはこれらの生成源からの真のランダム抽出は真のランダムビット生成を提供しうるが、生成速度が限定されているか、暗号化などの用途では所望の速度よりも遅くなりうる。一実施例では、真性ランダムビットストリームは、例えば、インターネット経由での大量のデータの安全な送信を促進するためなど、大容量及び／又は高速の真性ランダムビットに対する需要を満たすため、非常に大きい容量の真性ランダムビット又は非常に高いビットレートの真性ランダムビットを生成するようにスケールアップされうる。
【０００４】
一実施例によれば、方法は、第１のメモリで、所定の長さの第１の真性ランダムビットストリームを受信すること、或いは、第１の真性ランダムビットストリームを連続ビットストリームとして受信することを含みうる。方法は更に、第２のメモリに第２の真性ランダムビットストリームを含みうる。方法は更に、第１の真性ランダムビットストリームの各ビットを第２の真性ランダムビットストリームの対応するビットと結合するため、論理回路によってビットワイズ演算を実行して、第３の真性ランダムビットストリームを生成することを含む。方法は更に、第３のメモリに第３の真性ランダムビットストリームを保存することを含みうる。
【０００５】
別の実施例によれば、方法は、複数のメモリセルからなる第１のメモリに、所定の長さの第１の真性ランダムビットストリームを受信すること、或いは、第１の真性ランダムビットストリームを連続ビットストリームとして受信することを含みうる。複数のメモリセルの各々は、第１の真性ランダムビットストリームの各１ビットを保存する。方法は更に、第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを、論理回路によって生成することを含む。方法は更に、第２のメモリに第２の真性ランダムビットストリームを保存することを含みうる。
【０００６】
別の実施例によれば、デバイスはメモリを含みうる。メモリは、複数のメモリセルからなることを含み、複数のメモリセルの各々は、第１の真性ランダムビットストリームの各１ビットを保存するように構成されている。デバイスは更に、第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを生成するように構成された論理回路を含む。
【０００７】
本発明の範囲は、参照によりこのセクションに組み込まれる請求項によって定義される。以下の一又は複数の実施例の詳細説明を検証することにより、当業者は、本発明の実施例をより完全に理解し、そのさらなる利点を認識するに至る。これより、添付の図面を参照し、まず簡単に説明する。
【図面の簡単な説明】
【０００８】
【図１】本開示の一又は複数の実施例による、データの暗号化／復号化及びデータ通信が実装されうる、例示的なネットワーク環境を示す。
【図２】本開示の一又は複数の実施例による、データの暗号化／復号化及びデータ通信が実装されうる、例示的なコンピューティングを示す。
【図３】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するためのシステムのブロック図を示す。
【図４】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセスのフロー図を示す。
【図５】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するためのシステムのブロック図を示す。
【図６】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するためのシステムのブロック図を示す。
【図７Ａ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図７Ｂ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図７Ｃ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図８Ａ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図８Ｂ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図８Ｃ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図９Ａ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図９Ｂ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図９Ｃ】本開示の一又は複数の実施例による、順次クロックサイクルで真性ランダムビットを生成するためのシステムのブロック図を示す。
【図９Ｄ】本開示の一又は複数の実施例による、順次クロックサイクルでの真性ランダムビットの生成を示す。
【図１０】本開示の一又は複数の実施例による、一又は複数の真性ランダムビットストリームのインターミキシングでの追加的な真性ランダムビットストリームの生成を示す。
【図１１】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセスのフロー図を示す。
【図１２】本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセスのフロー図を示す。
【図１３】本開示の一又は複数の実施例による、反復的な暗号化キー生成とデータ暗号化を促進するための例示的なプロセスのフロー図を示す。
【図１４】本開示の一又は複数の実施例による、反復的な暗号化キー生成とデータ暗号化を促進するための例示的なプロセスのフロー図を示す。
【図１５】本開示の一又は複数の実施例による、暗号化／復号化の促進と関連情報の消去のためのシステムのブロック図を示す。
【図１６】本開示の一又は複数の実施例による、暗号化／復号化の促進と関連情報の消去のためのシステムのブロック図を示す。
【図１７】本開示の一又は複数の実施例による、暗号化／復号化の促進と関連情報の消去のためのシステムのブロック図を示す。
【図１８】本開示の一又は複数の実施例による、関連情報の暗号化／復号化の促進と消去のためのシステムのフロー図を示す。
【図１９】本開示の一又は複数の実施例による、関連情報の暗号化／復号化の促進と消去のためのタイミング図と関連するクロック信号を示す。
【発明を実施するための形態】
【０００９】
本開示の実施例とそれらの利点とは、下記の詳細な説明を参照することにより最もよく理解できる。一又は複数の図に示されている類似の要素を識別するために類似の参照番号が使用されており、これらの図は本開示の実施例を示すためのものであって、限定することを目的としたものではないことを理解されたい。
【００１０】
下記の詳細な説明は、対象技術の様々な構成の説明を意図したものであって、実施されうる対象技術の唯一の構成を示すことを意図していない。添付の図面は本書に組み込まれており、詳細な説明の一部を構成している。詳細な説明には、対象技術の完全な理解をもたらすことを目的とした具体的な詳細事項が含まれる。しかしながら、対象技術は本書に記載の具体的な詳細事項に限定されず、一又は複数の実施例（又は、実施形態）を用いて実施されうることは、当業者には明確で自明であろう。一又は複数の例では、対象技術の概念があいまいになるのを避けるため、構造及び構成要素はブロック図の形態で示されている。対象となる開示の一又は複数は、一又は複数の図面と関連付けて例示及び／又は説明されており、特許請求の範囲に記載されている。
【００１１】
一又は複数の介在するネットワークにより（或いはネットワークなしで）、デバイス間の安全な通信を促進するため、様々な技術が提供される。このような技術は、データの暗号化／復号化及びデータ通信（例えば、送信、受信）を含み、移動中のデータ並びに停止中のデータの保護を促進しうる。幾つかの実施例では、本技術は、キーマテリアル（例えば、暗号化キー）として利用するため、又はキーマテリアルの導出に利用するため、所望のビットレートで真性ランダムビットの生成を促進すること、あらかじめ生成されたキーマテリアル及び／又は関連データ（例えば、暗号化データ、非暗号化データ）に基づいてキーマテリアルを生成すること、及び／又は、キーマテリアルの使用時にキーマテリアル及び／又は関連データを消去することを含みうる。
【００１２】
幾つかの実施例では、このような技術は、デバイス間で直接、及び／又は、一又は複数のネットワークを介したデバイス間で、大量の情報の安全な通信（例えば、送信、受信）を確保するための十分な量のキーマテリアルの生成に利用されうる。例えば、キーマテリアルは、インターネットを介して送信されるトラフィックを暗号化し、インターネットを介して受信される暗号化されたトラフィックを復号化するために利用されうる。一態様では、キーマテリアルは、暗号化側で平文の暗号化に使用される暗号化キーと、復号化側で暗号化されたデータの復号化に使用される復号化キーを含みうる。
【００１３】
コンピューティングデバイスは、データを暗号化し、暗号化したデータを（例えば、別のコンピューティングデバイスに）送信する送信機として使用されるときには、暗号化コンピューティングデバイス、暗号化デバイス、暗号器とも称される。同様に、コンピューティングデバイスは、暗号化されたデータを（例えば、別のコンピューティングデバイスから）受信し、例えば、ユーザーによる開示のためなど、受信した暗号化データを復号化する受信機として使用されるときには、復号化コンピューティングデバイス、復号化デバイス、又は復号器とも称される。例えば、暗号器によって復号器に送信されるデータはウェブコンテンツになりうる。場合によっては、コンピューティングデバイスは、ある通信に対しては暗号器として、また。別の通信に対しては復号器として動作しうる。他の場合には、コンピューティングデバイスは専用の暗号器又は専用の復号器になりうる。
【００１４】
一又は複数の実施例では、真性ランダムビット（例えば、真のランダムビット、絶対的ランダムビット、又は絶対的真性ランダムビットとも称される）並びに、真性ランダムビットストリーム（例えば、真のランダムビットストリーム、絶対的ランダムビットストリーム、又は絶対的真性ランダムビットストリームとも称される）は、所望のレートで生成されうる。一実施例として、所望のビットレートはメガヘルツ領域からテラヘルツ領域の範囲になりうる。真性ランダムビットストリームはキーマテリアル（例えば、暗号化キー、復号化キー）として利用されうるか、キーマテリアルを導出するために利用されうる。所定にキーに関しては、キーの長さ（例えば、ビット数又はバイト数）は、ユーザー、アプリケーション、サーバー所有者、政府当局、及び／又は他の組織によって設定（場合によっては、強制）される所望のセキュリティレベルに基づいて指定されうる。正しく生成されたキーマテリアルは、攻撃者が総当たり攻撃法及び／又は他の方法によって破るのがより難しくなるため、長いキーマテリアルは一般的に高いセキュリティに関連付けられている。一態様では、キーは８ビット、１２８ビット、２５６ビット、又は５１２ビットになりうるが、キーはこれらの例示的な長さを下回る、上回る、或いはその間の任意のビット数を含みうる。幾つかの態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
【００１５】
一実施例では、真性ランダムビットは真性ランダムビット発生源を用いて生成されうる。一態様では、真性ランダムビット発生源は、真性ランダムビット発生回路であってよく、真性ランダムビット発生回路を含んでよく、或いは、真性ランダムビット発生回路の一部であってもよい。本開示の様々な実施例は、等しい確率で（又は、実質的に等しい確率で）１のビット値及び０のビット値を生成する、一又は複数の偏りのない真性ランダムビット発生器を利用するが、ランダムビット生成に一又は複数の偏ったランダムビット発生器が利用される場合には、様々な実施例が実装されうる。
【００１６】
一態様では、真性ランダムビット発生器は、大気雑音、熱雑音、量子プロセス、又は他の物理的な又は自然のプロセス、或いは自然エントロピー源など、ランダムであると期待される物理的プロセスの測定に基づいて、真性ランダムビットを生成しうる。これらの発生源又はこれらの発生源からの真のランダムな抽出は、真のランダムビット生成をもたらしうるが、その速度は限定的で、暗号作成に望ましい速度よりも遅くなりうる。一実施例では、真性ランダムビットストリームは、例えば、インターネット経由での大量のデータの安全な送信を促進するためなど、大容量及び／又は高速の真性ランダムビットに対する需要を満たすため、非常に大きい容量の真性ランダムビット又は非常に高いビットレートの真性ランダムビットを生成するようにスケールアップされうる。
【００１７】
真性ランダムビット発生源はまた、真のランダムビット発生源又は絶対的ランダムビット発生源と称されることもありうる。測定値に基づいて、物理的なプロセスの各測定は１又は０に関連付けられうる。真の偏りのないランダムビット発生器によって生成される真性ランダムビットは、１である絶対的な確率５０％と、０である絶対的な確率５０％を有する。このようなランダムビットは、真の偏りのないランダムビット、又は単に真のランダムビット、又は絶対的ランダムビットと称されることがある。一態様では、第３の真のランダムビットを生成するため、第１の真のランダムビットは第２の真のランダムビットと（例えば、ビットごとに）結合されうる。論理的な等価性を有するビットワイズ演算は、両関数項が同じ論理値を有するとき真（例えば、１）の間数値を、関数項が異なるときには偽（例えば、０）の間数値をもたらすビットワイズ演算で利用されうる。例えば、排他的論理和演算（排他的な分離演算、又はＸＯＲ演算）、或いは排他的否定論理和（ＸＮＯＲ演算）は、ビットワイズ演算として利用されうるが、他の演算も利用されうる。一態様では、ランダムビットストリーム又は真のランダムビットストリームは、キーマテリアル（例えば、暗号化キー）として使用されてもよく、或いはキーマテリアル（例えば、暗号化キー）を導出するために使用されてもよい。
【００１８】
場合によっては、物理的なプロセスは量子的な（例えば、事実上の量子力学的な）プロセスになりうる。一実施例として、レーザーは量子力学的に結合された光子状態を生成するために使用されうる。この結合の特性により、光子は直交モードで同時に存在することができる。このような直交モードは、典型的には可視偏光で認められ、例えば直交モードは水平及び垂直の直線偏光、或いは右及び左の円偏光になっている。量子力学的プロセスのランダム特性は、ランダムで等しい確率を有するため、どちらか一方の直交状態の測定値を引き起こす。１つの偏光状態測定値に０又は１のビット値を割り当てることによって、真のランダムビットストリームが生成されうる。この場合、真のランダムビットストリームは、量子ビット（キュビット）を含む量子ビットストリームと称されることもあり、キーマテリアルは量子キーを含むことがあり、量子キーと称されることもある。
【００１９】
幾つかの実施例では、ランダムビットストリームは、一又は複数のあらかじめ生成されたランダムビットストリームに基づいて生成されうる。場合によっては、真性ランダムビットストリームは、一又は複数のあらかじめ生成された真性ランダムビットストリームに基づいて生成されうる。一態様では、真性ランダムビットストリームは、一又は複数の真性ランダムビット発生源によって生成された一又は複数の真性ランダムビットストリームに基づいて生成されうる。一態様では、追加の真性ランダムビットストリームは、１つの真性ランダムビットストリームのビットをそれ自体と、及び／又は別の真性ランダムビットストリームのビットとインターミキシングすることによって生成されうる。例えば、真性ランダムビット発生源による真性ランダムビット生成を補うため、一又は複数の追加の真性ランダムビットストリームは、真性ランダムビット発生源によって生成される真性ランダムビットストリームのビットをそれ自体と、及び／又はあらかじめ生成された他の真性ランダムビットストリームとインターミキシングすることによって生成されうる。この実施例では、これらの追加の真性ランダムビットストリームは次いで、更なる追加の真性ランダムビットストリームを生成するため、それ自体と、及び／又はあらかじめ生成された他の真性ランダムビットストリームとインターミキシングされうる。
【００２０】
このように、様々な実施例を用いて、真性ランダムビット生成のレートは、一又は複数の真性ランダムビット発生源がすべての真性ランダムビットを生成する場合と比べて増大し、追加の真性ランダムビットストリームを生成するため、あらかじめ生成された真性ランダムビットストリーム上で実行されたインターミキシングの少なくとも量に応じて、２倍、３倍、１０倍、１００倍などスケールアップされる。例えば、真性ランダムビット発生源が真性ランダムビットを１Ｇｂｐｓで生成し、真性ランダムビットストリームのインターミキシングが真性ランダムビット生成のレートを１００倍高めているときには、真性ランダムビットが生成される有効レートは１００Ｇｂｐｓとなる。所望のセキュリティレベルは、キーマテリアルの長さ（例えば、暗号化キー内の真性ランダムビットの数）、及び／又は、暗号化を要求するデータの量及び／又はタイプを示しうるため、真性ランダムビット生成のレートは、このような真性ランダムビット生成によってサポートされるべき所望のセキュリティレベルに基づいてよい。
【００２１】
一又は複数の実施例では、平文データは暗号化され、暗号化されたデータはキーマテリアルを用いて復号化されうる（例えば、暗号化キーを用いて暗号化され、復号化キーを用いて復号化される）。幾つかの態様では、キーマテリアルは、真性ランダムビット発生源によって生成された真性ランダムビットストリームであってよく、或いは、真性ランダムビット発生源によって生成された真性ランダムビットストリーに基づいて導出されてよく、及び／又は、真性ランダムビット発生源によって生成された一又は複数の真性ランダムビットストリームから導出されてもよい。これに関連して、暗号化側では、真性ランダムビットストリームは、暗号化のために利用される暗号化キーとして使用されてよく、或いは、暗号化のために利用される暗号化キーとなるように導出されてもよい。幾つかの態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
【００２２】
一実施例では、暗号器は、暗号化される平文データ（例えば、ユーザーデータ）を受信しうる。暗号器は、例えば、平文データの暗号化及び／又は暗号化データの送信を促進するため、平文データを一又は複数のデータ部分に分割（例えば、フラグメント化、パーティション化）しうる。平文データの各データ部分の長さ（例えば、ビット数又はバイト数）は同じであっても、異なっていてもよい。場合によっては、データ部分の長さは、データ部分の暗号化に使用される暗号化キーの長さに基づきうる。例えば、暗号化キーの長さは、データ部分と同じか、データ部分よりも長くてもよい。これに関連して、暗号化キーの長さは、ユーザー、アプリケーション、サーバー所有者、政府当局、及び／又は他の組織による所望のセキュリティレベルに基づきうる。
【００２３】
暗号器は、第１の暗号化されたデータ部分を提供するため、第１の暗号化キーを用いて、平文データの第１のデータ部分を暗号化しうる。暗号器は、第１の暗号化キーに基づいて、平文データの第２のデータ部分の暗号化のため、第２の暗号化キーを生成しうる。場合によっては、第２の暗号化キーは、第１のデータ部分及び／又は第１の暗号化されたデータ部分に基づきうる。例えば、第２の暗号化キーは、第１の暗号化キー及び第１のデータ部分又は第１の暗号化されたデータ部分のうちの少なくとも１つで実行されるビットワイズ演算（例えば、ＸＯＲ、ＸＮＯＲ、ＡＮＤ、ＯＲ、及び／又は他の演算）に基づきうる。暗号器は、反復的に、現在の暗号化キーを用いて現在のデータ部分を暗号化し、次のデータ部分の暗号化で使用される次の暗号化キーを生成し、次のデータ部分を暗号化するため、次の暗号化キーを使用するように切り替える。これに関連して、ｎ番目の反復で、暗号器は、少なくとも、あらかじめ生成され、（ｎ−１）番目のデータ部分を暗号化するために使用された（ｎ−１）番目の暗号化キーに基づいて、ｎ番目のデータ部分を暗号化するためのｎ番目の暗号化キーを生成しうる。ｎ番目の暗号化キーはまた、（ｎ−１）番目のデータ部分及び／又は（ｎ−１）番目の暗号化されたデータ部分に基づきうる。
【００２４】
一態様では、第１の暗号化キーは、暗号器によって受信された真性ランダムビットストリームであってよく、或いは、暗号器によって受信された真性ランダムビットストリームに基づいてよい。真性ランダムビットストリームは、真性ランダムビット発生器によって（例えば、量子力学的プロセスに基づいて）生成されてよく、或いは、真性ランダムビットストリームをインターミキシングすることによって生成されてよい。平文データの残りの部分を暗号化するため、暗号器は次いで、その後の暗号化キーを（例えば、真性ランダムビット発生器から真性ランダムビットストリームを受信することなく）導出しうる。
【００２５】
暗号器は、暗号化されたデータ部分と、第１の暗号化キー及びその後の任意の暗号化キーに関連する情報とを復号器に送信しうる。この情報は、暗号器によって利用される第１の暗号化キー、並びに、その後の暗号化キー、及び／又は、復号器が対応する第１の復号化キーとその後の復号化キーを生成できるようにする情報を生成する暗号化プロセスを反復するたびに実行されるビットワイズ演算を示しうる。一態様では、このような情報は、暗号器と復号器との間のキー交換（例えば、量子キー交換）の一部として提供されうる。
【００２６】
場合によっては、暗号器は、一又は複数の暗号化されたデータ部分（例えば、データパケットのペイロードとして）を含むデータパケットを送信しうる。データパケットは、データパケット内の暗号化されたデータ部分の長さ（例えば、そのヘッダ内の）、データパケット内の暗号化されたデータ部分が平文データ全体の中のどこに適合するかを示す情報、及び／又は、一般的に、復号器によって復号化されるとき、データ部分のリアセンブリを促進する他の任意の情報を特定しうる。場合によっては、復号器に提供される情報により、暗号化されたデータ部分の復号化、及び復号化されたデータ部分からの平文データのリアセンブリが可能になる限り、平文データのデータ部分を第１のデータ部分、第２のデータ部分、第３のデータ部分などとして指定することは、任意に行われうる。
【００２７】
復号器で、復号器は暗号器から暗号化されたデータの第１のデータ部分（例えば、第１の暗号化されたデータ部分）を受信しうる。復号器は、第１の復号化されたデータ部分を提供するため、第１の復号化キーを用いて第１のデータ部分を復号化しうる。復号器は、第１の復号化キーに基づいて、暗号化されたデータの第２のデータ部分の復号化のための第２の復号化キーを生成しうる。第２の復号化キーはまた、第１の復号化されたデータ部分及び／又は第１の暗号化されたデータ部分に基づきうる。例えば、第２の復号化キーは、第１の復号化キー及び第１の復号化されたデータ部分又は第１の暗号化されたデータ部分のうちの少なくとも１つで実行されるビットワイズ演算に基づきうる。
【００２８】
復号器は、反復的に、現在の復号化キーを用いて現在の暗号化されたデータ部分を復号化し、次の暗号化されたデータ部分の復号化で使用される次の復号化キーを生成し、次の暗号化されたデータ部分を復号化するため、次の復号化キーを使用するように切り替える。これに関連して、ｎ番目の反復で、復号器は、少なくとも、あらかじめ生成され、（ｎ−１）番目の暗号化されたデータ部分を復号化するために使用された（ｎ−１）番目の復号化キーに基づいて、ｎ番目の暗号化データ部分を復号化するｎ番目の復号化キーを生成しうる。ｎ番目の復号化キーはまた、（ｎ−１）番目の暗号化されたデータ部分及び／又は復号化された（ｎ−１）番目のデータ部分に基づきうる。これに関連して、復号器は、第１の復号化キー及びその後の任意の復号化キーに関連する情報を暗号器から受信しうる。例えば、復号器は、暗号器から受信した第１の暗号化キーを示す情報に基づいて、第１の復号化キーを読み出すか又は導出しうる。復号器は、演算に対応するその後の復号化キーを生成するオペランド（例えば、あらかじめ生成された復号化キー、あらかじめ復号化されたデータ部分、及び／又はあらかじめ暗号化されたデータ部分）に、並びに、対応する暗号化キーを生成するため、復号器によって利用されるオペランドに、ビットワイズ演算などの演算を実行しうる。
【００２９】
異なるデータ部分に対して、異なる暗号化キー（及び対応する復号化キー）を生成することは、平文データ全体の暗号化に単一の暗号化キーが使用されるのではないため、セキュリティの強化を促進する。例えば、復号化キーが復号器によって保存されず、攻撃者が復号化キーを読み出せる場合であっても、他の暗号化されたデータ部分は異なる復号化キーに関連付けられているため、攻撃者は暗号化されたデータ部分の１つのみを復号化するために復号化キーを使用することがある。一実施例では、暗号化されその後復号化される次の平文データに関して、暗号化と復号化のプロセスは、暗号器と復号器によって実行される新しいキー交換と共に、新たに開始される。
【００３０】
一又は複数の実施例では、キーマテリアル及び／又は関連データは使用後消去されうる。暗号化側では、キーマテリアルは暗号化キーであってよく、関連データは暗号化キーを用いて暗号化されたデータ（例えば、データ部分）であってよい。復号化側では、キーマテリアルは復号化キーであってよく、関連データは復号化キーを用いて復号化される暗号化されたデータ（例えば、暗号化されたデータ部分）であってよい。一態様では、キーマテリアルはランダムビット発生器（例えば、真のランダムビット発生器）によって生成されてよく、及び／又は、ランダムビットストリーム（例えば、真のランダムビットストリーム）から導出されてもよい。一態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
【００３１】
一実施例では、コンピューティングデバイスは、第１のメモリの第１のデータ及び第２のメモリの第１のキーを受信しうる。コンピューティングデバイスは、論理回路を用いて、第１のデータ及び第１のキーに基づいて第２のデータを生成しうる。コンピューティングデバイスは、送信のため第２のデータを提供しうる。コンピューティングデバイスは、第１のキー及び／又は第１のデータを消去しうる。第１のキー及び／又は第１のデータの消去は、１クロックサイクル以内に（例えば、第２のデータが生成されるのと同じクロックサイクルで）起こりうる。例えば、消去は第２のデータを生成するクロックサイクルの２分の１で起こりうる。場合によっては、第１のキー及び／又は第１のデータは、所定のビット値又は所定のビット値の列によって上書きされる（例えば、すべてのメモリセルは値１で上書きされる）ことによって、消去されうる。他の場合には、第１のキー及び／又は第１のデータは、論理回路の結果を第１のメモリ及び／又は第２のメモリにフィードバックすることによって、消去されうる。一態様では、第１のキー及び／又は第１のデータは、異なる機構を用いることによって、消去されうる。キー及び／又は関連データの消去は、キー及び／又は関連データがそれぞれのメモリに保存されている持続時間を短縮し、したがって、攻撃者がこのような情報を取得することができる時間を短縮することによって、セキュリティを高める。加えて、キー及び／又は関連データの消去は、関連データを暗号化又は復号化するためのキーの使用後、キー及び／又は関連データの再利用を防止する。
【００３２】
暗号化側では、コンピューティングデバイスは暗号器であってよく、受信した第１のデータは平文データ（例えば、平文データ部分）で、第１のキーは暗号化キーである。場合によっては、第１のデータ部分はより大きな平文データの一部になりうる。これらの事例では、より大きな平文データの第２のデータ部分を暗号化するための第２の暗号化キーは、第１の暗号化キーに基づいて生成されうる。第２の暗号化キーはまた、第１のデータ部分及び／又は第１の暗号化されたデータ部分に基づきうる。
【００３３】
復号化側では、コンピューティングデバイスは復号器であってよく、受信した第１のデータは第１の暗号化されたデータで、第１のキーは復号化キーである。場合によっては、第１のデータはより大きな暗号化データの一部になりうる。これらの事例では、より大きな暗号化されたデータの第２の暗号化されたデータ部分を復号化するための第２の復号化キーは、第１の復号化キーに基づいて生成されうる。場合によっては、第２の復号化キーはまた、第１の暗号化されたデータ部分及び／又は第１の復号化されたデータ部分に基づきうる。
【００３４】
幾つかの実施例では、暗号化側では、平文データ及び／又は暗号化されたデータは、代替的に及び／又は追加的に、他の暗号化技術を用いて暗号化されうる。一実施例として、平文データ及び／又は暗号化されたデータは、非限定的な例として、データ暗号化規格（ＤＥＳ）暗号化アルゴリズム、高度暗号化規格（ＡＥＳ）暗号化アルゴリズム、他の対称暗号化アルゴリズム、非対称暗号化アルゴリズム、及び／又は他のタイプの暗号化など、一又は複数の暗号化技術を用いて、暗号化されうる（例えば、場合によっては、更に暗号化される）。同様に、復号化側では、暗号化されたデータ及び／又は復号化されたデータは、ＤＥＳ、ＡＥＳ、他の対称復号化アルゴリズム、非対称復号化アルゴリズム、及び／又は他のタイプの復号化のうちの一又は複数など、他の復号化技術を用いて、代替的に及び／又は追加的に復号化されうる。
【００３５】
ここで図を参照すると、図１は、データの暗号化／復号化及びデータ通信（例えば、送信、受信）が本開示の一又は複数の実施例により実装されうる、例示的なネットワーク環境１００を示している。しかしながら、描かれている構成要素のすべてが必要なわけではなく、一又は複数の実施例は、図に示された追加の構成要素を含みうる。構成要素の配置及びタイプの変更は、本書に記載の特許請求の概念又は範囲を逸脱することなく、行われうる。追加の構成要素、異なる構成要素、及び／又はより少ない数の構成要素が提供されうる。
【００３６】
ネットワーク環境１００は、コンピューティングデバイス１０５Ａ〜１０５Ｄ及びネットワーク１１０を含む。コンピューティングデバイス１０５Ａ〜１０５Ｄは、互いにデータを通信（例えば、送信及び／又は受信）しうる。例えば、コンピューティングデバイス１０５Ａ〜１０５Ｄは、データを暗号化、データを復号化、及び暗号化されたデータを通信（例えば、情報を安全に送信、受信、及び／又は保存）しうる。コンピューティングデバイス１０５Ａ〜１０５Ｄは、互いに直接、及び／又はネットワーク１１０を介して接続されうる。図１では、コンピューティングデバイス１０５Ａ〜１０５Ｄは、それぞれの接続１１５Ａ〜１１５Ｄを介してネットワーク１１０に接続され、コンピューティングデバイス１０５Ａと１０５Ｃは接続１１５Ｅを介して直接接続されている。場合によっては、コンピューティングデバイス１０５Ａ〜１０５Ｄは、接続されている又はネットワーク１１０を介して接続されているプロセッサ間及び／又はプロセス間に存在しうる、プロセッサ間通信及び／又はプロセス間通信を用いるプロセッサ及び／又はプロセスになりうる。
【００３７】
コンピューティングデバイス１０５Ａ〜１０５Ｄは、別のシステム、デバイス、及び／又は、システム及び／又はデバイスの組み合わせと通信するため、一又は複数の通信（例えば、有線、無線、携帯電話、及び／又は光接続）を確立することができる任意のシステム、デバイス、及び／又は、システム及び／又はデバイスの組み合わせを含みうる。一実施例として、接続１１５Ａ〜１１５Ｅの各々は、コンピューティングデバイス１０５Ａ〜１０５Ｄ間の接続を促進するための、一又は複数の有線、無線、携帯電話、光、及び／又は他の接続を表しうる。コンピューティングデバイス１０５Ａ〜１０５Ｄは、非限定的な例として、サーバー、デスクトップサーバー、ウェブサーバー、クラウドベースサーバー、デスクトップコンピュータ、航空機コンピュータ、衛星コンピュータ、クライアントコンピュータ、ホストコンピュータ、ＰＯＳデバイス、コンピュータクラスタ、ノートブックコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、携帯電話（例えば、スマートフォン）、ＰＤＡ、タブレットなどを含みうる。一実施例では、コンピューティングデバイス１０５Ａ〜１０５Ｄのうちの任意の１つは、本書に記載のシステム、例えば、図３、図５、図６、図７Ａ〜図７Ｃ、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃ、図１０、及び図１５〜図１７に提示されている例示的なシステムを含みうる。一実施例では、コンピューティングデバイス１０５Ａ〜１０５Ｄのうちの任意の１つは、本書に記載のプロセス、例えば、図４、図１１〜図１４、及び図１８に提示されている例示的なプロセスを実行しうる。
【００３８】
接続１１５Ａ〜１１５Ｅは、データ（例えば、暗号化データ）の送信及び受信に利用されうる。場合によっては、接続１１５Ａ〜１１５Ｅは、通信したデータの暗号化及び復号化を促進するためのキー交換に利用されうる。例えば、コンピューティングデバイス１０５Ａと１０５Ｃとの間の安全な通信を促進するため、コンピューティングデバイス１０５Ａと１０５Ｃは、コンピューティングデバイス１０５Ａと１０５Ｃとの間で通信されるデータの暗号化と復号化を促進するため、キー交換を実行しうる。キー交換に関連する通信は接続１１５Ｅを介して、接続１１５Ａと１１５Ｃ及びネットワーク１１０を介して、及び／又は他の接続を介して存在しうる。
【００３９】
ネットワーク１１０は、コンピューティングデバイス１０５Ａ〜１０５Ｄに接続性を提供し、コンピューティングデバイス１０５Ａ〜１０５Ｄ間でデータ及び関連する情報（例えば、キー情報）の通信を可能にするため、全体的に又は部分的に連動して動作するネットワーク、或いは、個別のネットワークの任意の集合になりうる。例えば、コンピューティングデバイス１０５Ａ〜１０５Ｄが通信を行う際のネットワーク１１０は、非限定的な例として、インターネット、電話網、携帯電話網、ファイバーネットワーク、無線ネットワーク、クラウドベースネットワーク、ＰＯＳネットワーク、プライベートネットワーク（例えば、イントラネット）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、或いはこれらの組み合わせを含みうる。１つの事例では、通信は、セキュアソケットレイヤ（ＳＳＬ）又はトランスポートレイヤセキュリティ（ＴＬＳ）など、安全な通信プロトコルによって実現されうる。
【００４０】
一実施例では、コンピューティングデバイス１０５Ａ〜１０５Ｄのうちの一又は複数はクライアントデバイスであって、コンピューティングデバイス１０５Ａ〜１０５Ｄのうちの一又は複数はサーバーデバイス（例えば、ホストサーバー）でありうる。例えば、コンピューティングデバイス１０５Ａと１０５Ｂはクライアントデバイスであって、コンピューティングデバイス１０５Ｄはサーバーデバイスでありうる。この実施例では、コンピューティングデバイス１０５Ｃは、コンピューティングデバイス１０５Ａと１０５Ｂにサービス提供するネットワークリソースをホストしうる。ネットワークリソースは、ウェブベースサービス（例えば、ニュースウェブサイト）、クラウドベースサービス（例えば、データストレージサービス）、ＰＯＳサービス、アプリケーションサービス、及び／又は他のサービスを含みうる。ネットワーク１１０を介した通信は、クライアントツークライアント、クライアントツーサーバー、サーバーツークライアント、及び／又はサーバーツーサーバーになりうる。場合によっては、クライアントサーバーの階層的な関係はコンピューティングデバイス１０５Ａ〜１０５Ｄによって実装されうる。例えば、コンピューティングデバイス１０５Ｃは、コンピューティングデバイス１０５Ａにサービスを提供するためのサーバーデバイスであってよく、一方で、コンピューティングデバイス１０５Ｃは、コンピューティングデバイス１０５Ｄからサービスを受けるためのクライアントデバイスであってよい。別の実施例として、コンピューティングデバイス１０５Ｃは、１つのアプリケーション（例えば、アプリケーションの態様）を目的としたコンピューティングデバイス１０５Ｄのサーバーデバイスであってよく、また、別のアプリケーション（例えば、アプリケーションの別の態様）を目的としたコンピューティングデバイス１０５Ｄのクライアントデバイスであってよい。
【００４１】
前述は、２つがクライアントデバイスで２つがサーバーデバイスであるコンピューティングデバイス１０５Ａ〜１０５Ｄについて説明しているが、ネットワーク環境１００は、相互に及び／又はネットワーク１１０を介して通信を行う任意の数のコンピューティングデバイス（例えば、任意の数のクライアントデバイスと任意の数のサーバーデバイス）を含みうる。加えて、接続１１５Ａ〜１１５Ｅが非限定的な実施例として提供されている。コンピューティングデバイス１０５Ａ〜１０５Ｄに間には、より多くの、より少ない、及び／又は異なる接続が提供されうる。
【００４２】
図２は、データの暗号化／復号化及びデータ通信（例えば、送信、受信）が本開示の一又は複数の実施例にしたがって実装されうる、例示的なコンピューティングデバイス２００を示している。しかしながら、描かれている構成要素のすべてが必要なわけではなく、一又は複数の実施例は、図に示された追加の構成要素を含みうる。構成要素の配置及びタイプの変更は、本書に記載の特許請求の概念又は範囲を逸脱することなく、行われうる。追加の構成要素、異なる構成要素、及び／又はより少ない数の構成要素が提供されうる。一実施例では、コンピューティングデバイス２００は、図１のコンピューティングデバイス１０５Ａ〜１０５Ｄであってよく、これらを含んでよく、これらの一部であってよく、これらの任意の１つであってよい。一態様では、図２の破線はコンピューティングデバイス２００の筐体を表しうる。
【００４３】
コンピューティングデバイス２００は、処理回路２０５、通信回路２１０、一又は複数の出力デバイスインターフェース２１５、一又は複数の入力デバイスインターフェース２２０、メモリ２２５、電源２３０、他の構成要素２３５、及びバス２４０を含む。処理回路２０５は、メモリ２２５に保存されたマシン可読命令（例えば、ソフトウェア、ファームウェア、又は他の命令）を実行しうる。一実施例では、処理回路２０５は、図４、図１１〜図１４、及び図１８に提示された例示的なプロセスなど、本書に記載のプロセスを実施するための命令を実行しうる。処理回路２０５は、コンピューティングデバイス２００の一又は複数の論理回路（例えば、暗号化論理回路、復号化論理回路など）であってよく、これらを含んでよく、或いはこれらの一部であってよい。処理回路２０５は、一又は複数のマイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、フィールドプログラマブルシステムオンチップ（ＦＰＳＣ）、又は他のタイプのプログラマブルデバイス）、コーデック、及び／又は他の処理デバイスとして実装されうる。
【００４４】
通信回路２１０は、コンピューティングデバイス２００の様々な構成要素間の、並びに、コンピューティングデバイス２００と別のコンピューティングデバイスとの間の有線及び／又は無線の通信を取り扱い、管理し、或いは促進するように構成されうる。一実施例では、通信回路２１０は、無線通信回路（例えば、ＩＥＥＥ８０２．１１規格、Ｂｌｕｅｔｏｏｔｈ（商標）規格、ＺｉｇＢｅｅ（商標）規格、又は他の無線通信規格）、セルラー回路、又は他の適切な通信回路を含みうる。場合によっては、通信回路２１０は、独自の無線通信プロトコル及びインターフェースに対して構成されうる。通信回路２１０は、無線通信用アンテナを含んでよく、或いは無線通信用アンテナと通信してもよい。したがって、一実施例では、通信回路２１０は、ハンドヘルドデバイス、ベースステーション、無線ルータ、ハブ、又は他の無線ネットワーキングデバイスとの無線リンクを確立することによって、無線通信を取り扱い、管理し、或いは促進しうる。
【００４５】
通信回路２１０は、イーサネットインターフェース、電力線モデム、デジタル加入者線（ＤＳＬ）モデム、公衆交換電話網（ＰＳＴＮ）モデム、ケーブルモデム、及び／又は有線通信のための他の適切な構成要素など、有線ネットワークとインターフェースをとるように構成されうる。代替的に又は追加的に、通信回路２１０は独自の有線通信プロトコルとインターフェースを支持しうる。通信回路２１０は、有線通信を目的とした有線リンク（例えば、ネットワークルータ、スイッチ、ハブ、又は他のネットワークデバイスを介して）によって通信するように構成されうる。有線リンクは、電力線ケーブル、同軸ケーブル、光ファイバケーブル、或いは、対応する有線ネットワーク技術をサポートする他のケーブル又はワイヤによって実装されうる。
【００４６】
出力デバイスインターフェース２１５は、コンピューティングデバイス２００を一又は複数の出力デバイスに連結しうる。出力デバイスインターフェース２１５は、グラフィクス及び／又はオーディオドライバカード、グラフィクス及び／又はオーディオドライバチップ、及び／又はグラフィクス及び／又はオーディオドライバプロセッサを含みうる。出力デバイスは、コンピューティングデバイス２００が出力情報をユーザーに提供することを可能にしうる。例えば、出力デバイスは一又は複数のディスプレイデバイスを含みうる。ディスプレイデバイスは、コンピューティングデバイス２００上で動作するウェブブラウザアプリケーション内のウェブコンテンツなどの情報をユーザーに表示するために利用されうる。一実施例として、このようなウェブコンテンツはサーバーデバイスによって暗号化され、コンピューティングデバイス２００に送信されうる。コンピューティングデバイス２００は暗号化されたウェブコンテンツを復号化し、ユーザーが利用できるように復号化されたウェブコンテンツをディスプレイデバイス上に表示する。
【００４７】
入力デバイスインターフェース２２０は、コンピューティングデバイス２００を一又は複数の入力デバイスに結合しうる。入力デバイス２２７は、ユーザーがデータ及びコマンドをコンピューティングデバイス２００に提供することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロフォン、カメラ（スチールカメラ又はビデオカメラ）、音声認識システム、キーボード（例えば、物理的なキーボード又は仮想キーボード）、カーソル制御デバイス（例えば、マウス）、タッチスクリーン、及び／又はユーザー入力をコンピューティングデバイス２００に提供するための他のデバイスを含みうる。これに関連して、ユーザー入力は、音響（例えば、音声）、視覚、及び／又は触覚などの任意の形態で受信されうる。場合によっては、入力デバイスは、タッチスクリーンディスプレイなどのように、ディスプレイの一部と一体化されてもよく、また、ディスプレイの一部であってもよい。
【００４８】
メモリ２２５は、コンピューティングデバイス２００の演算を促進するための情報を保存するために利用されうる。非限定的な実施例として、メモリ２２５は、読取専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）などの不揮発性メモリを含みうる。メモリ２２５は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）などの揮発性メモリを含みうる。メモリ２２５は、コンピューティングデバイス２００の様々な構成要素（例えば、処理回路２０５）によって実行される命令などの情報、真性ランダムビットストリームと暗号化されたデータなど、（例えば、通信回路２１０によって）送信されるようにバッファされた情報、及び／又は他の情報を保存しうる。
【００４９】
メモリ２２５は、オペレーティングシステム（ＯＳ）２４５、ユーザーアプリケーション２５０、及び／又は暗号化／復号化アプリケーション２５５など、様々なソフトウェアパッケージを保存しうる。ＯＳ２４５は、コンピューティングデバイス２００のリソース（例えば、ハードウェアリソース）を管理し、他のプログラム（例えば、ユーザーアプリケーション２５０及び／又は暗号化／復号化アプリケーション２５５）に共通のサービスを提供する任意のソフトウェアであってよい。ユーザーアプリケーション２５０は、非限定的な実施例として、ウェブブラウジングアプリケーション、データベースアプリケーション、ワードプロセシングアプリケーション、電子メールアプリケーション、ＰＯＳアプリケーション、及び／又は他のアプリケーションを含みうる。暗号化／復号化アプリケーション２５５は、非限定的な実施例として、データの暗号化と復号化、キーマテリアルの生成、ランダムビットストリーム（例えば、真性ランダムビットストリーム）の生成、及び／又は、データの暗号化／復号化とデータ通信に概して関連する他のプロセスを促進する命令を含みうる。
【００５０】
一実施例では、ＯＳ２４５、ユーザーアプリケーション２５０、暗号化／復号化アプリケーション２５５、及び／又は他のアプリケーションに関連する命令は、図４、図１１〜図１４、及び図１８など、本書に記載のステップ及び／又は操作を実装するため、処理回路２０５によって実行されうる。ユーザーアプリケーション２５０及び／又は暗号化／復号化アプリケーション２５５は、内部に具現化されたマシン可読プログラムを有する一又は複数のマシン可読媒体内で具現化されたコンピュータプログラム製品の形態を取りうる。場合によっては、命令は、別のマシン可読媒体から、或いは、別のシステム及び／又はデバイスからメモリ２２５へ、例えば通信回路２１０を経由して読み込まれうる。代替的に及び／又は追加的に、配線で接続された電気回路は、本書に記載のステップ及び／又は操作を実装するため、ソフトウェア命令の代わりに、或いはソフトウェア命令と組み合わせて使用されうる。本書で使用されているように、マシン可読媒体という用語は、実行用の処理回路２０５に命令を提供することに関与する任意の媒体を意味する。一又は複数のマシン可読媒体の任意の組み合わせが利用されうる。一実施例として、マシン可読媒体は、非一過性マシン可読記憶媒体（例えば、メモリ２２５）などのマシン可読記憶媒体を含みうる。
【００５１】
一又は複数の実施例では、安全な通信は、データの暗号化及び復号化のためのキーマテリアルを使用することによって促進されうる。幾つかの態様では、キーマテリアルは、暗号化キー及び一又は複数の真性ランダムビットストリームに基づいて生成された関連する復号化キーを含む。場合によっては、真性ランダムビットストリームの各ビットは、１又は０になる絶対的に等しい確率を有する。真性ランダムビットの高速生成は、図１のネットワーク１１０などのネットワークを通って流れる大量の情報に対して、安全な通信を促進しうる。
【００５２】
電源２３０は、コンピューティングデバイス２００の様々な構成要素に電力を供給することなどによって、コンピューティングデバイス２００を操作するための電力を供給しうる。電源２３０は、一又は複数のバッテリ（例えば、充電式バッテリ、非充電式バッテリ）であってよく、或いは含んでもよい。代替的に又は追加的に、電源２３０は一又は複数の太陽電池であってよく、或いは一又は複数の太陽電池を含んでもよい。太陽電池は、コンピューティングデバイス２００を操作するため、及び／又は一又は複数の充電式バッテリを充電するため、電力を供給するように利用されうる。加えて、コンピューティングデバイス２００は他の構成要素２３５を含みうる。非限定的な実施例として、他の構成要素２３５は、様々なアプリケーションに望ましいため、コンピューティングデバイス２００の任意の機能の実装に使用されうる。一実施例として、コンピューティングデバイス２００はレーダー画像アプリケーション用の構成要素を含み、レーダー画像アプリケーションによって収集されたデータは（例えば、処理回路２０５及び通信回路２１０を経由して）暗号化され送信される。バス２４０は、コンピューティングデバイス２００の様々な構成要素間のデータ通信を促進するために利用されうる。
【００５３】
図３は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム３００のブロック図を示す。システム３００は、真性ランダムビット発生源３０５及び３１０、メモリ３１５、３２５、及び３４０、論理回路３３５、並びにクロック回路３４５を含む。真性ランダムビット発生源３０５及び３１０はそれぞれ、次いでメモリ３１５及び３２５に保存される真性ランダムビットストリームを生成しうる。図３に示したように、真性ランダムビット発生源３０５は、生成した真性ランダムビットストリームをメモリ３１５のメモリセル３２０Ａ〜３２０Ｈに提供し、真性ランダムビット発生源３１０は、生成した真性ランダムビットストリームをメモリ３２５のメモリセル３３０Ａ〜３３０Ｈに提供しうる。論理回路３３５は、メモリセル３２０Ａ〜３２０Ｈ及びメモリセル３３０Ａ〜３３０Ｈから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて、真性ランダムビットストリームを生成しうる。一態様では、メモリ３１５、３２５、及び／又は３４０はシフトレジスタになりうる。メモリセル３２０Ａ〜３２０Ｈ及びメモリセル３３０Ａ〜３３０Ｈはそれぞれ、真性ランダムビットストリーム生成を促進するように割り当てられたメモリ３１５及び３２５の一部を表しうる。メモリ３１５及び３２５は、他の目的に使用される他のメモリセル（図３には示していない）を含みうる。
【００５４】
一実施例では、真性ランダムビットストリームを生成するため、論理回路３３５は、メモリセル３２０Ａ〜３２０Ｈ及びメモリセル３３０Ａ〜３３０Ｈに保存された真性ランダムビットストリーム上でビットワイズ演算を実行しうる。１つの事例では、真性ランダムビットストリームの各ビットを生成するため、論理回路３３５は、メモリセル３２０Ａ〜３２０Ｈに保存された１ビットを１つのオペランドとして、また、メモリセル３３０Ａ〜３３０Ｈに保存された１ビットを別のオペランドとして取得し、これら２つのオペランドに対してビットワイズ演算を実行しうる。このような事例の一実施例として、論理回路３３５は、メモリセル３２０Ａに保存された真性ランダムビット及びメモリセル３３０Ａに保存された真性ランダムビットでのビットワイズ演算、メモリセル３２０Ｂに保存された真性ランダムビット及びメモリセル３３０Ｂに保存された真性ランダムビットでのビットワイズ演算などを実行しうる。
【００５５】
一態様では、ランダムビット発生源３０５及び３１０は、（例えば、各ビットは０又は１である絶対的な確率５０％を有する）偏りのない真のランダムビットを生成する真のランダム発生回路でありうる。この実施例の幾つかの場合には、真性ランダムビット発生源３０５及び３１０は、量子力学プロセスに基づいて真のランダムビットを生成しうる。一態様では、論理回路３３５は、真性ランダムビット発生源３０５及び３１０から受信した真の絶対的ランダムビットを結合して、偏りのない真のランダムビットストリームである別の真性ランダムビットストリームを生成しうる。場合によっては、論理回路３３５は、真性ランダムビット発生源３０５及び３１０に関連するエントロピーを維持する真性ランダムビット発生源３０５及び３１０の真性ランダムビットストリームで、ビットワイズ演算を実行しうる。例えば、ビットワイズ演算は、２つの関数項が同じ論理値を有するときには真（例えば、１）の間数値を、２つの関数項が異なるときには偽（例えば、０）の間数値をもたらす論理的な等価性を有しうる。ビットワイズ演算は、例えば、以下の表１に示した真理値表を有するＸＯＲ演算（
2019082676.tif 000003
で表される）になりうる。別の実施例として、ビットワイズ演算は、以下の表２に示した真理値表を有するＸＮＯＲ演算になりうる。表１及び表２に示したように、これらのビットワイズ演算は、結果の半分が０で、半分の結果が１となる真理値表を有する。
2019082676.tif 000004
【００５６】
図３に示したように、論理回路３３５は、送信用の生成した真性ランダムビットストリームを提供しうる。場合によっては、真性ランダムビット発生源３０５及び３１０は、論理回路３３５による処理を促進するため、（例えば、ビット数又はバイト数が）同じ長さの真性ランダムビットストリームを生成しうる。真性ランダムビットストリームは図１で８の長さを有し、論理回路３３５はメモリ３１５及び３２５の各々から８ビットを繰り返し読み出すが、所定の長さは任意のビット数になりうる。これに関連して、真性ランダムビットは、１ビットずつ（例えば、各ビットが生成されるたびに）、或いはひとまとまりのビットで（例えば、各ビットが生成された後にバッファされ、ひとまとまりにして）、メモリ３１５、３２５、及び／又は３４０に提供されうる。例えば、ビットごとの場合には（例えば、所定の長さが１）、論理回路３３５はメモリ３１５及び３２５の各々から１ビットを読み出し、ビットペアにビットワイズ演算を実行して真性ランダムビットを取得し、その結果をメモリ３４０に提供しうる。この場合、ビットストリームは連続ビットストリームとしてメモリ３４０に提供されうる。メモリ３１５、３２５、及び／又は３４０は、図３に示したものとは異なる数のメモリセルを有しうることに留意されたい。
【００５７】
場合によっては、真性ランダムビットストリームのビット数は、所望のセキュリティレベルに基づきうる。所望のセキュリティレベルに応じて、真性ランダムビットストリームのビット数が８ビット、１２８ビット、２５６ビット、又は５１２ビット、或いは一般的に任意の特定のビット数になりうる。一実施例として、４８ビットの真性ランダムビットストリームが望まれるときには、４８ビットの真性ランダムビットストリームは、真性ランダムビット発生源３０５によって生成された８ビット真性ランダムビットストリームの第１及び第２の組と、真性ランダムビット発生源３１０によって生成された８ビット真性ランダムビットストリームの第１及び第２の組と、真性ランダムビット発生源３０５及び３１０の、８ビット真性ランダムビットストリームの第１の組に基づいて、論理回路３３５によって生成された８ビット真性ランダムビットストリームの１つの組と、真性ランダムビット発生源３０５及び３１０の８ビット真性ランダムビットストリームの第２の組に基づいて、論理回路３３５によって生成された８ビット真性ランダムビットストリームの別の組との組み合わせ（例えば、連結）になりうる。別の実施例として、４ビットの真性ランダムビットストリームが望まれるときには、メモリ３１５、３２５、及び／又は３４０に保存されたビットの中から、サンプリングによって４ビットが取得されてもよい。このように、真性ランダムビット発生器３０５及び／又は３１０、メモリ３１５、３２５、及び／又は３４０、及び／又は論理回路３３５は、１回の反復（例えば、メモリ３１５、３２５、及び３４０の各々の８ビット真性ランダムビットストリームの１つの組）又は複数回の反復での所望のセキュリティレベルに必要なビット数を生成しうる。
【００５８】
クロック回路３４５は、真性ランダムビット発生源３０５及び３１０の動作と論理回路３３５を同期させるクロック信号を生成しうる。場合によっては、メモリ３１５、３２５、及び／又は３４０の動作はまた、クロック回路３４５のクロック信号を用いて同期されうる。例えば、メモリ３１５、３２５、及び／又は３４０がシフトレジスタであるときには、クロック信号はシフトレジスタのシフト動作を制御しうる。幾つかの態様では、論理回路３３５は、真性ランダムビット発生源３０５及び３１０によって生成されたランダムビットストリーム（例えば、真のランダムビットストリーム）に、複雑度が低く高速のビットワイズ演算を実行することによって、真性ランダムビットストリームの高速生成を促進し、これによって、真性ランダムビット発生源３０５及び３１０がすべての真性ランダムビットストリームを生成する場合と比較して、ランダムビットストリーム（例えば、真のランダムビットストリーム）が生成される速度を高めることができる。一実施例では、真性ランダムビットストリームはキーマテリアルとして利用されてよく、或いはキーマテリアルになるように導かれてもよい。
【００５９】
一実施例として、システム３００は、コンピューティングデバイス２００内に実装されうる。場合によっては、真性ランダムビット発生源３０５と３１０及び／又は論理回路３３５は、処理回路２０５の一部として実装されてよく、及び／又はメモリ３１５、３２５、及び／又は３４０は図２のメモリ２２５の一部になりうる。別の実施例では、システム３００はコンピューティングデバイス２００に連結されてよく、また、（例えば、キーマテリアルを生成するための）コンピューティングデバイス２００によって利用されることになる生成された真性ランダムビットストリームを提供しうる。
【００６０】
図４は、本開示の一又は複数の実施例による絶対的真性ランダムビットストリームを生成するための、例示的なプロセス４００のフロー図を示す。説明のため、本書では例示的なプロセス４００が、図３のシステム３００を参照して説明されているが、例示的なプロセス４００は図３のシステム３００に限定されない。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。
【００６１】
ブロック４０５では、第１の真性ランダムビットストリームはメモリ３１５に受信される。ブロック４１０では、第２の真性ランダムビットストリームはメモリ３２５に受信される。第１及び第２の真性ランダムビットストリームはそれぞれ、真性ランダムビット発生源３０５及び３１０によって提供されうる。ブロック４１５では、論理回路３３５は、第１及び第２の真性ランダムビットストリームを結合するビットワイズ演算を実行することによって、第３の真性ランダムビットストリームを生成する。一態様では、第３の真性ランダムビットストリームの各ビットは、第１の真性ランダムビットストリームのビットであるオペランドと、第２の真性ランダムビットストリームのビットである別のオペランドとで、ビットワイズ演算を実行することによって得られる。一実施例として、メモリ３４０に保存される（例えば、バッファされる）真性ランダムビットｂＳ３，０を生成するため、メモリセル３２０Ａ内の真性ランダムビットｂＳ１，０は、メモリセル３３０Ａ内の真性ランダムビットｂＳ２，０と結合されうる。これに関連して、ビットワイズ演算は、真性ランダムビット発生源３０５及び３１０によって生成された真性ランダムビットストリームのエントロピーを保存しうる。例えば、ビットワイズ演算は、ＸＯＲ演算又はＸＮＯＲ演算など、論理的等価性を有しうる。
【００６２】
ブロック４２０では、第３の真性ランダムビットストリームがメモリ３４０に保存される。ブロック４２５では、送信のため、第３の真性ランダムビットストリームが提供される。第３の真性ランダムビットストリームは、キーマテリアル（例えば、暗号化キー）として使用するため、或いはキーマテリアルの導出で使用するため、処理回路２０５に提供されうる。例えば、第３の真性ランダムビットストリームは、（例えば、送信されるデータを暗号化するためのキーマテリアルとして使用するための）真性ランダムビットストリームへの（例えば、処理回路２０５からの）要求に応答して生成され、図２の処理回路２０５に送信されうる。一実施例では、第１、第２、及び第３のランダムビットストリームは、絶対的に真で偏りのないランダムビットストリームになりうる。１つの事例では、第１、第２、及び第３のランダムビットストリームは同じ長さを有しうる。
【００６３】
図５は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム５００のブロック図を示す。システム５００は、図３に示した真性ランダムビット発生源３０５、メモリ３１５、及びクロック回路３４５を含む。システム５００はまた、論理回路５０５とメモリ５１０を含む。真性ランダムビット発生源３０５は、メモリ３１５に保存される真性ランダムビットストリームを生成しうる。論理回路５０５は、メモリ３１５のメモリセル３２０Ａ〜３２０Ｈから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて新しい真性ランダムビットストリームを生成する。一態様では、論理回路５０５は、新しい真性ランダムビットストリームの各ビットを生成するため、読み出した真性ランダムビットストリームの２つ以上のビットにビットワイズ演算（例えば、ＸＯＲ演算）を実行しうる。論理回路５０５は、生成した真性ランダムビットストリームをメモリ５１０に保存しうる。一実施例では、メモリ３１５に提供される真性ランダムビットストリーム、並びに、論理回路５０５によって生成される真性ランダムビットストリームは真の偏りのないランダムビットストリームになりうる。一実施例として、システム５００は、コンピューティングデバイス２００内に実装されうる。場合によっては、真性ランダムビット発生源３０５及び／又は論理回路５０５は処理回路２０５の一部として実装され、及び／又はメモリ５１０は図２のメモリ２２５の一部になりうる。別の実施例では、システム５００はコンピューティングデバイス２００に連結されてよく、また、コンピューティングデバイス２００によって利用されるように生成された真性ランダムビットストリームを提供してもよい。
【００６４】
図６は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム６００のブロック図を示す。システム６００は、真性ランダムビット発生源３０５、メモリ３１５、クロック回路３４５、及び論理回路６０５を含む。論理回路６０５は、メモリ３１５のメモリセル３２０Ａ〜３２０Ｈから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて、真性ランダムビットｂＳ４，６、ｂＳ４，５、ｂＳ４，４、ｂＳ４，３、ｂＳ４，２、ｂＳ４，１、及びｂＳ４，０を生成しうる。論理回路６０５は、メモリに保存されたビットペア間でビットワイズ演算を実行することによって、各真性ランダムビットを生成しうる。これに関連して、論理回路６０５は、メモリ３１５からビットペアをそれぞれ読み出す結合器６１０Ａ〜６１０Ｇを含みうる。場合によっては、結合器６１０Ａ〜６１０Ｇは、隣接している、隣接しているものとして参照される、或いは隣接していると見なされるメモリセルからビットペアを読み出しうる。例えば、図６では、メモリセル３２０Ａは、メモリセル３２０Ｂに隣接していると見なされ、メモリセル３２０Ｂは、メモリセル３２０Ａ及び３２０Ｃなどに隣接していると見なされうる。場合によっては、結合器６１０Ａ〜６１０Ｇは、ＸＯＲ演算又はＸＮＯＲ演算など、論理的な等価性を有するビットワイズ演算を実装しうる。
【００６５】
一実施例では、クロック回路３４５は、真性ランダムビット発生源３０５、メモリ３１５、及び論理回路６０５の同期化を促進するため、クロック信号を生成する。論理回路６０５は、図５の論理回路５０５であってよく、論理回路５０５を含んでもよく、或いは論理回路５０５の一部であってもよい。論理回路６０５によって生成されるこれらの真性ランダムビットは、（例えば、メモリ５１０などのメモリに）保存するため、及び／又は送信するために提供されうる。
【００６６】
図６は、メモリ３１５の各ビットペアに対して１つの結合器を示しているが、システム６００は、より少ない結合器、より多くの結合器、及び／又は異なる配置の結合器を含みうる。場合によっては、メモリ３１５のビットペアにビットワイズ演算を実行するため、１つの結合器が利用されてもよい。例えば、１クロックサイクルで、１つの結合器は、ビットｂＳ１，１及びｂＳ１，０に基づいて、ビットｂＳ４，０を生成し、次のクロックサイクルで、１つの結合器は、ビットｂＳ１，２及びｂＳ１，１に基づいて、ビットｂＳ４，１を生成し、その後の各クロックサイクルで同様に生成しうる。場合によっては、複数のビットが１つのクロックサイクルで生成されうるように、図６に示したように、２つ以上の結合器は並行して動作されてもよい。２つ以上の結合器を使用することにより、結合器が１つの場合よりも高いレートの真性ランダムビット生成が可能になるが、追加のチップ資産を利用してもよく、及び／又は、結合器が１つの場合よりも複雑な処理を追加してもよい。
【００６７】
幾つかの態様では、ビットｂＳ４，６の後にビットを生成するため、真性ランダムビットはメモリ３１５に提供されうる。例えば、論理回路６０５は、メモリ３１５に提供される真性ランダムビットｂＳ１，７及び真性ランダムビットｂＳ１，８（図６には示していない）に基づいて、次の真性ランダムビットｂＳ４，７を生成しうる。場合によっては、真性ランダムビットの生成に使用するため、メモリ３１５がメモリセル３２０Ａ〜３２０Ｈのみに割り当てられているときなどには、真性ランダムビットｂＳ１，８を提供することは、メモリセル３２０Ａ〜３２０Ｈのうちの１つに現在保存されているビットを除去することに関連しうる。メモリ３１５に提供される新しいビット（例えば、ｂＳ１，８）は、メモリ３１５から除去されることになる、古い真性ランダムビット（例えば、ｂＳ１，０）をメモリ３１５にもたらしうる。これに関連して、メモリ３１５は、各クロックサイクルで、１つの新しい真性ランダムビットを受信し、１つの古い真性ランダムビットを除去しうる。一実施例として、一態様では、メモリ３１５は、メモリセル３２０Ａに保存されているビットｂＳ１，０をシフトアウトし、ビットｂＳ１，７からｂＳ１，１までをシフトオーバー（例えば、右シフト）するシフトレジスタとして実装されてもよく、その件、ｂＳ１，７はメモリセル３２０Ｈからメモリセル３２０Ｇへ動かされ、ビットｂＳ１，１はメモリセル３２０Ｂからメモリセル３２０Ａへ動かされるなどし、ビットｂＳ１，８はメモリセル３２０Ｈにシフトされる。シフトレジスタ実装の実施例は、図７Ａ〜図７Ｃに関連して説明される。
【００６８】
図７Ａ〜図７Ｃは、本開示の一又は複数の実施例による順次クロックサイクルで真性ランダムビットを生成するためのシステム７００のブロック図を示す。システム７００は、真性ランダムビット発生源３０５、クロック回路３４５、メモリ７０５、及び論理回路７１５を含む。メモリ７０５はメモリセル７１０Ａ〜７１０Ｈを含む。一実施例では、図７Ａ〜図７Ｃのシステム７００は、図６のシステム６００のシフトレジスタの実装であってよく、或いはシステム６００のシフトレジスタの実装とみなされてもよい。例えば、メモリ７０５のメモリセル７１０Ａ〜７１０Ｈはそれぞれ、メモリ３１５のメモリセル３２０Ａ〜３２０Ｈに対応しうる。クロックサイクルは、クロック回路３４５によって定義されうる。
【００６９】
図７Ａは、クロックサイクル１の間の真性ランダムビットの生成を示している。図７Ａでは、メモリセル７１０Ａ、７１０Ｂ、…、７１０Ｈはそれぞれ、ビットｂＳ１，０、ｂＳ１，１、…、ｂＳ１，７を含む。論理回路７１５はメモリセル７１０Ａ及び７１０Ｂからそれぞれ、ビットｂＳ１，０及びｂＳ１，１を受信し、ビットワイズ演算（例えば、ＸＯＲ演算又はＸＮＯＲ演算）を実施して、ビットｂＳ４，０を生成する。メモリ７０５は次に、メモリセル７１０ＡのビットｂＳ１，０がシフトアウトされ、メモリセル７１０ＢのビットｂＳ１，１が右シフトされてメモリセル７１０Ａに入り、メモリセル７１０ＨのビットｂＳ１，７が右シフトされてメモリセル７１０Ｇに入るなどのように、シフトされうる。メモリ７０５は、メモリセル７１０Ｈに、真性ランダムビット発生源３０５からの新しい真性ランダムビットｂＳ１，８を受信しうる。クロックサイクル１の終了時には、メモリセル７１０Ａ、７１０Ｂ、…、７１０Ｈはそれぞれ、ビットｂＳ１，１、ｂＳ１，２、…、ｂＳ１，８を含む。一態様では、真性ランダムビット発生源３０５の真性ランダムビットストリームのビットペアのこのような組み合わせは、真性ランダムビットストリームのそれ自身とのインターミキシングと称されることがある。
【００７０】
図７Ｂは、クロックサイクル２の間の真性ランダムビットの生成を示している。論理回路７１５は、メモリセル７１０Ａ及び７１０ＢからそれぞれビットｂＳ１，１及びｂＳ１，２を受信し、ビットワイズ演算を実行し、ビットｂＳ４，１を生成しうる。メモリ７０５は次いで、ビットｂＳ１，１をメモリセル７１０Ａからシフトアウトし、ビットｂＳ１，２からｂＳ１，８までを右シフトし、真性ランダムビット発生源３０５から受信した新しいビットｂＳ１，９をシフトしてメモリセル７１０Ｈに入れるように、シフトされうる。図７Ｃは、クロックサイクル３の間の真性ランダムビットの生成を示している。論理回路７１５は、メモリセル７１０Ａ及び７１０ＢからそれぞれビットｂＳ１，２及びｂＳ１，３を受信し、ビットワイズ演算を実行し、ビットｂＳ４，２を生成しうる。その後のクロックサイクルは、キーマテリアルの生成に使用するなどの目的で、保存及び／又は送信される真性ランダムビットストリームの一部となりうる、その後のビットを生成しうる。一態様では、ランダムビット発生源３０５は、偏りのない真のランダムビットストリームを生成しうる。一態様では、論理的等価性（例えば、ＸＯＲ又はＸＮＯＲ真理値表）を有するビットワイズ演算がインターミキシングに使用されるときには、絶対的に偏りのない真のランダムビットストリームのそれ自身とのインターミキシングは、別の絶対的に偏りのない真のランダムビットストリームを生成する。
【００７１】
図８Ａ〜図８Ｃは、本開示の一又は複数の実施例による順次クロックサイクルで真性ランダムビットを生成するためのシステム８００のブロック図を示す。図７Ａ〜図７Ｃの説明は一般的に、本書に記載の差異の実施例と共に、図８Ａ〜図８Ｃに適用される。図８Ａ〜図８Ｃでは、図７Ａ〜図７Ｃの論理回路７１５によって実行されるように、各クロックサイクルでメモリセル７１０Ａ及び７１０Ｂに保存されたビットを受信及び処理するのではなく、論理回路８０５は各クロックサイクルに、メモリセル７１０Ａ及び７１０Ｃに保存されたビットを受信し処理する。
【００７２】
図８Ａは、クロックサイクル１の間の真性ランダムビットの生成を示している。図８Ａでは、論理回路８０５は、メモリセル７１０Ａ及び７１０Ｃからそれぞれ、ビットｂＳ１，０及びｂＳ１，２を受信し、ビットワイズ演算（例えば、ＸＯＲ演算）を実行してビットｂＳ５，０を生成する。メモリ７０５は次に、メモリセル７１０ＡのビットｂＳ１，０がシフトアウトされ、メモリセル７１０ＢのビットｂＳ１，１が右シフトされてメモリセル７１０Ａに入り、メモリセル７１０ＨのビットｂＳ１，７が右シフトされてメモリセル７１０Ｇに入るなどのように、シフトされうる。メモリ７０５は、メモリセル７１０Ｈに、真性ランダムビット発生源３０５からの新しい真性ランダムビットｂＳ１，８を受信しうる。クロックサイクル１の終了時には、メモリセル７１０Ａ、７１０Ｂ、…、７１０Ｈはそれぞれ、ビットｂＳ１，１、ｂＳ１，２、…、ｂＳ１，８を含む。
【００７３】
図８Ｂは、クロックサイクル２の間の真性ランダムビットの生成を示している。論理回路８０５は、メモリセル７１０Ａ及び７１０ＢからそれぞれビットｂＳ１，１及びｂＳ１，３を受信し、ビットワイズ演算を実行し、ビットｂＳ５，１を生成しうる。メモリ７０５は次いで、ビットｂＳ１，１をメモリセル７１０Ａからシフトアウトし、ビットｂＳ１，２からｂＳ１，８までを右シフトし、真性ランダムビット発生源３０５から受信した新しいビットｂＳ１，９をシフトしてメモリセル７１０Ｈに入れるように、シフトされうる。図８Ｃは、クロックサイクル３の間の真性ランダムビットの生成を示している。論理回路８０５は、メモリセル７１０Ａ及び７１０ＣからそれぞれビットｂＳ１，２及びｂＳ１，４を受信し、ビットワイズ演算を実行し、ビットｂＳ５，２を生成しうる。その後のクロックサイクルはその後のビットを生成する。
【００７４】
図７Ａ〜図７Ｃ及び図８Ａ〜図８Ｃに対してクロックサイクルはそれぞれ、クロックサイクル１、２、及び３と称されるが、これらのインデックス（例えば、１、２、３）は、これらのクロックサイクルが時間的に隣接したクロックサイクルであることを示すために便宜上利用されている。これに関連して、クロックサイクル１以前に発生したクロックサイクルがありうる。システム７００及び８００は、真性ランダムビット発生源３０５の真性ランダムビットストリームが、異なる点（例えば、メモリセル７１０Ａと７１０Ｂはシステム７００で混ざり合い、メモリセル７１０Ａと７１０Ｃはシステム８００で混ざり合う）で、それ自身とインターミックスされうるように、並行に処理されうる。一態様では、一又は複数の論理回路は、メモリセル７１０Ａ〜７１０Ｈの任意のペアに保存されたビットを結合しうる。このような並列のインターミキシングは、より高いレートの真性ランダムビットストリーム生成を促進しうる。
【００７５】
図９Ａ〜図９Ｃは、本開示の一又は複数の実施例による順次クロックサイクルに対して、真性ランダムビットストリームを生成するためのシステム９００のブロック図を示している。図７Ａ〜図７Ｃ、及び図８Ａ〜図８Ｃの説明は概して、本書に記載の差異の例と共に、図９Ａ〜図９Ｃに当てはまる。システム９００は、真性ランダムビット発生源３０５及びメモリセル９１０Ａ〜９１０Ｈを含む。一実施例では、メモリセル９１０Ａ〜９１０Ｈは、メモリ３１５の一部になりうる。場合によっては、メモリセル９１０Ａ〜９１０Ｈは、シフトレジスタの一部になりうる。図９Ａ〜図９Ｃでは、メモリセル９１０Ａからメモリセル９１０Ｂ〜９１０Ｈの各々への接続９１５は、メモリセル９１０Ａに保存されたランダムビットがメモリセル９１０Ｂ〜９１０Ｈに保存されたランダムビットに結合されることを簡潔に示している。この結合は論理回路によって実行されてよく、ＸＯＲ演算又はＸＮＯＲ演算を含みうる。例えば、論理回路は、各ビットペアを受信し、ビットペアを結合する一又は複数の結合器を含みうる。
【００７６】
図９Ａは、クロックサイクル１の間のランダムビットストリームの生成を示している。図９Ａでは、メモリセル９１０Ａ、９１０Ｂ、…、９１０Ｈはそれぞれ、ビットｂＳ１，０、ｂＳ１，１、…、ｂＳ１，７を含む。ビットｂＳ１，０は、ｂＳ１，１、ｂＳ１，２、ｂＳ１，３、ｂＳ１，４、ｂＳ１，５、ｂＳ１，６、及びｂＳ１，７の各々と結合され、列９２０に示したように、ビットｂＳ４，０、ｂＳ５，０、ｂＳ６，０、ｂＳ７，０、ｂＳ８，０、ｂＳ９，０、及びｂＳ１０，０をそれぞれ生成しうる。一態様では、メモリセル９１０Ａ〜９１０Ｈは、シフトレジスタによって実装されうる。ビットワイズ演算が実行された後、シフトレジスタは、メモリセル９１０ＡでビットｂＳ１，０がシフトアウトされ、残りのビットは右シフトされ、新しいビット（例えば、真性ランダムビット）ｂＳ１，８が、真性ランダムビット発生源３０５からメモリセル９１０Ｈに提供されるように、シフトされる。別の態様では、クロックサイクル２で、真性ランダムビットｂＳ１，１が真性ランダムビットｂＳ１，２、ｂＳ１，３、ｂＳ１，４、ｂＳ１，５、ｂＳ１，６、ｂＳ１，７、及びｂＳ１，８と結合されるように、シフトレジスタではなく、メモリ参照が適宜調整されうる。クロックサイクル１の終了時には、メモリセル９１０Ａ、９１０Ｂ、…、９１０Ｈはそれぞれ、ビットｂＳ１，１、ｂＳ１，２、…、ｂＳ１，８を含む。
【００７７】
図９Ｂは、クロックサイクル２の間の真性ランダムビットストリームの生成を示している。ビットｂＳ１，１は、真性ランダムビットｂＳ１，２、ｂＳ１，３、ｂＳ１，４、ｂＳ１，５、ｂＳ１，６、ｂＳ１，７、及びｂＳ１，８と結合され、列９２５に示したように、真性ランダムビットｂＳ４，１、ｂＳ５，１、ｂＳ６，１、ｂＳ７，１、ｂＳ８，１、ｂＳ９，１、及びｂＳ１０，１をそれぞれ生成しうる。図９Ｃは、クロックサイクル７の間の真性ランダムビットの生成を示している。ビットｂＳ１，６は、ｂＳ１，７、ｂＳ１，８、ｂＳ１，９、ｂＳ１，１０、ｂＳ１，１１、ｂＳ１，１２、及びｂＳ１，１３の各々と結合され、列９３０に示したように、ビットｂＳ４，６、ｂＳ５，６、ｂＳ６，６、ｂＳ７，６、ｂＳ８，６、ｂＳ９，６、及びｂＳ１０，６をそれぞれ生成しうる。
【００７８】
図９Ｄは、本開示の一又は複数の実施例による、順次クロックサイクルでの真性ランダムビットの生成を示す。これに関連して、図９Ｄは、クロックサイクル１、２、及び７に対してそれぞれ、介在するクロックサイクルに関連する列と共に、図９Ａ、図９Ｂ、及び図９Ｃの列９２０、９２５、及び９３０を含む行列９３５を示す。図９Ａ〜図９Ｄに示したように、真性ランダムビット発生源３０５によって生成された１４個の真性ランダムビットｂＳ１，０〜ｂＳ１，１３は、７個の７ビット真性ランダムビットストリームＢ１〜Ｂ７の生成に使用される。この実施例では、真性ランダムビット発生源３０５によって生成された２組の７個の真性ランダムビット（例えば、ｂＳ１，０〜ｂＳ１，６及びｂＳ１，７〜ｂＳ１，１３）は、９個の７ビット真性ランダムビットストリーム（例えば、Ｂ１〜Ｂ７、更にｂＳ１，０〜ｂＳ１，６、及びｂＳ１，７〜ｂＳ１，１３）を提供する。
【００７９】
場合によっては、クロックサイクルに対して生成される真性ランダムビットは、追加のビットストリームを提供するようにサンプリングされうる。一実施例として、真性ランダムビットストリームＢ８〜Ｂ１４を提供するため、Ｂ１〜Ｂ７の各々から１ビットがサンプリングされうる。例えば、真性ランダムビットストリームＢ８は、列９２０（例えば、ｂＳ４，０、ｂＳ５，０、ｂＳ６，０、ｂＳ７，０、ｂＳ８，０、ｂＳ９，０、及びｂＳ１０，０）によって提供される真性ランダムビットを含みうる。真性ランダムビットストリームＢ８は、真性ランダムビットストリームＢ１〜Ｂ７の各々のゼロ番目のビットをサンプリングすることによって、或いは、クロックサイクル１の間に送信及び／又は保存用の真性ランダムビットストリームＢ８を提供することによって、取得されうる。ビットストリームＢ１〜Ｂ７をサンプリングするための他の方法は、追加の真性ランダムビットストリームを生成するため、代替的に及び／又は追加的に利用されうる。したがって、図９Ａ〜図９Ｄに示した実施例では、真性ランダムビット発生源３０５によって生成された２組の７個の真性ランダムビットは、多数の追加の７ビット真性ランダムビットストリームを生成するために利用されうる。所望のセキュリティレベルが７ビットを超えるビットストリームを利用する場合には、これらの複数の７ビット真性ランダムビットストリームは、所望の長さの真性ランダムビットストリームを得るため、連結されるか、結合されてもよい。所望のセキュリティレベルが７ビット未満の真性ランダムビットストリームを利用する場合には、所望の長さの真性ランダムビットストリームを得るため、７ビット真性ランダムビットストリームがサンプリングされうる。
【００８０】
図１０は、本開示の一又は複数の実施例による、一又は複数の真性ランダムビットストリームのインターミキシングでの追加的な真性ランダムビットストリームの生成を示す。インターミキシングは、図９Ｄに示したビットストリームＢ１〜Ｂ７で実行されうる。ｂＳ４，６からｂＳ４，５への接続１００５は、真性ランダムビットストリームＢ１のそれ自身とのインターミキシング（例えば、ｂＳ４，６はビットｂＳ４，５と結合される）を示す省略表現である。一実施例では、真性ランダムビットストリームＢ１はメモリ（例えば、シフトレジスタ）に提供され、インターミキシングを促進する論理回路に連結されうる。このようなシステムは、図７Ａ〜図７Ｃに示したメモリ７０５及び論理回路７１５に構造が類似しうる。場合によっては、他の真性ランダムビットストリームＢ２〜Ｂ７の各々はまた、同様の及び／又は異なる方法でそれ自身とインターミックスされうる。ｂＳ１０，６からｂＳ８，４への接続１０１０は、真性ランダムビットストリームＢ７と真性ランダムビットストリームＢ５とのインターミキシング（例えば、ｂＳ１０，６はビットｂＳ８，４と結合される）を示す省略表現である。一又は複数のメモリは、このようなインターミキシングを促進するため、真性ランダムビットストリームＢ７及びＢ５を保存するため、提供されうる。このように、一態様では、真性ランダムビットストリーム内でのインターミキシング、及び／又は、異なる真性ランダムビットストリーム間でのインターミキシングを促進するため、メモリは適宜提供されうる。
【００８１】
図１１は、本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセス１１００のフロー図を示す。説明のため、例示的なプロセス１１００は、図７Ａ〜図７Ｃのシステム７００を参照して本書に記載されているが、例示的なプロセス１１００は図７Ａ〜図７Ｃの例示的なシステム７００に限定されない。例えば、代替的に及び／又は追加的に、例示的なプロセス１１００は、図８Ａ〜図８Ｃの例示的なシステム８００、或いは図９Ａ〜図９Ｃの例示的なシステム９００と共に利用されうる。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。
【００８２】
ブロック１１０５では、第１の真性ランダムビットストリームはメモリ７０５に受信される。第１の真性ランダムビットストリームは、真性ランダムビット発生源３０５によって提供されうる。ブロック１１１０では、論理回路７１５は第２の真性ランダムビットストリームを生成し、この第２の真性ランダムビットストリームの各ビットは、第１の真性ランダムビットストリームの各ビットペアに基づいている。ブロック１１１５では、第２の真性ランダムビットストリームは保存される。図７Ａ〜図７Ｃでは、ビットペアはメモリセル７１０Ａ及び７１０Ｂに保存されたビットを含む。この実施例では、クロックサイクル１の間に、真性ランダムビットｂＳ４，０を取得するため、真性ランダムビットｂＳ１，０は、（例えば、ＸＯＲ演算を実行する）論理回路７１５を用いて、真性ランダムビットｂＳ１，１と結合される。クロックサイクル２の間に、真性ランダムビットｂＳ４，１を取得するため、真性ランダムビットｂＳ１，１は論理回路７１５を用いて真性ランダムビットｂＳ１，２に結合される。場合によっては、第２の真性ランダムビットストリームの各ビットは、論理回路７１５によって出力されるにつれて、保存されうる。
【００８３】
図１２は、本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセス１２００のフロー図を示す。説明のため、例示的なプロセス１２００は、図７Ａ〜図７Ｃのシステム７００を参照して本書に記載されているが、例示的なプロセス１２００は図７Ａ〜図７Ｃの例示的なシステム７００に限定されない。例えば、代替的に及び／又は追加的に、例示的なプロセス１１００は、図８Ａ〜図８Ｃの例示的なシステム８００、或いは図９Ａ〜図９Ｃの例示的なシステム９００と共に利用されうる。一態様では、例示的なプロセス１２００は、図１１の例示的なプロセス１１００のブロック１１１０で実装されうる。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。
【００８４】
ブロック１２０５で、論理回路７１５は、生成される第２の真性ランダムビットストリームの現ビット（ｃｕｒｒｅｎｔ  ｂｉｔ）に関連付けられるビットペアを、メモリ７０５から取得（例えば、受信、読み出し）する。ブロック１２１０では、論理回路７１５は、現ビットを取得するため、ビットペアに対してビットワイズ演算を実行する。図７Ａに示した実施例では、論理回路７１５は、メモリセル７１０Ａ及び７１０Ｂにそれぞれ保存されたビットペアｂＳ１，０及びｂＳ１，１に基づいて、現ビットｂＳ４，０を生成する。ブロック１２１５では、論理回路７１５は、第２の真性ランダムビットストリームのより多くのビットが生成される必要があるかどうかを判断する。例えば、システム７００によって生成されることになるビットストリームの長さは、所望のセキュリティレベルに基づいてよく、セキュリティレベルは時間と共に、及び／又は人の入力に基づいて変化しうる。例えば、ユーザーは、論理回路７１５が所望のセキュリティに適した長さの真性ランダムビットストリームを生成することができるよう、所望の長さの真性ランダムビットストリームを直接指定してもよく、及び／又は、所望のセキュリティレベルを指定してもよい。
【００８５】
第２の真性ランダムビットストリームのより多くのビットが生成される必要があると論理回路７１５が判断すると、プロセス１２００はブロック１２２０へ進む。ブロック１２２０では、ビットｂＳ４，１の生成を促進するため、論理回路７１５は次のビットｂＳ４，１を現ビットとして設定し、ブロック１２０５へ進む。一態様では、メモリ７０５がシフトレジスタであるときには、次の繰り返しに備えて、メモリ７０５のビットはブロック１２２０で１ビットだけシフトされうる。論理回路７１５が、第２の真性ランダムビットストリームには、これ以上生成されなければならないビットはない（例えば、第２の真性ランダムビットストリームが指定した長さまで構築された）と判断すると、処理１２００はブロック１２２５に進む。ブロック１２２５では、システム７００は、待ち行列内の命令（例えば、指定された長さの次の真性ランダムビットストリームの生成）の実行を、或いは、待ち行列内の命令がないときには、命令の待機を継続する。
【００８６】
前述は、一又は複数の真性ランダムビット発生源（例えば、３０５、３１０）の真性ランダムビットに基づいた、及び／又は、真性ランダムビット発生源の真性ランダムビットから導出された、追加の真性ランダムビットストリームを生成する例示的な方法を示していることに留意されたい。一実施例では、ランダムビットは、絶対的に偏りのない真のランダムビットになりうる。真性ランダムビットは、更なる真性ランダムビットを生成するため、結合されうる。真性ランダムビットストリームの他のサンプリング、及び／又は、真性ランダムビットストリームのインターミキシングは、追加の真性ランダムビットストリームの生成に利用されうる。このように、様々な実施例で、真性ランダムビット及び関連する真性ランダムビットストリームの生成速度は、真性ランダムビット及び真性ランダムビットストリームが一又は複数の真性ランダムビット発生源によって厳密に生成される場合と比較して、複数倍（例えば、２倍、５倍、１０倍、１００倍、１０００倍、又はそれ以上）に増大しうる。場合によっては、生成された真性ランダムビットはそれ自体が、真性ランダムビット発生源３０５及び３１０などの、ランダムビット発生源又は乱数発生源であってもよい。場合によっては、生成された真性ランダムビットはビットごとに（例えば、各ビットが生成されるたびに）、或いはひとまとまりのビットで（例えば、各ビットが生成された後にバッファされ、ひとまとまりにして）提供されうる。
【００８７】
一又は複数の実施例では、データはキーマテリアルを用いて暗号化され復号化されうる（例えば、暗号化キーを用いて暗号化され、対応する復号化キーを用いて復号化される）。暗号化側では、暗号器は暗号化される平文データ（例えば、ユーザーデータ）を受信しうる。復号器側では、復号器は復号化される暗号化データ（例えば、保存及び／又はユーザーが使用するため）を受信しうる。幾つかの態様では、キーマテリアルは、例えば、図３〜図６、図７Ａ〜図７Ｃ、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｄ、及び図１０〜図１２に記載された機構によるなど、真性ランダムビット発生器（例えば、３０５及び／又は３１０）によって生成された一又は複数の真性ランダムビットストリームであってよく、或いは、これらの真性ランダムビットストリームに基づいて導出されてもよい。幾つかの態様では、キーマテリアルは、ランダムビットストリームや真のランダムビットストリームである必要はなく、或いは、これらに基づく必要はない。
【００８８】
図１３は、本開示の一又は複数の実施例による、反復的なデータ暗号化及び暗号化キー生成を促進するための例示的なプロセス１３００のフロー図を示している。説明のため、本書では例示的なプロセス１３００が、図１の例示的なネットワーク環境１００を参照して説明されているが、例示的なプロセス１３００は図１の例示的なネットワーク環境１００に限定されない。更には、説明のため、コンピューティングデバイス１０５Ｄが暗号器で、コンピューティングデバイス１０５Ａが復号器になっている。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。
【００８９】
ブロック１３０５では、コンピューティングデバイス１０５Ｄは、暗号化される平文データを受信する。平文データは、コンピューティングデバイス１０５Ｄのメモリ（例えば、メモリ２２５）に保存されうる。例えば、コンピューティングデバイス１０５Ｄは、ウェブサイトをホストするサーバーであってよく、平文データはウェブコンテンツを含む。この実施例では、コンピューティングデバイス１０５Ｄは、コンピューティングデバイス１０５Ａから、関連するウェブコンテンツについての要求を受信すると、平文データを読み出してもよい。ブロック１３１０では、コンピューティングデバイス１０５Ｄは、平文データを暗号化される一又は複数のデータ部分（例えば、フラグメント、パーティション）に分割する。例えば、コンピューティングデバイス１０５Ｄは、平文データの暗号化、及び／又は、暗号化されたデータの送信を促進するため、平文データを一又は複数のデータ部分に分割しうる。平文データの各データ部分の長さ（例えば、ビット数又はバイト数）は同じであっても、異なっていてもよい。場合によっては、データ部分の長さ（例えば、ビット数又はバイト数）は、データ部分の送信に用いられる通信プロトコル、及び／又は、当該部分の暗号化に用いられる暗号化キーの長さに基づきうる。これに関連して、暗号化キーの長さは、（例えば、ユーザーによって設定される、サーバーの所有者、政府当局などによって要求される）所望のセキュリティレベルに基づきうる。
【００９０】
ブロック１３１５では、コンピューティングデバイス１０５Ｄは、論理回路（例えば、暗号化論理回路とも称される）を用いて、暗号化された第１のデータ部分提供する第１の暗号化キーを使用して平文データの第１のデータ部分を暗号化する。平文データの第１のデータ部分、第１の暗号化キー及び暗号化された第１のデータ部分は、コンピューティングデバイス１０５Ｄのメモリ（例えば、メモリ２２５）に保存（例えば、バッファ）されうる。場合によっては、第１のデータ部分になるとみなされる平文データのデータ部分は、コンピューティングデバイス１０５Ｄによって、任意に選択されうる。一態様では、コンピューティングデバイス１０５Ｄは、第１のデータ部分と第１の暗号化キーにビットワイズ演算を適用することによって、第１のデータ部分を暗号化しうる。一実施例では、暗号化されたデータ部分の各ビットを取得するため、コンピューティングデバイス１０５Ｄは、第１のデータ部分の１ビットと第１の暗号化キーの対応する１ビットにＸＯＲ演算を実行するが、一般的に、ＸＮＯＲ演算、ＡＮＤ演算、ＯＲ演算、その他の演算、或いはこれらの組み合わせなど、任意のビットワイズ演算が使用されうる。場合によっては、第１の暗号化キーは、一又は複数の真性ランダムビット発生源（例えば、図３の３０５及び／又は３１０）の一又は複数の真性ランダムビットストリームであってよく、或いは、これらに基づいて導出されてもよい。他の場合には、第１の暗号化キーは真性ランダムビットストリームではないか、真性ランダムビットストリームに基づいていない。
【００９１】
ブロック１３２０では、コンピューティングデバイス１０５Ｄは、第１のデータ部分の暗号化に使用される第１の暗号化キーを示す情報、及びその後の任意の暗号化キーを示す情報を送信する。このような情報は、コンピューティングデバイス１０５Ａ（例えば、この実施例では復号器）に、（例えば、第１の暗号化キーに対応する）第１の復号化キー、及び（例えば、その後の暗号化キーに対応する）その後の任意の復号化キーをどのように生成するかを示唆しうる。場合によっては、第１の暗号化キー及びその後の暗号化キー（もしあれば）を示す情報は、コンピューティングデバイス１０５Ａと１０５Ｄとの間のキー交換の一部として提供されうる。情報は、コンピューティングデバイス１０５Ｄのメモリ（例えば、メモリ２２５）に保存されうる。
【００９２】
ブロック１３２５では、コンピューティングデバイス１０５Ｄは、第１の暗号化されたデータ部分をコンピューティングデバイス１０５Ａ（例えば、接続１１５Ｄと１１５Ａ、及びネットワーク１１０）に送信する。場合によっては、コンピューティングデバイス１０５Ｄは、第１の暗号化されたデータ部分をデータパケットに（例えば、データパケットのペイロードとして）送信する。場合によっては、データパケットは、第１の暗号化されたデータ部分の長さを示すヘッダ、（例えば、復号器によってデータ部分のリアセンブリを促進するため）平文データ全体の中で第１のデータ部分が適合する箇所を示す情報、及び／又は、第１のデータ部分及び／又はその暗号化に関連する他の情報を含みうる。
【００９３】
ブロック１３３０では、コンピューティングデバイス１０５Ｄは、ブロック１３０５で受信した暗号化すべき平文データに、より多くのデータ部分があるか否かを判断する。暗号化すべきより多くのデータ部分がある場合には、プロセス１３００はブロック１３３５に進む。ブロック１３３５では、コンピューティングデバイス１０５Ｄは、第１の暗号化キー並びに暗号化された第１のデータ部分又は平文の第１のデータ部分のうちの少なくとも１つに基づいて、平文データの第２のデータ部分の暗号化のための第２の暗号化キーを生成する。これに関連して、第２の暗号化キーは、第１の暗号化キー及び第１の暗号化されたデータ部分、第１の暗号化キー及び第１の平文データ部分、或いは第１の暗号化キー及び第１の暗号化されたデータ部分と第１の平文データ部分との組み合わせに基づいて生成されうる。
【００９４】
一態様では、第１の平文データ部分及び第１の暗号化されたデータ部分は、同じ長さを有しうる。第１の暗号化キーは、少なくとも第１の平文データ部分の長さである長さを有しうる。一実施例として、第２の暗号化キーは、第１の暗号化キーと第１の平文データ部分のスクランブルしたバージョンにビットワイズ演算を実行することによって生成されうる。この実施例では、第１の平文データ部分のスクランブルしたバージョンは、介在ビット（ｉｎｔｅｒｖｅｎｉｎｇ  ｂｉｔｓ）に関して、第１の平文データ部分の第１ビットがスクランブルされた第１の平文データ部分の最終ビットになるように、第１の平文データ部分を反転すること（ｆｌｉｐｐｉｎｇ）を含みうる。第２の暗号化キーがどのように生成されるかを示す情報は、ブロック１３２０でコンピューティングデバイス１０５Ａに送信されうる。この情報は、ビットワイズ演算、スクランブリング、及び／又は、第２の暗号化キーを生成するために使用される平文の一部及び／又は第１の暗号化されたデータ部分（又は、これらの組み合わせ）を特定しうる。
【００９５】
ブロック１３４０では、コンピューティングデバイス１０５Ｄは、第１の暗号化キーから第２の暗号化キーに切り替え、第２の暗号化キーを用いて平文データの第２の部分を暗号化する。ブロック１３４５では、コンピューティングデバイス１０５Ｄは、第２の暗号化されたデータ部分をコンピューティングデバイス１０５Ａへ送信する。プロセス１３００は次にブロック１３３０へ進み、ここでコンピューティングデバイス１０５Ｄは、平文データが第３の暗号化キーを用いて暗号化される第３のデータ部分を有するか否かを判断し、第３の暗号化キー（例えば、第３のデータ部分が存在するとき）は、第２の暗号化キー、並びに、第２の暗号化されたデータ部分又は第２の平文データ部分のうちの少なくとも１つに基づいて生成される。
【００９６】
ブロック１３３０、１３３５、１３４０、及び１３４５は、暗号化対象の平文データのすべての部分が暗号化されるまで、反復的に実行されうる。例えば、ｎ番目の繰り返しでは、平文データのｎ番目の部分を暗号化するためのｎ番目の暗号化キーは、（ｎ−１）番目の暗号化キー、並びに、（ｎ−１）番目のデータ部分又は暗号化された（ｎ−１）番目のデータ部分（例えば、（ｎ−１）番目の暗号化キーを用いて暗号化された（ｎ−１）番目のデータ部分）のうちの少なくとも１つに基づいて生成されうる。コンピューティングデバイス１０５Ｄがブロック１３３０で、暗号化対象のデータ部分がこれ以上ないと判断すると、プロセス１３００はブロック１３５０へ進む。ブロック１３５０では、コンピューティングデバイス１０５Ｄは、既存の命令を継続するか、新しい命令を待つ。コンピューティングデバイス１０５Ｄが暗号化対象の平文データにこれ以上データ部分がないと判断すると、プロセス１３００はブロック１３５０へ進む。ブロック１３５０では、コンピューティングデバイス１０５Ｄは、待ち行列内の命令（例えば、次の平文データの暗号化）の実行、或いは待ち行列内の命令がない場合には命令の待機を継続する。
【００９７】
図１４は、本開示の一又は複数の実施例による、データの復号化及び復号化キー生成を促進するための例示的なプロセスのフロー図を示している。説明のため、本書では例示的なプロセス１４００が、図１の例示的なネットワーク環境１００を参照して説明されているが、例示的なプロセス１４００は図１の例示的なネットワーク環境１００に限定されない。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。一実施例では、プロセス１４００は、コンピューティングデバイス１０５Ｄからの暗号化されたデータの受信に応答して、コンピューティングデバイス１０５Ａによって実行されうる。例えば、コンピューティングデバイス１０５Ｄは、図１４のプロセス１４００を実行することによって、暗号化されたデータをコンピューティングデバイス１０５Ａに提供しうる。
【００９８】
１４０５では、コンピューティングデバイス１０５Ａは、第１の復号化キー及びその後の任意の復号化キーを示す情報を受信する。場合によっては、この情報は、第１の暗号化キー、ビットワイズ演算、スクランブリング、及び／又は、その後の暗号化キーを生成するために、コンピューティングデバイス１０５Ｄによって使用される平文データ部分の一部及び／又は暗号化されたデータ部分（又は、これらの組み合わせ）を特定しうる。コンピューティングデバイス１０５Ａは、コンピューティングデバイス１０５Ｄからのこのような情報に基づいて、第１の復号化キー及びその後の任意の復号化キーを決定、或いはこれらを生成する方法を決定しうる。この情報は、コンピューティングデバイス１０５Ａのメモリ（例えば、メモリ２２５）内に保存されうる。
【００９９】
ブロック１４１０では、コンピューティングデバイス１０５Ａは暗号化されたデータを受信する。ブロック１４１５では、コンピューティングデバイス１０５Ａは、第１の復号化キーを用いて、第１の暗号化されたデータ部分を復号化する。一態様では、各暗号化されたデータ部分は、暗号化されたデータ部分が平文データ内で適合する場所に関する情報を備えたヘッダを有するデータパケットの一部になりうる。コンピューティングデバイス１０５Ａは、このようなヘッダ情報に基づいて、第１の暗号化されたデータ部分を特定しうる。ブロック１４２０では、コンピューティングデバイス１０５Ａは、復号化対象の暗号化されたデータ部分が更に存在するか否かを判断する。復号化対象の暗号化されたデータ部分がまだ存在する場合には、プロセス１４００はブロック１４２５へ進む。暗号化されたデータ（又は、その一部）、第１の復号化キー、及び第１の復号化されたデータ部分は、コンピューティングデバイス１０５Ａのメモリ（例えば、メモリ２２５）に保存（例えば、バッファ）されうる。ブロック１４２５では、コンピューティングデバイス１０５Ａは、第１の暗号化キー並びに復号化された第１のデータ部分又は暗号化された第１のデータ部分のうちの少なくとも１つに基づいて、暗号化されたデータの第２のデータ部分の復号化のための第２の復号化キーを生成する。これに関連して、コンピューティングデバイス１０５Ａは、ブロック１４０５でコンピューティングデバイス１０５Ｄから受信した情報に基づいて、第２の復号化キーを生成しうる。これに関連して、このような情報は、第１の復号化キーと第１の復号化されたデータ部分、第１の暗号化キーと第１のデータ部分、或いは、第１の復号化キー並びに第１の復号化されたデータ部分と第１の暗号化されたデータ部分の組み合わせに基づいて、コンピューティングデバイス１０５Ａが第２の復号化キーを生成するか否かを示しうる。例えば、この情報は、演算（例えば、ビットワイズ演算）及び／又は、第２の復号化キーを生成し、第２の復号化キーを用いて第２の暗号化された部分を復号化するため、コンピューティングデバイス１０５Ａによって実行されうる他の処理（例えば、データのスクランブリング／デスクランブリング）を指定しうる。
【０１００】
ブロック１４３０では、コンピューティングデバイス１０５Ａは、第２の復号化キーを用いて、暗号化されたデータの第２のデータ部分を復号化する。プロセス１４００は次にブロック１４３０へ進み、ここでコンピューティングデバイス１０５Ａは、暗号化されたデータが第３の復号化キーを用いて復号化される第３の部分を有するか否かを判断する。コンピューティングデバイス１０５Ａは、ブロック１４０５で受信した情報に従って、第３の復号化キーを生成しうる。第３の復号化キーは、第２の復号化キー及び第２の復号化されたデータ部分又は第２の暗号化されたデータ部分のうちの少なくとも１つ基づいて生成されうる。ブロック１４２０、１４２５、及び１４３０は、暗号化されたデータのすべての部分が復号化されるまで、反復的に実行されうる。例えば、ｎ番目の繰り返しでは、暗号化されたデータのｎ番目の部分を復号化するためのｎ番目の復号化キーは、（ｎ−１）番目の復号化キー、並びに、暗号化された（ｎ−１）番目のデータ部分又は復号化された（ｎ−１）番目の部分（例えば、（ｎ−１）番目の復号化キーを用いて復号化された（ｎ−１）番目の暗号化されたデータ部分）のうちの少なくとも１つに基づいて生成されうる。
【０１０１】
コンピューティングデバイス１０５Ａが、復号化対象となるデータ部分がこれ以上ないと判断すると、プロセス１４００はブロック１４３５へ進む。ブロック１４３５では、コンピューティングデバイス１０５Ａは、復号化されたデータ部分を用いて、平文データをリアセンブルする。暗号化されたデータが復号化され、リアセンブルされると、復号化されたデータは保存及び／又は使用されうる。例えば、復号化されたデータは、コンピューティングデバイス１０５Ａ上で動作するウェブブラウザアプリケーション内でユーザーに表示するために提供されるウェブページコンテンツであってもよい。ブロック１４４０では、コンピューティングデバイス１０５Ａは、待ち行列内の命令（例えば、次の暗号化データの復号化）の実行、或いは待ち行列内の命令がない場合には命令の待機を継続する。
【０１０２】
一実施例では、プロセス１３００は、コンピューティングデバイス１０５Ｄ（及び／又は、他の任意の暗号器）によって、暗号化対象の各平文データに対して実行されうる（例えば、別のコンピューティングデバイスに送信される）。同様に、プロセス１４００は、コンピューティングデバイス１０５Ａ（及び／又は、他の任意の暗号器）によって、復号化対象の各暗号化データに対して実行されうる。これに関連して、異なるデータ及びデータ部分に異なるキーマテリアルを使用することによって、セキュリティが高まる。例えば、復号化キーが復号器によって保存されず、攻撃者が復号化キーを読み出せる場合であっても、他の暗号化されたデータ部分は異なる復号化キーに関連付けられているため、攻撃者は暗号化されたデータ部分の１つのみを復号化するために復号化キーを使用することがある。
【０１０３】
一又は複数の実施例では、キーマテリアル及び／又は関連データは使用後消去されうる。暗号化側では、キーマテリアルは暗号化キーであってよく、関連情報は、暗号化キーを用いて暗号化されるデータ（又はデータ部分）であってよい。復号化側では、キーマテリアルは復号化キーであってよく、関連データは、復号化キーを用いて復号化される暗号化データ（又は、暗号化されたデータ部分）であってよい。一態様では、キーマテリアルは、一又は複数の乱数発生器（例えば、３０５及び／又は３１０）によって生成される一又は複数の真性ランダムビットストリームであってよく、及び／又は、当該の一又は複数の真性ランダムビットストリームから導出されてもよい。別の態様では、キーマテリアルは真性ランダムビットストリームではなく、真性ランダムビットストリームから導出もされない。キー及び／又は関連データの消去は、キー及び／又は関連データがメモリ内に保存されている持続時間を短縮しうるため、攻撃者がこのような情報の取得に利用できる時間を短縮することでセキュリティを高める。
【０１０４】
図１５は、本開示の一又は複数の実施例により、関連情報の暗号化／復号化及び消去を促進するためのシステム１５００のブロック図を示す。システム１５００は、メモリ１５０５、１５１０、及び１５２０、並びに論理回路１５１５を含む。メモリ１５０５、１５１０、及び１５２０、並びに論理回路１５１５は、暗号化及び／又は復号化を促進するクロック回路（例えば、図３の３４５）からクロック信号を受信しうる。一実施例では、システム１５００はコンピューティングデバイス１０５Ａ〜１０５Ｄのいずれか１つで実装されうる。
【０１０５】
システム１５００は暗号化及び／又は復号化に利用されうる。１つの事例では、システム１５００が暗号化システムである、或いは暗号化システムとして利用されるときには、メモリ１５０５は暗号化対象の平文データを受信し保存してよく、メモリ１５１０はメモリ１５０５に保存された平文データを暗号化するための暗号化キーを受信し保存してよく、論理回路１５１５は、暗号化されたデータを提供するためメモリ１５１０に保存された暗号化キーを用いて、メモリ１５０５に保存された平文データを暗号化してよく、また、メモリ１５２０は暗号化されたデータを受信し、保存し、そのデータの送信を促進してもよい。論理回路１５１５は、平文データ及び暗号化キーにビットワイズ演算を実行することによって（例えば、キー交換中に指定された方法で）、平文データを暗号化しうる。例えば、平文データは、図１３のブロック１３０５で受信した平文データであってよく、これを含んでよく、或いはその一部であってよい。例えば、メモリ１５０５に受信されたデータは、図１３のブロック１３１０で取得された部分の１つであってよい。一態様では、暗号化キーは、真性ランダムビット発生源（例えば、３０５、３１０）からメモリ１５１０に受信されてよく、或いは、一又は複数の真性ランダムビット発生源によって生成される一又は複数の真性ランダムビットストリームから導出されてよい。一態様では、暗号化キーは真性ランダムビットストリームではなく、真性ランダムビットストリームから導出もされない。
【０１０６】
別の事例では、システム１５００が復号化システムである、或いは復号化システムとして利用されるときには、メモリ１５０５は復号化対象の暗号化データを（例えば、暗号器から）受信してよく、メモリ１５１０はメモリ１５０５に保存された暗号化データを復号化するための復号化キーを受信し保存してよく、論理回路１５１５は、復号化されたデータを提供するため、メモリ１５１０に保存された復号化キーを用いて、メモリ１５０５に保存された暗号化データを復号化してよく、また、メモリ１５２０は復号化された平文データを受信し、保存し、更に（例えば、ユーザーに表示するため復号化されたデータを提供することによって）復号化された平文データの利用を促進してもよい。論理回路１５１５は、暗号化されたデータと復号化キーにビットワイズ演算を実行することによって（例えば、キー交換中に指定された方法で）、暗号化されたデータを復号化しうる。
【０１０７】
一実施例では、暗号化システム及び復号化システムの両方に対して、メモリ１５０５及び／又は１５１０は消去信号（例えば、上書き信号又は消去／上書き信号とも称される）を受信するように構成され、消去信号が使用可能になる（例えば、論理レベルがハイに設定される）と、メモリ１５０５及び／又は１５１０は、メモリ１５０５及び／又は１５１０の内容を消去することができる。例えば、ある場合には、メモリ１５１０は消去信号を受信し、その信号が使用可能になると、メモリ１５１０はメモリ１５１０に保存されているキーを消去することができる。幾つかの態様では、消去信号は、論理回路１５１５で出力が生成されるのとほぼ同時に使用可能になるが、その出力は、暗号化システムに対して暗号化されたデータか、復号化システムに対して復号化されたデータである。図１５では、メモリ１５０５及び１５１０の両方が、メモリ１５０５及び１５１０に対して同じ状態又は異なる状態（例えば、論理レベルがハイ又はロー）にありうる消去信号を受信することができる。その他の場合には、メモリ１５０５及び１５１０のうちの１つが消去信号を受信するように構成されている。様々な実施例では、メモリ１５０５及び１５１０の一方又は両方に対して消去信号を利用することにより、キー（例えば、暗号化キー又は復号化キー）及び／又はデータ（例えば、暗号化されたデータ又は平文データ）が保存される時間を少なくとも短縮することによって、セキュリティは高まる。
【０１０８】
一態様では、消去信号は、メモリセル内に保存された内容を上書きするため、メモリ１５０５及び／又は１５１０のメモリセルに提供される（例えば、保存される）所定の値（例えば、０又は１）、或いは一連の所定の値であってよい。例えば、メモリ１５１０に含まれるキーを値１（又は０）で上書きするため、メモリ１５１０にパーマネントライン１（又は０）が提供されうる。別の実施例として、上書きを行うために、メモリ１５１０のメモリセルには、一連の所定の値（例えば、一連の０及び１）が提供されうる。別の態様では、消去信号は論理回路１５１５の出力であってよく、或いは論理回路１５１５の出力に基づいてもよい。一実施例として、論理回路１５１５の出力は、メモリ１５０５及び／又は１５１０に含まれる内容（例えば、キー、データ）を上書きするため、メモリ１５０５及び／又は１５１０に送り込まれてもよい。メモリ１５０５及び１５１０の両方が消去信号を有するとき、これらの消去信号は同じであってもよく、或いは異なっていてもよい。一実施例では、キー及び／又は関連データが連続シフトアウト経路を介してメモリ１５０５及び／又は１５１０の外部へ提供されるのを防止するため、メモリ１５０５及び１５１０は、連続アウトシフト機能を有さない、或いは連続アウトシフト機能が動作しないシフトレジスタになりうる。
【０１０９】
図１６は、本開示の一又は複数の実施例により、関連情報の暗号化／復号化及び消去を促進するためのシステム１６００のブロック図を示す。一実施例では、システム１６００は図１５のシステム１５００であってよく、システム１５００を含んでもよく、システム１５００の一部であってもよい。図１５の説明は概ね図１６に当てはまる。図１６では、論理回路１５１５はメモリ１５０５及び１５１０に消去信号を提供する。
【０１１０】
図１７は、本開示の一又は複数の実施例により、関連情報の暗号化／復号化及び消去を促進するためのシステム１７００のブロック図を示す。一実施例では、システム１７００は、図１５のシステム１５００又は図１６のシステム１６００であってよく、これらを含んでもよく、これらの一部であってもよい。メモリ１７０５、１７１０、及び１７２５はそれぞれ、図１５及び図１６のメモリ１５０５、１５１０、及び１５２０であってよく、これらをふくんでもよく、これらの一部であってもよい。論理回路１７１５は、論理回路１５１５であってよく、論理回路１５１５を含んでもよく、論理回路１５１５の一部であってもよい。図１７では、論理回路１７１５は結合器１７２０Ａ及び１７２０Ｂを含む。メモリ１７０５、１７１０、及び１７２５の省略記号は一又は複数の追加のメモリセルを表し、論理回路１７１５の省略記号は一又は複数の追加の結合器を表す。
【０１１１】
暗号器に関しては、結合器１７２０Ａは、メモリ１７０５及び１７１０からそれぞれ平文データビットｂＤ０と暗号化キービットｂＫ０を受信し、これらを結合して暗号化されたデータビットｂＲ０を生成し、メモリ１７２５に（例えば、バッファするため）提供しうる。結合器１７２０Ｂは、メモリ１７０５及び１７１０からそれぞれ平文データビットｂＤ１と暗号化キービットｂＫ１を受信し、これらを結合して暗号化されたデータビットｂＲ１を生成し、メモリ１７２５に提供しうる。
【０１１２】
同様に、復号器に関しては、結合器１７２０Ａは、メモリ１７０５及び１７１０からそれぞれ暗号化されたデータビットｂＤ１及び復号化キービットｂＫ１を受信し、これらを結合して復号化されたデータビットｂＲ０を生成し、メモリ１７２５に（例えば、バッファするため）提供しうる。結合器１７２０Ｂは、メモリ１７０５及び１７１０からそれぞれ暗号化されたデータビットｂＤ１及び復号化キービットｂＫ１を受信し、これらを結合して復号化されたデータビットｂＲ１を生成し、メモリ１７２５に提供しうる。場合によっては、結合器１７２０Ａ及び１７２０Ｂは、ＸＯＲ演算、ＸＮＯＲ演算、ＡＮＤ演算、又はＯＲ演算、或いは他の演算などのビットワイズ演算を実行しうる。結合器１７２０Ａ及び１７２０Ｂによって実行されるビットワイズ演算は同じであってもよく、或いは異なっていてもよい。
【０１１３】
図１７に示したように、結合器１７２０Ａ（例えば、ビットｂＲ０）及び結合器１７２０Ｂ（例えば、ビットｂＲ１）の出力は、メモリ１７０５及び１７１０にフィードバックされる。このように、キー及び関連データは、結合器１７２０Ａ及び１７２０Ｂからの出力が生成された後、上書きされる。一態様では、キー及び関連データの上書きは、結合器１７２０Ａ及び１７２０Ｂからの出力が生成された直後に起こるため、キー及び／又は関連データがメモリ１７１０及び１７０５に保存される時間は短縮され、キー及び関連データの再利用を防止する。場合によっては、結合器１７２０Ａ及び１７２０Ｂの出力をメモリ１７０５及び１７１０に直接送り込むのではなく、論理回路１７１５は出力を処理し（例えば、ビットのスクランブル、反転など）、処理した出力をメモリ１７０５及び１７１０に提供しうる。これらの処理された出力は、出力自体又は出力の形態に関連する（例えば、示唆する）情報と称されることがある。
【０１１４】
図１８は、本開示の一又は複数の実施例による、関連情報の暗号化／復号化と消去を促進するための例示的なシステム１８００のフロー図を示す。説明のため、本書では例示的なプロセス１８００が、図１５の例示的なシステム１５００を参照して説明されているが、例示的なプロセス１８００は図１５のシステム１５００に限定されない。一又は複数の演算は要望に応じて結合、除外、及び／又は異なる順で実行されうることに留意されたい。一実施例では、プロセス１８００は、暗号化プロセス又は復号化プロセスであってよい。一実施例として、システム１５００はコンピューティングデバイス１０５Ａに提供されうる。
【０１１５】
ブロック１８０５では、第１のデータはメモリ１５０５に受信される。ブロック１８１０では、キーはメモリ１５１０に受信される。ブロック１８１５では、論理回路１５１５は、第１のデータ及びキーに基づいて、第２のデータを生成する。暗号化プロセスに関しては、メモリ１５０５に受信される第１のデータは平文データ（又は、その一部）であってよく、メモリ１５１０に受信されるキーは暗号化キーであってよく、また、第２のデータは暗号化されたデータであってよい。復号化プロセスに関しては、メモリ１５０５に受信される第１のデータは暗号化されたデータ（又は、その一部）であってよく、メモリ１５１０に受信されるキーは復号化キーであってよく、また、第２のデータは復号化されたデータであってよい。ブロック１８２０では、論理回路１５１５は送信用の第２のデータを提供する。例えば、論理回路１５１５は保存用のデータを（例えば、バッファとして使用される）メモリ１５２０に提供してもよく、（例えば、その後の送信及び／又は使用のため）データはメモリ１５２０によって送信されてよく、或いはメモリ１５２０から読み出されてもよい。
【０１１６】
ブロック１８２５では、キー及び／又は第１のデータは消去される。場合によっては、所定の値又は一連の所定の値は、第１のデータ及び／又はキーをそれぞれ上書きするためメモリ１５０５及び／又は１５１０に提供され、そこに保存される。場合によっては、論理回路１５１５は、第２のデータ又は第２のデータに基づいて生成される一連のビットを用いて、メモリ１５０５及び／又は１５１０を上書きしうる。一実施例では、プロセス１８００は、暗号化対象又は復号化対象のデータの各部分に対して反復されうる。データの異なる部分に対して、異なるキーが生成されうる。一態様では、図１３及び図１４のそれぞれのプロセス１３００及び１４００に関して説明されている方法と同様の方法で、異なるキーが生成されうる。
【０１１７】
図１９は、本開示の一又は複数の実施例により、関連する情報の暗号化／復号化及び消去を促進するための、タイミング図と関連するクロック信号を示す。説明のため、本書ではタイミング図１９００が、図１５の例示的なシステム１５００及び図１８の例示的なプロセス１８００を参照して説明されているが、タイミング図１９００は図１５の例示的なシステム１５００及び図１８の例示的なシステム１８００に限定されない。
【０１１８】
タイミング」図１９００は、クロック信号１９０５及び１９１０を含む。クロック信号１９１０は、クロック信号１９０５の周期Ｔ１の継続時間の半分の周期Ｔ２を有する。クロック信号１９０５及び／又は１９１０は、図３のクロック回路３４５などのクロック回路によって生成されうる。場合によっては、クロック回路は、クロック信号１９１０を生成するため、クロック信号１９０５に周波数逓倍器を適用することがある。場合によっては、クロック信号１９０５は、メモリ１５０５及び１５１０と論理回路１５１５の動作を促進するために利用されることがあり、また、クロック信号１９１０はメモリ１５２０の動作を促進するために使用されることがある。
【０１１９】
時刻ｔ１では、メモリ１５０５及び１５１０はそれぞれ、データ（例えば、暗号化されたデータ、平文データ）及びキーマテリアル（例えば、復号化キー、暗号化キー）を受信するように準備されうる。時刻ｔ２では、メモリ１５２０は論理回路１５１５の出力を受信するように準備されうる。例えば、メモリ１５０５、１５１０、及び１５２０は、ゲートが適切にバイアスされ、そうでない場合には入力情報を受信し保存するために準備されていることが必要なトランジスタで形成されうる。時刻ｔ１と時刻ｔ２に間に、データ及びキーマテリアルはそれぞれ、メモリ１５０５及び１５１０に提供（例えば、シフト入力）されうる。
【０１２０】
時刻ｔ３では、論理回路１５１５は、データ及びキーマテリアルに基づいて出力を生成し、メモリ１５２０は論理回路１５１５から出力を受信しうる。例えば、論理回路１５１５は、ビットワイズ演算（例えば、データとキーマテリアルへのＸＯＲ演算）を実行することによって出力を生成しうる。時刻ｔ４では、メモリ１５２０は、論理回路１５１５から受信した出力を保存し、また、メモリ１５０５及び／又は１５１０は、メモリ１５０５及び／又は１５１０を上書きする消去信号を受信しうる。メモリ１５０５及び／又は１５１０の消去は、周期Ｔ１の１クロックサイクルの継続時間内に起こりうる。これに関連して、消去は、メモリ１５２０によって受信される論理回路１５１５からの出力のクロックサイクルと同じクロックサイクル内に起こりうる。図１９に示したように、消去は、時刻ｔ３でのデータ及びキーマテリアルに基づいて、出力を生成するクロックサイクルの２分の１（例えば、継続時間０．５Ｔ１、すなわち、継続時間Ｔ２と同等）で起こりうる。時刻ｔ５では、メモリ１５０５及び１５１０はそれぞれ、データ及びキーマテリアルを受信するように準備され、メモリ１５２０は保存されたデータを出力しうる。これに関連して、メモリ１５０５及び／又は１５１０の消去は、メモリ１５０５及び１５１０がそれぞれデータ及びキーマテリアルを受信する前に、起こりうる。時刻ｔ６では、メモリ１５２０は論理回路１５１５の出力を受信するように準備されうる。この反復プロセスは、各受信データ（例えば、受信された各データ部分）に対して繰り返される。クロック信号１９０５及び１９１０に基づいたシステム１５００の動作は、データ及び／又はキーが消去される前に、論理回路１５１５がメモリ１５０５及び１５１０からデータ及びキーを受信するように、関連する情報の暗号化／復号化及び消去を促進しうる。１クロック以内にデータ及び／又は関連するキーを消去することによって、このような消去は、攻撃者が、データが暗号化される（又は復号化される）とすぐにデータを取得するのを、或いはキーが暗号化（又は復号化）に使用されるとすぐにキーを取得するのを防ぐのに役立つ。
【０１２１】
更に、本開示は以下の条項による実施例を含む。
【０１２２】
条項１．  第１のメモリに第１の真性ランダムビットストリームを受信すること、第２のメモリに第２の真性ランダムビットストリームを受信すること、前記第１の真性ランダムビットストリームの各ビットを前記第２の真性ランダムビットストリームの対応するビットと結合するため、論理回路によってビットワイズ演算を実行して、第３の真性ランダムビットストリームを生成すること、及び、前記第３の真性ランダムビットストリームを第３のメモリに保存すること、を含む方法。
【０１２３】
条項２．  前記ビットワイズ演算は論理的等価性を有する、条項１に記載の方法。
【０１２４】
条項３．  前記第３の真性ランダムビットストリームに基づいて、暗号化キーの生成を引き起こすように、前記第３の真性ランダムビットストリームを処理回路に送信することを更に含む、条項１に記載の方法。
【０１２５】
条項４．  複数のメモリセルを含む第１のメモリに第１の真性ランダムビットストリームを受信することであって、前記複数のメモリセルの各々は前記第１の真性ランダムビットストリームの各１ビットを保存する、受信すること、前記第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを、論理回路によって生成すること、及び、第２のメモリに前記第２の真性ランダムビットストリームを保存すること、を含む方法。
【０１２６】
条項５．  前記生成することは、前記第１のメモリから前記第２の真性ランダムビットストリームの現ビットに関連する前記ビットペアを読み出すこと、前記第２の真性ランダムビットストリームの前記現ビットを取得するため、前記ビットペアにビットワイズ演算を実行すること、及び、前記第２の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することとを繰り返すことを含む、条項４に記載の方法。
【０１２７】
条項６．  前記読み出すことは、前記複数のメモリセルの第１のメモリセルから前記現ビットに関連する前記ビットペアの一方と、前記複数のメモリセルの第２のメモリセルから前記ビットペアの他方を読み出すことを含み、前記方法は、前記現ビットに関連する前記ビットペアの前記読み出し後に、前記第２の真性ランダムビットストリームの次のビット（ｎｅｘｔ  ｂｉｔ）に関連する前記ビットペアの一方を前記第１のメモリセルに、また、前記次のビットに関連する前記ビットペアの他方を前記第２のメモリセルに提供することを更に含む、条項５に記載の方法。
【０１２８】
条項７．  前記第１のメモリはシフトレジスタを備え、前記提供することは、前記第２のメモリセルから前記次のビットに関連する前記ビットペアの前記一方を前記第１のメモリセルに、また、前記複数のメモリセルの第３のメモリセルから前記次のビットに関連する前記ビットペアの前記他方を前記第２のメモリセルに、シフトすることを含む、条項６に記載の方法。
【０１２９】
条項８．  前記第１のメモリはシフトレジスタを備え、前記提供することは、前記複数のメモリセルの第３のメモリセルから前記次のビットに関連する前記ビットペアの前記一方を前記第１のメモリセルに、また、前記複数のメモリセルの第４のメモリセルから前記次のビットに関連する前記ビットペアの前記他方を前記第２のメモリセルに、シフトすることを含む、条項６に記載の方法。
【０１３０】
条項９．  前記シフトすることは、前記複数のメモリセルの最終メモリセルに保存された前記第１の真性ランダムビットストリームの１ビットをシフトアウトすること、及び、前記第１の真性ランダムビットストリームの各残存ビットをシフトオーバーすることを含む、条項８に記載の方法。
【０１３１】
条項１０．  前記最終メモリセルは前記複数のメモリセルの前記第１のメモリセルである、条項９に記載の方法。
【０１３２】
条項１１．  前記ビットワイズ演算は論理的等価性を有する、条項５に記載の方法。
【０１３３】
条項１２．  第１のメモリセルから第３の真性ランダムビットストリームの現ビットに関連する前記ビットペアの一方を、また、前記複数のメモリの第３のメモリセルから前記ビットペアの他方を読み出すこと、前記第３の真性ランダムビットストリームの前記現ビットを取得するため、前記現ビットに関連する前記ビットペアにビットワイズ演算を実行すること、及び、前記第３の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することとを繰り返すこととによって、前記第１の真性ランダムビットストリームに基づいて前記第３の真性ランダムビットストリームの各ビットを前記論理回路によって生成することを更に含む、条項４に記載の方法。
【０１３４】
条項１３．  前記第２の真性ランダムビットストリームの各ビットペアに基づいて、第３の真性ランダムビットストリームの各ビットを前記論理回路によって生成すること、及び、前記第３の真性ランダムビットストリームを第３のメモリに保存することを更に含む、条項４に記載の方法。
【０１３５】
条項１４．  前記第２の真性ランダムビットストリームはシフトレジスタに保存される、条項１３に記載の方法。
【０１３６】
条項１５．  前記第２及び第３の真性ランダムビットストリームでのビットワイズ演算に基づいて、第４の真性ランダムビットストリームの各ビットを前記論理回路によって生成することを更に含む、条項１３に記載の方法。
【０１３７】
条項１６．  複数の追加の真性ランダムビットストリームを生成すること、また、第３の真性ランダムビットストリームの少なくとも一部を形成するため、前記複数の追加の真性ランダムビットストリームの各々から一又は複数のビットをサンプリングすることを更に含む、条項４に記載の方法。
【０１３８】
条項１７．  前記第１及び第２の真性ランダムビットストリームは所定の長さを有する、条項４に記載の方法。
【０１３９】
条項１８．  複数のメモリセルを含むメモリであって、前記複数のメモリセルの各々は第１の真性ランダムビットストリームの各１ビットを保存するように構成されるメモリ、及び、前記第１の真性ランダムビットストリームの各ビットペアに基づいて、第２の真性ランダムビットストリームの各ビットを生成するように構成される論理回路を備えるデバイス。
【０１４０】
条項１９．  前記メモリから前記第２の真性ランダムビットストリームの現ビットに関連する前記ビットペアを読み出すこと、前記第２の真性ランダムビットストリームの前記現ビットを取得するため、前記ビットペアにビットワイズ演算を実行すること、及び、前記第２の真性ランダムビットストリームの各残存ビットに対して、前記読み出すことと前記実行することとを繰り返すことによって、前記論理回路は、前記第２の真性ランダムビットストリームの各ビットを生成するように構成される、条項１８に記載のデバイス。
【０１４１】
条項２０．  前記メモリは、前記第２の真性ランダムビットストリームの前記現ビットに関連する前記ビットペアの一方を前記シフトレジスタの第１のメモリセルに保存し、前記第２の真性ランダムビットストリームの前記現ビットに関連する前記ビットペアの他方を前記シフトレジスタの第２のメモリセルに保存し、前記第２の真性ランダムビットストリームの前記現ビットの取得後、前記第２の真性ランダムビットストリームの次のビットに関連する前記ビットペアの一方を前記第１のメモリセルに、また、前記次のビットに関連する前記ビットペアの他方を前記第２のメモリセルにシフトするように構成されるシフトレジスタを備える、条項１９に記載のデバイス。
【０１４２】
必要に応じて、本書に明記されるさまざまなハードウェア構成要素及び／又はソフトウェア構成要素を、本開示の精神から逸脱することなく、ソフトウェア、ハードウェア、又は両方を含むサブ構成要素に分けることができる。更に必要に応じて、ソフトウェア構成要素をハードウェア構成要素として、あるいはハードウェア構成要素をソフトウェア構成要素として実行しうることが考えられる。
【０１４３】
本開示によるソフトウェア、例えばプログラムコード及び／又はデータは、一又は複数の非一過性のマシン可読媒体に保存されうる。本書で特定されるソフトウェアが、ネットワーク化された及び／又はその他の一又は複数の汎用又は特定目的のコンピュータ及び／又はコンピュータシステムを用いて、実行されうることも考えられる。必要に応じて、本書に記載された特徴を得るために、本書に記載された様々なステップの順序を変更する、結合して複合ステップにする、及び／又はサブステップに分けることができる。
【０１４４】
上述の実施例は、本発明を説明するが、本発明を限定するものではない。本発明の原則に従って数多くの修正例及び変形例が可能であることも理解されたい。したがって、本開示の範囲は、下記の特許請求の範囲及びその任意の均等物によってのみ規定されるものである。
【図１】
2019082676.tif 000005
【図２】
2019082676.tif 000006
【図３】
2019082676.tif 000007
【図４】
2019082676.tif 000008
【図５】
2019082676.tif 000009
【図６】
2019082676.tif 000010
【図７Ａ】
2019082676.tif 000011
【図７Ｂ】
2019082676.tif 000012
【図７Ｃ】
2019082676.tif 000013
【図８Ａ】
2019082676.tif 000014
【図８Ｂ】
2019082676.tif 000015
【図８Ｃ】
2019082676.tif 000016
【図９Ａ】
2019082676.tif 000017
【図９Ｂ】
2019082676.tif 000018
【図９Ｃ】
2019082676.tif 000019
【図９Ｄ】
2019082676.tif 000020
【図１０】
2019082676.tif 000021
【図１１】
2019082676.tif 000022
【図１２】
2019082676.tif 000023
【図１３】
2019082676.tif 000024
【図１４】
2019082676.tif 000025
【図１５】
2019082676.tif 000026
【図１６】
2019082676.tif 000027
【図１７】
2019082676.tif 000028
【図１８】
2019082676.tif 000029
【図１９】
2019082676.tif 000030
【外国語明細書】
2019082676000001.pdf
2019082676000002.pdf
2019082676000003.pdf
2019082676000004.pdf