Поделиться через


Профиль ACPI доверенной среды выполнения

Лицензирование. Корпорация Майкрософт соглашается предоставлять вам безвозмездную, безвозмездную лицензию на свои необходимые претензии на разумных и недискриминационных условиях исключительно для создания, использования, продажи, предложения для продажи, импорта или распространения любой реализации этой спецификации. "Необходимые претензии" — это те претензии, которые принадлежат корпорации Майкрософт или контролируемые корпорацией Майкрософт патенты, которые технически необходимы для реализации требуемых частей (которые также включают обязательные элементы необязательных частей) данной спецификации, где функциональные возможности, вызывающие нарушение, подробно описаны, а не просто упоминаются в этой спецификации.

1.0. Фон

Эта спецификация определяет объект устройства ACPI для устройства TPM 2.0 и методы управления, связанные с объектом устройства ACPI, необходимым для Windows 8. Методы управления реализуют эквивалент интерфейса ACPI физического присутствия TCG, эквивалент интерфейса защиты от атак на сброс платформы и при необходимости метод ACPI для отправки команды на устройство TPM 2.0.

Дополнительная статическая таблица ACPI (TPM2) используется для определения механизма взаимодействия между устройством TPM 2.0 и Windows 8 ОС.

Примечание

Корпорация Майкрософт ссылается на доверенный вычислительный модуль группы "TPM. Далее" — "TPM 2.0"

2.0. Требования

В этой спецификации предполагается вычислительная платформа, которая поддерживает обмен данными на основе ACPI, как указано в [ACPI09] между ОС и средой встроенного ПО.

3.0 Сценарии использования (например, только)

3.1. Отправка команды физического присутствия

Типичный сценарий использования выглядит следующим образом:

  1. В среде ОС приложение обнаруживает, что устройство TPM 2.0 не полностью подготовлено для использования для Windows 8. (Примером того, как это может произойти, является установка нового образа ОС после того, как предыдущий образ ОС подготовил TPM 2.0.)

  2. Приложение запускает мастер ОС, чтобы подготовить устройство TPM 2.0 к использованию.

  3. Мастер взаимодействует с администратором компьютера через пользовательский интерфейс и определяет, что администратор должен очистить устройство TPM 2.0 для его подготовки, так как значение авторизации блокировки сброса устройства TPM 2.0 недоступно.

  4. Чтобы очистить устройство TPM 2.0, ОС запрашивает (путем выполнения метода управления ACPI для объекта устройства TPM 2.0) встроенное ПО выполняет операцию очистки устройства TPM 2.0 при следующей загрузке при условии, что физически присутствующий пользователь подтвердит, что он утверждает очистку устройства TPM 2.0.

  5. ОС перезапустит платформу.

  6. На ранней части процесса загрузки встроенное ПО распознает ожидающий запрос от ОС на очистку устройства TPM 2.0.

  7. Встроенное ПО представляет пользовательский интерфейс для физического пользователя с просьбой выполнить некоторые действия, чтобы подтвердить очистку устройства TPM 2.0.

  8. Физически присутствующий пользователь подтверждает очистку устройства TPM 2.0.

  9. Встроенное ПО очищает устройство TPM 2.0 с помощью авторизации иерархии платформы.

  10. При необходимости для сохранения очистки устройства TPM 2.0 платформа немедленно перезагружается.

  11. Операционная система загружается.

  12. Запросы ОС (с помощью метода управления ACPI на устройстве TPM 2.0), если последний запрос ОС на очистку устройства TPM 2.0 был (a) успешным, (b) не был подтвержден физически присутствующим пользователем или (c) имел какую-либо другую ошибку. В следующем примере предполагается, что устройство TPM 2.0 было успешно очищено.

  13. Мастер подготовки устройств TPM 2.0 в ОС выполняет дополнительные команды, чтобы подготовить устройство к использованию Windows.

3.2. Запрос очистки памяти при следующей загрузке

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

  1. В операционной системе администратор с устройством TPM 2.0 включает функцию BitLocker для тома ОС.

  2. Функция BitLocker вызывает метод управления ACPI устройства TPM 2.0, чтобы задать бит ClearMemory, определенный в спецификации по устранению атак на сброс платформы TCG.

  3. Функция BitLocker шифрует том ОС.

  4. Администратор оставляет систему без присмотра, а экран заблокирован.

  5. Злоумышленник похищает систему во время ее работы.

  6. Злоумышленник вставляет USB-накопитель, быстро извлекает системный аккумулятор и повторно вставляет его.

  7. Система начинает загрузку при повторной вставке батареи.

  8. Так как бит ClearMemory был задан ранее, встроенное ПО очищает всю системную память перед запуском кода, не предоставленного производителем платформы.

  9. Злоумышленник настраивает встроенное ПО во время загрузки на USB-устройство, даже если код на USB-устройстве неправильно подписан.

  10. Код на USB-устройстве проверяет системную память на наличие главного ключа тома BitLocker, но он не найден.

    Предупреждение

    Шаги с 11 по 16 похожи на предыдущие шаги, но используйте интерфейс UEFI вместо ACPI.

  11. Злоумышленник пытается нормально загрузить систему.

  12. Так как BitLocker был включен с защитой ключа доверенного платформенного модуля, это позволяет BootMgr "распакуть" ключ тома master для тома ОС, так как правильные измерения находятся на устройстве TPM 2.0 при запуске BootMgr.

  13. Загрузка выполняется на экране входа в ОС.

  14. Злоумышленник снова удаляет, а затем повторно вставляет аккумулятор и загружает код с USB-устройства.

  15. Так как был задан бит ClearMemory, встроенное ПО системы стирает всю системную память во время загрузки.

  16. Несмотря на то, что код с USB-устройства сканирует системную память, ключ шифрования тома ОС не находится в памяти.

