Jeder kennt das Problem: Passwörter sollen lang sein, möglichst viele Zeichen enthalten, von denen einige bitte schön auch aus dem Bereich der Sonderzeichen und Zahlen zu wählen sind. Dann sind sie sicher, aber leider auch nur schwer zu merken. Deshalb gibt es eine Vielzahl von Tools, mit denen sich die schwer merkbaren Passwörter in einer Art Safe hinterlegen lassen. Er wird wiederum mit einem Master-Passwort geschützt und gibt die darin enthaltenen Passwörter nur dann wieder frei, wenn es richtig eingegeben wurde. Dafür erhält der Anwender dann aber zumeist Zugriff auf das komplette Inventar des Safes. Das Tool KeePass [1] ist ein bekannter Vertreter aus der Open-Source-Welt.
Eine etwas andere Art von Passwort-Safes stellen sogenannte Key Recovery Authorities (KRA) dar. Sie sind oftmals Teil einer größeren Identity-Management-Lösung und bieten sowohl Benutzern wie auch Diensten unterschiedliche Formen von Passwort-Safes – sogenannte Password-Vaults [2] – an. Diese stehen dann nicht nur lokal auf einem Client, sondern netzwerkweit zur Verfügung. Die Idee dahinter ist, dass ein verlorener privater Benutzer-Schlüssel einfach wiederhergestellt werden kann, da eine Kopie im Passwort-Safe hinterlegt ist.
Seit Version 4.2 verfügt auch das Identity-Management Framework FreeIPA über solche Passwort-Vaults, in denen sich alle möglichen Daten sicher aufbewahren lassen. Beim Einlagern dieser Daten werden diese mit einem Session-Key verschlüsselt. Bei Bedarf wird dieser entweder mit einem weiteren symmetrischen oder asymmetrischen Schlüssel codiert. Das Ergebnis ist dann ein Paket, bestehend aus dem eigentlichen Secret (die Daten) und den verwendeten Schlüsseln. Beides zusammen wird dann nochmals mit dem öffentlichen Schlüssel der KRA-Instanz verschlüsselt und an das FreeIPA-System geschickt. Dort wird das ganze Paket mit Hilfe des privaten Schlüssels der KRA-Instanz wieder ausgepackt. Somit erhält diese Zugriff auf die eingesetzten Schlüssel und das eigentliche Secret. Dieses wird erneut mit einem Storage-Schlüssel codiert, bevor es schließlich im LDAP-Backend hinterlegt wird. Ein sogenannter Escrow-Officer kann Zugriff auf einen Safe bekommen, sodass eine Entschlüsselung der Daten auch dann noch möglich ist, wenn der Eigentümer selbst das Passwort für den Zugriff auf den Safe nicht mehr kennt.
FreeIPA verwendet für diese KRA-Funktion ein Subsystem der eingebauten Dogtag Certificate Authority. Das System nennt sich Data Recovery Manager (DRM) und lässt sich zusätzlich zu dem eigentlichen FreeIPA-Setup installieren:
# dnf install ipa-kra-install
Im Anschluss stehen drei Formen von Safes zur Verfügung: Im Standard Vault werden die Daten lediglich mit einem zufälligen Session-Key verschlüsselt. Der Symmetric Vault verschlüsselt die Daten zusätzlich noch einmal mit einem frei wählbaren Passwort. Dies ist der Default-Safe. Beim Asymmetric Vault kommt zum Verschlüsseln der Daten zusätzlich zum Session Key ein öffentlicher Schlüssel zum Einsatz. Zum Entschlüsseln wird entsprechend der dazugehörige private Schlüssel benötigt.
Diese drei Arten von Safes können nun wiederum in drei unterschiedlichen Containern zum Einsatz kommen. Im seinem User Container kann jeder Benutzer beliebig viele Safes anlegen, um dort Daten sicher zu speichern. Die Safes sind dabei nur für die jeweiligen Benutzer sichtbar. Administratoren können geteilte Container (Shared Container) erzeugen. Mehrere Benutzer erhalten Zugriff auf die Safes in einem gemeinsam genutzten Container. Da auch Dienste mit privaten Daten arbeiten, bekommen diese einen eigenen Service Container zugewiesen, in dem sie verschlüsselte Daten hinterlegen können. Der Zugriff auf diese erfolgt dann ebenfalls nach erfolgreicher Authentifizierung eines Dienstes – etwa mit Hilfe eines Kerberos-Tickets.