5. 设置 loop 设备

Cryptoloop 既可以用于文件,也可以用于整个文件系统。下面介绍如何在特定分区上设置它。这个分区可以是您喜欢的任何分区;以下示例使用/dev/sda1。我选择使用 AES 作为密码,但您可以替换为内核中启用的任何您喜欢的密码。您可以通过查看以下位置获取当前运行的内核支持的算法列表:/proc/crypto。讨论不同加密算法的优秀资源是 Bruce Schneier 的著作《应用密码学》和《实用密码学》。AES 和 Serpent 可能都是合理的选择。AES 已经被大量密码分析,到目前为止还没有发现严重的弱点。Serpent 没有经过那么多分析,但被认为比 AES 还要强一点。然而,Serpent 也比 AES 慢。远离 DES,它既慢又弱。Triple-DES 可能是个选择,但 AES 可能更安全、更快,所以真的没有理由再使用 Triple-DES 了。

  1. 建议您在分区上创建加密文件系统之前,先格式化分区并用随机数据填充它。这将使攻击者更难检测到加密分区中的模式。

    警告!

    请小心在此处为您的分区键入的内容。如果您犯了错误,很容易用随机垃圾覆盖错误的分区!

    用随机数据填充分区可以按如下方式完成

    dd if=/dev/urandom of=/dev/sda1 bs=1M
    

    您可能会收到设备已满的错误消息。您可以忽略它。

  2. 选择密码和密钥大小。可以从以下位置获取内核支持的密码列表/proc/crypto。我建议您使用 AES 和 256 位密钥。

  3. 设置 loop 设备。这可以使用 util-linux 包中的 losetup 命令完成。以下命令使用 loop 设备 0 在设备上使用 AES 密码和 256 位密钥创建一个加密文件系统/dev/sda1:

    losetup -e aes-256 /dev/loop0 /dev/sda1
    

    该命令会提示您输入密码。选择一个强密码并尝试记住它,而无需在显示器上贴便利贴。使用 Cryptoloop 有一个很大的缺点。由于密码被哈希以创建加密密钥,因此以后不容易更改密码。更改密码最直接的方法是创建一个新的加密分区或文件,并将所有数据移入其中。因此,请确保从一开始就选择一个强密码。AES 可能是一个强大的算法,但如果您选择了一个弱密码,安全性就会大打折扣。

    如果 losetup 失败并显示 INVALID ARGUMENT 错误消息,则您的 util-linux 包存在问题。请确保您已按照上述说明安装了 util-linux 的修补版本。较旧和未修补的版本使用不同的方式传递密钥大小,并且不适用于 2.6 Crypto API。

  4. 创建文件系统。您可以选择任何您喜欢的文件系统。以下命令使用 loop 设备创建一个 ext3 文件系统

    mkfs.ext3 /dev/loop0
    
  5. 挂载加密文件系统。首先,您需要创建一个挂载点,例如/mnt/crypto:

    mkdir /mnt/crypto

    然后您需要挂载文件系统。在此阶段,您需要明确告诉 mount 要使用哪个 loop 设备

    mount -t ext3 /dev/loop0 /mnt/crypto
    
  6. 现在您可以尽情使用您的加密文件系统了。

  7. 卸载文件系统。在您玩完后,卸载文件系统

    umount /mnt/crypto
  8. 分离 loop 设备。loop 设备仍然连接到您的分区。使用以下命令分离它

    losetup -d /dev/loop0