このトピックでは、Intel Software Guard Extension (SGX) の仕組みとインストール方法について説明します。
SGX の仕組み
Intel SGX は Intel によって開発されたアーキテクチャ拡張です。 SGX は、メモリ内の暗号化された実行領域であるエンクレーブを使用して、選択したコードとデータを悪意のある開示または変更から保護します。
SGX は、物理メモリの 1 つ以上の範囲をエンクレーブページキャッシュ (EPC) として確保し、メモリ暗号化エンジン (MEE) を使用して EPC に格納されたデータを暗号化します。 EPC に保存されたデータは、CPU 内でのみ復号化されます。 SGX は、CPU ベースのセキュリティ制御を提供します。 オペレーティングシステム、仮想マシンマネージャー (VMM)、または基本入出力システム (BIOS) が侵害された場合でも、データの保護は維持されます。
アプリケーション
機密データを暗号化し、暗号化されたデータをクラウドのエンクレーブに送信し、リモート認証を介してエンクレーブに対して対応するキーをプロビジョニングできます。 次に、CPU で保護されている完全に暗号化されたデータを計算すると、その結果は暗号化されたバージョンで返されます。 この場合、データ開示リスクの低い強力なクラウドコンピューティングを利用できます。
EDL
エンクレーブ定義言語 (EDL) は、SGX の基礎となるものです。 これが、すべてのエンクレーブのインターフェイス関数を定義します。 構築仮定に、Edger8r ツールは、信頼できるおよび信頼できないプロキシ/ブリッジ関数を生成し、セキュリティチェックを実行します。
エンクレーブインターフェース関数は、エンクレーブ呼び出し (ECALL) と外部呼び出し (OCALL) に分けることができます。
- ECALL:アプリケーションから、信頼できる環境として定義されているエンクレーブ内のインターフェース関数への呼び出し。
- OCALL:エンクレーブ内から信頼できない環境として定義されているアプリケーションへの呼び出し。
// demo.edl
enclave {
// Add your definition of "secret_t" here
trusted {
public void get_secret([out] secret_t* secret);
};
untrusted {
// This OCALL is for illustration purposes only.
// It should not be used in a real enclave,
// unless it is during the development phase
// for debugging purposes.
void dump_secret([in] const secret_t* secret);
};
};
インストーラーファイルを使用した SGX のインストール
ソースコードを使用した SGX のインストール
- GitHubからソースコードをダウンロードします。
- README.md ファイルで説明されている手順に従って、ソースコードをコンパイルします。