TrueCrypt 使用经验[2]:关于加密盘的密码认证和 KeyFiles 认证

文章目录

★如何用好“密码认证”?
★KeyFiles 认证的优点
★KeyFiles 认证的缺点
★关于 KeyFiles 的生成
★关于 KeyFiles 的存放
★KeyFiles 的其它注意事项
★关于 KeyFiles 的高级用法

接着前一篇《关于加密算法和加密盘的类型》的话题,今天说说 TrueCrypt 的两种认证方式:老式的“口令认证”和新式的“Key Files 认证”。

★如何用好“密码认证”?

用过电脑的同学,肯定对密码(口令)的使用非常熟悉了。所以俺就不用再解释基本概念了,只是重点聊一下密码认证的潜在风险和防范措施。

◇对于加密盘,弱密码的危害更大

关于“弱密码的危害”,想必很多同学都听说过。但是有个细节,可能很多人没有意识到。那就是:弱密码对磁盘加密的危害更加明显
咱们拿“操作系统口令”和“加密盘口令”进行对比。
如果某个操作系统做过安全加固,通常会在系统中设置“无效登录的上限”。只要攻击者尝试的无效口令超过这个上限,该用户就会被锁定。但是对于磁盘加密工具而言,无法像操作系统那样,限制无效口令的次数。因为针对加密盘的暴力破解,前提通常是:攻击者已经拿到存储介质(比如 硬盘、U盘、等)。在这种情况下,攻击者可以使用自己的工具进行密码尝试(不会有次数限制)。
所以,你的加密盘一旦用了弱口令,就很容易遭到暴力破解。

◇攻击者如何暴力破解密码

针对加密盘的暴力破解有很多种,本小节所说的是针对”用户密码”的暴力破解。

对于短密码
假如你的加密盘仅仅使用口令认证,而且你的口令比较短(比如说小于6个字符)。那么攻击者只要尝试所有的6字符组合,就必然可以试出你的口令。顺便说一下,很多网友用的口令只有小写字母和数字,那么6字符的口令,只有(26+10)的6次方。这个数并不算大,可以被穷举。

对于特定形式的密码
所谓的“特定形式密码”,比较典型的例子就是日期(尤其是生日)。这是很多菜鸟常用的坏习惯。
很多不懂技术的同学会有一个错觉:误以为用日期做口令,好像长度还比较长(如:2000–01–01 有10个字符),似乎很保险。
其实捏,用日期做口令是很危险的。因为常用的日期,大部分都分布在最近100年的范围内,也就是说,可能性小于 365*100;即使对每一个日期考虑不同的写法格式(比如 yyyymmdd、yyyy-mm-dd、mm/dd/yyyy、等等)顶多再乘以20倍,连一百万都不到。对于暴力穷举,这属于小儿科。

◇如何构造强密码

要构造一个又好记又复杂的密码,简直称得上是一门艺术。这里面涉及很多技巧,并不是每个人都懂这些技巧。
关于这方面的技巧,俺在2010年专门写过一篇《如何防止黑客入侵[3]:如何构造安全的口令/密码》。那篇旧文写得比较详细。你只要掌握其中的2到3种技巧,就可以构造出比较复杂又比较好记的密码。所以本文就不再啰嗦了,以免把篇幅拉得太长。

★KeyFiles 认证的优点

说完密码认证,再来说说 KeyFiles 认证。相对于“密码认证”,这种方式比较新颖,俺多费点口水介绍。

◇大大降低暴力破解的风险

前面提到:使用密码的认证方式,如果密码太简单或太短,就是容易遭暴力破解。而 KeyFiles 认证就避免了这个风险。

◇好记

对于密码认证,为了对抗暴力破解,需要把密码设置得很复杂又很长。但是万一哪天你自己忘了,那就歇菜啦。
而使用 KeyFiles 进行认证,你只需要记住某个或某几个文件。相对而言,记忆的难度小多了。

◇可以同时设置多个

针对同一个加密盘,只能设置一个密码,但是可以指定多个 KeyFile 文件。

因为上述这些优点,俺强烈建议:能用 KeyFile 的场合,尽量用 KeyFiles。如果同时用 KeyFiles 和密码,当然更好。

★KeyFiles 认证的缺点

凡事都有两面性。说完 KeyFiles 的优点,再来说说缺点。

◇有些场合没法用 KeyFiles

(在前一篇博文俺有提到)当你用 TrueCrypt 加密系统分区的时候,只能用口令,没法用 KeyFile

◇偷窥的风险

对于传统的密码方式,当你输入密码的时候,屏幕上显示的是星号(或圆点)。这种情况下,即使有人偷看你的屏幕,也只能知道密码的长度,而无法知道密码的内容。但如果使用 KeyFiles 方式,在打开加密盘的时候就需要指定某些 KeyFiles,万一有人偷看你的屏幕,就糟糕啦。
(后面会介绍,如何降低偷窥的风险)

★关于 KeyFiles 的生成

