认证加密:原理、标准与性能分析
1. 带关联数据的认证加密
在密码学中,关联数据是指由认证密码处理的数据,这些数据会被认证(借助认证标签)但不会被加密。默认情况下,输入到认证密码的所有明文数据都会被加密和认证。
但如果我们只想对整个消息(包括未加密部分)进行认证,而不加密整个消息呢?这就是带关联数据的认证加密(AEAD)的应用场景。例如,在处理由头部和有效负载组成的网络数据包时,我们可以选择加密有效负载以隐藏传输的实际数据,而不加密头部,因为头部包含将数据包传递到最终接收者所需的信息。同时,我们仍然希望对头部数据进行认证,以确保它来自预期的发送者。
AEAD 算法允许我们将明文数据附加到密文上,这样如果明文数据被破坏,认证标签将无法验证,密文也不会被解密。AEAD 操作可以表示为 $AEAD(K, P, A) = (C, A, T)$,其中 $K$ 是密钥,$P$ 是明文,$A$ 是关联数据,$C$ 是密文,$T$ 是认证标签。关联数据 $A$ 保持不变,密文 $C$ 是明文的加密结果。认证标签依赖于 $P$ 和 $A$,只有当 $C$ 和 $A$ 都未被修改时,标签才会被验证为有效。
解密操作 $ADAD(K, C, A, T) = (P, A)$ 需要密钥、密文、关联数据和标签来计算明文和关联数据,如果 $C$ 或 $A$ 被破坏,解密将失败。使用 AEAD 时,可以将 $A$ 或 $P$ 留空。如果关联数据 $A$ 为空,AEAD 就变成了普通的认证密码;如果 $P$ 为空,它就只是一个消息认证码(MAC)。
2. 使用随机数避免可预测性
为了保证安全性,加密方案必须具有不可预测性,即多次加密相同明文时应返回不
超级会员免费看
订阅专栏 解锁全文
57万+

被折叠的 条评论
为什么被折叠?



