EAX mode (encrypt-then-authenticate-then-translate[1]) is a mode of operation for cryptographic block ciphers. It is an Authenticated Encryption with Associated Data (AEAD) algorithm designed to simultaneously provide both authentication and privacy of the message (authenticated encryption) with a two-pass scheme, one pass for achieving privacy and one for authenticity for each block.
EAX mode was submitted on October 3, 2003, to the attention of NIST in order to replace CCM as standard AEAD mode of operation, since CCM mode lacks some desirable attributes of EAX and is more complex.
Encryption and authentication
editEAX is a flexible nonce-using two-pass AEAD scheme with no restrictions on block cipher primitive to be used, nor on block size, and supports arbitrary-length messages. Authentication tag length is arbitrarily sizeable up to the used cipher's block size.
The block cipher primitive is used in CTR mode for encryption and as OMAC for authentication over each block through the EAX composition method, that may be seen as a particular case of a more general algorithm called EAX2 and described in The EAX Mode of Operation[2]
The reference implementation in the aforementioned paper uses AES in CTR mode for encryption combined with AES OMAC for authentication.
Performance
editBeing a two-pass scheme, EAX mode is slower than a well designed one-pass scheme based on the same primitives.
EAX mode has several desirable attributes, notably:
- provable security (dependent on the security of the underlying primitive cipher);
- message expansion is minimal, being limited to the overhead of the tag length;
- using CTR mode means the cipher need be implemented only for encryption, in simplifying implementation of some ciphers (especially desirable attribute for hardware implementation);
- the algorithm is "on-line", that means that can process a stream of data, using constant memory, without knowing total data length in advance;
- the algorithm can pre-process static Associated Data (AD), useful for encryption/decryption of communication session parameters (where session parameters may represent the Associated Data).
Notably, CCM mode lacks the last 2 attributes (CCM can process Associated Data, it can't pre-process it).
Patent status
editThe authors of EAX mode, Mihir Bellare, Phillip Rogaway, and David Wagner placed the work under public domain and have stated that they were unaware of any patents covering this technology. Thus, EAX mode of operation is believed to be free and unencumbered for any use.
Use
editA modification of the EAX mode, so called EAX′ or EAXprime, is used in the ANSI C12.22 standard for transport of meter-based data over a network. In 2012 Kazuhiko Minematsu, Stefan Lucks, Hiraku Morita and Tetsu Iwata published a paper that proves the security of the mode with messages longer than the key, but demonstrates a trivial attack against short messages using this mode. The authors stated that they did not know whether the ANSI C12.22 protocols were vulnerable to the attack.[3][4]
See also
editReferences
edit- ^ Bellare, M.; Rogaway, P.; Wagner, D. (2003-09-09). "EAX: A Conventional Authenticated-Encryption Mode". IACR. Retrieved 2017-08-15.
- ^ Bellare, Mihir; Rogaway, Phillip; Wagner, David (April 2003). "The EAX Mode of Operation (A Two-Pass Authenticated Encryption Scheme Optimized for Simplicity and Efficiency)". Fast Software Encryption (FSE) 2004. Retrieved 2017-08-15.
- ^ Minematsu, Kazuhiko; Lucks, Stefan; Morita, Hiraku; Iwata, Tetsu (2013-05-14). "Attacks and Security Proofs of EAX-Prime". IACR. Retrieved 2017-08-15.
- ^ Minematsu, Kazuhiko (2012-01-14). "NEC security evaluation report on EAXprime" (PDF). Letter to NIST. Archived from the original (PDF) on 2013-03-02. Via Public Comments, Block Cipher Modes, csrc.nist.gov, archived 2012-05-03.
External links
edit- NIST: Block Cipher Modes
- A Critique of CCM (February 2003)
Software implementations
edit- C : Dr. Brian Gladman's crypto library implementing EAX mode of operation Archived 2017-08-16 at the Wayback Machine
- Pascal / Delphi: Wolfgang Ehrhardt's crypto library implementing EAX mode of operation
- Java: BouncyCastle crypto library implementing EAX mode of operation
- C: libtomcrypt implementing EAX mode of operation