Compartir a través de


Perfil ACPI del entorno de ejecución de confianza

Licencias: Microsoft acepta concederle una licencia sin cargo, libre de regalías a sus reclamaciones necesarias en términos razonables y no discriminatorios únicamente para hacer, usar, vender, ofrecer para la venta, importar o distribuir cualquier implementación de esta especificación. Las "reclamaciones necesarias" son las reclamaciones de patentes controladas por Microsoft o propiedad de Microsoft que técnicamente son necesarias para implementar las partes necesarias (que también incluyen los elementos necesarios de partes opcionales) de esta especificación, donde la funcionalidad que provoca la infracción se describe en detalle y no se hace referencia simplemente a ella en esta Especificación.

1.0 Fondo

Esta especificación define el objeto de dispositivo ACPI para un dispositivo TPM 2.0 y los métodos de control asociados al objeto de dispositivo ACPI necesario para Windows 8. Los métodos de control implementan el equivalente de la interfaz ACPI de presencia física TCG, el equivalente de la interfaz mitigación de ataques de restablecimiento de plataforma y, opcionalmente, un método ACPI para enviar un comando al dispositivo TPM 2.0.

Se usa una tabla ACPI estática adicional (TPM2) para definir el mecanismo para comunicarse entre el dispositivo TPM 2.0 y el sistema operativo Windows 8.

Nota

Microsoft hace referencia al "TPM" del grupo de computación de confianza. Siguiente" término como "TPM 2.0"

2.0 Requisitos

Esta especificación supone una plataforma informática que admite la comunicación basada en ACPI tal como se especifica en [ACPI09] entre un sistema operativo y un entorno de firmware.

3.0 Escenarios de uso (por ejemplo, solo)

3.1 Envío de un comando de presencia física

Un escenario de uso típico es el siguiente:

  1. Dentro del entorno del sistema operativo, una aplicación detecta que el dispositivo TPM 2.0 no está totalmente aprovisionado para su uso para Windows 8. (Un ejemplo de cómo podría ocurrir esto es si se instala una nueva imagen del sistema operativo después de que una imagen del sistema operativo anterior aprovisionó el TPM 2.0).

  2. La aplicación inicia un asistente de sistema operativo para preparar el dispositivo TPM 2.0 para su uso.

  3. El asistente interactúa con el administrador del equipo a través de la interfaz de usuario y determina que el administrador debe borrar el dispositivo TPM 2.0 para aprovisionarlo porque el valor de autorización de bloqueo de restablecimiento del dispositivo TPM 2.0 no está disponible.

  4. Para borrar el dispositivo TPM 2.0, el sistema operativo solicita (ejecutando un método de control ACPI para el objeto de dispositivo TPM 2.0) el firmware realiza la operación para borrar el dispositivo TPM 2.0 en el siguiente arranque siempre que un usuario presente físicamente confirme que aprueba borrar el dispositivo TPM 2.0.

  5. El sistema operativo reinicia la plataforma.

  6. Durante la parte temprana del proceso de arranque, el firmware reconoce la solicitud pendiente del sistema operativo para borrar el dispositivo TPM 2.0.

  7. El firmware presenta una interfaz de usuario a un usuario físicamente presente que les pide que realicen alguna acción para confirmar la desactivación del dispositivo TPM 2.0.

  8. Un usuario presente físicamente confirma la eliminación del dispositivo TPM 2.0.

  9. El firmware borra el dispositivo TPM 2.0 mediante la autorización de jerarquía de plataforma.

  10. Si es necesario, para conservar la desactivación del dispositivo TPM 2.0, la plataforma se reinicia inmediatamente.

  11. El sistema operativo arranca.

  12. Las consultas del sistema operativo (a través de un método de control ACPI en el dispositivo TPM 2.0) si la última solicitud del sistema operativo para borrar el dispositivo TPM 2.0 se realizó correctamente (a), (b) no fue confirmada por el usuario físicamente presente o (c) tuvo algún otro error. En lo siguiente, se supone que el dispositivo TPM 2.0 se ha borrado correctamente.

  13. El Asistente para aprovisionamiento de dispositivos TPM 2.0 dentro del sistema operativo realiza comandos adicionales para preparar el dispositivo para su uso por Parte de Windows.

3.2 Solicitar que se borre la memoria en el siguiente arranque

En este escenario se muestra cómo la característica clara de memoria del sistema ayuda a frustrar los ataques que cosechan la memoria del sistema para el material clave después de reiniciar inesperadamente la plataforma.

  1. Desde el sistema operativo, un administrador de un sistema con un dispositivo TPM 2.0 activa la característica BitLocker para el volumen del sistema operativo.

  2. La característica BitLocker llama al método de control ACPI del dispositivo TPM 2.0 para establecer el bit ClearMemory definido en la especificación de mitigación de ataques de restablecimiento de plataforma TCG.

  3. La característica BitLocker cifra el volumen del sistema operativo.

  4. El administrador deja el sistema desatendido con la pantalla bloqueada.

  5. Una persona malintencionada roba el sistema mientras se está ejecutando.

  6. La persona malintencionada inserta un stick USB y elimina rápidamente la batería del sistema y la vuelve a insertar.

  7. El sistema inicia el arranque cuando se vuelve a insertar la batería.

  8. Dado que el bit ClearMemory se estableció anteriormente, el firmware borra toda la memoria del sistema antes de iniciar cualquier código no proporcionado por el fabricante de la plataforma.

  9. La persona malintencionada configura el firmware durante el arranque para arrancar en el dispositivo USB aunque el código del dispositivo USB no esté firmado correctamente.

  10. El código del dispositivo USB examina la memoria del sistema para la clave maestra de volumen de BitLocker, pero no se encuentra.

    Advertencia

    Los pasos del 11 al 16 son similares a los pasos anteriores, pero usan la interfaz UEFI en lugar de ACPI.

  11. La persona malintencionada intenta arrancar el sistema normalmente.

  12. Dado que BitLocker se habilitó con el protector de clave TPM, esto permite que BootMgr "desasomine" la clave maestra de volumen para el volumen del sistema operativo porque las medidas correctas están en el dispositivo TPM 2.0 cuando se ejecuta BootMgr.

  13. El arranque continúa en la pantalla de inicio de sesión del sistema operativo.

  14. La persona malintencionada vuelve a quitar la batería y el código de arranque de un dispositivo USB.

  15. Dado que se estableció el bit ClearMemory, el firmware del sistema borra toda la memoria del sistema durante el arranque.

  16. Aunque el código del dispositivo USB examina la memoria del sistema, la clave de cifrado del volumen del sistema operativo no está en memoria.

