确定性 AEAD 提供具有确定性属性的加密:加密相同的数据始终会生成相同的密文。这种加密对于密钥封装或某些搜索加密数据的架构很有用(如需了解详情,请参阅 RFC 5297 第 1.3 节)。由于该基元的确定性,其实现可能会导致泄露保密,因为攻击者只需找出给定消息的密文即可识别该消息的其他实例。
确定性 AEAD 具有以下属性:
- 保密:除了其长度和重复明文的相等性之外,对明文没有任何已知。
- 真实性:在不被检测到的情况下,无法更改密文底层的加密明文。
- 对称:使用同一密钥加密明文和解密密文。
- 确定性:只要主密钥未更改,使用相同参数对明文两次加密将得到相同的密文。
相关数据
确定性 AEAD 还可用于将密文与特定关联数据联系。假设您有一个数据库,其中包含 user-id
和 encrypted-medical-history
字段。在这种情况下,可以在加密 encrypted-medical-history
时将 user-id
用作关联数据。这可以防止攻击者将医疗记录从一个用户转移到另一个用户。
选择密钥类型
我们建议所有用例都使用 AES256_SIV 密钥类型。
安全保证
- 至少 80 位身份验证强度。
- 明文和关联数据可以具有任意长度(在 0..232 字节范围内)。
- 针对密钥恢复攻击的 128 位安全等级,以及在最多使用 232 个密钥的多用户攻击中,如果攻击者获得用 232 个密钥加密的同一消息的 232 个密文,则需要执行 2128 次计算才能获得单个密钥。
- 能够安全加密 238 条消息,前提是每条消息的长度小于 1 MB。