Не удается запустить sha256 более одного раза в анклаве Intel SGX

Итак, я пытаюсь создать два хэша sha256 в Intel SGX, используя их библиотеку cyrpto. В настоящее время, если я запускаю следующее:

sgx_sha256_hash_t *hash1;
int first = 1;
sgx_status_t = stat;
stat = sgx_sha256_msg( ( uint8_t * ) &first, 8, hash1 );

У меня нет проблем, и я правильно получаю hash1, однако, если я попытаюсь

sgx_sha256_hash_t *hash1;
sgx_sha256_hash_t *hash2;
int first = 1;
int second = 2;
sgx_status_t = stat;
stat = sgx_sha256_msg( ( uint8_t * ) &first, 8, hash1 );
stat = sgx_sha256_msg( ( uint8_t * ) &second, 8, hash2 );

Я получаю ошибку сегментации. Вместо этого я попытался сделать это с помощью методов sha init, update, get_hash и close, но без улучшений. Кто-нибудь знает, почему это может быть? Я подумал, что в анклаве может не хватать памяти. Если это правда, есть ли способ расширить мой анклав?


person Joshua Weiss    schedule 12.10.2020    source источник


Ответы (1)


Вы записываете свои хэши в случайное место в памяти через эти два неинициализированных указателя, отсюда и segfaults. Кроме того, ваши параметры src_len неверны, и для полноты первым параметром должен быть const.

Итак, что вы хотите:

sgx_sha256_hash_t hash1;    // note: no asterisk
sgx_sha256_hash_t hash2;
int first = 1;
int second = 2;
sgx_status_t = stat;
stat = sgx_sha256_msg( ( const uint8_t * ) &first, sizeof (first), &hash1 );
stat = sgx_sha256_msg( ( const uint8_t * ) &second, sizeof (second), &hash2 );
person Paul Sanders    schedule 12.10.2020
comment
а, хорошо, спасибо, все отлично работает! Хотя я думал, что sizeof не работает в анклаве? - person Joshua Weiss; 13.10.2020
comment
Что заставляет вас думать, что? Это особенность языка. - person Paul Sanders; 13.10.2020
comment
Я мог бы поклясться, что пытался использовать его, и это не удалось, как вы знаете, sgx не обладает всеми возможностями c++, а некоторые функции ограничены, я предположил, что это одна из них. - person Joshua Weiss; 13.10.2020
comment
Хорошо, возможно, вы правы, но я бы сказал, что это стоит проверить. - person Paul Sanders; 13.10.2020
comment
хорошо, только что проверил, работает, интересно, спасибо, что подняли - person Joshua Weiss; 14.10.2020