[tc] info PCR tpm
Davide Vernizzi
davide.vernizzi a gmail.com
Gio 8 Nov 2007 11:15:52 CET
On Nov 8, 2007 9:38 AM, Salvatore Caratozzolo
<s.caratozzolo2 a campus.unimib.it> wrote:
> piu domande mi faccio e piu mi accorgo di non sapere!!
>
> allora io ho capito che i PCR contengono solo i digest dei
> file e che possono solo essere estesi, cioè
> PCR_X=SHA1(DIGEST_PCR_X | NEW_DIGEST),
OK
> e che la estensione
> si fa per evitare che un attaccante possa leggere i
> digest!
No, l'estensione serve per fare in modo che una scrittura su un pcr
tenga comunque traccia del valore precedente. Se così non fosse,
sarebbe praticamente impossibile mantenere la catena di trust
(immagina che il crtm metta la misura del boot loader nei pcr, poi il
sistema operativo riscrive sopra alla misura fatta dal crtm un valore
diverso... se non ci fosse l'estensione, ma solo la scrittura, un
sistema operativo untrusted, potrebbe scrivere i valori di uno
trusted).
> infatti sul pcr si legge il digest della
> concatenzazione di due digest messi insieme! il che , se
> non si sa cosa ci fosse sopra prima, rende inutile un
> attacco!
> ora: il comando "seal" cifra un file memorizzando lo stato
> di alcuni PCR e memorizzando la chiave privata in una zona
> di memoria NON VOLATILE (come si chiama questa a
> proposito?), giusto?
Quasi giusto.. il comando seal cifra qualcosa e protegge la chiave di
cifratura nella memoria non volatile. In più fa in modo che la chiave
di cifratura sia accessibile solo se i pcr si trovano nelle stesse
condizioni in cui erano quando è stato fatto il sealing.
> e se voglio decifrarlo i PCR devono trovarsi allo stesso
> stato!
Esatto
> ma allora se i PCR non sono mai uguali (ho provato ad
> estendere sullo stesso PCR il digest dello stesso file e
> cambia sempre il digest salvato, come è giusto che sia)
> come fa il TPM ad eseguire l' "unseal" ?
Qui c'è un po' di confusione. Per fare il sealing di un file tu non
devi mettere il digest del file dentro al pcr: dentro ai pcr ci deve
stare lo stato del sistema. Quello che devi fare è cifrare il file con
una chiave e poi fare il sealing di quella chiave. D'ora in poi la
chiave sarà accessibile solo se il sistema è in quello stato.
È normale che estendere un pcr n volte con lo stesso file dia
risultati sempre diversi (proprio per il discorso sull'estensione che
facevamo prima).
L'unseal è fatto sullo stato del sistema.
--
Davide
Maggiori informazioni sulla lista
tc