3.3 Emisión de un comando al dispositivo TPM 2.0

Este ejemplo no es aplicable a todas las arquitecturas del sistema.

  1. El controlador de Windows TPM 2.0 quiere emitir un comando al dispositivo TPM 2.0.

  2. El controlador de Windows TPM 2.0 escribe el comando para que se ejecute en la dirección física leída desde el área de control definida por ACPI anteriormente durante la inicialización del controlador TPM 2.0 de Windows.

  3. El controlador TPM 2.0 de Windows ejecuta el método de control ACPI para ejecutar un comando TPM 2.0.

  4. El controlador de Windows TPM 2.0 sondea los registros en el área de control hasta que indican que se ha completado el comando de TPM.

  5. El controlador TPM de Windows lee la respuesta del comando de la dirección física leída desde el área de control definida por ACPI anteriormente durante la inicialización del controlador TPM de Windows.

4.0 Requisitos generales acpi para el sistema y el dispositivo TPM 2.0

4.1 Consideraciones sobre energía

ACPI D1/D2

El dispositivo TPM 2.0 PUEDE admitir ACPI D1 o ACPI D2, pero DEBE comportarse como si estuviera en estado de alimentación ACPI D0 mientras estaba en D1 o D2.

ACPI S3 (suspensión)

El TPM 2.0 PUEDE admitir S3, pero la entrada y salida del estado de baja potencia S3 para el dispositivo DEBE ser controlada por el fabricante del sistema o plataforma.

El sistema operativo (u otro software que se ejecuta en el entorno del sistema operativo) NO DEBE poder colocar el dispositivo TPM 2.0 en S3 o hacer que el dispositivo TPM 2.0 salga de S3. Por ejemplo, si el dispositivo TPM 2.0 está en un bus, el sistema operativo NO DEBE poder apagar el bus, lo que hace que el dispositivo TPM 2.0 entre en S3.

El controlador de TPM de Windows 8 intentará emitir un comando TPM2_Shutdown antes de entrar en S3 (suspensión).

Si una plataforma de hardware admite S3 y el TPM no conserva su estado mientras el sistema está en S3, la plataforma DEBE emitir los comandos TPM2_Init y TPM2_Startup(TPM_SU_STATE) necesarios durante la reanudación de S3. Es posible que el sistema operativo no haya completado el comando TPM2_Shutdown antes de entrar en S3. Esto podría hacer que el resultado devuelto de TPM2_Startup(TPM_SU_STATE) devuelva un error. El firmware del sistema que se reanuda de S3 DEBE tratar con un error de TPM2_Startup adecuadamente. Por ejemplo, al deshabilitar el acceso al TPM a través del hardware, emitir un comando TPM2_Startup(TPM_SU_CLEAR) y configurar el dispositivo de forma segura mediante acciones como extender un separador con un resumen de errores (0x01) en PCR 0 a 7 y bloquear índices nv.

El sistema DEBE tener en cuenta el tiempo transcurrido durante S3 disminuyendo el número de errores de ataque del diccionario de TPM (TPM_PT_LOCKOUT_COUNTER) durante el tiempo que el sistema estaba en S3 por el intervalo de bloqueo (TPM_PT_LOCKOUT_INTERVAL). Esto puede requerir una implementación de plataforma para proporcionar voltaje en espera para conservar el reloj TPM o el estado durante S3 o una plataforma también podría proporcionar información segura sobre cuánto tiempo transcurrió mientras el sistema estaba en un estado de baja potencia para que el TPM pueda actualizar de forma confiable su recuento de errores de autorización para su lógica de ataque de diccionario.

Estados de bajo consumo para sistemas en espera conectados

Windows 8 no realiza acciones adicionales asociadas al TPM tras la entrada y salida de estados de bajo consumo para sistemas conectados en espera. La plataforma DEBE realizar cualquier acción necesaria para que el TPM se comporte como si estuviera en D0 cada vez que el sistema entra y sale de los estados de baja potencia para los sistemas conectados en espera. Esto puede requerir una implementación de plataforma para proporcionar voltaje en espera para encender el reloj TPM o conservar el estado. Como alternativa, es posible que una plataforma necesite proporcionar información de forma segura sobre cuánto tiempo ha transcurrido mientras el sistema estaba en un estado de bajo consumo al TPM, por lo que el TPM puede actualizar de forma confiable su recuento de errores de autorización para su lógica de ataque de diccionario.

Sistema desactivado

