Наборы утверждений
Утверждения, созданные в процессе проверки анклавов с помощью Microsoft Аттестация Azure, можно разделить на следующие категории:
- Входящие утверждения: утверждения, созданные корпорацией Майкрософт Аттестация Azure после анализа доказательств аттестации. Утверждения могут использоваться авторами политик для определения правил авторизации в пользовательской политике.
- Исходящие утверждения: утверждения, созданные Аттестация Azure и включенные в токен аттестации.
- Утверждения свойств. Это утверждения, созданные Аттестацией Azure в качестве выходных данных. Сюда относятся все утверждения, которые представляют свойства маркера аттестации, например кодировка отчета, срок действия отчета и т. д.
Входящие утверждения
Аттестация SGX
Утверждения, с помощью которых авторы политик могут определять правила авторизации в политике аттестации SGX:
x-ms-sgx-is-debuggable: логическое значение, указывающее на то, включена ли отладка анклава или нет.
Анклавы SGX могут быть загружены с отключенной или включенной отладкой. Если флаг имеет значение true в анклавах, он включает функции отладки для кода анклава, который включает возможность доступа к памяти анклава. Следовательно, рекомендуется устанавливать флаг в значение true исключительно в целях разработки. Если включена в рабочей среде, гарантии безопасности SGX не сохраняются.
Пользователи службы Аттестации Azure могут использовать политику аттестации, чтобы проверить, отключена ли отладка для анклава SGX. После добавления правила политики аттестация завершается ошибкой, когда злоумышленник включает поддержку отладки для получения доступа к содержимому анклава.
x-ms-sgx-product-id: целочисленное значение, которое указывает идентификатор продукта анклава SGX.
Автор анклава присваивает каждому анклаву идентификатор продукта. Идентификатор продукта позволяет автору анклава сегментировать анклавы, подписанные с использованием того же MRSIGNER. Клиенты могут добавить правило проверки в политику аттестации, чтобы проверить, используют ли они предполагаемые анклава. Аттестация завершается ошибкой, если идентификатор продукта анклава не соответствует значению, опубликованному автором анклава.
x-ms-sgx-mrsigner : строковое значение, которое идентифицирует автора анклава SGX.
MRSIGNER — это хэш открытого ключа автора анклава, который связан с закрытым ключом, используемым для подписи двоичного файла анклава. Проверяя MRSIGNER посредством политики аттестации, клиенты могут проверить, работают ли доверенные двоичные файлы внутри анклава. Если утверждение политики не соответствует MRSIGNER автора анклава, это означает, что двоичный файл анклава не подписан доверенным источником, и аттестация завершается ошибкой.
Если автор анклава предпочитает чередовать MRSIGNER по соображениям безопасности, необходимо обновить политику аттестации Azure для поддержки новых и старых значений MRSIGNER перед обновлением двоичных файлов. В противном случае проверки авторизации завершаются ошибкой, что приводит к сбоям аттестации.
Политика аттестации должна быть обновлена с помощью приведенного ниже формата.
Перед сменой ключей
version= 1.0; authorizationrules { [ type=="x-ms-sgx-is-debuggable", value==false]&& [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); };
Во время смены ключей
version= 1.0; authorizationrules { [ type=="x-ms-sgx-is-debuggable", value==false]&& [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); [ type=="x-ms-sgx-is-debuggable", value==false ]&& [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); };
После смены ключей
version= 1.0; authorizationrules { [ type=="x-ms-sgx-is-debuggable", value==false]&& [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); };
x-ms-sgx-mrenclave: строковое значение, которое идентифицирует код и данные, загруженные в память анклава.
MRENCLAVE является одним из измерений анклава, которые можно использовать для проверки двоичных файлов анклава. Это хеш кода, запущенного внутри анклава. Измерение изменяется с каждым изменением двоичного кода анклава. Проверяя MRENCLAVE посредством политики аттестации, клиенты могут проверить, работают ли предполагаемые двоичные файлы внутри анклава. Однако, поскольку ожидается, что MRENCLAVE будет часто меняться при любых незначительных модификациях существующего кода, рекомендуется проверять двоичные файлы анклава с помощью функции проверки MRSIGNER в политике аттестации.
x-ms-sgx-svn: целочисленное значение, которое указывает номер версии безопасности анклава SGX
Автор анклава назначает номер версии безопасности (SVN) каждой версии анклава SGX. При обнаружении проблемы безопасности в коде анклава, автор анклава увеличивает исправление уязвимости после публикации значения SVN. С целью предотвратить взаимодействие с небезопасным кодом анклава, клиенты могут добавить правило проверки в политику аттестации. Если SVN кода анклава не соответствует версии, рекомендуемой автором анклава, аттестация завершается ошибкой.
Эти утверждения считаются устаревшими, но полностью поддерживаются и будут продолжать включаться в будущее. Рекомендуется использовать нерекомендуемые имена утверждений:
Нерекомендуемое утверждение | Рекомендуемое утверждение |
---|---|
$is-debuggable | x-ms-sgx-is-debuggable |
$product-id | x-ms-sgx-product-id. |
$sgx-mrsigner | x-ms-sgx-mrsigner |
$sgx-mrenclave | x-ms-sgx-mrenclave |
$svn | x-ms-sgx-svn |
Аттестация доверенного платформенного модуля
Утверждения, с помощью которых авторы политик могут определять правила авторизации в политике аттестации доверенного платформенного модуля:
- aikValidated: логическое значение, содержащее сведения, если сертификат удостоверения аттестации (AIK) проверяет или нет.
- aikPubHash: строка, содержащая base64(SHA256(открытый ключ AIK в формате DER)).
- tpmVersion: целочисленное значение, содержащее основную версию доверенного платформенного модуля (TPM).
- secureBootEnabled: логическое значение, указывающее, включена ли безопасная загрузка.
- iommuEnabled: логическое значение, указывающее, включена ли единица управления памятью ввода-вывода (Iommu).
- bootDebuggingDisabled: логическое значение, указывающее, отключена ли отладка загрузки.
- notSafeMode: логическое значение, указывающее, не работает ли Windows в безопасном режиме.
- notWinPE: логическое значение, указывающее, не работает ли Windows в режиме WinPE.
- vbsEnabled: логическое значение, указывающее, включен ли VBS.
- vbsReportPresent: логическое значение, указывающее, доступен ли отчет об анклавах VBS.
Аттестация VBS
Помимо утверждений политики аттестации доверенного платформенного модуля авторы политик могут использовать эти утверждения для определения правил авторизации в политике аттестации VBS:
- enclaveAuthorId: строковое значение, содержащее значение в кодировке Base64Url идентификатора автора анклава и идентификатор автора основного модуля для анклава.
- enclaveImageId: строковое значение, содержащее значение в кодировке Base64Url идентификатора образа анклава— идентификатор образа основного модуля для анклава.
- анклаваOwnerId: строковое значение, содержащее значение в кодировке Base64Url идентификатора владельца анклава идентификатора владельца для анклава.
- анклаваFamilyId: строковое значение, содержащее значение в кодировке Base64Url идентификатора семейства анклава. (Это идентификатор семьи главного модуля анклава.)
- анклаваSvn: целочисленное значение, содержащее номер версии безопасности основного модуля для анклава.
- enclavePlatformSvn: целочисленное значение, содержащее номер версии безопасности платформы, на котором размещен анклава.
- анклаваFlags: утверждение анклаваFlags — это целочисленное значение, содержащее флаги, описывающие политику выполнения анклава.
Исходящие утверждения
Общие утверждения для всех типов аттестации
Аттестация Azure включают эти утверждения в маркер аттестации для всех типов аттестации:
- x-ms-ver: версия схемы JWT (как ожидается, будет "1.0").
- x-ms-attestation-type: строковое значение, представляющее тип аттестации.
- x-ms-policy-hash: Хэш политики оценки Аттестация Azure, вычисляемой как BASE64URL(SHA256(UTF8(BASE64URL(UTF8(текст политики))))).
- x-ms-policy-signer: объект JSON с элементом jwk, представляющим ключ, используемый клиентом для подписывания политики, применимо при отправке подписанной политики.
- x-ms-runtime: объект JSON, содержащий "утверждения", определенные и создаваемые в тестовой среде, специализация концепции "удерживаемых данных анклава", где "анклава удерживаемых данных" форматируется как кодировка UTF-8 хорошо сформированного JSON.
- x-ms-inittime: объект JSON, содержащий утверждения, определенные и проверенные во время инициализации проверенной среды.
Эти имена утверждений используются из спецификации JWT IETF.
- Утверждение "jti" (JWT ID) — уникальный идентификатор для JWT.
- Утверждение iss (Издатель) — субъект, выдаваемый JWT.
- Утверждение "iat" (выдано по адресу) - время выдачи JWT.
- Утверждение "exp" (время окончания срока действия) — время окончания срока действия, после которого JWT не должен приниматься для обработки.
- Утверждение "nbf" (не раньше) — не до времени, до которого JWT не должен приниматься для обработки.
Эти имена утверждений используются из спецификации черновика IETF EAT:
- "Nonce claim" (nonce) — нетрансформированная прямая копия необязательного значения nonce, предоставленного клиентом.
Приведенные ниже утверждения считаются нерекомендуемыми, но полностью поддерживаются и будут включаться и далее. Рекомендуется использовать нерекомендуемые имена утверждений.
Нерекомендуемое утверждение | Рекомендуемое утверждение |
---|---|
ver | x-ms-ver. |
tee | x-ms-attestation-type |
policy_hash | x-ms-policy-hash |
maa-policyHash | x-ms-policy-hash |
policy_signer | x-ms-policy-signer |
rp_data | nonce |
Аттестация SGX
Эти утверждения создаются и включаются в маркер аттестации службой аттестации для аттестации SGX:
- X-ms-sgx-is-отладка: логическое значение, указывающее, включена ли отладка анклава или нет.
- x-ms-sgx-product-id: значение идентификатора продукта анклава SGX.
- x-ms-sgx-mrsigner: шестнадцатеричное значение поля MRSIGNER кавычки.
- x-ms-sgx-mrenclave: шестнадцатеричное значение поля MRSIGNER кавычки.
- x-ms-sgx-svn: номер версии безопасности, закодированный в кавычках.
- x-ms-sgx-ehd: анклав удерживал данные, отформатированные как BASE64URL(удерживаемые данные анклава).
- X-ms-sgx-залог: объект JSON, описывающий залог, используемый для аттестации. Значение для утверждения x-ms-sgx-залог является вложенным объектом JSON со следующими парами key/value:
- qeidcertshash: SHA256 value of Quoting Enclave (QE) Identity, выдавая сертификаты.
- qeidcrlhash: SHA256 значение QE Identity, выдавающее список сертификатов CRL.
- qeidhash: SHA256 значение обеспечения качества удостоверений.
- quotehash: SHA256 значение вычисляемой цитаты.
- tcbinfocertshash: SHA256 значение TCB Info, выдавающее сертификаты.
- tcbinfocrlhash: SHA256 значение TCB Info, выдавающее список сертификатов CRL.
- tcbinfohash: SHA256 значение залога TCB Info.
- x-ms-sgx-report-data: поле данных отчета об анклавах SGX (обычно хэш SHA256 x-ms-sgx-ehd).
Эти утверждения отображаются только в маркере аттестации, созданном для платформ серверов на основе процессоров Intel® Xeon® Scalable. Утверждения не будут отображаться, если анклав SGX не настроен с помощью поддержки разделения ключей и общего доступа. Определения утверждений можно найти здесь:
- x-ms-sgx-config-id
- x-ms-sgx-config-svn
- x-ms-sgx-isv-extended-product-id
- x-ms-sgx-isv-family-id
Эти утверждения считаются устаревшими, но полностью поддерживаются и будут продолжать включаться в будущем. Рекомендуется использовать нерекомендуемые имена утверждений:
Нерекомендуемое утверждение | Рекомендуемое утверждение |
---|---|
$is-debuggable | x-ms-sgx-is-debuggable |
$product-id | x-ms-sgx-product-id. |
$sgx-mrsigner | x-ms-sgx-mrsigner |
$sgx-mrenclave | x-ms-sgx-mrenclave |
$svn | x-ms-sgx-svn |
$maa-ehd | x-ms-sgx-ehd |
$aas-ehd | x-ms-sgx-ehd |
$maa-attestationcollateral | x-ms-sgx-collateral |
Аттестация SEV-SNP
Следующие утверждения также поддерживаются типом аттестации SevSnpVm:
- x-ms-sevsnpvm-authorkeydigest: хэш SHA384 ключа подписи автора.
- x-ms-sevsnpvm-bootloader-svn: номер версии безопасности загрузчика AMD (SVN).
- x-ms-sevsnpvm-familyId: строка идентификации семейства уровня совместимости узла (HCL).
- x-ms-sevsnpvm-guestvn: номер версии безопасности HCL (SVN).
- x-ms-sevsnpvm-hostdata: произвольные данные, определенные узлом во время запуска виртуальной машины.
- x-ms-sevsnpvm-idkeydigest: хэш SHA384 ключа подписи идентификации.
- x-ms-sevsnpvm-imageId: идентификация образа HCL.
- x-ms-sevsnpvm-is-debuggable: логическое значение, указывающее, включена ли отладка AMD SEV-SNP.
- x-ms-sevsnpvm-launchmeasurement: измерение запущенного гостевого образа.
- x-ms-sevsnpvm-microcode-svn: номер версии безопасности микрокода AMD (SVN).
- x-ms-sevsnpvm-migration-allowed: логическое значение, указывающее, включена ли поддержка миграции AMD SEV-SNP.
- x-ms-sevsnpvm-reportdata: данные, передаваемые HCL для включения в отчет, для проверки правильности конфигурации ключа передачи и виртуальной машины.
- x-ms-sevsnpvm-reportid: идентификатор отчета гостя.
- x-ms-sevsnpvm-smt-allowed: логическое значение, указывающее, включен ли SMT на узле.
- x-ms-sevsnpvm-snpfw-svn: номер версии безопасности встроенного ПО AMD (SVN).
- x-ms-sevsnpvm-tee-svn: номер версии безопасности доверенной среды выполнения AMD (TEE).
- x-ms-sevsnpvm-vmpl: VMPL, создав этот отчет (0 для HCL).
Аттестация доверенного платформенного модуля и VBS
- cnf (подтверждение): утверждение cnf используется для идентификации ключа подтверждения владения. Утверждение подтверждения определено в стандарте RFC 7800 и содержит открытую часть ключа аттестованного анклава в формате объекта JWK (JSON Web Key) (RFC 7517).
- rp_data (данные проверяющей стороны): данные проверяющей стороны, если таковые указаны в запросе, используемые проверяющей стороной в качестве нецелевого элемента, чтобы гарантировать свежесть отчета. rp_data добавляется только в том случае, если rp_data.
Утверждения свойств
Аттестация доверенного платформенного модуля и VBS
- report_validity_in_minutes. Это утверждение содержит целое число, которое обозначает срок действия токена.
- Значение по умолчанию(время): один день в минутах.
- Максимальное значение(время): один год в минутах.
- omit_x5c. Логическое утверждение, указывающее, следует ли Аттестация Azure пропускать сертификат, используемый для подтверждения подлинности службы. Если значение true, x5t добавляется в маркер аттестации. Если значение false (по умолчанию), x5c добавляется в маркер аттестации.