SSD против жесткого диска безопасное стирание

Я знаю, что при удалении файлов они не стираются полностью. Привод просто говорит, эй, это место свободно, и вы можете перезаписать его. С такими программами, как Boot и Nuke и Eraser .etc. Вы можете записывать поверх этих разделов случайные байты.

Чем этот процесс отличается от SSD? Полностью ли удаляет обрезка диска с помощью оптимизатора диска?

3 ответа

Флэш-память SSD не может перезаписывать существующие данные классическим способом. В системе с жестким диском операционная система может запросить, чтобы новые данные были записаны в то же место, где данные уже сохранены, и накопитель будет напрямую перезаписывать старые данные (магнитным способом). Однако в твердотельном накопителе целевая область должна быть сначала стерта, прежде чем ее можно будет записать в местоположения, ранее содержащие данные. Это происходит из-за внутренней структуры. Флэш-память делится на блоки, подразделенные на страницы. Данные могут быть записаны непосредственно на пустую страницу, но могут быть удалены только целые блоки. Поэтому, если вы хотите стереть некоторые данные в блоке, остальные данные будут скопированы в другой, а начальный блок будет удален или помечен как пригодный для использования / пустой.

Процесс обрабатывается с помощью FTL (слой флеш-перевода), который должен делать что-то вроде этого, когда вы изменяете очень маленький объем данных: прочитать один целый физический блок (который, скажем, содержит 64 страницы - он может быть до 256), заменить то, что вы отредактировали (скажем, 4 страницы), оставив остальное нетронутым (60 страниц), сотрите новый блок где-нибудь на устройстве и, наконец, запишите новый набор из 64 страниц в этом блоке.

Поддержка TRIM позволяет считать старые блоки пустыми, даже если они еще не были стерты, что повышает выносливость.

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

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

Если вы хотите полностью стереть диск, вы можете использовать любой инструмент, поддерживающий ATA Secure Erase, который обнуляет все данные в блоках. Эти инструменты зависят от поставщика (Corsair SSD Toolbox, OCZ Toolbox, Intel Solid State Toolbox, Samsung Magician Software). Они по существу устанавливают все доступные блоки в состояние "стирания" (электрически), что TRIM использует для целей сбора мусора (и с помощью которого стирает блоки перед использованием). Блоки остаются пустыми без информации об их начальном содержании.

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

Чем этот процесс отличается от SSD? Обрезка диска с помощью оптимизатора диска полностью удаляет файлы?

Нам необходимо учитывать:

  • Секторы LBA динамически сопоставляются с физическими адресами.
  • Обычно имеется избыточное пространство, которое не сопоставлено с LBA.
  • ОБРЕЗАТЬ =/= Стирание
  • Сжатие: данные сжимаются перед сохранением в NAND.

Чрезмерное выделение ресурсов

Если мы рассмотрим, например, твердотельный накопитель емкостью 240 ГБ, можно было бы ожидать, что если мы обнулим эти 240 ГБ, мы перезапишем каждый блок LBA нулями, и, следовательно, данные станут невосстановимыми.

Это неверно: скорее всего, мы имеем дело с SSD-накопителем емкостью 256 ГБ, однако недостающее пространство зарезервировано для избыточного выделения ресурсов на уровне прошивки.

ОБРЕЗАТЬ =/= Стирание

Многие ошибочно принимают «обрезку» за стирание данных. Это неправильно. TRIM — это «команда», которая позволяет ОС или утилите отправлять на диск сообщение: «Эти блоки LBA мне больше не понадобятся, поступайте с ними, как хотите».

Обычно прошивка SSD не отображает эти адреса LBA. Это означает, что если вы читаете из них, диск фактически не считывает данные из этих секторов, а обычно возвращает заполненные нулями сектора (RZAT). Если вы в них пишете, то доступные сектора сопоставляются с этими адресами БА.

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

Существуют инструменты Linux, которые позволяют «обрезать» диск, для них также существуют порты Windows, и хотя они позволяют быстро обнулить диск, это не гарантирует, что данные действительно будут удалены, даже если вы сможете только прочитать нули с диска.

Лаборатория восстановления данных может восстановить данные с помощью такого оборудования, как PC3000.

Сжатие

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

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

Так как?

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

Даже если мы это сделаем, это все равно не гарантирует, что все данные будут перезаписаны, например, если мы рассмотрим отброшенные блоки (удаленные из пула из-за ошибок носителя).

В качестве альтернативы мы можем положиться на встроенные методы безопасного стирания, указанные в различных спецификациях (ATA, NVMe и т. д.).

https://www.usenix.org/system/files/conference/inflow14/inflow14-zuck.pdf — сжатие на уровне прошивки https://www.intel.com/content/dam/www/public/us/en/document/technology-briefs/ssd-520-tech-brief.pdf — о сжатии на уровне прошивки https://en.wikipedia.org/wiki/Entropy_(information_theory) — о «энтропии» https://blog.elcomsoft.com/2019/01/life-after-trim-using-factory-access-mode-for-imaging-ssd-drives/ - Восстановление данных после TRIM

Существует множество инструментов для стирания диска, но большинство из них работают довольно медленно.
Самый быстрый способ безопасно стереть диск (SSD или HDD), который я нашел, — это записать на него случайные данные с помощью cryptsetup.
В Linux вы можете легко сделать это следующим образом:

      DEVICE=/dev/???                       # put your device ID here
cryptsetup create cryptedDEV $DEVICE  # use any pass, no need to remember it
DEVSIZE=$(cryptsetup status $DEVICE | grep "size:.*sectors" | awk '{print $2}')
pv -s $DEVSIZE /dev/zero > /dev/manpper/cryptedDEV
cryptsetup remove cryptedDEV
Другие вопросы по тегам