查看文章 |
TrueCrypt的安全性还真是不错
2008-01-24 00:57
为防止TrueCrypt的虚拟盘文件损坏后手足无措,晚上抽空看了一下TrueCrypt的文件结构和使用的加密方法。 TrueCrypt文件的前512字节是加密相关的信息: Offset Length Description ------------------------------------------ Unencrypted: 0 64 Salt Encrypted: 64 4 ASCII string 'TRUE' 68 2 Header version 70 2 Required program version 72 4 CRC-32 checksum of the (decrypted) bytes 256-511 76 8 Volume creation time 84 8 Header creation time 92 8 Size of hidden volume in bytes (0 = normal volume) 100 156 Reserved (set to zero) 256 32 Secondary key (LRW mode) 288 224 Master key(s) 这512字节的前64字节是salt,后面的部分用口令和salt进行加密。要验证一个密码是否正确,就得用这个密码和salt对后面的数据进行解密运算,然后看偏移64字节算出来后是不是“TRUE”,如果是的,说明密码正确。 但有个很关键的问题:对于破解者来说,要正确进行解密,除需要密码外,还需要知道使用了什么首密钥得出算法等一系列信息。而TrueCrypt并没有在任何地方保存这些信息。TrueCrypt的办法是把所有可能的组合都试一遍。在我的机器上,全部试一遍的耗时大约是420ms,这对于正常使用来说是完全可接受的,而对于暴力破解来则几乎不可接受。在假设不知道任何相关信息的情况下,一秒钟试不了几个密码。当然我用的就是TrueCrypt自己的算法函数,不过估计即便进行优化带来的改善也很有限。 另外,用TrueCrypt的朋友一定要使用“备份加密卷头信息“的功能,否则,一旦这前512字节中关键的部分损坏,即使知道密码也无法还原数据。 2008.1.25 昨天晚上又看了一下代码,发现运算耗时最重要的原因是hash都进行了上千次,太寒了。 |
类别:技术探索 research
| 浏览()
| 评论 (6)