Pregunta:
¿Cómo realiza el TPM las mediciones de integridad en un sistema?
user1049697
2013-07-22 16:42:44 UTC
view on stackexchange narkive permalink

Estoy tratando de averiguar cómo el TPM realiza una medición de integridad en un sistema. Está bien documentado en la especificación TPM cómo sella los datos que ha medido en los PCR y cómo se actualiza. Pero lo que no puedo encontrar explicado es cómo el TPM realmente realiza las mediciones de integridad que está sellando en primer lugar. Para saber si el sistema está en un estado determinado o no hay que medirlo, pero ¿cómo lo hace? ¿Y qué es lo que mide realmente? La mayoría de los artículos parecen pasar por alto esto, y tengo la sensación de que los datos listos para el almacenamiento en PCR aparecen de la nada.

Tres respuestas:
northox
2013-10-24 00:30:01 UTC
view on stackexchange narkive permalink

Básicamente, hay dos formas de hacer esto;

  1. SRTM (Raíz de confianza estática para mediciones) y
  2. DRTM (Raíz de confianza dinámica para mediciones).

SRTM tiene lugar al arrancar el sistema. Lo primero que se ejecuta en el arranque se llama Core Root of Trust for Measurements (CRTM), también conocido como el bloque de arranque del BIOS, medirá el BIOS y enviará el valor ( hash) al TPM en una ubicación llamada Plataforma. Registro de configuraciones (PCR) 0 antes de ejecutarlo. Luego, la BIOS mide lo siguiente en la cadena de inicio y, nuevamente, almacenará el valor en un PCR del TPM. Este proceso se ejecuta para cada componente en la secuencia de arranque (ROM opcional PCI, cargador de arranque, etc.).

TrustedGrub es un cargador de arranque compatible con TPM que enviará las medidas adecuadas a el TPM. Se usa para continuar la cadena de medidas (SRTM) desde el BIOS hasta el Kernel.

DRTM es muy diferente ya que algo sucede mientras el sistema está funcionando. La implementación de Intel se llama Trusted Execution Technology ( TXT), mientras que AMD usa el nombre Secure Virtual Machine (SVM). El objetivo de DRTM es crear un entorno confiable a partir de un estado que no es de confianza. Técnicamente, crea un estado seguro / limpio e informará (proporcionará medición - hashes en PCRs) sobre un fragmento de código que alguien quiera ejecutar (también conocido como Entorno Lanzado Medido - MLE). Por lo general, MLE es un sistema operativo (kernel, espacio de usuario, etc.).

Sin entrar en detalles, el DRTM de Intel funciona llamando a un conjunto de nuevas instrucciones de CPU (SMX) que le dice a la CPU y al chipset que realicen un conjunto muy específico de tareas (GETSEC) que garantizan que no se pueda ejecutar nada más que un código especial , es decir, Módulo de código autenticado SINIT ( ACM). Esta parte incluye deshabilitar todas las CPU menos una y bloquear / detener todo lo que se está ejecutando actualmente: todos los demás procesos, interrupciones y E / S (a través de IOMMU, por ejemplo, para evitar ataques DMA). Luego, toda la CPU se vuelve a unir en un estado limpio; todo lo que se haya ejecutado antes se descarta. En este punto se valida la firma de este código especial (SINIT ACM) y se envía su identidad (medición hash) al TPM en el PCR 17. Posteriormente, la ejecución se pasa al ACM que luego mide el MLE y envía la medición a el TPM en el PCR 18. Finalmente, la ejecución se pasa al MLE.

Tboot es una herramienta creada por Intel para hacer precisamente eso (DRTM) y una alternativa a TrustedGrub ( SRTM).


Aquí hay un ejemplo de cómo se ven los valores de PCR con SRTM (BIOS con reconocimiento de TPM) pero sin un cargador de arranque con reconocimiento de TPM (por ejemplo, TrustedGrub) y sin DRTM (por ejemplo, Tboot):

  # cat / sys / devices / pnp0 / 00: 09 / pcrs PCR-00: A8 5A 84 B7 38 FC C0 CF 3A 44 7A 5A A7 03 83 0B BE E7 BD D9 PCR-01: 11 40 C1 7D 0D 25 51 9E 28 53 A5 22 B7 1F 12 24 47 91 15 CB PCR-02: A3 82 9A 64 61 85 2C C1 ​​43 ED 75 83 48 35 90 4F 07 A9 D5 2C PCR-03: B2 A8 3B 0E BF 2F 83 78 29 9A 5B 2B DF C3 1E A9 55 AD 72 36 PCR-04: 78 93 CF 58 0E E1 A3 8F DA 6F E0 3B C9 53 76 28 12 93 EF 82PCR-05: 72 A7 A9 6C 96 39 38 52 D5 9B D9 12 39 75 86 44 3E 20 10 2F PCR-06: 92 20 EB AC 21 CE BA 8A C0 AB 92 0E D0 27 E4 F8 91 C9 03 EE PCR- 07: B2 A8 3B 04 BF 2F 83 74 29 9A 5B 4B DF C3 1E A9 55 AD 72 36 PCR-08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-09: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