El sistema DEBE tener en cuenta de forma segura el tiempo transcurrido durante el apagado completo disminuyendo el número de errores del diccionario de TPM (TPM_PT_LOCKOUT_COUNTER) durante el tiempo que el sistema estaba en S5 por el intervalo de bloqueo (TPM_PT_LOCKOUT_INTERVAL).

4.2 Tablas ACPI

Un sistema con un dispositivo TPM 2.0 DEBE proporcionar una tabla de objetos de dispositivo con un identificador de dispositivo de hardware y una tabla estática específica del proveedor del sistema operativo (TPM2), como se describe a continuación.

Tanto la tabla TPM2 como el objeto de dispositivo TPM 2.0 DEBEN ser persistentes una vez que la plataforma se envía a un cliente. (Por ejemplo, las opciones de firmware NO DEBEN permitir ocultar la tabla TPM2 o el objeto de dispositivo TPM 2.0). Una excepción es si un sistema se incluye con una opción no predeterminada para proporcionar la funcionalidad TPM 1.2 en lugar de la funcionalidad de TPM 2.0 (es decir, para la compatibilidad con sistemas operativos anteriores como Windows 7). En esta situación, la tabla TPM2 y el objeto de dispositivo TPM 2.0 pueden quitarse a través de una opción de configuración de BIOS y enumeración de un TPM 1.2 realizado. Nota: Se requiere un sistema en espera conectado para Windows 8 para enviar, de forma predeterminada, un TPM 2.0 visible para el sistema operativo. Póngase en contacto con Microsoft para obtener instrucciones técnicas sobre cómo cambiar entre un TPM 2.0 y TPM 1.2 en una plataforma de hardware.

4.3 TPM 2.0 Tabla ACPI del objeto de dispositivo

Jerarquía de buses 4.3.1

La tabla Device Object DEBE estar en la tabla DSDT del espacio de nombres ACPI. El objeto de dispositivo TPM 2.0 debe encontrarse bajo el bus del sistema en "root\_SB".

4.3.2 Identificador de hardware

El identificador de hardware real plug and play (por ejemplo, _HID) para el objeto de dispositivo TPM 2.0 DEBE ser "MSFT0101" o el dispositivo DEBE tener un identificador compatible de "MSFT0101" y el _HID podría ser específico del proveedor.

4.3.3 Descriptores de recursos

El objeto de dispositivo ACPI TPM 2.0 DEBE reclamar todos los recursos utilizados por el dispositivo TPM 2.0.

4.3.4 Métodos de control

4.3.4.1 Mitigación de ataques de restablecimiento de plataforma

El sistema DEBE implementar todas las partes relacionadas con ACPI y UEFI de [TCG08] para UEFI. El objeto de dispositivo DEBE implementar la interfaz del método de control definida en [TCG08], sección 6. La interfaz es necesaria incluso si la plataforma borra incondicionalmente la memoria en cada arranque. La desactivación de memoria NO DEBE estar condicional en el estado del dispositivo TPM 2.0 (por el contrario, [TCG08] no requiere borrar la memoria si el TPM 1.2 no es propiedad). Además, se deben implementar las secciones 3, 5 de [TCG08]. La función de consulta _DSM DEBE implementarse (índice de función 0) según la especificación ACPI. (Nota: Hay un error en la especificación ACPI 4.0 sobre el valor devuelto para el método _DSM. El valor devuelto del método _DSM debe ser un búfer que contenga 0x03). La implementación DEBE detectar automáticamente un apagado del sistema operativo ordenado y borrar el bit ClearMemory en dichos eventos.

Nota especial para los sistemas Arm basados en UEFI con un TPM 2.0: en sistemas Arm basados en UEFI con un TPM 2.0, Windows 8 solicitará incondicionalmente memoria mediante la interfaz UEFI en cada arranque. La implementación de la interfaz ACPI sigue siendo necesaria, pero la interfaz PUEDE implementarse para no cambiar el estado de las marcas ClearMemory o DisableAutoDetect. (Nota: Microsoft recomienda implementar la interfaz ACPI según la especificación TCG, por lo que llamar a la interfaz ACPI cambia el estado de ClearMemory o DisableAutoDetect).

4.3.4.2 Interfaz de presencia física

