DOI QR코드

DOI QR Code

NVMe SSD 완전삭제 도구 정확성 검증 방법 연구

A Study on Verifying the Accuracy of NVMe SSD Sanitization Tools

  • 투고 : 2025.12.11
  • 심사 : 2026.02.15
  • 발행 : 2026.04.30

초록

컴퓨터 저장 매체를 양도, 판매 또는 폐기할 때는 저장된 데이터를 복구할 수 없도록 완전삭제해야 한다. 완전삭제 도구의 정확성은 저장매체에 전송되는 명령을 수집·분석하여 검증할 수 있다. 본 논문에서는 소프트웨어 형태의 NVMe SSD 완전삭제 도구의 정확성을 효율적으로 검증할 수 있는 도구를 개발하였다. NAND 플래시 메모리의 특성, NVMe 규격, 그리고 저장 매체 완전삭제 표준을 분석하여 NVMe SSD 완전삭제에 필요한 기능을 도출하고 이때 사용되는 명령을 식별하였다. 이를 바탕으로 오픈소스 머신 에뮬레이터인 QEMU의 NVMe 소스 코드를 수정하여 삭제 명령이 전송될 때 로그를 생성하도록 하였고, 개발된 도구가 식별된 명령이 전송될 때 로그를 정확하게 기록하는 것을 확인하였다. 본 연구에서 개발한 도구는 저장매체의 크기와 완전삭제 시간을 임의로 조정할 수 있으며, 식별된 명령에 대해서만 선택적으로 로그를 생성하므로 프로토콜 분석기를 사용하는 기존 방법에 비해 효율적으로 NVMe SSD 완전삭제 도구의 정확성을 검증할 수 있다.

When transferring, selling, or disposing of computer storage media, stored data must be securely erased to prevent recovery. The accuracy of sanitization tools can be verified by collecting and analyzing commands transmitted to the storage device. In this paper, we present an efficient verification tool for software-based NVMe SSD sanitization tools. By analyzingNAND flash memory characteristics, NVMe specifications, and storage media sanitization standards, we identified the necessary functions and corresponding commands for effective data erasure. Based on this analysis, we modified the NVMe source code of QEMU, an open-source machine emulator, to generate logs when identified commands are transmitted. Testing confirmed that our tool accurately records command transmission. Our tool can arbitrarily adjust the storage media size and sanitization time, and selectively generates logs only for the identified commands. Compared to conventional protocol analyzer-based approaches, our tool provides a more efficient method for validating NVMe SSD sanitization tools' accuracy.

키워드

I. 서론

컴퓨터 저장 매체에는 업무 정보나 개인 식별 정보(PII, Personally Identifiable Information) 등 중요 정보가 포함될 수 있어 양도, 판매 또는 폐기 전에 저장된 데이터를 삭제하지 않으면 여러 가지 문제가 발생할 수 있다[1][2].

저장 매체의 데이터를 복구하지 못하도록 완전삭제(sanitization) 하는 방법에는 매체를 파괴하는 물리적인 방법과 저장 매체의 기능을 유지한 채 모든 비트를 덮어쓰는 소프트웨어적인 방법이 있다. 전 세계적으로 기후 변화, 자원 부족 등에 대한 우려가 높아짐에 따라 지속 가능한 사회를 실현하기 위한 성장 모델로 순환경제(circular economy)가 주목받고 있어 매체 완전삭제 관련 가이드라인과 표준에서도 매체 완전삭제 시 물리적 파괴 대신에 소프트웨어 방법을 사용하도록 권고[3][4]하고 있다. 소프트웨어 방법으로 데이터를 완전삭제하기 위해서는 매체 특성 및 규격에 맞춰 데이터 삭제 명령어를 매체에 전송해야 한다.

NIST의 매체 완전삭제 가이드라인[5][6]은 완전 삭제 대상 매체의 특성, 저장된 데이터의 중요도, 매체 활용 계획(양도, 판매, 폐기 등)을 고려하여 데이터 유출 위험은 최소화하면서 효율적으로 완전삭제하는 방법을 선택하도록 규정하고 있다. IEEE 저장 매체 완전삭제 표준[4]은 완전삭제 방법으로 물리적 방법인 파괴(destruct)와, 소프트웨어 방법인 퍼지(purge) 완전삭제와 클리어(clear) 완전삭제 방법의 절차 등을 매체 종류별로 규정하고 있다.

매체 완전삭제 도구가 완전삭제 표준에 규정된 방법에 따라 삭제 기능을 수행하는지 검증하기 위해서는 완전삭제 도구가 표시하는 내용을 그대로 받아들이는 대신 완전삭제에 필요한 명령을 매체에 적절한 절차에 따라 전송하는지 확인이 필요하다. 이를 위해서는 완전삭제 도구가 매체 인터페이스를 통해 전송하는 명령을 수집·분석해야 한다. 이때 일반적으로 프로토콜 분석기를 사용하는데 프로토콜 분석기는 다루기가 어렵고 저장 매체의 용량이 큰 경우 완전삭제에 시간이 오래 걸리고 완전삭제 도구와 매체 사이의 통신 내용이 많아 완전삭제 관련 통신 내용을 찾아 분석하는 데 어려움이 있다.

이에 본 논문에서는 현재 많이 사용되고 있는 NVMe(Non-Volatile Memory Express) SSD(Solid State Drive) 매체의 특징, 규격, 매체 완전삭제 표준을 분석하여 NVMe SSD 완전삭제 도구가 수행해야 하는 기능을 도출하고 이때 도구가 전송하는 명령을 식별하였다. 이를 바탕으로 오픈 소스 머신 에뮬레이터인 QEMU[7][8]의 NVMe 코드를 수정하여 식별된 명령이 전송될 때 전송 내용을 기록(logging)하는 도구를 개발하고 개발된 도구가 정상적으로 동작함을 검증하였다.

개발된 도구는 소프트웨어 형태의 완전삭제 도구 정확성 검증에 사용할 수 있다. 그리고 저장 매체의 용량이나 매체 삭제 시간을 임의로 조정할 수 있고, 완전삭제와 관련된 명령에 대해서만 로그가 생성되므로 프로토콜 분석기를 이용하는 방법보다 효율적으로 완전삭제 도구의 정확성을 검증할 수 있는 장점이 있다.

