<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.3 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>

<rfc ipr="trust200902" docName="draft-sheffer-ietf-ciphertext-format-01" category="std">

  <front>
    <title abbrev="Ciphertext Format">A Generic Ciphertext Format</title>

    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="G." surname="Keselman" fullname="Gleb Keselman">
      <organization>Intuit</organization>
      <address>
        <email>gleb.keselman@gmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Nir" fullname="Yoav Nir">
      <organization>Dell Technologies</organization>
      <address>
        <email>ynir.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2021" month="January" day="15"/>

    <area>General</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a set of structured headers for encrypted data. The main goal of this format is to enable detection of encrypted data in large data stores, and associating it back to the system where it was created and the key with which it was encrypted. This allows organizations to extend the concept of data governance to encrypted data, and to manage such data even when encrypted by multiple different systems and cloud providers.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction-and-design-principles" title="Introduction and Design Principles">

<t>Organizations that manage sensitive data often employ application-level encryption to protect data at rest. When this solution is used, it is common that very large numbers of encrypted data items are stored, potentially for a long time. Security best practices, complicated organizational structures, as well as the existence of modern key management systems, lead to the proliferation of large numbers of encryption keys. After a while it becomes difficult to identify the encryption key that was used for a particular piece of data, with the situation becoming even more complicated when multiple key management systems are used by the same organization.</t>

<t>Application-level encryption can be deployed at different scales: in some cases a multi-megabyte file may be encrypted with a single key. In other cases, we may want to deploy encryption for specific database fields, which can easily manifest itself as millions of keys for a single database table.</t>

<t>Tagging encrypted data with metadata supports a number of important use cases: it allows the organization to better catalog the data (a.k.a. “data governance”), to discover the owner of each piece of encrypted data, to detect data encrypted with outdated keys.</t>

<section anchor="terminology" title="Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”,
“MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="motivation" title="Motivation">

<t>Our main goal in defining a common ciphertext format is to allow organizations to manage large scale data, encrypted at rest using multiple key management and encryption services. Additional motivations for an enterprise to use a common format are:</t>

<t><list style="symbols">
  <t>Cross-KMS-provider interoperability, to simplify automated management of data sourced from multiple origins.</t>
  <t>Proprietary data encryption formats mean that the data remains tied to a single vendor.</t>
  <t>Standardization around key management best practices.</t>
</list></t>

<section anchor="design-goals" title="Design Goals">

<t>Some of the goals behind this design include:</t>

<t><list style="symbols">
  <t>The format should allow simple and efficient detection of encrypted data, in support of automated data governance and key lifecycle management.</t>
  <t>The format should be space-efficient, since it may be used for very large numbers of small encrypted items. As a result, important information is associated with the (stored) key, rather than the ciphertext.</t>
  <t>Specifically, following security best practices, a given key material should be used with only a single cryptographic algorithm. Therefore, the algorithm identifier should be stored with the key (or the key version), rather than with the ciphertext.</t>
  <t>The format defined here only covers the ciphertext header, and not the ciphertext itself (referred to as “body” in this document). The body is defined elsewhere, such as <xref target="NISTSP800-38D"/> for AES-GCM.</t>
  <t>The header is not encrypted. Integrity-protection is optional. See <xref target="integrity-protection"/> for details.</t>
  <t>The format should support key versioning, i.e. automated, periodic rotation of keys.</t>
  <t>The format should support granular key management by allowing for key derivation and key wrapping.</t>
  <t>The format should allow for generic tools to perform partial attribution of ciphertext, i.e. to associate it with a specific key provider. More specific, possibly provider-specific tools are required for full attribution.</t>
</list></t>

</section>
<section anchor="previous-work" title="Previous Work">

<t>A few notable formats are:</t>

<t><list style="symbols">
  <t>The Amazon Web Services SDK message format, documented <eref target="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/message-format.html">here</eref>. This format is specific to the AWS library, and aimed at users of the AWS Key Management System (KMS).</t>
  <t>The <eref target="https://github.com/google/tink/blob/master/docs/WIRE-FORMAT.md">wire format</eref> defined by Google’s Tink library.</t>
  <t>The format defined by the <eref target="https://docs.oasis-open.org/kmip/kmip-profiles/v2.1/csprd01/kmip-profiles-v2.1-csprd01.html">KMIP 2.1</eref> specification, which is targeted at data transmittal, rather than storage.</t>
</list></t>

</section>
</section>
<section anchor="the-ciphertext-format" title="The Ciphertext Format">

<section anchor="format-overview" title="Format Overview">

<t>The ciphertext is prefixed by a header, which in turn, consists of a short fixed header and variable header. The variable header is a CBOR <xref target="RFC8949"/> map.</t>

