将来のIntelプロセッサは [〜#〜] sgx [〜#〜] (Software Guard Extensions)をサポートし、他のすべてのコードから分離された方法でプロセッサ上でセキュリティ上重要なソフトウェアを実行できるようになります。ハードウェアは安全な分離を提供するため、他のコードはSGXエンクレーブで実行されているセキュリティクリティカルなコードを改ざんできません。 OSカーネルでさえ信頼されておらず、SGXエンクレーブのコードを改ざんすることはできません。エンクレーブ自体はステートレスですが、外部ストレージにデータを安全に保存する方法があります。ハードウェアは、ディスクに書き込まれる前にデータが暗号化およびMAC処理されるシールドストレージをサポートします。
封印されたデータの鮮度の保証はありますか?つまり、悪意のあるOSがエンクレーブの状態を以前の特定の時点にロールバックしようとするロールバック攻撃が心配です。たとえば、保存された状態をチェックポイントし、エンクレーブをしばらく実行してから、場合によっては復元しますチェックポイントに戻ります。 SGXコードは、このようなロールバック攻撃から防御できますか?もしそうなら、どうですか?
いいえ、直接ではありません。
お気づきのとおり、SGXはメモリ内の一時的な状態の鮮度と整合性を保証しますが、永続的な状態の鮮度を保証するメカニズム(単調なカウンターなど)を提供しません。したがって、ローカルCPUでSGXに依存するだけの場合は、状態のロールバック攻撃から保護することはできません。この問題の一般的な解決策は、鮮度を確保するための基本的なメカニズムを提供できる別の信頼できる当事者との通信です。これは、ネットワークの反対側にある信頼できるマシン/サービスの場合もあれば、TPMのような他の信頼できるハードウェアの場合もあります。どちらの場合も、信頼できないチャネルを介して通信するため、セキュリティで保護する必要があります(暗号化など)。ワークロードが更新を多用している場合、信頼できる当事者との通信を待つ間、またはロールバック攻撃のウィンドウを許可する間、書き込みを保留することの間で厄介なトレードオフが発生します。
SGXはロールバック攻撃を防ぐために単調なカウンターを提供しますが、これらはすべてのマシンで利用できるわけではありません。 Intelは書き込み操作に頻度制限を適用して、メモリの消耗を防止します。その後、カウンタは使用できなくなります。これは 公式ドキュメント に記載されています。
単調カウンタ(MC)の作成には、プラットフォームで使用可能な不揮発性メモリへの書き込みが含まれます。書き込み操作を繰り返すと、プラットフォームの通常のライフサイクル中にメモリが消耗する可能性があります。インテル®SGXは、MC操作を実行できるレートを制限することにより、これを防ぎます。制限を超えると、MCの操作で数分間SGX_ERROR_BUSYが返される場合があります。
この論文 によると他の問題があります、