3.3. Выполнение команды на устройстве TPM 2.0

Этот пример применим не для всех системных архитектур.

  1. Драйвер windows TPM 2.0 хочет выдать команду устройству TPM 2.0.

  2. Драйвер Windows TPM 2.0 записывает команду для выполнения в физический адрес, считываемый из области управления, определенной ACPI ранее во время инициализации драйвера Windows TPM 2.0.

  3. Драйвер Windows TPM 2.0 выполняет метод управления ACPI для выполнения команды TPM 2.0.

  4. Драйвер доверенного платформенного модуля Windows 2.0 опрашивает регистры в области управления, пока они не указывают, что команда доверенного платформенного модуля завершена.

  5. Драйвер доверенного платформенного модуля Windows считывает ответ команды из физического адреса, считанного из области управления, определенной ACPI, ранее во время инициализации драйвера доверенного платформенного модуля Windows.

4.0. Общие требования ACPI для системы и устройства TPM 2.0

4.1. Рекомендации по энергопотреблению

ACPI D1/D2

Устройство TPM 2.0 может поддерживать ACPI D1 и (или) ACPI D2, но должно вести себя так, как если бы оно находилось в состоянии питания ACPI D0 в D1 или D2.

ACPI S3 (спящий режим)

TPM 2.0 может поддерживать S3, но вход и выход из состояния низкой энергопотребления S3 для устройства должен контролироваться производителем системы или платформы.

ОС (или другое программное обеспечение, работающее в среде ОС) не должно иметь возможности поместить устройство TPM 2.0 в S3 или вызвать выход устройства TPM 2.0 из S3. Например, если устройство TPM 2.0 находится в шине, ОС НЕ должна иметь возможности выключения шины, что приводит к переходу устройства TPM 2.0 на S3.

Драйвер TPM Windows 8 попытается выполнить команду TPM2_Shutdown перед входом S3 (спящий режим).

Если аппаратная платформа поддерживает S3, а TPM не сохраняет свое состояние, пока система находится в S3, платформа ДОЛЖНА выдавать необходимые команды TPM2_Init и TPM2_Startup (TPM_SU_STATE) во время возобновления S3. Возможно, ос не выполнила команду TPM2_Shutdown до входа в S3. Это может привести к возврату результата TPM2_Startup(TPM_SU_STATE) ошибки. Системное встроенное ПО, которое возобновляется с S3, ДОЛЖНО соответствующим образом справиться с ошибкой TPM2_Startup. Например, отключив доступ к TPM через оборудование, выполнив команду TPM2_Startup (TPM_SU_CLEAR) и безопасно настроив устройство, выполнив такие действия, как расширение разделителя с помощью дайджеста ошибок (0x01) в PCR от 0 до 7 и блокировка индексов NV.

Система ДОЛЖНА учитывать время, прошедшее во время S3, путем уменьшения количества сбоев атак в словаре TPM (TPM_PT_LOCKOUT_COUNTER) за время, когда система находилась в S3 на интервал блокировки (TPM_PT_LOCKOUT_INTERVAL). Для этого может потребоваться реализация платформы для обеспечения резервного напряжения для сохранения часов доверенного платформенного модуля и (или) состояния TPM во время S3, или платформа также может безопасно предоставлять сведения о том, сколько времени прошло, пока система находилась в состоянии низкого энергопотребления, чтобы доверенный платформенный модуль мог надежно обновлять число сбоев авторизации для логики атаки по словарю.

Состояния низкого энергопотребления для подключенных резервных систем

Windows 8 не выполняет никаких дополнительных действий, связанных с TPM при входе и выходе из состояний низкого энергопотребления для подключенных резервных систем. Платформа ДОЛЖНА выполнять все действия, необходимые для работы доверенного платформенного модуля, как если бы он находился в D0 всякий раз, когда система входит и выходит из состояния низкого энергопотребления для подключенных резервных систем. Для этого может потребоваться реализация платформы для обеспечения резервного напряжения для питания часов TPM и (или) сохранения состояния. Кроме того, платформе МОЖЕТ потребоваться безопасно предоставить сведения о том, сколько времени прошло, пока система находилась в состоянии низкого энергопотребления для доверенного платформенного модуля, чтобы доверенный платформенный модуль мог надежно обновлять количество сбоев авторизации для логики атак по словарю.

Системное выключение

Система ДОЛЖНА безопасно учитывать время, прошедшее во время полного завершения работы, путем уменьшения количества сбоев атак в словаре TPM (TPM_PT_LOCKOUT_COUNTER) за время, когда система находилась в S5 на интервал блокировки (TPM_PT_LOCKOUT_INTERVAL).

4.2. Таблицы ACPI

Система с устройством TPM 2.0 должна предоставлять таблицу объектов устройства с идентификатором аппаратного устройства и статическую таблицу поставщика ОС (TPM2), как описано ниже.

