Zum Hauptinhalt springen

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.

Wichtig

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).

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.

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ürzungBedeutungBeschreibung
CSEClient-Side EncryptionVerschlüsselung auf dem Client
E2EEnd-to-End EncryptionEnde-zu-Ende-Verschlüsselung
PBKDF2Password-Based Key Derivation Function 2Passwortbasierte Schlüsselableitungsfunktion
AESAdvanced Encryption StandardSymmetrischer Verschlüsselungsalgorithmus
RSARivest–Shamir–AdlemanAsymmetrischer Verschlüsselungsalgorithmus
OAEPOptimal Asymmetric Encryption PaddingPadding-Schema für RSA
CFBCipher FeedbackCipher-Feedback-Modus
CBCCipher Block ChainingCipher-Block-Chaining-Modus
IVInitialization VectorInitialisierungsvektor
TOTPTime-based One-Time PasswordZeitbasiertes Einmalpasswort
TTLTime To LiveToken-Lebensdauer