Was ist Clientseitige Verschlüsselung?
Clientseitige Verschlüsselung ist die Praxis, Daten auf dem Gerät des Nutzers – typischerweise in einem Browser oder einer nativen App – zu verschlüsseln, bevor sie an einen Server übertragen werden. Dadurch empfängt und speichert der Server ausschließlich verschlüsselte Daten.
Clientseitige Verschlüsselung ist der technische Mechanismus, der Zero-Knowledge- und Ende-zu-Ende-verschlüsselte Systeme ermöglicht. Indem die Verschlüsselung erfolgt, bevor die Daten das Gerät des Nutzers verlassen, traversiert der Klartext weder das Netzwerk noch existiert er auf dem Server. Das schützt gleichzeitig vor Netzwerkabfang, serverseitigen Datenpannen und Insider-Bedrohungen.
In Webanwendungen stützt sich clientseitige Verschlüsselung typischerweise auf die Web Crypto API, eine browsernative Schnittstelle für kryptografische Operationen. Diese ist JavaScript-Kryptografie-Bibliotheken vorzuziehen, weil die Web Crypto API nativ kompilierten Code ausführt, resistent gegen Timing-Angriffe ist und von Hardware-Beschleunigung auf modernen Geräten profitiert.
Der wesentliche Kompromiss der clientseitigen Verschlüsselung: Der Server kann die verschlüsselten Daten nicht verarbeiten oder durchsuchen. Funktionen wie serverseitige Suche, Inhaltsanalyse oder Datentransformation werden unmöglich, weil der Server die Daten genuinen Sinnes nicht lesen kann. Beim Teilen von Geheimnissen ist dieser Kompromiss ideal – der Server muss nur einen Datenbrocken speichern und Zugriffsregeln durchsetzen, nicht den Inhalt verstehen.
Wie Vaulted Clientseitige Verschlüsselung verwendet
Jedes über Vaulted geteilte Geheimnis wird clientseitig mit der Web Crypto API verschlüsselt, bevor der Browser eine Netzwerkanfrage stellt. Der Browser generiert einen zufälligen AES-256-GCM-Schlüssel, verschlüsselt den Klartext und sendet nur den resultierenden Geheimtext und IV an den Server. Der Verschlüsselungsschlüssel wird ins URL-Fragment gesetzt, das der Browser nie in HTTP-Anfragen einbezieht. Das bedeutet: Der Klartext existiert ausschließlich im Browserspeicher von Sender und Empfänger – nie auf dem Netz, nie auf dem Server.