扫盲 VeraCrypt——跨平台的TrueCrypt 替代品

文章目录

★引子

★先说说 TrueCrypt 的安全漏洞

★关于 VeraCrypt

★如何获取 VeraCrypt?

★如何安装 VeraCrypt?

★VeraCrypt 功能概述

★设置界面语言

★支持的加密盘格式

★支持的加密算法和散列算法

★加密盘的认证方式

★创建加密盘

★挂载加密盘

★格式转换功能

★PIM 功能

★扩容功能

★如何防范加密盘被破解?

★结尾

★引子

当年TrueCrypt死亡的时候,俺发过一篇《分析一下 TrueCrypt 之死(自杀or 他杀?),介绍一下应对措施》。当时俺提到:

因为TC的源代码是公开的,任何人都可以拿它的代码克隆出一个新的磁盘加密工具。所以官网变脸之后,已经陆续出现了几个克隆(代码fork)。假以时日,或许其中的某个克隆会再次成为主流。如果真这样的话,TC就涅磐重生了。

提醒一下:如果你对安全性的要求比较高,短期内(至少1年之内)不要急着去用这些克隆的TrueCrypt(这些克隆需要一定的时间才能成熟、稳定)。

如今已经过了大约一年半,再加上TrueCrypt又曝了高危安全漏洞,是时候介绍TrueCrypt的替代品了。

★先说说TrueCrypt的安全漏洞

这次的安全漏洞由Google的安全研究人员(James Forshaw)发现。共有2个漏洞(编号CVE-2015-7358、CVE-2015-7359),影响的是Windows平台,Linux和Mac OS X【没有】受影响。

(因为该漏洞只影响Windows平台,这说明该漏洞跟加密盘的文件格式【无关】)

对技术感兴趣的同学,可以谷歌看这2个漏洞的详细描述。

顺便表扬一下Google的安全研究团队,确实有两下子。之前大名鼎鼎的“Heartbleed 漏洞”也是 Google 安全研究团队曝光的。

★关于VeraCrypt

VeraCrypt是从TrueCrypt派生出来的开源项目,成立于2013年6月。其官网在 https://veracrypt.codeplex.com/ ——该网站托管于CodePlex(微软的开源平台)

它刚成立那会儿,TrueCrypt尚未死亡,所以VeraCrypt没有吸引太多的注意力。TrueCrypt死亡之后,VeraCrypt的使用量开始多起来。

此次曝光了高危漏洞之后,VeraCrypt很快就在8天之后(9月26日)发布了1.15版本,修复了该漏洞。此举令其曝光率大增。

俺之所以首先推荐VeraCrypt,除了此次修复漏洞及时,还有一个原因——其它替代品要么质量不如VeraCrypt成熟,要么功能不如VeraCrypt完备。

比如另一个名气比较大的替代品是CipherShed,目前还停留在“Pre-Alpha”阶段——也就是说,连“Beta品质”都没有达到。

★如何获取VeraCrypt?

建议直接从官网下载,【不要】从其它第三方的软件网站下载(大伙儿要吸取“XcodeGhost 事件”的教训)。

目前VeraCrypt支持三大桌面操作系统,具体如下:

Windows(WinXP或之后的版本,包括新出的Windows 10)

Linux(内核主版本号大于等于2.6)

Mac OS X(版本号大于等于10.6)

对于Windows用户,下载的exe安装包自带数字签名。另外,其官网还附上了不同平台安装包的“SHA散列校验值”和“PGP签名”。如果你下载的是Linux或Mac OS X的安装包,下载完之后,也请校验一下,以防万一。

★如何安装VeraCrypt?

