[FAQ] Правильное удаление информации

Всё об ОС Linux
Ответить
Сообщение
Автор
Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#1 Сообщение 29.04.2010, 17:41

[frame]Внимание! Данная статья является интеллектуальной собственностью сайта CSmania.RU, копирование и распространение допускается только со ссылкой на первоисточник и автора![/frame]
Несмотря на то, что статья помещена в раздел Linux, она носит больше теоретический характер и может быть полезна всем, не зависимо от операционной системы. Информация в статье актуальна для абсолютного большинства ОС и файловых систем, так что рекомендуется к прочтению всем.

Когда речь идет о хранении информации, часто утверждают, что информация может быть стёрта или уничтожена. Это неправда. Жёсткий диск не может быть "стёрт", он вообще не знает, что это такое. Возможности жёсткого диска заключаются только в чтении и записи информации. Например, файловая система может попросить жёсткий диск прочитать сектор X, или записать в него некоторую информацию. Она не может попросить диск "удалить". Даже если вы ничего не записывали на только что купленный диск, он не является пустым, хотя прочитать информацию с него у вас вряд ли получится. Террабайтный диск ВСЕГДА хранит террабайт информации. Эта информация может быть лишена смысла, например, когда диск забит нулями. Но это по-прежнему информация и она не может быть стёрта или уничтожена.
Запомните: Информация не может быть стёрта, она может быть только записана. Удаление данных есть их перезапись.

Да, "перезапись данных" звучит просто, но вы должны убедиться, что перезаписываете данные правильно. Не забывайте, что ваши данные хранятся в секторах жёсткого диска. По идее, чтобы "удалить" эту информацию, вы должны переписать все сектора, в которых эта информация записана. Стандартные команды удаления файлов и даже форматирования дисков НЕ ДЕЛАЮТ этого. При удалении файла файловая система не будет перезаписывать сектора, в которых хранился файл, так как это сделает её ужасно медленной. Вместо этого файловая система "забывает" о том, что в этих секторах что-либо записано (помечает их как свободные). Но это никак не изменяет физического расположения информации на жёстком диске - файл по-прежнему находится в определенных секторах. Эти данные могут быть перезаписаны позже, когда файловой системе нужно будет записать файл и она будет искать "свободные" сектора. Но вы не знаете, как скоро это случится.

Таким образом, для удаления файла вы должны перезаписать все сектора, в которых он находился. На самом деле файл может быть фрагментирован, и мы не будем знать, какие именно сектора следует перезаписать. Значит, придется перезаписать все сектора жёсткого диска, "стерев" тем самым все ваши данные. В этом нам поможет прекрасная утилита dd, которая работает напрямую с жёстким диском. Самый быстрый путь - заполнить все сектора нулями:
[txtspoil]dd if=/dev/zero of=/dev/sdx bs=4M[/txtspoil]
Однако, это всё равно займет много времени, в зависимости от размера диска и скорости записи, которая может доходить до 90-100 мб/с.
Следует пояснить, что именно делает команда: утилита dd читает неограниченное количество нулей из специального файла /dev/zero, а затем записывает их побайтово на жёсткий диск блоками по четыре мегабайта. (Лучший размер блока подбирается экспериментальным путём, часто он совпадает с размером кэша диска)

Если же файл ещё присутствует, и вы хотите безопасно удалить его, следует перезаписать все сектора, что он занимает, нулями:
[txtspoil]dd if=/dev/zero of=FILENAME bs=1 count=FILESIZE[/txtspoil]
Где FILENAME - имя файла, а FILESIZE - размер в байтах.
После выполнения команды файл можно удалить штатно, то есть командой rm.

Однако, следует помнить, что перезапись файла в файловой системе происходит по принципу "удаления" старого файла, а затем записью нового. В таком случае старый файл всё ещё может лежать где-нибудь на просторах жёсткого диска. Чтобы не оставить никаких упоминаний о файле, потребуется перезаписать все "свободные" сектора нулями. В таком случае вся ваша информация останется на месте, но "пустые" сектора станут действительно пустыми:
[txtspoil]dd if=/dev/zero of=nullfile bs=4M[/txtspoil]
Здесь утилита dd создаст файл с именем nullfile и будет заполнять его нулями до тех пор, пока не кончится место на жёстком диске. После этого надо выполнить ещё одну команду - sync, дабы убедиться, что данные полностью записаны на диск, а не находятся где-нибудь в оперативной памяти или кэше.
После всех операций файл nullfile можно удалить, т.к. все "пустые" сектора были перезаписаны нулями, и он больше не нужен.

