В худшем случае, вы не можете быть уверены, что сделали это, не уничтожив физически диск. Возможно, вы работаете в журналируемой файловой системе, которая сохраняет оригинал всякий раз, когда вы изменяете файл, чтобы разрешить аварийное восстановление, если модификация прерывается из-за сбоя питания или чего-то еще. Это может означать, что изменение файла перемещает его на физический диск, оставляя прежнее местоположение без изменений.
Кроме того, некоторые файловые системы намеренно сохраняют старую версию как можно дольше, чтобы ее можно было восстановить. Рассмотрим, например, теневые копии хранилища в Windows, когда вы изменяете блок диска, который является частью файла, который является частью точки восстановления системы, новые данные записываются в новый блок, а старый сохраняется.
Существуют API для отключения теневых копий хранилища для файла, каталога или всего диска (не знаю деталей, может потребоваться привилегия администратора).
Другой недостаток - сжатие на уровне файловой системы. Если вы перезаписываете файл случайными данными, есть вероятность, что вы сделаете его менее сжимаемым и, следовательно, увеличенным на диске, даже если он будет иметь тот же логический размер. Таким образом, файловой системе, возможно, придется переместить ее Я не знаю на месте, гарантирует ли Windows продолжать использовать старые блоки для запуска нового, более крупного файла или нет. Если вы перезаписываете нули, вы делаете это больше сжимаемым, новые данные могут не достигнуть конца старых данных.
Если диск когда-либо подвергался дефрагментации (в настоящее время Windows IIRC делает это в фоновом режиме по умолчанию), то ничто из того, что вы делаете с файлом, не обязательно влияет на копии данных в предыдущих местах.
shred
и подобные инструменты просто не работают в этих довольно распространенных условиях.
Растягивая точку, вы можете представить себе пользовательскую файловую систему, в которой все изменения регистрируются в журнале, создаются резервные копии для последующего восстановления с откатом, и копируются в резервное копирование вне сайта как можно скорее. Я не знаю ни о какой такой системе (хотя, конечно, есть программы автоматического резервного копирования, которые запускаются выше уровня файловой системы с тем же базовым эффектом), но Windows, безусловно, не имеет API, чтобы сказать: «Хорошо, вы можете удалить резервное копирование вне сайта », потому что Windows не подозревает, что это происходит.
Это даже до того, как вы рассмотрите возможность того, что у кого-то есть специальный комплект, который может обнаруживать данные на магнитных дисках, даже если они были перезаписаны новыми данными. Мнения меняются, насколько правдоподобны такие атаки на современных дисках, которые очень плотно упакованы, поэтому не остается много места для остатков старых значений. Но на самом деле это академично, поскольку в большинстве практических обстоятельств вы даже не можете быть уверены, что перезаписали старые данные, за исключением размонтирования диска и перезаписи каждого сектора с использованием низкоуровневых инструментов.
О, да, флэш-накопители не лучше, они выполняют переназначение логических секторов на физические сектора, немного похоже на виртуальную память. Это делается для того, чтобы они могли справляться с поврежденными секторами, выравнивать износ и тому подобное. Поэтому даже на низком уровне то, что вы перезаписываете конкретный пронумерованный сектор, не означает, что старые данные не будут появляться в каком-либо другом пронумерованном секторе в будущем.