Як я можу безпечно видалити вміст палець, щоб не вдалося відновити дані.


32

Мені хотілося б знати, як можна видалити USB-накопичувач через термінал, якщо це можливо, щоб дані не вдалося відновити.


31
Флешка? Розтріскайте річ, вирвіть усі фішки з зеленої плати, і розмешіть їх у шматочки блискучих блискучих шматочків, а потім купіть ще один. Фізичне знищення - це справді єдиний спосіб бути впевненим, тому що всі зношування та інше. Надалі використовуйте повне дискове шифрування і втрачайте ключ | пароль, коли його більше не хочете.
Blacklight Shining

1
@BlacklightShining - це єдина реальна відповідь. дуже багато дешевих паличок теж є рециклістами.
mikeserv

1
@BlacklightShining Перетворення його в плазму теж добре.
PyRulez

3
Якщо вам важливо, що дані не підлягають відновленню, єдине "безпечне" рішення - це фізичне знищення. Якщо достатньо просто відновити важко, то насправді не потрібно більше форматувати / перезаписувати.
Sobrique

Спаліть його на вогні з деревним вугіллям, забезпечивши, щоб усі частини досягли червоного тепла.
Бен

Відповіді:


47

TL / DR: Переконайтеся, що ви знайшли правильне ім’я пристрою, переконайтеся, що воно не встановлено, і виконайте стільки випадкових перезаписів, скільки ви можете собі дозволити. Ви можете слідувати за нею за допомогою команди стирання, розробленої для апаратного забезпечення флеш-пам'яті, якщо ви перебуваєте в недавньому розпорядженні. У цих перевірках завжди використовуйте диск (наприклад, / dev / sd h ), а не ім'я розділу (що було б / dev / sd h1 )

# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#

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

Зазвичай частина флеш-накопичувача несправна, і це позначається під час виготовлення. Існують також інші біти, які можуть піти не так (стаючи незмінними, нестабільними або незрозумілими), ці частини також повинні бути відмічені як несправні протягом життя. Ця інформація зберігається в зарезервованому просторі, на тих же мікросхемах, що і ваші дані. Це одна з декількох причин того, що накопичувач великого пальця об'ємом 4 Гб не показує ємність 2 ^ 32 байт.

Флеш-пам’ять також внутрішньо організовано у більші блоки, іноді набагато більше, ніж файлові системи, що працюють на диску. Типовий розмір блоку файлової системи становить 4 КБ, і сегменти спалаху, які можна стерти за один раз, можуть становити від 64 КБ до навіть декількох мегабайт. Ці великі блоки можна видалити лише цілими, що скидає весь блок до відомого стану (всі 1s або всі 0s). Після цього запис даних може змінити будь-який біт (змінити типовий 1 на 0, якщо потрібно, або змінити типові 0 на 1), але лише один раз . Щоб змінити будь-який біт назад за замовчуванням, весь сегмент потрібно знову стерти!

Отже, коли ви хочете змінити блок 4 КБ (файлова система просить змінити один символ у середині файлу), флеш-контролеру потрібно буде прочитати та буферувати всі 64 КБ старих даних, видалити всі його та написати новий вміст. Це було б дуже повільно, стирання сегментів - найповільніша операція. Також сегмент може стиратися лише обмежений час (типово десятки тисяч), тому якщо ви внесете занадто багато змін в один файл, це може швидко погіршити диск.

Але це не так, як це робиться. Інтелектуальні флеш-контролери просто записують нові дані 4 КБ в інше місце та роблять примітку, щоб перенаправити зчитування цього 4КБ даних посеред старого блоку. Їм потрібно трохи місця, яке ми не бачимо, щоб зберігати цю інформацію про переадресації. Вони також намагаються переконатися, що вони проходять усі доступні сегменти для зберігання даних, це називається вирівнюванням зносу .

Це означає, що зазвичай старі дані все ще є десь на диску ! Якщо ви просто очистили всі доступні блоки, всі приховані блоки все ще зберігають досить недавню версію даних. Чи це доступне для зловмисника, від якого ви хочете, щоб ваші дані були захищені, - це інше питання.

Якщо у вас достатньо недавнього розповсюдження, а USB-накопичувач запрограмований так, щоб виявити, що це флешка, blkdiscardможна скористатися базовою TRIMоперацією, що є стиранням сегменту, про який ми говорили вище. У нього також є додатковий прапор, щоб переконатися, що апаратні засоби повністю стирають навіть невидимі приховані дані:

# blkdiscard -s /dev/myusbdevice

