Chciałbym wiedzieć, jak usunąć dysk flash USB za pośrednictwem terminala, jeśli to możliwe, aby nie można było odzyskać danych.
Chciałbym wiedzieć, jak usunąć dysk flash USB za pośrednictwem terminala, jeśli to możliwe, aby nie można było odzyskać danych.
Odpowiedzi:
TL / DR: Upewnij się, że masz prawidłową nazwę urządzenia, upewnij się, że nie jest zamontowany, i wykonaj tyle losowych nadpisań, ile możesz sobie pozwolić. Możesz śledzić to za pomocą polecenia wymazywania przeznaczonego dla sprzętu flash, jeśli masz dość niedawną dystrybucję. W tych kontrolach zawsze używaj napędu (jak / dev / sd h ), a nie nazwy partycji (która byłaby / dev / sd h1 )
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
Teoretycznie nadpisywanie zerem dd
jest w porządku. Jednak ze względu na to, jak zbudowane są elementy wewnętrzne dysku flash, jeśli użyjesz jednego przebiegu zastępowania, może być ukrytych kilka warstw danych za rzeczywistymi blokami, które nadal przechowują resztki informacji.
Zazwyczaj część pamięci flash jest uszkodzona i jest oznaczona podczas produkcji. Istnieją również inne bity, które mogą się nie udać (stają się niezmienne, nie do ustawienia lub nie można ich wyczyścić), te części również muszą zostać oznaczone jako wadliwe w trakcie życia. Informacje te są przechowywane w zarezerwowanym miejscu, na tych samych układach co dane. Jest to jeden z kilku powodów, dla których pendrive 4 GB nie wykazuje pojemności 2 ^ 32 bajtów.
Pamięć flash jest również wewnętrznie zorganizowana w większe bloki, czasem znacznie większe niż systemy plików działające na dysku. Typowy rozmiar bloku systemu plików to 4KB, a segmenty pamięci flash, które można usunąć za jednym razem, mogą wynosić od 64 KB do nawet kilku megabajtów. Te duże bloki można usunąć tylko w całości, co resetuje wszystkie bloki do znanego stanu (wszystkie 1 lub wszystkie 0). Następnie zapis danych może zmienić dowolny bit (w razie potrzeby zmień domyślne zera na 0 lub zmień domyślne zera na 1), ale tylko raz . Aby zmienić dowolny bit z powrotem na domyślny, wszystkie segmenty muszą zostać ponownie usunięte!
Tak więc, jeśli chcesz zmienić blok 4KB (system plików jest proszony o zmianę pojedynczego znaku w środku pliku), kontroler flash musiałby odczytać i buforować wszystkie 64 KB starych danych, usunąć je i odpisz nową zawartość. Byłoby to bardzo wolne, usuwanie segmentów jest najwolniejszą operacją. Ponadto segment można usunąć tylko w ograniczonym czasie (typowe są dziesiątki tysięcy), więc jeśli wprowadzisz zbyt wiele zmian w jednym pliku, może to szybko pogorszyć dysk.
Ale nie tak to się robi. Inteligentne kontrolery flash po prostu zapisują nowe dane 4KB w innym miejscu i robią notatkę, aby przekierować odczyty do tej 4KB danych w środku starego bloku. Potrzebują więcej miejsca, abyśmy nie mogli przechowywać tych informacji o przekierowaniach. Próbują również upewnić się, że przechodzą przez wszystkie dostępne segmenty w celu przechowywania danych, co nazywa się wyrównywaniem zużycia .
Oznacza to, że zwykle gdzieś na dysku są wciąż stare dane ! Jeśli właśnie wyczyściłeś wszystkie dostępne bloki, wszystkie ukryte bloki nadal przechowują całkiem nową wersję danych. To, czy jest to dostępne dla osoby atakującej, przed którą chcesz chronić swoje dane, to inna kwestia.
Jeśli masz dość niedawną dystrybucję, a dysk USB jest zaprogramowany tak, aby ujawniał, że jest to dysk flash, blkdiscard
możesz skorzystać z TRIM
operacji leżącej u podstaw , czyli usuwania segmentów, o którym mówiliśmy powyżej. Ma również dodatkową flagę, aby upewnić się, że nawet niewidoczne ukryte dane są całkowicie usuwane przez sprzęt:
# blkdiscard -s /dev/myusbdevice
-s, --secure Dokonaj bezpiecznego odrzucenia. Bezpieczne odrzucanie jest takie samo jak zwykłe odrzucanie, z tą różnicą, że wszystkie kopie odrzuconych bloków, które prawdopodobnie zostały utworzone przez odśmiecanie, również muszą zostać usunięte. Wymaga to wsparcia ze strony urządzenia.
To niekoniecznie zadziała, jak wykazałem powyżej. Jeśli tak Operation not supported
, twoje jądro, narzędzia lub układ bramki USB (który pozwala kontrolerowi flash wyglądać jak dysk przez USB) nie obsługuje przekazywania TRIM
poleceń. (Kontroler flash musi nadal być w stanie samodzielnie usuwać segmenty). Jeśli jest obsługiwany przez dostawcę dysku, jest to najbezpieczniejszy sposób.
Innym, mniej bezpiecznym sposobem upewnienia się, że pozwalasz, aby mniej starych danych pozostało gdzieś w pobliżu, jest ich kilkakrotne zastąpienie, jeśli to możliwe, losowymi wartościami.
Dlaczego losowo, pytasz? Wyobraź sobie, że napęd USB stał się zbyt inteligentny i wykrył, że chcesz wyczyścić sektor, i po prostu wprowadził zmianę w mapie bitowej, że ten sektor jest teraz wolny i będzie musiał zostać wyczyszczony później. Ponieważ oznacza to, że może przyspieszyć zapis zer, więc sprawia, że pendrive wydaje się bardziej wydajny, prawda? Trudno powiedzieć, czy dysk to robi.
W najbardziej skrajnym przypadku dysk mógł po prostu zapamiętać, ile wyczyściłeś od początku, a wszystko, co musi przechowywać, to około 4 bajtów informacji, aby to zrobić, i nie usuwaj niczego z danych, które chcesz zniknąć. Wszystko po to, aby mogło wyglądać bardzo szybko.
Jeśli nadpisujesz dane losowymi, nieprzewidywalnymi wartościami, te optymalizacje są niemożliwe. Dlatego dysk musi się upewnić, że dane zostaną zapisane w pamięci flash. Ale nadal nie będziesz w stanie wykluczyć, że niektóre z wcześniej używanych sektorów nadal zawierają niektóre twoje stare dane, ale dysk po prostu nie uznał za ważne, aby je usunąć, ponieważ nie jest normalnie dostępny. Tylko faktyczne TRIM
polecenie może to zagwarantować.
Aby zautomatyzować nadpisywanie losowymi wartościami, możesz rozważyć użycie shred
, takich jak:
# shred -vzn88 /dev/myusbdrive
Zastosowane opcje:
Jeśli to możliwe, użyj obu, blkdiscard
a shred
jeśli blkdiscard -s
jest obsługiwany przez dysk, jest to optymalne rozwiązanie, ale nie może zaszkodzić zrobić shred
wcześniej, aby wykluczyć błędy oprogramowania układowego.
Aha, i zawsze dwukrotnie sprawdź urządzenie, które próbujesz wyczyścić! dmesg może pomóc zobaczyć, co było ostatnio wstawionym urządzeniem, a także warto sprawdzić nazwę urządzenia, którą zamierzasz wyczyścić ls -al
, nawet dla numerów węzłów urządzeń, i dane blkid
wyjściowe, aby zobaczyć, jakie partycje mogą być dostępne, których NIE chcę wyczyścić.
Nigdy nie używaj tych poleceń na wewnętrznym dysku, z którego chcesz nadal korzystać - blkdiscard
działa tylko na dyskach półprzewodnikowych, ale nie warto próbować tracić danych!
Mogą istnieć inne sposoby bezpiecznego usuwania danych w miarę postępu technologii.
Innym wspomnianym sposobem jest SECURITY ERASE
polecenie ATA, które można wydać za pomocą hdparm
poleceń. Z mojego doświadczenia wynika, że tak naprawdę nie jest obsługiwany na dyskach flash. Został zaprojektowany z myślą o dyskach twardych dla przedsiębiorstw, a funkcja nie zawsze jest wdrażana w urządzeniach pamięci masowej o najniższych kosztach.
Operacja TRIM
/ DISCARD
jest znacznie nowsza niż SECURITY ERASE
polecenie i została stworzona w odpowiedzi na funkcje flash, więc ma znacznie większą szansę na implementację, nawet w tanich dyskach USB, ale wciąż nie jest wszechobecna. Jeśli chcesz skasować kartę SD / micro SD w kluczu USB i blkdiscard
zgłasza, że nie jest obsługiwana, możesz spróbować użyć innego klucza / czytnika kart i / lub zrobić to na maszynie z bezpośrednim gniazdem SD / MMC .
blkdiscard
jest w Debian Jessie i tylko w dwóch ostatnich wersjach Ubuntu, ale nie w Ubuntu LTS 14.04. blkdiscard
został dodany do pakietu w util-linux
wersji 2.23.
blkdiscard
porównaniu z hdparm
rozwiązaniem w innym komentarzu @zhenech (konkretnie link: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
Zdaję sobie sprawę, że tak naprawdę nie jest to odpowiedź na twoje pytanie, ale najprostszym sposobem jest fizyczne zniszczenie napędu (rozbijanie go kilkakrotnie młotkiem zwykle wystarcza, ale rozdrabnianie przemysłowe lub spalanie są również opcjami). Jeśli martwisz się wystarczająco o bezpieczeństwo, aby mieć pewność, że danych nie da się odzyskać, wartość tych danych jest prawdopodobnie wielokrotnie większa niż koszt samego dysku, a metoda fizyczna jest tania i niezawodna.
Prawie wszystkie dostępne funkcje bezpiecznego usuwania zostały zaprojektowane do wirowania nośników magnetycznych, w których komputer zazwyczaj może określić fizyczną lokalizację [1] bloków użytych w pliku i zapisać je na tych samych blokach. Półprzewodnikowe układy kontrolujące pamięć masową wyodrębniają fizyczną lokalizację danych z systemu i lubią je przenosić.
Twoje pytanie naprawdę zależy od tego, kto będzie śledził twoje dane. Jeśli obawiasz się przypadkowej utraty lub przypadkowej kradzieży, zwykły format będzie w porządku. Jeśli obawiasz się, że zostaniesz zaatakowany przez wysoce zmotywowanego, kompetentnego technicznie użytkownika dysponującego znacznymi zasobami [2], po prostu spopiel dysk i wydaj 10 USD na nowy.
tak, istnieje logiczne mapowanie bloków. Ale blok logiczny A zawsze będzie mapowany na blok fizyczny B.
osoba ta otworzy dysk, wyciągnie układ pamięci z karty i odczyta pamięć flash bezpośrednio, omijając kontroler
Najprostszym i najszybszym sposobem jaki znam jest zapisywanie zer (0) na całym dysku:
dd if=/dev/zero of=/dev/sdX
gdzie /dev/sdX
jest węzeł urządzenia twojej pendrive'a.
Niektórzy sugerują dokładniejszy proces z większą liczbą iteracji i innych wzorców. Dostępne są do tego specjalne narzędzia. Pakiet coreutils GNU zawiera shred
polecenie przeznaczone specjalnie do tego celu. Wiele osób również korzysta badblocks -w
z tego pakietu, który jest częścią pakietu e2fsprogs. W FreeBSD shred
narzędzie jest wywoływane gshred
i powinno być dostępne w portach /usr/ports/sysutils/coreutils
lub /usr/ports/sysutils/fileutils
.
Powinno to być w stanie bezpiecznie wyczyścić dysk flash, jeśli planujesz go ponownie użyć: http://linux.die.net/man/1/scrub Jeśli nie, to stop go ...