<t>Following the header is the body of the ciphertext. The format (including length) of the body is out of scope for this document.</t>

<section anchor="fixed-header" title="Fixed Header">

<t>The fixed header consists of:</t>

<t><list style="symbols">
  <t>A single constant octet 0x08 (see <xref target="fixed-header-rationale"/>).</t>
  <t>A single octet denoting the format version. The version is 0x01 for the format defined in this document.</t>
</list></t>

</section>
<section anchor="variable-header" title="Variable Header">

<t>The variable header is a CBOR map consisting of elements from the following table.</t>

<texttable>
      <ttcol align='left'>Field Name</ttcol>
      <ttcol align='left'>Map Key</ttcol>
      <ttcol align='left'>Value Type</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Mandatory</ttcol>
      <c>Key Provider</c>
      <c>1</c>
      <c>Unsigned integer</c>
      <c>The organization responsible for the key management system.</c>
      <c>Y</c>
      <c>Key ID</c>
      <c>2</c>
      <c>Byte string</c>
      <c>An encryption key identifier, where the key is stored in a key management system. This must denote a unique key, even if the Provider supports multiple tenants. Encoding of this field is Provider-specific. The field must appear once.</c>
      <c>Y</c>
      <c>Key Version</c>
      <c>3</c>
      <c>Unsigned integer</c>
      <c>A version of a key, where the key is rotated on a periodic basis. Encoding of this field is Provider-specific. The field must appear at most once.</c>
      <c>N</c>
      <c>Auxiliary Data</c>
      <c>4</c>
      <c>Byte string</c>
      <c>Additional data required to derive a specific key from the referenced key (and key version, if any), see also <xref target="deriving-a-specific-key"/>. The field must appear at most once.</c>
      <c>N</c>
      <c>Nonce</c>
      <c>5</c>
      <c>Byte string</c>
      <c>A nonce or initialization vector (IV), if required by the cipher algorithm. We note that an implementation may prefer to store the nonce and authentication tag in-line with the ciphertext.</c>
      <c>N</c>
      <c>Authentication Tag</c>
      <c>6</c>
      <c>Byte string</c>
      <c>An authentication tag or integrity check value (ICV), if required by the cipher algorithm.</c>
      <c>N</c>
      <c>Additional Authenticated Data</c>
      <c>7</c>
      <c>Byte string</c>
      <c>Additional authenticated data (AAD), which is integrity-protected but not encrypted by the cipher.</c>
      <c>N</c>
</texttable>

</section>
<section anchor="deriving-a-specific-key" title="Deriving a Specific Key">

<t>The Auxiliary Data field is used to support derivation of a key, specific to the ciphertext being managed. There are two common ways to obtain this specific key:</t>

<t><list style="symbols">
  <t>Using a key derivation function: SK = KDF(key, aux-data)</t>
  <t>Decryption of a wrapped key: SK = Decrypt(key, aux-data)</t>
</list></t>

<t>The exact algorithm is implementation dependent, and should be uniquely defined by the combination of Key Provider, Key ID and (if given) Key Version.</t>

</section>
</section>
<section anchor="receiving-ciphertext" title="Receiving Ciphertext">

<t>Correct interpretation of the format may have security implications, making it important to define the exact semantics even when the entity that receives a ciphertext may not understand parts of the header.</t>

<t><list style="symbols">
  <t>A recipient MUST reject a malformed header, e.g. if the total length is larger than the physical length allocated to it based on higher-level network protocols or storage formats.</t>
  <t>A recipient MUST reject a ciphertext if it does not recognize the format version.</t>
  <t>A recipient MUST reject a ciphertext if the variable header is not valid CBOR, as per <xref target="RFC8949"/> Sec. 5.3.1. In particular, it MUST reject duplicate map keys.</t>
  <t>A recipient MUST accept a ciphertext even if it does not recognize some of the map keys. It MUST ignore the unknown map keys and MUST interpret all known ones. In other words, the only way to introduce new mandatory map keys is by incrementing the format version.</t>
  <t>If ciphertext integrity protection coverage includes the header, a recipient MUST reject the header as well as the ciphertext if the integrity protection fails to validate.</t>
</list></t>

</section>
<section anchor="fixed-header-rationale" title="Fixed Header Rationale">

<t>We chose the initial byte 0x08, since strings are very unlikely to start with it, as we explain below. Automated tools can detect encrypted data in structured contexts (e.g., a SQL database column) by sampling a number of data items and if all start with this byte, determining that they are encrypted with a high probability.</t>

<t>The byte 0x08 encodes the ASCII control character “backspace”. It has the same meaning in UTF-8, and the 08 block of UTF-16 characters is only populated by two very small languages and rarely-used extended <eref target="https://en.wikipedia.org/wiki/Arabic_Extended-A">Arabic characters</eref>.</t>

