用户工具

站点工具


linux:dm-crypt

这是本文档旧的修订版!


dm-crypt

dm-crypt is a transparent disk encryption subsystem in Linux kernel.

dm-crypt是Linux内核提供的存储设备全盘透明加密方案。cryptsetup是其操作前端(frontends),用户主要接触的部分,以下主要讲解cryptsetup的使用。

Encrypt a device

首先运行benchmark查看系统性能,一般的处理器都支持AES加速,故建议采用AES相关的cipher

cryptsetup benchmark

Intel i5-3210M的结果如下:

PBKDF2-sha1       811591 iterations per second for 256-bit key
PBKDF2-sha256    1013116 iterations per second for 256-bit key
PBKDF2-sha512     666185 iterations per second for 256-bit key
PBKDF2-ripemd160  614640 iterations per second for 256-bit key
PBKDF2-whirlpool  386643 iterations per second for 256-bit key
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   497.8 MiB/s  1580.6 MiB/s
 serpent-cbc   128b    69.9 MiB/s   233.1 MiB/s
 twofish-cbc   128b   141.4 MiB/s   261.5 MiB/s
     aes-cbc   256b   360.9 MiB/s  1305.9 MiB/s
 serpent-cbc   256b    71.4 MiB/s   246.8 MiB/s
 twofish-cbc   256b   158.2 MiB/s   285.0 MiB/s
     aes-xts   256b  1316.7 MiB/s  1342.0 MiB/s
 serpent-xts   256b   260.9 MiB/s   233.1 MiB/s
 twofish-xts   256b   285.4 MiB/s   277.2 MiB/s
     aes-xts   512b  1147.1 MiB/s  1142.4 MiB/s
 serpent-xts   512b   244.9 MiB/s   241.2 MiB/s
 twofish-xts   512b   290.8 MiB/s   286.4 MiB/s

cryptsetup根据以上结果设置哈希算法(Hash algorithm)和加密算法(cipher):

Hash 选择 sha512 的原因是据说能降低专用破解设备如定制FPGA的爆破密码速度
因为xts的缘故,key-size=256只相当于AES-128,想用AES-256请使用–key-size 512
cryptsetup -v --cipher aes-xts-plain64 --key-size 256 --hash sha512 luksFormat [device]

Add keys to luks device

添加一个密码:

cryptsetup luksAddKey /dev/<device>

添加一个文件作为密码:

cryptsetup luksAddKey /dev/<device> /path/to/<additionalkeyfile>

查看当前luks设备的key slots:

cryptsetup luksDump /dev/<device>

备份luks header:

cryptsetup luksHeaderBackup /dev/<device> --header-backup-file /mnt/<backup>/<file>.img
由于luksErase会擦除掉luks header,密码是保存在header里面的,在执行该命令后所有人都将无法访问该设备下的内容,所以考虑备份header且存放在安全的

Re-encrypt luks device with new encrypt algorithm

请备份数据以免数据丢失!!!

重新加密将非常消耗时间!请保证重新加密时供电、环境的绝对稳定!

我的移动硬盘是较早时间加密的,哈希算法还是在用已经宣布为不安全的sha1,所以有了这节内容。

如果想修改加密算法或者哈希算法,可以运行cryptsetup提供的cryptsetup-reencrypt

cryptsetup-reencrypt --cipher aes-xts-plain64 --key-size 256 --hash sha512 /dev/<device>
linux/dm-crypt.1479563666.txt.gz · 最后更改: 2023/12/03 10:24 (外部编辑)