Как мы можем запустить две функции в разных анклавах параллельно? - PullRequest
0 голосов
/ 25 июня 2019

Я новичок в Intel SGX.Мне было интересно, поддерживает ли SGX одновременный запуск двух функций в разных анклавах?Например, функция A находится в анклавах En_A, а функция B находится в анклавах En_B.Возможно ли, что приложение вызывает функции A и B параллельно?

Заранее спасибо!

1 Ответ

0 голосов
/ 04 июля 2019

Да, это возможно.

Конструкция SGX поддерживает одновременное использование нескольких анклавов в системе, что необходимо в многопроцессорных средах.Это достигается за счет разделения EPC на 4 КБ страницы, которые можно назначать различным анклавам.EPC использует тот же размер страницы, что и функция преобразования адресов архитектуры.

(источник)

Просмотр документов Intel SGX SDK (страница92) вы можете видеть, что функция sgx_create_enclave различает экземпляры анклавов, принимая уникальные enclave_id:

sgx_status_t sgx_create_enclave (
    const char *file_name,
    const int debug,
    sgx_launch_token_t *launch_token,
    int *launch_token_updated,
    sgx_enclave_id_t *enclave_id,    // here
    sgx_misc_attribute_t *misc_attr
);

Эти идентификаторы анклавов используются приложением для выполнения вызовов ECALL с использованием недоверенных прокси-функций:

// demo.edl
enclave {
    trusted {
        public void get_secret([out] secret_t* secret);
    };
}

// generated function signature
sgx_status_t get_secret(sgx_enclave_id_t eid, secret_t* secret);

Вы можете найти полное объяснение на стр. 27

...