Sanctum 🛡️
Verschlüsselter Ein-Datei-Container unter Windows 10/11 im reinen Userland
Sanctum ist eine eigenständige, speichersichere und hochperformante CLI-Anwendung in Rust, die verschlüsselte Ein-Datei-Container (.sanctum) unter Windows 10/11 im reinen Userland verwaltet.
- 100% Userland: Keine Administratorrechte erforderlich, keine Kernel-Treiber (weder WinFsp noch Dokan).
- Windows Explorer-Integration: Einhängen als nativer Netzlaufwerk-Buchstabe (Z: abwärts) via lokalem WebDAV (
127.0.0.1), Explorer-Kontextmenü und System-Tray-Icon. - Transparente LZ4-Kompression: Automatische Kompression von Chunks mit On-the-Fly-Dekompression und adaptivem Fallback.
- Anti-Forensik & Storage Compaction: Inkrementelles Auto-Vacuum zur physikalischen Freigabe von Speicherplatz und kryptografisches Überschreiben (Shredding) von Datenblöcken mit CSPRNG-Rauschen vor dem Löschen.
- Plausible Deniability (Hidden Safe): Dual-Slot-Header. Ein unbenutzter Slot enthält uniformes CSPRNG-Rauschen, das sich nicht von einem echten Hidden Vault unterscheiden lässt. Volle Dateinamen-Verschlüsselung im Hidden Vault.
- OpSec & Explorer Anti-Leak Shield: Blockiert Explorer-Spuren (
Thumbs.db,desktop.ini,*.tmp,:Zone.Identifier), automatischer Unmount bei Inaktivität oder Windows-Sitzungssperre (Win + L). - Disaster Recovery: 24-Wort BIP-39 Mnemonic Seed Phrases, konsistente Online-Backups via SQLite Online Backup API und kryptografische Vollprüfung (
sanctum verify). - Statisches Single-Binary:
sanctum.exe(~5.3 MB) ohne externe DLL-Abhängigkeiten.
💡 Neu bei Sanctum? Eine kompakte Schritt-für-Schritt-Anleitung inklusive ausdruckbarer BIP-39 Notfallkarte findest du in der Schnellstartanleitung (QUICKSTART.md).
🔐 Kryptografie & Sicherheitsarchitektur
- Schlüsselableitung (Argon2id):
Aus dem Master-Passwort wird mittels
Argon2id(M=64\,\text{MB}, T=3, P=4) ein 256-Bit Key Encryption Key (KEK) abgeleitet. - Data Encryption Key (DEK):
Zufälliger 256-Bit Schlüssel via CSPRNG (
OsRng). Der DEK wird mit dem KEK via AES-256-GCM verschlüsselt und im Header abgelegt. - Speichersicherheit (Zeroize):
Alle Schlüsselstrukturen implementieren das
Zeroize-Trait (Zeroizing<[u8; 32]>), um sensible Schlüsseldaten beim Verlassen des Gültigkeitsbereichs im RAM sofort sicher zu nullen. - Chunk-Verschlüsselung (AES-256-GCM): Dateien werden in Blöcken von 1 MB verschlüsselt.
- Swap-Attack-Schutz:
Als Authenticated Associated Data (AAD) werden
node_id(8 Bytes LE) undchunk_index(8 Bytes LE) an jeden Block gebunden. Ein Vertauschen von Chunks zwischen Dateien oder innerhalb einer Datei führt zum Authentifizierungsfehler. - Plausible Deniability (Multi-Slot): Konstante 2-Slot-Architektur. Slot 0 dient als Standard-/Decoy-Vault, Slot 1 als Hidden Vault oder CSPRNG-Dummy. Ein Angreifer kann mathematisch nicht feststellen, ob Slot 1 ungenutzt ist oder einen zweiten Tresor birgt.
- Dateinamen-Verschlüsselung: Dateinamen im Hidden Vault werden mit frischen CSPRNG-Nonces und AES-256-GCM verschlüsselt in der Datenbank gespeichert.
- Kryptografisches Chunk-Shredding: Vor jedem Löschen oder Kürzen werden Chunk-Payloads in der SQLite-Datenbank mit CSPRNG-Rauschen überschrieben.
📦 Speicher- & Kompressions-Engine
Der Container besteht aus exakt einer Host-Datei (.sanctum), die dynamisch bis über 100 GB wachsen kann:
- SQLite3 WAL & Auto-Vacuum:
PRAGMA auto_vacuum = INCREMENTAL;PRAGMA journal_mode = WAL;PRAGMA synchronous = NORMAL;PRAGMA page_size = 8192;
- LZ4-Kompression:
Chunks werden vor der Verschlüsselung via
lz4_flexkomprimiert. Spart die Kompression weniger als 64 Bytes (z. B. bei bereits komprimierten Bildern oder Videos), wird adaptiv die Rohform verschlüsselt. - Speicherplatzrückgabe:
Durch
PRAGMA auto_vacuum = INCREMENTAL;können freigewordene SQLite-Pages beim Aushängen oder viasanctum compactvollständig an das Windows-Hostdateisystem zurückgegeben werden.
🚀 Kompilieren
Voraussetzungen: Rust (>= 1.85) mit GCC/MinGW-Toolchain für SQLite:
cargo build --release
Das fertige Binary befindet sich unter target/release/sanctum.exe.
🛠️ CLI-Referenz & Verwendung
1. Container initialisieren
# Standard-Container anlegen:
sanctum.exe init --path "C:\Pfad\tresor.sanctum"
# Container mit Plausible Deniability (Decoy + Hidden Safe) anlegen:
sanctum.exe init --path "C:\Pfad\tresor.sanctum" --with-hidden
(Gibt nach Passworteingabe eine 24-Wort BIP-39 Notfall-Wiederherstellungskarte aus).
2. Container einbinden (Mount)
# Automatische Wahl des nächsten freien Laufwerksbuchstabens (z. B. Z:):
sanctum.exe mount --path "C:\Pfad\tresor.sanctum"
# Bestimmten Laufwerksbuchstaben erzwingen:
sanctum.exe mount --path "C:\Pfad\tresor.sanctum" --drive S
# Mit Inaktivitäts-Timeout (in Sekunden):
sanctum.exe mount --path "C:\Pfad\tresor.sanctum" --idle-timeout 300
# Lautloser Stealth-Modus (keine Banner/Token-Ausgabe, kein Explorer-Auto-Open):
sanctum.exe mount --path "C:\Pfad\tresor.sanctum" --stealth
# Explorer-Auto-Open gezielt unterdrücken (maximale ShellBag-OpSec):
sanctum.exe mount --path "C:\Pfad\tresor.sanctum" --no-open
- Automatischer Slot-Unlock: Sanctum prüft das eingegebene Passwort gegen alle Slots und bindet automatisch den entsprechenden Tresor ein (Slot 0 Decoy oder Slot 1 Hidden Vault).
- Windows Explorer: Das gemountete Laufwerk wird standardmäßig im Explorer geöffnet (abschaltbar via
--no-openoder--stealth). - System-Tray: Ein Schild-Icon im Windows Infobereich erlaubt Statusabfrage und direktes Aushängen.
- Beenden:
Ctrl+Cim Terminal oder Rechtsklick im Tray -> "Aushängen & Beenden" führt einen sauberen Unmount, Speicher-Compaction und WAL-Checkpoint durch.
3. Container manuell trennen
sanctum.exe unmount --drive S
4. Master-Passwort ändern
sanctum.exe passwd --path "C:\Pfad\tresor.sanctum"
Ändert das Passwort über Key-Rewrapping in Sekundenbruchteilen, ohne die Nutzdaten neu verschlüsseln zu müssen.
5. Disaster Recovery & Notfallschlüssel
# 24-Wort BIP-39 Notfallschlüssel anzeigen:
sanctum.exe recovery-key --path "C:\Pfad\tresor.sanctum"
# Konsistentes Online-Backup erstellen (auch während Mount möglich):
sanctum.exe backup --path "C:\Pfad\tresor.sanctum" --output "D:\Backup\tresor_backup.sanctum"
# Container aus Backup wiederherstellen:
sanctum.exe restore --path "D:\Backup\tresor_backup.sanctum" --output "C:\Pfad\tresor_restored.sanctum"
# Vollständige Integritätsprüfung (B-Tree, Knoten und AEAD-Tags aller Chunks):
sanctum.exe verify --path "C:\Pfad\tresor.sanctum"
6. Storage Compaction (Speicherbereinigung)
# Freelist-Pages an Windows freigeben und Container verkleinern:
sanctum.exe compact --path "C:\Pfad\tresor.sanctum"
# Nur eine begrenzte Anzahl Pages freigeben:
sanctum.exe compact --path "C:\Pfad\tresor.sanctum" --pages 500
7. Windows Explorer Kontextmenü-Integration
# .sanctum-Dateien für Rechtsklick ("In Sanctum öffnen") in HKCU registrieren (ohne Adminrechte):
sanctum.exe register
# Registrierung wieder rückstandslos entfernen:
sanctum.exe unregister
🛡️ OpSec & Explorer Anti-Leak Shield
Sanctum schützt vertrauliche Daten vor unbeabsichtigten Windows-Spuren:
- Anti-Leak Dateifilter: Unterdrückt das Anlegen von
Thumbs.db,desktop.ini, Office-Sperrdateien (~$*), temporären Dateien (*.tmp) und NTFS Alternate Data Streams (:Zone.Identifier). - Inactivity Auto-Lock: Erkennt Inaktivität anhand echter Lese-/Schreibzugriffe und trennt den Container automatisch nach Erreichen des Timeouts.
- Session Lock Detection: Reagiert über
WTSRegisterSessionNotificationsofort auf Windows-Sitzungssperren (Win + L) oder Abmeldungen und schließt den Container blitzschnell ab. - RAM-Paging-Schutz (
VirtualLock): Verriegelt sensible Schlüsselstrukturen (DEK) im physischen RAM, um das Auslagern inpagefile.sysoderswapfile.sysdurch den Windows Memory Manager zu verhindern. - ShellBag & Forensik-OpSec: Über die Optionen
--no-openoder--stealthkann das automatische Öffnen des Windows Explorers vollständig unterdrückt werden, um zu verhindern, dass Ordnernamen persistent im ShellBag-Cache (UsrClass.dat) protokolliert werden. - VFS Carrier-Schutz: Die im Decoy-Tresor sichtbare Alibi-Trägerdatei wird im VFS gegen versehentliches Löschen, Überschreiben oder Umbenennen geschützt.
- Power-Loss Crash-Consistency: Atomare Bündelung von Block-Schreiboperationen und Metadaten-Größenaktualisierungen in einer SQLite-Transaktion verhindert Datenkorruption bei plötzlichem Stromausfall.
🔧 Windows-Kompatibilität & AV/EDR-Tuning
Windows Defender SmartScreen ("Unbekannter Herausgeber")
Wird die Binärdatei über einen Webbrowser heruntergeladen, versieht Windows sie mit dem Mark-of-the-Web (MotW). Da Open-Source-Projekte über kein kostenpflichtiges EV-Code-Signing-Zertifikat verfügen, zeigt Windows beim ersten Start den blauen SmartScreen-Dialog:
- Einmalige Freigabe im Dialog: Klick auf "Weitere Informationen"
\to"Trotzdem ausführen". - Schnellfreigabe via PowerShell:
Unblock-File .\sanctum.exe
Windows Defender "Überwachter Ordnerzugriff" (Controlled Folder Access - CFA)
Ist der erweiterte Ransomware-Schutz von Windows aktiv, kann Defender den Schreibzugriff auf Containerdateien in Standard-Benutzerordnern (Dokumente, Desktop) mit Fehler 5 (Zugriff verweigert) blockieren:
- Abhilfe: Erlauben Sie
sanctum.exein den Windows-Sicherheitseinstellungen (Viren- & Bedrohungsschutz\toRansomware-Schutz verwalten\toApp durch überwachten Ordnerzugriff zulassen), oder speichern Sie Container in einem separaten Verzeichnis (z. B.C:\Sanctum\).
I/O-Performance-Tuning
Windows Defender scannt standardmäßig jeden modifizierten 1-MB-Chunk in Echtzeit. Durch das Hinzufügen der Dateiendung *.sanctum zu den Defender-Ausschlüssen lässt sich der I/O-Durchsatz bei großen Kopiervorgängen um 30–50% steigern.
📦 Release Packaging & Distribution
Um ein Distributionspaket mit Release-Binary, Checksummen und Dokumentation zu bauen:
powershell -ExecutionPolicy Bypass -File .\scripts\package-release.ps1
Erzeugt:
dist/sanctum-v0.3.1-windows-x86_64.zipdist/SHA256SUMS.txt
⚖️ Rechtliche Hinweise, Compliance & Exportkontrolle
- Kryptografie-Exportkontrolle (EAR & EU Dual-Use): Sanctum nutzt starke Kryptografie (AES-256-GCM, Argon2id). Da der Quellcode als freie Open-Source-Software jedermann unbeschränkt und unentgeltlich zur Verfügung steht, unterliegt er den Ausnahmetatbeständen gem. 15 C.F.R. § 742.15(b) (US EAR) sowie der General Software Note (GSN) der Verordnung (EU) 2021/821.
- Plausible Deniability & Herausgabepflichten: Sanctum bietet mit dem steganografischen Alibi-Carrier (Modell A) ein informationstheoretisches Modell für glaubhafte Abstreitbarkeit. Dies ist ein technischer Schutzmechanismus, kein juristisches Schutzschild. Die rechtliche Bewertung im Fall strafprozessualer Herausgabeanordnungen (Key Disclosure) hängt von der jeweiligen Jurisdiktion ab (z. B. Nemo-tenetur-Grundsatz in DACH vs. RIPA Section 49 im UK).
- Datenschutz & Telemetrie-Freiheit (DSGVO / GDPR): Sanctum arbeitet zu 100% offline und enthält keinerlei Code für Telemetrie, Analytics, Fehlerberichterstattung oder IP-Übertragungen (Art. 25 DSGVO Privacy by Design).
- Haftungsbeschränkung (EU/DACH Recht): Die Software wird als unentgeltliche FOSS-Software bereitgestellt. Gemäß § 521 BGB (Schenkungsrecht) ist die Haftung des Entwicklers auf Vorsatz und grobe Fahrlässigkeit beschränkt. Der Anwender ist für die sichere Verwahrung von Schlüsseln und Backups selbst verantwortlich.
- Ausführliche rechtliche Erläuterungen finden sich in
LEGAL.md.
📄 Lizenz & Changelog
- Lizenziert unter der MIT License.
- Vollständige Third-Party-Attributionen aller ~230 Abhängigkeiten (Apache-2.0, MIT, BSD, SQLite Public Domain) sind in
THIRD_PARTY_LICENSES.mddokumentiert. - Ausführliche rechtliche Bestimmungen und Exportkontroll-Hinweise sind in
LEGAL.mdgeregelt. - Details zu allen Versionen und Änderungen findest du im CHANGELOG.md.
