Безопасное удаление файлов в delphi7 - PullRequest
2 голосов
/ 16 января 2009

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

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

Ответы [ 5 ]

9 голосов
/ 16 января 2009

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

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

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

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

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

Редактировать: Похоже, вы удалили пример кода.

1 голос
/ 17 января 2009

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

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

1 голос
/ 16 января 2009

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

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

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

0 голосов
/ 25 августа 2014

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

0 голосов
/ 16 января 2009

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...