关于 KeyFiles 的使用,可以有两种方式:
1. 选择已有的文件作为 KeyFiles
2. 让 TrueCrypt 帮你生成 KeyFiles

下面分别说说这两种搞法。

◇选择已有的文件当 KeyFiles

理论上,任何一个文件都可以拿来当 KeyFile。但是从密码学角度而言,有的文件适合拿来做 KeyFile,有的不合适。
要达到好的加密效果,KeyFile 至少满足如下特征:
1. 文件内容最好是杂乱无规律(套用信息学的术语,“熵”要尽量大)
2. 最好是二进制文件(一般来说,“二进制”格式的杂乱度比较大)
3. 文件至少超过 1KB(TrueCrypt 的用户手册要求至少 30 字节。但是考虑到你挑选的文件,“熵”未必足够大。所以俺个人建议至少 1KB 比较保险)

虽然俺建议 KeyFile 至少超过 1KB,但并不是越大越好。因为 TrueCrypt 最多只提取 KeyFile 开头一兆字节(1MB)的内容进行处理。所以用太大的文件没意义(文件尺寸在几兆以内足矣)。
综合考虑这几个因素,日常碰到的文件中,可以考虑用来做 KeyFile 的主要有:某些图片文件(比如 JPG、PNG、GIF、但不要用 BMP)、某些音乐文件(比如 MP3、WMA、但不要用 WAV)、各种压缩包(ZIP、7Z、RAR、TGZ、BZ2、等等)。
上述这几类文件格式,其内容都是基于压缩的,所以“熵值”足够大,适合用于作 KeyFiles;俺特别注明 BMP 和 WAV 不适合作 KeyFile,因为这两种格式通常是不压缩滴。

◇让 TrueCrypt 生成 KeyFiles

让 TrueCrypt 生成 KeyFiles,操作其实很简单 — — 在 TrueCrypt 主菜单点“Tools”然后再点“KeyFile Generator”菜单项。会弹出一个对话框,你会看到里面有很多数字在自动变化。这时候你要随机并迅速地移动你的鼠标(因为 TrueCrypt 会通过鼠标位置进行采样,以增加随机性)。大约半炷香之后(时间越长,随机性越好),你就可以点对话框下面的“Generate and Save KeyFile”按钮,然后会弹出一个“文件保存对话框”,让你保存刚生成的 KeyFile 到某处。

下面是这种方法的优缺点分析。

优点
它生成的 KeyFiles 必定符合刚才所说的 — — 具备足够好的加密效果。

缺点1
为了让“熵值”足够大,TrueCrypt 采用某种随机算法来生成 KeyFiles(对密码学感兴趣的同学可以参见 TrueCrypt 手册的“Random Number Generator”章节)。因为是随机生成的,所以这个 KeyFiles 几乎一定是全新的。
这里的缺点在于,如果随机生成的 KeyFile 没做备份而且搞丢了,你就惨啦。口令忘了还可以使劲回忆,KeyFile 搞丢了基本上就没辙啦 — — 加密盘就废了,再也打不开。

缺点2
TrueCrypt 生成的 KeyFile 都有个特点,文件大小固定是64字节。这就不利于隐蔽(关于 KeyFiles 的隐蔽性,下面会聊到)。

◇哪种方式比较好?

对于普通的网友,使用方案1(现有文件作 KeyFiles)是比较合适滴。再次啰嗦一下,如果你使用现有文件,一定要按照前面说的经验,以确保你选择的 KeyFiles,其内容的“紊乱度”(熵值)足够大
对于安全性有特殊需求的同学,可以考虑使用方案2(让 TrueCrypt 生成 KeyFiles)。这种方式有一些特殊的用处。比如在本文末尾有提到,还可以用来对付酷刑逼供哦。

★关于 KeyFiles 的存放

◇本机存储 VS 外部存储

总的来说有两种方式存放 KeyFiles:
1. KeyFiles 跟加密盘在同一个电脑中
2. KeyFiles 跟加密盘不在同一个电脑中(比如放在外置的U盘)

一般来说,第二种方式虽然稍微麻烦,但安全性更好 — — 即使攻击者偷走你的电脑也拿不到 KeyFiles。
如果你考虑用外置存储的方式放置 KeyFiles,手机是一个不错的选择。用手机存放 KeyFiles 有如下优点:
1. 手机总是随身携带
2. 如今大部分手机都支持 U盘模式

◇KeyFiles 的伪装和隐蔽

前面说了,使用现有的文件当 KeyFiles,隐蔽性比较好。而且也说了,使用手机做外部存储比较好。
下面就来说说,这种情况下,如何增加隐蔽性。

以音乐文件为例
很多人的手机上都会存放一些歌曲(比如MP3)。如果是智能手机,存储空间动不动就是几个 GB,可以轻松存放上千首(甚至上万首)歌曲。那么你可以从这些歌曲中挑选某几首,来作为你的 KeyFiles。挑选的歌曲最好是让你印象深刻的(可以是特别喜欢的,也可以是特别讨厌的)。这么干有如下几个优点:
1. 隐蔽性足够好(手机上存储音乐文件是很普通的,即使你被六扇门逮捕,朝廷走狗检查你的手机,也不会起疑心)
2. 印象深刻的歌曲,不容易记错。
3. 在成百上千首歌曲中挑选某几首歌曲做 KeyFiles,穷举的难度非常大(下面会提到)。

