Может ли SGX доказать, что два анклава находятся на разных компьютерах?

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

Обе машины предоставляют SGX и имеют включенный TPM.

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

Предположим, я уже установил безопасный анклав на каждой машине.

Можно ли было прочитать открытый ключ EK (или его хэш) из анклава, поместить его в раздел данных цитаты и затем отправить с этим удаленную аттестацию? Затем удаленная аттестация докажет, что целевой компьютер выполнил код, как задано, и, поскольку код читает и возвращает EK, у нас также будет EK.

Этот связанный с этим вопрос предполагает, что простое использование TPM не работает (на самом деле это не так), но заставляет меня задуматься, сможем ли мы использовать SGX для завершения работы.

Итак, мои вопросы:

1) Действительно ли вышесказанное сработает?

2) Если да, можете ли вы помочь мне найти убедительные документы, подтверждающие, что это возможно?

3) Если нет, могу ли я что-то еще сделать?

1 ответ

Решение

Во-первых, давайте не будем смешивать здесь термины. Удаленная аттестация SGX - это не то же самое, что аттестация на основе TPM (использование Quote команда); поэтому я не уверен, как вы думаете, EK TPM входит в него. Но я не так много знаю о SGX, поэтому придерживаюсь TPM:

Если вы можете получить две кавычки, подписанные двумя ключами аттестации, для которых у вас есть сертификаты, подписанные производителем TPM, это само по себе доказывает, что вы разговариваете с двумя разными машинами. То есть вы можете подделать TPM в программном обеспечении, но вы не можете подделать сертификат. Если у вас нет сертификата AK, вы можете взять открытый ключ из сертификата EK и заставить TPM доказать, что он имеет доступ к соответствующему секретному ключу, например MakeCredential с последующим ActivateCredential, Производители TPM предоставляют сертификаты EK, по крайней мере те, на которые я смотрел.

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

Генерация ключей SGX детерминистически предоставляет криптографические ключи для анклавов, которые привязаны либо к идентификатору анклава, либо к идентификатору подписавшего. Это означает, что два анклава, которые подписаны одним и тем же ключом подписавшего, могут получить один и тот же ключ, если они выполняются на одной и той же платформе (хосте).

Примечание. Конечно, это работает только в том случае, если на вывод ключа не влияет виртуализация, что, насколько я знаю, имеет место, хотя я ее не тестировал.

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