Nośniki flash

Pamięci flash są z nami od lat jednak w chwili obecnej ich rozwój nabrał pełnego rozpędu i powoli zaczynają wypierać dyski magnetyczne.

Pamięć flash używana jest w kartach pamięci, kluczach USB, dyskach SSD, w telefonach oraz wielu innych urządzeniach.

Głównymi zaletami pamięci flash są:

  • Małe gabaryty
  • Brak elementów mechanicznych co z kolei daje nam:
    • Odporność na wstrząsy,
    • Wielozadaniowość operacji odczytu i zapisu
  • Duże maksymalne prędkości

Pamięć flash jest pamięcią EEPROM. Akronim ten oznacza Electonically Erasable Programmable Read Only Memory i ma duże znaczenie dla zrozumienia jej właściwości i zasad działania. Jest to mianowicie technicznie rzecz biorąc pamięć ROM czyli tylko do odczytu, jednak  z funkcją elektronicznego wymazywania danych i zapisu nowych. Nie brzmi to zbyt sensownie, ale w pamięci do odczytu i zapisu, takiej jak RAM lub dysk magnetyczny możemy nadpisywać stare dane nowymi, natomiast w pamięci flash nie. Potrzebna jest do tego dodatkowa procedura wymazywania, o której niżej.

Pamięci flash z kolei mogą być wykonywane w technologii NAND lub NOR. Podstawową różnicą jest rodzaj bramki logicznej używanej przy budowie komórek pamięci. W pamięci NAND używa się bramki NAND a w pamięci NOR zaś… NOR.

W praktyce większość pamięci spotykanych na rynku to pamięci NAND. Nie jest to dużą niespodzianką gdyż pamięci NOR są generalnie droższe, wolniejsze i o mniejszej pojemności. Główną ich zaletą jest metoda odczytu tych pamięci. Jest ona taka sama jak w pamięci RAM, czyli oparta jest na random access (każdy bajt może być odczytany indywidualnie). Dzięki temu może być ona używana w technologii XIP (execute in place), gdzie program jest uruchomiany bezpośrednio w pamięci NOR, z pominięciem RAM-u. Dzięki temu pamięć tego typu znajduje zastosowanie w urządzeniach mobilnych, w szczególności w telefonach i w technologiach Internet of Things.

Skupmy się teraz na pamięciach NAND bo to z nimi najczęściej spotkamy się w podczas śledztw w digital forensics.

Cechy charakterystyczne pamięci NAND:

  • Zapisywane dane grupowane są na stronach (pages) i blokach (blocks)
  • Wspiera tylko dwa rodzaje operacji:
    • Zapisywanie zer (na poziomie całej strony)
    • Wymazywanie, czyli nadpisanie jedynkami całego bloku
  • Komórka pamięci może być wymazana tylko określoną ilość razy. W zależności od modelu ale zwykle od 10.000 do 1.000.000 razy.

Strony i bloki. Strona to odpowiednik sektora na dysku magnetycznym, choć nie do końca. Strona zwykle ma 512, 2048 lub 4096 bajtów. Poza obszarem danych w skład strony wchodzą dane kontrolne. W przypadku strony o wielkości 512 danych, dane kontrolne zawierają 16 bajtów. W przypadku zaś większych stron 16 bajtów na każde 512 bajtów wielkości, czyli przy stronie 2048 – 64 bajty. Strony z kolei łączone są w bloki, zwykle po 32, 64 lub 128 stron. O wielkości stron i bloków decyduje producent pamięci i ustawienia te są niedostępne i niewidoczne dla użytkownika.