Таблица TPM2 и объект устройства TPM 2.0 должны быть постоянными после отправки платформы клиенту. (Например, параметры встроенного ПО НЕ ДОЛЖНЫ разрешать скрытие таблицы TPM2 или объекта устройства TPM 2.0.) Исключением является, если система поставляется с параметром, не используемым по умолчанию, для предоставления функций TPM 1.2 вместо функций TPM 2.0 (т. е. для совместимости с более старыми операционными системами, такими как Windows 7). В этом случае таблица TPM2 и объект устройства TPM 2.0 могут быть удалены с помощью параметра конфигурации BIOS и перечисления доверенного платформенного модуля 1.2. Примечание. Для поставки по умолчанию требуется подключенная резервная система для Windows 8 с TPM 2.0, видимым для операционной системы. Обратитесь в корпорацию Майкрософт за техническими рекомендациями по переключению между TPM 2.0 и TPM 1.2 на аппаратной платформе.

4.3 TPM 2.0 Device Object ACPI Table

4.3.1 Иерархия шины

Таблица Device Object должна находиться в таблице DSDT в пространстве имен ACPI. Объект устройства TPM 2.0 должен находиться под системной шиной по адресу root\_SB.

4.3.2 Идентификатор оборудования

Фактический идентификатор оборудования plug and play (например, _HID) для объекта устройства TPM 2.0 должен быть "MSFT0101", или устройство ДОЛЖНО иметь совместимый идентификатор "MSFT0101", а _HID может быть конкретным поставщиком.

4.3.3. Дескрипторы ресурсов

Объект устройства ACPI TPM 2.0 должен запрашивать все ресурсы, используемые устройством TPM 2.0.

4.3.4. Методы управления

4.3.4.1. Устранение атак сброса платформы

Система ДОЛЖНА реализовывать все части ACPI и UEFI, связанные с [TCG08] для UEFI. Объект устройства ДОЛЖЕН реализовывать интерфейс метода управления, определенный в разделе [TCG08], раздел 6. Интерфейс необходим, даже если платформа безоговорочно очищает память при каждой загрузке. Очистка памяти не должна быть обусловлена состоянием устройства TPM 2.0 (в отличие от [TCG08] не требует очистки памяти, если TPM 1.2 не принадлежит). Кроме того, должны быть реализованы разделы 3, 5 [TCG08]. Функция запроса _DSM должна быть реализована (индекс функции 0) в спецификации ACPI. (Примечание. В спецификации ACPI 4.0 есть ошибка в отношении возвращаемого значения для метода _DSM. Возвращаемое значение метода _DSM должно быть буфером, содержащим 0x03.) Реализация ДОЛЖНА автоматически обнаруживать упорядоченное завершение работы ОС и очищать бит ClearMemory для таких событий.

Специальное примечание для систем Arm на основе UEFI с TPM 2.0: в системах Arm на основе UEFI с доверенным платформенной платформой 2.0 Windows 8 будет безоговорочно запрашивать очистку памяти с помощью интерфейса UEFI при каждой загрузке. Реализация интерфейса ACPI по-прежнему требуется, но интерфейс МОЖЕТ быть реализован, чтобы не изменять состояние флагов ClearMemory или DisableAutoDetect. (Примечание. Корпорация Майкрософт рекомендует реализовать интерфейс ACPI в спецификации TCG, чтобы вызов интерфейса ACPI изменил состояние ClearMemory или DisableAutoDetect.)

4.3.4.2. Интерфейс физического присутствия

