9.5. Pre-Shared Key Recommendations (预共享密钥建议)
9.5. 预共享密钥建议
在 PSK 和 AuthPSK 模式中, PSK 必须至少具有 32 字节的熵, 并且应该具有 Nh 字节或更长的长度。允许使用长于 32 字节但短于 Nh 字节的 PSK。
HPKE 被指定使用 HKDF 作为其密钥派生函数。HKDF 并非设计用于减慢字典攻击 (参见 [RFC5869])。因此, HPKE 的 PSK 机制不适合使用低熵密码作为 PSK: 在对手知道 KEM 共享秘密 shared_secret 并且可以访问区分好的和错误的 PSK 的预言机的场景中, 它可以执行 PSK 恢复攻击。这个预言机可以是对捕获的 HPKE 密文的解密操作, 或者使用错误 PSK 时明显不同的任何其他接收方行为。如果对手知道一个参与者的所有 KEM 私钥, 它就知道 KEM 共享秘密 shared_secret。在 PSK 模式中, 如果对手充当发送方, 这显然是成立的。
为了恢复较低熵的 PSK, 此场景中的攻击者可以轻易执行字典攻击。给定一组可能的 PSK 值 S, 攻击者为 S 中的每个值生成一个 HPKE 密文, 并将生成的密文提交给预言机以了解接收方正在使用哪个 PSK。此外, 由于 HPKE 使用不具有密钥承诺的 AEAD 方案, 攻击者可以发起分区预言机攻击 [LGR20], 该攻击可以从一组 S 个可能的 PSK 值中恢复 PSK, 其中 |S| = m*k, 使用大约 m + log k 次对预言机的查询, 使用长度与 k (块中的最大消息长度) 成比例的密文。(应用 [LGR20] 中的多碰撞算法需要对算法进行小的调整, 其中为每个候选密钥计算适当的随机数。此修改为每个密钥添加一次对 HKDF 的调用。分区预言机查询的数量保持不变。) 因此, PSK 必须以足够的熵选择, 使得 m + log k 对攻击者来说是禁止性的 (例如, 2^128)。未来的规范可以定义具有密钥承诺的新 AEAD 算法。