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

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

▶ カズアー アドヴァンスド テクノロジーズ リミテッドの特許一覧

特許7256862保護されたコンテナ間のセキュア通信方法およびそのシステム
<>
  • 特許-保護されたコンテナ間のセキュア通信方法およびそのシステム 図1
  • 特許-保護されたコンテナ間のセキュア通信方法およびそのシステム 図2
  • 特許-保護されたコンテナ間のセキュア通信方法およびそのシステム 図3
  • 特許-保護されたコンテナ間のセキュア通信方法およびそのシステム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-04
(45)【発行日】2023-04-12
(54)【発明の名称】保護されたコンテナ間のセキュア通信方法およびそのシステム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20230405BHJP
   G06F 21/60 20130101ALI20230405BHJP
   G06F 21/64 20130101ALI20230405BHJP
【FI】
G09C1/00 630C
G06F21/60 320
G06F21/64 350
【請求項の数】 8
(21)【出願番号】P 2021501143
(86)(22)【出願日】2019-03-26
(65)【公表番号】
(43)【公表日】2021-08-10
(86)【国際出願番号】 IL2019050351
(87)【国際公開番号】W WO2019186554
(87)【国際公開日】2019-10-03
【審査請求日】2022-03-11
(31)【優先権主張番号】258380
(32)【優先日】2018-03-26
(33)【優先権主張国・地域又は機関】IL
(73)【特許権者】
【識別番号】520372331
【氏名又は名称】カズアー アドヴァンスド テクノロジーズ リミテッド
【氏名又は名称原語表記】KAZUAR Advanced Technologies Ltd.
(74)【代理人】
【識別番号】110001302
【氏名又は名称】弁理士法人北青山インターナショナル
(72)【発明者】
【氏名】フィンチェルスタイン,ダニエル モンディ
(72)【発明者】
【氏名】ポラット,ユヴァル モシェ
(72)【発明者】
【氏名】ガル-ベッツァー,エレズ
(72)【発明者】
【氏名】フェンスター,ヤアコフ
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2016-173741(JP,A)
【文献】国際公開第2019/186554(WO,A1)
【文献】米国特許出願公開第2017/0288875(US,A1)
【文献】米国特許出願公開第2017/0132158(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/60
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
同一のコンピュータ上で動作する少なくとも2のプロセス間で通信を行う方法であって、
少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するステップであって、その生成に、少なくとも2のプロセスの各々によって提供されるノンスが少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能により、暗号化された完全性保護データとして提供される、ステップを備え、
各プロセスが、保護されたコンテナインフラストラクチャに含まれる保護されたコンテナ内で実行され、プロセスが単一の署名機関によって署名され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能により、暗号化された完全性保護データの使用を可能にし、
当該方法がさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するステップを備えることを特徴とする方法。
【請求項2】
請求項1に記載の方法において、
グループ鍵を生成することが、少なくとも2のプロセスの各々によって実行されることを特徴とする方法。
【請求項3】
請求項2に記載の方法において、
グループ鍵を生成することが、
ノンスを生成するステップと、
ノンスと、プラットフォーム提供の隠蔽機能とに基づいて、暗号化された完全性保護データを作成するステップと、
暗号化された完全性保護データを共有アクセスメモリ内のある場所に格納するステップと、
自プロセスを除く少なくとも2のプロセスの各々によって格納されたノンスを少なくとも取り出すステップであって、ノンスが、共有アクセスメモリ内の場所から読み出されたデータおよびプラットフォーム提供の公開機能に基づいて取り出される、ステップと、
鍵生成関数と、少なくとも取り出されたノンスおよびプロセスによって生成されたノンスとに基づいて、グループ鍵を生成するステップとを含む方法により行われることを特徴とする方法。
【請求項4】
請求項3に記載の方法において、
前記鍵生成関数が、暗号化ハッシュ関数であることを特徴とする方法。
【請求項5】
請求項3に記載の方法において、
前記鍵生成関数が、標本関数であることを特徴とする方法。
【請求項6】
請求項2に記載の方法において、
少なくとも2のプロセスのうちの第1のプロセスが、第2のプロセスによって開始されたグループ鍵のロールオーバーの頻度がグループ鍵のロールオーバー閾値を満たすか否かに従って、第2のプロセスによって格納されたノンスを除外することを特徴とする方法。
【請求項7】
メモリおよびプロセッサを含み、少なくとも2のプロセスを実行するように構成されたコンピュータであって、
当該コンピュータが、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するように構成され、その生成に、少なくとも2のプロセスの各々によって提供されるノンスが少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能により、暗号化された完全性保護データとして提供され、
各プロセスが、保護されたコンテナインフラストラクチャに含まれる保護されたコンテナ内で実行されるように構成され、プロセスが単一の署名機関によって署名されるように構成され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能により、暗号化された完全性保護データを使用するように構成され、
当該コンピュータがさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するように構成されていることを特徴とするコンピュータ。
【請求項8】
プログラム命令を含むコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、当該コンピュータプログラム製品が、プロセッサによって読み取られたときに命令をプログラム化するとともに、同一のコンピュータ上で実行されている少なくとも2のプロセス間で通信する方法をプロセッサに実行させ、
前記方法が、
少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するステップであって、その生成に、少なくとも2のプロセスの各々によって提供されるノンスが少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能により、暗号化された完全性保護データとして提供される、ステップを備え、
各プロセスが、保護されたコンテナインフラストラクチャに含まれる保護されたコンテナ内で実行され、プロセスが単一の署名機関によって署名され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能により、暗号化された完全性保護データの使用を可能にし、
前記方法がさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するステップを備えることを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の主題は、信頼できるコンピューティング環境に関し、より詳細には、信頼できる異なるコンピューティング環境間で安全な通信を確立することに関するものである。
【背景技術】
【0002】
従来の技術では、マルウェアに対する保護の問題点が認識されており、解決策を提供するために様々な手法が開発されている。
【発明の概要】
【0003】
本開示の主題の一つの態様によれば、同一のコンピュータ上で動作する少なくとも2のプロセス間で通信を行う方法が提供され、この方法が、
少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するステップであって、その生成に、少なくとも2のプロセスの各々によって提供されるノンス(nonce)が少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能(platform-provided hiding function)により、暗号化された完全性保護データ(encrypted integrity-protected data)として提供される、ステップを備え、
各プロセスが、保護されたコンテナインフラストラクチャ(protected container infrastructure)に含まれる保護されたコンテナ(protected container)内で実行され、プロセスが単一の署名機関によって署名され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能(platform-provided revealing function)により、暗号化された完全性保護データの使用を可能にし、
当該方法がさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するステップを備える。
【0004】
上記特徴に加えて、本開示の主題のこの態様に係るシステムは、技術的に可能な任意の所望の組合せまたは順列で、以下に列挙される特徴(i)~(v)のうちの1以上を含むことができる。
(i)グループ鍵を生成することが、少なくとも2のプロセスの各々によって実行される。
(ii)グループ鍵を生成することが、
ノンスを生成するステップと、
ノンスとプラットフォーム提供の隠蔽機能とに基づいて、暗号化された完全性保護データを作成するステップと、
暗号化された完全性保護データを共有アクセスメモリ内のある場所に格納するステップと、
自プロセスを除く少なくとも2のプロセスの各々によって格納されたノンスを少なくとも取り出すステップであって、ノンスが、共有アクセスメモリ内の場所から読み出されたデータおよびプラットフォーム提供の公開機能に基づいて取り出される、ステップと、
鍵生成関数と、取り出されたノンスおよびプロセスによって生成されたノンスとに基づいて、グループ鍵を生成するステップと、
を含む方法に従って行われる。
(iii)少なくとも2のプロセスのうちの第1のプロセスが、第2のプロセスによって開始されたグループ鍵のロールオーバーの頻度がグループ鍵のロールオーバー閾値を満たすか否かに従って、第2のプロセスによって格納されたノンスを除外する。
(iv)鍵生成関数が、暗号化ハッシュ関数である。
(v)鍵生成関数が、標本関数(sampling function)である。
【0005】
本開示の主題の別の態様によれば、メモリおよびプロセッサを含み、少なくとも2のプロセスを実行するように構成されたコンピュータが提供され、このコンピュータが、
少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するように構成され、その生成に、少なくとも2のプロセスの各々によって提供されるノンスが少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能により、暗号化された完全性保護データとして提供され、
各プロセスが、保護されたコンテナインフラストラクチャに含まれる保護されたコンテナ内で実行されるように構成され、プロセスが単一の署名機関によって署名されるように構成され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能により、暗号化された完全性保護データを使用するように構成され、
当該コンピュータがさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するように構成されている。
【0006】
本開示の主題の別の態様によれば、プログラム命令を含むコンピュータ可読記憶媒体を含むコンピュータプログラム製品が提供され、このコンピュータプログラム製品が、プロセッサによって読み取られたときに命令をプログラム化するとともに、同一のコンピュータ上で実行されている少なくとも2のプロセス間で通信する方法をプロセッサに実行させ、前記方法が、
少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリに格納されるデータユニットを暗号化するために使用可能であり、かつ共有アクセスメモリから取り出したデータユニットを復号するために使用可能なグループ鍵を生成するステップであって、その生成に、少なくとも2のプロセスの各々によって提供されるノンスが少なくとも利用され、ノンスが、少なくともプラットフォーム提供の隠蔽機能に従って暗号化された完全性保護データとして提供される、ステップを備え、
各プロセスが、保護されたコンテナインフラストラクチャに含まれる保護されたコンテナ内で実行され、プロセスが単一の署名機関によって署名され、保護されたコンテナインフラストラクチャが、プラットフォーム提供の隠蔽機能とプラットフォーム提供の公開機能に従って、暗号化された完全性保護データの使用を可能にし、
前記方法がさらに、少なくとも2のプロセスのうちの少なくとも1のプロセスによって、共有アクセスメモリから読み出されたデータユニットがグループ鍵を使用して正常に復号されていることを検証するステップを備える。
【0007】
本開示の主題の特定の実施形態の利点は、有害な要素を潜在的に含むシステムにおいて、信頼できるコンピューティング環境間での完全性を保護されたプライベート通信の能力を含み、かつ公開鍵または事前共有鍵操作の必要性が無い。
【図面の簡単な説明】
【0008】
本発明を理解し、それが実際にどのように実施され得るのかを理解するために、添付の図面を参照しながら、非限定的な例として実施形態を説明する。
図1図1は、本開示の主題のいくつかの実施形態に係る、マルチパーティ通信メカニズムを利用することができる例示的なコンピュータシステムの図を示している。
図2図2は、本開示の主題のいくつかの実施形態に係る、コンピュータシステムの動作中の例示的なデータフローを示している。
図3図3は、本開示の主題のいくつかの実施形態に係る、マルチパーティのセキュア通信サブシステムの確立および使用を説明する一般化されたフロー図を示している。
図4図4は、本開示の主題のいくつかの実施形態に係る、合成鍵確立手順を説明する一般化されたフロー図を示している。
【発明を実施するための形態】
【0009】
以下の詳細な説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者であれば、本開示の主題がそれらの具体的な詳細なしに実施され得ることが理解されるであろう。他の例では、本開示の主題が不明瞭とならないように、周知の方法、手順、コンポーネントおよび回路は、詳細には記載されていない。
【0010】
特に明記されていない限り、以下の説明から明らかなように、本明細書の全体を通して、「処理」、「コンピューティング」、「提示」、「比較」、「生成」、「検証」、「確立」、「更新」などの用語を利用した説明は、データを操作および/または他のデータに変換するコンピュータの1または複数の動作および/または1または複数のプロセスを指し、上記データが電子、量などの物理的なものとして示され、かつ/または上記データが物理オブジェクトを示していることが理解されよう。「コンピュータ」という用語は、非限定的な例として、本出願で開示された処理及びメモリ回路を含む、データ処理能力を有する任意の種類のハードウェアベースの電子デバイスを網羅するように、拡張的に解釈されるべきである。
【0011】
本明細書で使用される「非一時的なメモリ」および「非一時的な記憶媒体」という用語は、本開示の主題に適した任意の揮発性または不揮発性コンピュータメモリを網羅するように拡張的に解釈されるべきである。
【0012】
本明細書中の教示に係る動作は、所望の目的のために特別に構成されたコンピュータによって実行されるものであっても、または非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータプログラムによって、所望の目的のために特別に構成された汎用コンピュータによって実行されるものであってもよい。
【0013】
本開示の主題の実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載のように、本開示の主題の教示を実施するために様々なプログラミング言語を使用できることが理解されよう。
【0014】
これを念頭に置いて、本開示の主題のいくつかの実施形態に係る、マルチパーティ通信メカニズムを利用することができる例示的なコンピュータシステムを示す図1に注目する。図示のコンピュータシステムは、プロセッサおよびメモリ(処理及びメモリ回路100内に別個に示されていない)を備える処理及びメモリ回路100を含む。
【0015】
図3および図4を参照してさらに詳細に説明するように、処理及びメモリ回路100は、非一時的なコンピュータ可読記憶媒体上に実装されたコンピュータ可読命令に従って、複数の機能モジュールを実行するように構成することができる。このような機能モジュールを、以降、処理及びメモリ回路100に含まれるものとして言及する。
【0016】
処理及びメモリ回路100は、処理及びメモリ回路100のコンポーネント間の通信に使用可能なバス115を備えることができる。バス115は、例えば、PCIバスや他の任意の適当な伝送メカニズムであってもよい。
【0017】
処理及びメモリ回路100は、例えば、1または複数の保護されたコンテナ160、170、180を含むことができる。保護されたコンテナは、例えば、アクセス制御機構(例えば、ハードウェアで強制されたアクセス制御機構)が、コンテナ外の要素(例えば、高特権または低特権で実行されている非コンテナソフトウェア、他のコンテナ内で実行されているソフトウェア、処理及びメモリ回路100に接続された論理プローブなど)による読み出しまたは変更からソフトウェアコンテナのコード、データおよびスタックを保護するように構成されたソフトウェアコンテナとすることができる。保護されたコンテナは、保護されたコンテナインフラストラクチャ(図示省略)に動作可能に接続することができ、このコンテナインフラストラクチャは、例えば、保護されたコンテナ機能をサポートするための処理及びメモリ回路100内に含まれるハードウェアおよびソフトウェアであってもよい。
【0018】
本主題のいくつかの実施形態では、保護されたコンテナを、Intel(商標)Corporationによって製造されたいくつかのプロセッサでサポートされるソフトウェア・ガード・エクステンション(SGX)技術または同様のメカニズムによって管理されるエンクレイブ(enclave)とすることができる。そのような実施形態では、保護されたコンテナインフラストラクチャを、例えば、Intel(商標)SGX(商標)機能または同様のメカニズムをサポートするハードウェア、ファームウェアおよびソフトウェアとすることができる。
【0019】
処理及びメモリ回路100は、共有データメモリ110(共有アクセスメモリ)を備えることができる。共有データメモリ110は、例えば、専用の物理メモリコンポーネント(チップなど)であってもよく、または、例えばより大きなメモリの論理領域であってもよい。
【0020】
共有データメモリ110は、複数の保護されたコンテナによってアクセスされるように構成することができる。本開示の主題のいくつかの実施形態では、保護されたコンテナのデータが通常、デフォルトでプライベートであり、よって、共有データメモリ110は、図3を参照して後述するように、複数の保護されたコンテナによる読み出し/書き込みアクセス用に明示的に構成することができる。
【0021】
共有データメモリ110は、例えば、図2を参照して後述するように、保護されたコンテナを利用するプロセス間の暗号化通信に使用するように構成することができる。
【0022】
処理及びメモリ回路100は、鍵確立用の専用共有メモリ105を備えることができる。鍵確立用の専用共有メモリ105は、例えば、専用の物理メモリコンポーネント(チップなど)であってもよいし、例えば、より大きなメモリの論理領域であってもよい。
【0023】
鍵確立用の専用共有メモリ105は、複数の保護されたコンテナによってアクセスされるように構成することができる。本開示の主題のいくつかの実施形態では、保護されたコンテナのデータが通常、デフォルトでプライベートであり、よって、鍵確立用の専用共有メモリ105は、図3を参照して後述するように、複数の保護されたコンテナによる読み出し/書き込みアクセス用に明示的に構成することができる。鍵確立用の専用共有メモリ105は、制御ワード125を含むことができる。制御ワード125は、図4を参照して後述するように、保護されたコンテナを利用してコマンドまたは要求をピアプロセスに送信するプロセスによって使用されるように構成することができる。
【0024】
本開示の主題のいくつかの実施形態では、保護されたコンテナを利用するソフトウェアプロセスが、図4を参照して後述するように、鍵確立用の専用共有メモリ105に(安全で暗号化された形式で)鍵材料を格納し、この鍵材料を取り出しおよび利用して特定のセキュリティ特性を有するグループ通信のための合成鍵(グループ鍵)を導出するように構成することができる。本明細書では、グループのメンバ間の通信のための暗号鍵/復号鍵を「グループ鍵」と称する。
【0025】
例えば、非限定的な例として、暗号化チャネル入力デバイス130、暗号化チャネル出力デバイス135および暗号化チャネル出力デバイス145を含む、処理及びメモリ回路100に動作可能に接続された複数の周辺デバイスが存在し得る。
【0026】
暗号化チャネル入力デバイス130は、例えば、ユーザのキーストロークに応答して、暗号化された出力を生成し、この暗号化されたキーストロークデータを処理及びメモリ回路100に送信するように構成されたコンピュータキーボードとすることができる。そのようなキーボードは、コンピュータ内のキーロギングソフトウェアによる監視、または物理的なキーボードまたはケーブル内の信号を監視するハードウェアキーロガーによる監視に対して耐性を持つことができる。
【0027】
暗号化チャネル出力デバイス135は、例えば、処理及びメモリ回路100から暗号化された表示データを受信するように構成された表示デバイスとすることができる。そのような表示デバイスは、表示データを検出するために電磁放射モニタリングを実行するデバイスなどのサイドチャネル攻撃に対して耐性を持つことができる。
【0028】
暗号化チャネル入力/出力デバイス145は、例えばインターネットを介して、処理及びメモリ回路100に含まれるネットワークアダプタ(図示省略)により、例えばセキュアソケットレイヤ(SSL)プロトコルのようなメカニズムを使用して、処理及びメモリ回路100とデータを交換するように構成されたリモート配置のリモートデスクトッププロトコル(RDP)サーバとすることができる。
【0029】
処理及びメモリ回路100は、例えば、1または複数のマネージャプロセス165、175、185を含むことができる。非限定的な例として、マネージャプロセス165は、暗号化チャネル入力デバイス130から暗号化されたデータを受信するように構成することができ、マネージャプロセス175は、暗号化チャネル出力デバイス135に暗号化されたデータを送信するように構成することができ、マネージャプロセス185は、暗号化チャネル入力/出力デバイス145との間で暗号化されたデータを送受信するように構成することができる。また、マネージャプロセス165、175、185は、例えば、共有データメモリ110から暗号化されたデータを読み出し、暗号化されたデータを共有データメモリ110に書き込むこともできる。
【0030】
マネージャプロセス165、175、185は、復号および他の機密処理のために保護されたコンテナ160、170、180を利用するように構成することができる。例えば、保護されたコンテナ160は、暗号化チャネル入力デバイス130からのデータの復号を実行し、共有データメモリ110に格納するためのデータを暗号化するように構成することができ、保護されたコンテナ170は、共有データメモリ110から読み出されたデータの復号を実行し、暗号化チャネル出力デバイス135に送信するためのデータを暗号化するように構成することができ、保護されたコンテナ170は、暗号化チャネル入力/出力デバイス145からのデータの復号を実行し、共有データメモリ110に格納するためのデータを暗号化するように構成することができ、さらに、共有データメモリ110から読み出されたデータの復号を実行し、暗号化チャネル入力/出力デバイス145に送信するためのデータを暗号化するように構成することができる。これらの場合、共有データメモリ110および周辺機器との間でデータを暗号化/復号するための任意の鍵は、例えば、それぞれの保護されたコンテナ内に保持することができる。
【0031】
本開示の主題のいくつかの実施形態では、マネージャプロセス165、175、185が、保護されたコンテナ160、170、180内で暗号化/復号操作を実行しながら、保護されたコンテナ160、170、180の外部でデバイスI/O操作を実行するように構成することができる。
【0032】
本開示の主題の教示は、図1を参照して説明したコンピュータシステムに拘束されないことに留意されたい。同等および/または変更された機能は、別の方法で統合または分割することができ、ソフトウェアとファームウェアおよび/またはハードウェアとの任意の適切な組合せで実装することができ、適切なデバイス上で実行することができる。コンピュータシステムは、スタンドアロンのネットワークエンティティであってもよく、あるいは他のネットワークエンティティと完全にまたは部分的に統合されるものであってもよい。当業者であれば、データリポジトリを他の方法で統合または分割することができ、データベースを他のシステムと共有することができ、またはサードパーティの機器を含む他のシステムによって提供することができることを容易に理解するであろう。
【0033】
図2を参照すると、本開示の主題のいくつかの実施形態に係る、コンピュータシステムの動作中の例示的なデータフローが示されている。
【0034】
矢印は、システム内の例示的なデータフローを示している。矢印のハッチングパターンは、データフローが特定の暗号鍵/復号鍵に従って暗号化されていることを非限定的な例として示している。このため、共有データメモリ110に格納されるデータは、例えば、グループ暗号鍵/復号鍵に従って暗号化された形式である(例えば、図4を参照して後述するメカニズムに従って生成される)。また、マネージャプロセス165、175、185によって共有データメモリ110から読み出される/共有データメモリに書き込まれるデータは、例えば、同一鍵に従って暗号化されている。
【0035】
図2は、マネージャプロセス165、175、185と、暗号化チャネル入力デバイス130、暗号化チャネル出力デバイス135および暗号化チャネル入力/出力デバイス145との間のデータフローが異なる鍵を利用していることを示している。これは、非限定的な例として、安全なマルチパーティ通信メカニズムを使用してシステム内セキュリティを提供し、それによりシステムの信頼できない部分にマルウェアが存在する場合でも、機密データが危険に曝されることがないようにするシステムを例示している。
【0036】
図3を参照すると、本開示の主題のいくつかの実施形態に係る、マルチパーティのセキュア通信サブシステムの確立および使用を説明する一般化されたフロー図が示されている。
【0037】
例えば、システムの初期化またはシステムのリフレッシュに続いて、(例えば)処理及びメモリブロック100内で実行されるマネージャプロセス165、175、185は、処理及びメモリ回路100内で保護されたコンテナのグループを初期化することができる(310)。
【0038】
保護されたコンテナを初期化する手法は、システムで使用されている保護されたコンテナのタイプに依存することがある。初期化には、例えば、コンテナにメモリを割り当てること、コンテナ内で実行されるソフトウェアを提供すること、並びに、提供されたソフトウェアが真正であることの暗号化保証を提供する証明書または署名を提供することが含まれる。保護されたコンテナ内で実行される特定のソフトウェアの真正性の暗号化保証を提供するエンティティ(ソフトウェア・パブリッシャーなど)は、以降、「署名機関」と称する。
【0039】
Intel(商標)SGX(商標)のエンクレイブに類似の保護されたコンテナが利用される実施形態では、初期化手順として、メモリを割り当てて、ソフトウェアを(ソフトウェアベンダによって署名された暗号化証明書とともに)エンクレイブにロードするためのプロセッサ命令の呼び出しが含まれる。ランタイムプロセスは、署名および検証されたエンクレイブで実行することができる。エンクレイブは、実行時に、プラットフォーム(例えば、SGX)および(例えば)システムベンダによって、署名されたコードとしてテストすることができる。
【0040】
保護されたコンテナの初期化に続いて(または、いくつかの実施形態では、保護されたコンテナの初期化の一部として)、処理及びメモリ回路100(例えば、マネージャプロセス165、175、185)は、複数の保護されたコンテナによってアクセスされるメモリ領域(共有アクセスメモリ)を割り当てて初期化することができる(320)。これらのメモリ領域は、例えば、共有データメモリ110および鍵確立用の専用共有メモリ105を含むことができる。共有データメモリ110および鍵確立用の専用共有メモリ105は、例えば、処理及びメモリ回路100の汎用メモリ内の領域として割り当てることができる。本主題のいくつかの実施形態では、初期化には、それらのメモリがコンテナに対してプライベートではないにもかかわらず、アクセス保護機能が共有データメモリ1100および鍵確立用の専用共有メモリ105との間で読み出し/書き込みを許可するように、保護されたコンテナ160、170、180を構成することが含まれる。このため、保護されたコンテナを利用するソフトウェアプロセスは、例えば、暗号化されていないデータがそれらメモリに書き込まれることがないようにする必要がある。
【0041】
保護されたコンテナおよび共有メモリ領域の初期化に続いて、合成鍵確立手順を実行することができる(330)。この手順は、図4を参照して後述する。
【0042】
合成鍵が確立された後、保護されたコンテナを利用するソフトウェアプロセスは、合成鍵を使用して共有データ領域110への書き込みおよび共有データ領域からの読み出しを行うことにより、互いに通信することができる。非限定的な例として、データを書き込むプロセスは、合成鍵を使用してデータを暗号化し(340)、例えばリングバッファを使用して、共有データ領域110にデータを書き込む(340)ことができる。そして、データを読み出すプロセスは、リングバッファからデータを読み出し(340)、合成鍵を用いてデータを復号する(340)ことができる。
【0043】
暗号化および復号は、例えばNIST Special Publication 800-38Eに記載されているような、例えばXor-encrypt-xor Tweakable Block Cipher with Ciphertext Stealing(XTS)を使用して、例えば128ビットのブロックサイズおよび128ビットの鍵サイズを有する高度暗号化標準(AES)ブロック暗号など、公知の暗号化および完全性保護アルゴリズムを使用して実行することができる。代替的には、別の適切な暗号、モード、ブロックサイズ、または鍵サイズを使用することができる。暗号化/復号は、例えば、データペイロードとともに単調に増加するカウンタを含むようなリプレイ保護メカニズムを使用することができる。
【0044】
鍵のロールオーバーを必要とするイベントが発生した場合(350)、合成鍵確立手順(330)を再度実行して、結果として得られる新しい合成鍵を使用することができる。鍵のロールオーバーを必要とするイベントを構成する様々な事がある。非限定的な例として、システムは、合成鍵にエイジリミットを課し、例えば12時間に1回の更新を要求することができる。代替的には、非限定的な例として、プロセスは、グループ通信への参加を希望することをコーディネータプロセス(後述)に信号で伝えることができる新しい保護されたコンテナを初期化することができ、これにより、鍵のロールオーバーをトリガーすることができる。
【0045】
いくつかの実施形態では、プロセスの一つが悪意を有し、意図的に不必要なロールオーバーを引き起こす可能性があることに留意されたい。従って:
・悪意のある非コーディネータプロセスから保護するために、コーディネータプロセスは、ロールオーバーのレートを監視し、過剰なロールオーバーを発生させるプロセスを除外することができる。
・悪意のあるコーディネータプロセスから保護するために、非コーディネータプロセスは、コーディネータプロセスによって引き起こされるロールオーバーのレートを監視し、コーディネータプロセスが過剰なロールオーバーを発生させている場合には、そのコーディネータプロセスを(グループとして)除外することができる。より一般的には、プロセスは、(例えば)予め設定されたグループ鍵のロールオーバー頻度の閾値を満たす又は超える頻度で(鍵の再生成を必要とする)グループ鍵のロールオーバーを開始する異なるプロセスによって保存されたノンスを除外することにより、悪意のある不要なロールオーバーから保護することができる。
【0046】
本開示の主題の教示は、図3に示すフローチャートに拘束されるものではなく、図示の操作は、図示の順序から外れて発生する可能性があることに留意されたい。例えば、連続して示す操作310、320は、実質的に同時または逆の順序で実行することができる。フローチャートは、図1の要素を参照して説明されているが、これは決して拘束力があるわけではなく、それぞれの操作は、本明細書に記載の要素以外の要素によって実行できることにも留意されたい。
【0047】
図4を参照すると、本開示の主題のいくつかの実施形態に係る、合成鍵確立手順を説明する一般化されたフロー図が示されている。
【0048】
フロー図は、「コーディネータプロセス」を参照している。コーディネータプロセスは、(後述するように)例えば、鍵確立手順を他のプロセスとオーケストレートする、保護されたコンテナを利用するプロセスである。本主題のいくつかの実施形態では、システム内のプロセスが、例えば、単一のライタプロセスおよび複数のリーダプロセスを構成することができる。そのような実施形態では、ライタプロセスが、コーディネータプロセスの役割を果たすことができる。
【0049】
本開示の主題のいくつかの実施形態では、保護されたコンテナインフラストラクチャが、プラットフォーム提供の秘密保持機能(secrecy functions)をプロセスに提供することができる。プラットフォーム提供の秘密保持機能は、例えば、プラットフォーム提供の隠蔽機能およびプラットフォーム提供の公開機能を含むことができる。
【0050】
プラットフォーム提供の隠蔽機能は、例えば、データ項目を、許可されていないエンティティによる読み出しや変更から安全な形式に変換することができる(すなわち、暗号化され、完全性が保護される)。プラットフォーム提供の公開機能は、例えば、対応するプラットフォーム提供の隠蔽機能によって生成されたデータ項目を受け取り、元のデータ項目を返すことができる。本開示の主題のいくつかの実施形態では、プラットフォーム提供の公開機能が、a)それを呼び出すプロセスが、プラットフォーム提供の隠蔽機能を以前に呼び出したプロセスと同じ保護されたプラットフォームインフラストラクチャインスタンスを利用している状況と、b)2つのプロセスが同じ署名機関によって署名されている状況にのみ、元のデータ項目を返し、そうでない場合は失敗を示すこととなる。
【0051】
Intel(商標)SGX(商標)のエンクレイブと同様の保護されたコンテナが利用される実施形態では、MRSIGNERオプションを使用する「シール機能(sealing function)」がプラットフォーム提供の隠蔽機能になり、MRSIGNERオプションを使用する「シール解除機能(unsealing function)」がプラットフォーム提供の公開機能になり得る。「シール機能」および「シール解除機能」については、非限定的な例として、https://download.01.org/intel-sgx/linux-1.7/docs/Intel_SGX_Developer_Guide.pdfに記載されている。
【0052】
エンクレイブ内のプロセスがこのようにデータを「シール」すると、同じSGXハードウェアプラットフォーム上で実行され且つ同じ署名機関によって署名されたエンクレイブ内のプロセスのみが、データのシールを解除することができ、すなわち、データを回復することができる。
【0053】
シール/シール解除メカニズムは、プロセスによって、例えば、コンテナで実行するソフトウェアプロセスのアップグレード間で保持することができるハードウェアプラットフォーム上のデータを格納するために使用することができる(同上、21~24頁)。
【0054】
本主題のいくつかの実施形態では、プラットフォーム提供の秘密保持機能を、単にデータの秘密保持のためだけでなく、プロセス間の信頼とセキュリティを確立するために活用することが可能である。プラットフォーム提供の隠蔽機能(例えば「シール」)の結果として得られたデータを他のプロセスに送信し、プラットフォーム提供の公開機能(例えば「シール解除」)の結果を利用して(後述するように)合成鍵を生成することにより、(合成鍵の使用に成功した場合に)すべてのプロセスが公開機能を正常に実行し、すべてのプロセスがハードウェアプラットフォームによって真正で安全で変更されていないことが確認されたことを、後で推論することができる。
【0055】
合成鍵確立手順は、例えば、コーディネータプロセスが他のプロセスに信号を送信して(410)収集フェーズを始めるときに開始することができる。「収集フェーズ」という用語は、プロセスが新しい合成鍵を生成するために必要なデータを収集することができるシステム操作のインターバルを指している。コーディネータプロセスは、例えば、プラットフォーム提供の隠蔽機能への入力として特定の値を提供し、得られた値を、鍵確立用の専用共有メモリ105内の特定の場所(例えば、制御ワード)に書き込むことによって、収集フェーズの開始を通知することができる。他の(すなわち、非コーディネータ)プロセスは、フェーズ間を正しく移行できるように、制御ワードを継続的に監視することができる。
【0056】
本開示の主題のいくつかの実施形態では、コーディネータプロセスが、収集フェーズの間、新たな暗号化データの書き込みを控えることができる。
【0057】
本開示の主題のいくつかの実施形態では、コーディネータからの信号を検出した後(例えば、制御ワードを読み出し、プラットフォーム提供の隠蔽機能を使用してコーディネータにより書き込まれた値を取り出すことによって)、プロセスが、例えば、現在の合成鍵を使用して共有データメモリ110に書き込まれた未処理のデータを読み出し(420)、復号することができる。
【0058】
次いで、各プロセスは、例えば、ノンスを生成し(430)、そのノンスをプラットフォーム提供の隠蔽機能への入力として提供し(430)、得られた値を鍵確立用の専用共有メモリ105に書き込む(430)ことができる。プロセスは、例えば、その実行環境で利用可能なハードウェアまたはソフトウェアの乱数発生器からノンスを生成することができる。
【0059】
プロセスによって利用されるノンスは、例えば、鍵生成において一回使用のために疑似ランダムに(またはランダムに)生成された値(例えば、ハードウェアまたはソフトウェアの疑似乱数発生器を使用して生成された値)であってもよい。代替的には、ノンスは、暗号鍵の導出において使用するのに適した別の値(例えば、既存の値など)であってもよい。
【0060】
プロセスは、プラットフォーム提供の隠蔽機能から得られた値を、例えば、特定のプロセスからのノンスの寄与を読み出し/書き込みするために排他的に使用される、鍵確立用の専用共有メモリ105内の場所に書き込むことができる。
【0061】
コーディネータが、プロセスが新しい鍵をいつ使用することができるのかを決定するために使用することができる様々なメカニズムが存在する。コーディネータプロセスは、例えば、タイムアウト(例えば、収集フェーズの信号通知後、100ms)を利用することができる。代替的には、例えば、コーディネータプロセスは、鍵確立用の専用共有メモリ105内の変化を監視し、各プロセスがそれぞれのノンスを書き込むまで待機することができる。
【0062】
次いで、コーディネータは、例えば、プラットフォーム提供の隠蔽機能への入力として制御ワードの特定の値を提供し、それを鍵確立用の専用共有メモリ105内の制御ワード125に書き込むことによって、「作業フェーズ」の開始を通知する(440)ことができる。作業フェーズは、収集フェーズ中に書き込まれたノンスから生成された合成鍵を使用して共有アクセスメモリ110からのデータを暗号化/書き込みおよび読み出し/復号することにより、プロセスが相互に通信するシステム操作のインターバルを示す。
【0063】
各プロセスは、このとき、他のプロセスによって保存されたノンスの各々を取り出す(450)ことができる。各プロセスは、例えば、鍵確立用の専用共有メモリ105内のデータが書き込まれた場所からデータを読み出し、プラットフォーム提供の公開機能を用いてノンスを取り出すことによって、これを行うことができる。
【0064】
ピアプロセスからすべてのノンスを受信すると、各プロセスは、各ノンスを鍵導出関数の入力に利用して、新たな合成鍵を生成する(460)ことができるようになる。各ノンスを利用することで、得られる合成鍵は、それらのすべてに依存する(本質的にそれらを結合/固定する)ことが保証される。
【0065】
鍵導出関数は、例えば、任意の数の入力を取り入れて、固定長の出力を生成する関数であってもよい。本開示の主題のいくつかの実施形態では、鍵導出関数が、Advanced Encryption Standard-Cipher-based Message Authentication Code(AES-CMAC)などの暗号化ハッシュ関数であり得る。
【0066】
代替的には、例えば、鍵導出関数がサンプリングを利用することができる。この場合、鍵導出関数は、複数回の反復を実行し、各反復において、出力値が各ノンスからいくつかのビットを含むように、ノンスの各々から特定のビットを選択する。より具体的な例として、3つのノンスで動作する鍵導出関数は、(n/3)番目のノンスの対応するビットに応じて、出力のn番目のビットを決定することができ、その結果、合成鍵は、最初のノンスから取得した3番目のビットをすべて持ち、出力鍵は、提供されたすべてのノンスからのいくつかのビットを含むこととなる。
【0067】
本開示の主題のいくつかの実施形態では、異なる鍵導出関数を異なる時に使用することができる。
【0068】
合成鍵の生成後、各プロセスは、合成鍵を使用できるようになる。具体的には、共有データメモリ110に書き込むプロセスは、書き込む前に新しい合成鍵を用いて暗号化し(470)、共有データメモリ110からデータを読み出すプロセスは、読み出されたデータを復号(470)するために新しい合成鍵を用いることができる。
【0069】
共有データメモリ110からデータを読み出すプロセスは、読み出されたデータが完全性を維持し(すなわち、破損しておらず、または悪意を持って変更されておらず)、正常に復号されたことを検証することができる(480)。非限定的な例として、XTS-AESなどの暗号化スキームを復号するプロセスは、復号が正しい復号データを生成するのに失敗したか否か(例えば、復号鍵が正しくない場合)、またはデータの完全性が失われたか(例えば、悪意のある改変によるデータ破損に起因する)を検出することができる。検証が成功した場合、プロセスは、次の鍵ロールオーバーまで合成鍵を使用し続けることができる(490)。
【0070】
検証が失敗した場合、プロセスは、鍵のロールオーバーを開始して収集フェーズを再開するよう、コーディネータに要求することができる(495)。検証が失敗した場合(すなわち、データが正しく復号されなかった場合)、それは良性のエラーの結果であるか、悪意のあるエンティティによる中断の結果である可能性がある。悪意のあるエンティティ(例えば、コンテナ外のモジュール内で実行されているマルウェアなど)は、例えば、鍵確立用の専用共有メモリ105に不正な情報を書き込もうとする可能性がある。より具体的には、悪意のあるエンティティが、誤った鍵データの生成を引き起こす試みとして、古いデータをメモリに書き込もうとしている(「リプレイ攻撃」の)可能性がある。開示の方法は、例えば、そのような攻撃を検出して、合成鍵生成を再度実行するように要求することができる。
セキュリティを強化し、サイドチャネル攻撃や他の攻撃から保護するために、コーディネータは、それらの鍵ロールオーバー要求を制限、変更、開始または変更することができる。
【0071】
検証が成功した場合、各プロセスは、ノンスに寄与したすべてのプロセス間で(共有データメモリ110を介して)通信するための対称暗号鍵/復号鍵として使用するのに適した、新たに生成された合成鍵を保有するようになることに留意されたい。各プロセスがそれ自体のノンスに寄与しているため、各プロセスは、その鍵が実際には新しく、かつ危険に曝されていないことが保証されている。さらに、合成鍵を確立するために(すべてのプロセスによって)必要とされるプラットフォーム提供の秘密保持機能は、(例えば、ハードウェア設計によって)同じ署名機関によって署名された同じプラットフォーム上のプロセスのみが利用可能であるため、各プロセスは、その通信ピアが真正であり、信頼でき、かつ改ざんされていないことが保証される。
【0072】
さらに、本明細書に記載のセキュア通信メカニズムの確立により、システムの信頼されていない部分によるアクセスから遮蔽された論理的に分離されたサブシステムが効果的に可能になり、そのような遮蔽されたサブシステムは、例えば、キーロガー、サイドチャネル攻撃などに対して耐性のある方法でリモートシステムのアクセスにより周辺機器を使用することを可能にするコンピュータシステムを提供するために使用できることに留意されたい。
【0073】
本主題のいくつかの実施形態では、本明細書に記載の合成鍵を確立するための方法が、公開鍵暗号の使用や、通信当事者間での共有秘密鍵の事前共有を必要としないことに留意されたい。
【0074】
図4は、各プロセスが独立してノンスを読み出し、合成鍵を計算する合成鍵確立方法を示している。この方法は、当該方法の基本的な動作に影響を与えないバリエーションを含むことができることは、当業者には明らかであろう。例えば、単一のプロセスにより、ノンスから合成鍵を計算した後、プラットフォームによる秘密保持機能を使用して、合成鍵をプロセスに配布することができる。
【0075】
代替的には、例えば、各プロセスは、合成鍵の一部を計算し、受け取った部分的な値をそれ自体のノンスと結合し、その結合した値を、すべてのプロセスが計算に参加するまで、(プラットフォームによる秘密保持関数を使用して)次のプロセスに渡すこともできる。このようにして、各プロセスは、それぞれのノンスを公開することなく、それぞれのノンスを合成鍵に寄与させることができる。
【0076】
本開示の主題の教示は、図4に示すフローチャートに拘束されるものではなく、図示の操作は、図示の順序から外れて発生する可能性があることに留意されたい。例えば、連続して示す操作450、460は、実質的に同時に、または逆の順序で実行することができる。また、フローチャートは、図1の要素を参照して記載されているが、これは決して拘束力を持つものではなく、それら操作は、本明細書に記載の要素以外の要素によって実行できることにも留意されたい。
【0077】
本発明は、その用途において、本明細書に含まれるか又は図面に示される記載に述べられた詳細に限定されないことを理解されたい。本発明は、他の実施形態が可能であり、様々な方法で実施および実行することができる。このため、本明細書で用いられている表現および用語は、説明を目的とするものであり、限定的なものと見なされるべきではないことを理解されたい。よって、当業者であれば、本開示の基礎となる概念が、本開示の主題のいくつかの目的を遂行するための他の構造、方法およびシステムを設計するための基礎として容易に利用できることを理解するであろう。
【0078】
また、本発明に係るシステムは、少なくとも部分的には、適切にプログラムされたコンピュータ上に実装されてもよいことが理解されるであろう。同様に、本発明は、本発明の方法を実行するためにコンピュータによって読み取り可能なコンピュータプログラムを企図している。さらに、本発明は、本発明の方法を実行するためにコンピュータによって実行可能な命令のプログラムを有形に具現化する非一時的なコンピュータ可読メモリも企図している。
【0079】
当業者であれば、添付の特許請求の範囲で規定された本発明の範囲から逸脱することなく、上述した本発明の実施形態に様々な修正および変更を適用できることを容易に理解するであろう。
図1
図2
図3
図4