논문의 구성은 다음과 같다. 2장에서는 매체 완전 삭제 관련 규정과 관련 연구 결과를 살펴본다. 3장에서는 NAND 플래시 메모리의 특징, NVMe 규격, 완전삭제 표준 등을 살펴보고 이를 바탕으로 NVMe SSD 완전삭제 도구의 기능을 도출하고 기능 수행에 사용하는 명령을 식별한다. 4장에서는 완전삭제 도구 정확성 확인을 위해 QEMU의 NVMe 코드를 수정한 내용과 구현 내용을 검증한 결과를 살펴본다. 5장에서는 연구 결과를 정리하고 향후 연구 내용을 살펴본다.

II. 관련 규정 및 연구

2.1 관련 가이드라인 및 표준

자기장을 이용해 데이터를 기록하는 HDD(Hard Disk Drive)의 경우 데이터를 삭제하기 위해 기존 데이터를 다른 값으로 덮어쓰더라도 기존 데이터 중 일부를 복구할 수 있다는 연구 결과[9] 발표 이후 여러 국가, 기관 등에서 데이터 완전삭제 기준을 발표했다.

미국 NIST는 2014년 전자 매체뿐만 아니라 인쇄 문서를 포함한 매체 완전삭제 가이드라인[5]을 발표했다. NIST는 완전삭제 방법을 클리어, 퍼지, 물리적 파괴 세 가지로 분류했다.

- 클리어: 쓰기 명령을 이용하여 호스트에서 접근 가능한 매체의 모든 저장 공간을 임의의 데이터로 덮어쓴다. 호스트에서 접근할 수 없는 영역의 데이터는 삭제 불가능하다.

- 퍼지: 매체에서 제공되는 완전삭제 명령을 이용하여 매체에 저장된 모든 데이터를 삭제한다. 완전삭제 명령은 덮어쓰기삭제(overwrite erase), 블록삭제(block erase), 암호기반삭제(cryptographic erase)로 구분된다.

- 물리적 파괴: 매체에 저장된 데이터를 복구하지 못 하도록 하고, 이후 데이터 저장 용도로 사용할 수 없게 만드는 방법으로 분해, 분쇄, 용융, 소각 등을 통해 최신 복구 기술로도 데이터 복원이 불가능하게 한다.

IEEE는 NIST 가이드라인[5] 공개 이후 저장 매체 기술 발전을 반영하는 한편 저장 매체 종류별로 완전삭제를 위해서 사용해야 하는 세부적인 기법(technique)과 명령을 정의한 저장 매체 완전삭제 표준[4]을 2022년 공개했다. IEEE 완전삭제 표준은 인쇄물, 광학 매체, HDD/SSHD(Solid State Hybrid Drive)/SSD, 기타 자기 매체, USB, 메모리 카드, 보드(board) 및 저장장치에 장착된 플래시 메모리, RAM 및 ROM 기반 저장장치 등 광범위한 매체를 다루고 있다. 또한 IEEE는 저장 매체를 처리할 때 [4]에 제시된 저장 매체 완전삭제 방법을 어떻게 적용하는 것이 적절한지에 대한 권고안을 2025년에 공개[10]했다.

NIST는 IEEE 표준[4]과 NSA의 관련 규격 등을 반영하여 매체 완전삭제 가이드라인의 개정 버전[6]을 2025년 공개했다.

2.2 관련 연구

[9]는 자기 매체에 데이터를 기록하는 HDD의 경우 기록 방식의 특성 때문에 자력을 탐지할 수 있는 현미경을 이용하면 마지막에 기록된 데이터 외에도 이전에 기록된 데이터를 확인할 수 있어 기록된 데이터를 완전히 삭제하기 위해서는 같은 위치에 여러 번 덮어써야 복구 불가능하다는 연구 결과를 발표하였다. 저자가 연구에 사용한 매체의 경우 35회 데이터를 덮어써야 복구 불가했다는 연구 결과를 제시하고 자기 매체의 경우 완전삭제하기 위해서 35회 덮어쓰는 방법을 사용해야 한다고 주장하였다. 이 연구 결과는 향후 각국 및 기관에서 HDD 완전삭제를 위해서 동일한 위치에 여러 번 덮어쓰라는 권고를 하는 근거가 되었다. 미국 국방부의 DoD 5200.22-M 표준의 경우 완전삭제를 위해서 3번에서 7번 덮어쓰라고 권고하였다. 최근 사용되는 자기 기록 매체들은 데이터 기록에 좀 더 정교한 방법이 사용되고 있기 때문에 여러 번 덮어쓸 필요가 없다고 알려져 있다.

[11]은 완전삭제되지 않은 플래시 메모리에서 포렌식 기법을 이용해 데이터를 복구하는 다양한 방법과 각 방법의 장단점을 기술하고 있다. 제조사나 서비스센터에서 플래시 메모리의 모든 저장 영역을 읽어 오기 위해 사용하는 소프트웨어인 플래셔(flasher)를 이용하는 방법은 소프트웨어적 접근이므로 납땜이 불필요하나 제조사별로 전용 플래셔를 사용해야 하며 일부 영역이 누락 될 수 있는 단점이 있다. 디지털 회로 테스트에 사용되는 JTAG(Joint Test Action Group) 인터페이스를 이용하여 프로 세서에 연결된 플래시 메모리를 읽어 오는 방법은 모든 플래시 메모리 영역의 데이터를 읽어 올 수 있지만 JTAG 인터페이스를 지원하지 않거나 제거된 기기에는 적용할 수 없는 단점이 있다. 플래시 메모리를 보드에서 분리(chip-off)하여 플래시 메모리 리더기로 직접 읽는 방법은 매체의 데이터를 직접 읽을 수 있으나 물리적 손상의 위험이 있으며 데이터 복구를 위해서는 FTL 분석 등의 추가 과정이 필요하다.

[12]는 NAND 플래시 메모리의 데이터를 복구하기 위해 보드에서 분리하는 과정에서 NAND 소자의 특성과 열 손상 등으로 데이터 오류 발생 등 신뢰성에 문제가 발생할 수 있는데 NAND 셀의 읽기 기준 전압을 동적으로 조정하는 Read-Retry 기법을 사용하면 데이터 복구 가능성을 증가시킬 수 있다는 연구 결과를 제시하였다.

[13]은 플래시 메모리 기반 SSD에서 데이터를 신뢰성 있게 삭제하는 방법을 연구한 결과이다. SSD 매체 중에서 ATA(Advanced Technology Attachment) 규격의 Secure Erase 명령을 이용한 삭제, 덮어쓰기삭제, 디가우징(degaussing), 암호기반삭제 등을 시도한 후 NAND 플래시 메모리를 보드에서 분리하여 데이터 삭제 여부를 검증한 결과 디가우징은 삭제 효과가 전혀 없으며, 다른 방법들도 모든 데이터를 완전히 삭제하지는 못하였다고 하였다. 삭제 명령을 이용해서 삭제했을 때 데이터가 삭제되는 정도는 SSD 매체별로 차이가 있어서 신뢰하기 어렵기 때문에 펌웨어에서 구현된 완전삭제 방법에 대한 검증이 필요하다고 주장하였다.

