web-dev-qa-db-ja.com

インテルSGXおよびMSR-開発者は何を知る必要がありますか?

Intel SGX は、今後のIntelプロセッサの一部として出荷される興味深い新技術です。安全なエンクレーブでソフトウェアを実行できるようにするための designed です。エンクレーブで実行されているコードは、ハードウェアによって同じプロセッサで実行されている信頼できないコードから分離されるため、エンクレーブでセキュリティが重要なコードを実行して攻撃から保護できます。 SGXは現在利用可能なプロセッサーではサポートされていませんが、インテルはまもなく利用可能になることをお勧めします。これにより、特定の種類の分離のための強力な基盤が提供される可能性があります。開発者は、安全なエンクレーブで特定のコード(暗号キー管理コードなど)を実行でき、他のコードが改ざんできないことが保証されます。それ。

モデル固有のレジスタ (MSR)は、プロセッサの動作を制御する特別な構成レジスタです。たとえば、MSRを使用して、ブランチトレース、パフォーマンスカウンター、ハードウェアウォッチポイント、およびその他の便利な特殊機能を有効にすることができます。通常、特権コードのみがほとんどのMSRを読み書きできます。

私の質問:SGXモードはMSRとどのように相互作用しますか? SGXモードで実行されるコードの開発者は、MSRについて何を知る必要がありますか?

SGX仕様 は、SGXモードがMSRとどのように相互作用するかについては述べていません。ただし、2つがどのように相互作用するかに応じて、MSRがエンクレーブで実行されているコードにリスクをもたらす可能性があることを想像できます。たとえば、信頼されていないコードがブランチトレースを有効にして(MSRを介して)セキュアなエンクレーブの呼び出しをトリガーでき、この設定がモードスイッチ全体で保持された場合、エンクレーブコードによって取得されたすべてのブランチが、信頼されていないメモリからアクセスできるメモリに記録されます。これにより、信頼できないコードがエンクレーブコードに対して強力なサイドチャネル攻撃を仕掛けることができます。

では、MSRの値はエンクレーブで実行されているコードの実行にどのように影響しますか?エンクレーブモードで実行している場合、MSRは無視されますか?エンクレーブで実行するように設計されたコードは、機密情報を実行する前にすべてのMSRをクリア/リセットする必要がありますか?エンクレーブで実行するコードの開発者は、安全なコードを記述してコードを攻撃から保護するために、MSRがSGXモードでどのように機能するかについて何を知る必要がありますか?

10
D.W.

これは素晴らしい質問です!あなたが尋ねるまでこれについて考えたことはありません。まず、安全なエンクレーブ内で実行されるコードはリング3で実行されます。したがって、信頼できない非エンクレーブリング3コードに適用されるすべての制限が適用されます。したがって、エンクレーブはMSRに書き込むことができません。

次に、仕様ではMSRについて明示的に言及されていませんが、IA32機能との相互作用について説明しています。提供したブランチトレースの例については、LBR(最後のブランチレコード)のセクションをご覧ください。これは、それがどのように相互作用するかを正確に伝えます。私の理解では、EENTER/EXIT命令は、エンクレーブ内のエントリポイントへのそれぞれ1つの長い分岐と見なされます。エンクレーブ内のコードにジャンプした後に発生することは、ブランチレコードがエンクレーブ出口でLBRスタックからポップされるため、特権に関係なく、記録されず、信頼できないコードからも見えません。エンクレーブの開発者が設定できるデバッグオプトインエントリでのみ表示され、名前から明らかなように、エンクレーブはデバッグモードになっています(ブランチトレースの第7章、セクション5を参照してください)。したがって、サイドチャネルあなたが話していることは可能ではないはずです。

ブランチトレースのサイドチャネル攻撃は問題にならない可能性がありますが、他の種類のパフォーマンス監視が問題になる可能性があります。ページフォールト、メモリアクセス、キャッシュ動作などは引き続き監視できます。キャッシュベースのサイドチャネル攻撃も可能です。つまり、エンクレーブコードに対してサイドチャネル攻撃が可能です。 Microsoftのヘブン紙 は、SGXがサイドチャネル攻撃に関していまだに持っている制限の種類を説明しています。

そして、あなたの質問に答えるために、エンクレーブ開発者がMSRについて知っておくべきことは、開発者がコードでどのような種類の攻撃を期待するかによって異なります。エンクレーブを設計および開発する際には、ある種の脅威のモデリングがあると思います。予想される脅威に基づいて、SGXがこれらの脅威をどのように処理するかを理解する必要があります。ブランチサイドチャネルアタッチは、SGXがそれを処理する方法を理解する例です。

ほとんどの場合、エンクレーブとその実行に関する情報をリークする可能性のあるすべてのMSR /レジスタ/プロセッサの状態は、特権または非特権の信頼できないコードから隠されている/保護されており、エンクレーブライターはそれについて心配する必要はありません。

8
Raghu