Lokaler Browserspeicher
Passwork ermöglicht das Speichern des Masterschlüssels im Browser, um die Eingabe des Masterpassworts bei jeder Anmeldung zu vermeiden. Zum Schutz wird der Local Storage Secret Code verwendet — ein vom Server generiertes Token.
Der gespeicherte Masterschlüssel ist durch ein Token geschützt, das nur nach erfolgreicher Basisauthentifizierung ausgestellt wird. Ohne Kontozugang ist es unmöglich, Daten aus dem localStorage zu entschlüsseln.
Local Storage Secret Code
Was es ist
Der Local Storage Secret Code ist ein zufälliges Token, das:
- Vom Server bei der Erstellung eines Benutzers generiert wird
- Dem Client nach erfolgreicher Authentifizierung ausgestellt wird
- Zur Verschlüsselung des Masterschlüssels im localStorage verwendet wird
Eigenschaften
| Parameter | Webanwendung | Browsererweiterung |
|---|---|---|
| Länge | 100 Zeichen | 60 Zeichen |
| Alphabet | A-Z, a-z, 0-9 | A-Z, a-z, 0-9 |
| Entropie | ~596 Bit | ~357 Bit |
| Generierung | Auf dem Server | Auf dem Server |
| Token-Speicherung | Auf dem Server | Auf dem Server |
Lebenszyklus
- Erstellung — bei der Benutzerregistrierung generiert der Server den Secret Code
- Ausstellung — bei jeder erfolgreichen Authentifizierung sendet der Server den Secret Code an den Client
- Verwendung — Client verschlüsselt den Masterschlüssel und speichert ihn im localStorage
- Rotation — Der Secret Code kann vom Administrator regeneriert werden
Prozess der Masterschlüssel-Speicherung
Speicherungssequenz:
- Benutzer aktiviert die Option „Masterpasswort merken"
- Benutzer gibt das Masterpasswort ein
- Client berechnet den Masterschlüssel (PBKDF2, 300.000 Iterationen, SHA-256)
- Client sendet den Masterschlüssel-Hash zur Überprüfung an den Server
- Server bestätigt die Korrektheit und gibt den Local Storage Secret Code zurück
- Client verschlüsselt den Masterschlüssel mit dem Secret Code (AES-256-CBC)
- Verschlüsselter Masterschlüssel wird im localStorage gespeichert
- Der Secret Code wird nicht im localStorage gespeichert
Verschlüsselungsalgorithmus
| Parameter | Wert |
|---|---|
| Algorithmus | AES-256-CBC |
| Padding | PKCS#7 |
| Schlüssel | Local Storage Secret Code (100 Zeichen → 256 Bit) |
| IV | Automatisch generiert (128 Bit) |
Was im localStorage gespeichert wird
| Daten | Format | Schutz |
|---|---|---|
| Verschlüsselter Masterschlüssel | Base64-Zeichenfolge | AES-256-CBC |
| Benutzer-ID | Zeichenfolge | — |
| Anwendungseinstellungen | JSON | — |
- Masterpasswort (niemals)
- Local Storage Secret Code (wird bei jeder Authentifizierung ausgestellt)
- Unverschlüsselter Masterschlüssel
- Privater RSA-Schlüssel
Prozess der Masterschlüssel-Wiederherstellung
Automatische Anmeldesequenz:
- Benutzer öffnet die Anwendung
- Client prüft, ob ein verschlüsselter Masterschlüssel im localStorage vorhanden ist
- Falls Schlüssel vorhanden — Client merkt ihn sich für die spätere Entschlüsselung
- Benutzer schließt die Basisauthentifizierung ab (Login/Passwort)
- Server überprüft die Anmeldedaten
- Server gibt Zugriffstoken und Local Storage Secret Code zurück
- Client entschlüsselt den Masterschlüssel mit dem Secret Code (AES-256-CBC)
- Masterschlüssel ist wiederhergestellt — Eingabe des Masterpassworts ist nicht erforderlich
Bedingungen für automatische Anmeldung
Die automatische Wiederherstellung des Masterschlüssels ist möglich, wenn:
| Bedingung | Beschreibung |
|---|---|
| Schlüsselvorhandensein | localStorage enthält verschlüsselten Masterschlüssel |
| Authentifizierung | Benutzer hat die Basisauthentifizierung abgeschlossen |
| Gültiger Secret Code | Server hat korrekten Secret Code zurückgegeben |
| Erfolgreiche Entschlüsselung | Daten sind nicht beschädigt |
Sicherheitsmodell
Bedrohungsschutz
| Bedrohung | Schutz |
|---|---|
| localStorage-Diebstahl | Daten sind verschlüsselt, Verschlüsselungsschlüssel ist auf dem Server |
| XSS-Angriff | Secret Code wird nicht auf dem Client gespeichert |
| Sitzungsdiebstahl | Basisauthentifizierung erforderlich |
| Physischer Gerätezugriff | Kontopasswort erforderlich |
Grundprinzip
Ohne erfolgreiche Serverauthentifizierung ist die Entschlüsselung des Masterschlüssels unmöglich.
Selbst wenn ein Angreifer:
- Zugang zum localStorage erhält
- Den verschlüsselten Masterschlüssel extrahiert
- Zugang zum Dateisystem des Geräts erhält
Er kann die Daten nicht entschlüsseln ohne:
- Kontopasswort (oder SSO/LDAP-Zugang)
- Erfolgreiche Serverauthentifizierung
- Erhalt des Secret Codes vom Server
Einschränkungen
| Szenario | Risiko |
|---|---|
| Gemeinsam genutztes Gerät | Ein anderer Benutzer kann nach seiner Authentifizierung Zugang erhalten |
| Browser-Synchronisierung | Verschlüsselter Schlüssel wird zwischen Geräten synchronisiert |
| Serverkompromittierung | Angreifer könnte Secret Code erhalten |
Verwaltung gespeicherter Daten
Funktion deaktivieren
Der Benutzer kann:
- „Masterpasswort merken" in den Einstellungen deaktivieren
- Daten werden aus dem localStorage gelöscht
Erzwungener Reset
Der Administrator kann:
- Den Secret Code des Benutzers regenerieren
- Alle gespeicherten Masterschlüssel werden ungültig
- Der Benutzer muss das Masterpasswort erneut eingeben
Abmeldung
Bei der Abmeldung:
- Sitzungstoken werden gelöscht
- Verschlüsselter Masterschlüssel kann im localStorage verbleiben (für die nächste Anmeldung)
- Der Benutzer kann optional „Abmelden und vergessen" wählen
Sicherheitsempfehlungen
Wann „Merken" verwenden
Empfohlen:
- Auf persönlichem Gerät mit Passwort/Biometrie
- Für die tägliche Nutzung von Passwork
- Wenn Komfort wichtig ist und das Gerät geschützt ist
Nicht empfohlen:
- Auf gemeinsam genutzten/öffentlichen Geräten
- Bei strengen Sicherheitsanforderungen
- Wenn das Gerät verloren gehen oder gestohlen werden könnte
Organisationsrichtlinien
Der Administrator kann:
- Die „Merken"-Funktion auf Richtlinienebene deaktivieren
- Die Gültigkeitsdauer des gespeicherten Schlüssels begrenzen
- Eine regelmäßige erneute Eingabe des Masterpassworts erfordern
Speicherschutz
In-Memory-Verschleierung
Neben der localStorage-Verschlüsselung verwendet Passwork einen Mechanismus zum Schutz von Passwörtern im Browserspeicher:
| Methode | Beschreibung |
|---|---|
| Aufteilen | Passwort wird in zufällige Teile aufgeteilt |
| Verschleierung | Jeder Teil wird verschleiert (Zeichenverschiebung) |
| Mischen | Teile werden in zufälliger Reihenfolge gespeichert |
| Wiederherstellung | Wiederherstellungsreihenfolge wird separat gespeichert |
Dies ist Verschleierung, kein kryptografischer Schutz. Es erschwert das einfache Lesen des Speichers (z. B. in Dumps), schützt aber nicht vor gezielten Angriffen mit einem Debugger.
Unterschiede bei der Browsererweiterung
Die Browsererweiterung weist Implementierungsunterschiede auf:
| Parameter | Webanwendung | Erweiterung |
|---|---|---|
| Secret-Code-Länge | 100 Zeichen (~596 Bit) | 60 Zeichen (~357 Bit) |
| Speicherung | localStorage | chrome.storage.local |
| Isolation | Gemeinsame Domain | Isolierte Erweiterung |
| XSS-Schutz | Abhängig von CSP | Vollständige Isolation |
Vorteile der Erweiterung
- Isolierter Speicher — von Webseiten nicht zugänglich
- Separater Ausführungskontext — Schutz vor bösartigen Skripten
- XSS-Schutz — besuchte Websites können nicht auf Erweiterungsdaten zugreifen