<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.25 (Ruby 2.7.0) -->


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC1421 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1421.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC4210 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC5914 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5914.xml">
<!ENTITY RFC5958 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5958.xml">
<!ENTITY RFC7468 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7468.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8411 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ounsworth-pq-composite-keys-01" category="std">
  <front>
    <title abbrev="PQ Composite Keys">Composite Public and Private Keys For Use In Internet PKI</title>

    <author initials="M." surname="Ounsworth (Editor)" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="M." surname="Pala" fullname="Massimiliano Pala">
      <organization>CableLabs</organization>
      <address>
        <email>director@openca.org</email>
      </address>
    </author>

    <date year="2022" month="February" day="12"/>

    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>With the widespread adoption of post-quantum cryptography will come the need for an entity to possess multiple public keys on different cryptographic algorithms. Since the trustworthiness of individual post-quantum algorithms is at question, a multi-key cryptographic operation will need to be performed in such a way that breaking it requires breaking each of the component algorithms individually. This requires defining new structures for holding composite keys, for use with composite signature and encryption data.</t>

<t>This document defines the structures CompositePublicKey, CompositePrivateKey, which are sequences of the respective structure for each component algorithm. This document makes no assumptions about what the component algorithms are, provided that they have defined algorithm identifiers. The only requirement imposed by this document is that all algorithms be of the same key usage; i.e. all signature or all encryption. This document is intended to be coupled with corresponding documents that define the structure and semantics of composite signatures and encryption.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="sec-intro" title="Introduction">

<t>During the transition to post-quantum cryptography, there will be uncertainty as to the strength of cryptographic algorithms; we will no longer fully trust traditional cryptography such as RSA, Diffie-Hellman, DSA and their elliptic curve variants, but we will also not fully trust their post-quantum replacements until they have had sufficient scrutiny. Unlike previous cryptographic algorithm migrations, the choice of when to migrate and which algorithms to migrate to, is not so clear. Even after the migration period, it may be advantageous for an entity&#39;s cryptographic identity to be composed of multiple public-key algorithms.</t>

<t>The deployment of composite public keys, and composite signatures and composite encryption using post-quantum algorithms will face two challenges</t>

<t><list style="symbols">
  <t>Algorithm strength uncertainty: During the transition period, some post-quantum signature and encryption algorithms will not be fully trusted, while also the trust in legacy public key algorithms will start to erode.  A relying party may learn some time after deployment that a public key algorithm has become untrustworthy, but in the interim, they may not know which algorithm an adversary has compromised.</t>
  <t>Backwards compatibility: During the transition period, post-quantum algorithms will not be supported by all clients.</t>
</list></t>

<t>This document provides a mechanism to address algorithm strength uncertainty by providing formats for encoding multiple public keys and private keys values into existing public key and private key fields.</t>

<t>This document is intended for general applicability anywhere that keys are used within PKIX or CMS structures.</t>

<!-- End of Introduction section -->

<section anchor="sec-terminology" title="Terminology">
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; 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>

<t>The following terms are used in this document:</t>

<t>ALGORITHM:
          An information object class for identifying the type of
            cryptographic key being encapsulated.</t>

<t>BER:
          Basic Encoding Rules (BER) as defined in <xref target="X.690"></xref>.</t>

<t>COMPONENT ALGORITHM:
          A single basic algorithm which is contained within a
            composite algorithm.</t>

<t>COMPOSITE ALGORITHM:
          An algorithm which is a sequence of two or more component
            algorithms, as defined in <xref target="sec-composite-structs"/>.</t>

<t>DER:
          Distinguished Encoding Rules as defined in <xref target="X.690"></xref>.</t>

<t>PUBLIC / PRIVATE KEY:
          The public and private portion of an asymmetric cryptographic
            key, making no assumptions about which algorithm.</t>

</section>
</section>
<section anchor="sec-composite-structs" title="Composite Structures">
<t>In order for public keys and private keys to be composed of multiple algorithms, we define encodings consisting of a sequence of public key or private key primitives (aka &quot;component algorithms&quot;) such that these structures can be used as a drop-in replacement for existing public key fields such as those found in PKCS#10 <xref target="RFC2986"></xref>, CMP <xref target="RFC4210"></xref>, X.509 <xref target="RFC5280"></xref>, CMS <xref target="RFC5652"></xref>, and the Trust Anchor Format <xref target="RFC5914"></xref>.</t>

