2010-12-30 4 views
7

Можно создать дубликат:
C# - Deleting a file permanentlyБезопасное удаление файла с помощью простых методов?

Здравствуйте,

Я использую C# .NET Framework 2.0. У меня есть вопрос, связанный с измельчением файлов.

Мои целевые операционные системы - Windows 7, Windows Vista и Windows XP. Возможно, Windows Server 2003 или 2008, но я предполагаю, что они должны быть такими же, как и первые три.

Моя цель - безопасно стереть файл.

Я не верю, что использование File.Delete абсолютно безопасно. Я где-то читал, что операционная система просто отмечает необработанные данные жесткого диска для удаления при удалении файла - данные вообще не удаляются. Вот почему существует так много рабочих методов для восстановления якобы «удаленных» файлов. Я также читал, поэтому гораздо важнее перезаписать файл, потому что тогда данные на диске фактически должны быть изменены. Это правда? Это вообще то, что нужно?

Если да, я считаю, что могу просто написать файл, полный 1 и 0, несколько раз.

Я прочитал: http://www.codeproject.com/KB/files/NShred.aspx http://blogs.computerworld.com/node/5756 Securely deleting a file in C#.NET

+0

Это должно сделать трюк: http://www.ameri-shred.com/equipment/industrial/hard-drive.html – Flipster

+2

@FlipScript: Вы так думаете, но даже это может быть недостаточно. Множество данных вписывается в полосу 3/4 дюйма. [DOD использует такие слова, как «сжигание», «измельчение» и «расплавление».] (Http://www.zdelete.com/dod.htm) –

ответ

5

Боюсь, что перед вами сложная проблема. Я предлагаю не пытаться решить его самостоятельно.

Обратите внимание, что помимо обеспечения физической перезаписи файла (который может быть по локальной сети, флеш-памяти или любого другого) вам придется позаботиться о любых кэшах приложений, файлах спящего режима Windows, файлах восстановления Windows, файле подкачки Windows , и все копии или старые стираемые версии этих файлов (свопите все пустое пространство или, что еще хуже, пространство, в котором хранился кеш раньше, и, возможно, были выделены другим файлам с тех пор) - все в правильном порядке.

Я думаю, что ваши шансы могут быть лучше, если вы можете хранить свои файлы на выделенном логическом (или даже физическом) диске, который не используется ОС или другими приложениями, и если вы убедите Windows не менять память, которую вы используете для хранения файла, в то время как в ОЗУ (с использованием VirtualLock()). Тем не менее, вы должны стереть своп, кеш и т. Д.

Кроме того, вы должны интегрировать в приложение продукт Eraser (Eraser - бесплатное программное обеспечение, а его исходный код выпущен под лицензией GNU General Public License).

+1

Повторное использование существующего решения - хороший совет, но я бы не выбрал ничего, что претендует на безопасное стирание отдельных файлов - это просто невозможно. –

+0

@ Ben Voigt: Чтение журнала Eraser chang, вы можете увидеть, сколько усилий они вложили в него на протяжении многих лет - работа с разными дисками и сценариями. Я предполагаю, что могут быть некоторые очень специальные конфигурации, в которых безопасное стирание невозможно, однако, вероятно, он будет хорошо работать для стандартных систем. –

0

Вы можете открыть файл и перезаписать его с помощью потока шифров несколько раз. Перезаписывая его 7 раз, а затем удаляя его, кажется, является нормой :)

+1

Overwriting файл не обязательно перезаписывает раздел диска, на котором хранятся старые данные. –

+0

Кроме того, он не перезаписывает любые временные или кешированные копии приложения или ОС, например, файлы в файле подкачки и т. д., которые указал Лиор. – NotMe

2

От чего I've read решение фактически сделать данные больше не видимыми, кажется, переписывает файл с 0 и 1.

+2

Not только переписывание с нуля не уничтожает данные, кроме восстановления, но нет оснований полагать, что это фактически перезаписывает данные. Если это на флеш-накопителе, почти наверняка существует алгоритм выравнивания записи, и блок, который вы написали, отличная от той, которая хранит предыдущий контент. И если это не флеш-накопитель, файл, вероятно, был перемещен с помощью дефрагментации, оставив копии содержимого в других блоках на диске. –

1

Если файл, который вы надежно стираете, был вашим, прежде всего, вы можете захотеть зашифровать его в первую очередь. Затем, даже если он будет восстановлен после удаления, информация не будет раскрыта (предполагается, что вы можете управлять ключами).

+1

Я не упоминал об этом, потому что я подумал не должны быть связаны с вопросом. Да, я чувствую себя в безопасности уже после того, как файл зашифрован (я выбираю AES 256 бит, используя алгоритм SHA 512). Тем не менее, друг, которого я программирую, по-прежнему требует, чтобы я делал все возможное, чтобы стереть его. После всего этого поиска, мне кажется, я должен просто вызвать SDelete.exe из SysInternals и позволить ему обрабатывать всю работу. – Jason

+0

Итак, вы должны сосредоточиться на уничтожении файла подкачки, который может содержать копии расшифрованных данных, и файлы, содержащие ключ дешифрования. Но по причинам, упомянутым в моих комментариях, связанным вопросам и т. Д., Выполняя команду безопасного удаления диска производителя или физическое уничтожение диска, - это только два способа убедиться. –

Смежные вопросы