(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-09
(45)【発行日】2024-01-17
(54)【発明の名称】周辺デバイス
(51)【国際特許分類】
H04L 9/10 20060101AFI20240110BHJP
G06F 21/60 20130101ALI20240110BHJP
G06F 21/62 20130101ALI20240110BHJP
【FI】
H04L9/10 A
G06F21/60 320
G06F21/62
(21)【出願番号】P 2021521344
(86)(22)【出願日】2019-09-05
(86)【国際出願番号】 US2019049614
(87)【国際公開番号】W WO2020081162
(87)【国際公開日】2020-04-23
【審査請求日】2022-09-01
(32)【優先日】2018-10-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100147991
【氏名又は名称】鳥居 健一
(72)【発明者】
【氏名】ボロス,スタブロス
(72)【発明者】
【氏名】チスナル,デビッド・トーマス
(72)【発明者】
【氏名】クルカーニ,ソウラブ・モハン
(72)【発明者】
【氏名】バスワニ,カピル
(72)【発明者】
【氏名】コスタ,マヌエル
(72)【発明者】
【氏名】ウェブスター,サミュエル・アレクサンダー
(72)【発明者】
【氏名】フォルネ,セドリック・アラン・マリー
【審査官】中里 裕正
(56)【参考文献】
【文献】米国特許第08832813(US,B1)
【文献】米国特許出願公開第2013/0151846(US,A1)
【文献】米国特許出願公開第2018/0212940(US,A1)
【文献】SCHEAR, N. et al.,Bootstrapping and Maintaining Trust in the Cloud,32nd Annual Computer Security Applications Conference,2016年12月,pp.65-77
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/60
G06F 21/62
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ホストコンピューティングデバイスとともに使用するための周辺デバイスであって、
1つ又は複数の計算要素と、
機密コードを使用して機密データを処理するために、前記周辺デバイス上に信頼できる実行環境を形成するように構成されたセキュリティモジュールであって、前記機密データ及び前記機密コードが、前記ホストコンピューティングデバイスと通信している信頼できる計算エンティティによって提供される、セキュリティモジュールと、
前記ホストコンピューティングデバイスを介して、前記信頼できる実行環境と前記信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成された少なくとも1つの暗号化ユニットとを備え、
前記セキュリティモジュールが、前記機密コードが前記信頼できる実行環境内にあることを証明するために証明を計算し、前記信頼できる計算エンティティに送るように構成された、周辺デバイス。
【請求項2】
前記信頼できる実行環境と前記信頼できる計算エンティティとの間で転送された前記データが、ダイレクトメモリアクセスリクエスト及びレスポンスを使用して転送される、請求項1に記載の周辺デバイス。
【請求項3】
前記セキュリティモジュールが、線形アドレス空間を介した前記周辺
デバイスのメモリ及びレジスタへのアクセスが可能な非セキュアモードから、前記線形アドレス空間を介した前記周辺
デバイスの指定のメモリ及び指定のレジスタへのアクセスが不可能なセキュアモードに前記周辺デバイスをスイッチすることによって、前記信頼できる実行環境を形成するように構成される、請求項1又は2に記載の周辺デバイス。
【請求項4】
前記セキュリティモジュールが、前
記信頼できる計算エンティティと鍵を交換し、前
記信頼できる計算エンティティによって提供された鍵を、前記少なくとも1つの暗号化ユニットに提供するように構成される、請求項1から3のいずれかに記載の周辺デバイス。
【請求項5】
前記セキュリティモジュールが、前記周辺デバイスが前記セキュアモードのとき、前記ホスト
コンピューティングデバイスからクオートのリクエストが受け取られると、前記セキュリティモジュールが、前記周辺デバイスのセキュリティ上の重要な性質をとらえるクオートを計算し、前記ホスト
コンピューティングデバイスに返すように構成される、請求項
3に記載の周辺デバイス。
【請求項6】
前記セキュリティモジュールが、前記セキュリティモジュール、及び追加として、デバッグモード、ホストアクセスフラグのうちのゼロ個以上のハッシュであり、前記セキュリティモジュールによって生成され、前記信頼できる計算エンティティの公開鍵を使用して暗号化された新しいデータ暗号鍵のハッシュであるクオートを計算することによって、前記証明を計算するように構成される、請求項1から5のいずれかに記載の周辺デバイス。
【請求項7】
前記セキュリティモジュールが、証明鍵を使用して署名されたクオート、エンドースメント鍵によって署名された証明鍵証明書、ルート鍵を使用して署名されたエンドースメント鍵証明書、証明書を発行する自己署名されたルートエンドースメント鍵を含む証明書チェーンに従う証明書を含むクオートを計算することによって、前記証明を計算するように構成される、請求項1から6のいずれかに記載の周辺デバイス。
【請求項8】
前記暗号化ユニットが、鍵ストア、バッファー、及び暗号化/復号構成要素を備える、請求項1から7のいずれかに記載の周辺デバイス。
【請求項9】
前記バッファーが、前記信頼できる実行環境と前記ホスト
コンピューティングデバイスとの間で送られたダイレクトメモリアクセスリクエスト及びレスポンスを傍受してバッファー処理するように構成される、請求項
8に記載の周辺デバイス。
【請求項10】
前記バッファーが、ダイレクトメモリアクセス書込みリクエストを傍受したとき、前記ダイレクトメモリアクセス書込みリクエストから初期化ベクトルを抽出し、前記初期化ベクトルを使用して、前記鍵ストアから暗号鍵を取り出すように構成される、請求項9に記載の周辺デバイス。
【請求項11】
前記バッファーが、前記初期化ベクトル、及
び取り出した
前記暗号鍵と一緒に、前記ダイレクトメモリアクセス書込みリクエストのペイロードを前記暗号化/復号構成要素にルーティングするように構成される、請求項10に記載の周辺デバイス。
【請求項12】
前記セキュリティモジュールが、前記1つ又は複数の計算要素とともにダイ上にあるか、前記1つ又は複数の計算要素のダイ上にないパッケージとして形成された、又は
複数の接続されたパッケージとして形成された、
請求項1から11のいずれかに記載の周辺デバイス。
【請求項13】
前記暗号化ユニットが、異なるデータストリームを異なる鍵で暗号化するように複数の鍵を有し、ここで、前記暗号化ユニットが、鍵交換処理を使用して前記複数の鍵を提供され、
任意選択として、前記セキュリティモジュールが、前記周辺デバイス上にセキュアチャネルを作成するために、前記周辺デバイスのリソースを隔離するように構成され、ここで、異なる暗号鍵が、異なるセキュアチャネルのために使用される、又は
前記セキュリティモジュールが、複数の公開鍵の測定値を含んでいるクオートを、前記鍵交換処理の一部として計算するように構成され、前記公開鍵が、前記ホストコンピューティングデバイスによって指定された、
請求項1から12のいずれかに記載の周辺デバイス。
【請求項14】
前記少なくとも1つの暗号化ユニット及び前記信頼できる計算エンティティが、データのブロックを暗号化する暗号化プロトコルを使用するように構成され、各ブロックが、鍵と初期化ベクトルを含むペアを使用して暗号化され、ここで、前記暗号化ユニット及び前記信頼できる計算エンティティが、所与の鍵とともに各初期化ベクトルを一度だけ使用することに同意し、前記初期化ベクトルが、前記暗号化ユニット及び前記信頼できる計算エンティティに知られているパラメーター化された機能から計算される、請求項1から13のいずれかに記載の周辺デバイス。
【請求項15】
複数の計算ノードであって、各計算ノードが、少なくとも1つの周辺デバイスを有するホストコンピューティングデバイスを備え、前記周辺デバイスが、
1つ又は複数の計算要素と、
機密コードを使用して機密データを処理するために、前記周辺デバイス上に信頼できる実行環境を形成するように構成されたセキュリティモジュールであって、前記機密データ及び前記機密コードが、前記ホストコンピューティングデバイスと通信している信頼できる計算エンティティによって提供される、セキュリティモジュールと、
前記ホストコンピューティングデバイスを介して、前記信頼できる実行環境と前記信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成された少なくとも1つの暗号化ユニットと
を備える、複数の計算ノード
を備える、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、周辺デバイスに関する。
【背景技術】
【0002】
[0001]画像処理装置、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路、クリプトグラフィックアクセラレーター、映像処理ユニット、正規表現アクセラレーター(regular expression accelerator)、データ圧縮アクセラレーター、人工知能アクセラレーターなどの周辺デバイスが、ホストの中央処理装置(CPU:central processing unit)を補完するためにますます広く使用されている。汎用CPU上で動くソフトウェアにおいて可能なものより効率的に機能を実施するためにコンピューターハードウェアを備える周辺デバイスが、ハードウェアアクセラレーターとして機能するCPUから独立した、非常に有用なユニットであることが多い。典型的には、これらのタイプの周辺デバイスは、より大きな同時並行性を可能にすることによって特定のタイプのアルゴリズムの実行を改善する。周辺機器は、より高い信頼性及び異なるセキュリティオプションをもたらすためにも使用される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0002]機密コード及び又は機密データを用いること、並びに、セキュリティ及びプライバシーを保持することについての要望がますます高まっている。多くの場合、大量の機密コード及び又はデータがリソース負荷の大きなアルゴリズムを使用して処理されることになり、周辺デバイスは、このような状況における効率性を改善するためのオプションである。それでも、周辺デバイスが使用される場合、ホストと周辺デバイスの両方が存在すると、ホスト自体を信頼できないことが多いので、機密コード及び/又はデータのセキュリティ及びプライバシーに関する余分の難題がもたらされる。機密コード及び機密データは、ホストを介して周辺デバイスに達し、したがって、攻撃者は、信頼できないホストから機密情報を取得できる可能性がある。
【課題を解決するための手段】
【0004】
[0003]下記で説明される実施形態は、既知の周辺デバイスの短所のいずれか又は全てを解決する実装形態に限定されない。
[0004]以下は、基本的な理解を読者に提供するために本開示の簡素化した概要を提示する。本概要は、特許請求される主題の主要な特徴又は必須の特徴を識別することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。その唯一の目的は、後で提示される、より詳細な説明への前置きとして、本明細書で開示された概念の選択を単純な形で提示することである。
【0005】
[0005]様々な例では、ホストコンピューティングデバイスとともに使用するための周辺デバイスがあり、周辺デバイスは、1つ又は複数の計算要素、セキュリティモジュール、及び少なくとも1つの暗号化ユニットを備える。セキュリティモジュールは、機密コードを使用して機密データを処理するために、周辺デバイス上に信頼できる実行環境を形成するように構成される。機密データ及び機密コードは、ホストコンピューティングデバイスと通信している、信頼できる計算エンティティによって提供される。少なくとも1つの暗号化ユニットは、ホストコンピューティングデバイスを介して、信頼できる実行環境と信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成される。セキュリティモジュールは、機密コードが信頼できる実行環境内にあることを証明する(attest)ために証明(attestation)を計算し、信頼できる計算エンティティに送るように構成される。
【0006】
[0006]付随する特徴の多くは、添付の図面とともに考慮される以下の詳細な説明を参照することによって同じものをより良く理解するようになると、より容易に認識されるであろう。
【0007】
[0007]本説明は、添付の図面の観点から読まれる以下の詳細な説明から、より良く理解されるであろう。
【図面の簡単な説明】
【0008】
【
図1】第1の信頼できる計算エンティティ、信頼できない中間体、及び第2の信頼できる計算エンティティの概略図である。
【
図3】信頼できる周辺デバイスとともに、信頼できないホストコンピューティングデバイスを備えるデータセンターの概略図である。
【
図4】
図1の第2の信頼できる計算エンティティの例である周辺デバイスの概略図である。
【
図5】
図5Aは、セキュリティモジュールがダイ上にある周辺デバイスパッケージの概略図である。
図5Bは、セキュリティモジュールがダイ上になく基板上にある周辺デバイスパッケージの概略図である。
図5Cは、2つのパッケージを備える周辺デバイスの概略図である。
【
図6】セキュリティモジュールにおける動作の方法の流れ図である。
【
図7】リモート証明処理のメッセージシーケンスチャートである。
【
図8】鍵交換方法のメッセージシーケンスチャートである。
【
図9】
図1の第1の信頼できるエンティティ及び第2の信頼できるエンティティによって使用される暗号化プロトコルのメッセージシーケンスチャートである。
【
図10】第1の信頼できる計算エンティティ、又はホストの実施形態が実装された、コンピューターベースのデバイスの概略図である。
【発明を実施するための形態】
【0009】
添付の図面における同様の部品を指定するために、同様の参照番号を使用する。
[0008]添付の図面とともに下記で提供される詳細な説明は、本例の説明であることを意図するものであり、本例が構築されるか利用される形式だけを表すことを意図するものではない。説明は、例の機能、及び、例を構築し動作させるための動作のシーケンスを示す。それでも、同じ又は同等の機能及びシーケンスを、異なる例で行うことができる。
【0010】
[0009]本明細書で説明される様々な例では、周辺デバイスは、ホストコンピューティングデバイスとともに使用される。ホストコンピューティングデバイスは、信頼できず、悪質である可能性がある。テナントは、ホストコンピューティングデバイスと通信しており、周辺機器上で実行することをテナントが望むコードにアクセスできる任意のコンピューティングデバイスである。いくつかの例では、テナントには、機密データを処理するために周辺デバイス上で実行することになる機密コードがある。いくつかの例では、1つ又は複数の他のテナントも周辺デバイスを使用しているが、これは必須ではない。1つの例では、機密コードは、ニューラルネットワーク又は他の機械学習アルゴリズムのための訓練又は推論を実行し、機密データは、訓練データである。機械学習モデルは、周辺デバイス上で訓練され、結果として生じる訓練済モデルのパラメーターが、訓練後に周辺機器からテナントに返される。モデルは、周辺デバイス内にとどまり、訓練後の推論のために使用されてもよい。それでも、技術は、機械学習アプリケーションに限定されず、任意の機密コード及び機密データが使用される。いくつかの例では、コード及びデータの1つ又は両方が機密ではない。
【0011】
[0010]周辺デバイス上で機密コードを実行するために、機密コードは、周辺デバイスへの入力がホストを介するので、ホストを介して周辺機器に転送されることになる。一度、周辺デバイスにおいて、機密コードは、同じホストの他の周辺デバイスに転送することができる。それでも、ホストを介して周辺機器に機密コードを転送することは、ホストコンピューティングデバイスが悪質である可能性があるので、簡単ではない。機密データも、周辺機器に転送されることになり、やはり、これは、ホストコンピューティングデバイスが悪質である可能性がある場合、問題となる。テナントは、ホストコンピューティングデバイスを信頼しておらず、したがって、機密コードが周辺機器に転送されたときでも、テナントは、機密コードがまだ秘密であるのか、又は、ホストが機密コードを改ざんしたか、もしくは、機密コードを他のコードと置き替えたのかよくわからない。機密データは、ホストを通過し、信頼できないホストによって危険にさらされる可能性がある。
【0012】
[0011]場合によっては、攻撃者は、例えば、攻撃者が、ホストオペレーティングシステムのアドミニストレーターであるか、ホストオペレーティングシステムにおけるアプリケーション又はサービスについてのアドミニストレーター特権を有する場合、ホストコンピューティングデバイスに特権的にアクセスすることができる。場合によっては、攻撃者は、ホストコンピューティングデバイスのオペレーティングシステム、ホストコンピューティングデバイス上のハイパーバイザー、又はホストコンピューティングデバイスの別の特権的実行モードにおける脆弱性を活用するハッカーである)。場合によっては、攻撃者は、ホストコンピューティングデバイス及び周辺デバイスに物理的にアクセスすることができ、任意選択として、周辺機器内の構成要素間の関係を探り、改ざんすることができる。攻撃者は、ビット反転を誘発するために、温度、電力、又はクロックの境界から周辺機器を利用する基板レベルの敵であることもある。
【0013】
[0012]様々な例において、テナントは、任意の適切な通信ネットワークでホストコンピューティングデバイスと通信している、クライアントと呼ばれるコンピューティングデバイスである。周辺デバイスは、ホストコンピューティングデバイス内にあるか、ホストコンピューティングデバイスに接続される。本明細書で説明するような周辺デバイスの周到な設計により、機密コードを実行するため、及び、機密データを処理するために、信頼できる実行環境(TEE:trusted execution environment)を周辺デバイス上に作成することができる。いくつかの例では、TEEは、上述のような周辺機器に実際にアクセスできる可能性のある信頼できないホスト及び攻撃者に対して、セキュアであるように設計される。
【0014】
[0013]周辺デバイスの設計を、下記の
図4、及び
図5Aから
図5Cを少なくとも参照しながら説明し、TEEの作成を、
図6を少なくとも参照しながら説明する。いくつかの例では、周辺機器は、テナントによって予想されるように、周辺機器上に機密コードがインストールされていることをテナントに証明するように構成される。周辺デバイスの実例の証明処理を、少なくとも
図7を参照しながら説明する。
【0015】
[0014]
図8を参照しながら説明するものなどの鍵交換処理がある。鍵交換処理は、テナントと周辺機器との間のセキュアな通信に役立つ。場合によっては、鍵交換処理は、2つ以上の当事者からの機密データを周辺機器で処理し、当事者間で秘密にしておくことを可能にするために使用される。いくつかの例では、当事者はテナントである。それでも、場合によっては、当事者は、周辺機器上で実行されることになるコードにアクセスすることができない。周辺機器がリソースアイソレーションをサポートするものである場合、鍵交換処理は、2つ以上のテナントが同じ周辺機器を使用して、異なる機密コード及び機密データを実行する一方で、テナント間の秘密性を保つことを可能にするのに役立つ。いくつかの例では、複数のテナント及び/又は当事者は、同じコードに同意し、その後、異なるデータセットを周辺機器に送る。
【0016】
[0015]いくつかの例では、信頼できない中間体を介した、2つの信頼できるエンティティ間の機密データの効率的でセキュアな転送を可能にする暗号化プロトコルがある。暗号化プロトコルの例を、
図9を参照しながら説明するが、これは、信頼できるエンティティのうちの1つがテナントであり、もう一方の信頼できるエンティティが周辺機器であり、信頼できない中間体がホストであるケースに適用可能である。それでも、暗号化プロトコルは、テナント及びホストされる周辺機器の状況を超えて広く適用可能であることに留意されたい。暗号化プロトコルは、任意の信頼できない中間体を介した、任意の第1の信頼できるエンティティと任意の第2の信頼できるエンティティとの間の機密データのセキュアな転送のために使用することができる。第1及び第2の信頼できるエンティティは、場合によっては、テレコミュニケーションネットワーク内のノードであり、信頼できない中間体は、テレコミュニケーションネットワーク内のルータ、スイッチ、又はプロキシである。第1及び第2の信頼できるエンティティは、いくつかの例では、家庭のパーソナルコンピューター及びインターネットサービスプロバイダーサーバーであり、信頼できない中間体は、家庭のワイヤレスアクセスポイントである。いくつかの例では、信頼できない中間体は、ワイヤレスホットスポットデバイスであり、信頼できる第1のエンティティは、スマートフォンであり、信頼できる第2のエンティティは、ウェブサーバーである。
【0017】
[0016]第2の信頼できるエンティティにおけるセキュリティモジュールは、第2の信頼できるエンティティにおける信頼できる実行環境の動的な作成を実現するために、従来とは異なる手法で動作する。セキュリティモジュールは、信頼できない中間体を介した、セキュリティモジュールの信頼できる実行環境と信頼できる第1のエンティティとの間のセキュアかつ効率的な通信を達成するために、従来とは異なる手法で動作する。
【0018】
[0017]第2の信頼できるエンティティにおけるセキュリティモジュールは、周辺デバイスに信頼できる実行環境を作成することによって、根底にある周辺デバイスの機能を改善する。
【0019】
[0018]
図1は、第1の信頼できる計算エンティティ100、信頼できない中間体108、及び第2の信頼できる計算エンティティ112という、3つの高レベルエンティティを示す。本明細書で説明される例の大部分において、第1の信頼できる計算エンティティ100はテナントであり、第2の信頼できる計算エンティティ112は、信頼できない中間体108の周辺機器である。それでも、上述のように、
図9を参照しながら説明される暗号化プロトコルは、
図1に示した3つの高レベルエンティティにさらに広く適用可能である。第1の信頼できる計算エンティティは、任意のコンピューティングデバイス、又は信頼できる実行環境であり、機密コード102を格納し、機密データ104を格納し、機密コード及び/又は機密データを暗号化すること106と、信頼できない中間体108と通信することとを行うことができる。いくつかの例では、第1の信頼できる計算エンティティは、信頼できない中間体108上の信頼できる実行環境である。第1の信頼できるエンティティの暗号化ツール106は、機密情報の暗号化と復号の両方を行う。
【0020】
[0019]信頼できない中間体108は、メモリ110を含み、第1の信頼できる計算エンティティ100から暗号化されたデータを受け取ることができ、通信ネットワーク又はリンクを介して第2の信頼できる計算エンティティと通信している、任意のコンピューティングデバイスである。(任意のタイプのメモリ110である)メモリ110は、第1の信頼できる計算エンティティからのコード及び/又はデータの少なくとも暗号化されたブロックを格納する。
【0021】
[0020]第2の信頼できる計算エンティティ112は、機密コードを使用して機密データを処理するための信頼できる実行環境を作成するような方式で、自らを隔離することができる任意のコンピューティングデバイスである。第2の信頼できる計算エンティティ112は、機密コードを使用して機密データを処理するための1つ又は複数の計算要素114を含む。計算要素114は、プロセッサ、同時計算ユニット、又は他の計算要素である。第2の信頼できる計算エンティティ112は、計算要素114によって共有されたメモリ116を有し、1つ又は複数の暗号化ユニット118を有する。各暗号化ユニット118は、情報の暗号化及び復号を行うことができる。第2の信頼できる計算エンティティ112のセキュリティモジュール120は、信頼できる実行環境を作成し、第1の計算エンティティに証明を提供して、第2の信頼できる計算エンティティ112における1つ又は複数の状態を証明するように処理を制御する。第2の信頼できる計算エンティティ112において証明されることになる状態の完全に網羅されていないリストは、第2の信頼できる計算エンティティ112のハードウェアが、メモリがクリアされているなどの一定の既知の状態にあること、特定のファームウェアが、第2の信頼できる計算エンティティ112にインストールされていること、特定の機密コードが、第2の信頼できる計算エンティティ112にインストールされていることである。
【0022】
[0021]第2の信頼できる計算エンティティにおける暗号化ユニット118、及び第1の信頼できる計算エンティティにおける暗号化ツール106は両方、信頼できないホストを介して転送するために、暗号化プロトコルを使用して、機密コード及び/又はデータのブロックを暗号化するように構成される。鍵及び初期化ベクトルを使用して機密情報のブロックを暗号化することによってホストから機密情報を保護する任意の暗号化プロトコルを使用することができる。個々のブロックは、初期化ベクトルと鍵を含むペアを使用して暗号化される。
【0023】
[0022]いくつかの例では、暗号化プロトコルは、暗号化プロトコルの初期化ベクトルをセキュアに管理することに特に効率的なプロトコルである。暗号化プロトコルは、初期化ベクトルを効率的に取得するために、第1及び第2の信頼できる計算エンティティが、パラメーター化された機能に事前同意すること122を伴う。パラメーター化された機能は、機密情報の各ブロックの暗号化のため、及び復号のために、ペアごとに別個の初期化ベクトルを計算する。逆に、機密情報の異なるブロックに対して同じ初期化ベクトルを使用すると、これらの整合性及び秘密性を危険にさらす可能性がある。機密情報の同じブロックに対して異なる初期化ベクトルを使用すると、本文書で後でより詳細に説明するような復号エラーになる。
【0024】
[0023]
図1における例は、単一の信頼できない中間体108、及び単一の第2の信頼できる計算エンティティ112を示しているが、複数のこのようなエンティティを含むこともできる。いくつかの例では、各信頼できない中間体108は、これに接続された複数の第2の信頼できる計算エンティティ112を含み、第2の信頼できる計算エンティティ112は、互いに通信することができる。いくつかの例では、任意選択として、互いに通信することができる複数の信頼できない中間体108がある。技術は、したがって、信頼できない中間体108のラックがあるラックスケールのシナリオにスケールアップし、これらのそれぞれは、互いに通信することができる複数の第2の信頼できる計算エンティティ112を担当する。
【0025】
[0024]
図2は、信頼できないホスト204、及び信頼できないホスト204に接続された信頼できる周辺デバイス206を備える計算ノード200の概略図である。複数のこのような計算ノード200は、
図3に示したようなデータセンター300内に配置され、ここで、計算ノード200は、明瞭さのために
図3に示していないデータセンター300内の通信ネットワークを使用して相互に接続される。コンピューティングデバイスを備える第1のテナント302は、機密データ及び/又はコードのセキュアなストア306を有する。第1のテナント302は、データセンター300と通信している。第1のテナント302は、データセンター300内の計算ノード200の信頼できる周辺デバイスの1つ又は複数上の信頼できる実行環境に、機密コードをセキュアにコピーすること、及び、機密コードがインストールされ、デバイスが既知の状態にある周辺デバイスから証明を受け取ることができる。第1のテナント302は、信頼できる実行環境で機密データが処理されるように、信頼できる周辺デバイスに機密データをコピーすることができる。いくつかの例では、セキュアな機密データの1つ又は複数の他の発生源も、信頼できる実行環境で実行するコードに入力する。このようにして、2つ以上の当事者からのデータが、信頼できる実行環境での機械学習又は他の処理のために使用される。
【0026】
[0025]いくつかの例では、データセンター300と通信しているコンピューティングデバイスを備える第2のテナント304がある。第2のテナント304は、機密コード及び/又はデータのセキュアなストア308を有する。第2のテナントは、第1のテナント302のように、データセンター内の同じ周辺デバイスの1つ又は複数に機密コード及びデータをコピーすることができる。周辺デバイスでリソースアイソレーションメカニズムを使用して、また、個々のテナントコード及びデータに対して別個の暗号鍵を使用して、個々のテナントの秘密性を維持することができる。
【0027】
[0026]いくつかの例では、第2のテナント304は、第1のテナント302の機密データとは異なる機密データのセキュアなストア308を有する。第1のテナント302と第2のテナント304の両方は、同じ周辺デバイスにおける同じ機密コードを使用し、同じ機密コードによって処理されることになるこれらのそれぞれの異なるデータセットを送る。
【0028】
[0027]
図3は、データセンターについての状況を示す。それでも、スタンドアロンの状況で、又は他の種類の配置で、
図1の信頼できるエンティティ及び信頼できないエンティティを使用することもできる。1つの例では、
図1の信頼できるエンティティ及び信頼できないエンティティは、エッジ配置(edge deployment)で使用される。ここで、第1の信頼できる計算エンティティ100、信頼できない中間体108、及び第2の信頼できる計算エンティティ112は、クラウド内ではなく、通信ネットワークのエッジに配置される。第1の信頼できる計算エンティティ100は、キャプチャデバイス又はセンサーなどのデータ源に物理的に近いか、又は、機密データ104を生み出す統合型のキャプチャデバイス又はセンサーを備える。第1の信頼できる計算エンティティ100は、信頼できない中間体108及び第2の信頼できる計算エンティティ112を使用して、キャプチャデバイス又はセンサーなどのデータストリーム源の近くで機械学習及び/又は推論を行う。
【0029】
[0028]
図4は、
図1の第2の信頼できる計算エンティティなどの、第2の信頼できる計算エンティティ112の概略図である。いくつかの例では、第2の信頼できる計算エンティティは、ホストコンピューティングデバイスの周辺デバイスであるが、これは必須ではない。
【0030】
[0029]第2の信頼できる計算エンティティ112は、1つ又は複数の計算要素114、及び任意選択のメモリ116を備える。メモリ116は、計算要素によって共有されるか、特定の計算要素に専用のものである。第2の信頼できる計算エンティティ112は、暗号化/復号構成要素402、任意選択の鍵ストア404、及び任意選択のバッファー406を備える少なくとも1つの暗号化ユニット118を含む。
【0031】
[0030]暗号化/復号構成要素402は、任意の形式の通信を介して、ホストから、及び他の周辺デバイスから受け取ったデータを認証し復号するように構成される。1つの例では、通信は、ダイレクトメモリアクセス(DMA:direct memory access)リクエストを使用して行われるが、この形式の通信を使用するのに必須ではない。暗号化/復号構成要素402は、DMA転送(もしくは他の形式の通信)を介してホストに送られた、又は、他の周辺デバイスに送られたデータを、認証された暗号化を使用して暗号化するように構成される。いくつかの例では、暗号化/復号構成要素402は、周辺機器がデバイスパッケージである場合、パッケージのダイ上に置かれた論理ブロックである。他の例では、暗号化/復号構成要素はパッケージ上にあるか、プログラム可能な周辺機器上のソフトウェア構成要素として実装する。暗号化/復号構成要素402は、任意選択のバッファー406に接続され、バッファー406は、DMAリクエスト及びレスポンスなど、ホストとの間の通信を傍受してバッファー処理するために配置される。バッファー406は、拡張された暗号鍵を保持する鍵ストア404に、及び、周辺コンポーネントインターコネクトエクスプレス(PCIe)コンプレックスにも接続される。全てではないが、いくつかの例では、第2の信頼できる計算エンティティは、動作の非セキュアモードをサポートする。周辺デバイスの動作の非セキュアモードでは、暗号化/復号構成要素は迂回される。
【0032】
[0031]バッファー406を使用すると、2つ以上のDMAリクエスト又はレスポンスが、どの時点においても飛行中である(in flight)ことになり得るという利点をもたらす。場合によっては、バッファー406は、省略され、DMAリクエスト又はレスポンスが、1つずつ発行される。
【0033】
[0032]特定の例では、技術の範囲を限定することを意図するものではないが、暗号化/復号構成要素402は、AES又は別の暗号化スキームをサポートし、複数鍵のコンテキストをサポートし、暗号化されたデータストリームが終了したときにチェックされることになる認証タグを指定するため、及びクリアテキストのデータストリームが終了したときに認証タグを取り出すためのインターフェースを含む。
【0034】
[0033]第2の信頼できる計算エンティティ112内のセキュリティモジュール120は、(第2の信頼できる計算エンティティ112が非セキュアモードをサポートする場合に使用される)任意選択のモードスイッチ408、証明構成要素412、任意選択の鍵交換ツール410、セキュアデータ転送構成要素414、及び任意選択のパラメーター監視ツール416を含む。セキュリティモジュールは、周辺デバイスパッケージを統合した論理ブロックである。1つの例では、セキュリティモジュールは、マイクロコントローラーを伴うシステムオンチップ(SoC:a system on a chip)、コード及びデータのためのスタティックランダムアクセスメモリ(SRAM)、並びに、マイクロコントローラーのための最初のブートブロックを保持するためのリードオンリメモリ(ROM)である。それでも、セキュリティモジュールの他の実装形態が可能である。セキュリティモジュール120は、対称鍵で認証される暗号化及び復号、セキュアハッシュ計算、公開鍵生成、署名及び認証、並びにエントロピー源などの動作のための論理ブロック又はソフトウェアを収める。セキュリティモジュール120は、任意の適切なコネクタを使用して周辺機器の他の構成要素に接続される。
【0035】
[0034]セキュリティモジュール120は、周辺機器をクリーン状態に初期化し、ホストと周辺デバイスとの間の、及び、周辺デバイス間のデータ転送の暗号化及び復号を組み合わせるように構成される。セキュリティモジュール120は、セキュリティモジュール120のヒューズに焼きつけられるか、セキュリティモジュール120のハードウェアを使用して生成されるルートエンドースメント鍵を収める。ルートエンドースメント鍵は、信頼できる証明権威を使用して、有効化のための証明鍵を生成するのに適した信頼のルートとして機能する。
【0036】
[0035]モードスイッチ408は、周辺デバイスの機密メモリ及び機密レジスタが周辺デバイスの外部のエンティティによってアクセス可能な非セキュアモードと、周辺デバイスの機密メモリ及び機密レジスタが周辺機器の外部のエンティティによってアクセス可能ではないセキュアモードとの間で、周辺デバイスをスイッチするために配置される。セキュアモード中、セキュリティモジュールは、信頼できない中間体が安全でない機能にアクセスするのを防ぐ、デバイス固有のアクセス制御リストを実施するように周辺機器を構成する。セキュアモード中、DMA、及び周辺デバイスから周辺デバイスへの通信は、暗号化ユニット118を通じてルーティングされる。
【0037】
[0036]いくつかの例では、周辺機器上で起動されることになる機密コードのアドレスを収めるレジスタなど、アクセスが認証されることになる1つ又は複数のレジスタがある。これらのレジスタへのアクセスは、アクセスを権限付与し、異なるインターフェースを通じて周辺機器機能を起動するセキュリティモジュールにルーティングされる。アクセスが認証されることになるレジスタは、周辺機器によって公開され、セキュリティモジュールによってサーブされる。
【0038】
[0037]任意選択の鍵交換ツール410は、鍵とともに暗号化ユニット118を構成するために配置される。
[0038]セキュリティモジュール120は、計算ユニット上で動くアプリケーションコードの測定、リモート証明のためのクオート(quote)の生成、及び鍵交換のための証明構成要素412を含む。クオートは、リモート証明のために周辺デバイスによって発行された証明書として機能するデータであり、これにより、テナントは、周辺デバイスの1つ又は複数のセキュリティ上の重要なプロパティを検証することができる。クオートは、周辺機器のセキュリティ上の重要な性質をとらえる。非限定的な例では、クオートは、ハッシュとして計算される。
【0039】
[0039]セキュリティモジュール120は、SRAM又は他のメモリなどのセキュリティモジュールメモリにホストから直接的又は間接的にデータを転送するためのDMAリクエストを生成するセキュアデータ転送構成要素414を含む。
【0040】
[0040]任意選択のパラメーター監視ツール416は、セキュリティモジュール120の温度、電力、及びクロックパラメーターを監視するために配置される。パラメーター監視ツール416は、パラメーターの1つ又は複数が安全な範囲から外れた場合にリセットを発行し、周辺デバイスが完全にリセットされたという通知をセキュリティモジュール120が受け取るまで、リセットラインを保持するために配置される。リセット状態は、セキュリティモジュール120のメモリに保持され、リセットを送るためのロジックは、ソフトウェアを使用して、又は、ハードウェアステートマシンを使用して実行される。セキュリティモジュール120は、パリティビットを伴うダイナミックランダムアクセスメモリ(DRAM)のワード、指定された電力及び温度の定格から外れて周辺デバイスを動作させているかをチェックするためのダイ上の温度センサーを使用する。
【0041】
[0041]第2の信頼できる計算エンティティ112のアイデンティティは、エンドースメント鍵に基づき、エンドースメント鍵は、第2の信頼できる計算エンティティ112がチップを備えるデバイスパッケージである場合、製造中にチップ上に作成されるか、提供される。秘密エンドースメント鍵は、チップを決して離れず、公開鍵は、証明のために使用され、証明鍵と呼ばれる。複雑性及びセキュリティにおいて変化するエンドースメント鍵の提供について異なる方式があり、これらの方式の2つを次に説明する。
【0042】
[0042]第1の方法では、信頼できる第2のエンティティの製造業者は、エンドースメント鍵のペアをセキュアに生成し、秘密エンドースメント鍵を各デバイスにおけるヒューズに焼きつけ、信頼できる証明権威に公開鍵の証明書を提供するための設備を有する。このアプローチの欠点は、製造業者が秘密エンドースメント鍵にアクセスできることである。別の欠点は、このアプローチが、複雑性及びコストを製造業者にもたらすことである。
【0043】
[0043]第2の方法では、エンドースメント鍵は、物理的複製防止機能(PUF:physical unclonable function)とファジーエクストラクタとの組合せを使用して、第2の信頼できるコンピューティングデバイス上で生成される。PUFは、半導体製造中に自然に発生する物理的な変化に基づき、他の同一の半導体との間で区別できるようにする。ファジーエクストラクタとともに、PUFは、所与の入力で評価されるたびに同じ鍵を生成することになる。典型的には、PUFは、秘密鍵を最初に生成し、次に、対応する公開鍵を生成し出力するために、信頼できるファームウェアによってセキュアブート処理中に使用されることになる。信頼できる第2のコンピューティングデバイスの製造業者は、各デバイスに対してこの処理をトリガし、秘密鍵にアクセスできなくても、又は、秘密鍵を維持する必要なく、公開鍵の証明書を発行することができる。別の長所は、このメカニズムが物理証明を可能にすること、すなわち、デバイスに実際にアクセスできる誰か(例えば、監査人)が、公開鍵を取得し、証明書を発行できることである。
【0044】
[0044]証明権威がエンドースメント鍵証明書を受け取ると、証明権威は、証明書を発行する。信頼する当事者は、証明書を使用して、信頼できる第2のコンピューティングデバイスからのメッセージの整合性を確かめる。証明権威は、置き忘れたか、解除された、又は、危険にさらされてきた可能性のあるデバイスを収める無効リスト(revocation list)も維持する。証明権威は、このようなデバイスに対する証明書の発行を停止する。
【0045】
[0045]
図1のエンティティのいずれかによって使用するために、エンクレーブ証明サービス(enclave attestation service)を利用することができる。エンクレーブ証明サービスは、第2の信頼できるコンピューティングデバイス上の信頼できる実行環境などの、エンクレーブからのクオートを受け入れる。エンクレーブ証明サービスは、他のサービスに転送して秘密を公表することができる署名済トークンを生成する。ポリシーが、秘密の公表を決定する。ポリシーは、(第2の信頼できるコンピューティングデバイスの状態の測定などの)クオート内の属性などの尺度を使用する。証明サービスは、クオートに対するポリシーをチェックする。証明サービスは、指定の製造業者からの全てのクオートを信頼すること、又は、サービスが有効な公開エンドースメント鍵を有する場合にクオートを信頼することなどを行うための、複数の信頼モデルをサポートする。証明サービスによって生成されたトークンは、場合によっては、デバイスの地理位置についての情報を搬送することができる。場合によっては、PCK証明書がクオートとともにパッケージ化され、証明サービスに転送される。
【0046】
[0046]周辺デバイスパッケージ内のどこにセキュリティモジュール120を置くべきかについて、様々な異なるオプションがある。
図5Aを参照しながら説明される第1のオプションでは、セキュリティモジュール504は、計算要素502及び暗号化ユニット118と同じダイ506上に位置する。暗号化ユニットは、明瞭さのために
図5Aに示していないが、計算要素502とともに位置する。第1のオプションは、攻撃者がセキュリティモジュール内の秘密にアクセスするか、改ざんした場合、彼らが、パッケージ全体の機能を害することになるので、セキュリティが強い。第1のオプションは、セキュリティモジュールがダイ上にあることにより、良いパフォーマンスをもたらす。
【0047】
[0047]第2のオプションは
図5Bに示され、周辺機器パッケージ508と同じマルチチップモジュールにセキュリティモジュール514を統合することを含む。ここで、計算要素510及び暗号化ユニット118(
図5Bに図示せず)は、基板516上でサポートされるダイ512上にある。セキュリティモジュール514は、計算要素510と同じ基板516上にあるが、計算要素510と同じダイ512上にはない。第2のオプションは、攻撃者が周辺デバイスパッケージ508に実際にアクセスできる場合、オプション1よりセキュリティがわずかに弱い。それでも、第2のオプションは、周辺デバイスのその他の構成要素からセキュリティモジュール514を分離するという利点をもたらし、分離は、開発、設計、及び検査を容易にする。
【0048】
[0048]第3のオプションは、
図5Cに示され、独立したチップ上に、パッケージから離して、セキュリティモジュール524を置くことを含む。第3のオプションでは、計算要素520及び暗号化ユニット118(明瞭さのため、
図5Cに示さず)を備える第1のパッケージ518がある。セキュリティモジュール524を含む第2のパッケージ522もある。第1及び第2のパッケージは、互いに接続される。第3のオプションは、残りの周辺デバイスパッケージからセキュリティモジュールを分離させ、したがって、製作を容易にする。
【0049】
[0049]第2の信頼できるコンピューティングデバイスの初期化を次に説明する。セキュリティモジュールは、第2の信頼できるコンピューティングデバイスがブート又はリセットするとき、ブートシーケンスを通る。
【0050】
[0050]ブートシーケンス中、セキュリティモジュールは、ROMからファームウェアをロードし、ファームウェアが正しく署名されたことをチェックし、ファームウェアを測定する。測定値は、セキュリティモジュールにセキュアに格納される。
【0051】
[0051]セキュリティモジュールのファームウェアは、(a)署名のチェック、測定、及び証明鍵の生成などの重要なタスクを担当する構成要素、(b)クオートの生成、及びダイレクトメモリアクセスのトラフィックの暗号化/復号などの他のタスクを担当する構成要素という、2つの構成要素に分けられる。第1の構成要素は、セキュリティ上、重要であり、できる限り小さく、めったに変更しない。第2の構成要素は、ファームウェア測定値、並びに、秘密のエンドースメント鍵及び証明鍵などの秘密に、書込みアクセスを行うことができない。
【0052】
[0052]ブート後、セキュリティモジュールは、新しい証明鍵(AK)を生成するようにリクエストされる。対応する秘密鍵AKprivは、セキュリティモジュール内の不揮発メモリにセキュアに格納される。代替として、証明鍵は、ファームウェアが信頼できるコンピューターベース(firmware trusted computing base)を初期化ベクトルとして使用して、PUFから導出される。これは、証明鍵を格納する必要をなくす。それでも、これは、ファームウェア更新時に新しくするために、証明鍵を新しくすることができる頻度を制限する。
【0053】
[0053]
図1及び
図4のセキュリティモジュール120などのセキュリティモジュールによって実施される方法の例を、次に、
図6を参照しながら示す。周辺デバイスは、ホストデバイスが、周辺デバイス上の機密コード及び/又は機密データにアクセスするか、改ざんすることができる非セキュアモードにある600。セキュリティモジュール120は、セキュアモードにスイッチするべきかどうかをチェックする602。スイッチするべきでない場合、周辺デバイスは、非セキュアモードのままである。TEEを作成するために、セキュリティモジュール120がテナントからコマンドを受け取ると、セキュリティモジュール120は、セキュアモードにスイッチする。
【0054】
[0054]セキュアモードにスイッチするために、セキュリティモジュール120は、周辺機器内の機密メモリ及びレジスタへの外部アクセスを無効にし604、周辺機器のハードウェア要素を既知の状態にする。1つの例では、セキュリティモジュール120は、メモリマップド入出力(MMIO:memory-mapped input/output)によるセキュリティモジュール120内のSRAMへの読み書きアクセスを無効にする。セキュリティモジュール120は、MMIOによる任意のセキュリティ上の機密メモリ及び制御レジスタへのアクセスを無効にするように周辺機器に命令する。周辺デバイスを正しく機能させるためのセキュリティモジュール120内のレジスタ又はメモリへのアクセスは、これらのレジスタ又はメモリがセキュリティ上の機密の情報を保持しないセキュアモードに保たれる。これらのレジスタ又はメモリへのアクセスは、アクセスがテナントによって権限付与されたかどうかをチェックするセキュリティモジュールにルーティングされる。MMIOによるアクセスを無効にした後、セキュリティモジュール120は、周辺デバイスをリセットすることによって、また、ゼロを書き込むことで周辺デバイスのメモリをリセットすることなどによって、周辺デバイスのメモリを既知の状態にする。
【0055】
[0055]セキュアモードになると、セキュリティモジュール120は、
図7を参照しながらより詳細に説明されるように、テナントから機密コードを受け取る606。ホストは、セキュリティモジュールからクオートをリクエストし、テナントにクオートを提供することができる。クオートは、周辺デバイスにおいて機密コードが正しくインストールされたことをテナントが検証するために、リモート証明のために周辺デバイスによって発行された証明書として機能する。
【0056】
[0056]セキュリティモジュールは、プルーフ(proof)を計算し608、テナントに送る。クオートは、周辺機器のセキュリティ上の重要な性質をとらえる。非限定的な例では、クオートは、セキュリティモジュール、デバッグモード、及び、ホストアクセスフラグと呼ばれ、証明鍵で署名された属性のハッシュとして計算される。ホストアクセスフラグは、MMIOによるタイルメモリへの読み書きアクセスを、ホストが行えるかどうかを示す。いくつかの例では、クオートは、セキュリティモジュールによって生成され、テナントの公開鍵を使用して暗号化された、新しいデータ暗号鍵のハッシュなどの外部データを収める。別の例では、クオートは、テナント定義の対称鍵を暗号化/ラッピングし、周辺デバイスに提供するためにテナントが使用できる公開鍵のハッシュを収める。
【0057】
[0057]クオートは、周辺デバイスのルートから信頼して生成された周辺デバイスの証明鍵を使用して署名される。クオートは、
証明鍵を使用して署名されたクオート、
周辺デバイスのルートエンドースメント鍵を使用して署名された証明鍵証明書、
周辺デバイスのルートエンドースメント鍵を使用して署名されたエンドースメント鍵証明書、
証明書を発行する自己署名したルートエンドースメント鍵
といったPKIのような証明書チェーンを形成する。
【0058】
[0058]クオートは、
周辺デバイスの製造業者によって発行されたエンドースメント鍵証明書、
証明書に適用されるような無効リスト、
周辺デバイスのファームウェアにとっての現在の信頼できるコンピューターベースの測定値
といったアーチファクトを保有している、証明サービスなどの、任意のエンティティによって検証可能である。
【0059】
[0059]現在の信頼できるコンピューターベースの測定値は、クオートを発行する周辺デバイスが、ファームウェアの最新のバージョンを動かしているかどうかについてのチェックを可能にし、無効リストは、デバイスが故障していること、解除されていること、危険にさらされていること、又は他の理由により、デバイスからのクオートが無効であるかどうかをチェックするために使用される。
【0060】
[0060]セキュリティモジュールは、任意選択として、2つ以上の当事者からの機密データが周辺デバイス上の同じ機密コードで処理されることになる実施形態のため、又は、同じ周辺デバイスを使用する複数のテナントがあり、それらのテナントのコード及びデータが、周辺デバイス上でリソースアイソレーションを使用して隔離される実施形態のために、鍵交換処理610を実行する。鍵交換処理は、
図8を参照しながら後でより詳細に説明する。
【0061】
[0061]セキュリティモジュールは、テナントから機密データをダウンロードし、機密コードを使用して周辺デバイス上で機密データを処理し、ホストを介してテナントに結果を出力することによって、セキュアデータのダウンロード612、実行、及び出力を実行する。いくつかの例では、セキュアデータのダウンロードは、テナントが、データのブロックを暗号化し、暗号化したブロックを、ホストを介して周辺機器に送ることを伴う。いくつかの例では、セキュアデータのダウンロードは、テナントが、データのブロックを暗号化し、暗号化したブロックをホストにコピーし、次に、周辺機器が、暗号化したブロックをホストから取り出すことを伴う。任意の適切な暗号化プロトコルが使用される。1つの例では、特に効率的な暗号化プロトコルが使用され、これを、
図9を参照しながら下記で説明する。ホストを介してテナントに結果を出力するために、暗号化ユニット118は、出力データのブロックを暗号化し、これを、ホストを介してテナントに送る。いくつかの例では、(対称である)
図9の暗号化プロトコルが、周辺デバイスにデータをダウンロードすることと、テナントに出力結果を送り返すこととの両方のために使用される。
【0062】
[0062]セキュリティモジュールは、信頼できる実行環境を終了するべきかどうかをチェックする614。終了するべきである場合、セキュリティモジュールは、周辺デバイスを中止し616、非セキュアモード600に戻る。TEEを明示的に終了するとき、又は周辺デバイスがホストからリセット信号を受け取ったとき、セキュリティモジュールは、全ての機密データを削除し、周辺デバイスをクリーン状態に戻す。これは、周辺デバイスにおけるメモリをリセットすること、いずれの鍵も削除すること、MMIOアクセスのブロックを解除すること、及び、非セキュアモードにスイッチすることを含む。周辺デバイスが電力サイクルを通る場合、周辺デバイスは、周辺デバイスのモードに関係なく、クリーン状態で再開する。
【0063】
[0063]
図6の動作608のリモート証明処理についてのさらなる詳細を、次に、
図7を参照しながら示す。リモート証明処理には、信頼できないホストが周辺デバイスのメモリに機密コードをコピーし、TEEを作成したときのメモリの内容を測定するために周辺デバイスのメモリにサポートが追加される実施形態と比べると、簡単なハードウェアを使用するという利点がある。
【0064】
[0064]
図7は、図の左側の垂直線で表された第1の信頼できるエンティティ100と、図の中央の垂直線で表された信頼できない中間体108と、図の右側の垂直線で表された第2の信頼できるエンティティ112との間を通る(水平の矢印で表された)メッセージを示すメッセージシーケンスチャートである。図の矢印の相対的な垂直位置は、メッセージの時系列順を表す。
【0065】
[0065](テナントなどの)第1の信頼できるエンティティ100は、アプリケーションコードを暗号化するためのプログラム暗号鍵(PEK:program encryption key)を生成する700。テナントは、周辺デバイスにコピーされることになる機密コードを有する。テナントは、機密コードのバイナリで認証タグ702を計算し、PEKを使用して機密コードを暗号化する704。場合によっては、認証タグは、メッセージ認証コード(MAC)である。
【0066】
[0066](テナントなどの)第1の信頼できるエンティティ100は、(周辺デバイスなどの)第2の信頼できるエンティティ112でのTEEの作成をリクエストするために、信頼できない中間体108にリクエスト706を送る。リクエスト706は、動作702において機密コードで計算された認証タグを含む。ホストは、第2の信頼できるエンティティ112に、TEEを作成するためのリクエストを転送し、(周辺デバイスなどの)第2の信頼できるエンティティは、
図6の動作604を参照しながら上記で説明したように、TEEを作成する708。TEEの作成後、第2の信頼できるエンティティ112のセキュリティモジュールは、周辺デバイスの暗号化ユニットをリセットし、周辺デバイスにおけるメモリの全てのブロックにわたって実行している認証タグを計算するモードにセキュリティモジュールをスイッチする。
【0067】
[0067]第2の信頼できるエンティティ112は、TEEが形成されたことを示すためのクオートを生成し、クオートに認証タグを含める。認証タグを含むクオートは、第2の信頼できるエンティティ112から第1の信頼できるエンティティ100(例えばテナント)に送られる710。第1の信頼できるエンティティ100は、クオートを検証し712、クオートに含まれる認証タグが、動作702において計算された認証タグに一致することをチェックする。検証が成功すると、第1の信頼できるエンティティ100は、第2の信頼できるエンティティ112にPEKを提供する714。1つの例では、PEKは、クオートに含まれる公開鍵で対称鍵を暗号化することによって第2の信頼できるエンティティのセキュリティモジュールに提供される714。
【0068】
[0068]第1の信頼できるエンティティ100は、(ホストなどの)信頼できない中間体108に、暗号化されたコードをコピーし716、信頼できない中間体108は、その物理メモリの指定の仮想アドレスに、暗号化されたバイナリをロードする718。
【0069】
[0069]第2の信頼できるエンティティ112は、信頼できない中間体108のメモリから、第2の信頼できるエンティティ112のメモリにコードをコピーするために、信頼できない中間体108にDMAリクエスト720を発行する。暗号化されたブロック722を含むレスポンスを、信頼できない中間体108から受け取る。レスポンス722は、第2の信頼できるエンティティ112の暗号化ユニットを通過し、第2の信頼できるエンティティ112は、コードの各ブロックを復号し724、コードシーケンス全体にわたって認証タグを計算する726。
【0070】
[0070]DMAリクエスト720が完了すると、(完全な機密コードを転送するために)、第2の信頼できるエンティティ112のセキュリティモジュールは、転送された機密コードの認証タグが、TEE作成時に指定された認証タグに一致することをチェックする726。一致する場合、第2の信頼できるエンティティのセキュリティモジュールは、第2の信頼できるエンティティ112の暗号化ユニットをデフォルトモード730にスイッチし、デフォルトモードでは、
図9の暗号化プロトコルに従って、第1の信頼できるエンティティ100と第2の信頼できるエンティティ112との間でデータを転送する。一致しない場合、第2の信頼できるエンティティは、TEEを終了する732。
【0071】
[0071]いくつかの例では、
図8を参照しながら説明されるような鍵交換処理がある。異なる鍵を使用して異なるデータストリームを暗号化するとき、複数の鍵が使用される。例えば、入力データストリーム、出力データストリーム、及びチェックポイントを、異なる鍵を使用して暗号化することができる。チェックポイントは、機密データを鍵交換処理が処理するときに機密コードによって計算された、また、信頼できない中間体上で暗号化され格納された、中間結果である。チェックポイントは、状態を回復すること、計算を再使用することに役に立つ。
図8の鍵交換処理には、セキュリティモジュールのプログラミング性を必要としないという利点がある。セキュリティモジュールのプログラミング性は、セキュリティモジュール上で任意のコードを動かし、証明鍵などの秘密を潜在的に漏らすために敵が活用できる機能である。
【0072】
[0072]1つの例では、
図8の鍵交換処理は、信頼できる第2のデバイス112のセキュリティモジュールのファームウェアに組み込まれたプロトコルである。1つ又は複数の鍵階層も、セキュリティモジュールのファームウェアに組み込まれる。これは、ファームウェアをアップグレードすることによってプロトコル及び鍵階層がアップグレード可能なので、暗号化の俊敏性(crypto-agility)とセキュリティとの間にバランスをもたらす。
【0073】
[0073]
図8の鍵交換処理は、K個の対称鍵DEK_1~DEK_Kのセットを、各信頼できる第2のデバイス112にセキュアに提供し、ここで、鍵は、異なるデータストリームのために使用される。
【0074】
[0074]信頼できる第2のエンティティ112は、TEEを作成する802。信頼できない中間体108(例えばホスト)は、いくつかのユーザーKを取得し800、UKpub_1~UKPub_Kで示したK個のユーザー公開署名鍵を指定し804、ここで、各公開鍵は、(データストリーム又はテナントなどの)関与するユーザーに属する。これに応じて、信頼できる第2のエンティティ112のセキュリティモジュールは、ラッピング鍵(WK:wrapping key)と呼ばれる新しい鍵のペアをTEE作成時に生成し806、セキュリティモジュール内のセキュアな揮発性ストレージにWKprivをセキュアに格納し808、信頼できない中間体108のメモリに公開鍵WKpubを書き込む810。信頼できない中間体108がクオートをリクエストした812とき、クオートは、WKpubで計算され814、公開鍵UKpubのセットの測定値を収める。クオートは、信頼できる第2のエンティティ112によって計算され、メッセージ816を使用して信頼できない中間体に送られる。信頼できない中間体108は、クオートを使用して818、鍵管理サービスアカウントの異なるユーザーからK個の異なる対称暗号鍵を取り出す。ユーザー/鍵管理サービスは、クオートを受け取り、クオートを検証する820。クオートが有効でない場合、処理は終了する822。クオートが有効な場合、信頼できる第1のエンティティ100は、WKpubを使用して秘密鍵を暗号化し824、そのUKprivを使用して結果に署名する。これは、セキュリティモジュールによって秘密鍵が復号されるだけであることを保証する。信頼できない中間体108は、次に、インデックスj\in(1,K)におけるセキュリティモジュールに、ラッピングされた対称鍵を提供する826。セキュリティモジュールは、UKpub_jを使用して、暗号化された鍵の署名をチェックする828。署名検証が成功すると、セキュリティモジュールは、鍵を復号し830、マップに鍵を格納する。K個全ての対称鍵が配置されると、セキュリティモジュールは、暗号化ユニットにこれらの鍵を提供する832。
【0075】
[0075]
図9は、いくつかの例において、
図1の信頼できる第1のエンティティ100及び信頼できる第2のエンティティ112によって使用される暗号化プロトコルのメッセージシーケンスチャートである。信頼できる第1のエンティティ100及び信頼できる第2のエンティティ112は、暗号鍵及びデータセットについて、暗号化プロトコルの初期化ベクトルを一度だけ使用することに事前に同意し900、すなわち、初期化ベクトルの単一の使用に同意する。信頼できる第1のエンティティ100及び信頼できる第2のエンティティ112は、初期化ベクトルを取得するためのパラメーター化された機能にも事前に同意する。いくつかの実施形態では、パラメーター化された機能は、仮想アドレスである単一のパラメーターを利用し、機能は、仮想アドレスが初期化ベクトルとして使用されるようなアイデンティティ機能である。他の実施形態では、パラメーター化された機能は、プログラム状態などのパラメーターを利用する。パラメーター化された機能は、仮想アドレス、鍵、カウンターの1つ又は複数について計算する。したがって、パラメーター化された機能がアイデンティティ機能であることは必須ではない。信頼できる第1のエンティティ100及び信頼できる第2のエンティティ112が、初期化ベクトルを取得するための機能に事前に同意したことにより、プロトコルは、初期化ベクトルを管理すること、初期化ベクトルが一意であることを保証すること、及び、信頼できる第1のエンティティ100と信頼できる第2のエンティティ112との間で初期化ベクトルを転送することを行うために複雑な方式を必要としないので、極めて効率的である。初期化ベクトルと鍵は、次に
図9を参照しながら説明されるように、暗号化904及び復号914の動作の前に、パラメーター化された機能から計算される。
【0076】
[0076]信頼できる第1のエンティティ100は、信頼できる第2のエンティティ112に転送されることになる機密情報を、複数のブロックに分割する。信頼できる第1のエンティティ100は、初期化ベクトルと鍵を使用してブロックを暗号化する904。個々のブロックは、初期化ベクトルと鍵を含むペアを使用して暗号化される。初期化ベクトルの単一使用に関する事前同意により、個々のブロックは、一意のペアを使用して暗号化される。このようにして、暗号化は、セキュアになる。対照的に、初期化ベクトルが2回以上使用される場合、例えば、データサンプルを、同じ初期化ベクトルで暗号化された別のものと置き替えることによって、悪質な当事者が機密データを取得するか、計算の整合性を危険にさらすというリスクがある。
【0077】
[0077]信頼できる第1のエンティティは、信頼できない中間体108のメモリに、暗号化されたブロックをコピーする906。信頼できない中間体108は、その物理メモリに、暗号化されたブロックを格納し、ブロックの物理メモリ位置は、物理記憶位置と仮想記憶位置との間のマッピングに応じた仮想アドレスを有する。潜在的に利用可能な仮想アドレスは極めて大きいが、なぜなら、これらのドメインは、依然としてあらゆる仮想アドレスを一度だけ使用しながら、大規模計算を機密コードが実行できるようにするのに十分大きいからである。
【0078】
[0078]信頼できる第2のエンティティ112は、少なくとも1つの暗号化ユニット118及び少なくとも1つの計算ユニット114を備える。計算ユニット114は、コードを実行して、暗号化されたブロック内のデータを処理し始めると、DMAリクエスト910、及び事前同意した機能のパラメーターを使用して、信頼できない中間体108からブロックをリクエストする。信頼できない中間体108は、リクエスト910を受け取り、リクエストされているブロックの初期化ベクトルを計算する。信頼できない中間体は、そのメモリの中を見て、信頼できる第1のエンティティ100からの適切な暗号化されたブロックを見つけ、適切な暗号化されたブロックを取り出す。
【0079】
[0079]信頼できる第2のエンティティの暗号化ユニット118は、取り出したブロックを復号し914、計算ユニット114に結果を送る。計算ユニットは、計算ユニットが動作910で作ったリクエストと関連付けられた元の初期化ベクトルを知っている。計算ユニットは、動作910からの初期化ベクトルを考慮して、復号から受け取った結果が予想されたものであることをチェックすることができる。チェックが通ると、計算ユニット114は、復号したデータの使用に進み、そうでなければ、復号したデータを拒絶する。
【0080】
[0080]上述のように、場合によっては、事前同意した機能は、信頼できない中間体108で暗号化されたブロックの仮想アドレスが初期化ベクトルであるようなものである。この場合、信頼できる第1のエンティティ100は、ブロックを暗号化するとき、初期化ベクトルとして、このブロックの仮想アドレスを使用し、同じ鍵で別のブロックを暗号化するために、同じ仮想アドレスを決して再使用しない。これは、同じ初期化ベクトルと鍵で暗号化された、ただ1つのブロックがあることを保証する。信頼できる第2のエンティティ112は、信頼できない中間体108にブロックを書き込む前に、ブロックを暗号化しつつ、初期化ベクトルとして、ブロックの仮想アドレスを使用する。信頼できる第2のエンティティ112上で動くアプリケーションは、2つの異なるデータブロックを書き込むために、同じ仮想アドレスを再使用しないように構成される。
【0081】
[0081]初期化ベクトルとして仮想アドレスを使用する利点は、計算ユニット114上で動くアプリケーションが、データのブロックを読み書きするためのオラクル(oracle)になることである。仮想アドレス空間をターゲットにするアプリケーションによって生成された一連のアドレスは、ホストから読み込むことになる一連のブロックを一意に定義する。ブロックのヘッダーに含まれた初期化ベクトルが仮想アドレスに一致することを保証するためのチェックの前に、入力ブロックの信憑性をチェックするという組合せは、入力データストリームの整合性を保証するのに十分である。認証及び初期化ベクトルのチェックは、出力ストリームの整合性を保証するのに十分である。
【0082】
[0082]いくつかの例では、
図9のプロトコルも、仮想アドレスから暗号鍵識別子を導出する。信頼できない中間体108における仮想アドレス空間は、K個の領域に区画化される。1つの例では、仮想アドレスのビットの全てではないがいくつかが、鍵識別子として使用される。鍵識別子は、
図8の鍵交換処理などの鍵交換処理中に、信頼できる第2のエンティティのセキュリティモジュールに提供されていた鍵のリストを探索するために使用される。信頼できる第2のエンティティ112の暗号化ユニット118は、同じ暗号鍵を使用して暗号化されることになる同じビットを伴うブロックを予期する。信頼できる第1のエンティティ100の暗号化ツールは、同じビットを伴うブロックを同じ鍵で暗号化する。
【0083】
[0083]いくつかの例では、信頼できる第1のエンティティ100は、各暗号化されたブロックのために、ブロックの後のデータストリームに認証タグ及び初期化ベクトルを収めるヘッダーを置く。データストリームは、信頼できる第1のエンティティ100から信頼できない中間体108にコピーされることになるデータの一連のブロックから形成される。認証タグ及び初期化ベクトルを保持するヘッダーを使用すると、同じDMAリクエストの一部として、タグ、初期化ベクトル、及びデータが一緒に読み書きされることを保証する。信頼できる第2のエンティティ112は、ヘッダーを使用して、受け取ったデータの任意のブロックを認証することができ、バッファー406が使用される実施形態において、複数のブロックを同時に認証し復号することができる。バッファー406が省略される場合、ブロックの認証及び復号は1件ずつ発生する。(周辺機器がDMAリクエストを生成するときなどに)ヘッダーによって使用される追加の空間を考慮するために、周辺デバイスの任意の適切な構成要素が配置される。DMAリクエストに応答して信頼できない中間体108から返されたデータが、リクエストされたサイズより小さくなることを考慮するために、周辺デバイスの任意の適切な構成要素が配置される。信頼できる第2のエンティティ112は、データを使用する前に、ヘッダーに含まれる初期化ベクトルをチェックする。
【0084】
[0084](セキュリティモジュール内の)バッファー406は、上述のようなDMAリクエスト及びレスポンスを傍受してバッファー処理し、暗号化/復号構成要素402にこれらを渡すために配置される。
【0085】
[0085]いくつかの例では、バッファー406は、DMAレスポンス全体を復号する準備ができるまで、DMAレスポンスを格納する。これは、複数の入ってくるレスポンスの複雑な状態を維持する必要がないので、暗号化/復号ユニット402の複雑性を低減させる。バッファー406は、DMAレスポンスが飛行中に、周辺デバイスが正しくないデータを処理することによる外部で観察可能な副次的影響がないことを保証できる場合、必要がない。これは、全ての入ってくるDMAレスポンスが到着するまで、出て行くDMAを発行しないように、バリアを提供することによって実現される。
【0086】
[0086]いくつかの例では、DMAレスポンス全体を復号する準備ができるまで、DMAレスポンスを格納することに加えて(又はその代わりに)、バッファーは、次に説明されるように、リクエストから初期化ベクトルにマッピングする。DMA書込みリクエストについて、バッファーは、出て行く書込みリクエストから初期化ベクトルを抽出し、これを使用して、鍵ストレージから暗号鍵を取り出す。バッファーは、次に、初期化ベクトルと鍵とともにペイロードを暗号化/復号構成要素402にルーティングする。バッファー406は、暗号化したペイロード、認証タグ、及び初期化ベクトルを使用して、信頼できない中間体108に送られる新しいペイロードリクエストを構築する。
【0087】
[0087]ホストメモリから周辺デバイスのメモリにDMAレスポンスを復号することは、第1に、ホストからのDMAレスポンスが、複数のブロックに分けられることがあること、第2に、任意の時点に飛行中の複数のDMAリクエストを含む可能性があること、及び、第3に、DMAレスポンスが、鍵識別子を含んでいないこと、という3つの理由で極めて挑戦的である。
【0088】
[0088]バッファー406は、あらゆるDMAリクエストに対して、周辺デバイスにおける少量の状態を維持する。バッファー406は、それぞれの出て行く読込みリクエストから鍵識別子及び宛先アドレスを抽出し、発信元と宛先アドレスのペア、及びDMAサイズを追跡するマップに、鍵識別子と宛先アドレスのペアを格納する。リクエストに対する第1のDMAレスポンスを受け取ると、バッファー406は、宛先アドレスを使用して、発信元の初期化ベクトルアドレス(IVA:initialization vector address)を探索する。バッファー406は、発信元の初期化ベクトルアドレスを使用して、暗号鍵を取り出す。バッファー406は、暗号化ユニット118における新しいコンテキストを作成し、暗号鍵、(IVAを拡大することによって取得された)初期化ベクトル、及び、暗号化したペイロードを転送する。バッファー406は、結果のDMAレスポンスを暗号化ユニット118に転送する。認証及び復号が成功すると、バッファー406は、計算要素114にレスポンスを転送する。バッファー406は、リクエストに対する全レスポンスを受け取ると、リクエストの追跡をやめる。
【0089】
[0089]暗号化ユニット118は、暗号鍵を保持するために、SRAMのブロック、又はレジスタファイルなどの鍵ストアを有する。鍵は、初期化ベクトルアドレスからの上位ビットを使用してインデックスをつけられたマップに格納される。マッピングは、鍵交換後、セキュリティモジュールによって行われる。
【0090】
[0090]
図10は、コンピューティングデバイス及び/又は電子デバイスの任意の形式として実装され、信頼できない中間体、又は第1の信頼できる計算エンティティの実施形態が、いくつかの例において実装された、例示的なコンピューターベースのデバイス1000の様々な構成要素を示す。
【0091】
[0091]コンピューターベースのデバイス1000は、1つ又は複数のプロセッサ1004を備え、プロセッサ1004は、暗号化プロトコルを実装するため、又は、周辺デバイスをホストするための、マイクロプロセッサ、コントローラー、又は、コンピューター実行可能命令を処理してデバイスの動作を制御するのに適した他の任意のタイプのプロセッサである。いくつかの例では、例えば、システムオンチップのアーキテクチャが使用される場合、プロセッサ1004は、(ソフトウェアでもファームウェアでもない)ハードウェアにおける、
図9の方法の一部を実装する(アクセラレーターとも呼ばれる)1つ又は複数の固定機能ブロックを含む。オペレーティングシステム1006を含むプラットフォームソフトウェア、又は他の任意の適切なプラットフォームソフトウェアが、アプリケーションソフトウェア1008をデバイス上で実行できるようにするために、コンピューターベースのデバイスに設置される。データストア1010は、初期化ベクトル、鍵、暗号化されたデータのブロック、又は他の情報を保持する。暗号化プロトコル1012は、コンピューターベースのデバイス1000が
図1の第1の信頼できる計算エンティティである場合、メモリ1002に格納される。
【0092】
[0092]コンピューター実行可能命令は、コンピューターベースのデバイス1000によってアクセス可能な任意のコンピューター可読媒体を使用して提供される。コンピューター可読媒体は、例えば、メモリ1002などのコンピューターストレージ媒体、及び通信媒体を含む。メモリ1002などのコンピューターストレージ媒体は、コンピューター可読命令、データ構造、プログラムモジュール、又は同様のものなどの情報の格納のために、任意の方法又は技術で実装された、揮発性及び不揮発性の、取外し可能及び取外し不能媒体を含む。コンピューターストレージ媒体は、コンピューティングデバイスによるアクセスのために情報を格納するために使用される、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電子的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、又は他の任意の非伝送媒体を含むがこれらに限定されない。対照的に、通信媒体は、搬送波などの変調したデータ信号、又は他の輸送メカニズムに、コンピューター可読命令、データ構造、プログラムモジュール、又は同様のものを含む。本明細書で定義されるように、コンピューターストレージ媒体は、通信媒体を含まない。したがって、コンピューターストレージ媒体は、本質的に伝搬信号であると解釈されるべきではない。コンピューターベースのデバイス1000の中にコンピューターストレージ媒体(メモリ1002)を示しているが、ストレージは、いくつかの例では、リモートに分散されるか、位置し、(例えば、通信インターフェース1014を使用して)ネットワーク又は他の通信リンクを介してアクセスされることが理解されよう。
【0093】
[0093]コンピューターベースのデバイスが第1の信頼できる計算エンティティである場合、通信インターフェース1014は、コンピューターベースのデバイス1000が
図1のものなどの信頼できない中間体と通信することを可能にする。コンピューターベースのデバイス1000が信頼できない中間体である場合、
図4のものなどの周辺デバイスが、コンピューターベースのデバイス1000によってホストされる。
【0094】
[0094]コンピューターベースのデバイス1000は、表示デバイスに表示情報を出力するために配置された入出力インターフェース1016も備え、表示デバイスは、コンピューターベースのデバイスとは別個であっても、コンピューターベースのデバイスに統合されてもよい。表示情報は、グラフィカルユーザーインターフェースを提供することができる。入出力インターフェース1016も、ユーザー入力デバイス(例えば、マウス、キーボード、カメラ、マイクロフォン、又は他のセンサー)など、1つ又は複数のデバイスからの入力を受け取り、処理するために配置される。
【0095】
[0095]本技術は、以下の例の任意の組合せを包含する。
[0096]ホストコンピューティングデバイスとともに使用するための周辺デバイスであって、
1つ又は複数の計算要素と、
機密コードを使用して機密データを処理するために、周辺デバイス上に信頼できる実行環境を形成するように構成されたセキュリティモジュールであって、機密データ及び機密コードが、ホストコンピューティングデバイスと通信している信頼できる計算エンティティによって提供される、セキュリティモジュールと、
ホストコンピューティングデバイスを介して、信頼できる実行環境と信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成された少なくとも1つの暗号化ユニットとを備え、
セキュリティモジュールが、機密コードが信頼できる実行環境内にあることを証明するために証明を計算し、信頼できる計算エンティティに送るように構成された、周辺デバイス。
【0096】
[0097]ホスト上ではなく周辺デバイス上に暗号化ユニットを有することによって、機密コードで処理するために、信頼できるエンティティから機密データを受け取ると同時に、機密データをセキュアかつ効率的に復号することができる。また、暗号化ユニットは、ホスト及び/又は信頼できる計算エンティティに、機密コードの出力が送られる前に、機密コードの出力をセキュアかつ効率的に暗号化する。ホスト上ではなく周辺デバイス上の暗号化ユニットをどのように配置するかは、周辺デバイス上に信頼できる実行環境を有することができる状態、及び、周辺デバイスの動作について、信頼できるモードと信頼できないモードとの間でスイッチすることができる状態が存在することになるので、簡単ではない。
【0097】
[0098]信頼できる実行環境と信頼できる計算エンティティとの間で転送されたデータが、ダイレクトメモリアクセスリクエスト及びレスポンスを使用して転送される、上記に記述した周辺デバイス。これは、データを転送するための効率的かつ効果的な方式を提供する。
【0098】
[0099]セキュリティモジュールが、線形アドレス空間を介した周辺機器のメモリ及びレジスタへのアクセスが可能な非セキュアモードから、線形アドレス空間を介した周辺機器の指定のメモリ及び指定のレジスタへのアクセスが不可能なセキュアモードに、周辺デバイスをスイッチすることによって、信頼できる実行環境を形成するように構成される、上記に記述した周辺デバイス。線形アドレス空間は、共有されるか、場合によっては部分的に共有される。場合によっては、線形アドレス空間は、メモリマップド入出力を使用して実装される。動作のセキュアモード及び動作の非セキュアモードを有することによって、周辺デバイスは多用途になる。動作のセキュアモードは、周辺デバイスの機能のうちのいくつかを制限し、典型的には、非セキュアモードよりリソース負荷が大きい。したがって、モード間でスイッチできることによって、セキュアモードは、必要なときだけ使用することができる。それでも、いくつかの例では、動作の非セキュアモードが省略され、この場合、動作のセキュアモードと動作の非セキュアモードとの間のモードスイッチがないことに留意されたい。
【0099】
[00100]セキュリティモジュールが、ホストデバイスからのリクエストに応答して、セキュアモードに周辺デバイスをスイッチするように構成される、上記に記述した周辺デバイス。このようにして、ホストデバイスは、簡単なリクエストを使用して、望まれるときに周辺機器上に信頼できる実行環境を作成することができる。セキュリティモジュールが、第1の信頼できる計算エンティティと鍵を交換し、第1の信頼できる計算エンティティによって提供された鍵を、少なくとも1つの暗号化ユニットに提供するように構成される、上記で説明したような周辺デバイス。このようにして鍵を交換し提供することは、周辺デバイスと第1の信頼できる計算エンティティとの間のセキュアな通信を行う能力を促進する。
【0100】
[00101]セキュリティモジュールが、周辺デバイスがセキュアモードのとき、ホストからクオートのリクエストが受け取られると、セキュリティモジュールが、周辺デバイスのセキュリティ上の重要な性質をとらえるクオートを計算し、ホストに返すように構成される、上記に記述した周辺デバイス。このようにして、周辺デバイスは、簡単かつ効率的な手法で、セキュリティ上の重要なプロパティを証明することができる。
【0101】
[00102]セキュリティモジュールが、セキュリティモジュール、及び追加として、デバッグモード、ホストアクセスフラグのうちのゼロ個以上のハッシュであり、セキュリティモジュールによって生成され、信頼できる計算エンティティの公開鍵を使用して暗号化された新しいデータ暗号鍵のハッシュであるクオートを計算することによって、証明を計算するように構成される、上記に記述した周辺デバイス。このようにして、クオートは計算され、周辺機器のプロパティの正確な指示を与える。クオートによって、潜在的にリモートのエンティティは、周辺デバイスを信頼するべきかどうか判定する前に、周辺デバイスの状態を検証することができる。
【0102】
[00103]セキュリティモジュールが、証明鍵を使用して署名されたクオート、エンドースメント鍵によって署名された証明鍵証明書、ルート鍵を使用して署名されたエンドースメント鍵証明書、証明書を発行する自己署名されたルートエンドースメント鍵を含む証明書チェーンに従う証明書を含むクオートを計算することによって、証明を計算するように構成される、上記に記述した周辺デバイス。証明書チェーンに従う証明書を使用することによって、セキュリティが強化される。
【0103】
[00104]暗号化ユニットが、鍵ストア、バッファー、及び暗号化/復号構成要素を備える、上記に記述した周辺デバイス。これは、コンパクトな暗号化ユニットのための、簡単かつ、さらに効果的な設計である。
【0104】
[00105]バッファーが、信頼できる実行環境とホストとの間で送られたダイレクトメモリアクセスリクエスト及びレスポンスを傍受してバッファー処理するように構成される、上記に記述した周辺デバイス。リクエスト及びレスポンスをバッファー処理することによって、暗号化/復号ユニットの動作の速度を制御することができる。
【0105】
[00106]バッファーが、ダイレクトメモリアクセス書込みリクエストを傍受したとき、ダイレクトメモリアクセス書込みリクエストから初期化ベクトルを抽出し、初期化ベクトルを使用して、鍵ストアから暗号鍵を取り出すように構成される、上記に記述した周辺デバイス。これは、効率的な鍵交換を容易にする。
【0106】
[00107]バッファーが、初期化ベクトル、及び取り出した暗号鍵と一緒に、ダイレクトメモリアクセス書込みリクエストのペイロードを暗号化/復号構成要素にルーティングするように構成される、上記に記述した周辺デバイス。このようにして、暗号化/復号構成要素は、暗号化又は復号のための項目を有する。
【0107】
[00108]セキュリティモジュールが、1つ又は複数の計算要素とともにダイ上にあるか、1つ又は複数の計算要素のダイ上にないパッケージとして形成された、上記に記述した周辺デバイス。ダイ上にあるオプションは、強化されたセキュリティをもたらすが、製造が複雑になる。ダイ上にないオプションは、周辺デバイスの設計、検査、及び製造に、より多くの柔軟性をもたらす。場合によっては、周辺デバイスは、パッケージ上にあり、場合によっては、パッケージ上にない。パッケージ上にあるオプションは、より多くのセキュリティをもたらす。
【0108】
[00109]複数の接続されたパッケージとして形成された、上記に記述した周辺デバイス。この場合、2つのパッケージが形成されると製造コストが増加するが、設計、検査、及び製造は、2つのパッケージの使用により、簡素化される。複数のパッケージとして周辺デバイスを形成すると、パッケージ上にない配置の使用と比べて、強化されたセキュリティをもたらす。
【0109】
[00110]暗号化ユニットが、異なるデータストリームを異なる鍵で暗号化するように複数の鍵を有し、ここで、暗号化ユニットが、鍵交換処理を使用して複数の鍵を提供される、上記に記述した周辺デバイス。このようにして異なる鍵を使用することによって、2つ以上の発信元からの機密データを、周辺デバイスにおいて機密コードで処理することができる。
【0110】
[00111]セキュリティモジュールが、周辺デバイス上にセキュアチャネルを作成するために、周辺デバイスのリソースを隔離するように構成され、ここで、異なる暗号鍵が、異なるセキュアチャネルのために使用される、上記に記述した周辺デバイス。周辺機器上でリソースアイソレーションが利用可能な場合、同じ周辺機器のリソースを使用する複数のテナントを有すること、及び、それぞれのテナントの作業を別々にしておくことができる。
【0111】
[00112]セキュリティモジュールが、複数の公開鍵の測定値を含んでいるクオートを、鍵交換処理の一部として計算するように構成され、公開鍵が、ホストコンピューティングデバイスによって指定された、上記に記述した周辺デバイス。クオートは、鍵交換を容易にするための効率的な方式である。
【0112】
[00113]セキュリティモジュールが、クオートを検証したエンティティから、暗号化された秘密鍵を受け取るように構成される、上記に記述した周辺デバイス。
[00114]少なくとも1つの暗号化ユニット及び信頼できる計算エンティティが、データのブロックを暗号化する暗号化プロトコルを使用するように構成され、各ブロックが、鍵と初期化ベクトルを含むペアを使用して暗号化され、ここで、暗号化ユニット及び信頼できる計算エンティティが、所与の鍵とともに各初期化ベクトルを一度だけ使用することに同意し、初期化ベクトルが、暗号化ユニット及び信頼できる計算エンティティに知られているパラメーター化された機能から計算される、上記に記述した周辺デバイス。
【0113】
[00115]ホストコンピューティングデバイスとともに使用するための周辺デバイスであって、
1つ又は複数の計算要素と、
機密コードを使用して機密データを処理するために、周辺デバイス上に信頼できる実行環境を形成するように構成されたセキュリティモジュールであって、機密データ及び機密コードが、ホストコンピューティングデバイスと通信している信頼できる計算エンティティによって提供される、セキュリティモジュールと、
ホストコンピューティングデバイスを介して、信頼できる実行環境と信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成された少なくとも1つの暗号化ユニットとを備え、
暗号化ユニットが、暗号化プロトコルを使用するように構成され、初期化ベクトルが、暗号化ユニット及び信頼できる計算エンティティに知られているパラメーター化された機能から計算される、周辺デバイス。パラメーター化された機能を使用すると、各初期化ベクトルが所与の鍵とともに一度しか使用されないことを保証するように初期化ベクトルを管理する特に効率的な方式をもたらす。
【0114】
[00116]複数の計算ノードであって、各計算ノードが、少なくとも1つの周辺デバイスを有するホストコンピューティングデバイスを備え、周辺デバイスが、
1つ又は複数の計算要素と、
機密コードを使用して機密データを処理するために、周辺デバイス上に信頼できる実行環境を形成するように構成されたセキュリティモジュールであって、機密データ及び機密コードが、ホストコンピューティングデバイスと通信している信頼できる計算エンティティによって提供される、セキュリティモジュールと、
ホストコンピューティングデバイスを介して、信頼できる実行環境と信頼できる計算エンティティとの間で転送されたデータの暗号化及び復号を行うように構成された少なくとも1つの暗号化ユニットと
を備える、複数の計算ノードを備える、データセンター。結果として生じるデータセンターは、周辺デバイスの結果として著しい計算容量をもたらし、機密コード及びデータが、信頼できないホストを介して周辺デバイスに渡ったとしても、テナントの代わりに周辺デバイス上で機密コード及びデータを処理することを可能にする。いくつかの例では、単一の信頼できる実行環境を、ホストコンピューティングデバイスの複数の周辺デバイスにまたがって形成することができる。複数の周辺デバイスは、ホストコンピューティングデバイスの周辺デバイスの任意のサブセットであってもよい。
【0115】
[00117]第1の信頼できる計算エンティティと第2の信頼できる計算エンティティとの間で、信頼できない中間体を介してデータをセキュアに転送するための方法であって、
鍵と初期化ベクトルを含むペアを各ブロックに対して使用して、第1の信頼できる計算エンティティにおいてデータのブロックを暗号化すること、
初期化ベクトルが一度だけ使用されることを、第1の信頼できる計算エンティティに、第2の信頼できる計算エンティティと事前に同意させること、
初期化ベクトルを取得するためのパラメーター化された機能を第1の信頼できる計算エンティティに格納することであって、パラメーター化された機能が、第2の信頼できる計算エンティティに知られている、格納すること、
ダイレクトメモリアクセスリクエストを行うことによって、第2の信頼できる計算エンティティがブロックを取り出せるように、第1の信頼できる計算エンティティから、信頼できない中間体の仮想アドレス空間にデータの暗号化されたブロックをコピーすること
を含む、方法。
【0116】
[00118]仮想アドレス空間が、第2の信頼できる計算エンティティにおける信頼できる実行環境にインストールされたコードによってターゲットにされる、上記に記述したような方法。
【0117】
[00119]パラメーター化された機能が、仮想アドレスが初期化ベクトルであるようなアイデンティティ機能である、上記に記述したような方法。
[00120]パラメーター化された機能の少なくとも1つのパラメーターが、第2の信頼できる計算エンティティにおける信頼できる実行環境にインストールされたコードのプログラム状態を含む、上記に記述したような方法。
【0118】
[00121]第2の信頼できる計算エンティティが、暗号化ユニット及び計算ユニットを備える、上記に記述したような方法。
[00122]ブロックの仮想アドレスが、初期化ベクトルとして使用される、上記に記述したような方法。
【0119】
[00123]第1の信頼できる計算エンティティが、各暗号化されたブロックについて、認証タグ及び初期化ベクトルをデータストリームに含むヘッダーをブロックの後ろに置く、上記に記述したような方法。
【0120】
[00124]第2の信頼できる計算エンティティにおいて、各暗号化されたブロックについて、ヘッダーを受け取り、ヘッダーを使用して、ブロックを認証することを含む、上記に記述したような方法。
【0121】
[00125]第2の信頼できる計算エンティティにおいて、複数のブロックを同時に認証し復号することを含む、上記に記述したような方法。
[00126]第2の信頼できる計算エンティティにおいて、ダイレクトメモリアクセスリクエストを生成するときにヘッダーによって使用される追加の空間を考慮することを含む、上記に記述したような方法。
【0122】
[00127]用語「コンピューター」又は「コンピューターベースのデバイス」は、これが命令を実行するような処理能力を有する任意のデバイスを指すために、本明細書で使用される。このような処理能力が多くの異なるデバイスに組み込まれ、したがって、用語「コンピューター」及び「コンピューターベースのデバイス」がそれぞれ、パーソナルコンピューター(PC)、サーバー、(スマートフォンを含む)携帯電話、タブレット型コンピューター、セットトップボックス、メディアプレーヤ、ゲームコンソール、パーソナルデジタルアシスタント、ウェアラブルコンピューター、及び他の多くのデバイスを含むことを、当業者は理解するであろう。
【0123】
[00128]本明細書で説明した方法は、いくつかの例では、例えば、プログラムがコンピューター上で動くときに、本明細書で説明した方法の1つ又は複数の全ての動作を実施するように適合されたコンピュータープログラムコード手段を含むコンピュータープログラムの形式といった、有形ストレージ媒体上の機械可読形式のソフトウェアによって実施され、ここで、コンピュータープログラムは、コンピューター可読媒体に含まれてもよい。ソフトウェアは、任意の適切な順序で、又は同時に、方法の動作を実行できるような、パラレルプロセッサ又はシリアルプロセッサでの実行に適している。
【0124】
[00129]これは、ソフトウェアが、価値のある、別々に取引可能なものであることを認める。所望の機能を実行するために、「データ処理能力をもたない(dumb)」もしくは標準のハードウェア上での実行又は制御を行うソフトウェアを包含することを意図するものである。所望の機能を実行するために、シリコンチップを設計するため、又は、汎用のプログラム可能なチップを構成するために使用されるような、HDL(ハードウェア記述言語)ソフトウェアなどの、ハードウェアの構成を「記述する」又は定義するソフトウェアも包含することを意図するものである。
【0125】
[00130]プログラム命令を格納するために利用されるストレージデバイスが、任意選択として、ネットワーク中に分散されることを、当業者は理解するであろう。例えば、リモートコンピューターは、ソフトウェアとして記述された処理の例を格納することができる。ローカルコンピューター又は端末コンピューターは、リモートコンピューターにアクセスし、プログラムを動かすためのソフトウェアの一部又は全てをダウンロードすることができる。代替として、ローカルコンピューターは、ソフトウェアを必要に応じてダウンロードすること、又は、いくつかのソフトウェア命令をローカル端末で、また、いくつかをリモートコンピューター(もしくはコンピューターネットワーク)で実行することができる。当業者に知られている従来の技法を利用することによって、デジタルシグナルプロセッサ(DSP)、プログラマブルロジックアレイ、又は同様のものなどの専用の回路で、ソフトウェア命令の全て又は一部を実行できることも、当業者は理解するであろう。
【0126】
[00131]本明細書で示された任意の範囲又はデバイス値は、当業者に明らかになるように、求められる効果を損なうことなく、拡張又は変更することができる。
[00132]構造上の特徴及び/又は方法の行為に固有の言葉で主題を説明してきたが、添付の特許請求の範囲で定義された主題は、上記に記述した特定の特徴又は行為に必ずしも限定されないことを理解されたい。むしろ、上記に記述した特定の特徴及び行為は、特許請求の範囲の実装についての形式の例として開示される。
【0127】
[00133]上記に記述した利点及び長所は、1つの実施形態に関するものであってもよく、又は、いくつかの実施形態に関するものであってもよいことが理解されよう。実施形態は、述べられた問題のいずれか又は全てを解決するもの、又は、述べられた利点及び長所のいずれか又は全てを有するものに限定されない。「1つの(an)」項目への言及は、これらの項目の1つ又は複数を指すことがさらに理解されよう。
【0128】
[00134]本明細書で説明した方法の動作は、必要に応じて、任意の適切な順序で、又は同時に実行されてもよい。追加として、個々のブロックは、本明細書で説明した主題の範囲から逸脱することなく、方法のいずれかから削除されてもよい。上記に記述した例のいずれかの態様は、求められる効果を損なうことなく、さらなる例を形成するように説明された他の例のいずれかの態様と組み合わせることができる。
【0129】
[00135]用語「含む(comprising)」は、識別された方法ブロック又は要素を含むことを意味するように本明細書で使用されるが、このようなブロック又は要素は排他的なリストを含まず、方法又は装置は、追加のブロック又は要素を収めることができる。
【0130】
[00136]上記の記述が、ほんの一例として示されること、及び、様々な修正を、当業者によって行えることが理解されよう。上記の明細書、例、及びデータは、構造の完全な説明、及び例示的な実施形態の使用を提供する。一定の程度の特殊性で、又は、1つもしくは複数の個々の実施形態を参照しながら、様々な実施形態を上記で説明してきたが、当業者は、本明細書の範囲から逸脱することなく、開示の実施形態に対して非常に多くの変更を行うことができる。