#nonce #aes-gcm #aes #gcm #dndk

no-std nonce-extension

Derive-Key-AES 和 Double-Nonce-Derive-Key-AES 随机数扩展机制(DNDK-GCM)

3 个不稳定版本

0.2.0 2024年3月28日
0.1.2 2023年11月2日
0.1.1 2023年11月2日

加密学 中排名 #1588

Download history 2/week @ 2024-05-20

每月下载量 142
xaes-gcm 中使用

ISC 许可证

11KB
103

Derive-Key-AES-GCM

AES-GCM 是一种非常常见的认证加密算法。

不幸的是,它有一些 相当低的用法限制

使用它处理大量消息时,需要额外小心以确保随机数不会重复,并且密钥经常轮换。

TLS 协议隐藏了这种复杂性,但直接使用 AES-GCM 的应用程序需要了解这些限制,以便安全地使用 AES-GCM。

理想情况下,随机数应该很大,这样应用程序就可以安全地随机生成它们,并且碰撞概率可以忽略不计。但 AES-GCM,如通常实现和 IETF 协议所要求的,仅限于 96 位(12 字节)的随机数,这不足以避免碰撞。AES-GCM 密钥也预计在加密 2^32 次消息之前就会更换。

在 2023 年 NIST 块加密研讨会期间,Shay Gueron 展示了一种巧妙的方法来克服这些限制,并将密钥的寿命扩展到“永远”:Derive-Key-AES-GCM 构造。

这种构造允许使用更大的随机数与 AES-GCM 一起使用,从而扩展密钥寿命。使用 AES-256 和 192 位随机数,可以使用单个密钥加密大量消息,并且可以使用随机生成的随机数。

它通过较小的开销显著提高了 AES-GCM 的安全性。

当使用 AES-128 实例化时,Derive-Key 构造从密钥和一个最多 120 位(理论上是 126 位,但实际应用为 120 位)的随机数派生出一个新的 AES-128 加密密钥。该加密密钥随后可以与 AES-128-GCM 一起使用,以及一个静态的随机数。

当使用AES-256实例化时,Double-Nonce-Derive-Key构造函数从键和非阈(非阈长度最多为232位,但192位足以满足所有实际用途)中生成一个新的AES-256加密密钥。然后,可以使用此加密密钥与AES-128-GCM一起使用,并使用静态非阈,保证密钥不会重复。

这是对Zig实现的移植。

依赖项

~595KB
~14K SLoC