/proc/sys/kernel/random/uuid 是强密钥材料吗?

发布于 2024-11-05 00:31:50 字数 444 浏览 2 评论 0原文

我一直在寻找为 HMAC_SHA256 算法生成强 256 位/32 字节对称密钥的方法。我偶然发现了 /proc/sys/kernel/random/uuid 文件。

根据 man random(4) :“只读文件uuid和boot_id包含随机字符串,如6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9。前者是生成的每次读取都会重新生成一次。”

来自 cat /proc/sys/kernel/random/uuid 的字符串看起来非常适合此目的。我可以删除“-”字符并最终得到 32 字节的随机性。

这是生成加密强密钥材料源的有效方法吗?

I've been looking at ways to generate a strong 256 bit/32 byte symmetric key for the HMAC_SHA256 algorithm. I stumbled upon the /proc/sys/kernel/random/uuid file.

According to man random(4): "The read-only files uuid and boot_id contain random strings like 6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9. The former is generated afresh for each read, the latter was generated once."

The string from cat /proc/sys/kernel/random/uuid looks ideal for this purpose. I can remove the '-' chars and end up with a 32 bytes of randomness.

Is this a valid approach to generate a cryptographically strong source of keying material?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丑疤怪 2024-11-12 00:31:50

这是一个老问题,但如果有人偶然发现它,我不建议这样做。

/proc/sys/kernel/random/uuid 是具有特定语义的 4 类(随机)UUID - 它不仅仅是一串随机的十六进制字符。例如,您会看到第三组中的第一个数字始终是 4。

对于 256 个随机位,只需从 /dev/random 读取 32 个字节(使用外部熵,可以阻止)或 /dev/urandom(从不阻塞)。

An old question but in case anyone stumbles on it, I wouldn't advise this.

/proc/sys/kernel/random/uuid is a type 4 (random) UUID with certain semantics - it's not just a string of random hex characters. For example you'll see the first digit in the third group is always a 4.

For 256 random bits just read 32 bytes from /dev/random (uses external entropy, can block) or /dev/urandom (never blocks).

夜光 2024-11-12 00:31:50

o172.net 是最好的答案,可以直接评论,但不能。

/proc/sys/kernel/random/uuid 基于 urandom 但最好直接从 urandom 获取。

下面是如何从 shell 获取它,以下获取 32 个 ascii 十六进制字节:

echo $(tr -dc a-f0-9 < /dev/urandom | dd bs=32 count=1 2> /dev/null)

您可以通过 tr 参数更改字符集,通过 字节

dd bs=
or not use tr

并获取随机二进制文件。

o172.net is the best answer, would comment on it directly but cannot.

/proc/sys/kernel/random/uuid is based on urandom but it is best to grab from urandom directly.

This below is how to get it from the shell, the following gets 32 ascii hex bytes:

echo $(tr -dc a-f0-9 < /dev/urandom | dd bs=32 count=1 2> /dev/null)

You can change the char set via the tr params, the bytes by the

dd bs=
or not use tr

and get random binary.

自控 2024-11-12 00:31:50

您会依赖定义良好的确定性伪随机算法来生成密钥吗?基本上就是这个问题。

我想说的是,将 UUID 作为密钥的基础,但使用您的密钥对其进行一次加密。

Would you rely on a well-defined deterministic pseudo-random algorithm for key generation? That's the question basically.

I'd say, take the UUID as a base for your key, but do one pass of encryption on it using a secret key of yours.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文