SSD a bezpieczeństwo


Dyski SSD sa super i kazdy, kto sie z nimi zetknal przyznaje to bez wahania. Wprawdzie posiadacze “gramofonów” z silnikiem obracajacym talerzami, nad którymi lata glowica dywaguja nad wyzszoscia SLC nad MLC i odwrotnie, jednak osobiscie uwazam, ze lepszy dowolny SSD w garsci, niz “gramofon” w komputerze i wspaniala wiedza teoretyczna o tym, który SSD ma jakie ograniczenia.

Jedna z cech SSD jest skonczona ilosc zapisów (a tak naprawde wymazan), która zniesie pojedyncza komórka pamieci. W zaleznosci od technologii jest to liczba od kilku tysiecy do wielu milionów. Na pierwszy rzut oka to bardzo malo! Wystarczy wyobrazic sobie jakis fragment danych wewnatrz pagefile. Dane sa odczytywane i zapisywane caly czas. Czyli po stosunkowo niedlugim czasie, w tym miejscu powinna pojawic sie wadliwa komórka (taki nowoczesny odpowiednik bad blocka).

Zeby tak sie nie stalo (czyli zeby dysk padl pare dni po koncu gwarancji a nie pare dni przed), producenci dysków stosuja tak zwany wear leveling. Mechanizm ten w praktyce polega na tym, ze pojemnosc dysku 128GB, tak naprawde wynosi na przyklad 140GB. Okolo 10% komórek pamieci jest nieuzywane i nie sa one wprost dostepne dla uzytkownika. Dzieki takiemu nadmiarowi, operacja typu odczytaj-zmien-zapisz (tak jak to sie moze dziac na przyklad w pagefile albo w dowolnym dokumencie) od srodka wyglada w taki sposób, ze odczyt faktycznie jest, zmiana faktycznie jest, ale zapis dokonywany jest w zupelnie innym miejscu. Co wazne, system dostaje informacje, ze to jest nadal ten sam sektor dysku, tylko sam dysk SSD zapisuje go wewnatrz na innym kawalku krzemu. Dzieki temu, w zupelnie niewidzialny i nieodczuwalny dla uzytkownika sposób, dysk SSD rozrzuca po swojej powierzchni zapisy, przez co ograniczenie ich ilosci jest w praktyce duzo mniej dotkliwe. Co wiecej, dysk SSD potrafi równiez podmieniac dane miedzy blokami, dzieki czemu stosunkowo rzadko zmieniane informacje (na przyklad tony DLLek z system32 czy zawartosc Program Files zamieni sie po jakims czasie miejscem z katalogiem TEMP. W efekcie caly dysk dluzej sluzy i wszyscy sa szczesliwi.

Ciekawiej zaczyna sie robic w sytuacji, gdy ktos ma na dysku troche poufnych danych i zechce dysk zaszyfrowac. Dla ustalenia uwagi, powiedzmy ze przy pomocy mechanizmu BitLocker. Zgodnie z opisem powyzej dzieje sie to tak, ze dane sa odczytywane, szyfrowane w pamieci i zapisywane w zupelnie innym bloku pamieci. I tak sektor po sektorze, po calej logicznej powierzchni dysku.

W przypadku dysków “gramofonowych” sprawa byla prosta. Zapis zaszyfrowanych danych nastepuje dokladnie w tym miejscu, skad zostaly one odczytane. Czyli oryginalne (tajne) dane zostaja nadpisane i odczytanie ich nie jest w praktyce mozliwe. A w przypadku SSD oryginalne dane pozostaja w jawnej postaci. Wprawdzie przemapowane, w prosty sposób niedostepne, ale sa. Moze przy kolejnych operacjach cos je zamaze, a moze nie…?

Nie wydaje mi sie, zeby w praktyce bylo to bardzo powazne zagrozenie ale:

  • Warto sie przez chwile nad tym zastanowic, bo to slabo naglasniany aspekt tak BitLockera jak i SSD
  • Myslac o szyfrowaniu danych, lepiej najpierw szyfrowac dysk a pózniej wgrywac dane niz odwrotnie.

Ot tak na wszelki wypadek…

Autor: Grzegorz Tworek [MVP]

Comments (3)

  1. Kaarol says:

    (: Takie rodzynki zdarzają się dość często,  spora część programów szyfrujących działa podobnie.

    Na szczęście MS napisał o tym  w technecie :

    Encrypt drives prior to writing data to them when possible.

    Some wear-leveling algorithms used by flash-based memory drives could expose data stored in plaintext. Encrypting the drive prior to writing data to it ensures data is never stored in plaintext.

    Szkoda, że zwykli użytkownicy (bardzo często) nie mają o tym pojęcia:)

  2. adam says:

    Dzieki za ten artykul, bardzo ciekawe informacje o SSD, o ktorych nie mialem pojecia.

  3. sosenki says:

    bardzo fajny art.

    wczesniej nie interesowałem się dyskami SSD ale teraz chyba trochę poczytam o tej technologi wear-leveling

Skip to main content