
Benutzerfreundliche leichtgewichtige TPM-Fernattestierung über Bluetooth
Ultrablue (User-friendly Lightweight TPM Remote Attestation over Bluetooth) ist eine Lösung, die es einzelnen Benutzern ermöglicht, mit ihrem Telefon eine Attestierung des Boot-Zustands durchzuführen. Es besteht aus einem Server, der auf einem Computer läuft und als Attester fungiert, sowie einer grafischen Client-Anwendung, die auf einem vertrauenswürdigen Telefon läuft und als Verifier fungiert.
Ein typischer Anwendungsfall ist die Überprüfung der Integrität Ihrer Bootchain vor dem Entsperren des Computers, um Offline-Angriffe auf einen unbeaufsichtigten Laptop zu verhindern. Es kann auch als Debugging-Werkzeug für Secure-Boot-Probleme nach Firmware-Upgrades oder als zweiter Faktor für die Festplattenverschlüsselung dienen.
Nach der Installation besteht der klassische Ultrablue-Ablauf aus mehreren Schritten:
Für die Verwendung von Ultrablue benötigen Sie einen Linux-Computer, dessen Boot-Zustand Sie attestieren möchten, mit TPM und Bluetooth-Schnittstelle (typischerweise ein Laptop), sowie ein mobiles Telefon.
Um ein Telefon als Verifier zu registrieren, starten Sie den Server im Registrierungsmodus:
sudo ultrablue-server -enroll -pcr-extend
Daraufhin wird ein QR-Code im Terminal angezeigt. Starten Sie auf dem Telefon die Client-App und tippen Sie auf das +-Symbol in der oberen rechten Ecke, um einen QR-Code-Scanner zu öffnen. Beim Scannen wird ein Bluetooth-Low-Energy-Kanal aufgebaut und die Registrierung läuft automatisch ab. Bei Erfolg erscheint eine Gerätekarte auf der Startseite der Client-Anwendung.
Ultrablue kann Ihr TPM2 PCR9-Register zum Zeitpunkt der Registrierung mit einem zufällig generierten Wert erweitern. Dies ist nützlich, wenn Sie beispielsweise Ihre Festplattenverschlüsselung an die TPM2-Versiegelung binden möchten. In diesem Fall erweitert ultrablue das PCR9-Register während des Bootens zurück, wenn die Attestierung erfolgreich und vertrauenswürdig ist. Die PCR-Erweiterung wird zum Zeitpunkt der Registrierung konfiguriert (das Flag hat im Attestierungsmodus keine Wirkung):
sudo ultrablue-server -enroll -pcr-extend
Wenn Sie möchten, dass Ultrablue als Teil Ihres Boot-Ablaufs ausgeführt wird, müssen Sie die Initramfs neu generieren, um es einzubinden. Wir erleichtern dies durch eine Dracut- und systemd-Integration. Siehe auch die bereitgestellten VM-Skripte, die eine noch einfachere Möglichkeit zum Testen bieten.
Installieren Sie zuerst server/dracut/90ultrablue im Modulverzeichnis /usr/lib/dracut/modules.d/,
Sie können dann den folgenden Dracut-Befehl ausführen:
dracut --add ultrablue /path/to/initrd --force
Wenn Sie die Option --pcr-extend während der Registrierungsphase verwendet haben, müssen Sie das crypt-Dracut-Modul hinzufügen und server/dracut/90crypttab.conf nach /etc/dracut.conf.d kopieren (um den Dracut-Bug #751640 zu umgehen):
cp server/dracut/90crypttab.conf /etc/dracut.conf.d
dracut --add "crypt ultrablue" /path/to/initrd --force
Beachten Sie, dass diese Optionen nicht dauerhaft sind und ultrablue bei der nächsten Generierung aus Ihrem Initramfs entfernt wird. Informationen zur dauerhaften Konfiguration finden Sie auf der Manpage dracut.conf(5).
Wenn Sie den Schritt der Initramfs-Konfiguration durchgeführt haben, wird der Ultrablue-Server während des Bootens automatisch ausgeführt. Andernfalls starten Sie den Server manuell im Attestierungsmodus:
sudo ultrablue-server
Nach dem Start wartet der Server darauf, dass sich ein Verifier (Telefon) verbindet. Klicken Sie auf dem Telefon auf das ▶️-Symbol der Gerätekarte. Dadurch wird die Attestierung ausgeführt. Nach Abschluss zeigt die Client-Anwendung das Attestierungsergebnis an.
Das Hauptziel der Ausführung von Ultrablue zur Bootzeit besteht darin, es zur Festplattenentschlüsselung zu verwenden. Ein Beispiel für die Umsetzung wird im Server-Testbed bereitgestellt und dokumentiert.
Das Ultrablue-Projekt wurde bei ANSSI (ssi.gouv.fr) von Loïc Buckwell unter der Leitung von Nicolas Bouchinet und Gabriel Kerneis entwickelt.
Wenn Sie Fragen haben, wenden Sie sich über ein Github-Issue oder direkt an Gabriel Kerneis [email protected].