Trusted Boot mit TPM auf IBM Notebook: Difference between revisions

From
Jump to navigation Jump to search
Line 72: Line 72:
* PCR 8 - ersten 512 Bytes der Stage2
* PCR 8 - ersten 512 Bytes der Stage2
* PCR 9 - Rest von Stage2
* PCR 9 - Rest von Stage2
* PCR 13 - Einträge aus <nowiki>CHECKFILE hdx(y,z)</nowiki>
* PCR 13 - Einträge aus <nowiki>CHECKFILE hd(x,y)</nowiki>
* PCR 14 - Linux kernel und initrd-Dateien
* PCR 14 - Linux kernel und initrd-Dateien
Anmerkung: nicht nur der Hashwert des zu messenden Objektes, sondern die Konkatenation mit dem Wert aus dem vorherigen PCR der Chain of Trust.
Anmerkung: nicht nur der Hashwert des zu messenden Objektes, sondern die Konkatenation mit dem Wert aus dem vorherigen PCR der Chain of Trust.
Line 80: Line 80:
Die letzte Komponente, GRUB Stage2, hat die Möglichkeit Dateien zu messen.
Die letzte Komponente, GRUB Stage2, hat die Möglichkeit Dateien zu messen.


In der GRUB-Konfigurationsdatei menu.lst wird mit dem Eintrag <nowiki>CHECKFILE hdx(y,z)</nowiki> eine Datei angegeben, die SHA1-Hashwerte von Dateien enthält - Syntax siehe README TrustedGRUB. Wird ein Eintrag im Menü von Grub ausgewählt, werden vor dem Start des gewünschten Betriebssystems die Hashwerte, der in der Datei hinterlegten Dateien gepfrüft. Treten dabei Abweichungen auf, wird der Benutzer darüber informiert und kann nun selbst bestimmen, ob er in das System booten möchte.
In der GRUB-Konfigurationsdatei menu.lst wird mit dem Eintrag <nowiki>CHECKFILE hd(x,y)</nowiki> eine Datei angegeben, die SHA1-Hashwerte von Dateien enthält - Syntax siehe README TrustedGRUB. Wird ein Eintrag im Menü von Grub ausgewählt, werden vor dem Start des gewünschten Betriebssystems die Hashwerte, der in der Datei hinterlegten Dateien gepfrüft. Treten dabei Abweichungen auf, wird der Benutzer darüber informiert und kann nun selbst bestimmen, ob er in das System booten möchte.
====Speichern von Messwerten====
====Speichern von Messwerten====



Revision as of 08:54, 18 October 2008

Motivation

Ziel unseres Projekts war es, eine Möglichkeit aufzuzeigen, ein vertrauenswürdiges System einzurichten. Damit eine Plattform diese Eigenschaft wirklich gewährleisten kann, muss ab dem Bootvorgang sicher gestellt sein, dass keine Veränderungen am System vorgenommen wurden. Aus diesem Grund wählten wir das Thema "Trusted Boot" (ähnlich dem "Secure Boot") und die Implementierung mit Hilfe des "Trusted Platform Module".

=== Anmerkung === Sven, schreib mal bitte noch um :)

Trusted Platform Module

Im Folgenden eine technische Beschreibung des Trusted Platform Module (TPM). Weiterhin wird ein Überblick über die Funktionen und die Realisierung des Trusted Boot und das Erstellen von Schlüsseln sowie Zertifikaten gegeben.

Allgemein

Der Hauptbestandteil des TPM ist ein Chip als Teil einer Spezifikation zur Verifizierung der Vertrauenswürdigkeit von IT-Systemen. Am ehesten kann man ihn mit einer Smart-Card vergleichen, mit dem Unterschied, dass er nicht an einen Benutzer, sondern an ein System gebunden ist. Dadurch ist eine hardwareseitige Modifizierung nutzlos, da alle Daten, die mit Hilfe des Chips geändert/verschlüsselt wurden, nur auf dem entsprechenden System gelesen/entschlüsselt werden können, selbst wenn dieser auf einer anderen Plattform installiert wird. Standartmäßig ist dieses Bauelement auf dem entsprechenden System deaktiviert und ist auch nur ein passives Bauelement. Es bietet zwar eine vielzahl von Sicherheitsfunktionen an, die jededoch alle von Außen angestoßen werde müssen. Somit kann der Chip keinen direkten Einfluss auf den Bootvorgang oder das laufende System nehmen. Die zwei Hauptfunktionen des Chips sind zum Einen das Auslesen systemspezifischer Referenzwerten und das Verarbeiten dieser.

Funktionen

Neben den beiden Hauptfunktionen (Auslesen, Speichern/Verarbeiten der systemspezifischen Werte) bietet der TPM-Chip noch eine Reihe zusätzlicher und nützlicher Funktionen.

Schlüsselerstellung

Der TPM-Chip verfügt über einen RSA-Schlüsselgenerator. Alle Schlüssel, die mit ihm erstellt werden, können (bzw. müssen) auf dem Chip selbst gespeichert werden. Hierzu dienen 10 RSA-Key-Slots.

Endorsement-Key (EK)

  • 2048 bit RSA-Schlüssel
  • eindeutiges private/public - Schlüsselpaar
  • Geschützt durch Endorsement-Zertifikat vom Hersteller des TPM, der die Einhaltung der TCG-Spezifizierungen bestätigt
  • in den neueren Spezifikationen kann dieser Schlüssel vom Owner des Systems neu gesetzt werden

Attestation-Identity-Key (AIK)

  • 2048 bit RSA-Schlüssel
  • wird mit Hilfe des EK erstellt
  • ist anonyme Identität des Systems
  • dient zur Authentifizierung und gewährleistet Vertrauenswürdigkeit des Systems

