116 lines
9.6 KiB
Markdown
116 lines
9.6 KiB
Markdown
# Changelog
|
|
|
|
Alle nennenswerten Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
|
|
|
|
Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.1.0/)
|
|
und dieses Projekt folgt den Richtlinien von [Semantic Versioning](https://semver.org/lang/de/).
|
|
|
|
## [0.3.1] - 2026-09-10
|
|
|
|
### Added
|
|
- **Human Factors & OpSec-UX (HF-01 bis HF-04)**:
|
|
- Maskierte interaktive Notfallschlüssel-Eingabe: `--recovery-key` ohne CLI-Argument liest die 24 BIP-39-Wörter via `rpassword` ein, 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 2$ Distanz) 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.
|
|
- **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.
|
|
- **DFIR & Windows Host-Memory Hardening**:
|
|
- Win32 `VirtualLock` Speicherschutz: Physische Verriegelung des Root-DEK im RAM zur Unterbindung von Auslagerungen in `pagefile.sys` oder `swapfile.sys`.
|
|
- Windows Defender Controlled Folder Access (CFA / Ransomware-Schutz) Diagnose mit gezielter Hilfestellung.
|
|
|
|
### 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 verify` und `sanctum recovery-key` zur Vermeidung von Rückschlüssen auf vorhandene Hidden-Vault-Slots.
|
|
- Interaktiver Assistent für `sanctum restore-header` bei 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`).
|
|
- **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).
|
|
- **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_id` via AEAD-AAD.
|
|
- Vollständige RAM-Zeroization: Schutz sensibler Daten im Heap via `zeroize::Zeroize` bei Puffer-Swaps und `Drop`.
|
|
|
|
### Changed
|
|
- Standardname der Trägerdatei auf forensisch plausiblen Typ `system_backup.dat` geä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_flex` Integration 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_LOCK` mit sicherem Auto-Unmount beim Sperren des PCs.
|
|
- **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.
|
|
- **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::Zeroizing` für sensible kryptografische Schlüssel im RAM.
|
|
- **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`).
|
|
- **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 und `symlink_metadata` für WebDAV MOVE/Rename-Operationen im Explorer.
|
|
- Saubere URL-Decodierung bei Pfaden mit Leerzeichen, Kommas und Umlauten.
|
|
- **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.
|
|
- **Release Management**:
|
|
- Automatisches Packaging-Skript `scripts/package-release.ps1` mit SHA-256 Checksummen.
|
|
- Gitea Actions CI/CD Pipeline (`.gitea/workflows/release.yaml`).
|