III. NVMe SSD 완전삭제

3.1 NAND 플래시 메모리 특징

현재 컴퓨터에서 주로 사용되는 저장 매체는 자기 매체인 HDD와 플래시 메모리 기반의 SSD이다. SSD에는 바이트 단위 읽기와 쓰기는 불가능하나 대용량으로 제조 가능한 NAND 플래시 메모리가 사용되고 있다. NAND 플래시 메모리는 다음과 같은 특징이 있다[14][15].

- 페이지 단위로만 읽기와 쓰기(program)가 가능하다. 데이터 쓰기는 사전에 삭제가 된 곳에서만 가능하다.

- 삭제 작업은 블록 단위로 가능하며, 블록의 크기는 페이지 크기의 배수이다.

- NAND 소자의 특성 때문에 삭제 및 쓰기 가능한 횟수에는 제한이 있으며 P/E(Program/ Erase) 사이클 값으로 표현된다. P/E 사이클 값은 제조사별로 차이가 있으며, SLC(Single Level Cell), MLC(Multi Level Cell), TLC(Triple Level Cell) 순으로 단일 셀에 저장하는 비트 수가 늘어날수록 P/E 사이클 값이 작아진다. SLC의 P/E 사이클은 대략 100,000으로 알려져 있다.

이런 특성 때문에 NAND 플래시 메모리를 저장 장치로 효율적으로 사용하기 위해 플래시 메모리 컨트롤러는 다양한 관리 방법을 사용한다[14][15].

웨어레벨링(wear leveling)은 NAND 플래시 메모리의 모든 블록이 균등하게 삭제되도록 관리하는 것이다. 호스트에서 특정 위치에 데이터를 쓰도록 요청했을 때, 해당 논리 주소의 데이터가 기록될 플래시 메모리 블록의 위치는 쓰기 횟수가 가장 작은 곳으로 선택하고, Fig. 2와 같이 논리 주소와 해당 논리 주소의 데이터가 기록된 플래시 메모리의 내부 물리 주소를 대응시키는 FTL(Flash Translation Table)을 사용하여 NAND 플래시의 각 블록이 매체 내부 다른 블록들과 비슷한 횟수만큼 삭제 및 쓰기 되도록 관리한다. 블록 삭제는 주기적으로 또는 사용할 수 있는 블록이 없을 때 가비지 컬렉션(garbage collection) 과정을 거쳐서 수행된다.

JBBHCB_2026_v36n2_583_4_f0001.png 이미지

Fig. 1. Page Write vs. Block Erase[15]

JBBHCB_2026_v36n2_583_4_f0002.png 이미지

Fig. 2. An Example of FTL[16]

3.2 NVMe 규격

SSD 저장 매체와 호스트 사이의 통신 규격으로는 ATA 규격과 NVMe 규격[17]이 사용되고 있다. ATA 규격은 HDD에 사용하기 위해 개발된 것으로 일부 SSD에서도 사용되고 있다. NVMe 규격은 플래시 메모리 매체의 특성을 고려하여 개발된 것으로 SSD 산업 표준이다. 본 논문에서는 NVMe 규격 중 데이터 완전삭제와 관련된 내용 위주로 살펴본다.

NVMe 규격은 Fig. 3과 같이 여러 하위 규격의 집합이다.

JBBHCB_2026_v36n2_583_4_f0003.png 이미지

Fig. 3. NVM Express Specification Set[18]

- 기본 규격: 호스트가 NVMe 서브시스템과 통신하는 프로토콜을 정의한다.

- I/O 명령 집합 규격: 기본 규격을 확장하여 플래시 메모리에 저장된 데이터에 대한 I/O 명령을 구현하기 위한 자료 구조, 피처(feature), 로그, 상태 값 등을 정의한다.

- 전송 규격: 호스트와 NVMe 서브시스템 사이의 명령어 전송 방식 정의한다.

- NVMe 서브시스템 관리 인터페이스 규격: NVMe 관리를 위한 명령과 구조를 정의한다.

- 부트 규격: NVMe를 이용하여 시스템을 부팅하는 방법을 정의한다.

I/O 명령 집합 규격은 NVMe 저장 공간을 어떻게 사용하는지에 따라 일반적인 디스크처럼 사용하기 위한 NVM 명령 집합, 키-값 쌍으로 다루기 위한 Key Value 명령 집합, 대용량 스토리지를 효율적으로 다루기 위한 Zoned Namespace 명령 집합 등이 있다. 전송 규격에는 컴퓨터 메인보드의 PCIe 인터페이스를 통해 전송하는 규격과 TCP/IP 네트워크를 통해 전송하는 규격 등이 존재한다. 본 논문에서는 QEMU를 수정하여 도구를 개발하기 때문에 QEMU가 지원하는 PCIe를 통한 전송만 고려한다.

NVMe 서브시스템의 컨트롤러는 호스트가 PCIe를 통해 전송한 명령에 따라 플래시 메모리를 읽고 쓰거나 관리한다. NVMe 서브시스템에는 하나 이상의 컨트롤러가 존재한다. 호스트는 컨트롤러에 명령을 전송하고 명령 실행 결과를 수신하기 위해서 전송큐(Submission Queue, 이하 SQ)와 완료 큐(Completion Queue, 이하 CQ)를 생성해 사용한다. NVMe 서브시스템 관리를 위해 관리(admin) SQ/CQ 쌍과 I/O를 위한 I/O SQ/CQ 쌍이 생성된다. 호스트와 NVMe 서브시스템 성능 향상을 위해 CMB(Controller Memory Buffer)와 HMB( ost Memory Buffer)를 사용할 수 있다. CMB는 컨트롤러 내부의 일부 RAM을 호스트가 직접 접근할 수 있도록 하여 호스트와 NVMe 서브시스템 사이의 통신 효율을 높이는 방법이고, HMB는 RAM이 부족한 컨트롤러에 호스트 메모리 일부를 제공하여 NVMe 서브시스템이 FLT 캐시 등에 이용할 수 있게 하여 효율을 높이기 위한 것이다.

