[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