Zum Hauptinhalt springen

Authentifizierung und Masterschlüssel

Die Authentifizierung in Passwork besteht aus zwei Stufen: Basisauthentifizierung und Masterpasswort-Überprüfung (wenn CSE aktiviert ist).

Zweistufige Authentifizierung

StufeZweckAusführungsort
BasisauthentifizierungÜberprüfung der AnmeldedatenServer
Masterpasswort-ÜberprüfungZugang zu verschlüsselten DatenClient + Server

Stufe 1: Basisauthentifizierung

Lokale Authentifizierung

  1. Benutzer gibt Benutzername und Passwort ein
  2. Server überprüft das Passwort (PBKDF2, 600.000 Iterationen, SHA-512)
  3. Bei Erfolg werden Access Token und Refresh Token ausgestellt
  4. Client speichert Token für nachfolgende Anfragen

Server-Passwort-Hashing-Parameter:

ParameterWert
AlgorithmusPBKDF2
HashfunktionSHA-512
Iterationen600.000
Schlüssellänge512 Bit

SSO / LDAP-Authentifizierung

Mit SSO oder LDAP:

  1. Benutzer wird zum externen Anbieter weitergeleitet
  2. Nach erfolgreicher Authentifizierung kehrt er zu Passwork zurück
  3. System erstellt eine Sitzung und stellt Token aus
  4. Falls CSE aktiviert ist — Eingabe des Masterpassworts wird angefordert

Stufe 2: Masterpasswort-Überprüfung

Bei aktivierter Client-seitiger Verschlüsselung ist nach der Basisauthentifizierung die Eingabe des Masterpassworts erforderlich.

Parameter abrufen

Der Client fordert Parameter vom Server zur Berechnung des Masterschlüssels an:

  • Salt — einzigartig pro Benutzer
  • Iterationsanzahl — 300.000
  • Algorithmustyp — PBKDF2

Masterschlüssel berechnen

Die Schlüsselableitung wird auf dem Client durchgeführt:

ParameterWert
AlgorithmusPBKDF2
HashfunktionSHA-256
Iterationen300.000
Schlüssellänge512 Bit
EingabeMasterpasswort + Salt
AusgabeMasterschlüssel (Base64)

Überprüfungshash berechnen

Zur Bestätigung der korrekten Eingabe wird ein Hash des Masterschlüssels berechnet:

ParameterWert
AlgorithmusSHA-256
EingabeMasterschlüssel (512 Bit)
AusgabeHash (256 Bit, Hex-Zeichenfolge)

Serverüberprüfung

Der Server vergleicht den empfangenen Hash mit dem gespeicherten Wert.

Warum einfacher Hash-Vergleich?
  • Der Hash wird auf dem Client aus einem kryptografisch starken 512-Bit-Schlüssel berechnet
  • Der Server kennt den ursprünglichen Masterschlüssel nicht
  • Zusätzliches Server-seitiges Hashing bringt in diesem Zero-Knowledge-Modell keine zusätzliche Sicherheit

Vollständige Authentifizierungssequenz

Phase 1 — Basisauthentifizierung:

  1. Benutzer gibt Benutzername und Passwort ein
  2. Server überprüft Anmeldedaten (PBKDF2, SHA-512, 600K Iterationen)
  3. Server gibt Zugriffstoken und CSE-Flag zurück

Phase 2 — Masterpasswort (falls CSE aktiviert):

  1. Client fordert PBKDF2-Parameter an (Salt, Iterationen)
  2. Benutzer gibt Masterpasswort ein
  3. Client berechnet Masterschlüssel: PBKDF2(Passwort, Salt, 300K, SHA-256) → 512 Bit
  4. Client berechnet Hash: SHA-256(Masterschlüssel) → 256 Bit
  5. Client sendet Hash an Server
  6. Server vergleicht Hashes
  7. Bei Erfolg gibt der Server den verschlüsselten privaten RSA-Schlüssel zurück

Phase 3 — Schlüsselentschlüsselung:

  1. Client entschlüsselt privaten RSA-Schlüssel mit Masterschlüssel (AES-256-CBC)
  2. Client ist bereit, mit verschlüsselten Daten zu arbeiten
Zero-Knowledge-Prinzip

Das Masterpasswort verlässt niemals den Client. Der Server sieht nur den Masterschlüssel-Hash. Der private RSA-Schlüssel wird nur in verschlüsselter Form übertragen.


Salt-Parameter

ParameterWert
Länge20 Zeichen
AlphabetA-Z, a-z, 0-9, @, ! (64 Zeichen)
Entropie~120 Bit
GenerierungServer, bei Erstellung/Änderung des Masterpassworts
SpeicherungIm Benutzerprofil auf dem Server

Salt-Eigenschaften:

  • Jeder Benutzer hat ein einzigartiges Salt
  • Bei Änderung des Masterpassworts wird ein neues Salt generiert
  • Salt ist nicht geheim, stellt aber die Hash-Einzigartigkeit sicher

