BestCrypt:跨平台文件系统加密

作者:Mick Bauer

2002 年 3 月对于个人密码工具的倡导者来说是糟糕的一个月。Network Associates 公司正式停止了对其 PGP Desktop 产品的支持,而这套产品无疑是当时最流行、最成熟和最有用的终端用户密码工具套件。尽管我非常不愿意承认任何商业产品优于免费工具,但商业版的 PGP,虽然远非完美,似乎最有希望将强大的密码技术带给大众。世界需要优秀的密码技术,特别是用户友好且省时省力的图形用户界面密码技术,PGP Desktop 的消亡对任何人都没有好处,尤其是在缺乏令人信服的替代品的情况下。

以上言论绝非有意贬低 Werner Koch 和 GnuPG 团队的出色工作,我曾在早期的《Paranoid Penguin》专栏中对他们赞誉有加。事实上,现在让我再赞扬一番:GnuPG 真是太棒了[参见《LJ》2001 年 9 月和 10 月刊的《Paranoid Penguin》专栏]。它在极短的时间内发展成为一个稳定而成熟的应用程序,并且已经在几乎所有主流发行版中成为其他必不可少的 Linux 工具之一。极客们喜欢 GnuPG,你也应该喜欢它。

遗憾的是,在一个以图形用户界面为中心的世界里,GnuPG 的各种前端需要充分发挥它们的潜力,我们才能真正希望非技术用户接受 GnuPG。如果不能以这种方式迁就非技术用户,即使密码技术是免费的,我们也别想将强大的密码技术带给大众。GnuPG 在可用性方面与整个 Linux 系统存在共同的问题(哎呀,又要收到谩骂邮件了)。

此外,GnuPG 仅解决了 PGP Desktop 功能的一部分。虽然 GnuPG 在电子邮件和文件加密等方面与 PGP Desktop 的功能相匹配,但它不具备文件系统加密功能,而文件系统加密是 PGP Desktop 最好的功能之一。PGPdisk(PGP 的文件系统实用程序)使文件系统加密变得简单、快速和透明。

它唯一缺少的是 Linux 的客户端软件,这严重削弱了 PGPdisk 在双启动系统上的实用性。作为双启动笔记本电脑用户,我一直对此感到沮丧;任何便携式系统 必须 在所有启动的操作系统上都进行文件系统加密,这是绝对的。当然,我可以在我的 Linux 安装中设置一个加密的回环文件系统,但这也不是跨平台的。在两个环境之间共享一个加密分区,而不是维护两个独立的“保险库”,会好得多。

这就把我们,尽管是委婉地,带到了本月专栏的主题,实际上既不是 PGP 也不是 GnuPG。而是关于 BestCrypt,一个商业但开源的应用程序,它允许你在 Windows 和 Linux 系统之间共享加密卷,并具有 PGPdisk 的所有透明性、简单性和速度。

概述

BestCrypt 是一个文件系统加密实用程序,它允许你在你的计算机上创建、挂载和管理“容器”(加密卷),这些容器看起来和行为都像任何其他挂载的卷,但在不使用时,它们以加密文件的形式存储。这可以保护你的敏感数据免受电脑窃贼或任何其他未经授权访问你系统的人的侵害。

由于 BestCrypt 容器是普通文件,因此它们可以存储在可移动媒体上、进行存档、作为电子邮件附件发送,并且通常可以像任何其他文件一样进行操作。BestCrypt 容器甚至可以放置在网络共享上,并由远程客户端挂载(当然,一次只能有一个客户端挂载给定的容器)。

此外,BestCrypt 容器可以由 Linux 或 Windows 版本的 BestCrypt 挂载;两个版本都使用相同的文件格式,并且在任何一个方向上都不会损失功能。

获取和安装 BestCrypt

BestCrypt 可以从芬兰 Jetico, Inc. 公司的网站 www.jetico.com/download.htm 下载。这是一个速度很快的网站,而且 BestCrypt 非常小巧——Linux 版本只有 160K!Windows 版本更大,这无疑是因为它们是二进制发行版,而 Linux 版本是作为源代码分发的。(现在我将专注于 Linux 版本,但稍后会讨论 Windows 版本。)