El sistema DEBE implementar la especificación definida en [TCG11] según las notas adicionales siguientes:

  1. El uso de TPM en la especificación TCG debe coincidir con el dispositivo TPM 2.0.

  2. Los métodos de control definidos en la sección 2 DEBEN implementarse con las siguientes restricciones:

    1. La función de consulta _DSM DEBE implementarse (índice de función 0) según la especificación ACPI. (Nota: Hay un error en la especificación ACPI 4.0 sobre el valor devuelto para el método _DSM. El valor devuelto del método _DSM debe ser un búfer que contenga 0x01FF).

    2. La implementación DEBE devolver un valor de "2: Reboot" para "Get Platform-Specific Action to Transition to Pre-OS Environment". Las operaciones PPI DEBEN producirse para una transición de un reinicio y DEBE producirse para una transición de apagado.

    3. La implementación de los siguientes métodos de control es opcional: "Enviar solicitud de operación de TPM al entorno anterior al sistema operativo" (puede devolver "2: Error general") y "Enviar idioma de usuario preferido" (puede devolver "3: No implementado").

  3. Los requisitos de la sección 3 DEBEN implementarse con las siguientes revisiones:

    1. El BIOS no necesita proporcionar almacenamiento persistente para la marca NoPPIProvision porque las operaciones que autoriza no son relevantes para el estado del dispositivo TPM 2.0.

    2. La tabla 2 se revisa de la siguiente manera:

      Tabla 1: tabla PPI revisada 2

      OperationValue

      Nombre de la operación

      Estadísticas de TPM

      Marcas mgmt de TPM de BIOS

      Obligatorio frente a opcional

      Cuando se requiere confirmación de presencia física

      Es posible que necesite un ciclo de arranque adicional

      0

      Sin operación

      M

      1-4

      Sin operación

      M

      5

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear es FALSE

      X

      6-11

      Sin operación

      M

      12-13

      Sin operación

      O

      14

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear es FALSE

      X

      15-16

      Sin operación

      M

      17

      SetNoPPIClear_False

      X

      O1

      18

      SetNoPPIClear_True

      X

      O1

      Siempre

      19-20

      Sin operación

      O2

      21-22

      TPM2_ClearControl(NO) +

      TPM2_Clear

      X

      M

      NoPPIClear es FALSE

      X

      23 - 127

      Reservado

      >=128

      Específico del proveedor

      X

      x

      O

      x

      Importante

      Para SetNoPPIClear_False: si el BIOS implementa los elementos marcados como "O1" o "O2", debe implementarlos como un conjunto. Para la operación No que sigue SetNoPPIClear_True, el BIOS no debe implementar las operaciones 19 y 20 si no implementa la operación 12.

    3. La tabla 3 se revisa de la siguiente manera:

      operación

      Valor

      operación

      Nombre

      Comandos de TPM enviados por BIOS y otras acciones del BIOS para realizar la operación

      0

      Sin operación

      Sin operación

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

      Sin operación

      No hay ninguna operación. Sin embargo, se debe recordar el número de operación y el resultado si se consulta desde el sistema operativo, debe devolverse correctamente.

      5, 14, 21, 22

      Borrar

      TPM2_ClearControl(NO) +

      TPM2_Clear

      <PLATFORM RESET>* [*Si es necesario para conservar los cambios de TPM de TPM2_CLEAR. Microsoft prevé que en la mayoría de los sistemas esto no es necesario.

      17

      SetNoPPIClear_False

      (Requerir presencia física para clear).)

      Esta operación no cambia el estado de TPM.

      Borra la marca de administración de TPM del BIOS NoPPIClear en FALSE.

      18

      SetNoPPIClear_True

      (No requiera confirmación de presencia física para borrar).

      Esta operación no cambia el estado de TPM.

      Establece la marca de administración de TPM del BIOS NoPPIClear en TRUE.

      23 - 127

      Reservado

      Reservado, no implemente ni use

      >=128

      Específico del proveedor

      Asignación de comandos de TPM a una operación específica del proveedor

  4. El espíritu de la sección 4 debe mantenerse para obtener la confirmación de un usuario físicamente presente cuando es necesario realizar una operación, pero el mecanismo real no necesita ser pulsaciones de teclas. Las claves u otro mecanismo para confirmar el consentimiento están en el fabricante de la plataforma.

    Op

    Valor

    operación

    Nombre

    Confirmación

    Texto

    5, 14, 21 y 22

    Borrar

    Se solicitó un cambio de configuración para borrar el TPM de este equipo (módulo de plataforma segura)

    ADVERTENCIA: Borrar borra la información almacenada en el TPM. Perderá todas las claves creadas y el acceso a los datos cifrados por estas claves.

    Presione <CAK> para borrar el TPM.

    Presione <RK> para rechazar esta solicitud de cambio y continuar

    18

    SetNoPPIClear_True

    Se solicitó un cambio de configuración para permitir que el sistema operativo borre el TPM del equipo (módulo de plataforma segura) sin pedir confirmación del usuario en el futuro.

    NOTA: Esta acción no borra el TPM, pero al aprobar este cambio de configuración, las acciones futuras para borrar el TPM no requerirán confirmación del usuario.

    ADVERTENCIA: Borrar borra la información almacenada en el TPM. Perderá todas las claves creadas y el acceso a los datos cifrados por estas claves.

    Presione <CAK> para aprobar futuras solicitudes del sistema operativo para borrar el TPM.

    Presione <RK> para rechazar esta solicitud de cambio y continuar

  5. La sección 5 es informativa.

  6. Los sistemas en espera conectados PUEDEN codificar de forma permanente NoPPIClear en TRUE y no implementar las operaciones 17 y 18. Esto significa que no necesitan implementar ningún cuadro de diálogo de confirmación para las acciones de presencia física, ya que ninguna operación de presencia física requerirá confirmación del usuario.

  7. El firmware DEBE dejar habilitadas las jerarquías de almacenamiento y aprobación cuando pasa el control al código inicial del cargador de programas, como el Administrador de arranque de Windows.

4.3.4.3 Método de inicio ACPI opcional

Nota: Algunas plataformas PUEDEN implementar este método ACPI opcional para permitir que el sistema operativo solicite al firmware que ejecute o cancele un comando TPM 2.0. El uso del método ACPI Start viene determinado por el campo StartMethod de la tabla ACPI estática (véase la sección 4.4). Si el campo StartMethod de la tabla ACPI estática indica el uso de este método, se debe implementar el método ACPI Start. Las funciones ACPI definidas en este documento residirán en el objeto de método de control _DSM. [Nota: Este no es un método de control en la tabla ACPI TPM2.] El método _DSM definido en este documento DEBE implementarse de la siguiente manera:

UUID

Revisión

Function

Descripción

6bbf6cab-5463-4714-b7cd-f0203c0368d4

0

0

Como se describe en [ACPI09], Sección 9.14.1.

0

1

Inicio

Inicio de función

Argumentos de entrada:

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

Valor devuelto:

