- Add CHANGELOG entry for v0.9.3 - Bump version to 0.9.3 across Cargo.toml, Cargo.lock, THREAT_MODEL.md, SECURITY_AUDIT.md, Scoop, and WinGet manifests - Package and sign Windows (.zip, .exe) and Linux musl (.tar.gz, sanctum) binaries with Minisign
45 KiB
Changelog
Alle nennenswerten Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
Das Format basiert auf Keep a Changelog und dieses Projekt folgt den Richtlinien von Semantic Versioning.
[0.9.3] - 2026-09-21
Sicherheits-Governance, Supply-Chain-Audit & Dokumentationsabgleich
Dieses Release etabliert formale Sicherheitsrichtlinien und automatisierte Supply-Chain-Prüfungen vor der breiten Veröffentlichung des Projekts und korrigiert historische Dokumentationsstände der Argon2id-Parameter.
Sicherheitsrichtlinien & Responsible Disclosure
- Einführung von
SECURITY.md:- Definition des Responsible-Disclosure-Prozesses mit verbindlichen SLAs (48h Erstkontakt, 5 Werktage Risikobewertung, 90 Tage Embargo).
- Bereitstellung dedizierter Meldekanäle via E-Mail (
security@pansi.eu) und vertraulicher Gitea Security Advisories. - Klare Abgrenzung des Sicherheits-Geltungsbereichs (In/Out of Scope) und Safe-Harbor-Zusicherung für ethische Sicherheitsforscher.
- Verlinkung in
README.md.
Automatisierte Audits & Supply-Chain-Governance
- Dependency & License Governance (
cargo-deny):- Bereitstellung einer strikten
deny.tomlfür Lizenzen, Sicherheitswarnungen, Crates-Bans und Repository-Quellen. - Verifikation aller 248 Abhängigkeiten: 0 Advisories, 0 unzulässige Lizenzen.
- Bereitstellung einer strikten
- Vulnerability-Audit (
cargo-audit):- Vollständiger Abgleich aller Abhängigkeiten gegen die RustSec Advisory Database: 0 Sicherheitslücken.
- Git-Historien-Audit auf Secrets (
gitleaks):- Audit aller 101+ Git-Commits: Keine echten Secrets, privaten Schlüssel oder API-Tokens im Repository.
- Konfiguration von
.gitleaksignorefür harmlose Test-Mock-Token in Unittests.
- Erweiterung von
SECURITY_AUDIT.md:- Dokumentation aller Tool-Audits in neuem Abschnitt 8.
Dokumentation & CLI-Korrekturen
- Argon2id-Standardparameter (M-01 Synchronisation):
- Anpassung veralteter Angaben in
README.mdund den CLI-Ausgabetexten vonsanctum initauf die tatsächlichen M-01 Standardwerte (M=256\,\text{MiB}, T=4, P=4).
- Anpassung veralteter Angaben in
[0.9.2] - 2026-09-21
Recovery-MAC-Fix & Vollständiger Release-Workflow
Dieses Release behebt einen kritischen Fehler in den Disaster-Recovery-Pfaden (R-NEW-1), bei dem der K-01 Metadaten-MAC nach Header-Wiederherstellungen nicht aktualisiert wurde und nachfolgende Mount-Vorgänge fälschlich abwies. Zudem wird die CI/CD-Pipeline um den Linux-Cross-Build vervollständigt (CI-01) und die Quota-Ermittlung unter Linux implementiert (W-1).
Sicherheits- & Funktions-Fixes (R-NEW-1)
- Metadaten-MAC nach Header-Wiederherstellung (R-NEW-1, HOCH):
- Bei Notfallwiederherstellung via 24-Wort BIP-39 Notfallschlüssel (
restore_slot_from_recovery_key) wird der Metadaten-MAC sofort neu berechnet und persistent gespeichert. - Bei Header-Wiederherstellung via
.sanctum.hdr-Datei (restore_header_backup) wird der Zustand alsPendingRebuildmarkiert und beim nächstensanctum mountmit dem Benutzerpasswort transparent und sicher neu aufgebaut. - Verhindert fälschliche Manipulations-Fehlermeldungen nach legitimen Notfall-Wiederherstellungen.
- Bei Notfallwiederherstellung via 24-Wort BIP-39 Notfallschlüssel (
CI/CD & Build-Infrastruktur (CI-01)
- Automatisierter Linux-Cross-Build in
.gitea/workflows/release.yaml:- Vollständige Integration des Linux musl Cross-Builds (
x86_64-unknown-linux-musl) auf dem Windows-Runner viacargo-zigbuildund SHA-256-gepinntem Zig-Compiler (0.16.0). - Automatische Paketierung beider Plattformen (
.zip,.tar.gz, Standalone-Binariessanctum.exeundsanctum) und gemeinsame Minisign-Signatur in CI. - Dokumentation des Release-Workflows in
RELEASE_PROCESS.md.
- Vollständige Integration des Linux musl Cross-Builds (
Plattform-Optimierungen (W-1)
- Freier Speicherplatz unter Linux (W-1):
- Ermittlung des freien Festplattenspeichers unter Linux/Unix via
libc::statvfs(f_bavail * f_frsize) anstelle des statischen 1-TB-Platzhalters.
- Ermittlung des freien Festplattenspeichers unter Linux/Unix via
- Plattform-Modul:
- Präzisierung des Modul-Docstrings in
src/platform/mod.rs.
- Präzisierung des Modul-Docstrings in
[0.9.1] - 2026-09-20
Sicherheits-Härtung, Pfadvalidierung & Migration-Dokumentation
Dieses Release behebt die im Prüfbericht für v0.9.0 identifizierten vier Minor Issues bezüglich Metadaten-Authentifizierung beim Mounten, strikter Eingabevalidierung von Dateinamen im Carrier-Dateisystem, Dokumentation der Carrier-V1-nach-V2-Migration sowie Schutz vor Swap-Attacks bei der Dateinamen-Entschlüsselung.
Behobene Minor Issues
- K-01 Metadaten-MAC-Validierung beim Mount:
mount_containervalidiert vor dem Start des WebDAV-Dienstes die kryptografische HMAC-SHA-256 Integrität aller Metadaten für Container ab Format V3.- Registrierung des aktiven DEK (
set_active_slot_and_dek), sodass fortlaufende Dateioperationen den Metadaten-MAC synchron halten.
- Lückenlose Pfadvalidierung (
validate_node_name):- Konsequente Prüfung aller Dateinamen im Carrier-Dateisystem (
CarrierFs::open,CarrierFs::create_dir,CarrierFs::rename,CarrierFs::copy) und VFS (SanctumFs::copy). - Zuverlässige Abweisung von Windows-reservierten Gerätenamen (
CON,PRN,AUX,NUL,COM1-9,LPT1-9), ungültigen Zeichen (<>:"/\|?*), Steuerzeichen und Pfad-Traversal.
- Konsequente Prüfung aller Dateinamen im Carrier-Dateisystem (
- Sicherheitsdokumentation & Runtime-Warnung für
--legacy-names:- Deutliche Warnung im CLI-Hilfetext, auf
stderrund im Logging vor den Risiken von Swap-Attacks bei deaktivierter AAD-Bindung. - Aufnahme einer Risikobewertung in
README.mdundTHREAT_MODEL.md(Abschnitt 7).
- Deutliche Warnung im CLI-Hilfetext, auf
- Migration-Leitfaden (V1 → V2):
- Schritt-für-Schritt-Anleitung in
README.md(Abschnitt 10) zur transparenten Aktualisierung bestehender V1-Container auf das Paged-Manifest-Format V2.
- Schritt-für-Schritt-Anleitung in
[0.9.0] - 2026-09-20
Paged Manifest für den Hidden Vault (Aufhebung der Kapazitätsgrenze)
Dieses Release führt das Carrier-Format V2 für den Hidden Vault ein. Es hebt die bisherige Kapazitätsgrenze von ca. 7.000 Dateien vollständig auf, führt eine skalierbare Paged-Manifest-Architektur ein und optimiert Performanz sowie Resilienz signifikant.
Formaterweiterung Carrier V2 (D-01 bis D-05)
- Carrier-Format V2 mit Paged Manifest:
- Trennung von Superblock und Inode-Tabellen: Block 0 und Block 1 enthalten nur noch den leichtgewichtigen
CarrierSuperblock(unter Erhalt der C-02 Dual-Block Redundanz). - Inodes werden in separaten Inode-Pages (
CarrierInodePage, MagicSANCTPAG, ~1 MB Payload je Block, ca. 4.500–7.000 Inodes pro Seite) aus dem normalen Blockpool verwaltet. - Dynamische Skalierung: Die Inode-Kapazität skaliert linear mit den verfügbaren Trägerblöcken bis zu 2^32 Blöcken.
- Trennung von Superblock und Inode-Tabellen: Block 0 und Block 1 enthalten nur noch den leichtgewichtigen
- D-01: Paged Loading & Fail-Soft Resilienz:
- Erkennt automatisch V1- vs. V2-Superblöcke auf Block 0 und 1.
- Resiliente Fehlerisolation: Beschädigte oder unlesbare Inode-Seiten führen nicht zum Mount-Abbruch. Fehlerhafte Seiten werden geloggt (
error!) und übersprungen, während alle intakten Inodes gemountet werden. - Neuer Zähler
corrupted_pageswarnt den Benutzer beim Mounten über partielle Datenbeschädigungen.
- D-02: Sekundärindex für Kindknoten (
children_index):- In-Memory Index
children_index: HashMap<i64, Vec<i64>>ordnet Elternknoten-IDs ihren Kindern zu. - Beschleunigt Pfadauflösung (
resolve_path) und Verzeichnislisting (read_dir) von O(N) Tabellenscans auf O(Geschwister). - Konsistente Nachführung bei
open,create_dir,remove_file,remove_dir,renameundcopy.
- In-Memory Index
- D-03: Transparente V1 → V2 Migration:
- V1-Container werden vollkommen transparent eingelesen.
- Beim ersten Speichervorgang (
save_manifest()) wird geprüft, ob genügend freie Blöcke für die Seitenaufteilung vorhanden sind. - Reicht der Platz nicht aus, bricht der Vorgang sauber ab, ohne den Container zu beschädigen. Reicht der Platz, wird der Container nahtlos auf Format V2 migriert.
- Eine ausführliche Schritt-für-Schritt-Anleitung zur Migration findet sich in der README.md.
- D-04 & D-05: Deterministische Seitenaufteilung & Blockfreigabe:
- Deterministische Sortierung der Inodes nach ID garantiert reproduzierbare Seitenbelegungen.
- Dynamische Blockfreigabe: Verringert sich die Inode-Anzahl (z. B. durch Löschungen), werden überzählige Seitenblöcke mittels kryptografischem Zufallsrauschen geschreddert (
shred_carrier_block) und an den Freispeicher zurückgegeben. - Dynamische Block-Warnung: Die statische 80%-Manifestgrenze aus C-04 wird durch eine Warnung bei absolutem Träger-Blockmangel (< 20 Blöcke oder < 5% Restkapazität) ersetzt.
[0.8.1] - 2026-09-19
Carrier-Manifest-Resilienz & Storage-Hygiene (Dritte Audit-Runde)
Dieses Release behebt sechs Findings aus der dritten Audit-Runde in carrier.rs (steganografisches Dateisystem des Hidden Vault) und storage.rs, schließt alle verbleibenden Punkte und erreicht 39/39 (100%) behobene Audit-Findings.
Steganografischer Hidden Vault & Carrier-Dateisystem (C-02, C-03, C-04)
- C-02 (HOCH): Rollierendes Dual-Block-Manifest & Failover-Recovery:
- Beseitigung des Single Point of Failure: Das Dateisystem-Manifest wird nun abwechselnd auf Block 0 und Block 1 geschrieben (
manifest_generation: u64). - Beim Mounten liest Sanctum beide Blöcke, wählt die neuere Generation und stellt den Tresor selbst bei Beschädigung (z. B. Bitrot) eines Blocks transparent wieder her.
- Vollständige Abwärtskompatibilität: Block 1 wird für bestehende Container automatisch reserviert.
- Beseitigung des Single Point of Failure: Das Dateisystem-Manifest wird nun abwechselnd auf Block 0 und Block 1 geschrieben (
- C-03 (MITTEL): Entkopplung der Manifest-Neuverschlüsselung via Dirty-Tracking:
- Metadatenänderungen (
create_dir,create_file,remove_file,remove_dir,rename,copy,drop) markieren das Manifest alsdirty, anstatt jedes Mal synchron 1 MB per AES-256-GCM neu zu verschlüsseln. - Synchrone Sicherung erfolgt gebündelt bei Datei-
flush(), unmount/drop oder nach 50 Operationen. - Gewährleistet massive Performancesteigerung bei Massenoperationen im Hidden Vault.
- Metadatenänderungen (
- C-04 (NIEDRIG): Kapazitätsgrenze dokumentiert & Warnung bei Füllstand:
- Dokumentation der Obergrenze (~7.000 Dateien/Verzeichnisse pro 1-MB-Manifest-Block) in
README.mdundQUICKSTART.md. - Automatische Warnung beim Mounten und Speichern, wenn das Manifest mehr als 80% Füllstand (~838 KB) erreicht.
- Dokumentation der Obergrenze (~7.000 Dateien/Verzeichnisse pro 1-MB-Manifest-Block) in
Storage-Hygiene & Fehlerbehandlung (ST-01, ST-02, ST-03)
- ST-01 (MITTEL): Fail-Closed bei Entschlüsselungsfehlern von Knotennamen:
- Beseitigung des Hex-Ciphertext-Leaks (
unwrap_or(enc_name)): Bei Entschlüsselungsfehlern (z. B. Bitrot oder unlesbare Knoten) werden betroffene Einträge inlist_children_in_vault,resolve_path_in_vaultundget_node_by_id_in_vaultübersprungen und geloggt (warn!), anstatt rohe Hex-Strings auszuliefern.
- Beseitigung des Hex-Ciphertext-Leaks (
- ST-02 (NIEDRIG): Fehleraggregation bei rekursivem Löschen:
delete_nodeverschluckt Fehler bei Kindknoten nicht mehr (let _ =).- Fehler werden gesammelt, protokolliert (
error!) und führen zum Abbruch mit detaillierter Zusammenfassung, wodurch verwaiste Knoten (Orphans) verhindert werden.
- ST-03 (NIEDRIG): Atomare SQLite-Transaktion für rekursives Löschen:
- Das gesamte rekursive Löschen eines Baumes (inklusive kryptografischem Chunk-Shredding) wird nun in einer einzigen atomaren SQLite-Transaktion ausgeführt.
- Schlägt das Löschen eines Teilbaums fehl, wird ein automatischer Rollback ausgeführt; Teilbaumlöschungen und inkonsistente Zustände sind ausgeschlossen.
[0.8.0] - 2026-09-19
Security Audit Remediation & Format V3 Release
Dieses Release implementiert die vollständige Behebung aller 33 identifizierten Schwachstellen und Härtungsanforderungen aus zwei umfassenden Security-Audit-Runden, rüstet das Container-Format auf V3 auf (mit kanonischer Metadaten-Authentifizierung und Generation-gebundenem Chunk-Replay-Schutz) und führt wesentliche Sicherheits- und Notfallfunktionen ein.
Kryptografie & Container-Format V3 (K-01, K-02, K-03, M-01, M-05)
- K-01: Kanonische Metadaten-Authentifizierung (Format V3):
- Ergänzung einer HMAC-SHA-256 Metadaten-MAC (
metadata_mac) im Header, kryptografisch abgeleitet aus dem DEK via HKDF-SHA256 (SANCTUM_META_MAC_V3). - Verhindert unbemerkte Manipulation von Verzeichnisstrukturen, Knotennamen, Dateigrößen oder Dateitypen.
sanctum verifyerkennt jegliche Abweichung sofort. - Neuer CLI-Befehl
sanctum upgrade-format --path <container>zur unterbrechungsfreien Migration von V1/V2 auf V3.
- Ergänzung einer HMAC-SHA-256 Metadaten-MAC (
- K-02: Chunk-Replay- & Reordering-Schutz (Format V3):
- Erweiterung des AAD für AES-256-GCM von 16 Bytes auf 24 Bytes: Bindung an
node_id(8 Bytes),chunk_index(8 Bytes) und monotonegeneration(8 Bytes). - Verhindert das Wiedereinspielen älterer gültiger Ciphertexts durch Angreifer mit Container-Dateizugriff.
- Erweiterung des AAD für AES-256-GCM von 16 Bytes auf 24 Bytes: Bindung an
- K-03: Notfallblatt-Lebenszyklus &
rekey-Kommando:sanctum passwdweist nun unmissverständlich darauf hin, dass das 24-Wörter Notfallblatt (BIP-39) weiterhin gültig bleibt.- Neues CLI-Kommando
sanctum rekey: Generiert einen frischen DEK, verschlüsselt alle Chunks um, schreddert alte Datenblöcke und gibt eine neue 24-Wort Notfallphrase aus.
- M-01: Erhöhung der Argon2id-Standardparameter:
- Neue Container verwenden standardmäßig
m = 256 MiB(262.144 KiB),t = 4Iterationen undp = 4Lanes für maximalen Schutz gegen Brute-Force-Angriffe.
- Neue Container verwenden standardmäßig
- M-05: Verifikation der Schemagleichheit (Deniability-Härtung):
- Automatisierter Test stellt sicher, dass SQLite-Tabellen- und Spaltenstrukturen zwischen Standard- und Alibi-Containern (
--with-hidden) absolut identisch sind.
- Automatisierter Test stellt sicher, dass SQLite-Tabellen- und Spaltenstrukturen zwischen Standard- und Alibi-Containern (
Sync-Engine & Advisory Locking (S-01 bis S-09)
- S-01: Sichere Löschlogik in
sanctum sync:--deletelöscht keine ausgeschlossenen Pfade (--exclude) mehr. Für das Löschen ausgeschlossener Dateien muss explizit--delete-excludedübergeben werden (analog zu rsync).
- S-02: Plattformunabhängiger Pfadzusammenbau:
- Robuste Zerlegung und Zusammenfügung relativer Pfade verhindert Path-Traversal auf Windows- und Unix-Systemen.
- S-03: Symlink-Erkennung & Zyklenschutz:
- Symlinks werden beim Sync erkannt, gezählt (
files_skipped_symlinks) und nicht rekursiv verfolgt, um Endlosschleifen zu verhindern.
- Symlinks werden beim Sync erkannt, gezählt (
- S-04: TOCTOU-Beseitigung bei Dateigrößen:
- Die endgültige Knotengröße wird aus den tatsächlich geschriebenen Bytes (
bytes_written) ermittelt statt aus vorherigen Metadaten.
- Die endgültige Knotengröße wird aus den tatsächlich geschriebenen Bytes (
- S-05: Sicheres Kürzen auf 0 Bytes:
- Beim Kürzen von Dateien auf 0 Bytes werden ausnahmslos alle Chunks kryptografisch geschreddert und aus der Datenbank entfernt.
- S-06: Container Advisory Lock:
- Verhindert gleichzeitiges Mounten und kollidierende Schreibzugriffe durch
sync. Lock wird in Metadaten persistiert; Override via--force.
- Verhindert gleichzeitiges Mounten und kollidierende Schreibzugriffe durch
- S-07: Überspringen ungültiger Windows-Dateinamen:
- Reservierte Dateinamen (z. B.
aux.txt,con.dat) werden im Sync übersprungen und gezählt (files_skipped_invalid), ohne den Vorgang abzubrechen.
- Reservierte Dateinamen (z. B.
- S-08: Präzisierung des Glob- und Pfad-Matchings:
- Vollständig dokumentiertes und gehärtetes Glob-Matching für Ausschlussregeln.
- S-09: Pull-Overwrite-Schutz & Konfliktsicherheit:
- Warnung und Schutzmechanismen vor unbeabsichtigtem Überschreiben lokaler Daten bei
sync pull.
- Warnung und Schutzmechanismen vor unbeabsichtigtem Überschreiben lokaler Daten bei
VFS, Anti-Leak Shield & Carrier (V-01 bis V-09, Z-04)
- V-01: CarrierFs-Dispatch im Carrier-Modus:
SanctumFs::copydelegiert Kopieroperationen im Alibi-/Trägermodus korrekt an das steganografische CarrierFs.
- V-02: Fehlerbehandlung bei fehlenden Chunks:
- Fehlt ein Datenblock innerhalb der erwarteten Dateigröße, wird ein harter E/A-Fehler (
FsError::GeneralFailure) geworfen statt stiller Datenkürzung.
- Fehlt ein Datenblock innerhalb der erwarteten Dateigröße, wird ein harter E/A-Fehler (
- V-03: RAII Memory Lock Guard:
- Eigener RAII-Guard im
Arcstellt sicher, dass gesperrte Speicherseiten (VirtualLock) beim Klonen des VFS nicht vorzeitig freigegeben werden.
- Eigener RAII-Guard im
- V-04: Strukturierter Anti-Leak Shield & Custom Filterliste:
- Kategorisierte Filterung nach exakten Dateinamen, Präfixen (
~$*,._*), Suffixen (.tmp,.temp,.crdownload,.part,~*), NTFS Alternate Data Streams (:) und.trash*. - Neues CLI-Flag
sanctum mount --anti-leak-list <FILE>für anwenderspezifische Filterregeln sowie Statistik über gefilterte Dateien beim Unmount.
- Kategorisierte Filterung nach exakten Dateinamen, Präfixen (
- V-05: Robuste Fehlerprotokollierung in
SanctumFile::drop:- Flush-Fehler beim Schließen von Dateien werden als
error!geloggt und Flush wird beicloseerzwungen.
- Flush-Fehler beim Schließen von Dateien werden als
- V-06: Sparse Writes:
- Lücken zwischen dem bisherigen Dateiende und dem Schreib-Offset werden automatisch mit Null-Bytes aufgefüllt.
- V-07: RFC-4918 konforme Overwrite-Semantik:
- Korrekte Behandlung von Overwrite-Headern und Verzeichnis-Konfliktprüfungen in
copy.
- Korrekte Behandlung von Overwrite-Headern und Verzeichnis-Konfliktprüfungen in
- V-08: Einheitliche Pfadsicherheit:
- Tabulator-Steuerzeichen (0x09) werden in
validate_path_safetykonsistent abgewiesen.
- Tabulator-Steuerzeichen (0x09) werden in
- V-09: Chunk-Shredding vor Löschung:
truncate_chunks_afterschreddert vor dem Löschen alle betroffenen Chunks mit Zufallsdaten.
- Z-04: WebDAV Quota-Report:
SanctumFs::get_quotameldet korrekte Containerbelegung und verfügbaren Host-Speicher.
Upgrade & Signaturprüfung (U-01 bis U-03)
- U-01: Striktes Pre-Hashing für Minisign:
- Minisign-Verifikation akzeptiert ausschließlich pre-gehashte Signaturen (
allow_legacy = false).
- Minisign-Verifikation akzeptiert ausschließlich pre-gehashte Signaturen (
- U-02: Versionsvalidierung im Trusted Comment:
- Validiert, dass die im signierten
trusted commenthinterlegte Version exakt mit dem Release-Tag übereinstimmt (Replay-Schutz).
- Validiert, dass die im signierten
- U-03: Sekundärer Backup-Release-Schlüssel:
- Hinterlegung eines sekundären Public Keys für nahtlosen Schlüsselübergang bei Key-Rollover.
Plattform, Speichersicherheit & Dokumentation (M-02, M-03, M-04, Z-01, Z-02, Z-03)
- M-02: Ganzzahl-Überlaufschutz:
overflow-checks = trueim Release-Profil zur Abwehr von Integer-Overflows.
- M-03: Linux-Mount-Instruktionen:
- Transparente Ausgabe von WebDAV-Zugangsdaten und manuelle Mount-Befehle unter Linux.
- M-04: Bedrohungsmodell für Session-Tokens:
- Umfassende Dokumentation des Userland-Sicherheitsmodells und Prozessgrenzen in
THREAT_MODEL.mdundREADME.md.
- Umfassende Dokumentation des Userland-Sicherheitsmodells und Prozessgrenzen in
- Z-01: Sicheres Decoy-Passwort-Zeroizing:
- Schutz des temporären Alibi-Passworts im Speicher via
Zeroizing<String>.
- Schutz des temporären Alibi-Passworts im Speicher via
- Z-02: Mutex-Poisoning-Resilienz:
- Automatische Erholung von vergifteten Mutexes bei Thread-Panics in SQLite-Verbindungen.
- Z-03: WAL- und SHM-Forensik-Dokumentation:
- Dokumentation über die flüchtige Existenz verschlüsselter WAL-/SHM-Dateien und Schredder-Mechanismen.
[0.7.2] - 2026-09-18
Security Audit Remediation Release (Findings SA-01 to SA-07)
Dieses Release behebt alle sieben identifizierten Schwachstellen und Härtungsanforderungen (SA-01 bis SA-07) aus dem Security-Audit von v0.7.1.
Security & Architecture
- SA-01: Container-DoS / KDF-Amplification Schutz:
- Pre-KDF strukturelle Validierung in
Database::open,read_slots,ContainerMeta::authenticateundrecovery::to_meta. - Striktes Limit: Maximal 2 Slots (
slots.len() <= 2), nur Slot-IDs 0 und 1 zulässig, Erkennung von Duplikaten, Slot 0 ist Pflicht. - Strikte Validierung aller BLOB-Längen (Salt: 16 B, Nonce: 12 B, Tag: 16 B, Wrapped DEK: 32/40 B für Slot 0, 32/64/72 B für Slot 1) und KDF-Parametergrenzen vor jeder Argon2id-Ableitung (
derive_kek).
- Pre-KDF strukturelle Validierung in
- SA-02: Release-Signierung entkoppelt & CI-Secrets isoliert:
- Trennung des CI/CD-Release-Workflows (
release.yaml) in separatebuild- undsign-and-release-Jobs. - Das Secret
MINISIGN_SECRET_KEYist strikt auf den nachgelagerten Signatur-Job isoliert und für Build-/Test-Runner unzugänglich.
- Trennung des CI/CD-Release-Workflows (
- SA-03: Pinned Download-Integrität für
minisign.exe:- SHA-256 Integritätsprüfung des offiziellen Minisign v0.11 Downloads (
b9c31c2c3034f81f0e5f5d92cbcc20e67a9671b6e5455661588638848dc58031) im CI-Workflow vor dem Entpacken und Ausführen (Fail-Closed).
- SHA-256 Integritätsprüfung des offiziellen Minisign v0.11 Downloads (
- SA-04: Immutable Action-Pinning & Toolchain-Pinning:
- Alle externen GitHub/Gitea-Actions im Release-Workflow auf unveränderliche Commit-SHAs (
@<sha>) fixiert. - Rust-Toolchain explizit auf Version
1.85.0gepinnt.
- Alle externen GitHub/Gitea-Actions im Release-Workflow auf unveränderliche Commit-SHAs (
- SA-05: Session-Tokens vollständig aus URIs verbannt:
- Eingehende WebDAV-Requests, deren URI das Session-Token in Pfad oder Query-String enthalten (
/<token>/...oder?token=...), werden sofort mit403 Forbiddenabgewiesen. - Authentifizierung wird strikt über HTTP-Header (
Authorization: Basic ...oderX-Sanctum-Token: ...) erzwungen.
- Eingehende WebDAV-Requests, deren URI das Session-Token in Pfad oder Query-String enthalten (
- SA-06: Constant-Time Token-Vergleich:
- Integration von
subtle::ConstantTimeEqfür zeitinvariante Vergleiche von Basic-Auth-Credentials und Session-Tokens zum Schutz vor Timing-Seitenkanalangriffen.
- Integration von
- SA-07: Dokumentations-Klarstellung: Logische vs. Physische Datenlöschung:
- Präzisierung im
README.mdund Code-Docstrings bzgl. der Grenzen des kryptografischen Chunk-Shreddings: Auf Flash-Medien (SSDs/NVMe) können Wear-Leveling und FTL-Blöcke physisch persistieren. Empfehlung zur Nutzung von Full-Disk-Encryption (FDE).
- Präzisierung im
[0.7.1] - 2026-09-18
Security Patch Release (Closing Gaps R-01 to R-06)
Dieses Release schließt sechs identifizierte Restlücken (R-01 bis R-06) aus dem Security-Review von v0.7.0 und härtet Authentifizierung, Prozessisolation, Carrier-Integrität und CI/CD-Sicherheit.
Security & Architecture
- R-01: Bereinigung verbliebener Restbehauptungen in Doku und Code:
LEGAL.md: Das „100% Offline“-Versprechen wurde präzisiert. Es wird wahrheitsgemäß dokumentiert, dass keine Telemetrie oder stilles Phone-Home existiert, der Befehlsanctum upgrade(und--check) jedoch bei explizitem Nutzeraufruf die Release-API des konfigurierten Gitea-Hosts anspricht.- Entfernung aller verbliebenen Formulierungen über unnachweisbare Abstreitbarkeit ("Plausible Deniability") oder RIPA 49.
- Neutralisierung der Nutzer- und Entwicklerdokumentation bezüglich der Alibi-Trägerdatei im Decoy-Vault.
- R-02: Lückenloser Schutz der Trägerdatei in VFS und Sync:
SanctumFs::copy: Das Duplizieren der Trägerdatei als Quelle sowie das Überschreiben als Ziel wird nun mitFsError::Forbiddenfail-closed abgewehrt.sanctum sync(Pull):sync_single_file_to_hostverweigert den Abzug der Trägerdatei viaassert_not_carrier. Der rekursive Pull-Vorgang (collect_and_pull_dir) überspringt die Trägerdatei vollständig und spiegelt sie nicht auf den Host.sanctum sync(Push): Verhindert das Überschreiben der bestehenden Trägerdatei durch Push-Operationen.
- R-03: Vereinheitlichte Validierung von Dateinamen (Path-Traversal & Gerätenamen):
- Auslagerung der kanonischen Prüffunktion
validate_node_namein das gemeinsame Modulsrc/pathutil.rs. - Durchgängige Durchsetzung in
storage.rs(create_node_in_vault,rename_node_in_vault) undvfs.rs(create_node,rename_node). - Strikte Zurückweisung von Pfadtrennern, Null-Bytes, Steuerzeichen, Verzeichnisreferenzen (
.,..) und reservierten Windows-Gerätenamen (CON,PRN,AUX,NUL,COM1..9,LPT1..9).
- Auslagerung der kanonischen Prüffunktion
- R-04: Fail-Closed Release-Packaging und CI/CD-Signaturpflicht:
package-release.ps1undpackage-release-linux.ps1: Das Fehlen vonminisign.exeodersanctum-release.keybricht die Paketerstellung sofort mitexit 1ab (kein Warning-and-continue mehr).publish-release.ps1: Bricht die Veröffentlichung mit Fehler ab, wennSHA256SUMS.txt.minisigfehlt..gitea/workflows/release.yaml: Automatischer Minisign-Signaturschritt mittels SecretMINISIGN_SECRET_KEYund Pflicht-Upload vonSHA256SUMS.txt.minisigzu jedem Gitea-Release.
- R-05: Beseitigung von Session-Token im Argumentvektor (argv):
- Windows Netzlaufwerk-Mounting: Vollständige Umstellung von externem
net useKindprozess auf die in-process Win32-APIsWNetAddConnection2WundWNetCancelConnection2W(ausmpr.dll). Das Session-Token wird als Passwort übergeben; die Remote-URLhttp://127.0.0.1:<port>/enthält kein Token mehr im Prozess-Argumentvektor oder in der Prozessliste. - Linux: Beseitigung des Tokens aus
gio mountArgumenten. - WebDAV HTTP-Middleware: Unterstützung von HTTP Basic Auth (
Authorization: Basic <base64>),X-Sanctum-Token-Header und Pfad-Präfix-Fallback (/<token>/). Unauthentifizierte Anfragen werden mit standardkonformem401 UnauthorizedundWWW-Authenticate: Basic realm="Sanctum"beantwortet; ungültige Host-Header mit403 Forbidden.
- Windows Netzlaufwerk-Mounting: Vollständige Umstellung von externem
- R-06: Speicher-Hygiene bei Notfallschlüsseln:
- In
src/main.rswird die UmgebungsvariableSANCTUM_RECOVERY_KEYnach dem erfolgreichen Einlesen sofort mittelsstd::env::remove_varaus dem Prozessspeicher entfernt.
- In
[0.7.0] - 2026-09-18
Security Hardening Release
Dieses Release behebt alle 11 identifizierten Sicherheitsprobleme (S-01 bis S-11) aus dem Sicherheits-Review von v0.6.0 umfassend und implementiert ein striktes Fail-Closed-Design.
Security & Architecture
- S-01: Ehrliche Neuklassifizierung des Dual-Vault (Second Safe):
- Beseitigung aller unhaltbaren Behauptungen über "Plausible Deniability", "RIPA-49-Konformität" und "mathematische Ununterscheidbarkeit".
- Klarstellung in Dokumentation und CLI: Das Dual-Vault-Design (Modell A mit Alibi-Carrier) bietet Schutz vor Schulterblick und erzwungener Herausgabe im Alltag, ist jedoch durch forensische Entropieanalyse der Trägerdatei detektierbar und stellt keinen rechtlichen Schutz gegen Beschlagnahme dar.
- S-02: Minisign-Signaturprüfung & Härtung des Update-Mechanismus:
- Integration von
minisign-verifyzur kryptografischen Prüfung derSHA256SUMS.txt.minisiggegen den offiziellen Ed25519 Release-Schlüssel (RWSsVphPgr8157M9rTPkWDw3c0qIjc7xi28Gmw+cIWbMipOy4L6ToJEU) vor jedem Binary-Austausch. - Sichere Erstellung von Zwischendateien mittels
tempfile::Buildermit restriktiven Dateirechten und RAII-Bereinigung im Fehlerfall. - Sperrung von Drittanbieter-URLs: Inoffizielle Server erfordern zwingend das Flag
--insecure-urlund eine interaktive Benutzerbestätigung (nicht durch--yesumgehbar).
- Integration von
- S-03: Carrier-Schutz vor Beschädigung und Korruption:
- Einführung der Datenbankspalte
is_carrier INTEGER NOT NULL DEFAULT 0in dernodes-Tabelle zur präzisen Identifikation der Alibi-Trägerdatei ohne False Positives auf Benutzerdateien. - Fail-Closed Schutzschranke
assert_not_carrier: Löschung (delete_node), Kürzung (truncate_chunks_after), Umbenennung (rename_node_in_vault) oder VFS-Überschreibung der Trägerdatei sowie das Löschen enthaltender Ordner wird strikt verboten. - Schutz der Trägerdatei bei
sanctum sync: Die Alibi-Datei wird bei--delete(delete_orphans_in_vault) niemals entfernt.
- Einführung der Datenbankspalte
- S-04: Schutz vor nicht vertrauenswürdigen Containern & KDF-DoS:
Database::openprüft vor Ausführung von Pragmas, VACUUM oder Schema-Upgrades, ob fremde SQLite-Datenbanken vorliegen und lehnt diese sofort fail-closed ab.- Strikte Bereichsprüfung aller KDF-Parameter (
validate_kdf_params): Memory Cost 19 MiB bis 256 MiB, Time Cost 2 bis 8, Parallelität 1 bis 8. - Strikte Validierung aller Header-Slot-Feldlängen (Salt 16B, Nonce 12B, Tag 16B, Wrapped DEK 40B/32B in Slot 0, 72B/64B/32B in Slot 1).
- S-05: Eliminierung unkontrollierter Panics in der Kryptografie:
- Beseitigung aller potenziellen Panics in
encrypt_node_nameunddecrypt_chunk(LZ4-Größenvalidierung und unkomprimierte Chunks geben nun kontrollierteResult-Fehler zurück). - Umstellung des Release-Profils in
Cargo.tomlaufpanic = "unwind"zur Vermeidung von Process-Aborts bei unerwarteten Fehlern.
- Beseitigung aller potenziellen Panics in
- S-06: WebDAV-Loopback-Härtung & Unmount-Bereinigung:
- Robuste Host-Header-Prüfung in
is_loopback_host(exakter Abgleich gegen127.0.0.1,localhost,[::1],::1samt Port-Validierung) zur Abwehr von DNS-Rebinding- und Host-Header-Injection-Angriffen. - Beseitigung der Session-Token-Ausgabe im Terminal.
- Zwingende Überprüfung und Löschung von temporären SQLite
-walund-shmDateien nach Aushängen des Containers.
- Robuste Host-Header-Prüfung in
- S-07: Härtung der KDF-Parameter & Passwort-Validierung:
- Anhebung der KDF-Untergrenzen auf RFC 9106 Mindeststandards (Memory 19.456 KiB, Time Cost 2).
- Mindestpasswortlänge von 12 Zeichen bei
initundpasswd. - Verbot identischer Passwörter oder Präfix-Kollisionen zwischen Standard- und Hidden-Vault.
- S-08: Path-Traversal-Schutz & Dateinamen-Validierung:
- Umfassende Dateinamenprüfung
validate_node_nameinsanctum syncund VFS: Verbot von Pfadtrennern (/,\), Null-Bytes, Steuerzeichen (< 0x20),./..sowie reservierten Windows-Gerätenamen (CON,PRN,AUX,NUL,COM1..9,LPT1..9). - Strenge Pfadausbruchsprüfung bei
sync pull.
- Umfassende Dateinamenprüfung
- S-09: Sichere Einlesung von Wiederherstellungsschlüsseln:
- CLI-String-Übergabe von 24-Wort Notfallschlüsseln via
--recovery-key <PHRASE>ist veraltet (Deprecation Warning). - Unterstützung für interaktive maskierte Eingabe (kein History-Leak), Stdin (
--recovery-key -) und UmgebungsvariableSANCTUM_RECOVERY_KEY.
- CLI-String-Übergabe von 24-Wort Notfallschlüsseln via
- S-10: SHA-256 Checksummenprüfung in Sync & WAL-Sicherheit:
- Echte SHA-256 Hash-Vergleiche bei
sanctum sync --checksum. - Atomare SQLite-Transaktionen und garantierte WAL-Bereinigung.
- Echte SHA-256 Hash-Vergleiche bei
- S-11: Sichere Trennung bei Dateinamen-Entschlüsselung:
- Unsicherer statischer Fallback-Schlüssel (
b"SANCTUM_NODE_NAME") ist standardmäßig deaktiviert. - Abwärtskompatibilität für Alttresore nur noch bei expliziter Angabe des globalen CLI-Flags
--legacy-names.
- Unsicherer statischer Fallback-Schlüssel (
[0.6.0] - 2026-09-16
Added
sanctum upgrade(Alias:sanctum update) - In-Place Self-Upgrade Engine:- Ermöglicht das direkte Aktualisieren der laufenden Sanctum-Binary ohne externe Paketmanager oder manuelle Download-Schritte.
- Plattformunabhängiger In-Place-Austausch: Löst das Windows-Dateilock-Problem (
ERROR_ACCESS_DENIED) viaself-replace(Umbenennen der laufenden Executable und verzögerte Bereinigung). Auf Linux/Unix wird ein sauberer atomarer Tausch mit Ausführungsrechten (0o755) durchgeführt. - Kryptografische Integritätsprüfung: Vor dem Austausch wird jedes heruntergeladene Binary zwingend gegen die offizielle
SHA256SUMS.txtdes Gitea-Releases via SHA-256 verifiziert. Bei Abweichungen bleibt die bestehende Installation vollständig unberührt. - Prüfmodus (
--check/-c): Schneller Abgleich mit der Gitea-Releases-API zur Feststellung, ob ein Update vorliegt, ohne Downloads durchzuführen. - Automatisierungsmodus (
--yes/-y): Führt das Upgrade ohne interaktive Bestätigung durch – ideal für geplante Aufgaben und Skripte. - Force-Option (
--force/-f): Erlaubt das Erzwingen einer Neuinstallation / Aktualisierung auch bei gleicher Version oder erkannter Paketmanager-Umgebung. - Paketmanager-Erkennung: Erkennt automatisch, ob Sanctum über Scoop oder Winget ausgeführt wird, und empfiehlt den entsprechenden Paketmanager-Befehl (
scoop update sanctumbzw.winget upgrade HaraldPansi.Sanctum).
- Testsuite:
tests/upgrade_test.rs: 5 neue Tests zur Verifikation von Checksum-Parsing, SemVer-Vergleich, Paketmanager-Erkennung, SHA-256 Hash-Validierung und Gitea Release API-JSON-Deserialisierung.
[0.5.0] - 2026-09-16
Added
sanctum sync- Native rsync-ähnliche Synchronisation:- Bidirektionale Synchronisation (
Push: Host -> Tresor,Pull: Tresor -> Host) direkt auf SQLite- und VFS-Ebene unter vollständiger Umgehung des WebDAV-Layers. - Beseitigung des 4-GB-Dateilimits: Löst das fundamentale Problem des Windows WebClient-Dienstes (
mrxdav.sys), welcher systembedingt auf 32-Bit Dateigrößen (~4 GB - 1 Byte / Fehler0x800700DF) beschränkt ist. Sanctum streamt nun Dateien beliebiger Größe (5 GB, 50 GB, 500 GB+) in 1 MB Chunks mit AES-256-GCM direkt in/aus den Tresor. - Dry-Run-Simulation (
--dry-run/-n): Ermöglicht die risikolose Vorschau aller auszuführenden Aktionen (Hinzufügen, Aktualisieren, Löschen, Überspringen) samt Datenmengen-Berechnung, ohne tatsächliche Änderungen am Ziel durchzuführen. - Spiegelung & Verwaiste Dateien bereinigen (
--delete): Unterstützt das automatische Löschen von Dateien im Ziel, die in der Quelle nicht mehr existieren, für exakte Ordnerspiegelungen. - Inhaltsbasierte Hash-Prüfung (
--checksum/-c): Optionaler byteweiser SHA-256 Inhaltsvergleich anstelle des schnellen Größen-/mtime-Prüfverfahrens. - Ausschlussmuster (
--exclude <PATTERN>): Unterstützung für flexible Glob-Muster zum Ignorieren temporärer Dateien, Downloads oder System-Metadaten (z. B.*.crdownload,*.tmp,Thumbs.db). - Quiet-Modus (
--quiet/-q): Ermöglicht lautlose Ausführung für Skripte und geplante Aufgaben mit knapper Zusammenfassungsstatistik. - Metadaten-Konservierung: Erhaltung und Übertragung präziser Datei-Modifikationszeitstempel (
mtime) in beide Richtungen.
- Bidirektionale Synchronisation (
- Integrationstests:
tests/sync_test.rs: Umfassende automatisierte Testabdeckung für Push/Pull, Multi-Chunk Großdateien, Fast-Delta-Check, Dry-Run-Invarianz,--deleteund--exclude.
[0.4.1] - 2026-09-14
Fixed
- Linux Mount-Stabilität & Signal-Handling:
- Behebung eines sofortigen automatischen Aushängens direkt nach erfolgreichem Mount unter Linux: Windows-spezifische Kontrollkanäle (Console-Close, Session-Lock, System-Tray) wurden auf Nicht-Windows-Systemen sofort geschlossen, wodurch
tokio::select!überNonevorzeitig ausgelöst wurde. - Plattform-spezifische Aufteilung der
tokio::select!-Ereignisschleife: Unter Linux/Unix wird nun sauber auf POSIX-Terminierungssignale (SIGINT,SIGTERM,SIGHUP) gelauscht. - Defensives Pattern-Matching mit
Some(()) = rx.recv()stellt sicher, dass geschlossene Kanäle keine unberechtigten Shutdowns mehr auslösen können. - Automatisches Öffnen via
xdg-openauf Linux vorerst unterdrückt.
- Behebung eines sofortigen automatischen Aushängens direkt nach erfolgreichem Mount unter Linux: Windows-spezifische Kontrollkanäle (Console-Close, Session-Lock, System-Tray) wurden auf Nicht-Windows-Systemen sofort geschlossen, wodurch
[0.4.0] - 2026-09-10
Added
- Distribution & Package Ecosystem:
- Offizielles Scoop-Manifest (
packages/scoop/sanctum.json) für One-Click CLI-Installation und nahtlose Upgrades unter Windows. - Windows Package Manager (Winget) Manifest (
packages/winget/HaraldPansi.Sanctum.yaml) zur systemweiten Paketverwaltung. - Vollständiger Installations-Leitfaden (
INSTALL.md) für Scoop, Winget, Standalone-Binaries undcargo install.
- Offizielles Scoop-Manifest (
- Cross-Platform Architektur (Linux & macOS Vorbereitung):
- Neues Plattform-Abstraktionsmodul
src/platform/mod.rsfür OS-unabhängiges Speicherschutz- und Mount-Handling. - POSIX-Memory-Hardening mit
mlockundmunlockSystemaufrufen für Unix-Systeme. - Plattformübergreifendes Datei- und Ordneröffnen (
explorer.exeunter Windows,xdg-openunter Linux,openunter macOS). - Native WebDAV-VFS-Einbindung für Linux GNOME/KDE via
gio mount.
- Neues Plattform-Abstraktionsmodul
- Chaos Engineering & Live-Crash-Resilienz:
tests/live_crash_resilience_test.rs: Umfassende automatisierte Stresstests mit Multi-Worker Schreibabbrüchen, asynchronen Panic-Simulationen und Validierung der SQLite WAL-Konsistenz (Null Korruption).
- Legal, Compliance & Software Bill of Materials (SBOM):
LEGAL.md: Rechtliche Leitlinien, US EAR § 742.15(b) & EU Dual-Use Exportkontroll-Klassifizierung, DSGVO Art. 25 Zero-Data-Erklärung und Haftungsausschluss nach § 521 BGB.THIRD_PARTY_LICENSES.md: Lückenloses Lizenzaudit aller 231 Abhängigkeiten (100% permissive Lizenzen, 0% Copyleft) zur strikten Compliance mit Apache-2.0 Section 4.- Aufnahme von
LEGAL.mdundTHIRD_PARTY_LICENSES.mdin das offizielle Release-Distributionsarchiv (package-release.ps1).
- Statisches Linux Single-Binary (
x86_64-unknown-linux-musl):- 100% statisch gelinktes Linux-Binary ohne GLIBC-Abhängigkeiten via Zig-Cross-Toolchain.
- Neues Linux-Distributionsarchiv
sanctum-v0.4.0-linux-x86_64.tar.gzinklusive Dokumentation und Prüfsummen. - Native Freedesktop
.desktop-Datei und MIME-Type-Integration (application/x-sanctum) viasanctum register.
- OpSec & Disaster Recovery UX:
QUICKSTART.md: Druckbare 24-Wörter BIP-39 Notfallkarte zur sicheren analogen Verwahrung des Notfallschlüssels (Air-Gapped Vault Paper Backup).
[0.3.1] - 2026-09-10
Added
- Human Factors & OpSec-UX (HF-01 bis HF-04):
- Maskierte interaktive Notfallschlüssel-Eingabe:
--recovery-keyohne CLI-Argument liest die 24 BIP-39-Wörter viarpasswordein, ohne Klartextspuren in der PowerShell-Historie (ConsoleHost_history.txt) zu hinterlassen. - BIP-39 Resilienz & Tippfehler-Diagnose: Automatische String-Normalisierung (Kleinschreibung, Whitespace- und Satzzeichenbereinigung) sowie Levenshtein-Kandidatenvorschläge (
\le 2Distanz) bei Eingabefehlern. - Stealth-Mount Modus (
--stealth/-s): Vollständig lautloser Betrieb ohne Banner, Token-Ausgabe, Mount-Pfade oder Box-Rahmen. - VFS Carrier-Schutz im Decoy-Vault: Umfassender Lösch-, Schreib-, Truncate- und Umbenennungsschutz der Alibi-Trägerdatei (
FsError::Forbidden) bei Zugriff über Slot 0.
- Maskierte interaktive Notfallschlüssel-Eingabe:
- Chaos Engineering & Crash-Resilienz (CHAOS-01 bis CHAOS-03):
- Transaktionale Crash-Consistency (CHAOS-01): Bündelung von Chunk-Write und Dateigrößen-Aktualisierung (
write_chunk_and_update_size) in einer einzigen atomaren SQLite-Transaktion (tx.commit()) für vollständige Resilienz gegen plötzlichen Stromausfall. - Path Fuzzing & Injection Guard (CHAOS-02): Strikte Validierung aller VFS-Pfade und Knotennamen gegen Null-Bytes (
\0) und ASCII-Steuerzeichen (< 0x20). - Fault Recovery bei Disk Full (CHAOS-03): Sofortige Invalidierung des In-Memory-Chunk-Caches bei Schreibfehlern zur Vermeidung kaskadierender Drop-Panics bei vollem Zieldatenträger.
- Transaktionale Crash-Consistency (CHAOS-01): Bündelung von Chunk-Write und Dateigrößen-Aktualisierung (
- DFIR & Windows Host-Memory Hardening:
- Win32
VirtualLockSpeicherschutz: Physische Verriegelung des Root-DEK im RAM zur Unterbindung von Auslagerungen inpagefile.sysoderswapfile.sys. - Windows Defender Controlled Folder Access (CFA / Ransomware-Schutz) Diagnose mit gezielter Hilfestellung.
- Win32
Changed
- Visuelle Parität & Plausible Deniability beim Mounten (HF-01):
- Beseitigung verräterischer Konsolenausgaben (magenta hervorgehobene Hinweise auf Hidden Vault / Slot 1) und Harmonisierung des Explorer-Verhaltens für beide Safes.
- Vereinheitlichung der Ausgaben von
sanctum verifyundsanctum recovery-keyzur Vermeidung von Rückschlüssen auf vorhandene Hidden-Vault-Slots.
- Interaktiver Assistent für
sanctum restore-headerbei Aufruf ohne CLI-Parameter.
[0.3.0] - 2026-09-09
Added
- Modell A: Steganografischer Carrier & Plausible Deniability Phase 2:
- Zwei-Schichten-AEAD (
DEK_0+DEK_1) zur vollständigen Abwehr von Chunks-Accounting-Angriffen. - Physische Dateigrößen-Invarianz: Versteckte Schreibvorgänge verändern die Host-Dateigröße um exakt 0 Bytes.
- Virtuelles Carrier-Dateisystem (
CarrierFs) mit reserviertem Block 0 für Manifest und Block-Allokationsbitmap. - Schreib-, Lösch- und Umbenennungsschutz der Alibi-Trägerdatei im Decoy-Mount (
FsError::Forbidden).
- Zwei-Schichten-AEAD (
- CLI & Disaster Recovery Erweiterungen:
sanctum backup&sanctum restore: Dedizierte CLI-Befehle für konsistente Online-Sicherungen.sanctum restore-header --slot <0|1>: Gezielte Wiederherstellung für Decoy- oder Hidden-Vault-Header.sanctum init --carrier-file <NAME> --carrier-size <MB>: Frei konfigurierbare Alibi-Trägerdatei mit forensischen Sicherheitsprüfungen.
- SRE & Production Resilience:
- Nativer Win32
SetConsoleCtrlHandler: Synchrones Aushängen und WAL-Checkpointing bei Schließen des Konsolenfensters (CTRL_CLOSE_EVENT,CTRL_LOGOFF_EVENT,CTRL_SHUTDOWN_EVENT). - Stale Mount Self-Healing: Automatische Erkennung und Bereinigung verwaister Windows-Netzlaufwerke (Systemfehler 85).
- Automatische Erkennung und Diagnosehilfe für den Windows
WebClient-Dienst (Fehler 67).
- Nativer Win32
- Red Team & Threat Model Hardening:
- WebDAV Loopback Protection: Dynamisches 128-Bit Session-Token im URL-Pfad (Schutz vor unprivilegierten lokalen Prozessen & CSRF).
- Anti-DNS-Rebinding & Anti-Spoofing: Strikte Fail-Closed Host-Header-Validierung.
- Anti-Slowloris & Connection Limiting: Begrenzung auf maximal 64 gleichzeitige WebDAV-Verbindungen und 15s Header-Read-Timeout.
- Decompression-Bomb-Schutz: Strikter 1-MB-Größen-Guard vor LZ4-Dekomprimierung zur Vermeidung von Speichererschöpfung (CWE-400).
- Verzeichnis-Hijacking-Schutz: Dynamische Bindung verschlüsselter Knotennamen an die
parent_idvia AEAD-AAD. - Vollständige RAM-Zeroization: Schutz sensibler Daten im Heap via
zeroize::Zeroizebei Puffer-Swaps undDrop.
Changed
- Standardname der Trägerdatei auf forensisch plausiblen Typ
system_backup.datgeändert. - Heap- und Schreiboptimierung: Reduzierung der CSPRNG-Padding-Generierung auf den tatsächlichen Slack-Bereich (~30-fache Schreibbeschleunigung).
- Inaktivitäts-Tracking:
self.touch()reagiert nur noch auf echte I/O-Interaktionen (open, read, write) und ignoriert passive Explorer-Hintergrundabfragen (metadata,read_dir). - LZ4-Kompression: Schwellenwert von mindestens 64 Bytes Ersparnis eingeführt (
compressed.len() + 64 <= plaintext.len()).
[0.2.0] - 2026-09-08
Added
- Transparente LZ4-Kompression:
lz4_flexIntegration mit Frame-Format vor der AEAD-Verschlüsselung.- Adaptiver Fallback: Chunks werden nur komprimiert, wenn mindestens 64 Bytes gespart werden.
- Transparente On-the-Fly Dekompression bei Leseoperationen.
- Disaster Recovery & Integrität:
- BIP-39 Mnemonic Seed Phrases (24 Wörter) für Master-Key Recovery.
sanctum recovery-key: Export und Anzeige des BIP-39 Notfallschlüssels.sanctum backup&sanctum restore: Konsistente Online-Sicherungen via SQLite Backup API mit WAL-Flush.sanctum verify: Vollständige kryptografische Integritätsprüfung aller AEAD-Chunks und B-Tree-Validierung.
- Windows Explorer Integration & Bedienkomfort:
sanctum register&sanctum unregister: Windows-Kontextmenü im Explorer (HKCU\Software\Classes\.sanctum, "In Sanctum öffnen", Icon-Zuordnung).- Intelligente Erkennung freier Laufwerksbuchstaben (von Z: abwärts).
- Automatisches Öffnen des gemounteten Laufwerks im Windows Explorer.
- System-Tray Icon (
tray-icon) im Windows Infobereich mit Status und schnellem Unmount.
- Explorer Anti-Leak Shield & OpSec:
- Windows Anti-Leak Filter: Blockiert
thumbs.db,desktop.ini,*.tmp, Office-Lockfiles (~$*) und NTFS Alternative Data Streams (:Zone.Identifier). - Activity Tracking & Inaktivitäts-Timeout: Automatischer Unmount bei Leerlauf.
- Windows Session Lock Monitor: Registrierung für
WTS_SESSION_LOCKmit sicherem Auto-Unmount beim Sperren des PCs.
- Windows Anti-Leak Filter: Blockiert
- Storage Compaction & Anti-Forensics:
- SQLite Incremental Auto-Vacuum (
PRAGMA auto_vacuum = INCREMENTAL;) zur physikalischen Freigabe ungenutzter Dateiseiten an das Host-Dateisystem. - Kryptografisches Chunk-Shredding: Chunks werden vor dem Löschen/Abschneiden mit CSPRNG-Zufallsrauschen überschrieben.
sanctum compact: Manuelles oder beim Aushängen automatisches Freigeben von Freelist-Pages.- Plausible Deniability (Hidden Vault): Dual-Slot Header-Architektur. Unbenutzte Slots enthalten ununterscheidbares CSPRNG-Rauschen.
sanctum init --with-hidden: Erstellung zweier getrennter Safes (Decoy & Hidden) mit individuellen Passphrasen und BIP-39 Recovery-Karten.- Vollständige Dateinamen-Verschlüsselung für den Hidden Vault.
- SQLite Incremental Auto-Vacuum (
- Passwort-Verwaltung (
sanctum passwd):- Sofortiges Ändern des Master-Passworts über DEK-Rewrapping mit neuem Argon2id-Salt und KEK-Parametern ohne Neuverschlüsselung der Nutzdaten. Multi-Slot fähig.
[0.1.0] - 2026-09-07
Added
- Sanctum CLI (
sanctum.exe): Eigenständige, hochperformante Userland-Anwendung zur Verwaltung verschlüsselter Ein-Datei-Container unter Windows 10/11. - Kryptografie & Schlüsselableitung:
- Argon2id KDF (
M=64\,\text{MB}, T=3, P=4) zur Ableitung des KEK aus dem Master-Passwort. - AES-256-GCM DEK-Wrapping mit Nonce und Authentifizierungs-Tag.
- 1-MB Chunk AEAD-Verschlüsselung mit AAD (
node_id || chunk_index) zum vollständigen Schutz gegen Swap- und Block-Vertauschungsangriffe. - Speichersicherheit: Verwendung von
zeroize::Zeroizingfür sensible kryptografische Schlüssel im RAM.
- Argon2id KDF (
- Speicherschicht:
- SQLite3-Container im WAL-Modus (
PRAGMA journal_mode = WAL;,PRAGMA synchronous = NORMAL;,PRAGMA page_size = 8192;). - Automatische Checkpoints (
PRAGMA wal_checkpoint(TRUNCATE)). - Dynamisches Wachstum bis über 100 GB in exakt einer Host-Datei (
.sanctum).
- SQLite3-Container im WAL-Modus (
- WebDAV & Windows Explorer Integration:
- Eingebetteter WebDAV-Server auf
127.0.0.1(dav-server+hyper). - Automatisches Einhängen über Windows-Bordmittel (
net use <DRIVE>: http://127.0.0.1:<PORT>/ /persistent:no) ohne Administratorrechte und ohne Treiber (kein WinFsp, kein Dokan). - Volle Unterstützung für
DavFileSystem,DavFile, Metadaten undsymlink_metadatafür WebDAV MOVE/Rename-Operationen im Explorer. - Saubere URL-Decodierung bei Pfaden mit Leerzeichen, Kommas und Umlauten.
- Eingebetteter WebDAV-Server auf
- CLI & UX:
- Automatische Windows-Konsolen-Initialisierung auf UTF-8 (
CP 65001) und Virtual Terminal Processing. - Strukturierte Statusausgabe (
init,mount,unmount) mit Status-Boxen und Fortschrittsanzeige. - Automatischer Shutdown-Handler (
Ctrl+C) mit sicherem Aushängen des Netzlaufwerks und WAL-Checkpointing.
- Automatische Windows-Konsolen-Initialisierung auf UTF-8 (
- Release Management:
- Automatisches Packaging-Skript
scripts/package-release.ps1mit SHA-256 Checksummen. - Gitea Actions CI/CD Pipeline (
.gitea/workflows/release.yaml).
- Automatisches Packaging-Skript