在你尝试安装 BestCrypt 之前,请确保你已将内核的源代码安装在 /usr/src/linux 下,其中 /usr/src/linux 既可以是内核源代码的符号链接,也可以是实际的根目录。如果你使用发行版提供的标准内核,只需安装相应的内核源代码包(只需确保版本相同,并且 /usr/src/linux 指向其根目录)。如果你从未在你的系统上构建过内核,那么你需要将你的工作目录更改为 /usr/src/linux 并执行以下命令

make mrproper
make menuconfig  # configure the source to match
                 # your kernel
make dep

实际上你不需要通过执行 make bzImage modules modules_install 来构建内核(除非你想这样做);重点是构建你的内核源代码的依赖项,以便 BestCrypt 可以编译匹配的附加内核模块。(我第一次在我的 SuSE 7.1 笔记本电脑上构建 BestCrypt 时,我忘记了我从未在该系统上编译过内核,所以 BestCrypt 无法编译。按照上述步骤操作,然后再次尝试就成功了。)

从 Source-RPM 安装 BestCrypt

一旦你的内核源代码就位并且其依赖项已构建,你就可以构建和安装 BestCrypt 了。如果你使用基于 RPM 的 Linux 发行版,请获取 source RPM(截至本文撰写时,最新的版本是 BestCrypt-1.0b-5.src.rpm)并使用 --rebuild 标志构建它

rpm --rebuild ./BestCrypt-1.0b-5.src.rpm

这将在 /usr/src/redhat/RPMS/i386(在 Red Hat 系统上)或 /usr/src/packages/RPMS/i386(在 SuSE 和可能其他的系统上)中构建 BestCrypt 的二进制软件包。然后你可以像安装任何其他软件包一样安装该软件包,例如

rpm -Uvh /usr/src/packages/RPMS/i386/
    BestCrypt-1.0b-5.i386.rpm
在 BestCrypt 的二进制文件和 README 文件就位后,RPM 的安装后脚本将加载 BestCrypt 的内核模块。你现在可以使用 BestCrypt 了。
从 Source Tarball 安装 BestCrypt

如果你使用非 RPM 基于的发行版,例如 Debian 或 Slackware,请下载 tarball 而不是 source RPM(本文撰写时最新的版本是 BestCrypt-1.0b-5.tar.gz)。将其解压缩到 /usr/src 中,将你的工作目录更改为 /usr/src/bcrypt 并执行 make && make install。如果你的内核源代码设置正确,BestCrypt 应该可以编译和安装而不会出错。

但是,tarball 的 Makefile 没有 RPM 安装脚本那么复杂。你需要在第一次使用 BestCrypt 之前手动加载 BestCrypt 的模块。简单的方法是使用 BestCrypt 的启动脚本,例如,/etc/init.d/bcrypt start

BestCrypt 的文档和控制面板

除了 BestCrypt 本身之外,你还应该下载文档 tarball。其中包含一个目录,以 HTML 页面的形式提供 BestCrypt 的文档(图 1)。

BestCrypt: Cross-Platform Filesystem Encryption

图 1. BestCrypt 的文档

你可能需要的另一件事是 BC_Panel,BestCrypt 控制面板。这仅以二进制 RPM 的形式提供(尽管可能可以使用 alien 在 Debian 下安装)。BC_Panel 为 BestCrypt 提供了一个 GUI,它非常类似于 BestCrypt 的 Windows GUI。

由于截至本文撰写时,BC_Panel 的当前版本为 0.2-1,并且由于它似乎不支持命令行版本(或 Windows GUI)的所有功能,因此 BC_Panel 似乎仍在开发中。尽管如此,它对于某些事情仍然有用,并且看起来很稳定。

使用 Linux 版 BestCrypt

创建 BestCrypt 容器既快速又容易。这是一个示例会话

bctool new myvault.jbc -s 150M -a twofish
-d "my test vault"
  Enter password:
  Verify password:

BestCrypt 有一个主要的命令行工具 bctool。要创建一个新容器,你只需向 bctool 发送 new 命令,后跟容器的文件名、大小、加密算法和描述。然后 BestCrypt 会提示你输入密码。

请务必使用强密码。虽然 BestCrypt 支持的所有算法(DES 除外)都使用 128 位或更大的密钥来加密容器,但容器的密钥本身会使用你的密码进行哈希处理。一个容易被猜到的密码意味着一个容易被解密的容器,无论它使用多大的密钥进行加密。

