前言
本文为经过整理后的笔记,原作者:曹元其,发布于developerWorks
删除和格式化
普通 Linux 用户删除磁盘数据的常规方法主要有:删除和格式化。
“删除”是删除数据最便捷的方法,如 Linux 用户最经常采用“rm”删除命令。实际上并没有真正的将数据从硬盘上删除,只是将文件的索引删除而已,让操作系统和使用者认为文件已经删除,又可以把腾出空间存储新的数据。这种方法是最不安全的,只能欺骗普通使用者,但也是大家所熟知的。数据恢复极易恢复此类不见的数据,而且也有很多专门进行数据恢复的软件。
“格式化”有许多不同的含义:物理的或低级格式化、操作系统的格式化、快速格式化、分区格式化等等…大多数情况下,普通用户采用的格式化不会影响到硬盘上的数据。格式化仅仅是为操作系统创建一个全新的空的文件索引,将所有的扇区标记为“未使用”的状态,让操作系统认为硬盘上没有文件。因此,格式化后的硬盘数据也是能够恢复的,也就意味着数据的不安全。
安全删除工具的工作原理
由于磁盘可以重复使用,前面的数据被后面的数据覆盖后,前面的数据被还原的可能性就大大降低了,随着被覆盖次数的增多,能够被还原的可能性就趋于 0,但相应的时间支出也就越多。密级要求的高低对应着不同的标准,低密级要求的就是一次性将磁盘全部覆盖;高密级要求则须进行多次多规则覆盖。 通常有两个参考标准: 美国国防部 DOD 的 5220.22M 标准;北约 NATO 的标准 。参考标准实质就是多次覆盖的标准,规定了覆盖数据的次数,覆盖数据的形式。
覆盖原理(overwriting)
覆盖是指使用预先定义的格式——无意义、无规律的信息来覆盖硬盘上原先存储的数据。这是销毁数据的既有效又可操作的方法。如果数据被“成功”的完全覆盖,即使只覆盖一次,也可以认为数据是不可恢复的。硬盘上的数据都是以二进制的“1”和“0”形式存储的。完全覆盖后也就无法知道原先的数据是“1”还是“0”了,也就达到了清除数据的目的。
覆盖的方法: 根据覆盖时的具体顺序,软件覆盖分为逐位覆盖、跳位覆盖、随机覆盖等模式,根据时间、密级的不同要求,可组合使用上述模式,可靠的专业清除软件应同时支持多种模式。
各种抹除数据的方法
使用 shred
shared 简介
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
使用 secure-delete 软件包
secure-delete 软件包简介
secure-delete 软件包包含一些安全删除工具,这些工具能够安全清除文件数据、释放磁盘空间、交换分区和内存。 secure-delete 软件包中包含下列命令:
srm(secure remove) – 用于安全删除硬盘上现有的文件或者目录。
sdmem(secure memory wiper) – 用于清除计算机内存 (ram) 的数据痕迹。
sfill(secure free space wiper) – 用于清除磁盘可用空间的数据痕迹。
sswap(secure swap wiper) – 用于删除交换区所有数据痕迹。
安装 secure-delete 软件包
在 Ubuntu 中安装 secure-delete 工具,需要运行下列命令:
#apt-get install secure-delete
使用 srm 命令
srm 通过覆盖、重命名和 unlink 前截断数据来删除指定的文件,这可以防止其他人利用命令恢复或复原文件。
srm 命令格式:srm [-d] [-f] [-l] [-l] [-r] [-v] [-z]
选项
-d 忽略(与 rm 的兼容性)
-r, -R, –recursive 递归地移除目录内容
-f 快速模式(即不安全模式)
-l 降低安全性模式。
-l -l 再次降低安全性模式。
-v 详细模式
-z, –zero 覆盖文件后,文件使用的 zero 块
应用实例:
使用 rm 删除一个文件:
#rm myfile.txt
使用 srm 删除一个文件:
#srm -r myfiles
使用 sdmem 命令
sdmem ( Secure memory wiper 安全内存擦除器)可以删除以内存的数据,使数据不能被黑客恢复。
smem 命令格式: smem [-f] [-l] [-l] [-v]
选项:
-f 快速模式(即不安全模式)
-l 降低安全性模式。
-l -l 再次降低安全性模式。
-v 详细模式
应用实例:
使用详细模式删除内存的数据
#sdmem –v
图 1.sdmeme 命令执行界面
说明:图 1 是命令执行界面根据内存大小通常持续 5-10 分钟。执行过程可以使用 Ctrl C 中止。
使用 sfill 命令
sfill ( secure free space wipe )可用空间擦除命令可以删除在所有可用空间上的数据。
sfill 命令格式: sfill [-f] [-i] [-i] [-l] [-l] [-v] [-z] directory/mountpoint
选项
-f 快速 ( 和不安全模式 )
-i 仅清除可用 inode 空间,而不是可用磁盘空间
-i 仅清除可用磁盘空间,而不是可用 inode 空间
-l - 降低安全性。
-l -l 再次降低了安全性:
-v - 详细模式
-z – 使用 0 擦除最后的写入,而不是随机数据
directory/mountpoint 是在文件系统中用户所创建的文件的位置,位于用户想写入的分区。
应用实例:
使用详细模式可用空间一个目录的可用空间
#sfill -v /cjh1/
使用 sswap 命令
sswap(secure swap wiper)安全交换分区擦除器可以删除以安全方式存在于 swap 空间的数据。
sswap 命令格式:sswap [-f] [-l] [-l] [-v] [-z] swapdevice
选项
-f 快速模式(即不安全模式)
-l 降低安全性。
-l -l 再次降低了安全性。
-v 详细模式
-z - 使用 0 擦除最后的写入,而不是随机数据
应用实例:
在开始使用 sswap 前,您必须禁用 swap 分区,可以使用下列命令来查看安装的 swap 设备:
#cat /proc/swaps
使用下列命令禁用 swap :
#swapoff /dev/sda3
/dev/sda3 – 这是我的 swap 设备
禁用 swap 设备后,就可以使用下列命令用 sswap 擦除它:
#sswap /dev/sda3
完成上述命令后,需要使用下列命令重新启用 swap :
#swapon /dev/sda3
使用 GUI 工具 bleachbit
bleachbit 是一款开源免费的系统清理工具,功能类似 Windows 平台的 CCleaner 。除了用来删除垃圾文件, BleachBit 还可以用来文件粉碎、文件夹粉碎和擦除空闲空间等功能。这里说的文件粉碎功能其实就是上面介绍的命令的图形化实现。一般一些国家机密文件或公司重要文件都是用文件粉碎机来删除的,如果您的计算机里也有文件不希望被别人恢复,本工具是那些不熟悉命令行操作用户的最好助手。
首先安装软件
#apt-get install bleachbit
用户可以通过点击 “ 文件 ” 菜单展开其下拉菜单选择执行,见图 2 。
图 2.使用 GUI 工具 BleachBit
这三种功能的使用界面见图 3、图 4、图 5 。
图 3.粉碎一个文件的工作界面
图 4.粉碎一个文件夹的工作界面
图 5.擦除空闲空间的工作界面
说明:擦除空闲空间一般比较耗时。
使用 DBAN
DBAN 简介
DBAN 全名为 Darik\'s Boot and Nuke ,可支持多种文件系统,包括 Linux 的 Ext3 和 Windows 的 NTFS 。其安全性很高,美国太空总署亦在内部指定,硬盘在弃置前必须要经过它来处理。 DBAN 的工作原理便是反复地在同一磁区上写入无意义的数据,从而把数据还原的可能性减至最低。重写方式支持美国防部标准方式( DoD 5220-22.M 这种方法是美国国防部《清理和消毒标准》中的一部分,这种方法仅仅需要覆盖数据几次安全性没有古特曼方法高,但耗费的时间却相对较少。)和业界最高标准 Gutmann 方式(写入固定值和乱数共 35 次)。对于送往异地修理的故障磁盘,系统安全管理员提出了几项建议,“符合国防部标准的擦除处理(Department of Defense wipe)”就属于其中之一,至少将磁盘格式化并写入数据 7 次(注:其步骤包括完全格式化磁盘,然后写入由 0 和 1 组成的数据流;反转数据流中的 0 和 1 并再 次写入;最后,写入随机的数据流)。这些一来,即使以后有人想办法还原了旧磁盘里的残存数据,也只能得到一些不可读的垃圾信息。
DBAN 使用方法
用户在官方网站(http://www.dban.org/ )下载 ISO 文件刻录光盘,或者 unetbootin 工具把 DBAN 写入 U 盘。使用时,在 BIOS 下设置第一启动为光驱或 USB 盘。启动后工作界面如图 6 。
图 6.DBAN 启动界面
其中 F2 查看帮助信息, F3 是 DBAN 命令列表, F4 读取 RAID 设备,输入 “Enter” 进入交互模式,输入 “autonuke” 就开始进行全盘数据删除。
图 7 是交互模式工作界面选择要删除的硬盘后按 F10 即可开始工作。
图 7.交互模式工作界面
当看到 “DBAN succeeded” 表示硬盘资料删除已经完成见图 8:
图 8.硬盘删除工作完成界面
说明:一般 80G,7200 转的台式机硬盘需要 1 小时 50 分钟, 60G 笔记本电脑硬盘需要 2 小时 45 分钟。操作完毕后,整个硬盘就像新买的硬盘,没有分区,需要重新分区。(警告:请备份硬盘里面需要的资料,否则执行 DBAN 后,硬盘里面的所有资料将不能再恢复)。