記事 ID: 000058511 コンテンツタイプ: メンテナンス & パフォーマンス 最終改訂日: 2021/08/10

エンclave に大きな構造体を渡すが Enclave ページ・キャッシュ (EPC) でページを引き起こしていない

BUILT IN - ARTICLE INTRO SECOND COMPONENT
概要

リコード済みドメインからトラステッド・ドメインの構造体内のすべてのデータをエンクレイブ (インテル® Software Guard Extensions) エンクレイブインテル® SGXする方法

詳細

Enclave Definition Language (EDL) ファイルの宣言形式:

構造体pair_t {
uint32_tキー;
uint32_t値;
};

構造体table_t {
struct pair_t* ペア。
uint32_t num_pairs;
};

public sgx_status_t ecall_sort_table([in] struct table_t * rel);

最大 table_t は 1.1 GB で、128 MB の EPC よりもはるかに大きくなります。エンclave で使用されるメモリーは、指定されたアプリケーションで構造体に割り当てられたメモリーよりはるかに少なく、EPC にページはありません。

解決方法

上記の構造と関数の定義は、構造のコピーになります。変更コピーは、ポインターが参照した実際のデータではなく、ポインターのアドレスのみをコピーします。この場合、ポインター・アドレスは EPC またはトラステッド・ドメイン内のエンclave のメモリースペースにコピーされますが、データは破損したドメイン内に残ります。大部分のデータがドメイン内に残っているため、EPC ではページが発生していないので、

以下は、コピーとディープコピーを実現する構造の定義と宣言です。構造データを EPC にディープコピーするには、開発者が設定した数とサイズを使用して EDL ファイル内の構造を変更します。

構造体のpair_t {
uint32_tキー;
uint32_t値。
};

この構造宣言により、ペア構造のコピーが作成されます。

構造体table_t {
struct pair_t* ペア。
uint32_t num_pairs;
};

この構造宣言により、ペア構造のディープコピーが生成されます。

構造体deep_table_t {
[count = 1、size = 12] struct pair_t* ペア;
uint32_t num_pairs;
};

 

トラステッド {

この機能宣言により、rel 構造のコピーが作成されます。

public sgx_status_t ecall_sort_table ([in] struct table_t * rel);

この関数宣言により、rel 構造のディープコピーが作成されます。

public sgx_status_t ecall_deep_sort_table ([in, count = 1] 構造体deep_table_t * rel);
};

その後で、生成enclave_t.c機能を確認します。この機能はsgx_ecall_deep_sort_tableされたメモリーからトラステッド・メモリーまで、構造の深いコピーを示します。

追加情報

トラステッド・ドメインに構造体エレメントのディープ・コピーを作成する方法の詳細については、Linux*インテル® SGX 開発者向けリファレンス・ガイド の「構造体、共用体」セクションを参照してください。

メモLinux* 用最新インテル® Software Guard Extensions (インテル® SGX) 開発者リファレンス・ガイドは、Linux* の最新バージョン インテル® Software Guard Extensionsセクションに含まれています

edger8 ツールは、コードがコンパイルされる前に、削除済みドメインと信頼済みドメイン間でデータをマーシャリングするプロキシー機能を自動的に生成します。EDLファイル数とサイズのパラメーターは、edger8 ツールにプロキシー機能にコピーするメモリー容量を指定します。

関連製品

本記事の適用対象: 1 製品

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。