SSH-Keys mit TPM verschlüsselt speichern
Mithilfe eines TPM (Trusted Platform Module) lassen sich SSH-Keys verschlüsselt speichern und absichern. Für den Zugriff auf den TPM-Chip wird dabei die PKCS#11-Schnittstelle verwendet.
SSH-Key mit TPM 2.0 verschlüsseln & absichern
Voraussetzungen & Vorbereitung
Grundsätzlich benötigt ihr nur einen Rechner mit TPM-2.0-Chip. Alternativ könnt ihr aber auch eine VM mit emuliertem TPM nutzen. Stellt sicher, dass bei euch der Pfad /dev/tpm0
existiert. Außerdem überprüft, ob ihr über einen TPM-2.0-Chip verfügt:
Installiert nun die folgenden zwei Pakete mit folgendem Befehl:
Nach der Installation sollte euer System über eine Gruppe namens tss
verfügen. Diese müsst ihr nun noch eurem Benutzer zuordnen:
Store initialisieren
Im ersten Schritt müssen wir einen sogenannten Store inkl. Slot, quasi eine Art Smartcard-Slot, erzeugen:
Token erzeugen
Als nächstes erstellt einen Token mit einem aussagekräftigem Label, sowie der Angabe eurer PIN(s), die ihr ihr später zum Zugriff auf euren verschlüsselten SSH-Key benötigt. Als PID
gebt die ID an, die euch beim Initialisieren des Stores/Slots angezeigt wurde.
SSH-Key erzeugen
In diesem Schritt gibt es prinzipiell zwei Möglichkeiten: entweder ihr lasst den SSH-Key direkt mithilfe des TPMs erzeugen, oder ihr erstellt ganz normal euren SSH-Key und importiert diesen anschließend. Im Folgenden werde ich die Import-Variante erklären.
Erstellt euch ein temporäres Verzeichnis und generiert euch einen SSH-Key mit einer sicheren Passphrase:
Sichert euch den privaten SSH-Key weg, da dieser gleich wieder gelöscht werden wird. Als nächstes muss der SSH-Key in ein Format gebracht werden, dass sich zum TPM-Import eignet. Hierfür ist es auch wichtig, dass die bestehende Passphrase wieder entfernt wird:
Anschließend kann der SSH-Key importiert werden:
Zur Verifizierung, dass der Import korrekt funktoniert hat, lasst euch den Inhalt des Tokens anzeigen:
Nachdem der Import geklappt hat, löscht die SSH-Key-Datei, z.B. mit shred
.
Public-SSH-Key ermitteln bzw. exportieren
Zum Ermitteln des Public-Keys eures SSH-Keys dient folgender Befehl (Pfad zur PKCS#11-Bibliothek kann ggf. auf eurem System abweichen):
SSH-Key für Authentifizierung verwenden
Möchtet ihr nun euren mit TPM abgesicherten SSH-Key verwenden, um euch mit einem entfernten SSH-Server, der euren Public-SSH-Key hinterlegt hat, zu verbinden, könnt ihr folgenden Befehl ausführen:
Um den Pfad zur PKCS#11-Bibliothek nicht immer angeben zu müssen, könnt ihr alternativ auch eure SSH-Konfiguration entsprechend anpassen, oder SSH-Aliasse verwenden.
Fazit
Mit den hier vorgestellten Paketen, lassen sich SSH-Keys relativ leicht mit einem TPM-Chip absichern.