---
# System prepended metadata

title: 美國國防部 DOD 5220.22-M 標準 銷毀儲存媒體資料
tags: [Server]

---

---
title: '美國國防部 DOD 5220.22-M 標準銷毀儲存媒體資料'
disqus: hackmd
---

依據美國國防部 DOD 5220.22-M 標準 銷毀儲存媒體資料
===


## Table of Contents

[TOC]


>[!Note]
> 利用 SystemRescue 製作 USB 開機碟進行抹除\
>Official Doucument:\
>https://www.system-rescue.org/ \
>![image](https://hackmd.io/_uploads/HkeOgVjHWl.png)


## 1. 製作 wipe 開機碟
- 查看需要製作的 USB 硬碟編號：
```
diskutil list
```

- 卸載 USB
```
diskutil unmountDisk /dev/<disk name>
```
- 格式化 USB
```
diskutil eraseDisk FAT32 MYDISK MBRFormat /dev/<disk name>
```
- 下載 SystemRescue Image
Image: https://www.system-rescue.org/Download/ \
![image](https://hackmd.io/_uploads/BycqzNsBWe.png)

## 2. 將 image 燒錄至 USB  
>[!Tip]
>將 SystemRescue Image 寫入 USB

各系統燒錄 image 工具：
### 2.1 Linux
linux 可透過 `dd` 寫入
```
sudo dd if="<systemrescue.iso PATH>" of=/dev/<disk name> bs=4m conv=sync,noerror status=progress
```
> status=progress 顯示寫入進度

```
sync
diskutil eject /dev/<disk name>
```
確保資料完全寫入後，再拔除 USB

### 2.2 MacOS
MacOS 可透過 [balenaEtcher](https://github.com/balena-io/etcher) 燒錄

![image](https://hackmd.io/_uploads/rJHn44oB-e.png)


### 2.3 Windows
Windows 可利用 [Rufus](https://rufus.ie/) 燒錄

![image](https://hackmd.io/_uploads/HyZm04iHbe.png)
> - Partition scheme 選擇 `MBR` 同時相容 BIOS 和 UEFI
> - Target: `BIOS or UEFI`
> - Filesystem 選擇 `FAT32` (UEFI 啟動過程僅適用於 FAT 檔案系統)

## 3. 啟用 SystemRescue
開機進入 BIOS 選擇使用 HardDisk (USB) 開機，進入 SystemRescue 開機選單
### 3.1 選擇 Boot SystemRescue using default options
選擇 Boot SystemRescue using default options 進入預設開機模式：
![image](https://hackmd.io/_uploads/BJJflrjrWg.png)

> 1) Boot SystemRescue using default options\
> 正常開機進 SystemRescue（預設參數）
> 2) Boot SystemRescue and copy system to RAM (copytoram)\
> 整個 live 系統載入到記憶體再啟動 (開機後可以拔掉 USB)
> 3) Boot SystemRescue and verify integrity of the medium (checksum)\
開機前/開機時做 media 驗證（校驗 ISO/檔案）
> 4) Boot SystemRescue using basic display drivers (nomodeset)\
> 用基本顯示模式（禁用顯示卡 modesetting）
> 5) Boot a Linux operating system installed on the disk (findroot)\
不進 SystemRescue，而是找硬碟上已安裝的 Linux 並嘗試開機
> 6) Stop during the boot process before mounting the root filesystem\
除錯用（開機掛載 root 失敗、手動查 initramfs）
> 7) Boot existing OS\
直接跳過開啟原本硬碟上的作業系統
>8) Run Memtest86+ (RAM test)\
跑記憶體測試
>9) Reboot 
>10) Power Off

### 3.2 SystemRescue CLI
進入到 SystemRescue CLI\
![image](https://hackmd.io/_uploads/SJjuMSoB-l.png)

透過 `lsblk` 查詢要清除的內建 SSD/NVMe
```
lsblk -o NAME,SIZE,MODEL,TYPE
```
(範例)\
![image](https://hackmd.io/_uploads/rJ6ZXSjHbg.png)

或 `nvme list` 查看
```
nvme list
```
(範例)\
![image](https://hackmd.io/_uploads/HymaSHiHWg.png)


>[!Important]
>符合 DoD 5220.22-M 或 NIST SP 800-88，兩條 Wipe SSD 路徑：
> - [NIST 800-88](https://csrc.nist.gov/pubs/sp/800/88/r2/final)：使用 Purge（Sanitize/Crypto-Erase/Block-Erase），或 Clear（覆寫）
> - [DoD 5220.22-M](https://www.dau.edu/sites/default/files/Migrated/CopDocuments/DoD%205220.22%20M%20NISPOM%2020060228.pdf)：用 nwipe 的 DoD 3-pass / 7-pass 選項多次複寫

### 3.3 (Option 1) DoD 5220.22-M
以 DoD 5220.22-M 為例，在 Terminal 使用 nwipe
```
sudo nwipe
```
進入 nwipe 介面，可選擇要清除的硬碟
![image](https://hackmd.io/_uploads/Sy8uPBsSbl.png)

- Print `m` : method\
可選擇 Wipe Method (抹除方法/演算法)\
![wipe method](https://hackmd.io/_uploads/H1RG_BjrWe.jpg)

- Print `p`: PRNG / Pattern\
設定隨機資料的產生器（PRNG）或寫入 pattern的細節\
顯示 Pseudo Random Number Generator
![image](https://hackmd.io/_uploads/Bkv0rDsBZl.png)
> 🥚 因為 DoD method 每一輪都是固定 pattern（0x00/0xFF/隨機），若包含 random pass，才會用到設定的 PRNG

- Print `v`: Verify\
設定驗證策略，常見：No Pass / Last Pass / All Passes

- Print `c`: Config / Options\
全域選項包含 System Date & Time 設定、可以將 Wipe 過程匯出成 PDF Report

上述內容設定完後點擊 `SHIFT + S` 開始抹除 （如圖）\
![image](https://hackmd.io/_uploads/Bk1WiHjrbl.png)

### 3.4 (Option 2) NIST SP 800-88
若要符合 NIST SP 800-88 可利用 NVMe Sanitize 執行 Purge
>[!Tip]
> NVMe management：\
> https://github.com/linux-nvme/nvme-cli 

```
sudo nvme sanitize /dev/<disk name> -a 4
sudo nvme sanitize /dev/<disk name> -a 2
```
> - `-a 4`: Crypto Erase（加密抹除）
> - `-a 2`: Block Erase (若 SSD 不支援 crypto erase)

查看抹除進度：
```
sudo nvme sanitize-log /dev/nvme0
```
> 讀取 NVMe 的 Sanitize Log Page，查看執行進度

詳細 nvme 操作可參考：[manpages](https://manpages.debian.org/testing/nvme-cli/)


## 4. 抹除完成 ✅
