Zum Hauptinhalt springen

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:

AttributBeschreibung
NameTresorname
BeschreibungTextbeschreibung
TresorschlüsselSymmetrischer Schlüssel zur Verschlüsselung von Einträgen
ZugriffsrechteListe der Benutzer und ihrer Rollen
EinstellungenLimits, 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

EbeneObjektSchlüsselSchlüsseltypGeschützt durch
1BenutzerMasterschlüsselSymmetrisch, 512 BitPBKDF2 aus Masterpasswort
1BenutzerRSA-SchlüsselAsymmetrisch, 2048 BitPrivater Schlüssel verschlüsselt mit Masterschlüssel
2TresorTresorschlüsselSymmetrisch, 256 BitRSA-Schlüssel jedes Benutzers
3EintragEintragschlüsselSymmetrischTresorschlüssel
4AnhangAnhangsschlüsselSymmetrisch, 256 BitEintragschlüssel

Datenlebenszyklus

Erstellen eines Eintrags

  1. Benutzer erstellt einen Eintrag in einem Tresor
  2. Ein zufälliger Eintragschlüssel (256 Bit) wird generiert
  3. Verschlüsselte Felder (Passwort, benutzerdefinierte Felder, TOTP) werden mit dem Eintragschlüssel verschlüsselt (AES-256-CBC)
  4. Der Eintragschlüssel wird mit dem Tresorschlüssel verschlüsselt
  5. Daten werden an den Server gesendet
  6. Der Server wendet die Server-seitige Verschlüsselung (AES-256-CFB) vor dem Speichern in der Datenbank an

Hinzufügen eines Anhangs

  1. Benutzer hängt eine Datei an einen Eintrag an
  2. Ein zufälliger Anhangsschlüssel (256 Bit) wird generiert
  3. Die Datei wird mit dem Anhangsschlüssel verschlüsselt (AES-256-CBC)
  4. Der Anhangsschlüssel wird mit dem Eintragschlüssel verschlüsselt
  5. Verschlüsselte Datei und verschlüsselter Schlüssel werden an den Server gesendet

Lesen eines Eintrags

  1. Client fordert den Eintrag vom Server an
  2. Server entschlüsselt die Server-seitige Verschlüsselung und sendet die Daten
  3. Client entschlüsselt den Tresorschlüssel mit seinem privaten RSA-Schlüssel (WebCrypto)
  4. Entschlüsselt den Eintragschlüssel mit dem Tresorschlüssel (AES-256-CBC)
  5. Entschlüsselt die Eintragsfelder mit dem Eintragschlüssel (AES-256-CBC)
  6. 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.