3 个不稳定版本
0.2.0 | 2024年3月28日 |
---|---|
0.1.2 | 2023年11月2日 |
0.1.1 | 2023年11月2日 |
在 加密学 中排名 #1588
每月下载量 142 次
在 xaes-gcm 中使用
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