Tipo: Integer

Descripción del valor devuelto:

0: correcto

1: Error general

Comportamiento funcional:

Esta función indica al sistema que revise los registros de estado en el área de control del dispositivo TPM 2.0 y realice la acción adecuada para ejecutar o cancelar el comando TPM 2.0.

La función no está bloqueada. La llamada devolverá inmediatamente. (No intente realizar la ejecución de comandos desde el método ACPI. Las llamadas AML deben ser cortas). Cuando se devuelve el valor devuelto 0, el comando enviado se aceptó y se ejecutará mediante el firmware o se cancelará si el campo Cancelar ya está establecido. Siempre que sea posible, el sistema debe devolver una respuesta de TPM en lugar de un error general de esta llamada. Por ejemplo, un comando no se puede procesar ahora, se podría escribir un búfer de respuesta de TPM2_RC_RETRY y el campo START podría ser CLEARed. Si se canceló el comando porque se estableció el campo Cancelar, este método puede escribir un código de retorno TPM2_RC_Cancelled en el búfer de respuesta, desactive el campo Inicio y devuelva un valor de 0. Como alternativa, si el campo Cancelar se establece, el método puede devolver un valor de 0 y el dispositivo TPM 2.0 puede completarse más adelante o cancelar el comando según los requisitos para cancelar un comando.

Cuando se devuelve el valor devuelto 1, el firmware no puede leer o actuar tras la solicitud. Aparte del valor devuelto, la solicitud es equivalente a un NO-OP. Algunos ejemplos son (a) un controlador de sistema operativo incorrecto solicita la ejecución de comandos adicionales antes de que se complete un comando anterior, (b) el área de control no está en memoria física [quizás debido a daños en la memoria] o (c) las direcciones físicas de comando o respuesta no existen. Un valor devuelto de 1 puede provocar que el controlador TPM 2.0 de Windows deje de usar el dispositivo TPM 2.0 hasta el siguiente arranque completo del sistema (esto excluye los ciclos de hibernación y reanudación).

Nota: Una vez que se inicia la ejecución del comando, este método no se llama a una segunda vez si el sistema operativo elige la cancelación del comando que se está ejecutando actualmente. (Sin embargo, es posible que se llame inicialmente al método de control para un comando mientras se establece el campo cancel).

4.4 Tabla ACPI estática TPM2

Una tabla ACPI denominada "TPM2" enumerada en la tabla ACPI "RSDT" describe la interfaz de hardware TPM 2.0 de la plataforma. El controlador TPM 2.0 de Windows usa esta tabla para determinar la manera en que se comunica con el dispositivo TPM 2.0. Los parámetros de la tabla ACPI necesarias para admitir esta interfaz se muestran en la tabla siguiente.

Tabla 3: Diseño de tabla ACPI de TPM2

Campo

Longitud de bytes

Desplazamiento de byte

Descripción

Encabezado

Signature

4

00h

'TPM2'. Firma para la tabla de interfaz de hardware del dispositivo TPM 2.0

Length

4

04h

Longitud de la tabla, en bytes, incluido el encabezado, empezando por el desplazamiento 0. Este campo se usa para registrar el tamaño de toda la tabla.

Revisión

1

08h

Revisión de esta tabla, incluidos los datos y la estructura a los que hace referencia. Si alguna estructura a la que hace referencia este modificado (por ejemplo, Área de control), esta revisión DEBE cambiar. Valor 03h.

Suma de comprobación

1

09h

Toda la tabla, incluido el campo de suma de comprobación, DEBE agregar a cero para que se considere válida.

Id. de OEM

6

0Ah

Id. de OEM por especificación ACPI. Cadena proporcionada por OEM que identifica el OEM (puede ser el proveedor del conjunto de chips).

Id. de tabla de OEM

8

10h

El id. de tabla de OEM es el identificador del modelo de fabricante (asignado por el OEM identificado por "ID de OEM"; puede ser el proveedor del conjunto de chips).

Revisión de OEM

4

18h

Revisión de OEM para el identificador de tabla de OEM especificado. Por ACPI, "[un] número de revisión proporcionado por OEM. Se supone que los números más grandes son revisiones más recientes".

Id. de creador

4

1Ch

Identificador de proveedor de la utilidad que creó la tabla. Para las tablas que contienen bloques de definición, este es el identificador del compilador de ASL.

Revisión de Creator

4

20h

Revisión de la utilidad que creó la tabla. Para las tablas que contienen bloques de definición, esta es la revisión del compilador de ASL.

Marcas

4

24h

Reservado

DEBE ser siempre cero.

Dirección del área de control

8

28h

Dirección física del área de control. Puede estar en la memoria del dispositivo TPM 2.0 o en memoria reservada por el sistema durante el arranque. El controlador TPM 2.0 conserva el conocimiento de esta dirección a lo largo de un ciclo de arranque, incluida la hibernación y los ciclos de reanudación. Si el sistema no usa el área de control, este valor DEBE ser todos ceros.

Método Start

4

30h

El selector de métodos de inicio determina qué mecanismo usa el controlador de Windows TPM 2.0 para comunicar los comandos de TPM 2.0 al dispositivo y notificar al dispositivo TPM 2.0 que un comando está disponible para su procesamiento. Este campo puede contener uno de los siguientes valores:

Valor

Descripción

0

Reservado.

1

Reservado (específico del proveedor)

2

Usa el método Start ACPI.

3-5

6

Reservado (específico del proveedor)

