(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-02
(54)【発明の名称】ランダム要素のプールからの一意な暗号鍵の生成
(51)【国際特許分類】
H04L 9/08 20060101AFI20231026BHJP
【FI】
H04L9/08 C
H04L9/08 E
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021559278
(86)(22)【出願日】2020-08-11
(85)【翻訳文提出日】2021-12-02
(86)【国際出願番号】 US2020045747
(87)【国際公開番号】W WO2022035422
(87)【国際公開日】2022-02-17
(81)【指定国・地域】
(71)【出願人】
【識別番号】521346298
【氏名又は名称】クリプト,インコーポレイテッド
(74)【代理人】
【識別番号】100115749
【氏名又は名称】谷川 英和
(74)【代理人】
【識別番号】100121223
【氏名又は名称】森本 悟道
(72)【発明者】
【氏名】マンディッチ,デニス
(72)【発明者】
【氏名】クナップ,クリストファー
(72)【発明者】
【氏名】ブラッドリー,オースティン
(72)【発明者】
【氏名】ウルフソン,サミュエル
(72)【発明者】
【氏名】ニール,マシュー
(57)【要約】
固定文字長を有するプレーンテキストメッセージを受信することとソースから複数の乱数を受信することとによる暗号化鍵生成のためのシステムおよび方法が提供される。上記複数の乱数からマトリクスが作成され、その行数または列数の少なくとも一方が上記文字長以上である。暗号化鍵または暗号化鍵のためのシードとして使用可能な配列が、最初の要素をマトリクス内で選択し、選択手法を用いて、配列における要素の数が上記文字長と等しくなるまで、後続の要素を選択し、以前に選択された要素を配列から却下することによって、生成される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
暗号化鍵生成のための方法であって、
固定文字長を有するプレーンテキストメッセージを受信するステップと、
ソースから複数の乱数を受信するステップと、
前記複数の乱数から、行数および列数の少なくとも一方が前記文字長以上であるマトリクスを作成するステップと、
配列を生成するステップと、を含み、
前記生成するステップは、
最初の要素を前記マトリクス内で選択するステップと、
選択手法を用いて、前記配列における要素の数が前記文字長と等しくなるまで、後続の要素を選択するステップと、
以前に選択された要素を前記配列から却下するステップと、を含む、方法。
【請求項2】
前記生成するステップは、前記後続の要素を同じ行および同じ列の一方から選択するステップをさらに含み、使用される前記行または前記列は、少なくとも、前記文字長以上である次元を有するものである、請求項1に記載の方法。
【請求項3】
前記生成するステップは、前記最初の要素の行または列の一方の最後に到達すると、該行または列における前記最初の要素に折り返すステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記選択手法は、前記最初の要素からシーケンシャルに選択することを含む、請求項1に記載の方法。
【請求項5】
前記配列は、いかなる列からも要素を再使用することなく、任意の予測可能な選択手法を用いて、前記最初の要素の行から選択される、請求項1に記載の方法。
【請求項6】
前記同じ行または列から追加の配列を生成するステップをさらに含む、請求項1に記載の方法。
【請求項7】
複数の前記追加の配列をXORして最終配列を作成するステップをさらに含む、請求項6に記載の方法。
【請求項8】
複数の追加の配列を生成するためにそれぞれが使用される複数のマトリクスを作成するステップと、
前記複数の追加の配列を一緒にXORして最終配列を作成するステップと、をさらに含む、請求項1に記載の方法。
【請求項9】
暗号化鍵生成のためのシステムであって、
固定文字長を有するプレーンテキストメッセージと、
複数の乱数を生成する乱数ソースと、
前記乱数から作成され、行および列の少なくとも一方の数が前記文字長以上であるマトリクスと、
暗号化鍵と、を含み、
前記暗号鍵は、
マトリクスからの最初の要素と、
前記マトリクスからの少なくとも1つの後続の要素と、
前記文字長と等しい鍵長と、
前記マトリクスからの繰り返されない要素と、を含む、システム。
【請求項10】
前記後続の要素は、前記最初の要素と同じ行からの要素をさらに含む、請求項9に記載のシステム。
【請求項11】
前記乱数ソースは、
ハードウェアまたはソフトウェアの少なくとも一方に基づいた複数の乱数ソースと、
量子乱数生成器と、を含む、請求項9に記載のシステム。
【請求項12】
前記後続の要素は、前記最初の要素の後にシーケンシャルに続く、請求項9に記載のシステム。
【請求項13】
前記暗号化鍵の前記最初の要素および後続の要素は、前記行および列のいずれかからの一意な要素である、請求項9に記載のシステム。
【請求項14】
前記マトリクスからの追加の要素を含む配列と、
前記追加の要素または前記追加の要素に対する数学的操作によって形成された新しい要素のうちの少なくとも一方を含む追加の暗号化鍵と、をさらに含む、請求項9に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本出願は、2019年4月5日に出願された米国特許出願第16/375,921号に基づく優先権を主張するものであり、その開示全体が、参照により本明細書に援用される。
【0002】
(発明の分野)
本発明は、通信の生成および暗号化、通信ネットワークを介したそれらの送信、ならびに、送信されたメッセージの受信および復号化に関し、より詳細には、一意な鍵の作成および使用に関する。
【背景技術】
【0003】
データストアおよびコンピューティングデバイスは、ますます、ハッカーやその他のセキュリティ脅威(故意および無意識の内部者の両方を含む)の標的となっている。基本的な防御策は、このデータのすべてとデバイス全体とを暗号化して、セキュリティ侵害されたり盗まれたりした場合にそれらが役立たなくなるようにし、データにアクセスできないようにすることである。多くの非対称鍵および対称鍵に基づいた暗号化アルゴリズムは、暗号鍵の安全な生成、配布、および保存に依存している。これらの暗号鍵は、困難と評価されるアルゴリズムと真にランダムであると考えられる数生成器とに基づいて、データを確実に暗号化および復号化するために使用される。
【0004】
量子コンピュータの出現により、このアプローチの2つの欠陥が明らかになった。ほとんどのアルゴリズム、特に非対称暗号化スキームの数学的困難性は、数学の進歩によって効率的に破ることができないという厳密な数学的証明がない。さらに、ほとんどの場合、ほとんどのアルゴリズムは、十分に大きい計算リソースを有する量子コンピュータによって容易に破られる可能性がある。2つ目の欠陥は、ほとんどの乱数生成器が、真の確率的事象をサンプリングしてランダム性を証明可能な乱数を生成しているのではないことである。この問題は、抽出されたランダムのビットごとに基本的な量子効果を測定する量子乱数生成器の開発によって解決された。これは、いくつかの技術的主張の「量子性」に関する新しい論争に発展した。現代の電子機器のすべては、それらが生成するランダム性は古典的ノイズと考えられるものの、ある程度、量子的である。リスクは、量子コンピュータまたは数学的解析の進歩により、古典的ノイズのパターンが発見され、生成される鍵のスペクトルが予測されるかもしれないことである。
【0005】
古典的エントロピーまたは量子エントロピーのソースからの大規模なランダム鍵生成器は、量子コンピュータや暗号技術に影響を与えるその他の科学的進歩に対する重要なセキュリティ対策である。一般に、鍵が長いほど、同様または類似のアルゴリズムの暗号強度は高くなる。クロード・シャノン(Claude Shannon)は、1949年、理想的な解決策は、鍵が暗号化を必要とするプレーンテキストと同じ長さであり、プレーンテキストが任意のサイズである、ワンタイムパッドとしても知られるバーナム暗号であることを証明した。しかしながら、実際には、暗号強度は、さまざまであり得、ワンタイムパッド、または高度暗号化標準(AES)のようなより弱いものに調整され得る。どちらにしても、適切な長さの鍵が必要であり、開示される生成器の設計によってサポートされなければならない。
【発明の概要】
【0006】
本発明の目的は、暗号化鍵を生成、追跡、管理するためのシステム、デバイス、および方法を提供することである。ランダム要素の集合またはプールは、数、記号、または効率的に二進数に変換され得る一意な要素の任意の表現の集合体であり得る。このランダムプールは、任意に大きいものであり得、鍵として定義される乱数の部分集合を選択または生成するための基礎として使用され得る。上記ランダム集合よりも大きい鍵を生成するためにランダムプール全体が変換される場合もある。一実施形態では、X個のランダム要素の集合が、A行およびB列のマトリクスMに編成され得る。ここで、Bは、X個中の要素の数をAで割ったものであり、Aは1より大きい。X個の集合全体を使用するには、AとBとが整数である必要があり、そうでなければ、X個のうちの余分な要素を使用できない場合がある。AおよびBは、調節可能なパラメータであり、任意の集合Xに応じて異なり得る。
【0007】
ワンタイムパッド(OTP)を用いて長さLのプレーンテキストを暗号化するために、長さLの鍵Kが、マトリクスから、いくつかの別個の手順を個別または同時に用いて、抽出され得る。長さLの線形シーケンスまたは1次元配列Jが、マトリクスの第1行から、1番目の要素を含む任意の要素Iを始まりとして、選択され得る。(B-I)がLより小さい場合、(B-I+1)要素の選択は、Aの第1列から開始され、Lが完了するまでシーケンシャルに続けられる。線形シーケンスJは、OTPとして使用され得る。
【0008】
追加のシーケンスまたは鍵Kが、マトリクス内の行のいくつかまたはすべてからサンプリングされ得、同じ列Iから開始されてもよく、行ごとに異なって、ランダムな列から開始されてもよい。これらは、OTPとして個別に使用してもよく、全部を、または行のさまざまな組み合わせで、XORして、長さLの単一のOTPを生成してもよい。個々の線形シーケンスは、さまざまな組み合わせを生成するために、各行から非シーケンシャルに選択されてもよい。例えば、要素をシーケンシャルに選択する代わりに、1つおきまたは2つおきの要素を使用してシーケンスJを組み立ててもよい。この選択基準は、無作為化されていてもよく、公知の関数に基づいたものであってもよい。
【0009】
乱数は、ランダム性を実証可能なランダムプロセスにより鍵を生成する量子エントロピーソースから生成され得る。これは、ある程度決定論的である疑似乱数生成器およびエントロピーの非量子的電子ノイズソースとは対照的である。数学、コンピュータサイエンス、および物理学における進歩によってこれらの疑似ランダムシステムにおける再現可能なパターンが明らかになることはないという証明や保証はない。
【0010】
このマトリクスシステムは、古典的ランダムソースに無作為化を導入し、量子ランダムソースの量子ランダム性を維持する。量子と古典の両方の複数のランダムソースを組み合わせて、1つのマトリクスまたは後で組み合わされる個々のマトリクスの各行を供給することは、このシステムの当然の拡張である。さまざまなサイズの切り詰められた(truncated)鍵や1次元配列を含む、より複雑な組み合わせも同様に有効である。
【0011】
本発明の一例は、暗号化鍵生成のための方法であって、固定文字長を有するプレーンテキストメッセージを受信するステップと、ソースから複数の乱数を受信するステップとを有し得る方法である。上記複数の乱数から、行数または列数のどちらかまたは両方が上記文字長以上であるマトリクスを作成することができる。配列は、最初の要素を上記マトリクス内で選択し、後続の要素を、選択手法を用いて、当該配列内の要素の数が上記文字長と等しくなるまで選択し、以前に選択された要素を当該配列から却下することによって、生成することができる。
【0012】
上記配列生成ステップは、上記後続の要素を同じ行および同じ列の一方から選択することを含み得、ここで、使用される行または列は、上記文字長以上の次元(dimension)を有するものである。別の例では、上記生成ステップは、上記最初の要素の行または列の一方の最後に到達した後に、当該行または列にある上記最初の要素に折り返すことを含み得る。
【0013】
他の例では、上記選択手法は、上記最初の要素からシーケンシャルに選択することであるか、または、いかなる列からも要素を再使用することなく、任意の予測可能な選択手法を用いて、上記最初の要素の行から配列を選択することであり得る。
【0014】
同じ行または列から追加の配列を生成することができ、一例では、複数の上記追加の配列をXORして、1つの最終配列を作成することによって、鍵または最終配列を形成することができる。あるいは、複数のマトリクスを作成することができ、そのそれぞれを使用して複数の追加の配列を生成し、その後、これら複数の追加の配列を一緒にXORして最終配列を形成する。
【0015】
上記の方法を実施するために、固定文字長を有するプレーンテキストメッセージを有し、複数の乱数を生成する乱数ソースを有するかまたは該乱数ソースにアクセスできるシステムを用いることも可能である。乱数から、行数および/または列数が上記文字長以上であるマトリクスを作成することができる。暗号化鍵は、マトリクスから取得された最初の要素と、マトリクスから取得された少なくとも1つの後続の要素と、文字長と等しい鍵長と、マトリクスから取得された繰り返さない要素と、を有し得る。乱数ソースは、ハードウェアまたはソフトウェアおよび量子乱数生成器の少なくとも1つに基づいた複数の乱数ソースであり得る。
【0016】
上記システムは、上記後続の要素が上記最初の要素と同じ行から取得された要素であり得ること、かつ/または、上記後続の要素が上記最初の要素の後にシーケンシャルに続くことも可能である。別の例は、暗号化鍵の上記最初の要素と後続の要素とが、行および列のいずれかから取得された一意な要素であるというものである。他の例は、マトリクスから取得された追加の要素を有する配列と、上記追加の要素または上記追加の要素に対する数学的操作により形成された新しい要素の少なくとも一方を有する追加の暗号化鍵とを含み得る。
【0017】
本発明の上記およびさらなる態様は、別の図面であっても同一の数字が同様の構造要素や特徴を示す添付の図面と併せて以下の説明を参照してさらに説明される。図面は必ずしも原寸に比例しておらず、代わりに本発明の原理を説明することに重点が置かれている。これらの図は、限定としてではなく、例としてのみ、本発明のデバイスの1つ以上の実装を示している。
【図面の簡単な説明】
【0018】
【
図1】
図1は、例示的な暗号化通信を示す図である。
【
図2】
図2は、本発明のシステムの例を示すブロック図である。
【
図3】
図3は、マトリクスから鍵シーケンスを生成するために用いられるパターンのさまざまな例を示す図である。
【
図4B】
図4Bは、中間シーケンスからの鍵シーケンスの生成を示す図である。
【
図5】
図5は、複数の鍵と最終鍵の生成の例を示す図である。
【
図6】
図6は、例示的な暗号化通信の暗号化の例を示す図である。
【
図7】
図7は、例示的な通信を暗号化する方法の例である。
【
図8】
図8は、通信を暗号化する方法の追加の例を示す図である。
【
図9】
図9は、本発明に係る通信を暗号化するためのシステムの別の例を示す図である。
【発明を実施するための形態】
【0019】
一般に、本明細書に提示される例示的なデバイス、システム、および方法は、安全でないチャネルを介した通信デバイス間の安全なエンドツーエンドのメッセージ転送を可能にすることができ、その基本構成を
図1に示す。ここで、第1のユーザ10(「アリス」)が、安全にされていないネットワーク30(例えば、インターネット)を介して第2のユーザ20(「ボブ」)に通信を送ろうとする。アリス10はプレーンテキストメッセージ40を作成し、該メッセージは暗号化鍵50を用いて安全なメッセージ45に暗号化される。この鍵50は、アリスのハードウェアに存在している暗号化エンジン55によって生成されるか、または、第三者によって供給される。暗号テキスト45は、ネットワーク30を介して送信され、第2の鍵50'を用いて復号化され、ボブ20がプレーンテキスト40にアクセスできるようになる。第2の鍵50'は、暗号テキスト45を復号化するために、第1の鍵50と同一であり得るか、または数学的に関連したもの(例えば、非対称鍵)であり得る。ボブ20とアリス10との間の通信は、プレーンテキスト40を保護するために同じ鍵、異なる鍵、またはその他の任意の鍵交換を使用して継続することができる。
【0020】
本発明は、任意の鍵交換方法を用いて任意のデータ交換を保護または認証するための鍵の生成に焦点を合わせている。本システムおよび方法は、鍵の長さがプレーンテキストの長さと同じであり、プレーンテキストが暗号メッセージと同じ長さであるワンタイムパッド(OTP)方式を使用する。
【0021】
図2は、n個の要素Eを有するプレーンテキストメッセージ100を示している。要素の数nは、メッセージの長さLである。OTP暗号化/復号化(暗号)エンジン200がプレーンテキストメッセージ100を受信し、暗号化プロセスを開始する。暗号エンジン200は、乱数を生成するか、または、好ましくは量子エントロピーソース202から、乱数を受信する。量子エントロピーソース202は、米国特許第9,425,954号、米国特許第9,660,803号、および米国特許出願第16/288,722号に記載のようなものであり得る。さらに、量子または古典的エントロピーソース、半量子または乱数生成器を用いることもでき、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせによって生成することもできる。なお、1つのソース202しか図示されていないが、任意の数のソースを用いることができる。さらに、乱数Rを、プール204して暗号化時に取り出すこともでき、オンデマンドで呼び出してプールすることもできる。X個の乱数Rが存在し得る。
【0022】
暗号エンジン200は、乱数プール204からA行208およびB列210のマトリクス206を形成する。この例では、A×B<Xであり、マトリクス206の次元はセッションの開始時に暗号化機能によって決定され得る。一例では、列210の数Bが上記文字長L以上であり行208の数Aが少なくとも1であるマトリクス206が形成される。マトリクス206には、すべての乱数Rを使用することなく、プール204から線形に追加(populate)され得る。乱数は「ビット」である可能性もあり、余分なビットは、ランダムに、またはプール204内の離散点で、選択され、破棄され得る。マトリクス206は、正方行列であってもよく、非正方行列であってもよい。マトリクス206の各要素、各行208、または各列210へのランダム要素の追加は、シーケンシャルであってもそうでなくても、任意の規定された方法に従って行われ得る。A×B個の要素を超えるプール204の要素Yはすべて破棄されてもよく、追加の操作によってマトリクスに組み込まれてもよい。例えば、余分な要素Yは、1番目または任意の要素から始まりすべてのYが消費されるまで、シーケンシャルにマトリクス206にXORされる。プール204内のすべての乱数Rが使用されるように余分な要素Yをマトリクス206に組み込むために、数学的シーケンスまたは関数に基づいた任意のアルゴリズム的方法が用いられ得る。暗号エンジン200は、プレーンテキスト文字列100ごとに新しいプール204を形成することもでき、乱数Yを後で使用するためにプール204に保有しておくこともできる。
【0023】
マトリクス206が形成されると、暗号エンジン200は鍵212を形成することができる。一例では、鍵212は、新しい1次元配列を作成することによって形成される。鍵配列212は、最初の要素をマトリクス206内で選択し、この開始要素と同じ行から後続の追加の要素を選択することによって、作成可能である。他の例では、最初の要素次第では、最後の列210
Bに到達すると最初の要素の行の1番目の要素に折り返すことによって、鍵212が形成され得る。鍵シーケンスは、マトリクス206から、いかなる列210からも要素を再使用することなく、新しい1次元配列212における要素の数がプレーンテキストメッセージの文字長Lと等しくなるまで作成される。
図2に示した例では、鍵212は、第1行208
1から形成され、第1列210
1から始まる。他の例として、鍵212のための鍵要素Kを、マトリクス206から、ここでもまた最初の要素の行208からのみ使用し、そして、任意の予測可能な順序付けまたは関数を使用して、いかなる列210からも要素を再使用することなく、選び出すことが挙げられる。したがって、一例として、シーケンスは、鍵212がプレーンテキストの長さLと同じ長さになるまで、K1=(208
1,210
2),(208
1,210
3),(208
1,210
1),(208
1,210
B)等となり得る。
【0024】
図3は、マトリクス206の他の例と結果的に得られる鍵312とを示す。ここで、鍵312(ここでもやはり1次元配列であり得る)が、マトリクス206内の任意の行208からシーケンシャルまたは非シーケンシャルに選択される。そのため、一例では、複数の行から順序ばらばらに取得された符号K
Ai~K
Avで示された要素から、第1の鍵312Aを作成することができる。マトリクス206内の残りの要素を考慮すると、例示されているように、陰影付きの領域から、シーケンシャルまたは非シーケンシャルな手法を用いて、追加の鍵312を形成することができる。
【0025】
図4Aは、上記の手法のいずれかを用いてマトリクス206から引き出された中間シーケンス214の形成を示す。シーケンス214は、Q個の要素を有し得、1次元配列であり得る。シーケンス214は、マトリクス206の要素からサンプリングまたは組み立て可能である。シーケンス214は、鍵212として使用されてもよく、任意の次元の娘マトリクス(daughter matrices)212'および/または追加のシーケンス214'を作成するためのランダム要素として使用されてもよい。シーケンス214の長さQは、必要とされる鍵長によって、または、OTPに基づいたシステムの場合は、暗号化が必要なプレーンテキストのサイズLによって、1対1の対応(例えば、Q=L)で決定される。シーケンス214のサイズQが算出されると、暗号化鍵への組み込み前に、または他のシーケンス214とのXORをとる前に、追加の操作または変換が適用され得る。
【0026】
図4Bは、長さLの最終鍵シーケンス412を生成するために一緒にXORされ得る配列/シーケンス214の集合を示す。個々のシーケンス214
i~214
ivは、すべて同じ長さであってもよく、異なっていてもよい。シーケンス214が不均一な長さである場合、それらは、すべてのシーケンス214を同じ長さQにするために、連結されてもよく、パディングされてもよく、追加の線形操作が適用されてもよい。これらの操作は、鍵シーケンス412の長さが中間シーケンス214の長さ未満である場合にも同様に適用される。つまり、一例では、上記シーケンス214の集合にXORを適用する前に、すべてのシーケンス214を鍵シーケンス412の長さまで減少させなければならない。追加の操作は、個々のシーケンス214に対して、または最終鍵シーケンス412を得るためのXOR操作の中間ステップとして、有効である。例えば、第1のシーケンス214
iは、マルチパーティ暗号化鍵システム内のすべてのユーザに固有の秘密鍵と個別にXORされ得る。鍵シーケンス412を生成する前に、追加の要素がすべてのシーケンス214に末尾付加または追加されてもよい。
【0027】
鍵シーケンス212および中間シーケンス214の両方の生成の追加の例として、
図3は、シーケンシャルな順序付けおよび非シーケンシャルな順序付けの両方を示している。非シーケンシャルなパターンは、各行から要素Eを、1列おき、2列おき、または任意の予測可能な、規則的な、もしくはランダムな列の順序で順序付けることができる。シーケンス212および214を生成する際、行208の要素Aはいずれも1回だけ使用できる。つまり、各要素はシーケンス212または214の次の要素を選択する前に消費済みであるとみなされなければならない。関数または公知のシーケンスの適用は、例えば、同じ行208の要素Aをシーケンス212または214に配置した後、その行208に対して繰り返し適用され得る。シーケンス212または214への追加のために用いられる各ステップにより、要素Aが選択される行208内の利用可能な要素Aが事実上減っていく。シーケンス212または214の次の要素を選択する前に、行208内の残りの要素Aに追加の混合または連結関数を適用することができる。シーケンシャルな例は行208
1にあり、ラップアラウンドシーケンスは行208
3にあり、非シーケンシャルなパターンは行208
4~208
Aにある。
【0028】
シーケンス212または214の生成の別の例は、乱数Rのプール204全体を利用するものである。この例では、Y個の余分な乱数が存在する。プール204の全体を変換して、プール集合Xよりも大きいシーケンス212または214を生成することができる。一例では、X個のランダム要素の集合を、A行208およびB列210の1つ以上のマトリクス206に編成することができ、ここで、BはX個中の要素の数をAで割ったものであり、Aは1より大きい。X個のランダム要素の集合全体を使用するには、AとBとが整数である必要があり、そうでなければ、完全なプール集合Xにおける余分な要素Yを使用できない。行の長さAおよび列の長さBは、調節可能なパラメータであり、任意の集合Xに応じて異なり得る。
【0029】
ワンタイムパッド(OTP)を使用して長さLのプレーンテキスト100を暗号化するために、いくつかの別個の手続きを個別または同時に用いてマトリクス206から長さLの鍵212が抽出され得る。長さLの線形シーケンスもしくは1次元配列212または214は、マトリクスの第1行から、1番目の要素を含む任意の要素iから始めて、選択され得る。(B-i)がLよりも小さい場合、(B-i+1)要素の選択は当該行208の第1列210で始まり、Lが完了するまでシーケンシャルに継続する。線形シーケンス212または214は、OTPとして使用され得る。
【0030】
図5は、マトリクス206および鍵集合212レベルでのシーケンスの概念を示している。さまざまな次元の複数のマトリクス206
i~206
nが、ランダムプール204から、または以前のマトリクス206から操作された一連のシーケンス214から、個別に作成され得る。各マトリクス206から鍵212が生成され、鍵212は、次に、暗号化に使用される最終鍵512またはOTPを生成するために、一緒にXORされ得る。
【0031】
プール204を生成するために使用される古典的または量子エントロピーソース202は、それぞれ、個々の乱数生成器または任意の組み合わせと相関する個々のマトリクス206またはいくつかのマトリクス206に関連付けることができる。プール204は、事実上、乱数Rの大きいプールであるが、プール204を、量子エントロピーであれ古典的エントロピーであれ、そのエントロピー起源との複雑な関係を有するより小さい集合に細分化することができる。これらは、各マトリクス206と相関する個々の鍵集合212を生成する前に、複数のマトリクス206を生成するために使用され得る。各マトリクス206から生成された鍵集合212は、個々のシーケンス214を使用するのと同じように、最終鍵集合512にXORする前は、均一な長さであってもよく、不均一な長さであってもよい。
【0032】
図6は、プレーンテキスト600が「hello」である例を示している。プレーンテキストの文字長Lは5であるため、n=5である。図示の例では、暗号エンジン600が、マトリクス606を、行608の数と列610の数とが等しく、よってA=L、B=Lである正方行列として、したがって5×5のマトリクス606として形成する。暗号エンジン600は、プールからランダム要素を引き出して、マトリクス606を形成する。マトリクス606からの非シーケンシャルな選択により、単純な置換鍵612が形成される。シーケンシャルな鍵612であれば、列608
2からの「FGHIJ」であるかもしれず、一方、単一配列の非シーケンシャルな鍵は、列608
3からの「KMOLN」であり得る。
【0033】
図7および
図8は、コンピュータによって実施される暗号化鍵生成のための、異なる方法を示している。本明細書において、任意のコンピューティングデバイスは、限定されるわけではないが、汎用コンピュータおよびサーバー、フィールド・プログラマブル・ゲートアレイ(FPGA)、プロセッサアレイおよびネットワーク、専用の特定用途向け集積回路(ASIC)、ならびに仮想マシン(VM)等を含み得る。具体的なデバイスは、携帯電話、タブレットコンピュータ、およびラップトップコンピュータ等のような可搬型電子デバイスも含み得る。いくつかの例では、プロセッサと、該プロセッサによって実行されると、エントロピーソースからプールへの乱数の操作、記録、展開、および統合、そのような統合された乱数でのマトリクスの作成、鍵または中間シーケンスの作成、ならびにシーケンスの配布を含むさまざまな操作をプロセッサが行うことを可能にする、コンピュータ実行可能な命令を格納する非一時的メモリとを備え得るコンピュータシステムを提供することができる。これは、単一のデバイス(例えば、モバイルデバイスもしくはフィールドデプロイ(field deployed)デバイスにおけるチップ上のシステム)によって、またはネットワークを通じて、行うことができる。このようなコンピュータシステムのいくつかは、物理ノードもしくは仮想化されたノードであり得る個々のノードのより大きいネットワーク構造を構築するシステム群にまとめることができる。
【0034】
図7は、暗号化する固定文字長のプレーンテキストを選択すること(ステップ700)を含む方法の例を示している。単一または複数のハードウェアおよび/またはソフトウェアエントロピーソースから乱数のソースを確立し(ステップ702)、それらの乱数からマトリクスを作成する(ステップ704)。上記のように、単一または複数のハードウェアまたはソフトウェアソース202は、量子乱数生成器であってもよい。
【0035】
上記のように、マトリクス206または606は、2次元配列であり得、プレーンテキストメッセージ100の長さL以上の数Bの列210または610を有し得る。なお、すべての例において、列210および610の数Bはプレーンテキストの長さLと等しい数であり得るが、行208および608の数Aは1であり得る。逆もまた真であり得、行の数Aがプレーンテキストの長さL以上であり、列210および610の数Bが1と等しいことがあり得る。したがって、マトリクス206または606の少なくとも1つの次元AまたはBがプレーンテキストの長さL以上であり得る。一例として、
図6に戻ると、1つの考えられ得る鍵は、列610
3の一部である複数の行608から取得された「CHMRW」であり得る。
【0036】
図7に戻ると、本方法は、暗号化鍵212、512、もしくは612または中間シーケンス214またはワンタイムパッドを生成すること(ステップ706)を含み得る。これは、最初の要素K
iまたはJ
iをマトリクス206または606内で選択し、後続の追加の各要素K
nまたはJ
nを当該マトリクス206または606から選択すること(ステップ708)によって、新しい1次元配列の鍵シーケンス212、512、もしくは612または中間シーケンス214で作成することができる。
【0037】
選択ステップ708は、最初の要素KiまたはJiを開始要素と同じ行または列から取得するサブステップ(ステップ710)、および/あるいは、最後の行または列に到達すると最初の要素KiまたはJiの行もしくは列における1番目の要素KiまたはJiに折り返すサブステップ(ステップ712)を含み得る。他のサブステップは、最初の要素KiまたはJiの後に後続の要素をシーケンシャルに選択すること(ステップ714)、あるいは、任意の予測可能な順序付けまたは関数を用いて行または列から最初の要素KiまたはJiを選択すること(ステップ716)を含む。別のステップは、以前に使用された要素をマトリクスから却下すること(ステップ718)であり得る。言い換えると、いかなる行および/または列からも要素を再使用することなく、新しい1次元配列/鍵シーケンス/中間シーケンスが作成される。
【0038】
さらなるステップは、新しい1次元配列/鍵シーケンス212、512、もしくは612または中間シーケンス214における要素KnまたはJnの数を、いかなる列または行からも要素を再使用することなく、プレーンテキストの文字長Lと等しくなるように一致させること(ステップ720)である。
【0039】
図8は、前述のステップに由来する方法のさらなる例を示しており、新しい1次元配列/鍵シーケンス212、312、512、もしくは612/中間シーケンス214の選択がマトリクス206内の任意の行208/列210から行われて、追加の暗号化鍵212が生成される(ステップ800)。他の例では、次に、複数の新しい1次元配列/鍵シーケンス212もしくは612/中間シーケンス214を用いて、単一の最終暗号化鍵シーケンス512またはワンタイムパッドが生成され得る(ステップ802)。新しい1次元配列/鍵シーケンス212、512、もしくは612/中間シーケンス214は、上記のように、マトリクス206または606から、単一または複数のシーケンシャルまたは非シーケンシャルな手法を用いて生成することができる。これらの新しい配列/シーケンスを一緒にXORして最終鍵シーケンス512を形成することができる(ステップ804)。新しい配列/シーケンスは、複数のマトリクス206
nから生成することができ、一例では、複数のマトリクスのそれぞれが少なくとも1つの新しい1次元配列/シーケンスを生成する(ステップ806)。上記の通り、その後、新しい配列/シーケンスを一緒にXORして、単一の最終1次元配列/シーケンスを、新しい暗号化鍵512またはOTPとして作成することができる。
【0040】
図9は、コンピュータによって実施される暗号化鍵生成のためのシステム1000の例を示している。暗号化のためのシステム1000によってプレーンテキストメッセージ900が受信され、プレーンテキスト900は固定文字長Lを有している。暗号エンジン901が、1つ以上のエントロピー/乱数ソース902にアクセスして、乱数Rを受信する。エントロピー/乱数ソース902は、ハードウェアもしくはソフトウェアまたは両方の組み合わせに基づくものであり得る。乱数は、アクセス時または事前にプール904することができる。代替の例では、プールせずに、アクセスされた乱数Rを直接使用してマトリクスを形成する。マトリクス906は、乱数ソース902から生成された乱数の集合から作成することができ、プレーンテキストの文字長L以上の行908の数Aおよび/または列910の数Bを有し得る。システム1000は、マトリクス906から暗号化鍵912(ワンタイムパッドに使用可能である)を作成する。暗号化鍵912は、上記マトリクス内の最初の要素K
iから始まり、鍵の長さが少なくとも文字長Lと等しくなるまで後続の追加の要素が続く、1次元配列であり得る。一例では、残りの鍵要素K
nを、開始要素K
iと同じ行908または列910から抽出でき、それには、最後の行/列に到達すると行908または列910における1番目の要素に折り返すことが含まれる。マトリクス906の図示における他の陰影付き部分は、上述のように、異なる鍵生成法を表すものである。鍵シーケンス912における鍵要素K
nの数は、マトリクスのいかなる行908または列910からも要素を再使用することなく、上記プレーンテキストの文字長Lと等しくすることができる。次に、鍵912がプレーンテキストメッセージ900に適用されて、暗号メッセージ945が形成される。次に、暗号メッセージ945を送信することができる。一例では、アリス10が、ネットワーク30(安全にされていないにせよ、そうではないにせよ)を介してボブ20に送るプレーンテキストメッセージ900をタイプする。システム1000は、アリス10からのプレーンテキスト入力を受信し、それをボブ10に送信するのに必要な要素のすべて、または、メッセージ945を暗号化/復号化するのに必要な要素のみを有し得る。
【0041】
次に、メッセージ945を復号化するためのボブ20による鍵912の使用は、いくつかの公知の手段によって行うことができる。鍵912は、ボブ20が使用するための任意の公知の先行技術の方法で、ボブ20に渡すことができる。あるいは、アリス10とボブ20の両方がマトリクス906を共有することができ、アリスのシステム1000およびボブのシステム1000のみが、マトリクス906から鍵612を形成するためにどの手法(単一または複数、シーケンシャルまたは非シーケンシャル)を使用すべきかを知っている。マトリクス906は、暗号化されていない状態で渡すことも可能であり、異なる鍵を用いて暗号化して渡すことも可能である。
【0042】
他の例では、単一または複数のハードウェアまたはソフトウェア乱数ソース902は、量子乱数生成器であり得る。鍵または中間シーケンス912のための後続の追加の要素は、新しい1次元配列が最初の要素Kiからシーケンシャルに選択されるという点で、シーケンシャルに選択することができる。新しい1次元配列は、いかなる行および/または列からも要素を再使用することなく、任意の予測可能な順序付けまたは関数を使用して、最初の要素Kiの行または列から選択することができる。新しい1次元配列は、追加の暗号化鍵を生成するために、上記マトリクス内の任意の行および/または列から選択することができる。別の例は、複数の新しい1次元配列をマトリクスから単一のシーケンシャルまたは非シーケンシャルな手法を用いて生成でき、これらの新しい1次元配列を一緒にXORして、単一の最終1次元配列を新しい暗号化鍵またはワンタイムパッドとして作成できるというものである。単一のマトリクスの代わりに、複数のマトリクスがそれぞれ新しい1次元配列を生成し、その後、新しい1次元配列は、一緒にXORされて、単一の最終1次元配列が新しい暗号化鍵またはワンタイムパッドとして作成される。
【0043】
さらに、マトリクスは、任意の数の次元(1次元、2次元、3次元等)を有し得、ある特定の例では、次元の少なくとも1つがプレーンテキストの文字長に等しい。このことは、中間シーケンスおよび鍵シーケンスの両方にも当てはまる。
【0044】
本明細書に含まれる説明は、本発明の実施形態の例であり、本発明の範囲を限定することを何ら意図するものではない。本明細書に記載されるように、本発明は、乱数の生成、収集、プーリング、マトリクスの生成、およびシーケンスの生成、追加の制御機能、追加の通信機能、本明細書に特に記載されていないエンドユーザのニーズを満たすための追加の機能、追加および/または代替の乱数ソース、ランダムビットストリームを生成するための追加および/または代替のスキームおよび手段、安全でないネットワークを介した安全な転送のために乱数を暗号化および/またはカプセル化するための追加および/または代替のスキーム、仮想エントロピーソースを作成するための追加および/または代替のスキーム等を含む、暗号化システムの多くの変形および変更を企図している。このような変更は、本発明に関する技術分野における通常の知識を有する者には明らかであり、以下の特許請求の範囲内にあることが意図される。
【手続補正書】
【提出日】2023-07-24
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
暗号化鍵生成のための方法であって、
固定文字長を有するプレーンテキストメッセージを受信するステップと、
ソースから複数の乱数を受信するステップと、
前記複数の乱数から、行数および列数の少なくとも一方が前記文字長以上であるマトリクスを作成するステップと、
1つ以上の配列を生成するステップと、
前記1つ以上の配列に基づいて前記暗号化鍵を作成するステップと、を含み、
前記
1つ以上の配列を生成するステップは、
最初の要素を前記マトリクス内で選択するステップと、
選択手法を用いて、前記
1つ以上の配列における要素の数が
それぞれ前記文字長
以上になるまで、
前記マトリックスから後続の
一意な要素を選択するステップと、
前記1つ以上の配列の各配列が前記文字長と等しくなるように、前記1つ以上の配列のうちの前記文字長を超える配列のそれぞれを切り詰めるステップと、を含む、方法。
【請求項2】
前記生成するステップは、
前記1つ以上の配列のうちの所与の配列のための前記後続の要素を同じ行および同じ列の一方から選択するステップをさらに含み、使用される前記行または前記列は、少なくとも、前記文字長以上である次元を有するものである、請求項1に記載の方法。
【請求項3】
前記生成するステップは、前記最初の要素の行または列の一方の最後
の要素に到達すると、該行または列における前記最初の要素に折り返すステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記選択手法は、前記最初の要素から
、前記マトリックスの前記数の行のうちの一行にわたって、シーケンシャルに選択することを含む、請求項1に記載の方法。
【請求項5】
前記配列は
、前記最初の要素の行から選択される、請求項1に記載の方法。
【請求項6】
前記選択手法は、前記最初の要素から、前記マトリックスの前記数の列のうちの一列にわたって、シーケンシャルに選択することを含む、請求項1に記載の方法。
【請求項7】
前記1つ以上の配列に基づいて前記暗号化鍵を作成するステップは、
前記1つ以上の配列のうちの複数
の配列をXORして最終配列を作成するステップ
と、
前記最終配列に基づいて前記暗号化鍵を作成するステップと、をさらに含む、請求項6に記載の方法。
【請求項8】
複数の追加の配列を生成するためにそれぞれが使用される複数のマトリクスを作成するステップと、
前記複数の追加の配列を一緒にXORして最終配列を作成するステップと、
前記最終配列に基づいて前記暗号化鍵を作成するステップと、をさらに含む、請求項1に記載の方法。
【請求項9】
暗号化鍵生成のためのシステムであって、
固定文字長を有するプレーンテキストメッセージと、
複数の乱数を生成する乱数ソースと、
前記複数の乱数を保存する非一時的なメモリと、
前記乱数から作成され、行および列の少なくとも一方の数が前記文字長以上であるマトリクスと、
1つ以上の切り詰められた配列と、
前記1つ以上の切り詰められた配列に基づく暗号化鍵と、を含み、
前記1つ以上の切り詰められた配列が、
マトリクスからの最初の要素と、
前記マトリクスからの少なくとも1つの後続の要素と、
前記文字長と等し
くなるように切り詰められた長さと、
を含み、
前記マトリクスから
の要素
は、前記1つ以上の切り詰められた配列を作成するために一意に選択されたものである、システム。
【請求項10】
前記1つ以上の切り詰められた配列のうちの少なくとも1つの切り詰められた配列に関して、前記後続の要素は、前記最初の要素と同じ行からの要素をさらに含む、請求項9に記載のシステム。
【請求項11】
前記乱数ソースは、
ハードウェアまたはソフトウェアの少なくとも一方に基づいた複数の乱数ソースと、
量子乱数生成器と、を含む、請求項9に記載のシステム。
【請求項12】
前記1つ以上の切り詰められた配列のうちの少なくとも1つの切り詰められた配列に関して、前記後続の要素は、前記最初の要素の後にシーケンシャルに続く、請求項9に記載のシステム。
【請求項13】
前記暗号化鍵は、前記1つ以上の配列のうちの複数の配列に対する数学的操作によって形成され
る、請求項9に記載のシステム。
【請求項14】
前記複数の乱数をプールして、乱数のプールを生成するステップと、
前記乱数のプールから数を選択することによって前記複数の乱数からマトリクスを作成するステップと、
前記乱数のプールにおける数のうちの少なくとも一部を、追加のマトリクスの作成に使用するために保存するステップと、をさらに含む、請求項1に記載の方法。
【請求項15】
前記選択手法は、前記マトリクスの前記数の行のうちの複数の行から順序ばらばらに要素を選択することを含む、請求項1に記載の方法。
【請求項16】
前記選択手法は、前記マトリクスの前記数の列のうちの複数の列から順序ばらばらに要素を選択することを含む、請求項1に記載の方法。
【請求項17】
前記非一時的なメモリは、プールとして働くように構成され、前記複数の乱数を保存し、
前記マトリクスは完全に前記プールから作成され、
前記プールは、前記マトリクスの作成に必要な乱数よりも多くの乱数を収容する、請求項9に記載のシステム。
【請求項18】
前記非一時的なメモリと通信するプロセッサをさらに含み、
前記非一時的なメモリは、前記プロセッサによって実行されると前記プロセッサに複数のエントロピーソースから乱数を集めさせる命令を含んでいる、請求項9に記載のシステム。
【国際調査報告】