Desenlazar en jerarquía de claves

0

Digamos que tenemos una jerarquía de claves de la siguiente manera:

SRK -> SK1 -> SK2 -> BK

Con la parte pública de BK, descifro una clave AES simétrica. Para un descifrado adecuado, se necesita la clave privada de SK2 en el TPM. Para obtener la clave privada SK2, se necesita la clave privada de SK1 y para SK1 se necesita la clave privada de SRK.

Tspi_Key_LoadKey() se usa para cargar una clave en el TPM y toma la clave en sí misma y su principal como sus argumentos.

Digamos que cargaría BK y su SK2 principal en el TPM. El TPM no podría descifrar BK porque para eso se necesita la clave privada de SK2. SK2 solo puede ser descifrado si SK1 es conocido por el TPM que no lo es.

¿Cuál es el procedimiento para este ejemplo para descifrar BK en el TPM?

Idea 1:

  1. Cargue SK1 con SRK principal en TPM (SK1 se puede descifrar con SRK)
  2. Cargue SK2 con el padre SK1 en TPM (SK2 se puede descifrar con SK1)
  3. (opcional) Descargue SK1 porque ya no es necesario
  4. Cargue BK con el padre SK2 en TPM (BK se puede descifrar con SK2)
  5. (opcional) Descargue SK2 porque ya no es necesario

Idea 2 (toda la cadena debe estar en TPM a la vez):

  1. Cargue BK con SK2 principal en TPM
  2. Cargue SK2 con SK1 principal en TPM
  3. Cargue SK1 con SRK principal en TPM
pregunta fliX 06.12.2015 - 19:01
fuente

1 respuesta

0

Escribí un código para obtener una respuesta a mi pregunta. La lógica general del TPM es tan simple como sigue:

  • La clave principal siempre debe cargarse en el TPM para poder cargar una clave secundaria.

Eso significa que la Idea 1 es completamente válida (incluidos los pasos opcionales) y la Idea 2 no lo es. BK con SK2 principal no se puede cargar porque SK2 no se ha cargado previamente.

Básicamente, el TPM solo necesita 3 ranuras para crear un sinfín de jerarquías clave. En general, un TPM aún posee más de 3 ranuras (por ejemplo, mi TPM tiene 32 ranuras).

    
respondido por el fliX 09.12.2015 - 16:19
fuente

Lea otras preguntas en las etiquetas