호스트가 플래시 메모리 영역에 접근하기 위해서 는 해당 영역을 네임스페이스로 생성하고 연결(attachment)하여 포맷해야 한다. 컨트롤러에 연결되지 않은 네임스페이스에는 접근할 수 없다. 한 매체에 여러 개의 네임스페이스가 존재할 수 있으며, 각 네임스페이스는 네임스페이스 ID로 구분된다. 네임스페이스를 지정하는 관리 명령의 네임스페이스 ID를 0xFFFFFFFF로 지정하면 컨트롤러에 연결된 모든 네임스페이스를 대상으로 관리 명령이 수행된다. 네임스페이스는 최초 쓰기 가능한 상태로 생성되나 필요에 따라 쓰기방지 상태로 전환할 수 있으며 영구적으로 쓰기방지 상태로 만들 수도 있다.

컨트롤러는 연결된 호스트에 전원이 없는 경우에도 데이터가 유지되며 바이트 단위로 접근가능한 메모리인 PMR(Persistent Memory Region) 영역을 생성할 수 있다. 또한 보안 기능으로 전용 보안 파티션에 해당하는 RPMB(Replay Protected Memory Block) 기능을 호스트에 제공한다.

NVMe 서브시스템의 관리 명령어와 I/O 명령어 중 완전삭제와 관련 있는 명령어는 다음과 같다.

- Identify: 컨트롤러 또는 네임스페이스의 정보를 확인할 수 있다. 매체가 제공하는 옵션 기능, 용량, 성능, 펌웨어 버전, 완전삭제 명령에서 지원하는 삭제 방법 등을 확인할 수 있다.

- Sanitize: 퍼지 완전삭제에 사용할 수 있는 명령이다. 덮어쓰기삭제, 블록삭제, 암호기반삭제 방법이 정의되어 있다.

- Get Log Page: 장치의 현재 상태, 오류 기록, 사용 통계 등 정보를 제공한다. Sanitize 명령 등의 진행 상태와 결과 확인에 사용할 수 있다.

- Format: 특정 네임스페이스를 논리적으로 초기화한다. SES(Secure Erase Settings) 값에 따라 데이터 영역이나 설정 데이터를 블록삭제나 암호기반삭제할 수 있다.

- Delete I/O SQ 및 Delete CQ: I/O 명령을 전송하고 수행 결과를 수신하기 위해 생성한 큐를 삭제한다.

- Write: 특정 논리 주소 영역을 호스트가 지정하는 값으로 덮어쓴다. 클리어 완전삭제에 사용할 수 있다.

- Write Zeros: 특정 논리 주소 영역을 0x00으로 덮어쓴다. 클리어 완전삭제에 사용할 수 있다.

3.3 SED(Self-Encrypting Disk)

저장 매체에 데이터를 쓰고 읽을 때 매체가 자체적으로 암복호화하는 SED 기능은 클래스 0 SED, TCG Opal, IEEE 1667 등 규격이 있다[19].

클래스 0 SED는 BIOS에서 HDD 비밀번호를 설정하면 자동으로 AES 알고리즘으로 데이터를 암호화하는 방법이다.

TCG(Trusted Computing Group)는 HDD, SSD, 이동식 저장 매체(예: SD 카드, USB 드라이브) 등 적용할 수 있는 Opal SSC(Security Subsystem Class) 보안 규격을 정의[20]하였다. Opal SSC를 적용한 저장 매체는 호스트와 독립적으로 저장 매체를 암복호화하는 SED, 셰도우(shadow) MBR(Master Boot Record)을 이용한 인증 후 부팅(pre-boot authentication), 특정 저장 영역 잠금 기능 등의 보안 기능을 제공한다. TCG는 Opal 이외에도 Opalite, Pyrite 등 Opal 기능의 하위 버전 SSC를 정의하고 있다. IEEE 완전삭제 표준[4]에서는 TCG SSC가 적용된 SSD 완전삭제에 TCG SSC의 보안 기능을 이용할 수 있다고 정의하고 있다.

IEEE 1667은 운영제체의 디스크 암호화 기능(예: 윈도우 BitLocker)과 연동하여 저장장치에서 하드웨어 암호화를 수행하는 방법을 정의한다.

3.4 NVMe SSD 완전삭제 고려사항

HDD의 경우 호스트가 특정 논리 주소에 데이터를 저장하면 항상 동일한 물리 위치에 데이터가 저장된다(in-place update). SSD의 경우에는 웨어레벨링 때문에 특정 논리 주소에 데이터를 저장하더라도 저장할 때마다 서로 다른 물리 위치에 데이터가 저장된다(out-of-place update). 데이터 쓰기 명령이 전송되면 SSD 컨트롤러는 쓰기 가능한 페이지를 찾아서 데이터를 저장하고 FTL에서 논리 주소에 매핑되는 물리 주소를 새로운 물리 주소로 덮어쓰고 기존 데이터는 즉시 삭제하지 않는다. 따라서 SSD에는 특정 논리 주소의 현재 데이터와 이전 데이터가 함께 존재할 수 있다. 다만 호스트는 이전 데이터에 직접 접근할 수 없다. 따라서, HDD의 경우에는 호스트에서 접근 가능한 모든 위치의 데이터를 0이나 1로 덮어쓰면 매체의 모든 데이터를 완전삭제할 수 있으나, SSD의 경우에는 사용자가 접근 불가능한 위치의 데이터를 삭제하기 위해서는 HDD와 다르게 저장 매체의 모든 공간에 접근할 수 있는 컨트롤러의 지원이 필요하다.

NVMe SSD 표준 명령 규격에는 제조사별로 특별한 용도로 활용할 수 있도록 준비해 놓은 영역이 있다. 제조사는 표준 명령어로는 접근 불가능한 영역을 포함하여 매체의 모든 공간에 접근할 수 있는 전용 명령을 구현해 놓았을 경우 이를 이용하여 데이터를 읽거나[11] 완전삭제할 수 있다. 하지만 일반적으로 제조사 전용 명령은 공개되지 않기 때문에 소프트웨어 방법으로 매체를 완전삭제하기 위해서는 표준 명령어를 이용해야 한다.

호스트와 플래시 메모리 기반 저장 매체의 관계는 Fig. 4와 같다.

JBBHCB_2026_v36n2_583_6_f0001.png 이미지

Fig. 4. Flash Storage Device Architecture[12]

호스트에서 데이터 삭제 명령을 매체에 전송하더라도 다음과 같은 경우에는 삭제된 데이터가 복구될 가능성이 있다.

- 매체 특성에 적합한 완전삭제 절차와 방법을 따르지 않고 삭제 진행

- 펌웨어의 완전삭제 명령 구현 오류

- 저장 매체의 특성으로 인해 삭제된 데이터 복구 가능[21]

