3.2. Ambienti di attestazione a livelli
3.2. Ambienti di attestazione a livelli
Per definizione, il ruolo di Attester genera Evidence. Un Attester può essere composto da uno o più ambienti annidati (livelli). Il livello inferiore di un Attester ha un Attesting Environment che è tipicamente progettato per essere immutabile o difficile da modificare da parte di codice malevolo. Per valutare l'Evidence generata da un Attester, il Verifier deve fidarsi di vari livelli, incluso l'Attesting Environment inferiore. La fiducia nei livelli dell'Attester, incluso il livello inferiore, può essere stabilita in vari modi, come discusso nella sezione 7.4.
Nell'attestazione a livelli, i Claims possono essere raccolti da o su ogni livello iniziando con un livello iniziale. I Claims corrispondenti possono essere strutturati in modo annidato che riflette l'annidamento dei livelli dell'Attester. Normalmente, i Claims non sono auto-affermati. Piuttosto, un livello precedente agisce come Attesting Environment per il livello successivo. I Claims su un livello iniziale sono tipicamente affermati da un Endorser.
Il dispositivo di esempio illustrato nella figura 3 include (A) un BIOS memorizzato in memoria di sola lettura, (B) un bootloader e (C) un kernel del sistema operativo.
.-------------. Endorsement for ROM
| Endorser +-----------------------.
'-------------' |
v
.-------------. Reference .----------.
| Reference | Values for | |
| Value +----------------->| Verifier |
| Provider(s) | ROM, bootloader, | |
'-------------' and kernel '----------'
^
.------------------------------------. |
| | |
| .---------------------------. | |
| | Kernel(C) | | |
| | | | | Layered
| | Target | | | Evidence
| | Environment | | | for
| '---------------+-----------' | | bootloader
| Collect | | | and
| Claims | | | kernel
| .---------------|-----------. | |
| | Bootloader(B) v | | |
| | .-----------. | | |
| | Target | Attesting | | | |
| | Environment |Environment+-----------'
| | | | | |
| | '-----------' | |
| | ^ | |
| '--------------+--|---------' |
| Collect | | Evidence for |
| Claims v | bootloader |
| .-----------------+---------. |
| | ROM(A) | |
| | | |
| | Attesting | |
| | Environment | |
| '---------------------------' |
| |
'------------------------------------'
Figura 3: Attester a livelli
Il primo Attesting Environment (la ROM in questo esempio) deve garantire l'integrità del bootloader (il primo Target Environment). Ci sono potenzialmente più kernel da avviare; la decisione spetta al bootloader. Solo un bootloader con integrità intatta prenderà una decisione appropriata. Pertanto, i Claims relativi all'integrità del bootloader devono essere misurati in modo sicuro. In questa fase del ciclo di avvio del dispositivo, i Claims raccolti tipicamente non possono essere composti in Evidence.
Dopo l'avvio della sequenza di boot, il BIOS conduce la caratteristica più importante e definitoria dell'attestazione a livelli: il bootloader misurato con successo diventa ora (o contiene) un Attesting Environment per il livello successivo. Questa procedura nell'attestazione a livelli è talvolta chiamata "staging". È importante che il bootloader non possa alterare alcun Claim su se stesso che è stato raccolto dal BIOS. Questo può essere garantito facendo in modo che tali Claims siano firmati dal BIOS o memorizzati in modo a prova di manomissione dal BIOS.
Continuando con questo esempio, l'Attesting Environment del bootloader è ora responsabile della raccolta di Claims sul Target Environment successivo. In questo esempio, è il kernel da avviare. L'Evidence finale contiene quindi due insiemi di Claims: un insieme sul bootloader come misurato e firmato dal BIOS e un altro insieme di Claims sul kernel come misurato e firmato dal bootloader.
Questo esempio potrebbe essere esteso ulteriormente facendo diventare il kernel un altro Attesting Environment per un'applicazione come altro Target Environment. Ciò comporterebbe un terzo insieme di Claims nell'Evidence relativo a quell'applicazione.
L'essenza di questo esempio è una cascata di ambienti a stadi. Ogni ambiente ha la responsabilità di misurare l'ambiente successivo prima che l'ambiente successivo venga avviato. In generale, il numero di livelli può variare a seconda del dispositivo o dell'implementazione, e un Attesting Environment potrebbe anche avere più Target Environments che misura, piuttosto che uno solo come mostrato nell'esempio nella figura 3.