Using ChaCha20-Poly1305 Authenticated Encryption in the Cryptographic Message Syntax (CMS)
Internet-Draft R. Housley
Intended status: Standards Track Vigil Security
Expires: 1 June 2017 1 December 2016
Using ChaCha20-Poly1305 Authenticated Encryption
in the Cryptographic Message Syntax (CMS)
This document describes the conventions for using ChaCha20-Poly1305
Authenticated Encryption in the Cryptographic Message Syntax (CMS).
ChaCha20-Poly1305 is an authenticated encryption algorithm
constructed of the ChaCha stream cipher and Poly1305 authenticator.
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 http://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 1 June 2017.
Copyright (c) 2016 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
(http://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
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Housley Using AEAD_CHACHA20_POLY1305 with CMS [Page 1]
Internet-Draft 1 December 2016
This document specifies the conventions for using the
ChaCha20-Poly1305 Authenticated Encryption as the content-
authenticated-encryption algorithm with the Cryptographic Message
Syntax (CMS) [CMS] authenticated-enveloped-data content type
ChaCha [CHACHA] is a stream cipher developed by D. J. Bernstein in
2008. It is a refinement of Salsa20, which is one of the ciphers in
the eSTREAM portfolio [ESTREAM].
ChaCha20 is the 20-round variant of ChaCha; it requires a 256-bit key
and a 96-bit nonce. ChaCha20 is described in [FORIETF].
Poly1305 [POLY1305] is a Wegman-Carter, one-time authenticator
designed by D. J. Bernstein. Poly1305 produces a 16-byte
authentication tag; it requires a 256-bit, single-use key. Poly1305
is also described in [FORIETF].
ChaCha20 and Poly1305 have been designed for high performance
software implementations. They can typically be implemented with few
resources and inexpensive operations, making them suitable on a wide
range of systems. They have also been designed to minimize leakage
of information through side channels.
1.1. The ChaCha20 and Poly1305 AEAD Construction
ChaCha20 and Poly1305 have been combined to create an Authenticated
Encryption with Associated Data (AEAD) algorithm [AEAD]. This AEAD
algorithm is often referred to as AEAD_CHACHA20_POLY1305, and it is
AEAD_CHACHA20_POLY1305 accepts four inputs: a 256-bit key, a 96-bit
nonce, an arbitrary length plaintext, and an arbitrary length
additional authenticated data (AAD). As the name implies, a nonce
value cannot be used securely more than once with the same key.
AEAD_CHACHA20_POLY1305 produces two outputs: ciphertext of the same
length as the plaintext and a 128-bit authentication tag.
AEAD_CHACHA20_POLY1305 authenticated decryption processing is similar
to the encryption processing. Of course, the roles of ciphertext and
plaintext are reversed, so the ChaCha20 encryption function is
applied to the ciphertext, producing the plaintext. The Poly1305
function is run over the AAD and the ciphertext, not the plaintext,
and the resulting authentication tag is bitwise compared to the
received authentication tag. The message is authenticated if and
Housley Using AEAD_CHACHA20_POLY1305 with CMS [Page 2]
Internet-Draft 1 December 2016
only if the calculated and received authentication tags match.
CMS values are generated using ASN.1 [X680], which uses the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules (DER)
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
Show full document text