Diciamo che abbiamo una gerarchia di chiavi come segue:
SRK -> SK1 -> SK2 -> BK
Con la parte pubblica di BK, decritto una chiave AES simmetrica. Per una decrittazione corretta, la chiave privata di SK2 è necessaria nel TPM. Per ottenere la chiave privata SK2 è necessaria la chiave privata di SK1 e per SK1 è necessaria la chiave privata di SRK.
Tspi_Key_LoadKey()
è usato per caricare una chiave nel TPM e prende la chiave stessa e il suo genitore come argomenti.
Diciamo che caricare BK e il suo genitore SK2 nel TPM. Il TPM non sarebbe in grado di decodificare BK perché per questo è necessaria la chiave privata di SK2. SK2 può essere decodificato solo se SK1 è noto al TPM che non lo è.
In che modo la procedura per questo esempio decrittografa BK nel TPM?
Idea 1:
- Carica SK1 con SRK principale in TPM (SK1 può essere decrittografato con SRK)
- Carica SK2 con SK1 principale in TPM (SK2 può essere decodificato con SK1)
- (facoltativo) Scarica SK1 perché non è più necessario
- Carica BK con SK2 principale in TPM (BK può essere decodificato con SK2)
- (facoltativo) Scarica SK2 perché non è più necessario
Idea 2 (tutta la catena deve essere in TPM in una volta):
- Carica BK con l'SK2 principale in TPM
- Carica SK2 con genitore SK1 in TPM
- Carica SK1 con SRK principale in TPM