PCR-11: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-12: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR- 13: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-14: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-16: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PCR-17: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-18: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-19: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-21: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-22: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF PCR-23: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  

a medida que la soldadura gellwch, PCR 0-7 están llenos ond del 8 al 15 de PCR está vacío - que 'se ponen a 0 Todavía. Desde el ya no haya sido DRTM un usado, PCR 17-22 están llenos de 1s (f).


La seguridad de estos mecanismos se basa en los valores PCRs hecho de tatuaje no pueden qué conjunto (o forjado) ond solamente extendida ( TPM_Extend () ). Este medio de cada vez que un centavos inferior de medición techo y TPM, el hash de la concatenación del valor de un cyfredol PCR y la nueva sub medición almacenados (es decir, nuevo_valor = Hash (old_value || new_measurement) ). Obviamente, hay una lata de techo A partir de esto:

  • Con SRTM, sólo el CRTM puede restablecer los ITP 0 a 15 para arrancar
  • Con DRTM, solamente las instrucciones TXT puede restablecer PCRs de 17 a 20 (Cuando en la localidad 4 (SMX OPERACIONES)). Ver este respuesta , este presentación sobre el especificaciones para los detalles.

Es importante comprender que, si bien el TPM recopila esas mediciones, no realiza ninguna acción sobre ellas ; en realidad, no puede. El valor de esas medidas solo se puede ver con las operaciones seal () / unseal () / quote () : Ahora que tenemos medidas en los PCR de TPM, podemos usar la operación unseal () para revelar un secreto al que solo se puede acceder si los valores de PCRs correctos están en el TPM; se usan como claves de cifrado. Básicamente, esto significa que solo se puede acceder a un secreto si se cargó el entorno adecuado a través de SRTM (BIOS, cargador de arranque, kernel, etc.) o DRTM (SINIT y MLE (kernel, etc.)). Consulte esta respuesta para obtener más información.

Para obtener más información, le sugiero que lea este 101 y luego este documento.

¿Qué impide que se modifique el CRTM en el bloque de arranque del BIOS para que envíe el hash esperado al TPM, sin estar realmente en un estado limpio?¿El CRTM es de solo lectura impuesto por hardware o firmado por una clave que la CPU verifica automáticamente, similar a BootGuard?
Bastante.Debería hacer de esto una pregunta separada.
@northox Intel TXT utiliza SRTM y DRTM.Del [informe técnico] de Intel (https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/trusted-execution-technology-security-paper.pdf): "...es esencial traer al TCB algunas partes del BIOS temprano que inicializan la estructura del sistema y los componentes del BIOS en tiempo de ejecución ... En consecuencia, debido a que una implementación D-RTM pura excluye estos elementos, una implementación D-RTM verdadera con suTCB más pequeño se queda corto. Para crear una implementación más adecuada para servidores, Intel TXT toma características clave de ambos enfoques "
rosso
2013-07-31 12:49:41 UTC
view on stackexchange narkive permalink

La especificación principal de TPM está destinada a ser independiente de la plataforma. Es por eso que no se incluyen detalles sobre lo que realmente se mide durante el inicio, porque obviamente los componentes difieren de una plataforma a otra. Si está interesado en lo que se mide durante el arranque de una PC, debe consultar la sección 1.3 (Descripción general del proceso de medición) de la Especificación de implementación específica del cliente TCG PC para BIOS convencional.

Los detalles sobre cómo se procesan y almacenan las mediciones en los PCR se pueden encontrar en la Especificación principal de TPM. La parte 1, sección 4.4 (Registro de configuración de plataforma (PCR)) podría ser un buen lugar para comenzar.

También recomendaría echar un vistazo a la descripción general de la arquitectura TCG para tener una idea general, sin embargo, esto no está directamente relacionado con su pregunta.

Wilbur Whateley
2015-12-09 01:32:29 UTC
view on stackexchange narkive permalink

La respuesta más directa a su pregunta es que el TPM no realiza las mediciones . Las mediciones y los valores de PCR son propiedad exclusiva de la plataforma en la que está instalado el TPM.

Las otras respuestas son excelentes para describir este proceso para algunos sistemas bien establecidos, pero en resumen, el TPM solo almacena / actualiza Hash SHA de 160 bits y sella claves contra esos hash. Es ciego a lo que quieren decir, hasta donde yo sé.

Aquí hay una gran presentación sobre este tema: http://opensecuritytraining.info/IntroToTrustedComputing.html

Obtenga las diapositivas allí y vea las primeras diapositivas en Day2-1-auth-and-att.pdf .



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...