Network Working Group N. Madden Internet-Draft ForgeRock Intended status: Standards Track December 22, 2017 Expires: June 25, 2018 Synthetic IV (SIV) encryption modes for JWE draft-madden-jose-siv-mode-02 Abstract This document defines how to use Synthetic Initialization Vector (SIV) encryption and key-wrapping modes with JSON Web Encryption (JWE), and registers identifiers for SIV-based key-wrapping and content encryption algorithms. SIV provides either deterministic authenticated encryption and key-wrapping, or nonce-based misuse- resistant authenticated encryption depending on usage. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on June 25, 2018. Copyright Notice Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of Madden Expires June 25, 2018 [Page 1] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Terminology . . . . . . . . . . . . . . . . 3 1.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Notational Conventions . . . . . . . . . . . . . . . . . 4 1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 2. Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. Generic SIV Construction . . . . . . . . . . . . . . . . 5 2.1.1. Encryption . . . . . . . . . . . . . . . . . . . . . 6 2.1.2. Decryption . . . . . . . . . . . . . . . . . . . . . 7 2.2. SIV Key Wrapping . . . . . . . . . . . . . . . . . . . . 8 2.2.1. A128SIVKW . . . . . . . . . . . . . . . . . . . . . . 9 2.2.2. A128SIVKW-HS256 . . . . . . . . . . . . . . . . . . . 9 2.2.3. A192SIVKW-HS384 . . . . . . . . . . . . . . . . . . . 9 2.2.4. A256SIVKW-HS512 . . . . . . . . . . . . . . . . . . . 10 2.3. SIV Content Encryption . . . . . . . . . . . . . . . . . 10 2.3.1. A128SIV . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.2. A128SIV-HS256 . . . . . . . . . . . . . . . . . . . . 11 2.3.3. A192SIV-HS384 . . . . . . . . . . . . . . . . . . . . 11 2.3.4. A256SIV-HS512 . . . . . . . . . . . . . . . . . . . . 12 3. IANA considerations . . . . . . . . . . . . . . . . . . . . . 12 4. Security Considerations . . . . . . . . . . . . . . . . . . . 14 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1. Normative References . . . . . . . . . . . . . . . . . . 15 5.2. Informative References . . . . . . . . . . . . . . . . . 15 Appendix A. Test Cases . . . . . . . . . . . . . . . . . . . . . 16 A.1. Test Cases for A128SIVKW . . . . . . . . . . . . . . . . 16 A.2. Test Cases for A192SIVKW-HS384 . . . . . . . . . . . . . 17 A.3. Test Cases for A128SIV-HS256 . . . . . . . . . . . . . . 18 A.4. Test Cases for A256SIV-HS512 . . . . . . . . . . . . . . 19 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 20 1. Introduction This specification registers cryptographic algorithms and identifiers to be used with JSON Web Encryption (JWE) [RFC7516] for key-wrapping, deterministic authenticated encryption and nonce-based misuse- resistant authenticated content encryption based on the Synthetic Initialization Vector (SIV, or "Synthetic IV") [RFC5297] block cipher mode of operation. As a content encryption method, SIV mode takes as input a key, the JWE Protected Header, an optional nonce (IV), and the plaintext payload, and produces a ciphertext having the same length as the plaintext and an authentication tag that also serves as Madden Expires June 25, 2018 [Page 2] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 the synthetic initialization vector. As a JWE Algorithm, SIV key wrapping is a drop-in replacement for AES Key Wrap. This extends [RFC7518]. 1.1. Requirements Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 1.2. Motivation The motivations from [RFC5297] apply here. Compared to the existing JWE AES Key Wrap algorithm [RFC7516] (Section 4.4), SIV provides a provable security bound, and a more efficient construction. To wrap a 128-bit key, AES Key Wrap requires 12 calls to the AES block cipher, while SIV (with CMAC and as described in this specification) requires just 3. AES Key Wrap has an authentication strength of 64 bits ([SP800-38F], Appendix A.3)--that is, a randomly selected bit-string of appropriate length has a 1 in 2^64 chance of being a valid ciphertext, and this probability will increase as more guesses are made. The SIV modes specified in this document all provide authentication strength of at least 128 bits. For Content Encryption with a nonce, SIV is similar in performance to other two-pass authenticated encryption methods, such as AES_CBC_HMAC_SHA2, for short messages and typically slower than the one-pass AES GCM. However, while the security of AES GCM collapses catastrophically if a key-nonce pair is reused [SP800-38D] (Appendix A), in SIV an attacker would only learn whether the same plaintext (and the same associated data) has been encrypted with the same key and nonce. This property, known as nonce-reuse misuse resistant authenticated encryption (MRAE), provides a measure of safety in the face of programming errors or poor quality nonce generation, such as misconfigured or compromised random data generators, or accidental reuse due to logic errors in deterministic nonce generation algorithms (for instance, reusing nonces after a restart). For randomly-generated IVs, AES-GCM can only safely encrypt less than 2^32 messages with the same key, before the risk of an accidental repetition becomes too high [SP800-38D] (Section 8.3). This limit can be easily reached in practice. For instance, an application producing JWE-encrypted tokens at a rate of 1000 per second will need to rotate the key at most every 49 days. For SIV (and CBC) this Madden Expires June 25, 2018 [Page 3] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 limit is around 2^48 (for short messages), which would allow the same application to keep using one key for almost 9000 years. Where the content or associated data of a JWE is known to contain a non-repeating value or key (such as a unique JWT ID [RFC7519] or a high-resolution time-stamp), then the nonce MAY be omitted, resulting in a more compact serialisation. For constrained devices, the abstract SIV scheme can be instantiated with AES in CTR mode for confidentiality, and AES-CMAC [RFC4493] for authentication. In this instantiation the mode requires only an AES encryption circuit, providing similar benefits (and comparable performance) to AES CCM mode [RFC3610], but with the added robustness of nonce misuse resistance. The MRAE property is particularly attractive for devices that have limited access to high-quality sources of entropy, for instance in the Internet of Things (IoT). Finally, SIV allows a single construction to be used for both authenticated content encryption and key wrapping, and the construction itself is simple to describe and implement correctly from standard building blocks. The main drawback of SIV is that it cannot be performed on-line as data is produced. The full data must be processed to produce an authentication tag (and synthetic IV) before any part can be encrypted. It is therefore most suitable for relatively short content such as JWTs [RFC7519]. 1.3. Notational Conventions BASE64URL(OCTETS) denotes the base64url encoding of OCTETS, per Section 2 of [RFC7515]. UTF8(STRING) denotes the octets of the UTF-8 [RFC3629] representation of STRING, where STRING is a sequence of zero or more Unicode [UNICODE] characters. ASCII(STRING) denotes the octets of the ASCII [RFC20] representation of STRING, where STRING is a sequence of zero or more ASCII characters. The concatenation of two values A and B is denoted as A || B. 1.4. Terminology These terms defined by the JSON Web Signature (JWS) [RFC7515] specification are incorporated into this specification: "Base64url Encoding" Madden Expires June 25, 2018 [Page 4] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 These terms defined by the JSON Web Encryption (JWE) [RFC7516] specification are incorporated into this specification: "JSON Web Encryption (JWE)", "Additional Authenticated Data (AAD)", "Authentication Tag", "Content Encryption Key (CEK)", "JWE Authentication Tag", "JWE Ciphertext", "JWE Encrypted Key", "JWE Initialization Vector", "JWE Protected Header", and "Key Wrapping". These terms defined by the Internet Security Glossary, Version 2 [RFC4949] are incorporated into this specification: "Ciphertext", "Message Authentication Code (MAC)", and "Plaintext". 2. Algorithms 2.1. Generic SIV Construction This section defines a family of authenticated encryption algorithms built using a combination of AES in Counter (CTR) mode and either CMAC or HMAC-SHA2 operations. The presentation here is based on the abstract SIV scheme in Section 4 of [SIV]. The generic construction is parameterised by the size of the key and the instantiation of the MAC algorithm. We use MAC(K, M) to denote the application of the MAC algorithm to the given message M using the given key K. We use AES- CTR(K, IV, M) to denote the application of AES in CTR mode to the message M, using the key K and Initialization Vector IV. Rather than adopting the S2V construction of [RFC5297] for providing multiple Additional Authentication Data (AAD) blocks to the MAC, we instead adopt a simpler method based on the base64url-encoded compact serialisation of the JWE Protected Header and IV separated by dots, and the unencoded plaintext octets. This encoding uniquely determines the components of the AAD while being simpler, and uses encoded components that are already produced if the Compact Serialization is being used. As stated in Section 5 of [SIV], the motivation for the S2V construction is efficiency rather than security, and any unambiguous encoding will suffice. It is expected that a simpler construction will aid adoption of these safer encryption modes in situations where performance is not of paramount importance. [[CREF1: There is an I-D defining an AES-GCM-SIV mode currently in progress (https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-05). This is a much more high-performance SIV mode than the ones defined in this document. I have left it out of this specification because it is more complex to implement and still in draft form. A further I-D/RFC could be proposed to also add that mode for in this same framework, but I believe the modes defined in the present I-D will be useful for many years to come, especially on constrained devices. --N. Madden]] Madden Expires June 25, 2018 [Page 5] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 For the CMAC-based algorithms, we only define modes for an overall 128-bit security level. That is, the expected effort for an attacker to either produce an authentication tag forgery, recover either the encryption or MAC keys, or to compromise the privacy of a any SIV- encrypted JWE, is on the order of 2^128 operations. For the HMAC- based algorithms we define modes at overall 128-bit, 192-bit and 256-bit security levels. The reason for this is that AES-CMAC is only capable of producing a maximum authentication tag of 128 bits and so cannot provide more than 128 bits of protection against authentication tag forgery. 2.1.1. Encryption The authenticated encryption algorithm takes as input for octet strings: a secret key K, a plaintext P, additional authenticated data AAD (computed as per Steps 13-14 of Section 5.1 of [RFC7516]), and an optional initialization vector IV. It produces the ciphertext value E and an authentication tag T as outputs. The data in the plaintext are encrypted, and the additional authenticated data are authenticated, but not encrypted. Encryption is performed using the following steps: 1. The secondary keys MAC_KEY and ENC_KEY are generated from the input key K as follows. Each of these two keys is an octet string. MAC_KEY consists of the initial MAC_KEY_LEN octets of K, in order. ENC_KEY consists of the final ENC_KEY_LEN octets of K, in order. The number of octets in the input key K MUST be the sum of MAC_KEY_LEN and ENC_KEY_LEN. 2. If a nonce is to be used, then the IV SHOULD be a 128-bit value generated randomly or pseudorandomly. 3. A message Authentication Tag T is computed as: T = MAC(MAC_KEY, ASCII(AAD || '.' || BASE64URL(IV) || '.') || plaintext). If no IV (nonce) is being used, then an empty octet sequence MUST be used instead. Madden Expires June 25, 2018 [Page 6] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 4. The Synthetic IV, SIV, is set to the first 16 octets of T, in order. 5. The plaintext is encrypted using AES-CTR with ENC_KEY as the key and SIV as the IV. We denote the ciphertext output of this step as E. 6. The ciphertext E and the Authentication Tag T are returned as the outputs of the authenticated encryption. The encryption process can be illustrated as follows. Here K, P, AAD, IV, SIV, T, and E denote the key, plaintext, Additional Authenticated Data, Initialization Vector, Synthetic IV, Authentication Tag, and ciphertext, respectively. MAC_KEY = initial MAC_KEY_LEN octets of K, ENC_KEY = final ENC_KEY_LEN octets of K, T = MAC(MAC_KEY, ASCII(AAD || '.' || BASE64URL(IV) || '.') || P), SIV = initial 16 octets of T, E = AES-CTR(ENC_KEY, SIV, P). 2.1.2. Decryption Decryption is performed using the following steps: 1. The secondary keys MAC_KEY and ENC_KEY are generated from the input key K as in Step 1 of Section 2.1.1. 2. The Synthetic IV is set to the first 16 octets of the Authentication Tag T. If the Authentication Tag is missing or not of the expected length for the algorithm (which is always at least 16 octets) then decryption MUST halt with an indication of failure. 3. The plaintext P is decrypted using AES-CTR with ENC_KEY as the key, SIV as the IV, and the ciphertext, E. 4. The Authentication Tag T is checked by recomputing the tag T' as in Step 3 of Section 2.1.1. If T and T' are identical then H and P are considered valid and processing is continued. Otherwise, all of the data used in the MAC computation MUST be discarded and the decryption operation MUST halt with an indication of failure. Tag comparison MUST use a constant-time octet string comparison Madden Expires June 25, 2018 [Page 7] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 operation using the known length of the Authentication Tag as specified by the algorithm in use. 5. The plaintext P is returned. 2.2. SIV Key Wrapping The following JWE algorithms are defined here (to be applied as values of "alg" parameter): +-----------------+-------------------------------------------------+ | "alg" Param | Key Management Algorithm | | Value | | +-----------------+-------------------------------------------------+ | A128SIVKW | AES SIV Key Wrap using CMAC and 256 bit key. | | A128SIVKW-HS256 | AES SIV Key Wrap using HMAC-SHA-256-128 and 256 | | | bit key. | | A192SIVKW-HS384 | AES SIV Key Wrap using HMAC-SHA-384-192 and 384 | | | bit key. | | A256SIVKW-HS512 | AES SIV Key Wrap using HMAC-SHA-512-256 and 512 | | | bit key. | +-----------------+-------------------------------------------------+ All of the key wrapping modes use the generic construction from Section 2.1, with the following inputs: The plaintext P is the octets of the Content Encryption Key (CEK) to be wrapped. The input key K is the Key Encryption Key (KEK). The IV is an empty octet sequence. The AAD is the UTF8 octets of the value of the "alg" parameter (e.g., "A128SIVKW"). In all cases the output ciphertext length will be the same as the input plaintext CEK, in octets. The authentication tag will either be 16, 24 or 32 octets long depending on the algorithm. The JWE Encrypted Key value is the Ciphertext output. The Authentication Tag output is represented in base64url encoded form as the "tag" (authentication tag) Header Parameter value, as in Section 4.7.1.2 of [RFC7518]. This specification extends that header value to allow authentication tags of 192 or 256 bits. NB: this has the added advantage of binding the wrapped key into the JWE authenticated data, which would otherwise not happen. Madden Expires June 25, 2018 [Page 8] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 2.2.1. A128SIVKW This algorithm uses the CMAC message authentication code [RFC4493] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 32 octets long. MAC_KEY_LEN is 16 octets. ENC_KEY_LEN is 16 octets. MAC is CMAC. The output tag length is 16 octets. 2.2.2. A128SIVKW-HS256 This algorithm uses the HMAC-SHA-256-128 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 32 octets long. MAC_KEY_LEN is 16 octets. ENC_KEY_LEN is 16 octets. MAC is HMAC-SHA-256-128. The output tag length is 16 octets. 2.2.3. A192SIVKW-HS384 This algorithm uses the HMAC-SHA-384-192 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 48 octets long. MAC_KEY_LEN is 24 octets. ENC_KEY_LEN is 24 octets. Madden Expires June 25, 2018 [Page 9] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 MAC is HMAC-SHA-384-192. The output tag length is 24 octets. 2.2.4. A256SIVKW-HS512 This algorithm uses the HMAC-SHA-512-256 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 64 octets long. MAC_KEY_LEN is 32 octets. ENC_KEY_LEN is 32 octets. MAC is HMAC-SHA-512-256. The output tag length is 32 octets. 2.3. SIV Content Encryption The following content encryption methods are defined here (to be applied as values of the "enc" parameter): +-----------------+-------------------------------------------------+ | "enc" Param | Content Encryption Method | | Value | | +-----------------+-------------------------------------------------+ | A128SIV | AES SIV using CMAC and 256 bit key. | | A128SIV-HS256 | AES SIV using HMAC-SHA-256-128 and 256 bit key. | | A192SIV-HS384 | AES SIV using HMAC-SHA-384-192 and 384 bit key. | | A256SIV-HS512 | AES SIV using HMAC-SHA-512-256 and 512 bit key. | +-----------------+-------------------------------------------------+ All of the SIV content encryption methods use the generic construction from Section 2.1, with the following inputs: The plaintext P is the octets of JWE plaintext. The input key K is the Content Encryption Key (CEK). The IV is either a randomly or pseudorandomly generated 16 octet value, or an empty octet string. The AAD is the UTF8 octets of the JWE Protected Header. Madden Expires June 25, 2018 [Page 10] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 In all cases the output ciphertext length will be the same as the input plaintext, in octets. The authentication tag will either be 16, 24 or 32 octets long depending on the algorithm. The Ciphertext and Authentication Tag outputs become the JWE Ciphertext and JWE Authentication Tag values respectively. 2.3.1. A128SIV This algorithm uses the CMAC message authentication code [RFC4493] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 32 octets long. MAC_KEY_LEN is 16 octets. ENC_KEY_LEN is 16 octets. MAC is CMAC. The output tag length is 16 octets. 2.3.2. A128SIV-HS256 This algorithm uses the HMAC-SHA-256-128 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 32 octets long. MAC_KEY_LEN is 16 octets. ENC_KEY_LEN is 16 octets. MAC is HMAC-SHA-256-128. The output tag length is 16 octets. 2.3.3. A192SIV-HS384 This algorithm uses the HMAC-SHA-384-192 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: Madden Expires June 25, 2018 [Page 11] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 The input key K is 48 octets long. MAC_KEY_LEN is 24 octets. ENC_KEY_LEN is 24 octets. MAC is HMAC-SHA-384-192. The output tag length is 24 octets. 2.3.4. A256SIV-HS512 This algorithm uses the HMAC-SHA-512-256 message authentication code as defined in [RFC4868] to provide message authentication and the synthetic IV. The parameters are as follows: The input key K is 64 octets long. MAC_KEY_LEN is 32 octets. ENC_KEY_LEN is 32 octets. MAC is HMAC-SHA-512-256. The output tag length is 32 octets. 3. IANA considerations The following are added to JSON Web Signature and Encryption Algorithms registry: o Algorithm Name: "A128SIVKW" o Algorithm Description: AES SIV Key Wrap with CMAC using 256 bit key o Algorithm Usage Location(s): "alg" o JOSE Implementation Requirements: Recommended o Change Controller: IESG o Specification Document(s): Section 2.2.1 o Algorithm Name: "A128SIVKW-HS256" o Algorithm Description: AES SIV Key Wrap with HMAC-SHA-256-128 using 256 bit key o Algorithm Usage Location(s): "alg" o JOSE Implementation Requirements: Recommended o Change Controller: IESG Madden Expires June 25, 2018 [Page 12] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 o Specification Document(s): Section 2.2.2 o Algorithm Name: "A192SIVKW-HS384" o Algorithm Description: AES SIV Key Wrap with HMAC-SHA-384-192 using 384 bit key o Algorithm Usage Location(s): "alg" o JOSE Implementation Requirements: Optional o Change Controller: IESG o Specification Document(s): Section 2.2.3 o Algorithm Name: "A256SIVKW-HS512" o Algorithm Description: AES SIV Key Wrap with HMAC-SHA-512-256 using 512 bit key o Algorithm Usage Location(s): "alg" o JOSE Implementation Requirements: Optional o Change Controller: IESG o Specification Document(s): Section 2.2.4 o Algorithm Name: "A128SIV" o Algorithm Description: AES SIV with CMAC using 256 bit key o Algorithm Usage Location(s): "enc" o JOSE Implementation Requirements: Recommended o Change Controller: IESG o Specification Document(s): Section 2.3.1 o Algorithm Name: "A128SIV-HS256" o Algorithm Description: AES SIV with HMAC-SHA-256-128 using 256 bit key o Algorithm Usage Location(s): "enc" o JOSE Implementation Requirements: Recommended o Change Controller: IESG o Specification Document(s): Section 2.3.2 o Algorithm Name: "A192SIV-HS284" o Algorithm Description: AES SIV with HMAC-SHA-384-192 using 384 bit key o Algorithm Usage Location(s): "enc" o JOSE Implementation Requirements: Optional o Change Controller: IESG o Specification Document(s): Section 2.3.3 o Algorithm Name: "A256SIV-HS512" Madden Expires June 25, 2018 [Page 13] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 o Algorithm Description: AES SIV with HMAC-SHA-512-256 using 512 bit key o Algorithm Usage Location(s): "enc" o JOSE Implementation Requirements: Optional o Change Controller: IESG o Specification Document(s): Section 2.3.4 4. Security Considerations The security considerations of [RFC5297] apply here. In total, no more than 16 * 2^48 octets of data (approx. 4 exabytes) should be encrypted with the same key in any SIV mode. For example, when using SIV128KW to wrap 128-bit keys, then no more than 2^48 messages should be encrypted with the same key encryption key (KEK). This is over 281 trillion messages, so is expected to provide sufficient capacity for extremely long-lived or high-usage keys. When using SIV for content encryption, it is RECOMMENDED to always use a nonce or a random IV of at least 128 bits for every message. While SIV minimises the information that is lost in case of a nonce reuse, the security of the cipher is still considerably weaker than it would be otherwise. In technical terms, SIV mode does not achieve semantic security if unique nonces are not used for each message, achieving only the weaker notion of deterministic authenticated encryption (DAE). SIV uses AES in CTR mode for encryption, which produces ciphertexts that are exactly the same length as the plaintext. If the length of the plaintext is sensitive (for instance, when there are only a small number of possibilities for the plaintext and they are all of different lengths) then the application should pad such values to some minimum/fixed size before encryption. If such padding is performed, then it MUST be applied before calling the AES-SIV encryption modes defined in this specification, so that the padding is included in the authentication tag. When decrypting, authentication tag validation in Step 4 of Section 2.1.2 MUST be performed before any validation or processing of the padding is performed. Care should be taken when combining JWE plaintext compression with SIV encryption for a related reason: compression varies the size of the plaintext based on the (confidential) content of that plaintext. In SIV mode (and other cipher modes, such as GCM and, to a lesser extent, CBC), this will vary the size of the ciphertext by the same amount. If an attacker is able to control any part of the content of the plaintext then they may be able to infer confidential parts of Madden Expires June 25, 2018 [Page 14] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 the same plaintext according to variations in the size of the compressed and encrypted ciphertext. It is therefore recommended not to use compression with SIV mode encryption (or any encryption) unless the expected information leakage is acceptable. 5. References 5.1. Normative References [RFC20] Cerf, V., "ASCII format for Network Interchange", RFC 20, October 1969. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, . [RFC4868] Kelly, S. and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA- 384, and HMAC-SHA-512 with IPsec", RFC 4868, DOI 10.17487/RFC4868, May 2007, . [RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May 2015, . [RFC7516] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", RFC 7516, DOI 10.17487/RFC7516, May 2015, . [RFC7518] Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, DOI 10.17487/RFC7518, May 2015, . 5.2. Informative References [RFC3610] Whiting, D., Housley, R., and N. Ferguson, "Counter with CBC-MAC (CCM)", RFC 3610, DOI 10.17487/RFC3610, September 2003, . [RFC4493] Song, JH., Poovendran, R., Lee, J., and T. Iwata, "The AES-CMAC Algorithm", RFC 4493, DOI 10.17487/RFC4493, June 2006, . Madden Expires June 25, 2018 [Page 15] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, . [RFC5297] Harkins, D., "Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Standard (AES)", RFC 5297, DOI 10.17487/RFC5297, October 2008, . [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, . [SIV] Rogaway, P. and T. Shrimpton, "Deterministic Authenticated-Encryption. A Provable-Security Treatment of the Key-Wrap Problem.", IACR ePrint 2006/221, August 2007. [SP800-38D] Dworkin, M., "Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC.", NIST Special Publication 800-38D, November 2007. [SP800-38F] Dworkin, M., "Recommentation for Block Cipher Modes of Operation: Methods for Key Wrapping.", NIST Special Publication 800-38F, December 2012. [UNICODE] The Unicode Consortium, "The Unicode Standard", 1991-, . Appendix A. Test Cases The following test cases can be used to validate implementations of the AES SIV algorithms defined in this specification. The variable names are those defined in Section 2.1.1. All values are hexadecimal. A.1. Test Cases for A128SIVKW NB: K here is the KEK, and P is the CEK to be wrapped, T is the output "tag" value, and E is the wrapped CEK. Madden Expires June 25, 2018 [Page 16] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 A128SIVKW K = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f MAC_KEY = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ENC_KEY = 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f P = 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 IV = AAD = 41 31 32 38 53 49 56 4b 57 T = c3 eb 04 f1 c7 07 8b 92 e0 dc f6 fe 17 f5 82 46 SIV = c3 eb 04 f1 c7 07 8b 92 e0 dc f6 fe 17 f5 82 46 E = ef 96 fd 87 24 ea f9 9b 54 15 8a fa 20 5f 77 de A.2. Test Cases for A192SIVKW-HS384 NB: K here is the KEK, and P is the CEK to be wrapped, T is the output "tag" value, and E is the wrapped CEK. Madden Expires June 25, 2018 [Page 17] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 A192SIVKW-HS384 K = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f MAC_KEY = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 ENC_KEY = 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f P = 17 16 15 14 13 12 11 10 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00 IV = AAD = 41 31 39 32 53 49 56 4b 57 2d 48 53 33 38 34 T = 27 86 b6 03 3b b1 4f f7 cb 85 6d ae 69 6e 3d 98 ff e2 0b 59 77 b3 e5 36 SIV = c3 eb 04 f1 c7 07 8b 92 e0 dc f6 fe 17 f5 82 46 E = 65 c5 52 72 4e d3 4f 9e ab 20 32 4d af 0d 2d 31 7f df 69 13 06 c5 0a c8 A.3. Test Cases for A128SIV-HS256 Madden Expires June 25, 2018 [Page 18] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 A128SIV-HS256 K = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f MAC_KEY = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ENC_KEY = 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f P = 41 20 63 69 70 68 65 72 20 73 79 73 74 65 6d 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 72 65 71 75 69 72 65 64 20 74 6f 20 62 65 20 73 65 63 72 65 74 2c 20 61 6e 64 20 69 74 20 6d 75 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 66 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 68 61 6e 64 73 20 6f 66 20 74 68 65 20 65 6e 65 6d 79 20 77 69 74 68 6f 75 74 20 69 6e 63 6f 6e 76 65 6e 69 65 6e 63 65 IV = 1a f3 8c 2d c2 b9 6f fd d8 66 94 09 23 41 bc 04 AAD = 7b 22 61 6c 67 22 3a 22 64 69 72 22 2c 22 65 6e 63 22 3a 22 41 31 32 38 53 49 56 2d 48 53 32 35 36 22 7d T = 5e cd e7 ca 4a eb 39 bc 05 11 2b a9 00 17 a3 76 SIV = 5e cd e7 ca 4a eb 39 bc 05 11 2b a9 00 17 a3 76 E = 22 70 54 15 99 71 ca d6 01 8c d9 30 29 e6 e5 20 5d 0a d3 d2 1e 8c 10 ce 6f 84 36 e3 68 20 24 42 59 e8 ae bd 55 16 ce 37 ab 5a 44 3b 22 0a 94 a0 03 7f 4a ad 4d 11 57 db 55 cb 6a 01 70 8b 05 0d 6f 39 ad b4 d8 3b 5c 77 ac 16 6a 98 cc 0e 0a 75 93 f6 34 6e 67 b1 9d 4c 43 17 11 95 7b b5 e3 8b ee cb df 2e 7f 49 c0 ba c3 58 5b 90 32 b4 bc ca 08 6b 51 a8 c5 d3 81 a7 fd d8 c3 fb 99 6e 25 46 A.4. Test Cases for A256SIV-HS512 Madden Expires June 25, 2018 [Page 19] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 A256SIV-HS512 K = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f MAC_KEY = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ENC_KEY = 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f P = 41 20 63 69 70 68 65 72 20 73 79 73 74 65 6d 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 72 65 71 75 69 72 65 64 20 74 6f 20 62 65 20 73 65 63 72 65 74 2c 20 61 6e 64 20 69 74 20 6d 75 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 66 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 68 61 6e 64 73 20 6f 66 20 74 68 65 20 65 6e 65 6d 79 20 77 69 74 68 6f 75 74 20 69 6e 63 6f 6e 76 65 6e 69 65 6e 63 65 IV = 1a f3 8c 2d c2 b9 6f fd d8 66 94 09 23 41 bc 04 AAD = 7b 22 61 6c 67 22 3a 22 64 69 72 22 2c 22 65 6e 63 22 3a 22 41 32 35 36 53 49 56 2d 48 53 35 31 32 22 7d T = f9 e5 2d 5c 58 9d 3a f8 3f 98 3f ce 3b 98 aa ae 97 aa 0c 02 e1 80 a4 ec a3 0b 5e 7b 47 97 a5 b2 SIV = f9 e5 2d 5c 58 9d 3a f8 3f 98 3f ce 3b 98 aa ae E = cc 05 71 16 ad 3d 44 9b 50 ba 7b bd b4 42 f7 08 20 fe bc d0 58 0e 8d 4d e0 f3 61 70 6b db b6 17 a6 d6 a9 56 e5 69 cc 74 d3 16 7d 2c a2 a6 54 2e e7 69 64 9c db 4d 9b 68 b7 01 74 f8 a4 4e eb 9e a0 26 8a 3c 48 e9 c8 88 56 c4 2c eb 36 95 d2 90 39 18 34 5d d2 f8 17 20 bb ce be 24 bf f1 74 68 26 bb c9 c8 11 92 9d 45 ce dd 63 49 2d ed b6 c0 b2 b5 bd c4 93 a6 0f e6 c7 c6 e7 fd 94 90 3d 03 Author's Address Madden Expires June 25, 2018 [Page 20] Internet-Draft Synthetic IV (SIV) encryption modes for JWE December 2017 Neil Madden ForgeRock Broad Quay House Prince Street Bristol BS1 4DJ United Kingdom Email: neil.madden@forgerock.com Madden Expires June 25, 2018 [Page 21]