-s, - Secure Виконуйте безпечну відмову. Захищена відмова - це те саме, що і звичайна відмова, за винятком того, що всі копії викинутих блоків, які, можливо, були створені шляхом збору сміття, також повинні бути стерті. Для цього потрібна підтримка пристрою.

Це не обов'язково спрацює, як я демонстрував вище. Якщо ви отримаєте Operation not supported, ні ваше ядро, ваші утиліти, ні чіп USB-шлюзу (який дозволяє флеш-контролеру виглядати як привід через USB) не підтримує передачу TRIMкоманди. (Контролер флеш-пам'яті повинен мати можливість самостійно стирати сегменти). Якщо це підтримується постачальником вашого диска, це найбезпечніший спосіб.

Ще один, менш безпечний спосіб переконатися, що ви дозволяєте менше старих даних десь затримуватися - це перезаписати їх кілька разів, якщо це можливо, випадкові значення.

Чому випадковий, запитаєте ви? Уявіть собі, якби накопичувач USB був зроблений занадто розумним і виявив, що ви хочете очистити сектор, і щойно змінив растрову карту, що цей сектор тепер безкоштовний, і його потрібно буде очистити пізніше. Оскільки це означає, що він може прискорити запис нулів, тож це робить маятник, який видається більш ефективним, правда? Чи робить це ваш привід, важко сказати.

В самому крайньому випадку, накопичувач міг би просто запам'ятати, скільки з початку ви очистили, і все, що потрібно для зберігання, - це приблизно 4 байти інформації, щоб зробити це, і нічого не зрозуміти з даних, які ви хочете зникнути. Все, щоб це могло виглядати дуже швидко.

Якщо ви перезаписуєте дані випадковими, непередбачуваними значеннями, ці оптимізації неможливі. Таким чином, накопичувач повинен переконатися, що дані накопичуються всередині флеш-мікросхем. Але ви все ще не зможете виключити, що деякі з раніше використовуваних секторів все ще існують із вашими старими даними, але привід просто не вважав важливим, щоб стерти це ще, оскільки він недоступний як правило. Тільки фактична TRIMкоманда може гарантувати це.

Щоб автоматизувати перезаписи випадковими значеннями, вам, можливо, захочеться переглянути shred, як-от:

# shred -vzn88 /dev/myusbdrive

Використовувані параметри:

  • -v за те, щоб він показав прогрес
  • -z до нуля, як в кінцевій фазі
  • -n8 - це зробити 8 випадкових пропусків перезаписів

Якщо можливо, використовуйте і те, blkdiscardі інше shred, якщо blkdiscard -sце підтримується вашим накопичувачем, це оптимальне рішення, але не завадить shredзаздалегідь зробити це, щоб виключити помилки програмного забезпечення.

О, і завжди двічі-тричі перевіряйте пристрій, який ви намагаєтесь очистити! dmesg може допомогти побачити те, що було нещодавно вставленим пристроєм, а також варто перевірити ім’я пристрою, з яким ви збираєтесь очистити ls -al, навіть на номери вузлів пристроїв, і blkidвихід, щоб побачити, які розділи можуть бути доступні, що ви НЕ хочу очистити.

Ніколи не використовуйте ці команди на внутрішньому диску, який ви хочете продовжувати використовувати - blkdiscardвони працюватимуть лише на твердотільних накопичувачах, але не варто намагатися втратити дані!

Можливо, існують інші способи безпечного очищення даних у міру розвитку технології.

Ще один згаданий спосіб - це SECURITY ERASEкоманда ATA, яку можна видавати за допомогою hdparmкоманд. На мій досвід, це не дуже підтримується на флеш-накопичувачах. Він був розроблений для корпоративних жорстких дисків, і ця функція не завжди реалізована в пристроях зберігання з найменшими витратами.

Операція TRIM/ DISCARDнабагато новіша за SECURITY ERASEкоманду, і була створена у відповідь на функції спалаху, тому вона має набагато більший шанс бути реалізованою навіть на дешевих USB-накопичувачах, але вона все ще не є всюдисущою. Якщо ви хочете стерти SD / micro SD карту в USB-донці, і blkdiscardповідомляє, що вона не підтримується, ви можете спробувати інший ключ читання карт / та / або зробити це в машині з прямим слотом SD / MMC. .


Дякую за найсучаснішу інформацію. blkdiscardзнаходиться в Debian Jessie, і тільки в останніх двох випусках Ubuntu, але не Ubuntu LTS 14.04. blkdiscardдодано до пакета util-linuxверсії 2.23.
RobertL