Reservado para la interfaz de E/S asignada por memoria (TIS 1.2+Cancelar). Esta opción no es Windows 8 compatible con la certificación de hardware. El uso de esta opción requiere una solicitud de contingencia de WHLK Windows 8 aprobada para la certificación del logotipo. Póngase en contacto con Microsoft para obtener más información.

7

8

Usa la interfaz del búfer de respuesta de comandos.

Usa la interfaz del búfer de respuesta de comandos con el método Start ACPI.

Reservado.

 

Parámetros específicos de la plataforma

variable

34h

El contenido de los parámetros específicos de la plataforma viene determinado por el mecanismo de inicio utilizado por la interfaz de dispositivo TPM 2.0 de este sistema. Este campo contiene valores que se pueden usar para iniciar el procesamiento de comandos. Esta información puede ser específica del proveedor. Para los valores de Start Method de 2 o 6, el campo no se usa y la longitud de bytes es cero.

4.4.1 Contenido del área de control

La estructura Área de control contiene campos de estado, así como otros bits o campos de control y una o varias direcciones. El área de control contiene la dirección física del búfer de comandos y la dirección física del búfer de respuesta.

No todas las implementaciones de interfaz de TPM 2.0 usan el área de control; por ejemplo, un valor del método Start de 6 no usa el área de control y la información de esta sección no es aplicable a la plataforma.

El área de control DEBE estar en la memoria ACPI AddressRangeReserved.

La estructura Área de control se muestra en la tabla siguiente y, a menos que se especifique lo contrario, todos los accesos al área de control se realizan en el formato little endian.

Tabla 4: Diseño del área de control

Campo

Longitud de bytes

Offset

Descripción

Campos de estado

Campos de estado de TPM 2.0

Reservado

4

00h

Reservado. (DEBE ser cero).

Error

4

04h

SET by the TPM 2.0 to indicate an error condition

Cancelar

4

08h

SET by the DRIVER to abort command processing

Inicio

4

0Ch

SET by the DRIVER to indicate that a command is available for processing.

Control de interrupción

8

10h

Reservado. (DEBE ser cero).

Tamaño del comando

4

18h

Tamaño del búfer de comandos

Comando

8

1Ch

Este campo contiene la dirección física del búfer de comandos. Tenga en cuenta que el búfer de comandos real (no la dirección física del búfer de comandos) está en formato big-endian según lo exige TCG.

Tamaño de la respuesta

4

24h

Tamaño del búfer de respuesta

Response

8

28h

Este campo contiene la dirección física del búfer de respuesta. Tenga en cuenta que el búfer de respuesta real (no la dirección física del búfer de respuesta) está en formato big-endian según lo exige TCG.

El controlador TPM 2.0 lee la siguiente información una vez durante la inicialización del sistema operativo:

  1. Dirección física del área de control

  2. Tamaño del búfer de comandos

  3. Ubicación física del búfer de comandos

  4. Tamaño del búfer de respuesta

  5. Ubicación física del búfer de respuesta

En el caso de los sistemas que usan el área de control (es decir, el valor de Start Method no es igual a 6) y admite la hibernación y reanudación, los cinco valores anteriores DEBEN permanecer constantes en los ciclos de hibernación y reanudación.

4.4.1.1 Error

El dispositivo TPM 2.0 puede establecer este estado. Solo puede escribir este estado cuando Start es SET. Inmediatamente después de que el dispositivo TPM 2.0 sete este estado, CLEARs el valor start. El controlador TPM 2.0 de Windows no leerá el campo Error a menos que el campo Inicio sea CLEAR.

Un valor SET del campo Error se trata como un error genérico del dispositivo TPM 2.0 o su interfaz de hardware. Cualquier valor SET da como resultado la cancelación del comando actual. El comando DEBE revertirse, por lo que el dispositivo TPM 2.0 se deja en un estado coherente.

Para un dispositivo con un método Start ACPI, este campo solo se debe usar para los errores para los que no se puede proporcionar un código de respuesta. Un ejemplo es: el búfer de respuesta no está en memoria física. El controlador de Windows TPM 2.0 puede dejar de usar el dispositivo TPM 2.0 cuando este campo es SET.

El valor inicial de este campo después de ExitBootServices DEBE reflejar si el dispositivo funciona o no.

4.4.1.2 Cancelar

El controlador TPM 2.0 de Windows puede establecer este campo para solicitar que se finalice el procesamiento del dispositivo TPM 2.0 del comando actual. El controlador de Windows TPM 2.0 no invoca el método Start para iniciar el procesamiento de la solicitud de cancelación.

Cuando Cancel es SET por el controlador de Windows TPM 2.0 y el dispositivo TPM 2.0 está procesando un comando, el dispositivo TPM 2.0 dejará de procesar el comando actual en el punto más conveniente. Para la mayoría de los comandos, se espera que el dispositivo TPM 2.0 complete el comando y proporcione una respuesta normal. En el caso de los comandos de larga duración (por ejemplo, generación de claves RSA), el dispositivo TPM 2.0 puede salir con TPM_RC_CANCELLED. El dispositivo TPM 2.0 tiene que completar o cancelar el comando en un plazo de 90 segundos. (Por lo general, la mayoría de los comandos de TPM 2.0 deben completarse en menos de 500 ms, excepto los comandos de generación de claves RSA que pueden tardar más tiempo y la cancelación de comandos debe producirse en un plazo de 200 ms)

El controlador TPM 2.0 de Windows puede borrar este valor cuando el campo Inicio es CLEAR. El valor inicial de este campo después de ExitBootServices DEBE ser CLEAR.

4.4.1.3 Inicio