<t>This section defines the following structures:</t>

<t><list style="symbols">
  <t>The id-alg-composite is an OID identifying a composite public key.</t>
  <t>The CompositePublicKey carries all the public keys associated with an identity within a single public key structure.</t>
  <t>The CompositePrivateKey carries all the private keys associated with an identity within a single private key structure.</t>
</list></t>

<t>EDNOTE 2: We have heard community feedback that the ASN.1 structures presented here are too flexible in that allow arbitrary combinations of an arbitrary number of signature algorithms. The feedback is that this is too much of a &quot;footgun&quot; for implementors and sysadmins. We are working on an alternative formulation using ASN.1 information object classes that allow for compiling explicit pairs of algorithmIDs. We would love community feedback on which approach is preferred. See slide 30 of this presentation: https://datatracker.ietf.org/meeting/interim-2021-lamps-01/materials/slides-interim-2021-lamps-01-sessa-position-presentation-by-mike-ounsworth-00.pdf</t>

<section anchor="sec-alg-identifier" title="Algorithm Identifier">

<section anchor="composite-public-key" title="Composite Public Key">

<t>The Composite algorithm identifier is used for identifying a public key and a private key.  Additional encoding information is provided below for each of these objects.</t>

<t>When using this algorithm identifier it is implied that all component keys MUST be used in an AND relation; any cryptographic operation using this composite public key MUST use the it as an atomic object and use all component keys. This mode has the strongest security properties and is RECOMMENDED.</t>

<t>There is an additional security consideration that some use cases such as signatures remain secure against downgrade attacks if and only if component keys are never used in isolation and therefore it is RECOMMENDED that component keys in a composite key are uniquely generated.</t>

<figure><artwork type="asn.1"><![CDATA[
id-composite-key OBJECT IDENTIFIER ::= {
    joint-iso-itu-t(2) country(16) us(840) organization(1) entrust(114027) Algorithm(80) Composite(4) CompositeKey(1) }
]]></artwork></figure>

<t>EDNOTE 3: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>

</section>
<section anchor="composite-or-public-key" title="Composite-OR Public Key">

<t>EDNOTE: This section was written with the intention of keeping the primary Composite OID reserved for the simple and strict mode; if you want to do either a simple OR, or a custom policy then we have given a different OID. We are still debating whether this is useful to specify at issuing time, or whether this is adding needless complexity to the draft.</t>

<t>The Composite-OR algorithm identifier is used for identifying a public key and a private key.  Additional encoding information is provided below for each of these objects.</t>

<t>When using this algorithm identifier, component keys MAY be used in an OR relation meaning that any one of the component keys may be used by itself. Implementors may also define more complex processes and policies using this algorithm identifier, for expmple allowing some algorithms by themselves and others only in combination. This mode is provided for applications that need to issue long-lived composite keys in a way that allows for backwards compatibility or staged adoption of new algorithms.</t>

<figure><artwork type="ASN.1"><![CDATA[
id-composite-or-key OBJECT IDENTIFIER ::= {
    joint-iso-itu-t(2) country(16) us(840) organization(1) entrust(114027) Algorithm(80) Composite(4) entrust-Algorithm-Composite-OR(3) }
]]></artwork></figure>

</section>
</section>
<section anchor="composite-keys" title="Composite Keys">

<t>A composite key is a single key object that performs an atomic signature or verification operation, using its encapsulated sequence of component keys.</t>

<t>The ASN.1 algorithm object for composite public and private keys is:</t>

<figure><artwork type="ASN.1" name="CompositeAlgorithmObject-asn.1-structures"><![CDATA[
pk-Composite PUBLIC-KEY ::= {
    IDENTIFIER id-alg-composite
    KEY CompositePublicKey
    PARAMS ARE absent
    PRIVATE-KEY CompositePrivateKey
}
]]></artwork></figure>

<t>EDNOTE 4: the authors are currently unsure whether the params should be absent (ie this structure simply says &quot;I am a composite algorithm&quot;), or used to duplicate some amount of information about what the component algoritms are. See <xref target="sec-composite-pub-keys"/> for a longer ENDOTE on this.</t>

