我正在关注这加密外部硬盘的方法,但 aes 算法别名存在问题
sudo modprobe dm-crypt
sudo modprobe sha256
sudo modprobe aes
我在执行 aes 命令后收到以下错误
modprobe: ERROR: could not insert 'padlock_aes': No such device
我尝试了链接中提到的解决方法,但我的 /etc/modprobe.d/ 目录中没有别名文件
user@user:/home/$ cd /etc/modprobe.d/
user@user:/etc/modprobe.d$ ls | grep aliases
user@user:/etc/modprobe.d$ [no output]
我不知道如何处理这个问题,但后来当我尝试加密驱动器时,它通过以下命令成功加密
sudo cryptsetup --verify-passphrase luksFormat /dev/sdb1 -c aes -s 256 -h sha256
我不知道它是如何找到 aes256 算法的,或者只是忽略了 aes256 或者做了一些神奇的事情。
所以我想要以下问题的答案
- crypt-setup 如何成功加密我的驱动器?
如何确认 crypt-setup 执行的加密中也实现了 aes256?
为什么我没有
/etc/modprobe.d/alaises
文件?是因为版本较新吗?因为该解决方案上次是在 10.04 版本上测试的。
答案1
提前警告:不要手动更改( )、( ) 和( )cryptsetup
等选项的参数。默认值通常足够合理,除非您知道自己在做什么,否则您可能实际上会选择-c
--cipher
-s
--key-size
-h
--hash
更差参数。
这些默认值显示为cryptsetup --help
。作为参考,在带有 cryptsetup 1.7.2 的 Ubuntu 16.04 上,默认值为:
LUKS1:aes-xts-plain64,密钥:256 位,LUKS 标头哈希:sha1,RNG:/dev/urandom
在装有 cryptsetup 1.7.2 的 Arch Linux 上,默认值为:
LUKS1:aes-xts-plain64,密钥:256 位,LUKS 标头哈希:sha256,RNG:/dev/urandom
您链接的说明是针对 2010 年发布的 Ubuntu 版本编写的。现在(甚至可能当时也是如此)您无需手动加载内核模块即可设置全盘加密。cryptsetup
调用时会自动加载这些模块。
在 Linux 内核模块的上下文中,aes
名称是模块名称和几种可能实现的别名。有一个通用aes
模块内置于内核映像中。然后有其他更快的实现,它们依赖于某些硬件或 CPU 功能(例如padlock-aes
和aesni-intel
)。
即使无法加载这些硬件加速模块,仍然可以回退到通用 AES 实现,这就是cryptsetup
仍然可以使用它的原因。
要确认确实正在使用 AES256 加密,您可以使用cryptsetup luksDump /dev/sdb1
以下命令:
...
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 256
这里您可以看到,使用 SHA256 哈希函数来导出密码时使用了 AES 密码。密钥大小为 256 位(因此您确实在使用 AES256)。
对于您的最后一个问题(为什么您没有文件/etc/modprobe/aliases
),该文件在最近的 Ubuntu 版本中不存在。