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:
- Cargue SK1 con SRK principal en TPM (SK1 se puede descifrar con SRK)
- Cargue SK2 con el padre SK1 en TPM (SK2 se puede descifrar con SK1)
- (opcional) Descargue SK1 porque ya no es necesario
- Cargue BK con el padre SK2 en TPM (BK se puede descifrar con SK2)
- (opcional) Descargue SK2 porque ya no es necesario
Idea 2 (toda la cadena debe estar en TPM a la vez):
- Cargue BK con SK2 principal en TPM
- Cargue SK2 con SK1 principal en TPM
- Cargue SK1 con SRK principal en TPM