![LUKS 中的 --use-urandom 或 --use-random 选项有何用途?](https://linux22.com/image/113914/LUKS%20%E4%B8%AD%E7%9A%84%20--use-urandom%20%E6%88%96%20--use-random%20%E9%80%89%E9%A1%B9%E6%9C%89%E4%BD%95%E7%94%A8%E9%80%94%EF%BC%9F.png)
我目前正在尝试自学一些非 Windowsland 操作系统,我认为 Ubuntu Server 16.04 将是最好的起点。 “掌握”LVM 后,我正在尝试熟悉 cryptsetup 和 LUKS。
我开始明白了,但令我困惑的一件事是......
...--use-urandom 或 --use-random 选项生成的随机数有何用途?
在 cryptsetup 命令的上下文中,例如:
$ sudo cryptsetup luksFormat --cipher=aes-xts-plain64 --key-size=512 --hash=sha256 --use-random /dev/sdb1 --key-file=/crypto/keyfile
我在这里读了一些内容,使用 /dev/random (这就是我假设的 --use-random 从中提取随机数熵)有时会花费很长时间,因为系统会生成更多的熵,因此在某些情况下建议这样做使用 --use-urandom (相应地从 /dev/urandom 中提取,据我所知,它完全是伪随机的),因为系统不会卡住等待熵池“重新填充”。
我不完全理解密码学,但我猜测该选项仅使用一次,设置整个加密方案的初始状态,然后就可以了。如果是这样的话,我可以毫无问题地等待一个良好而混乱的加密床来保护我的数据 - 但如果我必须在每次读写磁盘时处理这个问题......那可能会很快过时。
我对吗?这只是一次性的事情吗?或者,通过在我的命令中设置 --use-random ,我是否注定要长时间 LUKS 打开和关闭、读取和写入等?
答案1
使用
/dev/random
(...) 有时会花费很长时间,因为系统会产生更多的熵
正确的。
在某些情况下,建议使用 --use-urandom (相应地从
/dev/urandom
几乎在所有情况下,建议不要使用/dev/random
.看/dev/urandom 中的 rand 对于登录密钥来说是否安全?或者关于乌兰多姆的神话。
/dev/urandom
,据我了解,这完全是伪随机的
不,urandom
不是伪随机的。 “伪随机”意味着“确定性”。urandom
不是确定性的,它使用(加密质量)确定性随机生成器,即播种通过熵,从而从少量的非确定性数据中产生有效的无限随机字节流。
这些选项--use-random
仅--use-urandom
影响生成密钥时发生的情况,而不影响使用卷时发生的情况。因此--use-random
不会使使用该卷的速度变慢,只会使创建速度变慢。尽管如此,--use-urandom
通常都很好,而--use-random
对于交互式使用来说很好,但不建议在脚本中使用,因为如果系统上没有任何东西可以增加熵计数,它可能会永远阻塞。唯一/dev/urandom
不能使用的情况是在新安装、新启动的系统上,该系统还没有时间收集熵——不幸的是,urandom
在这种情况下将返回可预测的数据。一旦系统使用了几分钟(甚至在安装系统后重新启动),/dev/urandom
就是安全的。
答案2
基本上,这用于为您的加密创建密钥,它是一次性的,所以您是对的。
至于 random 与 urandom,通常使用 urandom 更好。
看何时使用 /dev/random 与 /dev/urandom对于血淋淋的细节。