Bezpiecznie usuń pliki w systemie plików btrfs


22

Czasami trzeba usunąć plik w systemie plików i upewnić się, że plik naprawdę zniknął. Na przykład plik zawierający wrażliwe hasła powinien zostać dokładnie wyczyszczony z dysku.

Wydanie prostego rmw typowym systemie plików usuwa i-węzeł („wskaźnik”) do pliku, ale nie usuwa zawartości pliku na dysku fizycznym - są one tam, dopóki nie zostaną zastąpione, gdy system plików potrzebuje wolnego miejsca.

W wielu systemach plików program niszczenia umożliwia takie bezpieczne usuwanie. Jednak w systemie plików CoW, takim jak btrfs, takie podejście jest bezużyteczne . Problem pogarsza fakt, że plik może być obecny na migawkach woluminów.

Czy istnieje sposób na bezpieczne usunięcie pliku w systemie plików btrfs? Czy wystarczy usunąć wszystkie wskaźniki (na wszystkich woluminach) i wypełnić wolne miejsce zerami ?


2
Dobre pytanie, nie myślałem o tym wcześniej. Jednym ze sposobów obejścia tego problemu jest szyfrowanie takich plików. Możesz także zaszyfrować cały dysk, ale jeśli osoba atakująca uzyska dostęp do roota do działającego systemu, to ci nie pomoże ...
mreithub 24.01.2013

@mreithub Rzeczywiście, szyfrowanie takich plików jest zawsze dobrym pomysłem, podobnie jak FDE. Nie może jednak uwzględniać wszystkich przypadków użycia (na przykład system osadzony - choć można się spierać, czy taki system i tak btrfs będzie działał ...). Pytam o to, ponieważ zapomniałem ustawić szyfrowanie przed skopiowaniem poufnych plików, ale chciałbym uniknąć wymazania całej partycji
goncalopp 24.01.2013

Odpowiedzi:


9

Bezpieczne usuwanie to trudna propozycja dla dowolnego systemu plików. O ile system plików nie jest bardzo specyficzny i nie gwarantuje, że nie ma innych kopii pliku, musisz wyczyścić całe wolne miejsce na urządzeniu. Podczas gdy istnieje większe prawdopodobieństwo, że znajdziesz wiele bitów pliku w systemach plików kopiowania przy zapisie, nawet bardziej „statyczne” systemy plików nie mają tej gwarancji w praktyce, ponieważ wiele plików jest edytowanych, więc jest trochę z poprzednich wersji leżący plik.

Zauważ, że kasowanie zerami jest tak samo dobre jak kasowanie losowych bajtów i nie potrzebujesz wielu przejść. Kasowanie zerami pozostawia resztkowe dane, które można częściowo odzyskać w warunkach laboratoryjnych za pomocą technologii dysków twardych z lat osiemdziesiątych; obecnie nie ma to zastosowania. Zobacz, dlaczego wielokrotne pisanie zer (lub danych losowych) na dysku twardym jest lepsze niż jednorazowe zrobienie tego?

Możesz pozbyć się poufnych danych w postaci jawnego tekstu, szyfrując wszystko na dysku. Skonfiguruj wolumin ecryptfs w tym systemie plików i przenieś do niego wszystkie (poufne) pliki. Następnie zastąp całą nieużywaną przestrzeń systemu plików. Możesz usunąć większość z nich, wypełniając system plików cat /dev/zero >zero. W niekompletnych blokach mogą pozostać pewne informacje (bloki zawierające ostatnią część pliku, a następnie śmieci) - które mogą pozostać z poufnego pliku). Aby upewnić się, że nie ma niekompletnych bloków, przenieś wszystko w systemie plików do ecryptfs (pliki ecryptfs używają całych bloków, przynajmniej w typowych konfiguracjach, w których bloki mają rozmiar 4kB). Pamiętaj, aby zastosować to do wszystkich woluminów i usunąć wszystkie migawki zawierające poufne dane w postaci zwykłego tekstu.

