(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】ポスト量子暗号アルゴリズムのTLS統合
(51)【国際特許分類】
H04L 9/08 20060101AFI20241112BHJP
【FI】
H04L9/08 C
H04L9/08 E
(21)【出願番号】P 2022579676
(86)(22)【出願日】2021-06-30
(86)【国際出願番号】 EP2021067967
(87)【国際公開番号】W WO2022003009
(87)【国際公開日】2022-01-06
【審査請求日】2023-11-14
(32)【優先日】2020-07-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】グレイ、マイケル
(72)【発明者】
【氏名】マディネニ、ナラヤナ、アディティア
(72)【発明者】
【氏名】マクマホン、サイモン
(72)【発明者】
【氏名】グリーン、マシュー
(72)【発明者】
【氏名】マクレーン、リー
(72)【発明者】
【氏名】ウォルテンバーグ、ピーター
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2019-509652(JP,A)
【文献】米国特許第10218504(US,B2)
【文献】CROCKETT, E., PAQUIN, C. and STEBILA, D.,Prototyping post-quantum and hybrid key exchange and authentication in TLS and SSH,Cryptology ePrint Archive,Paper 2019/858,[online],2019年07月24日,pp.1-24,<URL:https://eprint.iacr.org/2019/858>,[2024年10月15日検索]
【文献】BRENDEL, J., FISCHLIN, M., and GUNTHER, F.,Breakdown Resilience of Key Exchange Protocols: NewHope, TLS 1.3, and Hybrids,Cryptology ePrint Archive,Paper 2017/1252 ver:20190916:172451,[online],2019年09月16日,pp.1-44,<URL:https://eprint.iacr.org/archive/2017/1252/20190916:172451>,[2024年10月15日検索]
【文献】SIKERIDIS, D., KAMPANAKIS, P. and DEVETSIKIOTIS, M.,Post-Quantum Authentication in TLS 1.3: A Performance Study,Cryptology ePrint Archive,Paper 2020/071 ver:20200226:220833,[online],2020年02月26日,pp.1-16,<URL:https://eprint.iacr.org/archive/2020/071/20200226:220833>,[2024年10月15日検索]
【文献】STEBILA, D., FLUHRER, H. and GUERON, S.,Hybrid key exchange in TLS 1.3,draft-ietf-tls-hybrid-design-00,[online],2020年04月15日,<URL:https://datatracker.ietf.org/doc/html/draft-ietf-tls-hybrid-design-00>,[2024年10月15日検索]
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ポスト量子暗号(PQC)アルゴリズムをトランスポート層セキュリティ(TLS)に統合するためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
クライアントとサーバとの間でセキュアな接続を確立するためのPQC動作モードを要求するclient helloメッセージを前記サーバに伝送する段階であって、前記client helloメッセージは、PQCパブリッククライアントキーを有する、段階と、
前記サーバからserver helloメッセージを受信する段階であって、前記server helloメッセージは、前記PQCパブリッククライアントキーから生成されたPQCサーバキー交換を有する、段階と、
前記server helloメッセージが、前記PQC動作モードを動作させるための認可を含むことを決定する段階と、
前記サーバに第2のclient helloメッセージを伝送する段階であって、前記第2のclient helloメッセージは、PQC暗号化済クライアントキー共有を含む、段階と、
第2のserver helloメッセージを受信する段階であって、前記第2のserver helloメッセージは、PQC暗号化済サーバキー共有を含む、段階と、
サーバキー共有を明らかにするべく、サーバ暗号キーを使用して前記PQC暗号化済サーバキー共有を解読する段階と、
前記サーバキー共有を使用して前記クライアントと前記サーバとの間でセキュアな接続を確立する段階と
を備える、コンピュータ実装方法。
【請求項2】
前記client helloメッセージを伝送する段階は、
PQCキーペアを生成する段階であって、前記PQCキーペアは、前記PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む、段階と、
信号メッセージを乱数値に埋め込む段階であって、前記信号メッセージは前記PQC動作モードの要求を示す、段階と、
前記サーバに前記client helloメッセージを伝送する段階であって、前記client helloメッセージは、前記乱数値および前記PQCパブリッククライアントキーをパラメータとして含む、段階と
を有する、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第2のclient helloメッセージを伝送する段階は、
第2の信号メッセージを第2の乱数値に埋め込む段階であって、前記第2の信号メッセージは、前記PQC動作モードに対する継続的な要求を示す、段階と、
PQCプライベートクライアントキーおよび前記server helloメッセージにおいて受信された前記PQCサーバキー交換を使用してPQC共有キーを生成する段階と、
前記PQC共有キーおよびトランスクリプトハッシュからクライアント暗号キーおよびサーバ暗号キーを導出する段階であって、前記トランスクリプトハッシュは、各ハンドシェイクメッセージの連結をハッシュすることによって決定された値である、段階と、
前記クライアント暗号キーを使用してクライアントキー共有を暗号化する段階と、
前記第2のclient helloメッセージを伝送する段階であって、前記第2のclient helloメッセージは、前記第2の乱数値および前記暗号化済クライアントキー共有を含む、段階と
を有する、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記PQCパブリッククライアントキーは前記client helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記サーバが従来のハンドシェイクプロセスを実行していることを検出する段階と、
前記セキュアな接続の確立を廃棄する段階と
をさらに備える、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
ポスト量子暗号(PQC)アルゴリズムをトランスポート層セキュリティ(TLS)に統合するためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
サーバとのセキュアな接続の確立を要求するクライアントからのclient helloメッセージを受信する段階であって、前記client helloメッセージは、PQCパブリッククライアントキーおよび乱数値を含む、段階と、
前記client helloメッセージに、前記乱数値に埋め込まれたPQC動作モードの要求が含まれていることを決定する段階と、
前記クライアントにserver helloメッセージを伝送する段階であって、前記server helloメッセージは、リトライ要求、前記PQC動作モードを認可する埋め込み信号を有するサーバ乱数値、およびPQCサーバキー交換をパラメータとして含む、段階と、
前記クライアントから第2のclient helloメッセージを受信する段階であって、前記第2のclient helloメッセージは、PQC暗号化済クライアントキー共有を含む、段階と、
PQC共有キーおよびトランスクリプトハッシュから暗号キーペアを導出する段階であって、前記暗号キーペアは、サーバ暗号キーおよびクライアント暗号キーを含む、段階と、
PQC暗号化済サーバキー共有を生成すべく、前記サーバ暗号キーを使用してサーバキー共有を暗号化する段階と、
第2のserver helloメッセージを伝送する段階であって、前記第2のserver helloメッセージは、前記PQC動作モードを認可する別の埋め込み信号を有する別の乱数値と、前記PQC暗号化済サーバキー共有とを含む、段階と、
前記サーバキー共有を使用して前記クライアントとのセキュアな接続を確立する段階と
を備える、コンピュータ実装方法。
【請求項7】
前記server helloメッセージを伝送する段階は、
リトライ要求を真にセットする段階であって、前記リトライ要求は、前記クライアントから別のclient helloメッセージを再送信するための要求を示す、段階と、
信号メッセージを乱数値に埋め込む段階であって、前記信号メッセージは、前記PQC動作モードに対する認可を示す、段階と、
前記client helloメッセージにおいて取得されたPQCパブリッククライアントキーを使用してPQCキーペアを生成する段階であって、前記PQCキーペアはPQCパブリックサーバキーおよびPQCプライベートサーバキーを含む、段階と、
前記クライアントに前記server helloメッセージを伝送する段階であって、前記server helloメッセージは、前記乱数値および前記PQCパブリックサーバキーをパラメータとして含む、段階と
を含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記第2のserver helloメッセージを伝送する段階は、
前記リトライ要求を偽にセットする段階であって、前記リトライ要求は、前記クライアントから別のclient helloメッセージを再送信するための要求を示す、段階と、
信号メッセージを第2の乱数値に埋め込む段階であって、前記信号メッセージは、前記PQC動作モードに対する認可を示す、段階と、
クライアントキー共有を生成する前記クライアント暗号キーを使用して前記PQC暗号化済クライアントキー共有を解読する段階と、
前記PQC暗号化済サーバキー共有を生成するべく前記サーバ暗号キーを使用して前記サーバキー共有を暗号化する段階と、
前記クライアントに前記第2のserver helloメッセージを伝送する段階であって、前記第2のserver helloメッセージは前記第2の乱数値および前記PQC暗号化済サーバキー共有を含む、段階と
を含む、請求項6に記載のコンピュータ実装方法。
【請求項9】
前記PQCサーバキー交換は前記server helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、請求項6に記載のコンピュータ実装方法。
【請求項10】
前記クライアントが従来のハンドシェイクプロセスを実行していることを検出する段階と、
前記セキュアな接続の確立を廃棄する段階と
をさらに備える、請求項6から9のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
1または複数のプロセッサと、
前記1または複数のプロセッサによって実行される場合、前記1または複数のプロセッサに、
クライアントとサーバとの間でセキュアな接続を確立するためのポスト量子暗号(PQC)動作モードを要求するclient helloメッセージを前記サーバに伝送する段階であって、前記client helloメッセージは、PQCパブリッククライアントキーを有する、段階と、
前記サーバからserver helloメッセージを受信する段階であって、前記server helloメッセージは、前記PQCパブリッククライアントキーから生成されたPQCサーバキー交換を有する、段階と、
前記server helloメッセージが、前記PQC動作モードを動作させるための認可を含むことを決定する段階と、
前記サーバに第2のclient helloメッセージを伝送する段階であって、前記第2のclient helloメッセージは、PQC暗号化済クライアントキー共有を含む、段階と、
第2のserver helloメッセージを受信する段階であって、前記第2のserver helloメッセージは、PQC暗号化済サーバキー共有を含む、段階と、
サーバキー共有を明らかにするべく、サーバ暗号キーを使用して前記PQC暗号化済サーバキー共有を解読する段階と、
前記サーバキー共有を使用して前記クライアントと前記サーバとの間でセキュアな接続を確立する段階と
を含む方法を実行させるように構成されたプログラム命令を記憶した1または複数のコンピュータ可読記憶媒体と
を備えるシステム。
【請求項12】
PQCキーペアを生成する動作であって、前記PQCキーペアは、PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む、動作と、
信号メッセージを乱数値に埋め込む動作であって、前記信号メッセージは前記PQC動作モードの要求を示す、動作と、
前記サーバに前記client helloメッセージを伝送する動作であって、前記client helloメッセージは、前記乱数値および前記PQCパブリッククライアントキーをパラメータとして含む、動作と
をさらに有する、請求項11に記載のシステム。
【請求項13】
第2の信号メッセージを第2の乱数値に埋め込む動作であって、前記第2の信号メッセージは、前記PQC動作モードに対する継続的な要求を示す、動作と、
PQCプライベートクライアントキーおよび前記server helloメッセージにおいて受信されたPQCサーバキー交換を使用してPQC共有キーを生成する動作と、
前記PQC共有キーおよびトランスクリプトハッシュからクライアント暗号キーおよびサーバ暗号キーを導出する動作であって、前記トランスクリプトハッシュは、各ハンドシェイクメッセージの連結をハッシュすることによって決定された値である、動作と、
前記クライアント暗号キーを使用してクライアントキー共有を暗号化する動作と、
前記第2のclient helloメッセージを伝送する動作であって、前記第2のclient helloメッセージは、前記第2の乱数値および前記暗号化済クライアントキー共有を含む、動作と
をさらに備える、請求項11に記載のシステム。
【請求項14】
前記PQCパブリッククライアントキーは前記client helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、請求項11に記載のシステム。
【請求項15】
前記サーバが従来のハンドシェイクプロセスを実行していることを検出する動作と、
前記セキュアな接続の確立を廃棄する動作と
をさらに備える、請求項11から14のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ポスト量子暗号に関し、より具体的には、トランスポート層セキュリティ(TLS)プロトコルにおけるポスト量子暗号アルゴリズムの実装に関する。
【背景技術】
【0002】
量子コンピューティングは、量子物理学を実装して古典的コンピュータと異なるように計算を行う計算モデルである。0または1であるビット上で動作する古典的コンピュータとは異なり、量子コンピュータは、同時に0および1の両方であり得る量子ビット(またはキュビット)に基づいている。この曖昧さの状態は、重ね合わせとして知られている。量子コンピューティングは、量子高速化および指数関数高速化を実行する可能性を有する。量子高速化は、問題が古典的コンピュータより量子コンピュータによってより速く解決できる場合に発生する。指数関数高速化は、古典的コンピュータ上で指数関数時間量をとるタスクが多項式複雑性を有する量子コンピュータ上で実行できる場合に発生する。
【0003】
TLSプロトコルは、サーバとクライアントとの間でセキュアな接続を確立するために使用されるプロトコルである。様々なパブリックキー暗号アルゴリズムがTLSによって使用され、サーバとクライアントとの間の伝送を暗号化する。これらの暗号アルゴリズムは、例えば、Rivest-Shamir-Adleman(RSA)、ディフィー・ヘルマンおよび楕円曲線暗号を含む。量子コンピュータは、これらの暗号システム(cryptosystem)を壊すとともに攻撃者(attacker)がサーバとクライアントとの間の暗号化された伝送を解読することを許可する可能性を有する。
【発明の概要】
【0004】
本開示の実施形態は、ポスト量子暗号アルゴリズムをTLSに統合するためのコンピュータ実装方法を含む。コンピュータ実装方法は、サーバにclient helloメッセージを伝送する段階を含む。client helloメッセージは、クライアントとサーバとの間でセキュアな接続を確立するためのポスト量子暗号(PQC)動作モードの要求をシグナリングする乱数値を含む。加えて、client helloメッセージは、別のパラメータとしてPQCパブリッククライアントキーを含む。コンピュータ実装方法は、client helloメッセージに応じてサーバからserver helloメッセージを受信する段階を含む。server helloメッセージは、PQCパブリッククライアントキーから生成されたPQCサーバキー交換を含む。コンピュータ実装方法はさらに、PQC動作モードを動作させるための認可を含むserver helloメッセージを決定する段階を含む。認可は、モードを認可する信号を含む別の乱数値の形態とすることができる。コンピュータ実装方法はまた、サーバに第2のclient helloメッセージを伝送する段階を含む。第2のclient helloメッセージは、PQC暗号化済クライアントキー共有を含む。PQC暗号化済クライアントキー共有は、PQC共有キーおよびトランスクリプトハッシュから導出されたクライアント暗号キーを使用して暗号化される。コンピュータ実装方法は、PQC暗号化済サーバキー共有を含む第2のserver helloメッセージを受信する段階と、PQC共有キーおよびトランスクリプトから導出されたサーバ暗号キーを使用してPQC暗号化済サーバキー共有を解読する段階とを含む。コンピュータ実装方法は、解読済サーバキー共有を使用してクライアントとサーバとの間でセキュアな接続を確立する段階を含む。
【0005】
好ましくは、本発明は、前記client helloメッセージを伝送する段階は、PQCキーペアを生成する段階であって、前記PQCキーペアは、前記PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む、段階と、信号メッセージを乱数値に埋め込む段階であって、前記信号メッセージは前記PQC動作モードの要求を示す、段階と、前記サーバに前記client helloメッセージを伝送する段階であって、前記client helloメッセージは、前記乱数値および前記PQCパブリッククライアントキーをパラメータとして含む、段階とを有する、コンピュータ実装方法を提供する。
【0006】
好ましくは、本発明は、前記第2のclient helloメッセージを伝送する段階が、第2の信号メッセージを第2の乱数値に埋め込む段階であって、前記第2の信号メッセージは、前記PQC動作モードに対する継続的な要求を示す、段階と、PQCプライベートクライアントキーおよび前記server helloメッセージにおいて受信された前記PQCサーバキー交換を使用してPQC共有キーを生成する段階と、前記PQC共有キーおよびトランスクリプトハッシュからクライアント暗号キーおよびサーバ暗号キーを導出する段階であって、前記トランスクリプトハッシュは、各ハンドシェイクメッセージの連結をハッシュすることによって決定された値である、段階と、前記クライアント暗号キーを使用してクライアントキー共有を暗号化する段階と、前記第2のclient helloメッセージを伝送する段階であって、前記第2のclient helloメッセージは、前記第2の乱数値および前記暗号化済クライアントキー共有を含む、段階とを有する、コンピュータ実装方法を提供する。
【0007】
好ましくは、本発明は、前記PQCパブリッククライアントキーは前記client helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、コンピュータ実装方法を提供する。
【0008】
好ましくは、本発明は、client helloメッセージがパラメータとしてPQC拡張を使用するコンピュータ実装方法を提供する。
【0009】
好ましくは、本発明は、前記サーバが従来のハンドシェイクプロセスを実行していることを検出する段階と、前記セキュアな接続の確立を廃棄する段階とをさらに含む、コンピュータ実装方法を提供する。
【0010】
好ましくは、本発明は、クライアントキー共有がKyberアルゴリズムを使用して暗号化されるコンピュータ実装方法を提供する。
【0011】
本開示の追加の実施形態は、ポスト量子暗号アルゴリズムをTLSに統合するためのコンピュータ実装方法を含む。コンピュータ実装方法は、サーバとのセキュアな接続の確立を要求するクライアントからのclient helloメッセージを受信する段階を含む。client helloメッセージは、PQCパブリッククライアントキーおよび乱数値を含む。コンピュータ実装方法はまた、client helloメッセージに乱数値に埋め込まれたPQC動作モードの要求が含まれていることを決定する段階を含む。コンピュータ実装方法はさらに、クライアントにserver helloメッセージを伝送する段階を含む。server helloメッセージは、リトライ要求、PQC動作モードを認識する埋め込み信号を有するサーバ乱数値、およびサーバキー交換をパラメータとして含む。サーバキー交換は、client helloメッセージにおいて受信されたPQCパブリッククライアントキーから生成される。コンピュータ実装方法はまた、クライアントから第2のclient helloメッセージを受信する段階を含む。第2のclient helloメッセージは、PQC暗号化済クライアントキー共有を含む。コンピュータ実装方法はまた、PQC共有キーおよびトランスクリプトハッシュから導出されたサーバ暗号キーを使用してPQCサーバキー共有を暗号化する段階と、サーバキー共有を使用してクライアントとのセキュアな接続を確立する段階とを含む。
【0012】
好ましくは、本発明は、前記server helloメッセージを伝送する段階が、リトライ要求を真にセットする段階であって、前記リトライ要求は、前記クライアントから別のclient helloメッセージを再送信するための要求を示す、段階と、信号メッセージを乱数値に埋め込む段階であって、前記信号メッセージは、前記PQC動作モードに対する認可を示す、段階と、前記client helloメッセージにおいて取得されたPQCパブリッククライアントキーを使用してポスト量子キーペアを生成する段階であって、前記PQCキーペアはPQCパブリックサーバキーおよびPQCプライベートサーバキーを含む、段階と、前記クライアントに前記server helloメッセージを伝送する段階であって、前記server helloメッセージは、前記乱数値および前記PQCパブリックサーバキーをパラメータとして含む、段階とを含む、コンピュータ実装方法を提供する。
【0013】
好ましくは、本発明は、前記第2のserver helloメッセージを伝送する段階が、前記リトライ要求を偽にセットする段階であって、前記リトライ要求は、前記クライアントから別のclient helloメッセージを再送信するための要求を示す、段階と、信号メッセージを第2の乱数値に埋め込む段階であって、前記信号メッセージは、前記PQC動作モードに対する認可を示す、段階と、クライアントキー共有を生成する前記クライアント暗号キーを使用して前記PQC暗号化済クライアントキー共有を解読する段階と、前記PQC暗号化済サーバキー共有を生成するべく前記サーバ暗号キーを使用して前記サーバキー共有を暗号化する段階と、前記クライアントに前記第2のserver helloメッセージを伝送する段階であって、前記第2のserver helloメッセージは前記第2の乱数値および前記PQC暗号化済サーバキー共有を含む、段階とを含む、コンピュータ実装方法を提供する。
【0014】
好ましくは、本発明は、前記PQCサーバキー交換は前記server helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、コンピュータ実装方法を提供する。
【0015】
好ましくは、本発明は、server helloメッセージがパラメータとしてPQC拡張を使用するコンピュータ実装方法を提供する。
【0016】
好ましくは、本発明は、前記クライアントが従来のハンドシェイクプロセスを実行していることを検出する段階と、前記セキュアな接続の確立を廃棄する段階とをさらに含む、コンピュータ実装方法を提供する。
【0017】
好ましくは、本発明は、PQC暗号化済サーバキー共有がKyberアルゴリズムを使用して暗号化されるコンピュータ実装方法を提供する。
【0018】
追加の実施形態は、ポスト量子暗号アルゴリズムをTLSに統合するためのポスト量子統合システムを対象とし、上記の方法を実行するように構成されている。
【0019】
好ましくは、本発明は、PQCキーペアを生成する段階であって、前記PQCキーペアは、PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む、段階と、信号メッセージを乱数値に埋め込む段階であって、前記信号メッセージは前記PQC動作モードの要求を示す、段階と、前記サーバに前記client helloメッセージを伝送する段階であって、前記client helloメッセージは、前記乱数および前記PQCパブリッククライアントキーをパラメータとして含む、段階とをさらに含む、コンピュータ実装システムを提供する。
【0020】
好ましくは、本発明は、第2の信号メッセージを第2の乱数値に埋め込む段階であって、前記第2の信号メッセージは、前記PQC動作モードに対する継続的な要求を示す、段階と、PQCプライベートクライアントキーおよび前記server helloメッセージにおいて受信されたPQCサーバキー交換を使用してPQC共有キーを生成する段階と、前記PQC共有キーおよびトランスクリプトハッシュからクライアント暗号キーおよびサーバ暗号キーを導出する段階であって、前記トランスクリプトハッシュは、各ハンドシェイクメッセージの連結をハッシュすることによって決定された値である、段階と、前記クライアント暗号キーを使用してクライアントキー共有を暗号化する段階と、前記第2のclient helloメッセージを伝送する段階であって、前記第2のclient helloメッセージは、前記第2の乱数値および前記暗号化済クライアントキー共有を含む、段階とをさらに有する、コンピュータ実装システムを提供する。
【0021】
好ましくは、本発明は、前記PQCパブリッククライアントキーは前記client helloメッセージ内のgenerate random extensions and sustain extensibility(GREASE)拡張にセットされている、コンピュータ実装システムを提供する。
【0022】
好ましくは、本発明は、client helloメッセージがパラメータとしてPQC拡張を使用するコンピュータ実装システムを提供する。
【0023】
好ましくは、本発明は、前記サーバが従来のハンドシェイクプロセスを実行していることを検出する段階と、前記セキュアな接続の確立を廃棄する段階とをさらに含む、コンピュータ実装システムを提供する。
【0024】
本概要は、本開示のあらゆる実装もしくはあらゆる実施形態またはその組み合わせの各態様を示すことを意図するものではない。
【図面の簡単な説明】
【0025】
本開示の実施形態のこれらのおよび他の特徴、態様および利点は、以下の説明、添付の特許請求の範囲、および添付図面に関してより良く理解されるであろう。
【0026】
【
図1】本開示の実施形態に従ってポスト量子統合システムを示すブロック図である。
【0027】
【
図2】本開示の実施形態に従って、ポスト量子統合システムによるポスト量子統合プロセスを使用したクライアントとサーバとの間のポスト量子統合ハンドシェイクを示すデータフロー図である。
【0028】
【
図3】本開示の実施形態に従ったクライアント側ポスト量子統合ハンドシェイクプロセスのフロー図である。
【0029】
【
図4】本開示の実施形態に従ったサーバ側ポスト量子統合ハンドシェイクプロセスのフロー図である。
【0030】
【
図5】本開示の実施形態に従ってclient helloメッセージプロセスを伝送する段階のフロー図である。
【0031】
【
図6】本開示の実施形態に従ってserver helloメッセージプロセスを伝送する段階のフロー図である。
【0032】
【
図7】本開示の実施形態に従って第2のclient helloメッセージを伝送する段階のフロー図である。
【0033】
【
図8】本開示の実施形態に従って第2のserver helloメッセージを伝送する段階のフロー図である。
【0034】
【
図9】本開示の実施形態に従ったメッセージ埋め込みプロセスのフロー図である。
【0035】
【
図10】本開示の実施形態に従ったメッセージデコードプロセスのフロー図である。
【0036】
【
図11】本開示の実施形態に従って、本明細書に記載の方法、ツールならびにモジュール、および任意の関連機能のうちの1または複数の実装において使用され得る例示的なコンピュータシステムを示すハイレベルブロック図である。
【0037】
【
図12】本開示の実施形態に従ってクラウドコンピューティング環境を示す図である。
【0038】
【
図13】本開示の実施形態に従って抽象化モデル層を示す図である。
【0039】
本開示は、様々な修正例および代替的な形態に補正可能であり、一方で図面には、本開示の具体的内容が例示として示されており、以下に詳細に説明する。しかしながら、説明されている特定の実施形態に限定することが意図されていないということが、理解されたい。反対に、本開示の範囲に含まれる全ての修正、均等物、および代替手段をカバーすることが意図されている。添付図面において、同様の参照番号は同様の部品を指定するために使用されている。
【発明を実施するための形態】
【0040】
本開示は、ポスト量子暗号に関し、より具体的には、トランスポート層セキュリティ(TLS)プロトコルにおけるポスト量子暗号アルゴリズムの実装に関する。本開示はそのような用途に必ずしも限定されないが、この文脈を使用した様々な例の議論を通して、本開示の様々な態様が理解され得る。
【0041】
量子コンピューティングは、古典的コンピュータ上では効果的に解決することが不可能とみなされていた特定の問題を解決するために量子力学を利用する新興技術である。現在展開されている暗号化方式によって保護されたデータが量子コンピューティングの発展によってセキュアでなくなる可能性があるといった懸念事項が存在する。RSA、ディフィー・ヘルマン、および楕円曲線暗号などの共通のアルゴリズムは、単に量子コンピューティングの存在によってセキュアでなくなる可能性を有する展開済の非対称アルゴリズムのうち一部に過ぎない。
【0042】
例えば、TLSハンドシェイクプロトコルは、RSA、ディフィー・ヘルマンおよび楕円曲線暗号を実装して、クライアントとサーバとの間のセキュアな接続を確立する。しかしながら、ショアのアルゴリズムに基づいて、これらの暗号アルゴリズムは、十分に大きな量子コンピュータの上ではセキュアでなくなるであろう。ショアのアルゴリズムは、整数因数分解のための多項式時間量子コンピュータアルゴリズムである。量子コンピュータ上で、ショアのアルゴリズムは、多項式時間において実行され、ファクタリング、離散対数(DLP)および楕円曲線離散対数(ECDLP)などの問題を解決することとができる。暗号的にセキュアであることを維持するために、上述の暗号アルゴリズムは、古典的コンピュータの上で解決することが不可能であるこれらの問題に依存する。
【0043】
TLSの普及を考慮して、現在の非対称暗号アルゴリズムが量子コンピューティングの出現によりセキュアでなくなるので、ポスト量子暗号への移行が必要となる。様々なポスト量子アルゴリズムが、量子コンピューティングの時代においてセキュアであることを維持する可能性を有するTLSによって使用された現在の非対称暗号アルゴリズムを置き換えるべく、作成されてきた。これらのポスト量子アルゴリズムは、例えば、Kyber PQC、FrodoKEM、SIKE、PicnicおよびTESLAを含む。
【0044】
RSA、楕円曲線ディフィー-ヘルマン(ECDH)および楕円曲線デジタル署名アルゴリズム(ECDSA)の使用を置き換える、TLSを用いたポスト量子暗号の実装が存在する。これらの実装は、キー交換および署名の両方が並列に実行されて、古典的な交換/署名およびポスト量子の交換/署名の両方を生成するハイブリッドモデルを提案する。
【0045】
ポスト量子TLS実装のハイブリッドアプローチは、ポスト量子暗号をシグナリングするための新たな暗号スイート(cipher suite)を実装する。加えて、キーカプセル化方法が、ECDHEなどのアルゴリズムと共にランダムキーを用いて使用されている。交換されたポスト量子暗号値は、ECDHEキーを用いて連結またはXOR'演算される。
【0046】
しかしながら、現在の実装は、ポスト量子アルゴリズムを使用した暗号化方式をネゲート化される(negated)ことから保護しないので、ポスト量子セキュリティに対する制限は維持される。攻撃者は、ポスト量子セキュリティの実装を防止し得る。例えば、攻撃者は、ポスト量子暗号の要求を含むclient helloメッセージを傍受し得る。現在のポスト量子TLSソリューションはハイブリッドモードで動作するので、次いで、クライアントは、量子攻撃の影響を受けやすい従来のTLS接続を要求し得る。代替的に、攻撃者は、量子安全アルゴリズムを壊すことなく従来のアルゴリズムを直接壊すことができる。現在の実装は従来のアルゴリズムとポスト量子アルゴリズムとを並んで使用し、それらを組み合わせてシングルTLSハンドシェイクを実行する。従って、攻撃者は、従来のアルゴリズムを単に壊して、接続における脆弱性を作成することができる。
【0047】
例示として、クライアントは、サーバにclient helloメッセージを伝送する。client helloメッセージに含まれるのは、ポスト量子セキュア接続を要求するパラメータである。中間者攻撃者(man-in-the-middle attacker)は、メッセージを傍受して、ポスト量子パラメータを検出することができる。検出されると、攻撃者は、メッセージがサーバに伝送されることを防止することができる。クライアント側において、クライアントは、遅延を、ポスト量子接続の確立の試みの失敗だと知覚する。そのため、クライアントは、従来のセキュアな接続の要求を有する別のclient helloメッセージを伝送する。攻撃者は当該メッセージを傍受して、従来のセキュアな接続のパラメータを検出して、当該メッセージをサーバに進ませることができる。量子コンピューティング能力を使用すると、攻撃者は、以降の非対称暗号化メッセージを傍受して、それらを潜在的に解読することができる。
【0048】
本開示の実施形態は、ポスト量子統合システムを使用することによって上記の問題および他の問題を克服し得る。ポスト量子統合システムは、量子安全TLSを提供する。まず、ポスト量子統合システムは、クライアントとサーバとの間の接続の確立において使用されるポスト量子暗号(PQC)の要求をシグナリングする方法を使用する。これらの方法は、それらが外周プロセッサ、他のミドルウェア、または中間者攻撃者によってブロックされる可能性を低くするように設計されている。ハンドシェイクメッセージにおいて使用された乱数値には、要求を示す信号を埋め込むことができる。これは、攻撃者がPQC動作モードから従来の動作モードへのダウングレードを試みる可能なダウングレード攻撃を検出および回避することを助ける。
【0049】
加えて、ポスト量子統合システムは、PQCアルゴリズムが結果として従来のアルゴリズムを保護するハイブリッド動作モードを使用する。そうすることで、PQCアルゴリズムは、従来のアルゴリズムが量子コンピューティング攻撃にさらされる前に壊される必要があるであろう。従って、従来のアルゴリズムは、PQCアルゴリズムによって提供された強化済セキュリティを受信する。client/server helloメッセージの2つのセットが接続を確立するために使用される。第1のclient/server helloメッセージにおいて、PQCキーが交換され、PQC共有キーが確立される。第2のclient/server helloメッセージにおいて、キーは、PQC共有キーおよびハンドシェイクトランスクリプトハッシュから導出される。キーは、従来のECDHEキー共有を交換するために使用される。キースケジュールの一部として使用されたハンドシェイクトランスクリプトハッシュは、中間者攻撃に対抗する追加の保護を提供する。
【0050】
より具体的には、本明細書に記載のポスト量子シグナリングシステムは、ある信号を、PQC動作モードの要求をシグナリングする乱数に埋め込む。ダウングレード攻撃は、client helloメッセージ内の要求が明らかでないため、回避される。中間者傍受メッセージは、メッセージのコンテンツを表示することで要求を検出することができないであろう。加えて、client helloメッセージに含まれた乱数は、TLSハンドシェイクプロセスを破壊することなく変更されることができない。
【0051】
本質的に、ポスト量子統合システムは、ポスト量子アルゴリズムをTLSプロトコルに統合する。クライアントとサーバとの間の通信は、TLSプロトコルを使用して一般的にセキュアになる。TLSは、コンピュータネットワークを介して通信セキュリティを提供するように設計された暗号プロトコルを提供する。サーバおよびウェブクライアントは、TLSハンドシェイクプロトコルを遵守して情報を交換することによってTLS接続を確立することができる。TLSハンドシェイクプロトコルは、メッセージのフォーマットおよびそれらの交換の順序を定義する。一度交換されると、結果としてTLS接続が成功し、ここでサーバおよびウェブクライアントの両方はTLSプロトコルを使用してアプリケーションデータをセキュアに交換することができる。TLS接続を確立するウェブクライアントとサーバとの間におけるTLSハンドシェイクの成功は、TLSセッションと一般的に称される。
【0052】
本開示の実施形態は、ミドルボックス耐性を提供するためにPQC秘密を交換するためにgenerate random extensions and sustain extensibility(GREASE)拡張を利用する段階を含む。GREASEは、TLSエコシステムにおける拡張性障害を防止するためのメカニズムである。それは、サーバが未知の値を正しく処理することを保証するべく、クライアントによってアドバタイズされ得るTLSプロトコル値のセットを確保する。例えば、クライアントは、1または複数のランダムGREASE暗号スイート値を選択し、client Hello暗号スイートフィールドにおいてそれらをアドバタイズし得る。いくつかの実施形態において、クライアントは、PQCクライアントパブリックキーを、無視されるのがデフォルトとなっているGREASEによって定義された使用されていない拡張値に配置する。
【0053】
本開示の実施形態は、信号メッセージを乱数値に埋め込む段階を含む。例えば、ハッシュ関数は、乱数からハッシュ値を反復的に生成することができる。それぞれの反復の後、結果として得られるハッシュ値は、信号メッセージがハッシュ値内に含まれているかを決定するように検査されることができる。反復プロセスは、信号メッセージを含むハッシュ値が乱数内に埋め込まれるまで継続される。
【0054】
例えば、クライアントおよびサーバは、TLS接続を確立するプロセスを開始する。サーバおよびウェブクライアントは、TLSハンドシェイクプロトコルを遵守して情報を交換することによってTLS接続を確立することができる。TLSハンドシェイク中に、クライアントは、32バイトの乱数値と、様々なプロトコルパラメータなどの省略可能な情報とを含む。クライアントは、サーバに送信する前に、信号メッセージを32バイトの乱数値に埋め込むことができる。埋め込み信号メッセージを有する乱数は、TLS接続の確立中にPQC動作モードに対するサポートを要求する信号として作用することができる。サーバは、埋め込みメッセージをデコードし、信号に基づいて応答するか、または、秘密が正しいことを検証することによって送信者を認証することができる。
【0055】
いくつかの実施形態において、クライアントは、サーバが従来のハンドシェイクプロセスに復帰したことを検出すると、セキュアな接続の確立を廃棄する。例えば、TLSハンドシェイクプロセス中に、クライアントおよびサーバは、それらがPQC動作モード下で動作することを互いにシグナリングすることができる。クライアントは、信号を含まないメッセージを受信したとき、それらはサーバとの通信を停止し、接続を廃棄することができる。
【0056】
ここで
図1を参照すると、本開示の実施形態に従ってポスト量子統合システム100を示すブロック図が示される。ポスト量子統合システム100は、PQC暗号化メカニズム110と、ポスト量子アルゴリズムライブラリ120と、キー生成器130と、キー派生関数140と、ハッシュメカニズム150と、メッセージデコーダ160とを含む。
【0057】
PQC暗号化メカニズム110は、1または複数の量子耐性パブリックキー暗号化標準を適用するように構成されたポスト量子統合システム100のコンポーネントである。パブリックキー暗号化標準は、1または複数の追加の分類されていないパブリックに開示されたデジタル署名、パブリックキー暗号化、および利用可能なキー確立アルゴリズムを指定することができる。これらのPQCアルゴリズムは、量子コンピューティング攻撃から情報を保護することが可能である。PQC暗号化メカニズム110は、暗号化手順を実行する場合、ポスト量子アルゴリズムライブラリ120内にリストされたPQCアルゴリズムを利用することができる。
【0058】
例えば、PQC暗号化メカニズム110は、暗号化手順を実行すべく、Cryptographic Suite for Algebraic Lattices(CRYSTALS)Kyberアルゴリズムを利用することができる。Kyberは、IND-CCA2-セキュアキーカプセル化メカニズム(KEM)であり、そのセキュリティは、モジュール格子を介してlearning-with-errors(LWE)問題を解決することの困難さに基づく。
【0059】
ポスト量子アルゴリズムライブラリ120は、PQC暗号化メカニズム110によって利用される、ポスト量子統合システム100のポスト量子アルゴリズムのライブラリである。例えばポスト量子アルゴリズムとしては、Big Quake、Bike、CFPKM、Classic McEliece、CRYSTALS-Kyber、DAGS、DualModeMS、EMBLEM、FALCON、HILA5、HQC、Lepton、Lizard、LOTUS、MQDSS、Picnic、Rainbow、Titanium、FrodoKEM、NewHope、およびThree Bearsが挙げられる。ポスト量子アルゴリズムは、複数のカテゴリにさらに分割され得る。例えばこれらのカテゴリとしては、格子ベースの暗号、多変数暗号、ハッシュベースの暗号、コードベースの暗号、超特異楕円曲線同種写像暗号、および対称キーの量子耐性が挙げられる。
【0060】
キー生成器130は、PQCキーペアと従来のキーペアとを生成するように構成されたポスト量子統合システム100のコンポーネントである。キーペアは、選択されたアルゴリズムと共に使用できるパブリックキーとプライベートキーとのペアである。それは、アルゴリズム固有のパラメータと生成されたキーの各々とを関連付けることができる。キーペアは、アルゴリズムから独立した初期化またはアルゴリズム固有の初期化のいずれかとして生成されることができる。キーペアはパブリックキーおよびプライベートキーから成り、パブリックキーは暗号化に使用され、プライベートキーは解読に使用される。
【0061】
キー派生関数140は、疑似ランダム関数を使用して、秘密値およびマスターキーから1または複数の秘密キーを導出するように構成されたポスト量子統合システム100のコンポーネントである。キー派生関数140は、キーをより長いキーに伸長するために、または、共通の秘密値から1または複数のキーを導出するべく、秘密でないパラメータと併せて、キー交換の結果であるグループ要素を対称キーに変換するなど、必要なフォーマットのキーを取得するために、使用されることができる。
【0062】
キー派生関数140は、他のキーまたはパスワードからキーを導出するためにアプリケーションにおいて使用されることができ、これらは、導出したキーが暗号キーとして直接使用されることを許可する性質を有する。いくつかの実施形態において、キー派生関数140は、暗号化ハッシュ関数を使用して、トランスクリプトハッシュと共にキーを拡張する。キー派生関数140は、キーおよびトランスクリプトハッシュを入力し、固定長擬似ランダムキーを生成すべくハッシュ関数を適用することができる。擬似ランダムキーを使用して、キー派生関数140は、キーを、いくつかの追加の擬似ランダムキーに拡張する。拡張中に、出力キーの数および長さは、キーが必要とされる特定の暗号アルゴリズムに依存し得る。別のハッシュ関数が、擬似ランダムキー、および、任意選択的且つ特定用途向けであり得る任意の他の追加の情報に適用される。
【0063】
ハッシュメカニズム150は、数生成器によって生成された乱数値にハッシュ関数を適用するように構成されたポスト量子統合システム100のコンポーネントである。ハッシュ関数は、例えば、MD5、SHA-1、SHA-256、SHA-3およびBlake2を含む。これらのハッシュ関数は、原像計算困難性および衝突困難性などの性質を含むことができる。原像計算困難性は、ランダムハッシュ値を考慮して、攻撃者がそのハッシュ値の原像を決して見出すことができないというセキュリティ保証を説明する。そのため、ハッシュ関数は、一方向性関数とみなされることができ、これは、原像計算困難性が、メッセージからそのハッシュへの移行は許可しているが、ハッシュからメッセージへの復帰は許可していないからである。そのため、ハッシュ関数は反転することができない。
【0064】
原像計算困難性は、所与のハッシュ値にマッピングされる任意のメッセージを見出すことが実際に不可能であることを保証する。具体的には、原像計算困難性、または第1の原像計算困難性は、所与の値にハッシュされるメッセージを見出すことが実際に不可能なケースを説明している。一方、第2の原像計算困難性は、メッセージが与えられた場合に、第1のメッセージと同じ値にハッシュされる別のメッセージを見出すことが実際に不可能であるケースを説明している。
【0065】
衝突困難性は、攻撃者が同じ値にハッシュする2つの別個のメッセージを見出すことが可能となることを防止する性質を指す。衝突困難性は、第2の原像計算困難性とみなされることもできる。ハッシュメカニズム150はさらに、誕生日攻撃を除去するように構成されている。誕生日攻撃は、N個のメッセージによって、且つ、多くのハッシュ値として定義され、ここで、2つのハッシュ値の各ペアを考慮することによって合計N×(N-1)/2の潜在的衝突が生成されることができる。衝突を決定する誕生日攻撃を防止すべく、ハッシュメカニズム150は、ハッシュ関数としてハッシュベースのメッセージ認証コード(HMAC)を利用することができる。設計によって、HMACは、他の広く使用されているハッシュ関数よりも衝突の影響を少なく受ける。
【0066】
加えて、ハッシュメカニズム150によって生成されたハッシュ値は、初期乱数値のランダム性を保持する。これは、ハッシュ関数が偏りのない一様な分布を提供するからである。そのため、乱数値が与えられると、結果として得られるハッシュ値のランダム性は逓減せず、均等な乱数値を結果としてもたらす。
【0067】
ハッシュメカニズム150はさらに、メッセージを表すビットシーケンスが結果として得られるハッシュ値において生成されるまで、乱数値に対してハッシュ関数を反復的に適用するように構成されている。ビットシーケンスは、確率的であり、平均的には、2の(メッセージ内のビット数)乗であろう。例えば、12ビットメッセージは、平均4、096回のハッシュ反復を必要とするであろう。そのため、メッセージの長さは、短い、またはおよそ12から18ビットが好ましい。
【0068】
乱数値において偽のメッセージが検出される可能性が存在する。これらのインスタンスは、
【数1】
の確率を有し、ここでmは、メッセージ内のビットの数を表す。ユースケース単位でのより大きい偽信号耐性のためのメッセージのサイズに基づく生成時間のトレードオフも好ましい。そうでなければ、生成時間は、より大きいメッセージを生成する場合に、生成のための許容可能な時間フレームを超え得る。加えて、メッセージのサイズは、使用されているハッシュ関数の効果的な作業サイズも逓減させる。例えば、メッセージが12ビットの長さを有するとき、次いで、SHA256ハッシュ関数の強度は、244ビットに低減する。より大きいメッセージは、脆弱性ポイントまでハッシュ関数の強度を低減するであろう。
【0069】
メッセージデコーダ160は、メッセージに埋め込まれたメッセージをデコードするように構成されたポスト量子統合システム100のコンポーネントである。ハッシュメカニズム150は、受信された乱数値に対して予め共有されたハッシュ関数を適用して、ハッシュ値を生成することができる。メッセージデコーダは、ハッシュ値を分析して、ビットシーケンスが、ハッシュメカニズム150によって生成されたハッシュ値内にセットされていることを検証することができる。
【0070】
いくつかの実施形態において、メッセージデコーダ160は、ハッシュ値内のビットシーケンスが、送信者と受信者との間における予め共有された秘密と一致することを検証する。例えば、送信者は、送信者を認証するのに使用されるパスワードを埋め込んでいる場合がある。メッセージデコーダ160は、パスワードが、受信者によって記憶されるパスワードと一致することを検証することができる。ビットシーケンスを検証すると、メッセージデコーダ160は、メッセージが受信されたことを確認することができる。伝送されたメッセージのタイプに応じて且つ検証に成功すると、埋め込みメッセージは、制限された領域への送信者のアクセスを付与するのに使用されてもよく、または、それは、異なるプロトコル特徴(例えば、ポスト量子暗号)を許可してもよい。
【0071】
図1は、例示的なポスト量子統合システム100の主な代表的なコンポーネントを示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態において、個々のコンポーネントは、
図1に表されたよりも多かれ少なかれ複雑になり得たり、
図1に示されたもの以外のコンポーネントまたはそのコンポーネントに加えてコンポーネントが存在し得たり、そのようなコンポーネントの数、タイプ、および構成が変化し得たりする。
【0072】
図2は、本開示の実施形態に従ってポスト量子統合システム100によってTLSハンドシェイクにおけるPQC統合を示すデータフロー
図200である。プロセス200は、クライアント用のPQCキーペアを生成するキー生成器130によって開始される。これは、段階210に示されている。PQCキーペアは、PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む。加えて、ハッシュメカニズム150は、乱数値に、クライアントがサーバとのPQC動作モードを開始することを望んでいることを示す信号を埋め込む。
【0073】
段階215において、クライアントはTLS client helloメッセージをサーバに伝送する。client helloメッセージは、パラメータとしてPQC拡張を使用する。TLS client helloメッセージは、パラメータとしてPQCパブリッククライアントキーおよび埋め込み信号乱数値を含む。TLSプロトコルにより、client helloメッセージは、セキュアな接続を要求する場合にクライアントがサーバに伝送する第1のメッセージである。TLSプロトコルに基づいて、client helloメッセージは、乱数値、セッション識別子、暗号スイートリスト、およびクライアントによってサポートされた圧縮アルゴリズムを含む。
【0074】
client helloメッセージを受信すると、メッセージデコーダ160は、PQC信号が乱数値に埋め込まれたかどうかを決定するべく、受信された乱数値を評価する。これは、段階220に示されている。乱数値がPQC信号要求を含むことを決定すると、サーバ側のキー生成器130は、入力としてPQCパブリッククライアントキーを使用してPQC共有キーおよびPQCサーバキー交換を生成する。PQCサーバキー交換は、クライアント側のPQC共有キーを生成するべく、クライアントによって使用されることができる。加えて、サーバ側のハッシュメカニズム150は、乱数値に、サーバがクライアントとのPQC動作モードに確認応答することを示す信号を埋め込む。
【0075】
段階225において、サーバは、PQCサーバキー交換と、PQC動作モードを認可するPQC信号を有する乱数値とを含むserver helloメッセージを伝送する。TLSプロトコルにより、server helloメッセージは、サーババージョン、乱数値、セッション識別、選択暗号スイート、圧縮方法、および拡張のリストを含む。クライアントによって提供された拡張のみがサーバのリストに表示されることができる。段階230において、サーバ側では、キー派生関数140は、クライアント暗号キーおよびサーバ暗号キーを生成するべく、PQC共有キーおよびトランスクリプトハッシュを拡張する。
【0076】
クライアント側では、メッセージデコーダ160は、PQC動作モードの要求が認可されたことを決定するべく、server helloメッセージにおいて受信された乱数値を分析する。認可を決定すると、PQC暗号化メカニズム110は、PQCプライベートクライアントキーを使用してPQCサーバキー交換をデコードすることによって、PQC共有キーを生成する。クライアント側のキー派生関数140は、PQC共有キーを拡張し、トランスクリプトハッシュを拡張して、サーバ側で生成された同じクライアント暗号キーおよびサーバ暗号キーを生成する。クライアント暗号キーを使用して、PQC暗号化メカニズム110は、PQC暗号化済クライアントキー共有を生成すべく、クライアントキー共有を暗号化する。これは段階240に示されている。
【0077】
段階245において、クライアントは、第2のclient helloメッセージを伝送する。第2のclient helloメッセージは、パラメータとしてPQC拡張を使用する。第2のclient helloメッセージは、パラメータとしてPQC暗号化済クライアントキー共有および別の埋め込み信号乱数値を含む。
【0078】
段階250において、PQC暗号化メカニズム110は、クライアントキー共有を明らかにするべく、PQC暗号化済クライアントキー共有を解読する。加えて、メッセージデコーダ160は、PQC動作モードが依然として要求されていることを決定するべく、第2のhelloメッセージからの受信された乱数値を評価する。サーバ暗号キーを使用して、PQC暗号化メカニズム110は、PQC暗号化済サーバキー共有を生成すべく、サーバキー共有を暗号化する。
【0079】
段階255において、サーバは、第2のserver helloメッセージを伝送する。第2のserver helloメッセージは、パラメータとしてPQC暗号化済サーバキー共有および別の埋め込み信号乱数値を含む。段階260において、クライアント側では、PQC暗号化メカニズム110は、サーバキー共有を明らかにするべく、PQC暗号化済サーバキー共有を解読する。サーバキー共有およびクライアントキー共有を使用して、サーバおよびクライアントは、セキュアな接続の確立を完了することができる。
【0080】
図3は、本開示の実施形態に従ったクライアント側ポスト量子統合ハンドシェイクプロセスのためのプロセス300を示すフロー図である。プロセス300は、クライアントからサーバにclient helloメッセージを伝送することによって開始される。これは、段階310に示されている。client helloメッセージは、クライアントとサーバとの間のセキュアな接続を要求する初期メッセージとすることができる。client helloメッセージは、TLSの異なるバージョンによって定義された異なるTLSハンドシェイクプロトコルを遵守することができる。例えば、client helloメッセージは、TLSバージョン1.0、1.1、1.2、および1.3を遵守することができる。TLSハンドシェイクプロトコルは、接続のセキュリティパラメータをネゴシエートするのに使用される。ハンドシェイクメッセージ(例えば、client/server helloメッセージ)はTLS記録層に供給され、ここで、それらは、作成済のセキュアな接続によって指定されたように処理および伝送された1または複数のTLS平文(plaintext)またはTLS暗号文構造(ciphertext structure)内にカプセル化されている。
【0081】
クライアントが初めてサーバに接続した場合には、その第1のTLSメッセージとしてclient helloメッセージを送信する必要がある。クライアントはまた、サーバが、第1のclient helloメッセージに対してリトライ要求で応答したときに、別のclient helloメッセージを送信する必要がある。client helloメッセージに含まれたものは、PQC動作モードの要求を示す埋め込み信号を有する乱数値である。PQC動作モードは、クライアントが、可能なポスト量子攻撃を防止するべく、ポスト量子アルゴリズムを使用して、サーバとのセキュアな接続を確立することを望んでいることを示している。client helloメッセージは、パラメータとしてPQC拡張を使用する。加えて、client helloメッセージは、PQCパブリッククライアントキーを含む。段階310は、
図5のプロセス500に関して以降により詳細に説明される。
【0082】
クライアントは、サーバからクライアントへのserver helloメッセージを受信する。これは、段階320に示されている。server helloメッセージは、PQCパブリッククライアントキーならびに乱数値から生成されたPQCサーバキー交換を含むことができる。メッセージデコーダ160は、乱数値を分析して、それがPQC動作モードの認可/確認応答を含むか否かを決定することができる。解析は、乱数値を評価して、対応する信号が、client helloメッセージにおいて伝送された信号に応じて、乱数値内に埋め込まれたかどうかを決定する。これは、段階330に示されている。
【0083】
乱数値がPQC動作モードを認可する信号メッセージを含まないことを決定すると、クライアントは、従来の標準的ハンドシェイクプロトコルを使用して、セキュアな接続を確立することによって進むことができる。これは、段階340に示されている。しかしながら、メッセージデコーダ160が埋め込み信号メッセージを検出したとき、クライアントは、第2のclient helloメッセージを伝送することによって進むことができる。これは段階350に示されている。
【0084】
第2のclient helloメッセージは、PQC暗号化済クライアントキー共有と、PQC動作モードを維持するための要求を示す埋め込み信号を有する別の乱数値とを含むことができる。PQC動作モードは、クライアントが、ポスト量子アルゴリズムを使用して、サーバとのセキュアな接続を確立することを継続することを望んでいることを示す。第2のclient helloメッセージを伝送する段階350は、
図7のプロセス700に関して以降により詳細に説明される。
【0085】
クライアントは、第2のclient helloメッセージに応じて第2のserver helloメッセージを受信する。これは、段階360に示されている。第2のserver helloメッセージは、PQC暗号化済サーバキー共有と、ハンドシェイクプロセス中にPQC動作モードを維持するための確認応答/認可を示す埋め込み信号を有する別の乱数値とを含むことができる。PQC暗号化メカニズム110は、PQC共有キーおよびトランスクリプトハッシュから導出されたサーバ暗号キーを使用して、PQC暗号化済サーバキー共有を解読する。これは、段階370に示されている。解読の結果は、サーバキー共有である。クライアントは、クライアント/サーバキー共有を使用して、サーバとのセキュアな接続を確立する。これは段階380に示されている。
【0086】
図4は、本開示の実施形態に従ったサーバ側ポスト量子統合ハンドシェイクプロセスのプロセス400を示すフロー図である。プロセス400は、クライアントからサーバへのclient helloメッセージを受信することによって開始される。これは、段階410に示されている。client helloメッセージは、クライアントとサーバとの間のセキュアな接続を要求する初期メッセージとすることができる。client helloメッセージは、パラメータとしてPQC拡張を使用する。client helloメッセージに含まれたものは、PQC動作モードの要求を示す可能な埋め込み信号を有する乱数値である。PQC動作モードは、クライアントが、可能なポスト量子攻撃を防止するべく、ポスト量子アルゴリズムを使用して、サーバとのセキュアな接続を確立することを望んでいることを示している。加えて、client helloメッセージは、PQCパブリッククライアントキーを含む。
【0087】
サーバ側のメッセージデコーダ160は、受信された乱数値を分析して、それがPQC動作モードの要求を含むか否かを決定することができる。これは、段階420に示されている。解析は、乱数値を評価して、対応する信号が、PQC動作モードを要求する乱数値内に埋め込まれたかどうかを決定する。例えば、乱数値が乱数値内に信号「PQC」を含むとき、しかしながら、他の信号はクライアントおよびサーバによって予め定められたように使用されることができることに留意されたい。
【0088】
乱数値がPQC動作モードを要求する信号メッセージを含まないことを決定すると、サーバは、従来の標準的ハンドシェイクプロトコルを使用して、セキュアな接続を確立することによって進むことができる。これは、段階430に示されている。しかしながら、メッセージデコーダ160が埋め込み信号メッセージを検出したとき、サーバは、server helloメッセージを伝送することによって進むことができる。これは段階440に示されている。
【0089】
server helloメッセージは、パラメータとしてPQC拡張を使用する。server helloメッセージは、PQCサーバキー交換と、PQC動作モードを/に認可/確認応答する埋め込み信号を有する乱数値とを含むことができる。埋め込み信号は、サーバがクライアントとのセキュアな接続を確立するためにPQC動作モードを進める能力を有しており、そのようにすることを望んでいることを示す。server helloメッセージを伝送する段階440は、
図6のプロセス600に関して以降により詳細に説明される。
【0090】
サーバは、server helloメッセージに応じて第2のclient helloメッセージを受信する。これは、段階450に示されている。第2のclient helloメッセージは、PQC暗号化済クライアントキー共有と、PQC動作モードを維持するための要求を示す埋め込み信号を有する別の乱数値とを含むことができる。PQC動作モードは、クライアントが、ポスト量子アルゴリズムを使用して、サーバとのセキュアな接続を確立することを継続することを望んでいることを示す。
【0091】
PQC暗号化メカニズム110は、サーバキー共有を暗号化する。これは、段階460に示されている。サーバ暗号キーは、PQC共有キーおよびトランスクリプトハッシュから導出される。PQC共有キーは、キー生成器130によって生成される。サーバ暗号キーを使用して、第2のclient helloメッセージにおいて受信されたPQC暗号化済クライアントキー共有は、PQC暗号化メカニズム110によって解読される。サーバキー共有は、キー生成器130によって生成され、サーバ暗号キーを使用してPQC暗号化メカニズム110によって暗号化される。
【0092】
サーバは、クライアントに第2のserver helloメッセージを伝送することによって進む。これは、段階470に示されている。server helloメッセージは、パラメータとしてPQC拡張を使用する。第2のserver helloメッセージは、PQC暗号化済サーバキー共有と、継続されたPQC動作モードを/に認可/確認応答する埋め込み信号を有する別の乱数値とを含む。第2のserver helloメッセージを伝送する段階470は、
図8のプロセス800に関して以降により詳細に説明される。サーバは、クライアント/サーバキー共有を使用して、クライアントとのセキュアな接続を確立する。これは段階480に示されている。
【0093】
図5は、本開示の実施形態に従ってclient helloメッセージを伝送するプロセス500を示すフロー図である。プロセス500は、クライアント用のPQCキーペアを生成するキー生成器130によって開始される。これは、段階510に示されている。PQCキーペアは、PQCパブリッククライアントキーおよびPQCプライベートクライアントキーを含む。PQCキーペアは、クライアントによって選択されたポスト量子キー技術に基づくことができる。
【0094】
ハッシュメカニズム150は、PRNGによって生成された乱数値にハッシュ関数を適用して、埋め込み信号を生成する。これは、段階520に示されている。ハッシュメカニズム150は、結果として得られるハッシュ値を評価しながら、ハッシュ関数を反復的に適用する。ハッシュメカニズム150は、PQC動作モードの要求を表す信号メッセージに対応するビットのシーケンスでハッシュ値が生成されるまで、結果として得られるハッシュ値に対してハッシュ関数を適用することを継続する。信号メッセージを乱数値に埋め込む段階520は、
図9のプロセス900に関して以降により詳細に説明される。
【0095】
PQCパブリッククライアントキーは、GREASE拡張値にセットされる。これは、段階530に示されている。いくつかの実施形態において、client helloメッセージは、client helloメッセージにおいてGREASE拡張を使用する。PQCパブリッククライアントキーは、ミドルウェアまたは中間者攻撃の回避を補助するべく、GREASE拡張に配置されることができる。TLSプロトコルは、いくつかの拡張性ポイントを含み、これは、暗号スイートのリストおよび拡張リストを含む。これらのリストにおける値は、実装能力を識別する。TLSは、通常はクライアントである1つの側が能力をアドバタイズし、サーバがそれらを選択するモデルに従う。応答側は、インターオペラビリティを維持しながら新たな能力がエコシステムに導入され得るように、未知の値を無視しなければならない。しかしながら、エラーによって、実装は未知の値を拒否し得る。これらのエラーを回避するべく、GREASEは、いくつかの現在使用されていない値をTLS実装用に確保して、ランダムにアドバタイズする。client helloメッセージは、PQCパブリッククライアントキーを伝送するべく、使用されていない値のうち1つを使用することができる。
【0096】
クライアントは、サーバにclient helloメッセージを伝送する。これは、段階540に示されている。client helloメッセージは、クライアントとサーバとの間のセキュアな接続を要求する初期メッセージとすることができる。client helloメッセージは、GREASE拡張にセットされたPQCパブリッククライアントキーと、PQC動作モードを要求する埋め込み信号を有する乱数値とを含むことができる。
【0097】
図6は、本開示の実施形態に従ってserver helloメッセージプロセスを伝送するプロセス600を示すフロー図である。プロセス600は、サーバがリトライ要求を真にセットすることによって開始される。これは、段階610に示されている。典型的には、サーバは、許容可能なパラメータセットを見出すことが可能なときにclient helloメッセージに応じてリトライ要求を送信するが、client Helloは、ハンドシェイクを進めるための十分な情報は含まない。リトライ要求は、server helloメッセージと同じフォーマットを維持しており、ここで、レガシーバージョン、レガシーセッションidエコー、暗号スイート、およびレガシー圧縮方法フィールドは、同じ意味を有する。リトライ要求が送信され、クライアントがサーバにPQC情報を返送することを許可する。
【0098】
リトライ要求のために、サーバの拡張はサポートされたバージョンを含まなければならない。加えて、それは、対応する第2のclient helloメッセージを生成するためにクライアントが必要とする拡張の最小限のセットを含むべきである。リトライ要求は、それらのclient helloメッセージにおいて、クライアントによって提供されなかったあらゆる拡張を含むことができない。
【0099】
ハッシュメカニズム150は、PRNGによって生成された乱数値にハッシュ関数を適用して、埋め込み信号を生成する。これは、段階620に示されている。ハッシュメカニズム150は、結果として得られるハッシュ値を評価しながら、ハッシュ関数を反復的に適用する。ハッシュメカニズム150は、PQC動作モードの認可/確認応答を表す信号メッセージに対応するビットのシーケンスでハッシュ値が生成されるまで、結果として得られるハッシュ値に対してハッシュ関数を適用することを継続する。信号メッセージを乱数値に埋め込む段階620は、
図9のプロセス900に関して以降により詳細に説明される。
【0100】
PQC暗号化メカニズム110は、client helloメッセージにおいて受信されたPQCパブリッククライアントキーを使用して、PQC共有キーおよびPQCキー交換を生成する。これは、段階630に示されている。キー交換は、それによって2つの当事者間で暗号キーが交換される方法であって、暗号アルゴリズムの使用を許可する。PQCキー交換は、PQCプライベートクライアントキーを使用してデコードされ、クライアント側にPQC共有キーを生成することができる。
【0101】
PQCキー交換は、GREASE拡張値にセットされる。これは、段階640に示されている。いくつかの実施形態において、server helloメッセージは、server helloメッセージにおいてGREASE拡張を使用する。PQCキー交換は、ミドルウェアまたは中間者攻撃の回避を補助するべく、GREASE拡張に配置されることができる。server helloメッセージは、PQCキー交換を伝送するべく、使用されていないGREASE値のうち1つを使用することができる。
【0102】
キー派生関数140は、PQC共有キーおよびトランスクリプトハッシュを使用してクライアント暗号キーおよびサーバ暗号キーを導出して、共有キーを拡張する。これは、段階650に示されている。キー派生関数は、ランダム性コンポーネント(例えば、トランスクリプトハッシュ)を有するキー材料(keying material)のソースをとり、それを、1または複数の暗号的に強力なキーから導出する。この事例において、キー派生関数140は、クライアント暗号キーおよびサーバ暗号キーを生成する。
【0103】
トランスクリプトハッシュは、ハンドシェイクメッセージのタイプおよび長さフィールドを保持したハンドシェイクメッセージヘッダを含むそれぞれの個別のハンドシェイクメッセージの連結をハッシュすることによって計算される。いくつかの実施形態において、サーバがリトライ要求に応答する場合、client helloメッセージの値は、client helloメッセージのハッシュを含む特殊合成ハンドシェイクメッセージで置き換えられる。この構造の理由は、単にclient helloメッセージのハッシュを記憶することによって、サーバがステートレスのリトライ要求を作成することを許可することである。
【0104】
サーバは、クライアントにserver helloメッセージを伝送する。これは、段階660に示されている。server helloメッセージは、クライアントとサーバとの間のセキュアな接続を要求するclient helloメッセージに対する応答である。server helloメッセージは、GREASE拡張にセットされたPQCキー交換と、PQC動作モードを認可する埋め込み信号を有する乱数値とを含む。
【0105】
図7は、本開示の実施形態に従って第2のclient helloメッセージプロセスを伝送するプロセス700を示すフロー図である。プロセス700は、クライアント側のハッシュメカニズム150が信号を別の乱数値に埋め込むことによって開始される。これは、段階710に示されている。
図5のプロセス500における段階520と同様に、ハッシュメカニズム150は、結果として得られるハッシュ値を評価しながら、ハッシュ関数を反復的に適用する。ハッシュメカニズム150は、PQC動作モードの要求を表す信号メッセージに対応するビットのシーケンスでハッシュ値が生成されるまで、結果として得られるハッシュ値に対してハッシュ関数を適用することを継続する。信号メッセージを乱数値に埋め込む段階710は、
図9のプロセス900に関して以降により詳細に説明される。
【0106】
PQC暗号化メカニズム110は、PQC共有キーをデコードする。これは、段階720に示されている。PQCキー交換は、server helloメッセージに含まれていた。第1のclient helloメッセージ中に生成されたPQCプライベートクライアントキーを使用して、PQC暗号化メカニズム110は、PQC共有キーを生成するためにPQCキー交換をデコードする。
【0107】
キー派生関数140は、PQC共有キーおよびトランスクリプトハッシュを使用してクライアント暗号キーおよびサーバ暗号キーを導出して、共有キーを拡張する。これは、段階730に示されている。キー派生関数は、ランダム性コンポーネント(例えば、トランスクリプトハッシュ)を有するキー材料(keying material)のソースをとり、それを、1または複数の暗号的に強力なキーから導出する。この事例において、キー派生関数140は、クライアント暗号キーおよびサーバ暗号キーを生成する。クライアント暗号キーおよびサーバ暗号キーは、プロセス600の段階650に表されたように、サーバ側で導出された同じキーである。
【0108】
PQC暗号化メカニズム110は、ポスト量子アルゴリズムライブラリ120およびクライアント暗号キーにおいて利用可能なPQCアルゴリズムを使用して、クライアントキー共有を暗号化する。これは、段階740に示されている。いくつかの実施形態において、クライアントキー共有は、Kyberアルゴリズム、PQCアルゴリズムを使用して暗号化される。
【0109】
クライアントは、サーバに第2のclient helloメッセージを伝送する。これは、段階750に示されている。第2のclient helloメッセージは、サーバから受信されたリトライ要求メッセージに応じたものであり得る。第2のclient helloメッセージは、PQC暗号化済クライアントキー共有と、継続したPQC動作モードを要求する埋め込み信号を有する乱数値とを含むことができる。
【0110】
図8は、本開示の実施形態に従って第2のserver helloメッセージプロセスを伝送するプロセス800を示すフロー図である。プロセス600は、サーバがリトライ要求を偽にセットすることによって開始される。これは、段階810に示されている。リトライ要求を偽にセットすることによって、これは、別のclient helloメッセージが必要でもないまたは要求されていないことをクライアントに伝える。サーバ側のハッシュメカニズム150は、信号を別の乱数値に埋め込む。これは、段階820に示されている。
図6のプロセス600における段階620と同様に、ハッシュメカニズム150は、結果として得られるハッシュ値を評価しながら、ハッシュ関数を反復的に適用する。ハッシュメカニズム150は、PQC動作モードの認可/確認応答を表す信号メッセージに対応するビットのシーケンスでハッシュ値が生成されるまで、結果として得られるハッシュ値に対してハッシュ関数を適用することを継続する。信号メッセージを乱数値に埋め込む段階810は、
図9のプロセス900に関して以降により詳細に説明される。
【0111】
PQC暗号化メカニズム110は、PQC暗号化済クライアントキー共有を解読する。これは、段階830に示されている。PQC暗号化済クライアントキー共有は、クライアントから受信された第2のclient helloメッセージに先に含まれている。PQC共有キーおよびトランスクリプトハッシュから導出されたクライアント暗号キーを使用して、PQC暗号化メカニズム110は、クライアントキー共有を生成するべく、PQC暗号化済クライアントキー共有を解読することができる。
【0112】
PQC暗号化メカニズム110は、ポスト量子アルゴリズムライブラリ120およびクライアント暗号キーにおいて利用可能なPQCアルゴリズムを使用して、サーバキー共有を暗号化する。これは、段階840に示されている。いくつかの実施形態において、PQC暗号化済サーバキー共有は、Kyberアルゴリズム、PQCアルゴリズムを使用して暗号化される。
【0113】
サーバは、クライアントに第2のserver helloメッセージを伝送する。これは、段階850に示されている。第2のserver helloメッセージは、サーバから受信されたリトライ要求メッセージに応じたものであり得る。第2のserver helloメッセージは、PQC暗号化済サーバキー共有と、継続したPQC動作モードを認可する埋め込み信号を有する乱数値とを含むことができる。
【0114】
図9は、本開示の実施形態に従ってメッセージを乱数値に埋め込むプロセス900を示すフロー図である。プロセス900は、乱数値を生成する数生成器によって開始される。これは、段階910に示されている。いくつかの実施形態において、数生成器は、乱数値を生成するためにCSPRNGを利用する。CSPRNGは、カウンタモードで暗号を実行することによってCSPRNGに変換されるセキュアなブロック暗号(block cipher)とすることができる。カウンタモードは、乱数値が暗号化の結果を使用して生成されるまで、「1」を暗号化して、次いで「2」を暗号化し、以下同様に暗号化するのにブロック暗号を使用することによって実行される。カウンタモードにおいて、ブロック暗号は、1または0以外の任意の数で開始されることができる。ブロック暗号を利用することによって、誕生日パラドックスが回避され、これは、カウンタモードのブロック暗号は同一のブロックを出力しないからである。数生成器によって使用されるブロック暗号のタイプは、例えば、フェイステル暗号、換字‐置換ネットワーク、Lai-Massey暗号、およびARXを含む。
【0115】
いくつかの実施形態において、数生成器は、乱数値を生成するためにストリーム暗号(stream cipher)を使用する。ストリーム暗号は、平文で組み合わされXOR演算されたビットの疑似ランダムストリームを生成することによって機能する。ストリーム暗号は、新たな疑似ランダムストリームを返すカウンタ上で動作することができる。数生成器によって使用されるストリーム暗号のタイプは、例えば、RC4、A5/1、ISAAC、Salsa20、VESTおよびA5/2を含む。
【0116】
一度乱数値が生成されると、ハッシュメカニズムは、乱数値に対してハッシュ関数を適用する。これは、段階920に示されている。生成されたハッシュ値は調査され、送信者が埋め込みを望むメッセージを表すビットシーケンスがハッシュ値内に位置付けられているかどうかを決定する。生成されたハッシュ値はまた、必要に応じてポスト量子統合システム100にハッシュ値への参照を許可するために、ハッシュテーブルに配置されることができる。例えば、送信者および受信者が予め共有された数を有するとき、伝送されたハッシュ値は、ビットシーケンスがいつ生成されたかに応じて、生成されたハッシュ値のうちいずれかであり得る。
【0117】
ハッシュメカニズム150は、メッセージを表すビットシーケンスが生成されたハッシュ値に表示されるまで、段階920に示されたようにハッシュ関数を反復的に適用する。これは、段階930に示されている。反復プロセスは、送信者が埋め込みを望むメッセージを表すビットシーケンスを有するハッシュ値を生成するために、先に生成されたハッシュ値に対してハッシュ関数を適用するハッシュメカニズム150の繰り返しである。プロセスのそれぞれの繰り返しは単一の反復であり、それぞれの反復の成果は次いで、次の反復の開始ポイントとなる(すなわち、生成されたハッシュ値は、後続の反復において入力として使用される)。
【0118】
いくつかの実施形態において、それぞれの反復において生成されたハッシュ値はハッシュテーブルに配置される。それぞれの反復の後、ハッシュ値が生成され、ハッシュテーブルに配置されることができる。ハッシュ値は、メッセージに対応するビットシーケンスを有するハッシュ値が生成されるまでハッシュテーブルに配置されることができる。例えば、メッセージが「PQC」であるとき、そのビットシーケンスに埋め込まれた「PQC」を有するハッシュ値は、反復プロセスを完了させるであろう。
【0119】
いくつかの実施形態において、反復のカウントはそれぞれの反復の後にインクリメントされる。それぞれの反復の後、反復カウントは、メッセージに対応するビットシーケンスを有するハッシュ値が生成されるまでインクリメントされる。インクリメントカウントは、埋め込みメッセージを有する最終ハッシュ値に達するために発生した反復の数を反映することができる。
【0120】
埋め込み信号ハッシュ値は、暗号システムにおいて、新たな乱数値として利用される。これは、段階940に示されている。いくつかの実施形態において、以前のハッシュ値は、暗号システムにおいて新たな乱数値として利用される。以前のハッシュ値は、埋め込みメッセージを有していた最終ハッシュ値の直前のハッシュ値とすることができる。いくつかの実施形態において、利用されるハッシュ値は、予め共有され且つ予め定められた数によって埋め込み信号を含む最終ハッシュ値に先行する反復からのものである。例えば、予め共有された数は、多くの場合、送信者および受信者に既知であり得る。使用されるハッシュ値は、最終反復の前に10回の反復を発生させた反復からのものであろう。ハッシュテーブルを参照することができ、ハッシュ値が取得されることができる。
【0121】
いくつかの実施形態において、予め共有され且つ予め定められた数は、それぞれの使用の後にインクリメントされる。インクリメントは、1によって、または5もしくは12などのいくつかの他の合意の数によって、インクリメントされることができる。例えば、送信者が最終ハッシュ値より5回の反復の前に発生したハッシュ値を伝送した後に予め定められた数が5であるとき、5は合意の数だけインクリメントされる。合意の数が1であるとき、次いで、予め定められた数は、6にインクリメントされ、以下同様である。
【0122】
いくつかの実施形態において、利用されるハッシュ値は、数生成器によって生成された乱数値である。予め定められた反復によって生成されたハッシュ値は調査され、ビットシーケンスがハッシュ値内で生成されるかどうかを決定することができる。ハッシュ値がビットシーケンスを有しないことを決定すると、次いで、乱数値は、暗号システムにおいて乱数値として利用されることができる。これは、送信者がメッセージを送信しないことを望む場合に、不注意な(inadvertent)メッセージが乱数値に表示されることを防止する。
【0123】
図10は、本開示の実施形態に従って乱数値においてメッセージをデコードするプロセス1000を示すフロー図である。プロセス1000は、ポスト量子統合システム100が乱数値を受信することから開始される。これは、段階1010に示されている。乱数値は、暗号システムの伝送におけるパラメータとすることができる。例えば、乱数値は、サーバとのTLS接続またはセキュアソケットレイヤ(SSL)接続を確立するクライアントによって送信された伝送におけるパラメータとすることができる。乱数値がTLS client helloメッセージに含まれたとき、乱数値の長さは32バイトである。しかしながら、乱数値のサイズは、利用される暗号システムに応じて変動し得る。
【0124】
ハッシュメカニズム150は、乱数値に対してハッシュ関数を適用する。これは、段階1020に示されている。メッセージを乱数値に埋め込むために使用された同じハッシュ関数は、使用されている同じハッシュ関数である。送信者によって使用されるハッシュ関数のタイプは、乱数値を送信する場合のパラメータとして含まれることができる。ハッシュメカニズム150は、予め定められた時間量だけハッシュ関数を反復的に適用する。ハッシュメカニズム150がハッシュ関数を適用する時間量は、送信者と受信者との間で共有された予め定められた数に基づくことができる。例えば、予め定められた数が1であるとき、次いで、ハッシュメカニズム150は、乱数値に対してハッシュ関数を一度適用する。別の事例において、予め定められた数が10であるとき、次いで、ハッシュメカニズム150は、乱数値および結果として得られるハッシュ値に対してハッシュ関数を10回反復的に適用する。最終ハッシュ値は、埋め込みメッセージを含む。
【0125】
メッセージデコーダ160は、最終ハッシュ値が埋め込みメッセージを含むことを検証する。これは、段階1030に示されている。メッセージデコーダは、送信者と受信者との間の関係を検証して、受信されるメッセージのタイプを決定することができる。例えば、送信者および受信者は、メッセージとして使用される予め共有された秘密に対する合意を有し得る。送信者は秘密を伝送することができ、これは、送信者を認証するために受信者によって認証因子として使用されることができる。
【0126】
いくつかの実施形態において、メッセージデコーダ160は、メッセージを特徴信号として検証する。中間者干渉(例えば、インターネットサービスプロバイダ(ISP))がプロトコル特徴を防止することを回避するべく、送信者は、介入者によって禁止され得るプロトコルにおける特徴についての信号メッセージを受信者に伝送することができる。例えば、プロトコル特徴は、送信者が有効にすることを望むポスト量子暗号であり得る。埋め込み信号メッセージを受信すると、受信者は、その特徴を送信者に提供することができる。
【0127】
メッセージデコーダ160は、メッセージが検証されたかどうかを決定する。これは、段階1040に示されている。例えば、メッセージが認証メカニズムのタイプとして使用されるとき、次いで、メッセージデコーダ160は、メッセージが予め共有された秘密に対応するかどうかを検証することができる。メッセージが予め共有された秘密と正確に一致しないとき、次いで、メッセージは無視される。これは、段階1050に示されている。送信者は、次いで、埋め込みメッセージが伝送されていなかったかのように、暗号システムにおける乱数値を利用することができる。しかしながら、メッセージが検証されたとき、送信者は、メッセージが受信されたことの確認を進める。これは、段階1060に示されている。確認は、送信されたメッセージのタイプに依存し得る。メッセージがプロトコル特徴要求に対応するとき、送信者は、要求がパラメータにおいて行われたかのように、その特徴を実装し、暗号システムの段階を進めることができる。メッセージが予め共有された秘密に対応するとき、次いで、サーバは、ユーザを認証し、認証によって提供された利益をユーザに付与することができる。
【0128】
ここで
図11を参照すると、本開示の実施形態に従って、本明細書に記載の方法、ツールならびにモジュール、および任意の関連機能(例えば、コンピュータの1または複数のプロセッサ回路またはコンピュータプロセッサを使用した)のうちの1または複数の実装において使用され得る例示的なコンピュータシステム1100(例えば、ポスト量子統合システム100)のハイレベルブロック図が示される。いくつかの実施形態において、コンピュータシステム1100の主なコンポーネントは、1または複数のプロセッサ1102、メモリ1104、端末インタフェース1112、I/O(入力/出力)デバイスインタフェース1114、ストレージインタフェース1116、およびネットワークインタフェース1118を含み得、これらの全ては、メモリバス1103、I/Oバス1108およびI/Oバスインタフェース1110を介して、コンポーネント間通信のために、直接的または間接的に、通信可能に連結され得る。
【0129】
コンピュータシステム1100は、本明細書では総称的にプロセッサ1102と称されている1または複数の汎用プログラマブル中央処理装置(CPU)1102-1、1102-2、1102-3および1102-Nを含み得る。いくつかの実施形態において、コンピュータシステム1100は、比較的大きいシステムでは典型的な、複数のプロセッサを含み得るが、他の実施形態においては、コンピュータシステム1100は、代替的に単一CPUシステムであり得る。それぞれのプロセッサ1101は、メモリ1104に記憶された命令を実行し得、1または複数のレベルのオンボードキャッシュを含み得る。
【0130】
メモリ1104は、ランダムアクセスメモリ(RAM)1122またはキャッシュメモリ1124などの揮発性メモリの形態でコンピュータシステム可読媒体を含み得る。コンピュータシステム1100はさらに、他のリムーバブル/ノンリムーバブル揮発性/不揮発性コンピュータシステム記憶媒体を含み得る。単なる例として、「ハードドライブ」などの、ノンリムーバブルな、不揮発性の磁気媒体に対する読み取りと書き込みとを行うために、ストレージシステム1126を提供することができる。図示されていないが、リムーバブルな、不揮発性の磁気ディスク(例えば、「フロッピーディスク」)に対する読み取りと書き込みとを行うための磁気ディスクドライブ、あるいはCD-ROM、DVD-ROM、またはその他の光媒体などのリムーバブル、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスクドライブを提供することができる。加えて、メモリ1104は、フラッシュメモリ(例えば、フラッシュメモリスティックドライブまたはフラッシュドライブ)を含むことができる。メモリデバイスは、1または複数のデータ媒体インタフェースによってメモリバス1103に接続され得る。メモリ1104は、様々な実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0131】
メモリバス1103は、プロセッサ1102、メモリ1104およびI/Oバスインタフェース1110の間に直接通信パスを提供するシングルバス構造として
図11に示されているが、メモリバス1103は、いくつかの実施形態において、複数の異なるバスまたは通信パスを含み得、これらは、階層、星またはウェブ構成におけるポイントツーポイントリンク、複数の階層型バス、並行および冗長パス、または任意の他の適切なタイプの構成などの任意の様々な形態で構成され得る。さらに、I/Oバスインタフェース1110およびI/Oバス1108が単一のそれぞれのユニットとして示されているが、コンピュータシステム1100は、いくつかの実施形態において、複数のI/Oバスインタフェースユニット、複数のI/Oバス、またはその両方を含み得る。さらに、I/Oバス1108を、様々なI/Oデバイスに達する様々な通信パスから分離する複数のI/Oインタフェースユニットが示されているが、他の実施形態において、I/Oデバイスの一部または全部が、1または複数のシステムI/Oバスに直接接続され得る。
【0132】
いくつかの実施形態において、コンピュータシステム1100は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、または直接ユーザインタフェースをほとんどまたは全く有していないが、他のコンピュータシステム(クライアント)からの要求を受信するサーバコンピュータまたは同様のデバイスであり得る。さらに、いくつかの実施形態において、コンピュータシステム1100は、デスクトップコンピュータ、ポータブルコンピュータ、ラップトップコンピュータまたはノートブックコンピュータ、タブレットコンピュータ、ポケットコンピュータ、電話、スマートフォン、ネットワークスイッチまたはルータ、あるいは任意のその他の適切なタイプの電子デバイスとして実装され得る。
【0133】
図11は、例示的なコンピュータシステム1100の主な代表的なコンポーネントを示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態において、個々のコンポーネントが、
図11に表されているコンポーネントより大きいまたはより小さい複雑さを有し得、
図11に示されているコンポーネント以外のコンポーネントまたは追加のコンポーネントが提示され得、そのようなコンポーネントの数、タイプ、および構成が変化し得る。
【0134】
それぞれ少なくとも1つの組のプログラムモジュール1130(例えば、ポスト量子統合システム100)を有する1または複数のプログラム/ユーティリティ1128は、メモリ1104に記憶され得る。プログラム/ユーティリティ1128は、ハイパーバイザ(仮想マシンモニタとも称される)、1または複数のオペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータを含み得る。オペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々、またはそれらの何らかの組み合わせが、ネットワーク環境の実装を含み得る。プログラム1128もしくはプログラムモジュール1130またはその組み合わせは、概して、様々な実施形態の機能または方法を実行する。
【0135】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または、今後開発される任意の他のタイプのコンピューティング環境と併せて実装することが可能である。
【0136】
クラウドコンピューティングは、最小限の管理労力、またはサービスプロバイダとの最小限の対話で迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの簡便かつオンデマンドネットワークアクセスを可能にするためのサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含み得る。
【0137】
特性は、以下の通りである。
オンデマンドセルフサービス:クラウド消費者は、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:この能力は、ネットワークを介して利用可能であり、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促す標準メカニズムを介してアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の消費者にサービス提供するようプールされ、異なる物理リソースおよび仮想リソースが、需要に従って動的に割り当ておよび再割り当てされる。消費者は概して提供されたリソースの正確な位置に対して制御または知識を有していないが、より高いレベルの抽象化(例えば、国、州、またはデータセンタ)において位置を指定することが可能であり得るという点で、位置の独立性がある。
迅速な弾力性:この能力は、迅速にかつ弾力的に、場合によっては自動的にプロビジョニングして、素早くスケールアウトし、かつ迅速にリリースして素早くスケールインすることができる。消費者にとって、多くの場合、プロビジョニングに利用可能な能力は無制限に見え、任意の時点において任意の量で購入することができる。
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅およびアクティブユーザアカウント)に適切な或るレベルの抽象化における計測能力を活用することによって、自動的にリソース使用を制御および最適化する。リソース使用量をモニタリング、制御および報告することができ、それにより、利用されるサービスのプロバイダおよび消費者の両方に透明性が提供される。
【0138】
サービスモデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS:Software as a Service):消費者に提供される能力は、クラウドインフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを通して様々なクライアントデバイスからアクセス可能である。消費者は、考えられる例外としての限定されたユーザ固有のアプリケーション構成設定を除き、ネットワーク、サーバ、オペレーティングシステム、ストレージまたはさらには個別のアプリケーション能力を含む、基礎となるクラウドインフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム(PaaS:Platform as a Service):消費者に提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成される、消費者が作成または取得したアプリケーションを展開することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、またはストレージを含む、基礎となるクラウドインフラストラクチャを管理または制御しないが、展開されたアプリケーション、および場合によってはアプリケーションホスティング環境構成を制御する。
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service):消費者に提供される能力は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここで消費者は、オペレーティングシステムおよびアプリケーションを含むことができる任意のソフトウェアを展開および実行することが可能である。消費者は、基礎となるクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションを制御するとともに、場合によっては選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)を限定的に制御する。
【0139】
展開モデルは、以下の通りである。
プライベートクラウド:このクラウドインフラストラクチャは、或る組織のためにのみ動作する。プライベートクラウドは、その組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
コミュニティクラウド:このクラウドインフラストラクチャは、いくつかの組織によって共有され、共有される関心事項(例えば、ミッション、セキュリティ要件、ポリシおよびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者により管理され得、オンプレミスまたはオフプレミスに存在し得る。
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆または大規模な業界団体に利用可能とされ、クラウドサービスを販売する組織によって所有される。ハイブリッドクラウド:クラウドインフラストラクチャは、一意的なエンティティのままであるが、データおよびアプリケーションのポータビリティ(例えば、クラウド間のロードバランシングのためのクラウドバースティング)を可能とする、標準化されたかまたは独自技術によって共に結び付けられている、2またはそれ以上のクラウド(プライベート、コミュニティ、または公衆)の複合である。
【0140】
クラウドコンピューティング環境は、サービス指向であって、ステートレス性、低結合性、モジュール性およびセマンティック相互運用性に注目している。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
【0141】
ここで
図12を参照すると、例示的なクラウドコンピューティング環境1200が示されている。示されるように、クラウドコンピューティング環境1200は、それを用いてクラウド消費者によって使用されるローカルコンピューティングデバイス(例えば、携帯情報端末(PDA)または携帯電話1220-1、デスクトップコンピュータ1220-2、ラップトップコンピュータ1220-3、もしくは自動車コンピュータシステム1220-4またはその組み合わせなど)が通信し得る1または複数のクラウドコンピューティングノード1210を含む。ノード1210は、互いに通信し得る。それらは、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、もしくはハイブリッドクラウド、またはこれらの組み合わせなどの、1または複数のネットワーク内で物理的にまたは仮想的にグループ化され得る(図示せず)。これにより、クラウドコンピューティング環境1200は、クラウド消費者がローカルコンピューティングデバイス上のリソースを維持する必要のないインフラストラクチャ、プラットフォーム、もしくはソフトウェアまたはその組み合わせをサービスとして提供することができる。
図12に示されたコンピューティングデバイス1220-1~1220-4のタイプは、例示のみが意図されており、コンピューティングノード1210およびクラウドコンピューティング環境1200は、任意のタイプのネットワークまたはネットワークアドレス指定可能な接続(例えば、ウェブブラウザを使用した接続)またはその組み合わせを経由して任意のタイプのコンピュータ化デバイスと通信することができると理解される。
【0142】
ここで
図13を参照すると、クラウドコンピューティング環境1200(
図12)によって提供された機能抽象層1300のセットが示される。
図13に示されているコンポーネント、層、および機能が例示のみを意図したものであり、本発明の実施形態がそれらに限定されないことを事前に理解されたい。図示されているように、以下の層および対応する機能が提供される。
【0143】
ハードウェアおよびソフトウェア層1310は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例としては、メインフレーム1311、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ1312、サーバ1313、ブレードサーバ1314、ストレージデバイス1315、ならびにネットワークおよびネットワーキングコンポーネント1316が挙げられる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア1317およびデータベースソフトウェア1318を含む。
【0144】
仮想化層1320は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ1321、仮想ストレージ1322、仮想プライベートネットワークを含む仮想ネットワーク1323、仮想アプリケーションおよびオペレーティングシステム1324、ならびに仮想クライアント1325が提供され得る。
【0145】
1つの例において、管理層1330は、以下で説明される機能を提供し得る。リソースプロビジョニング1331は、クラウドコンピューティング環境内でタスクを実行するのに利用される、コンピューティングリソースおよび他のリソースの動的な調達を提供する。計測および価格設定1332では、クラウドコンピューティング環境内でリソースが利用されるとコストの追跡を提供し、これらのリソースの消費に対して請求書作成またはインボイス作成を提供する。1つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウド消費者およびタスクに対する識別情報検証、ならびに、データおよび他のリソースに対する保護を提供する。ユーザポータル1333は、消費者およびシステム管理者に、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理1334は、必要なサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を提供する。サービスレベルアグリーメント(SLA)計画および履行1335は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前調整および調達を提供する。
【0146】
ワークロード層1340は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション1341、ソフトウェア開発およびライフサイクル管理1342(例えば、ポスト量子統合システム100)、仮想教室教育配信1343、データ分析処理1344、トランザクション処理1345、および精度コホート分析1346を含む。
【0147】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、もしくはコンピュータプログラム製品、またはその組み合わせであり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。
【0148】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードまたは命令が記録された溝における隆起構造などの機械的にエンコードされたデバイス、および、前述の任意の好適な組み合わせを含む。本明細書において使用されるようなコンピュータ可読記憶媒体は、それ自体が、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または有線を通じて伝送される電気信号などの一時的な信号であるものとして解釈されるものではない。
【0149】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにまたは外部コンピュータもしくは外部ストレージデバイスに、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくは無線ネットワークまたはその組み合わせを介して、ダウンロードされることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバ、またはその組み合わせを含み得る。それぞれのコンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0150】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(登録商標)またはC++などといったオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのうちいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されること、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されること、ユーザのコンピュータ上で部分的に実行され且つリモートコンピュータ上で部分的に実行されること、または、リモートコンピュータまたはサーバ上で完全に実行されることがあり得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または、当該接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)外部コンピュータに対して行われ得る。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズし得る。
【0151】
本発明の態様は、本発明の実施形態に従う方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその組み合わせを参照して本明細書に記載される。フローチャート図もしくはブロック図またはその組み合わせの各ブロックと、フローチャート図もしくはブロック図またはその組み合わせにおけるブロックの組み合わせとが、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0152】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置に提供されてマシンを生成し得、その結果、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置を介して実行する命令は、フローチャートもしくはブロック図またはその組み合わせの単数または複数のブロックで指定された機能/動作を実装する手段を作成する。また、これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置、もしくは、他のデバイス、またはその組み合わせに特定の方式で機能するように指示することができるコンピュータ可読記憶媒体にも記憶され得、これにより、命令を記憶したコンピュータ可読記憶媒体が、フローチャートもしくはブロック図の、またはその組み合わせの単数または複数のブロックで指定される機能/動作の態様を実装する命令を含む製品を含むようになる。
【0153】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実装プロセスを生成するように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードされ得、その結果、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令は、フローチャートもしくはブロック図またはその組み合わせの単数または複数のブロックで指定された機能/動作を実装する。
【0154】
図面内のフローチャートおよびブロック図は、本発明の様々な実施形態に従うシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装する1または複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックが、実際には、1つの段階として実現されてもよく、同時に、実質的に同時に、部分的にもしくは全体的に時間重複する方式で実行されてもよく、または、ブロックは、場合によっては、関与する機能に依存して逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその組み合わせの各ブロック、および、ブロック図もしくはフローチャート図またはその組み合わせにおけるブロックの組み合わせが、指定された機能もしくは動作を実行する、または特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0155】
本明細書で使用される専門用語は、単に特定の実施形態を説明する目的のためのものであり、様々な実施形態を限定することを意図するものではない。
本明細書において使用されるとき、単数形の「a」、「an」、および「the」は、文脈がそうでないことを明確に示していない限り、複数形も含むことが意図されている。「含む(includes)」もしくは「含む(including)」またはその組み合わせの用語は、本明細書で使用される場合、述べられた特徴、整数、段階、動作、要素もしくはコンポーネントまたはその組み合わせの存在を指定するが、1または複数の他の特徴、整数、段階、動作、要素、コンポーネントもしくはそのグループまたはその組み合わせの存在または追加を除外するわけではないことをさらに理解されたい。様々な実施形態の例示的な実施形態の以前の詳細な説明において、添付図面(同様の番号は同様の要素を表う)を参照した。添付図面は、本明細書の一部を形成し、ここで、例示として、様々な実施形態が実施され得る特定の例示的な実施形態が示される。これらの実施形態は、当業者が当該実施形態を実施することを可能とするように十分に詳細に説明されているが、他の実施形態が使用され得、論理的変化、機械的変化、電気的変化および他の変化が、様々な実施形態の範囲から逸脱することなく行われ得る。前述の説明において、多数の特定の詳細が、様々な実施形態の完全な理解を提供するために記載された。しかし、様々な実施形態は、これらの特定の詳細なしで実施され得る。他の事例において、周知の回路、構造および技術は、実施形態を不明瞭にしないために、詳細に示されていない。
【0156】
異なる参照番号が、その後に異なる文字が続く共通の番号を備える(例えば、100a、100b、100c)場合または異なる番号が続く句読点が続く共通の番号を備える(例えば、100-1、100-2または100.1、100.2)場合、文字または後続の番号(例えば、100)なしで参照記号のみを使用することは、複数の要素のグループ、グループの任意のサブセット、またはグループの例示的な標本を全体として指し得る。
【0157】
さらに、「のうちの少なくとも1つ」という語句は、項目のリストとともに使用される場合、リストされた項目のうちの1または複数の異なる組み合わせが使用され得ることを意味し、リスト中の各項目のうち1つのみが必要である可能性がある。言い換えると、「のうちの少なくとも1つ」は、リストからの項目の任意の組み合わせおよび任意の数の項目が使用され得るが、リストに含まれる項目の全てが必要とされるわけではないということを意味する。項目は、特定のオブジェクト、物またはカテゴリであり得る。
【0158】
例えば、限定することなく、「項目A、項目Bまたは項目Cのうちの少なくとも1つ」は、項目A、項目Aおよび項目B、または項目Bを含み得る。この例はまた、項目A、項目Bおよび項目C、または、項目Bおよび項目Cを含み得る。勿論、これらの項目の任意の組み合わせが存在し得る。いくつかの例示的な例において、「のうちの少なくとも1つ」は、限定することなく、例えば、項目Aのうち2個、項目Bのうち1個、項目Cのうち10個、項目Bのうち4個および項目Cのうち7個、または、他の好適な組み合わせであり得る。
【0159】
本明細書内で使用される「実施形態」という単語の異なる例は、必ずしも同じ実施形態を指すわけではないが、同じ実施形態を指す場合もある。本明細書に図示または記載される任意のデータおよびデータ構造は、単なる例であり、他の実施形態において、異なる量のデータ、データのタイプ、フィールド、フィールドの数およびタイプ、フィールド名、行の数およびタイプ、レコード、エントリ、またはデータの組織が使用され得る。さらに、個別のデータ構造が必要でなくてよくなるように、任意のデータはロジックと組み合わされ得る。したがって、以前の詳細な説明は、限定的な意味で捉えるべきものではない。
【0160】
本発明の様々な実施形態の説明が例示の目的で提示されてきたが、これらは、包括的であることまたは開示された実施形態に限定されることを意図するものではない。多くの修正および変形は、説明された実施形態の範囲から逸脱することなく、当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術に対する技術的改善点を最も良く説明するように、または、当業者が本明細書に開示された実施形態を理解できるように選択されている。
【0161】
本発明は具体的な実施形態の観点から説明されたが、その変更および修正は、当業者にとって明らかになると予測される。したがって、以下の特許請求の範囲は、本発明の範囲に含まれる全てのそのような変更および修正をカバーするものと解釈されることを意図している。