(考虑到大部分读者是Windows用户,为了节省口水,本文后续章节只聊Windows下的VeraCrypt。使用其它平台的同学,请依样画葫芦

安装前,先确保当前用户具有“管理员权限”。

双击下载好的安装包(就是那个exe文件),然后一路点next就可以了。

★VeraCrypt功能概述

下面开始聊功能,这是本文的重点,看仔细喽。

前面说了,VeraCrypt是从TrueCrypt衍生出来的。所以其功能与TrueCrypt非常类似。关于TrueCrypt的功能介绍,俺写了一系列的傻瓜教程,包括如下:

TrueCrypt——文件加密的法宝

TrueCrypt 使用经验[1]:关于加密算法和加密盘的类型

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

TrueCrypt 使用经验[3]:关于加密盘的破解和防范措施

TrueCrypt 使用经验[4]:关于隐藏卷的使用和注意事项

如果你之前【没有】使用过TrueCrypt,强烈建议你先看完上述这几篇扫盲教程

为了打字省力,那些与TrueCrypt类似的功能,俺就【不】介绍了。下面俺只聊VeraCrypt的【新增功能】。

★设置界面语言

考虑到某些网友是洋文菜鸟,先说一下如何配置界面的语言。

如果你打开VeraCrypt之后,界面是英文,先到主菜单中点击“Settings”,然后再点击“Language”菜单项,就会弹出一个选择语言的对话框,你把列表框的滚动条拉到底部,就会看到“简体中文”和“繁體中文”。具体截图如下:

(之所以出现2个“繁體中文”,是分别对应“港台”)

选完中文之后,界面变为如下:

★支持的加密盘格式

VeraCrypt支持两种加密盘的格式,其中一种就是原先TrueCrypt使用的格式,另一种是VeraCrypt自己新创的格式。因此,如果你手头有原先TrueCrypt创建的加密盘,也可以用VeraCrypt直接挂载(mount)。

这两种格式的差异在于:VeraCrypt的新格式支持PIM功能(关于此功能,待会儿介绍)。

为了防止混淆,再唠叨一下关于加密盘的类型(“类型”与“格式”是两个概念,别混淆了)。

TrueCrypt支持两种类型的加密盘——物理加密盘(加密分区、全盘加密)和虚拟加密盘(卷文件);VeraCrypt也支持这两种类型。

所以,排列组合之后,VeraCrypt共支持如下4种:

旧格式(TrueCrypt格式)的虚拟加密盘

旧格式(TrueCrypt格式)的物理加密盘

新格式(VeraCrypt格式)的虚拟加密盘

新格式(VeraCrypt格式)的物理加密盘

当你使用旧格式(TrueCrypt格式)的加密盘,其操作方式与原先的TrueCrypt基本一样。

当你使用新格式(VeraCrypt格式)的加密盘,你可以配置PIM参数,也可以不配置(此时用的是默认值)。这个PIM参数有助于提升加密盘的安全性——主要是对抗“暴力破解”(本文后续章节会专门聊PIM功能)。

★支持的加密算法和散列算法

这方面,VeraCrypt与TrueCrypt大同小异——加密算法一样,散列算法多了一个SHA-256。

更详细的介绍,请大伙儿自行翻阅《TrueCrypt 使用经验[1]:关于加密算法和加密盘的类型》,俺就不浪费口水了。

★加密盘的认证方式

TrueCrypt原先支持两种认证方式:“密码”和“keyfiles”。这两种,VeraCrypt也都支持。相关的介绍,请大伙儿自行翻阅《TrueCrypt 使用经验[2]:关于加密盘的密码认证和 KeyFiles 认证》,俺就不浪费口水了。

另外,VeraCrypt还新增了一个PIM功能。从某种意义上讲,PIM也可以算是一种认证方式(因为挂载加密盘到时候也需要它)。关于PIM功能,本文下面专门用一个章节来详述。

★创建加密盘

跟TrueCrypt类似,会出现一个“向导界面”,引导你一步步完成加密盘的创建。开头几步跟TrueCrypt类似,俺就不贴图了。

到最后一步,稍微有点不同,俺来聊一下。

以下是向导最后一步的界面,此时你选好文件系统格式之后,直接点击“格式化”按钮。

点击之后,你会发现进度条没有动静。因为VeraCrypt需要收集到足够多的随机信息,用来创建相关的加密密钥。

此时,你必须在当前这个窗口内,频繁并迅速地移动鼠标(随机移动)。大约四分之一柱香的功夫,就会出现进度条。

出现进度条,说明已经开始格式化。格式化完成后,会提示你。

★挂载加密盘

挂载加密盘的界面,跟TrueCrypt有点小区别——多了两个复选框。

其中一个复选框是“TrueCrypt Mode”——勾选它是为了挂载旧格式(TrueCrypt格式)的加密盘。

另一个复选框是“Use PIM”——这个复选框的作用,留到后面的章节介绍。

提醒一下:

VeraCrypt挂载【新格式】加密盘的时候,你会明显感觉很慢。主要是因为VeraCrypt强化了安全性(具体的技术细节后面会提及)。

★格式转换功能

VeraCrypt不但可以打开旧格式(TrueCrypt格式)的加密盘,而且可以把旧格式转化为新格式(VeraCrypt格式)。

转换过程很简单——通过修改认证信息来进行。

也就是说:当你修改了某个旧格式加密盘的密码或者keyfiles,修改成功之后,该加密盘就变为新格式了。

提醒:该转换是【不可逆】的。也就是说,你无法用VeraCrypt把新格式转为旧格式。

★PIM功能

现在开始讲PIM——这是VeraCrypt新增的功能,因此俺就多费点口水。

所谓的PIM是洋文“Personal Iterations Multiplier”的缩写。通俗地说就是:你可以自定义“加密盘的头部密钥生成时的迭代次数”。这句话比较绕口,要想解释清楚,需要聊相关的技术实现机制。

◇技术实现机制

(对技术细节【不】感兴趣的同学,就不用看俺的解释了。直接跳到下一节“VeraCrypt相对TrueCrypt的改进”)

加密盘格式简介

不论是新格式还是老格式,加密盘的数据大致可以分为两部分:“头部”和“数据区”。

所谓的“数据区”,存放的就是加密盘中文件系统的数据(通俗地说,就是你放到加密盘中的文件和目录的信息)

所谓的“头部”(header),存放的是加密盘本身的一些信息。刚才提到的“数据区”,其加密的密钥叫“Master Key”(也叫“主密钥、数据区密钥”),这个“Master Key”就是存储在加密盘头部的。此外,像“加密盘格式的版本号”、“是否有隐藏卷”等信息,也是存储在头部的。

“Header Key”的生成机制

头部包含了很多加密盘的关键信息,自然也是要加密的。那么加密头部的密钥从哪里来捏?这个“Header Key”(也叫“首密钥、头部密钥”)是根据你输入的认证信息,来生成的(提醒一下,认证信息有2种:密码和keyfile)。

VeraCrypt采用“PBKDF2算法”来生成“Header Key”

在生成“Header Key”的过程中,会采用你指定的散列算法进行N次迭代,以生成一个难以猜测的密钥。这个N就是前面所说的“迭代次数”。

每当用户要挂载某个加密盘,软件界面会提示用户输入“密码和keyfile”。然后根据用户的输入,计算出“Header Key”,然后用这个密钥对加密的头部进行解密(解到内存中)。如果解密成功,就说明用户输入的是对的。反之,则提示用户输入错误。

N次迭代的用途

从上述可以看出:这个“迭代次数”越大,计算头部密钥的时间就越长,因此挂载加密盘的过程就越慢;表面上看,这是一个缺点。但其好处在于:如果某个攻击者想要采用暴力破解的方式对“头部”进行穷举解密,每次一次尝试也同样需要花很长时间(同样要迭代N次)。所以,当N足够大,暴力破解就变得不可行。

“Header Key”和“Master Key”分离的好处

从上述可以看出,加密盘中存在两种密钥:“Header Key”和“Master Key”。为啥要搞出两种密钥捏?其中一个好处是为了方便用户修改密码。当用户修改加密盘的密码或keyfile,只需要“重新加密头部”,数据区不用改动(因为“Master Key”【没有】发生变化)。

对于那些超大的加密盘(几百GB或几TB),这个好处非常明显。

◇VeraCrypt相对TrueCrypt的改进

如果你刚才没有看技术细节的解释,直接跳到这里,你只需记住如下结论:

PIM功能就是用来配置加密盘的某个“迭代次数”的。“迭代次数”越大,暴力破解就越难;同时,挂载加密盘也越慢。

对于原先的TrueCrypt,它的迭代次数是写死在程序代码中的。而且TrueCrypt使用的迭代次数偏小(这是TrueCrypt被批评的主要问题之一)。

到了开发VeraCrypt的时候,其开发团队把原先默认的迭代次数调大(大约增加了两到三个数量级)。迭代次数调大之后,就显著增加了“暴力破解”的难度。

此外,从VeraCrypt 1.12版本开始,在界面上提供了一个功能,允许用户自定义每个加密盘的“迭代次数”——这就是下面要讲的“PIM的用户界面”。

◇用户界面

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

VeraCrypt提供了相关的用户界面,让你可以自定义PIM数值的大小。前面说了,PIM越大,暴力破解越难;但同时,挂载加密盘也越慢。由于不同的用户有不同的需求,所以,VeraCrypt干脆提供一个界面让你自己设定PIM的大小。当然,如果你懒得设置,也可以直接用内置的默

创建加密盘时

VeraCrypt 同样提供了“创建加密盘的向导”。该向导前面5步跟 TrueCrypt 是一样的,俺就略过不提。

下面是创建加密盘的向导界面第6步。如果你想使用 PIM 功能,需要勾选“Use PIM”这个复选框。

下面是创建加密盘的向导界面第7步

如果第6步勾选了“Use PIM”,下一步就会让你输入PIM数值。这个数值要牢记,其重要性等同于认证信息(密码和keyfile)。

(如果输入或者不填写,则表示——使用默认的PIM数值)

如果你设置的密码过于简短,那么VeraCrypt会强制让你输入一个比较大的PIM数值(大于485)。

挂载加密盘时

下面是挂载加密盘的界面。如果你创建加密盘的时候,指定了PIM数值,那么在挂载的时候,需要输入【相同的】PIM数值。如果输入的数值与创建时指定的PIM数值不一致,则挂载失败。

再次罗嗦一下:一旦你在创建加密盘时设置了“PIM数值”,【千万别忘记了】——忘记它的后果就如同忘记密码!

◇“PIM数值”与“迭代次数”的换算公式

(如果你不关心技术细节,这个换算公式你可以不用看)

根据VeraCrypt的文档,PIM根据如下公式换算成迭代次数。

1.对于“系统加密分区”:迭代次数= PIM x 2048

2.对于“虚拟加密盘”或者“非系统加密分区”:迭代次数= 15000 + (PIM x1000)

★扩容功能

另一个比较显著的新功能是“加密盘扩容”。原先的TrueCrypt没有扩容功能——如果你的加密盘,空间不够了,你不得不重新创建一个更大的加密盘,然后把原先加密盘的文件拷贝到新加密盘(步骤繁琐)。

如今有了这个扩容功能,你可以直接扩大原有加密盘的容量。前提是:文件系统必须是NTFS。

★如何防范加密盘被破解?

下面这篇文章,其实已经包含在本文开头列出的TrueCrypt教程中。

TrueCrypt 使用经验[3]:关于加密盘的破解和防范措施

因为这篇的内容比较重要,俺再次唠叨一下:如果你对安全性的要求很高,一定要把上述这篇仔细看完。

VeraCrypt的开发比较活跃,今后多半还会增加新的功能。到时候俺会补充到这篇文中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G1M2OO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券