</section>
</section>
<section anchor="example" title="Example">

<section anchor="fixed-header-1" title="Fixed Header">

<t><spanx style="verb">08 01</spanx></t>

</section>
<section anchor="variable-header-cbor-diagnostic-notation" title="Variable Header: CBOR Diagnostic Notation">

<t><spanx style="verb">
{1: 65535, 2: h'1122334455', 3: 6, }
</spanx></t>

</section>
<section anchor="variable-header-binary" title="Variable Header: Binary">

<t><spanx style="verb">
a3 01 19 ff ff 02 45 11 22 33 44 55 03 06
</spanx></t>

</section>
<section anchor="complete-header" title="Complete Header">

<t><spanx style="verb">
08 01 a3 01 19 ff ff 02 45 11 22 33 44 55 03 06
</spanx></t>

</section>
<section anchor="cddl" title="CDDL">

<t>The following non-normative snippet defines the format of the variable header using CDDL <xref target="RFC8610"/>.</t>

<figure><artwork><![CDATA[
var_header = {
        K_KEY_PROVIDER: uint,
        K_KEY_ID: bstr,
        ? K_KEY_VERSION: uint,
        ? K_AUX_DATA: bstr,
        ? K_NONCE : bstr,
        ? K_AUTH_TAG : bstr,
        ? K_AAD : bstr,
        *uint => any ; extensions
}

K_RESERVED = 0
K_KEY_PROVIDER = 1
K_KEY_ID = 2
K_KEY_VERSION = 3
K_AUX_DATA = 4
K_NONCE = 5
K_AUTH_TAG = 6
K_AAD = 7
        ; extend here
]]></artwork></figure>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>TBD: establish a registry for Types, with 128-255 as private use.</t>

<t>TBD: establish a registry of Key Providers.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="integrity-protection" title="Integrity Protection">

<t>The format defined here does not include integrity protection for the header, and neither does it mandate that the encrypted item’s integrity protection should include the header.</t>

<t>Data encrypted at rest is typically vulnerable to denial of service attacks, since (assuming the data is integrity protected) an attacker that can change the ciphertext can trivially cause it to fail validation.</t>

<t>There are cases where it is convenient to manipulate the ciphertext header, even if the data itself remains encrypted and unmodified. For example, when migrating between formats or when bulk-changing metadata associated with the ciphertext. On the other hand, it is a best practice to protect cryptographic metadata against malicious modification. We are currently not aware of a specific threat vector associated with malicious changes to the proposed format, at least assuming the use of AEAD ciphers.</t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC8949" target='https://www.rfc-editor.org/info/rfc8949'>
<front>
<title>Concise Binary Object Representation (CBOR)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2020' month='December' />
<abstract><t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t><t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t></abstract>
</front>
<seriesInfo name='STD' value='94'/>
<seriesInfo name='RFC' value='8949'/>
<seriesInfo name='DOI' value='10.17487/RFC8949'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>



<reference anchor="NISTSP800-38D" >
  <front>
    <title>Recommendation for block cipher modes of operation :: GaloisCounter Mode (GCM) and GMAC</title>
    <author initials="M." surname="Dworkin" fullname="M J Dworkin">
      <organization></organization>
    </author>
    <date year="2007"/>
  </front>
  <seriesInfo name="National Institute of Standards and Technology" value="report"/>
  <seriesInfo name="DOI" value="10.6028/nist.sp.800-38d"/>
</reference>



<reference  anchor="RFC8610" target='https://www.rfc-editor.org/info/rfc8610'>
<front>
<title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
<author initials='H.' surname='Birkholz' fullname='H. Birkholz'><organization /></author>
<author initials='C.' surname='Vigano' fullname='C. Vigano'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2019' month='June' />
<abstract><t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t></abstract>
</front>
<seriesInfo name='RFC' value='8610'/>
<seriesInfo name='DOI' value='10.17487/RFC8610'/>
</reference>




    </references>


<section anchor="document-history" title="Document History">

<section anchor="draft-sheffer-ietf-ciphertext-format-01" title="draft-sheffer-ietf-ciphertext-format-01">

<t><list style="symbols">
  <t>SAAG feedback: the variable header is now CBOR.</t>
  <t>Binary example.</t>
  <t>Non-normative CDDL.</t>
  <t>Additional types for non-inline AEAD.</t>
</list></t>

</section>
<section anchor="draft-sheffer-ietf-ciphertext-format-00" title="draft-sheffer-ietf-ciphertext-format-00">

<t><list style="symbols">
  <t>Initial version.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
yD31+LWB8f8Ha/SlUGsvAAA=

-->

</rfc>

