1. Mur weryfikacji ITAD: Gdy standardowy Secure Erase zawodzi

W procesach odzyskiwania sprzętu IT (ITAD) oraz profesjonalnego recyclingu komputerów poleasingowych technicy regularnie spotykają się ze zjawiskiem pozornie „uszkodzonych” dysków SSD NVMe. Pofirmowy laptop (np. Lenovo ThinkPad T14, Dell Latitude 7420 czy HP EliteBook 840) trafia na stanowisko audytowe. Technik uruchamia diagnostyczny Linux Live USB, lokalizuje dysk jako /dev/nvme0n1 i wydaje standardowe polecenie bezpiecznego kasowania:

Kopiuj
# Próba standardowego kasowania kryptograficznego NVMe w Linuksie
nvme format /dev/nvme0n1 --namespace-id=1 --ses=2

Zamiast potwierdzenia sukcesu terminal natychmiast zgłasza błąd odmowy dostępu:

Kopiuj
NVMe status: NVME_SC_ACCESS_DENIED: Access to the namespace and/or LBA range is denied (0x2204)
Command failed: Input/output error

Alternatywne metody kończą się równie bezowocnie. Narzędzie blkdiscard --secure /dev/nvme0n1 zwraca Operation not supported; linuksowe dd if=/dev/zero of=/dev/nvme0n1 pozornie przesyła gigabajty danych, lecz po restarcie partycje korporacyjne i monit o klucz odzyskiwania BitLocker powracają nietknięte; z kolei windowsowy diskpart clean all zawiesza się lub wyświetla komunikat DiskPart napotkał błąd: Odmowa dostępu.

Dysk nie ma uszkodzonych komórek NAND ani awarii zasilania. Nośnik jest dyskiem samoszyfrującym (SED — Self-Encrypting Drive), którego kontroler został trwale zablokowany przez korporacyjny podsystem TCG Opal 2.0. Bez znajomości protokołu PSID Revert setki sprawnych dysków SSD trafiają co tydzień do fizycznych niszczarek złomu krzemowego.


2. Architektura krzemowa: Dyski SED i standard TCG Opal v2.0

Nowoczesne dyski SSD klasy biznesowej (np. Samsung PM981/PM9A1, Micron 2200/2450, Kioxia XG6, SK Hynix BC711) są projektowane jako sprzętowe dyski SED. Zgodnie ze standardem Trusted Computing Group (TCG) Storage Workgroup, bezpieczeństwo nośnika opiera się na architekturze podwójnego klucza wbudowanej w kontroler pamięci flash:

Komponent Nazwa Techniczna Lokalizacja Fizyczna / Logiczna Rola w Szyfrowaniu i Blokadzie
Klucz Nośnika MEK / DEK (Media Encryption Key) Bezpieczna enklawa kontrolera flash Symetryczny klucz AES-256-XTS stale szyfrujący każdy bit zapisywany w komórkach flash. Nigdy nie opuszcza krzemu kontrolera.
Klucz Uwierzytelniania AK / KEK (Key Encryption Key) Tabela NVRAM podsystemu Opal Hasło użytkownika/administratora opakowujące klucz MEK. Zarządzane przez MDM (BitLocker eDrive, WinMagic, McAfee).
Zakresy Blokowania LockingRange0..N Rejestry firmware Opal Admin SP Rejestry definiujące zakresy LBA z flagami ReadLockEnabled=Y i WriteLockEnabled=Y. Blokują magistralę PCIe.
Shadow MBR Shadow MBR / PBA Wydzielony obszar pamięci flash Środowisko Pre-Boot Authentication wyświetlane przed załadowaniem systemu operacyjnego z sektora LBA 0.
Klucz Nadrzędny PSID (Physical Security ID) Wytłoczony na fizycznej etykiecie dysku 32-znakowy ciąg kryptograficzny wymuszający sprzętowy reset fabryczny kontrolera i zniszczenie klucza MEK.

Gdy korporacyjny laptop wdraża szyfrowanie BitLocker z obsługą standardu IEEE 1667 / TCG Opal (tzw. BitLocker Hardware Encryption lub eDrive), procesor komputera nie bierze udziału w szyfrowaniu AES. Zadanie to przejmuje sprzętowy kontroler SSD. Kontroler ustawia flagę LockingEnabled = True na całym obszarze LockingRange0 i blokuje dostawcę administracyjnego (Admin SP).

