IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ チエン ダニエルの特許一覧

特表2024-514627デュアルクロックに基づく共有鍵の生成
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-02
(54)【発明の名称】デュアルクロックに基づく共有鍵の生成
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240326BHJP
【FI】
H04L9/08 C
H04L9/08 E
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023562953
(86)(22)【出願日】2022-04-18
(85)【翻訳文提出日】2023-10-13
(86)【国際出願番号】 US2022025174
(87)【国際公開番号】W WO2022221753
(87)【国際公開日】2022-10-20
(31)【優先権主張番号】17/233,429
(32)【優先日】2021-04-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
(71)【出願人】
【識別番号】516045643
【氏名又は名称】チエン ダニエル
(74)【代理人】
【識別番号】100206335
【弁理士】
【氏名又は名称】太田 和宏
(72)【発明者】
【氏名】チエン ダニエル
(57)【要約】
コンピュータセキュリティの技術、具体的には、タイムスタンプベースの鍵生成技術を説明する。一部の実装では、いずれも2つのクロックを有する第一のコンピュータシステムと第二のコンピュータシステムの間で秘密鍵として共有される鍵生成プロセスのテーブルが提供される。第一のクロックは、実時間クロックであり、第二のクロックは、可変時間クロックである。可変時間クロックは、同期化され、同じ速度で、実時間よりも速く又は遅く動作する。両方のコンピュータシステムは、同じ技術を使用してテーブルから鍵生成プロセスを選択し、例えば、可変時間クロックから取得されたタイムスタンプをシードとした乱数発生器に基づいて選択する。コンピュータシステムは、同期化された可変時間クロックを有するため、両方とも同じ鍵生成プロセスを選択して使用することにより、1つのシステムから別のシステムに鍵を伝達する必要なく、同じ暗号化鍵を生成する。
【選択図】なし
【特許請求の範囲】
【請求項1】
第一のコンピュータシステムにおいて第二のコンピュータシステムと安全に通信する方法であって、
前記第一のコンピュータシステムの一部であり、かつ標準時間で動作する第一のクロックを、タイムサーバによって保持されたクロックと同期化するステップと、
前記第一のコンピュータシステムの一部であり、かつ標準時間よりも速く又は遅く動作する第二のクロックを前記第一のクロックと同期化するステップと、
前記第二のクロックから第一のタイムスタンプを取得するステップと、
前記第一のタイムスタンプに基づいて、鍵生成プロセスデータストアから第一の鍵生成プロセスを選択するステップであって、前記データストアにおける各鍵生成プロセスがタイムスタンプを入力として受け取り、入力された前記タイムスタンプに基づく番号を出力として生成し、前記番号が暗号化用途のための共有鍵として機能するのに適する、ステップと、
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップと、
前記第一の鍵を使用して、第二のコンピュータシステムから受信されたメッセージを復号するステップであって、前記第二のコンピュータシステムも、前記第一の鍵生成プロセスを実行して前記第一の鍵を生成し、かつ前記第一の鍵を使用して前記メッセージを暗号化し、前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、暗号化鍵を伝達せずに暗号化通信を行う、ステップと、
を含む、方法。
【請求項2】
前記第二のクロックを前記第一のクロックと同期化した後に、前記第二のクロックの動作を変更するステップを更に含む、請求項1に記載の方法。
【請求項3】
それぞれがランダム長さの時間間隔で前記第二のクロックの動作を変更するステップを更に含む、請求項2に記載の方法。
【請求項4】
1つ以上の制御パラメータを受信するステップと、
前記1つ以上の制御パラメータに基づいて、数値制御発振器を制御して前記第二のクロックに使用される波形を生成するステップと、
を更に含む、請求項1に記載の方法。
【請求項5】
前記第一のタイムスタンプ又はその一部をシードとした乱数発生器に基づいて乱数を生成するステップと、
生成された前記乱数に基づいてインデックスを生成するステップと、
前記インデックスを使用して前記鍵生成プロセスデータストアで前記第一の鍵生成プロセスを検索するステップと、
を更に含む、請求項1に記載の方法。
【請求項6】
前記第一のコンピュータシステム及び前記第二のコンピュータシステムはそれぞれ、鍵生成プロセスのテーブルを記憶し、前記第一のコンピュータシステムの前記テーブルは、前記第二のコンピュータシステムによって記憶された前記テーブルと同一である、請求項1に記載の方法。
【請求項7】
前記第一のコンピュータシステムは、イベントの発生時又は時間の経過時に、第二の鍵生成プロセスを選択するように構成される、請求項1に記載の方法。
【請求項8】
毎時又は毎日、新しい鍵生成プロセスを選択するステップを、
新しいタイムスタンプを取得し、かつ
前記新しいタイムスタンプに基づいて前記鍵生成プロセスデータストアから前記新しい鍵生成プロセスを選択すること
によって行う、ステップ
を更に含む、請求項1に記載の方法。
【請求項9】
前記タイムサーバは、前記第一のコンピュータシステム及び前記第二のコンピュータシステムのインジケータを含むホワイトリストを記憶し、前記プライベートタイムサーバは、前記ホワイトリストによって識別されたコンピュータシステムのみに時間を提供する、請求項1に記載の方法。
【請求項10】
前記タイムサーバは、特定の仮想プライベートネットワークの一部であるコンピュータシステムのみと通信するように構成される、請求項1に記載の方法。
【請求項11】
前記第一の鍵生成プロセスは、演算子及び整数を特定し、前記演算子をタイムスタンプ及び前記整数に適用する、請求項1に記載の方法。
【請求項12】
前記第一の鍵生成プロセスは、前記第一のタイムスタンプに第一の整数を乗算して第一の積値を取得し、前記積値に第二の整数を加算して、前記第一の鍵の少なくとも一部として使用される和を取得する、請求項1に記載の方法。
【請求項13】
前記第一の鍵生成プロセスは、Nビットのタイムスタンプを操作してMビットの値を生成するステップを特定し、Mは、Nよりも大きく、前記操作は、前記タイムスタンプの少なくとも一部を複製することを含む、請求項1に記載の方法。
【請求項14】
前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、前記第一のコンピュータシステムと前記第二のコンピュータシステムの間で送信されたデータを暗号化する暗号化鍵を永続的に記憶せず、前記第一のコンピュータシステムと前記第二のコンピュータシステムの間で、共有暗号化鍵が伝達されることはない、請求項1に記載の方法。
【請求項15】
前記第二のクロックから第一のタイムスタンプを取得するステップは、前記第二のコンピュータシステムから受信したメッセージに応答して前記第一のタイムスタンプを取得するステップを含む、請求項1に記載の方法。
【請求項16】
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップは、前記第一のタイムスタンプから精度を少なくとも1桁下げた値に前記鍵生成プロセスを適用するステップを含む、請求項1に記載の方法。
【請求項17】
前記第一のコンピュータシステムが前記メッセージを成功裏に復号することができない場合に、共有鍵を再生成するステップ
を更に含む、請求項1に記載の方法。
【請求項18】
前記第一のクロック又は前記第二のクロックと前記タイムサーバとの同期化に失敗したことに応答して、ユーザのロックアウト、警告メッセージの送信、データの消去、データの暗号化のうちの少なくとも1つを含む自己保護モードに入るステップ
を更に含む、請求項1に記載の方法。
【請求項19】
プロセッサと、
標準時間で動作する第一のクロックと、
標準時間よりも速く又は遅く動作する第二のクロックと、
命令を記憶するメモリであって、前記プロセッサによって実行されると、
前記第一のクロックをタイムサーバによって保持されたクロックと同期化するステップ、
前記第二のクロックを前記第一のクロックと同期化するステップ、
前記第二のクロックから第一のタイムスタンプを取得するステップ、
前記第一のタイムスタンプに基づいて、鍵生成プロセスデータストアから第一の鍵生成プロセスを選択するステップであって、前記データストアにおける各鍵生成プロセスがタイムスタンプを入力として受け取り、入力された前記タイムスタンプに基づく番号を出力として生成し、前記番号が暗号化用途のための共有鍵として機能するのに適する、ステップ、
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップ、及び
前記第一の鍵を使用して、第二のコンピュータシステムから受信されたメッセージを復号するステップであって、前記第二のコンピュータシステムも、前記第一の鍵生成プロセスを実行して前記第一の鍵を生成し、かつ前記第一の鍵を使用して前記メッセージを暗号化し、前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、暗号化鍵を伝達せずに暗号化通信を行う、ステップと、
を行うように構成された、メモリと、
を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年4月16日に出願された米国特許出願第17/233,429号の優先権を主張し、その全ての内容は、参照により本明細書に組み込まれるものとする。
【0002】
本開示は、コンピュータセキュリティのための方法、技術及びシステムに関し、特に2つの別個のクロックに基づき、その一方が実時間よりも速く又は遅く動作し得る共有鍵の生成に関する。
【背景技術】
【0003】
暗号化技術は、対称暗号と非対称暗号に分けられる。対称暗号には、暗号化データ又は暗号文として知られる読みにくい形式にデータを変換し、読みにくい形式からデータを変換するために使用される共有鍵(共有秘密鍵)の使用が含まれる。つまり、同一の鍵は、暗号化と復号に使用される。対称暗号化技術には、まずそれ自体がセキュリティ侵害に対して弱い共有鍵を交換する必要があるという問題がある。対称暗号化に関連するもう1つの欠点は、鍵の変更が容易ではなく、特に交換が(ネットワーク経由ではなく)オフラインで実行される場合に容易ではないことである。
【0004】
RSAなど、現在使用されている多くの暗号化アルゴリズムは、何らかの形式の公開秘密鍵のペアリングを使用して、コンピュータシステムの間でデータ、パケットなどを安全に共有して、署名し、その後、デジタル署名などを検証する。これらのアルゴリズムは、データの暗号化に使用される鍵がデータの復号に使用される鍵と異なるため、一般的に非対称暗号アルゴリズムとして知られている。これらのアルゴリズムは、公的に知られ、送信者によって情報の暗号化に使用される受信者の公開鍵と、公開鍵によって暗号化された情報の復号に使用される受信者の秘密の秘密鍵との2つの鍵の使用に依存する。特定の受信者の公開鍵を持っている人は、その人に送信される予定のメッセージを暗号化することができる。そして、メッセージは、受信者が(常に秘密を保持する)自分自身の秘密鍵を使用してのみ復号することができる。
【0005】
公開鍵及び秘密鍵の暗号化技術には、鍵の有効期間が一般に長く、特定のユーザ又はエンティティに緊密に関連付けられているという問題がある。新しい鍵ペアを取得することは、常に簡単とは限らない。また、エンティティがその秘密鍵を紛失すると、その公開鍵によって暗号化されたデータを復号することはできなくなる。更に、非対称暗号化は、本質的に「一方向」であり、秘密鍵を持つ者(通常、単一の者)のみがデータを暗号化することができる。これは、複数の鍵ペアを双方向通信の達成に使用する必要があることを意味する。最後に、このような技術には、鍵を作成、管理、検索するためのインフラが必要となる場合がある。この追加のインフラ自体は、セキュリティ上の不安にさらされる可能性がある。
【0006】
これらの暗号化技術の主な用途は、1つのコンピュータシステム(デバイス、環境など)から別のコンピュータシステムへのデータの送信中にそのデータを保護すること、及び/又はデータにデジタル「署名」して、データのソースがその要求するソースからのものであることを受信者が検証できるようにすることである。対称暗号化又は非対称暗号化を使用することで、送信された情報は、読みにくいフォーマットに変換される。仮に、これは、ハッカー及び他の悪意のある関係者が送信された暗号化データ(暗号文)に違法にアクセスすることを防止する。
【0007】
しかしながら、その鍵によって与えられるセキュリティと同じくらい安全であるに過ぎない。鍵のセキュリティは、鍵を生成するために使用されるビット数によって高めることができる。例えば、2048ビットの鍵を用いた暗号化システムは、1024ビットの鍵を用いたシステムと比較して、総当たり攻撃(全ての組み合わせの試行錯誤)技術を用いた解読は、計算上、より困難である。したがって、ハッカー及び他の悪意のある関係者は、総当たり攻撃技術(全ての可能な鍵を試す)を使用して暗号化データを復号しようとするのではなく、鍵の生成に使用される基礎となるアルゴリズムの欠陥を暴露しようとする。
【0008】
送信された情報をより安全に保つために、公開鍵暗号化の一部の実装(SSL及びTLSなど)では、証明書及び認証局を使用して、通信(例えば、サーバによって提供されたページ)が現在有効な証明書に関連付けられていると検証できることを保証し、該現在有効な証明書は、認証局によって以前に検証されたサーバに関連付けられている。検証後、これらのシステムは、共有セッション鍵を生成し、その後にシステム間で送信されたデータを暗号化する所望のいかなる暗号化技術を使用してもよい。
【0009】
更に、いくつかのシステムは、非対称暗号化と対称暗号化の組み合わせを使用する。例えば、受信者の公開鍵を使用して暗号化された共有セッション鍵(共有秘密鍵)を送信するために、公開鍵暗号化技術を使用してもよい。例えば、例示的な「ハイブリッド」システムでは、送信者によって生成された新しい共有鍵を暗号化するために、意図された受信者の公開鍵を使用してもよい。そして、生成された共有鍵は、受信者が(受信者の秘密鍵を使用して)取得(復号)し、かつ暗号化鍵、復号鍵及びアルゴリズムが送信の両側で同じである対称暗号化データ送信に使用することができる。多くの場合、共有(対称)鍵は、セッションベースであり、そのセッションの終了後に破棄される。
【図面の簡単な説明】
【0010】
図1A】例示的な実施形態に係る鍵生成環境を示すブロック図である。
図1B】例示的な実施形態に係る鍵生成環境を示すブロック図である。
図2A】例示的なシングルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図2B】例示的なシングルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図3A】例示的なデュアルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図3B】例示的なデュアルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図3C】例示的なデュアルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図3D】例示的なデュアルクロック実施形態に係る鍵生成プロセスを示すフローチャートである。
図4】例示的な実施形態に係る共有鍵生成モジュールを実装する参加者のコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0011】
本明細書に記載される実施形態は、コンピュータセキュリティのための方法、デバイス及びシステムを提供し、特にデバイスの事前に定義された共有鍵、共有鍵交換、公開鍵/秘密鍵の生成又は証明書に依存せずに、暗号化及び他のデータ処理に使用されるタイムスタンプベースの鍵生成技術を提供する。記載された技術を使用すると、共有鍵を交換したり永続的に記憶したりする必要がない。
【0012】
記載された技術は、暗号システムの構成に少なくとも1つの鍵が必要であるという、従来技術の暗号化方式の多くの欠点に対処する。この鍵は、事前に定義されたもの、公開鍵と秘密鍵であっても、あるいは所有者は秘密鍵を有している場合、それ自体に公開鍵が含まれる証明書であってもよい。したがって、このようなシステムは、鍵を盗んでシステムセキュリティを侵害する可能性のあるハッカー又は不満を持つ従業員に対して弱い。また、証明書を全ての関係者に配布し、日付を調整して新しい証明書の使用に切り替えるのが非常に困難であるため、証明書は、典型的には、有効期間が長く、数年の存続期間がある。証明書に関連付けられた秘密鍵が盗まれた場合、その影響は長引く。説明された発明は、システムのどこにも鍵を記憶しない新しい暗号化プロセスを含む。現在、従来の技術のように、ハッカー又は不満を持つ従業員が鍵を盗んでセキュリティを侵害することはできない。
【0013】
説明された発明は、1つ以上のタイムソースから取得されたタイムスタンプに基づくものである。一実施形態では、タイムスタンプは、同期クロックから取得される(例えば、タイムサーバに同期化される)。これらのタイムスタンプは、暗号化/復号のための新しい共有鍵を生成するために(典型的には、乱数発生器及び他の数学的方法を介して)操作される。したがって、同期クロックと同期操作技術を用いた2台のマシンは、同じ共有鍵を生成し、その同じ共有鍵を通信チャネルの保護に使用することができる。
【0014】
典型的な実施形態では、タイムサーバは、標準のGMTクロックを使用しない。より重要なことに、このタイムサーバのクロックは、国際単位系で定義されないそれ自体の速度で動作することができる。セキュリティは、タイムサーバへのアクセスを制限する機能、標準時間とは異なる(又はオフセットする)速度でタイムサーバを動作させる機能、及びタイムスタンプ操作技術(乱数発生器など)を保持する機能のうちの1つ以上により維持することができる。更に、この新しい共有鍵は、好きなだけ何回でも生成することができる。これにより、総当たり攻撃方法を用いたデータの復号は、非常に困難になる。更に、コンピュータシステム間で安全なセッションを使用して新しい共有鍵を交換する必要がない。
【0015】
典型的な実施形態は、データ/暗号文を暗号化/復号する対称暗号アルゴリズムと一緒の使用が安全な鍵生成プロセスを利用する暗号化方法を提供する。鍵生成プロセス自体の一部、例えば、どの鍵生成プロセスを選択するかを決定する方法は、プロセス全体が同期タイムスタンプに基づいて各参加システムで同じ共有鍵を生成するように、参加システムで共有されるように構成される。タイムスタンプが同じであり、選択された鍵生成プロセスが各参加者に対して同じであるため、生成された鍵は、同じであり、「共有」鍵として使用することができる。
【0016】
記載された技術と、鍵交換、又は公開鍵/秘密鍵(非対称)暗号化又は証明書ベースの方法などの代替方法を必要とする既知の技術との重要な相違点は、各参加システムがそれ自体の共有鍵の生成への責任を負い、かつ鍵交換を必要としないことである。更に、共有鍵は、特定の時間で、間隔で、又はトランザクションごと、又は共有鍵を数回使用した後など、頻繁に変更する(新しい鍵を生成する)ことができる。各参加システムのタイムスタンプが同期化されている(誤差の範囲内で同じである)限り、どの共有鍵生成プロセスを使用するかを選択するメカニズムは、同じであり、共有鍵は、各参加者によって同時に計算され、その結果として生成された鍵は、共有鍵として機能することができる。
【0017】
概要として、タイムスタンプを操作して共有鍵を生成する共有鍵生成プロセス(方法、アルゴリズム、公式、方程式など)のテーブルは、参加者システム/ユーザの間で共有される(同じである)。テーブル中のどの鍵生成プロセスエントリを特定の(潜在的に次の)トランザクションに使用するかを決定する鍵生成プロセス選択方法は、参加システムの間の共有秘密である。例えば、この共有秘密は、システムの初期化時又は他の時点で、参加システムの認定ユーザ/管理者によって設定されてもよい。
【0018】
そして、各参加システムは、同じ鍵生成プロセス選択方法に基づいて、(それ自体のシステムに対して)テーブル中のどの共有鍵生成プロセスエントリを使用して共有鍵を生成するかを別個に決定し、これは、共有鍵生成プロセステーブルのインデックス付けに使用される番号を生成する。同じ鍵生成プロセス選択方法が使用され、共有鍵生成プロセスのテーブルが同じであるため、各参加者システムは、同じインデックス番号を、生成し、使用する。この決定されたインデックスに基づいて、次の鍵生成プロセスエントリをテーブルから検索し、ローカルクロック(各参加者に同期化されているため、同じである)から取得されたタイムスタンプに適用して共有鍵を生成し、この共有鍵を既存又は将来の暗号化アルゴリズム(又は他の処理)と共に使用して符号化及びデータ送信の解読を行うことができる。
【0019】
使用されるタイムスタンプは、典型的には、2018年12月14日に出願され、「Time-Based Authentication」と題する米国特許出願第16/220,652号及び2019年3月20日に出願され、「Time-Based Authentication with Redirection」と題する米国特許出願第16/359,962号に記載されている形式であり、それらの出願の内容全体は、参照により本明細書に組み込まれるものとする。本明細書において説明されるように、これらのタイムスタンプは、同期化され、各システムに対してローカルに決定され、各システムのローカルクロック(ハードウェア又はソフトウェア)に基づくものである。このローカルクロックは、ネットワークアクセス可能なタイムサーバ、又は電波時計信号又は全地球測位システムなどの他のソースから同期化される。最高レベルのセキュリティのために、プライベートなタイムプロバイダ/サーバを、全ての同期化された参加者のクロックに使用することができる。このプライベートなタイムプロバイダは、標準のGMTクロックを使用する必要がない。更に、そのクロック速度(レート)が国際単位系に準拠する必要がないため、そのクロックをより高速又は低速で動作させることができる。この場合、攻撃者が参加者のクロック上で現在時刻を決定したり、将来の時刻を推測したりすることは非常に困難になる。更に、参加システムに使用されるタイムスタンプのフォーマットと精度も、それらの間の共有秘密として構成されても、事前に設定されてもよい。
【0020】
例示的な共有鍵生成プロセスは、関数及び/又は定数をタイムスタンプ値に適用してもよく、そのような方法の数が事実上無限であるため、権限のない者は、鍵生成プロセス選択方法及び生成された共有鍵に使用されたタイムスタンプに関する知識がないと、生成された共有鍵にアクセスできない。したがって、記載される技術は、対称暗号化アルゴリズムと共に使用する鍵生成を強化するが、そのために、セッション鍵又は他の対称鍵を交換する別個の(例えば、公開鍵暗号化を用いた)トランザクションも、対称鍵又は非対称公開鍵暗号化のペアを交換する前に証明書又は証明書(又は他のトークン)の検証も必要としない。したがって、暗号化/復号処理の速度などの対称鍵暗号化の利点は全て、復号のための暗号文を送信する前に参加システムの間で共有鍵を最初に交換することの固有の脆弱性なしで実現することができる。
【0021】
したがって、記載された技術は、例えば1つ以上のコンピュータシステムの動作、統合又は効率を改善することにより、従来の技術を改善する。具体的には、記載された技術は、コンピュータセキュリティに対する現在のアプローチの欠点に対処する。記載された技術を使用すると、悪意のあるコンピュータシステムが安全なサービス、システム又はネットワークに侵入することがより困難になる。記載された技術は、アクセスを、適切な鍵生成プロセスによって構成されたコンピュータ又はデバイスのみに制限する。
【0022】
図1Aは、本明細書に記載された共有鍵生成技術の第一の例示的な実施形態を実践する環境を示すブロック図である。図1Aにおいて、システム101aは、第一の参加者コンピュータシステム「A」10、第二の参加者コンピュータシステム「B」60及びタイムサーバ62を含む。参加者コンピュータシステム10は、暗号化モジュール100と、鍵生成モジュール140と、鍵生成モジュール140が共有鍵を生成するために使用する鍵生成プロセス120のテーブル(又は類似の集合)とを含む。参加者コンピュータシステム60も、暗号化モジュール100と、鍵生成モジュール140と、参加者システム10の選択された鍵生成プロセス120と同じであり、鍵生成モジュール140によって共有鍵を生成するために使用される鍵生成プロセス120のテーブル(又は類似の集合)とを含む。いくつかの実施形態では、鍵生成プロセステーブル120は、他のプロセス又は暗号スイートなどの構成データも含んでもよい。
【0023】
概要として、いくつかの実施形態におけるシステム10及び60は、以下のように安全に通信する。第一に、参加者コンピュータシステム60及び参加者コンピュータシステム10は、安全なサービス又はネットワークを介して対話するために配置され、例えば、企業、大学又は他の組織によって提供されてもよい。各参加者コンピュータシステムが初期に構成されるとき(例えば、アンボックスされて(unboxed)そのユーザに対して構成される場合)、管理者又は他の特権ユーザは、鍵生成プロセステーブル120を含む図示されるモジュールを有する各コンピュータシステムを記憶するか、又は別の方法で構成する。これは、サムドライブ又は他のメディアを介してモジュール及びデータをロードすることなどにより手動で行われてもよい。他の実施形態では、モジュール及びデータは、外部に接続されていないネットワークなどの安全なチャネルを介して各参加者コンピュータシステムに送信されてもよい。
【0024】
第二に、各システムは、その内部クロックをタイムサーバ62などのプライベートタイムサーバと同期化する。プライベートタイムサーバは、システム10、60のみによってアクセス可能であり、場合によっては他の許可システムによってアクセス可能である。プライベートタイムサーバへのアクセスは、仮想プライベートネットワーク、物理ネットワーク制限、ホワイトリストなどの様々な既知の技術によって制御することができる。一実施形態では、プライベートタイムサーバは、許可コンピュータシステムのホワイトリストを含み、ホワイトリストは、IPアドレス、ハードウェア識別子などのマシン識別子を含む。プライベートタイムサーバは、標準クロック時間に従う必要がない(典型的には、従わない)。例えば、プライベートタイムサーバは、標準時間よりも23分間遅れて動作してもよい。また、プライベートタイムサーバによって保持される時間は、標準時間よりも速くてもよく、遅くてもよい。例えば、プライベートタイムサーバの時間が10%速く流れてもよいため、実時間が1分間経過するたびにプライベートタイムサーバのクロックが66秒進む。システムがタイムサーバとの同期化に失敗した場合、いくつかの実施形態では、システムは、ユーザのロックアウト、遭難メッセージの送信、データの暗号化又は消去などによりシステムに関する情報又はシステムへのアクセスを保護するための措置を講じる自己保護モードに入る。
【0025】
参加者コンピュータシステムは、それらのクロックをプライベートタイムサーバと同期化すると、以下のように第一の共有鍵を生成する。まず、(プライベートタイムサーバと同期化された)システムクロックからタイムスタンプを取得する。このタイムスタンプは、乱数発生器のシードとして使用され、初期構成時にシステムに提供される。乱数発生器の出力を使用して鍵生成プロセス120のテーブルへのインデックスを生成する。その後に、鍵生成モジュール140は、選択された鍵生成プロセス120を使用して暗号化鍵を生成する。
【0026】
システム10及び60は、両方とも同じプライベートタイムサーバに同期化され、同じ乱数発生器を使用するため、動作中に両方のシステムがいくつかの精度間隔(分間、時間、日間など)内で等しいタイムスタンプを使用する限り、同じ鍵生成プロセスを選択する(したがって、同じ鍵を生成する)ことになる。システムが同じタイムスタンプを使用することを保証するために、各システムに対して、鍵生成スケジュールを構成し、その鍵生成スケジュールは、新しい鍵を生成すべき時刻をシステムに通知する。例示的な実施形態では、スケジュールは、新しい鍵を毎時に生成すべきであることを示す。例えば、午前7:00に、各システムは、タイムスタンプを取得して使用して、鍵生成プロセスを選択する。各システムは、タイムスタンプ(又はその一部)を乱数発生器のシードとして使用して、鍵生成プロセステーブル120へのインデックスを作成する。選択された鍵生成プロセスを使用して鍵を生成する。次いで、システム10が7:15に通信を開始すると仮定すると、システム10は、午前7:00に生成された鍵を使用して、システム60に送信されたデータを暗号化する。システム60は、同じプロセスを実行しているので、同じ鍵を生成するため、システム10から受信したデータを復号することができる。
【0027】
代替的なアプローチでは、通信を開始するまで鍵を生成しない。したがって、例えば、システム10が午前7:23に通信を開始すれば、システムは、タイムスタンプを取得し、タイムスタンプの切り捨てられた時間(午前7:00)を受け取り、この値を乱数発生器のシードとして使用して、鍵生成プロセステーブル120へのインデックスを作成する。選択されたプロセスを使用して鍵を生成して、システム60に送信されたデータを暗号化する。システム60は、切り捨てられたタイムスタンプとして午前7:00を使用して同じプロセスを実行して、システム10によって使用されたのと同じ鍵生成プロセスを検索することにより、同じ鍵を生成し、次にこの鍵を使用して、受信された暗号化データを復号することができる。
【0028】
典型的な実施形態では、鍵生成プロセス120は、タイムスタンプを入力として受け取り、タイムスタンプに基づいて番号を出力する。この番号は、生成された共有鍵である。例示的なプロセスは、K=a*タイムスタンプ+bとして表されてもよく、ここで、a及びbは、鍵生成プロセステーブル120の一部として記憶された定数である。いくつかの実施形態では、定数a及びbは、プロセスの固定部分又は静的部分であり、他の実装では、定数は、鍵生成プロセスが選択されるか又は記憶される場合に特定された構成データである。他の実施形態では、他の演算子又は追加の演算子(例えば、減算、累乗法、モジュロなど)を使用して、タイムスタンプに基づいて出力を計算してもよい。いくつかの実施形態では、定数a及びb自体は、タイムスタンプ、以前に記憶された値又はそれらの組み合わせをシードとした乱数発生器の出力に基づいて決定される。これにより、攻撃者が鍵生成プロセスの詳細を推測することが更に困難になる。
【0029】
いくつかの実施形態では、参加者コンピュータシステム10及び参加者コンピュータシステム60などの各参加者コンピュータシステムは、以下のように共有鍵を生成する。まず、参加者コンピュータシステムは、ハードウェア又はソフトウェアクロックから現在の時間を反映するタイムスタンプを取得する。クロックは、典型的には、参加者システムにとってローカルであるが、いくつかの実施形態では、クロックは、ネットワークアクセス可能なタイムサーバであってもよく、上述したようにプライベートネットワークタイムサーバと同期化されてもよい。次に、参加者コンピュータシステムは、選択された鍵生成プロセス120をタイムスタンプに適用して、共有鍵として使用される番号を取得する。例えば、タイムスタンプが1544512669で、プロセス120が関数K=34*タイムスタンプ+54543を適用すれば、得られる値は、52513485289になる。その後に、この値は、共有鍵であり、共有となったのは、別の参加コンピュータシステムが鍵生成プロセスを選択する同じプロセス、同じ選択された鍵生成プロセス120及び同じタイムスタンプを(独立して)使用して同じ鍵を決定したからである。その後、その共有鍵を使用して、参加コンピュータシステムの間で安全な(暗号化された)データを処理して送信することができる。
【0030】
各参加者コンピュータシステムは、所与のサイズの鍵の生成を確保するステップを実行することもできる。例えば、2048ビットの鍵が使用される場合、システムは、タイムスタンプ(又はその一部)を操作して2048ビットのデータ値を生成し、次いで、鍵生成プロセスによりこのデータ値を処理してもよい。簡単な例として、システムは、64ビットのタイムスタンプを32回繰り返して2048ビットの値を生成し、鍵生成プロセスに従ってこの値を処理してもよい。当然、タイムスタンプが2048ビットの基本値を満たす際に、このタイムスタンプに対して様々な方法で分割、繰り返し、反転、XOR演算又は他の操作を行ってもよい。いくつかの実施形態では、タイムスタンプを基本値に変換する正確なプロセスは、各鍵生成プロセスがタイムスタンプを2048ビットの値に一意に変換してから、この値を(例えば、乗算、加算、減算によって)一意に操作して共有鍵を生成するように、鍵生成プロセス自体によって特定される。
【0031】
典型的な実施形態では、全ての参加者コンピュータシステムは、全ての参加者が所与の時間間隔中に同じ鍵を使用するように、同じプロセスを使用して鍵生成プロセスを選択する。いくつかの実施形態では、特定のコンピュータシステムは、暗号化メッセージのブロードキャストなど、複数の他のコンピュータシステム(参加者グループ)との安全なトランザクションに「参加」する可能性があるため、グループの他の各参加者に別個に関連付けられた鍵生成プロセス選択方法を記憶して関連付ける。したがって、特定のコンピュータシステムは、別の特定のコンピュータシステムとの1つ以上のトランザクション用の共有鍵を生成するように指示される場合、それらのトランザクションに使用される共有鍵を生成する前に、まず、該参加者グループに固有の鍵生成プロセス120を選択しなければならない。参加者グループは、1つ以上の参加者コンピュータシステムを含んでもよく、共有鍵が全ての参加者によってアクセス可能であれば、2つよりも多くの参加者コンピュータシステムを含んでもよい。各コンピュータシステムは、典型的には、他の参加者をそれぞれのプロセス選択方法にマッピングするテーブル(リスト、ファイル、データベースなど)を有するため、参加者グループごとに異なる鍵生成プロセスを使用することができる。
【0032】
いくつかの実施形態では、このテーブルは、参加者の変更不可能なデバイス/ユーザ識別子(例えば、MACアドレス、CPU識別子又はそれらの何らかの組み合わせ)をプロセス選択方法の識別子にマッピングする。参加者コンピュータシステムのグループ内の各参加者コンピュータシステムは、デバイス識別子を初期化データの一部として、別個のネットワーク送信を介して、又は、初期ネットワークハンドシェイク若しくは他のネットワークプロトコル関連操作の一部として受信する。
【0033】
システム10及び60などの参加者コンピュータシステムは、異なる時刻に1つ以上のデータ処理トランザクションに使用される共有鍵を生成することを決定してもよい。両方のシステムは、(同期クロックを使用して)本明細書に記載された同じプロセスに従えば、一致する鍵を自然に生成し、鍵検証又は鍵再生成を必要としない。例えば、スケジュールが新しい鍵を毎時に生成することを示されば、一方のシステムは、該時間後に電源が投入されたので、別のシステムよりも遅く鍵を生成してもよい。両方のシステムは、該時間に切り捨てられた(分、秒など抜き)タイムスタンプを使用するように構成されれば、一方のシステムがもう一方のシステムよりも遅くても、同じ鍵生成プロセスを選択して使用する。いくつかの実施形態では、各参加者システムが同じ生成鍵を有するか否かを決定するために、任意選択なテストデータ処理トランザクション(テスト暗号化/復号シーケンスなど)を参加者システムにより交換してもよい。そうでなければ、使用可能な共有鍵が生成されるまで、共有鍵生成プロセスを繰り返してもよい。
【0034】
一般的に、参加システムによって使用されるタイムサーバは、クロックが非常に高い精度(例えば、ミリ秒よりも良く)で同期化されることを確保することができる。それにもかかわらず、いくつかの実施形態では、各参加システムによって使用される鍵生成プロセス120は、タイムスタンプの精度をより大きな時間間隔に低下させる可能性がある。精度の同様の低下を初期システム設定時に実行する必要がある。したがって、この低下は、参加者システムの間の初期設定時に事前に定義されてもよい。例えば、タイムスタンプが秒で表されれば、鍵生成プロセス120は、タイムスタンプを(例えば、1の位の数字を抜くことにより)最も近い10秒の間隔に四捨五入しても、切り捨てても、あるいは切り上げてもよい。また、時間間隔の境界を越えて遷移するタイムスタンプを把握するために、システム10は、現在の時間間隔及び以前の時間間隔を反映するタイムスタンプに鍵生成プロセス120を適用してもよい。一例として、第一の参加者コンピュータシステム10によって取得されたタイムスタンプが1239であり、鍵生成プロセスがその関数を適用する前に1の位の数字を抜くと仮定する。K=34*変更されたタイムスタンプ+42を使用すると、34*123+42=4224が得られる。第二の参加者コンピュータシステム60によって取得されたタイムスタンプが1秒後(1240)であれば、コンピュータシステム60は、K=34*124+42=4258を生成し、これは、コンピュータシステム10の共有鍵と一致しない。しかしながら、コンピュータシステム60も、精度のより低いタイムスタンプ(1の位の数字を抜いた123)を使用して共有鍵を計算しようとすれば、コンピュータシステム10の共有鍵と一致する番号(34*123+42=4224)を得る。他の実施形態では、現在のタイムスタンプ、前の間隔に基づくタイムスタンプ、及び/又は次の将来の時間間隔に基づくタイムスタンプを使用して、複数の共有鍵を計算する。次いで、計算された鍵がテストデータの処理に成功すれば、コンピュータシステムは、有効な共有鍵を有する。そうでなければ、まず参加システムのクロックを同期化するために他のステップを実行してもよい。他の変更も同様に可能である
【0035】
各システムは、時々又はイベントの発生時に新しい鍵生成プロセスを選択してもよい。鍵生成プロセスを変更することにより、悪意のある者にとって、記載された技術の中心となる番号生成機能を回復することがより困難になる。例えば、参加者コンピュータシステム60は、n回のトランザクションごとに、時間(例えば、1分間、1時間、24時間)の経過後、固定の日付(例えば、2020年1月1日)に新しい鍵生成プロセス選択方法を選択してもよい。いくつかの実施形態では、各システムは、複数のリフレッシュ間隔を表すテーブル又は同様のデータ構造を記憶する。鍵生成プロセスが選択されるたびに、新しいリフレッシュ間隔もテーブルから選択される。リフレッシュ間隔は、タイムスタンプに基づいて生成される乱数など、鍵生成プロセスと同様の方法で選択されてもよい。
【0036】
同様に、参加者コンピュータシステムの間で時々又はイベントの発生時に新しい共有鍵を生成してもよい。例えば、参加者コンピュータシステム60は、n回のトランザクションごとに、時間(例えば、24時間)の経過後、固定の日付(例えば、2020年1月1日)に新しい共有鍵を(以前に選択された鍵生成プロセスを使用して)生成してもよい。共有鍵を変更することにより、悪意のある者が、記載された技術の中心となる番号生成機能を回復することがより困難になる。
【0037】
いくつかの実施形態では、異なる鍵生成プロセス120の詳細が公開されてもよい。このような実施形態では、テーブル120は、典型的には、多数(例えば、数百万)の鍵生成プロセスをホストするため、悪意のある者は、総当たり攻撃で全てを試行することができない。このような「半公開」の実施形態では、(1)プライベートタイムサーバを使用すること、(2)プロセス選択方法(例えば、プロセスを選択するために使用される乱数発生器)を秘密に保つこと、及び(3)鍵生成スケジュールを秘密にすることなどのうちの1つ以上によって、秘密を保持することができる。また、又は代替的に、各鍵生成プロセス120は、参加者グループの間で秘密として保持することもできる構成可能な定数又は他の入力を利用してもよい。いくつかの実施形態では、鍵生成プロセス自体は、プライベートである。セキュリティを最大限にするために、鍵生成プロセスを、組織内のマシンとシステムの間でのみ共有する。例えば、企業は、従業員のデバイスの間で暗号化データを交換する目的のみに使用される鍵生成プロセスの秘密セットを確立することができる。このセットは、安全な共有リポジトリに記憶されてもよく、各デバイスに直接的にロードされてもよい。
【0038】
いくつかの実施形態では、記載された技術を用いて、企業又は組織のネットワークのコンテキストにおいてユーザ及びそれらのデバイスの共有鍵を生成する。他のコンテキストにおいて、この技術を、オンラインのウェブベースサービスのコンテキストにおいて用いることができる。まず、ウェブサーバがクライアントマシンのものと同じクロックを有することができるように、クライアントマシンを公開タイムサーバと同期化する必要がある。このような実施形態では、ユーザがウェブサービスにサインするたびに、サーバは、このユーザに対して鍵生成プロセスの新しいテーブルを作成し、次いで、この新しいテーブルを共有する必要がある。そして、サービスは、サーバとクライアントデバイスで新しい共有鍵の生成を開始する。ユーザのクライアントデバイスは、ウェブサービスを鍵生成プロセス選択方法にマッピングするテーブルを保持するため、ユーザがアクセスしているウェブサービスに基づいて、共有鍵生成プロセスを選択するために、正しい選択方法を用いることができる。更に、上述したように、これらの技術は、安全なシステムにアクセスするときにデバイス識別子(MAC識別子又はCPU識別子など)を使用してデバイスのアイデンティティを検証する他の技術と組み合わせることができる。このような技術は、2016年11月22日に出願され、「Network Security based on Device Identifiers and Network Addresses」と題する米国特許出願公開第2018/0146001号に記載されており、その出願の内容全体は、参照により本明細書に組み込まれるものとする。
【0039】
本明細書において、タイムスタンプが整数として記載されることがあるが、他の実施形態では異なる方法で表されてもよいことに留意されたい。例えば、いくつかの実施形態では、タイムスタンプを、論理時間及び日付要素を指すコンポーネント部分又はフィールドを有するものとして表すことができる。したがって、共有開始点(エポック)からの秒数又はミリ秒数を表す単一の大きな(64ビットなど)数値のみを使用するのではなく、タイムスタンプは、付加又は代替として、年、月、日、時、秒、マイクロ秒を表すフィールドを含んでもよい。このようなタイムスタンプは、2020年4月23日午後5時32分19秒の日付時刻を20200423173219として表すことができ、ここで、桁は、順に年、月、日、時、分、秒を表す。このようなレコードベースのタイムスタンプは、202004231732191587627139などのエポックベースのタイムスタンプと組み合わせることができ、ここで、1587627139は、1970年1月1日(「Unix時間」)からの秒数を表す。
【0040】
作成及び/又は使用される異なる鍵生成プロセスの数には実質的に制限がないことに留意されたい。いくつかの実施形態は、複数(例えば、数百万)の異なる鍵生成プロセスを提供し、それらの異なるサブセットは、異なる企業、組織などによって使用されてもよい。これにより、各組織は、他の組織に対して柔軟性と独自性を得ることができる。したがって、各組織は、鍵生成プロセスの選択、置換、更新に対してそれ自体のポリシーを実装することができる。
【0041】
記載された共有鍵生成技術は、ユーザの介在なしで実行することができることに留意されたい。特に、鍵生成モジュールは、ユーザの介入なしに自動的に、適切な鍵生成プロセスを適用し、得られた番号を(場合によっては、他のキャッシュされたログイン認証情報又はトークンと共に)使用して、データなどを安全に暗号化/復号するか、又は他の方法で処理することができる。このようにして、この技術は、ユーザに対して完全に透明になり得る。更に、この技術は、異なる実施形態でプロトコルスタックの異なるレベルで実装されてもよい。例えば、一実施形態では、HTTP接続などを介して、トランザクションに応答してアプリケーション層で鍵生成を実行してもよい。別の実施形態では、鍵生成を層2(データリンク)又は層3(ネットワーク)などの下位層で実行してもよい。
【0042】
本明細書において、鍵生成プロセスは、典型的には、タイムスタンプを入力として受け取るものとして記載されるが、他のタイプの鍵生成プロセスも考えられることに留意されたい。例えば、一部の鍵生成プロセスは、タイムスタンプの一部のみを入力として受け取ってもよい。他のプロセスは、プロセスのテーブルにおける鍵生成プロセスのインデックスなど、タイムスタンプに基づく番号を入力として受け取ってもよい。ネットワーク識別子又はその一部と組み合わせられたタイムスタンプを含む、入力の組み合わせも考えられる。
【0043】
図1Bは、本明細書に記載された共有鍵生成技術の第二の例示的な実施形態を実践する環境を示すブロック図である。図1Bは、図1Aに関して説明されたシステム101aと類似のシステム101bを示す。システム101bも、参加者コンピュータシステム10、参加者コンピュータシステム60、及びタイムサーバ62を含む。各コンピュータシステム10及び60も、暗号化モジュール100と、鍵生成モジュール140と、鍵生成モジュール140が共有鍵を生成するために使用する鍵生成プロセス120のテーブルとを含む。
【0044】
システム101bでは、コンピュータシステム10及びコンピュータシステム60は、それぞれ、2つのクロックを含む。例えば、コンピュータシステム10は、実時間クロック150及び可変時間クロック151を含む。典型的な実施形態では、クロック150及び151は、ハードウェアクロックであるが、付加又は代替として、少なくとも部分的にソフトウェアに実装されてもよく、プログラマブルロジック(例えば、フィールドプログラマブルゲートアレイ)として実装されてもよい。可変クロック151は、典型的には、クロック150とは異なる周波数で動作するハードウェアクロックである。直接デジタル合成技術を使用してクロック151の周波数を制御して変更することができる。直接デジタル合成では、基準発振器の出力は、数値制御発振器に入力されて変更される。数値制御発振器によって出力された波形は、第二のクロックによって保持された時間の基準になる。他の実施形態では、第二のクロックが動作する速度を操作及び/又は制御するために、異なる技術又は追加の技術を使用することができる。例えば、可変クロック151の出力に一定の時間オフセットを加えてもよい。
【0045】
図1Aに示すように、コンピュータシステム10及びコンピュータシステム60は、初期にそれらのクロックをタイムサーバ62と同期化する。より具体的には、各実時間クロック150は、初期にタイムサーバ62と同期化される。タイムサーバ62は、公開タイムサーバ又はプライベートタイムサーバであってもよい。次に、各可変クロック151は、それぞれのローカル実時間クロックと同期化される。その瞬間から、可変クロック151は、実時間クロック150のものとは異なる速度で動作し始める。各コンピュータシステムの可変クロック151は、実時間と同じ速度で、実時間よりも速く又は遅く動作する。速度は、乱数発生器などを介して、事前に選択されるか又は動的に生成されてもよい。また、速度は、時々又はいくつかの他のイベント、メッセージ、命令又は制御信号の発生時に変更されてもよい。
【0046】
次に、参加者コンピュータシステムのそれぞれは、可変クロック151からタイムスタンプを取得することにより、共有鍵を生成する。そして、コンピュータシステムは、タイムスタンプに基づいて、テーブル120で鍵生成プロセスを検索する。前述したように、タイムスタンプは、テーブル120へのインデックスを取得するために使用される乱数発生器への入力として使用されてもよい。その後に、選択された鍵生成プロセスを使用して暗号化鍵を生成する。システム10及び60によって生成された鍵は、両方のシステムは、初期にそれらのクロックが同じ時間に同期化され、かつそれぞれの可変クロック151が同じ速度で動作するため、同じ(対称)である。新しい鍵は、定期的なスケジュール(例えば、毎時、毎日)に、又はシステム10及び60のそれぞれによって記憶されたランダムに生成された将来の時間のリストなど、いくつかの他の決定された一連の時点に生成されてもよい。
【0047】
また、可変クロック151は、スケジュールに基づいて変更、調整又は再同期されてもよい。例えば、設定時間(例えば、午前5時)に、各可変クロック151の周波数は、変更されてもよいため、可変クロック151は、前の時間間隔よりも速く又は遅く動作してもよい。いくつかの実施形態では、可変クロック151は、その瞬間に実時間クロック150と再同期されてもよい。調整スケジュールは、固定でなくてもよい。いくつかの実施形態では、クロック調整の間隔は、所定のランダム間隔である。他の実施形態では、各間隔の長さは、スケジュールを記憶する必要がないように、その場で(例えば、両方のシステム10及び60が同じ乱数発生器を使用する場合)ランダムに生成される。
【0048】
本明細書に記載されたデュアルクロック技術は、シングルクロックを用いた場合よりも優れているいくつかの利点を提供する。シングルクロックのアプローチでは、各参加者コンピュータシステムが実時間よりも速く又は遅く動作するクロックを使用すれば、これらのコンピュータシステムは、公開の標準タイムサーバに依存してクロックを同期化することができない。コンピュータシステム同士は、同期化できるように共通の実時間のソースを必要とするため、実時間よりも速く又は遅く動作するプライベートタイムサーバに依存する必要がある。また、タイムサーバは、ハッカーがその時刻を獲得したり、サービス拒否攻撃などによってその動作を妨害したりしようとし得るため、セキュリティ上の弱点を提示する。デュアルクロックのアプローチでは、各システムは、いずれの標準タイムサーバにも同期化できる実時間クロックを有するため、プライベートタイムサーバを必要としない。この実時間クロックは、各コンピュータシステムの実時間のソースとして機能する。実時間クロックは、コンピュータシステムの他の時間ベースの機能に使用することができ、可変クロックの動作を同期化するか又は変更する基礎として使用することもできる。したがって、デュアルクロックのアプローチは、システム全体の実装を簡素化しながら、より高いレベルのセキュリティを提供する。
【0049】
図2A及び図2Bは、例示的なシングルクロック実施形態に係る、例示的な参加者コンピュータシステムにおいて共有鍵を生成するプロセスを示すフローチャートである。図2Aは、例示的な実施形態に係る、例示的な参加者コンピュータシステムにおいて共有鍵を生成する第一のプロセスを示すフローチャートである。このフローチャートに示すロジックは、例えば、上記図1A又は図1Bに関して説明された鍵生成モジュール140によって実行されてもよい。
【0050】
ブロック202では、プロセスは、参加者コンピュータシステムにおけるクロックを同期化する。前述したように、クロックは、ネットワークタイムサーバ、GPSシステムにアクセスすることにより同期化されてもよく、他の既知のプロセスにより同期化されてもよい。より高いレベルのセキュリティを優先的に提供するために、プロセスは、そのクロックを、所与の組織(企業、学校など)によって操作されるデバイス及びシステムのみによってアクセス可能なプライベートタイムサーバと同期化する。プライベートタイムサーバによって維持された時間も、実時間よりも速く/遅く流れるか、又は一定量だけ実時間からオフセットしてもよいため、実時間を追跡しなくてもよい。
【0051】
ブロック204では、プロセスは、クロックからタイムスタンプを取得する。典型的には、プロセスにより、適切なオペレーティングシステムコールがシステム時間にアクセスする。同期ローカルクロックを使用する代わりに、いくつかの実施形態では、上述したネットワークタイムサーバなどの共有クロックから直接的にタイムスタンプを取得してもよい。
【0052】
ブロック206では、プロセスは、鍵生成プロセスの事前共有集合から鍵生成プロセスを選択する。本明細書に論じたように、各参加者システムには、鍵生成プロセスのテーブル、リスト又は他の集合が提供されてもよい。典型的な実施形態では、プロセスは、タイムスタンプを使用して、鍵生成プロセスのテーブルから鍵生成プロセスを選択する。例えば、テーブルにN個のエントリがあれば、プロセスは、インデックス=タイムスタンプ・モジュロNを使用してテーブルをインデックス付けしてもよい。別の例として、プロセスは、タイムスタンプをシードとした乱数発生器を使用して、テーブルのインデックス付けに使用される乱数を生成してもよい(例えば、インデックス=ランダム(タイムスタンプ)モジュールN、ここで、Nは、テーブルにおけるエントリの数である)。他の実施形態では、(単独で又はタイムスタンプと組み合わせて受け取られた)受信者マシンの識別子などの他の情報又は追加の情報に基づいて鍵生成プロセスを選択してもよい。
【0053】
ブロック208では、プロセスは、選択された鍵生成プロセスを、取得されたタイムスタンプに適用(例えば、動作又は実行)する。他の実施形態では、プロセスは、鍵生成プロセスを選択するために使用されたものとは異なる第二のタイムスタンプを使用する。第二のタイムスタンプは、リモートシステムとの通信の開始時に取得されてもよいが、(鍵生成プロセスの選択に使用される)初期タイムスタンプは、少し前に取得されてもよい。前述したように、鍵生成プロセスは、典型的には、タイムスタンプを入力として受け取り、暗号化鍵として使用することができる出力を生成する関数である。鍵生成プロセスは、入力された鍵に適用される1つ以上の数学演算子及び定数を特定することができる。一例として、鍵生成プロセスは、関数f(タイムスタンプ)=A*タイムスタンプB+Cとして表されてもよく、ここで、A、B及びCは、定数、例えば、123、23及び34223である。十分なビット数を有する鍵を生成するために、いくつかの実施形態では、タイムスタンプ(又はタイムスタンプから生成された鍵)の全て又は一部を繰り返して、必要なビット数を埋めてもよい。タイムスタンプを繰り返し及び/又は操作する方法自体は、鍵生成プロセスによって特定されてもよい。例えば、1つの鍵生成プロセスは、64ビットのタイムスタンプを32回複製して2048ビットの値を生成するように特定してもよい。このパディングプロセスの間に、利用可能なビットの一部のみを使用する操作、ビットを反転する操作、ビットをシフトする操作などの他の操作を実行してもよい。
【0054】
ブロック210では、プロセスは、生成された鍵を使用してデータを任意に処理する。例えば、プロセスは、鍵を使用してデータを暗号化し、その後に暗号化データをリモート受信側コンピュータシステムに送信してもよい。この受信側コンピュータシステムは、同じ説明されたプロセスを使用して鍵生成プロセスを選択して鍵を生成したので、同じ鍵を生成することになる。そして、受信側は、この鍵を使用して、受信した暗号化データを復号することができる。2つのシステムは、鍵生成又は鍵自体に関する情報を決して送信しないことに留意されたい。定期的な鍵変更と組み合わされた機能により、ハッカー又は他の悪意のある者が暗号化通信を復号することが非常に困難になる。
【0055】
いくつかの実施形態では、各参加者には、記載された機能を実装するために使用されるデータ/コードの固定セットが提供される。データ/コードは、(1)鍵生成プロセス(又はプロセスで使用されるパラメータ)の配列又はテーブルと、(2)乱数発生器(又はそのパラメータ)と、(3)タイムスタンプにおけるフィールド(存在する場合)のサイズと配置を特定し、タイムスタンプの精度を考慮したタイムスタンプフォーマットと、(4)鍵のサイズ、及びタイムスタンプ又は鍵生成プロセスの出力を操作(例えば、繰り返し、複製、反転)して鍵のサイズを埋める方法の仕様と、(5)新しい鍵をいつ又はどのくらいの頻度で生成するかを特定するデータとを含んでもよい。
【0056】
図2Bは、例示的な実施形態に係る、共有鍵を生成する第二の例示的なプロセスを示すフローチャートである。このフローチャートに示すロジックは、例えば、上記図1A又は図1Bに関して説明された鍵生成モジュール140によって実行されてもよい。
【0057】
ブロック252では、参加者コンピュータシステムは、共有鍵生成プロセス選択方法の指示を受信する。この方法の出力は、鍵生成プロセスのテーブル(データストア)へのインデックスである。典型的には、グループ内の各参加コンピュータシステムには、説明されたセキュリティメカニズムを使用している組織内にクライアントコンピュータシステムが配置される場合など、初期設定時に(同じ)鍵生成プロセス選択方法が割り当てられる。鍵生成プロセス選択方法は、数値結果を出力として提供する関数、コードブロック又は類似のロジックである。
【0058】
ある場合に、鍵生成方法テーブルへのインデックスは、疑似乱数を使用する共有方法選択式によって計算される。この疑似乱数のシードは、乱数の生成の「シード」として、各参加システムのタイムスタンプ(例えば、最も近い秒、分、時間などの、精度を考慮した64ビットの整数)に基づくものであってもよい。これにより、計算に対して別の程度のセキュリティを追加する。
【0059】
ブロック254では、参加者コンピュータシステムは、例えば、適切なシステムコールにシステムクロックからタイムスタンプを取得させることにより、そのコンピュータシステムにローカルな同期クロックによって生成されたタイムスタンプを取得する。各参加者コンピュータシステムのシステムクロックは、中央タイムサーバと同期化される。前述したように、様々な時間ソースは、正確に又は実質的に同期化されたシステムクロック、例えば、ネットワークタイムサーバ、GPS、無線時報信号などを確立するために使用されてもよい。いくつかの実施形態では、システムクロックを使用する代わりに、参加者コンピュータシステムは、ネットワークタイムサーバなどのネットワークアクセス可能なソースから直接的にタイムスタンプを取得してもよい。
【0060】
ブロック256では、参加者コンピュータシステムは、指示された選択方法を実行することにより、鍵生成データストア120へのインデックスを決定する。データストアは、典型的には、複数の鍵生成プロセスを含むインデックス付きのテーブルを含む。前述したように、テーブルからプロセスを選択するために使用されるインデックスを決定するために、タイムスタンプは、乱数発生器のシードとされてもよい。
【0061】
ブロック258では、参加者コンピュータシステムは、決定されたインデックスに基づいて、共有鍵生成データストアから、選択された鍵生成プロセスを決定(選択、検索、取得、識別)する。参加者コンピュータシステムは、様々な方法で鍵生成プロセスを決定することができる。参加者コンピュータシステムは、インデックスに基づいて鍵生成プロセスを検索してもよく、インデックスをテーブルへのハッシュとして使用してもよい。いくつかの実施形態では、鍵生成プロセスは、公開のものである。他の実施形態では、鍵生成プロセスのセットは、組織によって秘密に保持される。
【0062】
ブロック260では、参加者コンピュータシステムは、取得された鍵生成プロセスを、ブロック204で取得されたタイムスタンプに適用して新しい(共有)鍵を生成する。代替的な実施形態では、鍵生成プロセスを、新しく受け取られたタイムスタンプに適用する。生成値は、別の参加者コンピュータシステムがこのプロセスによって実行されるロジックと同じロジックを使用して同じ正確な鍵を生成するときに、共有鍵として機能する。
【0063】
ブロック260は、演算子をタイムスタンプ及び整数に適用するステップを含み、演算子及び整数は、決定された鍵生成プロセスによって特定される。典型的な鍵生成プロセスは、1つ以上の演算子を使用してタイムスタンプと少なくとも1つの他の整数に動作する。例示的なプロセスは、k=a*タイムスタンプ+bとして表されてもよく、ここで、kは、出力番号であり、a及びbは、定数である。定数は、鍵生成プロセスにハードコーディングされてもよい。他の実施形態では、より多様なプロセスを提供するために、定数a及びbを鍵生成プロセス自体により計算してもよく、それにより、他の参加者コンピュータシステムによって複製可能である。これらの定数は、鍵生成プロセス自体によって提供されなければ、鍵生成プロセス自体の指示と共に参加者コンピュータシステムの鍵生成モジュールに提供されてもよい。いくつかの実施形態では、鍵生成プロセスは、例えば時間を所定の時間間隔(例えば、最も近い秒、最も近い10秒のウィンドウ、最も近い分)に四捨五入すること又は切り捨てることにより、タイムスタンプの精度を低下させてもよいことに留意されたい。この技術は、クロックドリフト、通信遅延及び/又は参加者コンピュータシステムのクロックの間の小さな差異を考慮するために、使用することができる。
【0064】
任意に、ブロック262では、参加者コンピュータシステムは、共有鍵を使用して一部のデータを処理する。例えば、この処理は、(それ自体の)生成された共有鍵を使用して、参加者コンピュータシステムによって復号される暗号化メッセージを送信することであってもよい。任意の実施形態では、この処理は、鍵生成プロセスが実行可能な共有鍵を生成したことを保証するテストトランザクションであってもよい。
【0065】
任意に、いくつかの実施形態では、このプロセスのロジックは、時間の経過後(例えば、毎日、毎週など)、指定期日に又はその後などの様々なイベント/条件に応答して、トランザクションなどに基づいて、新しい鍵を生成するために、開始してもよい。また、このプロセスのロジックは、参加者グループ内の各参加コンピュータシステムによって実行されて、共有鍵を生成する。
【0066】
図3Aは、第一のコンピュータシステムにおいて、第二のコンピュータシステムと安全に通信する例示的なロジックのフローチャートである。図示されたプロセスは、暗号化モジュール100によって実行されてもよく、場合によっては本明細書に記載されたコンピュータシステム10の1つ以上のコンポーネントと共に実行されてもよい。図3Aは、以下に説明されるブロック3A01~3A06を含むプロセス3A00を示す。
【0067】
ブロック3A01は、第一のクロックを、タイムサーバによって保持されたクロックと同期化するステップを含み、第一のクロックは、第一のコンピュータシステムの一部であり、標準時間で動作する。典型的には、第一のクロックは、第一のコンピュータシステムの一部であるハードウェアクロックである。第一のクロックは、ネットワークタイムサーバ、GPSシステムにアクセスすることにより同期化されてもよく、他の既知のプロセスにより同期化されてもよい。より高いレベルのセキュリティを優先的に提供するために、プロセスは、そのクロックを、所与の組織(企業、学校など)によって操作されるデバイス及びシステムのみによってアクセス可能なプライベートタイムサーバと同期化する。他の実施形態では、第一のクロックは、ネットワークタイムサーバであってもよい。
【0068】
ブロック3A02は、第二のクロックを第一のクロックと同期化するステップを含み、第二のクロックは、第一のコンピュータシステムの一部であり、標準時間よりも速く又は遅く動作する。典型的には、第二のクロックも、第一のコンピュータシステムの一部であるハードウェアクロックである。第二のクロックは、第一のクロックの周波数とは異なる周波数で動作するという点で、第一のクロックと異なる。クロック周波数は、直接デジタル合成技術を使用して、制御及び変更することができる。直接デジタル合成では、基準発振器は、クロックに対して、安定した時間基準を提供する。基準発振器の出力が数値制御発振器に提供されると、数値制御発振器は、その出力で、数値制御発振器に入力される周波数制御値によって周期が制御される波形の離散時間量子化バージョンを出力する。数値制御発振器によって出力された波形は、第二のクロックによって保持された時間の基準になる。他の実施形態では、第二のクロックが動作する速度を操作及び/又は制御するために、異なる技術を使用することができる。
【0069】
ブロック3A03は、第二のクロックから第一のタイムスタンプを取得するステップを含む。典型的には、プロセスにより、適切なオペレーティングシステムコールがシステム時間にアクセスする。同期ローカルクロックを使用する代わりに、いくつかの実施形態は、上述したネットワークタイムサーバなどの共有クロックから直接的にタイムスタンプを取得してもよい。
【0070】
ブロック3A04は、第一のタイムスタンプに基づいて、鍵生成プロセスデータストアから第一の鍵生成プロセスを選択するステップを含み、データストアにおける各鍵生成プロセスがタイムスタンプを入力として受け取り、入力されたタイムスタンプに基づく番号を出力として生成し、その番号は、暗号化用途のための共有鍵として機能するのに適している。
【0071】
ブロック3A05は、第一の鍵生成プロセスを実行して第一の鍵を生成するステップを含む。本明細書に論じたように、各安全なシステムには、鍵生成プロセスのテーブル、リスト又は他の集合が提供されてもよい。典型的な実施形態では、プロセスは、タイムスタンプを使用して、鍵生成プロセスのテーブルから鍵生成プロセスを選択する。例えば、テーブルにN個のエントリがあれば、プロセスは、インデックス=タイムスタンプ・モジュロNを使用してテーブルにインデックス付けしてもよい。別の例として、プロセスは、タイムスタンプをシードとした乱数発生器を使用して、テーブルのインデックス付けに使用される乱数を生成してもよい(例えば、インデックス=ランダム(タイムスタンプ)モジュールN、ここで、Nは、テーブルにおけるエントリの数である)。他の実施形態では、(単独で又はタイムスタンプと組み合わせて受け取られる)受信者マシンの識別子などの他の情報又は追加の情報に基づいて鍵生成プロセスを選択してもよい。
【0072】
ブッロク3A06は、第一の鍵を使用して、第二のコンピュータシステムから受信されたメッセージを復号するステップを含み、第二のコンピュータシステムも、第一の鍵生成プロセスを実行して第一の鍵を生成し、かつ第一の鍵を使用してメッセージを暗号化し、第一のコンピュータシステム及び第二のコンピュータシステムは、暗号化鍵を伝達せずに暗号化通信を行う。この第二のコンピュータシステムは、同じ説明されたプロセスを使用して鍵生成プロセスを選択して鍵を生成したので、同じ鍵を生成することになる。第二のコンピュータシステムも、この鍵を使用して初期にメッセージを暗号化する。2つのシステムは、鍵生成又は鍵自体に関する情報を決して送信しないことに留意されたい。この機能を定期的な鍵変更と組み合わせると、ハッカー又は他の悪意のある者が暗号化通信を復号することが非常に困難になる。
【0073】
図3Bは、図3Aのモジュール3A00を拡張する例示的なロジックのブロック図である。より具体的には、図3Bは、以下のブロックを更に含むプロセス3B00を示す。
【0074】
ブロック3B01は、第二のクロックを第一のクロックと同期化した後に、第二のクロックの動作を変更するステップを含む。第二のクロックの動作は、第二のクロックの周波数を変更するか又は第一のクロックと再同期化することなどにより、時々変更されてもよい。
【0075】
図3Cは、図3Bのモジュール3B00を拡張する例示的なロジックのブロック図である。より具体的には、図3Cは、以下のブロックを更に含むプロセス3C00を示す。
【0076】
ブロック3C01は、それぞれがランダム長さの時間間隔で第二のクロックの動作を変更するステップを含む。いくつかの実施形態では、プロセスは、乱数発生器を使用して時間間隔を決定し、その終了時に、第二のクロックの周波数を変更することなどにより第二のクロックの動作を変更する。周波数の変更は、ランダムに決定されてもよい。プロセスによって使用される乱数発生器は、第二のコンピュータシステムによって使用されるものと同じであるため、第二のコンピュータシステムは、同時にその可変クロックに対して同じ変更を行う。時間間隔は、第一の(実時間)クロック又は第二の(可変時間)クロックに関して決定されてもよい。
【0077】
図3Dは、図3Aのモジュール3A00を拡張する例示的なロジックのブロック図である。より具体的には、図3Dは、以下のブロックを更に含むプロセス3D00を示す。
【0078】
ブロック3D01は、1つ以上の制御パラメータを受信するステップを含む。いくつかの実施形態では、プロセスは、第二のクロックが動作する速度を特定する制御パラメータを受信する。これらのパラメータは、典型的には、鍵生成スケジュール及び鍵生成プロセスのテーブルと共に、初期構成データの一部である。
【0079】
ブロック3D02は、1つ以上の制御パラメータに基づいて、数値制御発振器を制御して第二のクロックに使用される波形を生成するステップを含む。直接デジタル合成が使用される場合、制御パラメータは、数値制御発振器によって生成された波形の周波数を制御する入力として使用されてもよい。制御パラメータは、付加又は代替として、クロックの出力に追加されるオフセットを特定してもよい。
【0080】
図4は、例示的な実施形態に係る共有鍵生成モジュールを実装する参加者コンピュータシステムのブロック図である。特に、図4は、鍵生成プロセステーブル120から選択された鍵生成プロセスを使用して鍵生成モジュール140と、上述した暗号化モジュール100とを実行するコンピュータシステム10を示す。類似の技術は、上述したコンピュータシステム60などの他の参加コンピュータシステムの実装に適用され得る。更に、共有鍵生成モジュール、鍵生成選択方法及び/又は選択された鍵生成プロセスは、ソフトウェア、ハードウェア、ファームウェア又はいくつかの組み合わせで実装されて、本明細書に記載された機能を達成することができる。
【0081】
コンピュータシステム10は、1つ以上のコンピュータシステムを含んでもよく、分散した場所にまたがってもよい。また、示される各ブロックは、特定の実施形態に適切な1つ以上のそのようなブロックを表してもよく、他のブロックと組み合わせられてもよい。更に、様々なブロックは、1つ以上のマシンに物理的に常駐してもよく、その1つ以上のマシンは、標準のリモートプロシージャーコール(RPCなど)又は専有プロセス間通信メカニズム(IPC)を使用して相互に通信する。
【0082】
示される実施形態では、コンピュータシステム10は、コンピュータメモリ(「メモリ」)11、ディスプレイ12、1つ以上の中央処理装置(「CPU」)13、入力/出力デバイス14(例えば、キーボード、マウス、CRT又はLEDディスプレイなど)、他のコンピュータ可読媒体15及びネットワーク接続部16を含む。鍵生成モジュール140は、メモリ11に常駐するように示される。他の実施形態では、コンテンツの一部、モジュール140のコンポーネントの一部又は全ては、他のコンピュータ可読媒体15に記憶及び/又は送信されてもよい。鍵生成プロセス120及び/又は暗号化モジュール100などの他のモジュールもメモリ11に存在してもよい。モジュール140は、好ましくは、1つ以上のCPU13上で実行し、本明細書に記載された技術を実行する。他のコード又はプログラム30(例えば、管理インタフェース、ウェブサーバなど)及び潜在的に他のデータリポジトリ、例えばデータリポジトリ20も、メモリ11に常駐し、好ましくは1つ以上のCPU13上で実行される。注目すべきものとして、図4のコンポーネントのうちの1つ以上は、任意の特定の実装に存在しなくてもよい。例えば、いくつかの実施形態では、他のコンピュータ可読媒体15又はディスプレイ12を提供しなくてもよい。
【0083】
鍵生成モジュール140は、デバイス10のメモリ11で実行しているように示されている。また、メモリ11には、ユーザインタフェースマネージャ41及びアプリケーションプログラムインタフェース(「API」)42が含まれる。ユーザインタフェースマネージャ41及びAPI42は破線で描かれているが、これは、他の実施形態において、これらのコンポーネントのうちの1つ以上によって実行される機能がモジュール140の外部で実施され得ることを示している。
【0084】
UIマネージャ41は、ユーザとモジュール140及びその様々なコンポーネントとの対話を容易にするビュー及びコントローラを提供する。例えば、UIマネージャ41は、ユーザ又は管理者がモジュール140と対話して初期鍵生成選択方法又は鍵生成プロセスデータストア120(例えば、ローカルに記憶されている場合)を構成することができるように、モジュール140への対話型アクセスを提供することができる。いくつかの実施形態では、UIマネージャ41の機能へのアクセスは、ウェブサーバを介して提供されてもよく、場合によっては、他のプログラム30の1つとして実行されてもよい。そのような実施形態では、クライアントシステム又はデバイス上で実行するウェブブラウザを操作するユーザは、UIマネージャ41を介してモジュール100と対話することができる。
【0085】
API42は、モジュール140の1つ以上の機能へのプログラムによるアクセスを提供する。例えば、API42は、他のプログラム30の1つによって呼び出され得るモジュール140又は何らかの他のモジュールの1つ以上の機能へのプログラマチックインタフェースを提供することができる。このようにして、API42によって、ユーザインタフェース、プラグイン、(例えば、モジュール100の機能をウェブアプリケーションに統合するための)アダプタなどの第三者ソフトウェアの開発が容易になる。
【0086】
モジュール140は、ネットワーク99を介してネットワーク接続部16を使用してコンピュータシステム60、62及び64を含む他のデバイス/システムと対話することができる。ネットワーク99は、媒体(例えば、ツイストペア、同軸、光ファイバ、無線周波数)、ハードウェア(例えば、ルーター、スイッチ、リピーター、トランシーバ)、及び遠隔地にいる人間及び/又はデバイス間の通信を容易にするプロトコル(例えば、TCP/IP、UDP、イーサネット(登録商標)、Wi-Fi、WiMAX(登録商標))の任意の組み合わせであってもよい。コンピュータシステム60、62及び64は、システム10と類似して構成されてもよい。
【0087】
1つ以上の汎用又は専用のコンピュータシステム/デバイスは、モジュール140を実装及び/又は実行するために使用されてもよいことを留意されたい。しかしながら、モジュール140を汎用コンピュータシステムに実装できるという理由だけで、技術自体又は技術を実装するために必要な動作(単独又は組み合わせて)が従来からあること又は周知であることを意味するものではない。これらの技術は、1つ以上のコンピュータシステムの動作、統合又は効率を改善するなどして、少なくとも既存の技術に対処して改善しているので、従来のものではない。
【0088】
例示的な実施形態では、モジュール140のコンポーネント/モジュールは、ソフトウェアプログラミング技術を使用して実装される。例えば、モジュール140は、1つ以上の静的ライブラリ又は動的ライブラリと共に、CPU13上で実行する「ネイティブ」実行可能ファイルとして実装されてもよい。他の実施形態では、モジュール140は、他のプログラム30の1つとして実行する仮想マシンによって処理される命令として実装されてもよい。
【0089】
様々なコンポーネントは、例えば、単一のCPUコンピュータシステム上で実行される実行可能ファイルとして、よりモノリシックなプログラミング技術を使用して実装され、あるいは、様々な構造化技術を使用して、それぞれが1つ以上のCPUを有する1つ以上のコンピュータシステムで実行するクライアントサーバ又はピアツーピアに分解されてもよく、様々な構造化技術は、マルチプログラミング、マルチスレッディングを含むが、これらに限定されない。いくつかの実施形態では、同時に及び非同期的に実行し、メッセージパッシング、リモートプロシージャーコール又は他の分散コンピューティングパラダイムを使用して通信することができる。また、同等の同期の実施形態も、サポートされる。また、他の機能は、各コンポーネント/モジュールによって、異なる順序で、異なるコンポーネント/モジュールによって実装及び/又は実行され得るが、それでも説明された機能を実現する。
【0090】
また、データストア20などにモジュール140の一部として記憶されたデータへのプログラミングインタフェースは、言語固有APIと、ファイル、データベース又は他のデータリポジトリにアクセスするためのライブラリとによって、XMLなどの表現言語又はWebサーバ、FTPサーバ又は記憶されたデータへのアクセスを提供する他の種類のサーバを介して利用可能である。データストア20は、1つ以上のデータベースシステム、ファイルシステム又はそのような情報を記憶するための他の任意の技術、あるいは、分散コンピューティング技術を使用する実装を含む、上記の任意の組み合わせとして実装されてもよい。
【0091】
更に、いくつかの実施形態では、モジュール140のコンポーネントのうちのいくつか又は全ては、少なくとも部分的にファームウェア及び/又はハードウェア内など、他の方法で実装又は提供され得る。1つ以上の特定用途向け集積回路(「ASIC」)、標準型集積回路、適切な命令を実行するコントローラ、マイクロコントローラ及び/又は組み込みコントローラ、フィールドプログラマブルゲートアレイ(「FPGA」)、複合プログラマブルロジックデバイス(「CPLD」)などを含むが、これらに限定されない。システムコンポーネント及び/又はデータ構造のいくつか又は全ては、コンテンツとして(例えば、実行可能又は他のマシン可読ソフトウェア命令又は構造化データとして)コンピュータ可読媒体(例えば、ハードディスク、メモリ、コンピュータネットワーク又はセル無線ネットワーク又は他のデータ伝送媒体、あるいはDVD又はフラッシュメモリデバイスなどの適切なドライブによって又は適切な接続部を介して読み取られる携帯媒体物品)に記憶して、コンピュータ可読媒体及び/又は1つ以上の関連するコンピュータシステム又はデバイスを有効化又は構成して記載された技術の少なくともいくつかを実施するためにコンテンツを実行又は使用又は提供してもよい。コンポーネント及び/又はデータ構造のうちのいくつか又は全ては、有形の非一時的記憶媒体に記憶されてもよい。システムコンポーネント及びデータ構造のいくつか又は全ては、(例えば、搬送波の一部として暗号化されることによって、あるいは、アナログ又はデジタル伝搬信号の一部として含まれることによって)データ信号として様々なコンピュータ可読伝送媒体に記憶されてもよく、様々なコンピュータ可読伝送媒体は、無線ベースの媒体及び有線/ケーブルベースの媒体を含み、そして(例えば、単一又は多重化のアナログ信号の一部として、又は複数の個別のデジタルパケット又はフレームとして)様々な形態を取り得る。そのようなコンピュータプログラム製品はまた、他の実施形態で他の形態を用いてもよい。したがって、本開示の実施形態は、他のコンピュータシステム構成で実施されてもよい。
【0092】
本発明の実施形態は、上述したように例示されて説明されてきたが、本発明の精神及び範囲から逸脱することなく、多くの変更を行うことができる。したがって、本発明の範囲は、上記開示によって限定されない。
図1A
図1B
図2A
図2B
図3A
図3B
図3C
図3D
図4
【手続補正書】
【提出日】2023-12-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第一のコンピュータシステムにおいて第二のコンピュータシステムと安全に通信する方法であって、
前記第一のコンピュータシステムの一部であり、かつ標準時間で動作する第一のクロックを、タイムサーバによって保持されたクロックと同期化するステップと、
前記第一のコンピュータシステムの一部であり、かつ標準時間よりも速く又は遅く動作する第二のクロックを前記第一のクロックと同期化するステップと、
前記第二のクロックから第一のタイムスタンプを取得するステップと、
前記第一のタイムスタンプに基づいて、鍵生成プロセスデータストアから第一の鍵生成プロセスを選択するステップであって、前記データストアにおける各鍵生成プロセスがタイムスタンプを入力として受け取り、入力された前記タイムスタンプに基づく番号を出力として生成し、前記番号が暗号化用途のための共有鍵として機能するのに適する、ステップと、
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップと、
前記第一の鍵を使用して、前記第二のコンピュータシステムから受信されたメッセージを復号するステップであって、前記第二のコンピュータシステムも、前記第一の鍵生成プロセスを実行して前記第一の鍵を生成し、かつ前記第一の鍵を使用して前記メッセージを暗号化し、前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、暗号化鍵を伝達せずに暗号化通信を行う、ステップと、
を含む、方法。
【請求項2】
前記第二のクロックを前記第一のクロックと同期化した後に、前記第二のクロックの動作を変更するステップを更に含む、請求項1に記載の方法。
【請求項3】
それぞれがランダム長さの時間間隔で前記第二のクロックの動作を変更するステップを更に含む、請求項2に記載の方法。
【請求項4】
1つ以上の制御パラメータを受信するステップと、
前記1つ以上の制御パラメータに基づいて、数値制御発振器を制御して前記第二のクロックに使用される波形を生成するステップと、
を更に含む、請求項1に記載の方法。
【請求項5】
前記第一のタイムスタンプ又はその一部をシードとした乱数発生器に基づいて乱数を生成するステップと、
生成された前記乱数に基づいてインデックスを生成するステップと、
前記インデックスを使用して前記鍵生成プロセスデータストアで前記第一の鍵生成プロセスを検索するステップと、
を更に含む、請求項1に記載の方法。
【請求項6】
前記第一のコンピュータシステム及び前記第二のコンピュータシステムはそれぞれ、鍵生成プロセスのテーブルを記憶し、前記第一のコンピュータシステムの前記テーブルは、前記第二のコンピュータシステムによって記憶された前記テーブルと同一である、請求項1に記載の方法。
【請求項7】
前記第一のコンピュータシステムは、イベントの発生時又は時間の経過時に、第二の鍵生成プロセスを選択するように構成される、請求項1に記載の方法。
【請求項8】
毎時又は毎日、新しい鍵生成プロセスを選択するステップを、
新しいタイムスタンプを取得し、かつ
前記新しいタイムスタンプに基づいて前記鍵生成プロセスデータストアから前記新しい鍵生成プロセスを選択すること
によって行う、ステップ
を更に含む、請求項1に記載の方法。
【請求項9】
前記タイムサーバは、前記第一のコンピュータシステム及び前記第二のコンピュータシステムのインジケータを含むホワイトリストを記憶し、プライベートタイムサーバは、前記ホワイトリストによって識別されたコンピュータシステムのみに時間を提供する、請求項1に記載の方法。
【請求項10】
前記タイムサーバは、特定の仮想プライベートネットワークの一部であるコンピュータシステムのみと通信するように構成される、請求項1に記載の方法。
【請求項11】
前記第一の鍵生成プロセスは、演算子及び整数を特定し、前記演算子をタイムスタンプ及び前記整数に適用する、請求項1に記載の方法。
【請求項12】
前記第一の鍵生成プロセスは、前記第一のタイムスタンプに第一の整数を乗算して第一の積値を取得し、前記積値に第二の整数を加算して、前記第一の鍵の少なくとも一部として使用される和を取得する、請求項1に記載の方法。
【請求項13】
前記第一の鍵生成プロセスは、Nビットのタイムスタンプを操作してMビットの値を生成するステップを特定し、Mは、Nよりも大きく、前記操作は、前記タイムスタンプの少なくとも一部を複製することを含む、請求項1に記載の方法。
【請求項14】
前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、前記第一のコンピュータシステムと前記第二のコンピュータシステムの間で送信されたデータを暗号化する暗号化鍵を永続的に記憶せず、前記第一のコンピュータシステムと前記第二のコンピュータシステムの間で、共有暗号化鍵が伝達されることはない、請求項1に記載の方法。
【請求項15】
前記第二のクロックから第一のタイムスタンプを取得するステップは、前記第二のコンピュータシステムから受信した前記メッセージに応答して前記第一のタイムスタンプを取得するステップを含む、請求項1に記載の方法。
【請求項16】
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップは、前記第一のタイムスタンプから精度を少なくとも1桁下げた値に前記鍵生成プロセスを適用するステップを含む、請求項1に記載の方法。
【請求項17】
前記第一のコンピュータシステムが前記メッセージを成功裏に復号することができない場合に、共有鍵を再生成するステップ
を更に含む、請求項1に記載の方法。
【請求項18】
前記第一のクロック又は前記第二のクロックと前記タイムサーバとの同期化に失敗したことに応答して、ユーザのロックアウト、警告メッセージの送信、データの消去、データの暗号化のうちの少なくとも1つを含む自己保護モードに入るステップ
を更に含む、請求項1に記載の方法。
【請求項19】
第一のコンピュータシステムであって、
プロセッサと、
標準時間で動作する第一のクロックと、
標準時間よりも速く又は遅く動作する第二のクロックと、
命令を記憶するメモリであって、前記プロセッサによって実行されると、
前記第一のクロックをタイムサーバによって保持されたクロックと同期化するステップ、
前記第二のクロックを前記第一のクロックと同期化するステップ、
前記第二のクロックから第一のタイムスタンプを取得するステップ、
前記第一のタイムスタンプに基づいて、鍵生成プロセスデータストアから第一の鍵生成プロセスを選択するステップであって、前記データストアにおける各鍵生成プロセスがタイムスタンプを入力として受け取り、入力された前記タイムスタンプに基づく番号を出力として生成し、前記番号が暗号化用途のための共有鍵として機能するのに適する、ステップ、
前記第一の鍵生成プロセスを実行して第一の鍵を生成するステップ、及び
前記第一の鍵を使用して、第二のコンピュータシステムから受信されたメッセージを復号するステップであって、前記第二のコンピュータシステムも、前記第一の鍵生成プロセスを実行して前記第一の鍵を生成し、かつ前記第一の鍵を使用して前記メッセージを暗号化し、前記第一のコンピュータシステム及び前記第二のコンピュータシステムは、暗号化鍵を伝達せずに暗号化通信を行う、ステップと、
を行うように構成された、メモリと、
を含む、第一のコンピュータシステム。
【国際調査報告】