Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates.
Go to file
Jeremy Anderson 466922a58c screenshot update 2026-08-04 16:47:41 -04:00
.cargo Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
crates Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
docs Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
profiles Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
CHANGELOG.md Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
Cargo.toml Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
LICENSE Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
README.md screenshot update 2026-08-04 16:47:41 -04:00
blog.md Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
quickstart.md Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates. 2026-08-04 16:03:49 -04:00
scuttle-ss.png screenshot update 2026-08-04 16:47:41 -04:00

README.md

scuttle

A data sanitization framework for block devices and filesystems — written in Rust.

scuttle-ss

Scuttle is a from-scratch Rust implementation of the data sanitization principles pioneered by DBAN and nwipe, which inspired this project. It provides block-device wiping, free-space-only wiping, firmware-level secure erase, SMART health monitoring, TPM-bound crypto erase, and cryptographically signed audit certificates.

What scuttle does

Scuttle securely erases storage media using one of ten wipe methods, eleven modern profiles, or a policy engine that selects the method based on device type. After wiping, scuttle produces an audit certificate in one of six formats (JSON, PDF, XML, CSV, HTML, YAML) with optional Ed25519 digital signatures.

Key features

  • 12 PRNG providers: ChaCha20, AES-256-CTR, ISAAC-64, BLAKE3-XOF, XChaCha20, SHAKE128, SHAKE256, Salsa20, MT19937, XOROSHIRO-256, SplitMix64, Lagged Fibonacci. Each ships with KAT self-tests.
  • 4 hash providers: SHA-256, SHA-512, BLAKE2b-512, BLAKE3-256.
  • 20 profiles: 9 legacy (zero, one, random, DoD, Gutmann, RCMP, HMG, Schneier, BMB) + 11 modern (Quick Clear, Modern Random, NIST Clear, NIST Purge, Enterprise, Paranoid, Research, Forensic, Government, Air Gap, Custom).
  • Policy engine: selects the wipe method based on device media class (HDD, SSD, NVMe, PMEM, eMMC, virtual) and operator intent (QuickClear, NistPurge, Paranoid, etc.).
  • Firmware erase: ATA Secure Erase (standard + Enhanced), NVMe Sanitize (Block/Crypto/Overwrite) with status polling, NVMe Format NVM, SCSI Sanitize, SCSI Format Unit, TRIM (BLKDISCARD), FITRIM, HPA/DCO detect and disable.
  • Free-space-only mode: fills filesystem free space with temp files containing the wipe pattern, then deletes them. User data is untouched.
  • SMART data: reads health, temperature, wear-level, error count, and NVMe health log via smartctl --json.
  • TPM erasing: seals AES keys to TPM PCRs, then erases the key to make encrypted data permanently unrecoverable.
  • Verification: static-pattern verify, PRNG-stream verify, whole-device hash, spot verification (N% of blocks), block verification, statistical verification (Shannon entropy, chi-square, byte frequency).
  • Audit certificates: JSON (canonical, deterministic), PDF (A4 single-page), XML, CSV, HTML (self-contained), YAML. Optional Ed25519 signing with key fingerprint binding.
  • Merkle tree: SHA-256 Merkle tree over per-block hashes for third-party verifiability.
  • Job scheduler: sequential, parallel (thread pool), priority, and groups modes for multi-device wipes.
  • Batch mode: YAML or JSON spec file for automated multi-device wipes.
  • JSON API: Unix-domain-socket server for programmatic control.
  • TUI: interactive terminal UI with device list, detail pane, and command palette.
  • Security hardening: secure memory (zeroize on drop), constant-time comparison (subtle), startup KAT self-tests, continuous RNG health checks (NIST SP 800-90B), FIPS mode flag.
  • Legacy compatibility: accepts all legacy nwipe CLI flags with deprecation warnings. Invoking via a nwipe symlink enables legacy compatibility mode automatically.
  • SBOM: CycloneDX 1.4 Software Bill of Materials generation.

Build

cargo build --workspace --release

The binary is at target/release/scuttle. For legacy compatibility, create a symlink: ln -s scuttle target/release/nwipe.

Quick start

See quickstart.md for detailed examples.

# List block devices
scuttle list

# Wipe a loopback file
scuttle wipe /tmp/test.bin --method dod --certificate json

# Wipe with a modern profile (policy-driven)
scuttle wipe /dev/sdX --profile paranoid --certificate all \
    --i-know-this-destroys-data

# Wipe free space only (user data untouched)
scuttle wipe /mnt/data --freespace-only --method zero

# Read SMART data
scuttle smart /dev/sda

# Run startup self-tests
scuttle selftest

# Generate a CycloneDX SBOM
scuttle sbom > scuttle-sbom.json

Project layout

scuttle/
├── crates/
│   ├── scuttle-hash/        SHA-256, SHA-512, BLAKE2b-512, BLAKE3-256
│   ├── scuttle-prng/        12 PRNG providers with KAT self-tests
│   ├── scuttle-devices/     Block device discovery via sysfs
│   ├── scuttle-media/       NIST 800-88 media classification
│   ├── scuttle-methods/     10 legacy wipe methods
│   ├── scuttle-verify/      Static, PRNG, spot, block, statistical verify
│   ├── scuttle-audit/       JSON, XML, CSV, HTML, YAML, Merkle tree
│   ├── scuttle-profiles/    20 profiles (9 legacy + 11 modern)
│   ├── scuttle-pdf/         PDF certificate exporter
│   ├── scuttle-freespace/   Free-space-only file-fill wipe
│   ├── scuttle-policy/      Policy engine (media class → wipe plan)
│   ├── scuttle-benchmark/   PRNG and hash throughput benchmarks
│   ├── scuttle-firmware/    ATA SE, NVMe Sanitize, SCSI, TRIM, HPA/DCO
│   ├── scuttle-signing/     Ed25519 audit record signing
│   ├── scuttle-smart/       SMART data via smartctl
│   ├── scuttle-tpm/         TPM 2.0 key seal/erase
│   ├── scuttle-scheduler/   Sequential, parallel, priority, groups
│   ├── scuttle-tui/         Interactive terminal UI
│   ├── scuttle-batch/       YAML/JSON batch spec parser
│   ├── scuttle-jsonapi/     Unix-socket JSON API server
│   ├── scuttle-security/    Secure memory, constant-time, KAT, RNG health
│   ├── scuttle-conformance/ NIST 800-88 reports, SBOM, API stability
│   ├── scuttle-core/        Wipe engine + lifecycle
│   └── scuttle-cli/         CLI binary (scuttle)
├── profiles/                20 profile TOML files
├── docs/
│   └── MANIFEST.md          Architectural reference
├── LICENSE                  GPLv2 full text
└── Cargo.toml               Workspace manifest

License

GPL-2.0-or-later. See LICENSE for the full text.

Acknowledgements

Scuttle was inspired by the work of Darik Horn (DBAN), Martijn van Brummelen (nwipe), Andy Beverley (nwipe), Bob Jenkins (ISAAC), Makoto Matsumoto and Takuji Nishimura (Mersenne Twister), and Fabian Druschke (XOROSHIRO-256, ALFG). The nwipe and DBAN projects informed legacy method patterns, PRNG semantics, and the PDF certificate layout. All Rust code is original.