Zum Hauptinhalt springen

3.2. Geschichtete Attestierungsumgebungen

3.2. Geschichtete Attestierungsumgebungen

Per Definition generiert die Attester-Rolle Evidence. Ein Attester kann aus einer oder mehreren verschachtelten Umgebungen (Schichten) bestehen. Die unterste Schicht eines Attesters verfügt über eine Attesting Environment, die typischerweise so konzipiert ist, dass sie unveränderlich ist oder schwer von bösartigem Code modifiziert werden kann. Um die von einem Attester generierte Evidence zu bewerten, muss der Verifier verschiedenen Schichten vertrauen, einschließlich der unteren Attesting Environment. Das Vertrauen in die Schichten des Attesters, einschließlich der untersten Schicht, kann auf verschiedene Weise hergestellt werden, wie in Abschnitt 7.4 erörtert.

Bei der geschichteten Attestierung können Claims von oder über jede Schicht gesammelt werden, beginnend mit einer Anfangsschicht. Die entsprechenden Claims können in einer verschachtelten Weise strukturiert werden, die die Verschachtelung der Schichten des Attesters widerspiegelt. Normalerweise werden Claims nicht selbst behauptet. Vielmehr fungiert eine vorherige Schicht als Attesting Environment für die nächste Schicht. Claims über eine Anfangsschicht werden typischerweise von einem Endorser behauptet.

Das in Abbildung 3 dargestellte Beispielgerät umfasst (A) ein in einem Nur-Lese-Speicher gespeichertes BIOS, (B) einen Bootloader und (C) einen Betriebssystemkern.

          .-------------.   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 | |
| '---------------------------' |
| |
'------------------------------------'

Abbildung 3: Geschichteter Attester

Die erste Attesting Environment (in diesem Beispiel das ROM) muss die Integrität des Bootloaders (der ersten Target Environment) sicherstellen. Es gibt möglicherweise mehrere zu startende Kernel; die Entscheidung liegt beim Bootloader. Nur ein Bootloader mit intakter Integrität wird eine angemessene Entscheidung treffen. Daher müssen die Claims bezüglich der Integrität des Bootloaders sicher gemessen werden. In diesem Stadium des Boot-Zyklus des Geräts können die gesammelten Claims typischerweise nicht zu Evidence zusammengesetzt werden.

Nachdem die Bootsequenz gestartet wurde, führt das BIOS die wichtigste und definierende Funktion der geschichteten Attestierung aus: Der erfolgreich gemessene Bootloader wird nun (oder enthält) eine Attesting Environment für die nächste Schicht. Dieses Verfahren in der geschichteten Attestierung wird manchmal als „Staging" bezeichnet. Es ist wichtig, dass der Bootloader keine Claims über sich selbst ändern kann, die vom BIOS gesammelt wurden. Dies kann sichergestellt werden, indem diese Claims entweder vom BIOS signiert oder vom BIOS auf manipulationssichere Weise gespeichert werden.

Um mit diesem Beispiel fortzufahren, ist die Attesting Environment des Bootloaders nun dafür verantwortlich, Claims über die nächste Target Environment zu sammeln. In diesem Beispiel ist es der zu startende Kernel. Die endgültige Evidence enthält somit zwei Sätze von Claims: einen Satz über den Bootloader, wie vom BIOS gemessen und signiert, und einen anderen Satz von Claims über den Kernel, wie vom Bootloader gemessen und signiert.

Dieses Beispiel könnte weiter ausgedehnt werden, indem der Kernel zu einer weiteren Attesting Environment für eine Anwendung als weitere Target Environment wird. Dies würde zu einem dritten Satz von Claims in der Evidence führen, die sich auf diese Anwendung beziehen.

Das Wesentliche dieses Beispiels ist eine Kaskade von gestaffelten Umgebungen. Jede Umgebung hat die Verantwortung, die nächste Umgebung zu messen, bevor die nächste Umgebung gestartet wird. Im Allgemeinen kann die Anzahl der Schichten je nach Gerät oder Implementierung variieren, und eine Attesting Environment kann sogar mehrere Target Environments haben, die sie misst, anstatt nur eine wie im Beispiel in Abbildung 3 gezeigt.