认证加密

认证加密（，AE）和带有关联数据的认证加密（authenticated encryption with associated data，AEAD，AE的变种）是一种能够同时保证数据的保密性、 完整性和的一种加密模式。这些属性都是在一个易于使用的编程接口下提供的。

人们观察发现安全地将保密模式与认证模式组合可能是容易出错和困难的，于是认证加密应运而生。 这一点已由许多实际攻击证实，这些攻击通过对身份验证（包括SSL与TLS）的不正确实现或缺失，引入到了生产协议和应用程序中。

在2000年左右，围绕这个概念进行了一些努力。特别是，2000年Charanjit Jutla发表IACBC和模式，引发了人们对这些模式的强烈兴趣。 ISO/IEC 19772:2009已经对六种不同的认证加密模式（即 2.0，， ， ，Encrypt-then-MAC（EtM）和）进行了标准化。 在NIST的征集下开发了更多的模式。 海綿函數可以在双工模式下使用，提供经过认证的加密。

认证加密的方法

Encrypt-then-MAC (EtM) 

首先对明文进行加密，然后根据得到的密文生成訊息鑑別碼（MAC）。密文和它的MAC一起发送。例如IPsec。EtM是ISO/IEC 19772:2009规定的六种认证加密方法中的一种。这是唯一可以达到认证加密安全性最高定义的方法，但这-{只}-有在使用的MAC“强不可伪造”时才能实现。2014年11月，EtM的傳輸層安全性協定（TLS）和資料包傳輸層安全（DTLS）扩展已经作为RFC 7366发布。各种EtM密码套件也存在于SSHv2中（例如hmac-sha1-etm@openssh.com）。

Encrypt-and-MAC (E&M) 

基于明文生成MAC，并且明文在没有MAC的情况下被加密。明文的MAC和密文一起发送。用于例如SSH。E&M方法本身并未被证明是“强不可伪造”的。

MAC-then-Encrypt (MtE) 

基于明文生成MAC，然后将明文和MAC一起加密以基于两者生成密文。密文（包含加密的MAC）被发送。MtE方法本身并未被证明是“强不可伪造”的。用于例如SSL/TLS。尽管有理论上的安全性，但对SSL/TLS进行更深入的分析将保护模型化为MAC-then-pad-then-encrypt，即明文先填充到加密函数的块大小。填充错误通常会导致接收方发现可检测到的错误，从而导致密文填塞攻擊（Padding oracle attack），如Lucky Thirteen attack。

参见
 分组密码工作模式

参考文献

一般性

外部链接
 NIST: Modes Development
 How to choose an Authenticated Encryption mode

对称密码学
訊息鑑別碼