jump to navigation

Programmare il Fritz Chip (TPM) – Parte Seconda January 11, 2006

Posted by laspinanelfianco in Trusted Computing.
3 comments

In questo secondo articolo della serie affrontiamo uno dei principali misteri della vita del TPM: come si comporta il Fritz Chip al momento del bootstrap.

Il Fritz Chip, il BIOS, il bootloader ed i driver.

Per poter utilizzare il Fritz Chip, è necessario usare uno “stack” software che lo supporti. Lo stack (“pila”, come la pila dei piatti nel vostro lavandino) è semplicemente la somma del BIOS, del Bootloader (GRUB) e dei driver usati per pilotare il TPM.

Il BIOS è una piccola collezione di programmi che si trova su una memoria ROM (Read-Only Memory) sul PC. Questi programmi si occupano di avviare il PC e di gestirne il funzionamento prima che il Sistema Operativo venga caricato. Alcuni produttori di BIOS hanno già realizzato le versioni compatibili con il Trusted Computing. Sembra addirittura che Apple userà nei suoi McIntosh basati su Intel un BIOS “Open Source” appositamente modificato o configurato (OpenFirmware).

Il bootloader è un programma usato per caricare l’uno o l’altro dei sistemi operativi presenti su un PC quando su di esso ne sono stati installati più d’uno. Si tratta di uno strumento software molto diffuso nella comunità Linux dove quasi tutti gli utenti hanno sia Windows che Linux installati sulla stessa macchina. Il PC da cui sto scrivendo queste righe, un vecchio Pentium III a 500 Mhz con 512 mb di RAM, dispone di Linux Mandriva 10.2, Linux Suse OSS 10.0, Debian Linux 3.1 e Windows 98 installati sulle partizioni di due dischi EIDE (in parte configurati come RAID 1 software). L’avvio di uno o l’altro di questi sistemi operativi è gestito dal bootloader GRUB. In questo momento, GRUB mi risulta essere l’unico bootloader abilitato a funzionare con il Fritz chip.

I driver sono semplicemente dei piccoli programmi che servono per pilotare il TPM. Linux mette a disposizione i driver per i TPM prodotti da IBM, Atmel ed Infineon direttamente dall’interno del kernel standard (almeno nelle versioni successive alla 2.16.2). Microsoft metterà a disposizione questi driver attraverso un componente di Windows Vista chiamato “Nexus”. Non ho idea di cosa abbia intenzione di fare Apple ma immagino che userà qualcosa di molto simile al Nexus di Microsoft.

Attivazione e disattivazione del Fritz Chip al Bootstrap

Il Fritz Chip può essere attivato, disattivato e “ripulito” dal BIOS, sia a seguito di una operazione manuale che a seguito di una delle operazioni automatiche che fanno parte della procedura di bootstrap. Al momento del bootstrap, il Fritz Chip viene attivato dal BIOS ma non viene avviato. L’avviamento del Fritz Chip deve essere effettuato in modo esplicito usano l’apposito comando TPM_Startup. Questo comando può eseguire una delle seguenti 3 operazioni.

Disattivare il TPM. In questo caso il TPM resta disattivato fino al successivo bootstrap e nessun comando software può riattivarlo prima di quel momento. Questo permette di “spegnere” il Fritz Chip in modo definitivo, se l’utente lo desidera, con la sicurezza che nessun programma lo possa riattivare a sua insaputa.

Attivare il Fritz Chip in uno stato “uilito”, cioè senza PCR memorizzati nei registri. Questo tipo di avviamento è quello usato normalmente.

Attivare il Fritz Chip ricaricando i PCR memorizzati in precedenza. Questo tipo di avviamento permette di verificare passo per passo che la configurazione del sistema non sia stata alterata rispetto al momento in cui sono stati calcolati i PCR. Questo tipo di avviamento è quello che viene normalmente citato quando si parla di “controllo del processo di bootstrap” da parte del Fritz Chip. In alcuni documenti (come nell’articolo di David Safford a cui è ispirato questo articolo) si sostiene che questo tipo di avviamento sia pensato per i “resume”. La documentazione Microsoft ed Intel parla invece espliciitamente di controllo e verifica del processo di bootstrap da parte del Fritz Chip. Il reale utilizzo di questa funzionalità dipende quindi dal software che ci gira sopra (Windows Vista) e dalle intenzioni del produttore (Intel, AMD e Microsoft).

Il chip risponde anche ad altri due comandi, oltre a TPM_Starup: TPM_SaveState, che salva le informazioni di stato correnti (i PCR) nelle apposite slot, e TPM_ForceClear, che “ripulisce” il chip. Il primo comando deve essere invocato dal device driver ogni volta che si desidera salvare una informazione di stato di questo tipo. Il secondo comando rende inutilizzabile il chip fino ad una nuova operazione di TakeOwnership, per cui viene usato di rado. Per la sua esecuzione è richiesta una prova della presenza fisica dell’operatore, normalmente ottenuta attraverso la pressione di un tasto prima della reale esecuzione del comando.

Nella prossima puntata vedremo come prendere possesso del TPM e come eseguire alcuni comandi fondamentali.