Чи знаєте ви, як blkdiscardпорівнюється з hdparmрішенням в іншому коментарі від @zhenech (конкретно за посиланням: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
RobertL

Не впевнений, чи так це і з флешками, але це, можливо, варто прочитати howtogeek.com/234683/…
hhaslam11

1
@RobertL Рівно, погано. Більшість дешевих флеш-накопичувачів не реалізують ні ATA Secure Erase, ні TRIM, тому обидва способи, ймовірно, не зможуть.
сумерк

27

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


5
Якщо це дешева, змінна флешка, обов'язково йдіть з фізичним знищенням. Якщо ви все-таки використовуєте молоток, переконайтеся, що ви отримали фактичний чіп для зберігання. Я розкрив стару флешку для розваги пару тижнів тому, і більшість її фізичного обсягу насправді була справою та повітрям.
Blacklight Shining

1
Окрім моєї відповіді, я погоджуюся повністю - просто важко розбити їх на шматки через доступ до ssh :) З огляду на те, наскільки ненадійні ці ключі для зберігання даних, напрочуд важко позбутися їх насправді позбутися одних і тих же даних.
chexum

Погоджено - якщо вам важливо, що дані не можна відновити, то фізичне знищення - єдиний варіант. Дозвольте зіткнутися з цим, порівняно з комерційною цінністю даних, що містяться на ньому, навіть найдорожчі накопичувачі, мабуть, не такі значні. Якщо це не так, що важливо практично будь-який протирати / переписування є «досить добре».
Sobrique

1
Цей метод не тільки найефективніший, він є і найвеселішим. Ніколи не пропускайте нагоду скористатись кувалдою і за це заплатити.
zetetic

2

Практично всі доступні функції безпечного видалення були розроблені для обертання магнітних носіїв, де комп'ютер зазвичай може визначати фізичне розташування [1] блоків, що використовуються для файлу, і записувати над тими ж блоками. Твердотільний контролер зберігання чіпів абстрагує фізичне розташування даних із системи і любить переміщувати їх.

Ваше питання дійсно залежить від того, хто збирається за вашими даними. Якщо вас турбують випадкові втрати чи випадкові крадіжки, то нормальний формат буде добре. Якщо вас турбує націлення на високомотивованого, технічно грамотного користувача, який має в своєму розпорядженні значні ресурси [2], тоді просто спалюйте накопичувач і витрачайте 10 доларів на новий.

  1. так, є логічне відображення блоків. Але логічний блок A завжди буде відповідати фізичному блоку B.

  2. ця людина відкриє накопичувач вгору, витягне чіп пам’яті з карти і прочитає флеш-пам’ять безпосередньо, минаючи контролер


1

Найпростіший і найшвидший спосіб, який я знаю, - це записувати нулі (0) на весь диск:

dd if=/dev/zero of=/dev/sdX

де /dev/sdXзнаходиться вузол пристрою вашого пальця.

Деякі пропонують більш ретельний процес з більшою кількістю ітерацій та інших моделей. Для цього доступні спеціальні утиліти. Пакет coreutils GNU містить shredкоманду, спеціально для цієї мети. Багато людей також використовують badblocks -w, що є частиною пакету e2fsprogs. У FreeBSD shredутиліта викликається gshredі повинна бути доступною або в портах, /usr/ports/sysutils/coreutilsабо /usr/ports/sysutils/fileutils.


Цього насправді недостатньо для безпечного витирання. Я б хотів принаймні 20 серій записів випадкових матеріалів. Найкраще я б використав інструмент для безпечного витирання, наприклад, клаптик. Незважаючи на те, що деякі люди кажуть, що це не має сенсу і що нульова вистачає - я б не вірив цьому.
monsune

4
@monsune Це просто міська легенда. Хоча деякі стандарти вимагають цього , схоже, що практичної атаки немає.
Жиль "ТАК - перестань бути злим"

У флеш-накопичувачах використовується вирівнювання зносу, щоб не швидко знищити флеш-комірки. Уявіть це так: накопичувач має 1200 комірок, але лише говорить вам, що він має 1000, і контролер вибирає, до якої комірки він насправді пише. Таким чином, після DD ви видалили 1000 комірок, але не 200 в резерві, і ці можна прочитати, приєднавши фактичний спалах до контролера без резерву. Я б запропонував зробити безпечне стирання після DD, але не всі флеш-носії підтримують це.
zhenech

@zhenech, що таке "безпечне стирання"?
RobertL


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.