El controlador de Windows TPM 2.0 puede establecer este estado para indicar que se ha colocado un nuevo comando en el búfer de comandos. El controlador TPM 2.0 de Windows puede invocar el método Start para iniciar el procesamiento del comando. El dispositivo TPM 2.0 borrará este estado cuando finalice el procesamiento de un comando.

El controlador TPM 2.0 de Windows puede borrar este estado cuando se produjo un error en la invocación del método Start.

El valor inicial de este campo después de ExitBootServices DEBE ser CLEAR.

Comando 4.4.1.4

Esta es la dirección física a la que el controlador de Windows TPM 2.0 escribirá el comando que se va a ejecutar. El controlador de Windows TPM 2.0 nunca escribirá un comando mayor que "Tamaño de comando".

El controlador TPM 2.0 de Windows NO DEBE escribir en este área de memoria a menos que el campo Inicio sea CLEAR. Tenga en cuenta que la dirección se especifica en formato little-endian en el área de control, pero el búfer de comandos real está en formato big-endian según lo exige TCG.

Respuesta 4.4.1.5

Esta es la dirección física desde la que el controlador de Windows TPM 2.0 leerá las respuestas de comandos. El controlador de Windows TPM 2.0 nunca leerá una respuesta mayor que "Tamaño de respuesta".

El controlador de Windows TPM 2.0 solo leerá una respuesta después de cambiar el campo Inicio de SET a CLEAR y Error es CLEAR. Tenga en cuenta que la dirección se especifica en formato little-endian en el área de control, pero el búfer de respuesta real está en formato big-endian según lo exige TCG.

4.5 Definición de interfaz de área de control

En el caso de las plataformas de hardware que usan el área de control como interfaz TPM 2.0, esta sección y la información de la sección 4.4 describe la interacción del controlador TPM 2.0 con el hardware. Un ejemplo de un sistema que usa el área de control es un sistema con un valor de Método de inicio de 2 en la tabla TPM2.

4.5.1 Combinaciones de estado

En la tabla 5 se describe el comportamiento esperado de los cambios realizados por el controlador TPM 2.0 de Windows. Solo se permiten algunas combinaciones. Solo se documentan las combinaciones y los cambios permitidos. Todas las demás combinaciones no son válidas. Los cambios de campo sin acción por parte del controlador TPM 2.0 de Windows significan que el dispositivo TPM 2.0 o el método Start ACPI cambiaron los campos.

Los estados marcados con '0' indican que este campo es CLEAR. Los estados marcados con '1' indican que este campo es SET. Los estados marcados con '?' indican que el valor de este campo puede ser CLEAR o SET. Los campos de estado se abrevian con: "ERR" - Error, "CCL" - Cancel y "STR" - Start. Un campo se puede escribir mediante el controlador de Windows TPM 2.0 o la interfaz del dispositivo TPM 2.0, que se detalla en la columna de acción.

|---

Estado actual

---|

|---

Campo escrito

---|

|---

Siguiente estado

---|

Acción realizada por la interfaz de dispositivo TPM 2.0

#

ERR

CCL

STR

ERR

CCL

STR

ERR

CCL

STR

1

0

1

0

-

0

-

0

0

0

CleARs del controlador TPM 2.0 de Windows el valor Cancelar para preparar el área de control para el siguiente comando. El controlador TPM 2.0 de Windows puede borrar el valor Cancelar solo cuando START es CLEAR.

(El dispositivo TPM 2.0 NO DEBE escribir en el campo Cancelar).

2

0

0

0

-

-

1

0

0

1

El controlador TPM 2.0 de Windows ESTABLECE el valor De inicio para indicar que un comando está presente en el área Comando.

El controlador TPM 2.0 de Windows puede llamar al método ACPI Start para iniciar la ejecución del comando. Tras la finalización del método ACPI Start, el dispositivo TPM 2.0 DEBE completar los comandos y BORRAR el campo Inicio en un plazo de 90 segundos. Si se supera el límite de tiempo, el controlador TPM 2.0 de Windows puede suponer que el dispositivo TPM 2.0 está bloqueado.

3

0

?

1

-

-

0

0

?

0

El dispositivo TPM 2.0 CLEARs el campo Inicio cuando termina de procesar el comando o cancela el comando.

Si se canceló el comando, se coloca una respuesta con el código de retorno TPM_RC_CANCELLED en el búfer de respuesta y Start es CLEARed.

El controlador TPM 2.0 de Windows puede leer el búfer de respuesta mientras el campo Inicio es CLEAR. El controlador TPM 2.0 de Windows NO DEBE leer el búfer de respuesta mientras el campo Inicio es SET.

4

0

0

1

-

1

-

0

1

1

El controlador TPM 2.0 windows TPM SET Cancel para indicar el dispositivo TPM 2.0 para cancelar el comando actual. Por lo general, los comandos de larga duración deben cancelarse en el siguiente punto conveniente. Es posible que se completen comandos de ejecución breve. En concreto, el dispositivo TPM 2.0 DEBE BORRAR el campo Inicio en 90 segundos después de establecer el campo Cancelar. (Un buen destino de rendimiento es de 200 ms en lugar de 90 segundos). Nota: Es posible que se establezca el campo Cancelar cuando se llame al método ACPI Start porque un subproceso dentro del sistema operativo puede establecer el campo Cancelar antes de que otro subproceso invoque el método de inicio ACPI.

5

0

?

1

1

-

-

1

?

1

El dispositivo TPM 2.0 indica una condición de error en el dispositivo. El estado del dispositivo TPM 2.0 es como si la ejecución del comando nunca se iniciara. El controlador de Windows TPM 2.0 trata este valor como un error genérico del dispositivo TPM 2.0 y cancela el procesamiento del comando.

