<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<rfc
      xmlns:xi="http://www.w3.org/2001/XInclude"
      category="info"
      docName="draft-leggett-spkac-01"
      ipr="trust200902"
      obsoletes=""
      updates=""
      submissionType="IETF"
      xml:lang="en"
      tocInclude="true"
      tocDepth="4"
      symRefs="true"
      sortRefs="true"
      version="3">
  <!-- xml2rfc v2v3 conversion 2.38.1 -->
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

 <!-- ***** FRONT MATTER ***** -->

 <front>
   <title abbrev="SPKAC">Signed Public Key and Challenge</title>
    <seriesInfo name="Internet-Draft" value="draft-leggett-spkac-01"/>
    <!-- add 'role="editor"' below for the editors if appropriate -->

   <!-- Another author who claims to be an editor -->

   <author fullname="Graham Leggett" initials="G." role="editor" surname="Leggett">
      <organization>Pepperpot Media</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

          <city>London</city>
          <region/>
          <code/>
          <country>UK</country>
        </postal>
        <!-- <phone></phone>  -->
        <email>minfrin@sharp.fm</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
   <author fullname="Dirk-Willem van Gulik" initials="D.W." surname="van Gulik">
      <organization>WebWeaving Internet Engineering</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

          <city>Leiden</city>
          <region/>
          <code/>
          <country>NL</country>
        </postal>
        <!-- <phone></phone>  -->
        <email>dirkx@webweaving.org</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    <date year="2022" month="10" day="22" />
    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
     in the current day and month for you. If the year is not the current one, it is 
     necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
     purpose of calculating the expiry date).  With drafts it is normally sufficient to 
     specify just the year. -->

   <!-- Meta-data Declarations -->

   <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.  
     If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

   <keyword>spkac</keyword>
    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
      <t>
        This memo describes the Signed Public Key and Challenge (SPKAC), a syntax to provide
        Proof-of-Possession of a Private Key to support federated (client) certificate enrolment.
      </t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>During a certificate enrollment process between a client (browser)
        and a Certification Authority (CA), possibly via a Registration
        Authority (RA), the CA requires that the client provide
        proof-of-possession of the private key corresponding to the public
        key of the certificate that will be signed by the CA.</t>
      <t>The Signed Public Key and Challenge consists of a public key and an
        optional challenge, collectively signed by the private key of the end
        entity requesting certification.</t>
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <t>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 <xref target="RFC2119" format="default">RFC 2119</xref>.</t>
      </section>
      <section anchor="Historical" numbered="true" toc="default">
        <name>Historical</name>
        <t>The SPKAC protocol was originally used by the Netscape web browser as
          part of their implementation of what eventually became the
          <xref target="W3C.REC-html5-20141028" format="default">HTML5</xref>
          keygen tag. The keygen tag allowed a web browser to request a (client)
          certificate from a CA over the world wide web, and the SPKAC protocol
          ensured the web browser possessed the private key corresponding to
          the public key being used with the certificate signed by the CA.
          Storage of the private key would typically be in a file based
          keystore; or through a PKCS interface on a hardware token (which may, or
          may not, have generated the private key and signed the SPKAC inside that
          hardware enclave).
        </t>
        <t>
          For a long time the Signed Public Key and Challenge was a de facto
          standard widely implemented but not standardised. The purpose of this
          RFC is to document the existing use of the protocol, address security
          implementation weaknesses in common implementations, and formalise the
          protocol into a standard.
        </t>
        <t>
          Note that, in 2015, Google unilaterally decided to retire keygen tag
          support from the Chrome web browser. Prior to this; SPKAC was widely
          used by both centralised CAs (that would issue personal digital x509
          certificates) as well as in local enterprise and federated settings.
          This removal has left the web community with no standard way, de facto
          or otherwise, to distribute soft and hard tokens to clients.
        </t>
      </section>
    </section>

    <section anchor="profile" numbered="true" toc="default">
      <name>Signed Public Key and Challenge Profile</name>
      <t>The parts that make up the Signed Public Key and Challenge are encoded
        using the
        <xref target="X.690" format="default">ASN.1 distinguished encoding rules (DER)</xref>,
        and are defined below.</t>
      <section numbered="true" toc="default">
        <name>spki</name>
        <t>The spki is a SubjectPublicKeyInfo as defined in
        <xref target="RFC5912" format="default">RFC 5912</xref>, and consists of
        an ASN.1 sequence containing the algorithm used by the public key, and the
        public key itself.</t>
      </section>
      <section numbered="true" toc="default">
        <name>challenge</name>
        <t>The challenge is an ASN.1 IA5String, and MUST consist of a value provided
          by the CA that is difficult to predict. This value
          will be encoded into the SPKAC by the end entity, signed by the private
          key corresponding to the public key, and returned
          to the CA.</t>
      </section>
      <section numbered="true" toc="default">
        <name>publicKeyAndChallenge</name>
        <t>The publicKeyAndChallenge is an ASN.1 sequence of the spki and challenge
        defined above. This value is signed using the signatureAlgorithm and
        public key to produce the signature below.</t>
      </section>
      <section numbered="true" toc="default">
        <name>signatureAlgorithm</name>
        <t>The signatureAlgorithm is an AlgorithmIdentifier defined in
        <xref target="RFC5911" format="default">RFC 5911</xref>, and
        represents the algorithm used to sign the publicKeyAndChallenge.</t>
      </section>
      <section numbered="true" toc="default">
        <name>signature</name>
        <t>The signature is an ASN.1 bit string containing the signature of the
          ASN.1 DER encoded publicKeyAndChallenge, using the algorithm specified by
          signatureAlgorithm.</t>
      </section>
    </section>

    <section anchor="asn1-module-spkac" numbered="true" toc="default">
      <name>ASN.1 Module SPKAC</name>
      <t>This appendix includes all of the ASN.1 type and value definitions
        contained in this document in the form of the ASN.1 module SPKAC.
      </t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
