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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-510895カウンタモード暗号と秘密鍵を用いた暗号化通信
<>
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図1
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図2
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図3
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図4
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図5
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図6
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図7
  • 特表-カウンタモード暗号と秘密鍵を用いた暗号化通信 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-12
(54)【発明の名称】カウンタモード暗号と秘密鍵を用いた暗号化通信
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240305BHJP
   G06F 21/60 20130101ALI20240305BHJP
   H04L 9/18 20060101ALI20240305BHJP
【FI】
H04L9/08 A
G06F21/60 360
H04L9/18
H04L9/08 E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023551166
(86)(22)【出願日】2022-01-11
(85)【翻訳文提出日】2023-08-23
(86)【国際出願番号】 CN2022071197
(87)【国際公開番号】W WO2022179326
(87)【国際公開日】2022-09-01
(31)【優先権主張番号】17/186,142
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ジャブール、ナディム、ジョージ
(72)【発明者】
【氏名】ポルティーヤ、イヴァン
(57)【要約】
秘密鍵は、受信機システムに通信される。秘密鍵とカウンタを用いてワンタイムパッドが生成される。暗号化されたメッセージは、ワンタイムパッドを用いて第1のメッセージに対してXOR演算を行うことによって生成される。暗号化されたメッセージとカウンタとが受信機システムに送信される。
【特許請求の範囲】
【請求項1】
安全な通信のための方法であって、前記方法は、
秘密鍵を受信機システムに通信することと、
前記秘密鍵とカウンタを用いてワンタイムパッドを生成することと、
前記ワンタイムパッドを用いて第1のメッセージに対してXOR演算を行うことによって、暗号化されたメッセージを生成することと、
前記暗号化されたメッセージと前記カウンタとを前記受信機システムに送信することと、
を含む、方法。
【請求項2】
前記秘密鍵を前記受信機システムに通信することは、
前記秘密鍵を公開鍵で暗号化することによって、暗号化された秘密鍵を生成することと、
前記暗号化された秘密鍵を前記受信機システムに送信することと、
を含む、請求項1に記載の方法。
【請求項3】
前記暗号化された秘密鍵を前記受信機システムに送信することに応答して、前記受信機システムから暗号化された確認応答を受信することと、
前記秘密鍵を用いて前記暗号化された確認応答を復号することと、
前記確認応答を確認することと、
をさらに含む、請求項2に記載の方法。
【請求項4】
前記カウンタの第1の値を第2の値までインクリメントすることと、
前記カウンタの前記第2の値を用いて第2のワンタイムパッドを生成することと、
前記第2のワンタイムパッドを用いて第2のメッセージに対してXOR演算を行うことによって、第2の暗号化されたメッセージを生成することと、
前記暗号化されたメッセージと前記カウンタの前記第2の値とを前記受信機システムに送信することと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記秘密鍵と前記カウンタを用いて前記ワンタイムパッドを生成することは、前記秘密鍵でノンスと前記カウンタの組み合わせを暗号化することを含む、請求項1に記載の方法。
【請求項6】
安全な通信のための方法であって、前記方法は、
送信機システムから秘密鍵を受信することと、
前記秘密鍵とカウンタを用いて第1のワンタイムパッドを生成することと、
前記送信機システムから暗号化されたメッセージを受信することと、
前記暗号化されたメッセージに対して前記第1のワンタイムパッドでXOR演算を行うことによって、前記暗号化されたメッセージを復号することと、
を含む、方法。
【請求項7】
前記方法は、
前記カウンタの第1の値を第2の値までインクリメントすることと、
前記秘密鍵と前記カウンタの前記第2の値を用いて第2のワンタイムパッドを生成することと、
前記カウンタの前記第1の値とともに前記第1のワンタイムパッドを、前記カウンタの前記第2の値とともに前記第2のワンタイムパッドを記憶することと、
前記暗号化されたメッセージとともに、前記送信機システムから前記カウンタの前記第1の値を受信することと、
前記カウンタの前記第1の値を受信することに応答して、前記第1のワンタイムパッドを特定することであって、前記暗号化されたメッセージに対して前記第1のワンタイムパッドで前記XOR演算を前記行うことは、前記第1のワンタイムパッドを前記特定することに応答して起こる、特定することと、
をさらに含む、請求項6に記載の方法。
【請求項8】
前記送信機システムから前記秘密鍵を受信することは、
前記送信機システムから暗号化された秘密鍵を受信することであって、前記暗号化された秘密鍵は公開鍵を用いて暗号化される、受信することと、
前記公開鍵に対応するプライベート鍵を用いて、前記暗号化された秘密鍵を復号することと、
を含む、請求項6に記載の方法。
【請求項9】
前記秘密鍵を受信することに応答して、前記秘密鍵を用いて確認応答を暗号化することと、
前記暗号化された確認応答を前記送信機システムに送信することと、
をさらに含む、請求項8に記載の方法。
【請求項10】
前記秘密鍵と前記カウンタを用いて前記第1のワンタイムパッドを生成することは、前記秘密鍵でノンスと前記カウンタの組み合わせを暗号化することを含む、請求項6に記載の方法。
【請求項11】
安全な通信のためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、プログラム命令をその中に実装したコンピュータ可読記憶媒体を含み、前記プログラム命令は、プロセッサによって操作を実行可能であり、前記操作は、
第1の秘密鍵を受信機システムに通信することと、
前記第1の秘密鍵と第1のカウンタを用いて第1のワンタイムパッドを生成することと、
前記ワンタイムパッドを用いて第1のメッセージに対してXOR演算を行うことによって、第1の暗号化されたメッセージを生成することと、
前記暗号化されたメッセージと前記第1のカウンタとを前記受信機システムに送信することと、
を含む、コンピュータプログラム製品。
【請求項12】
前記第1の秘密鍵を前記受信機システムに通信することは、
前記第1の秘密鍵を公開鍵で暗号化することによって、暗号化された秘密鍵を生成することと、
前記暗号化された秘密鍵を前記受信機システムに送信することと、
を含む、請求項11に記載のコンピュータプログラム製品。
【請求項13】
前記操作は、
前記暗号化された秘密鍵を前記受信機システムに送信することに応答して、前記受信機システムから暗号化された確認応答を受信することと、
前記第1の秘密鍵を用いて前記暗号化された確認応答を復号することと、
前記確認応答を確認することと、
をさらに含む、請求項12に記載のコンピュータプログラム製品。
【請求項14】
前記操作は、
前記第1のカウンタの第1の値を第2の値までインクリメントすることと、
前記第1のカウンタの前記第2の値を用いて第2のワンタイムパッドを生成することと、
前記第2のワンタイムパッドを用いて第2のメッセージに対してXOR演算を行うことによって、第2の暗号化されたメッセージを生成することと、
前記第2の暗号化されたメッセージと前記第1のカウンタの前記第2の値とを前記受信機システムに送信することと、
をさらに含む、請求項11に記載のコンピュータプログラム製品。
【請求項15】
前記第1の秘密鍵と前記第1のカウンタを用いて前記ワンタイムパッドを生成することは、前記第1の秘密鍵でノンスと前記第1のカウンタの組み合わせを暗号化することを含む、請求項11に記載のコンピュータプログラム製品。
【請求項16】
前記操作は、
送信機システムから第2の秘密鍵を受信することと、
前記第2の秘密鍵と第2のカウンタを用いて第2のワンタイムパッドを生成することと、
前記送信機システムから第2の暗号化されたメッセージを受信することと、
前記第2の暗号化されたメッセージに対して前記第2のワンタイムパッドでXOR演算を行うことによって、前記第2の暗号化されたメッセージを復号することと、
をさらに含む、請求項11に記載のコンピュータプログラム製品。
【請求項17】
前記操作は、
前記第2のカウンタの第1の値を第2の値までインクリメントすることと、
前記第2の秘密鍵と前記第2のカウンタの前記第2の値を用いて第3のワンタイムパッドを生成することと、
前記第2のカウンタの前記第1の値とともに前記第2のワンタイムパッドを、前記第2のカウンタの前記第2の値とともに前記第3のワンタイムパッドを記憶することと、
前記第2の暗号化されたメッセージとともに、前記送信機システムから前記第2のカウンタの前記第1の値を受信することと、
前記第2のカウンタの前記第1の値を受信することに応答して、前記第2のワンタイムパッドを特定することであって、前記第2の暗号化されたメッセージに対して前記第2のワンタイムパッドで前記XOR演算を前記行うことは、前記第2のワンタイムパッドを前記特定することに応答して起こる、特定することと、
をさらに含む、請求項16に記載のコンピュータプログラム製品。
【請求項18】
前記送信機システムから前記第2の秘密鍵を受信することは、
前記送信機システムから暗号化された秘密鍵を受信することであって、前記暗号化された秘密鍵は公開鍵を用いて暗号化される、受信することと、
前記公開鍵に対応するプライベート鍵を用いて、前記暗号化された秘密鍵を復号することと、
を含む、請求項16に記載のコンピュータプログラム製品。
【請求項19】
前記操作は、
前記第2の秘密鍵を受信することに応答して、前記第2の秘密鍵を用いて確認応答を暗号化することと、
前記暗号化された確認応答を前記送信機システムに送信することと、
をさらに含む、請求項18に記載のコンピュータプログラム製品。
【請求項20】
前記第2の秘密鍵と前記第2のカウンタを用いて前記第2のワンタイムパッドを生成することは、前記第2の秘密鍵でノンスと前記第2のカウンタの組み合わせを暗号化することを含む、請求項16に記載のコンピュータプログラム製品。
【請求項21】
システムであって、前記システムは、請求項1~10のいずれか1項に記載の方法のステップを実行するためのモジュールをそれぞれ含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ暗号化に関し、より具体的には、システム間の通信のためのデータ暗号化に関する。
【背景技術】
【0002】
エンドツーエンド暗号化(E2EE)は、送信機システムでデータを暗号化し、暗号化されたメッセージを受信機へ通信し、受信機システムでメッセージを復号する。メッセージは送信機を離れる前に暗号化されるため、送信機と受信機の間のメッセージにアクセスできるシステムは、メッセージを読むことができなくなる。
【発明の概要】
【0003】
本開示の実施形態によれば、安全な通信のための方法が提供される。本方法は、秘密鍵を受信機システムに通信することを含む。秘密鍵とカウンタを用いてワンタイムパッドが生成される。暗号化されたメッセージは、ワンタイムパッドを用いて第1のメッセージに対してXOR演算を行うことによって生成される。暗号化されたメッセージとカウンタは、受信機システムに送信される。
【0004】
本開示のさらなる実施形態によれば、安全な通信のための第2の方法が提供される。本方法は、送信機システムから秘密鍵を受信することを含む。秘密鍵とカウンタを用いて第1のワンタイムパッドが生成される。暗号化されたメッセージは、送信機システムから受信される。暗号化されたメッセージは、暗号化されたメッセージに対して第1のワンタイムパッドでXOR演算を行うことによって復号される。
【0005】
本開示のさらなる実施形態によれば、本方法を実行するためのシステムおよびコンピュータプログラム製品が提供される。
【0006】
上記の要約は、例示された各実施形態または本開示のすべての実装を説明することを意図していない。
【0007】
本願に含まれる図面は、本明細書に組み込まれ、本明細書の一部を構成する。これらは、本開示の実施形態を例示するものであり、説明とともに、本開示の原理を説明するのに役立つ。図面は、特定の実施形態を例示するものに過ぎず、本開示を限定するものではない。
【図面の簡単な説明】
【0008】
図1】実施形態による非対称暗号化を使用した送信機コンピューティングシステムと受信機コンピューティングシステムとの間の初期ハンドシェイク操作の例示的なフロー図である。
図2】実施形態による送信機システムが受信機と秘密鍵を共有する方法のフローチャートを示す。
図3】実施形態による受信機システムが送信機システムから秘密鍵を取得する方法のフローチャートを示す。
図4】実施形態によるメッセージのエンドツーエンド暗号化の例示的なフロー図である。
図5】実施形態によるワンタイムパッドを生成するための方法のフローチャートを示す。
図6】実施形態による送信機システムが暗号化されたメッセージを送信する方法のフローチャートを示す。
図7】実施形態による受信機システムによる暗号化されたメッセージの復号のための方法のフローチャートを示す。
図8】実施形態による例示的なコンピュータシステムのハイレベルブロック図である。
【0009】
本発明は、様々な変更および代替形態に従順であるが、その具体的な内容は、図面において例として示されており、詳細に説明されるであろう。しかしながら、本発明を説明した特定の実施形態に限定する意図はないことを理解されたい。それどころか、その意図は、本発明の精神および範囲内のすべての修正、等価物、および代替物をカバーすることである。
【発明を実施するための形態】
【0010】
本開示の態様は、コンピューティングシステム間の暗号化通信に関し、より特定の態様は、秘密鍵およびカウンタモード暗号化を用いたコンピューティングシステム間の暗号化通信に関連する。本開示は、必ずしもかかる用途に限定されないが、本開示の様々な態様は、この文脈を用いた様々な例の議論を通じて理解することができる。
【0011】
安全な大容量データを迅速に転送する能力を必要とする分散システムが急激に増加している。5Gネットワークなどの技術が進歩し、データ転送のボトルネックは転送速度から機器自体の処理能力へと移行しつつある。転送されるデータのセキュリティを確保するためには、データを送信する前に暗号化し、受信したら復号する必要がある。先行技術のプロセスでは、暗号化および復号操作は、データ転送のクリティカルパス上にある。暗号化および復号操作をクリティカルパスから取り除くことで、エンドツーエンド暗号化におけるデータ転送の速度を向上させることができる。
【0012】
本開示の実施形態は、データ転送のクリティカルパスから暗号化および復号操作を取り除くエンドツーエンド暗号化のための方法、システム、およびコンピュータプログラム製品を提供する。本開示の実施形態は、非対称鍵、対称鍵、およびカウンタモード暗号化の組み合わせを使用することができる。
【0013】
初期ハンドシェイク操作において、送信機システムは、非対称暗号化を用いて、受信機システムに秘密鍵を通信することができる。次に、送信機システムは、カウンタと秘密鍵を用いてカウンタモード暗号化を使用し、ワンタイムパッドを生成することができる。次に、送信機システムは、ワンタイムパッドを用いてメッセージに対してXOR(排他的論理和)演算を行うことによって、暗号化されたメッセージを生成することができる。その後、暗号化されたメッセージは、XOR演算で使用されたワンタイムパッドを生成するために使用されたカウンタとともに、受信機システムに送信されることができる。受信機システムは、カウンタと秘密鍵を用いて独自のワンタイムパッドを生成し、ワンタイムパッドと暗号文を用いてXOR演算を行い、平文メッセージを生成することができる。
【0014】
注目すべきは、両システムとも、メッセージの暗号化への使用が要求される前に、ワンタイムパッドを生成できることである。ワンタイムパッドの生成をメッセージから独立させることで、ワンタイムパッドをメッセージの前またはメッセージと並行して生成することができ、エンドツーエンド暗号化におけるデータ転送の速度を向上させることができる。先行技術の方法と比較して、暗号化-通信-復号のクリティカルパス要素は、XOR-通信-XORに置き換えられる。XORは、従来の暗号化操作や復号操作に比べて、より単純な操作であり、完了するまでの時間が短い。したがって、先行技術の方法よりも通信速度を向上させることができる。
【0015】
いくつかの実施形態では、受信機システムは、複数のワンタイムパッドを生成し、それらを生成するために使用されたカウンタの値と共に記憶することができる。受信機システムが送信機からカウンタと暗号化されたメッセージを受信すると、受信機システムは、受信したカウンタの値を使用して、正しく記憶されたワンタイムパッドを特定することができる。このように、これらの実施形態では、順序を外れて受信されたメッセージを復号することができる。
【0016】
本明細書では、送信機システムおよび受信機システムに言及するが、各システムは、いくつかの実施形態において、送信機システムまたは受信機システムのいずれかとして動作するように構成され得る。さらに、いくつかの実施形態では、単一のシステムは、第2のコンピューティングシステムに関して送信機システムとして動作しながら、第1のコンピューティングシステムに関して受信機システムとして同時に動作し得る。
【0017】
ここで図1を参照すると、実施形態に従って、非対称暗号化を用いた送信機コンピューティングシステムと受信機コンピューティングシステムとの間の初期ハンドシェイク操作の例示的なフロー図が描かれている。非対称暗号化は、公開鍵とプライベート鍵の使用を含む。公開鍵は、対応するプライベート鍵を使用してのみ復号できるようにデータを暗号化するために使用されることがある。公開鍵は、データを暗号化するために他の人が利用できるようにすることができ、対応するプライベート鍵は、プライベート鍵の保有者のみが公開鍵を用いて暗号化されたデータを復号できるように秘密にしておくことができる。
【0018】
送信機コンピューティングシステムは、受信機コンピューティングシステムとの将来の通信に使用するために、固有の秘密鍵110を生成することができる。送信機コンピューティングシステムは、秘密鍵110を受信機の公開鍵120で暗号化130することによって、暗号化された秘密鍵140を生成することができる。送信機システムは、次に、暗号化された秘密鍵140を、1または複数のネットワークを介して受信機コンピューティングシステムに通信することができる。受信機コンピューティングシステムは、受信機のプライベート鍵150を用いて、暗号化された秘密鍵140を復号160してもよい。
【0019】
図示のように、暗号化された秘密鍵140のみが1または複数のネットワークを介して通信される。暗号化された秘密鍵140は、受信機のプライベート鍵150を使用してのみ復号できるので、暗号化された秘密鍵140が1または複数のネットワークを介して通信される際に(例えば、中間者攻撃によって)侵害される場合、秘密鍵は保護される。したがって、図1に描かれた初期ハンドシェイク操作の後、送信機システムおよび受信機システムは、2つのコンピューティングシステムにのみ利用可能である秘密鍵110をそれぞれ有することができる。
【0020】
ここで図2を参照すると、実施形態による、送信機システムが受信機と秘密鍵を共有するための方法200のフローチャートが描かれている。方法200は、任意の適切なコンピューティングシステムを使用して実行されてもよい。例えば、方法200は、図8を参照して説明したコンピュータシステム801によって実行されてもよい。
【0021】
方法200は、操作210で秘密鍵を生成することから始まる。秘密鍵は、受信機コンピューティングシステムとの通信にのみ使用される一意の鍵であってよい。秘密鍵は、任意の適切なアルゴリズムに従って生成されてもよい。
【0022】
操作220において、秘密鍵は、受信機の公開鍵で暗号化される。本明細書で説明するように、受信機のプライベート鍵は、受信機のプライベート鍵を使用してのみ復号できるようにデータを暗号化するために使用され得る。暗号化は、任意の適切な暗号化アルゴリズムを使用して実行することができる。
【0023】
操作230において、暗号化された秘密鍵は、受信機に送信される。暗号化された秘密鍵は、1または複数のネットワークを介して受信機システムに通信される場合がある。
【0024】
操作240において、送信機システムは、暗号化された秘密鍵の送信に応答して、受信機システムから暗号化された確認応答を受信することができる。図3を参照して説明するように、受信機コンピューティングシステムは、確認応答を生成し、送信機システムから受信した秘密鍵を使用して確認応答を暗号化することができる。
【0025】
操作250において、送信機システムは、確認応答を取得するために秘密鍵を用いて暗号化された確認応答を復号する。暗号化された確認応答は、暗号化アルゴリズムに対応する任意の適切な復号アルゴリズムを用いて復号することができる。
【0026】
操作260において、送信機システムは、確認応答を確認する。いくつかの実施形態では、コンピューティングシステムは、一致が存在するかどうかを決定するために確認応答を期待される確認応答と比較することによって、確認応答を確認することができる。いくつかの実施形態では、コンピューティングシステムは、確認応答が読み取り可能であるかどうかを決定することによって確認応答を確認することができる。確認応答が確認されると、送信機システムは、暗号化されたメッセージを受信機に通信するために、本明細書で説明するように秘密鍵の使用を開始することができる。
【0027】
ここで図3を参照すると、実施形態による受信機システムが送信機システムから秘密鍵を取得するための方法300のフローチャートが描かれている。方法300は、任意の適切なコンピューティングシステムを使用して実行されてもよい。例えば、方法300は、図8を参照して説明されるコンピュータシステム801によって実行されてもよい。
【0028】
操作310において、受信機システムは、1または複数のネットワークを介して、送信機から暗号化された秘密鍵を受信する。暗号化された秘密鍵は、受信機の公開鍵を用いて暗号化されてもよい。
【0029】
操作320において、暗号化された秘密鍵は、受信機のプライベート鍵を用いて復号される。受信機システムは、暗号化アルゴリズムに対応する任意の適切な復号アルゴリズムを使用することができる。
【0030】
操作330において、受信機システムは、秘密鍵を用いて確認応答メッセージを暗号化することができる。受信機システムは、同じ秘密鍵を使用して受信機による復号を可能にする任意の適切な暗号化を使用することができる。
【0031】
操作340において、受信機システムは、暗号化された確認応答を1または複数のネットワークを介して送信機に送信することができる。プライベート鍵によって暗号化された確認応答を送信することは、受信機システムがプライベート鍵を受信したことを送信機システムに示すことができる。
【0032】
ここで図4を参照すると、実施形態によるメッセージのエンドツーエンド暗号化の例示的なフロー図が描かれている。図示されたフローは、秘密鍵420を使用するカウンタモード暗号化を含む。図示されるように、送信機システムおよび受信機システムは、それぞれ同じ秘密鍵420を有することができる。秘密鍵420は、送信機コンピューティングシステムによって生成され、本明細書に記載されるように、初期ハンドシェイク操作において受信機コンピューティングシステムに送信されることがある。
【0033】
図示されるように、送信機システムと受信機システムの両方は、ワンタイムパッド440を生成するために、秘密鍵420を用いて、ノンス405とカウンタ410の組み合わせを暗号化430することができる。ノンス405は、設定された長さの初期化ベクトルであってよい。カウンタ410は、ワンタイムパッドが生成されるたびにインクリメントされる値を有する数値カウンタであってよい。カウンタ410は任意のサイズであってよいが、理想的には、オーバーフローしない(すなわち、生成されたパッドの数がカウンタの最大値を超えない)ことを保証するのに十分なサイズであろう。カウンタは、任意の値で開始してもよく、後続の各ワンタイムパッドを生成するために任意の値でインクリメントするように構成される場合がある。例えば、カウンタは、第1のワンタイムパッドを生成するために0000から始まり、後続のワンタイムパッドごとに1ずつインクリメントすることができる。したがって、この例では、第2のワンタイムパッドを生成するためのカウンタは、0001となる。ノンス405とカウンタ410は別個のものとして描かれているが、これらは同じ文字列の一部であってもよい。
【0034】
図示されるように、受信機システムは、生成されたワンタイムパッド440をワンタイムパッドリスト445に記憶してもよい。その後、受信機システムは、カウンタをインクリメントし、秘密鍵420でノンスとカウンタを暗号化することによって、ワンタイムパッドを生成し続けることができる。図4は、送信機システム上の対応するワンタイムパッドリストを示していないが、いくつかの実施形態では、送信機システムも、将来の使用のためにワンタイムパッドを記憶するワンタイムパッドリストを有することができる。
【0035】
送信機システムは、暗号化されたメッセージ470を生成するために、ワンタイムパッド440でXOR演算460を行うことによって、送信機メッセージ450を暗号化することができる。次に、送信機システムは、ワンタイムパッド440と暗号化されたメッセージ470に対応するカウンタ410を連結してよい。例えば、カウンタXバイト長を暗号化されたメッセージの先頭に追加してよく、受信機システムは、第1のXバイトをカウンタとして、残りのバイトを暗号化メッセージとして特定するように構成されてもよい。
【0036】
送信機システムは、カウンタ410と暗号化されたメッセージ470を、1または複数のネットワークを介して受信機システムに送信することができる。受信機システムは、カウンタ410に対応するワンタイムパッド440をワンタイムパッドリスト445で特定してもよい。例えば、受信機システムは、対応するオンタイムパッドを特定するために、カウンタを用いてテーブルルックアップを実行することができる。
【0037】
受信機システムは、送信機メッセージ450を生成するために、ワンタイムパッド440を用いて暗号化されたメッセージ470に対してXOR演算460を行うことができる。
【0038】
図示されるように、暗号化されたメッセージ470とカウンタ410だけが、1または複数のネットワークを介して通信される。秘密鍵のないカウンタだけでは、暗号化されたメッセージを復号するために使用することができず、秘密鍵は送信機システムと受信機システムによってのみ知られているので、カウンタは暗号化される必要がない。したがって、暗号化されたメッセージが1または複数のネットワークを介して通信される際に(例えば、中間者攻撃によって)侵害された場合、送信機のメッセージは保護される。
【0039】
図4は、受信機システムに暗号化されたメッセージを送信する送信機システムを描いているが、いくつかの実施形態では、受信機システムは、送信機システムに暗号化されたメッセージを送信するように構成されることもある。いくつかの実施形態では、受信機システムから送信機システムに送信されるメッセージは、送信機システムから受信機システムに送信されるメッセージと異なるカウンタを使用することができる。例えば、送信機システムから受信機システムにメッセージを送信するためのワンタイムパッドを生成する場合、両システムは偶数カウンタ値を使用し、受信機システムから送信機システムへのメッセージには奇数カウンタ値を使用することができる。
【0040】
次に図5を参照すると、実施形態によるワンタイムパッドを生成するための方法500のフローチャートが描かれている。方法500は、送信機システムまたは受信機システムによって実行されてもよい。方法500は、任意の適切なコンピューティングシステムを使用して実行されてもよい。例えば、方法500は、図8を参照して説明したコンピュータシステム801によって実行されてもよい。
【0041】
方法500は、図1~3に関連して説明した初期ハンドシェイク操作の後に開始することができる。操作510において、システムは、秘密鍵でノンスおよびカウンタを暗号化することによって、ワンタイムパッドを生成してもよい。システムは、ワンタイムパッドを生成するために、任意の適切な暗号化アルゴリズムを使用してもよい。
【0042】
操作520において、システムは、ワンタイムパッドを記憶してもよい。ワンタイムパッドおよびカウンタは、システムがカウンタに基づいて対応するワンタイムパッドをルックアップすることができるように、任意の適切なコンピュータストレージに記憶されることができる。
【0043】
操作530において、システムは、閾値数のワンタイムパッドが記憶されているか否かを決定してもよい。ワンタイムパッドの閾値数は、事前に構成されてもよい。いくつかの実施形態では、閾値数は、カウンタのサイズに基づいて生成され得るワンタイムパッドの最大数である(すなわち、カウンタがその最大値に達したときに閾値に達する場合がある)。いくつかの実施形態では、閾値数は、必要なときにワンタイムパッドが利用可能になるように、送信されるメッセージのレートに基づいて選択され得る。
【0044】
記憶されたワンタイムパッドの閾値数に達していない場合、システムは、操作540でカウンタをインクリメントし、操作510および520を繰り返してもよい。閾値に達している場合、方法500は終了する。
【0045】
ここで図6を参照すると、実施形態による、送信機システムが暗号化されたメッセージを送信するための方法600のフローチャートが描かれている。方法600は、任意の適切なコンピューティングシステムを使用して実行されてもよい。例えば、方法600は、図8を参照して説明されるコンピュータシステム801によって実行されてもよい。
【0046】
操作610において、受信機システムに送信されるメッセージが提供される。操作620において、送信機システムは、メッセージに対してワンタイムパッドでXOR演算を行うことによって、暗号化されたメッセージを生成する。送信機システムは、複数のワンタイムパッドを生成し、図5を参照して説明したような関連するカウンタとともにそれらを記憶していてもよい。送信機システムは、XOR演算を実行するために、記憶されたワンタイムパッドからワンタイムパッドを選択することができる。ワンタイムパッドは、最も低いカウンタとの関連付けに基づくものから選択されてもよい。
【0047】
操作630において、暗号化されたメッセージと、メッセージを暗号化するために使用されるワンタイムパッドに関連するカウンタが、1または複数のネットワークを介して送信機システムに送信される。カウンタと暗号化されたメッセージは、予め定められた方法で連結されることがある。例えば、第1のバイトがカウンタであり、残りのバイトが暗号化されたメッセージであるように、カウンタは暗号化されたメッセージの前に追加されることがある。
【0048】
次に図7を参照すると、実施形態による、暗号化されたメッセージを受信機システムによって復号するための方法700のフローチャートが描かれている。方法700は、任意の適切なコンピューティングシステムを使用して実行されてもよい。例えば、方法700は、図8を参照して説明されるコンピュータシステム801によって実行されてもよい。
【0049】
動作710で、受信機システムは、送信機システムからカウンタと暗号化されたメッセージを受信する。動作720において、受信機は、受信したカウンタに対応するワンタイムパッドを特定する。図5を参照して説明したように、受信機システムは、関連するカウンタとともに記憶された複数のワンタイムパッドを有することができる。受信機システムは、受信したカウンタを用いてテーブルルックアップを実行することによって、正しいワンタイムパッドを特定することができる。操作730において、システムは、暗号化されたメッセージに対してワンタイムパッドでXOR演算を実行することによって、送信機のメッセージを生成する。
【0050】
ここで図8を参照すると、本開示の実施形態に従って、本明細書に記載の方法、ツール、およびモジュール、ならびに任意の関連機能の1または複数を実装する際に(例えば、コンピュータの1または複数のプロセッサ回路またはコンピュータプロセッサを使用して)使用され得る例示的なコンピュータシステム801のハイレベルブロック図が示されている。いくつかの実施形態では、コンピュータシステム801の主要構成要素は、1または複数のCPU802、メモリサブシステム804、端末インタフェース812、記憶インタフェース816、I/O(入力/出力)デバイスインタフェース814、およびネットワークインタフェース818を含み、これらはすべて、メモリバス803、I/Oバス808、およびI/Oバスインタフェースユニット810を介してコンポーネント間の通信のために直接または間接的に通信可能に結合され得る。
【0051】
コンピュータシステム801は、1または複数の汎用プログラマブル中央処理装置(CPU)802A、802B、802C、および802D(ここでは一般的にCPU802と呼ぶ)を含んでよい。いくつかの実施形態では、コンピュータシステム801は比較的大きなシステムに典型的な複数のプロセッサを含んでよいが、他の実施形態ではコンピュータシステム801は代わりに単一のCPUシステムであってよい。各CPU802は、メモリサブシステム804に記憶された命令を実行してよく、1または複数のレベルのオンボードキャッシュを含んでもよい。
【0052】
システムメモリ804は、ランダムアクセスメモリ(RAM)822またはキャッシュメモリ824などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム801は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性コンピュータシステム記憶媒体をさらに含むことができる。例示に過ぎないが、記憶システム826は、「ハードドライブ」などの取り外し不可能な不揮発性磁気媒体から読み出し、それに書き込むために提供され得る。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)から読み出し、それに書き込むための磁気ディスクドライブ、またはCD-ROM、DVD-ROMまたは他の光学媒体などの取り外し可能な不揮発性光学ディスクから読み出し、それに書き込むための光ディスクドライブを提供することができる。さらに、メモリ804は、例えば、フラッシュメモリスティックドライブまたはフラッシュドライブなどのフラッシュメモリを含むことができる。メモリデバイスは、1または複数のデータ媒体インタフェースによってメモリバス803に接続することができる。メモリ804は、様々な実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0053】
それぞれがプログラムモジュール830の少なくとも1つのセットを有する1または複数のプログラム/ユーティリティ828は、メモリ804に記憶されてもよい。プログラム/ユーティリティ828は、ハイパーバイザー(仮想マシンモニタとも呼ばれる)、1または複数のオペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータを含むことができる。オペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータのそれぞれ、またはそれらのいくつかの組み合わせは、ネットワーク環境の実装を含むことができる。プログラムモジュール830は、一般に、様々な実施形態の機能または方法論を実行する。
【0054】
メモリバス803は、CPU802、メモリサブシステム804、およびI/Oバスインタフェース810の間の直接通信経路を提供する単一のバス構造として図8に示されているが、メモリバス803は、いくつかの実施形態では、複数の異なるバスまたは通信経路を含んでもよく、これらは、階層的、スターまたはウェブ構成におけるポイントツーポイントリンク、複数の階層的バス、並列および冗長経路、または他の適切なタイプの構成などの様々な形態のいずれかで配置されていてもよい。さらに、I/Oバスインタフェース810およびI/Oバス808は、単一のそれぞれのユニットとして示されているが、コンピュータシステム801は、いくつかの実施形態において、複数のI/Oバスインタフェースユニット810、複数のI/Oバス808、またはその両方を含むことができる。さらに、複数のI/Oインタフェースユニットが示されているが、これはI/Oバス808を様々なI/Oデバイスに走る様々な通信経路から分離するが、他の実施形態では、I/Oデバイスの一部または全部が1または複数のシステムI/Oバスに直接接続されてもよい。
【0055】
いくつかの実施形態では、コンピュータシステム801は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、またはサーバコンピュータもしくは直接のユーザインタフェースをほとんど持たないが他のコンピュータシステム(クライアント)から要求を受信する同様の装置であってもよい。さらに、いくつかの実施形態では、コンピュータシステム801は、デスクトップコンピュータ、ポータブルコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、ポケットコンピュータ、電話、スマートフォン、ネットワークスイッチまたはルータ、または任意の他の適切なタイプの電子デバイスとして実装することができる。
【0056】
図8は、例示的なコンピュータシステム801の代表的な主要構成要素を描写することを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々の構成要素は、図8に表されるような複雑さよりも大きいまたは小さい複雑さを有することがあり、図8に示されるもの以外のまたはそれに加えて構成要素が存在することがあり、そのような構成要素の数、タイプ、および構成は異なることがある。
【0057】
上述した実施形態に加えて、より少ない操作ステップ、より多くの操作ステップ、または異なる操作ステップを有する他の実施形態が企図される。また、いくつかの実施形態は、上記の操作ステップの一部または全部を異なる順序で実行することができる。モジュールは、実施形態に従って例示的に列挙され、説明されており、特定のモジュールの必要性または他の潜在的なモジュール(または特定のモジュールに適用される機能/目的)の排他性を示すことを意味しない。
【0058】
前述において、様々な実施形態への参照がなされる。しかしながら、本開示は、具体的に説明された実施形態に限定されないことを理解されたい。代わりに、異なる実施形態に関連するか否かにかかわらず、記載された特徴および要素の任意の組み合わせが、本開示を実施および実践するために企図される。記載された実施形態の範囲および精神から逸脱することなく、多くの修正および変形が当業者に明らかであろう。さらに、本開示の実施形態は、他の可能な解決策に対する、または先行技術に対する利点を達成することができるが、特定の利点が所定の実施形態によって達成されるか否かは、本開示を限定するものではない。したがって、記載された態様、特徴、実施形態、および利点は、単に例示であり、請求項(特許請求の範囲)に明示的に記載されている場合を除き、添付の特許請求の範囲の要素または制限とはみなされない。
【0059】
本発明は、システム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0060】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0061】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0062】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはJava、Smalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0063】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0064】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0065】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0066】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1または複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成される場合があり、同時に、実質的に同時に、部分的または全体的に時間的に重複する方法で実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0067】
上記は例示的な実施形態を対象としたものであるが、本発明の他のおよびさらなる実施形態は、その基本的な範囲から逸脱することなく考案される場合があり、その範囲は、後に続く特許請求の範囲によって決定される。本開示の様々な実施形態の説明は、例示を目的として提示されたが、開示された実施形態を網羅的または限定することを意図するものではない。説明された実施形態の範囲および精神から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
【0068】
本明細書で使用される用語は、特定の実施形態を説明する目的のみのものであり、様々な実施形態を限定することを意図するものではない。本明細書で使用されるように、単数形「ある/1つの/一の(a)」、「ある/1つの/一の(an)」および「その/当該(the)」は、文脈からそうではないことが明らかでない限り、複数形を含むことが意図される。「set of(~のセット)」、「group of(~のグループ)」、「bunch of(~の分岐)」などは、1または複数を含むことが意図される。本明細書で使用される場合、用語「含む(includes)」もしくは「含む(inducing)」またはその両方は、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせの存在を特定するが、1または複数の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではないことがさらに理解されるであろう。様々な実施形態の例示的な実施形態の前述の詳細な説明では、本明細書の一部を構成し、様々な実施形態が実施され得る特定の例示的な実施形態が例示の方法で示されている添付図面(ここで、同様の番号は同様の要素を表す)を参照した。これらの実施形態は、当業者が実施形態を実践できるように十分詳細に説明されたが、他の実施形態が使用されてもよく、様々な実施形態の範囲から逸脱することなく、論理的、機械的、電気的、および他の変更がなされてもよい。これまでの説明では、様々な実施形態の徹底的な理解を提供するために、多数の具体的な詳細が示された。しかし、様々な実施形態は、これらの具体的な詳細がなくても実施することができる。他の例では、実施形態を不明瞭にしないために、よく知られた回路、構造、および技術は詳細に示されていない。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】