저장 매체 종류별로 특성, 명령 규격이 다르므로 완전삭제는 매체에 적합한 절차와 방법에 따라 삭제해야 한다. NVMe SSD 매체에 대한 완전삭제 절차와 방법은 3.5절에서 살펴본다. 2.2절에서 살펴본 바와 같이 펌웨어에 삭제 명령을 구현할 때 오류가 있으면 일부 데이터가 삭제되지 않을 수 있으며, 데이터가 삭제된 경우에도 최신 복구 기술을 이용하면 복구될 수 있다. 본 논문은 매체 완전삭제 도구가 삭제 대상 매체에 적합한 절차와 방법을 따르고 있는지 확인하는 방법을 연구하는 것이므로 펌웨어에서 명령을 잘못 구현하는 경우와 최신 기술을 이용한 데이터 복구에 대해서는 고려하지 않는다.

3.5 NVMe SSD 완전삭제 표준[4]

IEEE 완전삭제 표준은 저장 매체 완전삭제에 대한 일반사항과 매체 종류별 완전삭제 기법을 상세히 정의하고 있다. NVMe SSD와 관련된 내용은 다음과 같다.

클리어 완전삭제와 퍼지 완전삭제를 사용할 경우 매체에서 삭제되는 범위에 차이가 있으므로 완전삭제 방법을 선택할 때는 이를 고려해야 한다. 클리어 완전삭제만 하더라도 호스트에서 접근 가능한 데이터, CMB 데이터, HMB 데이터 등은 삭제 가능하다. 하지만 호스트에서 접근 불가능한 데이터, 캐시 영역, 삭제방지 영역의 데이터, TCG 관련 정보, PMR 데이터는 클리어 완전삭제 방법으로 삭제할 수 없어 이 영역들에 저장된 정보를 삭제해야 할 경우 퍼지 완전삭제를 해야 한다. 퍼지 완전삭제 방법을 사용하더라도 삭제방지 관련 데이터, 부트 파티션, NVMe-oF(NVMe over Fabrics) 인증 정보, 매체 기능(feature) 설정 등은 삭제되지 않는다. 또한, 비휘발성 영역에 저장된 설정정보, 로그 정보는 컨트롤러나 완전삭제 방법 구현에 따라 삭제 여부가 달라질 수 있다.

퍼지 완전삭제 방법을 사용하더라도 삭제할 수 없는 영역이 있으므로 다음과 같은 영역에 중요한 데이터가 포함되어 있는 경우 NVMe SSD 제조사가 해당 데이터를 삭제하는 방법(예: 제조사 전용 완전삭제 명령)을 제공할 경우 이를 이용하여 다음 항목들을 제거한 후 클리어 또는 퍼지 완전삭제를 수행해야 하며, 제조사가 해당 전용 명령을 제공하지 않으면 물리적 파괴를 이용해 완전삭제해야 한다.

- 영구 삭제방지 상태의 네임스페이스

- 부트 파티션

- 분할된 도메인

- RPMB

- 인증 자격 정보(NVMe-oF 인증 정보, RPMB 인증정보, TCG 잠금 인증정보)

클리어 완전삭제와 퍼지 완전삭제 모두 완전삭제 대상 네임스페이스에 쓰기방지가 설정된 경우 이를 해제한 후 진행해야 한다.

IEEE 표준은 데이터 삭제 결과를 반드시 검증(verify)하도록 규정하지 않으나 검증이 필요할 경우 데이터 삭제 전에 알려진 패턴을 기록하고 삭제 후에 해당 데이터가 삭제되었는지 확인하여 검증하도록 규정되어 있다.

3.5.1 클리어 완전삭제

클리어 완전삭제는 모든 네임스페이스에 적용되어야 한다. 네임스페이스가 컨트롤러에 연결되어 있지 않으면 연결한 후 적용해야 한다. 매체의 일부 영역이 네임스페이스에 할당되어 있지 않으면 클리어 완전삭제를 적용할 수 없다.

클리어 완전삭제는 다음 절차를 따라야 한다.

① 네임스페이스에 저장된 사용자 데이터 삭제

② 컨트롤러와 관련된 데이터 삭제

네임스페이스에 저장된 사용자 데이터 삭제는 지원되는 명령어와 저장된 데이터의 종류에 따라 달라질 수 있다. Format NVM 명령으로 삭제할 때 네임스페이스 ID를 0xFFFFFFFF로 지정할 수 있으면 모든 네임스페이스에 저장된 사용자 데이터를 한번에 삭제할 수 있다. TCG 표준을 지원하는 매체에서 매체를 삭제할 수 있는 경우 TCG 기능을 사용할 수도 있다. 네임스페이스에 Key Value 데이터가 저장되어 있거나, Format NVM 네임스페이스 ID에 0xFFFFFFFF를 지정할 수 없는 경우 매체의 모든 네임스페이스를 개별적으로 삭제해야 한다. Key Value 데이터는 키-값 쌍을 삭제하고, 아닌 경우 Format NVM 명령이나 Write NVM 명령, Write Zeros 명령 등을 사용해서 모든 논리 블록의 데이터를 삭제해야 한다.

컨트롤러와 관련된 사용자 데이터가 저장되어 있는 CMB와 HMB의 정보도 삭제해야 한다. CMB에 저장된 정보는 CMB에 있는 모든 I/O SQ, CQ에 있는 데이터를 삭제한다. HMB에 있는 정보는 HMB을 비활성화한 후 덮어써서 삭제한다.

3.5.2 퍼지 완전삭제

퍼지 완전삭제는 다음 절차를 따라야 한다.

① 삭제 대상 저장 영역 접근 허용

② 모든 I/O SQ, CQ 삭제

③ 완전삭제 작업

④ 컨트롤러와 관련된 사용자 데이터 삭제

삭제 대상 저장 영역 접근 허용은 네임스페이스 쓰기방지 해제, HMB 영역 비활성화와 PMR 비활성화를 통해 다음 단계에서 완전삭제가 정상적으로 이루어질 수 있도록 하는 과정이다.

I/O SQ, CQ에 기존 I/O 데이터 정보가 남아 있을 수 있어 모든 I/O SQ, CQ는 삭제해야 한다.

