使用 Linux 安全删除工具
有时我们要把硬盘或者移动存储设备交给其他人(例如用户或者合作伙伴),很多人以为自己将电脑中的信息删除就没事了,笔者建议您好好审查自己是否真正已经将任何可能暴露您的个人隐私的数据删除了。本文介绍几个 Linux 安全删除工具的使用方法帮助用户彻底删除数据。
Linux 下的数据删除安全吗?
删除和格式化
普通 Linux 用户删除磁盘数据的常规方法主要有:删除和格式化。
- “删除”是删除数据最便捷的方法,如 Linux 用户最经常采用“rm”删除命令。实际上并没有真正的将数据从硬盘上删除,只是将文件的索引删除而已,让操作系统和使用者认为文件已经删除,又可以把腾出空间存储新的数据。这种方法是最不安全的,只能欺骗普通使用者,但也是大家所熟知的。数据恢复极易恢复此类不见的数据,而且也有很多专门进行数据恢复的软件。
- “格式化”有许多不同的含义:物理的或低级格式化、操作系统的格式化、快速格式化、分区格式化等等…大多数情况下,普通用户采用的格式化不会影响到硬盘上的数据。格式化仅仅是为操作系统创建一个全新的空的文件索引,将所有的扇区标记为“未使用”的状态,让操作系统认为硬盘上没有文件。因此,格式化后的硬盘数据也是能够恢复的,也就意味着数据的不安全。
安全删除工具的工作原理
由于磁盘可以重复使用,前面的数据被后面的数据覆盖后,前面的数据被还原的可能性就大大降低了,随着被覆盖次数的增多,能够被还原的可能性就趋于 0,但相应的时间支出也就越多。密级要求的高低对应着不同的标准,低密级要求的就是一次性将磁盘全部覆盖;高密级要求则须进行多次多规则覆盖。 通常有两个参考标准: 美国国防部 DOD 的 5220.22M 标准;北约 NATO 的标准 。参考标准实质就是多次覆盖的标准,规定了覆盖数据的次数,覆盖数据的形式。
覆盖原理(overwriting)
覆盖是指使用预先定义的格式——无意义、无规律的信息来覆盖硬盘上原先存储的数据。这是销毁数据的既有效又可操作的方法。如果数据被“成功”的完全覆盖,即使只覆盖一次,也可以认为数据是不可恢复的。硬盘上的数据都是以二进制的“1”和“0”形式存储的。完全覆盖后也就无法知道原先的数据是“1”还是“0”了,也就达到了清除数据的目的。
覆盖的方法: 根据覆盖时的具体顺序,软件覆盖分为逐位覆盖、跳位覆盖、随机覆盖等模式,根据时间、密级的不同要求,可组合使用上述模式,可靠的专业清除软件应同时支持多种模式。
使用 shred
hared 简介
shred 功能简单的说就是涂鸦,把一个文件用随机的字符码篡改的一塌糊涂。其宗旨就是更安全地帮助删除一个机密文件。shred 命令的功能是重复覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原,这条命令的功能足够适合实现文件粉碎的功效。
shred 使用方法
首先安装:
#apt-get install coreutils
命令格式: shred [ 选项 ]... 文件 ...
长选项必须使用的参数对于短选项时也是必需使用的。
-f, --force 必要时修改权限以使目标可写
-n, --iterations=N 覆盖 N 次,而非使用默认的 3 次
--random-source= 文件 从指定文件中取出随机字节
-s, --size=N 粉碎数据为指定字节的碎片
-u, --remove 覆盖后截断并删除文件
-v, --verbose 显示详细信息
-x, --exact 不将文件大小增加至最接近的块大小
-z, --zero 最后一次使用 0 进行覆盖以隐藏覆盖动作
应用实例:
使用方法举例如下:
粉碎一个名为 test.txt 的文件命令是:
$shred –u test.txt
粉碎多个文件的命令是:
$shred –u test1.txt test2.txt
覆盖 IDE 接口的第一个磁盘设备的第一分区
$shred /dev/hda0
覆盖 RAID 分区
$ shred -vfz -n 10 /dev/md1
使用 wipe
wipe 简介
wipe 使用 gutmann 方式,它的理论依据是 1996 年奥克兰大学计算机科学学院皮特 . 古特曼教授在第六届 usenix 安全会议上所作的论文,《安全删除磁固存储器上的数据》 http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html 。这是迄今为止最安全的数据删除方法,覆盖数据 35 次使得任何还原数据的企图都是徒劳的。 wipe 采用了重复写上 34 次以随机数生成数据的 gutmann 方式,清除的对象可以是单一档案、数据夹和整个硬盘。随着硬盘容量愈来愈大,重写时间也会愈来愈长,所以 wipe 也提供了只重复写入 4 次的快速模式。
应用实例
首先安装:
#apt-get install wipe
使用方法举例如下:
删除一个文件,如需对某个机密的文件进行安全删除,您可以执行以下命令:
#wipe file.txt
删除目录, wipe 也支持对目录进行安全删除操作,您只需添加 r 选项即可,例如:
#wipe -r /home/user/test/
删除整个分区, wipe 也支持对分区例如:
# wipe /dev/sdb1