JP2024503921A - トラストレス鍵プロビジョニングのシステムおよび方法 - Google Patents
トラストレス鍵プロビジョニングのシステムおよび方法 Download PDFInfo
- Publication number
- JP2024503921A JP2024503921A JP2023544603A JP2023544603A JP2024503921A JP 2024503921 A JP2024503921 A JP 2024503921A JP 2023544603 A JP2023544603 A JP 2023544603A JP 2023544603 A JP2023544603 A JP 2023544603A JP 2024503921 A JP2024503921 A JP 2024503921A
- Authority
- JP
- Japan
- Prior art keywords
- key
- sequence
- stage
- stages
- security service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 334
- 238000004891 communication Methods 0.000 claims description 33
- 238000013475 authorization Methods 0.000 claims description 28
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims 5
- 238000006243 chemical reaction Methods 0.000 claims 3
- 230000008569 process Effects 0.000 description 143
- 238000004519 manufacturing process Methods 0.000 description 73
- 230000008520 organization Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000012550 audit Methods 0.000 description 15
- 239000008186 active pharmaceutical agent Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 11
- 150000003839 salts Chemical class 0.000 description 11
- 230000004044 response Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 7
- 239000000835 fiber Substances 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000002347 injection Methods 0.000 description 5
- 239000007924 injection Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 101000619610 Homo sapiens Leucine-rich repeat-containing protein 4B Proteins 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 125000002015 acyclic group Chemical group 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011049 filling Methods 0.000 description 2
- 238000011068 loading method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- KJLPSBMDOIVXSN-UHFFFAOYSA-N 4-[4-[2-[4-(3,4-dicarboxyphenoxy)phenyl]propan-2-yl]phenoxy]phthalic acid Chemical compound C=1C=C(OC=2C=C(C(C(O)=O)=CC=2)C(O)=O)C=CC=1C(C)(C)C(C=C1)=CC=C1OC1=CC=C(C(O)=O)C(C(O)=O)=C1 KJLPSBMDOIVXSN-UHFFFAOYSA-N 0.000 description 1
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000584427 Homo sapiens Homeobox protein orthopedia Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013474 audit trail Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 210000004247 hand Anatomy 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0852—Quantum cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Abstract
暗号化キー・プロビジョニングの方法で、量子コンピューティング安全方法による共有秘密データのデバイスおよびセキュリティサービスへの提供、ルートキーを提供するための提供された共有秘密データの使用、および一連の段階の基礎としてのルートキーの使用を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスおよびセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用され、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーは対称鍵である。
Description
本出願は鍵プロビジョニング・システムのトラストレス鍵プロビジョニング、特に量子セーフキーのトラストレス鍵プロビジョニングの方法、システムおよびソフトウェアに関するものである。
これらのみに限らないが、例えばオンラインショッピングやオンラインバンキングのトランスポート層セキュリティ(TLS)から超安全な政府通信まで、日々の数十億もの取引を保護するために暗号技術が使用される。これらの取引は、少なくとも2者またはそれ以上の取引当事者が秘密鍵を共有し、ある当事者がデータの暗号化をしたら、その後他の当事者が復号できる、信頼性と安全性のある手段に依存している。
量子コンピュータの出現と、ショアのアルゴリズムの発明により、古典的な非対称暗号はもはや安全とは見なされない。最もよく知られている安全な通信プロトコル(例:TLS)は、通信経路の両端に同一の対称鍵を送る際、非対称暗号に依存している(ディフィー・ヘルマン鍵共有を介する等)ため、量子コンピュータの出現によりこれらのプロトコルは不安定になると予測される。
安全な暗号化への他のアプローチとして、通信経路の両端に対称鍵を提供する方法がある。もし、非対称暗号を使わずに対称鍵を通信経路の両端に送ることができれば、望ましい量子コンピュータ耐性暗号化の基礎が提供できるかもしれない。しかし、安全な対称鍵プロビジョニングの周知の技術では、通常手作業で分配するキーマテリアルが必要となる。これには時間がかかるしコストも高く、関わる作業者の信用性を当てにしなければならない。さらに、手作業の鍵プロビジョニングのプロセスで分配する作業者が多量のキーマテリアルを所有することになるため、偶然、または作業当事者への不正アクセスにより、このキーマテリアルが紛失または不正アクセスされた場合、キーマテリアルを取り消して新たなキーを発行しなければならず、同じような遅い手作業によるプロセスが繰り返されることになる。
よって、対称鍵プロビジョニングを行うための量子コンピュータ耐性アプローチ、さらには鍵プロビジョニング・プロセスでキーマテリアルが紛失または不正アクセスされるリスクを回避するアプローチが切望されている。
以下に説明する実施形態は、上述の、周知のアプローチにある問題の一部または全部の解決を実現するだけにとどまらない。
この概要はコンセプトの選択範囲について簡潔に紹介するものであり、詳細は下記の詳細な説明で解説する。この概要は、特許出願対象物の重要または本質的な特徴を明らかにしたり、対象物の範囲を決めるために利用することを目的としていない。本発明の実施を促したり、および/または実質的に同様な技術的効果を達成するのに役立つ、異なる代わりの特徴も本書で公開する本発明の範囲に入ると考えるべきである。
第1の側面で、本開示は暗号化キー・プロビジョニングの方法を実現する。これは、量子コンピューティング安全方法による共有秘密データのデバイスおよびセキュリティサービスへの提供、ルートキーを提供するための提供された共有秘密データの使用、一連の段階の基礎としてのルートキーの使用を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスおよびセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用され、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーは対称鍵である。
第2の側面で、本公開はデバイス認証の方法を実現する。これは、量子コンピューティング安全方法による共有秘密データのデバイスおよびセキュリティサービスへの提供、ルートキーを提供するための提供された共有秘密データの使用、一連の段階の基礎としてのルートキーの使用を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスおよびセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用される。さらに、デバイスをセキュリティサービスに認証するための、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーの使用も含む。
第3の側面で、本開示は暗号化キー・プロビジョニングの方法を実現する。これは量子コンピューティング安全方法によるデバイスの秘密データから得られるデータのセキュリティサービスへの提供、ルートキーを提供するための秘密データから得られたデータの使用、一連の段階の基礎としてのルートキーの使用を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスおよびセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用され、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーは対称鍵である。
第4の側面で、本開示はデバイス認証の方法を実現する。これは量子コンピューティング安全方法によるデバイスの秘密データから得られるデータのセキュリティサービスへの提供、ルートキーを提供するための秘密データから得られたデータの使用、一連の段階の基礎としてのルートキーの使用を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスおよびセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用される。さらに、デバイスをセキュリティサービスに認証するための、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーの使用も含む。
第5の側面で、本開示は暗号化キー・プロビジョニング・システムを実現する。これは、量子コンピューティング安全方法により共有秘密データをデバイスおよびセキュリティサービスへ提供するために用意された手段、ルートキーを提供するよう提供された共有秘密データを使用するために用意された手段、および一連の段階の基礎としてルートキーを使用するために用意された手段を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、システムはデバイスとセキュリティサービスで同じ段階を並行して行うよう手配され、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用され、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーは対称鍵である。
第6の側面で、本開示はデバイス認証システムを実現する。これは、量子コンピューティング安全方法により共有秘密データをデバイスおよびセキュリティサービスへ提供するために用意された手段、ルートキーを提供するよう提供された共有秘密データを使用するために用意された手段、および一連の段階の基礎としてルートキーを使用するために用意された手段を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスとセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用される。さらに、デバイスをセキュリティサービスに認証するため、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーを使用するために用意された手段も含む。
第7の側面で、本開示は暗号化キー・プロビジョニング・システムを実現する。これは、量子コンピューティング安全方法によりデバイスの秘密データから得られるデータをセキュリティサービスへ提供するために用意された手段、ルートキーを提供するよう秘密データから得られたデータを使用するために用意された手段、および一連の段階の基礎としてルートキーを使用するために用意された手段を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスとセキュリティサービスで並行して行われ、またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用され、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーは対称鍵である
第8の側面で、本開示はデバイス認証システムを実現する。これは、量子コンピューティング安全方法によりデバイスの秘密データから得られるデータをセキュリティサービスへ提供するために用意された手段、ルートキーを提供するよう秘密データから得られたデータを使用するために用意された手段、および一連の段階の基礎としてルートキーを使用するために用意された手段を含む。ここで各段階はスタートキーを違う生成キーに変換する演算で構成され、同じ段階がデバイスとセキュリティサービスで並行して行われる。またルートキーがシーケンスの最初の段階のスタートキーとして使用され、シーケンスの各段階で作られた生成キーは、シーケンスの最後の段階を除いて、シーケンスの次の段階のスタートキーとして使用される。さらに、デバイスをセキュリティサービスに認証するための、デバイスおよびセキュリティサービスでシーケンスの最後の段階で作られた生成キーを使用するために用意された手段も含む。
第9の側面で、本開示はコンピュータに読み込み可能な媒体を実現する。これには、ここに保存されたコードまたはコンピュータ命令が含まれ、プロセッサで実行されるとプロセッサは1~4の側面のいずれかに従った方法を実行するようになる。
第10の側面で、本開示はコンピュータプログラム命令を実現する。これがプロセッサで実行されるとプロセッサは1~4の側面のいずれかに従った方法を実行するようになる。
本書で説明する方法は、有形的記録媒体においてソフトウェアが機械可読フォームで実行することができる。コンピュータ上でプログラムが起動しており、コンピュータプログラムがコンピュータ可読媒体で具体化させることができる場合に、本書で説明するいずれかの方法の全ステップを実行するよう適応させたコンピュータプログラムコード手段を含むコンピュータプログラムのフォームで実行するなどがその例である。有形的(または持続性)記録媒体の例にはディスク、サムドライブ、メモリカード等を含むが伝搬信号は含まれない。ソフトウェアではこの方法の段階がどのような適切な順序でも、または同時にでも実行できるため、パラレルプロセッサまたはシリアルプロセッサ上での実行にはソフトウェアが適切である場合もある。
このアプリケーションはファームウェアとソフトウェアが高価で別々に取引可能な商品であり得ることを認識している。データ処理能力のない、または標準的なハードウェアで起動するまたはそれをコントロールするソフトウェアが、求められる機能を実行することを目的としている。さらに、シリコンチップの設計またはユニバーサル・プログラマブル・チップの設定に使用するようなハードウェア記述言語(HDL)ソフトウェアなど、ハードウェアのコンフィギュレーションを「説明する」または定義するソフトウェアが、求められる機能を実行することも目的としている。
当業者には明らかなように、好きな機能を適宜組み合わせることができ、本発明のいずれの側面とも組み合わせ可能である。
本発明の実施形態を以下の図面を例として参照しながら説明する。その中で、
本発明の実施形態を以下の図面を例として参照しながら説明する。その中で、
本発明の実施形態をほんの一例としてのみ以下に説明する。これらの例は発明を実現するうえで出願者が現在わかっている最善の方法を表しているが、これを達成可能にする唯一の方法ではない。説明では例の機能、および例を構築し作動させるための一連のステップを明記する。ただし、同じまたは同等の機能およびシーケンスが別の例でも達成できることもある。
全体として、本公開はクラウドサービスへの認証で使用する、当事者およびクラウドサービス用の認証キーにシード値を設定する方法を実現する。一部の例では当事者がデバイスで、クラウドサービスがセキュリティサービスであるが、これはそれほど重要ではない。この方法は対称鍵を設定することによって、当事者およびクラウドサービスに量子コンピュータ耐性セキュリティを提供する。当事者とクラウドサービスとの間の安全なコミュニケーションまたはその他のやり取りに、この共有対称鍵を信頼の起点として使用することができる。
本公開は信頼の起点として作用する、またその全部または一部を自律的にできる、この対称鍵がプロセスを通して計算装置にキーフィルする方法を実現する。そこではサポートするクラウドサービス、全ての人間の当事者、および全ての盗聴者は対称鍵へのアクセスを得ることはできない。
本公開は信頼の起点として作用する、またその全部または一部を自律的にできる、この対称鍵がプロセスを通して計算装置にキーフィルする方法を実現する。そこではサポートするクラウドサービス、全ての人間の当事者、および全ての盗聴者は対称鍵へのアクセスを得ることはできない。
図1は本発明の第1実施形態によるサテライトベースの量子安全トラストレス鍵プロビジョニング・システム100の一例の概要を説明する概略図である。サテライトトラストレス鍵プロビジョニング・システム100は、少なくとも地球の軌道にある1機の量子鍵プロビジョニング(QKD)サテライト1および複数のオプティカル・グラウンド・レシーバ(OGR)2から成る。それぞれのOGR2はOKDサテライト1から量子安全暗号化キーを受け取ることができ、それを少なくとも他の1つのOGR2と共有する。サテライトから暗号化キーを配信する方法は知られているため、ここで詳細に述べる必要はない。
図1に示す通り、最初のOGR2aは製造施設5と関連があり、2番目のOGR2bはクラウドサービス6と関連がある。OGR2aと2bはそれぞれ製造施設5およびクラウドサービス6に配置することができる。または他の場所に配置して製造施設5またはクラウドサービス6それぞれとのコミュニケーションができるよう手配することもできる。クラウドサービスは固有のIDを持つことができる。このIDはクラウドサービスをホストしているデータセンターまたはサーバー固有のものにできる。これによりクラウドサービスをホストするデータセンターまたはサーバーを特定することができる。図1はOGR2aと2bの両方とコミュニケーションするサテライト1を示す。当然のことながら、これはサテライトがOGR2aと2bの両方と同時にコミュニケーションできることが絶対必要であることを示す意図はない。
それぞれのOGR2は、少なくとも1機のOKDサテライト1と光通信をするための光通信システム3を少なくとも1機と、光通信システム3から配信された暗号化キーマテリアルを安全に格納および管理するためのハードウェア・セキュリティ・モジュール(HSM)4で構成される。HSM4は鍵を不正に抜き出そうという試みをいずれも確実にブロックまたは検出できるようにする。HSMは、カプセル化されたメモリモジュールを包囲するワイヤケージ、過電圧、不足電圧、温度などの検出等、改ざん検出センサを提供する。このリストは包括的であることを目的としていない。一部の例ではHSM4がFIPS140認証を受けている場合がある。システム100の運転では、対称QKD鍵が製造施設5とクラウドサービス6の両方に配信され、HSM4aおよび4bにそれぞれ安全に格納される。
当業者には当然であるように、サテライトベースの量子鍵プロビジョニング・システム100は、実際には例えばサテライト・コントロールおよび/またはセキュリティオペレーションセンター等、他にも多くの構成要素があるが、簡素化と明確化のためこれらは省略する。
簡素化と明確化のため、1機のサテライト1と2機のOGR2のみを図1に示す。当然のことながら、実際には量子鍵プロビジョニング・システム100を構成する一連のサテライト1およびOGR2の機数はどのような数にもなり得る。
クラウドサービス6はセキュリティサービス、つまり光ファイバーリンクを使用する等、安全なコミュニケーションを提供するシステムで、安全なデータ格納を提供することができる。さらに、クラウドサービス6はデバイスおよびユーザーの認証ができるが、これについては以下に詳細に説明する。このアプリケーションでは「安全な」および「安全に」という用語は、非対称アルゴリズムを使わずに確立されたリンクを超えたコミュニケーションに言及する場合にのみ使用する。上述の通り、非対称アルゴリズムは通常、量子コンピューティングに対するセキュリティを提供することはできないと考えられている。クラウドサービス6は量子安全鍵の生成、格納、配信、および検証のレジストリ、および量子安全鍵を使用する、クラウドサービス6に関連するデバイスおよびユーザーの認証と検証のレジストリを提供する。クラウドサービス6内部、およびクラウドサービス6とのコミュニケーションは全て量子安全保護がされている。クラウドサービス6は、例えばArqit Quantum CloudTMである可能性がある。
クラウドサービス6はパブリッククラウドまたはプライベートデータセンターでホストされる場合がある。クラウドサービス6は、クラウドサービス6にデータストレージを提供するデータベース7に支援またはサポートされている。データベース7は例えば従来のデータベース、NoSQLデータベース、分散型データベース、または分散型台帳技術(DLT)を支援するデータベースなどの場合がある。データベース7は、例えば分散型台帳技術(DLT)、分散型データベース技術(DDT)、ハッシュチェーンベースのロギング/監査、その他のデータベース技術(DLT以外)およびハッシュチェーンベースのロギング/監査、および/またはメッセージベースの技術およびハッシュチェーンベースのロギング/監査等を使って動作することができる。このリストは一例にすぎず、包括的とする意図はない。これ以外のデータベース技術およびアーキテクチャが使用される場合もある。
ハッシュチェーンとは、あるデータに対して暗号学的ハッシュ関数を繰り返し適用したものである。また、否認防止のために、データの追加部分に対してハッシュ関数を次々に適用することで、データの存在を時系列に沿って記録するのにも使われる。ハッシュチェーンの使用またはロギングおよび/または監査についてはよく知られているため、ここで詳細に述べる必要はない。
製造施設5は、顧客がコントロールする対象デバイス8への暗号化キーの配信を望む顧客がコントロールし、対象デバイス8からクラウドサービス6へのアクセスを可能にすることができる。一部の例では、製造施設5はクラウドサービス6のオペレータがコントロールする場合もある。
図2は、本発明の第2実施形態によるテレストリアル量子安全トラストレス鍵プロビジョニング・システム200の一例の概要を説明する概略図である。テレストリアル・トラストレス鍵プロビジョニング・システム200は光ファイバーリンク10でつながっている複数のテレストリアル・トランシーバ9で構成される。テレストリアル・トランシーバ9は相互間で、光ファイバーリンク10を通じて量子暗号化キーの送受信をすることができる。光ファイバーリンクを通じた暗号化キーの送受信については知られているため、ここで詳細に述べる必要はない。
テレストリアル量子安全トラストレス鍵プロビジョニング・システム200は、テレストリアル・トランシーバ9がOGR2に代わっていることを除けば、第1実施形態によるサテライトベースの量子安全トラストレス鍵プロビジョニング・システム100に類似している。
図2に示す通り、最初のテレストリアル・トランシーバ9aは製造施設5に関連しており、2番目のテレストリアル・トランシーバ9bはクラウドサービス6に関連している。テレストリアル・トランシーバ9aおよび9bはそれぞれ製造施設5とクラウドサービス6に配置することができる。または他の場所に配置して製造施設5またはクラウドサービス6それぞれとのコミュニケーションができるよう手配することもできる。それぞれのテレストリアル・トランシーバ9は、光ファイバーリンク10を通して暗号化キーを伝達できるよう手配された、少なくとも1機の光学量子トランシーバ11と、光学量子トランシーバ11を通して配信される暗号化キーマテリアルを安全に格納および管理するためのハードウェア・セキュリティ・モジュール(HSM)4で構成される。クラウドシステム6は第1実施形態のクラウドシステム6に対応する。システム200の動作で、対称QKDキーは製造施設5とクラウドサービス6の両方に配信され、それぞれのHSM4aおよび4bに安全に格納される。
当業者には当然であるように、実際にはテレストリアル・トラストレス鍵プロビジョニング・システム200にはセキュリティオペレーションセンター等、他にも多くの構成要素があるが、簡素化と明確化のためこれらは省略する。
簡素化と明確化のため、図2には2機のテレストリアル・トランシーバ9のみが示されている。当然のことながら、実際にはテレストリアル・トラストレス鍵プロビジョニング・システム200を構成するネットワークが持つテレストリアル・トランシーバ9の機数はどのような数にもなり得る
トラストレス鍵プロビジョニング・システム100および200は両方とも、1個またはそれ以上の暗号化キーを対象デバイス8にロードすることにより、1機またはそれ以上の対象デバイス8をキーフィルするよう動作する。明確化と簡素化のため、ここでは1個の暗号化キーの1機の対象デバイスへのロードを説明する。ただし当然のことながら、システム100および200はロードするいずれの数量の暗号化キーにも、いずれの数量の対象デバイス8にも対応できる。
図3は、第1および第2実施形態による量子鍵プロビジョニング(QKD)システム100および200が実行する、鍵プロビジョニングプロセス300全体のワークフロー概要を示す。当然のことながら、第1および第2実施形態による量子鍵プロビジョニング・システム100および200の違いは、製造施設5とクラウドサービス6に関連するHSM4aおよび4bで量子安全暗号化キーが利用できるようになるメカニズムだけである。
鍵プロビジョニングプロセス300はクラウドサービス6と対象デバイス8の両方にQKDキーを配信する。鍵プロビジョニングプロセス300はその後これら2つの鍵(つまり、同じ対称キーの2つのコピー)を、クラウドサービス6と対象デバイス8の両方の環境で、それぞれラチェット動作から成る同じ歩調で徐々に前へ進め、クラウドサービス6と対象デバイス8の同じキーに到達する。各ステップで、スタートキーはラチェット動作により異なる、新しいまたは生成されたキーに変換される。ここで、これらの最終的な同一キーは信頼の起点として機能する対称キーとして使用できるようになる。これは、クラウドサービス6と対象デバイス8の間の量子計算安全コミュニケーションに、またはその他あらゆる望みのタスクを実行するのに使用できる。その結果、鍵プロビジョニングプロセス300は並行して実行される2つのブランチまたはアームを持つようになる。これは対象デバイス8で実行される図3の上部ブランチ、第1ブランチ300aと、クラウドサービス6で実行される図3の下部ブランチ、第2ブランチ300bで構成される。この例では、QKDキーはクラウドサービス6と対象デバイス8の両方に配信される。好都合なことに、このQKDキーは対称暗号化キーであり得る。他の例では一般的にQKDキーは共有暗号化キーとして使用したり、または共有暗号化キーの基礎として使用できる何らかの形態の共有秘密データである。
鍵プロビジョニングプロセス300のそれぞれのブランチ300a、300bでは、対象デバイス8がクラウドサービス6への認証をする認証キーとして鍵を使用してから、チェーンの次のキーを生成することができる。最終キーは、例えばセッションキーを生成させる、またはその他の目的で、引き続き認証に使用することができる。
ワークフローは方針により定義されるため、デバイスや一連のデバイスに異なる方針を割り当てることにより、状況によって異なるワークフローを定義することができる。方針は特定のケースにおけるシステム100または200のランタイムオペレーションを定義する、関連する方針オプションの一群と見なすことができる。製造施設5には、クラウドサービス6の対象デバイス8に割り当てられた既定の方針がある。この既定方針は、製造施設5の全ての対象デバイス8に適用されるデフォルト方針とすることもできれば、または対象デバイス8のある分類または種類に割り当てられる特定の方針とすることもできる。または要望によって例えば製造施設5を運用する顧客、またはデバイス8を運用する顧客団体により特定の対象デバイス8に割り当てる特定の方針とすることもできる。鍵プロビジョニングプロセス300を通したキーの動作またはラチェッティングは多くの制御装置(図1~3にはない)の承認を必要とする場合がある。制御装置は方針に規定する通り、対象デバイス8へのキーフィルの承認に使用されることがある。一部の例では、制御装置は以前にキーフィルを行って、それぞれの制御装置のクラウドサービス6との安全な通信を可能にしていた場合もある。また他の例では、制御装置がブラウザまたはその他のアプリケーションを起動して、クラウドサービス6との安全な通信を可能にするのに適したデバイスであるかもしれない。制御装置は、対象デバイス8がワークフローを移動する間、コミッショニング担当者が対象デバイス8の次のラチェットを承認するために使用する。前方へのラチェッティングと対象デバイス8へのキーフィルを承認するのに必要な、制御装置とコミッショニング担当者の数およびアイデンティティは、製造施設5、または対象デバイス8の顧客が決める方針により定義される。通常、コミッショニング担当者は製造施設5を運用する顧客が指名して選定するが、これは必須ではない。コミッショニング担当者は例えば、暗号通貨管理人、キー取扱者、現場セキュリティ担当者等がなり得るが、通常は、周知の鍵プロビジョニングプロセスの実行責任者に相当する。コミッショニング担当者は正式に訓練を受け、吟味される。コミッショニング担当者の選定手順は具体的な実施顧客の要件に基づいて決められるもので、ここで詳細に述べる必要はない。
一部の例では、制御装置はクラウドサービス6と安全に通信できるように、鍵プロビジョニングプロセス300により安全なキーでキーフィルされている場合があり、制御装置が対象デバイス8であったかもしれない。
図3に、クラウドサービス6と対象デバイス8への共通QKDキーの最初の提供を示す。これは、第1実施形態のシステム100により、サテライト1とOGR2aおよび2bを使って実行されているところである。もし代わりに第2実施形態によるシステム200が使用されていたら、ここに描写されているサテライト1とOGR2aおよび2bは、光ファイバーリンク10とテレストリアル・トランシーバ9aおよび9bに取って代わられていただろう。
第1および第2実施形態による鍵プロビジョニングプロセス300は、以下の通り多くの目的がある。今後のキー交渉任務のため(例:他のデバイスとのセッションキーについて交渉)、方針を利用して、対象デバイス8のクラウドサービス6への認証に使うキーチェーンを定義する一連のワークフロー・ステップを明らかにする。対象デバイス8をワークフロー・ステップ方針と関連付け、そこでそれぞれのワークフロー・ステップが、ステップにユーザーの認証および/またはコミッショニング担当者の承認を必要とするかを定義する。製造時にブートストラップキーを対象デバイス8で使えるよう設定し、それにより同じQKD配信キーに由来する2か所に送られたブートストラップキーを製造施設5とクラウドサービスで別々に計算し、それによりキーが製造施設5とクラウドサービス6の間の古典的な通信チャンネルを送信中に傍受できないようにする。対象デバイス8がブートストラップキーを使ってクラウドサービス6につなげられるようにし、既定の方針に従ったラチェットメカニズムを使い新しい認証キーに移行できるようにし、その後、対象デバイス8が最新のラチェットキーを使ってクラウドサービス6につなげられるようにし、既定の方針に従ったラチェットメカニズムを使い新しい認証キーに移行できるようにする。
第1および第2実施形態による図3の鍵プロビジョニングプロセス300の概要は以下の通りとする。
鍵プロビジョニングプロセス300の全ての工程および/またはシステム100または200が実行する全ての工程は、検証可能な量子的安全なハッシュチェーンを使って安全にログおよび/または監査される。ログ/監査の痕跡を変更不可能にし、攻撃者などからの変更が検出されないということがないようにこれが必要となる。システム100または200がDLTに基づいている例では、DLTが不正加工防止のロギング/監査機能を提供できる。また、システム100または200がDLTに基づいていない例では、ハッシュチェーンをベースとしたロギング/監査を使って、ロギング/監査を不正加工できないようにすることができる。
明確化のため、また不必要な繰り返しを避けるため、以下に提示する発明の実施形態の運用についての詳細説明に、ロギングについてははっきりと述べられていない。ただし当然のことながら、方法300のそれぞれのステップはログされる。これは、例えばクラウドサービス6が提供する集中型ロギングサービスなどにより実行される場合がある。
明確化のため、また不必要な繰り返しを避けるため、以下に提示する発明の実施形態の運用についての詳細説明に、監査についてははっきりと述べられていない。ただし当然のことながら、方法300のそれぞれのワークフロースタート、エラー、および成功は監査される。これは、例えばクラウドサービス6が提供する集中型監査サービスなどにより実行される場合がある
鍵プロビジョニングプロセス300を実行する前に、システム100または200のユーザーはクラウドサービス6にサインアップまたは登録する。クラウドサービス6はユーザーのEメールアドレスを使ったユーザー・サインアップ・サービスを提供する。ユーザーのEメールアドレスを検証してからユーザーのサインアップが許可される。説明している実施形態では、新しいユーザーをサインアップする際、2要素認証を利用している。Eメールアドレスの検証と2要素認証はよく知られた手順であるため、ここで詳しく説明する必要はない。新しいユーザーのサインアップの際、Eメールアドレスの検証と2要素認証の使用は必須ではなく、他の異なるサインアップ手順の例が使われる場合もある。
ユーザーがクラウドサービス6にサインアップする際、クラウドサービス6は各ユーザーにランダムな対称ユーザーキーを割り当てるが、これはそれぞれのユーザーパスワードのハッシュを使って暗号化されているクラウドサービス6のデータベース7に格納される。当然のことながらこれは必須ではなく、他の手段を使ってユーザーキーおよび関連パスワードを格納および保護する場合もある。
好都合なことに、所定のいずれかの団体から最初にサインアップしたユーザーに管理者の役割が割り当てられる。それに続く同じ団体からのユーザーには、団体の管理者から役割が割り当てられる。ただしこれは必須ではなく、これの替わりの例では役割について他の割り当て方法が利用される場合もある。
クラウドサービス6にサインアップしたユーザーは、管理者またはそれぞれの団体の管理者から複数の色々な役割を割り当てられる場合がある。それに応じて、クラウドサービス6は、管理者がクラウドサービス6の他のユーザーの役割を変更できるプロセスを提供する。このプロセスの詳細、および特定の管理者がどのような変更ができるのかは、それぞれの団体の要件に基づき必要に応じて決定する。
ユーザーは管理者の役割を割り当てられる場合がある。管理者はクラウドサービス6を管理し、鍵プロビジョニングプロセス300の間に適用する方針を定義し、他のユーザーに役割を割り当て、その他のタスクを実行する。ユーザーは監査の役割を割り当てられる場合がある。さらに、上述の監査の一環として管理者または特定の監査役に、その責任下にあるシステムおよびプロセスの一部に関する監査通知が送られる場合がある。管理者または監査役は、例えば、特定の監査または監査の類を受けた時Eメールを受け取るなど、自分の監査通知を適切に設定することができる。監査役は、管理者の役割とは異なる保証活動として、システム内の全ての監査関連データのアクセスを提供したりロックダウンを行ったりすることもできる。これは、内部管理レベルシステム役割による不正なシステムレベル活動の破壊、削除または隠蔽の試みを防ぐには望ましいかもしれない。
ユーザーはコミッショニング担当者の役割を割り当てられる場合がある。コミッショニング担当者は、ワークフロー・ステップ方針によっては、制御装置を使った自動キーフィル・プロセスの一環として、対象デバイスのチェーン内の次のキーへ、キーがラチェットするのを承認することが求められる場合がある。これについては以下に詳細を記述する。
ユーザーはユーザーの役割を割り当てられる場合がある。ユーザーは特定の対象デバイスを使う権限を与えられたユーザーで、ワークフロー・ステップ方針によっては、対象デバイスが次のキーへラチェットできるよう認証情報を提供するよう求められる場合がある。これについては以下に詳細を記述する。
上記に特定した役割以外にも、例えば、ユーザーにAPIを介したOTPの作成、使用を許可するかどうかなど、他の役割または範囲が各ユーザーに適用される場合がある。
上記のとおり、クラウドシステム6にサインアップしたユーザーに提供される機能性の他に、クラウドシステム6はユーザーが、ウェブポータルまたはアプリを使って管理業務を実行するためのクラウドサービスキーを使えるよう設定していないデバイスからクラウドサービスに認証できるプロセスを提供する場合がある。
図3を参照すると、システム100または200は、責任ある管理者が、鍵プロビジョニングプロセス300のブランチ300a、300bを形成するキー・ラチェット・パイプラインを定義する一連のワークフロー・ステップを特定できる非環式状態機械を提供している。非環式状態機械は有限状態機械で、ここではこれまでにアクセスした状態に再アクセスすることはできない、つまり、開始状態から終了状態まで直線を形成し、循環はしない。
対象デバイス8で、図3の鍵プロビジョニングプロセス300が実行できるようになる前に、責任ある管理者は1つまたはそれ以上のワークフロー・ステップを定義するワークフロー・ステップ方針を明示して、キー配信プロセス300のワークフローにおける一連のステップを定義しなければならない。そして、この定義されたワークフロー・ステップ方針はクラウドサービス6のデータベース7に格納される。さらに、個々のワークフロー・ステップも定義しなければならず、このように定義されたワークフロー・ステップも、クラウドシステム6のデータベース7に格納される。
それぞれに定義されたワークフロー方針により、対象デバイス8が鍵プロビジョニングプロセス300の各ワークフロー状態から次のワークフロー状態へ移行するために満たさなければならない要件が定義される。それぞれに定義されたワークフロー・ステップにより、対象デバイス8が特定のワークフロー状態から次のワークフロー状態へ移行するために満たさなければならない要件が定義される。ワークフロー・ステップが、次のワークフロー状態へ移行するために対象デバイスでのユーザー認証が必要かどうか、または、次のワークフロー状態へ移行するために別の制御装置であるいはウェブポータルを介してなどによりコミッショニング担当者の承認が必要かどうか、いくつ必要か、そして、そのワークフロー・ステップにおけるラチェットキーでクラウドサービスへ認証する際に許可されるAPI範囲などを定義する場合がある。
簡素化および明確化のため、この説明は1つのワークフロー方針による1つの対象デバイス8のキーフィリングについてのものとする。当然のことながら、システム100または200を使用する団体によって設定するワークフロー方針は様々であり、それぞれの団体が異なる対象デバイス8または対象デバイス8群について複数の異なるワークフロー方針を設定する場合もある。
図3に示す通り、それぞれの対象デバイス8について、鍵プロビジョニングプロセス300はブートストラップキーを対象デバイス8に入れることから始まり(302)対象デバイス8をブートストラップ状態にする(304)。製造施設5は、必要に応じてOGR3aまたはテレストリアル・トランシーバ9aのHSM4aに格納されているQKDキーを選択し、その選択したキーから新しいブートストラップキーを派生させて、その派生させたブートストラップキーを対象デバイス8へ入れる。するとブートストラップキーは、例えばデバイスストレージまたはチップ内に格納する、または他の何らかの方法で対象デバイス8へ格納される。このブートストラップキーの投入は対象デバイス8の初期製造で実行されることもあれば、その後いずれかのタイミングで実行されることもある。上記で述べた通り、QKDキーは共有暗号化キーとして使用したり、または共有暗号化キーの基礎として使用できる何らかの形態の共有秘密データである。好都合なことに、QKDキーは対称暗号化キーであり得る。
その後、または同時に製造施設5は、ブートストラップ・プロビジョニング・ターミナルまたはクラウドサービス6との安全な通信を提供するサービスを使って、306ブートストラップキーをクラウドサービス6へ登録する。プロビジョニング306を実行するために、製造施設5はクラウドサービス6に、例えば、デバイスIDおよび/または製造社、およびQKDキーからブートストラップキーを派生させるのに使ったQKDキーのIDなどのデータ等、対象デバイス8に関するメタデータを知らせる。しかし、製造施設5はブートストラップキーまたはQKDキーをクラウドサービス6へ送らない。よって、これらのキーは他の当事者から傍受やアクセスをされることはない。
クラウドサービス6は、QKDアイデンティティ、メタデータ、および製造施設5から提供されたデータをデータベース7に格納する。製造施設5がブートストラップキーを派生させるためにHSM4aから選択したQKDキーは対称キーで、これをクラウドサービス6はHSM4bからも入手できる。よって、クラウドサービス6は要求に応じて、必要な時に、格納された提供済みのQKDIDおよびデータ、そして格納されたQKDキーを使って同じブートストラップキーを計算できる。
プロビジョニング306の一環として、クラウドサービス6は対象デバイス8に関するデバイス記録をデータベース7に生成する。このデバイス記録は、関連する管理者および/または製造施設5が選んだ対象デバイス8に関連するワークフロー方針のコピーを保管、またはそこへリンクする。さらに、クラウドサービス6は対象デバイス8に関するコミッショニングの署名欄およびコミッショニング当事者欄をゼロに初期化し、その対象デバイス8でコミッショニング担当者の承認が必要なそれぞれのワークフロー・ステップで利用できるよう、ランダムなコミッショニング・ソルトを生成して格納する。コミッショニングの署名欄はデバイス記録の対象デバイス8に関する欄で、コミッショニング担当者が署名したという証拠となる署名済みのランダムな数字を並べたものである。
クラウドサービス6は対象デバイス8のデータベース7にあるデバイス記録を、ワークフロー状態ブートストラップ308で初期化する。
その結果、対象デバイス8のワークフロー状態は既知の状態ブートストラップ304で開始し、クラウドサービス6にある対象デバイス8のデバイス記録のワークフロー状態はそれに対応する既知の状態ブートストラップ308となる。次のワークフロー状態の要件がその対象デバイス8に割り当てられたワークフロー・ステップ方針に定義する通り満たされていれば、対象デバイス8は次のワークフロー状態に移行することができる。これについては以下に詳細を記する。
従って、ブートストラップ鍵は、製造時またはその後にデバイスに挿入されるQKD配送鍵から形成される鍵であり、またクラウドサービスで計算することもできる。
ブートストラップ鍵は、クラウドサービスAPIの限られた集合、具体的にはラチェットパイプラインの進行に関係するものにアクセスを許可する。
ブートストラップ鍵は、クラウドサービスAPIの限られた集合、具体的にはラチェットパイプラインの進行に関係するものにアクセスを許可する。
システム100または200は目的のデバイス8がブートストラップ鍵またはブートストラップ鍵からラチェットされた鍵を使ってクラウドサービスへ認証を行う手段を与える。各ケースにおいて、クラウドサービス6は最初のHSM4bに保存されたQKD鍵から、ブートストラップ鍵の生成を行うための認証に必要なキーチェーンを構築する。ブートストラップに基づいて作られる鍵はクラウドサービス6によってオンデマンドで、データベース7に保持される保存ラチェット値を使って計算できる。ターゲットデバイス8はクラウドサービス6に対して、ブートストラップ鍵またはそれにラチェットされた鍵を使って認証されたとき、クラウドサービス6は、JSONWebトークン(JWT)などのトークンを返す。それらのスコープはワークフローのステップで、ターゲットデバイス8に対して定義される。クラウドサービス6によるターゲットデバイス8の認証にはチャレンジ-レスポンスによって、その時の鍵から(ブートストラップ鍵またはブートストラップ鍵にラチェットされた鍵)セッション鍵及び、ターゲットデバイス8とクラウドサービス6の間で交換されてその後破棄される、二つのチャレンジコードを生成する。
JWTは任意署名および/または任意暗号化付きのデータを作成するインターネットの標準的方法で、そのペイロードは少なくともクレームまたは範囲の一部の数字をアサートするJSONを保持する。
クラウドサービス6は鍵を使って対象デバイス8のクライアント状態、K_CS暗号化する。これはRESTful APIsを許可し、それによってクラウドサービス6サーバーはセッションとセッションの間で対象デバイス8のクライアント状態を格納することはできない。クライアント状態はむしろクライアントに戻され、次のRESTfulコールで再送される。これを使って例えば、セッションキーを対象デバイス8クライアントに1回サービス分戻し、次のコールでロードバランシングなどによる違うサービスのために供給でき、クラウドサービス6がコールとコールの間にセッションキーを格納したり、セッションキーを多くのサービスで配信する必要がなくなる。
ワークフロー・ステップで対象デバイス8が移行するためにコミッショニング担当者の承認が必要な場合、必要とされているコミッショニング担当者全員が制御装置の使用についての承認のリクエストを許可しなければならない。通常は安全なモバイルアプリケーションまたはウェブアプリケーションを制御装置で起動してこれを行う。一部の例では、コミッショニング担当者はその代わりに、Eメールリンクを使って、またはリンクをアクティベートするQRコードをスキャンして、またはモバイルアプリケーションまたはウェブアプリケーションを信頼できないデバイスで起動させて、承認のリクエストを許可することができる。コミッショニング担当者が承認のリクエストを許可する際、コミッショニング担当者のユーザーキーを使ってそれまでにクラウドサービス6により生成および格納されたコミッショニング・ソルトを暗号化したコミッショニング担当者の制御装置の中の承認結果と、データベース7の中に格納された対象デバイスのデバイス記録のコミッショニング署名フィールドにある署名のリストに追加された結果、およびデータベース7に格納された対象デバイスのデバイス記録のコミッショニング当事者フィールドへ追加されたコミッショニング担当者のユーザー名。
必要に応じてブートストラップキーまたはブートストラップキーからラチェットしたキーを使って対象デバイス8をクラウドサービス6へ認証し、クラウドサービス6とセッションキーについて交渉する対象デバイス8、そしてクラウドサービス6からのJWTなどの認証トークンを受け取ったら、対象デバイス8のユーザーはクラウドサービス6と対象デバイス8のプロビジョニング・プロセスを始め、ブートストラップキーまたはブートストラップキーからラチェットしたキーのいずれかである最新のキーのラチェットをトリガすることができる。
対象デバイス8をクラウドサービス6へ登録するために、対象デバイス8はプロビジョニング機能をコールし、認証トークンおよび(任意で)ワークフロー・ステップで求められればユーザー認証を渡す。オプションとして、クラウドサービス6はユーザーにパスワードの使用およびオプションで2要素認証(2FA)の使用を認証する場合もある。他の認証方法が追加で、または代替として使用されることもある。アイデンティティサービスからのユーザーJWTなどの認証コードがその例である。トークンの受け取りに対し、また、オプションでのユーザー認証が成功したら、クラウドサービス6はランダムなデータを生成し、これを使ってラチェット値を作成する。ラチェット値は最新のラチェットキーを次のラチェットキーにラチェットするために使用し、対象デバイス8に関連するラチェット値の配列の中のデータベース7にこの値を格納する。オプションとして、対象デバイス8の現在のワークフロー・ステップがコミッショニング担当者の承認を必要としており、必要とされる承認がワークフロー・ステップに関連するコミッショニング署名フィールドに格納されている場合、コミッショニング署名のリストはワークフロー・ステップのラチェット値に統合される。このラチェット値はラチェット値チェーンの最新のものとして使われ、今後、要求に応じたオリジナルQKDキーからの新しい認証キーを計算するのに使用することができる。
ここでクラウドサービス6はラチェット値を対象デバイス8へ返し、対象デバイス8もそのチェーンの中の最新のキーから新しいラチェットキーを作成できるようになり、新しい認証キーを形成できる。その結果、最初の登録で新しいラチェットキーがブートストラップキーから、またはその後の登録では前回の登録で作成されたキーから作成される。
図3に示す通り、対象デバイス8がブートストラップ状態304の時、鍵プロビジョニングプロセス300は対象デバイス8により継続され、上記の認証とプロビジョニングプロセスを使ってクラウドサービス6を認証し、プロビジョニングを行う。一部の例では、対象デバイス8のクラウドサービス6との認証およびプロビジョニングはユーザーの行動によりトリガされる場合もある。その他の例では、対象デバイス8のクラウドサービス6との認証およびプロビジョニングは、例えば、方針によりユーザー認証が必要でない場合、対象デバイス8の最初のブートによるなど、対象デバイス8が自ら自動的にトリガする。ターゲット・デバイス8の認証およびプロビジョニング・プロセスが成功し、任意のユーザ認証が成功し、ターゲット・デバイス8に適用されるワークフロー・ステップ・ポリシーの次のワークフロー・ステップによって必要であると識別された委託担当者の承認が受信された場合、クラウドサービス6は、上述のようにラチェット値を生成し、ラチェット値を使用して、ブートストラップ鍵からラチェット認証鍵を作成し、このラチェット認証鍵は、上述のように選択されたQKD鍵から作成される。ターゲット・デバイスは、データベース7のデバイスレコード内のターゲット・デバイス8のステータスを、ブートストラップ状態308から次のワークフロー状態(図3の例では、この例では「検疫」と名付けられた状態312)にラチェット310転送する。
クラウドサービス6は、次に、または同時に、ラチェット値をターゲット・デバイス8に送信し、ターゲット・デバイス8は、ブートストラップ鍵から同じラチェット認証鍵を作成し、このラチェット認証鍵は、上述したように、選択されたQKD鍵から順番に以前に作成されたものであり、ターゲット・デバイス8は、ブートストラップ状態304から次のワークフロー状態、図3の例では「検疫」と名付けられた状態316に、その状態314をラチェットする。
図3の例では、「検疫」という名前の状態316にあり、「検疫」という名前の対応する状態310にあるデータベース7のデバイスレコード内のターゲット・デバイス8のステータスを有するターゲット・デバイス8は、ターゲット・デバイス8がクラウドサービス6との認証および登録に成功することを条件として、クラウドサービス6によって制限されたシステムおよびネットワーク接続性を提供される。この制限された接続性は、状態316にあるターゲットデバイス8が、クラウドサービス6に危害を加えたり、クラウドサービス6のセキュリティを侵害したりするために使用できないことを保証するために選択される。いくつかの例では、状態316にあるターゲット・デバイス8に提供されクラウドサービス性は、閉鎖された検疫ネットワークへの接続のみを許可するようにすることができる。
その後、ターゲット・デバイス8が状態316にあるとき、鍵プロビジョニング・プロセス300は、ターゲット・デバイス8が上述の認証および登録プロセスを使用してクラウドサービス6と再び認証およびプロビジョニングすることによって継続する。認証およびプロビジョニング・プロセスが成功し、任意のユーザ認証が成功し、ターゲット・デバイス8に適用されるワークフロー・ステップ・ポリシーの次のワークフロー・ステップによって必要であると識別された委託担当者の承認が受信された場合、クラウドサービス6は、上述のようにさらなるラチェット値を生成し、さらなるラチェット値を使用して、ラチェット鍵から新しいラチェット認証鍵を作成する。次に、クラウドサービス6は、データベース7内のデバイスレコード内のターゲット・デバイス8のステータスを、状態312から次のワークフロー状態(図3の例では、「productクラウドサービスの状態320)にラチェット318転送する。
クラウドサービス6は、その後、または同時に、さらなるラチェット値をターゲット・デバイス8に送信し、ターゲット・デバイス8は、上述したように、ブートストラップ鍵および選択されたQKD鍵から順番に以前に作成されたラチェット鍵から、同じ新しいラチェット認証鍵を作成し、ターゲット・デバイス8は、状態316から次のワークフロー状態、図3の例では「production」と名付けられた状態324に、その状態322をラチェットする。
図3の例では、状態324にあり、対応する状態320にあるデータベース7のデバイスレコードにターゲット・デバイス8のステータスを有するターゲット・デバイス8は、ターゲット・デバイス8がクラウドサービス6との認証およびプロビジョニングに成功することを条件として、クラウドサービス6によって完全なシステムおよびネットワーク接続性を提供される。提供される接続性は、ターゲット・デバイス8を制御する組織の接続性ポリシーによって設定される場合がある。最終的な「本番」キーは、「検疫」状態よりも広範囲のクラウドサービス機能へのアクセスを許可し、提供されるアクセスは、関連するワークフローポリシーのスコープによって定義される。
図3の例は、ターゲット・デバイス8が、初期ブートストラップ状態304から、中間「検疫」状態316、完全なシステムおよびネットワーク接続性を提供する最終「本番」状態324へと段階的に移行するキープロビジョニング・プロセス300を示している。他の例では、初期ブートストラップ状態と最終状態との間に、特定の組織のポリシーによって要求される任意の数の中間状態が存在する可能性があり、各状態はワークフロー・ステップポリシーで定義され、命名される。ターゲット・デバイス8がある状態から次の状態へラチェットフォワードできるようにするための要件は、必要に応じて設定することができ、特に、ユーザ認証が必要かどうか、コミッショニングオフィサーの承認が必要かどうか、およびその数は、必要に応じて設定することができる。制限された接続性を提供する中間の「隔離」状態を提供することは必須ではない。初期ブートストラップ状態、および最終状態に加えて、いくつかの例では、以下の1つ以上の名前が付けられた中間状態を構成することができる:「Initial Configured Factory」、「MNO Pending」、「MNO Provisioned」、「Customer Pending」、「Customer Provisioned」、および/または「Quarantine」。
状況によっては、ターゲット装置8に関連するすべてのキーを失効させ、ターゲット装置8をブートストラップキーで元の製造設備状態に戻すことが必要な場合がある。これは、すべての委託当事者と委託署名フィールドをゼロにし、すべてのラチェットフィールドとラチェットアレイをゼロにし、現在のワークフロー・ステップをスタートに戻すことによって行うことができる。これにより、データベース7内の対象デバイス8のレコードは、ブートストラップ状態308にリセットされる。したがって、例えば状態324に関連するキーラチェットを使用した次の認証は失敗し、工場出荷時リセットが発生したことを通知するエラーコードがターゲット機器8に返され、ターゲット機器8がブートストラップ状態304にリセットされる。その後、ターゲット機器8は、適切な時点で、登録プロセスを再び開始することができる。
代替例では、ブートストラップ鍵が、製造業者とクラウドサービスの両方の場所でQKD配信鍵から導出される代わりに、ブートストラップ鍵は、古典的に安全な、ポスト量子暗号的に安全な、または物理的なメカニズムによってクラウドサービス6に配信されてもよい。
開示された実施形態が上記の目標を達成することができることは、上記および以下の詳細な例から理解されるであろう。
図4は、ターゲット・デバイス8のデバイスレコードとしてクラウドサービス6のデータベース7に保持され得るスキーマ400の例示である。スキーマ400は、対象デバイス8に関するデバイスデータ402から構成される。デバイスデータ402は、製造者ID、デバイスID、QKD鍵ID、ブートストラップnonce、ワークフロー・ステップポリシー識別子、ワークフローラチェット値、ワークフローコミッショニング識別子、およびワークフローステップインデックスから構成される。製造者IDは、製造施設5を識別することもできるし、ターゲット機器8を担当する組織を識別することもできる。ブートストラップ・ノンスは、QKD鍵からブートストラップ鍵を導出するために使用されるデータである。
デバイス・データ402のワークフロー・ステップ・ポリシー識別子は、ターゲット・デバイス8に適用されるワークフロー・ステップ・ポリシーのワークフロー・ステップ・ポリシー・データ404にリンクする。ワークフロー・ステップ・ポリシー・データ404は、ワークフロー・ステップ・ポリシーID、名前、およびワークフロー・ステップ識別子の数から構成される。
ワークフロー・ステップ・ポリシー・データ404の各ワークフロー・ステップ識別子は、ワークフロー・ステップデータ406にリンクしている。各ワークフロー・ステップデータ406は、ワークフロー・ステップID、ワークフロー・ステップを実行することによって到達した状態の名前を識別する名前、ワークフロー・ステップがユーザ認証を必要とするかどうか、ワークフロー・ステップが委託担当者の認可を必要とするかどうか、およびそのワークフロー・ステップを実行することによって到達したキーに付与されたスコープ、すなわち操作許可から構成される。
ワークフロー・ステップが委託担当者認可を必要とする場合、ワークフロー・ステップデータ406は、多数の委託担当者認可データ408にリンクされる。各委託担当者認可データ408は、認可ID、委託担当者のユーザ名、電子メールアドレス、パスワードソルト、パスワードダイジェスト、暗号化されたユーザキー、状態、およびユーザロールから構成される。図示された実施例では、ワークフロー・ステップデータ406は、単純明快にするために、単一の委託担当者認可データ408に直接リンクされている。各ワークフロー・スワークフロー・ステップ6は、任意の数の委託担当者権限データ408にリンクされてもよいことが理解されよう。さらに、ワークフロー・ステップでどの委託担当者または委託担当者の組み合わせが必要かを定義するルールを設定することができる。例えば、承認は、特定の個人、定義されたグループの1人以上のメンバー、または論理的に定義された組み合わせ、例えば、コミッショニングオフィサーAによる承認およびコミッショニングオフィサーグループBのメンバー、またはコミッショニングオフィサーCによる承認またはコミッショニングオフィサーグループDの2人のメンバーおよびコミッショニングオフィサーグループEのメンバーによって要求されるかもしれない。
機器データ402のワークフロー・ステップ・ポリシー識別子は、承認状態が保存されている対象機器8のワークフロー・ステップ承認データ410にもリンクしている。ワークフロー・ステップ承認データ410は、ワークフロー・ステップ承認ID、承認する委託担当者の委託担当者署名の記録、承認する委託担当者の名前、委託担当者によって暗号化または署名されるソルト、および必要に応じて、このワークフロー・ステップのために認証を提供したユーザの記録から構成される。
図4の例では、ワークフロー・ステップデータ406をワークフロー・ステップ・ポリシー・データ404にリンクしている行のインジケータ1:nで示されているように、スキーマ400にリンクされているワークフロー・ステップデータ406が1つ以上存在する可能性があり、委託担当者承認データ408をワークフロー・ステップデータ406にリンクしている行のインジケータO.nで示されているように、各ワークフロー・ステップデータ406にリンクされている委託担当者承認データ408が0つ、または任意の数だけ存在する可能性がある。さらに、ワークフロー・ステップ承認410をデバイスデータ402にリンクするユーザ上のインジケータ1:nで示されるように、スキーマ400にリンクされた1つ以上のワークフロー・ステップ承認410が存在する。ワークフロー・ステップポリシーの各ワークフロー・ステップに対応するワークフロー・ステップデータ406が存在する。さらに、各ワークフロー・ステップは、委託担当者の承認を必要としないか、または任意の希望する数の委託担当者の承認を必要とする可能性があるため、ワークフロー・ステップデータ406は、対応する数の(ゼロを含む)委託担当者承認データ408にリンクされる。
図5は、図示された第1および第2の実施形態で使用され得る詳細なユーザ登録プロセスの例示である。
図5に示すユーザ登録プロセス500では、ユーザ502がクラウドサービス6でアカウントを作成することを選択すると、プロセス500が開始する。ユーザは、ユーザ名UN_U、電子メールアドレスEおよびパスワードP_Uからなるサインアップ情報504を提供する。ユーザ502は、モバイルユーザのアプリ、ウェブアプリユーザはその他の方法でサインアップ情報を提供することができる。
次に、ユーザプリはクラウドサービス6を呼び出し、UN_UとPJJを渡し、新しいアカウントを要求する。
クラウドサービス6は、ユーザ502のアカウントがすでに存在するかどうかをチェックする。チェックの結果、アカウントがすでに存在することが示された場合、クラウドサービス6はエラーメッセージ510を返し、登録は終了する。あるいは、チェック508が、アカウントのユーザが存在しないことを示す場合、クラウドサービス6は、ユーザ502のデータベースに新しいレコード512を作成し、対称ユーザ鍵K_Uを作成する。
次に、クラウドサービス6は、PDKDF2(またはsha256以上を使用する他のパスワードハッシュアルゴリズム)を使用して、P_UからパスワードキーK_Pを導出し、K_UをK_Pで暗号化してK_UEを形成し、その結果をユーザレコードに格納する:
K_P=PBKDF2(P_U) or K_P=PBKDF2(P_U,<num iterations>)及び
K_UE={K_U}K_P
K_P=PBKDF2(P_U) or K_P=PBKDF2(P_U,<num iterations>)及び
K_UE={K_U}K_P
次に、クラウドサービス6は、ランダムなパスワードソルトS_Uを生成516し、それを使用してP_Uをハッシュ化し、パスワードのダイジェストD_Pを作成し、S_UとD_Pを格納する:
D_P=#(S_U,P_U)
D_P=#(S_U,P_U)
次に、クラウドサービスは、少なくとも以下のフィールドと値を持つユーザのレコード518をデータベースに作成する(必要に応じて、テナントID、会社名などの他のフィールドを追加することもできる):
次に、クラウドサービス6は、ユーザの電子メールアドレスEに検証電子メール520を送信し、この電子メールには、ソース電子メールアドレスを検証するために使用できる匿名リンク、および/またはリンクを効果的にクリックするためにスキャンできるQRCodeが含まれている。
ユーザ502が電子メールを受信すると、ユーザはリンク522をクリックするか、QRCodeをスキャンし、これによりクラウドサービス6に通知524が送信される。
クラウドサービス6が通知を受信すると、クラウドサービス6は、リンク内の匿名データからユーザレコードを検索し、ユーザ状態を検証済みとしてマークする。
その後、クラウドサービス6は、新しいユーザカウントが開設されたことを確認するためのメッセージ530をユーザ502に送り返す。
ユーザ登録プロセス500は、単一組織またはシングルテナントシステム、あるいは、組織またはテナントがユーザの電子メールアドレスで指定されたドメインと一致することによって、または本発明でカバーされない他の方法によって選択される、複数組織またはマルチテナントシステムのいずれかを想定している。
ユーザ登録プロセス500において、OAuth2または他の標準的なユーザ認証パターンをユーザ認証およびパスワード管理に使用することができるが、この場合、ユーザ鍵をクラウドサービス6のデータベース7に平文で保持する必要があるか、またはユーザ鍵を完全に省略することができる。
ユーザ登録プロセス500では、二要素認証を(ユーザ)認証フローに組み込むことができる。
図6は、図示された第1および第2の実施形態においてユーザ管理を可能にするために使用され得る、詳細なユーザのみの認証プロセスの例示的な例である。図6のユーザのみ認証プロセスは、図3の鍵プロビジョニング・プロセス300では使用されない。
図6に示すユーザのみの認証プロセス600では、プロセス600は、ユーザ602が、ユーザ名UN_U’、または電子メールE’、およびパスワードP_U’を提供するログイン要求606をクラウドサービス6に対して開始するとき604に開始する。
ログイン要求606を受信すると、クラウドサービス6は、対応するユーザカウントが存在するかどうか610をチェックし、存在しない場合はエラー612を返す。あるいは、対応するユーザカウントが存在する場合、クラウドサービス6は、データベース7内のユーザレコードを検索し、ユーザレコードからS_Uを使用して、新しいダイジェスト614を作成する:
D_P’=#(S_U,P_U’)
D_P’=#(S_U,P_U’)
次に、クラウドサービス6は、新しいダイジェストがデータベース内のダイジェストと一致するかどうかを検証し、提供されたパスワードが正しいかどうかをチェックする616。提供されたパスワードが正しくない場合、クラウドサービス6はエラーメッセージ618を返す。あるいは、提供されたパスワードが正しい場合、クラウドサービス6は、ユーザJWTを作成し620、将来のAPI呼び出しで使用するために、ユーザJWT622をユーザ602のブラウザまたはアプリに送信する。その後、クラウドサービス6は、ユーザJWTスコープにユーザ60ユーザと権限を記録する。
上述のユーザ登録プロセユーザと同様に、OAuth2または他の標準パターンを代わりに使用することもできる。
図7は、図示された第1および第2の実施形態においてユーザ・ロールが設定されることを可能にするために使用され得る詳細なユーザ・ロール設定プロセスの例示である。このプロセスは、上述したように、新しい組織またはテナントのために作成される最初のユーザが、その組織またはテナントの最初の管理者になることを想定している。
図7に示すユーザ・ロール設定プロセス700では、プロセス700は、図6に示すユーザのみ認証プロセス600を使用してユーザ602が認証し、ユーザJWTを取得したときに開始する。
次に、ユーザ602は、クラウドサービス6が、ユーザJWTを渡して、ユーザUの役割を指定された役割Rに設定することを要求702する。たとえば、ユーザ602は、クラウドサービス6がユーザUの役割を「委託担当者」に設定することを要求することができる。
ユーザ認証プロセス600からユーザJWTが返されたことを条件として、クラウドサービス6は、次に、ユーザJWTスコープが、ユーザ・ロールの設定を許可するスコープを含むかどうかをチェックする。これは、ユーザ602を管理者として識別するユーザJWTスコープとみなすことができる。ユーザJWTスコープがこのスコープを含んでいない場合、またはユーザJWTが渡されなかった場合、クラウドサービス6は706エラーを返し、操作は終了する。あるいは、ユーザJWTスコープがこのスコープを含む場合、クラウドサービス6は、ユーザUのレコードを見つけ、ユーザ・ロールを指定されたロールユーザ・ロール。
その後、クラウドサービス6は、ユーザUのユーザ・ロールが指定されたロールRに設定されたことを確認する電子メール710を管理者ユーザ602に送信する。任意選択で、クラウドサービス6は、ユーザU、および任意選択で、同じ組織/テナント内の管理者ロールまたは監査ロールを持つ一部またはすべてのユーザに電子メール712を送信して、ロールの変更を通知し、変更を認識していない場合は変更を報告するよう要求することもできる。
上述のプロセス500および600と同様に、OAuth2または他の標準パターンを代わりに使用することもできる。
図8は、図示された第1および第2の実施形態で使用され得るワークフロー・ステップポリシー設定プロセスの例示である。
図8に示すワークフロー・ステップポリシー設定プロセス800では、プロセス800は、図6に示すユーザのみ認証プロセス600を使用してユーザ602が認証し、ユーザJWTを取得するときに開始する。
次に、ユーザ602は、クラウドサービス6がユーザJWTを渡す指定されたワークフロー・ステップポリシーを作成または更新することを802に要求する。
ユーザ認証プロセス600からユーザJWTが返されたことを前提として、リクエスト802がワークフロー・ステップを作成することであった場合、クラウドサービス6は、次に、ユーザJWTスコープがワークフロー・ステップの作成を許可するスコープを含むかどうかをチェックする。ユーザJWTスコープがこのスコープを含まないか、またはユーザJWTが渡されなかった場合、クラウドサービス6は806エラーを返し、操作は終了する。あるいは、リクエスト802がワークフロー・ステップを更新することであった場合、クラウドサービス6は、ユーザJWTスコープがワークフロー・ステップの変更を許可するスコープを含むかどうかをチェックする。ユーザJWTスコープがこのスコープを含まないか、またはユーザJWTが渡されなかった場合、クラウドサービス6は806エラーを返し、操作は終了する。さらに、ユーザUのレコードが見つからない場合、クラウドサービス6は706のエラーを返し、操作を終了すワークフロー・ステップあるいは、ユーザJWTスコープが、要求されたワークフローステップの作成または更新のスコープを含む場合、クラウドサービス6は、要求された作成または更新されたワークフロー・ステップポリシーを格納する。
または、もしユーザーJWTのスコープに、要求されたワークフローのステップの作成または更新が含まれているならば、クラウドサービス6には810、要求されて作成または更新されたワークフローのステップのポリシーが保存される。
次に、クラウドサービス6は、要求された変更がなされたことの確認を管理者ユーザ602に送信する。任意選択で、クラウドサービス6はまた、ユーザU、および任意選択で、同じ組織/テナント内の管理者ロールまたは監査ロールを有する一部またはすべてのユーザに、ワークフロー・ステップポリシーの変更を通知し、変更を認識しない場合は変更を報告するよう要求する電子メール814を送信することができる。
図9は、図示された第1及び第2の実施形態で使用され得るブートストラップ鍵注入プロセスの例示である。
ブートストラップ・キー注入プロセスを実行するためには、製造時点、例えば製造施設5で利用可能なワークフロー・ステップポリシーがなければならない。これは、デフォルトのワークフロー・ステップポリシーであってもよい。ワークフロー・ステップポリシーは、適切な権限を持つユーザによって後で上書きすることができる。このような権限付与及び役割管理が組織間でどのように実施されるかは、本明細書では規定しない。
図9に示すブートストラップ鍵注入プロセス900において、プロセス900は、製造施設5が、例えば製造施設5のブートストラップ・プロビジョニング端末において、ブートストラップ・ノンスN_Bを生成902するときに開始する。
次に、製造施設5は、ローカルOGR2aのHSM4aからQKD鍵のID、ID_Kを選択する904が、このQKD鍵は、クラウドサービス6に接続されたOGR2bとも共有される。
次に、Manufacturing Facility5は、904N_BおよびID_KをOGR2aに接続されたHSM4aに送信し、ブートストラップ鍵K_Bの作成を依頼する。OGR2aのHSM4aは、906K_Bを作成する:
K_B=#(Select Key(ID_K),N_B)
K_B=#(Select Key(ID_K),N_B)
その後、OGR2aは、908K_BをManufacturing Facility5に返戻する。
次に、Manufacturing Facilityは、以下のプロパティ、製造者ID、およびデバイスIDを有し、ブーストラップノンスN_Bを渡す、新しいターゲット・デバイス8を910クラウドサービス6に通知する。いくつかの例では、追加のパラメータがあってもよいし、識別子は代わりに、例えば32バイトの乱数やIMEI番号のような、デバイスのための単純な保証された一意のIDであってもよい。
次に、クラウドサービスは、ターゲット・デバイスのレコード912を作成し、データベース7に少なくとも以下を格納する(サービス・プロバイダなど、必要に応じて他のフィールドを追加してもよい):
さらに、クラウドサービス5は、レコードの委託署名フィールドをランダムなソルトに初期化し、916レコードの委託当事者フィールドを空に初期化する。
クラウドサービスは、Manufacturing Facility5に成功コードを返戻し、Manifacturing Facilityは、ターゲットデバイス8に以下のデータを注入する:
その後、ターゲット装置8は、822に注入920が行われたことの確認824をManufacturing Facility5に送信する。
上述のように、計算されたブートストラップ・キーをクラウド・サービス5のデータベース7に保存することは任意である。上記の例では、計算されたブートストラップ鍵は、HSM4bが将来のブートストラップ鍵計算のためにQKD鍵を無期限に保持しなければならないことを回避するために(すなわち、各認証がブートストラップ鍵を新たに計算しなければならないことを回避するために)、データベース7に格納される。これにより、ブートストラップ・キーをデータベース攻撃者が読み取ることが可能になるため、潜在的な攻撃ベクトルが開放されるが、HSM4bからQKDキーを削除することで、ブートストラップ・キーに由来するターゲット・デバイス8が認証できなくなるという別の攻撃ベクトルも低減される。いくつかの例では、ブートストラップ・キーを保護するために、例えばテナント固有のHSMに保存されたキーでラップしてデータベース7に保存することができる。別の例では、計算されたブートストラップ・キーはデータベース7に保存されず、各認証はQKDキーからブートストラップ・キーを新たに計算する。
別のアプローチでは、QKDを使用してブートストラップ・キーを計算し、それをターゲット・デバイスに注入する代わりに、製造施設5または他の企業は、独自のブートストラップ・キーを生成してターゲット・デバイス8に注入し、このブートストラップ・キーまたはブートストラップ・キーのハッシュを、古典的に安全な、ポスト量子暗号的に安全な、量子的に安全な、または手動で安全なリンクを介してクラウドサービス5に登録することができる。その後、認証フローは、データベース7のブートストラップ・キー・フィールドに格納された、製造施設5のブートストラップ・キー、またはこのブートストラップ・キーのハッシュを、ノンスとQKDキーとを組み合わせることによってOGR/HSMによって計算されたキーの代わりに、チェーンの最初のキーとして使用する。
上記の例は、第1の実施形態による衛星システム100を参照して説明される。第2の実施形態による地上システム200では、OGR2aは、地上トランシーバ9aによって置き換えられる。
状況によっては、ターゲット装置8に関連するワークフロー・ステップポリシーを変更することが望ましい場合がある。上述したように、これは、例えば、デフォルトのワークフロー・ステップポリシーを使用してブートストラップキーがターゲット機器8に注入された場合に必要となる可能性がある。
認証プロセス600を使用して認証され、クラウドサービス5が所定のターゲット・デバイス8に新しいワークフロー・ステップポリシーを関連付けることを要求するJWTを取得したユーザによって、ワークフロー・ステップポリシーを変更することができる。次に、クラウドサービス5は、JWTスコープが、ターゲット・デバイス8に対してワークフロー・ステップを関連付けることを許可するスコープを含むことを確認する。次に、クラウドサービス5は、ターゲットデバイス8に関するレコードを検索し、ターゲットデバイス8に関するデバイスレコードを更新して、新しいワークフロー・ステップポリシーを指すようにし、ターゲットデバイス8に関するデバイスレコードのワークフローラチェットおよびワークフローコミッショニングレコードをゼロにする。任意選択で、クラウドサービス6は、ユーザ、および任意選択で管理者または監査ロールを有する一部またはすべてのユーザに電子メールを送信し、特定のターゲット・デバイス8に割り当てられたワークフローまたはポリシーの変更を通知し、変更を認識していない場合は変更を報告するよう要求することができる。
ターゲット・デバイス8のワークフロー・ステップを更新すると、すべてのラチェット・キーがゼロになるため、ターゲット・デバイス8は、初期化されていないブートストラップまたは工場出荷時の状態にリセットされ、ブートストラップ・キーのみが正常に認証できる状態になる。
図10は、図示された第1および第2の実施形態において、ターゲット・デバイス10をクラウド・システム6に認証するために使用され得る、詳細なターゲット・デバイス認証プロセスの例示である。
図10に示すターゲットデバイス認証プロセス1000では、プロセス1000は、ターゲットデバイス8が何らかの外部刺激に応答して認証フロー1002を開始するときに開始する。この外部刺激は、たとえば、ターゲット・デバイス8をクラウド・システム6に接続しようとするユーザ1004であってもよいし、たとえば、ターゲット・デバイス8が起動し、認証フローを開始するブートローダを実行することであってもよい。ターゲットデバイス8は、チャターゲットデバイス、およびオプションとしてタイムスタンプT_Dを作成し、クラウドサービス6に認証を要求し、以下の情報1008を渡す:ID_M、ID_D、C_D、T_D。
認証要求の受信に応答して、クラウドサービス6は、ターゲットデバイス8に対応するデータベース7内のデバイスレコード1010を検索し、ターゲットデバイス8のブートストラップキーがデータベース7に格納されているか否かを判定する。
ブートストラップ・キーがデータベース7に格納されている場合、クラウドサービス6はブートストラップ・キーを回復する。あるいは、ブートストラップ・キーがデータベース7に格納されていない場合、クラウクラウドサービスデータベース7からID_Kを回復し、N_BおよびID_Kを、クラウドサービス6のOGR2bに接続されたHSM4bに送信し、1014として、ブートストラップ・キーK_Bを計算するようにHSM4bに要求する:
K_B=#(SelectKey(ID_K),N_B)
K_B=#(SelectKey(ID_K),N_B)
次に、HSM4bは、要求されたブートストラップ・キーをクラウドサービス6に提供する。
データベース7内のデバイスレコードが、ターゲット・デバイス8がブートストラップ状態にあることを示す場合、キーKは、1018ブートストラップ・キーK_Bに設定される。あるいは、デバイスレコードが,ターゲット・デバイス8がブートストラップ状態にないことを示す場合、クラウドサービスは、ターゲットデバイスレコードのワークフローラチェット配列に格納されたキーラチェットをウォークスルーし、キーをラチェットして、1020キーKを計算する:
K[0]=#TK_B,R[0])および
K[n]=#(K[n-1],R[n])forn=1to(ワークフローステップインデックス-1),その結果として
K=K[n]
K[0]=#TK_B,R[0])および
K[n]=#(K[n-1],R[n])forn=1to(ワークフローステップインデックス-1),その結果として
K=K[n]
あるいは、ラチェットが単一の値K_CX(下記参照)に折り畳まれている場合、キーKは、1020のように計算することができる:
K=K_BXORK_CX
K=K_BXORK_CX
その後、クラウドサービス6は、1022チャレンジコードC_Cと、オプションとしてタイムスタンプT_Cを作成し、1024チャレンジコードとタイムスタンプ(該当する場合)をターゲット・デバイス8に返戻する。クラウドサービス6は、クラウドサービスのIDであるID_CSをターゲット・デバイス8に返すこともある。
クラウドサービス6とターゲット・デバイス8がタイムスタンプを交換した場合、クラウドサービス6とターゲット・デバイス8の両方は、交換したタイムスタンプが所定の時間ウィンドウ内にあることを確認することができる。例えば、クラウドサービス6とターゲット装置8は、交換したタイムスタンプが互いに1秒以内であることを確認することができる。タイムスタンプが所定の時間ウィンドウ内にないと判断された場合、認証は拒否される。
次に、並行して、クラウドサービス6およびターゲット・デバイス8は、認証に使用すると予想される鍵Kを使用して、認証値1026aおよび1026bを計算する:
X_D=#fK,C_D,0)
X_C=#fK,C_C,1)
R_D=#(X_DC_C)
R_C=#(X_C,C_D)
0と1は方向性を追加し、不正なサーバーが単にC_DをC_Cとして返し、K_S=(0,0,0,0,0,0,0,0,0,0......)を導く場合、ミラー攻撃が起こり得ないことを保証する。
X_D=#fK,C_D,0)
X_C=#fK,C_C,1)
R_D=#(X_DC_C)
R_C=#(X_C,C_D)
0と1は方向性を追加し、不正なサーバーが単にC_DをC_Cとして返し、K_S=(0,0,0,0,0,0,0,0,0,0......)を導く場合、ミラー攻撃が起こり得ないことを保証する。
あるいは、クラウドサービス6およびターゲットデバイス8は、それぞれ(かつ並行して)、以下のプロセスに従って、認証に使用すると予想される鍵Kを使用して認証値1026aおよび1026bを計算してもよい:
N_D=#C_D,ID_M,ID_D,T_D)
N_C=#(C_C,ID_CS,T_C)
X_D=#(K,N_D,0)
X_C=#(K,N_C,1)
R_D=#(X_D,N_C)
R_C=#(X_C,N_D)
N_D=#C_D,ID_M,ID_D,T_D)
N_C=#(C_C,ID_CS,T_C)
X_D=#(K,N_D,0)
X_C=#(K,N_C,1)
R_D=#(X_D,N_C)
R_C=#(X_C,N_D)
次に、ターゲット・デバイス8は、1028R_Dをクラウドサービス6に送信する。クラウドサービス6は、ターゲット機器8から受信したR_Dと、クラウドサービス6によって計算されたR_Dとを比較し、ターゲット機器から受信したR_Dがクラウドサービス6によって計算されたR_Dと一致する場合、クラウドサービス6は、1030セッション鍵K_Sを作成する:
K_S=X_DXORX_C
K_S=X_DXORX_C
さらに、クラウドサービス6は、認証に使用される鍵に適切なスコープを持つ1032JWTを作成する。
その後、クラウドサービス6は、計算した1034R_C、JWT、およびクラウドサービス6のみが知っている鍵であるK_CSで暗号化されたセッション鍵を、すべてセッション鍵で暗号化してターゲット・デバイス8に返戻する。K_CSは、RESTfulAPIを使用できるようにするために提供され、将来のAPI呼び出しでは、クラウドサービス6にキャッシュする必要がないように、暗号化されたセッションキーが渡される。K_CSとRESTfulAPIの使用は任意である。
R_C,{JWT,{K_S}K_CS}K_S
R_C,{JWT,{K_S}K_CS}K_S
次に、ターゲット装置8は、クラウドサービスから返されたR_Cと、ターゲット装置8で計算されたR_Cとを比較する。クラウドサービス6から返されたR_Cが、ターゲット装置8で計算されたR_Cと一致しない場合、ターゲット装置8は、ユーザ1004にエラーメッセージ1036を表示する。あるいは、クラウドサービス6から返されたR_Cがターゲット機器8で計算されたR_Cと一致する場合、ターゲット機器8はローカルに計算された値からセッションキーK_Sを計算する:
K_S=X_DXORX_C
K_S=X_DXORX_C
その後、ターゲット・デバイス8は、クラウドサービスから受信したJWTを復号化1040し、{K_S}K_CSを復号化1042する。
その後、ターゲット・デバイスは、このセッションでさらにAPIコールを行うときに、セッションキー、K_S、JWT、および{K_S}K_CSを使用することができる。
あるいは、ターゲット・デバイス8から受信したR_Dが、クラウドサービス6によって計算されたR_Dと一致しない場合、クラウドサービス6は、ターゲット・デバイス8にエラーメッセージ1044を返戻する。
このエラーメッセージ1044に応答して、ターゲット・デバイス8は、鍵失効(工場出荷時リセット)プロセスが発生し、クラウドサービス6内のすべての鍵ラチェットが削除された可能性があるため、ブートストラップ鍵を使用して再度認証を試みるべきである。このさらなる認証の試みが失敗した場合、ターゲット・デバイス8は認証できず、失敗の監査とログが作成される。例えば、1時間以内に特定のIPアドレスから指定された回数(例えば3回)を超える認証の試行が行われないようにしたり、1時間以内に任意のIPアドレスからデバイスのさらなる認証の試行が行われないようにしたりするなど、さらなる防御策を採用することもできる。
オプションとして、ブートストラップキーではない認証キーで認証に成功すると、前方セキュリティを提供するために、ブートストラップキー(またはターゲットデバイスとクラウドサービスの両方が知っている他の値)を使用して、現在のラチェットキーを前方にラチェットすることができる:
K’=#(K_B,K),ここで、Kは対象デバイス上のキーの配列における最新のキーであり、K_Bはブートストラップ・キーである。
K’=#(K_B,K),ここで、Kは対象デバイス上のキーの配列における最新のキーであり、K_Bはブートストラップ・キーである。
これが実行される例では、エラーメッセージ1044に応答して、ターゲット・デバイス8は、まず、認証後のラチェットがクラウドサービスでは成功したが、ターゲット・デバイスでは最後の認証で失敗した場合に、認証成功後に使用されたスキームと同等のスキームを使用して、最後のラチェットをラチェットフォワードした後に再度認証を試みるべきである。その後、この認証の試みも失敗した場合、ターゲット・デバイス8は、上述したように、ブートストラップ・キーを使用して再度認証を試みるべきである。
さらに、または代替的に、(ブートストラップ・キー自体が最初の認証に使用された場合)現在のラチェットを初期化するか、または以下のように置き換えることができる:
K=#(X_D,X_C),ブートストラップ・キーが最初の認証に使用された場合、Kはデータベースで初期化されたワークフロー・ラチェットもしくは、
K’=#(K,X_D,X_C),Kが、ワークフローステップインデックスに関連する現在のワークフローラチェットであり、K’はデータベース内のKを置き換える場合。
K=#(X_D,X_C),ブートストラップ・キーが最初の認証に使用された場合、Kはデータベースで初期化されたワークフロー・ラチェットもしくは、
K’=#(K,X_D,X_C),Kが、ワークフローステップインデックスに関連する現在のワークフローラチェットであり、K’はデータベース内のKを置き換える場合。
図11は、図示された第1および第2の実施形態において、ターゲット・デバイス10をクラウドシステム6に登録するために使用され得る、詳細なターゲット・デバイス・エンロールメント・プロセスの例示的な例である。
図11に示すターゲット・デバイス登録プロセス1100では、プロセス1100は、ユーザによって、または何らかの他の方法を介してトリガされる。ターゲット・デバイス8は、所有している最新のラチェット・キーを使用してデバイス認証プロセス1000を実行する。クラウドサービス6は、ターゲット・デバイス8のワークフロー・ステップの連鎖における現在のワークフロー・ステップを定義する、ターゲット・デバイス8の状態を維持する。この状態は0から始まり、ターゲット・デバイス8による最初の登録ステップは、ターゲットデバイス8用のワークフロー・ステップポリシーで定義されたワークフロー・ステップのアレイの最初のワークフロー・ステップを使用することを意味する。
デバイス認証プロセス1000から返戻されたJWTが、クレーム「require user auth」を含むか、またはクラウドサービス6が、ユーザ認証が必要であることをターゲット・デバイス8に通知するフラグを返す場合、ターゲット・デバイス8は、ユーザ1004から1102ユーザ名およびパスワードを要求し、ユーザ1004は、1104ユーザ名およびパスワードを提供する。いくつかの例では、パスワードの代わりに、またはパスワードに加えて、代替の認証方法が使用されてもよい。
次に、ターゲット・デバイス8は、クラウド・サービス6に対して、ターゲット・デバイス8を登録するように1106を要求し、要求1106は、セッション鍵、JWT、および暗号化セッション鍵によって保護されたユーザ名とパスワード(必要な場合)を提供する:
{K_S}K_CS,{JWT}K_S,および任意で{UN_U’,P_U’}K_S
{K_S}K_CS,{JWT}K_S,および任意で{UN_U’,P_U’}K_S
次に、クラウドサービス6は、K_CSを使用してセッションキーを復号化および検証し、セッションキーが有効でない場合はエラーを返す。セッションキーが有効な場合、クラウドサービス6は、セッションキーを使用してJWTを復号化および検証し、デバイスJWTが有効でないか、APIにアクセスするために必要なスコープを含んでいない場合、エラー1108を返戻する。
あるいは、セッションキーおよびデバイスJWTが有効である場合、クラウドサービス6は、データベース7内のターゲット・デバイス8のレコードから、ターゲット・デバイス8用の1110ワークフロー・ステップポリシー、ワークフローラチェット、およびワークフローコミッショニングをロードし、ランダム・ソルトS_Eを作成する。
次に、アクティブなワークフロー・ステップ(ワークフローステップインデックスによって定義される)がユーザ認証を必要とする場合、クラウドサービス6は、ユーザ名UN_UおよびパスワードP_Uを復号化する。次に、クラウドサービス6は、データベース7内のユーザレコード1114を検索し、S_Uを使用してP_Uから新しいダイジェストを作成する。次に、クラウドサービス6は、新しいダイジェストを使用して、新しいダイジェストがデータベース7内のダイジェストと一致するかどうかを1116検証することによって、パスワードが正しいかどうかをチェックする。
ダイジェストが一致しない場合、パスワードは不正であり、クラウドサービス6は1118エラーを返す。あるいは、ダイジェストが一致する場合、パスワードは正しく、クラウドサービス6は、PBKDF2(P_U’)または同等のものを使用して、ユーザ鍵K_Uを復号化し、ラチェットRを1122初期化する:
R=#(K_U,K,S_E)ここでKはデバイス認証キーである。
R=#(K_U,K,S_E)ここでKはデバイス認証キーである。
その後、ユーザ名は、ワークフロー・ステップインデックスによって定義される、ターゲット・デバイス8の最新のワークフロー委託記録のユーザ認証フィールドに格納される。
あるいは、アクティブなワークフロー・ステップがユーザ認証を必要としない場合、ラチェットRは1124初期化される:
R=#(K,S_E)ここでKはデバイス認証キーである。
R=#(K,S_E)ここでKはデバイス認証キーである。
ワークフロー・ステップポリシー内のアクティブなワークフロー・ステップが委託担当者の承認を必要とする場合、クラウドサービス6は、アクティブなステップ(ワークフロー・ステップインデックスによって定義される)の委託担当者の署名および委託担当者の関係者フィールドで識別される必要な署名が、そのステップのワークフロー・ステップポリシー内のものと一致することをチェックする。これらが一致しない場合、登録は失敗し、クラウドサービス6はエラー1126を送信し、適切な監査およびログが作成される。あるいは、アクティブなステップの委託担当者の署名および委託担当者の関係者フィールドが、そのステップのワークフロー・ステップポリシーのものと一致する場合、クラウドサービス6は、ラチェットRを委託署名S_Cと結合1128し、新しいラチェットR’を形成する:
R’=#(R,S_C)
R’=#(R,S_C)
その後、クラウドサービス6は、前者のラチェット1130、R、または後者のラチェット、R’を、(ワークフロー・ステップインデックスによって定義される)現在のワークフローラチェット配列インデックスに適宜格納し、その後、デバイスのワークフロー・ステップインデックスをインクリメントして、ターゲット・デバイスを次の状態に遷移させる。
ワークフロー・ステップポリシー内のアクティブなワークフロー・ステップがユーザ認証と委託担当者の承認の両方を必要とする場合、クラウドサービス6は、ユーザパスワードと委託担当者の署名と委託担当者の当事者フィールドの両方の一致が確認されるまで、新しいラチェットの初期化に進まない。
オプションとして、以前のラチェットを秘匿できるようにするために、クラウドサービス6は、すべてのラチェットを単一の折りたたまれたXOR値、K_CXに折りたたむことができ、これは、次に、ブートストラップ・キーとXORされ、最新のラチェット・キーを形成する:
K_CX=#(K,R)XORK_BここでKはデバイス認証キーである
または、
K_CX=#(K,R’)XORKBここでKはデバイス認証キーである
そしてその後、次の認証に使用される最新のラチェット・キーは単純にこうなる:
KR=K_BXORK_CX
K_CX=#(K,R)XORK_BここでKはデバイス認証キーである
または、
K_CX=#(K,R’)XORKBここでKはデバイス認証キーである
そしてその後、次の認証に使用される最新のラチェット・キーは単純にこうなる:
KR=K_BXORK_CX
いずれの場合も、クラウド・サービス6は、セッション鍵によって暗号化された新しいラチェットRまたはR’をターゲット・デバイス8に1132を返戻する:
{R}K_Sor{R’}K_S
{R}K_Sor{R’}K_S
その後、ターゲット・デバイス8は、セッション鍵を使用してRまたはR’を復号し、RまたはR’を使用して、保持している最新のラチェット鍵K_Rから1134最新のラチェット鍵K_R’を計算する:
K_R’=#(K_R,R)or
K_R’=#fK_R,R’)
K_R’=#(K_R,R)or
K_R’=#fK_R,R’)
その後、ターゲット機器8は、K_R’をターゲット機器8に保持されている鍵の配列に追加し、今後はこの鍵を認証に使用し、ターゲット機器は、OKメッセージ1136をユーザ1004に返す。
図12は、図示された第1および第2の実施形態においてワークフローのステップを承認するために使用され得るコミッショナー承認プロセスの例示的な例である。
図12に示されるコミッショナー承認プロセス1200において、プロセス1200は、上記に規定されたプロセスによって以前に認可された制御装置1204を使用する委託役割ユーザ1202によってトリガーされる。この制御装置1204は、制御装置JWTを取得するために、所有している最新のラチェット鍵を使用して装置認証プロセス1000を実行する。
制御装置1204は、コミッショニング・ユーザ1202から1206ユーザ名とパスワードを要求し、コミッショニング・ユーザ1202は、1208ユーザ名とパスワードを制御装置1204に提供する。いくつかの例では、パスワードの代わりに、またはパスワードに加えて、代替の認証方法が使用されてもよい。
任意に、制御装置1204は、いくらかのエントロピーEを提供することができる;これは、例えば、制御装置1204内の加速度計がいくらかのエントロピーを生成する間、委託者1202が制御装置1204を数秒間振ることによって、または委託者1202が制御装置1204のスクリーン上に何かを描くことによって、または制御装置が乱数発生器(RNG)、あるいはOGR2からエントロピーを取ることによって行われ得る。
制御デバイス1204は、デバイス認証プロセス1000の間に計算されたセッションキーK_Sを取得し、セッションキーによって暗号化された制御デバイスJWTと、やはりセッションキーによって暗号化されたターゲットデバイス識別子ID_MおよびID_Dと、ユーザ名UN_U’およびパスワードP_U’とを渡して、クラウドサービス6が所定のデバイスの次の登録状態を承認する1212を要求する。
{K_S}K_CS,{JWT}K_S,{UN_U’,P_U’,ID_M,ID_D}K_S,or
{K_S}K_CS,{JWT}K_S,{UN_U’,P_U’,ID_M,ID_D,E}K_S,エントロピーが提供されている場合
{K_S}K_CS,{JWT}K_S,{UN_U’,P_U’,ID_M,ID_D}K_S,or
{K_S}K_CS,{JWT}K_S,{UN_U’,P_U’,ID_M,ID_D,E}K_S,エントロピーが提供されている場合
次に、クラウドサービス6は、K_CSを使用してセッションキーを復号化および検証し、制御デバイスJWTを復号化および1214検証し、制御デバイスJWTが有効でない場合、またはこの関数に許可を与えるスコープを含まない場合、エラー1216を返す。
あるいは、セッションキーおよび制御デバイスJWTが有効である場合、クラウドサービス6は、1218ユーザ名UN_U’、パスワードP_U’、およびオプションとしてエントロピーEを復号化する。次いで、クラウドサービス6は、1220ユーザレコードを検索し、S_Uを使用して新しいダイジェストを作成する:
DP’=#(S_U,P_U’)
DP’=#(S_U,P_U’)
次に、クラウドサービス6は、新しいダイジェストを使用して、新しいダイジェストがデータベース内のものと一致すること、およびユーザ役割がコミッショナーであることを1222チェックすることによって、パスワードが正しいかどうかをチェックし、一致しない場合、クラウドサービス6は1224エラーを返戻し、操作は終了する(監査およびログが作成される)。
あるいは、新しいダイジェストがデータベース内のものと一致し、ユーザの役割がコミッショナーである場合、クラウドサービス6は、PBKDF2(P_U’)または同等のものを使用して、ユーザ鍵K_Uを1226復号化する。次に、クラウドサービス6は、指定されたターゲット・デバイス8の現在のワークフロー・ステップ承認レコード(ワークフロー・ステップインデックスによって定義される)1228を探し出し、そのレコードから1230コミッショニングソルトS_Cをロードする。次に、クラウドサービス6は、コミッショニングソルトS_CをK_Uで暗号化、署名またはハッシュ化し、オプションとして、デバイスID、ワークフロー・ステップID_W、現在時刻、および必要に応じて他のデータを含み、その結果をそのレコードのコミッショニング担当者署名フィールドに1232格納する:
S/G={S_C}K_Uor{S_C,ID_M,ID_D,ID_W,TIME}K_U
S/G={S_C}K_Uor{S_C,ID_M,ID_D,ID_W,TIME}K_U
あるいは、エントロピーが提供される場合、クラウドサービス6は、指定されたターゲット・デバイス8の現在のワークフローステップ承認レコード(ワークフローステップインデックスによって定義される)を検索し、委託塩S_Cをエントロピーで暗号化し、署名し、またはハッシュ化し、任意選択で上記に規定されるようなさらなるデータを含み、その結果をそのレコードの委託担当者署名フィールドに格納する。
S/G={S_C,E}K_U,or{S_C,E,ID_M,ID_D,ID_W,TIME}K_U
S/G={S_C,E}K_U,or{S_C,E,ID_M,ID_D,ID_W,TIME}K_U
クラウドサービス6は、ユーザ名1234をそのレコードの委託先フィールドに追加し、1236OKメッセージを制御装置1204に返し、制御装置1204は、1238OKメッセージをユーザ1202に表示する。
図12を参照して説明したプロセス1200は、「AND」ポリシーであり、ワークフローのステップを承認するためには、指定されたすべての委託担当者が署名しなければならない。いくつかの代替例では、異なる承認ポリシーが使用されてもよい。代替ポリシーとしては“OR”ポリシーが可能なタイプと考えられるが、そうすると、あらかじめ指名されたコミッショニング(性能検証)担当者のうち1人の承認のみが必要となる。または、より複雑なポリシーではあるが、あらかじめ指名されたコミッショニング担当者のうち“少なくとも<n>人”による承認を必要とすることも可能である。さらには、あらかじめ指名された承認権限を持つ複数人のコミッショニング担当者がアクティブディレクトリ内または他のディレクトリサービス内で定義された1つのグループとなるような例もある。こうすると、人事異動の際など、コミッショニング担当者で構成されるグループのメンバーを変更することが簡単になる。
図13は、ターゲットデバイス10をブートストラップに戻すために使用する詳細な鍵リボケーションプロセスの実例であり、第1と第2の実施形態で図示されている。これを工場出荷時リセットとも呼ぶ。
図13では鍵リボケーションプロセス1300を示している。プロセス1300は、管理者ユーザ1302が図6に示されているユーザ限定の認証プロセス600を用いてユーザJWTを取得し認証すると、開始する。
次に、ユーザ1302は1304に対して、クラウドサービス6がユーザJWTをパスする証明IDを有する特定のターゲットデバイス8からキーをリボークする(取り消す)よう要求する。
クラウドサービス6は、ユーザJWTが有効であるか、そしてそのユーザが管理者であることを確認するスコープを含んでいるかどうかを確認する。そのユーザJWTが無効である場合、またはそのユーザが管理者であると確認できなかった場合は、クラウドサービス6は1308でエラーを返し、オペレーションは終了する(そして監査ログが作成される)。
あるいは、ユーザJWTが有効であり、そのユーザが管理者であると確認するスコープを含んでいる場合、クラウドサービス6はデータベース7内のIDによってターゲットデバイス8のデバイスレコードを検索し、1318でワークフロー・ラチェット値をリセットまたはクリアする。さらに、クラウドサービス6は1320でワークフローコミッショニングをリセットまたはクリアし、ワークフローステップのインデックスをゼロに設定する。
クラウドサービス6は1322にOKを返し、監査ログが作成される。
オプションとして、クラウドサービス6は新しいノンスN_Bを生成することができる。この新しいノンスN_Bは、QKD鍵(量子暗号通信鍵)と共に新しいブートストラップ鍵を計算することに用いられ、一時的にメモリー/キャッシュに保持される。そして、クラウドサービス6はターゲットデバイス8に対して全てのキーがリボークされていると通知することが可能となり、ターゲットデバイス8は現在のブートストラップ鍵を用いてクラウドサービス6を認証し、新しいブートストラップ鍵へのアクセスを要求する。ターゲットデバイス8が新しいブートストラップ鍵を受け取ったことを確認すると、新しいノンスN_Bがデータベース内に記憶され、古いノンスは上書きされる。ターゲットデバイス8に接触できない場合は、古いブートストラップ鍵をそのまま残しておく必要がある。
上述の実施形態から、最後の暗号鍵が対称暗号鍵であり、セッション鍵のネゴシエーションや他の目的のために、クラウドサービス6によるターゲットデバイス8の認証を可能とするための共有秘密鍵として、ターゲットデバイス8とクラウドサービス6が使用できるということが理解できるだろう。最後の暗号鍵はAE256対称鍵でもよい。
図14は、本発明の第3の実施形態に従った、トラストレス(管理者による承認を必要としない)鍵プロビジョニング・システム1400の一例の概要を示す回路図である。本発明の第3の実施形態は、ブートストラップ対称鍵をキーフィルすることを意図したものであり、SIMカードを含むコンピューティングデバイス上でSIMカード内に存在するシークレットを使用することによって、RoTとしての機能を果たすことができる。このSIMカードは、ネットワーク事業者またはその他当事者にも知られているものである。第1と第2の実施形態と同様に、このキーフィルは部分的または全体的に自律的処理が可能なプロセスを通じて行われ、そこではサポートするクラウドサービス、全ての人的行為者、および全ての者は、対称鍵へのアクセスを入手することが不可能である。
図14に示すように、製造施設1401はSIM1402を製造し、続いてコンピューティングデバイス1403に組み込まれる。コンピューティングデバイス1403は、スマートフォンやその他の類の伝達機能を有するデバイスであってもよい。各々のSIM1402にはアクセス不可能な多数の対称暗号鍵が含まれており、それらは製造施設1401がSIM1402を製造する際にSIMカード1402に埋め込まれる。通常は、これらのアクセス不可能な対称暗号鍵は「プリ・パーソナライゼーション」と呼ばれる初期化レイヤーの間にSIMにロードされ、その後により高度なレベルの初期化によってアクセスをロックダウンするものである。アクセス不可能な対称暗号鍵は、通常はOTA鍵と認証キーKで構成されるが、さらにPINとPUKキーで構成されることもある。
埋め込まれた対称暗号鍵は特に、モバイルネットワーク事業者(MNO)1404が運営しているワイヤレス通信ネットワークへのSIMのアクセスを認証するために、MNO1404が使用する。その結果、SIM認証に使用される埋め込まれた対称暗号鍵は少なくとも、製造施設1401およびMNO1404の両方がある時点で使用可能でなければならないことが分かるだろう。通常は、製造施設1401がMNO1404のためにSIM1402のバッチを生成すると、製造施設1401(または製造施設1401と連携して運用を行うSIM事業者)が、SIM1402用の暗号鍵を含んだ1405プリ・パーソナライゼーション・データを、例えばVPN経由など安全な方法でMNO1404に送信する。次に、製造施設1401および/またはSIM事業者はプリ・パーソナライゼーション・データを記録から削除する。通常のSIMプロビジョニング・プロセスを実行するためには、製造施設1401とMNO1404が、SIM1402にロードされた対称鍵の安全な受け渡しができる手段を有していなければならないことが分かるだろう。
第3の実施形態では、SIM1402に埋め込まれた鍵の1つから生成されるデータ1406を、MNO1404がクラウドサービス6に安全なチャネル経由で送信する。この安全なチャネルとは、第1および第2の実施形態のクラウドサービス6に対応するものである。MNO1404が、クラウドサービス6に安全な量子通信を提供するセキュアノードを備えてもよい。
いくつかの例では、生成されたデータはSIM1402上のアクセス不可能な対称鍵の1つのハッシュ、またはハッシュで多様化されたラチェットである場合がある。他の例では、OTA鍵や認証キーなどのSIM1402上のアクセス不可能な対称秘密鍵の1つを用いて固定または動的なデータの一部に署名して導出データが生成され、任意で結果をハッシュ化する場合もある。アクセス不可能な対称鍵から導出データを導き出すために、代替的および/または追加的なプロセスが使用される場合があり、同じ導出データを計算するために、ターゲットデバイス上でも同じ関数が適用されることが理解できるだろう。他の例では、導出データは認証キーから導き出される場合がある。SIM1402製造中のいかなるポイントであっても、SIM1402上に安全にロードされた対称鍵は全て、導出データの土台として使用される可能性がある。
クラウドサービス6は、受け取った導出データをデータベース7内に格納する。このデータベース7とは、第1および第2実施形態のデータベース7に相当する。
図15は、第3の実施形態に従って鍵プロビジョニング・システム1400が実行する鍵プロビジョニング・プロセス1500の全般的なワークフロー概要を示している。
図15に示すように、各SIM1402に対して、SIM1402上にロード済みのアクセス不可能な対称鍵から鍵プロビジョニング・プロセス1500が開始する。このアクセス不可能な対称鍵は、製造施設1401での製造過程で既にSIM1402上にロード済みである。続いて、MNO14も同じく自身のデータベース内にアクセス不可能な対称鍵を保持しているので、定義済みの導出オペレーション1502を実行し、アクセス不可能な対称鍵から導出データ1504を導出する。前述の通り、アクセス不可能な鍵のハッシュを生成、またはアクセス不可能な鍵を用いてデータの一部の署名し、場合によっては任意のハッシュ化オペレーションを実行することから、導出オペレーションが構成される。
次にMNO1404は、安全なチャネルを介してクラウドサービス6に、1506で導出データ1504をプロビジョニングする。この時、クラウドサービス6との安全な通信を実行するために、場合によってはセキュアノードを使用する。プロビジョニング1506を実行するために、MNO1404がクラウドサービス6に、例えばセキュアノードを使用するなどして、導出データ1504がSIM1402と紐づいていることを通知する。クラウドサービス6は、MNO1404によって提供された導出データをデータベース7内に格納する。
プロセス1500は、第1および第2実施形態で使用されたプロセス300と同じように動作し、そこで導出されたデータはプロセス300のブートストラップ鍵として、またはブートストラップ鍵の代わりとして使用される。ブートストラップ鍵として使用された導出データは、SIM1402上に記憶されているキーから導出されたものである。したがって、SIM1402は必要な時にオンデマンドで、記憶されているキーからブートストラップ鍵を再生成することが可能である。例えば、記憶されているキーのハッシュを繰り返す、または同じデータの署名を繰り返す、場合によっては任意のハッシュを使用するなどの方法によって、ブートストラップ鍵をコンピューティングデバイス1403に提供することができる。よって、SIM1402にサポートされているコンピューティングデバイス1403は、認証フローを実行して、ブートストラップ鍵および必要に応じてブートストラップ鍵からラチェットされた後続キーを生成することが可能である。同様に、クラウドサービス6はデータベース7内に格納されている導出データをブートストラップ鍵として保持しているので、クラウドサービス6はブートストラップ鍵および必要に応じてブートストラップ鍵からラチェットされた後続キーを用いて、認証フローを実行することが可能である。
鍵プロビジョニング・プロセス1500は、導出データをクラウドサービス6に安全に提供する。上述の通り、SIM1402による導出データが既にコンピューティングデバイス1403で使用可能である。したがって、コンピューティングデバイス1403およびクラウドサービス6は、導出データ(または導出データから導出されたデータ)を対称鍵のペアとして使用し、これら2つの鍵(すなわち、同じ対称鍵/導出データの2つの複製)をラチェットして同一のステップへと進ませ、その各々がラチェット・オペレーションを構成する。クラウドサービス6とデバイス1403のどちらの環境においても、同一のキーに到達することとなる。各ステップにおいて、スタート鍵はラチェット・オペレーションによって別の新しい、または生成されたキーへと変換される。これらの最終的に同一となるキーは、RoTとして動作する対称鍵としての使用が可能となり、クラウドサービス6とデバイス1403間の量子コンピューティングによる安全な通信の実行、または他のいかなる希望するタスクに使用することができる。したがって、鍵プロビジョニング・プロセス1500は2つに分岐しており、それらが平行して実行され、第1の分岐1500aは図15では上部分岐となり、デバイス1403を実行、第2の分岐1500bは図15で下部分岐となり、クラウドサービス6を実行する。
第3の実施形態の図例では、導出データは対称暗号鍵から導出されている。他の例では、一般的には、導出データはいかなる形式の共有秘密データから導出されるものであり、共有暗号鍵または共有暗号鍵の土台として使用することができる。
この鍵は、鍵プロビジョニング・プロセス1500の各分岐1500a、1500bにおいて、デバイス1403にクラウドサービス6への認証を与える認証キーとして使用することができ、その後にチェーン内の次のキーを生成する。最終的なキーは、例えばセッション鍵の生成またはその他の目的のためなど、引き続き認証に使用することができる。
ワークフローはポリシーによって定義されるので、デバイスまたはデバイスのグループに対して異なるポリシーを割り当てることによって、状況に応じた異なるワークフローを定義することができる。これは、上記の第1および第2の実施形態に関して詳述した方法と同様である。
第3の実施形態にしたがって、鍵プロビジョニング・プロセス1500は以下のような多数の目的を有している。ポリシーを使用して、将来の鍵ネゴシエーション・タスク(例えば、他のデバイスとのセッション鍵のネゴシエーション)または他の目的に備えて、デバイス1403がクラウドサービス6を認証する際に用いるキーチェーンを定義するワークフローステップのシーケンスを定義すること。各ステップにユーザ認証および/またはコミッショニング担当者の承認が必要かどうかを定義するためのワークフローステップ・ポリシーに、デバイス1403を関連付けること。デバイス1403のSIM1402上に記憶されている対称鍵から算出された導出データがブートストラップ鍵としてデバイス1403上に存在しているので、そのデバイス1403上のブートストラップ鍵をプロビジョニングすること。そして、製造施設1401またはMNO1404が、古典的またはポスト量子暗号的に安全確保された方法によって、または物理学的メカニズムによって、ブートストラップ鍵/導出データをクラウドサービス6へと送信すると、デバイス1403とクラウドサービス6間での古典的通信チャネルを介した送信中にブートストラップ鍵が傍受されることは確実に不可能となる。ブートストラップ鍵を使用して、デバイス1403によるクラウドサービス6への接触を可能にし、定義済みポリシーに準拠したラチェットメカニズムを用いて新たな認証キーへ移行すること。その後、最新のラチェット鍵を用いてデバイス1403によるクラウドサービス6への接触を可能にし、定義済みポリシーに準拠したラチェットメカニズムを用いて新たな認証キーへ移行すること。
第3の実施形態にしたがった図15の鍵プロビジョニング・プロセス1500の概要は、以下の通りである。鍵プロビジョニング・プロセス1500および/またはシステム1400が実行するオペレーションは全て、上述の実施形態と同様の方法で、検証可能な量子セキュア・ハッシュチェーンを用いて安全に、ログおよび/または監査されることとなる。
鍵プロビジョニング・プロセス1500の実行前に、システム1400のユーザがクラウドサービス6にサインナップまたは登録を行い、上述の実施形態と同様の方法で役割が割り当てられる。
図15を参照すると、システム1400は非サイクル型のステートマシンを提供している。このステートマシンの中で、責任管理者が一連のワークフローステップを特定することができ、それによって鍵プロビジョニング・プロセス1500の分岐1500a、1500bを形成する鍵ラチェット・パイプラインが定義される。上述の実施形態と同様に、図15で鍵プロビジョニング・プロセス1500がデバイス1403のために実行可能となる前に、責任管理者(たち)はワークフローステップ・ポリシーを定義して1つ以上のワークフローステップを定義付ける必要がある。したがって、鍵プロビジョニング・プロセス1500のワークフロー内にある一連のステップを定義することによって、定義付けされたワークフローステップ・ポリシーがクラウドサービス6のデータベース7内に格納される。さらに、個々のワークフローステップについても定義が必要であり、これらの定義付けされたワークフローステップもクラウドサービス6のデータベース7内に格納される。
簡潔かつ明確にするために、単一のワークフロー・ポリシーに従っての単一のデバイス1403によるキーフィリングについて、本書では説明する。システム1400を使用している異なる組織によって異なるワークフロー・ポリシーが設定される可能性があること、そして各組織が異なるデバイス1403またはデバイス1403のグループ用に複数の異なるワークフロー・ポリシーを有する可能性があることが分かるだろう。
図15に示す通り、各デバイス1403に関して、デバイス1403のSIM1402に記憶されており、MNO1404が知っている対称鍵からデバイス1403用のブートストラップ鍵として使用される導出データ1503を1502で導出する。そして、この導出データ/ブートストラップ鍵1503をクラウドサービス6に提供することで、鍵プロビジョニング・プロセス1500が開始される。さらに、プロビジョニング1506の一部として、MNO1404は、例えばデバイスIDおよび/または製造業者および/またはSIMIDなどの、デバイス1403および/またはSIM1402に関連するメタデータを、クラウドサービス6に対して通知する。上述したように、対称暗号鍵から導出する代わりに、ブートストラップ鍵として使用される導出データはいかなる形式の共有秘密データから導出することができる。この共有秘密データとは共有暗号鍵、または共有暗号鍵の土台として使用することができるものである。鍵プロビジョニング・プロセス1500はデバイス1403およびSIM1402の寿命内であればいつでも開始することができ、SIM1402の製造中やその付近で実行しなければならないという要件はない。
クラウドサービス6は、MNO1404から提供された導出データ/ブートストラップ鍵をクラウドサービス6のHSMに記憶している。導出データ/ブートストラップ鍵はSIM1402上に記憶されている対称鍵から導出されるので、SIM1402ブートストラップ鍵を導出し、デバイス1403からブートストラップ鍵が要求された時にオンデマンドで、デバイス1403に提供することができる。
上述の実施形態と同様に、プロビジョニング1506の一部として、クラウドサービス6はデータベース7内にデバイス1403向けのデバイスレコードを生成する。このデバイスレコードは、関連する管理者(たち)および/またはMNO1404および/または製造施設1401によってデバイス1403用に選定されたワークフロー・ポリシーの複製を保管、またはそのワークフロー・ポリシーに接続する。さらに、クラウドサービス6はデバイス1403のコミッショニング署名フィールドとコミッショニング関係者フィールドをゼロへと初期化し、そのデバイス1403でコミッショニング担当者の承認を必要とする各ワークフローステップでの使用に備えて、ランダムなコミッショニングソルトを生成して保管する。
クラウドサービス6は、ワークフローステート・ブートストラップ1508で、デバイス1403のためにデータベース7内のデバイスレコードを初期化する。さらに、デバイス1403が初めてクラウドサービス6を認証しようとする時に、デバイス1403はSIM1402上に記憶されている対称鍵からSIM1402によって導出された導出データ/ブートストラップ鍵を使用して、既知のステートであるブートストラップ1504から開始する。
したがって、デバイス1503のワークフローステートは、既知のステートであるブートストラップ1504から開始することとなり、クラウドサービス6内のデバイス1503に関するデバイスレコードのワークフローステートは対応する既知のステートであるブートストラップ1508となる。デバイス1503に割り当てられたワークフローステップ・ポリシーに定義された通りに次のワークフローステートの要件が満たされれば、デバイス1503は次のワークフローステートへと移行することができる。ブートストラップ鍵は、クラウドサービスAPIセットへのアクセスを限定的に許可する。
システム1400は、ブートストラップ鍵またはブートストラップ鍵からラチェットしたキーのいずれかを使用して、デバイス1403がクラウドサービス6を認証するための手段を提供する。その都度、クラウドサービス6は当初の導出データから認証に必要なキーチェーンを構築するが、これはブートストラップ鍵を生成するためにHSMに保管されている可能性がある。ブートストラップ鍵を土台とする後続のキーは、データベース7内で保有されている記憶されたラチェット値を用いて、クラウドサービス6によって算出することができる。ブートストラップ鍵、または、そのブートストラップ鍵にラチェットされたキーのいずれかを用いて、デバイス1403がクラウドサービス6に対して認証されると、クラウドサービス6は、例えばジェイソン・ウェブ・トークン(JWT)のようにワークフローステップによってスコープが定義されるようなトークンを、デバイス1403に対して返す。クラウドサービス6によるデバイス1403の認証には、チャレンジ・レスポンスを使用して現在のキー(ブートストラップ鍵、または、そのブートストラップ鍵からラチェットされたキー)と、デバイス1403とクラウドサービス6間で交換し、その後破棄されることとなる2つのチャレンジコードの組み合わせから、セッション鍵を生成する。
クラウドサービス6は、上述の実施形態と同様に、デバイス1403のクライアントステートK_CSを暗号化するキーを使用して、RESTful APIsを許可する。
ターゲットデバイス8を移行させるために、ワークフローステップにコミッショニング担当者の承認が必要な場合、上述の実施形態について説明したものと同様のプロセスが使用される。
ブートストラップ鍵またはそのブートストラップ鍵からラチェットされたキーを用いて、デバイス1403のクラウドサービス6に対する認証が適切に実行されると、デバイス1403はクラウドサービス6からJWTのような認証トークンを受信し、クラウドサービス6との間でセッション鍵をネゴシエーションする。デバイス1403のユーザは、クラウドサービス6とデバイス1403のプロビジョニング・プロセスを開始することができる。
デバイス1403をクラウドサービス6に登録するために、デバイス1403はプロビジョニング関数を呼び出し、認証トークンと(任意で)ワークフローステップに要求される場合はユーザ・クレデンシャル情報を渡す。任意でパスワードを用いて、任意で2ファクタ認証(2FA)を用いて、クラウドサービス6はユーザを認証することができる。トークン受信に対する応答として、任意で選択したユーザ認証が成功した場合、クラウドサービス6はランダムなデータをいくつか生成し、これを使用してラチェット値を作成する。このラチェット値は、現在の最新ラチェット鍵を次のラチェット鍵へとラチェットするのに用いる。そして、この値をデバイス1403に関連付けられたラチェット値の配列内のデータベース7内に格納する。任意で、現在のデバイス1403のワークフローステップがコミッショニング担当者の承認を必要とし、その必要とされる承認がそのワークフローステップに関連付けられたコミッショニング署名フィールドに保管されている場合、コミッショニング署名リストはワークフローステップのラチェット値と組み合わされる。このラチェット値が、一連のラチェット値の中で最新のものとして使用され、保存された導出データから将来的にオンデマンドで新たな認証キーを算出するのに使用することができる。
それから、クラウドサービス6はデバイス1403に対してラチェット値を返し、ターゲットデバイス1403もその一連のラチェット値内での最新のキーから新たなラチェット値を作成し、新たな認証キーを作成できるようにする。したがって、新たなラチェット値は、最初の登録時は導出データ/ブートストラップ鍵から、それ以降の登録時には前回の登録時に作成されたキーから、作成される。
図15に示す通り、デバイス1403がブートストラップ・ステート1504の状態にあるとき、鍵プロビジョニング・プロセス1500は、クラウドサービス6を認証し登録するデバイス1403のユーザによって、上述の認証およびプロビジョニング・プロセスを用いて継続して実行される。認証およびプロビジョニング・プロセスが成功し、デバイス1403に適用されているワークフローステップ・ポリシーの次のワークフローステップによって必要であると識別されたコミッショニング担当者の承認が受信された場合、クラウドサービス6は上述のラチェット値を生成し、そのラチェット値を用いてブートストラップ鍵からラチェット認証鍵を作り出す。そして、クラウドサービス6は、データベース7内のデバイスレコードにあるデバイス1403のステータスをブートストラップ・ステート1508から次のワークフローステート、図15の例だと「検疫(クアランティン)」という名称の中間ステート1512へと、1510でラチェットフォワードする(ラチェットで前方へ進める)。
次に、または同時に、クラウドサービス6は、そのラチェット値をデバイス1403に送信し、デバイス1403はブートストラップ鍵から同じラチェット認証鍵を作成する。これは上述したように対称鍵を用いて事前に作成されていたものであり、ターゲットデバイス8はそのステータスをブートストラップ・ステート1504から次のワークフローステート、例えば図3の例だと「検疫(クアランティン)」という名称の中間ステート1516へと、1514でラチェットフォワードする(ラチェットで前方へ進める)。
図15の例において、デバイス1403が中間ステート「検疫(クアランティン)」1516にあり、データベース7内のデバイスレコードのデバイス1403のステータスも中間ステート「検疫(クアランティン)」1510にある場合、デバイス1403がクラウドサービス6への認証および登録を無事に完了していれば、デバイス1403はクラウドサービス6によって、システムおよびネットワークへの限定的な接続が与えられる。この限定的な接続性を選択したのは、デバイス1403が中間ステート「検疫(クアランティン)」1514にあるときに、クラウドサービス6に害を及ぼしたり、そのセキュリティを侵害したりすることができないようにするためである。いくつかの実例では、デバイス1403が中間ステート「検疫(クアランティン)」1516にあり、そこで限定的な接続性を与えられたとき、クローズドの検疫(クアランティン)ネットワークのみへの接続を許可することもできる。
次に、デバイス1403が中間ステート「検疫(クアランティン)」にある状態で、デバイス1403のユーザが、上述の認証およびプロセスを用いてデバイス1403のクラウドサービス6に対する認証と登録を再度行い、鍵プロビジョニング・プロセス1500を継続する。認証およびプロビジョニング・プロセスが無事に完了し、デバイス1403に適用されているワークフローステップ・ポリシーの次のワークフローステップによって必要であると識別されたコミッショニング担当者の承認が受信された場合、クラウドサービス6は上述のラチェット値をさらに生成し、この追加生成されたラチェット値を使用してラチェット鍵から新たなラチェット認証鍵を作成する。このラチェット鍵は上述のように、ブートストラップ鍵と選択したQKDキーから順番に作成される。クラウドサービス6は次に、データベース7内のデバイスレコードのデバイス1403のステータスを、中間ステート「検疫(クアランティン)」1512から次のワークフローステート、例えば図15の例だと「成果(プロダクション)」という名称の最終ステート1520へと、1518でラチェットフォワードする(ラチェットで前方へ進める)。
クラウドサービス6は次に、または同時に、追加生成されたラチェット値をデバイス1403に送信し、デバイス1403はそのラチェット鍵から同様の新たなラチェット認証鍵を作成する。このラチェット鍵は上述のように、ブートストラップ鍵と対称鍵から順番に事前に作成されたものである。そして、デバイス1403はそのステータスを中間ステート「検疫(クアランティン)」1516から次のワークフローステート、例えば図15の例だと最終ステート「成果(プロダクション)」1524へと、1522でラチェットフォワードする(ラチェットで前方へ進める)。
図15の実例において、デバイス1403が最終ステート「成果(プロダクション)」1524にあり、データベース7内のデバイスレコードのデバイス1403のステートも最終ステート「成果(プロダクション)」である場合、デバイス1403がクラウドサービス6に対する認証と登録を無事に完了していれば、クラウドサービス6から完全な接続性を与えられる。ここで提供される接続性については、デバイス1403を管理する組織であるMNO1404の接続ポリシーによって設定することができる。最後の「成果(プロダクション)」鍵によって、「検疫(クアランティン)」ステートより広範囲のクラウドサービス機能へのアクセスが許可されることとなる。提供されるアクセスは、関連するワークフロー・ポリシーのスコープによって定義されている。
図15の例は、デバイス1403が当初のブートストラップ・ステート1504から中間ステート「検疫(クアランティン)」1516、最終ステート「成果(プロダクション)」1524へとラチェットされ、システムとネットワークへの完全な接続性を提供する、鍵プロビジョニング・プロセス1500を示している。他の例では、当初のブートストラップ・ステートと最終プロダクション・ステートとの間に、特定の組織の方針が必要とする、幾つもの中間ステートが存在する可能性がある。これらの中間ステートは、図3の例で示されたものと同じ例が含まれるように設定されている。デバイス1403をあるステートから次のステートへとラチェットさせる要件は、要望通りに設定することが可能であり、具体的にはユーザ認証やコミッショニング担当者の承認が必要かどうかや、その数の設定などについて、必要に応じて設定することが可能である。限定的な接続性を提供する中間ステート「検疫(クアランティン)」を提供することは必須ではない。
ある状況下においては、デバイス1403と関連付けられる全てのキーをリボークし、デバイス1403を元の製造施設の状態へ戻す必要性が生じるかもしれない。これを実行するには、全てのコミッショニング関係者およびコミッショニング署名のフィールドをゼロ化、全てのラチェットフィールドをゼロ化、そして現在のワークフローステップをスタートに戻す設定を行う。これによって、デバイス1403とデータベース7内のデバイス1403のレコードの両方が、それぞれブートストラップ・ステート1504と1508へとリセットされる。その後、デバイス1403は、要望に応じて再び、登録プロセスを開始することができる。
第3の実施形態によると、APPプロバイダは、SDKを提供されることによって、安全なセッションを形成し、クラウドサービス上のAPIをSIMまたはSIM上の対称鍵の情報を漏らすことなく呼び出すことができる。
導出データはMNOによってクラウドサービスへと提供されるが、ブートストラップ鍵はMNOにとって既知の情報であるため潜在的に脆弱なので、ブートストラップ鍵からラチェットプロセスによって生成される後続のキーはMNOにとって未知の情報であるということが、理解されるだろう。
上記から、開示された第3の実施形態は上記に設定した到達目標を達成できることが、理解されるだろう。
第3の実施形態は、第1と第2の実施形態に関連して上記に示し、そして図4から図13を参照して説明した、より詳細な例に沿って実行することができる。
上述した第3の実施形態の図例では、MNOがクラウドサービスへの導出データのプロビジョニングを実行する。
上述した第3の実施形態の図例では、クラウドサービス6に対して提供された導出データはブートストラップ鍵として使用される。他の例では、クラウドサービス6とSIM1402を有するデバイス1403の両方が同じ追加処理を実行することができるのであれば、導出データはブートストラップ鍵を生成するために、さらなるプロセスで処理される可能性がある。
上述の第3の実施形態の図例において、SIMは例えば、物理的SIMカード、またはeSIMなどである。
上述の第3の実施形態の例では、対称鍵を有するSIMを使用している。他の例では、既存の共有秘密がインストールされている任意のユーザデバイスを使用することができるが、このインストール済みの共有秘密は導出データの土台として使用されているものである。いくつかの例では、既存の共有秘密が対称暗号鍵である場合がある。このようなデバイスの例として、トラステッドプラットフォームモジュール(TPM)がある。
第3の実施形態は、デバイスが製造業者を離れた後も含めて、いつでも使用することができ、エンドユーザの管理下である。デバイスが携帯電話またはモバイル通信用のSIMを備えた他のデバイスである例では、第3の実施形態は、その携帯電話の寿命中であればいつでも、配置されて何年も経過した後であっても、使用することができる。なぜなら、その携帯電話のアプリがブートストラップ鍵を導出することができ、そのブートストラップ鍵をクラウドサービスが格納することが可能、またはMNOがクラウドサービスに対してブートストラップ鍵を提供することが可能だからである。
上記から理解できるように、開示された実施形態によって、デバイスは対称暗号鍵でキーフィルされることが可能である。コミッショニング担当者は、そのデバイスに配備された最終的に出力された暗号鍵について、そのアクセスまたは情報を持つことはない。さらに、デバイス上に鍵を格納するために使用される記憶保護機能があるため、デバイスのユーザは、そのデバイスに配布されたブートストラップ鍵または最終的に出力された暗号鍵についての情報は一切持つことがない。したがって、デバイスに配布されたプロダクション暗号鍵の安全性が保証され、そのプロダクション暗号鍵がトラストレス(管理者による承認を必要としない)な形でデバイスにロードすることができる。ここで、クラウドサービス以外で、デバイスに配布されたプロダクション暗号鍵を関係者の誰かが保有していることを期待する必要はない。当然のことながら、デバイスを認証し、サービスを提供するためには、対称プロダクション暗号鍵の共有コピーを保有していなければならない。デバイスへのキーフィルは、セキュリティ担当者が物理的にデバイスのある場所へ移動し手動でデバイスにキーフィルすることなく、可能である。
いくつかの例では、ユーザは、自身のデバイスを使用してクラウドサービスにログオンを試みる際にユーザが入力できる「強制使用」コードを提供されることがある。クラウドサービスは、強制使用コードに応答して、そのデバイスで出力された暗号鍵をリボークすることによって、不正使用を防止する。いくつかの例では、クラウドサービスは、強制使用コードに応答して、そのデバイスをリモートワイプする可能性がある。いくつかの例では、強制使用コードに応答して、第三者に対して強制使用コードの使用を隠すために、そのデバイスに変造、偽造したデータをロードする可能性がある。
出力された暗号鍵は、そのデバイスによるクラウドサービスへのアクセスを可能とする。デバイスによるウェブ利用は、クラウドサービス内の承認設定によって、そのデバイスを管理する組織によって選択され、権限を与えられた宛先に限定することができる。デバイスによるウェブ利用および他のリソースへのアクセスは、クラウドサービス内で提供されるサービスによって完全に規制、ログ、検証される可能性がある。
様々な暗号鍵の使用によって、異なる段階での鍵の配布プロセスが可能となり、これによって鍵プロビジョニング・プロセスを安全な方法で一元的に管理制御することができる。そして、プロセスに関与するデバイス、アプリケーション、ユーザがネットワークにさらされる可能性を制限することができる。
本出願の方法によって、クラウドサービスを用いて、鍵プロビジョニングとコミッショニングのプロセスを安全で検証済みのトランザクションとすることができ、完全な監査が可能となる。
簡潔かつ明確にするために、上記の例は単一のターゲットデバイスに対する単一の暗号鍵の配布に関するものであるが、この方法によって、自動化されたトラストレス(管理者による承認を必要としない)なキーフィルによって、任意の数のターゲットデバイスに対して、任意の数の暗号鍵を配布することが可能である。
本出願の方法は、B2BやB2Cモデル上で、自動化キーやデバイスのブートストラップ鍵などの大量のキー、例えばネットワーク通信会社を基盤とするサービスプロバイダ、デバイス製造業者、政府、大企業体、そして個々の組織/ユーザグループなどに対して、配送するのに使用することができる。
上記から理解できるように、本出願の方法は、量子セキュア・鍵プロビジョニングおよび対称鍵の管理に対するグローバルな解決策を提供するものである。これによって、安全なプライベート・チャネル上のデータや情報のグローバルな流通、行為者のグローバルな流通と管理、デバイス、ユーザ、システム、アクセスのグローバルな認証をサポートすることができる。
図示された実施形態では、暗号鍵がターゲットデバイスへと配備される。ターゲットデバイスは、例えばエンドポイントデバイス(EPD)など、任意のタイプのデバイスが使用できる。暗号鍵が配備される対象のターゲットデバイスが個別のデバイスである必要はなく、「ターゲットデバイス」はシステム、またはいかなるタイプのエンドポイントでもよい。
いくつかの例では、デバイスが検疫(クアランティン)ステートにあるときに、ソフトウェアやプロファイル、メンテナンス、システムアクセスの更新など、デバイスに必要な更新が実行されることがあるが、クラウドサービスがそのデバイスに完全な接続性を与えるものではない。このリストは網羅的列挙を意図したものではない。
上述の実施形態において、システムは第1の実施形態にしたがって、少なくとも1つの衛星1を含む。いくつかの例では、システムは、例えば異なる光通信性能および/または異なる量子鍵プロビジョニング技法をサポートする性能などの、異なる性能を有する衛星を含めた衛星の集まりを有することがある。
上述の実施形態において、システムは、2つの光地上受信機(OGR)2を含む。システムは、任意の数のOGR2を有することが可能である。例えば、10,000以上など、多数のOGR2となる可能性もある。
上述の実施形態において、HSM4は物理的であってもバーチャルであってもよい。
上述の実施形態において、HSM4はOGR2内で構成される。他の例では、一部と言うよりむしろ全てにおいて、HSM4はOGR2に安全に接続することができる。いくつかの例では、HSM4はシステムのユーザによってコントロールされる。
上述の実施形態には、製造施設5を含む。他の例ではむしろ、あらゆるタイプの施設がブートストラップ鍵をデバイスにインジェクトすることが可能であり、安全な方法でクラウドサービスと通信を行うことができる。
上述の実施形態において、製造施設は、ブートストラップ・ターミナルを用いて、クラウドサービスと通信を行う。これは必須ではなく、他の手段を使用することができる。
上述の実施形態において、システムは量子鍵プロビジョニング・システムである。他の例では、暗号鍵に加えて、または暗号鍵の代替として、他の暗号化アイテムがプロビジョン、配布、配信される可能性がある。他の暗号化アイテムの例には、暗号トークン、暗号コイン、価値移転が含まれる。
上述の実施形態は完全に自動化されている。いくつかの例では、システムのユーザまたはオペレータが、そのメソッドのステップを実行させるために手動で指示を出すことができる。
本発明の実施形態の説明において、システムのパーツは、コンピューティングデバイスおよび/または電子デバイスの形式で実装することができる。このようなデバイスは、マイクロプロセッサ、コントローラ、または他の適切なタイプのプロセッサなど、1つ以上のプロセッサを含むことができる。これらのプロセッサによって、デバイスのオペレーションを制御するためのコンピュータが実行可能な命令を処理し、ルーティング情報を収集し記録することができる。いくつかの例では、例えばシステム・オン・チップ構造が使用されている事例では、プロセッサには1つ以上の固定のファンクションブロック(アクセラレータとも呼ばれる)を含めることができ、ハードウェア内に(ソフトウェアまたはファームウェアではなく)メソッドの一部を実装することとなる。オペレーティングシステムまたは他の適切なプラットフォームソフトウェアから構成されているプラットフォームのソフトウェアは、アプリケーションソフトウェアをデバイス上で実行可能にするために、コンピューティングベースのデバイスにて提供される可能性がある。
本書で説明する様々な機能は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装することが可能である。ソフトウェアに実装する場合、コンピュータで読み込み可能な媒体上の1つ以上の命令またはコードとして、保存または転送することができる。コンピュータで読み込み可能な媒体には、例えばコンピュータで読み込み可能なストレージ媒体がある。コンピュータで読み込み可能なストレージ媒体には、揮発性または不揮発性、取り外し可能または取り外しができない媒体を含めることが可能であり、これらは情報記憶のための任意のメソッドまたは技術、例えばコンピュータ可読命令、データ構造、プログラムモジュールや他のデータによって実装される。コンピュータで読み込み可能なストレージ媒体は、コンピュータがアクセス可能なストレージ媒体であればよい。例としてであり限定的ではないが、そのようなコンピュータで読み込み可能なストレージ媒体には、RAM、ROM、EEPROM、フラッシュメモリや他のメモリデバイス、CD-ROMや他の光学ディスク記憶装置、磁気ディスク記憶装置や他の磁気記憶装置、または要求したプログラムコードを送信または保管するために命令形式またはデータ構造の形式で使用することができ、コンピュータによるアクセスが可能である他の任意の媒体が含まれる。本書で使用するディスクおよびディスクには、コンパクトディスク(CD)、レーザーディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスク(BD)が含まれる。さらに言うと、電波信号はコンピュータで読み込み可能なストレージ媒体のスコープには含まれていない。コンピュータで読み込み可能な媒体には、ある場所から別の場所へとコンピュータプログラムの転送を手助けするあらゆる媒体を含む通信媒体も含まれる。コネクションとは、例えば通信媒体がなり得る。例えば、ソフトウェアが、ウェブサイト、サーバー、または他のリモートソースから、同軸ケーブル、光ファイバー・ケーブル、ツイストペア、DSL、または赤外線や無線、マイクロ波などのワイヤレス技術を用いて送信される場合、通信媒体の定義に含まれる。上記の組み合わせについても、コンピュータで読み込み可能な媒体の範囲内に含むこととする。
代替的、または追加的に、本書で説明した機能は、少なくとも部分的に、1つ以上のハードウェアロジックコンポーネントによって、実行することができる。例えば、限定的ではないが、使用することができるハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ(FPGA)、プログラムスペシフィックインテグレイティッドサーキット(ASIC)、プログラムスペシフィックスタンダードプロダクト(ASSP)、システム・オン・チップ・システム(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが含まれる。
単一のシステムとして図示されているが、第1と第2の実施形態のシステムは分散型システムでもあり得ることを理解されたい。
上述の有益性および有効性は、1つの実施形態に関連するものでも、複数の実施形態に関連するものでもよい。実施形態は、記載された問題のいずれかまたは全てを解決するもの、または記載された有益性および有効性のいずれかまたは全てを有するものに限定されるものではない。バリアントは、本発明の範囲に含まれると考えるべきである。
ある1つのアイテムに言及することは、それらのアイテムの1つ以上に言及することである。本書で使用された「構成される/含む」という語句には、認識されたメソッドのステップや要素を含めた意味であるが、そのようなステップや要素は排他的リストを構成するものではなく、メソッドおよび装置には追加的なステップや要素が含まれる可能性がある。
本書では、「コンポーネント」と「システム」という語句は、プロセッサが実行したときに特定の機能が実行されるように、コンピュータで実行可能な命令で設定されたコンピュータで読み込み可能なデータストレージを含有することが意図されている。コンピュータで実行可能な命令には、ルーティン、関数、または同類のものが含まれる。コンポーネントまたはシステムは、単一のデバイス上にローカライズされることもあれば、複数のデバイスに分散される場合があることも理解されたい。
さらに、本書で使用された「例示的」という語句は、「何かの図示や例示として扱われる」という意味を意図する。
さらに、「含める」という語句が詳細な説明か特許請求範囲のどちらかで使用される限りにおいては、「構成する/含む」という語句が特許請求範囲における暫定的な語句として用いられる場合があるのと同様に、そのような語句は包括的であることが意図されている。
図は例示的メソッドを説明している。メソッドは、特定のシーケンス内で実行されている一連の動作として示され、説明されているが、そのメソッドはシーケンスの順序によって限定されるものではないことを理解されたい。例えば、いくつかの動作が、本書に記載されたのと異なる順序で発生する可能性もある。さらに付け加えると、ある動作が別の動作と同時に発生する可能性もある。さらに、時には、全ての動作が本書に記載されたメソッドを実行するのに必要とされるわけではない。
さらに、本書に記載した動作は、コンピュータが実行可能な命令から成り立つものである。この命令は、1つ以上のプロセッサによって実行される、および/またはコンピュータで読み込み可能な媒体上に記憶される。コンピュータが実行可能な命令には、ルーティン、サブルーティン、プログラム、実行スレッド、および/または同類のものを含む。さらに、メソッドの動作の結果は、コンピュータで読み込み可能な媒体への記憶、ディスプレイ装置上への表示、および/または同類のことが可能である。
本書に記載したメソッドのステップの順序は例示的であるが、任意の適切な順序にて実行することができる。または、適切である場合には同時に実行することもできる。さらに、本書に記載した主題を逸脱しない範囲で、ステップを追加または置換、または個々のステップを任意のメソッドから削除することもできる。
上述の例のいずれも、その態様は、求められる効果を失うことなく、記載された他の例のいずれかの態様と組み合わせて、さらなる事例を形成する可能性がある。
上述の例のいずれも、その態様は、求められる効果を失うことなく、記載された他の例のいずれかの態様と組み合わせて、さらなる事例を形成する可能性がある。
上記の出願された実施形態の説明は、ほんの一例として挙げられたものであり、当業者による様々な変更が可能であることを理解されたい。上記に記載した内容には、1つ以上の実施形態の例が含まれる。もちろん、前述の態様を説明する目的において、上記のデバイスまたはメソッドに関して、全ての想定可能な修正および変更について記載することは可能ではないが、当業者の1人であれば、様々な態様に関して、多くのさらなる修正および置換が可能であると認識できる。
Claims (126)
- 暗号鍵プロビジョニング方法の構成要素:
量子コンピューティングの安全な方法にて、共有秘密データをデバイスへ提供し、セキュリティサービスにも提供すること;
共有秘密データを用いて、ルート鍵を提供すること;および
ルート鍵を一連のステージの土台として使用し、各ステージに含むオペレーションで、スタート鍵を異なる生成鍵へと変換する。そして、これと平行して、同じステージがデバイスおよびセキュリティサービスで実行されること;
前記のルート鍵は、シーケンスの第1ステージのスタート鍵として使用され、シーケンスの各ステージで生成された生成鍵は、シーケンスの最終ステージのものは除き、シーケンスの次のステージのスタート鍵として使用すること;および
前記の生成鍵は、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成されたものであり、対称鍵であること。 - 請求項1に記載の、デバイスおよびセキュリティサービスの最終ステージによって生成された生成鍵を用いて、さらにデバイスをセキュリティサービスに対して認証させる方法。
- 請求項1または請求項2に記載の、前記の共有秘密データは対称暗号鍵、または対称暗号鍵から導出されたデータである方法。
- 先行する請求項に記載の、前記の一連のステージの各ステージのスタート鍵を、デバイスおよびセキュリティサービスにて対称鍵として使用し、デバイスをセキュリティサービスに対して認証させ、デバイスとセキュリティサービス間における安全な通信を可能にする方法。
- 請求項4に記載の、デバイスがセキュリティサービスに対して認証された後、前記のセキュリティサービスがデバイスにデータを送信し、ステップのシーケンスのうち現在のステージのために、このデータを用いて開始キーを異なるキーへと変換することをさらに含める方法。
- 先行する請求項に記載の、前記の各ステージがラチェット・オペレーションから構成される方法。
- 請求項6に記載の、請求項5に従属した状態にあるとき、前記の送信されたデータがラチェット値である方法。
- 先行する請求項に記載の、ステージのシーケンス内に複数のステージが存在している方法。
- 請求項8に記載の、ステージのシーケンスによって、対応する鍵のシーケンスが生成され、デバイスをセキュリティサービスに対して認証させるために対称鍵として使用する時に、鍵のシーケンスの異なる鍵が異なるスコープまたはパーミッションと関連付けられている方法。
- 請求項3に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータがルート鍵として使用される方法。
- 請求項3に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵を提供するためにさらに処理される方法。
- 請求項3、10または11のいずれか一項に記載の、前記の対称暗号鍵または対称暗号鍵から導出したデータが、量子鍵配送(QKD)メソッドによって、デバイスとセキュリティサービスに提供される方法。
- 請求項3、10または11のいずれか一項に記載の、前記の対称暗号鍵または対称暗号鍵から導出されたデータが、古典的に安全なまたは物理的なメカニズムによって、デバイスとセキュリティサービスに提供される方法。
- 請求項3、10または11のいずれか一項に記載の、前記の対称暗号鍵が、量子鍵配送(QKD)メソッドによって、デバイスとセキュリティサービスに提供されたキーから導出される方法。
- 請求項3、10または11のいずれか一項に記載の、前記の対称暗号鍵が、古典的に安全なまたは物理的なメカニズムによって、デバイスとセキュリティサービスに提供されたキーから導出される方法。
- 請求項3、10または11のいずれか一項に記載の、前記の対称暗号鍵から導出されたデータが、デバイス上に記憶された対称暗号鍵から導出されたものである方法。
- 請求項16に記載の、前記のデバイスがSIMである、またはSIMから構成されており、対称暗号鍵がSIM上に記憶される方法。
- 請求項17に記載の、前記の対称暗号鍵がOTA鍵である方法。
- 請求項16または請求項17に記載の、前記のSIM上の対称暗号鍵から導出されたデータが、そのSIMに関連するモバイル通信事業者(MNO)によって、提供される方法。
- 先行する請求項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるためにユーザ認証を必要とする方法。
- 先行する請求項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるために権限付与を必要とする方法。
- 請求項21に記載の、前記の権限付与がコミッショニング担当者によって提供されなければならない方法。
- 先行する請求項に記載の、前記のステージのシーケンスが、ワークフローによって定義される方法。
- 請求項23に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるためにユーザ認証を必要とするように設定可能である方法。
- 請求項23または請求項24に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるために、1つまたは複数の権限付与を必要とするように設定可能である方法。
- 請求項25に記載の、前記のワークフローが、1つまたは複数の権限付与それぞれについて、誰が行うよう要求されるかを特定するための設定が可能である方法。
- 請求項2から4のいずれか一項に記載の、または請求項2から4のいずれか一項のいずれかの従属請求項に記載の、デバイスのセキュリティサービスに対する認証に続いて、セキュリティサービスが、認証を実行するために使用された鍵のステージに関連するスコープを有するトークンを、デバイスに対して発行する方法。
- 請求項27に記載の、前記のトークンがジェイソン・ウェブ・トークン(JWT)である方法。
- 先行する請求項に記載の、前記のセキュリティサービスがクラウドサービスである方法。
- デバイスの認証方法の構成要素:
量子コンピューティングによる安全なメソッドによって、共有秘密データをデバイスに提供すること、およびセキュリティサービスにも提供すること;
ルート鍵を提供するために、提供された共有秘密データを使用すること;および
ルート鍵をステージのシーケンスの土台として使用し、前記の各ステージがスタート鍵を異なる生成鍵へと変換するオペレーションから構成され、同じステージがデバイスとセキュリティサービスで平行して実行されること;
前記のルート鍵がシーケンスの最初のステージのためのスタート鍵として使用され、シーケンスの各ステージで生成された生成鍵が、シーケンスの最終ステージを除いて、シーケンスの次のステージのためのスタート鍵として使用されること;
さらに、デバイスのセキュリティサービスに対する認証を行うために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用することを含む。 - 請求項30に記載の、前記の共有秘密データは対称暗号鍵または対称暗号鍵から導出されたデータである方法。
- 請求項30または請求項31に記載の、デバイスとセキュリティサービスにおけるステージのシーケンスの各ステージのためのスタート鍵が、デバイスをセキュリティサービスに対して認証しデバイスとセキュリティサービス間の安全な通信を可能とするために、対称鍵として使用される方法。
- 請求項32に記載の、デバイスがセキュリティサービスに対して認証された後、セキュリティサービスがデバイスにデータを送信し、このデータを用いて、一連のステップの現在のステージのためにスタート鍵を異なる生成鍵に変換することをさらに含む方法。
- 請求項30から33のいずれか一項に記載の、各ステージがラチェット・オペレーションから構成される方法。
- 請求項34に記載の、請求項33に従属した状態にあるとき、前記の送信されたデータがラチェット値である方法。
- 請求項30から35のいずれか一項に記載の、ステージのシーケンス内に複数のステージが存在している方法。
- 請求項36に記載の、前記のステージのシーケンスが対応するキーのシーケンスを生成し、キーのシーケンスの異なるキーが、デバイスをセキュリティサービスに対して認証するために対称鍵として使用される場合、異なるスコープまたはパーミッションに関連付けられている方法。
- 請求項31に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵として使用される方法。
- 請求項31に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵を提供するためにさらに処理される方法。
- 請求項31、38、または39のいずれか一項に記載の、前記の対称暗号鍵または対称暗号鍵から導出されたデータが、量子鍵配送(QKD)メソッドによって、デバイスとセキュリティサービスに提供される方法。
- 請求項31、38、または39のいずれか一項に記載の、対称暗号鍵または対称暗号鍵から導出されたデータが、古典的に安全なまたは物理的なメカニズムによって、デバイスとセキュリティサービスに提供される方法。
- 請求項31、38、または39のいずれか一項に記載の、前記の対称暗号鍵が、量子鍵配送(QKD)メソッドによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項31、38、または39のいずれか一項に記載の、前記の対称暗号鍵が、古典的に安全なまたは物理的なメカニズムによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項31、38、または39のいずれか一項に記載の、前記の対称暗号鍵から導出されたデータが、デバイス上に記憶された対称暗号鍵から導出される方法。
- 請求項44に記載の、前記のデバイスがSIMである、またはSIMから構成されており、対称暗号鍵がSIM上に記憶される方法。
- 請求項45に記載の、前記の対称暗号鍵がOTA鍵である方法。
- 請求項45または請求項46に記載の、前記の対称暗号鍵から導出されたデータが、そのSIMに関連するモバイル通信事業者(MNO)によって、提供される方法。
- 請求項30から47のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるためにユーザ認証を必要とする方法。
- 請求項30から48のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるために権限付与を必要とする方法。
- 請求項49に記載の、前記の権限付与がコミッショニング担当者によって提供される方法。
- 請求項30から50のいずれか一項に記載の、前記のステージのシーケンスがワークフローによって定義される方法。
- 請求項51に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるためにユーザ認証を必要とするように設定可能である方法。
- 請求項51または請求項52に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるために、1つまたは複数の権限付与を必要とするように設定可能である方法。
- 請求項53に記載の、前記のワークフローが、1つまたは複数の権限付与それぞれについて、誰が行うよう要求されるかを特定するための設定が可能である方法。
- 請求項30から54のいずれか一項に記載の、デバイスのセキュリティサービスに対する認証に続いて、セキュリティサービスが、認証を実行するために使用された鍵のステージに関連するスコープを有するトークンを、デバイスに対して発行する方法。
- 請求項55に記載の、前記のトークンがジェイソン・ウェブ・トークン(JWT)である方法。
- 請求項30から56のいずれか一項に記載の、前記のセキュリティサービスがクラウドサービスである方法。
- 対称鍵プロビジョニングの方法の構成要素:
量子コンピューティングの安全な方法にて、デバイス上の秘密データから導出したデータをセキュリティサービスに提供すること;
秘密データから導出した提供データを用いて、ルート鍵を提供すること;
ルート鍵を一連のステージの土台として使用し、各ステージに含むオペレーションで、スタート鍵を異なる生成鍵へと変換する。そして、これと平行して、同じステージがデバイスおよびセキュリティサービスで実行されること;
前記のルート鍵は、シーケンスの第1ステージのスタート鍵として使用され、シーケンスの各ステージで生成された生成鍵は、シーケンスの最終ステージのものは除き、シーケンスの次のステージのスタート鍵として使用すること;
前記の生成鍵は、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成されたものであり、対称鍵であること。 - 請求項58に記載の、デバイスのセキュリティサービスに対する認証を行うために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用することをさらに含む。
- 請求項58または請求項59に記載の、前記の秘密データは対称暗号鍵または対称暗号鍵から導出されたデータである方法。
- 請求項58から60のいずれか一項に記載の、デバイスとセキュリティサービスにおけるステージのシーケンスの各ステージのためのスタート鍵が、デバイスをセキュリティサービスに対して認証しデバイスとセキュリティサービス間の安全な通信を可能とするために、対称鍵として使用される方法。
- 請求項61に記載の、デバイスがセキュリティサービスに対して認証された後、セキュリティサービスがデバイスにデータを送信し、このデータを用いて、一連のステップの現在のステージのためにスタート鍵を異なる生成鍵に変換することをさらに含む方法。
- 請求項58から62のいずれか一項に記載の、前記の各ステージがラチェット・オペレーションから構成される方法。
- 請求項63に記載の、請求項62に従属した状態にあるとき、前記の送信されたデータがラチェット値である方法。
- 請求項58から64のいずれか一項に記載の、ステージのシーケンス内に複数のステージが存在している方法。
- 請求項65に記載の、前記のステージのシーケンスが対応するキーのシーケンスを生成し、キーのシーケンスの異なるキーが、デバイスをセキュリティサービスに対して認証するために対称鍵として使用される場合、異なるスコープまたはパーミッションに関連付けられている方法。
- 請求項60に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵として使用される方法。
- 請求項60に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵を提供するためにさらに処理される方法。
- 請求項60から67のいずれか一項に記載の、前記の対称暗号鍵または対称暗号鍵から導出されたデータが、量子鍵配送(QKD)メソッドによって、デバイスとセキュリティサービスに提供される方法。
- 請求項60、67、または68のいずれか一項に記載の、対称暗号鍵または対称暗号鍵から導出されたデータが、古典的に安全なまたは物理的なメカニズムによって、デバイスとセキュリティサービスに提供される方法。
- 請求項60、67、または68のいずれか一項に記載の、前記の対称暗号鍵が、量子鍵配送(QKD)メソッドによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項60、67、または68のいずれか一項に記載の、前記の対称暗号鍵が、古典的に安全なまたは物理的なメカニズムによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項60、67、または68のいずれか一項に記載の、前記の対称暗号鍵から導出されたデータが、デバイス上に記憶された対称暗号鍵から導出される方法。
- 請求項73に記載の、前記のデバイスがSIMである、またはSIMから構成されており、対称暗号鍵がSIM上に記憶される方法。
- 請求項74に記載の、前記の対称暗号鍵がOTA鍵である方法。
- 請求項74または請求項75に記載の、前記のSIM上の対称暗号鍵から導出されたデータが、そのSIMに関連するモバイル通信事業者(MNO)によって、セキュリティサービスに提供される方法。
- 請求項58から76のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるためにユーザ認証を必要とする方法。
- 請求項58から77のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるために権限付与を必要とする方法。
- 請求項78に記載の、前記の権限付与がコミッショニング担当者によって提供される方法。
- 請求項58から79のいずれか一項に記載の、前記のステージのシーケンスがワークフローによって定義される方法。
- 請求項80に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるためにユーザ認証を必要とするように設定可能である方法。
- 請求項80または請求項81に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるために、1つまたは複数の権限付与を必要とするように設定可能である方法。
- 請求項82に記載の、前記のワークフローが、1つまたは複数の権限付与それぞれについて、誰が行うよう要求されるかを特定するための設定が可能である方法。
- 請求項58から83のいずれか一項に記載の、デバイスのセキュリティサービスに対する認証に続いて、セキュリティサービスが、認証を実行するために使用された鍵のステージに関連するスコープを有するトークンを、デバイスに対して発行する方法。
- 請求項84に記載の、前記のトークンがジェイソン・ウェブ・トークン(JWT)である方法。
- 請求項58から85のいずれか一項に記載の、前記のセキュリティサービスがクラウドサービスである方法。
- デバイス認証の方法の構成要素:
量子コンピューティングの安全な方法にて、デバイス上の秘密データから導出したデータをセキュリティサービスに提供すること;
秘密データから導出した提供データを用いて、ルート鍵を提供すること;および
ルート鍵を一連のステージの土台として使用し、各ステージに含むオペレーションで、スタート鍵を異なる生成鍵へと変換する。そして、これと平行して、同じステージがデバイスおよびセキュリティサービスで実行されること;
前記のルート鍵は、シーケンスの第1ステージのスタート鍵として使用され、シーケンスの各ステージで生成された生成鍵は、シーケンスの最終ステージのものは除き、シーケンスの次のステージのスタート鍵として使用すること;
デバイスのセキュリティサービスに対する認証を行うために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用することをさらに含む。 - 請求項87に記載の、前記の秘密データは対称暗号鍵または対称暗号鍵から導出されたデータである方法。
- 請求項87または請求項88に記載の、デバイスとセキュリティサービスにおけるステージのシーケンスの各ステージのためのスタート鍵が、デバイスをセキュリティサービスに対して認証しデバイスとセキュリティサービス間の安全な通信を可能とするために、対称鍵として使用される方法。
- 請求項89に記載の、デバイスがセキュリティサービスに対して認証された後、セキュリティサービスがデバイスにデータを送信し、このデータを用いて、一連のステップの現在のステージのためにスタート鍵を異なる生成鍵に変換することをさらに含む方法。
- 請求項87から90のいずれか一項に記載の、前記の各ステージがラチェット・オペレーションから構成される方法。
- 請求項91に記載の、請求項90に従属した状態にあるとき、前記の送信されたデータがラチェット値である方法。
- 請求項87から92のいずれか一項に記載の、ステージのシーケンス内に複数のステージが存在している方法。
- 請求項93に記載の、前記のステージのシーケンスが対応するキーのシーケンスを生成し、キーのシーケンスの異なるキーが、デバイスをセキュリティサービスに対して認証するために対称鍵として使用される場合、異なるスコープまたはパーミッションに関連付けられている方法。
- 請求項88に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵として使用される方法。
- 請求項88に記載の、前記の提供された対称暗号鍵または対称暗号鍵から導出されたデータが、ルート鍵を提供するためにさらに処理される方法。
- 請求項88、95、または96のいずれか一項に記載の、前記の対称暗号鍵または対称暗号鍵から導出されたデータが、量子鍵配送(QKD)メソッドによって、デバイスとセキュリティサービスに提供される方法。
- 請求項88、95、または96のいずれか一項に記載の、対称暗号鍵または対称暗号鍵から導出されたデータが、古典的に安全なまたは物理的なメカニズムによって、デバイスとセキュリティサービスに提供される方法。
- 請求項88、95、または96のいずれか一項に記載の、前記の対称暗号鍵が、量子鍵配送(QKD)メソッドによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項88、95、または96のいずれか一項に記載の、前記の対称暗号鍵が、古典的に安全なまたは物理的なメカニズムによってデバイスとセキュリティサービスに提供された鍵から導出される方法。
- 請求項88、95、または96のいずれか一項に記載の、前記の対称暗号鍵から導出されたデータが、デバイス上に記憶された対称暗号鍵から導出される方法。
- 請求項101に記載の、前記のデバイスがSIMである、またはSIMから構成されており、対称暗号鍵がSIM上に記憶される方法。
- 請求項102に記載の、前記の対称暗号鍵がOTA鍵である方法。
- 請求項101または請求項102に記載の、前記の対称暗号鍵から導出されたデータが、SIMに関連するモバイル通信事業者(MNO)によって、セキュリティサービスに提供される方法。
- 請求項88から104のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるためにユーザ認証を必要とする方法。
- 請求項88から105のいずれか一項に記載の、ステージのシーケンスのうち少なくとも1つのステージが、そのステージを完了させるために権限付与を必要とする方法。
- 請求項106に記載の、前記の権限付与がコミッショニング担当者によって提供される方法。
- 請求項88から107のいずれか一項に記載の、前記のステージのシーケンスがワークフローによって定義される方法。
- 請求項108に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるためにユーザ認証を必要とするように設定可能である方法。
- 請求項108または請求項109に記載の、前記のワークフローが、ステージのシーケンスのうち1つ、いくつか、または全てのステージを完了させるために、1つまたは複数の権限付与を必要とするように設定可能である方法。
- 請求項111に記載の、前記のワークフローが、1つまたは複数の権限付与それぞれについて、誰が行うよう要求されるかを特定するための設定が可能である方法。
- 請求項88から111のいずれか一項に記載の、デバイスのセキュリティサービスに対する認証に続いて、セキュリティサービスが、認証を実行するために使用された鍵のステージに関連するスコープを有するトークンを、デバイスに対して発行する方法。
- 請求項112に記載の、前記のトークンがジェイソン・ウェブ・トークン(JWT)である方法。
- 請求項88から114のいずれか一項に記載の、前記のセキュリティサービスがクラウドサービスである方法。
- 暗号鍵プロビジョニング・システムの構成要素:
量子コンピューティングによる安全なメソッドによって、共有秘密データをデバイスに提供し、セキュリティサービスにも提供するように設定した手法;
ルート鍵を提供するために、提供された共有秘密データを使用するように設定した手法;および
ルート鍵をステージのシーケンスの土台として使用するように設定し、前記の各ステージがスタート鍵を異なる生成鍵へ変換するオペレーションを含んでおり、これと並行して、システムがデバイスおよびセキュリティサービスにおいて同じステージを実行するように設定した手法;
前記のルート鍵がシーケンスの第1ステージのためのスタート鍵として使用され、シーケンスの各ステージによって生成された生成鍵は、シーケンスの最終ステージのものを除いて、シーケンスの次のステージのためのスタート鍵として使用される;および前記のデバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵は、対称鍵である。 - 請求項115に記載の、デバイスをセキュリティサービスに対して認証するために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用するように設定された手法を、さらに含めるシステム。
- 請求項115または請求項116に記載の、前記の共有秘密データが対称暗号鍵または対称暗号鍵から導出したデータであるシステム。
- デバイス認証システムの構成要素:
量子コンピューティングによる安全なメソッドによって、前記の共有秘密データをデバイスに提供し、セキュリティサービスにも提供するように設定した手法;
ルート鍵を提供するために、提供された共有秘密データを使用するように設定した手法;および
ルート鍵をステージのシーケンスの土台として使用するように設定し、前記の各ステージがスタート鍵を異なる生成鍵へ変換するオペレーションを含んでおり、これと並行して、デバイスおよびセキュリティサービスにおいて同じステージを実行するように設定した手法;
前記のルート鍵がシーケンスの第1ステージのためのスタート鍵として使用され、シーケンスの各ステージによって生成された生成鍵は、シーケンスの最終ステージのものを除いて、シーケンスの次のステージのためのスタート鍵として使用される;および
デバイスのセキュリティサービスに対する認証を行うために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用するように設定した手法をさらに含む。 - 請求項118に記載の、前記の共有秘密データは対称暗号鍵または対称暗号鍵から導出されたデータであるシステム。
- 暗号鍵プロビジョニング・システムの構成要素:
量子コンピューティングによる安全なメソッドによって、デバイス上の秘密データから導出したデータをセキュリティサービスに提供するように設定した手法;
ルート鍵を提供するために、秘密データから導出した提供データを使用するように設定した手法;および
ルート鍵をステージのシーケンスの土台として使用するように設定し、前記の各ステージがスタート鍵を異なる生成鍵へ変換するオペレーションを含んでおり、これと並行して、デバイスおよびセキュリティサービスにおいて同じステージを実行するように設定した手法;
前記のルート鍵がシーケンスの第1ステージのためのスタート鍵として使用され、シーケンスの各ステージによって生成された生成鍵は、シーケンスの最終ステージのものを除いて、シーケンスの次のステージのためのスタート鍵として使用される;および
前記のデバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵は、対称鍵である。 - 請求項120に記載の、デバイスをセキュリティサービスに対して認証するために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用するように設定された手法を、さらに含めるシステム。
- 請求項120または請求項121に記載の、前記の秘密データが対称暗号鍵または対称暗号鍵から導出したデータであるシステム。
- デバイス認証システムの構成要素:
量子コンピューティングによる安全なメソッドによって、デバイス上の秘密データから導出したデータをセキュリティサービスに提供するように設定した手法;
ルート鍵を提供するために、秘密データから導出した提供データを使用するように設定した手法;および
ルート鍵をステージのシーケンスの土台として使用するように設定し、前記の各ステージがスタート鍵を異なる生成鍵へ変換するオペレーションを含んでおり、これと並行して、デバイスおよびセキュリティサービスにおいて同じステージを実行するように設定した手法;
前記のルート鍵がシーケンスの第1ステージのためのスタート鍵として使用され、シーケンスの各ステージによって生成された生成鍵は、シーケンスの最終ステージのものを除いて、シーケンスの次のステージのためのスタート鍵として使用される;
および、デバイスをセキュリティサービスに対して認証するために、デバイスとセキュリティサービスでシーケンスの最終ステージによって生成された生成鍵を使用するように設定された手法を、さらに含めること。 - 請求項123に記載の、前記の秘密データが対称暗号鍵または対称暗号鍵から導出されたデータであるシステム。
- プロセッサによって実行されると、請求項1から29、請求項30から57、請求項58から87、または請求項88から114のいずれかに記載の方法をプロセッサに実行させるコードまたはコンピュータ命令が記憶された、コンピュータで読み込み可能な媒体。
- プロセッサによって実行されると、請求項1から29、請求項30から57、請求項58から87、請求項88から114のいずれかに記載の方法をプロセッサに実行させる命令を含む、コンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2100910.5 | 2021-01-22 | ||
GB2100910.5A GB2603128B (en) | 2021-01-22 | 2021-01-22 | A system and method for trustless key provisioning |
PCT/GB2022/050164 WO2022157501A1 (en) | 2021-01-22 | 2022-01-21 | A system and method for trustless key provisioning |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024503921A true JP2024503921A (ja) | 2024-01-29 |
Family
ID=74858894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023544603A Pending JP2024503921A (ja) | 2021-01-22 | 2022-01-21 | トラストレス鍵プロビジョニングのシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP4282122A1 (ja) |
JP (1) | JP2024503921A (ja) |
AU (1) | AU2022210852A1 (ja) |
CA (1) | CA3204281A1 (ja) |
GB (1) | GB2603128B (ja) |
WO (1) | WO2022157501A1 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010013121A2 (en) * | 2008-07-28 | 2010-02-04 | Synaptic Laboratories Ltd. | Method and apparatus for initialising a cryptographic communications system |
US9002009B2 (en) * | 2010-06-15 | 2015-04-07 | Los Alamos National Security, Llc | Quantum key distribution using card, base station and trusted authority |
US9509506B2 (en) * | 2011-09-30 | 2016-11-29 | Los Alamos National Security, Llc | Quantum key management |
-
2021
- 2021-01-22 GB GB2100910.5A patent/GB2603128B/en active Active
-
2022
- 2022-01-21 JP JP2023544603A patent/JP2024503921A/ja active Pending
- 2022-01-21 WO PCT/GB2022/050164 patent/WO2022157501A1/en active Application Filing
- 2022-01-21 CA CA3204281A patent/CA3204281A1/en active Pending
- 2022-01-21 EP EP22703027.7A patent/EP4282122A1/en active Pending
- 2022-01-21 AU AU2022210852A patent/AU2022210852A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202100910D0 (en) | 2021-03-10 |
CA3204281A1 (en) | 2022-07-28 |
AU2022210852A1 (en) | 2023-09-07 |
EP4282122A1 (en) | 2023-11-29 |
GB2603128B (en) | 2023-11-08 |
WO2022157501A1 (en) | 2022-07-28 |
GB2603128A (en) | 2022-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11895247B2 (en) | System and method for authenticating and authorizing devices | |
US11606352B2 (en) | Time-based one time password (TOTP) for network authentication | |
JP7121459B2 (ja) | ハード/ソフトトークン検証を介したブロックチェーン認証 | |
US11881937B2 (en) | System, method and computer program product for credential provisioning in a mobile device platform | |
US8392702B2 (en) | Token-based management system for PKI personalization process | |
US11233647B1 (en) | Digital identity authentication system | |
KR20170139059A (ko) | 서버 또는 다른 디바이스로부터의 엔트로피에 기초한 클라이언트 디바이스의 인증 | |
EP2894891B1 (en) | Mobile token | |
US10375084B2 (en) | Methods and apparatuses for improved network communication using a message integrity secure token | |
US10609070B1 (en) | Device based user authentication | |
WO2021062020A1 (en) | Non-custodial tool for building decentralized computer applications | |
US11716312B1 (en) | Platform for optimizing secure communications | |
US9443069B1 (en) | Verification platform having interface adapted for communication with verification agent | |
CN113411187A (zh) | 身份认证方法和系统、存储介质及处理器 | |
WO2019226510A1 (en) | Methods and systems for multiple independent roots of trust | |
KR102288445B1 (ko) | 단체용 인증모듈의 온보딩 방법, 장치 및 프로그램 | |
JP2024503921A (ja) | トラストレス鍵プロビジョニングのシステムおよび方法 | |
Ahmed | SUPA: Strewn user-preserved authentication | |
Bartock et al. | Derived Personal Identity Verification (PIV) Credentials (DPC) Proof of Concept Research | |
Dočár | Bezpečnostní řešení pro cloudové technologie |