완전삭제 작업은 암호기반삭제, 블록삭제, 덮어쓰기삭제 중 매체가 지원하는 완전삭제 명령을 이용해 매체 운용에 필수적인 데이터를 제외한 모든 데이터를 삭제하는 것이다. 암호기반삭제는 SED 기능을 지원하는 디스크가 매체에 저장되는 데이터를 자동으로 암복호화하므로 암호키를 변경하면 기존에 저장된 데이터는 복구 불가능하게 되는 성질을 이용하여 디스크에 저장된 데이터를 완전삭제하는 방법이다. 따라서, 암호기반삭제를 이용하여 완전삭제를 사용할 때는 디스크에 저장된 모든 데이터가 암호화된 경우에만 사용해야 한다. 암호화가 활성화 안 된 상태에서 저장한 데이터가 있거나 암호화가 적용되지 않은 영역이 있으면 완전삭제를 보장할 수 없다. 블록삭제 방법은 디스크에 저장된 데이터를 블록 단위로 삭제하는 방법으로 NAND 플래시 메모리의 블록 삭제 기능을 이용하므로 매체의 수명을 크게 저하시키지 않고 완전삭제 가능한 방법이다. 덮어쓰기삭제 방법은 호스트에서 접근 불가능한 영역을 포함해서 매체에 저장된 모든 데이터를 지정된 패턴으로 덮어써서 삭제하는 방법으로 필요할 경우 여러 번 덮어쓸 수 있다. NAND 플래시 메모리의 경우 이 방법을 사용하면 매체의 수명이 단축될 수 있다.

컨트롤러와 관련된 사용자 데이터 삭제는 클리어 완전삭제에서와 동일한 방법을 이용한다.

3.6 NVMe SSD 완전삭제 도구 기능

완전삭제 도구가 삭제 대상 매체에 적합한 절차와 방법에 따라 삭제를 진행하는지 확인하기 위해서는 완전삭제 도구가 화면에 표시하는 내용뿐만 아니라 인터페이스를 통해 매체에 전달되는 명령을 수집 및 분석해야 한다. 3.5절의 내용으로부터 NVMe SSD를 대상으로 클리어 완전삭제 또는 퍼지 완전삭제를 수행하는 완전삭제 도구가 수행해야 하는 기능을 도출하면 Fig. 5와 같다.

JBBHCB_2026_v36n2_583_8_f0001.png 이미지

Fig. 5. Pseudocode for NVMe Sanitization Tools

완전삭제 도구는 먼저 컨트롤러 정보를 수집해서 삭제 대상 매체에 대한 정보를 수집하고 퍼지 또는 클리어 방법으로 매체 데이터를 삭제한다. 이후 CMB/HMB 등에 저장된 정보를 삭제하고 완전삭제 결과 보고서를 작성해야 한다. 퍼지 완전삭제 방법의 경우 I/O SQ, CQ를 삭제한 후 해당 매체가 지원하는 완전삭제 방법 중 사용자가 선택한 방법에 해당하는 명령을 전송하고 완전삭제 명령 수행이 완료될 때까지 대기해야 한다. 클리어 완전삭제 방법의 경우 매체의 네임스페이스 정보를 이용하여 모든 네임스페이스를 한번에 삭제 가능한지 판단하여 한번에 네임스페이스를 삭제하거나 각 네임스페이스별로 삭제를 수행해야 한다.

Fig. 5와 3.2절의 내용으로부터 NVME SSD 완전삭제 도구의 정확성을 확인하기 위해서는 도구가 전송하는 명령 중 Identify Controller, Identify Namespace, Delete I/O Submission Queue, Delete I/O Completion Queue, Sanitize, Format 명령과 Get Log Page 명령 중에서 Sanitize Status 페이지를 가져오는 부분을 모니터링 해야 한다는 것을 알 수 있다.

IV. 구현 및 검증

지금까지 플래시 메모리의 특성, NVMe 규격 및 NVMe 완전삭제 표준을 분석하여 NVMe SSD 완전삭제 도구의 기능을 도출하고 완전삭제 도구가 삭제를 위해 전송해야 하는 명령을 식별했다. 본 장에서는 식별된 명령의 전송 내용을 모니터링하기 위해서 QEMU 도구를 수정하여 검증 도구를 개발한 방법과 개발한 도구가 정확하게 구현되었음을 검증한 내용을 기술한다.

4.1 구현

3.6절에서 식별된 NVMe 명령들의 전송 내용을 모니터링하기 위해 해당 명령이 전송될 때 로그파일에 해당 내용을 저장할 수 있도록 오픈소스 머신 에뮬레이터인 QEMU의 NVMe 코드를 수정했다. QEMU는 NVMe 규격 1.4를 참조하여 NVMe 장치를 에뮬레이션하고 있으나 모니터링 대상 명령을 모두 구현하고 있지는 않아서 구현되지 않은 명령은 추가하였으며, 모니터링 대상 명령이 전송될 때 해당 내용을 로그파일에 추가하도록 명령을 처리하는 소스 코드를 수정했다. 추가하거나 변경한 주요 내용은 다음과 같다.

NVMe SSD가 완전삭제 방법 중 어떤 삭제 방법을 지원하는지는 Identify Controller 명령 수행 결과로 반환되는 자료 구조의 331번 바이트 중 하위 3개 비트를 통해 알 수 있다. 각 비트의 의미는 Fig. 6과 같이 Sanitize Capabilities Fields에서 확인할 수 있다.

JBBHCB_2026_v36n2_583_9_f0001.png 이미지

Fig. 6. Sanitize Capabilities Fields

개발된 도구는 삭제 대상 매체가 세 가지 완전삭제 방법을 모두 지원하는 것으로 인식될 수 있도록 Identify Controller 명령 수행 결과 자료 구조에 해당 비트 값을 1로 설정하도록 코드를 수정하였다.

완전삭제 명령을 전송할 때 삭제 방법 중 어떤 방법을 사용할 것인지는 Sanitize 명령의 파라미터 필드에 지정한다. 해당 필드의 내용은 Fig. 7, Fig. 8과 같다.

JBBHCB_2026_v36n2_583_9_f0002.png 이미지

Fig. 7. Sanitize Command - Dword 10

JBBHCB_2026_v36n2_583_9_f0003.png 이미지

Fig. 8. Sanitize Command - Dword 11

Dword 10의 Sanitize Action(SANACT) 필드값에 따라 블록삭제(010b), 덮어쓰기삭제(011b), 암호기반삭제(100b) 방법을 지정할 수 있다. 덮어쓰기삭제 방법의 경우 덮어쓸 패턴을 Overwrite Pattern(OVRPAT)에, 덮어쓰기 횟수는 Overwrite Pass Count(OWPASS)에 각각 지정하고, 여러 번 덮어쓰는 경우 덮어쓸 때마다 패턴을 비트 반전시켜 쓰고 싶으면 Overwrite Invert Pattern Between Passes(OIPBP)에 설정한다.

