AAD-50 is designed to meet or exceed the requirements of the following standards and specifications. This page documents how each standard maps to the AAD-50 protocol architecture.
Published by the National Institute of Standards and Technology. The current authoritative US government standard for media sanitization.
NIST SP 800-88 Rev.2 defines three sanitization categories:
| Category | Definition | AAD-50 Alignment |
|---|---|---|
| Clear | Logical techniques to sanitize data in user-addressable storage locations | Not applicable — AAD-50 operates at firmware level |
| Purge | Physical or logical techniques that render Target Data recovery infeasible | Yes — AAD-50 Phase B+C achieve Purge classification |
| Destroy | Physical destruction of the storage device | Not applicable — AAD-50 is a software/firmware protocol |
AAD-50 targets NIST SP 800-88 Rev.2 Purge classification through:
Note: Formal NIST evaluation has not yet been conducted. Alignment is based on protocol design analysis against the Rev.2 specification published September 2025.
Published by NVM Express, Inc. The authoritative technical specification for NVMe Sanitize command behaviour.
AAD-50 implements the NVMe Sanitize command set as follows:
| NVMe Feature | AAD-50 Implementation |
|---|---|
| Opcode 0x84 | Used for all sanitize cycles across all three phases |
| NSID = 0xFFFFFFFF | Broadcast to entire drive subsystem — no partition exclusions |
| CDW10 = 0x02 (Overwrite) | Phase B — 40 cycles of physical NAND cell overwrite |
| CDW10 = 0x01 (Block Erase) | Phase C — 5 cycles of FTL index teardown |
| CDW10 = 0x04 (Crypto Erase) | Phase A — 5 cycles of cryptographic key destruction |
| Log Page 0x81 SSTAT polling | Mandatory after every cycle — SSTAT = 0x1 required before advancing |
| SANICAP pre-flight check | Verifies drive capability before dispatching any cycle |
NVM Express initiated internal review of the AAD-50 specification in June 2026.
Published by the International Organization for Standardization. Provides guidance on storage security including data sanitization requirements.
ISO/IEC 27040 requires chain-of-custody documentation for sanitization operations. AAD-50 addresses this through:
Published by the Institute of Electrical and Electronics Engineers. The current international standard specifically for storage device sanitization, superseding earlier guidance.
IEEE 2883-2022 defines sanitization requirements for solid-state storage including NVMe devices. AAD-50 is designed to meet or exceed its requirements through firmware-level command execution and per-cycle hardware verification.
Formal evaluation against IEEE 2883-2022 has not yet been conducted and represents a necessary step toward regulatory recognition. This is tracked as a roadmap item.
The Wei et al. (USENIX FAST 2011) empirical study evaluated ATA SECURITY ERASE UNIT and ACS-2 SANITIZE BLOCK ERASE commands — the ATA/SCSI predecessors to NVMe Opcode 0x84. Their findings documented 3 of 12 drives failing to correctly execute the sanitize command they reported supporting.
NVMe Sanitize (Opcode 0x84) improves on its ATA predecessors in two key ways:
AAD-50 implements both improvements and adds the per-cycle polling enforcement that neither the ATA predecessors nor the standard nvme-cli tooling provided before PR [#3438].
On June 16, 2026, PR [#3438] — implementing --wait and --repeat N based on the verification architecture proposed in RFC [#3415] — was merged into linux-nvme/nvme-cli master by Daniel Wagner, the primary maintainer.
nvme-cli v3.0-b.1 explicitly lists PR [#3438] in its official release changelog:
nvme: add support for sanitize wait option by @ikegami-t in #3438
The verification architecture proposed by AAD-50 is now part of the official Linux NVMe toolchain and ships with virtually every Linux distribution on earth.
| Standard | AAD-50 Alignment | Formal Evaluation |
|---|---|---|
| NIST SP 800-88 Rev.2 Purge | Yes — by design | Not yet conducted |
| NVMe Base Specification 2.0 | Full implementation | Confirmed via nvme-cli merge |
| ISO/IEC 27040:2015 | Yes — audit chain and chain of custody | Not yet conducted |
| IEEE 2883-2022 | Yes — by design | Not yet conducted |
| nvme-cli v3.0-b.1 | Core verification architecture merged | Confirmed — commit 84078fa |
AAD-50 v1.1 - github.com/yonasabeselom/aad50
Maintained by: Yonas Abeselom - yonas_abeselom@protonmail.com