还要确保写下你的密码并将其保存在安全的地方,或者选择一个你确信不会忘记的密码;根据 Jetico 的说法,密码是绝对无法恢复的,并且 BestCrypt 中没有用于密码恢复的后门。这绝对是一件好事:虽然这意味着如果你忘记或丢失密码,你将不可挽回地丢失数据,但这也意味着攻击者解密你的容器的唯一方法是猜测或暴力破解你的密码。

创建容器后,你需要在其中创建一个文件系统。这可以使用 bctool 的 format 命令完成

bctool format -t msdos ./myvault.jbc

使用 -t 标志指定你的系统支持的文件系统格式。如果你要与 Windows 版本的 BestCrypt 共享此容器,请务必指定 msdos(如果你实际使用 vfat 长文件名扩展名,也称为 Windows 95 长文件名,你仍然应该将容器格式化为 msdos,然后将其挂载为 vfat)。BestCrypt 可以以你的系统支持的所有文件格式格式化容器。

是否需要 Root 权限?

一旦 BestCrypt 容器被创建和格式化,就可以挂载它了。执行此操作的命令语法与熟悉的 mount 命令非常相似

bctool mount -t vfat ./myvault.jbc ./mnt/kraunj00lz

从这时起(直到你卸载卷),该卷可以像任何其他目录一样访问。默认情况下,卷的用户和组将设置为挂载它的用户的用户和组,权限设置为 0700 (drwx------)。换句话说,其他(非 root)用户将无法访问你的卷,除非你故意以不同的所有权或权限挂载它。你可以在挂载时分别使用 bctool 的 -o、-g 和 -m 标志来指定不同的用户、组和权限模式。有关详细信息和示例,请参阅 bctool(8) 手册页。

当你完成使用 BestCrypt 容器后,你可以像这样卸载它

bctool umount ./mnt/kraunj00lz

当 BestCrypt 容器被卸载时,它可以像任何其他文件一样进行备份、复制和处理。但是,当它被挂载时,它不能被更改或操作(除了通过 bctool)。

BC_Panel:BestCrypt 的 Linux GUI

我提到过 Linux 版 BestCrypt 有一个 GUI,但截至本文撰写时,它仍处于 beta 状态。BC_Panel(图 2)仅以二进制 RPM 的形式提供。

BestCrypt: Cross-Platform Filesystem Encryption

图 2. BC_Panel v0.2b,BestCrypt 的 Linux GUI

一方面,BC_Panel(二进制文件实际上称为 bestcrypt,但为了清晰起见,我在这里坚持使用 BC_Panel)是稳定的,显然编写良好,并且至少在外观上与其 Windows 版本非常相似。然而,BC_Panel 仅支持 bctool 提供的功能子集,因此也仅支持 BestCrypt Windows GUI 的功能子集;它与两者都不是完全同步的。

例如,“新建(容器)”对话框仅列出了实际支持的十种左右算法中的几种可能的算法选项。更糟糕的是,尝试使用 BC_Panel 作为选项提供的 任何 算法创建容器都会失败并显示错误消息,除非你以 root 身份登录(并运行 X)。

如果你是 root 用户,BC_Panel 确实可以成功地创建、格式化、挂载、卸载和重新加密(使用不同的算法)BestCrypt 容器,甚至可以动态检测和列出由 bctool 命令挂载的容器(对于运行 BC_Panel 的用户具有读取权限的卷而言)。因此,虽然我不会依赖它进行生产使用,但 BC_Panel 对于某些维护功能似乎很有用(如果你不介意以 root 身份进行整个 X 会话),并且总体而言显示出巨大的潜力;我希望 Jetico 尽快发布一个生产就绪的版本。

Windows 版 BestCrypt

好的,我已经确定 BestCrypt 在 Linux 下易于安装和使用。但是它与 Windows 的兼容性如何?BestCrypt 在将磁盘卷加密带给 Windows 用户大众方面有什么潜力?这两个方面的好消息都来了。

