Безопасное удаление файлов в delphi7

Мне нужно безопасно удалить мой входной файл, как только я закончу с ним, в данный момент я перезаписываю все данные нулями, это беспорядочно, так как моя временная папка заполняется старыми файлами, а имя файлов является проблемой безопасности .

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


person Arthur    schedule 16.01.2009    source источник


Ответы (5)


Это прогрессирующая проблема. То, что «безопасно» для одного приложения, небезопасно для другого. Если безопасность действительно важна и вы обнаружите, что задаете такие вопросы в Stack Overflow, то, скорее всего, вам необходимо заключить договор со сторонним консультантом по безопасности. Примеры действительно важных включают финансовую информацию, медицинские записи или что-либо еще, где есть закон или контракт, требующий защиты данных. Я говорю это не для того, чтобы показаться злым или подразумевать, что вы не в состоянии решить проблему, а для того, чтобы указать, что это довольно сложная и постоянно развивающаяся проблема.

В основном, чтобы выполнить то, что вы хотите выполнить:

  1. Как только ваш код, который вы написали, завершится, измените размер файла на пустой — это усложнит восстановление, поскольку исходный размер файла будет потерян.
  2. Затем переименуйте файл (RenameFile) в другое имя.
  3. Наконец, удалите файл с помощью DeleteFile, при этом файл не перемещается в корзину.

Убедитесь, что вы сохраняете эксклюзивный дескриптор файлов все время, пока они находятся на диске, иначе их можно просто скопировать перед удалением.

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

Изменить: похоже, вы удалили образец кода.

person Jim McKeeth    schedule 16.01.2009
comment
Просто примечание: есть научное исследование, показывающее, что многопроходная перезапись — пустая трата времени. Однопроходная перезапись имеет тот же результат и эффективность. springerlink.com/content/408263ql11460147 - person liggett78; 17.01.2009

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

Я бы сказал, что если вы настаиваете на написании собственного кода для этого, то вместо использования всех нулей записывайте на диск случайные байты. И не используйте встроенную функцию rand С++, используйте более безопасный генератор случайных чисел.

Как сказал Джим МакКит, это не то, что вы хотите делать сами, если есть серьезные юридические последствия за неправильные действия.

person Kip    schedule 16.01.2009

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

У меня есть своего рода ортогональное предложение. Вместо реализации безопасного стирания в коде или в дополнение к ней вы можете потребовать от пользователей сотрудничества. Например, вы можете предложить (или потребовать), чтобы входные файлы хранились на зашифрованном томе. В корпоративной среде предпочтение отдается PGP Disk, поскольку это узнаваемый бренд, в то время как домашним пользователям будет полезно использовать бесплатный и хорошо протестированный TrueCrupt. Оба продукта поддерживают создание виртуальных зашифрованных томов, а также шифрование целых разделов. Это будет иметь большое значение для обеспечения безопасности имен и содержимого входных файлов, даже до того, как вы напишете хотя бы одну строку кода.

person Marek Jedliński    schedule 16.01.2009

Удаление файла может быть деликатной темой...

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

Существует несколько стандартов удаления остаточных данных: DoD 5220.22- M в основном упоминается приложениями для «безопасного удаления файлов», но, очевидно, правила изменились< /а>.

Начиная с выпуска DSS C&SM за июнь 2007 г., перезапись больше не допускается для очистки магнитных носителей; допускается только размагничивание или физическое уничтожение.

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

person Davy Landman    schedule 16.01.2009

Остерегайтесь алгоритмов «выравнивания износа», используемых с флэш-памятью. Чтобы обеспечить равномерный износ, файлы перемещаются по диску, и это невидимо для вашего приложения и даже для операционной системы. Таким образом, вы можете «безопасно удалить» файл сколько угодно, и вы повлияете только на самую последнюю копию файла. Но предыдущие копии можно восстановить/обнаружить с помощью программного обеспечения для восстановления. Таким образом, единственный способ решить эту проблему — зашифровать содержимое файла.

person Chris Thornton    schedule 25.08.2014