問題タブ [sgx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
intel - Intel SGX Threading and vs TCS
I'm trying to understand the difference between SGX threads enabled by TCS and untrusted threading provided by SDK.
If I understand correctly, TCS enables multiple logical processors to enter the same enclave. Each logical processor will have its own TCS and hence its own entry point (the OENTRY
field in TCS). Each thread runs until an AEX happens or reaches the end of the thread. However, these threads enabled by TCS have no way to synchronize with each other yet. At least, there is no SGX instruction for synchronize.
Then, on the other hand, the SGX SDK offers a set of Thread Synchronization Primitives, mainly mutex and condition variable. These primitives are not trusted since they're eventually served by OS.
My question is, are these Thread Synchronization Primitives meant to be used by TCS threads? If so, wouldn't this deteriorate the security? The OS is able to play with scheduling as it wishes.
sgx - Intel SGX リモート認証のサンプル コード
Intel SGX SDK でリモート認証サンプル コードを実行しようとしています。「エラー、sgx_ra_get_msg1 の呼び出しに失敗しました [wmain]」というエラーが常に表示されます。関数が使用できないsgx_ra_init(&g_sp_pub_key, b_pse, p_context)
ゼロ値を返すためだと思います。p_context
リモート認証のサンプル コードを正しく実行できる人はいますか? PS:ローカル認証サンプルコードを実行できます。Intel SGX 開発環境は問題ないと思います。
sgx - Intel SGX: エンクレーブ バイナリからエンクレーブ測定値を再現
Intel SGX のエンクレーブ測定について質問があります。SignTool のソース コード(およびマニュアルの概要説明) から判断すると、測定にはエンクレーブ ファイル (ELF または PE) の読み込みが含まれているようです。しかし、ロードの結果はプラットフォームによって異なりますよね? エンクレーブバイナリから一貫したエンクレーブ測定を再現できるかどうか疑問に思っています。
具体的には、次のシナリオを検討しています:enclave.signed.so
ユーザーに を配布し、その特定のエンクレーブからのリクエストのみを処理したいとします。私のプラットフォームでのローカル測定値をユーザーのものと単純に比較することはできないと思います (認証に含めることができます)。代わりに何をすべきですか?
本質的に問題は、バイナリと測定値を暗号的にリンクする方法に要約されますか? パラドックスがあるようです。私がエンクレーブ バイナリを持っているとします。その測定値を得る唯一の方法は、それをロードすることです。ただし、読み込みプロセスは信頼されていません(OS によって行われます)。取得した測定値が実際にその特定のバイナリのものであることを確認するにはどうすればよいですか? これは SGX の有効性全体にとって重要なように思われるため、何かを誤解したに違いありません。私を修正してください。
ありがとう!
intel - Linux 用インテル SGX シミュレーター
このチュートリアルによると、Visual Studio を使用して Windows で開発する場合、シミュレーターで SGX アプリケーションを開発して実行することが可能です。Linux で使用できる SDK のバージョンはありますが、このチュートリアルでは Linux については触れていません。
Intel の SGX シミュレーターは Windows 専用ですか? それとも Linux バージョンもありますか?
(注: 私はOpenSGXの存在を知っています。具体的には Intel シミュレーターについて質問しています。)
c++ - SGX エンクレーブのファイル コンテンツを読み取る
OCalls を使用してエンクレーブからファイルの内容を読み込もうとしています。
enclave.edl:
enclave.cpp:
アプリケーションでの ocall 関数の実装:
しかし、私が受け取る結果は次のとおりです。
123456789 (ヌル)
何が間違っているのかわかりませんか?
pointers - SGX - 信頼できるブリッジと信頼できるプロキシの違いは何ですか?
Intel の SGX 開発者ガイドPointer Handlingでは、次のように言及されています。
バッファがコピーされているとき、信頼できるブリッジは ECALL のエンクレーブ メモリを上書きしないようにする必要があり、信頼できるプロキシは OCALL の秘密を漏らさないようにする必要があります。
トラステッド ブリッジとトラステッド プロキシとは何ですか?
--- 編集済み ---
ECALLのPointer HandlingおよびOCALLの Pointer Handlingから、エンクレーブの外側からエンクレーブの内側へのバッファーの割り当てとコピーには信頼できるブリッジが使用され、エンクレーブの内側からエンクレーブの外側へのバッファーの割り当てとコピーには信頼できるプロキシが使用されることに気付きました。したがって、私の個人的な結論は、どちらも2 つの異なる方向からメモリ バッファーの割り当てとコピーを行う何らかのデリゲートであるということです。「ブリッジ」と「プロキシ」という名前は、ワークフローを区別するために使用されます。
私の理解は正しいですか?
virtualization - 仮想化環境の Intel SGX
Virtualbox や Docker などの仮想化環境内で Intel SGX エンクレーブを作成して実行することは可能ですか?