Исполняемый исполняемый файл Intel SGX на удаленной машине

Я портировал некоторый код в SGX, в Linux, который я хотел бы запустить на удаленном сервере в конце.
Я заметил, что если я собираю программу и затем использую один и тот же исполняемый файл для запуска программы внутри SGX на другом компьютере, отличном от того, на котором программа была построена с использованием SGX SDK, код по-прежнему выполняется без проблем.

Теперь, если я посмотрю на значение MRENCLAVE во время сборки, я увижу, что значение отличается, если я собираю один и тот же код на разных машинах. Если я отправляю исполняемую сборку на машине A на машину B и не собираю ее снова на машине B, то значение MRENCLAVE - это то, которое я получил от сборки его на машине A. Вопрос в том, что это значение будет другим, если я соберу код на самой машине B. Не вызывает ли это никаких проблем, если я хочу выполнить аттестацию кода на машине B, но не хочу перестраивать проект на машине B и вместо этого использовать сборку с машины A?

1 ответ

Насколько я знаю, измерение MRENCLAVE зависит от цепочки используемых инструментов (см. https://pdfs.semanticscholar.org/bc12/7b2228219f2b36b66bebe71a844e510e8efe.pdf, разделы 5.6.3 и 5.6.4), поскольку оно косвенно является хешем инструкции по сборке и созданные явными инструкциями по сборке при создании анклава (EEXTEND). Таким образом, я ожидаю, что вы, по крайней мере, используете разные версии компилятора на упомянутых машинах?

Другие вопросы по тегам