Kluczowa zasada inżynieryjna: Na zablokowanym dysku TCG Opal polecenia zapisu (takie jak dd, fdisk czy format) w ogóle nie docierają do fizycznych komórek NAND flash. Kontroler dysku weryfikuje nadchodzące pakiety PCIe NVMe, stwierdza brak uwierzytelnionej sesji TCG i natychmiast odrzuca żądanie na poziomie protokołu magistrali ze statusem 0x2 (ACCESS_DENIED).

3. Taksonomia metod kasowania: Dlaczego nvme format i blkdiscard zawodzą

Poniższa tabela porównuje zachowanie komend systemowych na dysku standardowym oraz dysku SED objętym blokadą TCG Opal:

Polecenie / Narzędzie Warstwa Docelowa Dysk Standardowy (Non-SED) Zablokowany Dysk TCG Opal SED
blkdiscard -s /dev/nvme0n1 Kolejka blokowa PCIe Wysyła komendę deallocate (TRIM); oznacza bloki jako puste. BŁĄD: Odrzucone przez firmware (WriteLockEnabled).
dd if=/dev/zero of=/dev/nvme0n1 Logiczna przestrzeń LBA Nadpisuje sektory zerami (zużywając cykle P/E pamięci flash). BŁĄD: Zablokowane lub buforowane w RAM; brak zapisu w flash.
nvme format --ses=1 /dev/nvme0n1 Kontroler NVMe (User Data Erase) Kasowanie bloków pamięci napięciem wewnętrznym kontrolera. BŁĄD: Zwraca błąd NVME_SC_ACCESS_DENIED.
nvme format --ses=2 /dev/nvme0n1 Kontroler NVMe (Crypto Erase) Zmiana klucza szyfrowania AES kontrolera. BŁĄD: Odrzucone bez sesji TCG Admin SP.
sedutil-cli --yesIreallywant... Podsystem TCG Opal Security Provider Nie dotyczy (brak podsystemu TCG na zwykłych dyskach). SUKCES (100%): Sprzętowy reset kluczem PSID, wyzerowanie MEK, odblokowanie dysku.

4. Kod PSID: Sprzętowy mechanizm nadrzędny

W przypadku wycofania laptopa z leasingu firmowego lub rotacji pracowników, hasło administracyjne podsystemu Opal (zarządzane np. przez Active Directory czy Microsoft Intune) jest z reguły bezpowrotnie tracone. Gdyby kontroler nie posiadał procedury nadrzędnej, każdy taki nośnik byłby bezużyteczny.

Standard TCG Opal rozwiązał ten problem poprzez wprowadzenie mechanizmu PSID (Physical Security ID):

Gwarancja bezpieczeństwa PSID: Kod PSID to 32-znakowy ciąg liter i cyfr nadrukowany wyłącznie na fizycznej naklejce fabrycznej dysku. Specyfikacja TCG bezwzględnie zabrania ujawniania kodu PSID w rejestrach magistrali PCIe czy poleceniach NVMe Identify Controller. Jedynym sposobem poznania kodu jest fizyczne otwarcie obudowy i odczytanie etykiety wzrokiem lub skanerem. Gwarantuje to, że żaden intruz sieciowy ani złośliwe oprogramowanie nie wykona zdalnego resetu dysku.

Przekazanie prawidłowego kodu PSID do kontrolera uruchamia sprzętową procedurę przywrócenia stanu fabrycznego:

  1. Zniszczenie klucza MEK: Wewnętrzny klucz szyfrowania danych (Media Encryption Key) zostaje bezpowrotnie nadpisany szumem losowym ze sprzętowego generatora TRNG.
  2. Wyczyszczenie tabel blokad: Wszystkie zakresy LockingRange mają wyłączane flagi ReadLock i WriteLock.
  3. Deaktywacja Shadow MBR: Ukryta partycja uwierzytelniania rozruchowego zostaje wyłączona.
  4. Powrót do MSID: Dostawca administracyjny (Admin SP) powraca do fabrycznego stanu Manufacturing Security ID, umożliwiając natychmiastowe utworzenie nowej tablicy partycji GPT.

