Quando si utilizza un TPM per fornire misure di integrità per un sistema tramite SRTM , la base di calcolo attendibile viene ridotta a solo il TPM e CRTM . Il CRTM è un componente del BIOS (in particolare il bootblock) che viene eseguito per primo e consente al TPM di eseguire l'hash dei contenuti rimanenti del BIOS, in modo che anche il firmware compromesso non possa rompere la catena di attendibilità. È inteso per essere di sola lettura e viene memorizzato insieme al BIOS. Se non è di sola lettura, non può fornire integrità.
Tipicamente, la catena di attendibilità va come tale (dove CRTM e TPM sono attendibili):
-
Il CRTM invia l'hash del BIOS stesso al TPM.
-
Il BIOS invia l'hash dell'opzione ROM, MBR e bootloader al TPM.
-
Il bootloader invia un hash del kernel e i parametri di avvio al TPM.
-
Il kernel viene eseguito e verifica l'integrità degli eseguibili dello spazio utente.
Ogni fase precedente verifica le fasi successive, fino allo spazio utente. Quando il kernel è attivo, il TPM "annulla" solo se stesso e rivela un valore segreto se tutti gli hash che ha ottenuto finora sono corretti. Un sistema compromesso non sarà in grado di annullare l'apertura del TPM e il valore segreto non verrà rivelato. Il risultato finale è che, se il CRTM è affidabile, tutto sarà verificato e non sarà necessario attendersi, dal BIOS al kernel allo userspace. Tutto ciò si basa sul presupposto che CRTM e TPM non possono essere modificati. Tuttavia, il potenziale per i problemi di implementazione è stato evidenziato nella sezione Attacchi specifici dell'implementazione sul blog ITL .
Come si può verificare che il CRTM di un fornitore specifico sia di sola lettura nell'hardware?