Storage-Root-Key (SRK)

  • 2048 bit RSA-Schlüssel
  • wird bei Inbesitznahme durch den Owner erzeugt (TPM_TakeOwnership)
  • dient zur Verschlüsselung eigener Schlüssel
  • ist Wurzel der Schlüsselstruktur des TPM

Zertifikate

Damit die Echtheit eines Systems und dessen Vertrauenswürdigkeit bereits vor der Inbetriebnahme des Chips durch den Eigentümer garantiert werden kann, existieren die folgenden Zertifikate.

  • Endorsement-Zertifikat (garantiert die Echtheit des TPM durch den TPM-Hersteller)
  • Platform-Zertifikat (garantiert den Einbau eines echten TPM in die Plattform durch Plattform-Hersteller)
  • Conformance-Zertifikat (bestätigt das TPM-Design nach den TCG-Spezifikationen und die korrekte Implementierung durch ein Labor)

PCR

Zum Speichern der Zustandswerte von Hard- und Software des Systems dienen die Platform Configuration Register (PCR). Dies sind mindestens 16 flüchtige Hash-Speicher, von denen die ersten 8 (0 - 7) für das TPM selbst reserviert sind (z.B. für Informationen zum BIOS und der aktuellen Hardware). Die restlichen PCRs kann von anderen Applikationen genutzt werden, z.B. für die Realisierung des Trusted Boot. Die Informationen in den PCRs können jederzeit ausgelesen werden, insofern der im folgenden beschriebene TSS dies erlaubt.

Struktur

Eine Plattform, die mit Hilfe des TPM als vertrauenswürdig klassifiziert werden kann, besteht im wesentlichen aus drei Komponenten:

  • Core Root of Trust Measurement (CRTM)
  • Trusted Platform Module (hier ist der Chip gemeint)
  • Trusted Software Stack (TSS)

CRTM

Das Core Root of Trust Measurement ist die Grundlage eines vertrauenswürdigen Systems. Durch das CRTM wird ab dem Bootvorgang die Vertrauenswürdigkeit des Systems gewährleistet. Im Prinzip handelt es sich hierbei um auführbaren Code, der die Systemkonfiguration misst und die Werte in den PCRs des TPM hinterlegt. Diese Daten sind somit plattformspezifisch und bilden den Grundstein für die sichere Schlüsselherstellung/Verschlüsselung. Das CRTM ist eng mit dem BIOS verknüpft, damit das Messen so früh wie möglich stattfinden kann.

TSS

Zum Ansteuern der TPM-Funktionen dient der Trusted Software Stack, ein komplexes Softwarepaket mit Modulen und Komponenten. Er ist sozusagen die Schnittstelle zwischen TPM und Applikation des Andwenders und besteht aus zwei Hauptkomponenten:

  • Kernel-Modus (direkter Zugriff auf den TPM-Chip, allerdings nur über User-Modus erreichbar)
  • User-Modus (Schnittstellen und Dienste/Deamons zum Nutzen der TPM-Funktionen)

Tpm tss.gif

Trusted Boot

Ziel ist es dem Benutzer die Möglichkeit zu geben, sich von der Vertrauenswürdigkeit eines laufenden Betriebssystems zu überzeugen. Das beginnt mit dem Einschalten des Computers.

Bootvorgang

Nach dem Einschalten des Rechners übernimmt das BIOS die Kontrolle und führt einen PowerOnSelfTest durch. Sind keine Fehler zu verzeichnen führt das BIOS den Code des ersten auffindbaren MasterBootRecord eines bootbaren Laufwerks aus. Der MBR kann jeglichen Code der Größe 446 Byte enthalten. In den meisten Fällen ist dort der erste Teil eines Bootloaders zu finden, an den dann die Steuerung übergeben wird.

TrustedGRUB

GRUB in Verbindung mit dem TPM

TrustedGRUB ist eine Erweiterung des klassischen GRUB um Funktionen des TPM. Jede Komponente des Bootvorgangs misst die Integrität der nachfolgenden Komponente. Somit kann eine s.g. Chain of Trust aufgebaut werden. Die Messwerte (SHA1) werden in den PCRs wie folgt gespeichert:

  • PCR 4 - Informationen des MBR und Stage1
  • PCR 8 - ersten 512 Bytes der Stage2
  • PCR 9 - Rest von Stage2
  • PCR 13 - Einträge aus CHECKFILE hd(x,y)
  • PCR 14 - Linux kernel und initrd-Dateien

Anmerkung: nicht nur der Hashwert des zu messenden Objektes, sondern die Konkatenation mit dem Wert aus dem vorherigen PCR der Chain of Trust.

!!!Achtung!!! Befindet sich der Bootloader auf einem externen Gerät, werden die PCRs nicht gefüllt.

Die letzte Komponente, GRUB Stage2, hat die Möglichkeit Dateien zu messen.

In der GRUB-Konfigurationsdatei menu.lst wird mit dem Eintrag CHECKFILE hd(x,y) eine Datei angegeben, die SHA1-Hashwerte von Dateien enthält - Syntax siehe README TrustedGRUB. Wird ein Eintrag im Menü von Grub ausgewählt, werden vor dem Start des gewünschten Betriebssystems die Hashwerte, der in der Datei hinterlegten Dateien gepfrüft. Treten dabei Abweichungen auf, wird der Benutzer darüber informiert und kann nun selbst bestimmen, ob er in das System booten möchte.

Speichern von Messwerten

in den PCRs 9,13,14,15

Installation

Die aktuelle Version 1.1.3 herunterladen und kompilieren.

tar xzvf TrustedGRUB-1.1.3.tgz
cd TrustedGRUB-1.1.3/TrustedGRUB-1.1.3
./configure
make install