Существует мнение, что данные обязательно нужно перезаписывать случайной информацией по нескольку раз, чтобы их невозможно было восстановить. Это неправда. Невозможно восстановить данные с перезаписанного сектора. Компании, занимающиеся восстановлением данных, восстанавливают их только в случае хардварной неисправности жесткого диска, или после краха таблицы файловой системы. Также, если сектора диска помечены как сбойные, вы не сможете перезаписать их. Но спецслужбы и люди, занимающиеся восстановлением данных, смогут прочитать информацию из этого сектора.
Комментируйте, высказывайтесь и спрашивайте.

Аватара пользователя
Pitch666
Полковник
Полковник
Сообщения: 5489
Зарегистрирован: 27.08.2008
Откуда: Роисся
Поблагодарили: 10 раз
Контактная информация:

#2 Сообщение 30.04.2010, 23:10

NiGHt-LEshiY писал(а):Существует мнение, что данные обязательно нужно перезаписывать случайной информацией по нескольку раз, чтобы их невозможно было восстановить. Это неправда.
Данные нужно перезаписывать несколько раз. И это правда. Пояснить?

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#3 Сообщение 01.05.2010, 08:59

Ну... Это вообще-то перевод.. Но ладно.
Были какие-то тесты, определяющие возможность восстановить информацию по остаточной намагниченности... В общем, после одного забивания нулями шанс около 10 процентов.. Надо будет откопать и выложить.
Существует и альтернативное мнение на этот счет, якобы после перезаписи единицы нулем коэффициент магнитного поля (или как это называется) равен не нулю вовсе, а 0.2, например. Таким же образом перезаписанный единицей ноль будет равен 0.8
Честно говоря, я не сильно углублялся в это. В исходной статье было именно это...
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
Pitch666
Полковник
Полковник
Сообщения: 5489
Зарегистрирован: 27.08.2008
Откуда: Роисся
Поблагодарили: 10 раз
Контактная информация:

#4 Сообщение 01.05.2010, 11:35

NiGHt-LEshiY писал(а):Существует и альтернативное мнение на этот счет, якобы после перезаписи единицы нулем коэффициент магнитного поля (или как это называется) равен не нулю вовсе, а 0.2, например. Таким же образом перезаписанный единицей ноль будет равен 0.8
истина, поэтмоу информацию нужно перезаписывать 4-5 раз

Morfin
Лейтенант
Лейтенант
Сообщения: 237
Зарегистрирован: 19.10.2007
Поблагодарили: 1 раз

#5 Сообщение 01.05.2010, 11:37

Лучше по методу Гутмана медленно но 100% гарантия
Изображение

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#6 Сообщение 01.05.2010, 12:22

Прочитать в гугле про Гутмана, конечно же, хорошо..
Я прочитал несколько статей, в большинстве говорилось о чрезвычайной сложности восстановления информации даже после одного цикла перезаписи.
Сделать это можно только с помощью дорогого оборудования, которое есть, вероятно, только у спецслужб.
Также в статьях приводилась зависимость возможности восстановления информации от года выпуска диска. Большинство дисков после 2004 года корректно затирают данные.
В принципе, если я ошибаюсь, можете меня поправить. Но желательно дать ссылки на корректную информацию.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

MAH69K
Сержант
Сержант
Сообщения: 63
Зарегистрирован: 06.09.2011
Поблагодарили: 1 раз

#7 Сообщение 11.09.2011, 11:27

А почему бы вместо null не использовать random?
а) разве заполнение случайными данными не сведёт на нет возможность использования остаточного намагничивания?
б) забить всё свободное пространство нулями = повесить табличку "здесь зарыт клад". А раз прятали, значит было что прятать. А раз было что прятать, значит будут искать. Заполнение же случайными данными не будет отличимо от обычного "мусора" в неиспользуемых секторах.

Ответить