6

1

?

1

-

-

0

1

?

0

El CLEARs del dispositivo TPM 2.0 es el campo Inicio inmediatamente después de SETting el campo Error.

El controlador TPM 2.0 de Windows solo inspecciona el campo Error cuando el campo Inicio es CLEAR o si la ejecución del comando o la cancelación no se producen dentro del período de tiempo necesario. El controlador TPM 2.0 de Windows puede dejar de usar el dispositivo TPM 2.0 cuando el campo Error es SET.

Diagrama de estado 4.5.2 al usar el método ACPI Start

Este diagrama de estado solo tiene fines informativos. La descripción normativa del comportamiento es el texto de las secciones anteriores. Si faltan transiciones de estado ambiguas o faltan, consulte el texto anterior.

Estado del dispositivo tpm 2.0 al usar el método acpi start

Figura 1: Estados del dispositivo TPM 2.0 al usar el método ACPI Start

Nota

(a) Tenga en cuenta que varios subprocesos simultáneos pueden interactuar con el área de control simultáneamente. Por ejemplo: un subproceso podría iniciar un comando estableciendo el campo Inicio y emitiendo el método Start. Otro subproceso puede establecer el campo Cancelar en paralelo. Por lo tanto, la posibilidad de establecer el campo Cancelar después de establecer el campo Inicio, pero antes de emitir el método Start. (b) Un controlador TPM 2.0 de Windows puede reaccionar a condiciones de error de forma diferente a las que se muestran. Por ejemplo, podría pasar a un estado de error cuando se alcanza un tiempo de espera.

Diagrama de estado 4.5.3 sin un método ACPI Start

Este diagrama de estado solo tiene fines informativos. La descripción normativa del comportamiento es el texto de las secciones anteriores. Si faltan transiciones de estado o son ambiguas, consulte el texto anterior.

Estado del dispositivo tpm 2.0 sin el método acpi start

Figura 2: Estados de dispositivo TPM 2.0 sin el método ACPI Start

4.6 Interfaz de E/S asignada de memoria

En el caso de las plataformas de hardware que usan la interfaz de E/S asignada a memoria, esta sección y la información de la sección 4.4 describe la interacción del controlador TPM 2.0 con el hardware. Un ejemplo de un sistema que usa la interfaz de E/S asignada a memoria es un sistema con un valor start Method de 6 en la tabla TPM2.

4.6.1 Requisitos de especificación de la interfaz TPM de TPM de TCG

El sistema DEBE cumplir con los requisitos de interfaz de hardware de TPM 1.2 en [TCG12] para las secciones siguientes:

Sección 9.1: Niveles de localidad de TPM

Sección 9.2: Usos de localidad

Sección 9.3: Uso de localidades por registro

Sección 10: Espacio de registro de TPM

Sección 11: Interacción y flujos del sistema

Excepto: Todo el modo de error de la sección 11.2.4

Excepto la sección 11.2.5: Duración del comando, elemento normativo 2

Excepto todas las secciones 11.2.6: Tiempos de espera

Excepto todas las secciones 11.2.8: Prueba automática e Inicialización de la plataforma temprana

Excepto todas las secciones 11.2.9: Tamaño del búfer de entrada

Excepto la sección 11.2.10: Errores, elementos normativos 2c y 3.

Sección 13: Protocolo de hardware de TPM

Para futuras especificaciones de borrador de [TCG12], póngase en contacto con Microsoft.

4.6.2 Compatibilidad con la cancelación de un comando

Windows requiere que el dispositivo TPM 2.0 permita la cancelación de un comando TPM 2.0 mediante la interfaz de E/S asignada a memoria mostrando el comportamiento descrito a continuación.

El bit 24 sin usar anterior del registro STS se define como solo escritura y se conoce como commandCancel.

Una escritura de '1' en commandCancel durante la fase de ejecución del comando PUEDE cancelar el comando que se está ejecutando actualmente y se debe devolver una respuesta. La respuesta indica si se canceló el comando (no se ha cambiado el estado de TPM 2.0, pero se devuelve un código de respuesta de cancelación TPM_RC_CANCELLED) o completado (se devuelve una respuesta TPM 2.0 normal que indica el resultado del comando). Escribe en el registro commandCancel cuando el TPM no está en el estado de ejecución del comando DEBE omitirse.

4.6.3 Requisitos adicionales

  1. Todos los comandos de TPM DEBEN completarse en un máximo de 90 segundos.

  2. Si el controlador TPM 2.0 solicita cancelar un comando, debe completarse o cancelarse en un plazo de 90 segundos.

  3. Se deben implementar los siguientes valores TIMEOUT: TIMEOUT_A = 1 segundo, TIMEOUT_B = 2 segundos, TIMEOUT_C = 1 segundo, TIMEOUT_D = 1 segundo.

  4. El tamaño mínimo del búfer de entrada DEBE ser 0x500 (o mayor).

5.0 Referencias

[ACPI09]

"Advanced Configuration and Power Interface Specification", versión 4.0, 16 de junio de 2009.

[TCG08]

Trusted Computing Group, "TCG Platform Reset Attack Mitigation Specification", versión 1.0, 15 de mayo de 2008.

[TCG11]

Trusted Computing Group, "TCG Physical Presence Interface Specification", versión 1.20, 10 de febrero de 2011.

[TCG12]

Grupo de computación de confianza, "Pc Client Work Group PC Client Specific TPM Interface Specification (TIS) Version 1.21, Revision 1.00.