Internet DRAFT - draft-madden-jose-siv-mode

draft-madden-jose-siv-mode







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,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
              10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
              2003, <https://www.rfc-editor.org/info/rfc3629>.

   [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,
              <https://www.rfc-editor.org/info/rfc4868>.

   [RFC7515]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web
              Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May
              2015, <https://www.rfc-editor.org/info/rfc7515>.

   [RFC7516]  Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)",
              RFC 7516, DOI 10.17487/RFC7516, May 2015,
              <https://www.rfc-editor.org/info/rfc7516>.

   [RFC7518]  Jones, M., "JSON Web Algorithms (JWA)", RFC 7518,
              DOI 10.17487/RFC7518, May 2015,
              <https://www.rfc-editor.org/info/rfc7518>.

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, <https://www.rfc-editor.org/info/rfc3610>.

   [RFC4493]  Song, JH., Poovendran, R., Lee, J., and T. Iwata, "The
              AES-CMAC Algorithm", RFC 4493, DOI 10.17487/RFC4493, June
              2006, <https://www.rfc-editor.org/info/rfc4493>.




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,
              <https://www.rfc-editor.org/info/rfc4949>.

   [RFC5297]  Harkins, D., "Synthetic Initialization Vector (SIV)
              Authenticated Encryption Using the Advanced Encryption
              Standard (AES)", RFC 5297, DOI 10.17487/RFC5297, October
              2008, <https://www.rfc-editor.org/info/rfc5297>.

   [RFC7519]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
              (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
              <https://www.rfc-editor.org/info/rfc7519>.

   [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-,
              <http://www.unicode.org/versions/latest/>.

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 =      <empty octet sequence>

     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 =      <empty octet sequence>

     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]