<section anchor="key-usage" title="Key Usage">

<t>For protocols such as X.509 <xref target="RFC5280"></xref> that specify key usage along with the public key, any key usage may be used with Composite keys, with the requirement that the specified key usage MUST apply to all component keys. For example if a Composite key is marked with a KeyUsage of digitalSignature, then all component keys MUST be capable of producing digital signatures. id-alg-composite MUST NOT be used to implement mixed-usage keys, for example, where a digitalSignature and a keyEncipherment key are combined together into a single Composite key object.</t>

</section>
</section>
<section anchor="sec-composite-pub-keys" title="Composite Public Key">

<t>Composite public key data is represented by the following structure:</t>

<figure><artwork type="ASN.1" name="CompositePublicKey-asn.1-structures"><![CDATA[
CompositePublicKey ::= SEQUENCE SIZE (2..MAX) OF SubjectPublicKeyInfo
]]></artwork></figure>

<t>The corresponding AlgorithmIdentifier for a composite public key MUST use the id-alg-composite object identifier, defined in <xref target="sec-alg-identifier"/>, and the parameters field MUST be absent.</t>

<t>A composite public key MUST contain at least one component public key.</t>

<t>A CompositePublicKey MUST NOT contain a component public key which itself describes a composite key; i.e. recursive CompositePublicKeys are not allowed</t>

<t>EDNOTE: unclear that banning recursive composite keys actually accomplishes anything other than a general reduction in complexity. In particular, with the addition of Composite (AND mode) and Composite-OR (OR mode), recursion actually allows full boolean expression. Is this valuable?</t>

<t>Each element of a CompositePublicKey is a SubjectPublicKeyInfo object for a component public key. When the CompositePublicKey must be provided in octet string or bit string format, the data structure is encoded as specified in <xref target="sec-encoding-rules"/>.</t>

</section>
<section anchor="composite-private-key" title="Composite Private Key">

<t>The composite private key data is represented by the following structure:</t>

<figure><artwork type="ASN.1" name="CompositePrivateKey-asn.1-structures"><![CDATA[
CompositePrivateKey ::= SEQUENCE SIZE (2..MAX) OF OneAsymmetricKey
]]></artwork></figure>

<t>Each element is a OneAsymmetricKey <xref target="RFC5958"></xref> object for a component private key.</t>

<t>The corresponding AlgorithmIdentifier for a composite private key MUST use the id-alg-composite object identifier, and the parameters field MUST be absent.</t>

<t>A CompositePrivateKey MUST contain at least one component private key, and they MUST be in the same order as in the corresponding CompositePublicKey.</t>

</section>
<section anchor="sec-encoding-rules" title="Encoding Rules">
<!-- EDNOTE 7: Examples of how other specifications specify how a data structure is converted to a bit string can be found in RFC 2313, section 10.1.4, 3279 section 2.3.5, and RFC 4055, section 3.2. -->

<t>Many protocol specifications will require that the composite public key and composite private key data structures be represented by an octet string or bit string.</t>

<t>When an octet string is required, the DER encoding of the composite data structure SHALL be used directly.</t>

<t>When a bit string is required, the octets of the DER encoded composite data structure SHALL be used as the bits of the bit string, with the most significant bit of the first octet becoming the first bit, and so on, ending with the least significant bit of the last octet becoming the last bit of the bit string.</t>

<t>In the interests of simplicity and avoiding compatibility issues, implementations that parse these structures MAY accept both BER and DER.</t>

</section>
</section>
<section anchor="sec-in-pract" title="In Practice">

<t>This section addresses practical issues of how this draft affects other protocols and standards.</t>

<t>~~~ BEGIN EDNOTE 10~~~</t>

<t>EDNOTE 10: Possible topics to address:</t>

<t><list style="symbols">
  <t>The size of these certs and cert chains.</t>
  <t>In particular, implications for (large) composite keys / signatures / certs on the handshake stages of TLS and IKEv2.</t>
  <t>If a cert in the chain is a composite cert then does the whole chain need to be of composite Certs?</t>
  <t>We could also explain that the root CA cert does not have to be of the same algorithms. The root cert SHOULD NOT be transferred in the authentication exchange to save transport overhead and thus it can be different than the intermediate and leaf certs.</t>
  <t>We could talk about overhead (size and processing).</t>
  <t>We could also discuss backwards compatibility.</t>
  <t>We could include a subsection about implementation considerations.</t>
