2012-01-19 2 views
2

Мне нужно реализовать алгоритм Gutmann для безопасного удаления некоторых данных в таблице базы данных. Прежде всего, эффективен ли он в базе данных?Безопасная стирающая реализация Java

Я не уверен насчет 35 шагов. Для 1-4 и 32-35, понятно, генерируют некоторые случайные данные. Но шаги 5-31 я не уверен. В таблице Википедии даны 3 байта для данного шага, эти шаги выполняются случайным образом, некоторые из них одни и те же, что и другие. См. 8-й шаг в HEX: 49 24 92. Теперь предположим, что у меня есть столбец, который я хочу удалить, длина которого составляет 25 байт. Как мне перейти на 3 байта? А как насчет 25-го байта?

+4

Этот алгоритм предназначен для стирания диска. Невозможно безопасно стереть столбец базы данных (или любой другой компонент внутри реализации базы данных). –

+0

Что вы подразумеваете под безопасным стиранием базы данных? вы можете уточнить? – kosa

+0

Никакая база данных не стирает, не удаляет данные из столбца какой-либо таблицы. Если он работает для файлов, почему бы не работать в базе данных? Или, по крайней мере, должен быть метод ... – braincell

ответ

2

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

Проблема с базой данных заключается в том, что у вас нет контроля над фактической структурой файла; БД реферат все это для вас. Например, вы можете удалить данные из столбца или строки в db, но в зависимости от того, как удаляются дескрипторы DB, секторы, на которых первоначально находились данные, все еще могут быть помечены БД. Поскольку все данные для таблицы остаются как часть одного и того же файла (т. Е. Состояние сохраняемого файла БД), нет способа определить, где эти данные первоначально лежали на диске, и, кроме того, нет способа гарантировать, что БД не имеет " t уже исправил это пространство для чего-то другого.

Даже если вы должны были безопасно писать/стирать/переписывать одно и то же поле в БД, нет гарантии (и на самом деле довольно маловероятной), что данные будут записаны в один и тот же сектор на диске.

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

Имейте в виду, что принцип безопасного удаления данных значительно изменяется при работе с SSD (поскольку используемые сектора могут обеспечить равномерное распределение данных) и даже на некоторых RAID-устройствах.

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

+0

Спасибо Эрик, у вас есть смысл. – braincell

0

Для чего стоит упомянуть эту статью http://dl.acm.org/citation.cfm?id=1496285, которая в основном утверждает, что на сегодняшних дисках вам не нужно больше двух проходов, обычно одного достаточно. Я знаю, что он не отвечает quesiton о том, как достичь этого для базы данных, и я бы обошел все комментарии, которые, как представляется, невозможно сделать на уровне SQL.

+0

В последнее время говорят о производителях HD, использующих шифрование на основе h/w при записи данных на диск, так что необходимость вытирать диск при удалении из него уходит в прошлое, но все, что потребуется, - это изменить ключ шифрования. Это будет эквивалент мгновенной очистки. Конечно, это было бы полезно только при протирании всего диска, а не только в свободном пространстве. –

+0

Интересно, я должен признать, что я не слежу за последними событиями в технологии HD, которые, хотя – stryba

Смежные вопросы