★如何用好密码认证

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

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

  关于"弱密码的危害",想必很多同学都听说过。但是有个细节,可能很多人没有意识到。那就是: 弱密码对磁盘加密的危害更加明显 。
  咱们拿"操作系统口令"和"加密盘口令"进行对比。
  如果某个操作系统做过安全加固,通常会在系统中设置"无效登录的上限"。只要攻击者尝试的无效口令超过这个上限,该用户就会被锁定。但是对于磁盘加密工具而言,无法像操作系统那样,限制无效口令的次数。因为针对加密盘的暴力破解,前提通常是:攻击者已经拿到存储介质(比如 硬盘、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 的文件名和存放位置,可以随便改,没关系)

◇关于"默认KeyFiles"

  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 使用经验[2]:关于加密相关推荐

  1. dm-crypt——多功能 Linux 磁盘加密工具

    dm-crypt--多功能 Linux 磁盘加密工具 ★"dm-crypt/cryptsetup"是啥玩意儿? 在某些技术文章中,"dm-crypt"和&quo ...

  2. 磁盘加密技术保障数据安全之七种武器

    TruCrypt.PGP.FreeOTFE.BitLocker.DriveCrypt和7-Zip,这些加密程序提供了异常可靠的实时加密功能,可以为你确保数据安全,避免数据丢失.被偷以及被窥视. 很少有 ...

  3. 让U盘变成安全的加密便携式绿色软件盘

    QQ.MSN.RTX的聊天历史记录,有时候在处理问题时,想查看一下,但换台电脑,就查看不到了,怎么办?Foxmail在公司收取的邮件,在家就看不到了,怎么解决?SecureCRT存放大量服务器SSH密 ...

  4. 小工具轻松为U盘加密

    QQ.MSN.RTX的聊天历史记录,有时候在处理问题时,想查看一下,但换台电脑,就查看不到了,怎么办?Foxmail在公司收取的邮件,在家就看不到了,怎么解决?SecureCRT存放大量服务器SSH密 ...

  5. 第二届安洵杯2019部分writeup

    Web easy_web 参数可疑:?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd= TXpVek5UTTFNbVUzTURabE5qYz0进行两次base64解密, ...

  6. VirtualBox免费虚拟机使用简介、3G无线上网的Virtualbox实现

    虚拟机,顾名思义,就是虚拟出来的电脑,这个虚拟出来的电脑和真实的电脑几乎完全一样,所不同的是它是在硬盘上的一个文件中虚拟出来的,所以你可以随意修改虚拟机的设置,而不用担心对自己的电脑造成损失.当前运行 ...

  7. [转]信息安全相关理论题(二)

    27.在工程实施之前,验收方可以不给施工方弱电布线图纸,但施工结束后必须有图纸 A. 对 B. 错 您的答案: 标准答案: B 28.在OSI七层协议中,提供一种建立连接并有序传输数据的方法的层是 A ...

  8. Volatility2安装使用以及CTF比赛题目(复现)

    Volatility2安装使用以及CTF比赛题目(复现) 一 .简介 二 .安装Volatility 三 .安装插件 四 .工具介绍 五 .使用方法 1.系统基本信息(windows.info) 2. ...

  9. ssh 远程复制文件_如何在不输入密码的情况下通过SSH远程复制文件

    ssh 远程复制文件 SSH is a lifesaver when you need to remotely manage a computer, but did you know you can ...

  10. 云服务器的文件彻底删除后,保护隐私就该如此 – 彻底删除文件数据,使其永远无法恢复!...

    自己暂时没有这方面的需求,但是单位有老同志相继退休,他们会要求技术部门完全清除他们电脑硬盘的所有数据.不是格式化全盘这么简单,而是要做到完全清除,说白了就是使其无法利用数据恢复软件或设备进行恢复.这样 ...

最新文章

  1. 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
  2. Django 各类配置选项全集
  3. 改进,从一个数组中找出 N 个数,其和为 M 的所有可能
  4. [转载].NET中高效能的socket编程
  5. 接口与继承字段常量关系
  6. 分布式系统设计原理与方案
  7. PROC简单使用用例--VC连接ORACLE
  8. 用pytorch及numpy计算成对余弦相似性矩阵,并用numpy实现kmeans聚类
  9. linux上离线安装bcp,无法在Linux上安装Pyodbc
  10. 求两个数字的乘积,如果大于0,说明两个数字同号,如果小于0,说明两个数字异号,如果等于0,说明其中一个是0
  11. 数仓业务容错利器:物理细粒度备份恢复技术
  12. 献给支持51CTO博客的博友们-----做自己喜欢的事情
  13. ac3168无线网卡驱动下载_计算机基础:网卡
  14. jquery显示与隐藏效果
  15. MSYS2 安装和配置
  16. MATLAB2018a解压文件损坏,文件解压失败与压缩文件文件已经损坏的解决办法
  17. 2、SpringBoot接口Http协议开发实战8节课(7-8)
  18. Java 实例 – 打印平行四边形和打印倒立的三角形
  19. 大数据技术的概论(2)
  20. 3.Omni-USDT关于支付手续费的UTXO顺序问题研究

热门文章

  1. android获取连接wifi名称,Android开发:获取手机当前连接的WiFi名称
  2. (error) MOVED 4848 172.26.158.xxx:xxxx
  3. 立体栅格地图_具有立体效果的地图制作
  4. OJ 1038 宋小胖买切糕
  5. reduce具体使用以及使用reduce,toString,flat进行数组降维
  6. meltdown漏洞解释_“ Meltdown” CPU漏洞的简化解释
  7. JavaScript实现点击一下显示,再点击一下隐藏的功能(使用工厂函数)
  8. iOS App页面置灰
  9. Express Session的使用
  10. python主线程执行_python多线程学习一