delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

28 Feb 2012

全盘加密

最近在琢磨一个产品里实现全盘加密的问题,简单来说就是加入存储卷的硬盘存储的是完全加密的数据。对于保存机密数据(例如患者数据)的存储设备来说,这一点十分重要,举例来说,如果硬盘出现故障,OP可以直接把硬盘拆下送回厂商,而不是必须做抹除数据的动作。

之前以为 AES-XTS 会导致延迟,实测发现 FreeBSD 的 GEOM_ELI 实现(配合 Xeon 5600 系列的 AES-NI 指令集)其实已经可以做到几乎没有差异了。因此,大致的想法是:

  • 主机的非易失性存储上保存密钥(从 /dev/random 中dd),妥为备份;
  • 所有的交换区均作加密(特别是在硬盘上的,如果有的话);
  • 系统引导过程中使用保存的密钥;

做了个原型出来,先测测再说。


Archived: 4 Comments

guest | March 1, 2012 1:05 AM

请问现在最常用的AES加密模式都有哪些,适用于什么场合?ECB、CBC、CFB、OFB等看着不知所云。

Xin LI replied to comment from guest | March 1, 2012 12:11 PM

磁盘上一般是AES-XTS。ECB,CBC,CFB,OFB这些都是基础概念,如果懒得看书的话,应该也没必要了解。

outcrop | April 24, 2012 5:02 AM

truecrypt的思路不错,可以直接加密整个操作系统。

还有个有意思的功能:Plausible Deniability ,可以设置两套密码,其中一套密码是敏感信息的,另外一套是伪敏感信息的;从数据分析上不能证明或发现敏感信息区。

但不知道BSD的支持如何,没尝试。

Xin LI replied to comment from outcrop | April 25, 2012 5:24 PM

我之前移植过一个版本(现在 port 里面应该有别人做的版本),FreeBSD 上是可以用的。

至于说Plausible Deniability,它的做法是有问题的,人家还是可以复制到副本上慢慢对付(例如,写些数据看看哪些地方没变),甚至是悄悄装上一些其他的监听设备。计算机上有很多东西并不是普通用户能够接触的,个人认为这类东西只是心理安慰和防止笨贼而已。