SPKAC-Schema DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
  IMPORTS

  AlgorithmIdentifier{}, SIGNATURE-ALGORITHM
  FROM AlgorithmInformation-2009
      {iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-algorithmInformation-02(58)}

  SubjectPublicKeyInfo, SignatureAlgorithms
  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)};

  PublicKeyAndChallenge ::= SEQUENCE
  {
    spki SubjectPublicKeyInfo,
    challenge IA5String
  }
  SignedPublicKeyAndChallenge ::= SEQUENCE
  {
    publicKeyAndChallenge PublicKeyAndChallenge,
    signatureAlgorithm AlgorithmIdentifier{SIGNATURE-ALGORITHM,
                                {SignatureAlgorithms}},
    signature BIT STRING
  }

END
      ]]></artwork>
    </section>

    <section anchor="spkac-example" numbered="true" toc="default">
      <name>Example</name>
      <t>The following example consists of a
        <xref target="RFC4648" format="default">Base64</xref> encoded
        SPKAC message signed with an
        <xref target="RFC8017" format="default">RSA key</xref> using
        the
        <xref target="RFC6234" format="default">SHA256 message-digest</xref>
        algorithm.
      </t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
MIIESTCCAjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9wmyQidBwnIN3
08UwRlTX2mB9g1a05IR6l9TOGmSz6BV5YYbavXdq38EA7dw/44U/P9edRNIwFTMPLWIb
hkDYMZkuziyovhBji8c5gUb09Flplc1aWO8V4u5kjEY6clusYVSxL+j0GU3NXW2k2AC4
+Ts8Y/sE9kfqWb5QzTI2Tz1UqRr6oE2G65LhFhgkg/yafnvOsh+B8nNwdcPwbqzPW8qN
FrDqppDg9sm5PbrfGY9xTeBYKq0AVv//qyG5YgqjNZPIPC4mRQfx/IPbcMJXNIf6iRQi
LniAxFuBmO3Ohog8rufUezWrA5d3f1sorTozkKxRECwnzgMcKmzcyZtENbkrNuL1BbDq
hwDs3xf9ilbwkiRx1BOWrPCEXZneS96iFRkEMkw2AcIQIqiDNSStpOt8jyKX4sRdUO3t
fagCZ1QcL2Dmyab5aypTr/eVx/xj3sZsrQCy89BlOsSN9GTBbIQeui97PiA6hmVFUWbG
La2TdZH+Bnjjc8OiZPF5YH9uQo1Z9xD+fxcL6xOQW35/JyJ7AtGa1SIut0q3WQ4S93wA
B/DOADc9GWl4mWB/2goLDsCUWXSHYs2czS/2a/Lh9MKQsDKLQbEMncxaq3TVBG7Urq9S
RnmemguaWjvoni0o725nWi/j5H6AtOZYoFGmccjxraSAVGWS4r+0X3qSZQIDAQABFglj
aGFsbGVuZ2UwDQYJKoZIhvcNAQELBQADggIBAJJgmBFMD+2AqkQpD/2AgCcoKNkRmcD8
EkHQY+5WN80+ogaWf5VcDU3ycP2554x95EPLhclqrX9xbzUemuUoNiR/sPyhxl0Pr7OP
tKqulW6QvT+YCcyrbILR1jE8lhVSENkT/fL6U9J4NPd7qGB0OFiTv9tAT1huzzuXgx67
6T8Y5mb9XVk0C6CCGEoDxSKI2n3/nbkdyyXlq1uFphwVCXEBUvrndD8y3vKd8rhtGyvz
8cTg2q/mHmSHldwwmfksaRNwh9mxOKerLUQ5pFM68HODOnJHFs/D26GQlwINfVqrVnI+
oCA/VFFz/QO4minT7zuDSGa/cFdiPWj3d//Gz02ppUIHk8RVKrdGgTf/efQmbP2zLEfa
AfTUlSjVliVDqw5SRG6QJYrvz80pfZcz13BY3pkN5lnAcuA8Ld5Gb/YVfiJkiefvMt9t
753pe9Yxv8iU6PKfQO8UbiGbPfEDP5bQ1EJPX0rdmvX7T85hwR7LXC5iUBs2xdahTfDg
oZTZ/12fSoNwkdgmYURmy/fAEOnVHIn5Gj/LKu8ii2UOzWktbAnz4f30MeuFeaBx5h9v
e/nELQnvsPiZgIDFdKYdXb8yJRTgg9ahYdPhEC/u1RIJFxs4sRmRfZwY7qATssLhnL9Z
DtDuuZxJft+sn5swpiepSiekGvw20fsP6tRD4nu0
      ]]></artwork>
      <t>The following section shows the decoded version of the above
        SKPAC message.
      </t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
