FOSDEM 24: TPM-2-Chip als Datentresor unter Linux
Viele Rechner bieten ein Trusted Platform Modul 2. Ein Talk auf der FOSDEM24 zeigt, wie sich mit Linux-Tools dort SchlĂĽssel hinterlegen lassen.
An Verschlüsselungstechniken zum Schutz von Daten gibt es unter Linux keinen Mangel: Dateicontainer, chiffrierte Partitionen oder die Verschlüsselung einzelner Dateien stellen sichere Dateiablagen bereit. Für einen Hardwaretoken gibt es zudem Smartcard-Tools. Warum zur Verschlüsselung nicht eine spezialisierte Hardwarekomponente nutzen, die ohnehin schon vorhanden ist? Ein Trusted Platform Modul der Version 2 (TPM 2) findet sich als Kryptoprozessor auf den meisten Hauptplatinen und in Notebooks der letzten neun Jahre – als separater Chip oder als Teil der Firmware. James Bottomley von IBM Research und Linux-Kernel-Maintainter für das SCSI-Subystem, zeigte in einem Talk, wie TPM 2 unter Linux mit SSH und GnuPG als Datentresor für private Schlüssel dienen kann.
TPM 2 ist keine neue Spezifikation, sondern stammt von 2014. Es dauerte aber, bis sich die Linux-Community für TPM 2, dem Nachfolger des heute obsoleten TPM 1.2, erwärmen konnte. Die Spezifikation stammte ursprünglich von Microsoft, steht unter der BSD-Lizenz und die Referenz-Implementierung ist auf Github veröffentlicht. Dennoch gab es ein gewisses Misstrauen, ob TPM tatsächlich sicher ist, oder nicht von Herstellern oder Behörden mit Hintertüren versehen ist. Nun gibt es aber ein Standard-Modell für die TPM-2-Firmware in Form reproduzierbarer Builds, an das sich Hersteller von TPM-Chips beweisbar halten müssen.
TPM 2 wird fĂĽr Linux-Anwender attraktiv
Dieses zerstreut laut James Bottomley die Zweifel über kompromittierte Implementierungen. Die Pflege des TPM-Standards untersteht heute der Trusted Computing Group, einem Industriekonsortium, in welchem unter anderem IBM, Intel, AMD, IBM, Microsoft und Cisco vertreten sind. An Stelle einer anfänglichen Skepsis ist nun in der Linux-Community ein Ehrgeiz getreten, den ohnehin meist vorhandenen TPM-2-Chip sinnvoll im Stil einer Smartcard einzusetzen. So finden sich im Programm der diesjährigen FOSDEM fast ein Dutzend Talks zum Einsatz des Trusted Platform Moduls unter Linux.
Der TPM-2-Cryptoprozessor kommt üblicherweise, etwa in Microsoft Windows, für die folgenden fünf Aufgaben zum Einsatz: Die Überwachung des Bootvorgangs des System (Measured Boot), Speichern von Lizenzschlüsseln, Freigabe von Schlüsseln unter bestimmten Voraussetzungen, Generierung von Schlüsselpaaren und schließlich das Signieren von hinterlegten Daten, um deren Echtheit zu bestätigen. Viele dieser Kryptofunktionen sind auch unter Linux nützlich und können separate Hardware wie Smartcards und verschlüsselte USB-Sticks ersetzen. Der Linux-Kernel stellt schon seit Version 3.2 einen vorhandenen TPM-2-Chip über eine Gerätedatei wie /dev/tpm0
bereit. Jedoch fehlten zunächst komfortable Tools zum Umgang mit TPM 2 unter Linux. Mittlerweile kann immerhin schon systemd-cryptsetup
als Komponente von Systemd ab Version 248 einen Schlüssel für LUKS-Partitionen in dem Kryptoprozessor hinterlegen, zum automatischen Aufschließen beim Boot des Linuxsystems im Stil von Microsofts Bitlocker. James Bottomley präsentiert zwei weitere kryptografische Linux-Tools: Ein TPM-2-Subsystem für GPG zum Versiegeln sowie Laden von privaten Schlüsseln ist schon fit für den Alltag. Und OpenSSH kann über einen Umweg private Schlüssel laden, die zuvor vom TPM-2-Chip entsperrt wurden.
Praxis: GnuPG und OpenSSH
FĂĽr die Sicherung des privaten GPG-SchlĂĽssels hat GnuPG ab Version 2.3 die notwendigen Patches erhalten, die von James Bottomley selbst stammen. In GnuPG dient der Befehl keytotpm
zum Konvertieren und Versiegeln von Schlüsseln im TPM-2-Chip mit einem neu gesetzten Passwort. Die Schlüssel dienen dann weiter in GnuPG wie gewohnt zum Signieren und Chiffrieren können, sind aber nun fest an den Kryptoprozessor gebunden, der auch die Kryptooperationen ausführt. Auch dient ein Löschbefehl dazu, den TPM-2-Chip komplett zu löschen, wenn ein Laptop weitergegeben oder entsorgt werden soll. Ein Nachteil ist die Notwendigkeit, die Originalschlüssel als Backup auf einem sicheren Datenträger zu verwahren, denn diese rückt TPM 2 nicht mehr heraus.
Schwieriger gestaltete sich die Aufgabe, OpenSSH zur Zusammenarbeit mit dem Kryptoprozessor zu überreden. Denn OpenSSH kommuniziert mit dem SSH-Agent als Schlüsselmanager in einer Weise, die nicht mit TPM 2 kompatibel ist. James Bottomley patcht seine OpenSSH-Versionen manuell, damit der SSH-Agent direkt eine Schlüsseldatei laden kann, die zuvor per TPM- 2 entsperrt wurde. Die OpenSSH-Entwickler werden diesen Patch aber nicht aufnehmen. Stattdessen bietet sich die Umwandlung eines erzeugten SSH-Schlüssels in das Format PKCS#11 an, mit dem sowohl die vorhandenen TPM-2-Tools für Linux, als auch OpenSSH umgehen kann. Die Einrichtung ist auf der Github-Webseite des Python-Scripts tpm2-pkcs11.py beschrieben. In diesem Fall liegt die Schlüsseldatei übrigens nicht im Kryptochip, sondern chiffriert auf dem Datenträger des Rechners. Deren Entschlüsselung gelingt jedoch nur per TPM 2 auf diesem einen System.
(dmk)