虽然俺举的是音乐文件的例子,但在实际操作过程中,你可以自己变通一下 — — 比如把音乐文件换成图片文件,效果也差不多。

◇KeyFiles 的个数

前面说了,TrueCrypt 支持同一个加密盘用多个 KeyFiles。那么,KeyFiles 的个数设定为几个比较好捏?俺个人建议,设定为 5至10 个。
增加 KeyFile 的个数,在某种情况下会加大攻击者的难度。还拿刚才那个例子来说事儿:
假设你的手机上有一个音乐目录,里面有300首歌曲(这不算多),然后你任意挑选其中6个做加密盘的 KeyFiles。再假设攻击者(通过某种方式)知道你用这个目录里的音乐文件作 KeyFiles。那么攻击者就企图用穷举方式,尝遍该目录下所有文件的组合。那么他/她需要尝试多少次捏?
因为攻击者并不知道你选择了几个文件,所以要先穷举1个文件的组合、然后是2个文件的组合、3个文件的组合……(直到穷举成功或放弃)
如果俺没记错的话,计算排列组合总数,算式大概如下
300挑1的组合 — — 这个不用算,就是300种
300挑2的组合 — — (300*299)/(2*1)
300挑3的组合 — — (300*299*298)/(3*2*1)
300挑4的组合 — — (300*299*298*297)/(4*3*2*1)
……
从上面这个例子可以看出:当 KeyFiles 的数目略微增加,排列组合的总数会猛增到天文数字。但 KeyFiles 也不是越多越好 — — 因为还要考虑自己遗忘或记错的风险。所以俺觉得,“5至10个”是一个平衡点。

★KeyFiles 的其它注意事项

◇要确保 KeyFile 的文件内容不变

因为 TrueCrypt 是根据 KeyFile 的内容来生成认证信息。所以你一定要确保每一个 KeyFile 的文件内容不被修改。如果某个 KeyFile (开头1MB)的内容被改动过,下次你用这个文件登录,就会失败。
(至于 KeyFile 的文件名和存放位置,可以随便改,没关系)

◇关于“默认 Key Files”

TrueCrypt 有一个功能叫“Default KeyFiles”。使用这个功能,你可以指定某些文件作为默认的 KeyFiles。指定了之后,你每次打开某个加密盘,都会自动使用这些 KeyFiles 啦。

优点
1. 提供了便捷性(不用每次打开加密盘都选择 KeyFiles)
2. 防止偷窥

缺点及解决方法
1. 灵活性不够(所有的加密盘都会依赖于默认的 KeyFiles)。
2. 如果攻击者通过某种方式拿到你的 TrueCrypt 配置文件(位于 %APPDATA%\TrueCrypt 目录下的 Configuration.xml),就会知道你的默认 KeyFiles 放在哪个目录。

要防止缺点1
TrueCrypt 的配置文件是基于当前的操作系统用户。可以通过创建多个操作系统用户,来增加灵活性。

要防止缺点2
你可以在“默认KeyFiles”的基础上,再为某个加密盘额外指定额外的 KeyFiles。这样一来,即使攻击者知道你的默认 KeyFiles,也无法知道额外的 KeyFiles

★关于 KeyFiles 的高级用法

◇如何用 KeyFiles 应对酷刑逼供?

本来这篇博文已经写完了。但是看到某读者在前一篇博文的留言,提到说:不管 TrueCrypt 的技术有多好,都无法对付酷刑逼供。所以俺再额外补充一个小节,说说“如何用 KeyFiles 应对酷刑逼供”。

不管哪种酷刑逼供,要想得手都有一个前提条件 — — 受刑的人确实知道某些信息。
如果你的加密盘使用 KeyFiles 认证,并且这个 KeyFiles 是由 TrueCrypt 随机生成的。那么,只要你在被捕之前,能够来得及销毁 KeyFiles(包括其备份),之后的酷刑逼供对你就没有用了。因为 TrueCrypt 随机生成的 KeyFiles,连你本人也不知道文件内容。这种情况下,酷刑逼供是没有用滴。
这个招数的难点在于:如何能够及时销毁 KeyFiles?关于这方面的讨论,属于“社会工程学”领域,已经超出了本文范围。所以俺就不展开了。

回到本系列目录

俺博客上,和本文相关的帖子(需翻墙)
TrueCrypt — — 文件加密的法宝
扫盲 VeraCrypt — — 跨平台的 TrueCrypt 替代品
文件加密的扫盲介绍
扫盲文件完整性校验 — — 关于散列值和数字签名

版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2013/08/truecrypt-2.html

Written by

编程随想的blogspot镜像,欢迎关注!编程随想:IT宅,热衷于:抹黑党国、揭露洗脑、普及翻墙。 偶尔会谈点技术。

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store