W czasopiśmie mogą pozostać pewne informacje. Nie wiem jak to wyszorować.

Na dysku SSD ze względu na realokację bloku mogą pozostać dane, których nie można odczytać zwykłymi programami, ale można je odzyskać poprzez zhakowanie oprogramowania układowego lub dostęp fizyczny. Tam jedynym wyjściem jest pełne wyczyszczenie dysku SSD.


3
Zero ma tę wadę, że można je skompresować lub całkowicie pominąć (dysk SSD może TRIM zamiast zapisywać zera, ponieważ sektory TRIM zwracają zera podczas ich czytania). To sprawia, że ​​zera są obecnie niebezpieczne. Użycie losowych danych zmusza system plików i dysk do faktycznego zapisania danych w niezmienionej postaci.
frostschutz

@frostschutz Czy pisanie dowolnych znaków innych niż 0byłoby w porządku i nie podlegało TRIMingowi, powiedzmy, że piszemy wszystko 1? A może niektóre dyski używają kompresji na wszystkim?
Xen2050

@frostschutz Jeśli wypełniasz wolumin ecryptfs zerami (co, tak myślałem, odpowiedź tutaj proponuje, jednak przy dalszej kontroli widzę, że jego frazowanie jest niejednoznaczne), wtedy będziesz pisać zasadniczo losowo (nieskompresowalny / nie do przejścia) dane na dysk, nie?
JamesTheAwesomeDude

@JamesTheAwesomeDude Nie, proponowałem zapisanie zer w niezaszyfrowanej części, ale wspomniałem, że to nie wystarczy na dysku SSD poniżej.
Gilles „SO- przestań być zły”

6

Hmmm, btrfs wydaje się pokonać wszystkie zwykłe metody niszczenia ...

  • Wywołano opcję montowania, nodatacowale wydaje się, że nie wpływa to na już istniejące pliki.
  • Ponieważ masz już rozsądne pliki na dysku, ten wpis FAQ btrfs również ci nie pomoże.
  • Potem jest debugfs. Dotyczy tylko systemów plików ext, ale istnieje łatka , która może działać. Możesz go użyć, aby znaleźć adresy bloków, których dotyczy problem, a następnie zastąpić je bezpośrednio na / dev / sdXY. Jest to jednak bardzo niebezpieczne i może nie działać (zwłaszcza jeśli jest więcej migawek pliku)
  • Napisz łatkę btrfs, która pozwala modyfikować (lub niszczyć) określone migawki lub cały plik
  • Najczystszą próbą (w przypadku naprawdę bardzo wrażliwych danych) byłoby:

    • kup inny dysk (chyba że masz wystarczającą ilość wolnego miejsca na kopię partycji, której dotyczy problem na pierwszej)
    • skonfiguruj pełne szyfrowanie dysku i systemy plików na nim
    • skopiuj wszystko z dysku a na b
    • uruchom system b i zniszcz cały dysk a ...

    To może nie być najtańsze podejście, ale biorąc pod uwagę dzisiejsze niskie koszty przechowywania i kłopoty z innymi opcjami, może to być najtańsze (pod względem godzin pracy).


nodatacowustawia domyślny status Cflagi dla nowo tworzonych plików. Z pewnością można chattr +C ~/.browser/logins.sqliteto shredzrobić?
JamesTheAwesomeDude

-6

Jest shred(1)dla Uniksa / Linuksa (powinien znajdować się w paczkach twojej dystrybucji). To właśnie poleca EFF .


3
Jeśli dokładnie sprawdzisz pytanie, zobaczysz, że wspomniałem o niszczeniu i dlaczego to nie wystarczy do zadania
goncalopp

Jedyne, co znajduję, to sugestie użycia szyfrowania poufnych plików z podanego przez ciebie powodu.
vonbrand

2
„W wielu systemach plików program niszczący umożliwia takie bezpieczne usuwanie. Jednak w systemie plików CoW, takim jak btrfs, takie podejście jest bezużyteczne.”. Tam też są dwa linki.
goncalopp
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.