Glossar der Begriffe
Definitionen der Schlüsselbegriffe in der Kryptografie-Dokumentation von Passwork.
Kernentitäten
Tresor
Ein Tresor ist ein Container zur Speicherung von Einträgen. Jeder Tresor hat seinen eigenen symmetrischen Verschlüsselungsschlüssel (Tresorschlüssel), der alle darin enthaltenen Einträge schützt. Tresore können unternehmensweite (gemeinsame) oder persönliche sein.
Eintrag
Ein Eintrag ist eine Einheit zur Speicherung geheimer Informationen. Jeder Eintrag enthält eine Reihe von Feldern: Name, Login, Passwort, URL, Beschreibung, Tags, benutzerdefinierte Felder und Anhänge. Ein Eintrag wird mit seinem eigenen Eintragschlüssel verschlüsselt.
Der Begriff „Passwort" kann im Passwork-Kontext entweder den Eintrag selbst oder ein bestimmtes Feld innerhalb des Eintrags bezeichnen. In dieser Dokumentation verwenden wir „Eintrag" für die Entität und „Passwortfeld" für das spezifische Feld.
Eintragsfeld
Ein Feld ist ein einzelnes Datenelement innerhalb eines Eintrags. Felder werden unterteilt in:
- Standardfelder: Name, Login, Passwort, URL, Beschreibung, Tags
- Benutzerdefinierte Felder: beliebige Name-Wert-Paare, die vom Benutzer hinzugefügt werden
- TOTP-Geheimnis: Geheimnis zur Generierung von Einmalpasswörtern (Zwei-Faktor-Authentifizierung)
Anhang
Ein Anhang ist eine an einen Eintrag angehängte Datei. Jeder Anhang wird mit seinem eigenen Anhangsschlüssel (AES-256-CBC) verschlüsselt, der wiederum durch den Eintragschlüssel geschützt ist.
Ordner
Ein Ordner dient zur Organisation von Einträgen innerhalb eines Tresors. Ordner haben keine eigenen Verschlüsselungsschlüssel; Einträge in Ordnern werden mit dem Tresorschlüssel verschlüsselt.
Benutzer und Authentifizierung
Masterpasswort
Das Masterpasswort ist das geheime Passwort des Benutzers, das nur ihm bekannt ist. Es wird verwendet, um den Masterschlüssel über den PBKDF2-Algorithmus abzuleiten. Das Masterpasswort wird niemals an den Server übertragen und niemals im Klartext gespeichert.
Benutzer-Masterschlüssel
Der Benutzer-Masterschlüssel ist ein kryptografischer 512-Bit-Schlüssel, der aus dem Masterpasswort mithilfe der PBKDF2-Funktion (300.000 Iterationen, SHA-256) abgeleitet wird. Er wird verwendet für:
- Verschlüsselung des privaten RSA-Schlüssels des Benutzers (AES-256-CBC)
- Überprüfung der Korrektheit des Masterpassworts (über SHA-256-Hash)
Masterschlüssel-Hash
Der Masterschlüssel-Hash ist ein SHA-256-Hash des Benutzer-Masterschlüssels. Er wird an den Server gesendet, um die Korrektheit des eingegebenen Masterpassworts zu überprüfen. Der Server vergleicht den empfangenen Hash mit dem gespeicherten Wert.
Salt
Salt ist eine zufällige 20-Zeichen-Zeichenfolge, die für jeden Benutzer einzigartig ist. Sie wird im PBKDF2-Algorithmus zusammen mit dem Masterpasswort verwendet, um den Masterschlüssel abzuleiten. Das Salt wird auf dem Server gespeichert und während der Authentifizierung an den Client übermittelt.
Benutzer-RSA-Schlüssel
Ein Paar asymmetrischer 2048-Bit-RSA-Schlüssel, generiert über die WebCrypto API:
- Öffentlicher Schlüssel — wird auf dem Server im Klartext gespeichert. Wird zur Verschlüsselung von Tresorschlüsseln bei der Zugangsgewährung verwendet.
- Privater Schlüssel — wird auf dem Server in verschlüsselter Form gespeichert (verschlüsselt mit dem Masterschlüssel, AES-256-CBC). Wird zur Entschlüsselung von Tresorschlüsseln verwendet.
Verschlüsselungsschlüssel
Tresorschlüssel
Der Tresorschlüssel ist ein zufälliger symmetrischer 256-Bit-Schlüssel, der bei der Erstellung eines Tresors generiert wird. Er wird zur Verschlüsselung von Eintragschlüsseln innerhalb des Tresors verwendet (AES-256-CBC). Für jeden Benutzer mit Zugang zum Tresor wird eine Kopie des Tresorschlüssels erstellt, die mit dessen öffentlichem RSA-Schlüssel (RSA-OAEP) verschlüsselt wird.
Eintragschlüssel
Der Eintragschlüssel ist ein zufälliger symmetrischer 256-Bit-Schlüssel, der individuell für jeden Eintrag generiert wird. Er wird zur Verschlüsselung des Eintragsinhalts (Passwortfeld, benutzerdefinierte Felder, TOTP) und der Anhangsschlüssel verwendet (AES-256-CBC). Der Eintragschlüssel wird mit dem Tresorschlüssel verschlüsselt. Für jede Verschlüsselungsoperation wird automatisch ein eindeutiger Initialisierungsvektor (IV) generiert.
Anhangsschlüssel
Der Anhangsschlüssel ist ein zufälliger symmetrischer 256-Bit-Schlüssel, der für jede Datei generiert wird. Er wird zur Verschlüsselung des binären Dateiinhalts verwendet (AES-256-CBC). Der Anhangsschlüssel wird mit dem Eintragschlüssel verschlüsselt.
Serververschlüsselungsschlüssel
Der Serverschlüssel ist ein symmetrischer 256-Bit-Schlüssel, der auf dem Server in einer Datei gespeichert wird. Er wird für die zusätzliche Datenverschlüsselung vor dem Speichern in der Datenbank verwendet (AES-256-CFB über OpenSSL).
Token und Sitzungen
Access Token
Das Access Token ist ein 256-Bit-Zugriffstoken (44 Base64-Zeichen). Es wird zur Authentifizierung von API-Anfragen verwendet. Standardlebensdauer: ~2,8 Stunden (10.000 Sekunden).
Refresh Token
Das Refresh Token ist ein 256-Bit-Erneuerungstoken. Es wird verwendet, um ein neues Access Token ohne erneute Eingabe von Anmeldedaten zu erhalten. Standardlebensdauer: 36 Stunden (129.600 Sekunden).
Local Storage Secret Code
Der Local Storage Secret Code ist ein zufälliges Token (~596 Bit Entropie), das vom Server bei der Erstellung eines Benutzers generiert wird. Er wird zur Verschlüsselung des Masterschlüssels beim Speichern im localStorage des Browsers verwendet (Funktion „Masterpasswort merken"). Die Verschlüsselung erfolgt über AES-256-CBC.
Verschlüsselungsmodi
Client-seitige Verschlüsselung (CSE)
Client-seitige Verschlüsselung ist ein Betriebsmodus, bei dem Daten im Browser des Benutzers verschlüsselt werden, bevor sie an den Server gesendet werden. Sie implementiert das Zero-Knowledge-Prinzip: Der Server hat keinen Zugriff auf entschlüsselte Daten. Verwendet AES-256-CBC.
Server-seitige Verschlüsselung
Server-seitige Verschlüsselung ist eine zusätzliche Schutzebene, bei der Daten auf dem Server verschlüsselt werden, bevor sie in die Datenbank geschrieben werden. Sie ist immer aktiv, unabhängig von den Einstellungen der Client-seitigen Verschlüsselung. Verwendet AES-256-CFB über OpenSSL.
Zero-Knowledge
Zero-Knowledge ist ein Prinzip, bei dem der Server nicht über ausreichend Informationen verfügt, um Benutzerdaten zu entschlüsseln. Alle kryptografischen Operationen werden auf der Client-Seite durchgeführt.
Ende-zu-Ende-Verschlüsselung (E2E)
Ende-zu-Ende-Verschlüsselung ist eine Verschlüsselung, bei der Daten auf dem Gerät des Absenders verschlüsselt und nur auf dem Gerät des Empfängers entschlüsselt werden. In Passwork wird sie durch den Schlüsselaustausch über RSA-OAEP implementiert.
Datenfreigabe
Interne Freigabe
Interne Freigabe ist die Gewährung von Zugang zu einem Tresor oder Eintrag für einen anderen Passwork-Benutzer. Der Schlüssel wird mit dem öffentlichen RSA-Schlüssel des Empfängers verschlüsselt (RSA-OAEP über WebCrypto).
Externer Link
Ein externer Link ist eine Möglichkeit, einen Eintrag mit jemandem ohne Passwork-Konto zu teilen. Es wird eine Kopie des Eintrags erstellt, die mit einem speziellen Link-Schlüssel (AES-256-CBC) verschlüsselt wird. Das Link-Token ist in der URL eingebettet.
Link-Token
Das Link-Token ist eine zufällige 43-Zeichen-Zeichenfolge (~256 Bit), die zur Identifizierung des externen Links und zum Zugriff auf verschlüsselte Daten verwendet wird.
Kryptografische Algorithmen
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) ist ein Algorithmus zur Ableitung eines kryptografischen Schlüssels aus einem Passwort. Er verwendet ein Salt und eine große Anzahl von Iterationen zum Schutz vor Brute-Force-Angriffen.
Parameter in Passwork:
- Client: 300.000 Iterationen, SHA-256, 512 Bit
- Server: 600.000 Iterationen, SHA-512, 512 Bit
AES-256-CFB
AES-256-CFB ist eine symmetrische 256-Bit-Blockchiffre im CFB-Modus (Cipher Feedback). Wird für die Server-seitige Datenverschlüsselung über OpenSSL verwendet.
AES-256-CBC
AES-256-CBC ist eine symmetrische 256-Bit-Blockchiffre im CBC-Modus (Cipher Block Chaining). Wird für die Client-seitige Verschlüsselung verwendet.
RSA-OAEP
RSA-OAEP ist ein asymmetrischer Verschlüsselungsalgorithmus mit Optimal Asymmetric Encryption Padding. Passwork verwendet 2048-Bit-Schlüssel mit SHA-256-Hashfunktion. Implementiert über die WebCrypto API.
CryptoJS AES
CryptoJS AES ist eine Bibliothek für AES-Verschlüsselung auf dem Client. Verwendet den CBC-Modus mit PKCS#7-Padding und einer integrierten Schlüsselableitungsfunktion. Die Ausgabe wird in Base32 kodiert.
Abkürzungen
| Abkürzung | Bedeutung | Beschreibung |
|---|---|---|
| CSE | Client-Side Encryption | Verschlüsselung auf dem Client |
| E2E | End-to-End Encryption | Ende-zu-Ende-Verschlüsselung |
| PBKDF2 | Password-Based Key Derivation Function 2 | Passwortbasierte Schlüsselableitungsfunktion |
| AES | Advanced Encryption Standard | Symmetrischer Verschlüsselungsalgorithmus |
| RSA | Rivest–Shamir–Adleman | Asymmetrischer Verschlüsselungsalgorithmus |
| OAEP | Optimal Asymmetric Encryption Padding | Padding-Schema für RSA |
| CFB | Cipher Feedback | Cipher-Feedback-Modus |
| CBC | Cipher Block Chaining | Cipher-Block-Chaining-Modus |
| IV | Initialization Vector | Initialisierungsvektor |
| TOTP | Time-based One-Time Password | Zeitbasiertes Einmalpasswort |
| TTL | Time To Live | Token-Lebensdauer |