2012-01-19 79 views
2

我需要實現Gutmann的安全刪除數據庫表中的一些數據的算法。 首先,它在數據庫中有效嗎?安全刪除java實現

我不確定這35個步驟。對於1-4和32-35,很明顯,會生成一些隨機數據。但是步驟5-31我不確定。 在維基百科表中,給定步驟有3個字節,這些步驟是隨機運行的,其中一些步驟是相同的​​。見第八步,用十六進制:49 24 92.現在我們假設我有一列要擦除其長度爲25個字節的列。我怎麼去,以3個字節爲基礎?第25個字節呢?

+4

該算法用於擦除磁盤驅動器。沒有辦法安全地擦除數據庫列(或數據庫實現內的任何其他組件)。 –

+0

安全刪除數據庫是什麼意思?你能詳細說明嗎? – kosa

+0

沒有數據庫擦除,擦除某些表格列的數據。如果它適用於文件,爲什麼不應該在數據庫中工作?或者,至少應該有一個方法... – braincell

回答

2

不幸的是,問題在於安全擦除磁盤上數據的唯一方法是「擦除」驅動器上任何未使用的扇區。這適用於基於文件的解決方案,因爲當您刪除文件時,操作系統將扇區標記爲可用(即:未使用),因此您可以將其擦除。

數據庫的問題在於您無法控制實際的文件結構;數據庫會爲您抽象所有內容。因此,例如,您可以刪除數據庫中的一列或一行中的數據,但根據數據庫處理刪除的方式,數據最初所在的扇區仍可能被數據庫標記爲正在使用。由於該表的所有數據都保持爲同一文件的一部分(即:數據庫的持久文件狀態),因此無法確定數據最初放置在磁盤上的位置,而且無法確保數據庫不存在「 t已經爲其他東西重新獲得了空間。

即使您要安全地在DB中寫入/擦除/重寫相同的字段,也不能保證(實際上也不太可能)數據將寫入驅動器上的相同扇區。所有這些都說明了,已經有幾項研究表明,從磁性媒體中恢復被刪除/重寫的數據(相對於剛剛釋放的扇區空間)雖然在理論上是可行的,但是存在很多問題並且不太可能成功。

請記住,在處理SSD(因爲正在使用的扇區可能發生變化以確保數據寫入均勻分佈)以及甚至在某些RAID設備中時,安全擦除數據的原理會發生顯着變化。

不幸的是,有了SSD,我不知道是否有任何解決方案來確保所有部門都已完全清潔。使用RAID時,您需要中斷RAID,然後確保獨立擦除每個驅動器。

+0

謝謝埃裏克,你有道理。 – braincell

0

爲什麼值得我喜歡提及這篇論文http://dl.acm.org/citation.cfm?id=1496285,它基本上規定在今天的磁盤上你不需要兩次以上的通行證,通常一次就足夠了。 我知道它並沒有回答關於如何爲數據庫實現這個問題的問題,我將第二個所有的評論,這似乎不可能在SQL級別上做。

+0

最近有一段關於高清製造商使用基於硬件的加密技術向驅動器寫入數據時的討論,因此在處理硬盤時需要擦除驅動器已成爲過去,但所有這些都需要改變加密密鑰。將相當於即時擦拭。當然,這隻會在擦除整個驅動器時使用,而不僅僅是一些已釋放的空間。 –

+0

有趣的是,我不得不承認,我並不關注HD技術近期的發展 – stryba