Netscape SPKI:
  Public Key Algorithm: rsaEncryption
    RSA Public-Key: (4096 bit)
    Modulus:
        00:bd:c2:6c:90:89:d0:70:9c:83:77:d3:c5:30:46:
        54:d7:da:60:7d:83:56:b4:e4:84:7a:97:d4:ce:1a:
        64:b3:e8:15:79:61:86:da:bd:77:6a:df:c1:00:ed:
        dc:3f:e3:85:3f:3f:d7:9d:44:d2:30:15:33:0f:2d:
        62:1b:86:40:d8:31:99:2e:ce:2c:a8:be:10:63:8b:
        c7:39:81:46:f4:f4:59:69:95:cd:5a:58:ef:15:e2:
        ee:64:8c:46:3a:72:5b:ac:61:54:b1:2f:e8:f4:19:
        4d:cd:5d:6d:a4:d8:00:b8:f9:3b:3c:63:fb:04:f6:
        47:ea:59:be:50:cd:32:36:4f:3d:54:a9:1a:fa:a0:
        4d:86:eb:92:e1:16:18:24:83:fc:9a:7e:7b:ce:b2:
        1f:81:f2:73:70:75:c3:f0:6e:ac:cf:5b:ca:8d:16:
        b0:ea:a6:90:e0:f6:c9:b9:3d:ba:df:19:8f:71:4d:
        e0:58:2a:ad:00:56:ff:ff:ab:21:b9:62:0a:a3:35:
        93:c8:3c:2e:26:45:07:f1:fc:83:db:70:c2:57:34:
        87:fa:89:14:22:2e:78:80:c4:5b:81:98:ed:ce:86:
        88:3c:ae:e7:d4:7b:35:ab:03:97:77:7f:5b:28:ad:
        3a:33:90:ac:51:10:2c:27:ce:03:1c:2a:6c:dc:c9:
        9b:44:35:b9:2b:36:e2:f5:05:b0:ea:87:00:ec:df:
        17:fd:8a:56:f0:92:24:71:d4:13:96:ac:f0:84:5d:
        99:de:4b:de:a2:15:19:04:32:4c:36:01:c2:10:22:
        a8:83:35:24:ad:a4:eb:7c:8f:22:97:e2:c4:5d:50:
        ed:ed:7d:a8:02:67:54:1c:2f:60:e6:c9:a6:f9:6b:
        2a:53:af:f7:95:c7:fc:63:de:c6:6c:ad:00:b2:f3:
        d0:65:3a:c4:8d:f4:64:c1:6c:84:1e:ba:2f:7b:3e:
        20:3a:86:65:45:51:66:c6:2d:ad:93:75:91:fe:06:
        78:e3:73:c3:a2:64:f1:79:60:7f:6e:42:8d:59:f7:
        10:fe:7f:17:0b:eb:13:90:5b:7e:7f:27:22:7b:02:
        d1:9a:d5:22:2e:b7:4a:b7:59:0e:12:f7:7c:00:07:
        f0:ce:00:37:3d:19:69:78:99:60:7f:da:0a:0b:0e:
        c0:94:59:74:87:62:cd:9c:cd:2f:f6:6b:f2:e1:f4:
        c2:90:b0:32:8b:41:b1:0c:9d:cc:5a:ab:74:d5:04:
        6e:d4:ae:af:52:46:79:9e:9a:0b:9a:5a:3b:e8:9e:
        2d:28:ef:6e:67:5a:2f:e3:e4:7e:80:b4:e6:58:a0:
        51:a6:71:c8:f1:ad:a4:80:54:65:92:e2:bf:b4:5f:
        7a:92:65
    Exponent: 65537 (0x10001)
  Challenge String: challenge
  Signature Algorithm: sha256WithRSAEncryption
      92:60:98:11:4c:0f:ed:80:aa:44:29:0f:fd:80:80:27:28:28:
      d9:11:99:c0:fc:12:41:d0:63:ee:56:37:cd:3e:a2:06:96:7f:
      95:5c:0d:4d:f2:70:fd:b9:e7:8c:7d:e4:43:cb:85:c9:6a:ad:
      7f:71:6f:35:1e:9a:e5:28:36:24:7f:b0:fc:a1:c6:5d:0f:af:
      b3:8f:b4:aa:ae:95:6e:90:bd:3f:98:09:cc:ab:6c:82:d1:d6:
      31:3c:96:15:52:10:d9:13:fd:f2:fa:53:d2:78:34:f7:7b:a8:
      60:74:38:58:93:bf:db:40:4f:58:6e:cf:3b:97:83:1e:bb:e9:
      3f:18:e6:66:fd:5d:59:34:0b:a0:82:18:4a:03:c5:22:88:da:
      7d:ff:9d:b9:1d:cb:25:e5:ab:5b:85:a6:1c:15:09:71:01:52:
      fa:e7:74:3f:32:de:f2:9d:f2:b8:6d:1b:2b:f3:f1:c4:e0:da:
      af:e6:1e:64:87:95:dc:30:99:f9:2c:69:13:70:87:d9:b1:38:
      a7:ab:2d:44:39:a4:53:3a:f0:73:83:3a:72:47:16:cf:c3:db:
      a1:90:97:02:0d:7d:5a:ab:56:72:3e:a0:20:3f:54:51:73:fd:
      03:b8:9a:29:d3:ef:3b:83:48:66:bf:70:57:62:3d:68:f7:77:
      ff:c6:cf:4d:a9:a5:42:07:93:c4:55:2a:b7:46:81:37:ff:79:
      f4:26:6c:fd:b3:2c:47:da:01:f4:d4:95:28:d5:96:25:43:ab:
      0e:52:44:6e:90:25:8a:ef:cf:cd:29:7d:97:33:d7:70:58:de:
      99:0d:e6:59:c0:72:e0:3c:2d:de:46:6f:f6:15:7e:22:64:89:
      e7:ef:32:df:6d:ef:9d:e9:7b:d6:31:bf:c8:94:e8:f2:9f:40:
      ef:14:6e:21:9b:3d:f1:03:3f:96:d0:d4:42:4f:5f:4a:dd:9a:
      f5:fb:4f:ce:61:c1:1e:cb:5c:2e:62:50:1b:36:c5:d6:a1:4d:
      f0:e0:a1:94:d9:ff:5d:9f:4a:83:70:91:d8:26:61:44:66:cb:
      f7:c0:10:e9:d5:1c:89:f9:1a:3f:cb:2a:ef:22:8b:65:0e:cd:
      69:2d:6c:09:f3:e1:fd:f4:31:eb:85:79:a0:71:e6:1f:6f:7b:
      f9:c4:2d:09:ef:b0:f8:99:80:80:c5:74:a6:1d:5d:bf:32:25:
      14:e0:83:d6:a1:61:d3:e1:10:2f:ee:d5:12:09:17:1b:38:b1:
      19:91:7d:9c:18:ee:a0:13:b2:c2:e1:9c:bf:59:0e:d0:ee:b9:
      9c:49:7e:df:ac:9f:9b:30:a6:27:a9:4a:27:a4:1a:fc:36:d1:
      fb:0f:ea:d4:43:e2:7b:b4
      ]]></artwork>
    </section>

    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA is asked to assign the value "spkac" below { iso(1)
        identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) }
        as per https://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-26
        for the identifier of the ASN.1 SPKAC schema, and to add this to
        the ASN.1 definition in this specification.</t>
      <t>All drafts are required to have an IANA considerations section (see
     <xref target="RFC8126" format="default">Guidelines for Writing an IANA Considerations Section in RFCs</xref> for a guide). If the draft does not require IANA to do
     anything, the section contains an explicit statement that this is the
     case (as above). If there are no requirements for IANA, the section will
     be removed during conversion into an RFC by the RFC Editor.</t>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The aim of SPKAC is that no adversary can convince a CA
        to sign a certificate using the private key other than that intended. An
        adversary is any entity other than the end entity and the CA
        attempting to establish proof-of-possession.
      </t>
      <section numbered="true" toc="default">
        <name>Use of the MD5 Message-Digest Algorithm</name>
        <t>Historically the formal definition of the HTML keygen tag specified
          that the MD5 message-digest algorithm be used within SPKAC requests.</t>
        <t>As defined in <xref target="RFC6151" format="default">Updated Security Considerations for
           the MD5 Message-Digest and the HMAC-MD5 Algorithms</xref> MD5 must not be used for
           digital signatures.</t>
        <t>New protocols using the SPKAC protocol MUST NOT mandate the use
          of a fixed message-digest algorithm, and existing protocols using
          the SPKAC protocol SHOULD be updated to ensure the message-digest
          used is not fixed to a given digest.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Clear Text Challenge and Public Key</name>
        <t>Given that both the Challenge and the Public Key are encoded within
          the SPKAC message in clear text, to ensure privacy of the data in transit
          additional steps SHOULD be taken to ensure that SPKAC message is delivered
          over a secure transport, such as <xref target="RFC8446" format="default">TLS</xref>.</t>
      </section>
      <section numbered="true" toc="default">
        <name>UI/UX Denial of Service Design Issues</name>
         <t>When the generation of an SPKAC message is triggered by a remote entity, such
           as a CA triggering the generation of an SPKAC message in a
           browser as part of a certificate request, the user interfaces in the client
           (browser) should take care to not allow (rogue) webpages or javascript to
           generate a very large number of SPKAC requests; as this is not only somewhat
           resource intensive; but may also deplete cryptographic quality random generator
           pools (historically a concern). This is especially important as most
           implementations will generally keep the cryptographic code and (private) key
           storage outside the sandbox in which the DOM and Javascript is handled. 
         </t>
         <t>Likewise - clients (browsers) should be particularly careful when handling
           solicited (and unsolicited and maliciously repeated/high-volume) responses to a
           SPKAC submission when storing certificates and recombining certificates with
           keys in the key store. Especially as (historically) it was common for such
           request to be handled asynchronously; with the user receiving an email after,
           for example human approval, to pick up the signed certificate at a certain URL.
         </t>
         <t>Clients SHOULD make a request to the user for consent for the client to
           generate the SPKAC message in a clear and easy to understand manner, with
           cancel being the default choice should the user not understand the request.</t>
      </section>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

 <back>
    <!-- References split into informative and normative -->

   <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
     <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author initials="S." surname="Josefsson" fullname="S. Josefsson">
              <organization/>
            </author>
            <date year="2006" month="October"/>
            <abstract>
               <t>
              This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]
              </t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5911" target="https://www.rfc-editor.org/info/rfc5911" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5911.xml">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2010" month="June"/>
            <abstract>
            <t>
            The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.
            </t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="RFC5912" target="https://www.rfc-editor.org/info/rfc5912" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5912.xml">
          <front>
            <title>
              New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)
            </title>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2010" month="June"/>
            <abstract>
              <t>
                The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.
              </t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC6151" target="https://www.rfc-editor.org/info/rfc6151" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6151.xml">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <seriesInfo name="RFC" value="6151"/>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization/>
            </author>
            <date year="2011" month="March"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017">
          <front>
            <title>
              PKCS #1: RSA Cryptography Specifications Version 2.2
            </title>
            <author initials="K." surname="Moriarty" fullname="K. Moriarty" role="editor">
              <organization/>
            </author>
            <author initials="B." surname="Kaliski" fullname="B. Kaliski">
              <organization/>
            </author>
            <author initials="J." surname="Jonsson" fullname="J. Jonsson">
              <organization/>
            </author>
            <author initials="A." surname="Rusch" fullname="A. Rusch">
              <organization/>
            </author>
            <date year="2016" month="November"/>
            <abstract>
              <t>
                This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.
              </t>
              <t>
                This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.
              </t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
            <organization />
            </author>
            <date year="2018" month="August" />
            <abstract>
              <t>
                This document specifies version 1.3 of the Transport Layer Security
                (TLS) protocol. TLS allows client/server applications to communicate
                over the Internet in a way that is designed to prevent
                eavesdropping, tampering, and message forgery.
              </t>
              <t>
                This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246,
                and 6961. This document also specifies new requirements for TLS 1.2
                implementations.
              </t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446" />
          <seriesInfo name="DOI" value="10.17487/RFC8446" />
        </reference>
        <reference anchor="W3C.REC-html5-20141028" target="http://www.w3.org/TR/2014/REC-html5-20141028">
          <front>
            <title>HTML5</title>
            <author initials="I." surname="Hickson" fullname="Ian Hickson">
              <organization/>
            </author>
            <author initials="R." surname="Berjon" fullname="Robin Berjon">
              <organization/>
            </author>
            <author initials="S." surname="Faulkner" fullname="Steve Faulkner">
              <organization/>
            </author>
            <author initials="T." surname="Leithead" fullname="Travis Leithead">
              <organization/>
            </author>
            <author initials="E." surname="Navara" fullname="Erika Doyle Navara">
              <organization/>
            </author>
            <author initials="T." surname="O&#039;Connor" fullname="Theresa O&#039;Connor">
              <organization/>
            </author>
            <author initials="S." surname="Pfeiffer" fullname="Silvia Pfeiffer">
              <organization/>
            </author>
            <date month="October" day="28" year="2014"/>
          </front>
          <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-html5-20141028"/>
          <format type="HTML" target="http://www.w3.org/TR/2014/REC-html5-20141028"/>
        </reference>
        <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 initials="authInitials" surname="authSurName">
              <organization/>
            </author>
            <date year="2002"/>
          </front>
          <seriesInfo name="ITU-T Recommendation X.690 (2002)" value="ISO/IEC 8825-1:2002"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <!-- Here we use entities that we defined at the beginning. -->

        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <!-- Change Log

v00 2020-03-01  minfrin   Initial version
v01 2022-10-22  minfrin   Correct word blind use of terminology

    -->
 </back>
</rfc>