5. Laboratoryjna procedura odblokowania z użyciem sedutil

Poniższa procedura przedstawia laboratoryjne kroki odzyskania zablokowanego dysku NVMe lub SATA SSD przy użyciu otwartego pakietu sedutil w środowisku Linux Live.

Krok 1: Instalacja pakietu sedutil-cli

Uruchom stanowisko audytowe z dystrybucji Linux Live (Ubuntu, Arch, Fedora lub Parted Magic):

Kopiuj
# Ubuntu / Debian Live
sudo apt update && sudo apt install -y sedutil-cli

# Arch Linux
sudo pacman -S sedutil

# Fedora / RHEL
sudo dnf install -y sedutil

Krok 2: Identyfikacja zablokowanego dysku SED

Sprawdź, które dyski w systemie są zgodne ze standardem Opal za pomocą polecenia sedutil-cli --scan:

Kopiuj
sudo sedutil-cli --scan

Przykładowy wynik diagnostyczny w konsoli:

Kopiuj
Scanning for Opal compliant disks
/dev/nvme0  1  Samsung SSD 980 PRO 1TB                2B2QGXA7  Opal 2.0
/dev/sda    0  Crucial CT500MX500SSD1                 M3CR043   No

Zweryfikuj węzeł kontrolera (pamiętaj: wskazujemy węzeł kontrolera /dev/nvme0, a nie przestrzeń nazw partycji /dev/nvme0n1):

Kopiuj
sudo sedutil-cli --isValidSED /dev/nvme0
sudo sedutil-cli --query /dev/nvme0

W sekcji Locking Function (0x0002) obecność wartości LockingEnabled = Y oraz Locked = Y potwierdza stan sprzętowej blokady TCG Opal.

Krok 3: Odczyt kodu PSID z etykiety dysku

Wymontuj dysk z gniazda M.2 i odszukaj na naklejce pole oznaczone jako PSID.

  • Kod składa się z 32 znaków alfanumerycznych (wielkie litery i cyfry), najczęściej podzielonych myślnikami na 4 lub 8 grup (np. 32A8-F9C1-7B0D-4E2F-A5B0-6D9E-8C7F-1A3B).
  • Wskazówka warsztatowa: Użyj aparatu w smartfonie z trybem makro lub skanera kodów 2D DataMatrix. W specyfikacji PSID litera O jest niemal zawsze zastępowana cyfrą 0, aby uniknąć pomyłek optycznych przy przepisywaniu.

Krok 4: Wykonanie procedury PSID Revert

Umieść dysk w natywnym slocie M.2 płyty głównej (nie używaj tanich adapterów USB, które obcinają komendy TCG Security Pass-Through). Wprowadź w terminalu polecenie revert, podając ciąg PSID bez spacji:

Kopiuj
# Zastąp 32A8F9C17B0D4E2FA5B06D9E8C7F1A3B kodem ze swojej etykiety
sudo sedutil-cli --yesIreallywanttoResetMyDriveAndEraseMyDataOnIt 32A8F9C17B0D4E2FA5B06D9E8C7F1A3B /dev/nvme0

Po 1–3 sekundach kontroler odpowie komunikatem:

Kopiuj
method status = SUCCESS
Method returned 00
PSID revert complete
Obowiązkowy cykl zasilania (Cold Power Cycle): Po pomyślnym wykonaniu komendy firmware kontrolera wciąż przechowuje stare tablice w pamięci SRAM. Należy całkowicie wyłączyć zasilanie komputera (stan S5) na 10 sekund. Zwykłe ponowne uruchomienie systemu (reboot) nie zresetuje kontrolera dysku.

Krok 5: Weryfikacja i utworzenie nowej tablicy partycji

Po ponownym uruchomieniu upewnij się, że blokada została zdjęta (Locked = N):

Kopiuj
sudo sedutil-cli --query /dev/nvme0

Teraz natywne formatowanie NVMe oraz tworzenie partycji GPT przebiegnie bez jakichkolwiek przeszkód:

Kopiuj
# Natywny format NVMe wykonuje się bez błędów
sudo nvme format /dev/nvme0n1 --namespace-id=1 --ses=0

# Utworzenie czystej tablicy partycji GPT
sudo parted -s /dev/nvme0n1 mklabel gpt