Dwa rodzaje operacji. Pamięci NAND potrafią zapisywać tylko zera i tylko na poziomie całej strony. Działają one podobnie do pieczątki. Kartkę mamy białą (wypełnioną jedynkami) i przykładamy do niej pieczątkę w której tusz reprezentuje zera. Do tego momentu wszystko wydaje się proste. Co jednak, jeżeli będziemy chcieli zmodyfikować stronę? Jeżeli modyfikacja będzie polegała na dodaniu więcej zer na stronie, to wszystko w porządku – coś w rodzaju przyłożenie pieczątki w dokładnie w tym samym miejscu jednak z dodatkową literą. Co jednak jeżeli chcemy usunąć literę? Tego już pamięć NAND nie da razy zrobić. Zmodyfikowana pieczątka zostanie przyłożona w innym “wyjedynkwanym” miejscu, a poprzednia strona zostanie zapomniana i zakolejkowana do wymazania. Wymazywanie z kolei działa na poziomie bloku. Jeżeli wszystkie strony w bloku zostały zakolejkowane do wymazania, zostanie on jak łatwo się domyślić wymazany czyli wszystkie bity zostają zastąpione jedynkami.

Limit wymazań. Jak wyżej wskazałem komórka pamięci może być wymazana od 10.000 do 1,000,000 razy a potem ginie. Limit ten jest związany z rodzajem komórek użytych przez producenta. W dyskach typu enterprise limit jest zwykle wyższy niż w dyskach konsumenckich.

Poniżej przedstawiam kilka dodatkowych koncepcji związanych z pamięciami Flash z którymi nierzadko spotkamy się w informatyce śledczej.

File Translation Layer (FTL)

Pamięć flash organizuje jednostki pamięci w strony i bloki, które warto dodać, grupowane są dynamicznie i w niesekwencyjny sposób. Komputery z kolei mają wprawę w rozumieniu urządzeń blokowych, gdzie wszystkie bloki/sektory znajdują się jeden za drugim i mogą być odczytywane i zapisywane bezpośrednio, bez potrzeby wymazywania danych. Z tego powodu pamięci flash posiadają element firmware’u zwany File Translation Layer, który jest interfejsem pomiędzy systemem operacyjnym a komórkami pamięci. Dzięki niemu system operacyjny widzi pamięć Flash jako urządzenie blokowe i wszystkie poniżej i powyżej opisane operacje są dla niego transparentne.

Overprovisioning

Komórki pamięci Flash nie są trwałe i mogą z czasem ulegać zużyciu. Z tego względu pamięć taka zwykle zawiera dodatkowy zapas pamięci, niewidoczny z punktu widzenia użytkownika. Jeżeli firmwar’e wykryje że żywotność strony się kończy, zostanie ona zastąpiona zupełnie nową z tej właśnie puli. Jeżeli pamięć overprovisioning zostanie wyczerpana, pamięć flash umiera.

Wear levelling

Jak wiemy każda strona ma swój limit wymazania. Aby uniknąć sytuacji kiedy niektóre strony osiągają swój limit, kiedy inne leżą nieużyte, pamięć flash kontroluje ile razy dana strona została zapisana/wymazana i stara się rozkładać te operacje po równo między wszystkim stronami.

Garbage collection

Operacja wymazania przeprowadzana jest na blokach, a nie na stronach. Zwykle pamięć flash musiałaby czekać aż wszystkie strony w bloku gotowe są do wymazania. Strony mogą by jednak grupowane w bloki w dynamiczny sposób. Wszystkie strony gotowe do wymazania, bedą zgrupowane w “brudnych” blokach i z kolei wymazane. Ten proces zwany właśnie garbage collection zostaje uruchomiony kiedykolwiek firmware uzna, że jest na to czas. Jest to proces niewidoczny dla systemu operacyjnego dzięki File Translation Layer.

Trim command

Pamięć flash nie rozumie systemu plików. Nie wie kiedy plik został usunięty, a musi przecież wymazać jego dane, żeby przygotować strony pod następny zapis. Do tego celu służy komenda TRIM. System operacyjny wysyła komendę TRIM do pamięci wskazującą, które sektory mogą być wyzerowane po usunięciu pliku. Komenda ta zostanie wykonana, kiedy firmware uzna, że jest na to wystarczająco czasu. W przypadku dysków SSD jest to często natychmiast.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *