LUKS 中的 --use-urandom 或 --use-random 选项有何用途?

LUKS 中的 --use-urandom 或 --use-random 选项有何用途?

我目前正在尝试自学一些非 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对于血淋淋的细节。

相关内容