硬盘加密方案确定

这次买电脑之后,就一直在关注硬盘数据备份、加密方面。备份不用多说(尽管到现在备份方案还没有确定),加密看来看去也就是BitLocker、TrueCrypt那么几款软件。

BitLocker系统自带,最方便,但最大的问题是只在vista以上系统可用,XP下有BitLocker To Go,但是只读,Linux什么的就更读不了了。

TrueCrypt用的人比较多,但我直觉有一种抵触情绪,加之有人说此软件作者身份不明,源代码没有svn等的托管而直接是个压缩包,怀疑有中央情报局的后门(详见http://huaidan.org/archives/2751.html),果断弃之。

许多地方推荐FreeOTFE,就下了一个试试,和其他软件一样,可以虚拟文件磁盘或者加密整个分区,阅读了全部的英文说明书后,倒是觉得FreeOTFE的“兼容Linux的磁盘加密”比较有创意。

当时偶还不怎么会Linux,说明书中介绍了三种Linux下的加密:cryptoloop、dm-crypt、LUKS。看示范程序感觉cryptloop比较通俗易懂,结果呢,昨天在Linux里打命令才发现,Linux在2.6.32内核彻底去除了cryptoloop模块,也就是说这个太旧太垃圾,推荐使用dm-crypt。于是我就用dm-crypt实现了,Linux和Windows互操作成功。

但是觉得这事情怎么这么不靠谱。首先,dm-crypt和cryptoloop一样,是直接用用户的key加密整个文件,也就是说password是不能修改的。其次,挂载分区时,要自己指定加密算法、hash算法、加密位数等各种参数,随便错了一个解出来便是一堆乱码即一个未格式化的分区。

于是再看说明书,有一句话吸引了我

As well as using the "File | Linux | Mount file/partition…" menu items, LUKS volumes may also be mounted using the main "File | Mount file/partition…" menu items and toolbar buttons. (FreeOTFE detects LUKS volumes by their signature and offers to mount them appropriately)

这说明LUKS是个类似于BitLocker,或者FreeOTFE本身加密功能的东西,分区的头部是写有加密信息的。感觉不错,Google下LUKS的文档,找了半天最后还是不得不从LUKS官方下了份specification——这年头,不懂E文就别学电脑。。

大致读完,根据其描述的加密手段,总结LUKS特点如下:

1,加密文件的是随机生成的master key而不是用户密钥,即支持改密码
2,可以添加最多8个密钥
3,忘记密码时无法进行数据恢复(这样的话就不用郁闷BitLocker时给的那个recovery key放哪里比较好不会被JC叔叔搜去,数据更安全,记性不好怕丢密码的话可以多设几个密钥分别放在姥姥家舅舅家。。)

我表示非常满意。决定使用之:

cryptsetup luksFormat /dev/sda4 password.txt
cat password.txt | cryptsetup luksOpen /dev/sda4 home
mkfs.vfat –n BASE /dev/mapper/home
cryptsetup luksClose /dev/mapper/home

要进Windows测试之前,突然发现,Computer中已然多出了一个卷“34 GB Encrypted”,点开自动跳出密码输入框,把密码拷贝过来(我用的password.txt是512字节。。只能拷贝的。。囧。。),就打开啦~

把植物大战僵尸拷进去,unmount,开Windows~

打开FreeOTFE,昨天用的dm-crypt,而LUKS默认的hash算法是sha1,所以先把算法驱动装上。mount第四个分区,FreeOTFE自动弹出LUKS专用的对话框,而不是其本身或者Linux的那种。选使用Key文件,找到刚才的password.txt,确认~稍稍延迟了两秒,因为要挨个比对8个密钥,并且解密出来的master key要checksum以确认密码是否正确,不像另外的加密方式,不管密码正不正确(也没法判断)就挂载,由用户自己从分区的可操作性判断密码或者设置是否正确。

感觉很不错。回头用这个加密U盘,省得打印室的autorun或者文件夹病毒骚扰,FreeOTFE是支持readonly挂载的。

One thought on “硬盘加密方案确定”

Leave a Reply

Your email address will not be published. Required fields are marked *