Система ДОЛЖНА реализовать спецификацию, определенную в [TCG11], согласно дополнительным примечаниям ниже:

  1. Использование TPM в спецификации TCG должно быть приравнено к устройству TPM 2.0.

  2. Методы управления, определенные в разделе 2, должны быть реализованы со следующими ограничениями:

    1. Функция запроса _DSM должна быть реализована (индекс функции 0) в спецификации ACPI. (Примечание. В спецификации ACPI 4.0 есть ошибка в отношении возвращаемого значения для метода _DSM. Возвращаемое значение метода _DSM должно быть буфером, содержащим 0x01FF.)

    2. Реализация ДОЛЖНА возвращать значение "2: перезагрузка" для параметра "Get Platform-Specific Action to Transition to Transition to Pre-OS Environment". Операции PPI ДОЛЖНЫ выполняться при переходе перезапуска и должны выполняться при переходе на завершение работы.

    3. Реализация следующих методов управления необязательна: "Отправить запрос операции доверенного платформенного модуля в среду перед ОС" (может возвращать "2: общий сбой") и "Отправить предпочтительный язык пользователя" (может возвращать "3: не реализовано").

  3. Требования, описанные в разделе 3, должны быть реализованы со следующими редакциями:

    1. BIOS не нужно предоставлять постоянное хранилище для флага NoPPIProvision, так как операции, которые он авторизует, не относятся к состоянию устройства доверенного платформенного модуля 2.0.

    2. Таблица 2 изменена следующим образом:

      Таблица 1. Пересмотренная таблица 2 PPI

      OperationValue

      Имя операции

      Статистика доверенного платформенного модуля

      Флаги модуля управления доверенным платформенного модуля BIOS

      Обязательный и необязательный

      Когда требуется подтверждение физического присутствия

      Может потребоваться дополнительный цикл загрузки

      0

      Нет операции

      M

      1–4

      Нет операции

      M

      5

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear имеет значение FALSE

      X

      6-11

      Нет операции

      M

      12-13

      Нет операции

      O

      14

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear имеет значение FALSE

      X

      15-16

      Нет операции

      M

      17

      SetNoPPIClear_False

      X

      O1

      18

      SetNoPPIClear_True

      X

      O1

      Всегда

      19–20

      Нет операции

      O2

      21-22

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear имеет значение FALSE

      X

      23 - 127

      Зарезервировано

      >=128

      Конкретный поставщик

      X

      X

      O

      X

      Важно!

      Для SetNoPPIClear_False: если BIOS реализует элементы с пометкой "O1" или "O2", они должны быть реализованы в виде набора. В случае без операции , следующей за SetNoPPIClear_True, BIOS не должен реализовывать операции 19 и 20, если он не реализует операцию 12.

    3. Таблица 3 изменена следующим образом:

      Операция

      Значение

      Операция

      имя;

      Команды доверенного платформенного модуля, отправленные BIOS, и другие действия BIOS для выполнения операции

      0

      Нет операции

      Нет операции

      1-4, 6-13, 15-16, 19-20

      Нет операции

      Нет операции. Однако номер операции ДОЛЖЕН быть запомниться, и результат при запросе из ОС он ДОЛЖЕН возвращать успешно.

      5, 14, 21, 22

      Clear

      TPM2_ClearControl(NO) +

      TPM2_Clear

      <PLATFORM RESET>* [*При необходимости сохранить изменения доверенного платформенного модуля, внесенные TPM2_CLEAR. Корпорация Майкрософт ожидает, что в большинстве систем это не требуется.]

      17

      SetNoPPIClear_False

      (Требуется физическое присутствие для очистки.)

      Эта операция не изменяет состояние доверенного платформенного модуля.

      Очищает флаг управления TPM BIOS NoPPIClear до FALSE.

      18

      SetNoPPIClear_True

      (Для очистки не требуется физическое подтверждение присутствия.)

      Эта операция не изменяет состояние доверенного платформенного модуля.

      Устанавливает для параметра BIOS TPM Management Flag NoPPIClear значение TRUE.

      23 - 127

      Зарезервировано

      Зарезервировано, не реализуйте и не используйте

      >=128

      Конкретный поставщик

      Сопоставление команд доверенного платформенного модуля с операцией конкретного поставщика

  4. Дух раздела 4 ДОЛЖЕН поддерживаться для получения подтверждения от физически присутствующего пользователя, когда это необходимо для выполнения операции, но фактический механизм не должен быть нажатием клавиши. Ключи или другие механизмы для подтверждения согласия предоставляются изготовителю платформы.

    Оператор

    Значение

    Операция

    имя;

    Подтверждение

    Text

    5, 14, 21 и 22

    Clear

    Было запрошено изменение конфигурации для очистки доверенного платформенного модуля (доверенный платформенный модуль) этого компьютера.

    ПРЕДУПРЕЖДЕНИЕ. Очистка удаляет сведения, хранящиеся в TPM. Вы потеряете все созданные ключи и доступ к данным, зашифрованным с помощью этих ключей.

    Нажмите CAK<>, чтобы очистить доверенный платформенный модуль.

    Нажмите клавишу <RK> , чтобы отклонить этот запрос на изменение и продолжить.

    18

    SetNoPPIClear_True

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

    ПРИМЕЧАНИЕ. Это действие не очищает доверенный платформенный модуль, но при утверждении этого изменения конфигурации дальнейшие действия по очистке доверенного платформенного модуля не потребуют подтверждения пользователя.

    ПРЕДУПРЕЖДЕНИЕ. Очистка удаляет сведения, хранящиеся в TPM. Вы потеряете все созданные ключи и доступ к данным, зашифрованным с помощью этих ключей.

    Нажмите CAK<>, чтобы утвердить будущие запросы операционной системы для очистки доверенного платформенного модуля.

    Нажмите клавишу <RK> , чтобы отклонить этот запрос на изменение и продолжить.

  5. Раздел 5 является информативным.

  6. Подключенные резервные системы МОГУТ жестко закодировать NoPPIClear на TRUE и не реализовывать операции 17 и 18. Это означает, что им не нужно реализовывать диалоговые окна подтверждения для действий физического присутствия, так как никакие операции физического присутствия не требуют подтверждения пользователя.

  7. Встроенное ПО ДОЛЖНО оставить иерархии хранилища и подтверждения включенными, когда оно передает управление исходному коду загрузчика программы, например диспетчеру загрузки Windows.

4.3.4.3 Необязательный метод запуска ACPI

Примечание. Некоторые платформы МОГУТ реализовать этот необязательный метод ACPI, чтобы позволить ОС запрашивать встроенное ПО для выполнения или отмены команды TPM 2.0. Использование метода ACPI Start определяется полем StartMethod статической таблицы ACPI (см. раздел 4.4).) Если поле StartMethod статической таблицы ACPI указывает на использование этого метода, необходимо реализовать метод ACPI Start. Функции ACPI, определенные здесь, должны находиться в объекте метода управления _DSM. [Примечание. Этот метод не является методом управления в таблице ACPI TPM2.] Метод _DSM, определенный здесь, ДОЛЖЕН быть реализован следующим образом:

UUID

Редакция

Компонент

Описание

6bbf6cab-5463-4714-b7cd-f0203c0368d4

0

0

Как описано в разделе [ACPI09], раздел 9.14.1.

