[tc] info PCR tpm
Salvatore Caratozzolo
s.caratozzolo2 a campus.unimib.it
Gio 8 Nov 2007 12:30:44 CET
>
>> 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).
uffa...continuo a non capire!di sicuro mi sfugge qualcosa
che si dà per scontato!
allora diamo un esempio:
il crtm all'avvio estende il pcr0 = sha1( 0000 | digest1)
= digest_n1 poi il SO estende nuovamente il pcr0 =
sha1(digest_n1 | digest2) = digest_n2, riavvio la macchina
e al bootstrap ho che il crtm estende nuovamente il pcr0 =
sha1(digest_n2 | digest3) = digest_n3.
ora: il CRTM non ha bisogno di fare confronti perchè la
sua memoria non puo' essere toccata! quindi estende i pcr
e la cosa finisce là!
quando invece il crtm misura lo stadio 1 del Trusted grub
la cosa non si fa differente? perchè è il crtm che misura
lo stadio1 giusto?
esempio come prima:
il crtm all'avvio estende il pcr1 = sha1( 0000 |
digest_st1) = digest_n_st1 poi il SO estende nuovamente il
pcr1 = sha1(digest_n_st1 | digest_st2) = digest_n_st2,
riavvio la macchina e al bootstrap ho che il crtm estende
nuovamente il pcr1 = sha1(digest_n_st2 | digest_st3) =
digest_n_st3.
se il codice dello stadio1 è stato modificato...che fa??
cioè..come se ne accorge?
stessa cosa quando lo stadio1 deve misurare lo stadio
2..una volta che ha esteso il pcr2 e il SO lo ha
modificato...come fa ad accorgersi che il codice dello
stadio2 è lo stesso del bootstrap precedente?
> 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.
quindi quando eseguo il seal devo MEMORIZZARE e NON
ESTENDERE nel pcr10, ad esempio, che la macchina sta
eseguendo il seal con il kernel 2.6.13 , nel pcr11 che
l'utente è Giacomino e nel pcr12 che il prog utilizzato
per aprirlo è Kate! oppure si salvano questi tre dati
insieme nello stesso pcr10?
ma come vengono scritti questi dati? in codice binario?
con che comando? e poi perchè salvare nei PCR se questi
possono essere ESTESI da chiunque senza che ne prenda
possesso!(questo mi è stato detto dal tipo dell'Enforcer!)
e quindi non permettere all'utente vero di decifrarlo?
perchè se è giusto il ragionamento l'attaccante se vede
che non riesce ad accedere al dato potrebbe vendicarsi e
impedire anche a te di eseguire l'unseal!
Maggiori informazioni sulla lista
tc