Technische Details
Allgemeiner Überblick
Der Offline-Zugriff in Passwork ist ein lokaler Cache einzelner Elemente, keine vollständige Kopie des Tresors bzw. der Tresore. Er wird nach Authentifizierung und Synchronisierung mit dem Server aufgebaut.
So funktioniert es:
- Passwork führt eine Liste ausgewählter Elemente, die dem Offline-Zugriff hinzugefügt wurden.
- Die Desktop-Anwendung empfängt diese Liste über die API.
- Ausgewählte Elemente werden lokal gespeichert.
- Das Passwort und die benutzerdefinierten Felder des Elements werden vor dem Speichern mit einem separaten lokalen Schlüssel verschlüsselt.
- Geht die Verbindung zum Server verloren, verwendet die Anwendung den lokalen Cache.
- Nach Wiederherstellung der Verbindung sendet die Anwendung angesammelte Ereignisse und aktualisiert die lokalen Daten.
Fenster bei nicht verfügbarem Server
Während der Ausführung überwacht die Desktop-Anwendung separat den Netzwerkstatus und die Verfügbarkeit des Passwork-Servers. Ein Verlust der Internetverbindung, ein nicht verfügbares VPN, ein API-Anfrage-Timeout oder ein anderer Transportfehler schaltet die Anwendung nicht automatisch in den Offline-Modus. Zuerst sendet die Anwendung eine Kontrollanfrage an den Server, um einen vorübergehenden Ausfall auszuschließen.
Ist der Server weiterhin nicht verfügbar, öffnet sich das Fenster Verbindungsfehler. Es zeigt die aktuelle Host-Adresse und eine Liste technischer Ursachen zur Prüfung. Das Fenster kann nicht durch Klicken auf den Hintergrund geschlossen werden. Der Benutzer muss die nächste Aktion ausdrücklich wählen.
Im Fenster stehen folgende Aktionen zur Verfügung:
- Verbinden — sendet die Kontrollanfrage erneut an den Server. Antwortet der Server erfolgreich, schließt die Anwendung das Fenster und setzt die Online-Sitzung fort.
- Offline-Modus — nur für Benutzer verfügbar, denen der Offline-Zugriff erlaubt ist. Die Anwendung schließt das Fenster, wechselt die Oberfläche in den Offline-Modus und sendet bis zur erneuten Verbindung keine Serveranfragen mehr.
- Abmelden — führt eine lokale Abmeldung ohne Kontakt zum Server durch. Die Anwendung bricht aktive Anfragen ab, löscht die lokale Sitzung und führt den Benutzer zum Anmeldebildschirm zurück.
Nach dem Wechsel in den Offline-Modus zeigt die obere Leiste an, dass der Server nicht verfügbar ist, und zeigt eine Schaltfläche zur erneuten Verbindung. Diese Schaltfläche prüft die Serververfügbarkeit erneut, aktualisiert die Sitzung und kehrt erst nach erfolgreicher Antwort in den Online-Modus zurück.
Ein Kaltstart ohne Netzwerkverbindung wird separat behandelt: Wenn der Offline-Zugriff zuvor aktiviert wurde, stellt die Anwendung gespeicherte Authentifizierungsdaten aus dem lokalen Speicher wieder her und öffnet die Offline-Oberfläche, ohne dieses Fenster anzuzeigen.
Speicherort des Caches
Offline-Daten werden in derselben lokalen Datenbankdatei gespeichert wie andere Passwork-Dienstdaten:
- Windows —
%APPDATA%\@passwork\app\app-data.db; - macOS —
~/Library/Application Support/@passwork/app/app-data.db; - Linux —
~/.config/@passwork/app/app-data.db(oder der Pfad ausXDG_CONFIG_HOME).
Wie Daten verschlüsselt werden
Der Offline-Zugriff verwendet zwei Schutzebenen.
Verschlüsselung lokaler Elemente
Sensible Werte in app-data.db werden über safeStorage gespeichert. Dies ist ein Wrapper über den Geheimnisspeicher des Betriebssystems:
- Windows — DPAPI / Credential Manager, an das Benutzerkonto gebunden;
- macOS — Keychain;
- Linux — kompatibler Secret Service (GNOME Keyring, KWallet usw.).
Verschlüsselungsschlüssel werden vom Betriebssystem verwaltet und nicht in Anwendungsdateien gespeichert. In app-data.db werden nur verschlüsselte Base64-Werte geschrieben.
Verschlüsselung von Elementfeldern
Vor dem Speichern jedes Elements verschlüsselt die Anwendung zusätzlich dessen geheimen Teil: den Passwortwert und die benutzerdefinierten Felder.
Für den lokalen Offline-Cache erzeugt die Anwendung einen separaten AES-256-Schlüssel und speichert ihn in safeStorage. Der geheime Teil des Elements wird anschließend mit AES-GCM verschlüsselt und in der lokalen Kopie gespeichert.
Was gespeichert wird
Für jedes synchronisierte Element:
- Identifikatoren des Elements und zugehöriger Entitäten;
- Name;
- Login;
- URLs;
- Tags;
- Notiz;
- Farbe;
- Verzeichnis;
- verschlüsselter Passwortwert;
- verschlüsselte benutzerdefinierte Felder.
Passwort und benutzerdefinierte Felder werden mit einer zusätzlichen AES-256-Schicht verschlüsselt. Andere Daten werden als Metadaten der lokalen Kopie gespeichert und über safeStorage geschützt.
Was nicht gespeichert wird
Der lokale Cache ist keine vollständige Kopie aller mit einem Element verbundenen Daten. Folgendes wird nicht gespeichert:
- Anhänge;
- Elementversionen;
- Aktionsverlauf des Elements;
- Tresor- und Ordnerstruktur;
- Elementsymbole.
Zustände der lokalen Kopie
Ein Offline-Element hat einen Zustand, der bestimmt, ob es ohne Netzwerkverbindung geöffnet werden kann:
| Zustand | Bedeutung |
|---|---|
synchronized | Das Element ist lokal gespeichert und zur Ansicht verfügbar. |
not_synchronized | Das Element steht in der Offline-Liste, aber die lokale Kopie wurde nicht synchronisiert. |
revoked | Der Zugriff auf das Element wurde auf dem Server widerrufen. |
exceeded | Das Element überschreitet das Mengenlimit der Rolle. |
outdated | Die lokale Kopie ist gemäß der Regel retentionHours veraltet. |
Zustände werden in der Anwendung nicht angezeigt — sie sind interne Logik bei der Arbeit mit Offline-Elementen.
Der Zustand outdated wird lokal berechnet: Die Anwendung vergleicht die aktuelle Zeit mit der letzten Synchronisierung und dem Zeitpunkt, zu dem das Element hinzugefügt wurde. Ist der Offline-Zugriffszeitraum ohne Synchronisierung abgelaufen, gilt das Element als veraltet.
Synchronisierung
Die Synchronisierung läuft nur, wenn die Anwendung online ist.
Bei der ersten Aktivierung des Offline-Modus:
- Die Anwendung speichert das Flag für den aktivierten Offline-Modus.
- Sie empfängt vom Server die Liste der dem Offline-Zugriff hinzugefügten Elemente.
- Sie sendet dem Server die Liste der aktuellen lokalen Versionen.
- Sie empfängt geänderte Elemente und die Liste nicht verfügbarer Elemente.
- Sie aktualisiert den lokalen Elementcache und die Liste für den Offline-Abschnitt.
- Sie speichert den Zeitpunkt der erfolgreichen Synchronisierung.
Bei Wiederherstellung des Netzwerks:
- die Anwendung führt die Synchronisierung erneut aus;
- sie sendet angesammelte Ereignisse;
- sie aktualisiert lokale Elementkopien.
Wenn ein Element aus dem Offline-Zugriff entfernt wurde oder nicht mehr verfügbar ist, löscht die Anwendung seine lokale Kopie bei der nächsten Synchronisierung.
Einschränkungen und Zugriff
Der Offline-Zugriff hängt von den folgenden Rolleneinstellungen ab:
- Passwörter offline speichern
- Offline-Passwörter pro Gerät begrenzen
- Dauer des Offline-Zugriffs ohne Sync begrenzen (in Stunden)
Wenn ein Administrator den Zugriff auf ein Element widerruft oder Benutzerrechte ändert, erfährt die Anwendung dies erst bei der nächsten Serververbindung und Synchronisierung. Bis die Verbindung wiederhergestellt ist, bleibt die zuletzt lokal zwischengespeicherte Version des Elements verfügbar.