# Odświeżenie tablicy w jądrze Linuksa
sudo partprobe /dev/nvme0n1

6. Zgodność z normą NIST SP 800-88 Rev. 1 i RODO w ITAD

Dla certyfikowanych firm ITAD (normy R2v3, ISO 27001) kluczowym pytaniem jest, czy procedura PSID Revert stanowi prawnie wiążące zniszczenie danych w świetle przepisów RODO/GDPR.

Zgodnie z wytycznymi NIST Special Publication 800-88 Revision 1 (Guidelines for Media Sanitization) metody niszczenia danych dzielą się na trzy poziomy:

  1. Clear: Logiczne czyszczenie nośnika standardowymi komendami zapisu (np. jednokrotne zerowanie). Chroni przed prostym odzyskiem programowym.
  2. Purge: Fizyczne lub kryptograficzne zniszczenie danych, uniemożliwiające odtworzenie informacji laboratoryjnymi metodami inżynierii wstecznej (w tym mikroskopią elektronową).
  3. Destroy: Fizyczna destrukcja (rozdrabnianie mechaniczne w niszczarce, spalenie w piecu hutniczym).
Kwalifikacja NIST SP 800-88 Rev. 1: Zgodnie z Sekcją 5.1.2 oraz Załącznikiem A (Flash-Based Storage), sprzętowe kasowanie kryptograficzne Cryptographic Erase (CE) wykonane za pomocą procedury PSID Revert spełnia w 100% rygorystyczny poziom Purge, pod warunkiem że nośnik przez cały okres eksploatacji pracował z kluczem AES-128 lub AES-256. Zniszczenie klucza MEK w krzemie sprawia, że odczyt komórek flash daje wyłącznie losowy szum entropijny.

7. Macierz sprzętowa i pułapki mostków USB

Prawidłowe podłączenie dysku na stanowisku audytowym ma krytyczne znaczenie dla powodzenia operacji:

Typ Połączenia z Płytą Obsługa TCG Pass-Through Werdykt Diagnostyczny i Uwagi Techniczne
Natywne złącze M.2 na płycie (PCIe NVMe) 100% Natywna Zalecane: Pełna obsługa komend NVMe Admin Security Send i Security Receive.
Pasywny adapter PCIe-to-M.2 (karta Add-in) 100% Natywna Zalecane: Pasywne linie PCIe bezpośrednio z procesora/chipsetu bez translacji protokołów.
Natywny kabel SATA 7-pin & 15-pin 100% Natywna Zalecane: Kontroler SATA natywnie przekazuje komendy Trusted Send / Trusted Receive.
Obudowa zewnętrzna USB-NVMe (JMicron, Realtek) Niestabilna / Brak Unikać: Większość mostków USB obcina pakiety TCG, raportując błąd Operation Not Supported.
Sprzętowy kontroler RAID (MegaRAID, Smart Array) Zablokowana Unikać: Kontrolery RAID wirtualizują dyski i filtrują surowe komendy bezpieczeństwa ATA/NVMe.

8. Podsumowanie: 5 Złotych Zasad Technika ITAD

  • Zasada 1: Odmowa dostępu nie oznacza uszkodzonego dysku: Zawsze sprawdź obecność blokady TCG Opal zanim nośnik zostanie zakwalifikowany jako złom.
  • Zasada 2: Nie wykonuj procedury PSID przez obudowy USB: Zawsze podłączaj dysk bezpośrednio do natywnego portu M.2 lub pasywnego risera PCIe.
  • Zasada 3: Weryfikuj kod PSID optycznie: Pojedyncza literówka w 32-znakowym ciągu spowoduje natychmiastowe odrzucenie komendy przez kontroler.
  • Zasada 4: Zawsze wykonaj pełny cykl zasilania (Cold Reboot): Pamięć podręczna kontrolera flash wymaga odcięcia zasilania S5, aby zainicjalizować czysty stan firmware.
  • Zasada 5: Korzystaj z narzędzi ekosystemu SpecInfo: Weryfikuj kody błędów magistrali w naszym Dekoderze Błędów, a kondycję ogniw zasilania w Laboratorium Baterii.
Projekt SpecInfo.org jest rozwijany jako niezależny standard audytu i diagnostyki sprzętu komputerowego.
☕ Wesprzyj Projekt ↗