</list></t>

<t>~~~ END EDNOTE 10~~~</t>

<section anchor="textual-encoding-of-composite-private-keys" title="Textual encoding of Composite Private Keys">

<t>CompositePrivateKeys can be encoded to the Privacy-Enhanced Mail (PEM) <xref target="RFC1421"></xref> format by placing a CompositePrivateKey into the privateKey field of a PrivateKeyInfo or OneAsymmetricKey object, and then applying the PEM encoding rules as defined in <xref target="RFC7468"></xref> section 10 and 11 for plaintext and encrypted private keys, respectively.</t>

</section>
<section anchor="asymmetric-key-packages-cms" title="Asymmetric Key Packages (CMS)">

<t>The Cryptographic Message Syntax (CMS), as defined in <xref target="RFC5652"></xref>, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type.</t>

<t>When encoding composite private keys, the privateKeyAlgorithm in the OneAsymmetricKey SHALL be set to id-alg-composite.</t>

<t>The parameters of the privateKeyAlgorithm SHALL be a sequence of AlgorithmIdentifier objects, each of which are encoded according to the rules defined for each of the different keys in the composite private key.</t>

<t>The value of the privateKey field in the OneAsymmetricKey SHALL be set to the DER encoding of the SEQUENCE of private key values that make up the composite key. The number and order of elements in the sequence SHALL be the same as identified in the sequence of parameters in the privateKeyAlgorithm.</t>

<t>The value of the publicKey (if present) SHALL be set to the DER encoding of the corresponding CompositePublicKey. If this field is present, the number and order of component keys MUST be the same as identified in the sequence of parameters in the privateKeyAlgorithm.</t>

<t>The value of the attributes is encoded as usual.</t>

<!-- End of In Practice section -->

</section>
</section>
<section anchor="sec-iana" title="IANA Considerations">
<t>The ASN.1 module OID is TBD.  The id-composite-key and id-composite-or-key OIDs are to be assigned by IANA.  The authors suggest that IANA assign an OID on the id-pkix arc:</t>

<figure><artwork type="ASN.1"><![CDATA[
id-composite-key OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) algorithms(6) composite(??) }
]]></artwork></figure>

<!-- End of IANA Considerations section -->

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

<section anchor="reuse-of-keys-in-a-composite-public-key" title="Reuse of keys in a Composite public key">

<t>There is an additional security consideration that some use cases such as signatures remain secure against downgrade attacks if and only if component keys are never used in isolation and therefore it is RECOMMENDED that component keys in a composite key are uniquely generated. Note that protocols allowing public keys using the Composite-OR algorithm identifier will have a more difficult time preventing downgrade and stripping attacks and therefore it is RECOMMENDED to use the default AND mode unless the application has a strong need for backwards compatability and migration.</t>

</section>
<section anchor="policy-for-deprecated-and-acceptable-algorithms" title="Policy for Deprecated and Acceptable Algorithms">

<t>Traditionally, a public key, certificate, or signature contains a single cryptographic algorithm. If and when an algorithm becomes deprecated (for example, RSA-512, or SHA1), it is obvious that structures using that algorithm are implicitly revoked.</t>

<t>In the composite model this is less obvious since a single public key, certificate, or signature may contain a mixture of deprecated and non-deprecated algorithms. Moreover, implementers may decide that certain cryptographic algorithms have complementary security properties and are acceptable in combination even though neither algorithm is acceptable by itself.</t>

<t>Specifying a modified verification process to handle these situations is beyond the scope of this draft, but could be desirable as the subject of an application profile document, or to be up to the discretion of implementers.</t>

<figure><artwork><![CDATA[
2. Check policy to see whether A1, A2, ..., An constitutes a valid
   combination of algorithms.

   if not checkPolicy(A1, A2, ..., An), then
     output "Invalid signature"
]]></artwork></figure>

<t>While intentionally not specified in this document, implementors should put careful thought into implementing a meaningful policy mechanism within the context of their signature verification engines, for example only algorithms that provide similar security levels should be combined together.</t>

<t>EDNOTE 11: Max is working on a CRL mechanism to accomplish this.</t>

</section>
<section anchor="protection-of-private-keys" title="Protection of Private Keys">

<t>Structures described in this document do not protect private keys in any way unless combined with a security protocol or encryption properties of the objects (if any) where the CompositePrivateKey is used (see next Section).</t>

<t>Protection of the private keys is vital to public key cryptography. The consequences of disclosure depend on the purpose of the private key. If a private key is used for signature, then the disclosure allows unauthorized signing. If a private key is used for key management, then disclosure allows unauthorized parties to access the managed keying material. The encryption algorithm used in the encryption process must be at least as &#39;strong&#39; as the key it is protecting.</t>

</section>
<section anchor="checking-for-compromised-key-reuse" title="Checking for Compromised Key Reuse">

<t>Certificate Authority (CA) implementations need to be careful when checking for compromised key reuse, for example as required by WebTrust regulations; when checking for compromised keys, you MUST unpack the CompositePublicKey structure and compare individual component keys. In other words, for the purposes of key reuse checks, the composite public key structures need to be un-packed so that primitive keys are being compared. For example if the composite key {RSA1, PQ1} is revoked for key compromise, then the keys RSA1 and PQ1 need to be indivitually considered revoked. If the composite key {RSA1, PQ2} is submitted for certification, it SHOULD be rejected because the key RSA1 was previously declared compromised even though the key PQ2 is unique.</t>

<!-- End of Security Considerations section -->

</section>
</section>
<section anchor="appendices" title="Appendices">

<section anchor="asn1-module" title="ASN.1 Module">

<figure><artwork type="ASN.1"><![CDATA[
<CODE STARTS>

Composite-Signatures-2019
  { TBD }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  PUBLIC-KEY, SIGNATURE-ALGORITHM
    FROM AlgorithmInformation-2009  -- RFC 5912 [X509ASN1]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

  SubjectPublicKeyInfo
    FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-explicit-02(51) }

  OneAsymmetricKey
    FROM AsymmetricKeyPackageModuleV1
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0)
        id-mod-asymmetricKeyPkgV1(50) } ;

--
-- Object Identifiers
--

id-alg-composite OBJECT IDENTIFIER ::= { TBD }

--
-- Public Key
--

pk-Composite PUBLIC-KEY ::= {
    IDENTIFIER id-alg-composite
    KEY CompositePublicKey
    PARAMS ARE absent
    PRIVATE-KEY CompositePrivateKey
}

CompositePublicKey ::= SEQUENCE SIZE (2..MAX) OF SubjectPublicKeyInfo

CompositePrivateKey ::= SEQUENCE SIZE (2..MAX) OF OneAsymmetricKey


END

<CODE ENDS>

]]></artwork></figure>

</section>
<section anchor="intellectual-property-considerations" title="Intellectual Property Considerations">

<t>The following IPR Disclosure relates to this draft:</t>

<t>https://datatracker.ietf.org/ipr/3588/</t>

</section>
</section>
<section anchor="contributors-and-acknowledgements" title="Contributors and Acknowledgements">
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>

<t>John Gray (Entrust),
Serge Mister (Entrust),
Scott Fluhrer (Cisco Systems),
Panos Kampanakis (Cisco Systems),
Daniel Van Geest (ISARA),
Tim Hollebeek (Digicert), and
Francois Rousseau.</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<section anchor="making-contributions" title="Making contributions">

<t>Additional contributions to this draft are weclome. Please see the working copy of this draft at, as well as open issues at:</t>

<t>https://github.com/EntrustCorporation/draft-ounsworth-pq-composite-keys</t>

<!-- End of Contributors section -->

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC1421;
&RFC2119;
&RFC2986;
&RFC4210;
&RFC5280;
&RFC5652;
&RFC5914;
&RFC5958;
&RFC7468;
&RFC8174;
&RFC8411;
<reference anchor="X.690" >
  <front>
    <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
    <author >
      <organization>ITU-T</organization>
    </author>
    <date year="2015" month="November"/>
  </front>
  <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
</reference>


    </references>




  </back>

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

-->

</rfc>