Sanitize 명령이 전송되면 컨트롤러는 지정된 완전삭제 방법이 컨트롤러가 지원하는 방법이 아니면 오류를 반환하고, 지원하는 방법이면 명령 수행 성공한 것으로 완료 결과를 반환한 후 완전삭제를 백그라운드에서 실행하면서 Sanitize Status 로그 페이지를 업데이트한다. Sanitize 명령에서 완전삭제 처리가 완료되기 전까지는 Get Log Page 명령 등 일부 관리 명령만 수행될 수 있다. 허용된 명령 이외의 명령이 전송되면 Sanitize In Progress 상태코드로 오류를 발생시킨다. 따라서 완전삭제 도구는 Sanitize 명령 전송 후에는 Get Log Page 명령으로 Sanitize Status 페이지의 내용을 확인하여 완전삭제가 완료될 때까지 대기해야 한다. 본 논문은 완전삭제 도구가 Sanitize 명령을 정확하게 처리하는지 확인하는 것이 목적이므로 Sanitize 명령 처리 코드에서는 Sanitize Status 페이지 데이터를 설정한 후 명령 수행 완료 결과를 반환하며 실제 완전삭제 처리는 하지 않는다.

Get Log Page 명령으로 Sanitize Status 페이지를 요구하면 반환되는 자료구조는 Fig. 9와 같다.

JBBHCB_2026_v36n2_583_10_f0001.png 이미지

Fig. 9. Get Log Page – Sanitize Status Log

Sanitize Progress 필드는 완전삭제가 완료되면 0xFFFF가 기록되고, 삭제가 진행 중일 경우 삭제 시작 시각부터 현재 시각까지와 예상되는 완료 시각까지 진행 비율을 계산하여 16비트 값으로 기록한다. Sanitize Status 필드에는 Sanitize가 완료되었는지, 진행 중에 오류가 없었는지 등을 기록한다. 덮어쓰기삭제의 경우 현재까지 덮어쓴 횟수를 비트 3부터 7까지 기록한다.

개발된 Get Log Page 명령의 Sanitize Status 페이지 코드는 사전에 설정해 놓은 덮어쓰기삭제와 블록삭제 소요 시간을 이용해 결과를 반환하도록 구현했다. 암호기반삭제의 경우 Sanitize 명령 수행 즉시 완전삭제 처리가 완료된 것으로 처리했고, 덮어쓰기삭제와 블록삭제의 경우 Sanitize 명령 전송 이후 경과된 시간과 사전 설정된 덮어쓰기삭제와 블록삭제 소요 시간의 비율을 계산하여 값을 지정한다.

또한 모든 모니터링 대상 명령들은 전송된 명령과 해당 명령의 중요 파라미터를 로그파일에 기록하도록 수정했다.

4.2 구현 결과 검증 및 검토

개발된 도구가 정상 동작하는 것을 확인하기 위해 nvme-cli[23] 도구와 blkdiscard[24] 도구를 사용했다. nvme-cli 도구는 Linux에서 NVMe SSD를 관리하는 도구로 명령행에서 NVMe 규격의 명령을 전송할 수 있다. blkdiscard는 SSD 네임스페이스에 포함된 모든 블록을 할당 해제(discard)하는 명령(ATA 규격의 경우 TRIM, NVMe 규격의 경우 Dataset Management 명령의 Deallocate)을 보낸 후 매체의 모든 논리 주소 영역을 0x00으로 덮어쓴다. NVMe SSD의 경우 논리 주소 영역을 0x00으로 덮어쓰는 기능은 Write Zeros 명령을 전송하여 수행한다.

개발된 도구로 Linux OS가 설치된 디스크를 구동하고 NVMe 디스크(/dev/nvme0)를 연결하여 nvme-cli 도구로 Identify Controller 명령을 수행하면 Fig. 10과 같이 세 가지 완전삭제 방법이 모두 지원되는 것으로 확인된다.

JBBHCB_2026_v36n2_583_10_f0002.png 이미지

Fig. 10. nvme id-ctrl Command Result

Fig. 11은 암호기반삭제와 블록삭제 명령을 수행했을 때 정상적으로 수행되는 것을 보여주고 있다. 블록삭제 명령의 경우 사전 설정된 시간 경과 전에 Get Log Page 명령으로 Sanitize Status 페이지를 요청하면 현재 쓰기 진행 상황을 확인할 수 있다.

JBBHCB_2026_v36n2_583_11_f0001.png 이미지

Fig. 11. Tool Execution Log