0

1

Начать

Запуск функции

Входные аргументы:

Arg0 (Buffer): UUID = 6bbf6cab-5463-4714-b7cd-f0203c0368d4
Arg1 (Integer): Revision ID = 0
Arg2 (Integer): Function Index = 1
Arg3 (Package): Arguments = Empty Package

Возвращаемое значение:

Тип: целое число

Описание возвращаемого значения:

0: успешное завершение

1: общий сбой

Функциональное поведение:

Эта функция сообщает системе проверить регистры состояния в области управления устройством TPM 2.0 и выполнить соответствующее действие для выполнения или отмены команды TPM 2.0.

Функция не блокируется. Вызов возвращается немедленно. (Не пытайтесь выполнить команду из метода ACPI. Вызовы AML должны быть короткими.) При возврате возвращаемого значения 0 отправленная команда была принята и будет выполнена встроенным ПО или отменена, если поле Отмена уже задано. По возможности система должна возвращать ответ доверенного платформенного модуля, а не общий сбой из этого вызова. Например, команда не может быть обработана сейчас, может быть записан буфер ответа TPM2_RC_RETRY, а поле START может иметь значение CLEARed. Если команда была отменена, так как было задано поле Отмена, этот метод может записать код возврата TPM2_RC_Cancelled в буфер ответа, очистить поле Start и вернуть значение 0. Кроме того, если задано поле Отмена, метод может вернуть значение 0, а устройство TPM 2.0 может позже завершить или отменить команду в соответствии с требованиями к отмене команды.

При возврате возвращаемого значения 1 встроенное ПО не может прочитать запрос или выполнить действия по запросу. Кроме возвращаемого значения, запрос эквивалентен NO-OP. Примеры: (а) неправильный драйвер ОС запрашивает выполнение дополнительных команд до завершения предыдущей команды, (б) область управления не находится в физической памяти (возможно, из-за повреждения памяти) или (c) физических адресов команд или ответов не существует. Возвращаемое значение 1 может привести к тому, что драйвер доверенного платформенного модуля Windows 2.0 может прекратить использование устройства TPM 2.0 до следующей полной загрузки системы (за исключением циклов гибернации и возобновления).

Примечание. После запуска команды этот метод не вызывается второй раз, если ОС выбирает отмену текущей выполняемой команды. (Однако возможно, что метод управления может быть вызван изначально для команды, пока задано поле отмены.)

4.4 Статическая таблица ACPI TPM2

Таблица ACPI с именем TPM2, указанная в таблице ACPI RSDT, описывает аппаратный интерфейс TPM 2.0 платформы. Драйвер доверенного платформенного модуля Windows 2.0 использует эту таблицу для определения способа взаимодействия с устройством TPM 2.0. Параметры в таблице ACPI, необходимые для поддержки этого интерфейса, показаны в таблице ниже.

Таблица 3. Макет таблицы ACPI TPM2

Поле

Длина байтов

Смещение в байтах

Описание

Header

Сигнатура

4

00h

TPM2. Сигнатура для таблицы аппаратного интерфейса устройства TPM 2.0

Длина

4

04h

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

Редакция

1

08h

Исправление этой таблицы, включая данные и структуру, на которые она ссылается. Если изменилась какая-либо структура, на которую ссылается данная структура (например, область управления), эта редакция ДОЛЖНА измениться. Значение 03h.

Контрольная сумма

1

09h

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

ИДЕНТИФИКАТОР ИЗГОТОВИТЕЛЯ ОБОРУДОВАНИЯ

6

0Ah

Идентификатор OEM на спецификацию ACPI. Строка, предоставляемая OEM, идентифицирующая изготовителя оборудования (это может быть поставщик набора микросхем).

Идентификатор таблицы OEM

8

10 ч

Идентификатор таблицы OEM — это идентификатор модели изготовителя (назначенный изготовителем оборудования, идентифицируемый по идентификатору OEM; может быть поставщиком набора микросхем).

Редакция OEM

4

18 ч.

Редакция OEM для заданного идентификатора таблицы OEM. По ACPI, "номер редакции, предоставленный OEM. Предполагается, что более крупные номера являются более новыми редакциями".

Идентификатор создателя

4

1Ch

Идентификатор поставщика служебной программы, создающей таблицу. Для таблиц, содержащих блоки определений, это идентификатор компилятора ASL.

Редакция creator

4

20 ч

Редакция служебной программы, создающей таблицу. Для таблиц, содержащих блоки определений, это редакция компилятора ASL.

Флаги

4

24 ч

Зарезервировано

Всегда должно быть равно нулю

Адрес области управления

8

28 ч

Физический адрес области управления. Может находиться в памяти устройства TPM 2.0 или в памяти, зарезервированной системой во время загрузки. Драйвер TPM 2.0 сохраняет знания об этом адресе на протяжении всего цикла загрузки, включая циклы гибернации и возобновления. Если система не использует область управления, это значение ДОЛЖНО быть равно нулю.

Метод Start

4

30 ч

Селектор метода запуска определяет механизм, используемый драйвером доверенного платформенного модуля Windows 2.0 для передачи команд TPM 2.0 на устройство и уведомления устройства TPM 2.0 о том, что команда доступна для обработки. Это поле может содержать одно из следующих значений:

Значение

Описание

0

Зарезервировано.

1

Зарезервировано (зависит от поставщика)

