Passwork verwendet ein zweistufiges Schutzmodell. Nicht alle Daten werden auf dem Client verschlüsselt — einige Felder sind nur durch Server-seitige Verschlüsselung geschützt, um Funktionalität (Suche, Sortierung, Anzeige) zu ermöglichen.
Übersicht der Verschlüsselungsebenen
| Ebene | Ausführungsort | Wann aktiv | Schlüssel | Algorithmus |
|---|
| Client-seitige Verschlüsselung | Im Browser | Wenn CSE aktiviert ist | Benutzer-, Tresor-, Eintragschlüssel | AES-256-CBC |
| Server-seitige Verschlüsselung | Auf dem Server | Immer | Serverschlüssel | AES-256-CFB |
Eintragsdaten
| Feld | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Eintragsname | — | ✓ | Suche, Listenanzeige |
| Login | — | ✓ | Suche, Autovervollständigung |
| Passwort | ✓ | ✓ | Kritische Daten |
| URL | — | ✓ | Suche, Autovervollständigung, Browsererweiterung |
| Beschreibung | — | ✓ | Suche |
| Tags | — | ✓ | Filterung, Gruppierung |
| Farbe | — | ✓ | Anzeige |
Benutzerdefinierte Felder
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Feldname | ✓ | ✓ | Kann sensible Informationen enthalten |
| Feldwert | ✓ | ✓ | Kritische Daten |
| Feldtyp | ✓ | ✓ | Feldmetadaten |
TOTP (Zwei-Faktor-Authentifizierung)
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| TOTP-Geheimnis | ✓ | ✓ | Kritische 2FA-Daten |
Anhänge
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Dateiname | — | ✓ | Anzeige, Suche |
| Dateiinhalt | ✓ | ✓ | Kritische Daten |
| Anhangsschlüssel | Ja (mit Eintragschlüssel) | ✓ | Schlüsselmaterial |
Eintragsrevisionen
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Vorherige Passwortwerte | ✓ | ✓ | Historische Geheimnisse |
| Vorherige benutzerdefinierte Felder | ✓ | ✓ | Historische Geheimnisse |
| Änderungsmetadaten | — | ✓ | Audit, Protokollierung |
Tresordaten
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Tresorname | — | ✓ | Navigation, Anzeige |
| Tresorbeschreibung | — | ✓ | Information |
| Tresorschlüssel | Ja (mit Benutzer-RSA-Schlüssel) | ✓ | Schlüsselmaterial |
| Zugriffsrechte | — | ✓ | Zugriffskontrolle |
| Tresoreinstellungen | — | ✓ | Konfiguration |
Benutzerdaten
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Benutzername | — | — | Identifikation |
| E-Mail | — | — | Identifikation |
| Öffentlicher RSA-Schlüssel | — | — | Per Definition öffentlich |
| Privater RSA-Schlüssel | Ja (mit Masterschlüssel) | ✓ | Kritische Daten |
| Masterschlüssel-Hash | — | ✓ | Zur Passwortüberprüfung |
| PBKDF2-Salt | — | ✓ | Kryptografische Parameter |
| Local Storage Secret Code | — | ✓ | Für die „Merken"-Funktion |
Externe-Link-Daten
| Attribut | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Link-Token | — | — | URL-Identifikator |
| Eintragsdaten-Kopie | Ja (mit Link-Schlüssel) | ✓ | Geheime Daten |
| Link-Schlüssel (verschlüsselt) | ✓ | ✓ | Schlüsselmaterial |
| Link-Schlüssel-Hash | — | ✓ | Zur Zugriffsüberprüfung |
| Link-Einstellungen | — | ✓ | TTL, einmalige Nutzung |
Dienstdaten
| Daten | Client-seitige Verschlüsselung | Server-seitige Verschlüsselung | Grund |
|---|
| Objekt-IDs | — | — | Identifikation |
| Zeitstempel | — | — | Sortierung, Audit |
| Access/Refresh Token | — | — | Sitzungen (im Speicher/Cookies) |
| LDAP-Passwörter (Integration) | — | ✓ | Serverintegration |
| SMTP-Passwörter | — | ✓ | Serverintegration |
Verschlüsselungsschlüssel nach Datentyp
| Daten | Client-seitiger Verschlüsselungsschlüssel | Server-seitiger Verschlüsselungsschlüssel |
|---|
| Passwortfeld | Eintragschlüssel (AES-256-CBC) | Serverschlüssel (AES-256-CFB) |
| Benutzerdefinierte Felder | Eintragschlüssel | Serverschlüssel |
| TOTP-Geheimnis | Eintragschlüssel | Serverschlüssel |
| Dateiinhalt | Anhangsschlüssel (AES-256-CBC) | Serverschlüssel |
| Anhangsschlüssel | Eintragschlüssel | Serverschlüssel |
| Eintragschlüssel | Tresorschlüssel (AES-256-CBC) | Serverschlüssel |
| Tresorschlüssel | Benutzer-RSA-Schlüssel (RSA-OAEP) | Serverschlüssel |
| Privater RSA-Schlüssel | Masterschlüssel (AES-256-CBC) | Serverschlüssel |
Warum wird nicht alles auf dem Client verschlüsselt?
Funktionale Gründe
- Suche — um nach Name, Login, URL, Beschreibung und Tags zu suchen, muss der Server diese Felder indexieren können
- Sortierung — die Sortierung von Einträgen nach Name erfordert Zugriff auf dieses Feld
- Filterung — Tag-Filterung erfolgt auf der Server-Seite
- Autovervollständigung — die Browsererweiterung gleicht URLs ohne Entschlüsselung ab
- Listenanzeige — Anzeige von Eintragsnamen ohne Entschlüsselung des gesamten Eintrags
Obwohl einige Felder nicht auf dem Client verschlüsselt werden, sind sie geschützt durch:
- Server-seitige Verschlüsselung (AES-256-CFB) vor dem Schreiben in die Datenbank
- TLS/HTTPS während der Übertragung zwischen Client und Server
- Zugriffskontrolle auf Anwendungsebene
Bedrohungsmodell
| Bedrohung | Schutz |
|---|
| Datenbankleck | Server-seitige Verschlüsselung schützt alle Daten |
| Serverkompromittierung | Client-seitige Verschlüsselung schützt kritische Daten |
| Abfangen des Datenverkehrs | TLS schützt Daten während der Übertragung |
| Administratorzugriff | Zero-Knowledge für Passwörter und Geheimnisse |
Sicherheitsempfehlungen
Bei aktivierter CSE
Mit Client-seitiger Verschlüsselung sind kritische Daten (Passwörter, Geheimnisse, Dateien) durch das Zero-Knowledge-Prinzip geschützt. Der Server kann sie nicht entschlüsseln.
Was für den Server sichtbar bleibt:
- Tresor- und Ordnerstruktur
- Eintragsnamen
- Logins und URLs
- Tags und Beschreibungen
- Anzahl und Namen von Anhängen
Wenn Sie Metadaten verbergen möchten:
- Verwenden Sie allgemeine/nicht-informative Eintragsnamen
- Vermeiden Sie sensible Informationen in Beschreibungen
- Geben Sie keine genauen URLs für kritische Systeme an