Datenmodell
Daten in Passwork sind in einer vierstufigen Hierarchie mit eigenen kryptografischen Schlüsseln auf jeder Ebene organisiert.
Objekthierarchie
User
└── Vault
└── Folder [optional]
└── Record
├── Standard fields
├── Custom fields
└── Attachments
Ebene 1: Benutzer
Jeder Benutzer verfügt über:
- Anmeldedaten für die Systemanmeldung (Benutzername, Passwort oder SSO/LDAP)
- Masterpasswort für die Client-seitige Verschlüsselung (wenn CSE aktiviert ist)
- RSA-Schlüsselpaar (öffentlich und verschlüsselt privat)
- PBKDF2-Parameter (Salt, Iterationsanzahl)
Ebene 2: Tresor
Ein Tresor ist der primäre Container zur Gruppierung von Einträgen.
Tresortypen:
- Unternehmenstresore — gemeinsamer Speicher mit konfigurierbaren Zugriffsrechten
- Persönliche Tresore — individueller Benutzerspeicher
Tresorattribute:
| Attribut | Beschreibung |
|---|---|
| Name | Tresorname |
| Beschreibung | Textbeschreibung |
| Tresorschlüssel | Symmetrischer Schlüssel zur Verschlüsselung von Einträgen |
| Zugriffsrechte | Liste der Benutzer und ihrer Rollen |
| Einstellungen | Limits, Richtlinien und andere Parameter |
Ebene 3: Ordner und Einträge
Ordner dienen zur logischen Organisation von Einträgen innerhalb eines Tresors. Ordner können verschachtelt sein (unbegrenzte Tiefe). Ordner haben keine eigenen Verschlüsselungsschlüssel.
Ein Eintrag ist eine Einheit zur Speicherung geheimer Informationen.
Ebene 4: Felder und Anhänge
Jeder Eintrag enthält eine Reihe von Feldern und kann Anhänge (Dateien) haben.
Eintragsstruktur
Eintragsfelder
Ein Eintrag enthält:
- Standardfelder: Name, Login, Passwort, URL, Beschreibung, Tags, Farbe
- Benutzerdefinierte Felder: beliebige Name-Wert-Paare
- TOTP-Geheimnis: für Zwei-Faktor-Authentifizierung
- Anhänge: angehängte Dateien
Nicht alle Felder werden auf dem Client verschlüsselt — einige sind nur durch Server-seitige Verschlüsselung geschützt, um Suche und Sortierung zu ermöglichen. Eine detaillierte Feldverschlüsselungstabelle finden Sie im Abschnitt Verschlüsselungsumfang.
Objekt-zu-Schlüssel-Beziehung
Jede Hierarchieebene hat ihren eigenen Verschlüsselungsschlüssel.
Schlüsselstruktur
Die Objekthierarchie und ihre kryptografischen Schlüssel bilden einen Baum:
Benutzer hat einen Masterschlüssel (abgeleitet aus dem Masterpasswort über PBKDF2) und ein RSA-Schlüsselpaar (öffentlich + privat, verschlüsselt mit dem Masterschlüssel).
Tresor hat einen Tresorschlüssel (256 Bit). Für jeden Benutzer mit Zugang wird eine Kopie des Tresorschlüssels erstellt, verschlüsselt mit dessen öffentlichem RSA-Schlüssel.
Eintrag hat einen Eintragschlüssel, verschlüsselt mit dem Tresorschlüssel.
Eintragsdaten (Passwortfeld, benutzerdefinierte Felder, TOTP) werden mit dem Eintragschlüssel verschlüsselt.
Anhänge haben einen eigenen Anhangsschlüssel, verschlüsselt mit dem Eintragschlüssel. Der Dateiinhalt wird mit dem Anhangsschlüssel verschlüsselt.
Schlüssel nach Ebene
| Ebene | Objekt | Schlüssel | Schlüsseltyp | Geschützt durch |
|---|---|---|---|---|
| 1 | Benutzer | Masterschlüssel | Symmetrisch, 512 Bit | PBKDF2 aus Masterpasswort |
| 1 | Benutzer | RSA-Schlüssel | Asymmetrisch, 2048 Bit | Privater Schlüssel verschlüsselt mit Masterschlüssel |
| 2 | Tresor | Tresorschlüssel | Symmetrisch, 256 Bit | RSA-Schlüssel jedes Benutzers |
| 3 | Eintrag | Eintragschlüssel | Symmetrisch | Tresorschlüssel |
| 4 | Anhang | Anhangsschlüssel | Symmetrisch, 256 Bit | Eintragschlüssel |
Datenlebenszyklus
Erstellen eines Eintrags
- Benutzer erstellt einen Eintrag in einem Tresor
- Ein zufälliger Eintragschlüssel (256 Bit) wird generiert
- Verschlüsselte Felder (Passwort, benutzerdefinierte Felder, TOTP) werden mit dem Eintragschlüssel verschlüsselt (AES-256-CBC)
- Der Eintragschlüssel wird mit dem Tresorschlüssel verschlüsselt
- Daten werden an den Server gesendet
- Der Server wendet die Server-seitige Verschlüsselung (AES-256-CFB) vor dem Speichern in der Datenbank an
Hinzufügen eines Anhangs
- Benutzer hängt eine Datei an einen Eintrag an
- Ein zufälliger Anhangsschlüssel (256 Bit) wird generiert
- Die Datei wird mit dem Anhangsschlüssel verschlüsselt (AES-256-CBC)
- Der Anhangsschlüssel wird mit dem Eintragschlüssel verschlüsselt
- Verschlüsselte Datei und verschlüsselter Schlüssel werden an den Server gesendet
Lesen eines Eintrags
- Client fordert den Eintrag vom Server an
- Server entschlüsselt die Server-seitige Verschlüsselung und sendet die Daten
- Client entschlüsselt den Tresorschlüssel mit seinem privaten RSA-Schlüssel (WebCrypto)
- Entschlüsselt den Eintragschlüssel mit dem Tresorschlüssel (AES-256-CBC)
- Entschlüsselt die Eintragsfelder mit dem Eintragschlüssel (AES-256-CBC)
- Für Anhänge: entschlüsselt den Anhangsschlüssel → entschlüsselt die Datei
Modelleigenschaften
Schlüsselisolierung
- Die Kompromittierung eines Eintrags gibt keine anderen Einträge preis
- Die Kompromittierung eines Anhangs gibt keine anderen Anhänge preis
- Jedes Objekt hat einen einzigartigen Verschlüsselungsschlüssel
Granularer Zugriff
- Zugang zu einem Tresor gewährt Zugriff auf alle darin enthaltenen Einträge
- Zugang zu einem einzelnen Eintrag ist ohne Tresorzugang möglich (Abschnitt „Posteingang")
- Externe Links ermöglichen das Teilen eines Eintrags ohne Konto
Feldverschlüsselung
Detaillierte Informationen darüber, welche Felder auf dem Client und welche nur auf dem Server verschlüsselt werden, finden Sie im Abschnitt Verschlüsselungsumfang.