下記の詳細な説明は、対象技術の様々な構成の説明を意図したものであって、実施されうる対象技術の唯一の構成を示すことを意図していない。添付の図面は本書に組み込まれており、詳細な説明の一部を構成している。詳細な説明には、対象技術の完全な理解をもたらすことを目的とした具体的な詳細事項が含まれる。しかしながら、対象技術は本書に記載の具体的な詳細事項に限定されず、一又は複数の実施例を用いて実施されうることは、当業者には明確で自明であろう。一又は複数の例では、対象技術の概念があいまいになるのを避けるため、構造及び構成要素はブロック図の形態で示されている。対象となる開示の一又は複数は、一又は複数の図面と関連付けて例示及び/又は説明されており、特許請求の範囲に記載されている。
一又は複数の介在するネットワークにより(或いはネットワークなしで)、デバイス間の安全な通信を促進するため、様々な技術が提供される。このような技術は、データの暗号化/復号化及びデータ通信(例えば、送信、受信)を含み、移動中のデータ並びに停止中のデータの保護を促進しうる。幾つかの実施例では、本技術は、キーマテリアル(例えば、暗号化キー)として利用するため、又はキーマテリアルの導出に利用するため、所望のビットレートで真性ランダムビットの生成を促進すること、あらかじめ生成されたキーマテリアル及び/又は関連データ(例えば、暗号化データ、非暗号化データ)に基づいてキーマテリアルを生成すること、及び/又は、キーマテリアルの使用時にキーマテリアル及び/又は関連データを消去することを含みうる。
幾つかの実施例では、このような技術は、デバイス間で直接、及び/又は、一又は複数のネットワークを介したデバイス間で、大量の情報の安全な通信(例えば、送信、受信)を確保するための十分な量のキーマテリアルの生成に利用されうる。例えば、キーマテリアルは、インターネットを介して送信されるトラフィックを暗号化し、インターネットを介して受信される暗号化されたトラフィックを復号化するために利用されうる。一態様では、キーマテリアルは、暗号化側で平文の暗号化に使用される暗号化キーと、復号化側で暗号化されたデータの復号化に使用される復号化キーを含みうる。
コンピューティングデバイスは、データを暗号化し、暗号化したデータを(例えば、別のコンピューティングデバイスに)送信する送信機として使用されるときには、暗号化コンピューティングデバイス、暗号化デバイス、暗号器とも称される。同様に、コンピューティングデバイスは、暗号化されたデータを(例えば、別のコンピューティングデバイスから)受信し、例えば、ユーザーによる開示のためなど、受信した暗号化データを復号化する受信機として使用されるときには、復号化コンピューティングデバイス、復号化デバイス、又は復号器とも称される。例えば、暗号器によって復号器に送信されるデータはウェブコンテンツになりうる。場合によっては、コンピューティングデバイスは、ある通信に対しては暗号器として、また。別の通信に対しては復号器として動作しうる。他の場合には、コンピューティングデバイスは専用の暗号器又は専用の復号器になりうる。
一又は複数の実施例では、真性ランダムビット(例えば、真のランダムビット、絶対的ランダムビット、又は絶対的真性ランダムビットとも称される)並びに、真性ランダムビットストリーム(例えば、真のランダムビットストリーム、絶対的ランダムビットストリーム、又は絶対的真性ランダムビットストリームとも称される)は、所望のレートで生成されうる。一実施例として、所望のビットレートはメガヘルツ領域からテラヘルツ領域の範囲になりうる。真性ランダムビットストリームはキーマテリアル(例えば、暗号化キー、復号化キー)として利用されうるか、キーマテリアルを導出するために利用されうる。所定にキーに関しては、キーの長さ(例えば、ビット数又はバイト数)は、ユーザー、アプリケーション、サーバー所有者、政府当局、及び/又は他の組織によって設定(場合によっては、強制)される所望のセキュリティレベルに基づいて指定されうる。正しく生成されたキーマテリアルは、攻撃者が総当たり攻撃法及び/又は他の方法によって破るのがより難しくなるため、長いキーマテリアルは一般的に高いセキュリティに関連付けられている。一態様では、キーは8ビット、128ビット、256ビット、又は512ビットになりうるが、キーはこれらの例示的な長さを下回る、上回る、或いはその間の任意のビット数を含みうる。幾つかの態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
一実施例では、真性ランダムビットは真性ランダムビット発生源を用いて生成されうる。一態様では、真性ランダムビット発生源は、真性ランダムビット発生回路であってよく、真性ランダムビット発生回路を含んでよく、或いは、真性ランダムビット発生回路の一部であってもよい。本開示の様々な実施例は、等しい確率で(又は、実質的に等しい確率で)1のビット値及び0のビット値を生成する、一又は複数の偏りのない真性ランダムビット発生器を利用するが、ランダムビット生成に一又は複数の偏ったランダムビット発生器が利用される場合には、様々な実施例が実装されうる。
一態様では、真性ランダムビット発生器は、大気雑音、熱雑音、量子プロセス、又は他の物理的な又は自然のプロセス、或いは自然エントロピー源など、ランダムであると期待される物理的プロセスの測定に基づいて、真性ランダムビットを生成しうる。これらの発生源又はこれらの発生源からの真のランダムな抽出は、真のランダムビット生成をもたらしうるが、その速度は限定的で、暗号作成に望ましい速度よりも遅くなりうる。一実施例では、真性ランダムビットストリームは、例えば、インターネット経由での大量のデータの安全な送信を促進するためなど、大容量及び/又は高速の真性ランダムビットに対する需要を満たすため、非常に大きい容量の真性ランダムビット又は非常に高いビットレートの真性ランダムビットを生成するようにスケールアップされうる。
真性ランダムビット発生源はまた、真のランダムビット発生源又は絶対的ランダムビット発生源と称されることもありうる。測定値に基づいて、物理的なプロセスの各測定は1又は0に関連付けられうる。真の偏りのないランダムビット発生器によって生成される真性ランダムビットは、1である絶対的な確率50%と、0である絶対的な確率50%を有する。このようなランダムビットは、真の偏りのないランダムビット、又は単に真のランダムビット、又は絶対的ランダムビットと称されることがある。一態様では、第3の真のランダムビットを生成するため、第1の真のランダムビットは第2の真のランダムビットと(例えば、ビットごとに)結合されうる。論理的な等価性を有するビットワイズ演算は、両関数項が同じ論理値を有するとき真(例えば、1)の間数値を、関数項が異なるときには偽(例えば、0)の間数値をもたらすビットワイズ演算で利用されうる。例えば、排他的論理和演算(排他的な分離演算、又はXOR演算)、或いは排他的否定論理和(XNOR演算)は、ビットワイズ演算として利用されうるが、他の演算も利用されうる。一態様では、ランダムビットストリーム又は真のランダムビットストリームは、キーマテリアル(例えば、暗号化キー)として使用されてもよく、或いはキーマテリアル(例えば、暗号化キー)を導出するために使用されてもよい。
場合によっては、物理的なプロセスは量子的な(例えば、事実上の量子力学的な)プロセスになりうる。一実施例として、レーザーは量子力学的に結合された光子状態を生成するために使用されうる。この結合の特性により、光子は直交モードで同時に存在することができる。このような直交モードは、典型的には可視偏光で認められ、例えば直交モードは水平及び垂直の直線偏光、或いは右及び左の円偏光になっている。量子力学的プロセスのランダム特性は、ランダムで等しい確率を有するため、どちらか一方の直交状態の測定値を引き起こす。1つの偏光状態測定値に0又は1のビット値を割り当てることによって、真のランダムビットストリームが生成されうる。この場合、真のランダムビットストリームは、量子ビット(キュビット)を含む量子ビットストリームと称されることもあり、キーマテリアルは量子キーを含むことがあり、量子キーと称されることもある。
幾つかの実施例では、ランダムビットストリームは、一又は複数のあらかじめ生成されたランダムビットストリームに基づいて生成されうる。場合によっては、真性ランダムビットストリームは、一又は複数のあらかじめ生成された真性ランダムビットストリームに基づいて生成されうる。一態様では、真性ランダムビットストリームは、一又は複数の真性ランダムビット発生源によって生成された一又は複数の真性ランダムビットストリームに基づいて生成されうる。一態様では、追加の真性ランダムビットストリームは、1つの真性ランダムビットストリームのビットをそれ自体と、及び/又は別の真性ランダムビットストリームのビットとインターミキシングすることによって生成されうる。例えば、真性ランダムビット発生源による真性ランダムビット生成を補うため、一又は複数の追加の真性ランダムビットストリームは、真性ランダムビット発生源によって生成される真性ランダムビットストリームのビットをそれ自体と、及び/又はあらかじめ生成された他の真性ランダムビットストリームとインターミキシングすることによって生成されうる。この実施例では、これらの追加の真性ランダムビットストリームは次いで、更なる追加の真性ランダムビットストリームを生成するため、それ自体と、及び/又はあらかじめ生成された他の真性ランダムビットストリームとインターミキシングされうる。
このように、様々な実施例を用いて、真性ランダムビット生成のレートは、一又は複数の真性ランダムビット発生源がすべての真性ランダムビットを生成する場合と比べて増大し、追加の真性ランダムビットストリームを生成するため、あらかじめ生成された真性ランダムビットストリーム上で実行されたインターミキシングの少なくとも量に応じて、2倍、3倍、10倍、100倍などスケールアップされる。例えば、真性ランダムビット発生源が真性ランダムビットを1Gbpsで生成し、真性ランダムビットストリームのインターミキシングが真性ランダムビット生成のレートを100倍高めているときには、真性ランダムビットが生成される有効レートは100Gbpsとなる。所望のセキュリティレベルは、キーマテリアルの長さ(例えば、暗号化キー内の真性ランダムビットの数)、及び/又は、暗号化を要求するデータの量及び/又はタイプを示しうるため、真性ランダムビット生成のレートは、このような真性ランダムビット生成によってサポートされるべき所望のセキュリティレベルに基づいてよい。
一又は複数の実施例では、平文データは暗号化され、暗号化されたデータはキーマテリアルを用いて復号化されうる(例えば、暗号化キーを用いて暗号化され、復号化キーを用いて復号化される)。幾つかの態様では、キーマテリアルは、真性ランダムビット発生源によって生成された真性ランダムビットストリームであってよく、或いは、真性ランダムビット発生源によって生成された真性ランダムビットストリーに基づいて導出されてよく、及び/又は、真性ランダムビット発生源によって生成された一又は複数の真性ランダムビットストリームから導出されてもよい。これに関連して、暗号化側では、真性ランダムビットストリームは、暗号化のために利用される暗号化キーとして使用されてよく、或いは、暗号化のために利用される暗号化キーとなるように導出されてもよい。幾つかの態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
一実施例では、暗号器は、暗号化される平文データ(例えば、ユーザーデータ)を受信しうる。暗号器は、例えば、平文データの暗号化及び/又は暗号化データの送信を促進するため、平文データを一又は複数のデータ部分に分割(例えば、フラグメント化、パーティション化)しうる。平文データの各データ部分の長さ(例えば、ビット数又はバイト数)は同じであっても、異なっていてもよい。場合によっては、データ部分の長さは、データ部分の暗号化に使用される暗号化キーの長さに基づきうる。例えば、暗号化キーの長さは、データ部分と同じか、データ部分よりも長くてもよい。これに関連して、暗号化キーの長さは、ユーザー、アプリケーション、サーバー所有者、政府当局、及び/又は他の組織による所望のセキュリティレベルに基づきうる。
暗号器は、第1の暗号化されたデータ部分を提供するため、第1の暗号化キーを用いて、平文データの第1のデータ部分を暗号化しうる。暗号器は、第1の暗号化キーに基づいて、平文データの第2のデータ部分の暗号化のため、第2の暗号化キーを生成しうる。場合によっては、第2の暗号化キーは、第1のデータ部分及び/又は第1の暗号化されたデータ部分に基づきうる。例えば、第2の暗号化キーは、第1の暗号化キー及び第1のデータ部分又は第1の暗号化されたデータ部分のうちの少なくとも1つで実行されるビットワイズ演算(例えば、XOR、XNOR、AND、OR、及び/又は他の演算)に基づきうる。暗号器は、反復的に、現在の暗号化キーを用いて現在のデータ部分を暗号化し、次のデータ部分の暗号化で使用される次の暗号化キーを生成し、次のデータ部分を暗号化するため、次の暗号化キーを使用するように切り替える。これに関連して、n番目の反復で、暗号器は、少なくとも、あらかじめ生成され、(n-1)番目のデータ部分を暗号化するために使用された(n-1)番目の暗号化キーに基づいて、n番目のデータ部分を暗号化するためのn番目の暗号化キーを生成しうる。n番目の暗号化キーはまた、(n-1)番目のデータ部分及び/又は(n-1)番目の暗号化されたデータ部分に基づきうる。
一態様では、第1の暗号化キーは、暗号器によって受信された真性ランダムビットストリームであってよく、或いは、暗号器によって受信された真性ランダムビットストリームに基づいてよい。真性ランダムビットストリームは、真性ランダムビット発生器によって(例えば、量子力学的プロセスに基づいて)生成されてよく、或いは、真性ランダムビットストリームをインターミキシングすることによって生成されてよい。平文データの残りの部分を暗号化するため、暗号器は次いで、その後の暗号化キーを(例えば、真性ランダムビット発生器から真性ランダムビットストリームを受信することなく)導出しうる。
暗号器は、暗号化されたデータ部分と、第1の暗号化キー及びその後の任意の暗号化キーに関連する情報とを復号器に送信しうる。この情報は、暗号器によって利用される第1の暗号化キー、並びに、その後の暗号化キー、及び/又は、復号器が対応する第1の復号化キーとその後の復号化キーを生成できるようにする情報を生成する暗号化プロセスを反復するたびに実行されるビットワイズ演算を示しうる。一態様では、このような情報は、暗号器と復号器との間のキー交換(例えば、量子キー交換)の一部として提供されうる。
場合によっては、暗号器は、一又は複数の暗号化されたデータ部分(例えば、データパケットのペイロードとして)を含むデータパケットを送信しうる。データパケットは、データパケット内の暗号化されたデータ部分の長さ(例えば、そのヘッダ内の)、データパケット内の暗号化されたデータ部分が平文データ全体の中のどこに適合するかを示す情報、及び/又は、一般的に、復号器によって復号化されるとき、データ部分のリアセンブリを促進する他の任意の情報を特定しうる。場合によっては、復号器に提供される情報により、暗号化されたデータ部分の復号化、及び復号化されたデータ部分からの平文データのリアセンブリが可能になる限り、平文データのデータ部分を第1のデータ部分、第2のデータ部分、第3のデータ部分などとして指定することは、任意に行われうる。
復号器で、復号器は暗号器から暗号化されたデータの第1のデータ部分(例えば、第1の暗号化されたデータ部分)を受信しうる。復号器は、第1の復号化されたデータ部分を提供するため、第1の復号化キーを用いて第1のデータ部分を復号化しうる。復号器は、第1の復号化キーに基づいて、暗号化されたデータの第2のデータ部分の復号化のための第2の復号化キーを生成しうる。第2の復号化キーはまた、第1の復号化されたデータ部分及び/又は第1の暗号化されたデータ部分に基づきうる。例えば、第2の復号化キーは、第1の復号化キー及び第1の復号化されたデータ部分又は第1の暗号化されたデータ部分のうちの少なくとも1つで実行されるビットワイズ演算に基づきうる。
復号器は、反復的に、現在の復号化キーを用いて現在の暗号化されたデータ部分を復号化し、次の暗号化されたデータ部分の復号化で使用される次の復号化キーを生成し、次の暗号化されたデータ部分を復号化するため、次の復号化キーを使用するように切り替える。これに関連して、n番目の反復で、復号器は、少なくとも、あらかじめ生成され、(n-1)番目の暗号化されたデータ部分を復号化するために使用された(n-1)番目の復号化キーに基づいて、n番目の暗号化データ部分を復号化するn番目の復号化キーを生成しうる。n番目の復号化キーはまた、(n-1)番目の暗号化されたデータ部分及び/又は復号化された(n-1)番目のデータ部分に基づきうる。これに関連して、復号器は、第1の復号化キー及びその後の任意の復号化キーに関連する情報を暗号器から受信しうる。例えば、復号器は、暗号器から受信した第1の暗号化キーを示す情報に基づいて、第1の復号化キーを読み出すか又は導出しうる。復号器は、演算に対応するその後の復号化キーを生成するオペランド(例えば、あらかじめ生成された復号化キー、あらかじめ復号化されたデータ部分、及び/又はあらかじめ暗号化されたデータ部分)に、並びに、対応する暗号化キーを生成するため、復号器によって利用されるオペランドに、ビットワイズ演算などの演算を実行しうる。
異なるデータ部分に対して、異なる暗号化キー(及び対応する復号化キー)を生成することは、平文データ全体の暗号化に単一の暗号化キーが使用されるのではないため、セキュリティの強化を促進する。例えば、復号化キーが復号器によって保存されず、攻撃者が復号化キーを読み出せる場合であっても、他の暗号化されたデータ部分は異なる復号化キーに関連付けられているため、攻撃者は暗号化されたデータ部分の1つのみを復号化するために復号化キーを使用することがある。一実施例では、暗号化されその後復号化される次の平文データに関して、暗号化と復号化のプロセスは、暗号器と復号器によって実行される新しいキー交換と共に、新たに開始される。
一又は複数の実施例では、キーマテリアル及び/又は関連データは使用後消去されうる。暗号化側では、キーマテリアルは暗号化キーであってよく、関連データは暗号化キーを用いて暗号化されたデータ(例えば、データ部分)であってよい。復号化側では、キーマテリアルは復号化キーであってよく、関連データは復号化キーを用いて復号化される暗号化されたデータ(例えば、暗号化されたデータ部分)であってよい。一態様では、キーマテリアルはランダムビット発生器(例えば、真のランダムビット発生器)によって生成されてよく、及び/又は、ランダムビットストリーム(例えば、真のランダムビットストリーム)から導出されてもよい。一態様では、キーマテリアルは一般的に、任意のビット列であって真性ランダムビットストリームである必要はなく、或いは真性ランダムビットストリームに基づいている必要はない。
一実施例では、コンピューティングデバイスは、第1のメモリの第1のデータ及び第2のメモリの第1のキーを受信しうる。コンピューティングデバイスは、論理回路を用いて、第1のデータ及び第1のキーに基づいて第2のデータを生成しうる。コンピューティングデバイスは、送信のため第2のデータを提供しうる。コンピューティングデバイスは、第1のキー及び/又は第1のデータを消去しうる。第1のキー及び/又は第1のデータの消去は、1クロックサイクル以内に(例えば、第2のデータが生成されるのと同じクロックサイクルで)起こりうる。例えば、消去は第2のデータを生成するクロックサイクルの2分の1で起こりうる。場合によっては、第1のキー及び/又は第1のデータは、所定のビット値又は所定のビット値の列によって上書きされる(例えば、すべてのメモリセルは値1で上書きされる)ことによって、消去されうる。他の場合には、第1のキー及び/又は第1のデータは、論理回路の結果を第1のメモリ及び/又は第2のメモリにフィードバックすることによって、消去されうる。一態様では、第1のキー及び/又は第1のデータは、異なる機構を用いることによって、消去されうる。キー及び/又は関連データの消去は、キー及び/又は関連データがそれぞれのメモリに保存されている持続時間を短縮し、したがって、攻撃者がこのような情報を取得することができる時間を短縮することによって、セキュリティを高める。加えて、キー及び/又は関連データの消去は、関連データを暗号化又は復号化するためのキーの使用後、キー及び/又は関連データの再利用を防止する。
暗号化側では、コンピューティングデバイスは暗号器であってよく、受信した第1のデータは平文データ(例えば、平文データ部分)で、第1のキーは暗号化キーである。場合によっては、第1のデータ部分はより大きな平文データの一部になりうる。これらの事例では、より大きな平文データの第2のデータ部分を暗号化するための第2の暗号化キーは、第1の暗号化キーに基づいて生成されうる。第2の暗号化キーはまた、第1のデータ部分及び/又は第1の暗号化されたデータ部分に基づきうる。
復号化側では、コンピューティングデバイスは復号器であってよく、受信した第1のデータは第1の暗号化されたデータで、第1のキーは復号化キーである。場合によっては、第1のデータはより大きな暗号化データの一部になりうる。これらの事例では、より大きな暗号化されたデータの第2の暗号化されたデータ部分を復号化するための第2の復号化キーは、第1の復号化キーに基づいて生成されうる。場合によっては、第2の復号化キーはまた、第1の暗号化されたデータ部分及び/又は第1の復号化されたデータ部分に基づきうる。
幾つかの実施例では、暗号化側では、平文データ及び/又は暗号化されたデータは、代替的に及び/又は追加的に、他の暗号化技術を用いて暗号化されうる。一実施例として、平文データ及び/又は暗号化されたデータは、非限定的な例として、データ暗号化規格(DES)暗号化アルゴリズム、高度暗号化規格(AES)暗号化アルゴリズム、他の対称暗号化アルゴリズム、非対称暗号化アルゴリズム、及び/又は他のタイプの暗号化など、一又は複数の暗号化技術を用いて、暗号化されうる(例えば、場合によっては、更に暗号化される)。同様に、復号化側では、暗号化されたデータ及び/又は復号化されたデータは、DES、AES、他の対称復号化アルゴリズム、非対称復号化アルゴリズム、及び/又は他のタイプの復号化のうちの一又は複数など、他の復号化技術を用いて、代替的に及び/又は追加的に復号化されうる。
ここで図を参照すると、図1は、データの暗号化/復号化及びデータ通信(例えば、送信、受信)が本開示の一又は複数の実施例により実装されうる、例示的なネットワーク環境100を示している。しかしながら、描かれている構成要素のすべてが必要なわけではなく、一又は複数の実施例は、図に示された追加の構成要素を含みうる。構成要素の配置及びタイプの変更は、本書に記載の特許請求の概念又は範囲を逸脱することなく、行われうる。追加の構成要素、異なる構成要素、及び/又はより少ない数の構成要素が提供されうる。
ネットワーク環境100は、コンピューティングデバイス105A~105D及びネットワーク110を含む。コンピューティングデバイス105A~105Dは、互いにデータを通信(例えば、送信及び/又は受信)しうる。例えば、コンピューティングデバイス105A~105Dは、データを暗号化、データを復号化、及び暗号化されたデータを通信(例えば、情報を安全に送信、受信、及び/又は保存)しうる。コンピューティングデバイス105A~105Dは、互いに直接、及び/又はネットワーク110を介して接続されうる。図1では、コンピューティングデバイス105A~105Dは、それぞれの接続115A~115Dを介してネットワーク110に接続され、コンピューティングデバイス105Aと105Cは接続115Eを介して直接接続されている。場合によっては、コンピューティングデバイス105A~105Dは、接続されている又はネットワーク110を介して接続されているプロセッサ間及び/又はプロセス間に存在しうる、プロセッサ間通信及び/又はプロセス間通信を用いるプロセッサ及び/又はプロセスになりうる。
コンピューティングデバイス105A~105Dは、別のシステム、デバイス、及び/又は、システム及び/又はデバイスの組み合わせと通信するため、一又は複数の通信(例えば、有線、無線、携帯電話、及び/又は光接続)を確立することができる任意のシステム、デバイス、及び/又は、システム及び/又はデバイスの組み合わせを含みうる。一実施例として、接続115A~115Eの各々は、コンピューティングデバイス105A~105D間の接続を促進するための、一又は複数の有線、無線、携帯電話、光、及び/又は他の接続を表しうる。コンピューティングデバイス105A~105Dは、非限定的な例として、サーバー、デスクトップサーバー、ウェブサーバー、クラウドベースサーバー、デスクトップコンピュータ、航空機コンピュータ、衛星コンピュータ、クライアントコンピュータ、ホストコンピュータ、POSデバイス、コンピュータクラスタ、ノートブックコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、携帯電話(例えば、スマートフォン)、PDA、タブレットなどを含みうる。一実施例では、コンピューティングデバイス105A~105Dのうちの任意の1つは、本書に記載のシステム、例えば、図3、図5、図6、図7A~図7C、図8A~図8C、図9A~図9C、図10、及び図15~図17に提示されている例示的なシステムを含みうる。一実施例では、コンピューティングデバイス105A~105Dのうちの任意の1つは、本書に記載のプロセス、例えば、図4、図11~図14、及び図18に提示されている例示的なプロセスを実行しうる。
接続115A~115Eは、データ(例えば、暗号化データ)の送信及び受信に利用されうる。場合によっては、接続115A~115Eは、通信したデータの暗号化及び復号化を促進するためのキー交換に利用されうる。例えば、コンピューティングデバイス105Aと105Cとの間の安全な通信を促進するため、コンピューティングデバイス105Aと105Cは、コンピューティングデバイス105Aと105Cとの間で通信されるデータの暗号化と復号化を促進するため、キー交換を実行しうる。キー交換に関連する通信は接続115Eを介して、接続115Aと115C及びネットワーク110を介して、及び/又は他の接続を介して存在しうる。
ネットワーク110は、コンピューティングデバイス105A~105Dに接続性を提供し、コンピューティングデバイス105A~105D間でデータ及び関連する情報(例えば、キー情報)の通信を可能にするため、全体的に又は部分的に連動して動作するネットワーク、或いは、個別のネットワークの任意の集合になりうる。例えば、コンピューティングデバイス105A~105Dが通信を行う際のネットワーク110は、非限定的な例として、インターネット、電話網、携帯電話網、ファイバーネットワーク、無線ネットワーク、クラウドベースネットワーク、POSネットワーク、プライベートネットワーク(例えば、イントラネット)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、或いはこれらの組み合わせを含みうる。1つの事例では、通信は、セキュアソケットレイヤ(SSL)又はトランスポートレイヤセキュリティ(TLS)など、安全な通信プロトコルによって実現されうる。
一実施例では、コンピューティングデバイス105A~105Dのうちの一又は複数はクライアントデバイスであって、コンピューティングデバイス105A~105Dのうちの一又は複数はサーバーデバイス(例えば、ホストサーバー)でありうる。例えば、コンピューティングデバイス105Aと105Bはクライアントデバイスであって、コンピューティングデバイス105Dはサーバーデバイスでありうる。この実施例では、コンピューティングデバイス105Cは、コンピューティングデバイス105Aと105Bにサービス提供するネットワークリソースをホストしうる。ネットワークリソースは、ウェブベースサービス(例えば、ニュースウェブサイト)、クラウドベースサービス(例えば、データストレージサービス)、POSサービス、アプリケーションサービス、及び/又は他のサービスを含みうる。ネットワーク110を介した通信は、クライアントツークライアント、クライアントツーサーバー、サーバーツークライアント、及び/又はサーバーツーサーバーになりうる。場合によっては、クライアントサーバーの階層的な関係はコンピューティングデバイス105A~105Dによって実装されうる。例えば、コンピューティングデバイス105Cは、コンピューティングデバイス105Aにサービスを提供するためのサーバーデバイスであってよく、一方で、コンピューティングデバイス105Cは、コンピューティングデバイス105Dからサービスを受けるためのクライアントデバイスであってよい。別の実施例として、コンピューティングデバイス105Cは、1つのアプリケーション(例えば、アプリケーションの態様)を目的としたコンピューティングデバイス105Dのサーバーデバイスであってよく、また、別のアプリケーション(例えば、アプリケーションの別の態様)を目的としたコンピューティングデバイス105Dのクライアントデバイスであってよい。
前述は、2つがクライアントデバイスで2つがサーバーデバイスであるコンピューティングデバイス105A~105Dについて説明しているが、ネットワーク環境100は、相互に及び/又はネットワーク110を介して通信を行う任意の数のコンピューティングデバイス(例えば、任意の数のクライアントデバイスと任意の数のサーバーデバイス)を含みうる。加えて、接続115A~115Eが非限定的な実施例として提供されている。コンピューティングデバイス105A~105Dに間には、より多くの、より少ない、及び/又は異なる接続が提供されうる。
図2は、データの暗号化/復号化及びデータ通信(例えば、送信、受信)が本開示の一又は複数の実施例にしたがって実装されうる、例示的なコンピューティングデバイス200を示している。しかしながら、描かれている構成要素のすべてが必要なわけではなく、一又は複数の実施例は、図に示された追加の構成要素を含みうる。構成要素の配置及びタイプの変更は、本書に記載の特許請求の概念又は範囲を逸脱することなく、行われうる。追加の構成要素、異なる構成要素、及び/又はより少ない数の構成要素が提供されうる。一実施例では、コンピューティングデバイス200は、図1のコンピューティングデバイス105A~105Dであってよく、これらを含んでよく、これらの一部であってよく、これらの任意の1つであってよい。一態様では、図2の破線はコンピューティングデバイス200の筐体を表しうる。
コンピューティングデバイス200は、処理回路205、通信回路210、一又は複数の出力デバイスインターフェース215、一又は複数の入力デバイスインターフェース220、メモリ225、電源230、他の構成要素235、及びバス240を含む。処理回路205は、メモリ225に保存されたマシン可読命令(例えば、ソフトウェア、ファームウェア、又は他の命令)を実行しうる。一実施例では、処理回路205は、図4、図11~図14、及び図18に提示された例示的なプロセスなど、本書に記載のプロセスを実施するための命令を実行しうる。処理回路205は、コンピューティングデバイス200の一又は複数の論理回路(例えば、暗号化論理回路、復号化論理回路など)であってよく、これらを含んでよく、或いはこれらの一部であってよい。処理回路205は、一又は複数のマイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)(例えば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)、フィールドプログラマブルシステムオンチップ(FPSC)、又は他のタイプのプログラマブルデバイス)、コーデック、及び/又は他の処理デバイスとして実装されうる。
通信回路210は、コンピューティングデバイス200の様々な構成要素間の、並びに、コンピューティングデバイス200と別のコンピューティングデバイスとの間の有線及び/又は無線の通信を取り扱い、管理し、或いは促進するように構成されうる。一実施例では、通信回路210は、無線通信回路(例えば、IEEE802.11規格、Bluetooth(商標)規格、ZigBee(商標)規格、又は他の無線通信規格)、セルラー回路、又は他の適切な通信回路を含みうる。場合によっては、通信回路210は、独自の無線通信プロトコル及びインターフェースに対して構成されうる。通信回路210は、無線通信用アンテナを含んでよく、或いは無線通信用アンテナと通信してもよい。したがって、一実施例では、通信回路210は、ハンドヘルドデバイス、ベースステーション、無線ルータ、ハブ、又は他の無線ネットワーキングデバイスとの無線リンクを確立することによって、無線通信を取り扱い、管理し、或いは促進しうる。
通信回路210は、イーサネットインターフェース、電力線モデム、デジタル加入者線(DSL)モデム、公衆交換電話網(PSTN)モデム、ケーブルモデム、及び/又は有線通信のための他の適切な構成要素など、有線ネットワークとインターフェースをとるように構成されうる。代替的に又は追加的に、通信回路210は独自の有線通信プロトコルとインターフェースを支持しうる。通信回路210は、有線通信を目的とした有線リンク(例えば、ネットワークルータ、スイッチ、ハブ、又は他のネットワークデバイスを介して)によって通信するように構成されうる。有線リンクは、電力線ケーブル、同軸ケーブル、光ファイバケーブル、或いは、対応する有線ネットワーク技術をサポートする他のケーブル又はワイヤによって実装されうる。
出力デバイスインターフェース215は、コンピューティングデバイス200を一又は複数の出力デバイスに連結しうる。出力デバイスインターフェース215は、グラフィクス及び/又はオーディオドライバカード、グラフィクス及び/又はオーディオドライバチップ、及び/又はグラフィクス及び/又はオーディオドライバプロセッサを含みうる。出力デバイスは、コンピューティングデバイス200が出力情報をユーザーに提供することを可能にしうる。例えば、出力デバイスは一又は複数のディスプレイデバイスを含みうる。ディスプレイデバイスは、コンピューティングデバイス200上で動作するウェブブラウザアプリケーション内のウェブコンテンツなどの情報をユーザーに表示するために利用されうる。一実施例として、このようなウェブコンテンツはサーバーデバイスによって暗号化され、コンピューティングデバイス200に送信されうる。コンピューティングデバイス200は暗号化されたウェブコンテンツを復号化し、ユーザーが利用できるように復号化されたウェブコンテンツをディスプレイデバイス上に表示する。
入力デバイスインターフェース220は、コンピューティングデバイス200を一又は複数の入力デバイスに結合しうる。入力デバイス227は、ユーザーがデータ及びコマンドをコンピューティングデバイス200に提供することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロフォン、カメラ(スチールカメラ又はビデオカメラ)、音声認識システム、キーボード(例えば、物理的なキーボード又は仮想キーボード)、カーソル制御デバイス(例えば、マウス)、タッチスクリーン、及び/又はユーザー入力をコンピューティングデバイス200に提供するための他のデバイスを含みうる。これに関連して、ユーザー入力は、音響(例えば、音声)、視覚、及び/又は触覚などの任意の形態で受信されうる。場合によっては、入力デバイスは、タッチスクリーンディスプレイなどのように、ディスプレイの一部と一体化されてもよく、また、ディスプレイの一部であってもよい。
メモリ225は、コンピューティングデバイス200の演算を促進するための情報を保存するために利用されうる。非限定的な実施例として、メモリ225は、読取専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ、不揮発性ランダムアクセスメモリ(NVRAM)などの不揮発性メモリを含みうる。メモリ225は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)などの揮発性メモリを含みうる。メモリ225は、コンピューティングデバイス200の様々な構成要素(例えば、処理回路205)によって実行される命令などの情報、真性ランダムビットストリームと暗号化されたデータなど、(例えば、通信回路210によって)送信されるようにバッファされた情報、及び/又は他の情報を保存しうる。
メモリ225は、オペレーティングシステム(OS)245、ユーザーアプリケーション250、及び/又は暗号化/復号化アプリケーション255など、様々なソフトウェアパッケージを保存しうる。OS245は、コンピューティングデバイス200のリソース(例えば、ハードウェアリソース)を管理し、他のプログラム(例えば、ユーザーアプリケーション250及び/又は暗号化/復号化アプリケーション255)に共通のサービスを提供する任意のソフトウェアであってよい。ユーザーアプリケーション250は、非限定的な実施例として、ウェブブラウジングアプリケーション、データベースアプリケーション、ワードプロセシングアプリケーション、電子メールアプリケーション、POSアプリケーション、及び/又は他のアプリケーションを含みうる。暗号化/復号化アプリケーション255は、非限定的な実施例として、データの暗号化と復号化、キーマテリアルの生成、ランダムビットストリーム(例えば、真性ランダムビットストリーム)の生成、及び/又は、データの暗号化/復号化とデータ通信に概して関連する他のプロセスを促進する命令を含みうる。
一実施例では、OS245、ユーザーアプリケーション250、暗号化/復号化アプリケーション255、及び/又は他のアプリケーションに関連する命令は、図4、図11~図14、及び図18など、本書に記載のステップ及び/又は操作を実装するため、処理回路205によって実行されうる。ユーザーアプリケーション250及び/又は暗号化/復号化アプリケーション255は、内部に具現化されたマシン可読プログラムを有する一又は複数のマシン可読媒体内で具現化されたコンピュータプログラム製品の形態を取りうる。場合によっては、命令は、別のマシン可読媒体から、或いは、別のシステム及び/又はデバイスからメモリ225へ、例えば通信回路210を経由して読み込まれうる。代替的に及び/又は追加的に、配線で接続された電気回路は、本書に記載のステップ及び/又は操作を実装するため、ソフトウェア命令の代わりに、或いはソフトウェア命令と組み合わせて使用されうる。本書で使用されているように、マシン可読媒体という用語は、実行用の処理回路205に命令を提供することに関与する任意の媒体を意味する。一又は複数のマシン可読媒体の任意の組み合わせが利用されうる。一実施例として、マシン可読媒体は、非一過性マシン可読記憶媒体(例えば、メモリ225)などのマシン可読記憶媒体を含みうる。
一又は複数の実施例では、安全な通信は、データの暗号化及び復号化のためのキーマテリアルを使用することによって促進されうる。幾つかの態様では、キーマテリアルは、暗号化キー及び一又は複数の真性ランダムビットストリームに基づいて生成された関連する復号化キーを含む。場合によっては、真性ランダムビットストリームの各ビットは、1又は0になる絶対的に等しい確率を有する。真性ランダムビットの高速生成は、図1のネットワーク110などのネットワークを通って流れる大量の情報に対して、安全な通信を促進しうる。
電源230は、コンピューティングデバイス200の様々な構成要素に電力を供給することなどによって、コンピューティングデバイス200を操作するための電力を供給しうる。電源230は、一又は複数のバッテリ(例えば、充電式バッテリ、非充電式バッテリ)であってよく、或いは含んでもよい。代替的に又は追加的に、電源230は一又は複数の太陽電池であってよく、或いは一又は複数の太陽電池を含んでもよい。太陽電池は、コンピューティングデバイス200を操作するため、及び/又は一又は複数の充電式バッテリを充電するため、電力を供給するように利用されうる。加えて、コンピューティングデバイス200は他の構成要素235を含みうる。非限定的な実施例として、他の構成要素235は、様々なアプリケーションに望ましいため、コンピューティングデバイス200の任意の機能の実装に使用されうる。一実施例として、コンピューティングデバイス200はレーダー画像アプリケーション用の構成要素を含み、レーダー画像アプリケーションによって収集されたデータは(例えば、処理回路205及び通信回路210を経由して)暗号化され送信される。バス240は、コンピューティングデバイス200の様々な構成要素間のデータ通信を促進するために利用されうる。
図3は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム300のブロック図を示す。システム300は、真性ランダムビット発生源305及び310、メモリ315、325、及び340、論理回路335、並びにクロック回路345を含む。真性ランダムビット発生源305及び310はそれぞれ、次いでメモリ315及び325に保存される真性ランダムビットストリームを生成しうる。図3に示したように、真性ランダムビット発生源305は、生成した真性ランダムビットストリームをメモリ315のメモリセル320A~320Hに提供し、真性ランダムビット発生源310は、生成した真性ランダムビットストリームをメモリ325のメモリセル330A~330Hに提供しうる。論理回路335は、メモリセル320A~320H及びメモリセル330A~330Hから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて、真性ランダムビットストリームを生成しうる。一態様では、メモリ315、325、及び/又は340はシフトレジスタになりうる。メモリセル320A~320H及びメモリセル330A~330Hはそれぞれ、真性ランダムビットストリーム生成を促進するように割り当てられたメモリ315及び325の一部を表しうる。メモリ315及び325は、他の目的に使用される他のメモリセル(図3には示していない)を含みうる。
一実施例では、真性ランダムビットストリームを生成するため、論理回路335は、メモリセル320A~320H及びメモリセル330A~330Hに保存された真性ランダムビットストリーム上でビットワイズ演算を実行しうる。1つの事例では、真性ランダムビットストリームの各ビットを生成するため、論理回路335は、メモリセル320A~320Hに保存された1ビットを1つのオペランドとして、また、メモリセル330A~330Hに保存された1ビットを別のオペランドとして取得し、これら2つのオペランドに対してビットワイズ演算を実行しうる。このような事例の一実施例として、論理回路335は、メモリセル320Aに保存された真性ランダムビット及びメモリセル330Aに保存された真性ランダムビットでのビットワイズ演算、メモリセル320Bに保存された真性ランダムビット及びメモリセル330Bに保存された真性ランダムビットでのビットワイズ演算などを実行しうる。
一態様では、ランダムビット発生源305及び310は、(例えば、各ビットは0又は1である絶対的な確率50%を有する)偏りのない真のランダムビットを生成する真のランダム発生回路でありうる。この実施例の幾つかの場合には、真性ランダムビット発生源305及び310は、量子力学プロセスに基づいて真のランダムビットを生成しうる。一態様では、論理回路335は、真性ランダムビット発生源305及び310から受信した真の絶対的ランダムビットを結合して、偏りのない真のランダムビットストリームである別の真性ランダムビットストリームを生成しうる。場合によっては、論理回路335は、真性ランダムビット発生源305及び310に関連するエントロピーを維持する真性ランダムビット発生源305及び310の真性ランダムビットストリームで、ビットワイズ演算を実行しうる。例えば、ビットワイズ演算は、2つの関数項が同じ論理値を有するときには真(例えば、1)の間数値を、2つの関数項が異なるときには偽(例えば、0)の間数値をもたらす論理的な等価性を有しうる。ビットワイズ演算は、例えば、以下の表1に示した真理値表を有するXOR演算(
で表される)になりうる。別の実施例として、ビットワイズ演算は、以下の表2に示した真理値表を有するXNOR演算になりうる。表1及び表2に示したように、これらのビットワイズ演算は、結果の半分が0で、半分の結果が1となる真理値表を有する。
図3に示したように、論理回路335は、送信用の生成した真性ランダムビットストリームを提供しうる。場合によっては、真性ランダムビット発生源305及び310は、論理回路335による処理を促進するため、(例えば、ビット数又はバイト数が)同じ長さの真性ランダムビットストリームを生成しうる。真性ランダムビットストリームは図1で8の長さを有し、論理回路335はメモリ315及び325の各々から8ビットを繰り返し読み出すが、所定の長さは任意のビット数になりうる。これに関連して、真性ランダムビットは、1ビットずつ(例えば、各ビットが生成されるたびに)、或いはひとまとまりのビットで(例えば、各ビットが生成された後にバッファされ、ひとまとまりにして)、メモリ315、325、及び/又は340に提供されうる。例えば、ビットごとの場合には(例えば、所定の長さが1)、論理回路335はメモリ315及び325の各々から1ビットを読み出し、ビットペアにビットワイズ演算を実行して真性ランダムビットを取得し、その結果をメモリ340に提供しうる。この場合、ビットストリームは連続ビットストリームとしてメモリ340に提供されうる。メモリ315、325、及び/又は340は、図3に示したものとは異なる数のメモリセルを有しうることに留意されたい。
場合によっては、真性ランダムビットストリームのビット数は、所望のセキュリティレベルに基づきうる。所望のセキュリティレベルに応じて、真性ランダムビットストリームのビット数が8ビット、128ビット、256ビット、又は512ビット、或いは一般的に任意の特定のビット数になりうる。一実施例として、48ビットの真性ランダムビットストリームが望まれるときには、48ビットの真性ランダムビットストリームは、真性ランダムビット発生源305によって生成された8ビット真性ランダムビットストリームの第1及び第2の組と、真性ランダムビット発生源310によって生成された8ビット真性ランダムビットストリームの第1及び第2の組と、真性ランダムビット発生源305及び310の、8ビット真性ランダムビットストリームの第1の組に基づいて、論理回路335によって生成された8ビット真性ランダムビットストリームの1つの組と、真性ランダムビット発生源305及び310の8ビット真性ランダムビットストリームの第2の組に基づいて、論理回路335によって生成された8ビット真性ランダムビットストリームの別の組との組み合わせ(例えば、連結)になりうる。別の実施例として、4ビットの真性ランダムビットストリームが望まれるときには、メモリ315、325、及び/又は340に保存されたビットの中から、サンプリングによって4ビットが取得されてもよい。このように、真性ランダムビット発生器305及び/又は310、メモリ315、325、及び/又は340、及び/又は論理回路335は、1回の反復(例えば、メモリ315、325、及び340の各々の8ビット真性ランダムビットストリームの1つの組)又は複数回の反復での所望のセキュリティレベルに必要なビット数を生成しうる。
クロック回路345は、真性ランダムビット発生源305及び310の動作と論理回路335を同期させるクロック信号を生成しうる。場合によっては、メモリ315、325、及び/又は340の動作はまた、クロック回路345のクロック信号を用いて同期されうる。例えば、メモリ315、325、及び/又は340がシフトレジスタであるときには、クロック信号はシフトレジスタのシフト動作を制御しうる。幾つかの態様では、論理回路335は、真性ランダムビット発生源305及び310によって生成されたランダムビットストリーム(例えば、真のランダムビットストリーム)に、複雑度が低く高速のビットワイズ演算を実行することによって、真性ランダムビットストリームの高速生成を促進し、これによって、真性ランダムビット発生源305及び310がすべての真性ランダムビットストリームを生成する場合と比較して、ランダムビットストリーム(例えば、真のランダムビットストリーム)が生成される速度を高めることができる。一実施例では、真性ランダムビットストリームはキーマテリアルとして利用されてよく、或いはキーマテリアルになるように導かれてもよい。
一実施例として、システム300は、コンピューティングデバイス200内に実装されうる。場合によっては、真性ランダムビット発生源305と310及び/又は論理回路335は、処理回路205の一部として実装されてよく、及び/又はメモリ315、325、及び/又は340は図2のメモリ225の一部になりうる。別の実施例では、システム300はコンピューティングデバイス200に連結されてよく、また、(例えば、キーマテリアルを生成するための)コンピューティングデバイス200によって利用されることになる生成された真性ランダムビットストリームを提供しうる。
図4は、本開示の一又は複数の実施例による絶対的真性ランダムビットストリームを生成するための、例示的なプロセス400のフロー図を示す。説明のため、本書では例示的なプロセス400が、図3のシステム300を参照して説明されているが、例示的なプロセス400は図3のシステム300に限定されない。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。
ブロック405では、第1の真性ランダムビットストリームはメモリ315に受信される。ブロック410では、第2の真性ランダムビットストリームはメモリ325に受信される。第1及び第2の真性ランダムビットストリームはそれぞれ、真性ランダムビット発生源305及び310によって提供されうる。ブロック415では、論理回路335は、第1及び第2の真性ランダムビットストリームを結合するビットワイズ演算を実行することによって、第3の真性ランダムビットストリームを生成する。一態様では、第3の真性ランダムビットストリームの各ビットは、第1の真性ランダムビットストリームのビットであるオペランドと、第2の真性ランダムビットストリームのビットである別のオペランドとで、ビットワイズ演算を実行することによって得られる。一実施例として、メモリ340に保存される(例えば、バッファされる)真性ランダムビットbS3,0を生成するため、メモリセル320A内の真性ランダムビットbS1,0は、メモリセル330A内の真性ランダムビットbS2,0と結合されうる。これに関連して、ビットワイズ演算は、真性ランダムビット発生源305及び310によって生成された真性ランダムビットストリームのエントロピーを保存しうる。例えば、ビットワイズ演算は、XOR演算又はXNOR演算など、論理的等価性を有しうる。
ブロック420では、第3の真性ランダムビットストリームがメモリ340に保存される。ブロック425では、送信のため、第3の真性ランダムビットストリームが提供される。第3の真性ランダムビットストリームは、キーマテリアル(例えば、暗号化キー)として使用するため、或いはキーマテリアルの導出で使用するため、処理回路205に提供されうる。例えば、第3の真性ランダムビットストリームは、(例えば、送信されるデータを暗号化するためのキーマテリアルとして使用するための)真性ランダムビットストリームへの(例えば、処理回路205からの)要求に応答して生成され、図2の処理回路205に送信されうる。一実施例では、第1、第2、及び第3のランダムビットストリームは、絶対的に真で偏りのないランダムビットストリームになりうる。1つの事例では、第1、第2、及び第3のランダムビットストリームは同じ長さを有しうる。
図5は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム500のブロック図を示す。システム500は、図3に示した真性ランダムビット発生源305、メモリ315、及びクロック回路345を含む。システム500はまた、論理回路505とメモリ510を含む。真性ランダムビット発生源305は、メモリ315に保存される真性ランダムビットストリームを生成しうる。論理回路505は、メモリ315のメモリセル320A~320Hから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて新しい真性ランダムビットストリームを生成する。一態様では、論理回路505は、新しい真性ランダムビットストリームの各ビットを生成するため、読み出した真性ランダムビットストリームの2つ以上のビットにビットワイズ演算(例えば、XOR演算)を実行しうる。論理回路505は、生成した真性ランダムビットストリームをメモリ510に保存しうる。一実施例では、メモリ315に提供される真性ランダムビットストリーム、並びに、論理回路505によって生成される真性ランダムビットストリームは真の偏りのないランダムビットストリームになりうる。一実施例として、システム500は、コンピューティングデバイス200内に実装されうる。場合によっては、真性ランダムビット発生源305及び/又は論理回路505は処理回路205の一部として実装され、及び/又はメモリ510は図2のメモリ225の一部になりうる。別の実施例では、システム500はコンピューティングデバイス200に連結されてよく、また、コンピューティングデバイス200によって利用されるように生成された真性ランダムビットストリームを提供してもよい。
図6は、本開示の一又は複数の実施例にしたがって、真性ランダムビットストリームを生成するためのシステム600のブロック図を示す。システム600は、真性ランダムビット発生源305、メモリ315、クロック回路345、及び論理回路605を含む。論理回路605は、メモリ315のメモリセル320A~320Hから真性ランダムビットストリームを読み出し、読み出した真性ランダムビットストリームに基づいて、真性ランダムビットbS4,6、bS4,5、bS4,4、bS4,3、bS4,2、bS4,1、及びbS4,0を生成しうる。論理回路605は、メモリに保存されたビットペア間でビットワイズ演算を実行することによって、各真性ランダムビットを生成しうる。これに関連して、論理回路605は、メモリ315からビットペアをそれぞれ読み出す結合器610A~610Gを含みうる。場合によっては、結合器610A~610Gは、隣接している、隣接しているものとして参照される、或いは隣接していると見なされるメモリセルからビットペアを読み出しうる。例えば、図6では、メモリセル320Aは、メモリセル320Bに隣接していると見なされ、メモリセル320Bは、メモリセル320A及び320Cなどに隣接していると見なされうる。場合によっては、結合器610A~610Gは、XOR演算又はXNOR演算など、論理的な等価性を有するビットワイズ演算を実装しうる。
一実施例では、クロック回路345は、真性ランダムビット発生源305、メモリ315、及び論理回路605の同期化を促進するため、クロック信号を生成する。論理回路605は、図5の論理回路505であってよく、論理回路505を含んでもよく、或いは論理回路505の一部であってもよい。論理回路605によって生成されるこれらの真性ランダムビットは、(例えば、メモリ510などのメモリに)保存するため、及び/又は送信するために提供されうる。
図6は、メモリ315の各ビットペアに対して1つの結合器を示しているが、システム600は、より少ない結合器、より多くの結合器、及び/又は異なる配置の結合器を含みうる。場合によっては、メモリ315のビットペアにビットワイズ演算を実行するため、1つの結合器が利用されてもよい。例えば、1クロックサイクルで、1つの結合器は、ビットbS1,1及びbS1,0に基づいて、ビットbS4,0を生成し、次のクロックサイクルで、1つの結合器は、ビットbS1,2及びbS1,1に基づいて、ビットbS4,1を生成し、その後の各クロックサイクルで同様に生成しうる。場合によっては、複数のビットが1つのクロックサイクルで生成されうるように、図6に示したように、2つ以上の結合器は並行して動作されてもよい。2つ以上の結合器を使用することにより、結合器が1つの場合よりも高いレートの真性ランダムビット生成が可能になるが、追加のチップ資産を利用してもよく、及び/又は、結合器が1つの場合よりも複雑な処理を追加してもよい。
幾つかの態様では、ビットbS4,6の後にビットを生成するため、真性ランダムビットはメモリ315に提供されうる。例えば、論理回路605は、メモリ315に提供される真性ランダムビットbS1,7及び真性ランダムビットbS1,8(図6には示していない)に基づいて、次の真性ランダムビットbS4,7を生成しうる。場合によっては、真性ランダムビットの生成に使用するため、メモリ315がメモリセル320A~320Hのみに割り当てられているときなどには、真性ランダムビットbS1,8を提供することは、メモリセル320A~320Hのうちの1つに現在保存されているビットを除去することに関連しうる。メモリ315に提供される新しいビット(例えば、bS1,8)は、メモリ315から除去されることになる、古い真性ランダムビット(例えば、bS1,0)をメモリ315にもたらしうる。これに関連して、メモリ315は、各クロックサイクルで、1つの新しい真性ランダムビットを受信し、1つの古い真性ランダムビットを除去しうる。一実施例として、一態様では、メモリ315は、メモリセル320Aに保存されているビットbS1,0をシフトアウトし、ビットbS1,7からbS1,1までをシフトオーバー(例えば、右シフト)するシフトレジスタとして実装されてもよく、その件、bS1,7はメモリセル320Hからメモリセル320Gへ動かされ、ビットbS1,1はメモリセル320Bからメモリセル320Aへ動かされるなどし、ビットbS1,8はメモリセル320Hにシフトされる。シフトレジスタ実装の実施例は、図7A~図7Cに関連して説明される。
図7A~図7Cは、本開示の一又は複数の実施例による順次クロックサイクルで真性ランダムビットを生成するためのシステム700のブロック図を示す。システム700は、真性ランダムビット発生源305、クロック回路345、メモリ705、及び論理回路715を含む。メモリ705はメモリセル710A~710Hを含む。一実施例では、図7A~図7Cのシステム700は、図6のシステム600のシフトレジスタの実装であってよく、或いはシステム600のシフトレジスタの実装とみなされてもよい。例えば、メモリ705のメモリセル710A~710Hはそれぞれ、メモリ315のメモリセル320A~320Hに対応しうる。クロックサイクルは、クロック回路345によって定義されうる。
図7Aは、クロックサイクル1の間の真性ランダムビットの生成を示している。図7Aでは、メモリセル710A、710B、…、710Hはそれぞれ、ビットbS1,0、bS1,1、…、bS1,7を含む。論理回路715はメモリセル710A及び710Bからそれぞれ、ビットbS1,0及びbS1,1を受信し、ビットワイズ演算(例えば、XOR演算又はXNOR演算)を実施して、ビットbS4,0を生成する。メモリ705は次に、メモリセル710AのビットbS1,0がシフトアウトされ、メモリセル710BのビットbS1,1が右シフトされてメモリセル710Aに入り、メモリセル710HのビットbS1,7が右シフトされてメモリセル710Gに入るなどのように、シフトされうる。メモリ705は、メモリセル710Hに、真性ランダムビット発生源305からの新しい真性ランダムビットbS1,8を受信しうる。クロックサイクル1の終了時には、メモリセル710A、710B、…、710Hはそれぞれ、ビットbS1,1、bS1,2、…、bS1,8を含む。一態様では、真性ランダムビット発生源305の真性ランダムビットストリームのビットペアのこのような組み合わせは、真性ランダムビットストリームのそれ自身とのインターミキシングと称されることがある。
図7Bは、クロックサイクル2の間の真性ランダムビットの生成を示している。論理回路715は、メモリセル710A及び710BからそれぞれビットbS1,1及びbS1,2を受信し、ビットワイズ演算を実行し、ビットbS4,1を生成しうる。メモリ705は次いで、ビットbS1,1をメモリセル710Aからシフトアウトし、ビットbS1,2からbS1,8までを右シフトし、真性ランダムビット発生源305から受信した新しいビットbS1,9をシフトしてメモリセル710Hに入れるように、シフトされうる。図7Cは、クロックサイクル3の間の真性ランダムビットの生成を示している。論理回路715は、メモリセル710A及び710BからそれぞれビットbS1,2及びbS1,3を受信し、ビットワイズ演算を実行し、ビットbS4,2を生成しうる。その後のクロックサイクルは、キーマテリアルの生成に使用するなどの目的で、保存及び/又は送信される真性ランダムビットストリームの一部となりうる、その後のビットを生成しうる。一態様では、ランダムビット発生源305は、偏りのない真のランダムビットストリームを生成しうる。一態様では、論理的等価性(例えば、XOR又はXNOR真理値表)を有するビットワイズ演算がインターミキシングに使用されるときには、絶対的に偏りのない真のランダムビットストリームのそれ自身とのインターミキシングは、別の絶対的に偏りのない真のランダムビットストリームを生成する。
図8A~図8Cは、本開示の一又は複数の実施例による順次クロックサイクルで真性ランダムビットを生成するためのシステム800のブロック図を示す。図7A~図7Cの説明は一般的に、本書に記載の差異の実施例と共に、図8A~図8Cに適用される。図8A~図8Cでは、図7A~図7Cの論理回路715によって実行されるように、各クロックサイクルでメモリセル710A及び710Bに保存されたビットを受信及び処理するのではなく、論理回路805は各クロックサイクルに、メモリセル710A及び710Cに保存されたビットを受信し処理する。
図8Aは、クロックサイクル1の間の真性ランダムビットの生成を示している。図8Aでは、論理回路805は、メモリセル710A及び710Cからそれぞれ、ビットbS1,0及びbS1,2を受信し、ビットワイズ演算(例えば、XOR演算)を実行してビットbS5,0を生成する。メモリ705は次に、メモリセル710AのビットbS1,0がシフトアウトされ、メモリセル710BのビットbS1,1が右シフトされてメモリセル710Aに入り、メモリセル710HのビットbS1,7が右シフトされてメモリセル710Gに入るなどのように、シフトされうる。メモリ705は、メモリセル710Hに、真性ランダムビット発生源305からの新しい真性ランダムビットbS1,8を受信しうる。クロックサイクル1の終了時には、メモリセル710A、710B、…、710Hはそれぞれ、ビットbS1,1、bS1,2、…、bS1,8を含む。
図8Bは、クロックサイクル2の間の真性ランダムビットの生成を示している。論理回路805は、メモリセル710A及び710BからそれぞれビットbS1,1及びbS1,3を受信し、ビットワイズ演算を実行し、ビットbS5,1を生成しうる。メモリ705は次いで、ビットbS1,1をメモリセル710Aからシフトアウトし、ビットbS1,2からbS1,8までを右シフトし、真性ランダムビット発生源305から受信した新しいビットbS1,9をシフトしてメモリセル710Hに入れるように、シフトされうる。図8Cは、クロックサイクル3の間の真性ランダムビットの生成を示している。論理回路805は、メモリセル710A及び710CからそれぞれビットbS1,2及びbS1,4を受信し、ビットワイズ演算を実行し、ビットbS5,2を生成しうる。その後のクロックサイクルはその後のビットを生成する。
図7A~図7C及び図8A~図8Cに対してクロックサイクルはそれぞれ、クロックサイクル1、2、及び3と称されるが、これらのインデックス(例えば、1、2、3)は、これらのクロックサイクルが時間的に隣接したクロックサイクルであることを示すために便宜上利用されている。これに関連して、クロックサイクル1以前に発生したクロックサイクルがありうる。システム700及び800は、真性ランダムビット発生源305の真性ランダムビットストリームが、異なる点(例えば、メモリセル710Aと710Bはシステム700で混ざり合い、メモリセル710Aと710Cはシステム800で混ざり合う)で、それ自身とインターミックスされうるように、並行に処理されうる。一態様では、一又は複数の論理回路は、メモリセル710A~710Hの任意のペアに保存されたビットを結合する。このような並列のインターミキシングは、より高いレートの真性ランダムビットストリーム生成を促進しうる。
図9A~図9Cは、本開示の一又は複数の実施例による順次クロックサイクルに対して、真性ランダムビットストリームを生成するためのシステム900のブロック図を示している。図7A~図7C、及び図8A~図8Cの説明は概して、本書に記載の差異の例と共に、図9A~図9Cに当てはまる。システム900は、真性ランダムビット発生源305及びメモリセル910A~910Hを含む。一実施例では、メモリセル910A~910Hは、メモリ315の一部になりうる。場合によっては、メモリセル910A~910Hは、シフトレジスタの一部になりうる。図9A~図9Cでは、メモリセル910Aからメモリセル910B~910Hの各々への接続915は、メモリセル910Aに保存されたランダムビットがメモリセル910B~910Hに保存されたランダムビットに結合されることを簡潔に示している。この結合は論理回路によって実行されてよく、XOR演算又はXNOR演算を含みうる。例えば、論理回路は、各ビットペアを受信し、ビットペアを結合する一又は複数の結合器を含みうる。
図9Aは、クロックサイクル1の間のランダムビットストリームの生成を示している。図9Aでは、メモリセル910A、910B、…、910Hはそれぞれ、ビットbS1,0、bS1,1、…、bS1,7を含む。ビットbS1,0は、bS1,1、bS1,2、bS1,3、bS1,4、bS1,5、bS1,6、及びbS1,7の各々と結合され、列920に示したように、ビットbS4,0、bS5,0、bS6,0、bS7,0、bS8,0、bS9,0、及びbS10,0をそれぞれ生成しうる。一態様では、メモリセル910A~910Hは、シフトレジスタによって実装されうる。ビットワイズ演算が実行された後、シフトレジスタは、メモリセル910AでビットbS1,0がシフトアウトされ、残りのビットは右シフトされ、新しいビット(例えば、真性ランダムビット)bS1,8が、真性ランダムビット発生源305からメモリセル910Hに提供されるように、シフトされる。別の態様では、クロックサイクル2で、真性ランダムビットbS1,1が真性ランダムビットbS1,2、bS1,3、bS1,4、bS1,5、bS1,6、bS1,7、及びbS1,8と結合されるように、シフトレジスタではなく、メモリ参照が適宜調整されうる。クロックサイクル1の終了時には、メモリセル910A、910B、…、910Hはそれぞれ、ビットbS1,1、bS1,2、…、bS1,8を含む。
図9Bは、クロックサイクル2の間の真性ランダムビットストリームの生成を示している。ビットbS1,1は、真性ランダムビットbS1,2、bS1,3、bS1,4、bS1,5、bS1,6、bS1,7、及びbS1,8と結合され、列925に示したように、真性ランダムビットbS4,1、bS5,1、bS6,1、bS7,1、bS8,1、bS9,1、及びbS10,1をそれぞれ生成しうる。図9Cは、クロックサイクル7の間の真性ランダムビットの生成を示している。ビットbS1,6は、bS1,7、bS1,8、bS1,9、bS1,10、bS1,11、bS1,12、及びbS1,13の各々と結合され、列930に示したように、ビットbS4,6、bS5,6、bS6,6、bS7,6、bS8,6、bS9,6、及びbS10,6をそれぞれ生成しうる。
図9Dは、本開示の一又は複数の実施例による、順次クロックサイクルでの真性ランダムビットストリームの生成を示す。これに関連して、図9Dは、クロックサイクル1、2、及び7に対してそれぞれ、介在するクロックサイクルに関連する列と共に、図9A、図9B、及び図9Cの列920、925、及び930を含む行列935を示す。図9A~図9Dに示したように、真性ランダムビット発生源305によって生成された14個の真性ランダムビットbS1,0~bS1,13は、7個の7ビット真性ランダムビットストリームB1~B7の生成に使用される。この実施例では、真性ランダムビット発生源305によって生成された2組の7個の真性ランダムビット(例えば、bS1,0~bS1,6及びbS1,7~bS1,13)は、9個の7ビット真性ランダムビットストリーム(例えば、B1~B7、更にbS1,0~bS1,6、及びbS1,7~bS1,13)を提供する。
場合によっては、クロックサイクルに対して生成される真性ランダムビットは、追加のビットストリームを提供するようにサンプリングされうる。一実施例として、真性ランダムビットストリームB8~B14を提供するため、B1~B7の各々から1ビットがサンプリングされうる。例えば、真性ランダムビットストリームB8は、列920(例えば、bS4,0、bS5,0、bS6,0、bS7,0、bS8,0、bS9,0、及びbS10,0)によって提供される真性ランダムビットを含みうる。真性ランダムビットストリームB8は、真性ランダムビットストリームB1~B7の各々のゼロ番目のビットをサンプリングすることによって、或いは、クロックサイクル1の間に送信及び/又は保存用の真性ランダムビットストリームB8を提供することによって、取得されうる。ビットストリームB1~B7をサンプリングするための他の方法は、追加の真性ランダムビットストリームを生成するため、代替的に及び/又は追加的に利用されうる。したがって、図9A~図9Dに示した実施例では、真性ランダムビット発生源305によって生成された2組の7個の真性ランダムビットは、多数の追加の7ビット真性ランダムビットストリームを生成するために利用されうる。所望のセキュリティレベルが7ビットを超えるビットストリームを利用する場合には、これらの複数の7ビット真性ランダムビットストリームは、所望の長さの真性ランダムビットストリームを得るため、連結されるか、結合されてもよい。所望のセキュリティレベルが7ビット未満の真性ランダムビットストリームを利用する場合には、所望の長さの真性ランダムビットストリームを得るため、7ビット真性ランダムビットストリームがサンプリングされうる。
図10は、本開示の一又は複数の実施例による、一又は複数の真性ランダムビットストリームのインターミキシングでの追加的な真性ランダムビットストリームの生成を示す。インターミキシングは、図9Dに示したビットストリームB1~B7で実行されうる。bS4,6からbS4,5への接続1005は、真性ランダムビットストリームB1のそれ自身とのインターミキシング(例えば、bS4,6はビットbS4,5と結合される)を示す省略表現である。一実施例では、真性ランダムビットストリームB1はメモリ(例えば、シフトレジスタ)に提供され、インターミキシングを促進する論理回路に連結されうる。このようなシステムは、図7A~図7Cに示したメモリ705及び論理回路715に構造が類似しうる。場合によっては、他の真性ランダムビットストリームB2~B7の各々はまた、同様の及び/又は異なる方法でそれ自身とインターミックスされうる。bS10,6からbS8,4への接続1010は、真性ランダムビットストリームB7と真性ランダムビットストリームB5とのインターミキシング(例えば、bS10,6はビットbS8,4と結合される)を示す省略表現である。一又は複数のメモリは、このようなインターミキシングを促進するため、真性ランダムビットストリームB7及びB5を保存するため、提供されうる。このように、一態様では、真性ランダムビットストリーム内でのインターミキシング、及び/又は、異なる真性ランダムビットストリーム間でのインターミキシングを促進するため、メモリは適宜提供されうる。
図11は、本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセス1100のフロー図を示す。説明のため、例示的なプロセス1100は、図7A~図7Cのシステム700を参照して本書に記載されているが、例示的なプロセス1100は図7A~図7Cの例示的なシステム700に限定されない。例えば、代替的に及び/又は追加的に、例示的なプロセス1100は、図8A~図8Cの例示的なシステム800、或いは図9A~図9Cの例示的なシステム900と共に利用されうる。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。
ブロック1105では、第1の真性ランダムビットストリームはメモリ705に受信される。第1の真性ランダムビットストリームは、真性ランダムビット発生源305によって提供されうる。ブロック1110では、論理回路715は第2の真性ランダムビットストリームを生成し、この第2の真性ランダムビットストリームの各ビットは、第1の真性ランダムビットストリームの各ビットペアに基づいている。ブロック1115では、第2の真性ランダムビットストリームは保存される。図7A~図7Cでは、ビットペアはメモリセル710A及び710Bに保存されたビットを含む。この実施例では、クロックサイクル1の間に、真性ランダムビットbS4,0を取得するため、真性ランダムビットbS1,0は、(例えば、XOR演算を実行する)論理回路715を用いて、真性ランダムビットbS1,1と結合される。クロックサイクル2の間に、真性ランダムビットbS4,1を取得するため、真性ランダムビットbS1,1は論理回路715を用いて真性ランダムビットbS1,2に結合される。場合によっては、第2の真性ランダムビットストリームの各ビットは、論理回路715によって出力されるにつれて、保存されうる。
図12は、本開示の一又は複数の実施例による、真性ランダムビットストリームを生成するための例示的なプロセス1200のフロー図を示す。説明のため、例示的なプロセス1200は、図7A~図7Cのシステム700を参照して本書に記載されているが、例示的なプロセス1200は図7A~図7Cの例示的なシステム700に限定されない。例えば、代替的に及び/又は追加的に、例示的なプロセス1100は、図8A~図8Cの例示的なシステム800、或いは図9A~図9Cの例示的なシステム900と共に利用されうる。一態様では、例示的なプロセス1200は、図11の例示的なプロセス1100のブロック1110で実装されうる。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。
ブロック1205で、論理回路715は、生成される第2の真性ランダムビットストリームの現ビット(current bit)に関連付けられるビットペアを、メモリ705から取得(例えば、受信、読み出し)する。ブロック1210では、論理回路715は、現ビットを取得するため、ビットペアに対してビットワイズ演算を実行する。図7Aに示した実施例では、論理回路715は、メモリセル710A及び710Bにそれぞれ保存されたビットペアbS1,0及びbS1,1に基づいて、現ビットbS4,0を生成する。ブロック1215では、論理回路715は、第2の真性ランダムビットストリームのより多くのビットが生成される必要があるかどうかを判断する。例えば、システム700によって生成されることになるビットストリームの長さは、所望のセキュリティレベルに基づいてよく、セキュリティレベルは時間と共に、及び/又は人の入力に基づいて変化しうる。例えば、ユーザーは、論理回路715が所望のセキュリティに適した長さの真性ランダムビットストリームを生成することができるよう、所望の長さの真性ランダムビットストリームを直接指定してもよく、及び/又は、所望のセキュリティレベルを指定してもよい。
第2の真性ランダムビットストリームのより多くのビットが生成される必要があると論理回路715が判断すると、プロセス1200はブロック1220へ進む。ブロック1220では、ビットbS4,1の生成を促進するため、論理回路715は次のビットbS4,1を現ビットとして設定し、ブロック1205へ進む。一態様では、メモリ705がシフトレジスタであるときには、次の繰り返しに備えて、メモリ705のビットはブロック1220で1ビットだけシフトされうる。論理回路715が、第2の真性ランダムビットストリームには、これ以上生成されなければならないビットはない(例えば、第2の真性ランダムビットストリームが指定した長さまで構築された)と判断すると、処理1200はブロック1225に進む。ブロック1225では、システム700は、待ち行列内の命令(例えば、指定された長さの次の真性ランダムビットストリームの生成)の実行を、或いは、待ち行列内の命令がないときには、命令の待機を継続する。
前述は、一又は複数の真性ランダムビット発生源(例えば、305、310)の真性ランダムビットに基づいた、及び/又は、真性ランダムビット発生源の真性ランダムビットから導出された、追加の真性ランダムビットストリームを生成する例示的な方法を示していることに留意されたい。一実施例では、ランダムビットは、絶対的に偏りのない真のランダムビットになりうる。真性ランダムビットは、更なる真性ランダムビットを生成するため、結合されうる。真性ランダムビットストリームの他のサンプリング、及び/又は、真性ランダムビットストリームのインターミキシングは、追加の真性ランダムビットストリームの生成に利用されうる。このように、様々な実施例で、真性ランダムビット及び関連する真性ランダムビットストリームの生成速度は、真性ランダムビット及び真性ランダムビットストリームが一又は複数の真性ランダムビット発生源によって厳密に生成される場合と比較して、複数倍(例えば、2倍、5倍、10倍、100倍、1000倍、又はそれ以上)に増大しうる。場合によっては、生成された真性ランダムビットはそれ自体が、真性ランダムビット発生源305及び310などの、ランダムビット発生源又は乱数発生源であってもよい。場合によっては、生成された真性ランダムビットはビットごとに(例えば、各ビットが生成されるたびに)、或いはひとまとまりのビットで(例えば、各ビットが生成された後にバッファされ、ひとまとまりにして)提供されうる。
一又は複数の実施例では、データはキーマテリアルを用いて暗号化され復号化されうる(例えば、暗号化キーを用いて暗号化され、対応する復号化キーを用いて復号化される)。暗号化側では、暗号器は暗号化される平文データ(例えば、ユーザーデータ)を受信しうる。復号器側では、復号器は復号化される暗号化データ(例えば、保存及び/又はユーザーが使用するため)を受信しうる。幾つかの態様では、キーマテリアルは、例えば、図3~図6、図7A~図7C、図8A~図8C、図9A~図9D、及び図10~図12に記載された機構によるなど、真性ランダムビット発生器(例えば、305及び/又は310)によって生成された一又は複数の真性ランダムビットストリームであってよく、或いは、これらの真性ランダムビットストリームに基づいて導出されてもよい。幾つかの態様では、キーマテリアルは、ランダムビットストリームや真のランダムビットストリームである必要はなく、或いは、これらに基づく必要はない。
図13は、本開示の一又は複数の実施例による、反復的なデータ暗号化及び暗号化キー生成を促進するための例示的なプロセス1300のフロー図を示している。説明のため、本書では例示的なプロセス1300が、図1の例示的なネットワーク環境100を参照して説明されているが、例示的なプロセス1300は図1の例示的なネットワーク環境100に限定されない。更には、説明のため、コンピューティングデバイス105Dが暗号器で、コンピューティングデバイス105Aが復号器になっている。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。
ブロック1305では、コンピューティングデバイス105Dは、暗号化される平文データを受信する。平文データは、コンピューティングデバイス105Dのメモリ(例えば、メモリ225)に保存されうる。例えば、コンピューティングデバイス105Dは、ウェブサイトをホストするサーバーであってよく、平文データはウェブコンテンツを含む。この実施例では、コンピューティングデバイス105Dは、コンピューティングデバイス105Aから、関連するウェブコンテンツについての要求を受信すると、平文データを読み出してもよい。ブロック1310では、コンピューティングデバイス105Dは、平文データを暗号化される一又は複数のデータ部分(例えば、フラグメント、パーティション)に分割する。例えば、コンピューティングデバイス105Dは、平文データの暗号化、及び/又は、暗号化されたデータの送信を促進するため、平文データを一又は複数のデータ部分に分割しうる。平文データの各データ部分の長さ(例えば、ビット数又はバイト数)は同じであっても、異なっていてもよい。場合によっては、データ部分の長さ(例えば、ビット数又はバイト数)は、データ部分の送信に用いられる通信プロトコル、及び/又は、当該部分の暗号化に用いられる暗号化キーの長さに基づきうる。これに関連して、暗号化キーの長さは、(例えば、ユーザーによって設定される、サーバーの所有者、政府当局などによって要求される)所望のセキュリティレベルに基づきうる。
ブロック1315では、コンピューティングデバイス105Dは、論理回路(例えば、暗号化論理回路とも称される)を用いて、暗号化された第1のデータ部分提供する第1の暗号化キーを使用して平文データの第1のデータ部分を暗号化する。平文データの第1のデータ部分、第1の暗号化キー及び暗号化された第1のデータ部分は、コンピューティングデバイス105Dのメモリ(例えば、メモリ225)に保存(例えば、バッファ)されうる。場合によっては、第1のデータ部分になるとみなされる平文データのデータ部分は、コンピューティングデバイス105Dによって、任意に選択されうる。一態様では、コンピューティングデバイス105Dは、第1のデータ部分と第1の暗号化キーにビットワイズ演算を適用することによって、第1のデータ部分を暗号化しうる。一実施例では、暗号化されたデータ部分の各ビットを取得するため、コンピューティングデバイス105Dは、第1のデータ部分の1ビットと第1の暗号化キーの対応する1ビットにXOR演算を実行するが、一般的に、XNOR演算、AND演算、OR演算、その他の演算、或いはこれらの組み合わせなど、任意のビットワイズ演算が使用されうる。場合によっては、第1の暗号化キーは、一又は複数の真性ランダムビット発生源(例えば、図3の305及び/又は310)の一又は複数の真性ランダムビットストリームであってよく、或いは、これらに基づいて導出されてもよい。他の場合には、第1の暗号化キーは真性ランダムビットストリームではないか、真性ランダムビットストリームに基づいていない。
ブロック1320では、コンピューティングデバイス105Dは、第1のデータ部分の暗号化に使用される第1の暗号化キーを示す情報、及びその後の任意の暗号化キーを示す情報を送信する。このような情報は、コンピューティングデバイス105A(例えば、この実施例では復号器)に、(例えば、第1の暗号化キーに対応する)第1の復号化キー、及び(例えば、その後の暗号化キーに対応する)その後の任意の復号化キーをどのように生成するかを示唆しうる。場合によっては、第1の暗号化キー及びその後の暗号化キー(もしあれば)を示す情報は、コンピューティングデバイス105Aと105Dとの間のキー交換の一部として提供されうる。情報は、コンピューティングデバイス105Dのメモリ(例えば、メモリ225)に保存されうる。
ブロック1325では、コンピューティングデバイス105Dは、第1の暗号化されたデータ部分をコンピューティングデバイス105A(例えば、接続115Dと115A、及びネットワーク110)に送信する。場合によっては、コンピューティングデバイス105Dは、第1の暗号化されたデータ部分をデータパケットに(例えば、データパケットのペイロードとして)送信する。場合によっては、データパケットは、第1の暗号化されたデータ部分の長さを示すヘッダ、(例えば、復号器によってデータ部分のリアセンブリを促進するため)平文データ全体の中で第1のデータ部分が適合する箇所を示す情報、及び/又は、第1のデータ部分及び/又はその暗号化に関連する他の情報を含みうる。
ブロック1330では、コンピューティングデバイス105Dは、ブロック1305で受信した暗号化すべき平文データに、より多くのデータ部分があるか否かを判断する。暗号化すべきより多くのデータ部分がある場合には、プロセス1300はブロック1335に進む。ブロック1335では、コンピューティングデバイス105Dは、第1の暗号化キー並びに暗号化された第1のデータ部分又は平文の第1のデータ部分のうちの少なくとも1つに基づいて、平文データの第2のデータ部分の暗号化のための第2の暗号化キーを生成する。これに関連して、第2の暗号化キーは、第1の暗号化キー及び第1の暗号化されたデータ部分、第1の暗号化キー及び第1の平文データ部分、或いは第1の暗号化キー及び第1の暗号化されたデータ部分と第1の平文データ部分との組み合わせに基づいて生成されうる。
一態様では、第1の平文データ部分及び第1の暗号化されたデータ部分は、同じ長さを有しうる。第1の暗号化キーは、少なくとも第1の平文データ部分の長さである長さを有しうる。一実施例として、第2の暗号化キーは、第1の暗号化キーと第1の平文データ部分のスクランブルしたバージョンにビットワイズ演算を実行することによって生成されうる。この実施例では、第1の平文データ部分のスクランブルしたバージョンは、介在ビット(intervening bits)に関して、第1の平文データ部分の第1ビットがスクランブルされた第1の平文データ部分の最終ビットになるように、第1の平文データ部分を反転すること(flipping)を含みうる。第2の暗号化キーがどのように生成されるかを示す情報は、ブロック1320でコンピューティングデバイス105Aに送信されうる。この情報は、ビットワイズ演算、スクランブリング、及び/又は、第2の暗号化キーを生成するために使用される平文の一部及び/又は第1の暗号化されたデータ部分(又は、これらの組み合わせ)を特定しうる。
ブロック1340では、コンピューティングデバイス105Dは、第1の暗号化キーから第2の暗号化キーに切り替え、第2の暗号化キーを用いて平文データの第2の部分を暗号化する。ブロック1345では、コンピューティングデバイス105Dは、第2の暗号化されたデータ部分をコンピューティングデバイス105Aへ送信する。プロセス1300は次にブロック1330へ進み、ここでコンピューティングデバイス105Dは、平文データが第3の暗号化キーを用いて暗号化される第3のデータ部分を有するか否かを判断し、第3の暗号化キー(例えば、第3のデータ部分が存在するとき)は、第2の暗号化キー、並びに、第2の暗号化されたデータ部分又は第2の平文データ部分のうちの少なくとも1つに基づいて生成される。
ブロック1330、1335、1340、及び1345は、暗号化対象の平文データのすべての部分が暗号化されるまで、反復的に実行されうる。例えば、n番目の繰り返しでは、平文データのn番目の部分を暗号化するためのn番目の暗号化キーは、(n-1)番目の暗号化キー、並びに、(n-1)番目のデータ部分又は暗号化された(n-1)番目のデータ部分(例えば、(n-1)番目の暗号化キーを用いて暗号化された(n-1)番目のデータ部分)のうちの少なくとも1つに基づいて生成されうる。コンピューティングデバイス105Dがブロック1330で、暗号化対象のデータ部分がこれ以上ないと判断すると、プロセス1300はブロック1350へ進む。ブロック1350では、コンピューティングデバイス105Dは、既存の命令を継続するか、新しい命令を待つ。コンピューティングデバイス105Dが暗号化対象の平文データにこれ以上データ部分がないと判断すると、プロセス1300はブロック1350へ進む。ブロック1350では、コンピューティングデバイス105Dは、待ち行列内の命令(例えば、次の平文データの暗号化)の実行、或いは待ち行列内の命令がない場合には命令の待機を継続する。
図14は、本開示の一又は複数の実施例による、データの復号化及び復号化キー生成を促進するための例示的なプロセスのフロー図を示している。説明のため、本書では例示的なプロセス1400が、図1の例示的なネットワーク環境100を参照して説明されているが、例示的なプロセス1400は図1の例示的なネットワーク環境100に限定されない。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。一実施例では、プロセス1400は、コンピューティングデバイス105Dからの暗号化されたデータの受信に応答して、コンピューティングデバイス105Aによって実行されうる。例えば、コンピューティングデバイス105Dは、図14のプロセス1400を実行することによって、暗号化されたデータをコンピューティングデバイス105Aに提供しうる。
1405では、コンピューティングデバイス105Aは、第1の復号化キー及びその後の任意の復号化キーを示す情報を受信する。場合によっては、この情報は、第1の暗号化キー、ビットワイズ演算、スクランブリング、及び/又は、その後の暗号化キーを生成するために、コンピューティングデバイス105Dによって使用される平文データ部分の一部及び/又は暗号化されたデータ部分(又は、これらの組み合わせ)を特定しうる。コンピューティングデバイス105Aは、コンピューティングデバイス105Dからのこのような情報に基づいて、第1の復号化キー及びその後の任意の復号化キーを決定、或いはこれらを生成する方法を決定しうる。この情報は、コンピューティングデバイス105Aのメモリ(例えば、メモリ225)内に保存されうる。
ブロック1410では、コンピューティングデバイス105Aは暗号化されたデータを受信する。ブロック1415では、コンピューティングデバイス105Aは、第1の復号化キーを用いて、第1の暗号化されたデータ部分を復号化する。一態様では、各暗号化されたデータ部分は、暗号化されたデータ部分が平文データ内で適合する場所に関する情報を備えたヘッダを有するデータパケットの一部になりうる。コンピューティングデバイス105Aは、このようなヘッダ情報に基づいて、第1の暗号化されたデータ部分を特定しうる。ブロック1420では、コンピューティングデバイス105Aは、復号化対象の暗号化されたデータ部分が更に存在するか否かを判断する。復号化対象の暗号化されたデータ部分がまだ存在する場合には、プロセス1400はブロック1425へ進む。暗号化されたデータ(又は、その一部)、第1の復号化キー、及び第1の復号化されたデータ部分は、コンピューティングデバイス105Aのメモリ(例えば、メモリ225)に保存(例えば、バッファ)されうる。ブロック1425では、コンピューティングデバイス105Aは、第1の暗号化キー並びに復号化された第1のデータ部分又は暗号化された第1のデータ部分のうちの少なくとも1つに基づいて、暗号化されたデータの第2のデータ部分の復号化のための第2の復号化キーを生成する。これに関連して、コンピューティングデバイス105Aは、ブロック1405でコンピューティングデバイス105Dから受信した情報に基づいて、第2の復号化キーを生成しうる。これに関連して、このような情報は、第1の復号化キーと第1の復号化されたデータ部分、第1の暗号化キーと第1のデータ部分、或いは、第1の復号化キー並びに第1の復号化されたデータ部分と第1の暗号化されたデータ部分の組み合わせに基づいて、コンピューティングデバイス105Aが第2の復号化キーを生成するか否かを示しうる。例えば、この情報は、演算(例えば、ビットワイズ演算)及び/又は、第2の復号化キーを生成し、第2の復号化キーを用いて第2の暗号化された部分を復号化するため、コンピューティングデバイス105Aによって実行されうる他の処理(例えば、データのスクランブリング/デスクランブリング)を指定しうる。
ブロック1430では、コンピューティングデバイス105Aは、第2の復号化キーを用いて、暗号化されたデータの第2のデータ部分を復号化する。プロセス1400は次にブロック1430へ進み、ここでコンピューティングデバイス105Aは、暗号化されたデータが第3の復号化キーを用いて復号化される第3の部分を有するか否かを判断する。コンピューティングデバイス105Aは、ブロック1405で受信した情報に従って、第3の復号化キーを生成しうる。第3の復号化キーは、第2の復号化キー及び第2の復号化されたデータ部分又は第2の暗号化されたデータ部分のうちの少なくとも1つ基づいて生成されうる。ブロック1420、1425、及び1430は、暗号化されたデータのすべての部分が復号化されるまで、反復的に実行されうる。例えば、n番目の繰り返しでは、暗号化されたデータのn番目の部分を復号化するためのn番目の復号化キーは、(n-1)番目の復号化キー、並びに、暗号化された(n-1)番目のデータ部分又は復号化された(n-1)番目の部分(例えば、(n-1)番目の復号化キーを用いて復号化された(n-1)番目の暗号化されたデータ部分)のうちの少なくとも1つに基づいて生成されうる。
コンピューティングデバイス105Aが、復号化対象となるデータ部分がこれ以上ないと判断すると、プロセス1400はブロック1435へ進む。ブロック1435では、コンピューティングデバイス105Aは、復号化されたデータ部分を用いて、平文データをリアセンブルする。暗号化されたデータが復号化され、リアセンブルされると、復号化されたデータは保存及び/又は使用されうる。例えば、復号化されたデータは、コンピューティングデバイス105A上で動作するウェブブラウザアプリケーション内でユーザーに表示するために提供されるウェブページコンテンツであってもよい。ブロック1440では、コンピューティングデバイス105Aは、待ち行列内の命令(例えば、次の暗号化データの復号化)の実行、或いは待ち行列内の命令がない場合には命令の待機を継続する。
一実施例では、プロセス1300は、コンピューティングデバイス105D(及び/又は、他の任意の暗号器)によって、暗号化対象の各平文データに対して実行されうる(例えば、別のコンピューティングデバイスに送信される)。同様に、プロセス1400は、コンピューティングデバイス105A(及び/又は、他の任意の暗号器)によって、復号化対象の各暗号化データに対して実行されうる。これに関連して、異なるデータ及びデータ部分に異なるキーマテリアルを使用することによって、セキュリティが高まる。例えば、復号化キーが復号器によって保存されず、攻撃者が復号化キーを読み出せる場合であっても、他の暗号化されたデータ部分は異なる復号化キーに関連付けられているため、攻撃者は暗号化されたデータ部分の1つのみを復号化するために復号化キーを使用することがある。
一又は複数の実施例では、キーマテリアル及び/又は関連データは使用後消去されうる。暗号化側では、キーマテリアルは暗号化キーであってよく、関連情報は、暗号化キーを用いて暗号化されるデータ(又はデータ部分)であってよい。復号化側では、キーマテリアルは復号化キーであってよく、関連データは、復号化キーを用いて復号化される暗号化データ(又は、暗号化されたデータ部分)であってよい。一態様では、キーマテリアルは、一又は複数の乱数発生器(例えば、305及び/又は310)によって生成される一又は複数の真性ランダムビットストリームであってよく、及び/又は、当該の一又は複数の真性ランダムビットストリームから導出されてもよい。別の態様では、キーマテリアルは真性ランダムビットストリームではなく、真性ランダムビットストリームから導出もされない。キー及び/又は関連データの消去は、キー及び/又は関連データがメモリ内に保存されている持続時間を短縮しうるため、攻撃者がこのような情報の取得に利用できる時間を短縮することでセキュリティを高める。
図15は、本開示の一又は複数の実施例により、関連情報の暗号化/復号化及び消去を促進するためのシステム1500のブロック図を示す。システム1500は、メモリ1505、1510、及び1520、並びに論理回路1515を含む。メモリ1505、1510、及び1520、並びに論理回路1515は、暗号化及び/又は復号化を促進するクロック回路(例えば、図3の345)からクロック信号を受信しうる。一実施例では、システム1500はコンピューティングデバイス105A~105Dのいずれか1つで実装されうる。
システム1500は暗号化及び/又は復号化に利用されうる。1つの事例では、システム1500が暗号化システムである、或いは暗号化システムとして利用されるときには、メモリ1505は暗号化対象の平文データを受信し保存してよく、メモリ1510はメモリ1505に保存された平文データを暗号化するための暗号化キーを受信し保存してよく、論理回路1515は、暗号化されたデータを提供するためメモリ1510に保存された暗号化キーを用いて、メモリ1505に保存された平文データを暗号化してよく、また、メモリ1520は暗号化されたデータを受信し、保存し、そのデータの送信を促進してもよい。論理回路1515は、平文データ及び暗号化キーにビットワイズ演算を実行することによって(例えば、キー交換中に指定された方法で)、平文データを暗号化しうる。例えば、平文データは、図13のブロック1305で受信した平文データであってよく、これを含んでよく、或いはその一部であってよい。例えば、メモリ1505に受信されたデータは、図13のブロック1310で取得された部分の1つであってよい。一態様では、暗号化キーは、真性ランダムビット発生源(例えば、305、310)からメモリ1510に受信されてよく、或いは、一又は複数の真性ランダムビット発生源によって生成される一又は複数の真性ランダムビットストリームから導出されてよい。一態様では、暗号化キーは真性ランダムビットストリームではなく、真性ランダムビットストリームから導出もされない。
別の事例では、システム1500が復号化システムである、或いは復号化システムとして利用されるときには、メモリ1505は復号化対象の暗号化データを(例えば、暗号器から)受信してよく、メモリ1510はメモリ1505に保存された暗号化データを復号化するための復号化キーを受信し保存してよく、論理回路1515は、復号化されたデータを提供するため、メモリ1510に保存された復号化キーを用いて、メモリ1505に保存された暗号化データを復号化してよく、また、メモリ1520は復号化された平文データを受信し、保存し、更に(例えば、ユーザーに表示するため復号化されたデータを提供することによって)復号化された平文データの利用を促進してもよい。論理回路1515は、暗号化されたデータと復号化キーにビットワイズ演算を実行することによって(例えば、キー交換中に指定された方法で)、暗号化されたデータを復号化しうる。
一実施例では、暗号化システム及び復号化システムの両方に対して、メモリ1505及び/又は1510は消去信号(例えば、上書き信号又は消去/上書き信号とも称される)を受信するように構成され、消去信号が使用可能になる(例えば、論理レベルがハイに設定される)と、メモリ1505及び/又は1510は、メモリ1505及び/又は1510の内容を消去することができる。例えば、ある場合には、メモリ1510は消去信号を受信し、その信号が使用可能になると、メモリ1510はメモリ1510に保存されているキーを消去することができる。幾つかの態様では、消去信号は、論理回路1515で出力が生成されるのとほぼ同時に使用可能になるが、その出力は、暗号化システムに対して暗号化されたデータか、復号化システムに対して復号化されたデータである。図15では、メモリ1505及び1510の両方が、メモリ1505及び1510に対して同じ状態又は異なる状態(例えば、論理レベルがハイ又はロー)にありうる消去信号を受信することができる。その他の場合には、メモリ1505及び1510のうちの1つが消去信号を受信するように構成されている。様々な実施例では、メモリ1505及び1510の一方又は両方に対して消去信号を利用することにより、キー(例えば、暗号化キー又は復号化キー)及び/又はデータ(例えば、暗号化されたデータ又は平文データ)が保存される時間を少なくとも短縮することによって、セキュリティは高まる。
一態様では、消去信号は、メモリセル内に保存された内容を上書きするため、メモリ1505及び/又は1510のメモリセルに提供される(例えば、保存される)所定の値(例えば、0又は1)、或いは一連の所定の値であってよい。例えば、メモリ1510に含まれるキーを値1(又は0)で上書きするため、メモリ1510にパーマネントライン1(又は0)が提供されうる。別の実施例として、上書きを行うために、メモリ1510のメモリセルには、一連の所定の値(例えば、一連の0及び1)が提供されうる。別の態様では、消去信号は論理回路1515の出力であってよく、或いは論理回路1515の出力に基づいてもよい。一実施例として、論理回路1515の出力は、メモリ1505及び/又は1510に含まれる内容(例えば、キー、データ)を上書きするため、メモリ1505及び/又は1510に送り込まれてもよい。メモリ1505及び1510の両方が消去信号を有するとき、これらの消去信号は同じであってもよく、或いは異なっていてもよい。一実施例では、キー及び/又は関連データが連続シフトアウト経路を介してメモリ1505及び/又は1510の外部へ提供されるのを防止するため、メモリ1505及び1510は、連続アウトシフト機能を有さない、或いは連続アウトシフト機能が動作しないシフトレジスタになりうる。
図16は、本開示の一又は複数の実施例により、関連情報の暗号化/復号化及び消去を促進するためのシステム1600のブロック図を示す。一実施例では、システム1600は図15のシステム1500であってよく、システム1500を含んでもよく、システム1500の一部であってもよい。図15の説明は概ね図16に当てはまる。図16では、論理回路1515はメモリ1505及び1510に消去信号を提供する。
図17は、本開示の一又は複数の実施例により、関連情報の暗号化/復号化及び消去を促進するためのシステム1700のブロック図を示す。一実施例では、システム1700は、図15のシステム1500又は図16のシステム1600であってよく、これらを含んでもよく、これらの一部であってもよい。メモリ1705、1710、及び1725はそれぞれ、図15及び図16のメモリ1505、1510、及び1520であってよく、これらをふくんでもよく、これらの一部であってもよい。論理回路1715は、論理回路1515であってよく、論理回路1515を含んでもよく、論理回路1515の一部であってもよい。図17では、論理回路1715は結合器1720A及び1720Bを含む。メモリ1705、1710、及び1725の省略記号は一又は複数の追加のメモリセルを表し、論理回路1715の省略記号は一又は複数の追加の結合器を表す。
暗号器に関しては、結合器1720Aは、メモリ1705及び1710からそれぞれ平文データビットbD0と暗号化キービットbK0を受信し、これらを結合して暗号化されたデータビットbR0を生成し、メモリ1725に(例えば、バッファするため)提供しうる。結合器1720Bは、メモリ1705及び1710からそれぞれ平文データビットbD1と暗号化キービットbK1を受信し、これらを結合して暗号化されたデータビットbR1を生成し、メモリ1725に提供しうる。
同様に、復号器に関しては、結合器1720Aは、メモリ1705及び1710からそれぞれ暗号化されたデータビットbD1及び復号化キービットbK1を受信し、これらを結合して復号化されたデータビットbR0を生成し、メモリ1725に(例えば、バッファするため)提供しうる。結合器1720Bは、メモリ1705及び1710からそれぞれ暗号化されたデータビットbD1及び復号化キービットbK1を受信し、これらを結合して復号化されたデータビットbR1を生成し、メモリ1725に提供しうる。場合によっては、結合器1720A及び1720Bは、XOR演算、XNOR演算、AND演算、又はOR演算、或いは他の演算などのビットワイズ演算を実行しうる。結合器1720A及び1720Bによって実行されるビットワイズ演算は同じであってもよく、或いは異なっていてもよい。
図17に示したように、結合器1720A(例えば、ビットbR0)及び結合器1720B(例えば、ビットbR1)の出力は、メモリ1705及び1710にフィードバックされる。このように、キー及び関連データは、結合器1720A及び1720Bからの出力が生成された後、上書きされる。一態様では、キー及び関連データの上書きは、結合器1720A及び1720Bからの出力が生成された直後に起こるため、キー及び/又は関連データがメモリ1710及び1705に保存される時間は短縮され、キー及び関連データの再利用を防止する。場合によっては、結合器1720A及び1720Bの出力をメモリ1705及び1710に直接送り込むのではなく、論理回路1715は出力を処理し(例えば、ビットのスクランブル、反転など)、処理した出力をメモリ1705及び1710に提供しうる。これらの処理された出力は、出力自体又は出力の形態に関連する(例えば、示唆する)情報と称されることがある。
図18は、本開示の一又は複数の実施例による、関連情報の暗号化/復号化と消去を促進するための例示的なシステム1800のフロー図を示す。説明のため、本書では例示的なプロセス1800が、図15の例示的なシステム1500を参照して説明されているが、例示的なプロセス1800は図15のシステム1500に限定されない。一又は複数の演算は要望に応じて結合、除外、及び/又は異なる順で実行されうることに留意されたい。一実施例では、プロセス1800は、暗号化プロセス又は復号化プロセスであってよい。一実施例として、システム1500はコンピューティングデバイス105Aに提供されうる。
ブロック1805では、第1のデータはメモリ1505に受信される。ブロック1810では、キーはメモリ1510に受信される。ブロック1815では、論理回路1515は、第1のデータ及びキーに基づいて、第2のデータを生成する。暗号化プロセスに関しては、メモリ1505に受信される第1のデータは平文データ(又は、その一部)であってよく、メモリ1510に受信されるキーは暗号化キーであってよく、また、第2のデータは暗号化されたデータであってよい。復号化プロセスに関しては、メモリ1505に受信される第1のデータは暗号化されたデータ(又は、その一部)であってよく、メモリ1510に受信されるキーは復号化キーであってよく、また、第2のデータは復号化されたデータであってよい。ブロック1820では、論理回路1515は送信用の第2のデータを提供する。例えば、論理回路1515は保存用のデータを(例えば、バッファとして使用される)メモリ1520に提供してもよく、(例えば、その後の送信及び/又は使用のため)データはメモリ1520によって送信されてよく、或いはメモリ1520から読み出されてもよい。
ブロック1825では、キー及び/又は第1のデータは消去される。場合によっては、所定の値又は一連の所定の値は、第1のデータ及び/又はキーをそれぞれ上書きするためメモリ1505及び/又は1510に提供され、そこに保存される。場合によっては、論理回路1515は、第2のデータ又は第2のデータに基づいて生成される一連のビットを用いて、メモリ1505及び/又は1510を上書きしうる。一実施例では、プロセス1800は、暗号化対象又は復号化対象のデータの各部分に対して反復されうる。データの異なる部分に対して、異なるキーが生成されうる。一態様では、図13及び図14のそれぞれのプロセス1300及び1400に関して説明されている方法と同様の方法で、異なるキーが生成されうる。
図19は、本開示の一又は複数の実施例により、関連する情報の暗号化/復号化及び消去を促進するための、タイミング図と関連するクロック信号を示す。説明のため、本書ではタイミング図1900が、図15の例示的なシステム1500及び図18の例示的なプロセス1800を参照して説明されているが、タイミング図1900は図15の例示的なシステム1500及び図18の例示的なシステム1800に限定されない。
タイミング図1900は、クロック信号1905及び1910を含む。クロック信号1910は、クロック信号1905の周期T1の継続時間の半分の周期T2を有する。クロック信号1905及び/又は1910は、図3のクロック回路345などのクロック回路によって生成されうる。場合によっては、クロック回路は、クロック信号1910を生成するため、クロック信号1905に周波数逓倍器を適用することがある。場合によっては、クロック信号1905は、メモリ1505及び1510と論理回路1515の動作を促進するために利用されることがあり、また、クロック信号1910はメモリ1520の動作を促進するために使用されることがある。
時刻t1では、メモリ1505及び1510はそれぞれ、データ(例えば、暗号化されたデータ、平文データ)及びキーマテリアル(例えば、復号化キー、暗号化キー)を受信するように準備されうる。時刻t2では、メモリ1520は論理回路1515の出力を受信するように準備されうる。例えば、メモリ1505、1510、及び1520は、ゲートが適切にバイアスされ、そうでない場合には入力情報を受信し保存するために準備されていることが必要なトランジスタで形成されうる。時刻t1と時刻t2に間に、データ及びキーマテリアルはそれぞれ、メモリ1505及び1510に提供(例えば、シフト入力)されうる。
時刻t3では、論理回路1515は、データ及びキーマテリアルに基づいて出力を生成し、メモリ1520は論理回路1515から出力を受信しうる。例えば、論理回路1515は、ビットワイズ演算(例えば、データとキーマテリアルへのXOR演算)を実行することによって出力を生成しうる。時刻t4では、メモリ1520は、論理回路1515から受信した出力を保存し、また、メモリ1505及び/又は1510は、メモリ1505及び/又は1510を上書きする消去信号を受信しうる。メモリ1505及び/又は1510の消去は、周期T1の1クロックサイクルの継続時間内に起こりうる。これに関連して、消去は、メモリ1520によって受信される論理回路1515からの出力のクロックサイクルと同じクロックサイクル内に起こりうる。図19に示したように、消去は、時刻t3でのデータ及びキーマテリアルに基づいて、出力を生成するクロックサイクルの2分の1(例えば、継続時間0.5T1、すなわち、継続時間T2と同等)で起こりうる。時刻t5では、メモリ1505及び1510はそれぞれ、データ及びキーマテリアルを受信するように準備され、メモリ1520は保存されたデータを出力しうる。これに関連して、メモリ1505及び/又は1510の消去は、メモリ1505及び1510がそれぞれデータ及びキーマテリアルを受信する前に、起こりうる。時刻t6では、メモリ1520は論理回路1515の出力を受信するように準備されうる。この反復プロセスは、各受信データ(例えば、受信された各データ部分)に対して繰り返される。クロック信号1905及び1910に基づいたシステム1500の動作は、データ及び/又はキーが消去される前に、論理回路1515がメモリ1505及び1510からデータ及びキーを受信するように、関連する情報の暗号化/復号化及び消去を促進しうる。1クロック以内にデータ及び/又は関連するキーを消去することによって、このような消去は、攻撃者が、データが暗号化される(又は復号化される)とすぐにデータを取得するのを、或いはキーが暗号化(又は復号化)に使用されるとすぐにキーを取得するのを防ぐのに役立つ。
更に、本開示は以下の条項による実施例を含む。
条項1. 暗号化された現在のデータ部分を提供するため、現在の暗号化キーを用いて、平文データの現在のデータ部分を暗号化論理回路によって暗号化すること、及び、前記現在の暗号化キーに基づいて、前記平文データの次のデータ部分の暗号化のための次の暗号化キーを前記暗号化論理回路によって生成することを含む、方法。
条項2. 前記次の暗号化キーは更に、前記暗号化された現在のデータ部分又は前記現在のデータ部分のうちの少なくとも1つに基づいている、条項1に記載の方法。
条項3. 前記暗号化された現在のデータ部分を復号化デバイスに送信すること、前記暗号化された現在のデータ部分の前記デバイスによる復号化を促進するため、前記現在の暗号化キーを示す情報を前記復号化デバイスに送信することを更に含む、条項1に記載の方法。
条項4. 前記現在のデータ部分の暗号化後、前記暗号化論理回路によって、前記次の暗号化キーに切り替えること、前記次の暗号化キーを用いて、前記暗号化論理回路によって、前記次のデータ部分を暗号化すること、及び、前記平文データの各残存データに対して、前記生成すること、前記切り替えること、及び前記暗号化することを繰り返すことを更に含む、条項1に記載の方法。
条項5. 前記平文データを受信すること、及び、前記平文データを複数のデータ部分に分割することを更に含み、前記複数のデータ部分の各データ部分はそれぞれの長さを有し、少なくとも前記データ部分の長さの暗号化キーに関連付けられている、条項1に記載の方法。
条項6. 前記現在の暗号化キー、次の暗号化キー、及び前記現在のデータ部分は同じ長さを有する、条項1に記載の方法。
条項7. 前記生成することは、前記現在の暗号化キー、及び、前記暗号化された現在のデータ部分又は前記現在のデータ部分のうちの少なくとも1つにビットワイズ演算を実行することを含む、条項1に記載の方法。
条項8. 前記ビットワイズ演算は論理的等価性を有する、条項7に記載の方法。
条項9. 前記暗号化された現在データ部分又は前記現在のデータ部分のうちの少なくとも1つをスクランブルすることを更に含み、前記次の暗号化キーを生成することは、前記現在の暗号化キー、及び、前記暗号化された現在のデータ部分又は前記現在のデータ部分のうちの前記スクランブルされた少なくとも1つにビットワイズ演算を実行し、前記次の暗号化キーを取得することを含む、条項1に記載の方法。
条項10. デバイスから暗号化されたデータの現在のデータ部分を受信すること、暗号化された現在のデータ部分を提供するため、現在の暗号化キーを用いて、現在のデータ部分を復号化論理回路によって復号化すること、及び、前記現在の暗号化キーに基づいて、前記暗号化されたデータの次のデータ部分の復号化のための次の復号化キーを前記復号化論理回路によって生成することを含む、方法。
条項11. 前記次の復号化キーは更に、前記復号化された現在のデータ部分又は前記現在のデータ部分のうちの少なくとも1つに基づいている、条項10に記載の方法。
条項12. 前記デバイスから前記現在の復号化キーを示す情報を受信することを更に含む、条項10に記載の方法。
条項13. 前記現在のデータ部分の復号化後、前記復号化論理回路によって、前記次の復号化キーに切り替えること、前記次の復号化キーを用いて、前記復号化論理回路によって、前記次のデータ部分を復号化すること、及び、前記暗号化されたデータの各残存データ部分に対して、前記生成すること、前記切り替えること、及び前記復号化することを繰り返すことを更に含む、条項10に記載の方法。
条項14. 前記暗号化されたデータの各データ部分はそれぞれの長さを有し、少なくとも前記データ部分の長さの復号化キーに関連付けられている、条項10に記載の方法。
条項15. 前記生成することは、前記現在の復号化キー、及び、前記復号化された現在のデータ部分又は前記現在のデータ部分のうちの少なくとも1つにビットワイズ演算を実行することを含む、条項10に記載の方法。
条項16. 前記ビットワイズ演算は論理的等価性を有する、条項15に記載の方法。
条項17. 前記復号化された現在データ部分又は前記現在のデータ部分のうちの少なくとも1つをスクランブルすることを更に含み、前記次の復号化キーを生成することは、前記現在の復号化キー、及び、前記復号化された現在のデータ部分又は前記現在のデータ部分のうちの前記スクランブルされた少なくとも1つにビットワイズ演算を実行し、前記次の復号化キーを取得することを含む、条項10に記載の方法。
条項18. 平文データ及び現在の暗号化キーを受信するように構成されたメモリ、及び、暗号化された現在のデータ部分を提供するため、前記現在の暗号化キーを用いて、前記平文データの現在のデータ部分を暗号化し、前記現在の暗号化キーに基づいて、前記平文データの次のデータ部分の暗号化のための次の暗号化キーを生成するように構成された暗号化論理回路を備えるデバイス。
条項19. 前記暗号化論理回路は更に、前記平文データの前記現在のデータ部分を暗号化後、前記次の暗号化キーに切り替え、また、前記次の暗号化キーを用いて、前記平文データの前記次のデータ部分を暗号化するように構成されている、条項18に記載のデバイス。
条項20. 前記メモリは更に、別のデバイスからの暗号化されたデータの現在のデータ部分、及び現在の復号化キーを受信するように構成されており、前記デバイスは更に、復号化された現在のデータを提供するため、前記現在の復号化キーを用いて前記現在のデータ部分を復号化し、前記現在の復号化キーに基づいて、暗号化されたデータの次のデータ部分の復号化のための次の復号化キーを生成するように構成されている復号化論理回路を備える、条項18に記載のデバイス。
必要に応じて、本書に明記されるさまざまなハードウェア構成要素及び/又はソフトウェア構成要素を、本開示の精神から逸脱することなく、ソフトウェア、ハードウェア、又は両方を含むサブ構成要素に分けることができる。更に必要に応じて、ソフトウェア構成要素をハードウェア構成要素として、あるいはハードウェア構成要素をソフトウェア構成要素として実行しうることが考えられる。
本開示によるソフトウェア、例えばプログラムコード及び/又はデータは、一又は複数の非一過性のマシン可読媒体に保存されうる。本書で特定されるソフトウェアが、ネットワーク化された及び/又はその他の一又は複数の汎用又は特定目的のコンピュータ及び/又はコンピュータシステムを用いて、実行されうることも考えられる。必要に応じて、本書に記載された特徴を得るために、本書に記載された様々なステップの順序を変更する、結合して複合ステップにする、及び/又はサブステップに分けることができる。
上述の実施例は、本発明を説明するが、本発明を限定するものではない。本発明の原則に従って数多くの修正例及び変形例が可能であることも理解されたい。したがって、本開示の範囲は、下記の特許請求の範囲及びその任意の均等物によってのみ規定されるものである。