Fig. 12는 완전삭제와 관련된 명령(#으로 시작하는 줄)을 실행했을 때 생성되는 로그파일의 내용을 나타낸 것이다. (1)은 Fig. 10과 관련된 것으로 Identify 명령을 전송할 때 파라미터로 cns 값을 1로 지정하여 컨트롤러에 대한 정보를 요청하는 Identify Controller 명령임을 나타내고 있다. (2)는 blkdiscard 명령을 실행한 로그로 Write Zeros 명령이 1번 네임스페이스(nsid 1)에 대해서 실행되었으며, 모든 논리 주소의 데이터를 0으로 덮어쓰는 것을 확인할 수 있다. (3)은 1번 네임스페이스를 포맷하는 명령과 로그다. (4)와 (5)는 Fig. 11의 명령을 수행한 로그로 Sanitize 명령으로 암호기반삭제와 블록삭제 명령을 각각 수행했음을 확인할 수 있다. (6)은 덮어쓰기삭제 명령을 내렸을 때 덮어쓰기 패턴과 덮어쓰기 횟수 등이 기록되는 것을 확인할 수 있다. (7)은 네임스페이스에 Write 명령을 실행한 로그이다. 삭제를 위해 Write 명령을 이용할 경우 0x00, 0xFF 및 임의값(random)으로 덮어쓸 수 있으므로 각 경우를 구분하기 위해서 덮어쓰는 값의 처음 16 바이트를 함께 표시하고 있다.

JBBHCB_2026_v36n2_583_11_f0002.png 이미지

Fig. 12. Execution Results – Crypto Erase, Block Erase

이상의 결과로부터 개발된 도구는 3.6절에서 살펴 본 NVMe SSD 완전삭제 도구가 전송해야 하는 명령들에 대해서 로그를 정확하게 남기고 있는 것을 확인할 수 있다.

본 논문에서 개발한 도구는 QEMU를 수정하여 개발되었으므로 QEMU와 마찬가지로 NVMe 에뮬레이션 기능[22]을 이용하여 임의 크기의 디스크를 생성하여 연결할 수 있다. 또한 운영체제가 설치된 디스크뿐만 아니라 USB나 CD-ROM을 부팅할 수도 있어 응용프로그램 형태의 완전삭제 도구와 부팅 매체 형태의 완전삭제 도구 등 소프트웨어 형태 도구를 모두 시험할 수 있다. SSD를 블록삭제, 덮어쓰기삭제하는 시간도 임의로 지정할 수 있으므로 실제 NVMe SSD 매체를 대상으로 완전삭제 도구의 정확성을 시험하는 것보다 효율적으로 시험할 수 있다. 그리고 생성되는 로그파일에는 삭제와 관련된 명령 전송 내용만 저장되는 장점도 있어 효율적으로 NVMe SSD 완전삭제도구의 정확성을 검증할 수 있다.

V. 결론

본 논문은 현재 많이 사용되고 있는 NVMe SSD의 데이터를 완전삭제하는 데 사용하는 완전삭제 도구의 정확성을 검증하는 방법을 연구하였다. NVMe SSD 매체의 특성, NVMe 규격, 완전삭제 표준 등을 살펴보고 이를 바탕으로 NVMe SSD 완전삭제 도구의 기능을 도출하는 한편 NVMe SSD 완전삭제 도구에서 사용되는 명령을 식별하였다. QEMU의 NVMe 소스 코드를 수정하여 식별된 명령이 전송될 때 명령과 중요 파라미터를 로그파일에 기록하여 완전삭제 도구 실행 후 로그파일을 분석함으로써 완전삭제 도구가 완전삭제 기능을 정확하게 수행하는지 검증할 수 있도록 했다. 또한, 개발된 도구가 식별된 명령 전송 내용을 정확하게 기록함을 검증하였다.

개발된 도구를 이용하면 저장매체의 크기와 완전 삭제 시간을 임의로 조정할 수 있을 뿐만 아니라 완전삭제와 관련된 명령에 대해서만 로그가 생성되므로 NVMe SSD 완전삭제 도구의 정확성을 효율적으로 검증할 수 있다.

그러나, 개발된 도구는 QEMU를 수정하여 기능을 추가한 것으로 QEMU가 NVMe 규격의 모든 기능을 구현하지는 않고 있어 NVMe SSD 완전삭제 표준의 요구사항을 모두 반영할 수는 없었다. 향후 QEMU의 NVMe 에뮬레이션 기능이 개선되면 이를 바탕으로 현재 반영하지 못한 완전삭제 표준 관련 명령 부분을 추가할 수 있을 것이다.

참고문헌

  1. "Hundreds of Dutch medical records bought for pocket change at flea market," The Register, Feb. 19, 2025.
  2. "Morgan Stanley fined $35M by SEC over improper data disposal," Banking Dive, Sep. 20, 2022.
  3. J. Hands and T. Coughlin, "New IEEE media sanitization specification enables circular economy for storage," IEEE Computer, vol: 56, issue: 1, Jan. 2023.
  4. Cybersecurity and Privacy Standards Committee of the IEEE Computer Society, "IEEE standards for sanitizing storage," IEEE Std 2883-2022, Jun. 2022.
  5. R. Kissel, A. Regenscheid, M. Scholl, and K. Stine, "Guidelines for media sanitization," NIST Special Publication 800-88 Revision 1, Dec. 2014.
  6. R. Chandramouli and E.A. Hibbard, "Guidelines for media sanitization," NIST Special Publication 800-88 Revision 2, Sep. 2025.
  7. F. Bellard, "QEMU, a fast and portable dynamic translator," Proceedings of 2005 USENIX Annual Technical Conference, FREENIX Track pp. 10-55, Apr. 2005.
  8. GitHub, Official qemu mirror, https://github.com/qemu/qemu, accessed Nov. 5, 2025.
  9. P. Gutmann, "Secure deletion of data from magnetic and solid-state memory," Proceedings of 6th USENIX Security Symposium, pp. 77-90, Jul. 1996.
  10. Cybersecurity and Privacy Standards Committee of the IEEE Computer Society, "IEEE recommended practice for use of storage sanitization methods," IEEE Std 2883.1-2025, Feb. 2025.
  11. M. Breeuwsma, M. de Jongh, C. Klaver, R. van der Knijff, and M. Roeloffs, "Forensic data recovery from flash memory," Small Scale Digital Device Forensics Journal, vol. 1, no. 1, June 2007.
  12. A. Fukami, S. Ghose, Y. Kuo, Y. Cai, and O. Mutlu, "Improving the reliablity of chip-off forensic analysis of NAND flash memory devices," Proceedings of the 4th DFRWS Europe, Mar. 2017.
  13. M. Wei, L. M. Grupp, F. E. Spada, and S. Swanson, "Reliably erasing data from flash-based solid state drives," Proceedings of the 9th USENIX Conference on File and Storage Technologies, Feb. 2011.
  14. J. Boukhobza, P. Olivier, W.S. Lim, L.C. Chen, Y.S. Hsien, S.T. Wu, C.C. Ho, P.C. Huang, and Y.H. Chang, "A survey on flash-memory storage systems: A host-side perspective," ACM Transaction of Storage, vol. 21, no. 3, June 2025. https://doi.org/10.1145/3723167
  15. Western Digital, "Flash 101 and flash management," White Paper, Sep. 2018.
  16. S. Kumar, P.K. Singh, and S. Gupta, "A survey of erase operation in NAND flash memory," Proceedings of 1st International Conference on Informatics, Apr. 2022.
  17. NVM Express Workgroup, "NVM Express base specification revision 1.4c," Mar. 2021.
  18. NVM Express, "Specifications - NVM Express," https://nvmexpress.org/specifications, accessed Nov. 5, 2025.
  19. Trusted Computing Group and NVM Express, "Trusted computing group and NVM Express joint white paper: TCG storage, Opal, and NVMe," Aug. 2015.
  20. Samsung Semiconductor Global, "Internal SSD Product Information," https://semiconductor.samsung.com/consumer-storage/support/faqs/internalssd-product-information, accessed Nov. 5, 2025.
  21. M.M. Hasan and B. Ray, "Data recovery from "scrubbed" NAND flash storage: Need for analog sanitization," Proceedings of 29th USENIX Security Symposium, pp. 1399-1408, Aug. 2020.
  22. QEMU Documentation, "NVMe emulation," https://www.qemu.org/docs/master/system/devices/nvme.html, accessed Nov. 5, 2025.
  23. NVM Express, "Open source NVMe SSD management utility - NVMe command line interface (nvme-cli)," https://nvmexpress.org/open-source-nvme-management-utility-nvme-command-line-interface-nvme-cli/, accessed Nov. 5, 2025.
  24. Linux manual page, "blkdiscard(8)", https://man7.org/linux/man-pages/man8/blkdiscard.8.html, accessed Nov. 5, 2025.