2016-10-19 9 views
0

У меня вопрос об измерении анклава в Intel SGX. Судя по знаку SignTool source code (и описанию высокого уровня в руководстве), кажется, что измерение включает загрузку файла анклава (ELF или PE). Но результат загрузки зависит от разных платформ, не так ли? Интересно, могу ли я воспроизвести последовательное измерение анклава из бинарного анклава.Intel SGX: Воспроизводить измерение анклава из бинарного анклава

В частности, я рассматриваю следующие сценарии: Предположим, я хочу распространять enclave.signed.so для своих пользователей, и я хочу только отправлять запросы от этого конкретного анклава. Думаю, я не могу просто сравнить локальные измерения на своей платформе с пользователями (может быть включен в их аттестации). Что мне делать вместо этого?

По существу вопрос сводится к тому, как можно связать бинарное и измерение криптографически? Кажется, есть парадокс: предположим, что у меня есть двоичный файл анклава, единственный способ получить его измерение - загрузить его. Тем не менее, процесс загрузки не доверенный (сделано ОС)! Как я могу гарантировать, что измерение, которое я получаю, действительно для этого конкретного двоичного кода? Я, должно быть, неправильно понял, потому что это кажется критическим для всей действительности SGX. Пожалуйста, поправьте меня.

Спасибо!

ответ

0

Вы правы, чтобы установить «реальное» измерение анклава, вам нужна надежная система.

Измерение анклава выполняется процессором. Он изменяет значение измерения с помощью каждого шага/инструкции создания анклава. specification объясняет эту перестановку довольно подробно. Например, псевдо-код ECREATE содержит это утверждение о измерении поля:

(* Initialize hash updates etc*) 
Initialize enclave’s MRENCLAVE update counter; 
(* Add “ECREATE” string and SECS fields to MRENCLAVE *) 
TMPUPDATEFIELD[63:0] = 0045544145524345H; // “ECREATE” 
TMPUPDATEFIELD[95:64] = DS:TMP_SECS.SSAFRAMESIZE; 
TMPUPDATEFIELD[159:96] = DS:TMP_SECS.SIZE; 
TMPUPDATEFIELD[511:160] = 0; 
SHA256UPDATE(DS:TMP_SECS.MRENCLAVE, TMPUPDATEFIELD) 
INC enclave’s MRENCLAVE update counter; 

Предполагая, что описания тезисов являются исчерпывающими и один знает порядок, в котором этапы создания выполняется драйвером, один должен быть в состоянии вычислить измерение анклава без его загрузки. Таким образом, вы можете вычислить значение в анклаве. Но как вычислить измерение этого анклава?