2

Использует метод START ACPI.

3-5

6

Зарезервировано (зависит от поставщика)

Зарезервировано для интерфейса операций ввода-вывода, сопоставленного с памятью (TIS 1.2+Cancel). Этот параметр не соответствует Windows 8 сертификации оборудования. Для использования этого параметра требуется утвержденный Windows 8 запрос на непредвиденные случаи WHLK для сертификации логотипа. Для получения дополнительных сведений обратитесь в корпорацию Майкрософт.

7

8

Использует интерфейс буфера командного ответа.

Использует интерфейс буфера командного ответа с методом ACPI Start.

Зарезервировано.

 

Параметры для конкретных платформ

Переменная

34 ч

Содержимое параметров конкретной платформы определяется механизмом запуска, используемым интерфейсом устройства TPM 2.0 этой системы. Это поле содержит значения, которые можно использовать для запуска обработки команд. Эти сведения могут быть зависят от поставщика. Для значений метода Start 2 или 6 поле не используется, а длина байтов равна нулю.

4.4.1 Содержимое области управления

Структура области управления содержит поля состояния, а также другие биты или поля элемента управления и один или несколько адресов. Область управления содержит физический адрес буфера команд и физический адрес буфера ответов.

Не во всех реализациях интерфейса TPM 2.0 используется область управления. Например, значение метода Start 6 не использует область управления, а сведения, приведенные в этом разделе, неприменимы для платформы.

Область управления ДОЛЖНА находиться в памяти ACPI AddressRangeReserved.

Структура области управления показана в таблице ниже, и если не указано иное, все операции доступа к области управления выполняются в маленьком формате байтов.

Таблица 4. Макет области управления

Поле

Длина байтов

Offset

Описание

Поля состояния

Поля состояния доверенного платформенного модуля 2.0

Зарезервировано

4

00h

Зарезервировано. (ДОЛЖНО быть равно нулю.)

Error

4

04h

set by the TPM 2.0 to indicate an error condition

Отменить

4

08h

Set by the DRIVER to прерывание обработки команд

Начать

4

0Ch

ЗАДАЙТЕ драйвером , чтобы указать, что команда доступна для обработки.

Управление прерываниями

8

10 ч

Зарезервировано. (ДОЛЖНО быть равно нулю.)

Размер команды

4

18 ч.

Размер буфера команд

Get-Help

8

1Ch

Это поле содержит физический адрес буфера команд. Обратите внимание, что фактический буфер команд (а не физический адрес буфера команд) имеет формат big-endian, как это предусмотрено TCG.

Размер ответа

4

24 ч

Размер буфера ответов

Ответ

8

28 ч

Это поле содержит физический адрес буфера ответов. Обратите внимание, что фактический буфер ответа (а не физический адрес буфера ответа) имеет формат big-endian, как это предусмотрено TCG.

Драйвер TPM 2.0 считывает следующие сведения один раз во время инициализации операционной системы:

  1. Физический адрес области управления

  2. Размер буфера команд

  3. Физическое расположение буфера команд

  4. Размер буфера ответа

  5. Физическое расположение буфера ответов

Для систем, которые используют область управления (т. е. значение метода Start не равно 6) и поддерживают режим гибернации и возобновления, указанные выше пять значений ДОЛЖНЫ оставаться постоянными в циклах гибернации и возобновления.

4.4.1.1 Ошибка

Устройство TPM 2.0 может задать это состояние. Он может записывать это состояние только в том случае, если для параметра Start задано значение SET. Сразу после того, как устройство TPM 2.0 переназначает это состояние, оно возвращает значение Start. Драйвер доверенного платформенного модуля Windows 2.0 не будет считывать поле Ошибка, если в поле "Пуск" не задано значение CLEAR.

Значение SET поля Ошибка считается универсальной ошибкой устройства TPM 2.0 или его аппаратного интерфейса. Любое значение SET приводит к отмене текущей команды. Команда ДОЛЖНА быть откатена, чтобы устройство TPM 2.0 оставалось в согласованном состоянии.

Для устройства с методом ЗАПУСКА ACPI это поле следует использовать только для ошибок, для которых не удается предоставить код ответа. Например, буфер ответа не находится в физической памяти. Драйвер доверенного платформенного модуля Windows 2.0 может прекратить использование устройства TPM 2.0, если это поле имеет значение SET.

Начальное значение этого поля после ExitBootServices ДОЛЖНО отражать, работает ли устройство.

4.4.1.2 Отмена

Драйвер доверенного платформенного модуля Windows 2.0 может задать это поле, чтобы запросить завершение обработки текущей команды устройства TPM 2.0. Драйвер доверенного платформенного модуля Windows 2.0 не вызывает метод Start для запуска обработки запроса на отмену.

Если драйвер доверенного платформенного модуля Windows 2.0 задает значение Cancel и устройство TPM 2.0 обрабатывает команду, устройство TPM 2.0 перестанет обрабатывать текущую команду в самый ранний удобный момент. Для большинства команд ожидается, что устройство TPM 2.0 выполнит команду и предоставит обычный ответ. Для длительных команд (например, создания ключей RSA) устройство TPM 2.0 может завершить работу с TPM_RC_CANCELLED. Устройство TPM 2.0 должно завершить или отменить команду в течение 90 секунд. (Как правило, большинство команд TPM 2.0 должны выполняться менее чем за 500 мс, за исключением команд создания ключей RSA, которые могут занять больше времени, а отмена команд должна происходить в течение 200 мс)

