Stiskem klávesy Delete život dat nekončí!
Běžní uživatelé počítačů obvykle příliš nepřemýšlejí o tom, co se stane při mazání nějakého souboru. Pokud ho „smažou“, považují ho prostě za smazaný a mnohdy jsou rádi, že ve skutečnosti smazaný není a najdou ho v „koši“. Ale dejme tomu, že se soubor smaže „natvrdo“, tedy tak, že v žádném koši neskončí (ať už je v daném operačním systému implementován jakkoliv).
Už od počítačového dávnověku smazání souboru neznamená smazání dat. Proč? Především proto, že skutečné mazání trvá dlouho a bývá zbytečné to pokaždé provádět. Ve skutečnosti se pouze prostor dosud obsazený souborem uvolní k dalšímu použití a může být přepsán jinými daty někdy později.
U linuxových souborových systémů to klasicky funguje tak, že pokud hovoříme o souboru, můžeme mít na mysli tři různé věci:
- název souboru (položku v adresáři),
- metadata souboru (i-node),
- vlastní data souboru.
Nejlepší bude to vzít od konce. Vlastní data souboru jsou vlastně bloky (adresovatelné skupiny sektorů na disku nebo jiném úložném médiu) využité k uložení dat. Mohou být různě rozmístěné, klidně nesouvisle (třeba může být proloženo víc souborů), klidně třeba napříč fyzickými úložišti atd. Při běžném smazání souboru zůstanou tyto bloky nedotčeny.
Metadata souboru mají podobu tzv. i-uzlů (i-node), kde jsou umístěny běžné atributy jako časové hodnoty, oprávnění, informace o vlastníkovi a skupině atd., ale také přímé a nepřímé adresy datových bloků (nepřímé odkazují na bloky, v nichž jsou uloženy adresy datových bloků nebo opět adresních). Při smazání souboru se metadata smažou.
Název souboru tvoří položku v adresáři (ten je vlastně speciálním souborem). A teď pozor – jeden soubor může mít více názvů v rámci jednoho zařízení s vytvořeným souborovým systémem. Jsou to tzv. pevné odkazy (hardlinky), které se nijak neliší od názvu souboru vytvořeného jako první, tedy při vytváření souboru.
Uvedený popis je zjednodušený. Moderní souborové systémy jsou komplikovanější, protože sem vstupují speciální funkce, například podsvazky, snapshoty apod.
Jak probíhá běžné mazání souborů
Obvyklé mazání, ať už ze souborového správce nebo příkazem rm, odstraní adresářovou položku. Soubor tedy zmizí z adresáře, přes který byl dosud dostupný. Nemusí to ale znamenat, že zmizí i něco dalšího!
Každý soubor má počitadlo referencí. To se zvýší o jedničku při vytvoření adresářové položky pro soubor (i tu první) a při otevření souboru z běžícího procesu (a také při vytvoření dalšího procesu, který z něj zdědí deskriptory otevřených souborů). Naopak se počitadlo sníží při odstranění adresářové položky nebo zavření souboru. Pokud stav počitadla klesne na nulu, soubor se smaže (odstraní se jeho metadata a uvolní se alokované datové bloky).
Jak důkladně a bezpečně smazat data
Protože se data ve skutečnosti nemažou, lze se k nim později dostat. Není to úplně jednoduché – přestože lze uvolněné bloky použít pro jiné soubory, nelze číst data, která v blocích byla. Funguje to totiž tak, že se bloky alokují až v okamžiku zápisu a zapíše se vždy celý blok, takže se data přepíší.
Pokud má ale někdo na počítači práva uživatele root nebo si zařízení může přenést k jinému počítači a tam připojit (u přenosných disků snadné, u vestavěných samozřejmě složitější), může přes speciální soubory zařízení (například /dev/sda1
a podobně) číst přímo datové bloky, kopírovat si je jinam a pomocí speciálních programů v nich třeba hledat určité vzorky dat.
Otázka „do pranice“: Co se děje s diskem, pokud ho reklamujete u prodejce? Jste si jisti, že tam nemůže pracovat někdo „zvědavý“, kdo se při dlouhé chvíli na disk podívá (samozřejmě pokud je závada taková, že to lze)?
Jsou-li v souborech uložena citlivá data – například citlivé osobní údaje, soukromé klíče apod., je žádoucí jejich obsah opravdu odstranit. Existují na to různé nástroje, na několik z nich se nyní podíváme.
Naprosto bezpečné smazání souborů neexistuje. Je tomu tak kromě jiného proto, že si disky automaticky přesouvají vadné sektory jinam a k původním se dá později dostat, i když třeba ne spolehlivě. Podobně může být možné se dostat i přímo k přepsaným datům v používaných sektorech (i přes opakovaný přepis – doporučuje se až sedminásobný), byť provedené experimenty dokazují, že to v praxi není moc pravděpodobné. Pokud chcete data bezpečně zničit, bez úplné fyzické likvidace disku se to neobejde.
Programy pro mazání dat
BleachBit
Program BleachBit je zajímavý tím, že dělá více užitečných věcí najednou. Odstraní různé nepotřebné soubory, které zůstaly v systému po aplikacích (Firefox, GIMP, rpmbuild a mnoho dalších), zkonsoliduje databáze Firefoxu a kromě jiného také vymaže datové bloky po odstraněných souborech. Má grafické uživatelské rozhraní, lze ho ale spouštět i z příkazové řádky (a tedy skriptovat, automatizovat…).
wipe
Jednoduchý nástroj wipe slouží pro přepis datových bloků souborů. Může využívat různé metody přepisu, různé počty opakování, různě vybírat soubory k přepisu atd. Nevýhodou je, že přepisuje pouze existující soubory a navíc jen v tom rozsahu, ve kterém aktuálně existují (pokud k souboru dříve patřily i jiné bloky, přepis se jich nedotkne). Pokud to nestačí, jedinou možností je přepsat celé úložné zařízení (přes jeho soubor v /dev
).
shred
Utilita shred je přímo součástí Coreutils, což má tu výhodu, že je k dispozici prakticky ve všech linuxových distribucích (a bez instalace speciálních balíčků). Funguje velmi podobně jako wipe, nemá však tak rozsáhlé možnosti parametrizace.
secure-delete
Sada secure-delete se skládá ze čtyř nástrojů, které umožňují mazat data v existujících souborech, volném prostoru, operační paměti a odkládacím prostoru (swap). Lze tak odstranit pozůstatky citlivých dat i z dalších míst, nejen samotného disku.
Pár slov závěrem
Zvláště u moderních souborových systémů je s důkladným odstraňováním dat potíž, protože se data mohou nacházet například ve snapshotech. Proto je obecně dobré pro citlivá data používat šifrovaná úložiště (takže fyzické odnesení média příliš nepomůže v přístupu k datům), při výběru softwaru ověřovat správnou bezpečnostní praxi (například mazání citlivých dat z paměti hned poté, co se s nimi přestane pracovat) a především přemýšlet, zda je vůbec data nutné ukládat (například soukromé klíče mohou být v hardwarových tokenech a nemusejí se „povalovat“ na disku).