EAX模式

EAX 模式（encrypt-then-authenticate-then-translate ）是一种分组密码工作模式。它是一种带有关联数据的认证加密 ( AEAD ) 算法，旨在通过两遍方案同时提供消息的认证和隐私（认证加密），一次用于实现隐私，另一遍用于每个块的真实性。

EAX 模式于 2003 年 10 月 3 日提交给 NIST，以取代CCM作为标准 AEAD 工作模式，因为 CCM 模式缺乏 EAX 的一些重要属性且更加复杂。

 加密与认证 
alt=Diagram representing encryption under EAX|thumb|400x400px|表示 EAX 下加密的图表。消息为M，密钥为K，认证头为H，随机数为N，密文为C，认证标签为T。
EAX 是一种灵活的，使用随机数的两遍 AEAD 方案，对要使用的块密码原语和分组大小没有限制，并且支持任意长度的消息。身份验证标签长度可以任意调整，最多可达所使用的密码的块大小。

分组密码原语在CTR 模式下用于加密，并作为OMAC通过 EAX 组合方法对每个块进行身份验证，这可以视作是被称为 EAX2 的更通用算法的特殊情况，这也在EAX 操作模式中进行了描述。 

上述论文中的参考实现使用 AES-CTR进行加密，并结合 AES OMAC 进行身份验证。

 性能 
作为一种两遍方案，EAX 模式比基于相同原语的精心设计的单遍方案略慢一些。

EAX 模式有几个理想的特性，特别是：

 可证明安全性（取决于底层加密算法的安全性）；
 最小化消息扩展，开销仅限于标签长度；
 使用CTR模式意味着密码只需为了加密而实现，简化了某些密码的实现（这对于硬件实现来说是极其理想的特性）；
 该算法是“在线”的，这意味着可以使用常量内存处理数据流，无需预先知道总数据长度；
 该算法可以预处理静态关联数据（Associated Data, AD），这对于通信会话参数的加解密很有用（其中会话参数可以代表关联数据）。

值得注意的是，CCM 模式缺少最后 2 个属性（CCM 能够处理关联数据，但无法进行预处理）。

 专利状况 
EAX 模式的作者Mihir Bellare 、 Phillip Rogaway和David Wagner将该作品直接公开，并表示他们不知道涉及该技术的任何专利。因此，EAX 操作模式被认为是免费且不受任何使用限制的。

 用途 
EAX 模式的修改版（所谓的EAX'或 EAXprime）用于ANSI C12.22标准中，用于通过网络传输基于仪表的数据。 2012 年，Kazuhiko Minematsu、 Stefan Lucks 、Hiraku Morita 和 Tetsu Iwata 发表了一篇论文，证明了消息长于密钥的模式的安全性，但演示了使用该模式对短消息进行的简单攻击。作者表示，他们不清楚ANSI C12.22 协议是否易受攻击。   Via Public Comments, Block Cipher Modes, csrc.nist.gov, archived 2012-05-03.

 参见 
 带有关联数据的验证加密（AEAD）、认证加密（AE）
 CCM模式
 计数器模式（CTR）
 （One-key MAC，OMAC）

 参考 

 外部链接 

 NIST：分组密码模式 
 对 CCM 的批评 （2003 年 2 月）

 软件实施 

 C++：Brian Gladman 博士的加密库实现 EAX 操作模式 
 Pascal / Delphi：Wolfgang Ehrhardt 的加密库实现 EAX 操作模式 
 Java：BouncyCastle 加密库实现 EAX 操作模式 
 C: libtomcrypt 实现 EAX 操作模式 

 硬件实现 

Category:分组密码工作模式