Драйвер доверенного платформенного модуля Windows 2.0 может очистить это значение, если поле "Пуск" имеет значение CLEAR. Начальное значение этого поля после ExitBootServices ДОЛЖНО быть clear.

4.4.1.3 Запуск

Драйвер доверенного платформенного модуля Windows 2.0 может задать это состояние, чтобы указать, что в буфер команд была помещена новая команда. Драйвер доверенного платформенного модуля Windows 2.0 может вызвать метод Start для запуска обработки команды. Устройство доверенного платформенного модуля 2.0 очищает это состояние после завершения обработки команды.

Драйвер доверенного платформенного модуля Windows 2.0 может очистить это состояние при сбое вызова метода Запуска.

Начальное значение этого поля после ExitBootServices ДОЛЖНО быть clear.

Команда 4.4.1.4

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

Драйвер доверенного платформенного модуля Windows 2.0 НЕ ДОЛЖЕН записывать данные в эту область памяти, если поле "Пуск" не имеет значения CLEAR. Обратите внимание, что адрес указан в малобайтовом формате в области управления, но фактический буфер команд имеет формат big-endian, как это требуется TCG.

Ответ 4.4.1.5

Это физический адрес, с которого драйвер доверенного платформенного модуля Windows 2.0 будет считывать ответы команд. Драйвер доверенного платформенного модуля Windows 2.0 никогда не считывает ответ, превышающий "Размер ответа".

Драйвер windows TPM 2.0 будет считывать ответ только после того, как поле "Пуск" изменится с SET на CLEAR, а ошибка — CLEAR. Обратите внимание, что адрес указан в малобайтовом формате в области управления, но фактический буфер ответа имеет формат big-endian в соответствии с требованием TCG.

4.5. Определение интерфейса области управления

Для аппаратных платформ, использующих область управления в качестве интерфейса TPM 2.0, в этом разделе и в разделе 4.4 описывается взаимодействие драйвера TPM 2.0 с оборудованием. Примером системы, которая использует область управления, является система со значением метода Start 2 в таблице TPM2.

4.5.1 Сочетания состояний

В таблице 5 описывается ожидаемое поведение изменений, внесенных драйвером доверенного платформенного модуля Windows 2.0. Обратите внимание, что разрешены только некоторые сочетания. Документируются только допустимые сочетания и изменения. Все остальные сочетания недопустимы. Изменение полей без действия драйвера доверенного платформенного модуля Windows 2.0 означает, что устройство TPM 2.0 или метод ACPI Start изменили поля.

Состояния, помеченные как "0", указывают на то, что это поле имеет значение CLEAR. Состояния, помеченные значением "1", указывают на то, что это поле имеет значение SET. Состояния, помеченные знаком "?", указывают на то, что значение этого поля может иметь значение CLEAR или SET. Поля состояния сокращены следующими: "ERR" — ошибка, "CCL" - Отмена и "STR" - Start. Поле может быть записано драйвером доверенного платформенного модуля Windows 2.0 или интерфейсом устройства TPM 2.0, который подробно описан в столбце действий.

|---

Текущее состояние

---|

|---

Поле записано

---|

|---

Следующее состояние

---|

Действие, выполняемое интерфейсом устройства TPM 2.0

#

ERR

CCL

STR

ERR

CCL

STR

ERR

CCL

STR

1

0

1

0

-

0

-

0

0

0

Драйвер Windows TPM 2.0 возвращает значение Отмена, чтобы подготовить область управления к следующей команде. Драйвер windows TPM 2.0 может ОЧИСТИТЬ значение Отмены, только если start имеет значение CLEAR.

(Устройство TPM 2.0 НЕ ДОЛЖНО записывать данные в поле Отмена.)

2

0

0

0

-

-

1

0

0

1

Драйвер Windows TPM 2.0 очищает значение start, указывая, что команда присутствует в области Команд.

Драйвер Windows TPM 2.0 может вызывать метод ACPI Start, чтобы инициировать выполнение команды. После завершения метода ACPI Start устройство TPM 2.0 должно выполнить команды и очистить поле Start в течение 90 секунд. Превышение предельного времени может привести к тому, что драйвер TPM 2.0 Windows предполагает, что устройство TPM 2.0 зависло.

3

0

?

1

-

-

0

0

?

0

Устройство TPM 2.0 устанавливает clEA в поле Start после завершения обработки команды или отмены команды.

Если команда была отменена, ответ с кодом возврата TPM_RC_CANCELLED помещается в буфер отклика, а параметр Start имеет значение CLEARed.

Драйвер windows TPM 2.0 может считывать буфер ответов, пока поле "Пуск" имеет значение CLEAR. Драйвер Windows TPM 2.0 НЕ ДОЛЖЕН считывать буфер ответов, пока поле Start имеет значение SET.

4

0

0

1

-

1

-

0

1

1

Параметры SET драйвера Windows TPM 2.0 Отмена, чтобы указать устройство TPM 2.0 для отмены текущей команды. Как правило, длительные команды следует отменять в следующей удобной точке. Можно выполнить короткие команды. В частности, устройство TPM 2.0 ДОЛЖНО ОЧИСТИТЬ поле "Пуск" в течение 90 секунд после того, как поле "Отмена" равно SET. (Хороший целевой показатель производительности — 200 мс вместо 90 секунд.) Примечание. Поле Отмена может быть задано при вызове метода ACPI Start, так как один поток в ОС может задать поле Отмена до того, как другой поток вызовет метод запуска ACPI.

