Ten artykuł powstał w odpowiedzi na propozycję kolegi @TechEkspert i jest rozwinięciem mojej prezentacji przedstawionej na konferencji The H@ck Summit w dniu 20 października 2023 r. Samą prezentację możesz pobrać stąd:
Wyrzucamy algorytm Gutmanna do kosza
Poprawne usuwanie danych jest ważnym, aczkolwiek często zaniedbywanym i słabo rozumianym aspektem bezpieczeństwa informacji. Konieczność bezpiecznego, nieodwracalnego usuwania danych w taki sposób, aby nie mogły one zostać odzyskane przez inne osoby może wynikać z wielu przyczyn. Często jest ona regulowana przez przepisy prawne, takie, jak RODO, czy przepisy o ochronie tajemnicy państwowej lub zobowiązujące do ochrony pewnych kategorii informacji także podmioty prywatne. Może też wynikać z umów i porozumień regulujących warunki współpracy i określających zakres tajemnic handlowych. A czasem bez żadnego obowiązku chcemy chronić nasze interesy oraz prywatność i nie życzymy sobie, by ktoś postronny wiedział o nas wszystko. Usuwanie danych ma też swoją ciemną stronę w postaci ukrywania i niszczenia cyfrowych dowodów przestępstw, co również można robić mądrze i skutecznie lub głupio i nieudolnie.
W artykule tym odnoszę się do publikacji Petera Gutmanna „Secure Deletion of Data from Magnetic and Solid-State Memory” zaprezentowanej na konferencji “USENIX” w lipcu 1996 r. Publikację tę uzupełnioną o późniejsze epilogi możesz znaleźć tutaj:
Secure Deletion of Data from Magnetic and Solid-State Memory
Jest to najczęściej cytowana publikacja w kontekście nadpisywania danych i podstawa jednego z najpopularniejszych algorytmów niszczenia informacji. W niektórych środowiskach praca Petera Gutmanna urosła do rangi dogmatu religijnego, a on sam jest postrzegany, jako niekwestionowalny autorytet. Tym niemniej publikacja ta zawiera szereg tez i założeń budzących wątpliwości, czy jej Autor na pewno dobrze rozumie działanie dysków twardych oraz fizykę przechowywania informacji. I właśnie na tych fragmentach skupimy się dalej.
Nośniki danych możemy klasyfikować na wiele sposobów. W szczególności możemy je podzielić na analogowe i cyfrowe. Cyfrowym nośnikiem danych jest taki nośnik, który przechowuje informację w sposób możliwy do zrozumienia przez maszyny, jako ciąg stanów logicznych interpretowanych jako zera i jedynki. Pozostałe nośniki danych nazywamy nośnikami analogowymi. Jednak i w przypadku nośników cyfrowych podstawą określania stanów logicznych są pewne analogowe stany fizyczne digitalizowane w procesach kodowania i dekodowania. Sam proces interpretacji stanów fizycznych jako określone stany logiczne wynika z przyjętej konwencji.
Najczęściej przyjmowanym kryterium klasyfikacji nośników danych są właśnie zjawiska fizyczne leżące u podstawy interpretacji ich jako stanów logicznych. Ze względu na technologię przechowywania danych możemy wyróżnić nośniki:
magnetyczne:
– dyski twarde,
– dyskietki,
– taśmy magnetyczne,
optyczne:
– CD,
– DVD,
– Blu-Ray,
– HD-DVD,
półprzewodnikowe:
– SSD,
– pendrivy,
– karty pamięci,
– pamięci wbudowane (eMMC, MCP...),
rezystywne:
– PCRAM,
– MRAM,
– ReRAM.
– NanoRAM,
papierowe:
– karty perforowane.
– taśmy perforowane.
Z punktu widzenia niszczenia informacji istotna jest klasyfikacja nośników danych na nieulotne (energoniezależne, zdolne do długotrwałego, wieloletniego przechowywania danych także bez podłączenia do źródła zasilania) i ulotne (wymagające dla podtrzymania stanów logicznych ciągłego podawania zasilania). Do tych ostatnich należą pamięci typu DRAM i SRAM. W przypadku nośników ulotnych dla nieodwracalnego usunięcia danych wystarczy na chwilę odłączyć zasilanie. Wówczas tracą one stany logiczne i dlatego dalej nie będziemy się nimi zajmować.
Nośniki danych można podzielić także na nośniki jednokrotnego i wielokrotnego zapisu. Nośniki jednokrotnego zapisu można zapisać tylko raz. Później nie można zmieniać ich zawartości. Najbardziej typowym przykładem nośników jednokrotnego zapisu są płyty CD-ROM i DVD-ROM. W przypadku tej kategorii nośników nie jest możliwe zniszczenie ich zawartości przez zastąpienie jej inną zawartością i dla usunięcia informacji konieczne jest fizyczne zniszczenie nośnika. Natomiast w przypadku nośników wielokrotnego zapisu ich zawartość może być zmieniana jeśli nawet nie dowolną, to bardzo dużą liczbę razy, co pozwala na wykorzystanie nadpisywania danych jako metody niszczenia informacji.
Niszczenie danych jest regulowanie różnymi standardami opracowywanymi przez różne instytucje rządowe, wojskowe i naukowe. Standardy te opisują różne metody i w różny sposób klasyfikują informacje, które powinny być zniszczone, często nakazując stosowanie różnych metod niszczenia danych w zależności od zawartości nośników. Jeśli jednak uświadomimy sobie, że interpretacja danych odbywa się na poziomie struktur logicznych systemów plików i oprogramowania, z łatwością zrozumiemy, że treść danych nie ma żadnego wpływu na proces ich niszczenia. Z punktu widzenia nośnika danych i fizyki zapisu nie ma żadnej istotnej różnicy pomiędzy różnymi strumieniami zer i jedynek, niezależnie od tego, jak je interpretujemy na poziomie logicznym i jakie subiektywne znaczenie im przypisujemy.
Standardy opisujące niszczenie danych zawierają wiele rozbieżności w różny sposób oceniając skuteczność różnych metod niszczenia danych. W niektórych przypadkach zalecane są procedury obejmujące kilkuetapowe niszczenie danych z użyciem różnych metod. Takie podejście jest też popularne w wielu procedurach wewnętrznych opartych na różnych standardach, co niekiedy podyktowane jest koniecznością zapewnienia zgodności z wieloma regulacjami. Szczegółowa lektura standardów pozwala zauważyć wiele momentów, w których można mieć wątpliwości, co do poziomu zrozumienia przez ich autorów działania nośników danych, a niektóre zalecenia wręcz wyglądają na przepisane wprost z przepisów regulujących niszczenie dokumentów papierowych, jednak taka analiza zaleceń zawartych w poniższych standardach wykracza poza ramy tego artykułu. Poniżej znajdziesz listę najpopularniejszych i najczęściej wykorzystywanych standardów opisujących niszczenie danych:
1. AFSSI-5020 (Air Force System Security Instruction 5020),
2. CSEC ITSG-06 (Communication Security Establishment Canada, Information Technology Security Guide - 06)
3. HMG-IS5 (Her/His Majesty Government Infosec Standard 5)
4. IEEE 2883-2022 (Institute of Electrical and Electronics Engineers, Standard for Sanitizing Storage),
5. NAVSO P-5239-26 (Navy Staff Office Publication 5239-26, Information Systems Security Program Guidelines),
6. NISPOM DoD 5220.22-M (National Industrial Security Program Operating Manual, Departament of Defence 5220.22-M),
7. NIST SP 800-88 (National Institute of Standards and Technology, Guidelines for Media Sanitization),
8. NSCS-TG-025 (National Computer Security Center, Technical Guidelines 025, A Guide to Understanding Data Remanence in Automated Information Systems),
9. RCMP TSSIT OST-II (Royal Canadian Mounted Police, Media Sanitation of the Technical Security Standards for Information Technology),
10. VSITR (Verschlusssachen IT Richtlinien),
11. ГОСТ Р50739—95 (Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования),
Wskazane wyżej standardy w różny sposób klasyfikują metody niszczenia danych, jednak z technicznego punktu widzenia oraz przyświecającego nam celu istotny jest podział tych metod na skuteczne i nieskuteczne. Metodę niszczenia danych możemy uważać za skuteczną, jeśli po jej zastosowaniu odzyskanie danych jest niemożliwe zarówno przy użyciu znanych i dostępnych metod odzyskiwania danych, jak i metod, jakie potencjalnie mogłyby być opracowane w przyszłości. Pozostałe metody, pozostawiające choćby tylko teoretyczne możliwości odzyskania danych, są metodami nieskutecznymi.
Przyjmując taką definicję skuteczności metod niszczenia danych możemy wyciągnąć dwa praktyczne wnioski pozwalające zoptymalizować procedury niszczenia danych. Po pierwsze możemy odrzucić jako zbędny wysiłek i koszt wszystkie nieskuteczne metody niszczenia danych, gdyż nie przyczyniają się one do osiągnięcia celu. Po drugie, możemy ograniczyć procedurę do jednej wybranej metody skutecznej, ponieważ jest ona wystarczająca dla zniszczenia danych. Przy takim podejściu możemy się skupić na identyfikacji skutecznych metod niszczenia informacji dla danych kategorii nośników. Musimy pamiętać o tym, że skuteczność metod niszczenia danych może się różnić w zależności od technologii wykorzystanej do przechowywania informacji. Np. demagnetyzacja może być skuteczna w stosunku do nośników magnetycznych, ale nie zadziała w stosunku do nośników półprzewodnikowych lub optycznych.
Metody niszczenia danych dzieli się też na sprzętowe (fizyczne) i programowe (logiczne). Metody sprzętowe polegają na takim oddziaływaniu na nośniki, by uniemożliwić odczytanie ich zawartości. Jednak musimy zwrócić uwagę na to, że niszczenie, czy uszkadzanie nośnika nie jest tożsame z niszczeniem informacji i dlatego nie każde uszkodzenie dysku uniemożliwia odzyskanie danych. Wręcz przeciwnie, firmy specjalizujące się w odzyskiwaniu danych często odzyskują informacje z nośników uszkodzonych sprzętowo, także celowo z zamiarem zniszczenia ich zawartości, a w wielu przypadkach, dla których nie opracowano praktycznych metod odzyskiwania danych, istnieją podstawy teoretyczne pozwalające na stworzenie takich metod w przyszłości.
Z kolei programowe metody ukierunkowane są na zniszczenie samej informacji bez konieczności uszkadzania nośnika. W odróżnieniu od metod fizycznych, pozwalają na selektywne niszczenie wybranych danych bez konieczności zniszczenia całej zawartości nośnika. Metody te sprowadzają się do destrukcji danych przez ich zastąpienie inną zawartością, a więc do nadpisania. Jeśli nie dojdzie do nadpisania danych, a jedynie do usunięcia metadanych opisujących te dane w strukturach logicznych systemu plików, sama informacja jest odzyskiwalna.
Wciąż jednak podnoszone są wątpliwości co do możliwości odzyskania nadpisanych danych. Kontrowersje najczęściej dotyczą wymaganej liczby przebiegów nadpisywania niezbędnych do prawidłowego zniszczenia danych. Niekiedy zwraca się też uwagę na używane wzorce nadpisujące. Wątpliwości te często są podsycane przez materiały marketingowe mające na celu skłonienie użytkowników do wyboru konkretnej metody lub narzędzia niszczenia danych, zazwyczaj przez zdyskredytowanie rozwiązań alternatywnych.
Koncepcje metod mających na celu umożliwienie odzyskiwania nadpisanych danych pojawiły się na przełomie lat '80 i '90 ubiegłego wieku. Wówczas podjęto szereg badań ukierunkowanych przede wszystkim na odtwarzanie poprzedniego stanu namagnesowania warstwy magnetycznej z wykorzystaniem mikroskopii sił magnetycznych, wśród których na szczególną uwagę zasługują prace zespołu kierowanego przez Romla Gomeza. Mniejszą popularnością cieszyły się oscyloskopowe badania sygnału przechwytywanego z bloku głowic magnetycznych. Artykuł Petera Gutmanna jest swego rodzaju podsumowaniem prac przeprowadzonych pod koniec lat '80 i w pierwszej połowie lat '90 XX wieku oraz propozycją rozwiązania pozwalającego rozwiać wątpliwości co do skuteczności nadpisywania danych.
Do fizycznych metod niszczenia danych należą metody:
– mechaniczne (od uderzania młotkiem i rozwiercania po rozdrabnianie nośników specjalnymi zmielarkami),
– termiczne (od wrzucania do ogniska i wygrzewania w piekarniku po przetapianie w piecach hutniczych),
– chemiczne (oddziaływanie na nośnik różnymi środkami chemicznymi),
– demagnetyzacja (oddziaływanie na nośnik polem magnetycznym),
– indukcyjne (wykorzystują różnego rodzaju promieniowanie, np. UV, jonizujące, mikrofalowe),
– pirotechniczne (wykorzystują materiały pirotechniczne i wybuchowe).
Metody programowe, to:
– wyrzucanie plików do kosza systemowego (czyli przeniesienie do specjalnego katalogu, metoda w oczywisty sposób nieskuteczna),
– kasowanie na poziomie metadanych systemu plików (możliwości odzyskania danych zależą od wielu czynników, np. od rodzaju nośnika i działania funkcji TRIM),
– formatowanie partycji (skuteczność zależy od sposobu formatowania, a także od rodzaju nośnika, rozwiązań oprogramowania układowego, obsługi TRIM itd.),
– nadpisywanie (jedno- lub wieloprzebiegowe z zastosowaniem różnego rodzaju wzorców nadpisujących – o tym jest ten artykuł),
– Secure Erase (procedura oczyszczania nośnika implementowana na poziomie oprogramowania układowego),
– Block Erase (procedura kasowania fizycznych bloków implementowana w oprogramowaniu układowym nośników półprzewodnikowych).
W dalszej części skupimy się na skuteczności nadpisywania danych jako metody niszczenia informacji zapisanej na dyskach twardych, gdyż właśnie to zagadnienie stanowi zasadniczą część rozważań zawartych w artykule Petera Gutmanna. Odniosę się do wybranych fragmentów tego artykułu wskazujących na niedostatecznie zrozumienie przez Autora pewnych zagadnień i prowadzących do wyciągnięcia błędnych wniosków. Zwrócę też uwagę na pewne mocno naciągane tezy wykorzystane jako uzasadnienie konieczności wielokrotnego nadpisywania danych dla zapewnienia skuteczności tej metody.
„... when a one is written to disk the media records a one, and when a zero is written the media records a zero. However the actual effect is closer to obtaining a 0.95 when a zero is overwritten with a one, and a 1.05 when a one is overwritten with a one.”
„... gdy na dysk zapisana jest jedynka, nośnik rejestruje jedynkę, a gdy zapisywane jest zero, nośnik rejestruje zero. Jednakże rzeczywisty efekt jest bliższy uzyskaniu 0,95 w przypadku nadpisania zera jedynką i 1,05 w przypadku nadpisania jedynki jedynką.”
Żeby się odnieść do tego założenia, musimy wiedzieć, co fizycznie jest bitem w zapisie magnetycznym. Jaki stan fizyczny oznacza logiczne zero, a jaki – jedynkę. Aby to zrozumieć, przyjrzyjmy się najpierw sposobowi odczytu z nośników magnetycznych.
Dane z nośników magnetycznych odczytywane są przez głowice unoszące się nad namagnesowaną powierzchnią (w przypadku dysków twardych) lub przesuwające się po niej (w przypadku taśm magnetycznych, dyskietek i niektórych modeli najstarszych, zabytkowych dysków twardych z początkowego okresu funkcjonowania konstrukcji tego typu). Przemieszczająca się pod głowicą namagnesowana powierzchnia indukuje przebieg elektryczny. Impulsy w tym przebiegu indukowane są przez zmienne pole magnetyczne. I to właśnie te impulsy są interpretowane jako logiczne jedynki. Natomiast logicznym zerem jest brak takiego impulsu.
Cóż więc jest obszarem o stałym i zmiennym polu magnetycznym? W każdym ciele wykazującym właściwości magnetyczne możemy wyodrębnić obszary o jednorodnym namagnesowaniu – domeny magnetyczne. Domeny te są od siebie odseparowane ścianami domenowymi – obszarami, w których odwraca się wektor polaryzacji namagnesowania. I to właśnie te ściany są obszarami o zmiennym namagnesowaniu indukującymi impulsy oznaczające logiczne jedynki, a same domeny – obszarami o stałym namagnesowaniu.
Zapis magnetyczny polega na nadawaniu nośnikowi określonego pożądanego uporządkowania namagnesowania powierzchni. W tym procesie domeny mogą odwracać swoją polaryzację, ale także zmieniać swoje rozmiary. Ściany domenowe mogą się przesuwać, zanikać lub mogą powstawać nowe ściany domenowe skutkując wyodrębnieniem nowych domen. Żeby mówić o nadpisaniu logicznej jedynki inną jedynką, po przemagnesowaniu powierzchni ściana domenowa musiałaby się znaleźć dokładnie w tym samym miejscu, w którym w poprzednim namagnesowaniu była inna ściana domenowa. Dlatego w praktyce nie ma możliwości jednoznacznego stwierdzenia, że logiczną jedynką została nadpisana jedynka lub zero.
Poprzednia polaryzacja namagnesowania może mieć wpływ na kształt i szerokość ścian domenowych, a tym samym i na kształt indukowanych przez nie impulsów. Zagadnienie to zostało szczegółowo opisane przez Serhija Kożenewskiego w książce „Перезапись Информации”. Jednak gdybyśmy chcieli odzyskiwać w ten sposób nadpisane dane, to nie poprzednia polaryzacja namagnesowania domen powinna nas interesować, a poprzednie rozmieszczenie ścian domenowych. Wyniki opisanych badań oscyloskopowych nie wskazują, by ustalenie z dostateczną dokładnością rozmieszczenia ścian domenowych w/g stanu sprzed nadpisania było możliwe.
Ponadto nie możemy zapominać i o innych czynnikach wpływających na wysokość amplitud impulsów. W dużym stopniu zależy ona od odległości między ścianami domenowymi. Im bliżej siebie się one znajdują, tym niższe będą indukowane przez nie amplitudy sygnału. Odchylenia zależą też od lokalnych właściwości powierzchni magnetycznej i stanu struktury krystalicznej. Na stan namagnesowania powierzchni oraz parametry odczytywanego sygnału wpływają także zewnętrzne pola magnetyczne oraz wahania temperatury i napięć zasilających dysk twardy.
W przypadku zapisu prostopadłego bardzo istotnym źródłem zakłóceń jest warstwa miękka magnetycznie (SUL – Soft Underlayer) służąca zamknięciu linii pola indukowanego przez głowicę zapisującą. Wprawdzie w czasach, kiedy powstawał artykuł Gutmanna w dyskach twardych wykorzystywano wyłącznie zapis równoległy, jednak współcześnie wszystkie dyski twarde wykorzystują zapis prostopadły Odfiltrowanie wpływu wskazanych wyżej czynników na przebieg sygnału w celu wyizolowania zakłóceń wynikających wyłącznie z poprzedniego stanu namagnesowania jest tym trudniejsze, że część z tych czynników zależy od niemożliwych do wiernego odtworzenia warunków zewnętrznych.
Kodowanie danych w dyskach twardych
Powyższy, ale też i kolejne cytaty z artykułu Petera Gutmanna, wskazują, że może on nie rozumieć procesu kodowania danych w dyskach twardych. W zasadzie z całej jego publikacji można odnieść wrażenie, że dane są zapisywane na dysku w surowej, nieprzetworzonej sekwencji zer i jedynek podawanej na interfejs dysku przez komputer. Jest to o tyle dziwne, że równocześnie sam wspomina o różnych metodach kodowania danych, a nawet stara się dopasować do nich wzorce nadpisujące swojego algorytmu.
W rzeczywistości dane zapisywane na dysku są danymi zakodowanymi, które w ogóle nie przypominają strumienia danych wejściowych. Ponieważ dane na każdym etapie przetwarzania i przechowywania są podatne na błędy i przekłamania, powszechnie stosowane są różnorodne zabezpieczenia w postaci sum kontrolnych i kodów korekcji (ECC – Error Correction Code). Także i w przypadku danych zapisywanych na dysku są one zabezpieczane odpowiednimi kodami korekcji. Szczegółowe rozwiązania ewoluowały w czasie, a także różnią się dla dysków poszczególnych producentów, jednak na nasze potrzeby wystarczająca jest świadomość tego, że takie kody występują oraz że przy zapisie dla zabezpieczenia zawartości są wyliczane i dołączane do każdego sektora dysku.
Dane zapisywane na dysku są także randomizowane. Celem randomizacji jest rozbijanie długich ciągów powtarzalnych symboli. Długie sekwencje takich samych symboli lub powtarzające się sekwencje symboli mogą przyczyniać się do występowania niekorzystnych zjawisk falowych w kanale zapisu i odczytu, jak fale stojące, odbicia fal, czy harmoniczne pasożytnicze. Mogą też powodować interferencje międzysymbolowe (ISI – Inter Symbol Interference) – przesunięcia pomiędzy poszczególnymi symbolami w strumieniu danych. A ponieważ ścieżki zapisywane na powierzchni talerza sąsiadują z innymi ścieżkami, występują pomiędzy nimi zakłócenia indukcyjne zwane interferencjami międzyścieżkowymi (ITI – Inter Track Interference). Randomizacja pozwala na ograniczenie wpływu tych zakłóceń.
Najważniejszym z naszego punktu widzenia etapem kodowania danych jest przygotowanie ich do zapisu na talerzu. Pierwszą metodą kodowania informacji stosowaną w dyskach twardych była metoda FM (od Frequency Modulation – modulacja częstotliwości). Polegała ona na zapisie impulsów sygnału zegarowego i umieszczaniu pomiędzy nimi bitów danych. Jeśli bit miał wartość „1”, pomiędzy impulsami zegarowymi pojawiał się dodatkowy impuls, a jeśli było to logiczne „0” - nie.
Była to metoda mało efektywna, w której bit o wartości „0” był kodowany jedną dłuższą domeną magnetyczną, a „1” - dwiema krótszymi. Z czasem podjęto próbę jej optymalizacji poprzez wprowadzenie metody MFM (Modified Frequency Modulation – modyfikowana modulacja częstotliwości), w której poprawiono gęstość zapisu poprzez ograniczenie liczby impulsów składowej zegarowej. Jednak prawdziwą rewolucję przyniosło kodowanie RLL (Run Lenght Limited), które pozwoliło na całkowitą eliminację składowej zegarowej oraz zwiększenie gęstości upakowania danych do kilku bitów na domenę magnetyczną.
Kodowanie RLL jest kodowaniem samotaktującym. Polega ono na tym, że pomiędzy poszczególnymi impulsami umieszcza się określoną liczbę zer wyliczaną przez układ dekodera na podstawie odległości pomiędzy tymi impulsami. Oznacza to, że jedna domena może kodować kilka bitów, przy czym liczba zer pomiędzy jedynkami zależy od długości domeny. Minimalną i maksymalną liczbę zer, jakie mogą wystąpić pomiędzy jedynkami określa się z uwzględnieniem czynników wpływających na częstotliwość sygnału (możliwe do uzyskania rozmiary stabilnych domen magnetycznych, prędkość obrotowa talerzy itd.), czułości głowic odczytujących oraz możliwości przetwarzania sygnału przez układ dekodera i korekcji błędów przez kody ECC tak, aby zminimalizować wystąpienie błędów odczytu lub rozsynchronizowania sygnału.
Jednocześnie ponieważ między dwoma ścianami domenowymi musi wystąpić domena magnetyczna, przy kodowaniu RLL nie mogą wystąpić kolejno dwie logiczne jedynki – zawsze muszą być one rozdzielone co najmniej jednym zerem. Ponieważ rzeczywiste dane rzadko spełniają ten warunek, muszą one być przeliczone z wykorzystaniem odpowiednich tablic. Dlatego też próba odzyskiwania dosłownie pojedynczych bitów jest niemożliwa, a próby odzyskiwania innych niewielkich porcji danych są utrudnione koniecznością odpowiedniego zaadresowania i zdekodowania tych fragmentów.
Więcej o kodowaniu danych możesz się dowiedzieć z książki twórcy kodu RLL Corneliusa (Keesa) Antoina Schouhammera Imminka „Codes for Mass Data Storage Systems”, a także Bane Vasicia i Erozana M. Kurtasa „Coding and signal processing for magnetic recording systems”. Jeśli chcesz się dowiedzieć więcej o procesie kodowania danych możesz też zainteresować się pracami Charlesa Sobeya w zakresie odzyskiwania danych niezależnie od dysku. Proces badań talerzy magnetycznych i dekodowania danych niezależnie od dysku opisuje również książka Izaaka Mayergoyza i Chuna Tse „Spin-stand Microscopy of Hard Disk Data”.
„...when data is written to the medium, the write head sets the polarity of most, but not all, of the magnetic domains. This is partially due to the inability of the writing device to write in exactly the same location each time, and partially due to the variations in media sensitivity and field strength over time and among devices.”
„...kiedy dane są zapisywane na nośniku, głowica zapisująca ustawia polaryzację większości, ale nie wszystkich, domen magnetycznych. Dzieje się tak częściowo ze względu na brak możliwości zachowania precyzji zapisu za każdym razem dokładnie w tym samym miejscu, a częściowo ze zmian w czułości nośnika i natężeniu pola w czasie i pomiędzy urządzeniami.”
Na podstawie tego, co już wiemy na temat kodowania danych, możemy wyciągnąć wniosek, że głowice w czasie pracy nie zapisują poszczególnych domen magnetycznych indywidualnie. Nie byłoby to spójne z systemem kodowania RLL, w którym liczba logicznych zer pomiędzy jedynkami determinowana jest przez odległość między kolejnymi ścianami domenowymi (długość domeny), a więc przy zapisie innych danych długości domen muszą ulegać zmianie.
Poza tym nie ma technicznej możliwości adresowania poszczególnych domen magnetycznych. Część powierzchni talerza jest przeznaczona na informacje niezbędne dla zapewnienia poprawnej pracy dysku. Do tej kategorii należą m. in. sektory serwo pozwalające na prawidłową identyfikację ścieżki oraz kontrolę trajektorii lotu głowicy nad jej środkiem, a także nagłówki sektorów umożliwiających ich poprawne zaadresowanie.
I to właśnie sektory (dawniej liczące 512 B, we współczesnym wariancie „Advanced Format” - 4 kB danych użytkownika) są minimalną jednostką adresowania. Aby się o tym przekonać, możesz zapoznać się ze standardami ATA i SCSI, które zostały opracowane w połowie lat '80 i od tego czasu są podstawowymi dokumentami opisującymi pracę dysków twardych oraz zapewniającymi ich kompatybilność. Wprawdzie standardy te przez dziesięciolecia ulegały ewolucji, ale nigdy nie przewidywały adresowania innych jednostek, niż sektory.
I tak właśnie pracują dyski. Nawet, jeśli chcemy zmienić pojedynczy bit danego sektora, wymaga to odpowiedniego zakodowania całego sektora i sformowania odpowiedniego przebiegu sygnału elektromagnetycznego, który następnie jest zapisywany w odpowiedniej fizycznej lokalizacji. Jeśli chcesz się o tym przekonać w praktyce, utwórz mały plik tekstowy. Odszukaj go i sprawdź w hex-edytorze, jak wygląda jego zawartość. Możesz zera na końcu pliku zmienić na inną zawartość, by sprawdzić, czy zostanie ona zachowana przy edycji pliku. Następnie zmień ten plik w notatniku i sprawdź zawartość sektora w hex-edytorze. Zobaczysz, że pozostałość starej zawartości pliku wykraczająca poza jego nowy rozmiar zostanie zastąpiona zerami. Dlatego twierdzenia o zapisywaniu, odczytywaniu, odzyskiwaniu, czy w ogóle adresowaniu pojedynczych bitów są bzdurą.
„Deviations in the position of the drive head from the original track may leave significant portions of the previous data along the track edge relatively untouched.”
„Odchylenia położenia głowicy dysku od pierwotnej ścieżki mogą pozostawić znaczne części poprzednich danych wzdłuż krawędzi ścieżki stosunkowo nietknięte.”
Stwierdzenie to miało sens w czasach, gdy w dyskach twardych do pozycjonowania bloku głowic magnetycznych jeszcze wykorzystywano silniki krokowe. Silnik krokowy, jak sama nazwa wskazuje, obraca się zawsze o zadany krok lub jego wielokrotność. Nie ma możliwości ustawienia go w położeniach pośrednich. I ta właściwość silników krokowych skutkowała ryzykiem zapisu ścieżki ze stałym przesunięciem względem poprzedniego położenia, chociażby przez brak możliwości kompensacji różnic rozszerzalności temperaturowej poszczególnych podzespołów dysku. To właśnie z tego powodu zalecano przed wykonywaniem formatowania niskopoziomowego uruchomienie dysku na co najmniej pół godziny w celu uzyskania równomiernego nagrzania wszystkich podzespołów.
Proces zastępowania silników krokowych liniowymi rozpoczął się mniej więcej w połowie lat '80 i do czasu opublikowania przez Petera Gutmanna jego artykułu zdążył się zakończyć. Kalok – ostatnia firma produkująca dyski twarde z silnikami krokowymi zbankrutowała w 1994 r. Dwa lata, to wystarczająco dużo, by w publikacji chociaż zauważyć obecność na rynku dysków z pozwalającymi na bezstopniową regulację położenia bloku głowic magnetycznych silnikami liniowymi lub co najmniej wyraźnie zaznaczyć, że cytowane wyżej stwierdzenie odnosi się do dysków z silnikami krokowymi.
Silniki liniowe zbudowane są z cewki umieszczonej pomiędzy dwoma magnesami stałymi. Zmienne pole elektryczne indukowane przez prąd przepływający przez umieszczoną w stałym polu magnetycznym cewkę wywołuje ruch tej cewki względem magnesów. Typowym rozwiązaniem są pozycjonery obracające się wokół osi i przemieszczające głowice nad powierzchnią talerzy po łuku, ale w przeszłości stosowano też rozwiązania oparte o ruch posuwisto – zwrotny cewki. Jednak rozwiązane to było bardziej skomplikowane i zajmowało więcej miejsca wewnątrz obudowy i z tych względów zostało szybko zarzucone.
Zastąpienie silników krokowych liniowymi wymusiło zmiany w podsystemie pozycjonowania głowic i śledzenia ścieżki. Bezstopniowa regulacja położenia głowic otwiera możliwości precyzyjnego prowadzenia głowicy nad środkiem ścieżki, ale też wymaga informacji zwrotnej pozwalającej na kontrolę jej położenia nad talerzem. Służą temu rozmieszczone w równych odstępach na powierzchniach talerzy sektory serwo. Liczba sektorów serwo jest różna w różnych modelach dysków. W wielu przypadkach możesz ją sprawdzić w Wiktorii. Jeśli program wyświetla w paszporcie dysku parametr „Wedges”, to jest właśnie liczba sektorów serwo.
Sektory serwo zawierają szereg informacji pozwalających na zidentyfikowanie numeru odczytywanej ścieżki, kontrolę prędkości obrotowej talerzy, poprawną synchronizację sygnału oraz utrzymywanie trajektorii lotu głowicy nad środkiem ścieżki. Z uwagi na cel artykułu skupimy się na tym ostatnim zagadnieniu. Każdy sektor serwo zawiera pola serwodanych generujących sygnał błędu pozycjonowania (PES – Positioning Error Signal, СОП — Сигнал Ошибки Позиционирования). Sygnał ten pozwala na stwierdzenie, w którą stronę i jak bardzo głowica odchyla się od środka ścieżki.
Procesor sygnałowy na podstawie sygnału błędu pozycjonowania może wydać sterownikowi silnika polecenie doregulowania położenia głowicy. Ponieważ typowo w dyskach twardych liczba sektorów serwo przekracza 100 na ścieżkę, w praktyce nie ma możliwości stabilnego utrzymania lotu głowicy wzdłuż krawędzi ścieżki. Jeżeli dojdzie do odchylenia głowicy od środka ścieżki, mechanizm pozycjonowania będzie dążył do jak najszybszego skorygowania jej położenia. Nawet, jeśli kompensacja napotka jakieś trudności, o wiele prawdopodobniejsza jest sytuacja, kiedy głowica będzie oscylowała w pobliżu środka ścieżki, aniżeli, że będzie leciała wzdłuż jednej z jej krawędzi.
Oczywiście możliwe są sytuacje dokonania zapisu z przesunięciem względem środka ścieżki w taki sposób, że kolejny zapis pozostawi nieuszkodzone fragmenty poprzedniego namagnesowania, ale wraz z rosnącą gęstością zapisu taka sytuacja jest coraz mniej prawdopodobna. Jest też skrajnie nieprawdopodobne, że takie odchylenia doprowadzą do pozostawienia nienaruszonych „znacznych części poprzednich danych”. Jeśli już, będą to co najwyżej niewielkie fragmenty, trudne do zaadresowania i zdekodowania, a także do określenia czasu powstania tych zapisów. Bazując na wskazanych wcześniej w tym artykule informacjach wiemy już, że aby móc w praktyce odkodować dane odzyskiwane z krawędzi ścieżki, musielibyśmy dysponować co najmniej całym spójnym sektorem.
We współczesnych dyskach twardych o bardzo wysokiej gęstości zapisu ryzyko pozostawienia fragmentów starych danych wzdłuż krawędzi ścieżki jest znikome. W dodatku taki sygnał byłby silnie zakłócony oddziaływaniem zapisów na sąsiednich ścieżkach. W przypadku dysków wykorzystujących zapis dachówkowy (SMR – Shingled Magnetic Recording) ryzyko to jest całkowicie eliminowane przez częściowe nadpisywanie poprzednich ścieżek przy zapisie kolejnych. Ponadto stosuje się znacznie bardziej zaawansowane rozwiązania w zakresie pozycjonowania i kontroli położenia głowic, np. wielostopniowe pozycjonery. Tym niemniej nawet w przypadku dysków z pierwszej połowy lat '90 nikomu nie udało się zademonstrować praktycznego przykładu odzyskania nadpisanych danych odczytanych z krawędzi ścieżki.
Zagadnienie serwomechaniki dysków twardych, wyszukiwania i śledzenia ścieżek oraz kontroli prędkości obrotowej silnika jest zbyt obszerne, by je dokładniej tu omówić. Zostało ono opisane w kilku książkach, spośród których warto wskazać:
– „Механика и сервосистема” Serhija Kożenewskiego,
– „Hard Disk Drive Mechatronics and Control” Abdullaha al-Mamuna, Guoxiao Guo i Chao Bi,
– „Hard Disk Drive Servo Systems” Bena M. Chena, Tonga H. Lee, Kemao Penga i Venkatakrishnana Venkataramanana.
„When all the above factors are combined it turns out that each track contains an image of everything ever written to it, but that the contribution from each «layer» gets progressively smaller the further back it was made.”
„Kiedy wszystkie powyższe czynniki zostaną połączone, okaże się, że każda ścieżka zawiera obraz wszystkiego, co kiedykolwiek zostało na niej zapisane, ale wkład każdej «warstwy» staje się coraz mniejszy w miarę nadpisywania kolejnych.”
Chyba każdy spotkał się z analogiami nadpisywania danych do zamazywania ołówkiem napisów na kartce. Tak, pierwotne zapisy na kartce papieru są bardzo długo widoczne i nawet jeżeli zostaną dość dokładnie zamazane, wciąż można próbować odczytywać ich fragmenty, czy odgadywać pojedyncze symbole. I zdaje się, że i Peter Gutmann uległ magii tej analogii. Ale czy ona w ogóle ma sens w odniesieniu do zapisu magnetycznego?
Głowice podczas zapisu nie nanoszą żadnych nowych warstw, ale zmieniają uporządkowanie namagnesowania jednej warstwy magnetycznej. Przemagnesowanie nie nakłada nowego zapisu na poprzedni, ale niszczy go ustawiając w inny sposób sekwencję ścian domenowych. A więc jest to działanie znacznie bardziej podobne do chociażby zmiany symboli ułożonych z zapałek przez ich przestawianie, zaś analogia do zamalowywania kredkami zapisów na papierze jest co najmniej nieadekwatna.
Czy jednak faktycznie głowice są w stanie nieodwracalnie zniszczyć poprzedni zapis magnetyczny? Tu musimy zwrócić uwagę na relację wartości pola indukowanego przez głowice do koercji warstwy magnetycznej, czyli wartości pola niezbędnego do jej przemagnesowania. Koercja stopów kobaltowych typowo wykorzystywanych w dyskach twardych wynosi ok. 0,5 T. Natomiast głowice magnetyczne są w stanie indukować pola o wartości powyżej 2 T. Poza tym warstwy magnetyczne są zbyt cienkie (ich grubość jest liczona w dziesiątkach nm), by mogły w nich stabilnie funkcjonować dwie lub więcej warstw domen o różnych polaryzacjach namagnesowania. Dla porównania do zniszczenia danych w procesie demagnetyzacji wystarczające są demagnetyzery (degaussery) indukujące pola o wartości ok. 1 T, pomimo że talerze są ekranowane przez metalowe elementy obudowy.
Warto przy tej okazji zwrócić uwagę na dopiero pojawiające się na rynku dyski z zapisem wspomaganym energetycznie – HAMR (Heat-Assisted Magnetic Recording) i MAMR (Microvave-Assisted Magnetic Recording). Są to dyski wykorzystujące jako warstwę magnetyczną stopy żelazowo – platynowe, których koercja wynosi ok. 6 T. W ich przypadku pole indukowane przez głowice jest wyraźnie za słabe, by przemagnesować warstwę magnetyczną, dlatego zapis musi być wspomagany dodatkowym źródłem energii pozwalającym lokalnie rozgrzać powierzchnię talerzy do temperatury zbliżonej do punktu Curie. Punkt Curie, jest to charakterystyczna dla danego materiału magnetycznego temperatura, w której traci on swoje namagnesowanie, a więc jest dużo łatwiejszy do przemagnesowania. Informacja ta jest istotna dla niszczenia danych przez demagnetyzację, gdyż dyski z zapisem wspomaganym energetycznie będą odporne na działanie popularnych współcześnie demagnetyzerów i do ich niszczenia konieczne jest opracowanie nowych urządzeń.
„The general concept behind an overwriting scheme is to flip each magnetic domain on the disk back and forth as much as possible (this is the basic idea behind degaussing) without writing the same pattern twice in a row.”
„Ogólna koncepcja schematu nadpisywania polega na odwracaniu każdej domeny magnetycznej na dysku w tę i z powrotem tak bardzo, jak to możliwe (jest to podstawowa idea demagnetyzacji) bez zapisywania tego samego wzoru dwa razy pod rząd.”
Dlaczego Gutmann miesza tu nadpisywanie danych z demagnetyzacją? Namagnesowanie substancji magnetycznej możemy rozpatrywać w dwóch aspektach. W skali makro ciało będziemy uważać za namagnesowane, jeśli samo będzie indukowało pole magnetyczne. Będzie miało niezerowe namagnesowanie będące wypadkową namagnesowania jego domen magnetycznych. W tym sensie talerze magnetyczne nie są namagnesowane. Można to łatwo sprawdzić obserwując, w jaki sposób talerze zdemontowane z dysku twardego oddziałują z metalami, które powinny reagować na zewnętrzne namagnesowanie.
W skali nano każde ciało magnetyczne jest w jakiś sposób namagnesowane. Jeśli namagnesowanie nie zostanie nadane przez zewnętrzne pole magnetyczne, domeny magnetyczne powstają samorzutnie, a indukowane przez nie pola wzajemnie się znoszą. Zapis magnetyczny polega na takim uporządkowaniu domen magnetycznych, żeby reprezentowały one pożądane przez nas stany logiczne, które możemy interpretować jako określoną informację. Sprawny dysk twardy zawsze ma uporządkowane namagnesowanie, zawsze zawiera jakąś informację i nawet, jeśli na poziomie struktur logicznych uważamy go za pusty, zawsze w hex-edytorze możemy zobaczyć jakieś wartości.
Demagnetyzacja polega na takim oddziaływaniu impulsem elektromagnetycznym, by zniszczyć to uporządkowanie, w konsekwencji czego domeny na talerzu pozostają w stanie namagnesowania chaotycznego. Takie namagnesowanie nie jest możliwe do interpretacji, dlatego z talerzy nie można niczego odczytać, głowice nie mogą odnaleźć sygnału serwo i dysk zostaje zniszczony. Natomiast nadpisywanie polega na zastąpieniu istniejącego uporządkowania namagnesowania innym, wciąż interpretowalnym logicznie, ale reprezentującym bezwartościową informację. Przy czym dla zniszczenia danych nie jest konieczna zmiana polaryzacji każdej domeny magnetycznej. Wystarczy, że domeny magnetyczne zostaną ustawione w inny sposób, niż pierwotnie.
Demagnetyzacja i nadpisywanie, to dwie różne metody niszczenia danych, w których cel jest osiągany innymi środkami. W przypadku demagnetyzacji jest to zewnętrzne urządzenie całkowicie niszczące uporządkowanie namagnesowania, a tym samym niszczące dysk, jako urządzenie. Natomiast nadpisywanie zmienia jedynie uporządkowanie namagnesowania nadpisywanych sektorów pozostawiając nienaruszoną informację strefy serwisowej, sektorów serwo i nagłówków sektorów, a także umożliwiając selektywne niszczenie danych, np. usuwanie wybranych plików.
„To erase magnetic media, we need to overwrite it many times with alternating patterns in order to expose it to a magnetic field oscillating fast enough that it does the desired flipping of the magnetic domains in a reasonable amount of time. (…) The best we can do is to use the lowest frequency possible for overwrites, to penetrate as deeply as possible into the recording medium.”
„Żeby wymazać nośnik magnetyczny, musimy go wielokrotnie nadpisywać naprzemiennymi wzorami, aby wystawić go na działanie pola magnetycznego oscylującego na tyle szybko, aby w rozsądnym czasie spowodowało to pożądane odwrócenie domen magnetycznych. (…) Najlepsze, co możemy zrobić, to użyć najniższej możliwej częstotliwości do nadpisywania, aby wniknąć najgłębiej, jak to możliwe w nośnik.”
Jak już wiemy, dla zniszczenia danych w zapisie magnetycznym istotne jest nie tyle odwracanie polaryzacji poszczególnych domen magnetycznych, co przemieszczenie ścian domenowych. Poza tym częstotliwość pola magnetycznego używanego do zapisu danych zależy przede wszystkim od częstotliwości zapisywanego sygnału. Biorąc pod uwagę proces kodowania danych, uzyskanie sygnału o możliwie najniższej lub najwyższej częstotliwości (zawierającego jak najmniejszą lub największą liczbę logicznych jedynek w stosunku do zer) wymagałoby zrozumienia i uwzględnienia wszystkich etapów kodowania.
Sam pomysł najprawdopodobniej pochodzi od metody rozmagnesowywania ciał namagnesowanych w skali makro. Ponieważ bardzo trudno jest oddziaływać na takie ciało polem dokładnie odpowiadającym jego koercji tak, by doprowadzić do jego rozmagnesowania i o wiele bardziej prawdopodobne jest odwrócenie polaryzacji namagnesowania, rozmagnesowanie przeprowadza się operując polem o wysokiej częstotliwości i malejącym natężeniu. W ten sposób przy każdym odwróceniu polaryzacji ciało jest namagnesowane coraz słabiej (remanencja spada od stanu nasycenia do stanu bliskiego zeru). Przy czym w przypadku dysku twardego głowice zapisujące indukują pole magnetyczne na powierzchnię obracającego się pod nimi talerza i czas, w jakim dany obszar może być poddany przemagnesowaniu zależy przede wszystkim od prędkości obrotowej talerza.
Gutmann w swoim artykule z jednej strony często odwołuje się do pewnych elementów kodowania danych, ale z drugiej traktuje to zagadnienie bardzo pobieżnie i wyrywkowo, często naciągając je pod założoną tezę o konieczności wielokrotnego nadpisywania danych dla ich bezpiecznego zniszczenia. W zasadzie ignoruje kluczowe dla kodowania RLL procesy zmian rozmiarów, łączenia i podziałów domen magnetycznych. Za to nadmiernie skupia się na samym procesie odwracania ich polaryzacji. W jego rozważaniach brakuje spójności, co zdążyliśmy już zauważyć i jeszcze zobaczymy w dalszej części. Poza tym, jak już wspomniałem wyżej, warstwa magnetyczna jest zbyt cienka, by nie została przemagnesowana do nasycenia już przy pierwszym przebiegu. Dotyczy to zwłaszcza zapisu prostopadłego, w którym wektor polaryzacji namagnesowania jest prostopadły do powierzchni talerza, a więc same domeny są ustawione w warstwie magnetycznej pionowo.
„Therefore even if some data is reliably erased, it may be possible to recover it using the built-in error-correction capabilities of the drive. ”
„Dlatego nawet jeśli niektóre dane zostaną niezawodnie usunięte, możliwe będzie ich odzyskanie przy użyciu wbudowanych funkcji korekcji błędów dysku.”
Oto i kolejny przykład nadmiernie swobodnego podejścia Petera Gutmanna do zagadnienia kodowania danych. Powyższe zdanie sugeruje możliwość usunięcia zawartości sektora przy jednoczesnym pozostawieniu związanych z nim kodów korekcji. Nie jest to możliwe, gdyż kody korekcji są wyliczane na etapie kodowania danych i dodawane do sektora jeszcze przed sformowaniem przebiegu sygnału, jaki zostanie zaindukowany przez głowicę zapisującą i zapisany na talerzu. Nadpisując sektor inną zawartością nadpiszemy i kody korekcji związane z pierwotnymi danymi.
W starszych modelach dysków istniała możliwość celowego wygenerowania błędnych sum kontrolnych i zapisania sektora z kodami korekcji niezgodnymi z danymi użytkownika. Wprawdzie takie sektory nie dają się poprawnie odczytać i przy próbie ich odczytu dysk zwraca błąd UNC, ale same kody korekcji związane z poprzednią zawartością sektora są niszczone i zastępowane nowymi. Możliwość ta jest realizowana np. w programie MHDD przez polecenia „MAKEBAD” - tworzące „uszkodzony” sektor we wskazanym adresie LBA lub „RANDOMBAD” - tworzące „uszkodzone” sektory w losowych lokalizacjach.
Ponadto Gutmann ewidentnie przecenia możliwości korekcyjne kodów ECC. Wprawdzie kody korekcji pozwalają na lokalizację i korekcję błędów bitowych, ale dotyczy to ograniczonej liczby błędów występujących w istniejących i odczytywalnych sektorach. Typowo kody korekcji pozwalają na skorygowanie ok. 200 błędów bitowych na sektor, a jeśli liczba błędów przekracza możliwości kodu, dysk wystawia błąd UNC. To stanowczo za mało, żeby podjąć próbę rekonstrukcji zawartości nieistniejącego sektora wyłącznie na podstawie jego kodów korekcji. Przy tym musimy pamiętać, że błędy bitowe mogą wystąpić i w samym kodzie korekcji.
„Data which is overwritten an arbitrarily large number of times can still be recovered provided that the new data isn't written to the same location as the original data...”
„Dane, które zostały nadpisane dowolną liczbę razy, można nadal odzyskać, pod warunkiem, że nowe dane nie zostaną zapisane w tej samej lokalizacji, co dane oryginalne...”
W tym zdaniu Gutmann ewidentnie sam sobie zaprzecza. Zakłada, że dane nadpisane dowolną liczbę razy wciąż można odzyskać, pod warunkiem, że w tej samej lokalizacji nie zostaną zapisane nowe dane. Ale przecież istotą nadpisywania jest zapisywanie nowych danych w miejscu tych, które chcemy zniszczyć. Nawet, jeśli tymi nowymi danymi jest wybrany nieinterpretowalny na poziomie logicznym wzorzec nadpisujący. Bo dla dysku jest to taki sam strumień danych, jak każdy inny. I byłoby bardzo dziwne, gdyby Peter Gutmann tego nie rozumiał. Z drugiej strony to zdanie wprost podważa sens wielokrotnego nadpisywania i potwierdza, że już pierwszy przebieg nadpisywania niszczy dane.
„The article states that «The encoding of hard disks is provided using PRML and EPRML», but at the time the Usenix article was written MFM and RLL was the standard hard drive encoding technique…”
„W artykule stwierdza się, że «Kodowanie dysków twardych odbywa się przy użyciu PRML i EPRML», ale w czasie, gdy pisano artykuł Usenix, standardową techniką kodowania dysków twardych były MFM i RLL...”
W epilogu Peter Gutmann odnosi się do artykułu Craigha Wrighta, Dave Kleimana i Ramajadama Srinivasana Shyaama Sundhara „Overwriting Hard Drive Data: The Great Wiping Controversy" z 2008 r. Autorzy tej publikacji zweryfikowali praktycznie założenia przedstawione przez Gutmanna i wykazali brak możliwości odzyskiwania nadpisanych danych w drodze analizy mikromagnetycznej powierzchni talerza w celu poszukiwania śladów poprzedniego namagnesowania. Wprawdzie i autorzy tej publikacji dość luźno podeszli do zagadnienia kodowania danych, ale w tym miejscu zajmujemy się przede wszystkim algorytmem Gutmanna i opisującym go artykułem.
Peter Gutmann wskazuje, że badania Wrighta, Kleimana i Shyaama Sundhara są nieadekwatne i nie powinny kwestionować jego ustaleń, gdyż w dyskach, które badali, wykorzystano PRML, podczas gdy w czasach, kiedy on pisał swój artykuł standardowymi metodami kodowania danych były MFM i RLL. Jest to zarzut o tyle nietrafiony, że PRML nie jest techniką kodowania danych i nie zastępuje ani MFM ani RLL, ale jest wykorzystywany w detekcji i dekodowaniu sygnału zastępując starszą metodę wykrywania szczytów impulsów peak-detection. Jest to metoda stosowana od początku lat '90 i w związku z tym nie powinna być Gutmannowi obca w 1996 r. Natomiast metoda kodowania MFM była wypierana z dysków twardych już w połowie lat '80 i w połowie lat '90 była stosowana wyłącznie w dyskietkach.
W pierwszych dekadach dysków twardych gęstość zapisu była niewielka, domeny były dość dużych rozmiarów, a więc ściany domenowe leżały w relatywnie dużych odstępach Wówczas dawały one w odczytywanym przez głowice sygnale wyraźne impulsy o wysokich amplitudach i łatwych do wykrycia szczytach. Rosnąca gęstość zapisu powodowała pogorszenie stosunku sygnału do szumu, natomiast wprowadzenie kodowania RLL wyeliminowało składową zegarową, co zwiększyło ryzyko rozsynchronizowania sygnału oraz obliczenia przez układ dekodera niewłaściwej liczby zer pomiędzy kolejnymi jedynkami. Wówczas metoda detekcji szczytów okazała się niewystarczająca i zastąpiono ją metodą PRML.
PRML (Partial Response – Maximum Likelihood) jest metodą pozwalającą na określenie maksymalnego prawdopodobieństwa przebiegu odczytywanego sygnału przy częściowej odpowiedzi. Metoda ta nie skupia się na wychwytywaniu kolejnych szczytów impulsów, ale analizuje cały przebieg sygnału i dąży do określenia najbardziej prawdopodobnego rozmieszczenia impulsów. PRML, w odróżnieniu od detekcji szczytów, nie posługuje się progowymi wartościami odniesienia, ale analizuje kształt i wysokość amplitud wszystkich impulsów i na tej podstawie określa, które z nich pochodzą od zapisanego sygnału, a które od zakłóceń tła. Wykorzystywana jest przy tym znajomość metody kodowania danych przy zapisie, co pozwala na odrzucenie niezgodnych z nią wariantów przebiegu sygnału, np. zawierających mniejszą lub większą liczbę zer pomiędzy dwiema jedynkami od dopuszczalnej dla danej wersji kodu RLL.
Kwestionowanie przez Gutmanna na tej podstawie wyników Wrighta, Kleimana i Shyaama Sundhara dowodzi jedynie, że i po roku 2008 był on na bakier z rozwiązaniami w zakresie kodowania danych i przetwarzania sygnałów w dyskach twardych. Sugestia, że PRML zastępuje kodowanie RLL jest takim samym błędem, jak np. twierdzenie, że zapis SMR zastąpił zapis prostopadły. Po opublikowaniu artykułu Wrighta, Kleimana i Shyaama Sundhara zainteresowanie badaniami w kierunku odzyskiwania nadpisanych danych z wykorzystaniem mikroskopii sił magnetycznych w zasadzie zanikło. Podobnie w przypadku badań oscyloskopowych przebiegu sygnału przechwytywanego bezpośrednio z głowic prace Kożenewskiego nie dały dostatecznych podstaw, by dawać uzasadnione nadzieje na możliwość wykorzystania ich w praktycznym odzyskiwaniu nadpisanych danych.
Nie znaczy to jednak, że nadpisywanie danych jest wolne od ryzyk i zagrożeń. Zawsze możliwe są błędy użytkownika, niekontrolowane przerwy w przebiegu procesu, awarie urządzeń i oprogramowania, czy celowe działania mające na celu udaremnienie skutecznego zniszczenia danych. Istnieją także ryzyka związane z możliwością przypadkowego znalezienia się danych lub ich celowego ukrycia poza adresacją LBA.
Dane mogą się znaleźć w obszarach ukrytych poza adresacją LBA za pomocą funkcji HPA lub DCO. W przypadku dysków SMR poza adresacją LBA w niekontrolowany sposób mogą przetrwać zdezaktualizowane dane, a ich lokalizacja i niezawodne nadpisanie wymaga analizy i zrozumienia podsystemu translacji adresacji LBA na fizyczną. W każdym dysku występują też sektory, które nie dostały adresu LBA. Są to np. sektory rezerwowe, albo sektory fizyczne pod koniec dysku, których jest więcej, niż potrzeba do uzyskania jego nominalnej pojemności. Takie sektory mogą być wykorzystane do celowego ukrycia danych, ale zarówno ich ukrycie, jak i późniejsze odczytanie wymaga odpowiedniej znajomości oprogramowania układowego dysku i umiejętności pracy w adresacji fizycznej.
Jednak przed żadnym z powyższych ryzyk nie chroni wielokrotne nadpisywanie. Poprawa bezpieczeństwa procesu nadpisywania danych powinna zmierzać przede wszystkim w kierunku analizy podsystemu translacji adresów logicznych (LBA) na adresy fizyczne oraz dążyć do nadpisywania danych w adresacji fizycznej. Dlatego jeśli nie zależy nam na selektywnym usunięciu wybranych plików, a chcemy zniszczyć całą zawartość dysku, lepiej wybrać procedurę Secure Erase, która pracuje bliżej sprzętu niż programy operujące w adresacji LBA. Dane są bezpowrotnie niszczone już w pierwszym przebiegu nadpisywania. Każdy kolejny jest jedynie zbędnym kosztem i stratą czasu, a to chyba wystarczający powód, by w końcu wyrzucić algorytm Gutmanna do kosza.
Literatura uzupełniająca:
1. C. Wright, D. Kleiman, R. S. Shyaam Sundhar: Overwriting Hard Drive Data: The Great Wiping Controversy.
2. R. Gomez, A. Adly, I. Mayergoyz, E. Burke: Magnetic Force Scanning Tunnelling Microscope Imaging of Overwritten Data,
3. R. Gomez, E. Burke, A. Adly, I. Mayergoyz, J. Gorczyca: Microscopic Investigations of Overwritten Data,
4. I. D. Mayergoyz, C. Tse: Spin-stand Microscopy of Hard Disk Data,
5. С. Р. Коженевський: Перезапись информации.
6. B. M. Chen, T. H. Lee, K. Peng, V. Venkataramanan: Hard Disk Drive Servo Systems,
7. A. al-Mamun, G. X. Guo, Ch. Bi: Hard Disk Drive Mechatronics and Control,
8. С. Р. Коженевський: Механика и сервосистема,
9. K. A. Schouhamer Immink: Codes for Mass Data Storage Systems,
10. B. Vasić, E. M. Kurtas: Coding and signal processing for magnetic recording systems.
Wyrzucamy algorytm Gutmanna do kosza
Podstawowe informacje o niszczeniu danych
Poprawne usuwanie danych jest ważnym, aczkolwiek często zaniedbywanym i słabo rozumianym aspektem bezpieczeństwa informacji. Konieczność bezpiecznego, nieodwracalnego usuwania danych w taki sposób, aby nie mogły one zostać odzyskane przez inne osoby może wynikać z wielu przyczyn. Często jest ona regulowana przez przepisy prawne, takie, jak RODO, czy przepisy o ochronie tajemnicy państwowej lub zobowiązujące do ochrony pewnych kategorii informacji także podmioty prywatne. Może też wynikać z umów i porozumień regulujących warunki współpracy i określających zakres tajemnic handlowych. A czasem bez żadnego obowiązku chcemy chronić nasze interesy oraz prywatność i nie życzymy sobie, by ktoś postronny wiedział o nas wszystko. Usuwanie danych ma też swoją ciemną stronę w postaci ukrywania i niszczenia cyfrowych dowodów przestępstw, co również można robić mądrze i skutecznie lub głupio i nieudolnie.
W artykule tym odnoszę się do publikacji Petera Gutmanna „Secure Deletion of Data from Magnetic and Solid-State Memory” zaprezentowanej na konferencji “USENIX” w lipcu 1996 r. Publikację tę uzupełnioną o późniejsze epilogi możesz znaleźć tutaj:
Secure Deletion of Data from Magnetic and Solid-State Memory
Jest to najczęściej cytowana publikacja w kontekście nadpisywania danych i podstawa jednego z najpopularniejszych algorytmów niszczenia informacji. W niektórych środowiskach praca Petera Gutmanna urosła do rangi dogmatu religijnego, a on sam jest postrzegany, jako niekwestionowalny autorytet. Tym niemniej publikacja ta zawiera szereg tez i założeń budzących wątpliwości, czy jej Autor na pewno dobrze rozumie działanie dysków twardych oraz fizykę przechowywania informacji. I właśnie na tych fragmentach skupimy się dalej.
Rodzaje nośników danych
Nośniki danych możemy klasyfikować na wiele sposobów. W szczególności możemy je podzielić na analogowe i cyfrowe. Cyfrowym nośnikiem danych jest taki nośnik, który przechowuje informację w sposób możliwy do zrozumienia przez maszyny, jako ciąg stanów logicznych interpretowanych jako zera i jedynki. Pozostałe nośniki danych nazywamy nośnikami analogowymi. Jednak i w przypadku nośników cyfrowych podstawą określania stanów logicznych są pewne analogowe stany fizyczne digitalizowane w procesach kodowania i dekodowania. Sam proces interpretacji stanów fizycznych jako określone stany logiczne wynika z przyjętej konwencji.
Najczęściej przyjmowanym kryterium klasyfikacji nośników danych są właśnie zjawiska fizyczne leżące u podstawy interpretacji ich jako stanów logicznych. Ze względu na technologię przechowywania danych możemy wyróżnić nośniki:
magnetyczne:
– dyski twarde,
– dyskietki,
– taśmy magnetyczne,
optyczne:
– CD,
– DVD,
– Blu-Ray,
– HD-DVD,
półprzewodnikowe:
– SSD,
– pendrivy,
– karty pamięci,
– pamięci wbudowane (eMMC, MCP...),
rezystywne:
– PCRAM,
– MRAM,
– ReRAM.
– NanoRAM,
papierowe:
– karty perforowane.
– taśmy perforowane.
Z punktu widzenia niszczenia informacji istotna jest klasyfikacja nośników danych na nieulotne (energoniezależne, zdolne do długotrwałego, wieloletniego przechowywania danych także bez podłączenia do źródła zasilania) i ulotne (wymagające dla podtrzymania stanów logicznych ciągłego podawania zasilania). Do tych ostatnich należą pamięci typu DRAM i SRAM. W przypadku nośników ulotnych dla nieodwracalnego usunięcia danych wystarczy na chwilę odłączyć zasilanie. Wówczas tracą one stany logiczne i dlatego dalej nie będziemy się nimi zajmować.
Nośniki danych można podzielić także na nośniki jednokrotnego i wielokrotnego zapisu. Nośniki jednokrotnego zapisu można zapisać tylko raz. Później nie można zmieniać ich zawartości. Najbardziej typowym przykładem nośników jednokrotnego zapisu są płyty CD-ROM i DVD-ROM. W przypadku tej kategorii nośników nie jest możliwe zniszczenie ich zawartości przez zastąpienie jej inną zawartością i dla usunięcia informacji konieczne jest fizyczne zniszczenie nośnika. Natomiast w przypadku nośników wielokrotnego zapisu ich zawartość może być zmieniana jeśli nawet nie dowolną, to bardzo dużą liczbę razy, co pozwala na wykorzystanie nadpisywania danych jako metody niszczenia informacji.
Standardy regulujące niszczenie danych
Niszczenie danych jest regulowanie różnymi standardami opracowywanymi przez różne instytucje rządowe, wojskowe i naukowe. Standardy te opisują różne metody i w różny sposób klasyfikują informacje, które powinny być zniszczone, często nakazując stosowanie różnych metod niszczenia danych w zależności od zawartości nośników. Jeśli jednak uświadomimy sobie, że interpretacja danych odbywa się na poziomie struktur logicznych systemów plików i oprogramowania, z łatwością zrozumiemy, że treść danych nie ma żadnego wpływu na proces ich niszczenia. Z punktu widzenia nośnika danych i fizyki zapisu nie ma żadnej istotnej różnicy pomiędzy różnymi strumieniami zer i jedynek, niezależnie od tego, jak je interpretujemy na poziomie logicznym i jakie subiektywne znaczenie im przypisujemy.
Standardy opisujące niszczenie danych zawierają wiele rozbieżności w różny sposób oceniając skuteczność różnych metod niszczenia danych. W niektórych przypadkach zalecane są procedury obejmujące kilkuetapowe niszczenie danych z użyciem różnych metod. Takie podejście jest też popularne w wielu procedurach wewnętrznych opartych na różnych standardach, co niekiedy podyktowane jest koniecznością zapewnienia zgodności z wieloma regulacjami. Szczegółowa lektura standardów pozwala zauważyć wiele momentów, w których można mieć wątpliwości, co do poziomu zrozumienia przez ich autorów działania nośników danych, a niektóre zalecenia wręcz wyglądają na przepisane wprost z przepisów regulujących niszczenie dokumentów papierowych, jednak taka analiza zaleceń zawartych w poniższych standardach wykracza poza ramy tego artykułu. Poniżej znajdziesz listę najpopularniejszych i najczęściej wykorzystywanych standardów opisujących niszczenie danych:
1. AFSSI-5020 (Air Force System Security Instruction 5020),
2. CSEC ITSG-06 (Communication Security Establishment Canada, Information Technology Security Guide - 06)
3. HMG-IS5 (Her/His Majesty Government Infosec Standard 5)
4. IEEE 2883-2022 (Institute of Electrical and Electronics Engineers, Standard for Sanitizing Storage),
5. NAVSO P-5239-26 (Navy Staff Office Publication 5239-26, Information Systems Security Program Guidelines),
6. NISPOM DoD 5220.22-M (National Industrial Security Program Operating Manual, Departament of Defence 5220.22-M),
7. NIST SP 800-88 (National Institute of Standards and Technology, Guidelines for Media Sanitization),
8. NSCS-TG-025 (National Computer Security Center, Technical Guidelines 025, A Guide to Understanding Data Remanence in Automated Information Systems),
9. RCMP TSSIT OST-II (Royal Canadian Mounted Police, Media Sanitation of the Technical Security Standards for Information Technology),
10. VSITR (Verschlusssachen IT Richtlinien),
11. ГОСТ Р50739—95 (Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования),
Metody niszczenia danych
Wskazane wyżej standardy w różny sposób klasyfikują metody niszczenia danych, jednak z technicznego punktu widzenia oraz przyświecającego nam celu istotny jest podział tych metod na skuteczne i nieskuteczne. Metodę niszczenia danych możemy uważać za skuteczną, jeśli po jej zastosowaniu odzyskanie danych jest niemożliwe zarówno przy użyciu znanych i dostępnych metod odzyskiwania danych, jak i metod, jakie potencjalnie mogłyby być opracowane w przyszłości. Pozostałe metody, pozostawiające choćby tylko teoretyczne możliwości odzyskania danych, są metodami nieskutecznymi.
Przyjmując taką definicję skuteczności metod niszczenia danych możemy wyciągnąć dwa praktyczne wnioski pozwalające zoptymalizować procedury niszczenia danych. Po pierwsze możemy odrzucić jako zbędny wysiłek i koszt wszystkie nieskuteczne metody niszczenia danych, gdyż nie przyczyniają się one do osiągnięcia celu. Po drugie, możemy ograniczyć procedurę do jednej wybranej metody skutecznej, ponieważ jest ona wystarczająca dla zniszczenia danych. Przy takim podejściu możemy się skupić na identyfikacji skutecznych metod niszczenia informacji dla danych kategorii nośników. Musimy pamiętać o tym, że skuteczność metod niszczenia danych może się różnić w zależności od technologii wykorzystanej do przechowywania informacji. Np. demagnetyzacja może być skuteczna w stosunku do nośników magnetycznych, ale nie zadziała w stosunku do nośników półprzewodnikowych lub optycznych.
Metody niszczenia danych dzieli się też na sprzętowe (fizyczne) i programowe (logiczne). Metody sprzętowe polegają na takim oddziaływaniu na nośniki, by uniemożliwić odczytanie ich zawartości. Jednak musimy zwrócić uwagę na to, że niszczenie, czy uszkadzanie nośnika nie jest tożsame z niszczeniem informacji i dlatego nie każde uszkodzenie dysku uniemożliwia odzyskanie danych. Wręcz przeciwnie, firmy specjalizujące się w odzyskiwaniu danych często odzyskują informacje z nośników uszkodzonych sprzętowo, także celowo z zamiarem zniszczenia ich zawartości, a w wielu przypadkach, dla których nie opracowano praktycznych metod odzyskiwania danych, istnieją podstawy teoretyczne pozwalające na stworzenie takich metod w przyszłości.
Z kolei programowe metody ukierunkowane są na zniszczenie samej informacji bez konieczności uszkadzania nośnika. W odróżnieniu od metod fizycznych, pozwalają na selektywne niszczenie wybranych danych bez konieczności zniszczenia całej zawartości nośnika. Metody te sprowadzają się do destrukcji danych przez ich zastąpienie inną zawartością, a więc do nadpisania. Jeśli nie dojdzie do nadpisania danych, a jedynie do usunięcia metadanych opisujących te dane w strukturach logicznych systemu plików, sama informacja jest odzyskiwalna.
Wciąż jednak podnoszone są wątpliwości co do możliwości odzyskania nadpisanych danych. Kontrowersje najczęściej dotyczą wymaganej liczby przebiegów nadpisywania niezbędnych do prawidłowego zniszczenia danych. Niekiedy zwraca się też uwagę na używane wzorce nadpisujące. Wątpliwości te często są podsycane przez materiały marketingowe mające na celu skłonienie użytkowników do wyboru konkretnej metody lub narzędzia niszczenia danych, zazwyczaj przez zdyskredytowanie rozwiązań alternatywnych.
Koncepcje metod mających na celu umożliwienie odzyskiwania nadpisanych danych pojawiły się na przełomie lat '80 i '90 ubiegłego wieku. Wówczas podjęto szereg badań ukierunkowanych przede wszystkim na odtwarzanie poprzedniego stanu namagnesowania warstwy magnetycznej z wykorzystaniem mikroskopii sił magnetycznych, wśród których na szczególną uwagę zasługują prace zespołu kierowanego przez Romla Gomeza. Mniejszą popularnością cieszyły się oscyloskopowe badania sygnału przechwytywanego z bloku głowic magnetycznych. Artykuł Petera Gutmanna jest swego rodzaju podsumowaniem prac przeprowadzonych pod koniec lat '80 i w pierwszej połowie lat '90 XX wieku oraz propozycją rozwiązania pozwalającego rozwiać wątpliwości co do skuteczności nadpisywania danych.
Do fizycznych metod niszczenia danych należą metody:
– mechaniczne (od uderzania młotkiem i rozwiercania po rozdrabnianie nośników specjalnymi zmielarkami),
– termiczne (od wrzucania do ogniska i wygrzewania w piekarniku po przetapianie w piecach hutniczych),
– chemiczne (oddziaływanie na nośnik różnymi środkami chemicznymi),
– demagnetyzacja (oddziaływanie na nośnik polem magnetycznym),
– indukcyjne (wykorzystują różnego rodzaju promieniowanie, np. UV, jonizujące, mikrofalowe),
– pirotechniczne (wykorzystują materiały pirotechniczne i wybuchowe).
Metody programowe, to:
– wyrzucanie plików do kosza systemowego (czyli przeniesienie do specjalnego katalogu, metoda w oczywisty sposób nieskuteczna),
– kasowanie na poziomie metadanych systemu plików (możliwości odzyskania danych zależą od wielu czynników, np. od rodzaju nośnika i działania funkcji TRIM),
– formatowanie partycji (skuteczność zależy od sposobu formatowania, a także od rodzaju nośnika, rozwiązań oprogramowania układowego, obsługi TRIM itd.),
– nadpisywanie (jedno- lub wieloprzebiegowe z zastosowaniem różnego rodzaju wzorców nadpisujących – o tym jest ten artykuł),
– Secure Erase (procedura oczyszczania nośnika implementowana na poziomie oprogramowania układowego),
– Block Erase (procedura kasowania fizycznych bloków implementowana w oprogramowaniu układowym nośników półprzewodnikowych).
W dalszej części skupimy się na skuteczności nadpisywania danych jako metody niszczenia informacji zapisanej na dyskach twardych, gdyż właśnie to zagadnienie stanowi zasadniczą część rozważań zawartych w artykule Petera Gutmanna. Odniosę się do wybranych fragmentów tego artykułu wskazujących na niedostatecznie zrozumienie przez Autora pewnych zagadnień i prowadzących do wyciągnięcia błędnych wniosków. Zwrócę też uwagę na pewne mocno naciągane tezy wykorzystane jako uzasadnienie konieczności wielokrotnego nadpisywania danych dla zapewnienia skuteczności tej metody.
Co Peter Gutmann napisał o...
Bit w zapisie magnetycznym
„... when a one is written to disk the media records a one, and when a zero is written the media records a zero. However the actual effect is closer to obtaining a 0.95 when a zero is overwritten with a one, and a 1.05 when a one is overwritten with a one.”
„... gdy na dysk zapisana jest jedynka, nośnik rejestruje jedynkę, a gdy zapisywane jest zero, nośnik rejestruje zero. Jednakże rzeczywisty efekt jest bliższy uzyskaniu 0,95 w przypadku nadpisania zera jedynką i 1,05 w przypadku nadpisania jedynki jedynką.”
Żeby się odnieść do tego założenia, musimy wiedzieć, co fizycznie jest bitem w zapisie magnetycznym. Jaki stan fizyczny oznacza logiczne zero, a jaki – jedynkę. Aby to zrozumieć, przyjrzyjmy się najpierw sposobowi odczytu z nośników magnetycznych.
Dane z nośników magnetycznych odczytywane są przez głowice unoszące się nad namagnesowaną powierzchnią (w przypadku dysków twardych) lub przesuwające się po niej (w przypadku taśm magnetycznych, dyskietek i niektórych modeli najstarszych, zabytkowych dysków twardych z początkowego okresu funkcjonowania konstrukcji tego typu). Przemieszczająca się pod głowicą namagnesowana powierzchnia indukuje przebieg elektryczny. Impulsy w tym przebiegu indukowane są przez zmienne pole magnetyczne. I to właśnie te impulsy są interpretowane jako logiczne jedynki. Natomiast logicznym zerem jest brak takiego impulsu.
Cóż więc jest obszarem o stałym i zmiennym polu magnetycznym? W każdym ciele wykazującym właściwości magnetyczne możemy wyodrębnić obszary o jednorodnym namagnesowaniu – domeny magnetyczne. Domeny te są od siebie odseparowane ścianami domenowymi – obszarami, w których odwraca się wektor polaryzacji namagnesowania. I to właśnie te ściany są obszarami o zmiennym namagnesowaniu indukującymi impulsy oznaczające logiczne jedynki, a same domeny – obszarami o stałym namagnesowaniu.
Zapis magnetyczny polega na nadawaniu nośnikowi określonego pożądanego uporządkowania namagnesowania powierzchni. W tym procesie domeny mogą odwracać swoją polaryzację, ale także zmieniać swoje rozmiary. Ściany domenowe mogą się przesuwać, zanikać lub mogą powstawać nowe ściany domenowe skutkując wyodrębnieniem nowych domen. Żeby mówić o nadpisaniu logicznej jedynki inną jedynką, po przemagnesowaniu powierzchni ściana domenowa musiałaby się znaleźć dokładnie w tym samym miejscu, w którym w poprzednim namagnesowaniu była inna ściana domenowa. Dlatego w praktyce nie ma możliwości jednoznacznego stwierdzenia, że logiczną jedynką została nadpisana jedynka lub zero.
Poprzednia polaryzacja namagnesowania może mieć wpływ na kształt i szerokość ścian domenowych, a tym samym i na kształt indukowanych przez nie impulsów. Zagadnienie to zostało szczegółowo opisane przez Serhija Kożenewskiego w książce „Перезапись Информации”. Jednak gdybyśmy chcieli odzyskiwać w ten sposób nadpisane dane, to nie poprzednia polaryzacja namagnesowania domen powinna nas interesować, a poprzednie rozmieszczenie ścian domenowych. Wyniki opisanych badań oscyloskopowych nie wskazują, by ustalenie z dostateczną dokładnością rozmieszczenia ścian domenowych w/g stanu sprzed nadpisania było możliwe.
Ponadto nie możemy zapominać i o innych czynnikach wpływających na wysokość amplitud impulsów. W dużym stopniu zależy ona od odległości między ścianami domenowymi. Im bliżej siebie się one znajdują, tym niższe będą indukowane przez nie amplitudy sygnału. Odchylenia zależą też od lokalnych właściwości powierzchni magnetycznej i stanu struktury krystalicznej. Na stan namagnesowania powierzchni oraz parametry odczytywanego sygnału wpływają także zewnętrzne pola magnetyczne oraz wahania temperatury i napięć zasilających dysk twardy.
W przypadku zapisu prostopadłego bardzo istotnym źródłem zakłóceń jest warstwa miękka magnetycznie (SUL – Soft Underlayer) służąca zamknięciu linii pola indukowanego przez głowicę zapisującą. Wprawdzie w czasach, kiedy powstawał artykuł Gutmanna w dyskach twardych wykorzystywano wyłącznie zapis równoległy, jednak współcześnie wszystkie dyski twarde wykorzystują zapis prostopadły Odfiltrowanie wpływu wskazanych wyżej czynników na przebieg sygnału w celu wyizolowania zakłóceń wynikających wyłącznie z poprzedniego stanu namagnesowania jest tym trudniejsze, że część z tych czynników zależy od niemożliwych do wiernego odtworzenia warunków zewnętrznych.
Kodowanie danych w dyskach twardych
Powyższy, ale też i kolejne cytaty z artykułu Petera Gutmanna, wskazują, że może on nie rozumieć procesu kodowania danych w dyskach twardych. W zasadzie z całej jego publikacji można odnieść wrażenie, że dane są zapisywane na dysku w surowej, nieprzetworzonej sekwencji zer i jedynek podawanej na interfejs dysku przez komputer. Jest to o tyle dziwne, że równocześnie sam wspomina o różnych metodach kodowania danych, a nawet stara się dopasować do nich wzorce nadpisujące swojego algorytmu.
W rzeczywistości dane zapisywane na dysku są danymi zakodowanymi, które w ogóle nie przypominają strumienia danych wejściowych. Ponieważ dane na każdym etapie przetwarzania i przechowywania są podatne na błędy i przekłamania, powszechnie stosowane są różnorodne zabezpieczenia w postaci sum kontrolnych i kodów korekcji (ECC – Error Correction Code). Także i w przypadku danych zapisywanych na dysku są one zabezpieczane odpowiednimi kodami korekcji. Szczegółowe rozwiązania ewoluowały w czasie, a także różnią się dla dysków poszczególnych producentów, jednak na nasze potrzeby wystarczająca jest świadomość tego, że takie kody występują oraz że przy zapisie dla zabezpieczenia zawartości są wyliczane i dołączane do każdego sektora dysku.
Dane zapisywane na dysku są także randomizowane. Celem randomizacji jest rozbijanie długich ciągów powtarzalnych symboli. Długie sekwencje takich samych symboli lub powtarzające się sekwencje symboli mogą przyczyniać się do występowania niekorzystnych zjawisk falowych w kanale zapisu i odczytu, jak fale stojące, odbicia fal, czy harmoniczne pasożytnicze. Mogą też powodować interferencje międzysymbolowe (ISI – Inter Symbol Interference) – przesunięcia pomiędzy poszczególnymi symbolami w strumieniu danych. A ponieważ ścieżki zapisywane na powierzchni talerza sąsiadują z innymi ścieżkami, występują pomiędzy nimi zakłócenia indukcyjne zwane interferencjami międzyścieżkowymi (ITI – Inter Track Interference). Randomizacja pozwala na ograniczenie wpływu tych zakłóceń.
Najważniejszym z naszego punktu widzenia etapem kodowania danych jest przygotowanie ich do zapisu na talerzu. Pierwszą metodą kodowania informacji stosowaną w dyskach twardych była metoda FM (od Frequency Modulation – modulacja częstotliwości). Polegała ona na zapisie impulsów sygnału zegarowego i umieszczaniu pomiędzy nimi bitów danych. Jeśli bit miał wartość „1”, pomiędzy impulsami zegarowymi pojawiał się dodatkowy impuls, a jeśli było to logiczne „0” - nie.
Była to metoda mało efektywna, w której bit o wartości „0” był kodowany jedną dłuższą domeną magnetyczną, a „1” - dwiema krótszymi. Z czasem podjęto próbę jej optymalizacji poprzez wprowadzenie metody MFM (Modified Frequency Modulation – modyfikowana modulacja częstotliwości), w której poprawiono gęstość zapisu poprzez ograniczenie liczby impulsów składowej zegarowej. Jednak prawdziwą rewolucję przyniosło kodowanie RLL (Run Lenght Limited), które pozwoliło na całkowitą eliminację składowej zegarowej oraz zwiększenie gęstości upakowania danych do kilku bitów na domenę magnetyczną.
Kodowanie RLL jest kodowaniem samotaktującym. Polega ono na tym, że pomiędzy poszczególnymi impulsami umieszcza się określoną liczbę zer wyliczaną przez układ dekodera na podstawie odległości pomiędzy tymi impulsami. Oznacza to, że jedna domena może kodować kilka bitów, przy czym liczba zer pomiędzy jedynkami zależy od długości domeny. Minimalną i maksymalną liczbę zer, jakie mogą wystąpić pomiędzy jedynkami określa się z uwzględnieniem czynników wpływających na częstotliwość sygnału (możliwe do uzyskania rozmiary stabilnych domen magnetycznych, prędkość obrotowa talerzy itd.), czułości głowic odczytujących oraz możliwości przetwarzania sygnału przez układ dekodera i korekcji błędów przez kody ECC tak, aby zminimalizować wystąpienie błędów odczytu lub rozsynchronizowania sygnału.
Jednocześnie ponieważ między dwoma ścianami domenowymi musi wystąpić domena magnetyczna, przy kodowaniu RLL nie mogą wystąpić kolejno dwie logiczne jedynki – zawsze muszą być one rozdzielone co najmniej jednym zerem. Ponieważ rzeczywiste dane rzadko spełniają ten warunek, muszą one być przeliczone z wykorzystaniem odpowiednich tablic. Dlatego też próba odzyskiwania dosłownie pojedynczych bitów jest niemożliwa, a próby odzyskiwania innych niewielkich porcji danych są utrudnione koniecznością odpowiedniego zaadresowania i zdekodowania tych fragmentów.
Więcej o kodowaniu danych możesz się dowiedzieć z książki twórcy kodu RLL Corneliusa (Keesa) Antoina Schouhammera Imminka „Codes for Mass Data Storage Systems”, a także Bane Vasicia i Erozana M. Kurtasa „Coding and signal processing for magnetic recording systems”. Jeśli chcesz się dowiedzieć więcej o procesie kodowania danych możesz też zainteresować się pracami Charlesa Sobeya w zakresie odzyskiwania danych niezależnie od dysku. Proces badań talerzy magnetycznych i dekodowania danych niezależnie od dysku opisuje również książka Izaaka Mayergoyza i Chuna Tse „Spin-stand Microscopy of Hard Disk Data”.
Minimalna jednostka adresacji
„...when data is written to the medium, the write head sets the polarity of most, but not all, of the magnetic domains. This is partially due to the inability of the writing device to write in exactly the same location each time, and partially due to the variations in media sensitivity and field strength over time and among devices.”
„...kiedy dane są zapisywane na nośniku, głowica zapisująca ustawia polaryzację większości, ale nie wszystkich, domen magnetycznych. Dzieje się tak częściowo ze względu na brak możliwości zachowania precyzji zapisu za każdym razem dokładnie w tym samym miejscu, a częściowo ze zmian w czułości nośnika i natężeniu pola w czasie i pomiędzy urządzeniami.”
Na podstawie tego, co już wiemy na temat kodowania danych, możemy wyciągnąć wniosek, że głowice w czasie pracy nie zapisują poszczególnych domen magnetycznych indywidualnie. Nie byłoby to spójne z systemem kodowania RLL, w którym liczba logicznych zer pomiędzy jedynkami determinowana jest przez odległość między kolejnymi ścianami domenowymi (długość domeny), a więc przy zapisie innych danych długości domen muszą ulegać zmianie.
Poza tym nie ma technicznej możliwości adresowania poszczególnych domen magnetycznych. Część powierzchni talerza jest przeznaczona na informacje niezbędne dla zapewnienia poprawnej pracy dysku. Do tej kategorii należą m. in. sektory serwo pozwalające na prawidłową identyfikację ścieżki oraz kontrolę trajektorii lotu głowicy nad jej środkiem, a także nagłówki sektorów umożliwiających ich poprawne zaadresowanie.
I to właśnie sektory (dawniej liczące 512 B, we współczesnym wariancie „Advanced Format” - 4 kB danych użytkownika) są minimalną jednostką adresowania. Aby się o tym przekonać, możesz zapoznać się ze standardami ATA i SCSI, które zostały opracowane w połowie lat '80 i od tego czasu są podstawowymi dokumentami opisującymi pracę dysków twardych oraz zapewniającymi ich kompatybilność. Wprawdzie standardy te przez dziesięciolecia ulegały ewolucji, ale nigdy nie przewidywały adresowania innych jednostek, niż sektory.
I tak właśnie pracują dyski. Nawet, jeśli chcemy zmienić pojedynczy bit danego sektora, wymaga to odpowiedniego zakodowania całego sektora i sformowania odpowiedniego przebiegu sygnału elektromagnetycznego, który następnie jest zapisywany w odpowiedniej fizycznej lokalizacji. Jeśli chcesz się o tym przekonać w praktyce, utwórz mały plik tekstowy. Odszukaj go i sprawdź w hex-edytorze, jak wygląda jego zawartość. Możesz zera na końcu pliku zmienić na inną zawartość, by sprawdzić, czy zostanie ona zachowana przy edycji pliku. Następnie zmień ten plik w notatniku i sprawdź zawartość sektora w hex-edytorze. Zobaczysz, że pozostałość starej zawartości pliku wykraczająca poza jego nowy rozmiar zostanie zastąpiona zerami. Dlatego twierdzenia o zapisywaniu, odczytywaniu, odzyskiwaniu, czy w ogóle adresowaniu pojedynczych bitów są bzdurą.
Śledzenie ścieżki
„Deviations in the position of the drive head from the original track may leave significant portions of the previous data along the track edge relatively untouched.”
„Odchylenia położenia głowicy dysku od pierwotnej ścieżki mogą pozostawić znaczne części poprzednich danych wzdłuż krawędzi ścieżki stosunkowo nietknięte.”
Stwierdzenie to miało sens w czasach, gdy w dyskach twardych do pozycjonowania bloku głowic magnetycznych jeszcze wykorzystywano silniki krokowe. Silnik krokowy, jak sama nazwa wskazuje, obraca się zawsze o zadany krok lub jego wielokrotność. Nie ma możliwości ustawienia go w położeniach pośrednich. I ta właściwość silników krokowych skutkowała ryzykiem zapisu ścieżki ze stałym przesunięciem względem poprzedniego położenia, chociażby przez brak możliwości kompensacji różnic rozszerzalności temperaturowej poszczególnych podzespołów dysku. To właśnie z tego powodu zalecano przed wykonywaniem formatowania niskopoziomowego uruchomienie dysku na co najmniej pół godziny w celu uzyskania równomiernego nagrzania wszystkich podzespołów.
Proces zastępowania silników krokowych liniowymi rozpoczął się mniej więcej w połowie lat '80 i do czasu opublikowania przez Petera Gutmanna jego artykułu zdążył się zakończyć. Kalok – ostatnia firma produkująca dyski twarde z silnikami krokowymi zbankrutowała w 1994 r. Dwa lata, to wystarczająco dużo, by w publikacji chociaż zauważyć obecność na rynku dysków z pozwalającymi na bezstopniową regulację położenia bloku głowic magnetycznych silnikami liniowymi lub co najmniej wyraźnie zaznaczyć, że cytowane wyżej stwierdzenie odnosi się do dysków z silnikami krokowymi.
Silniki liniowe zbudowane są z cewki umieszczonej pomiędzy dwoma magnesami stałymi. Zmienne pole elektryczne indukowane przez prąd przepływający przez umieszczoną w stałym polu magnetycznym cewkę wywołuje ruch tej cewki względem magnesów. Typowym rozwiązaniem są pozycjonery obracające się wokół osi i przemieszczające głowice nad powierzchnią talerzy po łuku, ale w przeszłości stosowano też rozwiązania oparte o ruch posuwisto – zwrotny cewki. Jednak rozwiązane to było bardziej skomplikowane i zajmowało więcej miejsca wewnątrz obudowy i z tych względów zostało szybko zarzucone.
Zastąpienie silników krokowych liniowymi wymusiło zmiany w podsystemie pozycjonowania głowic i śledzenia ścieżki. Bezstopniowa regulacja położenia głowic otwiera możliwości precyzyjnego prowadzenia głowicy nad środkiem ścieżki, ale też wymaga informacji zwrotnej pozwalającej na kontrolę jej położenia nad talerzem. Służą temu rozmieszczone w równych odstępach na powierzchniach talerzy sektory serwo. Liczba sektorów serwo jest różna w różnych modelach dysków. W wielu przypadkach możesz ją sprawdzić w Wiktorii. Jeśli program wyświetla w paszporcie dysku parametr „Wedges”, to jest właśnie liczba sektorów serwo.
Sektory serwo zawierają szereg informacji pozwalających na zidentyfikowanie numeru odczytywanej ścieżki, kontrolę prędkości obrotowej talerzy, poprawną synchronizację sygnału oraz utrzymywanie trajektorii lotu głowicy nad środkiem ścieżki. Z uwagi na cel artykułu skupimy się na tym ostatnim zagadnieniu. Każdy sektor serwo zawiera pola serwodanych generujących sygnał błędu pozycjonowania (PES – Positioning Error Signal, СОП — Сигнал Ошибки Позиционирования). Sygnał ten pozwala na stwierdzenie, w którą stronę i jak bardzo głowica odchyla się od środka ścieżki.
Procesor sygnałowy na podstawie sygnału błędu pozycjonowania może wydać sterownikowi silnika polecenie doregulowania położenia głowicy. Ponieważ typowo w dyskach twardych liczba sektorów serwo przekracza 100 na ścieżkę, w praktyce nie ma możliwości stabilnego utrzymania lotu głowicy wzdłuż krawędzi ścieżki. Jeżeli dojdzie do odchylenia głowicy od środka ścieżki, mechanizm pozycjonowania będzie dążył do jak najszybszego skorygowania jej położenia. Nawet, jeśli kompensacja napotka jakieś trudności, o wiele prawdopodobniejsza jest sytuacja, kiedy głowica będzie oscylowała w pobliżu środka ścieżki, aniżeli, że będzie leciała wzdłuż jednej z jej krawędzi.
Oczywiście możliwe są sytuacje dokonania zapisu z przesunięciem względem środka ścieżki w taki sposób, że kolejny zapis pozostawi nieuszkodzone fragmenty poprzedniego namagnesowania, ale wraz z rosnącą gęstością zapisu taka sytuacja jest coraz mniej prawdopodobna. Jest też skrajnie nieprawdopodobne, że takie odchylenia doprowadzą do pozostawienia nienaruszonych „znacznych części poprzednich danych”. Jeśli już, będą to co najwyżej niewielkie fragmenty, trudne do zaadresowania i zdekodowania, a także do określenia czasu powstania tych zapisów. Bazując na wskazanych wcześniej w tym artykule informacjach wiemy już, że aby móc w praktyce odkodować dane odzyskiwane z krawędzi ścieżki, musielibyśmy dysponować co najmniej całym spójnym sektorem.
We współczesnych dyskach twardych o bardzo wysokiej gęstości zapisu ryzyko pozostawienia fragmentów starych danych wzdłuż krawędzi ścieżki jest znikome. W dodatku taki sygnał byłby silnie zakłócony oddziaływaniem zapisów na sąsiednich ścieżkach. W przypadku dysków wykorzystujących zapis dachówkowy (SMR – Shingled Magnetic Recording) ryzyko to jest całkowicie eliminowane przez częściowe nadpisywanie poprzednich ścieżek przy zapisie kolejnych. Ponadto stosuje się znacznie bardziej zaawansowane rozwiązania w zakresie pozycjonowania i kontroli położenia głowic, np. wielostopniowe pozycjonery. Tym niemniej nawet w przypadku dysków z pierwszej połowy lat '90 nikomu nie udało się zademonstrować praktycznego przykładu odzyskania nadpisanych danych odczytanych z krawędzi ścieżki.
Zagadnienie serwomechaniki dysków twardych, wyszukiwania i śledzenia ścieżek oraz kontroli prędkości obrotowej silnika jest zbyt obszerne, by je dokładniej tu omówić. Zostało ono opisane w kilku książkach, spośród których warto wskazać:
– „Механика и сервосистема” Serhija Kożenewskiego,
– „Hard Disk Drive Mechatronics and Control” Abdullaha al-Mamuna, Guoxiao Guo i Chao Bi,
– „Hard Disk Drive Servo Systems” Bena M. Chena, Tonga H. Lee, Kemao Penga i Venkatakrishnana Venkataramanana.
Przemagnesowanie warstwy magnetycznej
„When all the above factors are combined it turns out that each track contains an image of everything ever written to it, but that the contribution from each «layer» gets progressively smaller the further back it was made.”
„Kiedy wszystkie powyższe czynniki zostaną połączone, okaże się, że każda ścieżka zawiera obraz wszystkiego, co kiedykolwiek zostało na niej zapisane, ale wkład każdej «warstwy» staje się coraz mniejszy w miarę nadpisywania kolejnych.”
Chyba każdy spotkał się z analogiami nadpisywania danych do zamazywania ołówkiem napisów na kartce. Tak, pierwotne zapisy na kartce papieru są bardzo długo widoczne i nawet jeżeli zostaną dość dokładnie zamazane, wciąż można próbować odczytywać ich fragmenty, czy odgadywać pojedyncze symbole. I zdaje się, że i Peter Gutmann uległ magii tej analogii. Ale czy ona w ogóle ma sens w odniesieniu do zapisu magnetycznego?
Głowice podczas zapisu nie nanoszą żadnych nowych warstw, ale zmieniają uporządkowanie namagnesowania jednej warstwy magnetycznej. Przemagnesowanie nie nakłada nowego zapisu na poprzedni, ale niszczy go ustawiając w inny sposób sekwencję ścian domenowych. A więc jest to działanie znacznie bardziej podobne do chociażby zmiany symboli ułożonych z zapałek przez ich przestawianie, zaś analogia do zamalowywania kredkami zapisów na papierze jest co najmniej nieadekwatna.
Czy jednak faktycznie głowice są w stanie nieodwracalnie zniszczyć poprzedni zapis magnetyczny? Tu musimy zwrócić uwagę na relację wartości pola indukowanego przez głowice do koercji warstwy magnetycznej, czyli wartości pola niezbędnego do jej przemagnesowania. Koercja stopów kobaltowych typowo wykorzystywanych w dyskach twardych wynosi ok. 0,5 T. Natomiast głowice magnetyczne są w stanie indukować pola o wartości powyżej 2 T. Poza tym warstwy magnetyczne są zbyt cienkie (ich grubość jest liczona w dziesiątkach nm), by mogły w nich stabilnie funkcjonować dwie lub więcej warstw domen o różnych polaryzacjach namagnesowania. Dla porównania do zniszczenia danych w procesie demagnetyzacji wystarczające są demagnetyzery (degaussery) indukujące pola o wartości ok. 1 T, pomimo że talerze są ekranowane przez metalowe elementy obudowy.
Warto przy tej okazji zwrócić uwagę na dopiero pojawiające się na rynku dyski z zapisem wspomaganym energetycznie – HAMR (Heat-Assisted Magnetic Recording) i MAMR (Microvave-Assisted Magnetic Recording). Są to dyski wykorzystujące jako warstwę magnetyczną stopy żelazowo – platynowe, których koercja wynosi ok. 6 T. W ich przypadku pole indukowane przez głowice jest wyraźnie za słabe, by przemagnesować warstwę magnetyczną, dlatego zapis musi być wspomagany dodatkowym źródłem energii pozwalającym lokalnie rozgrzać powierzchnię talerzy do temperatury zbliżonej do punktu Curie. Punkt Curie, jest to charakterystyczna dla danego materiału magnetycznego temperatura, w której traci on swoje namagnesowanie, a więc jest dużo łatwiejszy do przemagnesowania. Informacja ta jest istotna dla niszczenia danych przez demagnetyzację, gdyż dyski z zapisem wspomaganym energetycznie będą odporne na działanie popularnych współcześnie demagnetyzerów i do ich niszczenia konieczne jest opracowanie nowych urządzeń.
O jeden most za daleko...
„The general concept behind an overwriting scheme is to flip each magnetic domain on the disk back and forth as much as possible (this is the basic idea behind degaussing) without writing the same pattern twice in a row.”
„Ogólna koncepcja schematu nadpisywania polega na odwracaniu każdej domeny magnetycznej na dysku w tę i z powrotem tak bardzo, jak to możliwe (jest to podstawowa idea demagnetyzacji) bez zapisywania tego samego wzoru dwa razy pod rząd.”
Dlaczego Gutmann miesza tu nadpisywanie danych z demagnetyzacją? Namagnesowanie substancji magnetycznej możemy rozpatrywać w dwóch aspektach. W skali makro ciało będziemy uważać za namagnesowane, jeśli samo będzie indukowało pole magnetyczne. Będzie miało niezerowe namagnesowanie będące wypadkową namagnesowania jego domen magnetycznych. W tym sensie talerze magnetyczne nie są namagnesowane. Można to łatwo sprawdzić obserwując, w jaki sposób talerze zdemontowane z dysku twardego oddziałują z metalami, które powinny reagować na zewnętrzne namagnesowanie.
W skali nano każde ciało magnetyczne jest w jakiś sposób namagnesowane. Jeśli namagnesowanie nie zostanie nadane przez zewnętrzne pole magnetyczne, domeny magnetyczne powstają samorzutnie, a indukowane przez nie pola wzajemnie się znoszą. Zapis magnetyczny polega na takim uporządkowaniu domen magnetycznych, żeby reprezentowały one pożądane przez nas stany logiczne, które możemy interpretować jako określoną informację. Sprawny dysk twardy zawsze ma uporządkowane namagnesowanie, zawsze zawiera jakąś informację i nawet, jeśli na poziomie struktur logicznych uważamy go za pusty, zawsze w hex-edytorze możemy zobaczyć jakieś wartości.
Demagnetyzacja polega na takim oddziaływaniu impulsem elektromagnetycznym, by zniszczyć to uporządkowanie, w konsekwencji czego domeny na talerzu pozostają w stanie namagnesowania chaotycznego. Takie namagnesowanie nie jest możliwe do interpretacji, dlatego z talerzy nie można niczego odczytać, głowice nie mogą odnaleźć sygnału serwo i dysk zostaje zniszczony. Natomiast nadpisywanie polega na zastąpieniu istniejącego uporządkowania namagnesowania innym, wciąż interpretowalnym logicznie, ale reprezentującym bezwartościową informację. Przy czym dla zniszczenia danych nie jest konieczna zmiana polaryzacji każdej domeny magnetycznej. Wystarczy, że domeny magnetyczne zostaną ustawione w inny sposób, niż pierwotnie.
Demagnetyzacja i nadpisywanie, to dwie różne metody niszczenia danych, w których cel jest osiągany innymi środkami. W przypadku demagnetyzacji jest to zewnętrzne urządzenie całkowicie niszczące uporządkowanie namagnesowania, a tym samym niszczące dysk, jako urządzenie. Natomiast nadpisywanie zmienia jedynie uporządkowanie namagnesowania nadpisywanych sektorów pozostawiając nienaruszoną informację strefy serwisowej, sektorów serwo i nagłówków sektorów, a także umożliwiając selektywne niszczenie danych, np. usuwanie wybranych plików.
O drugi most za daleko...
„To erase magnetic media, we need to overwrite it many times with alternating patterns in order to expose it to a magnetic field oscillating fast enough that it does the desired flipping of the magnetic domains in a reasonable amount of time. (…) The best we can do is to use the lowest frequency possible for overwrites, to penetrate as deeply as possible into the recording medium.”
„Żeby wymazać nośnik magnetyczny, musimy go wielokrotnie nadpisywać naprzemiennymi wzorami, aby wystawić go na działanie pola magnetycznego oscylującego na tyle szybko, aby w rozsądnym czasie spowodowało to pożądane odwrócenie domen magnetycznych. (…) Najlepsze, co możemy zrobić, to użyć najniższej możliwej częstotliwości do nadpisywania, aby wniknąć najgłębiej, jak to możliwe w nośnik.”
Jak już wiemy, dla zniszczenia danych w zapisie magnetycznym istotne jest nie tyle odwracanie polaryzacji poszczególnych domen magnetycznych, co przemieszczenie ścian domenowych. Poza tym częstotliwość pola magnetycznego używanego do zapisu danych zależy przede wszystkim od częstotliwości zapisywanego sygnału. Biorąc pod uwagę proces kodowania danych, uzyskanie sygnału o możliwie najniższej lub najwyższej częstotliwości (zawierającego jak najmniejszą lub największą liczbę logicznych jedynek w stosunku do zer) wymagałoby zrozumienia i uwzględnienia wszystkich etapów kodowania.
Sam pomysł najprawdopodobniej pochodzi od metody rozmagnesowywania ciał namagnesowanych w skali makro. Ponieważ bardzo trudno jest oddziaływać na takie ciało polem dokładnie odpowiadającym jego koercji tak, by doprowadzić do jego rozmagnesowania i o wiele bardziej prawdopodobne jest odwrócenie polaryzacji namagnesowania, rozmagnesowanie przeprowadza się operując polem o wysokiej częstotliwości i malejącym natężeniu. W ten sposób przy każdym odwróceniu polaryzacji ciało jest namagnesowane coraz słabiej (remanencja spada od stanu nasycenia do stanu bliskiego zeru). Przy czym w przypadku dysku twardego głowice zapisujące indukują pole magnetyczne na powierzchnię obracającego się pod nimi talerza i czas, w jakim dany obszar może być poddany przemagnesowaniu zależy przede wszystkim od prędkości obrotowej talerza.
Gutmann w swoim artykule z jednej strony często odwołuje się do pewnych elementów kodowania danych, ale z drugiej traktuje to zagadnienie bardzo pobieżnie i wyrywkowo, często naciągając je pod założoną tezę o konieczności wielokrotnego nadpisywania danych dla ich bezpiecznego zniszczenia. W zasadzie ignoruje kluczowe dla kodowania RLL procesy zmian rozmiarów, łączenia i podziałów domen magnetycznych. Za to nadmiernie skupia się na samym procesie odwracania ich polaryzacji. W jego rozważaniach brakuje spójności, co zdążyliśmy już zauważyć i jeszcze zobaczymy w dalszej części. Poza tym, jak już wspomniałem wyżej, warstwa magnetyczna jest zbyt cienka, by nie została przemagnesowana do nasycenia już przy pierwszym przebiegu. Dotyczy to zwłaszcza zapisu prostopadłego, w którym wektor polaryzacji namagnesowania jest prostopadły do powierzchni talerza, a więc same domeny są ustawione w warstwie magnetycznej pionowo.
Kody korekcji ECC
„Therefore even if some data is reliably erased, it may be possible to recover it using the built-in error-correction capabilities of the drive. ”
„Dlatego nawet jeśli niektóre dane zostaną niezawodnie usunięte, możliwe będzie ich odzyskanie przy użyciu wbudowanych funkcji korekcji błędów dysku.”
Oto i kolejny przykład nadmiernie swobodnego podejścia Petera Gutmanna do zagadnienia kodowania danych. Powyższe zdanie sugeruje możliwość usunięcia zawartości sektora przy jednoczesnym pozostawieniu związanych z nim kodów korekcji. Nie jest to możliwe, gdyż kody korekcji są wyliczane na etapie kodowania danych i dodawane do sektora jeszcze przed sformowaniem przebiegu sygnału, jaki zostanie zaindukowany przez głowicę zapisującą i zapisany na talerzu. Nadpisując sektor inną zawartością nadpiszemy i kody korekcji związane z pierwotnymi danymi.
W starszych modelach dysków istniała możliwość celowego wygenerowania błędnych sum kontrolnych i zapisania sektora z kodami korekcji niezgodnymi z danymi użytkownika. Wprawdzie takie sektory nie dają się poprawnie odczytać i przy próbie ich odczytu dysk zwraca błąd UNC, ale same kody korekcji związane z poprzednią zawartością sektora są niszczone i zastępowane nowymi. Możliwość ta jest realizowana np. w programie MHDD przez polecenia „MAKEBAD” - tworzące „uszkodzony” sektor we wskazanym adresie LBA lub „RANDOMBAD” - tworzące „uszkodzone” sektory w losowych lokalizacjach.
Ponadto Gutmann ewidentnie przecenia możliwości korekcyjne kodów ECC. Wprawdzie kody korekcji pozwalają na lokalizację i korekcję błędów bitowych, ale dotyczy to ograniczonej liczby błędów występujących w istniejących i odczytywalnych sektorach. Typowo kody korekcji pozwalają na skorygowanie ok. 200 błędów bitowych na sektor, a jeśli liczba błędów przekracza możliwości kodu, dysk wystawia błąd UNC. To stanowczo za mało, żeby podjąć próbę rekonstrukcji zawartości nieistniejącego sektora wyłącznie na podstawie jego kodów korekcji. Przy tym musimy pamiętać, że błędy bitowe mogą wystąpić i w samym kodzie korekcji.
Konkluzja
„Data which is overwritten an arbitrarily large number of times can still be recovered provided that the new data isn't written to the same location as the original data...”
„Dane, które zostały nadpisane dowolną liczbę razy, można nadal odzyskać, pod warunkiem, że nowe dane nie zostaną zapisane w tej samej lokalizacji, co dane oryginalne...”
W tym zdaniu Gutmann ewidentnie sam sobie zaprzecza. Zakłada, że dane nadpisane dowolną liczbę razy wciąż można odzyskać, pod warunkiem, że w tej samej lokalizacji nie zostaną zapisane nowe dane. Ale przecież istotą nadpisywania jest zapisywanie nowych danych w miejscu tych, które chcemy zniszczyć. Nawet, jeśli tymi nowymi danymi jest wybrany nieinterpretowalny na poziomie logicznym wzorzec nadpisujący. Bo dla dysku jest to taki sam strumień danych, jak każdy inny. I byłoby bardzo dziwne, gdyby Peter Gutmann tego nie rozumiał. Z drugiej strony to zdanie wprost podważa sens wielokrotnego nadpisywania i potwierdza, że już pierwszy przebieg nadpisywania niszczy dane.
PRML – Partial Response – Maximum Likelihood
„The article states that «The encoding of hard disks is provided using PRML and EPRML», but at the time the Usenix article was written MFM and RLL was the standard hard drive encoding technique…”
„W artykule stwierdza się, że «Kodowanie dysków twardych odbywa się przy użyciu PRML i EPRML», ale w czasie, gdy pisano artykuł Usenix, standardową techniką kodowania dysków twardych były MFM i RLL...”
W epilogu Peter Gutmann odnosi się do artykułu Craigha Wrighta, Dave Kleimana i Ramajadama Srinivasana Shyaama Sundhara „Overwriting Hard Drive Data: The Great Wiping Controversy" z 2008 r. Autorzy tej publikacji zweryfikowali praktycznie założenia przedstawione przez Gutmanna i wykazali brak możliwości odzyskiwania nadpisanych danych w drodze analizy mikromagnetycznej powierzchni talerza w celu poszukiwania śladów poprzedniego namagnesowania. Wprawdzie i autorzy tej publikacji dość luźno podeszli do zagadnienia kodowania danych, ale w tym miejscu zajmujemy się przede wszystkim algorytmem Gutmanna i opisującym go artykułem.
Peter Gutmann wskazuje, że badania Wrighta, Kleimana i Shyaama Sundhara są nieadekwatne i nie powinny kwestionować jego ustaleń, gdyż w dyskach, które badali, wykorzystano PRML, podczas gdy w czasach, kiedy on pisał swój artykuł standardowymi metodami kodowania danych były MFM i RLL. Jest to zarzut o tyle nietrafiony, że PRML nie jest techniką kodowania danych i nie zastępuje ani MFM ani RLL, ale jest wykorzystywany w detekcji i dekodowaniu sygnału zastępując starszą metodę wykrywania szczytów impulsów peak-detection. Jest to metoda stosowana od początku lat '90 i w związku z tym nie powinna być Gutmannowi obca w 1996 r. Natomiast metoda kodowania MFM była wypierana z dysków twardych już w połowie lat '80 i w połowie lat '90 była stosowana wyłącznie w dyskietkach.
W pierwszych dekadach dysków twardych gęstość zapisu była niewielka, domeny były dość dużych rozmiarów, a więc ściany domenowe leżały w relatywnie dużych odstępach Wówczas dawały one w odczytywanym przez głowice sygnale wyraźne impulsy o wysokich amplitudach i łatwych do wykrycia szczytach. Rosnąca gęstość zapisu powodowała pogorszenie stosunku sygnału do szumu, natomiast wprowadzenie kodowania RLL wyeliminowało składową zegarową, co zwiększyło ryzyko rozsynchronizowania sygnału oraz obliczenia przez układ dekodera niewłaściwej liczby zer pomiędzy kolejnymi jedynkami. Wówczas metoda detekcji szczytów okazała się niewystarczająca i zastąpiono ją metodą PRML.
PRML (Partial Response – Maximum Likelihood) jest metodą pozwalającą na określenie maksymalnego prawdopodobieństwa przebiegu odczytywanego sygnału przy częściowej odpowiedzi. Metoda ta nie skupia się na wychwytywaniu kolejnych szczytów impulsów, ale analizuje cały przebieg sygnału i dąży do określenia najbardziej prawdopodobnego rozmieszczenia impulsów. PRML, w odróżnieniu od detekcji szczytów, nie posługuje się progowymi wartościami odniesienia, ale analizuje kształt i wysokość amplitud wszystkich impulsów i na tej podstawie określa, które z nich pochodzą od zapisanego sygnału, a które od zakłóceń tła. Wykorzystywana jest przy tym znajomość metody kodowania danych przy zapisie, co pozwala na odrzucenie niezgodnych z nią wariantów przebiegu sygnału, np. zawierających mniejszą lub większą liczbę zer pomiędzy dwiema jedynkami od dopuszczalnej dla danej wersji kodu RLL.
Kwestionowanie przez Gutmanna na tej podstawie wyników Wrighta, Kleimana i Shyaama Sundhara dowodzi jedynie, że i po roku 2008 był on na bakier z rozwiązaniami w zakresie kodowania danych i przetwarzania sygnałów w dyskach twardych. Sugestia, że PRML zastępuje kodowanie RLL jest takim samym błędem, jak np. twierdzenie, że zapis SMR zastąpił zapis prostopadły. Po opublikowaniu artykułu Wrighta, Kleimana i Shyaama Sundhara zainteresowanie badaniami w kierunku odzyskiwania nadpisanych danych z wykorzystaniem mikroskopii sił magnetycznych w zasadzie zanikło. Podobnie w przypadku badań oscyloskopowych przebiegu sygnału przechwytywanego bezpośrednio z głowic prace Kożenewskiego nie dały dostatecznych podstaw, by dawać uzasadnione nadzieje na możliwość wykorzystania ich w praktycznym odzyskiwaniu nadpisanych danych.
Nie znaczy to jednak, że nadpisywanie danych jest wolne od ryzyk i zagrożeń. Zawsze możliwe są błędy użytkownika, niekontrolowane przerwy w przebiegu procesu, awarie urządzeń i oprogramowania, czy celowe działania mające na celu udaremnienie skutecznego zniszczenia danych. Istnieją także ryzyka związane z możliwością przypadkowego znalezienia się danych lub ich celowego ukrycia poza adresacją LBA.
Dane mogą się znaleźć w obszarach ukrytych poza adresacją LBA za pomocą funkcji HPA lub DCO. W przypadku dysków SMR poza adresacją LBA w niekontrolowany sposób mogą przetrwać zdezaktualizowane dane, a ich lokalizacja i niezawodne nadpisanie wymaga analizy i zrozumienia podsystemu translacji adresacji LBA na fizyczną. W każdym dysku występują też sektory, które nie dostały adresu LBA. Są to np. sektory rezerwowe, albo sektory fizyczne pod koniec dysku, których jest więcej, niż potrzeba do uzyskania jego nominalnej pojemności. Takie sektory mogą być wykorzystane do celowego ukrycia danych, ale zarówno ich ukrycie, jak i późniejsze odczytanie wymaga odpowiedniej znajomości oprogramowania układowego dysku i umiejętności pracy w adresacji fizycznej.
Jednak przed żadnym z powyższych ryzyk nie chroni wielokrotne nadpisywanie. Poprawa bezpieczeństwa procesu nadpisywania danych powinna zmierzać przede wszystkim w kierunku analizy podsystemu translacji adresów logicznych (LBA) na adresy fizyczne oraz dążyć do nadpisywania danych w adresacji fizycznej. Dlatego jeśli nie zależy nam na selektywnym usunięciu wybranych plików, a chcemy zniszczyć całą zawartość dysku, lepiej wybrać procedurę Secure Erase, która pracuje bliżej sprzętu niż programy operujące w adresacji LBA. Dane są bezpowrotnie niszczone już w pierwszym przebiegu nadpisywania. Każdy kolejny jest jedynie zbędnym kosztem i stratą czasu, a to chyba wystarczający powód, by w końcu wyrzucić algorytm Gutmanna do kosza.
Literatura uzupełniająca:
1. C. Wright, D. Kleiman, R. S. Shyaam Sundhar: Overwriting Hard Drive Data: The Great Wiping Controversy.
2. R. Gomez, A. Adly, I. Mayergoyz, E. Burke: Magnetic Force Scanning Tunnelling Microscope Imaging of Overwritten Data,
3. R. Gomez, E. Burke, A. Adly, I. Mayergoyz, J. Gorczyca: Microscopic Investigations of Overwritten Data,
4. I. D. Mayergoyz, C. Tse: Spin-stand Microscopy of Hard Disk Data,
5. С. Р. Коженевський: Перезапись информации.
6. B. M. Chen, T. H. Lee, K. Peng, V. Venkataramanan: Hard Disk Drive Servo Systems,
7. A. al-Mamun, G. X. Guo, Ch. Bi: Hard Disk Drive Mechatronics and Control,
8. С. Р. Коженевський: Механика и сервосистема,
9. K. A. Schouhamer Immink: Codes for Mass Data Storage Systems,
10. B. Vasić, E. M. Kurtas: Coding and signal processing for magnetic recording systems.
Fajne? Ranking DIY