在过去的一周里,我一直在交替启动我的笔记本电脑系统到 Windows 98 和 SuSE Linux 7.1,使用相同的 BestCrypt 容器(它位于我的 DOS/VFAT 分区上)作为我在两个操作系统下写作活动的工作目录。除了当我关闭 Windows 时出现的看似无害的蓝屏错误(Windows 抱怨当 BestCrypt 卷被卸载时,一个或多个文件仍然在 BestCrypt 卷上打开),BestCrypt 的表现完美无瑕。我没有丢失任何数据,在使用 BestCrypt 卷时没有注意到磁盘性能下降,并且没有注意到两个版本的 BestCrypt 对我的共享容器的处理有任何差异。

同样巧妙的是,我几乎没有花任何时间阅读文档或扫描邮件列表帖子,就能够在 Windows 下使用 BestCrypt(这与我最近写到的几乎所有其他工具都不同)。BestCrypt 的 Windows GUI 非常易于使用(图 3)。

诚然,我非常熟悉公钥密码学的内部工作原理,并且已经使用了 PGPdisk 等其他工具多年。换句话说,我作为普通终端用户的资格值得怀疑,至少可以说。尽管如此,我仍然有信心声明,就可用性而言,BestCrypt 至少与 PGPdisk 一样有很好的机会成为必不可少的主流工具,将大众提升到加密卷启蒙(和安全)的禅宗状态。

BestCrypt: Cross-Platform Filesystem Encryption

图 3. 在 Windows 下创建新的 BestCrypt 容器

确信声明的是,基于细致的密码分析和代码审查,我相信 BestCrypt 是坚不可摧的。(天哪,我真希望这句话永远不会被部分引用。幸好 Jetico 的人看起来如此有原则!)由于我既不是专业的密码学家,甚至也不是程序员,我将不得不留给其他人来判断 BestCrypt 安全性的真正强度。

BestCrypt 的 表面上的 安全性

可以 告诉你的是,BestCrypt 支持一系列令人印象深刻的已知良好算法(或者,正如更愤世嫉俗的人可能说的那样,它“符合加密流行语”),包括新宣布的美国政府高级加密标准 Rijndael,以及 AES 竞赛中两个更有希望的亚军:Ron Rivest 的 RC6 和 Bruce Schneier 的 Twofish。如果这三种算法对你来说都太新了,BestCrypt 还支持三重 DES、Blowfish(具有几种不同的密钥大小)、IDEA、CAST 和俄罗斯联邦标准 GOST 算法。BestCrypt 还支持“单”DES,尽管由于其容易被暴力破解的(小)密钥大小,不建议使用它。

作为额外的奖励,Windows 用户还可以获得两个附加功能:交换文件加密,它可以保护你免受其他人尝试从你的 Windows 交换文件中提取密码和其他敏感数据的攻击,以及 BCWipe,一个低级文件擦除器。在这两个功能中,交换文件加密功能似乎尚未成为 Linux 版本的一部分。

然而,BCWipe 可以为 Linux 单独购买(即,它不像 Windows 版本那样与 BestCrypt 捆绑在一起)。BCWipe 就像 PGP 的 Wipe 功能一样,重复覆盖你在“删除”文件后剩余的数据,使得几乎不可能通过任何但最复杂的磁盘恢复工具来恢复已删除的数据(如果可以恢复的话)。

因此,根据我确定它的最佳资格,从技术角度来看,BestCrypt 的安全性 似乎 很强:它支持许多重要的加密和非加密安全技术。

结论

我对这款产品的评估主要集中在功能、可用性、Linux 友好性、对我喜欢和信任的算法的支持,以及当然,整体的完善程度。我认为 BestCrypt 在所有这些方面都取得了成功,并且基于 Jetico 在这些领域软件的一贯高质量,我愿意相信他们的密码学实现同样一丝不苟且执行良好。

总而言之,BestCrypt 是一款令人印象深刻的产品。如果稳定性、对各种流行加密算法的全面和模块化支持以及整体的紧凑性可以作为衡量标准,那么它似乎也非常安全。我热情地推荐你考虑将 BestCrypt 用于你的文件系统加密需求,特别是如果你同时使用 Linux 和 Windows。它帮助我恢复了一些对更支持密码技术的大众的希望,并且玩起来也很有趣。

产品信息/优点/缺点

Mick Bauer (mick@visi.com) 是双子城地区的网络安全顾问。自 1995 年以来,他一直是 Linux 的忠实拥护者,自 1997 年以来,他一直是 OpenBSD 的狂热爱好者,并且喜欢让这些尖端的操作系统在过时的垃圾设备上运行。

加载 Disqus 评论