5

0

?

1

1

-

-

1

?

1

Устройство TPM 2.0 указывает на состояние ошибки на устройстве. Состояние устройства TPM 2.0 такое, как если бы выполнение команды никогда не запускалось. Драйвер windows TPM 2.0 рассматривает это значение как общий сбой устройства TPM 2.0 и отменяет обработку команды.

6

1

?

1

-

-

0

1

?

0

Устройство TPM 2.0 clEAR поле Start сразу после setting поля Error.

Драйвер windows TPM 2.0 проверяет поле Ошибка только в том случае, если поле "Пуск" имеет значение CLEAR или если выполнение или отмена команды не выполняется в течение требуемого периода времени. Драйвер windows TPM 2.0 может прекратить использование устройства TPM 2.0, если поле Ошибка имеет значение SET.

4.5.2 Схема состояния при использовании метода запуска ACPI

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

Состояния устройства tpm 2.0 при использовании метода запуска acpi

Рис. 1. Состояния устройства TPM 2.0 при использовании метода запуска ACPI

Примечание

(a) Обратите внимание, что несколько параллельных потоков могут взаимодействовать с областью управления одновременно. Например, один поток может инициировать команду, задав поле Start и выполнив метод Start. Другой поток может задать поле Отмена параллельно. Таким образом, можно задать поле Отмена после задания поля Start, но перед выдачей метода Start. (b) Драйвер доверенного платформенного модуля Windows 2.0 может реагировать на условия ошибок иначе, чем показано на рисунке. Например, он может перейти в состояние ошибки при достижении времени ожидания.

4.5.3 Диаграмма состояния без метода ЗАПУСКА ACPI

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

Состояния устройства tpm 2.0 без метода запуска acpi

Рис. 2. Состояния устройства TPM 2.0 без метода ЗАПУСКА ACPI

4.6. Интерфейс сопоставленного ввода-вывода с памятью

Для аппаратных платформ, использующих интерфейс ввода-вывода, сопоставленного с памятью, в этом разделе и в разделе 4.4 описывается взаимодействие драйвера TPM 2.0 с оборудованием. Примером системы, которая использует интерфейс ввода-вывода, сопоставленного с памятью, является система со значением метода Start 6 в таблице TPM2.

4.6.1. Требования к спецификации интерфейса TPM TCG

Система должна соответствовать требованиям к аппаратному интерфейсу TPM 1.2 в [TCG12] для следующих разделов:

Раздел 9.1. Уровни локальности доверенного платформенного модуля

Раздел 9.2. Использование локальности

Раздел 9.3. Использование локальности для регистра

Раздел 10. Пространство регистрации доверенного платформенного модуля

Раздел 11. Взаимодействие и потоки системы

Кроме: все сведения о режиме сбоя раздела 11.2.4

Кроме раздела 11.2.5: Длительность команды, нормативный пункт 2

Кроме всех разделов 11.2.6: время ожидания

Кроме всех разделов 11.2.8. Самотестирование и ранняя инициализация платформы

Кроме всех раздел 11.2.9: Размер входного буфера

Кроме раздела 11.2.10: Ошибки, нормативные элементы 2c и 3.

Раздел 13. Аппаратный протокол TPM

Для получения будущих проектов спецификаций [TCG12] обратитесь в корпорацию Майкрософт.

4.6.2. Поддержка отмены команды

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

Ранее неиспользуемый бит 24 регистра STS определяется как только запись и называется commandCancel.

Запись "1" в commandCancel на этапе выполнения команды МОЖЕТ отменить выполняемую в данный момент команду, и должен быть возвращен ответ. Ответ указывает, была ли команда отменена (состояние TPM 2.0 не изменено, но код ответа отмены TPM_RC_CANCELLED возвращается) или завершен (возвращается обычный ответ TPM 2.0, указывающий на результат команды). Записи в регистр commandCancel, когда доверенный платформенный модуль не находится в состоянии выполнения команды, должны игнорироваться.

4.6.3. Дополнительные требования

  1. Все команды доверенного платформенного модуля должны выполняться не более 90 секунд.

  2. Если драйвер TPM 2.0 запрашивает отмену команды, она должна быть завершена или отменена в течение 90 секунд.

  3. НЕОБХОДИМО реализовать следующие значения ВРЕМЕНИ ОЖИДАНИЯ: TIMEOUT_A = 1 секунда, TIMEOUT_B = 2 секунды, TIMEOUT_C = 1 секунда, TIMEOUT_D = 1 секунда.

  4. Минимальный размер входного буфера должен быть 0x500 (или больше).

Ссылки на версии 5.0

[ACPI09]

"Расширенная конфигурация и спецификация интерфейса питания", версия 4.0, 16 июня 2009 г.

[TCG08]

Trusted Computing Group, "TCG Platform Reset Attack Mitigation Specification", version 1.0, May 15, 2008.

[TCG11]

Trusted Computing Group, "TCG Physical Presence Interface Specification", version 1.20, 10 февраля 2011 г.

[TCG12]

Trusted Computing Group, "PC Client Work Group PC Client Client Specific TPM Interface Specification (TIS) version 1.21, Revision 1.00.