У меня есть два приложения A1 и A2, создающие там собственные анклавы E1 и E2. Третье приложение A3 подключено к A1 и A2. Возможно ли, чтобы A3 определил, действительно ли два анклава E1 и E2 работают в одной и той же системе?Определить ансамбли SGX, запущенные на одной системе
ответ
Идентификация подписи, предоставляемая органом, который подписывает анклав до распространения. Это значение называется MRSIGNER и будет одинаковым для всех анклавов, подписанных с тем же полномочием. Таким образом, в одной и той же фирме разработки все анклавы должны иметь такое же значение MRSIGNER, если они подписаны с тем же идентификатором подписи.
Значения MARSIGNER из двух разных анклавов в среде разработки могут использоваться для проверки того, принадлежат ли два анклава к одной и той же среде.
Я не согласен с ответом Сурентара. Если E1 и E2 подписаны одной и той же идентификацией подписи, MRSIGNER всегда будет одинаковым для E1 и E2. Потому что MRSIGNER - это хэш этой идентичности.
Если A3 также выполняется на одной платформе, он может просто порождать анклав E3 и использовать локальную аттестацию, которая будет успешной только для анклавов на той же платформе.
Если у вас есть контроль над E1 и E2, тогда они могут использовать локальную аттестацию, чтобы обе могли работать на одной платформе. Затем A3 должен будет использовать дистанционную аттестацию, чтобы убедиться, что он может доверять утверждению E1 (или E2).
A3 должен выполнить дистанционную аттестацию, как указано выше, или A3 необходимо создать свой собственный анклав E3 и индивидуально выполнить локальную аттестацию с E1 и E2. Обратите внимание, что локальная аттестация может быть полностью подделана чем-то вроде гипервизора. Единственный способ рассказать вам, что работает на реальном оборудовании, - это использование удаленной аттестации. – Raghu
Прокомментируйте местную аттестацию, спускаясь назад. VMM не может отлавливать команды ENCLU, поэтому отчеты локальной аттестации гарантируют, что вы работаете на оборудовании SGX. – Raghu