Authentifizierungsszenarien

Erste Anmeldung (Masterpasswort festlegen)

  1. Benutzer schließt die Basisauthentifizierung ab
  2. System stellt fest, dass kein Masterpasswort gesetzt ist
  3. Server generiert neues Salt
  4. Benutzer gibt neues Masterpasswort ein
  5. Client führt kryptografische Operationen durch:
    • Berechnet Masterschlüssel (PBKDF2)
    • Generiert RSA-Schlüsselpaar (2048 Bit)
    • Verschlüsselt privaten RSA-Schlüssel mit Masterschlüssel (AES-256-CBC)
    • Berechnet Masterschlüssel-Hash (SHA-256)
  6. Client sendet an Server:
    • Öffentlichen RSA-Schlüssel (offen)
    • Verschlüsselten privaten RSA-Schlüssel
    • Masterschlüssel-Hash

Nachfolgende Anmeldung

  1. Basisauthentifizierung
  2. PBKDF2-Parameter abrufen (Salt, Iterationen)
  3. Masterpasswort eingeben
  4. Masterschlüssel und Hash berechnen
  5. Hash auf dem Server überprüfen
  6. Privaten RSA-Schlüssel entschlüsseln (AES-256-CBC)

Masterpasswort ändern

  1. Benutzer gibt aktuelles Masterpasswort ein
  2. Korrektheitsprüfung (Hash-Vergleich)
  3. Neues Masterpasswort eingeben
  4. Neues Salt wird auf dem Server generiert
  5. Masterschlüssel und Hash neu berechnen
  6. Privaten RSA-Schlüssel mit altem Masterschlüssel entschlüsseln
  7. Privaten RSA-Schlüssel mit neuem Masterschlüssel verschlüsseln (AES-256-CBC)
  8. Neue Daten auf dem Server speichern

Masterpasswort-Reset (durch Administrator)

Datenverlust

Wenn ein Administrator das Masterpasswort zurücksetzt:

  • Ein neues RSA-Schlüsselpaar wird generiert
  • Der Benutzer verliert den Zugang zu zuvor verschlüsselten Daten
  • Die erneute Gewährung von Tresorzugang ist erforderlich
  1. Administrator initiiert den Reset
  2. Kryptografische Daten des Benutzers werden gelöscht
  3. Benutzer legt ein neues Masterpasswort fest
  4. Neue RSA-Schlüssel werden generiert
  5. Tresoradministratoren müssen den Zugang erneut gewähren

Bedrohungsmodell und Schutz

Schutz des Masterpassworts

BedrohungSchutz
Abfangen bei der EingabeMasterpasswort wird nur im Browser verarbeitet
Abfangen bei der ÜbertragungNur Masterschlüssel-Hash wird an den Server gesendet
Brute-Force-AngriffPBKDF2 mit 300.000 Iterationen
Rainbow-TabellenEinzigartiges Salt pro Benutzer
ServerkompromittierungServer speichert weder Masterpasswort noch Masterschlüssel

Schutz des Masterschlüssel-Hashs

BedrohungSchutz
Hash-LeckHash wird aus 512-Bit-Schlüssel berechnet (nicht aus Passwort)
Hash-basiertes ErratenPBKDF2 macht jeden Versuch rechenintensiv
PasswortwiederherstellungZuerst muss der Schlüssel, dann das Passwort erraten werden

Sitzungsschutz

ParameterAccess TokenRefresh Token
Lebensdauer~2,8 Stunden36 Stunden
ZweckAnfragenauthentifizierungAccess-Token-Erneuerung
SpeicherungSicherer Browser-SpeicherSicherer Browser-Speicher

Fehlerbehandlung

Falsches Masterpasswort

  1. Berechneter Hash stimmt nicht mit gespeichertem Wert überein
  2. Server gibt Fehler zurück
  3. Client fordert zur erneuten Eingabe auf
  4. Versuchslimits möglich (vom Administrator konfigurierbar)

Fehlende PBKDF2-Parameter

Wenn Parameter nicht gefunden werden — Masterpasswort ist nicht gesetzt, Ersteinrichtung erforderlich.

RSA-Schlüssel kann nicht entschlüsselt werden

Wenn die Entschlüsselung des privaten RSA-Schlüssels fehlschlägt — falsches Masterpasswort oder beschädigte Daten.


Kryptografische Zusammenfassung

OperationAlgorithmusParameter
Passwort-Hashing (Server)PBKDF2-SHA512600.000 Iterationen
Masterschlüssel-Ableitung (Client)PBKDF2-SHA256300.000 Iterationen, 512 Bit
ÜberprüfungshashSHA-256256 Bit
RSA-Schlüssel-VerschlüsselungAES-256-CBCMasterschlüssel
RSA-Schlüssel-GenerierungRSA-OAEP2048 Bit, SHA-256