<?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-00" 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="2020" month="November" day="18"/>

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

    <abstract>


<t>This document defines a format for encrypted data, that allows to detect such data in large data stores, and associate 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 systems and cloud providers.</t>

<t>We intend to standardize this format through the IETF, and the document is organized as an Internet Draft.</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>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>Standardisation 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 cipher text 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 fixed header, a 2-octet header length, and a sequence of Type-Length-Value (TLV) structures. The TLV structures may appear in any order.</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>1 octet denoting the format version. The version is 0x01 for the format defined in this document.</t>
  <t>2 octets for the Key Provider (the organization responsible for the key management system).</t>
</list></t>

</section>
<section anchor="header-length" title="Header Length">

<t>The header length field consists of 2 octets of length (covering the complete header including the fixed header), in network order.</t>

</section>
<section anchor="tlv-structures" title="TLV Structures">

<t>All other fields consist of:</t>

<t><list style="symbols">
  <t>1 octet type</t>
  <t>2 octet length of the Value field, where the length is encoded in network order. For TV structures, the length field is omitted and the length of the value is implied by the “type” field.</t>
  <t>Variable-length value.</t>
</list></t>

<t>Issue: we could define “short” vs. “long” TLVs, where for short TLVs the type and length are packed into a single byte (MS nibble for type, LS nibble for length).</t>

<t>The fields are defined by the following table.</t>

<texttable>
      <ttcol align='left'>Field Name</ttcol>
      <ttcol align='left'>Type Tag</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <ttcol align='left'>Mandatory</ttcol>
      <c>Key ID</c>
      <c>1</c>
      <c>An encryption key, as 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>2</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>3</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>
</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.</t>
  <t>A recipient MUST reject a ciphertext if it does not recognize the format version.</t>
  <t>A recipient MUST accept a ciphertext even if it does not recognize some of the TLVs, it MUST ignore the unknown TLVs and MUST interpret all known ones. In other words, the only way to introduce new mandatory TLVs 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="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="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>




    </references>


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

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

<t>Initial version.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

