Tuesday, September 01, 2009 6:06 PM
plitpro@microsoft.com
SSD a bezpieczeństwo
Dyski SSD są super i każdy, kto się z nimi zetknął przyznaje to bez wahania. Wprawdzie posiadacze "gramofonów" z silnikiem obracającym talerzami, nad którymi lata głowica dywagują nad wyższością SLC nad MLC i odwrotnie, jednak osobiście uważam, że lepszy dowolny SSD w garści, niż "gramofon" w komputerze i wspaniała wiedza teoretyczna o tym, który SSD ma jakie ograniczenia.
Jedną z cech SSD jest skończona ilość zapisów (a tak naprawdę wymazań), którą zniesie pojedyncza komórka pamięci. W zależności od technologii jest to liczba od kilku tysięcy do wielu milionów. Na pierwszy rzut oka to bardzo mało! Wystarczy wyobrazić sobie jakiś fragment danych wewnątrz pagefile. Dane są odczytywane i zapisywane cały czas. Czyli po stosunkowo niedługim czasie, w tym miejscu powinna pojawić się wadliwa komórka (taki nowoczesny odpowiednik bad blocka).
Żeby tak się nie stało (czyli żeby dysk padł parę dni po końcu gwarancji a nie parę dni przed), producenci dysków stosują tak zwany wear leveling. Mechanizm ten w praktyce polega na tym, że pojemność dysku 128GB, tak naprawdę wynosi na przykład 140GB. Około 10% komórek pamięci jest nieużywane i nie są one wprost dostępne dla użytkownika. Dzięki takiemu nadmiarowi, operacja typu odczytaj-zmień-zapisz (tak jak to się może dziać na przykład w pagefile albo w dowolnym dokumencie) od środka wygląda w taki sposób, że odczyt faktycznie jest, zmiana faktycznie jest, ale zapis dokonywany jest w zupełnie innym miejscu. Co ważne, system dostaje informację, że to jest nadal ten sam sektor dysku, tylko sam dysk SSD zapisuje go wewnątrz na innym kawałku krzemu. Dzięki temu, w zupełnie niewidzialny i nieodczuwalny dla użytkownika sposób, dysk SSD rozrzuca po swojej powierzchni zapisy, przez co ograniczenie ich ilości jest w praktyce dużo mniej dotkliwe. Co więcej, dysk SSD potrafi również podmieniać dane między blokami, dzięki czemu stosunkowo rzadko zmieniane informacje (na przykład tony DLLek z system32 czy zawartość Program Files zamieni się po jakimś czasie miejscem z katalogiem TEMP. W efekcie cały dysk dłużej służy i wszyscy są szczęśliwi.
Ciekawiej zaczyna się robić w sytuacji, gdy ktoś ma na dysku trochę poufnych danych i zechce dysk zaszyfrować. Dla ustalenia uwagi, powiedzmy że przy pomocy mechanizmu BitLocker. Zgodnie z opisem powyżej dzieje się to tak, że dane są odczytywane, szyfrowane w pamięci i zapisywane w zupełnie innym bloku pamięci. I tak sektor po sektorze, po całej logicznej powierzchni dysku.
W przypadku dysków "gramofonowych" sprawa była prosta. Zapis zaszyfrowanych danych następuje dokładnie w tym miejscu, skąd zostały one odczytane. Czyli oryginalne (tajne) dane zostają nadpisane i odczytanie ich nie jest w praktyce możliwe. A w przypadku SSD oryginalne dane pozostają w jawnej postaci. Wprawdzie przemapowane, w prosty sposób niedostępne, ale są. Może przy kolejnych operacjach coś je zamaże, a może nie...?
Nie wydaje mi się, żeby w praktyce było to bardzo poważne zagrożenie ale:
- Warto się przez chwilę nad tym zastanowić, bo to słabo nagłaśniany aspekt tak BitLockera jak i SSD
- Myśląc o szyfrowaniu danych, lepiej najpierw szyfrować dysk a później wgrywać dane niż odwrotnie.
Ot tak na wszelki wypadek...
Autor: Grzegorz Tworek [MVP]