Zugangsdaten im verschlüsselten Verzeichnis
Der Server tippt ein Passwort nur aus einer Datei des gocryptfs-Verzeichnisses, das Sie öffnen, nur auf dem genauen Origin, den die Datei nennt, und der Wert erscheint nie in dem, was das Modell erhält.
Das verschlüsselte Verzeichnis öffnen Sie selbst
Der Server liest und schreibt nur in einem Verzeichnis eines gocryptfs-Volumes:
Zugangsdaten, das eigene Browserprofil, das Journal, die Aufnahmen und die
Downloads. Sie öffnen und schließen das Volume; der Server hängt es nie ein oder
aus, führt nie gocryptfs oder fusermount3 aus und kennt nie sein Passwort.
Solange es geschlossen ist, weigert sich der Server zu schreiben, und er hat
keinen Ausweichort ohne Verschlüsselung. Er akzeptiert den Mount nur als
fuse.gocryptfs-Mount seines eigenen Benutzers, ohne die Option allow_other.
mcp-server-diwall-browser-setup erledigt das für Sie, in einem Terminal von Ihnen,
und create schreibt das Bedienerprofil, sobald es das Volume eingehängt gesehen
hat. create --temporary legt für einen Versuch ein Volume im Arbeitsspeicher an,
zerstört durch close, durch das Ausschalten des Rechners oder durch das Ende Ihrer
Sitzung (die Sitzungen der Websites, das Journal und die Aufnahmen gehen mit ihm
verloren); create legt ein dauerhaftes Volume an; open öffnet es wieder; close
beendet den Browser und hängt dann aus. Das Passwort geben Sie an der
Eingabeaufforderung von gocryptfs ein; der Assistent liest es nicht. Ein Volume,
das schon existiert, von einem anderen Rechner kopiert oder von Plasma Vault
angelegt, übernehmen Sie mit create --crypt-dir und --mount-dir: Es wird nicht
initialisiert, nur mit Ihrem Passwort geöffnet. Ohne Argument aufgerufen, nennt der
Befehl, was Ihr Rechner erlaubt, und den nächsten Befehl.
Von Hand, ist das Volume einmal angelegt (gocryptfs -init, dessen
Master-Schlüssel auf Papier oder in einen Passwortmanager gehört, nie in eine
Datei dieser Festplatte), öffnen Sie es und legen beim ersten Mal die
Verzeichnisse des Servers an:
gocryptfs ~/Vaults/Main.enc ~/Vaults/Main
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser/credentials
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser/browser-profile
Zum Schließen schließen Sie zuerst den eigenen Browser, der in seinem Profil Dateien offen hält, dann:
fusermount3 -u ~/Vaults/Main
Nie fusermount3 -u -z: Ein verzögertes Aushängen löst das Verzeichnis, während
ein Prozess noch über den alten Pfad schreiben kann, der dann in das darunter
liegende unverschlüsselte Verzeichnis führt. Das geöffnete Verzeichnis darf in
keine Sicherung gelangen: Schließen Sie es über die Dateisystemgrenze
(rsync --one-file-system) oder in Ihrem Sicherungswerkzeug aus; die
verschlüsselten Dateien können anderswo gesichert werden.
Eine Datei pro Website
Eine Zugangsdatendatei enthält den Benutzernamen und das Passwort einer Website,
in credentials/, im Modus 600. Ihr Name besteht aus Kleinbuchstaben, Ziffern,
., _ und -, höchstens 64 Zeichen, dann .json. Ihre Schlüssel sind
allowed_origins (erforderlich), username und password (mindestens einer
von beiden) und sonst nichts:
{
"allowed_origins": ["https://account.example.invalid"],
"username": "alice",
"password": "replace-with-the-real-password"
}
Schreiben Sie sie mit Ihrem Editor, nie mit echo oder einer Shell-Umleitung,
die das Passwort im Verlauf Ihrer Shell hinterlassen würde:
vim ~/Vaults/Main/mcp-server-diwall-browser/credentials/account.json
chmod 600 ~/Vaults/Main/mcp-server-diwall-browser/credentials/account.json
Der Origin ist genau. Mit dieser Datei erhält eine Seite von
https://account.example.invalid die Zugangsdaten;
http://account.example.invalid, https://account.example.invalid:8443 und
https://www.account.example.invalid erhalten sie nicht
(credential_not_bound). Eine Datei, die einen Platzhalter aufführt, wird
abgelehnt.
Was das Modell tut und was es sieht
Das Modell füllt ein Feld mit einer Referenz, nie mit dem Wert:
{"key": "password"} oder {"key": "password", "name": "account"}, wenn
mehrere Dateien an einen Origin gebunden sind. Der Server liest die Datei in
seinem eigenen Prozess in dem Moment, in dem er tippt, sendet den Wert über die
lokale Debugging-Verbindung an den Browser, und das Ergebnis lautet
<secret:password>. Ein Feld, das der Server für sensibel hält (Passwort,
Karte, Code), lehnt Klartext mit sensitive_value_refused ab, sodass ein
Passwort nicht versehentlich durch den Kontext des Modells laufen kann.
Zugangsdaten in einem älteren Format, eine JSON-Datei pro Website mit Hostnamen und ohne Schema, liest der Server nicht. Ein Befehl, den Sie in Ihrer eigenen Shell ausführen, wandelt eine Datei oder ein Verzeichnis davon in seinem eigenen Prozess um und gibt keinen Wert aus; er behält keinen zweiten Faktor und überschreibt nichts:
cd ~/mcp-server-diwall-browser
.venv/bin/python -m mcp_server_diwall_browser.credential_import \
--source-dir ~/Vaults/Main/old-credentials
Er wurde an Dateien der Testsuite in einem simulierten Volume getestet, nicht an einem echten gocryptfs-Volume. Jede Option, jede Ablehnung und die sechs Prüfungen, die er vornimmt, stehen in Abschnitt 6 des Bedienerhandbuchs.