TPM(Trusted Platform Module)について知っています。近年、インテルSGXで開発を始める研究者が増えていますが、私はこれまで経験がありません。
どちらも暗号チップですが、機能的な類似点と相違点は何ですか?
SGXは、通常のTPMでは不可能なことを何が実現できますか?
(必要に応じて、「教科書」版または「実用版」で説明してください。)
まず第一に、SGXは暗号チップではありません。これはIntelチップセット自体に組み込まれている機能ですが、TPMは LPCバス に配置されたディスクリートチップであることが多いですが、チップセットでエミュレートできる場合もあります(この場合、fTPMと呼ばれます)。ファームウェアTPM、または統合TPMのiTPM)。 Intelプロセッサでは、 [〜#〜] txt [〜#〜] をサポートするすべてのシステムに統合TPMが存在します。
TPMは measured boot を可能にするように設計されています。これは、各ステージが 信頼の連鎖 の次のステージを検証し、 Trusted Computing Base (TCB)をはるかに少ないコードに。それが機能する方法は、さまざまなファームウェア関連データのハッシュを取得し、それをPCR(TPMに登録)に格納し、これが既知の構成と一致する場合は秘密の値をunsealingすることです。これはすべて、通常は読み取り専用のBIOSコンポーネントであり、BIOS自体のハッシュをTPMに送信する、信頼されたCRTM(Core Root-of-Trust for Measurement)から始まります。 CRTMとTPMが信頼されている場合、システムの残りの部分は信頼されている必要はありません。
TPMは、検出された整合性違反に対処することはできません。それは完全に受動的であり、LPCバス上にのみ存在します。違反に対応してできることは、それ自体を開封することを拒否することです。この秘密の値は、システムの起動に必要な暗号化キーや、攻撃者には知られていない秘密の文字列のようなもので、TPMが信頼できない媒体を介して通信している場合でも、TPMが本当に封印解除されていることを確認できます。 TPMには Endorsement Key またはEKも含まれており、これはそれを正規のTPMとして検証します。正規の承認されたTPMのみにこのキーが与えられます。これはHTTPSのPKIインフラストラクチャに似ており、CAはブラウザがサーバーへの接続の正当性を確認できるようにします。
TPMは、sysadminに次の保証を提供します。
TPMは、起動時に開封されることに限定されません。いつでも開封できます。検証済みのブートはユーザースペースアプリケーションも検証できるため、TPMを間接的に使用して、システムが特定のソフトウェアを実行している、または特定の方法で構成されているという事実を証明することもできます。 BIOS、ブートローダー、カーネルが検証されると、システムが任意の状態にあること、たとえば最新のソフトウェアがインストールされていることを検証できます。これらすべてが有効な状態にある場合にのみ、TPMはそれ自体を開封し、最新で安全なソフトウェアが実行されていることをクライアントに証明できるようにします。これは remote attestation と呼ばれ、それ自体が network access controls のビルディングブロックとして使用できます。
これはTPMの機能を少し簡略化したものであり、SRTMとDRTMの間の differences には入りません(それぞれ測定用の静的および動的信頼ルート)。ただし、システムの一般的な機能を説明する目的には十分です。
SGXには 別の設計目標 があり、 より複雑 です。 SGXはプロセスに機密性と整合性を提供し、実行前に実行可能コードを検証できます。これはアクティブな機能であり、安全なエンクレーブで実行されているプロセスを保護しながら暗号化します。プロセスは、エンクレーブが本物であることを知っており、エミュレーションを介してスプーフィングされるのを防ぎ、エンクレーブはプロセスが本物であることを知っており、信頼できないホストが侵害されたプロセスを与えるのを防ぎます。
安全なエンクレーブは、いったんセットアップされると、カーネルやその他の特権タスクで読み取ることさえできません。このため、安全なエンクレーブで実行されているプロセスは、最悪の場合、強制終了されるか、クラッシュする可能性があります。改ざんすることはできません(JTAGでも、SGXコンテキストでプローブモードが無効になっているなどの理由で)。これは、ホストを信頼する必要のない仮想マシンゲストの実行などに使用できます。
SGXは、安全なエンクレーブで実行されているプロセスに次の保証を提供します。
通常、SGXを使用するアプリケーションは、この目的のために特別に設計する必要があります。アプリケーションは、2つのコンポーネントを持つように作成されます。最初のコンポーネントはホスト上で制限なく実行されますが、2番目のコンポーネントは安全なエンクレーブで実行されます。 I/O APIは、2つのコンポーネントが互いに通信できるように定義されています。機密性の高い計算は、安全なエンクレーブのプロセスにオフロードできます。
SGXはエンクレーブをホストから保護しますが、ホストをエンクレーブから保護することはあまりありません。悪意のある、または侵害されたエンクレーブプロセスがエンクレーブを終了し、ホスト上で任意のコードを実行する可能性があります。これは、エンクレーブを終了する EEXIT命令(67ページを参照) が、限られた数のレジスタのみを復元するためです。特に、エンクレーブプロセスはRIP、命令ポインターを設定し、任意のアドレスにジャンプできます。
TPMは、ファームウェアまたはブートプロセスが変更されたかどうかを通知するだけで、それ以外は何もありません。SGXは、機密プロセスまたは機密プロセスをホストから保護するために使用されます。 TPMとSGXの類似点の1つは、どちらもスプーフィングできないため、システムが実際の取引と通信していることをシステムが認識できることです。もう1つは、両方がトラステッドコンピューティングの概念に関与しており、さまざまな方法でシステムのTCBを削減していることです。どちらのシステムにも独自の欠陥があります。 TPMバージョン1.1以前は、たとえば platform reset attack に対して脆弱です。 SGXはサイドチャネル攻撃に対して脆弱です。 twopapers が最近示されているためです。
それ以外はまったく異なり、まったく異なる問題を解決します。