| rfc9189xml2.original.xml | rfc9189.xml | |||
|---|---|---|---|---|
| <?xml version = "1.0" encoding = "utf-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docN | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ame="draft-smyshlyaev-tls12-gost-suites-18" indexInclude="true" ipr="trust200902 | |||
| <?rfc toc="yes"?> | " number="9189" prepTime="2022-02-28T11:38:28" scripts="Common,Latin" sortRefs=" | |||
| <?rfc tocdepth="4"?> | true" submissionType="independent" symRefs="true" tocDepth="4" tocInclude="true" | |||
| <?rfc symrefs="yes"?> | xml:lang="en"> | |||
| <?rfc sortrefs="yes" ?> | <link href="https://datatracker.ietf.org/doc/draft-smyshlyaev-tls12-gost-suite | |||
| <?rfc compact="no" ?> | s-18" rel="prev"/> | |||
| <link href="https://dx.doi.org/10.17487/rfc9189" rel="alternate"/> | ||||
| <rfc category="info" docName="draft-smyshlyaev-tls12-gost-suites-18" ipr="trust2 | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| 00902"> | <front> | |||
| <title abbrev="GOST Cipher Suites for TLS 1.2">GOST Cipher Suites for Transp | ||||
| <front> | ort Layer Security (TLS) Protocol Version 1.2</title> | |||
| <title abbrev="GOST Cipher Suites for TLS 1.2"> | <seriesInfo name="RFC" value="9189" stream="independent"/> | |||
| GOST Cipher Suites for Transport Layer Security (TLS) Protocol Versi | <author fullname="Stanislav Smyshlyaev" initials="S." role="editor" surname= | |||
| on 1.2 | "Smyshlyaev"> | |||
| </title> | <organization showOnFrontPage="true">CryptoPro</organization> | |||
| <address> | ||||
| <author fullname="Stanislav Smyshlyaev" initials="S.V." role="editor" su | <postal> | |||
| rname="Smyshlyaev"> | <street>18, Suschevsky val</street> | |||
| <organization>CryptoPro</organization> | <city>Moscow</city> | |||
| <address> | <code>127018</code> | |||
| <postal> | <country>Russian Federation</country> | |||
| <street>18, Suschevsky val </street> | </postal> | |||
| <city>Moscow</city> | <phone>+7 (495) 995-48-20</phone> | |||
| <code>127018</code> | <email>svs@cryptopro.ru</email> | |||
| <country>Russian Federation</country> | </address> | |||
| </postal> | </author> | |||
| <phone>+7 (495) 995-48-20</phone> | <author fullname="Dmitry Belyavskiy" initials="D." surname="Belyavskiy"> | |||
| <email>svs@cryptopro.ru</email> | <organization showOnFrontPage="true">Cryptocom</organization> | |||
| </address> | <address> | |||
| </author> | <postal> | |||
| <street>14/2, Kedrova St.</street> | ||||
| <author fullname="Dmitry Belyavskiy" initials="D." surname="Belyavskiy"> | <city>Moscow</city> | |||
| <organization>Cryptocom</organization> | <code>117218</code> | |||
| <address> | <country>Russian Federation</country> | |||
| <postal> | </postal> | |||
| <street>14/2 Kedrova st</street> | <email>beldmit@gmail.com</email> | |||
| <!-- Reorder these if your country does things differently - | </address> | |||
| -> | </author> | |||
| <city>Moscow</city> | <author fullname="Evgeny Alekseev" initials="E." surname="Alekseev"> | |||
| <code>117218</code> | <organization showOnFrontPage="true">CryptoPro</organization> | |||
| <country>Russian Federation</country> | <address> | |||
| </postal> | <postal> | |||
| <email>beldmit@gmail.com</email> | <street>18, Suschevsky val</street> | |||
| </address> | <city>Moscow</city> | |||
| </author> | <code>127018</code> | |||
| <country>Russian Federation</country> | ||||
| <author fullname="Markku-Juhani O. Saarinen" initials="M-J." surname="Sa | </postal> | |||
| arinen"> | <email>alekseev@cryptopro.ru</email> | |||
| <organization>Independent Consultant</organization> | </address> | |||
| <address> | </author> | |||
| <email>mjos@iki.fi</email> | <date month="02" year="2022"/> | |||
| </address> | <area>General</area> | |||
| </author> | <workgroup>Network Working Group</workgroup> | |||
| <keyword>GOST</keyword> | ||||
| <author fullname="Evgeny Alekseev" initials="E.K." surname="Alekseev"> | <keyword>cipher suite</keyword> | |||
| <organization>CryptoPro</organization> | <keyword>TLS</keyword> | |||
| <address> | <abstract pn="section-abstract"> | |||
| <postal> | <t indent="0" pn="section-abstract-1"> | |||
| <street>18, Suschevsky val </street> | This document specifies three new cipher suites, two new signature alg | |||
| <city>Moscow</city> | orithms, seven new supported groups, and two new certificate types for the Trans | |||
| <code>127018</code> | port | |||
| <country>Russian Federation</country> | Layer Security (TLS) protocol version 1.2 to support the Russian crypt | |||
| </postal> | ographic standard algorithms (called "GOST" algorithms). | |||
| <email>alekseev@cryptopro.ru</email> | This document specifies a profile of TLS 1.2 with GOST algorithms so t | |||
| </address> | hat implementers can produce interoperable implementations. | |||
| </author> | </t> | |||
| <t indent="0" pn="section-abstract-2"> | ||||
| <date year="2021" /> | This specification facilitates implementations | |||
| <!--если не указываем число и месяц, они подставляются автоматически--> | that aim to support the GOST algorithms. This document does not imply | |||
| <area>General</area> | IETF endorsement of the cipher suites, signature algorithms, supported | |||
| <!--как в rfc7748--> | groups, and certificate types. | |||
| <workgroup>Network Working Group</workgroup> | </t> | |||
| <keyword>GOST, cipher suite, TLS</keyword> | </abstract> | |||
| <boilerplate> | ||||
| <abstract> | <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | |||
| <t> | "exclude" pn="section-boilerplate.1"> | |||
| This document specifies three new cipher suites, two new signatu | <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | |||
| re algorithms, seven new supported groups and two new certificate types for the | > | |||
| Transport | <t indent="0" pn="section-boilerplate.1-1"> | |||
| Layer Security (TLS) protocol Version 1.2 to support the Russian | This document is not an Internet Standards Track specification; it i | |||
| cryptographic standard algorithms (called GOST algorithms). | s | |||
| This document specifies a profile of TLS 1.2 with GOST algorithm | published for informational purposes. | |||
| s so that implementers can produce interoperable implementations. | </t> | |||
| </t> | <t indent="0" pn="section-boilerplate.1-2"> | |||
| <t> | This is a contribution to the RFC Series, independently of any | |||
| This specification is developed to facilitate implementations | other RFC stream. The RFC Editor has chosen to publish this | |||
| that wish to support the GOST algorithms. This document does not | document at its discretion and makes no statement about its value | |||
| imply | for implementation or deployment. Documents approved for | |||
| IETF endorsement of the cipher suites, signature algorithms, sup | publication by the RFC Editor are not candidates for any level of | |||
| ported groups and certificate types. | Internet Standard; see Section 2 of RFC 7841. | |||
| </t> | </t> | |||
| </abstract> | <t indent="0" pn="section-boilerplate.1-3"> | |||
| </front> | Information about the current status of this document, any | |||
| errata, and how to provide feedback on it may be obtained at | ||||
| <middle> | <eref target="https://www.rfc-editor.org/info/rfc9189" brackets="non | |||
| <section title="Introduction" anchor="Introduction"> | e"/>. | |||
| <t> | </t> | |||
| This document specifies three new cipher suites, two new signatu | </section> | |||
| re algorithms, seven new supported groups and two new certificate types for the | <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | |||
| Transport Layer Security (TLS) | ude" pn="section-boilerplate.2"> | |||
| Protocol Version 1.2 <xref target="RFC5246"/> to support the set | <name slugifiedName="name-copyright-notice">Copyright Notice</name> | |||
| of Russian cryptographic standard algorithms (called GOST algorithms). This doc | <t indent="0" pn="section-boilerplate.2-1"> | |||
| ument specifies a profile of TLS 1.2 with GOST algorithms so that implementers c | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| an produce interoperable implementations. | document authors. All rights reserved. | |||
| The profile of TLS 1.2 with GOST algorithms uses the hash algori | </t> | |||
| thm GOST R 34.11-2012 <xref target="RFC6986"/> | <t indent="0" pn="section-boilerplate.2-2"> | |||
| and the signature algorithm GOST R 34.10-2012 <xref target="RFC7 | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| 091"/> | Provisions Relating to IETF Documents | |||
| and use two types of cipher suites: the CTR_OMAC cipher suites a | (<eref target="https://trustee.ietf.org/license-info" brackets="none | |||
| nd the CNT_IMIT cipher suite. | "/>) in effect on the date of | |||
| </t> | publication of this document. Please review these documents | |||
| <t> | carefully, as they describe your rights and restrictions with | |||
| The CTR_OMAC cipher suites use the GOST R 34.12-2015 (see <xref | respect to this document. | |||
| target="RFC7801"/>, <xref target="RFC8891"/>) block ciphers. | </t> | |||
| </t> | </section> | |||
| <t> | </boilerplate> | |||
| The CNT_IMIT cipher suite uses the GOST 28147-89 <xref target="R | <toc> | |||
| FC5830"/> block cipher. | <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | |||
| </t> | n="section-toc.1"> | |||
| <t> | <name slugifiedName="name-table-of-contents">Table of Contents</name> | |||
| This document specifies the profile of the TLS protocol version | <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | |||
| 1.2 with GOST algorithms. The profile of the TLS protocol version 1.3 <xref targ | c.1-1"> | |||
| et="RFC8446"/> with GOST algorithms is specified in a separate document <xref ta | <li pn="section-toc.1-1.1"> | |||
| rget="DraftGostTLS13"/>. | <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | |||
| </t> | ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | |||
| <t> | derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | |||
| This specification is developed to facilitate implementations th | Introduction</xref></t> | |||
| at wish to support the GOST algorithms. This document does not imply IETF endors | </li> | |||
| ement of the cipher suites, signature algorithms, supported groups and certifica | <li pn="section-toc.1-1.2"> | |||
| te types. | <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | |||
| </t> | ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | |||
| </section> | derivedContent="" format="title" sectionFormat="of" target="name-conventions-us | |||
| ed-in-this-do">Conventions Used in This Document</xref></t> | ||||
| <section title="Conventions Used in This Document"> | </li> | |||
| <t> | <li pn="section-toc.1-1.3"> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NO | <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref der | |||
| T", "SHOULD", "SHOULD NOT", | ivedContent="3" format="counter" sectionFormat="of" target="section-3"/>. <xref | |||
| "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this | derivedContent="" format="title" sectionFormat="of" target="name-basic-terms-an | |||
| document are to be interpreted | d-definitions">Basic Terms and Definitions</xref></t> | |||
| as described in BCP 14 <xref target="RFC2119"/> <xref target="RF | </li> | |||
| C8174"/> when, and only when, | <li pn="section-toc.1-1.4"> | |||
| <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
| at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-cipher-suite-definitions">Cipher S | ||||
| uite Definitions</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
| "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-record-payload-protect | ||||
| ion">Record Payload Protection</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.1.2"> | ||||
| <li pn="section-toc.1-1.4.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.2.1.1"><xref derived | ||||
| Content="4.1.1" format="counter" sectionFormat="of" target="section-4.1.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-ctr_omac"> | ||||
| CTR_OMAC</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.2.2.1"><xref derived | ||||
| Content="4.1.2" format="counter" sectionFormat="of" target="section-4.1.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-cnt_imit"> | ||||
| CNT_IMIT</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
| "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-key-exchange-and-authe | ||||
| ntica">Key Exchange and Authentication</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.2.2"> | ||||
| <li pn="section-toc.1-1.4.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derived | ||||
| Content="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-hello-mess | ||||
| ages">Hello Messages</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.2.1"><xref derived | ||||
| Content="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-server-cer | ||||
| tificate">Server Certificate</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.3.1"><xref derived | ||||
| Content="4.2.3" format="counter" sectionFormat="of" target="section-4.2.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-certificat | ||||
| erequest">CertificateRequest</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.4.1"><xref derived | ||||
| Content="4.2.4" format="counter" sectionFormat="of" target="section-4.2.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-clientkeye | ||||
| xchange">ClientKeyExchange</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
| ="section-toc.1-1.4.2.2.2.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.2.2.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.4.2.1.1"><xref | ||||
| derivedContent="4.2.4.1" format="counter" sectionFormat="of" target="section-4. | ||||
| 2.4.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="nam | ||||
| e-ctr_omac-2">CTR_OMAC</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.4.2.2.1"><xref | ||||
| derivedContent="4.2.4.2" format="counter" sectionFormat="of" target="section-4. | ||||
| 2.4.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="nam | ||||
| e-cnt_imit-2">CNT_IMIT</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.5.1"><xref derived | ||||
| Content="4.2.5" format="counter" sectionFormat="of" target="section-4.2.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-certificat | ||||
| everify">CertificateVerify</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.2.6.1"><xref derived | ||||
| Content="4.2.6" format="counter" sectionFormat="of" target="section-4.2.6"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-finished"> | ||||
| Finished</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent= | ||||
| "4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-cryptographic-algorith | ||||
| ms">Cryptographic Algorithms</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.4.2.3.2"> | ||||
| <li pn="section-toc.1-1.4.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.1.1"><xref derived | ||||
| Content="4.3.1" format="counter" sectionFormat="of" target="section-4.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-block-ciph | ||||
| er">Block Cipher</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.2.1"><xref derived | ||||
| Content="4.3.2" format="counter" sectionFormat="of" target="section-4.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-mac-algori | ||||
| thm">MAC Algorithm</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.3.1"><xref derived | ||||
| Content="4.3.3" format="counter" sectionFormat="of" target="section-4.3.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-encryption | ||||
| -algorithm">Encryption Algorithm</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.4.1"><xref derived | ||||
| Content="4.3.4" format="counter" sectionFormat="of" target="section-4.3.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-prf-and-ha | ||||
| sh-algorithms">PRF and HASH Algorithms</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.3.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.3.2.5.1"><xref derived | ||||
| Content="4.3.5" format="counter" sectionFormat="of" target="section-4.3.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-snmax-para | ||||
| meter">SNMAX Parameter</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
| at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-new-values-for-the-tls-sign">New V | ||||
| alues for the TLS SignatureAlgorithm Registry</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
| at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-new-values-for-the-tls-supp">New V | ||||
| alues for the TLS Supported Groups Registry</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-new-values-for-the-tls-clie">New V | ||||
| alues for the TLS ClientCertificateType Identifiers Registry</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
| at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-additional-algorithms">Additional | ||||
| Algorithms</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.8.2"> | ||||
| <li pn="section-toc.1-1.8.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
| "8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-tlstree">TLSTREE</xref | ||||
| ></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.8.2.1.2"> | ||||
| <li pn="section-toc.1-1.8.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.1.2.1.1"><xref derived | ||||
| Content="8.1.1" format="counter" sectionFormat="of" target="section-8.1.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-key-tree-p | ||||
| arameters">Key Tree Parameters</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent= | ||||
| "8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-key-export-and-key-imp | ||||
| ort-a">Key Export and Key Import Algorithms</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.8.2.2.2"> | ||||
| <li pn="section-toc.1-1.8.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.1.1"><xref derived | ||||
| Content="8.2.1" format="counter" sectionFormat="of" target="section-8.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-kexp15-and | ||||
| -kimp15-algorithm">KExp15 and KImp15 Algorithms</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.2.2.2.1"><xref derived | ||||
| Content="8.2.2" format="counter" sectionFormat="of" target="section-8.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-kexp28147- | ||||
| and-kimp28147-alg">KExp28147 and KImp28147 Algorithms</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent= | ||||
| "8.3" format="counter" sectionFormat="of" target="section-8.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-key-exchange-generatio | ||||
| n-alg">Key Exchange Generation Algorithms</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.8.2.3.2"> | ||||
| <li pn="section-toc.1-1.8.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.3.2.1.1"><xref derived | ||||
| Content="8.3.1" format="counter" sectionFormat="of" target="section-8.3.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-keg-algori | ||||
| thm">KEG Algorithm</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.3.2.2.1"><xref derived | ||||
| Content="8.3.2" format="counter" sectionFormat="of" target="section-8.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-keg_28147- | ||||
| algorithm">KEG_28147 Algorithm</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent= | ||||
| "8.4" format="counter" sectionFormat="of" target="section-8.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-gostimit28147">gostIMI | ||||
| T28147</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
| at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
| ations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
| rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-historical-considerations">Histo | ||||
| rical Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
| rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-security-considerations">Securit | ||||
| y Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" fo | ||||
| rmat="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.12.2"> | ||||
| <li pn="section-toc.1-1.12.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent | ||||
| ="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent | ||||
| ="12.2" format="counter" sectionFormat="of" target="section-12.2"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
| ces">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13"> | ||||
| <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="Append | ||||
| ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-test-examples"> | ||||
| Test Examples</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.13.2"> | ||||
| <li pn="section-toc.1-1.13.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent | ||||
| ="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>. <xr | ||||
| ef derivedContent="" format="title" sectionFormat="of" target="name-test-example | ||||
| s-for-ctr_omac-">Test Examples for CTR_OMAC Cipher Suites</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.13.2.1.2"> | ||||
| <li pn="section-toc.1-1.13.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.1.1"><xref derive | ||||
| dContent="A.1.1" format="counter" sectionFormat="of" target="section-appendix.a. | ||||
| 1.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name- | ||||
| tlstree-examples">TLSTREE Examples</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
| ="section-toc.1-1.13.2.1.2.1.2"> | ||||
| <li pn="section-toc.1-1.13.2.1.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.1.2.1.1"><xre | ||||
| f derivedContent="A.1.1.1" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.1.1"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_ma">TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | ||||
| Cipher Suite</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.1.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.1.2.2.1"><xre | ||||
| f derivedContent="A.1.1.2" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.1.2"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_ku">TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR | ||||
| _OMAC Cipher Suite</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.2.1"><xref derive | ||||
| dContent="A.1.2" format="counter" sectionFormat="of" target="section-appendix.a. | ||||
| 1.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name- | ||||
| record-examples">Record Examples</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
| ="section-toc.1-1.13.2.1.2.2.2"> | ||||
| <li pn="section-toc.1-1.13.2.1.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.2.2.1.1"><xre | ||||
| f derivedContent="A.1.2.1" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.2.1"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_mag">TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMA | ||||
| C Cipher Suite</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.1.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.2.2.2.1"><xre | ||||
| f derivedContent="A.1.2.2" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.2.2"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_kuz">TLS_GOSTR341112_256_WITH_KUZNYECHIK_CT | ||||
| R_OMAC Cipher Suite</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.1.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.3.1"><xref derive | ||||
| dContent="A.1.3" format="counter" sectionFormat="of" target="section-appendix.a. | ||||
| 1.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name- | ||||
| handshake-examples">Handshake Examples</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
| ="section-toc.1-1.13.2.1.2.3.2"> | ||||
| <li pn="section-toc.1-1.13.2.1.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.3.2.1.1"><xre | ||||
| f derivedContent="A.1.3.1" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.3.1"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_magm">TLS_GOSTR341112_256_WITH_MAGMA_CTR_OM | ||||
| AC Cipher Suite</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.1.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.1.2.3.2.2.1"><xre | ||||
| f derivedContent="A.1.3.2" format="counter" sectionFormat="of" target="section-a | ||||
| ppendix.a.1.3.2"/>. <xref derivedContent="" format="title" sectionFormat="of" t | ||||
| arget="name-tls_gostr341112_256_with_kuzn">TLS_GOSTR341112_256_WITH_KUZNYECHIK_C | ||||
| TR_OMAC Cipher Suite</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent | ||||
| ="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>. <xr | ||||
| ef derivedContent="" format="title" sectionFormat="of" target="name-test-example | ||||
| s-for-cnt_imit-">Test Examples for CNT_IMIT Cipher Suites</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.13.2.2.2"> | ||||
| <li pn="section-toc.1-1.13.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.2.2.1.1"><xref derive | ||||
| dContent="A.2.1" format="counter" sectionFormat="of" target="section-appendix.a. | ||||
| 2.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name- | ||||
| record-examples-2">Record Examples</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.13.2.2.2.2.1"><xref derive | ||||
| dContent="A.2.2" format="counter" sectionFormat="of" target="section-appendix.a. | ||||
| 2.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name- | ||||
| handshake-examples-2">Handshake Examples</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14"> | ||||
| <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-contributors">Contributors</xre | ||||
| f></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.15"> | ||||
| <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="Introduction" numbered="true" toc="include" removeInRFC="fa | ||||
| lse" pn="section-1"> | ||||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1"> | ||||
| This document specifies three new cipher suites, two new signatu | ||||
| re algorithms, seven new supported groups, and two new certificate types for the | ||||
| Transport Layer Security (TLS) | ||||
| protocol version 1.2 <xref target="RFC5246" format="default" sec | ||||
| tionFormat="of" derivedContent="RFC5246"/> (note that <xref target="RFC5246" for | ||||
| mat="default" sectionFormat="of" derivedContent="RFC5246"/> has been obsoleted b | ||||
| y <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC | ||||
| 8446"/> ) to support the set of Russian cryptographic standard algorithms (calle | ||||
| d "GOST" algorithms). This document specifies a profile of TLS 1.2 with GOST alg | ||||
| orithms so that implementers can produce interoperable implementations. | ||||
| The profile of TLS 1.2 with GOST algorithms uses the hash algori | ||||
| thm GOST R 34.11-2012 <xref target="RFC6986" format="default" sectionFormat="of" | ||||
| derivedContent="RFC6986"/>, the signature algorithm GOST R 34.10-2012 <xref tar | ||||
| get="RFC7091" format="default" sectionFormat="of" derivedContent="RFC7091"/>, | ||||
| and two types of cipher suites: the CTR_OMAC and the CNT_ | ||||
| IMIT. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-2"> | ||||
| The CTR_OMAC cipher suites use the GOST R 34.12-2015 (see <xref | ||||
| target="RFC7801" format="default" sectionFormat="of" derivedContent="RFC7801"/> | ||||
| and <xref target="RFC8891" format="default" sectionFormat="of" derivedContent="R | ||||
| FC8891"/>) block ciphers. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-3"> | ||||
| The CNT_IMIT cipher suite uses the GOST 28147-89 <xref target="R | ||||
| FC5830" format="default" sectionFormat="of" derivedContent="RFC5830"/> block cip | ||||
| her. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-4"> | ||||
| This document specifies the profile of the TLS protocol version | ||||
| 1.2 with GOST algorithms. The profile of the TLS protocol version 1.3 <xref targ | ||||
| et="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> with | ||||
| GOST algorithms is specified in a separate document <xref target="I-D.smyshlyae | ||||
| v-tls13-gost-suites" format="default" sectionFormat="of" derivedContent="DraftGo | ||||
| stTLS13"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-5"> | ||||
| This specification facilitates implementations that aim to support the | ||||
| GOST algorithms. This document does not imply IETF endorsement of the cipher su | ||||
| ites, signature algorithms, supported groups, and certificate types. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | ||||
| <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in | ||||
| This Document</name> | ||||
| <t indent="0" pn="section-2-1"> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
| "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", " | ||||
| <bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | ||||
| nterpreted | ||||
| as described in BCP 14 <xref target="RFC2119" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, | ||||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Definition" numbered="true" toc="include" removeInRFC="fals | ||||
| <section title="Basic Terms and Definitions" anchor="Definition"> | e" pn="section-3"> | |||
| <t> This document uses the following terms and definitions for the se | <name slugifiedName="name-basic-terms-and-definitions">Basic Terms and Def | |||
| ts and operations | initions</name> | |||
| <t indent="0" pn="section-3-1"> | ||||
| This document follows the terminology from <xref target="I-D.ietf-tls- | ||||
| rfc8446bis" format="default" sectionFormat="of" derivedContent="RFC8446bis"/> fo | ||||
| r "preliminary secret" and "extended_main_secret". | ||||
| </t> | ||||
| <t indent="0" pn="section-3-2"> This document uses the following terms and | ||||
| definitions for the sets and operations | ||||
| on the elements of these sets: | on the elements of these sets: | |||
| <list style = "hanging" hangIndent = "8"> | </t> | |||
| <t hangText = "B_t"> | <dl newline="false" spacing="normal" indent="10" pn="section-3-3"> | |||
| the set of byte strings of length t, t >= 0, for t = 0 t | <dt pn="section-3-3.1">B_t</dt> | |||
| he | <dd pn="section-3-3.2"> | |||
| the set of byte strings of length t, t >= 0. For t = | ||||
| 0, the | ||||
| B_t set consists of a single empty string of zero length . | B_t set consists of a single empty string of zero length . | |||
| If A is an element of B_t, then A = (a_1, a_2, | If A is an element of B_t, then A = (a_1, a_2, | |||
| ... , a_t), where a_1, a_2, ... , a_t are in {0, ... , 2 | ... , a_t), where a_1, a_2, ... , a_t are in {0, ... , 2 | |||
| 55}; | 55}. | |||
| </t> | </dd> | |||
| <t hangText = "B*"> | <dt pn="section-3-3.3">B*</dt> | |||
| <dd pn="section-3-3.4"> | ||||
| the set of all byte strings of a finite length | the set of all byte strings of a finite length | |||
| (hereinafter referred to as strings), including the empt | (hereinafter referred to as "strings"), including the em | |||
| y | pty | |||
| string; | string. | |||
| </t> | </dd> | |||
| <t hangText = "A[i..j]"> | <dt pn="section-3-3.5">A[i..j]</dt> | |||
| the string A[i..j] = (a_i, a_{i+1}, ... , a_j) in B_{j-i | <dd pn="section-3-3.6"> | |||
| +1} where A = (a_1, ... , a_t) in B_t and 1<=i<=j<=t; | the string A[i..j] = (a_i, a_{i+1}, ... , a_j) in B_{j-i | |||
| </t> | +1}, where A = (a_1, ... , a_t) in B_t and 1<=i<=j<=t. | |||
| <t hangText ="L(A)"> | </dd> | |||
| the length of the byte string A in bytes; | <dt pn="section-3-3.7">L(A)</dt> | |||
| </t> | <dd pn="section-3-3.8"> | |||
| <t hangText = "A | C"> | the length of the byte string A in bytes. | |||
| </dd> | ||||
| <dt pn="section-3-3.9">A | C</dt> | ||||
| <dd pn="section-3-3.10"> | ||||
| concatenation of strings A and C both belonging to B*, i .e., | concatenation of strings A and C both belonging to B*, i .e., | |||
| a string in B_{L(A)+L(C)}, where the left substring in | a string in B_{L(A)+L(C)}, where the left substring in | |||
| B_L(A) is equal to A, and the right substring in B_L(C) | B_L(A) is equal to A and the right substring in B_L(C) i | |||
| is | s | |||
| equal to C; | equal to C. | |||
| </t> | </dd> | |||
| <t hangText = "A XOR C"> | <dt pn="section-3-3.11">A XOR C</dt> | |||
| bitwise exclusive-or of byte strings A and C both belong | <dd pn="section-3-3.12"> | |||
| ing to B_t (i.e. both are of length t bytes), i.e., | bitwise exclusive-or of byte strings A and C both belong | |||
| a string in B_t such that if A = (a_1, a_2, ... , a_t), | ing to B_t (both are of length t bytes), i.e., | |||
| C = (c_1, c_2, ... , c_t) then | a string in B_t such that if A = (a_1, a_2, ... , a_t) a | |||
| A XOR C = (a_1 (xor) c_1, a_2 (xor) c_2, ... , a_t (xor) | nd C = (c_1, c_2, ... , c_t), then | |||
| c_t) where (xor) is bitwise exclusive-or of bytes; | A XOR C = (a_1 (xor) c_1, a_2 (xor) c_2, ... , a_t (xor) | |||
| </t> | c_t), where (xor) is bitwise exclusive-or of bytes. | |||
| <t hangText = "i & j"> | </dd> | |||
| bitwise AND of unsigned integers i and j; | <dt pn="section-3-3.13">i & j</dt> | |||
| </t> | <dd pn="section-3-3.14"> | |||
| <t hangText = "STR_t"> | bitwise AND of unsigned integers i and j. | |||
| the transformation that maps an integer i = 256^{t-1} * | </dd> | |||
| i_1 + ... + 256 * i_{t-1} + i_t | <dt pn="section-3-3.15">STR_t</dt> | |||
| <dd pn="section-3-3.16"> | ||||
| the transformation that maps an integer i = 256<sup>t-1< | ||||
| /sup> * i_1 + ... + 256 * i_{t-1} + i_t | ||||
| into the byte string STR_t(i) = (i_1, ... , i_t) in B_t | into the byte string STR_t(i) = (i_1, ... , i_t) in B_t | |||
| (the interpretation of the integer as a byte string in b | (the interpretation of the integer as a byte string in b | |||
| ig-endian format); | ig-endian format). | |||
| </t> | </dd> | |||
| <t hangText = "str_t"> | <dt pn="section-3-3.17">str_t</dt> | |||
| the transformation that maps an integer i = 256^{t-1} * | <dd pn="section-3-3.18"> | |||
| i_t + ... + 256 * i_2 + i_1 | the transformation that maps an integer i = 256<sup>t-1< | |||
| /sup> * i_t + ... + 256 * i_2 + i_1 | ||||
| into the byte string str_t(i) = (i_1, ... , i_t) in B_t | into the byte string str_t(i) = (i_1, ... , i_t) in B_t | |||
| (the interpretation of the integer as a byte string in l | (the interpretation of the integer as a byte string in l | |||
| ittle-endian format); | ittle-endian format). | |||
| </t> | </dd> | |||
| <t hangText = "INT"> | <dt pn="section-3-3.19">INT</dt> | |||
| <dd pn="section-3-3.20"> | ||||
| the transformation that maps a string a = (a_1, ... , a_ t) in B_t | the transformation that maps a string a = (a_1, ... , a_ t) in B_t | |||
| into the integer INT(a) = 256^{t-1} * a_1 + ... + 256 * | into the integer INT(a) = 256<sup>t-1</sup> * a_1 + ... | |||
| a_{t-1} + a_t | + 256 * a_{t-1} + a_t | |||
| (the interpretation of the byte string in big-endian for | (the interpretation of the byte string in big-endian for | |||
| mat as an integer); | mat as an integer). | |||
| </t> | </dd> | |||
| <t hangText = "int"> | <dt pn="section-3-3.21">int</dt> | |||
| <dd pn="section-3-3.22"> | ||||
| the transformation that maps a string a = (a_1, ... , a_ t) in B_t | the transformation that maps a string a = (a_1, ... , a_ t) in B_t | |||
| into the integer int(a) = 256^{t-1} * a_t + ... + 256 * | into the integer int(a) = 256<sup>t-1</sup> * a_t + ... | |||
| a_2 + a_1 | + 256 * a_2 + a_1 | |||
| (the interpretation of the byte string in little-endian | (the interpretation of the byte string in little-endian | |||
| format as an integer); | format as an integer). | |||
| </t> | </dd> | |||
| <t hangText = "k"> | <dt pn="section-3-3.23">k</dt> | |||
| the length of the block cipher key in bytes; | <dd pn="section-3-3.24"> | |||
| </t> | the length of the block cipher key in bytes. | |||
| <t hangText = "n"> | </dd> | |||
| the length of the block cipher block in bytes; | <dt pn="section-3-3.25">n</dt> | |||
| </t> | <dd pn="section-3-3.26"> | |||
| <t hangText = "Q_c"> | the length of the block cipher block in bytes. | |||
| the public key stored in the client's certificate; | </dd> | |||
| </t> | <dt pn="section-3-3.27">Q_c</dt> | |||
| <t hangText = "d_c"> | <dd pn="section-3-3.28"> | |||
| the private key that corresponds to the Q_c key; | the public key stored in the client's certificate. | |||
| </t> | </dd> | |||
| <t hangText = "Q_s"> | <dt pn="section-3-3.29">d_c</dt> | |||
| the public key stored in the server's certificate; | <dd pn="section-3-3.30"> | |||
| </t> | the private key that corresponds to the Q_c key. | |||
| <t hangText = "d_s"> | </dd> | |||
| the private key that corresponds to the Q_s key; | <dt pn="section-3-3.31">Q_s</dt> | |||
| </t> | <dd pn="section-3-3.32"> | |||
| <t hangText = "q_s"> | the public key stored in the server's certificate. | |||
| an order of a cyclic subgroup of elliptic curve points g | </dd> | |||
| roup containing point Q_s; | <dt pn="section-3-3.33">d_s</dt> | |||
| </t> | <dd pn="section-3-3.34"> | |||
| <t hangText = "P_s"> | the private key that corresponds to the Q_s key. | |||
| the distinguished generator of the subgroup of order q_s | </dd> | |||
| that belongs to the same curve as Q_s; | <dt pn="section-3-3.35">q_s</dt> | |||
| </t> | <dd pn="section-3-3.36"> | |||
| <t hangText = "r_c"> | an order of a cyclic subgroup of the elliptic curve poin | |||
| the random string contained in ClientHello.random field | ts group containing point Q_s. | |||
| (see <xref target="RFC5246"/>); | </dd> | |||
| </t> | <dt pn="section-3-3.37">P_s</dt> | |||
| <t hangText = "r_s"> | <dd pn="section-3-3.38"> | |||
| the random string contained in ServerHello.random field | the distinguished generator of the subgroup of order q_s | |||
| (see <xref target="RFC5246"/>). | that belongs to the same curve as Q_s. | |||
| </t> | </dd> | |||
| </list> | <dt pn="section-3-3.39">r_c</dt> | |||
| </t> | <dd pn="section-3-3.40"> | |||
| </section> | the random string contained in the ClientHello.random fi | |||
| eld (see <xref target="RFC5246" format="default" sectionFormat="of" derivedConte | ||||
| <section anchor="CSD" title="Cipher Suite Definitions"> | nt="RFC5246"/>). | |||
| <t> | </dd> | |||
| <dt pn="section-3-3.41">r_s</dt> | ||||
| <dd pn="section-3-3.42"> | ||||
| the random string contained in the ServerHello.random fi | ||||
| eld (see <xref target="RFC5246" format="default" sectionFormat="of" derivedConte | ||||
| nt="RFC5246"/>). | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="CSD" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
| section-4"> | ||||
| <name slugifiedName="name-cipher-suite-definitions">Cipher Suite Definitio | ||||
| ns</name> | ||||
| <t indent="0" pn="section-4-1"> | ||||
| This document specifies the CTR_OMAC cipher suites and the CNT_I MIT cipher suite. | This document specifies the CTR_OMAC cipher suites and the CNT_I MIT cipher suite. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4-2"> | |||
| The CTR_OMAC cipher suites have the following values: | The CTR_OMAC cipher suites have the following values: | |||
| <list style = "empty"> | </t> | |||
| <t> | <sourcecode name="" type="" markers="false" pn="section-4-3"> | |||
| TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC = {0xC1, 0x | TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC = {0xC1, 0x00}; | |||
| 00}; | TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC = {0xC1, 0x01}. | |||
| TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC = {0xC1, 0x01}. | </sourcecode> | |||
| </t> | <t indent="0" pn="section-4-4"> | |||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The CNT_IMIT cipher suite has the following value: | The CNT_IMIT cipher suite has the following value: | |||
| <list style = "empty"> | </t> | |||
| <t> | <sourcecode name="" type="" markers="false" pn="section-4-5"> | |||
| TLS_GOSTR341112_256_WITH_28147_CNT_IMIT = {0xC1, 0x02}. | TLS_GOSTR341112_256_WITH_28147_CNT_IMIT = {0xC1, 0x02}. | |||
| </t> | </sourcecode> | |||
| </list> | <section anchor="RecordProtection" numbered="true" toc="include" removeInR | |||
| </t> | FC="false" pn="section-4.1"> | |||
| <section anchor ="RecordProtection" title ="Record Payload Protectio | <name slugifiedName="name-record-payload-protection">Record Payload Prot | |||
| n"> | ection</name> | |||
| <t> | <t indent="0" pn="section-4.1-1"> | |||
| The profile of TLS 1.2 with GOST algorithms requires that th | The profile of TLS 1.2 with GOST algorithms requires that th | |||
| e compression is not used. | e compression not be used. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.1-2"> | |||
| All of the cipher suites described in this document use such | All of the cipher suites described in this document use such | |||
| modes of operation (see <xref target="EncryptionAlgorithm"/>) that protect the | modes of operation (see <xref target="EncryptionAlgorithm" format="default" sec | |||
| records in the same way as if they were protected by a stream cipher. | tionFormat="of" derivedContent="Section 4.3.3"/>) that protect the records in th | |||
| e same way as if they were protected by a stream cipher. | ||||
| The TLSCiphertext structure for the CTR_OMAC and CNT_IMIT ci pher suites is specified | The TLSCiphertext structure for the CTR_OMAC and CNT_IMIT ci pher suites is specified | |||
| in accordance with the Standard Stream Cipher case (see Sect | in accordance with the standard stream cipher case (see <xre | |||
| ion 6.2.3.1 of <xref target="RFC5246"/>): | f target="RFC5246" section="6.2.3.1" sectionFormat="of" format="default" derived | |||
| </t> | Link="https://rfc-editor.org/rfc/rfc5246#section-6.2.3.1" derivedContent="RFC524 | |||
| <t> | 6"/>): | |||
| <figure> | ||||
| <artwork> | </t> | |||
| <![CDATA[ | <sourcecode name="" type="asn.1" markers="false" pn="section-4.1-3"> | |||
| struct { | struct { | |||
| ContentType type; | ContentType type; | |||
| ProtocolVersion version; | ProtocolVersion version; | |||
| uint16 length; | uint16 length; | |||
| GenericStreamCipher fragment; | GenericStreamCipher fragment; | |||
| } TLSCiphertext; | } TLSCiphertext; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.1-4"> | |||
| </figure> | where TLSCiphertext.fragment is generated in accordance with <xref tar | |||
| </t> | get="TLSCiphertext_CTR_OMAC" format="default" sectionFormat="of" derivedContent= | |||
| <t> | "Section 4.1.1"/> when the | |||
| where TLSCiphertext.fragment is generated in accordance with | CTR_OMAC cipher suites are used and <xref target="TLSCiphertext_CNT_IMIT" format | |||
| <xref target="TLSCiphertext_CTR_OMAC"/> when the CTR_OMAC cipher suite is used | ="default" sectionFormat="of" derivedContent="Section 4.1.2"/> when the CNT_IMIT | |||
| and <xref target="TLSCiphertext_CNT_IMIT"/> when the CNT_IMIT | ||||
| cipher suite is used. | cipher suite is used. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.1-5"> | |||
| The connection key material is a key material that | The connection key material is a key material that | |||
| consists of the sender_write_key (either the client_write_ke y or the server_write_key), | consists of the sender_write_key (either the client_write_ke y or the server_write_key), | |||
| the sender_write_MAC_key (either the client_write_MAC_key or the server_write_MAC_key) and the | the sender_write_MAC_key (either the client_write_MAC_key or the server_write_MAC_key), and the | |||
| sender_write_IV (either the client_write_IV or the server_wr ite_IV) parameters | sender_write_IV (either the client_write_IV or the server_wr ite_IV) parameters | |||
| that are generated in accordance with Section 6.3 of <xref t | that are generated in accordance with <xref target="RFC5246" | |||
| arget="RFC5246"/>. | section="6.3" sectionFormat="of" format="default" derivedLink="https://rfc-edit | |||
| </t> | or.org/rfc/rfc5246#section-6.3" derivedContent="RFC5246"/>. | |||
| <t> | </t> | |||
| The record key material is a key material that is generated | <t indent="0" pn="section-4.1-6"> | |||
| from the connection key material and is used to protect a record with the certai | The record key material is a key material that is generated | |||
| n sequence number. | from the connection key material and is used to protect a record with a certain | |||
| Note that with some cipher suites defined in this document t | sequence number. | |||
| he record key material can be equal to the connection key material. | Note that with some cipher suites defined in this document, | |||
| </t> | the record key material can be equal to the connection key material. | |||
| <t> | </t> | |||
| In this section the TLSCiphertext.fragment generation is des | <t indent="0" pn="section-4.1-7"> | |||
| cribed for one particular endpoint | In this section, the TLSCiphertext.fragment generation is de | |||
| scribed for one particular endpoint | ||||
| (server or client) with the corresponding connection key mat erial and record key material. | (server or client) with the corresponding connection key mat erial and record key material. | |||
| </t> | </t> | |||
| <section anchor ="TLSCiphertext_CTR_OMAC" title="CTR_OMAC"> | <section anchor="TLSCiphertext_CTR_OMAC" numbered="true" toc="include" r | |||
| <t> | emoveInRFC="false" pn="section-4.1.1"> | |||
| In case of the CTR_OMAC cipher suites the record key mat | <name slugifiedName="name-ctr_omac">CTR_OMAC</name> | |||
| erial differs from the connection key material, and for the sequence number seqn | <t indent="0" pn="section-4.1.1-1"> | |||
| um consists of: | In the CTR_OMAC cipher suites, the record key material differ | |||
| </t> | s from the connection key material, and for the seqnum sequence number consists | |||
| <t> | of: | |||
| <list style="symbols"> | </t> | |||
| <t> | <sourcecode name="" type="" markers="false" pn="section-4.1.1-2"> | |||
| K_ENC_seqnum in B_k; | K_ENC_seqnum in B_k; | |||
| </t> | ||||
| <t> | ||||
| K_MAC_seqnum in B_k; | ||||
| </t> | ||||
| <t> | ||||
| IV_seqnum in B_{n/2}. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The K_ENC_seqnum and K_MAC_seqnum values are calculated | ||||
| using the TLSTREE function defined in <xref target="TLSTREE"/>, | ||||
| the connection key material and the sequence number seqn | ||||
| um. IV_seqnum is calculated by adding seqnum value to sender_write_IV modulo 2^{ | ||||
| (n/2)*8}: | ||||
| </t> | ||||
| <t> | ||||
| <list style = "symbols"> | ||||
| <t> | ||||
| K_ENC_seqnum = TLSTREE(sender_write_key, seqnum) | ||||
| ; | ||||
| </t> | ||||
| <t> | ||||
| K_MAC_seqnum = TLSTREE(sender_write_MAC_key, seq | ||||
| num); | ||||
| </t> | ||||
| <t> | ||||
| IV_seqnum = STR_{n/2}((INT(sender_write_IV) + se | ||||
| qnum) mod 2^{(n/2)*8}). | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The TLSCiphertext.fragment that corresponds to the seqnu | ||||
| m sequence number is calculated as follows: | ||||
| </t> | ||||
| <t> | ||||
| 1. The MACValue_seqnum value is generated using the MAC | ||||
| algorithm (see <xref target="MAC"/>) similar to Section 6.2.3.1 of <xref target= | ||||
| "RFC5246"/> | ||||
| except the sender_write_MAC_key is replaced by the K_MAC | ||||
| _seqnum key: | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| MACValue_seqnum = MAC(K_MAC_seqnum, STR_8(seqnum | ||||
| ) | type_seqnum | version_seqnum | length_seqnum | fragment_seqnum), | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where type_seqnum, version_seqnum, length_seqnum, fragme | ||||
| nt_seqnum are the | ||||
| TLSCompressed.type, TLSCompressed.version, TLSCompressed | ||||
| .length and | ||||
| TLSCompressed.fragment values of the record with the seq | ||||
| num sequence number. | ||||
| </t> | ||||
| <t> | ||||
| 2. The entire data with the MACValue is encrypted with t | ||||
| he ENC stream cipher (see <xref target="EncryptionAlgorithm"/>): | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| ENCValue_seqnum = ENC(K_ENC_seqnum, IV_seqnum, f | ||||
| ragment_seqnum | MACValue_seqnum), | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where fragment_seqnum is the TLSCompressed.fragment valu | ||||
| e of the record with the seqnum sequence number. | ||||
| </t> | ||||
| <t> | ||||
| 3. The fields of the GenericStreamCipher structure (see | ||||
| section 6.2.3.1 of <xref target="RFC5246"/>) for the TLSCiphertext.fragment valu | ||||
| e are defined by the ENCValue_seqnum value: | ||||
| </t> | ||||
| <t> | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| TLSCiphertext.fragment.content = ENCValue_seqnum | ||||
| [1..length_seqnum], | ||||
| </t> | ||||
| <t> | ||||
| TLSCiphertext.fragment.MAC = ENCValue_seqnum[le | ||||
| ngth_seqnum + 1..length_seqnum + mac_length], | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where length_seqnum is the TLSCompressed.length value of | ||||
| the record with the seqnum sequence number, mac_length is equal to 16 for the T | ||||
| LS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC cipher suite and | ||||
| 8 for the TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC cipher | ||||
| suite. | ||||
| </t> | ||||
| <t> | ||||
| Note that the CTR_OMAC cipher suites use the authenticat | ||||
| e-then-encrypt method (see Appendix F.4 of <xref target="RFC5246"/>). Since the | ||||
| se ciphers are functioning as stream ciphers, the authenticate-then-encrypt meth | ||||
| od is | ||||
| secure, and, as specified by <xref target="RFC7366"/>, t | ||||
| he server that selects the CTR_OMAC ciphers MUST NOT send an encrypt_then_mac ex | ||||
| tension to the client. | ||||
| </t> | ||||
| </section> | K_MAC_seqnum in B_k; and | |||
| <section anchor ="TLSCiphertext_CNT_IMIT" title="CNT_IMIT"> | IV_seqnum in B_{n/2}. | |||
| <t> | </sourcecode> | |||
| In case of the CNT_IMIT cipher suite the record key mate | <t indent="0" pn="section-4.1.1-3"> | |||
| rial is equal to the connection key material and consists of: | The K_ENC_seqnum and K_MAC_seqnum values are calculated | |||
| </t> | using the TLSTREE function defined in <xref target="TLSTREE" format="default" se | |||
| <t> | ctionFormat="of" derivedContent="Section 8.1"/>, | |||
| <list style="symbols"> | the connection key material, and the seqnum sequence num | |||
| <t> | ber . IV_seqnum is calculated by adding the seqnum value to sender_write_IV modu | |||
| sender_write_key in B_k; | lo 2<sup>(n/2)*8</sup>: | |||
| </t> | </t> | |||
| <t> | <sourcecode name="" type="" markers="false" pn="section-4.1.1-4"> | |||
| sender_write_MAC_key in B_k; | K_ENC_seqnum = TLSTREE(sender_write_key, seqnum); | |||
| </t> | ||||
| <t> | ||||
| sender_write_IV in B_n. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The TLSCiphertext.fragment that corresponds to the seqnu | ||||
| m sequence number is calculated as follows: | ||||
| </t> | ||||
| <t> | ||||
| 1. The MACValue_seqnum value is generated by the MAC alg | ||||
| orithm (see <xref target="MAC"/>) as follows: | ||||
| </t> | ||||
| <t> | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| MACValue_seqnum = MAC(sender_write_MAC_key, STR_ | ||||
| 8(0) | type_0 | version_0 | length_0 | fragment_0 | ... | STR_8(seqnum) | type_s | ||||
| eqnum | version_seqnum | length_seqnum | fragment_seqnum), | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where type_i, version_i, length_i, fragment_i, i in {0, | ||||
| ... , seqnum}, are the | ||||
| TLSCompressed.type, TLSCompressed.version, TLSCompressed | ||||
| .length and TLSCompressed.fragment values of the record with the i sequence numb | ||||
| er. | ||||
| </t> | ||||
| <t> | ||||
| Due to the use of the CBC-MAC based mode (see <xref targ | ||||
| et="MAC"/>) producing the | ||||
| MACValue_seqnum value does not mean processing all previ | ||||
| ous records. It is enough to store only an | ||||
| intermediate internal state of the MAC algorithm. | ||||
| </t> | ||||
| <t> | ||||
| 2. The entire data with the MACValue is encrypted with t | ||||
| he ENC stream cipher (see <xref target="EncryptionAlgorithm"/>): | ||||
| </t> | ||||
| <t> | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| ENCValue_0 | ... | ENCValue_seqnum = ENC(sender_ | ||||
| write_key, sender_write_IV, fragment_0 | MACValue_0 | ... | fragment_seqnum | MA | ||||
| CValue_seqnum), | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where the length of the byte string ENCValue_i in bytes | ||||
| is equal to the length of the byte string (fragment_i | MACValue_i) in bytes, i | ||||
| in {0, ... , seqnum}. | ||||
| </t> | ||||
| <t> | ||||
| Due to the use of the stream cipher (see <xref target="E | ||||
| ncryptionAlgorithm"/>) producing the | ||||
| ENCValue_seqnum value does not mean processing all previ | ||||
| ous records. It is enough to store only an intermediate | ||||
| internal state of the ENC stream cipher. | ||||
| </t> | ||||
| <t> | ||||
| 3. The fields of the GenericStreamCipher structure (see | ||||
| section 6.2.3.1 of <xref target="RFC5246"/>) for the TLSCiphertext.fragment valu | ||||
| e are defined by the ENCValue_seqnum value: | ||||
| </t> | ||||
| <t> | ||||
| <list style = "empty"> | ||||
| <t> | ||||
| TLSCiphertext.fragment.content = ENCValue_seqnum | ||||
| [1..length_seqnum], | ||||
| </t> | ||||
| <t> | ||||
| TLSCiphertext.fragment.MAC = ENCValue_seqnum[le | ||||
| ngth_seqnum + 1..length_seqnum + mac_length], | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| where length_seqnum is the TLSCompressed.length value of | ||||
| the record with the seqnum sequence number, mac_length is equal to 4. | ||||
| </t> | ||||
| <t> | ||||
| Note that the CNT_IMIT cipher suite uses the authenticat | ||||
| e-then-encrypt method (see Appendix F.4 of <xref target="RFC5246"/>). Since thi | ||||
| s cipher is functioning as a stream cipher, the authenticate-then-encrypt method | ||||
| is secure, and, as specified by <xref target="RFC7366"/>, | ||||
| the server that selects the CNT_IMIT cipher MUST NOT sen | ||||
| d an encrypt_then_mac extension to the client. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="Key Exchange and Authentication"> | K_MAC_seqnum = TLSTREE(sender_write_MAC_key, seqnum); and | |||
| <t> | ||||
| The cipher suites defined in this document use a key encapsu | ||||
| lation mechanism based on Diffie-Hellman to share the TLS premaster secret. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> <![CDATA[ | ||||
| Client Server | ||||
| ClientHello --------> | IV_seqnum = STR_{n/2}((INT(sender_write_IV) + seqnum) | |||
| ServerHello | mod 2^({(n/2)*8}). | |||
| Certificate | </sourcecode> | |||
| CertificateRequest* | <t indent="0" pn="section-4.1.1-5"> | |||
| <-------- ServerHelloDone | The TLSCiphertext.fragment that corresponds to the seqnum sequence number is ca | |||
| Certificate* | lculated as follows: | |||
| ClientKeyExchange | </t> | |||
| CertificateVerify* | <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section- | |||
| [ChangeCipherSpec] | 4.1.1-6"> | |||
| Finished --------> | <li pn="section-4.1.1-6.1" derivedCounter="1."> | |||
| [ChangeCipherSpec] | <t indent="0" pn="section-4.1.1-6.1.1">The MACValue_seqnum value i | |||
| <-------- Finished | s generated using the Message Authentication Code (MAC) algorithm (see <xref tar | |||
| Application Data <-------> Application Data | get="MAC" format="default" sectionFormat="of" derivedContent="Section 4.3.2"/>) | |||
| similar to <xref target="RFC5246" section="6.2.3.1" sectionFormat="of" format="d | ||||
| efault" derivedLink="https://rfc-editor.org/rfc/rfc5246#section-6.2.3.1" derived | ||||
| Content="RFC5246"/>, except the sender_write_MAC_key is replaced by the K_MAC_se | ||||
| qnum key:</t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.1-6.1. | ||||
| 2"> | ||||
| MACValue_seqnum = MAC(K_MAC_seqnum, STR_8(seqnum) | type_seqnum | | ||||
| version_seqnum | length_seqnum | fragment_seqnum), | ||||
| </sourcecode> | ||||
| <t indent="0" pn="section-4.1.1-6.1.3"> | ||||
| where type_seqnum, version_seqnum, length_seqnum, and fragment_seqnum are the TL | ||||
| SCompressed.type, TLSCompressed.version, TLSCompressed.length, and TLSCompressed | ||||
| .fragment values of the record with the seqnum sequence number. | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-4.1.1-6.2" derivedCounter="2."> | ||||
| <t indent="0" pn="section-4.1.1-6.2.1"> | ||||
| The entire data with the MACValue is encrypted with the ENC stream cipher (see < | ||||
| xref target="EncryptionAlgorithm" format="default" sectionFormat="of" derivedCon | ||||
| tent="Section 4.3.3"/>): | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.1-6.2. | ||||
| 2"> | ||||
| ENCValue_seqnum = ENC(K_ENC_seqnum, IV_seqnum, fragment_seqnum | | ||||
| MACValue_seqnum), | ||||
| </sourcecode> | ||||
| <t indent="0" pn="section-4.1.1-6.2.3"> | ||||
| where fragment_seqnum is the TLSCompressed.fragment value of the record with the | ||||
| seqnum sequence number. | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-4.1.1-6.3" derivedCounter="3."> | ||||
| <t indent="0" pn="section-4.1.1-6.3.1"> | ||||
| The fields of the GenericStreamCipher structure (see <xref target="RFC5246" sect | ||||
| ionFormat="of" section="6.2.3.1" format="default" derivedLink="https://rfc-edito | ||||
| r.org/rfc/rfc5246#section-6.2.3.1" derivedContent="RFC5246"/>) for the TLSCipher | ||||
| text.fragment value are defined by the ENCValue_seqnum value: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.1-6.3. | ||||
| 2"> | ||||
| TLSCiphertext.fragment.content = | ||||
| ENCValue_seqnum[1..length_seqnum], | ||||
| Figure 1: Message flow for a full handshake. | TLSCiphertext.fragment.MAC = ENCValue_seqnum[length_seqnum + | |||
| 1..length_seqnum + mac_length], | ||||
| </sourcecode> | ||||
| <t indent="0" pn="section-4.1.1-6.3.3"> | ||||
| where length_seqnum is the TLSCompressed.length value of | ||||
| the record with the seqnum sequence number and mac_length is equal to 16 for th | ||||
| e TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC cipher suite and 8 for the TLS_GO | ||||
| STR341112_256_WITH_MAGMA_CTR_OMAC cipher suite. | ||||
| </t> | ||||
| </li> | ||||
| </ol> | ||||
| <t indent="0" pn="section-4.1.1-7"> | ||||
| Note that the CTR_OMAC cipher suites use the authenticat | ||||
| e-then-encrypt method (see <xref target="RFC5246" sectionFormat="of" section="F. | ||||
| 4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5246#appendix-F.4 | ||||
| " derivedContent="RFC5246"/>). Since these ciphers are functioning as stream cip | ||||
| hers, the authenticate-then-encrypt method is | ||||
| secure, and as specified by <xref target="RFC7366" forma | ||||
| t="default" sectionFormat="of" derivedContent="RFC7366"/>, the server that selec | ||||
| ts the CTR_OMAC ciphers <bcp14>MUST NOT</bcp14> send an encrypt_then_mac extensi | ||||
| on to the client. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="TLSCiphertext_CNT_IMIT" numbered="true" toc="include" r | ||||
| emoveInRFC="false" pn="section-4.1.2"> | ||||
| <name slugifiedName="name-cnt_imit">CNT_IMIT</name> | ||||
| <t indent="0" pn="section-4.1.2-1"> | ||||
| In the CNT_IMIT cipher suite, the record key material is | ||||
| equal to the connection key material and consists of: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.2-2"> | ||||
| sender_write_key in B_k; | ||||
| * Indicates optional messages that are sent for | sender_write_MAC_key in B_k; and | |||
| the client authentication. | ||||
| Note: To help avoid pipeline stalls, ChangeCipherSpec is an | sender_write_IV in B_n. | |||
| independent TLS protocol content type, and is not actually | </sourcecode> | |||
| a TLS handshake message. | <t indent="0" pn="section-4.1.2-3"> | |||
| The TLSCiphertext.fragment that corresponds to the seqnum sequence number is cal | ||||
| culated as follows: | ||||
| </t> | ||||
| <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section- | ||||
| 4.1.2-4"> | ||||
| <li pn="section-4.1.2-4.1" derivedCounter="1."> | ||||
| <t indent="0" pn="section-4.1.2-4.1.1"> | ||||
| The MACValue_seqnum value is generated by the MAC algorithm (see <xref target="M | ||||
| AC" format="default" sectionFormat="of" derivedContent="Section 4.3.2"/>) as fol | ||||
| lows: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.2-4.1. | ||||
| 2"> | ||||
| MACValue_seqnum = MAC(sender_write_MAC_key, STR_8(0) | type_0 | | ||||
| version_0 | length_0 | fragment_0 | ... | STR_8(seqnum) | | ||||
| type_seqnum | version_seqnum | length_seqnum | fragment_seqnum), | ||||
| </sourcecode> | ||||
| <t indent="0" pn="section-4.1.2-4.1.3"> | ||||
| where type_i, version_i, length_i, fragment_i, and i in {0, ... , seqnum} are th | ||||
| e | ||||
| TLSCompressed.type, TLSCompressed.version, TLSCompressed | ||||
| .length, and TLSCompressed.fragment values of the record with the i sequence num | ||||
| ber. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.1.2-4.1.4"> | ||||
| Due to the use of the mode based on Cipher Block Chaining MAC (CBC-MAC) (see <xr | ||||
| ef target="MAC" format="default" sectionFormat="of" derivedContent="Section 4.3. | ||||
| 2"/>), producing the | ||||
| MACValue_seqnum value does not mean processing all previ | ||||
| ous records. It is enough to store only an | ||||
| intermediate internal state of the MAC algorithm. | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-4.1.2-4.2" derivedCounter="2."> | ||||
| <t indent="0" pn="section-4.1.2-4.2.1"> | ||||
| The entire data with the MACValue is encrypted with the ENC stream ci | ||||
| pher (see <xref target="EncryptionAlgorithm" format="default" sectionFormat="of" | ||||
| derivedContent="Section 4.3.3"/>): | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.2-4.2. | ||||
| 2"> | ||||
| ENCValue_0 | ... | ENCValue_seqnum = ENC(sender_write_key, | ||||
| sender_write_IV, fragment_0 | MACValue_0 | ... | fragment_seqnum | | ||||
| MACValue_seqnum), | ||||
| </sourcecode> | ||||
| <t indent="0" pn="section-4.1.2-4.2.3"> | ||||
| where the length of the byte string ENCValue_i in bytes | ||||
| is equal to the length of the byte string (fragment_i | MACValue_i) in bytes and | ||||
| i in {0, ... , seqnum}. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.1.2-4.2.4"> | ||||
| Due to the use of the stream cipher (see <xref target="E | ||||
| ncryptionAlgorithm" format="default" sectionFormat="of" derivedContent="Section | ||||
| 4.3.3"/>), producing the | ||||
| ENCValue_seqnum value does not mean processing all previ | ||||
| ous records. It is enough to store only an intermediate | ||||
| internal state of the ENC stream cipher. | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-4.1.2-4.3" derivedCounter="3."> | ||||
| <t indent="0" pn="section-4.1.2-4.3.1"> | ||||
| The fields of the GenericStreamCipher structure (see <xref target="RFC5246" sect | ||||
| ionFormat="of" section="6.2.3.1" format="default" derivedLink="https://rfc-edito | ||||
| r.org/rfc/rfc5246#section-6.2.3.1" derivedContent="RFC5246"/>) for the TLSCipher | ||||
| text.fragment value are defined by the ENCValue_seqnum value: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.1.2-4.3. | ||||
| 2"> | ||||
| TLSCiphertext.fragment.content = | ||||
| ENCValue_seqnum[1..length_seqnum], | ||||
| ]]></artwork> | TLSCiphertext.fragment.MAC = ENCValue_seqnum[length_seqnum + | |||
| </figure> | 1..length_seqnum + mac_length], | |||
| </t> | </sourcecode> | |||
| <t> | <t indent="0" pn="section-4.1.2-4.3.3"> | |||
| Figure 1 shows all messages involved in the TLS key establis | where length_seqnum is the TLSCompressed.length value of | |||
| hment protocol (full handshake). | the record with the seqnum sequence number, and mac_length is equal to 4. | |||
| A ServerKeyExchange MUST NOT be sent (the server's certifica | </t> | |||
| te | </li> | |||
| contains enough data to allow client to exchange the premast | </ol> | |||
| er secret). | <t indent="0" pn="section-4.1.2-5"> | |||
| </t> | Note that the CNT_IMIT cipher suite uses the authenticat | |||
| <t> | e-then-encrypt method (see <xref target="RFC5246" sectionFormat="of" section="F. | |||
| The server side of the channel is always authenticated; the | 4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5246#appendix-F.4 | |||
| client side is optionally authenticated. | " derivedContent="RFC5246"/>). Since this cipher is functioning as a stream ciph | |||
| The server is authenticated by proving that it knows the pre | er, the authenticate-then-encrypt method is secure, and as specified by <xref ta | |||
| master secret that is encrypted with the public key Q_s from the server's certif | rget="RFC7366" format="default" sectionFormat="of" derivedContent="RFC7366"/>, | |||
| icate. | the server that selects the CNT_IMIT cipher <bcp14>MUST | |||
| The client is authenticated via its signature over the hands | NOT</bcp14> send an encrypt_then_mac extension to the client. | |||
| hake transcript. | </t> | |||
| </t> | </section> | |||
| <t> | </section> | |||
| In general the key exchange process for both CTR_OMAC and CN | <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2 | |||
| T_IMIT cipher suites consists of the following steps: | "> | |||
| <list style="numbers"> | <name slugifiedName="name-key-exchange-and-authentica">Key Exchange and | |||
| <t> | Authentication</name> | |||
| <t indent="0" pn="section-4.2-1"> | ||||
| The cipher suites defined in this document use a key encapsulation m | ||||
| echanism based on Diffie-Hellman to share the TLS preliminary secret. | ||||
| </t> | ||||
| <figure anchor="fig1" align="left" suppress-title="false" pn="figure-1"> | ||||
| <name slugifiedName="name-message-flow-for-a-full-han">Message Flow fo | ||||
| r a Full Handshake</name> | ||||
| <artwork name="" type="tls-presentation" alt="" align="left" pn="secti | ||||
| on-4.2-2.1"> | ||||
| Client Server | ||||
| ClientHello --------> | ||||
| ServerHello | ||||
| Certificate | ||||
| CertificateRequest* | ||||
| <-------- ServerHelloDone | ||||
| Certificate* | ||||
| ClientKeyExchange | ||||
| CertificateVerify* | ||||
| [ChangeCipherSpec] | ||||
| Finished --------> | ||||
| [ChangeCipherSpec] | ||||
| <-------- Finished | ||||
| Application Data <-------> Application Data | ||||
| </artwork> | ||||
| </figure> | ||||
| <t indent="0" pn="section-4.2-3">Notes for <xref target="fig1" format="d | ||||
| efault" sectionFormat="of" derivedContent="Figure 1"/>:</t> | ||||
| <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-4. | ||||
| 2-4"> | ||||
| <li pn="section-4.2-4.1" derivedCounter="1."> "*" indicates optional m | ||||
| essages that are sent for | ||||
| the client authentication.</li> | ||||
| <li pn="section-4.2-4.2" derivedCounter="2.">To help avoid pipeline st | ||||
| alls, ChangeCipherSpec is an | ||||
| independent TLS protocol content type and is not actually | ||||
| a TLS handshake message.</li> | ||||
| </ol> | ||||
| <t indent="0" pn="section-4.2-5"><xref target="fig1" format="default" se | ||||
| ctionFormat="of" derivedContent="Figure 1"/> shows all messages involved in the | ||||
| TLS key establishment protocol (full handshake). | ||||
| A ServerKeyExchange <bcp14>MUST NOT</bcp14> be sent (the ser | ||||
| ver's certificate | ||||
| contains enough data to allow the client to exchange the pre | ||||
| liminary secret). | ||||
| </t> | ||||
| <t indent="0" pn="section-4.2-6"> | ||||
| The server side of the channel is always authenticated; the client s | ||||
| ide is optionally authenticated. | ||||
| The server is authenticated by proving that it knows the preliminary | ||||
| secret that is encrypted with the public key Q_s from the server's certificate. | ||||
| The client is authenticated via its signature over the handshake tra | ||||
| nscript. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.2-7"> | ||||
| In general, the key exchange process for both the CTR_OMAC a | ||||
| nd CNT_IMIT cipher suites consists of the following steps: | ||||
| </t> | ||||
| <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4. | ||||
| 2-8"><li pn="section-4.2-8.1" derivedCounter="1."> | ||||
| The client generates the ephemeral key pair (d_eph, Q_eph) that corresponds to the server's public key Q_s stored in its certificate . | The client generates the ephemeral key pair (d_eph, Q_eph) that corresponds to the server's public key Q_s stored in its certificate . | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2-8.2" derivedCounter="2."> | |||
| The client generates the premaster secret PS. The PS | The client generates the preliminary secret PS. The | |||
| value is chosen from B_32 at random. | PS value is chosen from B_32 at random. | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2-8.3" derivedCounter="3."> | |||
| Using d_eph and Q_s the client generates the export | Using d_eph and Q_s, the client generates the export | |||
| key material (see <xref target="CTRkeygen"/> and <xref target="CNTkeygen"/>) | key material (see Sections <xref target="CTRkeygen" format="counter" sectionFor | |||
| for the particular key export algorithm (see <xref t | mat="of" derivedContent="4.2.4.1"/> and <xref target="CNTkeygen" format="counter | |||
| arget="KExpImp15"/> and <xref target="KExpImp28147"/>) | " sectionFormat="of" derivedContent="4.2.4.2"/>) | |||
| for the particular key export algorithm (see Section | ||||
| s <xref target="KExpImp15" format="counter" sectionFormat="of" derivedContent="8 | ||||
| .2.1"/> and <xref target="KExpImp28147" format="counter" sectionFormat="of" deri | ||||
| vedContent="8.2.2"/>) | ||||
| to generate the export representation PSExp of the P S value. | to generate the export representation PSExp of the P S value. | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2-8.4" derivedCounter="4."> | |||
| The client sends its ephemeral public key Q_eph and PSExp value in the ClientKeyExchange message. | The client sends its ephemeral public key Q_eph and PSExp value in the ClientKeyExchange message. | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2-8.5" derivedCounter="5."> | |||
| Using its private key d_s the server generates the i | Using its private key d_s, the server generates the | |||
| mport key material (see <xref target="CTRkeygen"/> and <xref target="CNTkeygen"/ | import key material (see Sections <xref target="CTRkeygen" format="counter" sect | |||
| >) | ionFormat="of" derivedContent="4.2.4.1"/> and <xref target="CNTkeygen" format="c | |||
| for the particular key import algorithm (see <xref t | ounter" sectionFormat="of" derivedContent="4.2.4.2"/>) | |||
| arget="KExpImp15"/> and <xref target="KExpImp28147"/>) | for the particular key import algorithm (see Section | |||
| to extract the premaster secret PS from the export r | s <xref target="KExpImp15" format="counter" sectionFormat="of" derivedContent="8 | |||
| epresentation PSExp. | .2.1"/> and <xref target="KExpImp28147" format="counter" sectionFormat="of" deri | |||
| </t> | vedContent="8.2.2"/>) | |||
| </list> | to extract the preliminary secret PS from the export | |||
| </t> | representation PSExp. | |||
| </li> | ||||
| <t> | </ol> | |||
| <t indent="0" pn="section-4.2-9"> | ||||
| This section specifies the data structures and computations used by the profile of TLS 1.2 with GOST algorithms. | This section specifies the data structures and computations used by the profile of TLS 1.2 with GOST algorithms. | |||
| The specifications for the ClientHello, ServerHello, server Certificate, CertificateRequest, ClientKeyExchange, CertificateVerify and | The specifications for the ClientHello, ServerHello, Server Certificate, CertificateRequest, ClientKeyExchange, CertificateVerify, and | |||
| Finished handshake messages are described in further detail below. | Finished handshake messages are described in further detail below. | |||
| </t> | </t> | |||
| <section anchor="Hello" title="Hello Messages"> | <section anchor="Hello" numbered="true" toc="include" removeInRFC="false | |||
| <t> | " pn="section-4.2.1"> | |||
| The ClientHello message is generated in accordance with | <name slugifiedName="name-hello-messages">Hello Messages</name> | |||
| Section 7.4.1.2 of <xref target="RFC5246"/> and must meet the following requirem | <t indent="0" pn="section-4.2.1-1"> | |||
| ents: | The ClientHello message is generated in accordance with | |||
| <list style="symbols"> | <xref target="RFC5246" section="7.4.1.2" sectionFormat="of" format="default" der | |||
| <t> | ivedLink="https://rfc-editor.org/rfc/rfc5246#section-7.4.1.2" derivedContent="RF | |||
| The ClientHello.compression_methods field MUST c | C5246"/> and must meet the following requirements: | |||
| ontain exactly one byte, set to zero, which corresponds to the "null" compressio | </t> | |||
| n method. | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| </t> | -4.2.1-2"> | |||
| <t> | <li pn="section-4.2.1-2.1"> | |||
| The ClientHello.extensions field MUST contain th | The ClientHello.compression_methods field <bcp14 | |||
| e signature_algorithms extension (see <xref target="RFC5246"/>). | >MUST</bcp14> contain exactly one byte, set to zero, which corresponds to the "n | |||
| <vspace/> | ull" compression method. | |||
| <vspace/> | </li> | |||
| If the negotiated cipher suite is one of CTR_OMA | <li pn="section-4.2.1-2.2"> | |||
| C/CTR_IMIT and the signature_algorithms extension in the ClientHello message doe | <t indent="0" pn="section-4.2.1-2.2.1"> | |||
| s not contain the values defined in <xref target="SAR"/>, | The ClientHello.extensions field <bcp14>MUST</bc | |||
| the server MUST either abort the connection or i | p14> contain the signature_algorithms extension (see <xref target="RFC5246" form | |||
| gnore this extension and behave as if | at="default" sectionFormat="of" derivedContent="RFC5246"/>). | |||
| </t> | ||||
| <t indent="0" pn="section-4.2.1-2.2.2"> | ||||
| If the negotiated cipher suite is one of CTR_OMA | ||||
| C/CTR_IMIT and the signature_algorithms extension in the ClientHello message doe | ||||
| s not contain the values defined in <xref target="SAR" format="default" sectionF | ||||
| ormat="of" derivedContent="Section 5"/>, | ||||
| the server <bcp14>MUST</bcp14> either abort the | ||||
| connection or ignore this extension and behave as if | ||||
| the client had sent the signature_algorithms ext ension with the values {8, 64} and {8, 65}. | the client had sent the signature_algorithms ext ension with the values {8, 64} and {8, 65}. | |||
| </t> | </t> | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | <t indent="0" pn="section-4.2.1-3"> | |||
| The ServerHello message is generated in accordance with | The ServerHello message is generated in accordance with | |||
| Section 7.4.1.3 of <xref target="RFC5246"/> and must meet the following requirem | <xref target="RFC5246" section="7.4.1.3" sectionFormat="of" format="default" der | |||
| ents: | ivedLink="https://rfc-editor.org/rfc/rfc5246#section-7.4.1.3" derivedContent="RF | |||
| <list style="symbols"> | C5246"/> and must meet the following requirements: | |||
| <t> | </t> | |||
| The ServerHello.compression_method field MUST co | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| ntain exactly one byte, set to zero, which corresponds to the "null" compression | -4.2.1-4"> | |||
| method. | <li pn="section-4.2.1-4.1"> | |||
| </t> | The ServerHello.compression_method field <bcp14> | |||
| <t> | MUST</bcp14> contain exactly one byte, set to zero, which corresponds to the "nu | |||
| The ServerHello.extensions field MUST NOT contai | ll" compression method. | |||
| n the encrypt_then_mac extension (see <xref target="RFC7366"/>). | </li> | |||
| </t> | <li pn="section-4.2.1-4.2"> | |||
| </list> | The ServerHello.extensions field <bcp14>MUST NOT | |||
| </t> | </bcp14> contain the encrypt_then_mac extension (see <xref target="RFC7366" form | |||
| </section> | at="default" sectionFormat="of" derivedContent="RFC7366"/>). | |||
| <section title="Server Certificate"> | </li> | |||
| <t> | </ul> | |||
| This message is used to authentically convey the server' | </section> | |||
| s | <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | |||
| public key Q_s to the client and is generated in accorda | .2.2"> | |||
| nce with Section 7.4.2 of <xref target="RFC5246"/>. | <name slugifiedName="name-server-certificate">Server Certificate</name | |||
| </t> | > | |||
| <t> | <t indent="0" pn="section-4.2.2-1"> This message is used to authentica | |||
| Upon receiving this message the client validates the cer | lly convey the server's | |||
| tificate chain, extracts the server's | public key Q_s to the client and is generated in accorda | |||
| nce with <xref target="RFC5246" section="7.4.2" sectionFormat="of" format="defau | ||||
| lt" derivedLink="https://rfc-editor.org/rfc/rfc5246#section-7.4.2" derivedConten | ||||
| t="RFC5246"/>.</t> | ||||
| <t indent="0" pn="section-4.2.2-2"> Upon receiving this message, the c | ||||
| lient validates the certificate chain, extracts the server's | ||||
| public key, and checks that the key type is appropriate for the | public key, and checks that the key type is appropriate for the | |||
| negotiated key exchange algorithm. (A possible reason fo r a fatal | negotiated key exchange algorithm. (A possible reason fo r a fatal | |||
| handshake failure is that the client's capabilities for handling | handshake failure is that the client's capabilities for handling | |||
| elliptic curves and point formats are exceeded). | elliptic curves and point formats are exceeded).</t> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | |||
| <section title="CertificateRequest"> | .2.3"> | |||
| <t> | <name slugifiedName="name-certificaterequest">CertificateRequest</name | |||
| This message is sent by the server when requesting clien | > | |||
| t authentication and is generated in accordance with Section 7.4.4 of <xref targ | <t indent="0" pn="section-4.2.3-1"> This message is sent by the server | |||
| et="RFC5246"/>. | when requesting client authentication and is generated in accordance with <xref | |||
| </t> | target="RFC5246" section="7.4.4" sectionFormat="of" format="default" derivedLin | |||
| <t> | k="https://rfc-editor.org/rfc/rfc5246#section-7.4.4" derivedContent="RFC5246"/>. | |||
| If the CTR_OMAC or CNT_IMIT cipher suite is negotiated, | </t> | |||
| the CertificateRequest message MUST meet the following requirements: | <t indent="0" pn="section-4.2.3-2"> | |||
| <list style="symbols"> | ||||
| <t> | ||||
| the CertificateRequest.supported_signature_algor | ||||
| ithm field MUST contain only signature/hash algorithm pairs with the values {8, | ||||
| 64} or {8, 65} defined in <xref target="SAR"/>; | ||||
| </t> | ||||
| <t> | ||||
| the CertificateRequest.certificate_types field M | ||||
| UST contain only the gost_sign256 (67) or gost_sign512 (68) values defined in <x | ||||
| ref target="CTIR"/>. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="ClientKeyExchange"> | If the CTR_OMAC or CNT_IMIT cipher suite is negotiated, | |||
| <t> | the CertificateRequest message <bcp14>MUST</bcp14> meet the following requiremen | |||
| The ClientKeyExchange message is defined as follows. | ts: | |||
| </t> | </t> | |||
| <t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <figure> | -4.2.3-3"> | |||
| <artwork> | <li pn="section-4.2.3-3.1"> | |||
| <![CDATA[ | the CertificateRequest.supported_signature_algor | |||
| ithm field <bcp14>MUST</bcp14> contain only signature/hash algorithm pairs with | ||||
| the values {8, 64} or {8, 65} defined in <xref target="SAR" format="default" sec | ||||
| tionFormat="of" derivedContent="Section 5"/>; | ||||
| </li> | ||||
| <li pn="section-4.2.3-3.2"> | ||||
| the CertificateRequest.certificate_types field < | ||||
| bcp14>MUST</bcp14> contain only the gost_sign256 (67) or gost_sign512 (68) value | ||||
| s defined in <xref target="CTIR" format="default" sectionFormat="of" derivedCont | ||||
| ent="Section 7"/>. | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
| .2.4"> | ||||
| <name slugifiedName="name-clientkeyexchange">ClientKeyExchange</name> | ||||
| <t indent="0" pn="section-4.2.4-1"> | ||||
| The ClientKeyExchange message is defined as follows: | ||||
| </t> | ||||
| <sourcecode name="" type="asn.1" markers="false" pn="section-4.2.4-2"> | ||||
| enum { vko_kdf_gost, vko_gost } KeyExchangeAlgorithm; | enum { vko_kdf_gost, vko_gost } KeyExchangeAlgorithm; | |||
| struct { | struct { | |||
| select (KeyExchangeAlgorithm) { | select (KeyExchangeAlgorithm) { | |||
| case vko_kdf_gost: GostKeyTransport; | case vko_kdf_gost: GostKeyTransport; | |||
| case vko_gost: TLSGostKeyTransportBlob; | case vko_gost: TLSGostKeyTransportBlob; | |||
| } exchange_keys; | } exchange_keys; | |||
| } ClientKeyExchange; | } ClientKeyExchange; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.2.4-3"> | |||
| </figure> | The body of the ClientKeyExchange message consists of a | |||
| </t> | GostKeyTransport/TLSGostKeyTransportBlob structure that contains an export repre | |||
| <t> | sentation of the preliminary secret PS. | |||
| The body of the ClientKeyExchange message consists of a | </t> | |||
| GostKeyTransport/TLSGostKeyTransportBlob structure that contains an export repre | <t indent="0" pn="section-4.2.4-4"> | |||
| sentation of the premaster secret PS. | The GostKeyTransport structure corresponds to the CTR_OM | |||
| </t> | AC cipher suites and is described in <xref target="CTRkeygen" format="default" s | |||
| <t> | ectionFormat="of" derivedContent="Section 4.2.4.1"/>, and | |||
| The GostKeyTransport structure corresponds to the CTR_OM | the TLSGostKeyTransportBlob structure corresponds to the | |||
| AC cipher suites and is described in <xref target="CTRkeygen"/> and | CNT_IMIT cipher suite and is described in <xref target="CNTkeygen" format="defa | |||
| the TLSGostKeyTransportBlob structure corresponds to CNT | ult" sectionFormat="of" derivedContent="Section 4.2.4.2"/>. | |||
| _IMIT cipher suite and is described in <xref target="CNTkeygen"/>. | </t> | |||
| </t> | <t indent="0" pn="section-4.2.4-5"> | |||
| <t> | ||||
| The DER encoding rules are used to encode the GostKeyTra nsport and the TLSGostKeyTransportBlob structures. | The DER encoding rules are used to encode the GostKeyTra nsport and the TLSGostKeyTransportBlob structures. | |||
| </t> | </t> | |||
| <section anchor ="CTRkeygen" title ="CTR_OMAC"> | <section anchor="CTRkeygen" numbered="true" toc="include" removeInRFC= | |||
| <t> | "false" pn="section-4.2.4.1"> | |||
| In case of the CTR_OMAC cipher suites the body of th | <name slugifiedName="name-ctr_omac-2">CTR_OMAC</name> | |||
| e ClientKeyExchange message consists of the GostKeyTransport structure that is d | <t indent="0" pn="section-4.2.4.1-1"> | |||
| efined bellow. | In the CTR_OMAC cipher suites, the body of the Clien | |||
| </t> | tKeyExchange message consists of the GostKeyTransport structure that is defined | |||
| <t> | below. | |||
| </t> | ||||
| <t indent="0" pn="section-4.2.4.1-2"> | ||||
| The client generates the ClientKeyExchange message i n accordance with the following steps: | The client generates the ClientKeyExchange message i n accordance with the following steps: | |||
| </t> | </t> | |||
| <t> | <ol indent="adaptive" spacing="normal" start="1" type="1" pn="sectio | |||
| 1. Generates the ephemeral key pair (Q_eph, d_eph), | n-4.2.4.1-3"> | |||
| where: | <li pn="section-4.2.4.1-3.1" derivedCounter="1."> | |||
| <list style="empty"> | <t indent="0" pn="section-4.2.4.1-3.1.1"> | |||
| <t> | Generates the ephemeral key pair (Q_eph, d_eph), where: | |||
| d_eph is chosen from {1, ... , q_s - 1} at r | </t> | |||
| andom; | <sourcecode name="" type="" markers="false" pn="section-4.2.4.1- | |||
| </t> | 3.1.2"> | |||
| <t> | d_eph is chosen from {1, ... , q_s - 1} at random; | |||
| Q_eph = d_eph * P_s. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| 2. Generates the premaster secret PS, where PS is ch | ||||
| osen from B_32 at random. | ||||
| </t> | ||||
| <t> | ||||
| 3. Generates export keys (K_EXP_MAC and K_EXP_ENC) u | ||||
| sing the KEG algorithm defined in <xref target="KEG"/>: | ||||
| <list style="empty"> | ||||
| <t> | ||||
| H = HASH(r_c | r_s); | ||||
| </t> | ||||
| <t> | ||||
| K_EXP_MAC | K_EXP_ENC = KEG(d_eph, Q_s, H). | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| 4. Generates an export representation PSExp of the p | ||||
| remaster secret PS using the KExp15 algorithm defined in <xref target ="KExpImp1 | ||||
| 5"/>: | ||||
| <list style="empty"> | ||||
| <t> | ||||
| IV = H[25..24 + n / 2]; | ||||
| </t> | ||||
| <t> | ||||
| PSExp = KExp15(PS, K_EXP_MAC, K_EXP_ENC, IV) | ||||
| . | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| 5. Generates the ClientKeyExchange message using the | ||||
| GostKeyTransport structure that is defined as follows: | ||||
| </t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| Q_eph = d_eph * P_s. | ||||
| </sourcecode> | ||||
| </li> | ||||
| <li pn="section-4.2.4.1-3.2" derivedCounter="2."> | ||||
| <t indent="0" pn="section-4.2.4.1-3.2.1"> | ||||
| Generates the preliminary secret PS, where PS is chosen from B_32 at random. | ||||
| </t> | ||||
| </li> | ||||
| <li pn="section-4.2.4.1-3.3" derivedCounter="3."> | ||||
| <t indent="0" pn="section-4.2.4.1-3.3.1"> | ||||
| Generates export keys (K_EXP_MAC and K_EXP_ENC) using the KEG algorithm defined | ||||
| in <xref target="KEG" format="default" sectionFormat="of" derivedContent="Sectio | ||||
| n 8.3.1"/>: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.2.4.1- | ||||
| 3.3.2"> | ||||
| H = HASH(r_c | r_s); | ||||
| K_EXP_MAC | K_EXP_ENC = KEG(d_eph, Q_s, H). | ||||
| </sourcecode> | ||||
| </li> | ||||
| <li pn="section-4.2.4.1-3.4" derivedCounter="4."> | ||||
| <t indent="0" pn="section-4.2.4.1-3.4.1"> | ||||
| Generates an export representation PSExp of the preliminary | ||||
| secret PS using the KExp15 algorithm defined in <xref target="KExpImp15" format= | ||||
| "default" sectionFormat="of" derivedContent="Section 8.2.1"/>: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.2.4.1- | ||||
| 3.4.2"> | ||||
| IV = H[25..24 + n / 2]; | ||||
| PSExp = KExp15(PS, K_EXP_MAC, K_EXP_ENC, IV). | ||||
| </sourcecode> | ||||
| </li> | ||||
| <li pn="section-4.2.4.1-3.5" derivedCounter="5."> | ||||
| <t indent="0" pn="section-4.2.4.1-3.5.1"> | ||||
| Generates the ClientKeyExchange message using the Gos | ||||
| tKeyTransport structure that is defined as follows: | ||||
| </t> | ||||
| <sourcecode name="" type="asn.1" markers="false" pn="section-4.2 | ||||
| .4.1-3.5.2"> | ||||
| GostKeyTransport ::= SEQUENCE { | GostKeyTransport ::= SEQUENCE { | |||
| keyExp OCTET STRING, | keyExp OCTET STRING, | |||
| ephemeralPublicKey SubjectPublicKeyInfo, | ephemeralPublicKey SubjectPublicKeyInfo, | |||
| ukm OCTET STRING OPTIONAL | ukm OCTET STRING OPTIONAL | |||
| } | } | |||
| SubjectPublicKeyInfo ::= SEQUENCE { | SubjectPublicKeyInfo ::= SEQUENCE { | |||
| algorithm AlgorithmIdentifier, | algorithm AlgorithmIdentifier, | |||
| subjectPublicKey BIT STRING | subjectPublicKey BIT STRING | |||
| } | } | |||
| AlgorithmIdentifier ::= SEQUENCE { | AlgorithmIdentifier ::= SEQUENCE { | |||
| algorithm OBJECT IDENTIFIER, | algorithm OBJECT IDENTIFIER, | |||
| parameters ANY OPTIONAL | parameters ANY OPTIONAL | |||
| } | } | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.2.4.1-3.5.3"> | |||
| </figure> | where the keyExp field contains the PSExp value, the | |||
| <t> | ephemeralPublicKey field contains the Q_eph value, and the ukm field <bcp14>MUS | |||
| where the keyExp field contains the PSExp value, the | T</bcp14> be ignored by the server. | |||
| ephemeralPublicKey field contains the Q_eph value and the ukm field MUST be ign | </t> | |||
| ored by the server. | </li> | |||
| </t> | </ol> | |||
| <t> | <t indent="0" pn="section-4.2.4.1-4"> | |||
| Upon receiving the ClientKeyExchange message, the se | Upon receiving the ClientKeyExchange message, the se | |||
| rver process it as follows. | rver process is as follows. | |||
| </t> | </t> | |||
| <t> | <ol indent="adaptive" spacing="normal" start="1" type="1" pn="sectio | |||
| 1. Checks the following three conditions. If either | n-4.2.4.1-5"> | |||
| of these checks fails, then the server MUST abort the handshake with an alert. | <li pn="section-4.2.4.1-5.1" derivedCounter="1."> | |||
| <list style="symbols"> | <t indent="0" pn="section-4.2.4.1-5.1.1"> | |||
| <t> | The following three conditions are checked. If any of th | |||
| Q_eph belongs to the same curve as server pu | ese checks fail, then the server <bcp14>MUST</bcp14> abort the handshake with an | |||
| blic key Q_s; | alert. | |||
| </t> | </t> | |||
| <t> | <ul empty="false" spacing="normal" bare="false" indent="3" pn="s | |||
| Q_eph is not equal to zero point; | ection-4.2.4.1-5.1.2"> | |||
| </t> | <li pn="section-4.2.4.1-5.1.2.1"> Q_eph belongs to the same cu | |||
| <t> | rve as server public key Q_s; | |||
| q_s * Q_eph is equal to zero point. | </li> | |||
| </t> | <li pn="section-4.2.4.1-5.1.2.2"> Q_eph is not equal to zero p | |||
| </list> | oint; | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.1-5.1.2.3"> q_s * Q_eph is equal to zero | |||
| 2. Generates export keys (K_EXP_MAC and K_EXP_ENC) u | point. | |||
| sing the KEG algorithm defined in <xref target="KEG"/>: | </li> | |||
| <list style="empty"> | </ul> | |||
| <t> | </li> | |||
| H = HASH(r_c | r_s); | <li pn="section-4.2.4.1-5.2" derivedCounter="2."> | |||
| </t> | <t indent="0" pn="section-4.2.4.1-5.2.1"> | |||
| <t> | The export keys (K_EXP_MAC and K_EXP_ENC) are genera | |||
| K_EXP_MAC | K_EXP_ENC = KEG(d_s, Q_eph, H). | ted using the KEG algorithm defined in <xref target="KEG" format="default" secti | |||
| </t> | onFormat="of" derivedContent="Section 8.3.1"/>: | |||
| </list> | </t> | |||
| </t> | <sourcecode name="" type="" markers="false" pn="section-4.2.4.1- | |||
| <t> | 5.2.2"> | |||
| 3. Extracts the premaster secret PS from the export | H = HASH(r_c | r_s); | |||
| representation PSExp using the KImp15 algorithm defined in <xref target ="KExpIm | ||||
| p15"/>: | K_EXP_MAC | K_EXP_ENC = KEG(d_s, Q_eph, H). | |||
| <list style="empty"> | </sourcecode> | |||
| <t> | </li> | |||
| IV = H[25..24 + n / 2]; | <li pn="section-4.2.4.1-5.3" derivedCounter="3."> | |||
| </t> | <t indent="0" pn="section-4.2.4.1-5.3.1"> | |||
| <t> | The preliminary secret PS is extracted from the export repres | |||
| PS = KImp15(PSExp, K_EXP_MAC, K_EXP_ENC, IV) | entation PSExp using the KImp15 algorithm defined in <xref target="KExpImp15" fo | |||
| . | rmat="default" sectionFormat="of" derivedContent="Section 8.2.1"/>: | |||
| </t> | </t> | |||
| </list> | <sourcecode name="" type="" markers="false" pn="section-4.2.4.1- | |||
| </t> | 5.3.2"> | |||
| </section> | IV = H[25..24 + n / 2]; | |||
| <section anchor ="CNTkeygen" title = "CNT_IMIT"> | ||||
| <t> | PS = KImp15(PSExp, K_EXP_MAC, K_EXP_ENC, IV). | |||
| In case of the CNT_IMIT cipher suite the body of the | </sourcecode> | |||
| ClientKeyExchange message consists of a TLSGostKeyTransportBlob structure that | </li> | |||
| is defined bellow. | </ol> | |||
| </t> | </section> | |||
| <t> | <section anchor="CNTkeygen" numbered="true" toc="include" removeInRFC= | |||
| "false" pn="section-4.2.4.2"> | ||||
| <name slugifiedName="name-cnt_imit-2">CNT_IMIT</name> | ||||
| <t indent="0" pn="section-4.2.4.2-1"> | ||||
| In the CNT_IMIT cipher suite, the body of the Client | ||||
| KeyExchange message consists of a TLSGostKeyTransportBlob structure that is defi | ||||
| ned below. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.2.4.2-2"> | ||||
| The client generates the ClientKeyExchange message i n accordance with the following steps: | The client generates the ClientKeyExchange message i n accordance with the following steps: | |||
| </t> | </t> | |||
| <t> | <ol indent="adaptive" spacing="normal" start="1" type="1" pn="sectio | |||
| 1. Generates the ephemeral key pair (Q_eph, d_eph), | n-4.2.4.2-3"> | |||
| where: | <li pn="section-4.2.4.2-3.1" derivedCounter="1."> | |||
| <list style="empty"> | <t indent="0" pn="section-4.2.4.2-3.1.1"> | |||
| <t> | The ephemeral key pair (Q_eph, d_eph) is generated, where: | |||
| d_eph is chosen from {1, ... , q_s - 1} at r | </t> | |||
| andom; | <sourcecode name="" type="" markers="false" pn="section-4.2.4.2- | |||
| </t> | 3.1.2"> | |||
| <t> | d_eph is chosen from {1, ... , q_s - 1} at random; | |||
| Q_eph = d_eph * P_s. | ||||
| </t> | Q_eph = d_eph * P_s. | |||
| </list> | </sourcecode> | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.2-3.2" derivedCounter="2."> | |||
| 2. Generates the premaster secret PS, where PS is ch | The preliminary secret PS is generated, where PS is chosen from B_32 | |||
| osen from B_32 at random. | at random. | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.2-3.3" derivedCounter="3."> | |||
| 3. Generates export key (K_EXP) using the KEG_28147 | <t indent="0" pn="section-4.2.4.2-3.3.1"> | |||
| algorithm defined in <xref target ="KEG_28147"/>: | The export key (K_EXP) is generated using the KEG_28147 algorithm defi | |||
| <list style="bullets"> | ned in <xref target="KEG_28147" format="default" sectionFormat="of" derivedConte | |||
| <t> | nt="Section 8.3.2"/>: | |||
| H = HASH(r_c | r_s); | </t> | |||
| </t> | <sourcecode name="" type="" markers="false" pn="section-4.2.4.2- | |||
| <t> | 3.3.2"> | |||
| K_EXP = KEG_28147(d_eph, Q_s, H). | H = HASH(r_c | r_s); | |||
| </t> | ||||
| </list> | K_EXP = KEG_28147(d_eph, Q_s, H). | |||
| </t> | </sourcecode> | |||
| <t> | </li> | |||
| 4. Generates an export representation PSExp of the p | <li pn="section-4.2.4.2-3.4" derivedCounter="4."> | |||
| remaster secret PS using the KExp28147 algorithm defined in <xref target ="KExpI | <t indent="0" pn="section-4.2.4.2-3.4.1"> | |||
| mp28147"/>: | An export representation PSExp of the preliminary secret PS | |||
| <list style="empty"> | using the KExp28147 algorithm defined in <xref target="KExpImp28147" format="def | |||
| <t> | ault" sectionFormat="of" derivedContent="Section 8.2.2"/> is generated: | |||
| PSExp = IV | CEK_ENC | CEK_MAC = KExp28147(P | </t> | |||
| S, K_EXP, H[1..8]). | <sourcecode name="" type="" markers="false" pn="section-4.2.4.2- | |||
| </t> | 3.4.2"> | |||
| </list> | PSExp = IV | CEK_ENC | CEK_MAC = KExp28147(PS, K_EXP, H[1..8]). | |||
| </t> | </sourcecode> | |||
| <t> | </li> | |||
| 5. Generates the ClientKeyExchange message using the | <li pn="section-4.2.4.2-3.5" derivedCounter="5."> | |||
| TLSGostKeyTransportBlob structure that is defined as follows: | <t indent="0" pn="section-4.2.4.2-3.5.1"> | |||
| </t> | The ClientKeyExchange message is generated using the | |||
| <t> | TLSGostKeyTransportBlob structure that is defined as follows: | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode name="" type="asn.1" markers="false" pn="section-4.2 | |||
| <![CDATA[ | .4.2-3.5.2"> | |||
| TLSGostKeyTransportBlob ::= SEQUENCE { | TLSGostKeyTransportBlob ::= SEQUENCE { | |||
| keyBlob GostR3410-KeyTransport, | keyBlob GostR3410-KeyTransport | |||
| } | } | |||
| GostR3410-KeyTransport ::= SEQUENCE { | GostR3410-KeyTransport ::= SEQUENCE { | |||
| sessionEncryptedKey Gost28147-89-EncryptedKey, | sessionEncryptedKey Gost28147-89-EncryptedKey, | |||
| transportParameters [0] IMPLICIT GostR3410-TransportParameters | transportParameters [0] IMPLICIT GostR3410- | |||
| OPTIONAL | TransportParameters OPTIONAL | |||
| } | } | |||
| Gost28147-89-EncryptedKey ::= SEQUENCE { | Gost28147-89-EncryptedKey ::= SEQUENCE { | |||
| encryptedKey Gost28147-89-Key, | encryptedKey Gost28147-89-Key, | |||
| maskKey [0] IMPLICIT Gost28147-89-Key OPTIONAL, | maskKey [0] IMPLICIT Gost28147-89-Key OPTIONAL, | |||
| macKey Gost28147-89-MAC | macKey Gost28147-89-MAC | |||
| } | } | |||
| GostR3410-TransportParameters ::= SEQUENCE { | GostR3410-TransportParameters ::= SEQUENCE { | |||
| encryptionParamSet OBJECT IDENTIFIER, | encryptionParamSet OBJECT IDENTIFIER, | |||
| ephemeralPublicKey [0] IMPLICIT SubjectPublicKeyInfo OPTIONAL, | ephemeralPublicKey [0] IMPLICIT SubjectPublicKeyInfo | |||
| OPTIONAL, | ||||
| ukm OCTET STRING | ukm OCTET STRING | |||
| } | } | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.2.4.2-3.5.3"> | |||
| </figure> | where GostR3410-KeyTransport, Gost28147-89-Encrypted | |||
| </t> | Key, and GostR3410-TransportParameters are defined according to <xref target="RF | |||
| <t> | C4490" section="4.2.1" sectionFormat="of" format="default" derivedLink="https:// | |||
| where GostR3410-KeyTransport, Gost28147-89-Encrypted | rfc-editor.org/rfc/rfc4490#section-4.2.1" derivedContent="RFC4490"/>. | |||
| Key and GostR3410-TransportParameters are defined according to Section 4.2.1 of | </t> | |||
| <xref target="RFC4490"/>. | </li> | |||
| </t> | </ol> | |||
| <t> | <t indent="0" pn="section-4.2.4.2-4"> | |||
| In the context of this document the GostR3410-KeyTra | In the context of this document, the GostR3410-KeyTr | |||
| nsport.transportParameters field is always used, the Gost28147-89-EncryptedKey.m | ansport.transportParameters field is always used, the Gost28147-89-EncryptedKey. | |||
| askKey field is omitted, | maskKey field is omitted, and | |||
| the GostR3410-KeyTransport.transportParameters.ephem eralPublicKey field is always used. | the GostR3410-KeyTransport.transportParameters.ephem eralPublicKey field is always used. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.2.4.2-5"> | |||
| The Gost28147-89-EncryptedKey.encryptedKey field con tains the CEK_ENC value, the Gost28147-89-EncryptedKey.macKey field contains the | The Gost28147-89-EncryptedKey.encryptedKey field con tains the CEK_ENC value, the Gost28147-89-EncryptedKey.macKey field contains the | |||
| CEK_MAC value, and GostR3410-TransportParameters.ukm | CEK_MAC value, and the GostR3410-TransportParameters | |||
| field contains the IV value. | .ukm field contains the initialization vector (IV) value. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.2.4.2-6"> | |||
| The keyBlob.transportParameters.ephemeralPublicKey f ield contains the client ephemeral public key Q_eph. The encryptionParamSet | The keyBlob.transportParameters.ephemeralPublicKey f ield contains the client ephemeral public key Q_eph. The encryptionParamSet | |||
| contains value 1.2.643.7.1.2.5.1.1 that corresponds | contains the value 1.2.643.7.1.2.5.1.1, which corres | |||
| to the id-tc26-gost-28147-param-Z parameters set defined in <xref target="RFC783 | ponds to the id-tc26-gost-28147-param-Z parameters set defined in <xref target=" | |||
| 6"/>. | RFC7836" format="default" sectionFormat="of" derivedContent="RFC7836"/>. | |||
| </t> | </t> | |||
| <t indent="0" pn="section-4.2.4.2-7"> | ||||
| Upon receiving the ClientKeyExchange message, the se | ||||
| rver process is as follows. | ||||
| </t> | ||||
| <ol indent="adaptive" spacing="normal" start="1" type="1" pn="sectio | ||||
| n-4.2.4.2-8"> | ||||
| <li pn="section-4.2.4.2-8.1" derivedCounter="1."> | ||||
| <t indent="0" pn="section-4.2.4.2-8.1.1"> | ||||
| The following three conditions are checked. If either | ||||
| of these checks fails, then the server <bcp14>MUST</bcp14> abort the handshake | ||||
| with an alert. | ||||
| </t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="s | ||||
| ection-4.2.4.2-8.1.2"> | ||||
| <li pn="section-4.2.4.2-8.1.2.1"> | ||||
| <t> | ||||
| Upon receiving the ClientKeyExchange message, the se | ||||
| rver process it as follows. | ||||
| </t> | ||||
| <t> | ||||
| 1. Checks the following three conditions. If either | ||||
| of these checks fails, then the server MUST abort the handshake with an alert. | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Q_eph belongs to the same curve as server pu blic key Q_s; | Q_eph belongs to the same curve as server pu blic key Q_s; | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.2-8.1.2.2"> | |||
| Q_eph is not equal to zero point; | Q_eph is not equal to zero point; | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.2-8.1.2.3"> | |||
| q_s * Q_eph is equal to zero point; | q_s * Q_eph is equal to zero point. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </li> | |||
| <t> | <li pn="section-4.2.4.2-8.2" derivedCounter="2."> | |||
| 2. Generates export key (K_EXP) using the KEG_28147 | <t indent="0" pn="section-4.2.4.2-8.2.1"> | |||
| algorithm defined in <xref target ="KEG_28147"/>: | The export key (K_EXP) is generated using the KEG_28147 | |||
| <list style="bullets"> | algorithm defined in <xref target="KEG_28147" format="default" sectionFormat="of | |||
| <t> | " derivedContent="Section 8.3.2"/>: | |||
| H = HASH(r_c | r_s); | </t> | |||
| </t> | <sourcecode name="" type="" markers="false" pn="section-4.2.4.2- | |||
| <t> | 8.2.2"> | |||
| K_EXP = KEG_28147(d_s, Q_eph, H). | H = HASH(r_c | r_s); | |||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| 3. Extracts the premaster secret PS from the export | ||||
| representation PSExp using the KImp28147 algorithm defined in <xref target ="KEx | ||||
| pImp28147"/>: | ||||
| <list style="empty"> | ||||
| <t> | ||||
| PS = KImp28147(PSExp, K_EXP, H[1..8]). | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor ="CertVer" title="CertificateVerify"> | K_EXP = KEG_28147(d_s, Q_eph, H). | |||
| <t> | </sourcecode> | |||
| Client generates the value sgn as follows: | </li> | |||
| </t> | <li pn="section-4.2.4.2-8.3" derivedCounter="3."> | |||
| <t> | <t indent="0" pn="section-4.2.4.2-8.3.1"> | |||
| <figure> | The preliminary secret PS is extracted from the export represent | |||
| <artwork> | ation PSExp using the KImp28147 algorithm defined in <xref target="KExpImp28147" | |||
| <![CDATA[ | format="default" sectionFormat="of" derivedContent="Section 8.2.2"/>: | |||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.2.4.2- | ||||
| 8.3.2"> | ||||
| PS = KImp28147(PSExp, K_EXP, H[1..8]). | ||||
| </sourcecode> | ||||
| </li> | ||||
| </ol> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="CertVer" numbered="true" toc="include" removeInRFC="fal | ||||
| se" pn="section-4.2.5"> | ||||
| <name slugifiedName="name-certificateverify">CertificateVerify</name> | ||||
| <t indent="0" pn="section-4.2.5-1"> | ||||
| The client generates the value sgn as follows: | ||||
| </t> | ||||
| <sourcecode name="" type="" markers="false" pn="section-4.2.5-2"> | ||||
| sgn = SIGN_{d_c}(handshake_messages) = str_l(r) | str_l(s) | sgn = SIGN_{d_c}(handshake_messages) = str_l(r) | str_l(s) | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.2.5-3"> | |||
| </figure> | where SIGN_{d_c} is the GOST R 34.10-2012 <xref target="RFC7091" format | |||
| </t> | ="default" sectionFormat="of" derivedContent="RFC7091"/> signature algorithm, d_ | |||
| <t> | c is a client long-term private key that corresponds to the client long-term pub | |||
| where SIGN_{d_c} is the GOST R 34.10-2012 <xref target=" | lic key Q_c from the client's certificate, l = 32 for the gostr34102012_256 valu | |||
| RFC7091"/> signature algorithm, d_c is a client | e of the SignatureAndHashAlgorithm field, and l = 64 for the gostr34102012_512 v | |||
| long-term private key that corresponds to the client lon | alue of the SignatureAndHashAlgorithm field. | |||
| g-term public key Q_c from the client's certificate, | </t> | |||
| l = 32 for gostr34102012_256 value of the SignatureAndHa | <t indent="0" pn="section-4.2.5-4"> | |||
| shAlgorithm field and l = 64 for gostr34102012_512 value of the SignatureAndHash | Here, "handshake_messages" refers to all handshake messa | |||
| Algorithm field. | ges sent or | |||
| </t> | received, starting at ClientHello and up to CertificateV | |||
| <t> | erify without | |||
| Here handshake_messages refers to all handshake messages | the last message; it includes the type and length fields | |||
| sent or | of the handshake messages. | |||
| received, starting at ClientHello and up to CertificateV | </t> | |||
| erify, but not including | <t indent="0" pn="section-4.2.5-5"> | |||
| the last message, including the type and length fields o | The TLS CertificateVerify message is specified as follow | |||
| f the handshake messages. | s: | |||
| </t> | </t> | |||
| <t> | <sourcecode name="" type="asn.1" markers="false" pn="section-4.2.5-6"> | |||
| The TLS CertificateVerify message is specified as follow | ||||
| s. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| struct { | struct { | |||
| SignatureAndHashAlgorithm algorithm; | SignatureAndHashAlgorithm algorithm; | |||
| opaque signature<0..2^16-1>; | opaque signature<0..2^16-1>; | |||
| } CertificateVerify; | } CertificateVerify; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-4.2.5-7"> | |||
| </figure> | where the SignatureAndHashAlgorithm structure is specifi | |||
| </t> | ed in <xref target="SAR" format="default" sectionFormat="of" derivedContent="Sec | |||
| <t> | tion 5"/>, and the CertificateVerify.signature field contains the sgn value. | |||
| where SignatureAndHashAlgorithm structure is specified i | </t> | |||
| n <xref target="SAR"/> and CertificateVerify.signature field contains sgn value. | </section> | |||
| </t> | <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | |||
| </section> | .2.6"> | |||
| <name slugifiedName="name-finished">Finished</name> | ||||
| <section title="Finished"> | <t indent="0" pn="section-4.2.6-1"> | |||
| <t> | The TLS Finished message is generated in | |||
| The TLS Finished message is generated in accordance with | accordance with <xref target="RFC5246" section="7.4.9" s | |||
| Section 7.4.9 of <xref target="RFC5246"/>. | ectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc52 | |||
| </t> | 46#section-7.4.9" derivedContent="RFC5246"/>. | |||
| <t> | </t> | |||
| <t indent="0" pn="section-4.2.6-2"> | ||||
| The verify_data_length value is equal to 32 for the CTR_ OMAC cipher suites and is equal to 12 for the CNT_IMIT cipher suite. | The verify_data_length value is equal to 32 for the CTR_ OMAC cipher suites and is equal to 12 for the CNT_IMIT cipher suite. | |||
| The PRF function is defined in <xref target="PRFHASH"/>. | The pseudorandom function (PRF) is defined in <xref targ | |||
| </t> | et="PRFHASH" format="default" sectionFormat="of" derivedContent="Section 4.3.4"/ | |||
| </section> | >. | |||
| </section> | </t> | |||
| </section> | ||||
| <section title="Cryptographic Algorithms"> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3 | ||||
| <section anchor="BlockCipher" title="Block Cipher"> | "> | |||
| <t> | <name slugifiedName="name-cryptographic-algorithms">Cryptographic Algori | |||
| The cipher suite TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR | thms</name> | |||
| _OMAC MUST use Kuznyechik <xref target="RFC7801"/> | <section anchor="BlockCipher" numbered="true" toc="include" removeInRFC= | |||
| "false" pn="section-4.3.1"> | ||||
| <name slugifiedName="name-block-cipher">Block Cipher</name> | ||||
| <t indent="0" pn="section-4.3.1-1"> | ||||
| The cipher suite TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR | ||||
| _OMAC <bcp14>MUST</bcp14> use Kuznyechik <xref target="RFC7801" format="default" | ||||
| sectionFormat="of" derivedContent="RFC7801"/> | ||||
| as a base block cipher for the encryption and MAC algori thm. | as a base block cipher for the encryption and MAC algori thm. | |||
| The block length n is 16 bytes and the key length k is 3 | The block length n is 16 bytes, and the key length k is | |||
| 2 bytes. | 32 bytes. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.3.1-2"> | |||
| The cipher suite TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | The cipher suite TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | |||
| MUST use Magma <xref target="RFC8891"/> | <bcp14>MUST</bcp14> use Magma <xref target="RFC8891" format="default" sectionFo | |||
| rmat="of" derivedContent="RFC8891"/> | ||||
| as a base block cipher for the encryption and MAC algori thm. | as a base block cipher for the encryption and MAC algori thm. | |||
| The block length n is 8 bytes and the key length k is 32 | The block length n is 8 bytes, and the key length k is 3 | |||
| bytes. | 2 bytes. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.3.1-3"> | |||
| The cipher suite TLS_GOSTR341112_256_WITH_28147_CNT_IMIT | The cipher suite TLS_GOSTR341112_256_WITH_28147_CNT_IMIT | |||
| MUST use GOST 28147-89 as a base block cipher <xref target ="RFC5830"/> | <bcp14>MUST</bcp14> use GOST 28147-89 as a base block cipher <xref target="RFC5 | |||
| with the set of parameters id-tc26-gost-28147-param-Z de | 830" format="default" sectionFormat="of" derivedContent="RFC5830"/> | |||
| fined in <xref target="RFC7836"/>. | with the set of parameters id-tc26-gost-28147-param-Z de | |||
| The block length n is 8 bytes and the key length k is 32 | fined in <xref target="RFC7836" format="default" sectionFormat="of" derivedConte | |||
| bytes. | nt="RFC7836"/>. | |||
| </t> | The block length n is 8 bytes, and the key length k is 3 | |||
| </section> | 2 bytes. | |||
| <section anchor="MAC" title="MAC algorithm"> | </t> | |||
| <t> | </section> | |||
| The CTR_OMAC cipher suites use the OMAC message authenti | <section anchor="MAC" numbered="true" toc="include" removeInRFC="false" | |||
| cation code construction defined in <xref target="GOST3413-2015"/>, | pn="section-4.3.2"> | |||
| which can be considered as the CMAC mode defined in <xre | <name slugifiedName="name-mac-algorithm">MAC Algorithm</name> | |||
| f target="CMAC"/> where Kuznyechik or Magma block cipher (see <xref target="Bloc | <t indent="0" pn="section-4.3.2-1"> | |||
| kCipher"/>) are used instead of AES block cipher | The CTR_OMAC cipher suites use the One-Key MAC (OMAC) constructi | |||
| (see <xref target="IK2003"/> for more detail) as the MAC | on defined in <xref target="GOST3413-2015" format="default" sectionFormat="of" d | |||
| function. The resulting MAC length is equal to the block length and the MAC key | erivedContent="GOST3413-2015"/>, | |||
| length is 32 bytes. | which is the same as the Cipher-Based MAC (CMAC) mode defined in | |||
| <xref target="CMAC" format="default" sectionFormat="of" derivedContent="CMAC"/> | ||||
| where the Kuznyechik or Magma block cipher (see <xref target="BlockCipher" form | ||||
| at="default" sectionFormat="of" derivedContent="Section 4.3.1"/>) is used instea | ||||
| d of the AES block cipher | ||||
| (see <xref target="IK2003" format="default" sectionFormat="of" d | ||||
| erivedContent="IK2003"/> for more detail) as the MAC function. The resulting MAC | ||||
| length is equal to the block length, and the MAC key length is 32 bytes. | ||||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-4.3.2-2"> | |||
| The CNT_IMIT cipher suite uses the message authenticatio | The CNT_IMIT cipher suite uses the MAC function gostIMIT28147 de | |||
| n code function gostIMIT28147 defined in <xref target ="IMIT"/> with the initial | fined in <xref target="IMIT" format="default" sectionFormat="of" derivedContent= | |||
| ization vector IV = IV0, where IV0 in B_8 is a string of all zeros, | "Section 8.4"/> with the initialization vector IV = IV0, where IV0 in B_8 is a s | |||
| with the CryptoPro Key Meshing algorithm defined in <xre | tring of all zeros, | |||
| f target =" RFC4357"/>. The resulting MAC length is 4 bytes and the MAC key leng | with the CryptoPro Key Meshing algorithm defined in <xref target | |||
| th is 32 bytes. | ="RFC4357" format="default" sectionFormat="of" derivedContent="RFC4357"/>. The r | |||
| </t> | esulting MAC length is 4 bytes, and the MAC key length is 32 bytes. | |||
| </section> | </t> | |||
| <section anchor="EncryptionAlgorithm" title="Encryption algorit | </section> | |||
| hm"> | <section anchor="EncryptionAlgorithm" numbered="true" toc="include" remo | |||
| <t> | veInRFC="false" pn="section-4.3.3"> | |||
| The CTR_OMAC cipher suites use the block cipher in CTR-A | <name slugifiedName="name-encryption-algorithm">Encryption Algorithm</ | |||
| CPKM encryption mode defined in <xref target="RFC8645"/> as the ENC function. | name> | |||
| The section size N is 4 KB for TLS_GOSTR341112_256_WITH_ | <t indent="0" pn="section-4.3.3-1"> | |||
| KUZNYECHIK_CTR_OMAC cipher suite | The CTR_OMAC cipher suites use the block cipher in the C | |||
| and 1 KB for TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC cip | TR-ACPKM encryption mode defined in <xref target="RFC8645" format="default" sect | |||
| her suite. | ionFormat="of" derivedContent="RFC8645"/> as the ENC function. | |||
| </t> | The section size N is 4 KB for the TLS_GOSTR341112_256_W | |||
| <t> | ITH_KUZNYECHIK_CTR_OMAC cipher suite | |||
| and 1 KB for the TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | ||||
| cipher suite. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.3.3-2"> | ||||
| The CNT_IMIT cipher suite uses the block cipher in count er encryption mode (CNT) | The CNT_IMIT cipher suite uses the block cipher in count er encryption mode (CNT) | |||
| defined in Section 6 of <xref target="RFC5830"/> with th | defined in <xref target="RFC5830" section="6" sectionFor | |||
| e CryptoPro Key Meshing | mat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5830#sectio | |||
| algorithm defined in <xref target =" RFC4357"/> as the E | n-6" derivedContent="RFC5830"/>, with the CryptoPro key meshing | |||
| NC function. | algorithm defined in <xref target="RFC4357" format="defa | |||
| </t> | ult" sectionFormat="of" derivedContent="RFC4357"/> as the ENC function. | |||
| <t> | </t> | |||
| <t indent="0" pn="section-4.3.3-3"> | ||||
| Note that the counter modes used in cipher suites descri bed in this document act as stream ciphers. | Note that the counter modes used in cipher suites descri bed in this document act as stream ciphers. | |||
| </t> | </t> | |||
| </section> | ||||
| <section anchor ="PRFHASH" title="PRF and HASH algorithms"> | ||||
| <t> | ||||
| The pseudorandom function (PRF) for all the cipher suite | ||||
| s defined in this document is the PRF_TLS_GOSTR3411_2012_256 function defined in | ||||
| <xref target="RFC7836"/>. | ||||
| </t> | ||||
| <t> | ||||
| The hash function HASH for all the cipher suites defined | ||||
| in this document is the GOST R 34.11-2012 <xref target =" RFC6986"/> hash algor | ||||
| ithm with 32-byte (256-bit) hash code. | ||||
| </t> | ||||
| </section> | ||||
| <section title="SNMAX parameter"> | ||||
| <t> | ||||
| The SNMAX parameter defines the maximal value of the seque | ||||
| nce number seqnum during one TLS 1.2 connection and is defined as follows: | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +---------------------------------------------+--------------------+ | ||||
| | CipherSuites | SNMAX | | ||||
| +---------------------------------------------+--------------------+ | ||||
| |TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | SNMAX = 2^64 - 1 | | ||||
| |TLS_GOSTR341112_256_WITH_28147_CNT_IMIT | | | ||||
| +---------------------------------------------+--------------------+ | ||||
| |TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | SNMAX = 2^32 - 1 | | ||||
| +---------------------------------------------+--------------------+ | ||||
| Table 1 | ||||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="SAR" title="New Values for the SignatureAlgorithm Regi | <section anchor="PRFHASH" numbered="true" toc="include" removeInRFC="fal | |||
| stry"> | se" pn="section-4.3.4"> | |||
| <t> | <name slugifiedName="name-prf-and-hash-algorithms">PRF and HASH Algori | |||
| thms</name> | ||||
| <t indent="0" pn="section-4.3.4-1"> | ||||
| The PRF for all the cipher suites defined in this docume | ||||
| nt is the PRF_TLS_GOSTR3411_2012_256 function defined in <xref target="RFC7836" | ||||
| format="default" sectionFormat="of" derivedContent="RFC7836"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-4.3.4-2"> | ||||
| The hash function HASH for all the cipher suites defined | ||||
| in this document is the GOST R 34.11-2012 <xref target="RFC6986" format="defaul | ||||
| t" sectionFormat="of" derivedContent="RFC6986"/> hash algorithm with a 32-byte ( | ||||
| 256-bit) hash code. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
| .3.5"> | ||||
| <name slugifiedName="name-snmax-parameter">SNMAX Parameter</name> | ||||
| <t indent="0" pn="section-4.3.5-1"> | ||||
| The SNMAX parameter defines the maximal value of the seqnu | ||||
| m sequence number during one TLS 1.2 connection and is defined as follows: | ||||
| </t> | ||||
| <table align="center" pn="table-1"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left" colspan="1" rowspan="1">Cipher Suites</th> | ||||
| <th align="left" colspan="1" rowspan="1">SNMAX</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <ul empty="true" bare="true" spacing="compact" indent="3" pn=" | ||||
| section-4.3.5-2.2.1.1.1"> | ||||
| <li pn="section-4.3.5-2.2.1.1.1.1">TLS_GOSTR341112_256_WITH_ | ||||
| KUZNYECHIK_CTR_OMAC</li> | ||||
| <li pn="section-4.3.5-2.2.1.1.1.2">TLS_GOSTR341112_256_WITH_ | ||||
| 28147_CNT_IMIT</li> | ||||
| </ul> | ||||
| </td> | ||||
| <td align="left" colspan="1" rowspan="1">SNMAX = 2<sup>64</sup> | ||||
| - 1</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WIT | ||||
| H_MAGMA_CTR_OMAC</td> | ||||
| <td align="left" colspan="1" rowspan="1"> SNMAX = 2<sup>32</sup> | ||||
| - 1</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="SAR" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
| section-5"> | ||||
| <name slugifiedName="name-new-values-for-the-tls-sign">New Values for the | ||||
| TLS SignatureAlgorithm Registry</name> | ||||
| <t indent="0" pn="section-5-1"> | ||||
| The signature/hash algorithm pairs are used to indicate to the s erver/client | The signature/hash algorithm pairs are used to indicate to the s erver/client | |||
| which algorithms can be used in digital signatures and | which algorithms can be used in digital signatures and | |||
| are defined by the SignatureAndHashAlgorithm structure (see Sect | are defined by the SignatureAndHashAlgorithm structure (see <xre | |||
| ion 7.4.1.4.1 of <xref target="RFC5246"/>). | f target="RFC5246" section="7.4.1.4.1" sectionFormat="of" format="default" deriv | |||
| </t> | edLink="https://rfc-editor.org/rfc/rfc5246#section-7.4.1.4.1" derivedContent="RF | |||
| <t> | C5246"/>). | |||
| This document defines new values for the "SignatureAlgorithm Reg | </t> | |||
| istry" that can be used in the SignatureAndHashAlgorithm.signature field for the | <t indent="0" pn="section-5-2"> | |||
| particular signature/hash algorithm pair: | This document defines new values for the "TLS SignatureAlgorithm | |||
| </t> | " registry that can be used in the SignatureAndHashAlgorithm.signature field for | |||
| <t> | the particular signature/hash algorithm pair: | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode name="" type="asn.1" markers="false" pn="section-5-3"> | |||
| <![CDATA[ | ||||
| enum { | enum { | |||
| gostr34102012_256(64), | gostr34102012_256(64), | |||
| gostr34102012_512(65), | gostr34102012_512(65), | |||
| } SignatureAlgorithm; | } SignatureAlgorithm; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-5-4"> | |||
| </figure> | ||||
| </t> | ||||
| <t> | ||||
| where the gostr34102012_256 and gostr34102012_512 values corresp ond to | where the gostr34102012_256 and gostr34102012_512 values corresp ond to | |||
| the GOST R 34.10-2012 <xref target="RFC7091"/> signature algorit | the GOST R 34.10-2012 <xref target="RFC7091" format="default" se | |||
| hm with 32-byte (256-bit) and 64-byte (512-bit) key length respectively. | ctionFormat="of" derivedContent="RFC7091"/> signature algorithm with a 32-byte ( | |||
| </t> | 256-bit) and 64-byte (512-bit) key length, respectively. | |||
| <t> | </t> | |||
| According to <xref target="RFC7091"/> the GOST R 34.10-2012 sign | <t indent="0" pn="section-5-5"> | |||
| ature algorithm with 32-byte (256-bit) or 64-byte (512-bit) key length | According to <xref target="RFC7091" format="default" sectionForm | |||
| use the GOST R 34.11-2012 <xref target="RFC6986"/> hash algorith | at="of" derivedContent="RFC7091"/>, the GOST R 34.10-2012 signature algorithm wi | |||
| m with 32-byte (256-bit) or 64-byte (512-bit) hash code respectively | th a 32-byte (256-bit) or 64-byte (512-bit) key length | |||
| uses the GOST R 34.11-2012 <xref target="RFC6986" format="defaul | ||||
| t" sectionFormat="of" derivedContent="RFC6986"/> hash algorithm with a 32-byte ( | ||||
| 256-bit) or 64-byte (512-bit) hash code, respectively | ||||
| (the hash algorithm is intrinsic to the signature algorithm). | (the hash algorithm is intrinsic to the signature algorithm). | |||
| Therefore, if the SignatureAndHashAlgorithm.signature field of a particular hash/signature pair listed in the Signature Algorithms Extension | Therefore, if the SignatureAndHashAlgorithm.signature field of a particular hash/signature pair listed in the Signature Algorithms Extension | |||
| is equal to the 64 (gostr34102012_256) or 65 (gostr34102012_512) value, | is equal to the 64 (gostr34102012_256) or 65 (gostr34102012_512) value, | |||
| the SignatureAndHashAlgorithm.hash field of this pair MUST conta | the SignatureAndHashAlgorithm.hash field of this pair <bcp14>MUS | |||
| in the "Intrinsic" value 8 (see <xref target="RFC8422"/>). | T</bcp14> contain the "Intrinsic" value 8 (see <xref target="RFC8422" format="de | |||
| </t> | fault" sectionFormat="of" derivedContent="RFC8422"/>). | |||
| <t> | </t> | |||
| <t indent="0" pn="section-5-6"> | ||||
| So, to represent gostr34102012_256 and gostr34102012_512 in the signature_algorithms extension, the value shall be (8,64) and (8,65), respective ly. | So, to represent gostr34102012_256 and gostr34102012_512 in the signature_algorithms extension, the value shall be (8,64) and (8,65), respective ly. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="SGR" title="New Values for the Supported Groups Regist | <section anchor="SGR" numbered="true" toc="include" removeInRFC="false" pn=" | |||
| ry"> | section-6"> | |||
| <t> | <name slugifiedName="name-new-values-for-the-tls-supp">New Values for the | |||
| TLS Supported Groups Registry</name> | ||||
| <t indent="0" pn="section-6-1"> | ||||
| The Supported Groups Extension indicates the set of elliptic cur ves supported by the client and | The Supported Groups Extension indicates the set of elliptic cur ves supported by the client and | |||
| is defined in <xref target="RFC8422"/> and <xref target="RFC7919 | is defined in <xref target="RFC8422" format="default" sectionFor | |||
| "/>. | mat="of" derivedContent="RFC8422"/> and <xref target="RFC7919" format="default" | |||
| </t> | sectionFormat="of" derivedContent="RFC7919"/>. | |||
| <t> | </t> | |||
| This document defines new values for the "Supported Groups" regi | <t indent="0" pn="section-6-2"> | |||
| stry: | This document defines new values for the "TLS Supported Groups" | |||
| </t> | registry: | |||
| <t> | </t> | |||
| <figure> | <sourcecode name="" type="asn.1" markers="false" pn="section-6-3"> | |||
| <artwork> | ||||
| <![CDATA[ | ||||
| enum { | enum { | |||
| GC256A(34), GC256B(35), GC256C(36), GC256D(37), | GC256A(34), GC256B(35), GC256C(36), GC256D(37), | |||
| GC512A(38), GC512B(39), GC512C(40), | GC512A(38), GC512B(39), GC512C(40), | |||
| } NamedGroup; | } NamedGroup; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-6-4"> | |||
| </figure> | where the values correspond to the following curves: | |||
| </t> | </t> | |||
| <table anchor="tab-2" align="center" pn="table-2"> | ||||
| <t> | <thead> | |||
| Where the values corresponds to the following curves: | <tr> | |||
| </t> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| <t> | <th align="left" colspan="1" rowspan="1">Curve Identifier Value</th> | |||
| <figure> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| <artwork> | </tr> | |||
| <![CDATA[ | </thead> | |||
| +-------------+--------------------------------------+-----------+ | <tbody> | |||
| | Description | Curve Identifier Value | Reference | | <tr> | |||
| +-------------+--------------------------------------+-----------+ | <td align="left" colspan="1" rowspan="1">GC256A</td> | |||
| | GC256A | id-tc26-gost-3410-2012-256-paramSetA | RFC 7836 | | <td align="left" colspan="1" rowspan="1">id-tc26-gost-3410-2012-256- | |||
| +-------------+--------------------------------------+-----------+ | paramSetA</td> | |||
| | GC256B |id-GostR3410-2001-CryptoPro-A-ParamSet| RFC 4357 | | <td align="left" colspan="1" rowspan="1"> | |||
| +-------------+--------------------------------------+-----------+ | <xref target="RFC7836" format="default" sectionFormat="of" derived | |||
| | GC256C |id-GostR3410-2001-CryptoPro-B-ParamSet| RFC 4357 | | Content="RFC7836"/> </td> | |||
| +-------------+--------------------------------------+-----------+ | </tr> | |||
| | GC256D |id-GostR3410-2001-CryptoPro-C-ParamSet| RFC 4357 | | <tr> | |||
| +-------------+--------------------------------------+-----------+ | <td align="left" colspan="1" rowspan="1">GC256B</td> | |||
| | GC512A | id-tc26-gost-3410-12-512-paramSetA | RFC 7836 | | <td align="left" colspan="1" rowspan="1">id-GostR3410-2001-CryptoPro | |||
| +-------------+--------------------------------------+-----------+ | -A-ParamSet</td> | |||
| | GC512B | id-tc26-gost-3410-12-512-paramSetB | RFC 7836 | | <td align="left" colspan="1" rowspan="1"> | |||
| +-------------+--------------------------------------+-----------+ | <xref target="RFC4357" format="default" sectionFormat="of" derived | |||
| | GC512C | id-tc26-gost-3410-2012-512-paramSetC | RFC 7836 | | Content="RFC4357"/></td> | |||
| +-------------+--------------------------------------+-----------+ | </tr> | |||
| Table 2 | <tr> | |||
| ]]> | <td align="left" colspan="1" rowspan="1">GC256C</td> | |||
| </artwork> | <td align="left" colspan="1" rowspan="1">id-GostR3410-2001-CryptoPro | |||
| </figure> | -B-ParamSet</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1"> | |||
| </section> | <xref target="RFC4357" format="default" sectionFormat="of" derived | |||
| <section anchor="CTIR" title="New Values for the ClientCertificateType | Content="RFC4357"/> </td> | |||
| Identifiers Registry"> | </tr> | |||
| <t> | <tr> | |||
| The ClientCertificateType field of the CertificateRequest messag | <td align="left" colspan="1" rowspan="1">GC256D</td> | |||
| e contains a list of the types of certificate types that the client may | <td align="left" colspan="1" rowspan="1">id-GostR3410-2001-CryptoPro | |||
| offer and is defined in Section 7.4.4 of <xref target="RFC5246"/ | -C-ParamSet</td> | |||
| >. | <td align="left" colspan="1" rowspan="1"> | |||
| </t> | <xref target="RFC4357" format="default" sectionFormat="of" derived | |||
| <t> | Content="RFC4357"/></td> | |||
| This document defines new values for the "ClientCertificateType | </tr> | |||
| Identifiers" registry: | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">GC512A</td> | |||
| <t> | <td align="left" colspan="1" rowspan="1"> id-tc26-gost-3410-12-512- | |||
| <figure> | paramSetA</td> | |||
| <artwork> | <td align="left" colspan="1" rowspan="1"> | |||
| <![CDATA[ | <xref target="RFC7836" format="default" sectionFormat="of" derived | |||
| Content="RFC7836"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">GC512B</td> | ||||
| <td align="left" colspan="1" rowspan="1">id-tc26-gost-3410-12-512-pa | ||||
| ramSetB</td> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <xref target="RFC7836" format="default" sectionFormat="of" derived | ||||
| Content="RFC7836"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">GC512C</td> | ||||
| <td align="left" colspan="1" rowspan="1"> id-tc26-gost-3410-2012-512 | ||||
| -paramSetC</td> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <xref target="RFC7836" format="default" sectionFormat="of" derived | ||||
| Content="RFC7836"/></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="CTIR" numbered="true" toc="include" removeInRFC="false" pn= | ||||
| "section-7"> | ||||
| <name slugifiedName="name-new-values-for-the-tls-clie">New Values for the | ||||
| TLS ClientCertificateType Identifiers Registry</name> | ||||
| <t indent="0" pn="section-7-1"> | ||||
| The ClientCertificateType field of the CertificateRequest messag | ||||
| e contains a list of certificate types that the client may | ||||
| offer and is defined in <xref target="RFC5246" section="7.4.4" s | ||||
| ectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc52 | ||||
| 46#section-7.4.4" derivedContent="RFC5246"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-7-2"> | ||||
| This document defines new values for the "TLS ClientCertificateT | ||||
| ype Identifiers" registry: | ||||
| </t> | ||||
| <sourcecode name="" type="asn.1" markers="false" pn="section-7-3"> | ||||
| enum { | enum { | |||
| gost_sign256(67), | gost_sign256(67), | |||
| gost_sign512(68), | gost_sign512(68), | |||
| } ClientCertificateType; | } ClientCertificateType; | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-7-4"> | |||
| </figure> | To use the gost_sign256 or gost_sign512 authentication mechanism | |||
| </t> | , the client <bcp14>MUST</bcp14> possess a | |||
| <t> | certificate containing a GOST R 34.10-2012-capable public key th | |||
| To use the gost_sign256 or gost_sign512 authentication mechanism | at corresponds to the 32-byte (256-bit) or 64-byte (512-bit) signature key, resp | |||
| , the client MUST possess a | ectively. | |||
| certificate containing a GOST R 34.10-2012-capable public key th | </t> | |||
| at corresponds to the 32-byte (256-bit) or 64-byte (512-bit) signature key respe | <t indent="0" pn="section-7-5"> | |||
| ctively. | ||||
| </t> | ||||
| <t> | ||||
| The client proves possession of the private key corresponding to the | The client proves possession of the private key corresponding to the | |||
| certified key by including a signature in the CertificateVerify | certified key by including a signature in the CertificateVerify | |||
| message as described in <xref target="CertVer"/>. | message as described in <xref target="CertVer" format="default" | |||
| </t> | sectionFormat="of" derivedContent="Section 4.2.5"/>. | |||
| </section> | </t> | |||
| </section> | ||||
| <section anchor ="UA" title="Additional Algorithms"> | <section anchor="UA" numbered="true" toc="include" removeInRFC="false" pn="s | |||
| <t> | ection-8"> | |||
| <name slugifiedName="name-additional-algorithms">Additional Algorithms</na | ||||
| me> | ||||
| <t indent="0" pn="section-8-1"> | ||||
| The cipher suites specified in this document rely on some additi onal algorithms, specified below; the use of these algorithms is not confined to the use in TLS specified in this document. | The cipher suites specified in this document rely on some additi onal algorithms, specified below; the use of these algorithms is not confined to the use in TLS specified in this document. | |||
| </t> | </t> | |||
| <section anchor ="TLSTREE" title ="TLSTREE"> | <section anchor="TLSTREE" numbered="true" toc="include" removeInRFC="false | |||
| <t> | " pn="section-8.1"> | |||
| <name slugifiedName="name-tlstree">TLSTREE</name> | ||||
| <t indent="0" pn="section-8.1-1"> | ||||
| The TLSTREE function is defined as follows: | The TLSTREE function is defined as follows: | |||
| <list style = "empty"> | </t> | |||
| <t> | <sourcecode name="" type="" markers="false" pn="section-8.1-2"> | |||
| TLSTREE(K_root, i) = KDF_3(KDF_2(KDF_1(K_root, STR_8 | TLSTREE(K_root, i) = KDF_3(KDF_2(KDF_1(K_root, STR_8(i & C_1)), | |||
| (i & C_1)), STR_8(i & C_2)), STR_8(i & C_3)), | STR_8(i & C_2)), STR_8(i & C_3)), | |||
| </t> | </sourcecode> | |||
| </list> | <t indent="0" pn="section-8.1-3"> | |||
| </t> | ||||
| <t> | ||||
| where | where | |||
| <list style = "symbols"> | </t> | |||
| <t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8 | |||
| K_root in B_32; | .1-4"> | |||
| </t> | <li pn="section-8.1-4.1"> K_root in B_32; | |||
| <t> | </li> | |||
| i in {0, 1, ... , 2^64 - 1}; | <li pn="section-8.1-4.2"> i in {0, 1, ... , 2<sup>64</sup> - 1}; | |||
| </t> | </li> | |||
| <t> | <li pn="section-8.1-4.3"> C_1, C_2, C_3 are constants defined by the p | |||
| C_1, C_2, C_3 are constants defined by the particula | articular cipher suite (see <xref target="TreeParam" format="default" sectionFor | |||
| r cipher suite (see <xref target="TreeParam"/>); | mat="of" derivedContent="Section 8.1.1"/>); | |||
| </t> | </li> | |||
| <t> | <li pn="section-8.1-4.4"> | |||
| <t indent="0" pn="section-8.1-4.4.1"> | ||||
| KDF_j(K, D), j = 1, 2, 3, K in B_32, | KDF_j(K, D), j = 1, 2, 3, K in B_32, | |||
| D in B_8, is the key derivation function based on th e KDF_GOSTR3411_2012_256 | D in B_8, is the key derivation function based on th e KDF_GOSTR3411_2012_256 | |||
| function defined in <xref target="RFC7836"/>:<vspace | function defined in <xref target="RFC7836" format="default" sectionF | |||
| /> | ormat="of" derivedContent="RFC7836"/>:</t> | |||
| <vspace/> | <sourcecode name="" type="" markers="false" pn="section-8.1-4.4.2"> | |||
| KDF_1(K, D) = KDF_GOSTR3411_2012_256(K, "level1", D) | KDF_1(K, D) = KDF_GOSTR3411_2012_256(K, "level1", D); | |||
| ;<vspace/> | ||||
| KDF_2(K, D) = KDF_GOSTR3411_2012_256(K, "level2", D) | ||||
| ;<vspace/> | ||||
| KDF_3(K, D) = KDF_GOSTR3411_2012_256(K, "level3", D) | ||||
| . | ||||
| <vspace/> | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <section anchor="TreeParam" title="Key Tree Parameters"> | ||||
| <t> | ||||
| The CTR_OMAC cipher suites use the TLSTREE function for | ||||
| the re-keying approach. The constants for it | ||||
| are defined as in the table below. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +--------------------------------------------+----------------------+ | ||||
| | CipherSuites | C_1, C_2, C_3 | | ||||
| +--------------------------------------------+----------------------+ | ||||
| |TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC|C_1=0xFFFFFFFF00000000| | ||||
| | |C_2=0xFFFFFFFFFFF80000| | ||||
| | |C_3=0xFFFFFFFFFFFFFFC0| | ||||
| +--------------------------------------------+----------------------+ | ||||
| |TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC |C_1=0xFFFFFFC000000000| | ||||
| | |C_2=0xFFFFFFFFFE000000| | ||||
| | |C_3=0xFFFFFFFFFFFFF000| | ||||
| +--------------------------------------------+----------------------+ | ||||
| Table 3 | ||||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor ="KEXP" title="Key export and key import algorithms" | KDF_2(K, D) = KDF_GOSTR3411_2012_256(K, "level2", D); and | |||
| > | ||||
| <section anchor ="KExpImp15" title="KExp15 and KImp15 Algorithms | KDF_3(K, D) = KDF_GOSTR3411_2012_256(K, "level3", D). | |||
| "> | </sourcecode> | |||
| <t> | </li> | |||
| </ul> | ||||
| <section anchor="TreeParam" numbered="true" toc="include" removeInRFC="f | ||||
| alse" pn="section-8.1.1"> | ||||
| <name slugifiedName="name-key-tree-parameters">Key Tree Parameters</na | ||||
| me> | ||||
| <t indent="0" pn="section-8.1.1-1"> | ||||
| The CTR_OMAC cipher suites use the TLSTREE function for | ||||
| the rekeying approach. The constants for it | ||||
| are defined as in the table below. | ||||
| </t> | ||||
| <table align="center" pn="table-3"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left" colspan="1" rowspan="1">Cipher Suites</th> | ||||
| <th align="left" colspan="1" rowspan="1">C_1, C_2, C_3</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WIT | ||||
| H_KUZNYECHIK_CTR_OMAC</td> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <ul empty="true" bare="true" spacing="compact" indent="3" pn=" | ||||
| section-8.1.1-2.2.1.2.1"> | ||||
| <li pn="section-8.1.1-2.2.1.2.1.1">C_1=0xFFFFFFFF00000000</l | ||||
| i> | ||||
| <li pn="section-8.1.1-2.2.1.2.1.2">C_2=0xFFFFFFFFFFF80000</l | ||||
| i> | ||||
| <li pn="section-8.1.1-2.2.1.2.1.3">C_3=0xFFFFFFFFFFFFFFC0</l | ||||
| i> | ||||
| </ul> | ||||
| </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WIT | ||||
| H_MAGMA_CTR_OMAC</td> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <ul empty="true" bare="true" spacing="compact" indent="3" pn=" | ||||
| section-8.1.1-2.2.2.2.1"> | ||||
| <li pn="section-8.1.1-2.2.2.2.1.1">C_1=0xFFFFFFC000000000</l | ||||
| i> | ||||
| <li pn="section-8.1.1-2.2.2.2.1.2">C_2=0xFFFFFFFFFE000000</l | ||||
| i> | ||||
| <li pn="section-8.1.1-2.2.2.2.1.3">C_3=0xFFFFFFFFFFFFF000</l | ||||
| i> | ||||
| </ul> | ||||
| </td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="KEXP" numbered="true" toc="include" removeInRFC="false" p | ||||
| n="section-8.2"> | ||||
| <name slugifiedName="name-key-export-and-key-import-a">Key Export and Ke | ||||
| y Import Algorithms</name> | ||||
| <section anchor="KExpImp15" numbered="true" toc="include" removeInRFC="f | ||||
| alse" pn="section-8.2.1"> | ||||
| <name slugifiedName="name-kexp15-and-kimp15-algorithm">KExp15 and KImp | ||||
| 15 Algorithms</name> | ||||
| <t indent="0" pn="section-8.2.1-1"> | ||||
| Algorithms KExp15 and KImp15 use the block cipher determined by the particular cipher suite. | Algorithms KExp15 and KImp15 use the block cipher determined by the particular cipher suite. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-8.2.1-2"> | |||
| The KExp15 key export algorithm is defined as follows. | The KExp15 key export algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.2.1-3"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| | KExp15(S, K_Exp_MAC, K_Exp_ENC, IV) | | | KExp15(S, K_Exp_MAC, K_Exp_ENC, IV) | | |||
| |------------------------------------------------------------| | |------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - secret S to be exported, S in B*, | | | - secret S to be exported, S in B*, | | |||
| | - key K_Exp_MAC in B_k, | | | - key K_Exp_MAC in B_k, | | |||
| | - key K_Exp_ENC in B_k, | | | - key K_Exp_ENC in B_k, | | |||
| | - IV in B_{n/2} | | | - IV in B_{n/2} | | |||
| | Output: | | | Output: | | |||
| | - export representation SExp in B_{L(S)+n} | | | - export representation SExp in B_{L(S)+n} | | |||
| |------------------------------------------------------------| | |------------------------------------------------------------| | |||
| | 1. CEK_MAC = OMAC(K_Exp_MAC, IV | S), CEK_MAC in B_n | | | 1. CEK_MAC = OMAC(K_Exp_MAC, IV | S), CEK_MAC in B_n | | |||
| | 2. SExp = CTR-Encrypt(K_Exp_ENC, IV, S | CEK_MAC) | | | 2. SExp = CTR-Encrypt(K_Exp_ENC, IV, S | CEK_MAC) | | |||
| | 3. return SExp | | | 3. return SExp | | |||
| +------------------------------------------------------------+ | +------------------------------------------------------------+ | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-8.2.1-4"> | |||
| </figure> | where the OMAC function is defined in <xref target="MODES" f | |||
| </t> | ormat="default" sectionFormat="of" derivedContent="MODES"/> and | |||
| <t> | the CTR-Encrypt(K, IV, S) function denotes the encryption of | |||
| where the OMAC function is defined in <xref target="MODES"/> | message S on key K and nonce IV in the CTR mode with s = n (see <xref target="M | |||
| , | ODES" format="default" sectionFormat="of" derivedContent="MODES"/>). | |||
| the CTR-Encrypt(K, IV, S) function denotes the encryption of | </t> | |||
| message S on key K and nonce IV in the CTR mode with s = n (see <xref target="M | <t indent="0" pn="section-8.2.1-5"> | |||
| ODES"/>). | The KImp15 key import algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.2.1-6"> | |||
| The KImp15 key import algorithm is defined as follows. | ||||
| </t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | KImp15(SExp, K_Exp_MAC, K_Exp_ENC, IV) | | | KImp15(SExp, K_Exp_MAC, K_Exp_ENC, IV) | | |||
| |-------------------------------------------------------------------| | |-------------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - export representation SExp in B* | | | - export representation SExp in B* | | |||
| | - key K_Exp_MAC in B_k, | | | - key K_Exp_MAC in B_k, | | |||
| | - key K_Exp_ENC in B_k, | | | - key K_Exp_ENC in B_k, | | |||
| | - IV in B_{n/2} | | | - IV in B_{n/2} | | |||
| | Output: | | | Output: | | |||
| | - secret S in B_{L(SExp)-n} or FAIL | | | - secret S in B_{L(SExp)-n} or FAIL | | |||
| |-------------------------------------------------------------------| | |-------------------------------------------------------------------| | |||
| | 1. S | CEK_MAC = CTR-Decrypt(K_Exp_ENC, IV, SExp), CEK_MAC in B_n| | | 1. S | CEK_MAC = CTR-Decrypt(K_Exp_ENC, IV, SExp), CEK_MAC in B_n| | |||
| | 2. If CEK_MAC = OMAC(K_Exp_MAC, IV | S) | | | 2. If CEK_MAC = OMAC(K_Exp_MAC, IV | S) | | |||
| | then return S; else return FAIL | | | then return S; else return FAIL | | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| ]]> | </sourcecode> | |||
| </artwork> | <t indent="0" pn="section-8.2.1-7"> | |||
| </figure> | where the OMAC function is defined in <xref target="MODES" f | |||
| </t> | ormat="default" sectionFormat="of" derivedContent="MODES"/> and | |||
| <t> | the CTR-Decrypt(K, IV, S) function denotes the decryption of | |||
| where the OMAC function is defined in <xref target="MODES"/> | message S on key K and nonce IV in the CTR mode (see <xref target="MODES" forma | |||
| , | t="default" sectionFormat="of" derivedContent="MODES"/>). | |||
| the CTR-Decrypt(K, IV, S) function denotes the decryption of | </t> | |||
| message S on key K and nonce IV in the CTR mode (see <xref target="MODES"/>). | <t indent="0" pn="section-8.2.1-8"> | |||
| </t> | The keys K_Exp_MAC and K_Exp_ENC <bcp14>MUST</bcp14> be inde | |||
| <t> | pendent. For every pair of keys (K_Exp_ENC, K_Exp_MAC), the IV values <bcp14>MUS | |||
| The keys K_Exp_MAC and K_Exp_ENC MUST be independent. For ev | T</bcp14> be unique. | |||
| ery pair of keys (K_Exp_ENC, K_Exp_MAC) the IV values MUST be unique. | For the import of a key with the KImp15 algorithm, the IV va | |||
| For the import of key with the KImp15 algorithm, the IV valu | lue may be sent with the export key representation. | |||
| e may be sent with the export key representation. | </t> | |||
| </t> | </section> | |||
| </section> | <section anchor="KExpImp28147" numbered="true" toc="include" removeInRFC | |||
| ="false" pn="section-8.2.2"> | ||||
| <section anchor ="KExpImp28147" title="KExp28147 and KImp28147 A | <name slugifiedName="name-kexp28147-and-kimp28147-alg">KExp28147 and K | |||
| lgorithms"> | Imp28147 Algorithms</name> | |||
| <t> | <t indent="0" pn="section-8.2.2-1"> | |||
| The KExp28147 key export algorithm is defined as follows | The KExp28147 key export algorithm is defined as follows | |||
| . | : | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.2.2-2"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KExp28147(S, K, IV) | | | KExp28147(S, K, IV) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - secret S to be exported, S in B_32, | | | - secret S to be exported, S in B_32, | | |||
| | - key K in B_32, | | | - key K in B_32, | | |||
| | - IV in B_8. | | | - IV in B_8. | | |||
| | Output: | | | Output: | | |||
| | - export representation SExp in B_44 | | | - export representation SExp in B_44 | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. CEK_MAC = gost28147IMIT(IV, K, S), CEK_MAC in B_4 | | | 1. CEK_MAC = gost28147IMIT(IV, K, S), CEK_MAC in B_4 | | |||
| | 2. CEK_ENC = ECB-Encrypt(K, S), CEK_ENC in B_32 | | | 2. CEK_ENC = ECB-Encrypt(K, S), CEK_ENC in B_32 | | |||
| | 3. return SExp = IV | CEK_ENC | CEK_MAC | | | 3. return SExp = IV | CEK_ENC | CEK_MAC | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.2.2-3"> | |||
| </t> | where the gost28147IMIT function is defined in <xref tar | |||
| <t> | get="IMIT" format="default" sectionFormat="of" derivedContent="Section 8.4"/> an | |||
| where the gost28147IMIT function is defined in <xref tar | d | |||
| get="IMIT"/>, | the ECB-Encrypt(K, S) function denotes the encryption of | |||
| the ECB-Encrypt(K, S) function denotes the encryption of | message S on key K with the block cipher GOST 28147-89 in the electronic codebo | |||
| message S on key K with the block cipher GOST 28147-89 in the ECB mode (see <xr | ok (ECB) mode (see <xref target="RFC5830" format="default" sectionFormat="of" de | |||
| ef target ="RFC5830"/>). | rivedContent="RFC5830"/>). | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-8.2.2-4"> | |||
| The KImp28147 key import algorithm is defined as follows | The KImp28147 key import algorithm is defined as follows | |||
| . | : | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.2.2-5"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KImp28147(SExp, K, IV) | | | KImp28147(SExp, K, IV) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - export representation SExp in B_44, | | | - export representation SExp in B_44, | | |||
| | - key K in B_32, | | | - key K in B_32, | | |||
| | - IV in B_8. | | | - IV in B_8. | | |||
| | Output: | | | Output: | | |||
| | - imported secret S in B_32 or FAIL | | | - imported secret S in B_32 or FAIL | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. extract from SExp | | | 1. extract from SExp | | |||
| | IV' = SExp[1..8], | | | IV' = SExp[1..8], | | |||
| | CEK_ENC = SExp[9..40], | | | CEK_ENC = SExp[9..40], | | |||
| | CEK_MAC = SExp[41..44] | | | CEK_MAC = SExp[41..44] | | |||
| | 2. if IV' != IV then return FAIL; else | | | 2. if IV' != IV then return FAIL; else | | |||
| | 3. S = ECB-Decrypt(K, CEK_ENC), S in B_32 | | | 3. S = ECB-Decrypt(K, CEK_ENC), S in B_32 | | |||
| | 4. If CEK_MAC = gost28147IMIT(IV, K, S) | | | 4. If CEK_MAC = gost28147IMIT(IV, K, S) | | |||
| | then return S; else return FAIL | | | then return S; else return FAIL | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.2.2-6"> | |||
| </t> | where the gost28147IMIT function is defined in <xref tar | |||
| <t> | get="IMIT" format="default" sectionFormat="of" derivedContent="Section 8.4"/> an | |||
| where the gost28147IMIT function is defined in <xref tar | d | |||
| get="IMIT"/>, | the ECB-Decrypt(CEK_ENC, M) function denotes the decrypt | |||
| the ECB-Decrypt(CEK_ENC, M) function denotes the decrypt | ion of ciphertext CEK_ENC on key K with a block cipher GOST 28147-89 in the ECB | |||
| ion of ciphertext CEK_ENC on key K with a block cipher GOST 28147-89 in the ECB | mode (see <xref target="RFC5830" format="default" sectionFormat="of" derivedCont | |||
| mode (see <xref target ="RFC5830"/>). | ent="RFC5830"/>). | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="KEGAlgs" numbered="true" toc="include" removeInRFC="false | ||||
| <section anchor ="KEGAlgs" title="Key Exchange Generation Algorithms | " pn="section-8.3"> | |||
| "> | <name slugifiedName="name-key-exchange-generation-alg">Key Exchange Gene | |||
| <section anchor ="KEG" title="KEG Algorithm"> | ration Algorithms</name> | |||
| <t> | <section anchor="KEG" numbered="true" toc="include" removeInRFC="false" | |||
| pn="section-8.3.1"> | ||||
| <name slugifiedName="name-keg-algorithm">KEG Algorithm</name> | ||||
| <t indent="0" pn="section-8.3.1-1"> | ||||
| The KEG algorithm is defined as follows: | The KEG algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.3.1-2"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KEG(d, Q, H) | | | KEG(d, Q, H) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - private key d, | | | - private key d, | | |||
| | - public key Q, | | | - public key Q, | | |||
| | - H in B_32. | | | - H in B_32. | | |||
| | Output: | | | Output: | | |||
| | - key material K in B_64. | | | - key material K in B_64. | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. If q * Q is not equal to zero point | | | 1. If q * Q is not equal to zero point | | |||
| | return FAIL | | | return FAIL | | |||
| | 2. If 2^{254} < q < 2^{256} | | | 2. If 2^254 < q < 2^256 | | |||
| | return KEG_256(d, Q, H) | | | return KEG_256(d, Q, H) | | |||
| | 3. If 2^{508} < q < 2^{512} | | | 3. If 2^508 < q < 2^512 | | |||
| | return KEG_512(d, Q, H) | | | return KEG_512(d, Q, H) | | |||
| | 4. return FAIL | | | 4. return FAIL | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.3.1-3"> | |||
| </t> | ||||
| <t> | ||||
| where q is an order of a cyclic subgroup of elliptic cur ve points group containing point Q, d in {1, ... , q - 1}. | where q is an order of a cyclic subgroup of elliptic cur ve points group containing point Q, d in {1, ... , q - 1}. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-8.3.1-4"> | |||
| The KEG_256 algorithm is defined as follows: | The KEG_256 algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.3.1-5"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KEG_256(d, Q, H) | | | KEG_256(d, Q, H) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - private key d, | | | - private key d, | | |||
| | - public key Q, | | | - public key Q, | | |||
| | - H in B_32. | | | - H in B_32. | | |||
| | Output: | | | Output: | | |||
| | - key material K in B_64. | | | - key material K in B_64. | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. r = INT(H[1..16]) | | | 1. r = INT(H[1..16]) | | |||
| | 2. If r = 0 | | | 2. If r = 0 | | |||
| | UKM = 1; else UKM = r | | | UKM = 1; else UKM = r | | |||
| | 3. K_EXP = VKO_256(d, Q, UKM) | | | 3. K_EXP = VKO_256(d, Q, UKM) | | |||
| | 4. seed = H[17..24] | | | 4. seed = H[17..24] | | |||
| | 5. return KDFTREE_256(K_EXP, "kdf tree", seed, 1) | | | 5. return KDFTREE_256(K_EXP, "kdf tree", seed, 1) | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.3.1-6"> | |||
| </t> | where VKO_256 is the function VKO_GOSTR3410_2012_256 def | |||
| <t> | ined in <xref target="RFC7836" format="default" sectionFormat="of" derivedConten | |||
| where VKO_256 is the function VKO_GOSTR3410_2012_256 def | t="RFC7836"/> and | |||
| ined in <xref target="RFC7836"/> and | KDFTREE_256 is the KDF_TREE_GOSTR3411_2012_256 function | |||
| KDFTREE_256 is the KDF_TREE_GOSTR3411_2012_256 function | defined in <xref target="RFC7836" format="default" sectionFormat="of" derivedCon | |||
| defined in <xref target="RFC7836"/> with the parameter L equal to 512. | tent="RFC7836"/> with the parameter L equal to 512. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-8.3.1-7"> | |||
| The KEG_512 algorithm is defined as follows: | The KEG_512 algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.3.1-8"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KEG_512(d, Q, H) | | | KEG_512(d, Q, H) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - private key d, | | | - private key d, | | |||
| | - public key Q, | | | - public key Q, | | |||
| | - H in B_32. | | | - H in B_32. | | |||
| | Output: | | | Output: | | |||
| | - key material K in B_64. | | | - key material K in B_64. | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. r = INT(H[1..16]) | | | 1. r = INT(H[1..16]) | | |||
| | 2. If r = 0 | | | 2. If r = 0 | | |||
| | UKM = 1; else UKM = r | | | UKM = 1; else UKM = r | | |||
| | 3. return VKO_512(d, Q, UKM) | | | 3. return VKO_512(d, Q, UKM) | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.3.1-9"> | |||
| </t> | where VKO_512 is the VKO_GOSTR3410_2012_512 function def | |||
| <t> | ined in <xref target="RFC7836" format="default" sectionFormat="of" derivedConten | |||
| where VKO_512 is the VKO_GOSTR3410_2012_512 function def | t="RFC7836"/>. | |||
| ined in <xref target="RFC7836"/>. | </t> | |||
| </t> | </section> | |||
| </section> | <section anchor="KEG_28147" numbered="true" toc="include" removeInRFC="f | |||
| <section anchor ="KEG_28147" title="KEG_28147 Algorithm"> | alse" pn="section-8.3.2"> | |||
| <t> | <name slugifiedName="name-keg_28147-algorithm">KEG_28147 Algorithm</na | |||
| me> | ||||
| <t indent="0" pn="section-8.3.2-1"> | ||||
| The KEG_28147 algorithm is defined as follows: | The KEG_28147 algorithm is defined as follows: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="pseudocode" markers="false" pn="section-8.3.2-2"> | |||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | KEG_28147(d, Q, H) | | | KEG_28147(d, Q, H) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - private key d, | | | - private key d, | | |||
| | - public key Q, | | | - public key Q, | | |||
| | - H in B_32. | | | - H in B_32. | | |||
| | Output: | | | Output: | | |||
| | - key material K in B_32. | | | - key material K in B_32. | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. If q * Q is not equal to zero point | | | 1. If q * Q is not equal to zero point | | |||
| | return FAIL | | | return FAIL | | |||
| | 2. UKM = H[1..8] | | | 2. UKM = H[1..8] | | |||
| | 3. R = VKO_256(d, Q, int(UKM)) | | | 3. R = VKO_256(d, Q, int(UKM)) | | |||
| | 4. return K = CPDivers(UKM, R) | | | 4. return K = CPDivers(UKM, R) | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.3.2-3"> | |||
| </t> | where the VKO_256 function is equal to the VKO_GOSTR3410 | |||
| <t> | _2012_256 function defined in <xref target="RFC7836" format="default" sectionFor | |||
| where the VKO_256 function is equal to the VKO_GOSTR3410 | mat="of" derivedContent="RFC7836"/> and | |||
| _2012_256 function defined in <xref target="RFC7836"/>, | the CPDivers function corresponds to the CryptoPro KEK D | |||
| the CPDivers function corresponds to the CryptoPro KEK D | iversification Algorithm defined in <xref target="RFC4357" format="default" sect | |||
| iversification Algorithm defined in <xref target="RFC4357"/>, which takes as inp | ionFormat="of" derivedContent="RFC4357"/>, which takes as input the User Keying | |||
| ut the UKM value and the key value. | Material (UKM) value and the key value. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="IMIT" numbered="true" toc="include" removeInRFC="false" p | ||||
| <section anchor ="IMIT" title="gostIMIT28147"> | n="section-8.4"> | |||
| <t> | <name slugifiedName="name-gostimit28147">gostIMIT28147</name> | |||
| gost28147IMIT(IV, K, M) is a MAC algorithm with 4 bytes outpu | <t indent="0" pn="section-8.4-1"> | |||
| t and is defined as follows: | gost28147IMIT(IV, K, M) is a MAC algorithm with a 4-byte outp | |||
| </t> | ut and is defined as follows: | |||
| <t> | </t> | |||
| <figure> | <sourcecode type="pseudocode" markers="false" pn="section-8.4-2"> | |||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| | gost28147IMIT(IV, K, M) | | | gost28147IMIT(IV, K, M) | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | Input: | | | Input: | | |||
| | - initial value IV in B_8, | | | - initial value IV in B_8, | | |||
| | - key K in B_32, | | | - key K in B_32, | | |||
| | - message M in B*. | | | - message M in B*. | | |||
| | Output: | | | Output: | | |||
| | - MAC value T in B_4. | | | - MAC value T in B_4. | | |||
| |----------------------------------------------------------------| | |----------------------------------------------------------------| | |||
| | 1. M' = PAD(M) | | | 1. M' = PAD(M) | | |||
| | 2. M' = M'_0 | ... | M'_r, L(M'_i) = 8, i in {0, ... , r} | | | 2. M' = M'_0 | ... | M'_r, L(M'_i) = 8, i in {0, ... , r} | | |||
| | 3. M'' = (M'_0 XOR IV) | M'_1 | ... | M'_r | | | 3. M'' = (M'_0 XOR IV) | M'_1 | ... | M'_r | | |||
| | 4. return T = MAC28147(K, M'') | | | 4. return T = MAC28147(K, M'') | | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-8.4-3"> | |||
| </t> | ||||
| <t> | ||||
| where the PAD function is the padding function that adds m z ero bytes to the end of the message, | where the PAD function is the padding function that adds m z ero bytes to the end of the message, | |||
| where m is the smallest, non-negative solution to the equati | m is the smallest, non-negative solution to the equation (L( | |||
| on (L(M) + m) mod 8 = 0, | M) + m) mod 8 = 0, and | |||
| the MAC28147 function corresponds to Message Authentication | the MAC28147 function corresponds to the MAC generation mode | |||
| Code Generation Mode | defined in <xref target="RFC5830" format="default" sectionFo | |||
| defined in <xref target ="RFC5830"/> with 4 byte length outp | rmat="of" derivedContent="RFC5830"/> with a 4-byte length output. | |||
| ut. | </t> | |||
| </t> | </section> | |||
| </section> | </section> | |||
| </section> | <section anchor="IANACON" numbered="true" toc="include" removeInRFC="false" | |||
| pn="section-9"> | ||||
| <section anchor="IANACON" title="IANA Considerations"> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| <t> | <t indent="0" pn="section-9-1"> | |||
| IANA is asked to update the registry entries to reference this d | IANA has added the following values to the "TLS Cipher Suites" registry: | |||
| ocument when it is published as an RFC. | </t> | |||
| </t> | <table align="center" pn="table-4"> | |||
| <t> | <thead> | |||
| IANA has added numbers {0xC1, 0x00}, {0xC1, 0x01} and {0xC1, 0x0 | <tr> | |||
| 2} with the names | <th align="left" colspan="1" rowspan="1">Value</th> | |||
| TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC, | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC, | <th align="left" colspan="1" rowspan="1">DTLS-OK</th> | |||
| TLS_GOSTR341112_256_WITH_28147_CNT_IMIT to | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
| the "TLS Cipher Suite" registry with this document as reference, | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| as shown below. | </tr> | |||
| </t> | </thead> | |||
| <t> | <tbody> | |||
| <figure> | <tr> | |||
| <artwork> | <td align="left" colspan="1" rowspan="1">0xC1,0x00</td> | |||
| <![CDATA[ | <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WITH_K | |||
| +-------------+-----------------------------+---------+----------+ | UZNYECHIK_CTR_OMAC</td> | |||
| | Value | Description | DTLS-OK | Reference| | <td align="left" colspan="1" rowspan="1">N</td> | |||
| +-------------+-----------------------------+---------+----------+ | <td align="left" colspan="1" rowspan="1">N</td> | |||
| | 0xC1, 0x00 | TLS_GOSTR341112_256_ | N | this RFC | | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| | | _WITH_KUZNYECHIK_CTR_OMAC | | | | </tr> | |||
| +-------------+-----------------------------+---------+----------+ | <tr> | |||
| | 0xC1, 0x01 | TLS_GOSTR341112_256_ | N | this RFC | | <td align="left" colspan="1" rowspan="1">0xC1,0x01</td> | |||
| | | _WITH_MAGMA_CTR_OMAC | | | | <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WITH_M | |||
| +-------------+-----------------------------+---------+----------+ | AGMA_CTR_OMAC</td> | |||
| | 0xC1, 0x02 | TLS_GOSTR341112_256_ | N | this RFC | | <td align="left" colspan="1" rowspan="1">N</td> | |||
| | | _WITH_28147_CNT_IMIT | | | | <td align="left" colspan="1" rowspan="1">N</td> | |||
| +-------------+-----------------------------+---------+----------+ | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| Table 4 | </tr> | |||
| ]]></artwork> | <tr> | |||
| </figure> | <td align="left" colspan="1" rowspan="1"> 0xC1,0x02</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">TLS_GOSTR341112_256_WITH_2 | |||
| <t> | 8147_CNT_IMIT</td> | |||
| IANA has added numbers 64, 65 with the names | <td align="left" colspan="1" rowspan="1">N</td> | |||
| gostr34102012_256, | <td align="left" colspan="1" rowspan="1">N</td> | |||
| gostr34102012_512, | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| to the "TLS SignatureAlgorithm" registry, as shown below. | </tr> | |||
| </t> | </tbody> | |||
| <t> | </table> | |||
| <figure> | <t indent="0" pn="section-9-3"> | |||
| <artwork> | IANA has added the following values to the "TLS SignatureAlgorithm" regi | |||
| <![CDATA[ | stry: | |||
| +-----------+---------------------+---------+----------+ | </t> | |||
| | Value | Description | DTLS-OK | Reference| | <table align="center" pn="table-5"> | |||
| +-----------+---------------------+---------+----------+ | <thead> | |||
| | 64 | gostr34102012_256 | Y | this RFC | | <tr> | |||
| +-----------+---------------------+---------+----------+ | <th align="left" colspan="1" rowspan="1">Value</th> | |||
| | 65 | gostr34102012_512 | Y | this RFC | | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| +-----------+---------------------+---------+----------+ | <th align="left" colspan="1" rowspan="1">DTLS-OK</th> | |||
| Table 5 | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| ]]></artwork> | </tr> | |||
| </figure> | </thead> | |||
| </t> | <tbody> | |||
| <t> | <tr> | |||
| IANA is asked to reserve the numbers 0x0840, 0x0841 for backward | <td align="left" colspan="1" rowspan="1">64</td> | |||
| compatibility | <td align="left" colspan="1" rowspan="1">gostr34102012_256</td> | |||
| to the "TLS SignatureScheme" registry with this document as refe | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| rence, as shown below. | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| </t> | </tr> | |||
| <t> | <tr> | |||
| <figure> | <td align="left" colspan="1" rowspan="1">65</td> | |||
| <artwork> | <td align="left" colspan="1" rowspan="1">gostr34102012_512</td> | |||
| <![CDATA[ | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| +--------+-------------------------------------+----------+---------+ | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| | Value | Description |Recomended|Reference| | </tr> | |||
| +--------+-------------------------------------+----------+---------+ | </tbody> | |||
| | 0x0840 | Reserved for backward compatibility | N |this RFC | | </table> | |||
| +--------+-------------------------------------+----------+---------+ | <t indent="0" pn="section-9-5"> | |||
| | 0x0841 | Reserved for backward compatibility | N |this RFC | | IANA has added the following values to the "TLS SignatureScheme" registr | |||
| +--------+-------------------------------------+----------+---------+ | y: | |||
| Table 6 | </t> | |||
| ]]></artwork> | <table align="center" pn="table-6"> | |||
| </figure> | <thead> | |||
| </t> | <tr> | |||
| <t> | <th align="left" colspan="1" rowspan="1">Value</th> | |||
| IANA is requested to add a note to the allocated TLS SignatureAl | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| gorithm values 64 and 65, reading "These values were allocated from the Reserved | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
| state due to a misunderstanding of the difference between Reserved and Unalloca | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| ted that went undetected for a long time. | </tr> | |||
| Additional allocations from the Reserved state are not expected, | </thead> | |||
| and the TLS SignatureScheme registry is suitable for use for new allocations in | <tbody> | |||
| stead of this registry". | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">0x0840</td> | |||
| <t> | <td align="left" colspan="1" rowspan="1">Reserved for backward compa | |||
| IANA has added numbers 34, 35, 36, 37, 38, 39, 40 with the names | tibility</td> | |||
| GC256A, | <td align="left" colspan="1" rowspan="1">N</td> | |||
| GC256B, | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| GC256C, | </tr> | |||
| GC256D, | <tr> | |||
| GC512A, | <td align="left" colspan="1" rowspan="1">0x0841</td> | |||
| GC512B, | <td align="left" colspan="1" rowspan="1">Reserved for backward compa | |||
| GC512C | tibility</td> | |||
| to the "TLS Supported Groups" registry, as shown below. | <td align="left" colspan="1" rowspan="1">N</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| <t> | </tr> | |||
| <figure> | </tbody> | |||
| <artwork> | </table> | |||
| <![CDATA[ | <t indent="0" pn="section-9-7"> | |||
| +-----------+----------------+---------+------------+-----------+ | IANA has also added the following footnote to values 64 and 65 in the "T | |||
| | Value | Description | DTLS-OK | Recomended | Reference | | LS SignatureAlgorithm" registry: | |||
| +-----------+----------------+---------+------------+-----------+ | </t> | |||
| | 34 | GC256A | Y | N | this RFC | | <blockquote pn="section-9-8">These values were allocated from the Reserved | |||
| +-----------+----------------+---------+------------+-----------+ | state due to a misunderstanding of the difference between Reserved and Unalloca | |||
| | 35 | GC256B | Y | N | this RFC | | ted that went undetected for a long time. | |||
| +-----------+----------------+---------+------------+-----------+ | Additional allocations from the Reserved state are not expected, | |||
| | 36 | GC256C | Y | N | this RFC | | and the TLS SignatureScheme registry is suitable for use for new allocations in | |||
| +-----------+----------------+---------+------------+-----------+ | stead of this registry. | |||
| | 37 | GC256D | Y | N | this RFC | | </blockquote> | |||
| +-----------+----------------+---------+------------+-----------+ | <t indent="0" pn="section-9-9"> | |||
| | 38 | GC512A | Y | N | this RFC | | IANA has added the following values to the "TLS Supported Groups" registr | |||
| +-----------+----------------+---------+------------+-----------+ | y: | |||
| | 39 | GC512B | Y | N | this RFC | | </t> | |||
| +-----------+----------------+---------+------------+-----------+ | <table align="center" pn="table-7"> | |||
| | 40 | GC512C | Y | N | this RFC | | <thead> | |||
| +-----------+----------------+---------+------------+-----------+ | <tr> | |||
| Table 7 | <th align="left" colspan="1" rowspan="1">Value</th> | |||
| ]]></artwork> | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| </figure> | <th align="left" colspan="1" rowspan="1">DTLS-OK</th> | |||
| </t> | <th align="left" colspan="1" rowspan="1">Recommended</th> | |||
| <t> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
| IANA has added numbers 67, 68 with the names gost_sign256, gost_ | </tr> | |||
| sign512 | </thead> | |||
| to the "ClientCertificateType Identifiers" registry, as shown be | <tbody> | |||
| low. | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">34</td> | |||
| <t> | <td align="left" colspan="1" rowspan="1">GC256A</td> | |||
| <figure> | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| <artwork> | <td align="left" colspan="1" rowspan="1">N</td> | |||
| <![CDATA[ | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| +-----------+---------------------+---------+----------+ | </tr> | |||
| | Value | Description | DTLS-OK | Reference| | <tr> | |||
| +-----------+---------------------+---------+----------+ | <td align="left" colspan="1" rowspan="1">35</td> | |||
| | 67 | gost_sign256 | Y | this RFC | | <td align="left" colspan="1" rowspan="1">GC256B</td> | |||
| +-----------+---------------------+---------+----------+ | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| | 68 | gost_sign512 | Y | this RFC | | <td align="left" colspan="1" rowspan="1">N</td> | |||
| +-----------+---------------------+---------+----------+ | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| Table 8 | </tr> | |||
| ]]> | <tr> | |||
| </artwork> | <td align="left" colspan="1" rowspan="1">36</td> | |||
| </figure> | <td align="left" colspan="1" rowspan="1">GC256C</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| </section> | <td align="left" colspan="1" rowspan="1">N</td> | |||
| <section anchor="Historical" title="Historical Considerations"> | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| <t> | </tr> | |||
| Note that prior to the existence of this document implementation | <tr> | |||
| s could use only the values from the Private Use space in order to use the GOST- | <td align="left" colspan="1" rowspan="1">37</td> | |||
| based algorithms. | <td align="left" colspan="1" rowspan="1">GC256D</td> | |||
| So some old implementations | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| can still use the old value {0xFF, 0x85} instead of the {0xC1, 0 | <td align="left" colspan="1" rowspan="1">N</td> | |||
| x02} value to indicate the TLS_GOSTR341112_256_WITH_28147_CNT_IMIT cipher suite; | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| one old value 0xEE instead of the values 64, 8 and 67 (to indica | </tr> | |||
| te the gostr34102012_256 signature algorithm, the Intrinsic hash algorithm and t | <tr> | |||
| he gost_sign256 certificate type respectively); | <td align="left" colspan="1" rowspan="1">38</td> | |||
| one old value 0xEF instead of the values 65, 8 and 68 (to indica | <td align="left" colspan="1" rowspan="1">GC512A</td> | |||
| te the gostr34102012_512 signature algorithm, the Intrinsic hash algorithm and t | <td align="left" colspan="1" rowspan="1">Y</td> | |||
| he gost_sign512 certificate type respectively). | <td align="left" colspan="1" rowspan="1">N</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">RFC 9189</td> | |||
| <t> | </tr> | |||
| Due to historical reasons in addition to the curve identifier va | <tr> | |||
| lues listed in Table 2 | <td align="left" colspan="1" rowspan="1">39</td> | |||
| <td align="left" colspan="1" rowspan="1">GC512B</td> | ||||
| <td align="left" colspan="1" rowspan="1">Y</td> | ||||
| <td align="left" colspan="1" rowspan="1">N</td> | ||||
| <td align="left" colspan="1" rowspan="1">RFC 9189</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">40</td> | ||||
| <td align="left" colspan="1" rowspan="1">GC512C</td> | ||||
| <td align="left" colspan="1" rowspan="1">Y</td> | ||||
| <td align="left" colspan="1" rowspan="1">N</td> | ||||
| <td align="left" colspan="1" rowspan="1">RFC 9189</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-9-11"> | ||||
| IANA has added the following values to the "TLS ClientCertificateType Ide | ||||
| ntifiers" registry: | ||||
| </t> | ||||
| <table align="center" pn="table-8"> | ||||
| <thead> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Value</td> | ||||
| <td align="left" colspan="1" rowspan="1">Description</td> | ||||
| <td align="left" colspan="1" rowspan="1">DTLS-OK</td> | ||||
| <td align="left" colspan="1" rowspan="1">Reference</td> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">67</td> | ||||
| <td align="left" colspan="1" rowspan="1">gost_sign256</td> | ||||
| <td align="left" colspan="1" rowspan="1">Y</td> | ||||
| <td align="left" colspan="1" rowspan="1">RFC 9189</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">68</td> | ||||
| <td align="left" colspan="1" rowspan="1">gost_sign512</td> | ||||
| <td align="left" colspan="1" rowspan="1">Y</td> | ||||
| <td align="left" colspan="1" rowspan="1">RFC 9189</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="Historical" numbered="true" toc="include" removeInRFC="fals | ||||
| e" pn="section-10"> | ||||
| <name slugifiedName="name-historical-considerations">Historical Considerat | ||||
| ions</name> | ||||
| <t indent="0" pn="section-10-1"> | ||||
| Note that prior to the existence of this document, implementations co | ||||
| uld use only the values from the "Private Use" space in order to use the GOST-ba | ||||
| sed algorithms. | ||||
| So some old implementations can still use the old value {0xFF, 0x85} | ||||
| instead of the {0xC1, 0x02} value to indicate the TLS_GOSTR341112_256_WITH_28147 | ||||
| _CNT_IMIT cipher suite; | ||||
| the old value 0xEE instead of the values 64, 8, and 67 (to indicate t | ||||
| he gostr34102012_256 signature algorithm, the Intrinsic hash algorithm, and the | ||||
| gost_sign256 certificate type, respectively); | ||||
| the old value 0xEF instead of the values 65, 8, and 68 (to indicate t | ||||
| he gostr34102012_512 signature algorithm, the Intrinsic hash algorithm, and the | ||||
| gost_sign512 certificate type, respectively). | ||||
| </t> | ||||
| <t indent="0" pn="section-10-2"> | ||||
| Due to historical reasons, in addition to the curve identifier v | ||||
| alues listed in <xref target="tab-2" format="default" sectionFormat="of" derived | ||||
| Content="Table 2"/>, | ||||
| there exist some extra identifier values that correspond to | there exist some extra identifier values that correspond to | |||
| the curves GC256B, GC256C and GC256D as follows (see <xref targe | the curves GC256B, GC256C, and GC256D as follows (see <xref targ | |||
| t =" RFC4357"/>, <xref target="R-1323565.1.024-2019"/>). | et="RFC4357" format="default" sectionFormat="of" derivedContent="RFC4357"/> and | |||
| </t> | <xref target="R-1323565.1.024-2019" format="default" sectionFormat="of" derivedC | |||
| <t> | ontent="R-1323565.1.024-2019"/>). | |||
| <figure> | </t> | |||
| <artwork> | <table align="center" pn="table-9"> | |||
| <![CDATA[ | <thead> | |||
| +-------------+-----------------------------------------+ | <tr> | |||
| | Description | Curve Identifier Values | | <th align="left" colspan="1" rowspan="1">Description</th> | |||
| +-------------+-----------------------------------------+ | <th align="left" colspan="1" rowspan="1">Curve Identifier Values</th | |||
| | GC256B |id-GostR3410_2001-CryptoPro-XchA-ParamSet| | > | |||
| | |id-tc26-gost-3410-2012-256-paramSetB | | </tr> | |||
| +-------------+-----------------------------------------+ | </thead> | |||
| | GC256C |id-tc26-gost-3410-2012-256-paramSetC | | <tbody> | |||
| +-------------+-----------------------------------------+ | <tr> | |||
| | GC256D |id-GostR3410-2001-CryptoPro-XchB-ParamSet| | <td align="left" colspan="1" rowspan="1">GC256B</td> | |||
| | |id-tc26-gost-3410-2012-256-paramSetD | | <td align="left" colspan="1" rowspan="1"> | |||
| +-------------+-----------------------------------------+ | <ul empty="true" bare="true" spacing="compact" indent="3" pn="sect | |||
| Table 9 | ion-10-3.2.1.2.1"> | |||
| ]]> | <li pn="section-10-3.2.1.2.1.1">id-GostR3410_2001-CryptoPro-XchA | |||
| </artwork> | -ParamSet</li> | |||
| </figure> | <li pn="section-10-3.2.1.2.1.2">id-tc26-gost-3410-2012-256-param | |||
| </t> | SetB</li> | |||
| <t> | </ul> | |||
| Client should be prepared to handle any of them correctly if cor | </td> | |||
| responding group is included in the supported_groups extension (see <xref target | </tr> | |||
| ="RFC8422"/> and <xref target="RFC7919"/>). | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">GC256C</td> | |||
| </section> | <td align="left" colspan="1" rowspan="1">id-tc26-gost-3410-2012-256- | |||
| paramSetC</td> | ||||
| <section anchor="Security" title="Security Considerations"> | </tr> | |||
| <t> | <tr> | |||
| <td align="left" colspan="1" rowspan="1">GC256D</td> | ||||
| <td align="left" colspan="1" rowspan="1"> | ||||
| <ul empty="true" bare="true" spacing="compact" indent="3" pn="sect | ||||
| ion-10-3.2.3.2.1"> | ||||
| <li pn="section-10-3.2.3.2.1.1">id-GostR3410-2001-CryptoPro-XchB | ||||
| -ParamSet</li> | ||||
| <li pn="section-10-3.2.3.2.1.2">id-tc26-gost-3410-2012-256-param | ||||
| SetD</li> | ||||
| </ul> | ||||
| </td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-10-4"> | ||||
| The client should be prepared to handle any of these correctly i | ||||
| f the corresponding group is included in the supported_groups extension (see <xr | ||||
| ef target="RFC8422" format="default" sectionFormat="of" derivedContent="RFC8422" | ||||
| /> and <xref target="RFC7919" format="default" sectionFormat="of" derivedContent | ||||
| ="RFC7919"/>). | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
| pn="section-11"> | ||||
| <name slugifiedName="name-security-considerations">Security Considerations | ||||
| </name> | ||||
| <t indent="0" pn="section-11-1"> | ||||
| The cipher suites defined in this document do not provide Perfec t Forward Secrecy. | The cipher suites defined in this document do not provide Perfec t Forward Secrecy. | |||
| </t> | </t> | |||
| <t> | <t indent="0" pn="section-11-2"> | |||
| The authenticate-then-encrypt method is crucial for the CNT_IMIT | ||||
| cipher suite. Encryption of the MAC value is conducted to reduce the possibilit | ||||
| y of forgery to guessing. | ||||
| Here the probability of guess is approximately equal to 2^{-32}, | ||||
| which is acceptable in some practical cases. | ||||
| </t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.2119.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5830.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5246.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7801.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.6986.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7091.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7627.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5746.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7836.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4357.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4490.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8422.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7919.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7366.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8645.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8174.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8446.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8891.xml' ?> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <reference anchor="IK2003"> | ||||
| <front> | ||||
| <title> | ||||
| OMAC: One-Key CBC MAC. | ||||
| </title> | ||||
| <author> | ||||
| <organization> | ||||
| Iwata T., Kurosawa K. (2003) | ||||
| </organization> | ||||
| </author> | ||||
| <date year="2003"/> | ||||
| </front> | ||||
| <seriesInfo name="FSE 2003. Lecture Notes in Computer Science, | ||||
| " value="vol 2887. Springer, Berlin, Heidelberg"/> | ||||
| </reference> | ||||
| <reference anchor="CMAC"> | The authenticate-then-encrypt method is crucial for the CNT_IMIT | |||
| <front> | cipher suite. Encryption of the MAC value is conducted to reduce the possibilit | |||
| <title> | y of forgery to guessing. | |||
| Recommendation for Block Cipher Modes of Operation: the | Here, the probability of a guess is approximately equal to 2<sup | |||
| CMAC Mode for Authentication | >-32</sup>, which is acceptable in some practical cases. | |||
| </title> | </t> | |||
| <author> | </section> | |||
| <organization> | </middle> | |||
| Dworkin, M. | <back> | |||
| </organization> | <displayreference target="I-D.smyshlyaev-tls13-gost-suites" to="DraftGostTLS | |||
| </author> | 13"/> | |||
| <date year="2005"/> | <displayreference target="I-D.ietf-tls-rfc8446bis" to="RFC8446bis"/> | |||
| </front> | <references pn="section-12"> | |||
| <seriesInfo name="NIST Special Publication" value="800-38B"/> | <name slugifiedName="name-references">References</name> | |||
| </reference> | <references pn="section-12.1"> | |||
| <name slugifiedName="name-normative-references">Normative References</na | ||||
| me> | ||||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="1997" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">In many standards track documents several words are | ||||
| used to signify the requirements in the specification. These words are often ca | ||||
| pitalized. This document defines these words as they should be interpreted in IE | ||||
| TF documents. This document specifies an Internet Best Current Practices for th | ||||
| e 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="RFC4357" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 357" quoteTitle="true" derivedAnchor="RFC4357"> | ||||
| <front> | ||||
| <title>Additional Cryptographic Algorithms for Use with GOST 28147-8 | ||||
| 9, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms</title> | ||||
| <author initials="V." surname="Popov" fullname="V. Popov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="I." surname="Kurepkin" fullname="I. Kurepkin"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Leontiev" fullname="S. Leontiev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2006" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the cryptographic algorithms | ||||
| and parameters supplementary to the original GOST specifications, GOST 28147-89 | ||||
| , GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94, for use in Internet a | ||||
| pplications. This memo provides information for the Internet community.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4357"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4357"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4490" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 490" quoteTitle="true" derivedAnchor="RFC4490"> | ||||
| <front> | ||||
| <title>Using the GOST 28147-89, GOST R 34.11-94, GOST R 34.10-94, an | ||||
| d GOST R 34.10-2001 Algorithms with Cryptographic Message Syntax (CMS)</title> | ||||
| <author initials="S." surname="Leontiev" fullname="S. Leontiev" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Chudov" fullname="G. Chudov" role="ed | ||||
| itor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2006" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the conventions for using th | ||||
| e cryptographic algorithms GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, an | ||||
| d GOST R 34.11-94 with the Cryptographic Message Syntax (CMS). The CMS is used | ||||
| for digital signature, digest, authentication, and encryption of arbitrary messa | ||||
| ge contents. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4490"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4490"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5246" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 246" quoteTitle="true" derivedAnchor="RFC5246"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.2</titl | ||||
| e> | ||||
| <author initials="T." surname="Dierks" fullname="T. Dierks"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2008" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies Version 1.2 of the Transport | ||||
| Layer Security (TLS) protocol. The TLS protocol provides communications securi | ||||
| ty over the Internet. The protocol allows client/server applications to communi | ||||
| cate in a way that is designed to prevent eavesdropping, tampering, or message f | ||||
| orgery. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5246"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5246"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5746" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 746" quoteTitle="true" derivedAnchor="RFC5746"> | ||||
| <front> | ||||
| <title>Transport Layer Security (TLS) Renegotiation Indication Exten | ||||
| sion</title> | ||||
| <author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Ray" fullname="M. Ray"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Dispensa" fullname="S. Dispensa"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="N." surname="Oskov" fullname="N. Oskov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="February"/> | ||||
| <abstract> | ||||
| <t indent="0">Secure Socket Layer (SSL) and Transport Layer Securi | ||||
| ty (TLS) renegotiation are vulnerable to an attack in which the attacker forms a | ||||
| TLS connection with the target server, injects content of his choice, and then | ||||
| splices in a new TLS connection from a client. The server treats the client's i | ||||
| nitial TLS handshake as a renegotiation and thus believes that the initial data | ||||
| transmitted by the attacker is from the same entity as the subsequent client dat | ||||
| a. This specification defines a TLS extension to cryptographically tie renegoti | ||||
| ations to the TLS connections they are being performed over, thus preventing thi | ||||
| s attack. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5746"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5746"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5830" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 830" quoteTitle="true" derivedAnchor="RFC5830"> | ||||
| <front> | ||||
| <title>GOST 28147-89: Encryption, Decryption, and Message Authentica | ||||
| tion Code (MAC) Algorithms</title> | ||||
| <author initials="V." surname="Dolmatov" fullname="V. Dolmatov" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This document is intended to be a source of informat | ||||
| ion about the Russian Federal standard for electronic encryption, decryption, an | ||||
| d message authentication algorithms (GOST 28147-89), which is one of the Russian | ||||
| cryptographic standard algorithms called GOST algorithms). Recently, Russian c | ||||
| ryptography is being used in Internet applications, and this document has been c | ||||
| reated as information for developers and users of GOST 28147-89 for encryption, | ||||
| decryption, and message authentication. This document is not an Internet Stand | ||||
| ards Track specification; it is published for informational purposes.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5830"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5830"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6986" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 986" quoteTitle="true" derivedAnchor="RFC6986"> | ||||
| <front> | ||||
| <title>GOST R 34.11-2012: Hash Function</title> | ||||
| <author initials="V." surname="Dolmatov" fullname="V. Dolmatov" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Degtyarev" fullname="A. Degtyarev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2013" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document is intended to be a source of informat | ||||
| ion about the Russian Federal standard hash function (GOST R 34.11-2012), which | ||||
| is one of the Russian cryptographic standard algorithms (called GOST algorithms) | ||||
| . This document updates RFC 5831.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6986"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6986"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7091" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 091" quoteTitle="true" derivedAnchor="RFC7091"> | ||||
| <front> | ||||
| <title>GOST R 34.10-2012: Digital Signature Algorithm</title> | ||||
| <author initials="V." surname="Dolmatov" fullname="V. Dolmatov" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Degtyarev" fullname="A. Degtyarev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2013" month="December"/> | ||||
| <abstract> | ||||
| <t indent="0">This document provides information about the Russian | ||||
| Federal standard for digital signatures (GOST R 34.10-2012), which is one of th | ||||
| e Russian cryptographic standard algorithms (called GOST algorithms). Recently, | ||||
| Russian cryptography is being used in Internet applications, and this document p | ||||
| rovides information for developers and users of GOST R 34.10-2012 regarding digi | ||||
| tal signature generation and verification. This document updates RFC 5832.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7091"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7091"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7366" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 366" quoteTitle="true" derivedAnchor="RFC7366"> | ||||
| <front> | ||||
| <title>Encrypt-then-MAC for Transport Layer Security (TLS) and Datag | ||||
| ram Transport Layer Security (DTLS)</title> | ||||
| <author initials="P." surname="Gutmann" fullname="P. Gutmann"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2014" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a means of negotiating the u | ||||
| se of the encrypt-then-MAC security mechanism in place of the existing MAC-then- | ||||
| encrypt mechanism in Transport Layer Security (TLS) and Datagram Transport Layer | ||||
| Security (DTLS). The MAC-then-encrypt mechanism has been the subject of a numb | ||||
| er of security vulnerabilities over a period of many years.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7366"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7366"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7627" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 627" quoteTitle="true" derivedAnchor="RFC7627"> | ||||
| <front> | ||||
| <title>Transport Layer Security (TLS) Session Hash and Extended Mast | ||||
| er Secret Extension</title> | ||||
| <author initials="K." surname="Bhargavan" fullname="K. Bhargavan" ro | ||||
| le="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Delignat-Lavaud" fullname="A. Deligna | ||||
| t-Lavaud"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Pironti" fullname="A. Pironti"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Langley" fullname="A. Langley"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Ray" fullname="M. Ray"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2015" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">The Transport Layer Security (TLS) master secret is | ||||
| not cryptographically bound to important session parameters such as the server c | ||||
| ertificate. Consequently, it is possible for an active attacker to set up two s | ||||
| essions, one with a client and another with a server, such that the master secre | ||||
| ts on the two sessions are the same. Thereafter, any mechanism that relies on t | ||||
| he master secret for authentication, including session resumption, becomes vulne | ||||
| rable to a man-in-the-middle attack, where the attacker can simply forward messa | ||||
| ges back and forth between the client and server. This specification defines a | ||||
| TLS extension that contextually binds the master secret to a log of the full han | ||||
| dshake that computes it, thus preventing such attacks.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7627"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7627"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7801" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 801" quoteTitle="true" derivedAnchor="RFC7801"> | ||||
| <front> | ||||
| <title>GOST R 34.12-2015: Block Cipher "Kuznyechik"</title> | ||||
| <author initials="V." surname="Dolmatov" fullname="V. Dolmatov" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This document is intended to be a source of informat | ||||
| ion about the Russian Federal standard GOST R 34.12-2015 describing the block ci | ||||
| pher with a block length of n=128 bits and a key length of k=256 bits, which is | ||||
| also referred to as "Kuznyechik". This algorithm is one of the set of Russian c | ||||
| ryptographic standard algorithms (called GOST algorithms).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7801"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7801"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7836" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 836" quoteTitle="true" derivedAnchor="RFC7836"> | ||||
| <front> | ||||
| <title>Guidelines on the Cryptographic Algorithms to Accompany the U | ||||
| sage of Standards GOST R 34.10-2012 and GOST R 34.11-2012</title> | ||||
| <author initials="S." surname="Smyshlyaev" fullname="S. Smyshlyaev" | ||||
| role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Alekseev" fullname="E. Alekseev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="I." surname="Oshkin" fullname="I. Oshkin"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="V." surname="Popov" fullname="V. Popov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Leontiev" fullname="S. Leontiev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="V." surname="Podobaev" fullname="V. Podobaev"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Belyavsky" fullname="D. Belyavsky"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">The purpose of this document is to make the specific | ||||
| ations of the cryptographic algorithms defined by the Russian national standards | ||||
| GOST R 34.10-2012 and GOST R 34.11-2012 available to the Internet community for | ||||
| their implementation in the cryptographic protocols based on the accompanying a | ||||
| lgorithms.</t> | ||||
| <t indent="0">These specifications define the pseudorandom functio | ||||
| ns, the key agreement algorithm based on the Diffie-Hellman algorithm and a hash | ||||
| function, the parameters of elliptic curves, the key derivation functions, and | ||||
| the key export functions.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7836"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7836"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7919" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 919" quoteTitle="true" derivedAnchor="RFC7919"> | ||||
| <front> | ||||
| <title>Negotiated Finite Field Diffie-Hellman Ephemeral Parameters f | ||||
| or Transport Layer Security (TLS)</title> | ||||
| <author initials="D." surname="Gillmor" fullname="D. Gillmor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">Traditional finite-field-based Diffie-Hellman (DH) k | ||||
| ey exchange during the Transport Layer Security (TLS) handshake suffers from a n | ||||
| umber of security, interoperability, and efficiency shortcomings. These shortcom | ||||
| ings arise from lack of clarity about which DH group parameters TLS servers shou | ||||
| ld offer and clients should accept. This document offers a solution to these sh | ||||
| ortcomings for compatible peers by using a section of the TLS "Supported Groups | ||||
| Registry" (renamed from "EC Named Curve Registry" by this document) to establish | ||||
| common finite field DH parameters with known structure and a mechanism for peer | ||||
| s to negotiate support for these groups.</t> | ||||
| <t indent="0">This document updates TLS versions 1.0 (RFC 2246), 1 | ||||
| .1 (RFC 4346), and 1.2 (RFC 5246), as well as the TLS Elliptic Curve Cryptograph | ||||
| y (ECC) extensions (RFC 4492).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7919"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7919"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 2119 specifies common key words that may be used | ||||
| in protocol specifications. This document aims to reduce the ambiguity by cla | ||||
| rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
| nings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8422" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 422" quoteTitle="true" derivedAnchor="RFC8422"> | ||||
| <front> | ||||
| <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport | ||||
| Layer Security (TLS) Versions 1.2 and Earlier</title> | ||||
| <author initials="Y." surname="Nir" fullname="Y. Nir"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Josefsson" fullname="S. Josefsson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Pegourie-Gonnard" fullname="M. Pegour | ||||
| ie-Gonnard"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2018" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes key exchange algorithms base | ||||
| d on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) pr | ||||
| otocol. In particular, it specifies the use of Ephemeral Elliptic Curve Diffie- | ||||
| Hellman (ECDHE) key agreement in a TLS handshake and the use of the Elliptic Cur | ||||
| ve Digital Signature Algorithm (ECDSA) and Edwards-curve Digital Signature Algor | ||||
| ithm (EdDSA) as authentication mechanisms.</t> | ||||
| <t indent="0">This document obsoletes RFC 4492.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8422"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8422"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 446" quoteTitle="true" derivedAnchor="RFC8446"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
| e> | ||||
| <author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2018" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies version 1.3 of the Transport | ||||
| Layer Security (TLS) protocol. TLS allows client/server applications to commun | ||||
| icate over the Internet in a way that is designed to prevent eavesdropping, tamp | ||||
| ering, and message forgery.</t> | ||||
| <t indent="0">This document updates RFCs 5705 and 6066, and obsole | ||||
| tes RFCs 5077, 5246, and 6961. This document also specifies new requirements fo | ||||
| r TLS 1.2 implementations.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8446"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8446"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8645" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 645" quoteTitle="true" derivedAnchor="RFC8645"> | ||||
| <front> | ||||
| <title>Re-keying Mechanisms for Symmetric Keys</title> | ||||
| <author initials="S." surname="Smyshlyaev" fullname="S. Smyshlyaev" | ||||
| role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2019" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">A certain maximum amount of data can be safely encry | ||||
| pted when encryption is performed under a single key. This amount is called the | ||||
| "key lifetime". This specification describes a variety of methods for increasi | ||||
| ng the lifetime of symmetric keys. It provides two types of re-keying mechanism | ||||
| s based on hash functions and block ciphers that can be used with modes of opera | ||||
| tions such as CTR, GCM, CBC, CFB, and OMAC.</t> | ||||
| <t indent="0">This document is a product of the Crypto Forum Resea | ||||
| rch Group (CFRG) in the IRTF.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8645"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8645"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8891" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 891" quoteTitle="true" derivedAnchor="RFC8891"> | ||||
| <front> | ||||
| <title>GOST R 34.12-2015: Block Cipher "Magma"</title> | ||||
| <author initials="V." surname="Dolmatov" fullname="V. Dolmatov" role | ||||
| ="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Baryshkov" fullname="D. Baryshkov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2020" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">In addition to a new cipher with a block length of n | ||||
| =128 bits (referred to as "Kuznyechik" and described in RFC 7801), Russian Feder | ||||
| al standard GOST R 34.12-2015 includes an updated version of the block cipher wi | ||||
| th a block length of n=64 bits and key length of k=256 bits, which is also refer | ||||
| red to as "Magma". The algorithm is an updated version of an older block cipher | ||||
| with a block length of n=64 bits described in GOST 28147-89 (RFC 5830). This doc | ||||
| ument is intended to be a source of information about the updated version of the | ||||
| 64-bit cipher. It may facilitate the use of the block cipher in Internet applic | ||||
| ations by providing information for developers and users of the GOST 64-bit ciph | ||||
| er with the revised version of the cipher for encryption and decryption.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8891"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8891"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-12.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="CMAC" target="https://www.nist.gov/publications/recom | ||||
| mendation-block-cipher-modes-operation-cmac-mode-authentication-0" quoteTitle="t | ||||
| rue" derivedAnchor="CMAC"> | ||||
| <front> | ||||
| <title>Recommendation for Block Cipher Modes of Operation: The CMAC | ||||
| Mode for Authentication</title> | ||||
| <author surname="Dworkin" initials="M." fullname="Morris Dworkin"/> | ||||
| <date year="2016" month="October"/> | ||||
| </front> | ||||
| <seriesInfo name="NIST Special Publication" value="800-38B"/> | ||||
| <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38B"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.smyshlyaev-tls13-gost-suites" quoteTitle="true" t | ||||
| arget="https://datatracker.ietf.org/doc/html/draft-smyshlyaev-tls13-gost-suites- | ||||
| 05" derivedAnchor="DraftGostTLS13"> | ||||
| <front> | ||||
| <title>GOST Cipher Suites for Transport Layer Security (TLS) Protoco | ||||
| l Version 1.3</title> | ||||
| <author fullname="Stanislav Smyshlyaev"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| </author> | ||||
| <author fullname="Evgeny Alekseev"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| </author> | ||||
| <author fullname="Ekaterina Griboedova"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| </author> | ||||
| <author fullname="Alexandra Babueva"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| </author> | ||||
| <author fullname="Lidiia Nikiforova"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| </author> | ||||
| <date month="December" day="10" year="2021"/> | ||||
| <abstract> | ||||
| <t indent="0"> The purpose of this document is to make the Russi | ||||
| an cryptographic | ||||
| standards available to the Internet community for their | ||||
| implementation in the Transport Layer Security (TLS) Protocol Version | ||||
| 1.3. | ||||
| <reference anchor="GOST3413-2015"> | This specification defines four new cipher suites, seven new | |||
| <front> | signature schemes and a key exchange mechanism for the TLS 1.3 | |||
| <title> | protocol, that are based on Russian cryptographic standards (called | |||
| Information technology. Cryptographic data security. Modes o | GOST algorithms). Additionally, this document specifies a profile of | |||
| f operation for block ciphers | TLS 1.3 with GOST algorithms so that implementers can produce | |||
| </title> | interoperable implementations. This document does not imply IETF | |||
| <author> | endorsement of the cipher suites, signature schemes key exchange | |||
| <organization> | mechanism. | |||
| Federal Agency on Technical Regulating and Metrology | ||||
| </organization> | ||||
| </author> | ||||
| <date year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="GOST R" value="34.13-2015"/> | ||||
| </reference> | ||||
| <reference anchor="R-1323565.1.024-2019"> | </t> | |||
| <front> | </abstract> | |||
| <title> | </front> | |||
| Information technology. Cryptographic data security. Ell | <seriesInfo name="Internet-Draft" value="draft-smyshlyaev-tls13-gost-s | |||
| iptic curve parameters for the cryptographic algorithms and protocols | uites-05"/> | |||
| </title> | <format type="TXT" target="https://www.ietf.org/archive/id/draft-smysh | |||
| <author> | lyaev-tls13-gost-suites-05.txt"/> | |||
| <organization> | <refcontent>Work in Progress</refcontent> | |||
| Federal Agency on Technical Regulating and Metrology | </reference> | |||
| </organization> | <reference anchor="GOST3413-2015" quoteTitle="true" derivedAnchor="GOST3 | |||
| </author> | 413-2015"> | |||
| <date year="2019"/> | <front> | |||
| </front> | <title>Information technology. Cryptographic data security. Modes of | |||
| <seriesInfo name="R" value="1323565.1.024-2019"/> | operation for block ciphers</title> | |||
| </reference> | <author> | |||
| <organization showOnFrontPage="true">Federal Agency on Technical R | ||||
| egulating and Metrology</organization> | ||||
| </author> | ||||
| <date year="2015"/> | ||||
| </front> | ||||
| <seriesInfo name="GOST R" value="34.13-2015"/> | ||||
| </reference> | ||||
| <reference anchor="IK2003" quoteTitle="true" target="https://doi.org/10. | ||||
| 1007/978-3-540-39887-5_11" derivedAnchor="IK2003"> | ||||
| <front> | ||||
| <title>OMAC: One-Key CBC MAC</title> | ||||
| <author initials="T." surname="Iwata" fullname="Tetsu Iwata"/> | ||||
| <author initials="K." surname="Kurosawa" fullname="Kaoru Kurosawa"/> | ||||
| <date year="2003"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1007/978-3-540-39887-5_11"/> | ||||
| <refcontent>FSE 2003</refcontent> | ||||
| <refcontent>Lecture Notes in Computer Science, Vol. 2887</refcontent> | ||||
| </reference> | ||||
| <reference anchor="MODES" target="https://csrc.nist.gov/publications/det | ||||
| ail/sp/800-38a/final" quoteTitle="true" derivedAnchor="MODES"> | ||||
| <front> | ||||
| <title>Recommendation for Block Cipher Modes of Operation: Methods a | ||||
| nd Techniques</title> | ||||
| <author initials="M." surname="Dworkin" fullname="Morris Dworkin"/> | ||||
| <date year="2001" month="December"/> | ||||
| </front> | ||||
| <seriesInfo name="NIST Special Publication" value="800-38A"/> | ||||
| <seriesInfo name="DOI" value="10.6028/NIST.SP.800-38A"/> | ||||
| </reference> | ||||
| <reference anchor="R-1323565.1.024-2019" quoteTitle="true" derivedAnchor | ||||
| ="R-1323565.1.024-2019"> | ||||
| <front> | ||||
| <title>Information technology. Cryptographic data security. Elliptic | ||||
| curve parameters for the cryptographic algorithms and protocols</title> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">Federal Agency on Technical R | ||||
| egulating and Metrology</organization> | ||||
| </author> | ||||
| <date year="2019" month="January"/> | ||||
| </front> | ||||
| <seriesInfo name="R" value="1323565.1.024-2019"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-tls-rfc8446bis" quoteTitle="true" target="ht | ||||
| tps://datatracker.ietf.org/doc/html/draft-ietf-tls-rfc8446bis-03" derivedAnchor= | ||||
| "RFC8446bis"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
| e> | ||||
| <author fullname="Eric Rescorla"> | ||||
| <organization showOnFrontPage="true">Mozilla</organization> | ||||
| </author> | ||||
| <date month="October" day="25" year="2021"/> | ||||
| <abstract> | ||||
| <t indent="0"> This document specifies version 1.3 of the Transp | ||||
| ort 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. | ||||
| <reference anchor="MODES"> | This document updates RFCs 5705 and 6066 and obsoletes RFCs 5077, | |||
| <front> | 5246, and 6961. This document also specifies new requirements for | |||
| <title> | TLS 1.2 implementations. | |||
| Recommendation for Block Cipher Modes of Operation: Meth | ||||
| ods and Techniques | ||||
| </title> | ||||
| <author> | ||||
| <organization> | ||||
| Dworkin, M. | ||||
| </organization> | ||||
| </author> | ||||
| <date year="2001" month="December"/> | ||||
| </front> | ||||
| <seriesInfo name="NIST Special Publication " value="800-38A"/> | ||||
| </reference> | ||||
| <reference anchor="DraftGostTLS13" target="https://tools.ietf.org/ht | ||||
| ml/draft-smyshlyaev-tls13-gost-suites-04"> | ||||
| <front> | ||||
| <title> | ||||
| GOST Cipher Suites for Transport Layer Security (TLS) Pr | ||||
| otocol Version 1.3 | ||||
| </title> | ||||
| <author initials="S." surname="Smyshlyaev" fullname="S. Smys | ||||
| hlyaev"> | ||||
| <organization> CryptoPro </organization> | ||||
| </author> | ||||
| <author initials="E." surname="Alekseev" fullname="E. Alekse | ||||
| ev"> | ||||
| <organization> CryptoPro </organization> | ||||
| </author> | ||||
| <author initials="E." surname="Griboedova" fullname="E. Grib | ||||
| oedova"> | ||||
| <organization> CryptoPro </organization> | ||||
| </author> | ||||
| <author initials="A." surname="Babueva" fullname="A. Babueva | ||||
| "> | ||||
| <organization> CryptoPro </organization> | ||||
| </author> | ||||
| <date year="2021"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <section anchor="Appendix" title="Test Examples"> | </t> | |||
| <section title ="Test Examples for CTR_OMAC cipher suites"> | </abstract> | |||
| <section title ="TLSTREE Examples"> | </front> | |||
| <section title ="TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC ciphe | <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-03" | |||
| rsuite"> | /> | |||
| <t> | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf- | |||
| <figure> | tls-rfc8446bis-03.txt"/> | |||
| <artwork> | <refcontent>Work in Progress</refcontent> | |||
| <![CDATA[ | </reference> | |||
| </references> | ||||
| </references> | ||||
| <section anchor="Appendix" numbered="true" toc="include" removeInRFC="false" | ||||
| pn="section-appendix.a"> | ||||
| <name slugifiedName="name-test-examples">Test Examples</name> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-app | ||||
| endix.a.1"> | ||||
| <name slugifiedName="name-test-examples-for-ctr_omac-">Test Examples for | ||||
| CTR_OMAC Cipher Suites</name> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-a | ||||
| ppendix.a.1.1"> | ||||
| <name slugifiedName="name-tlstree-examples">TLSTREE Examples</name> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section | ||||
| -appendix.a.1.1.1"> | ||||
| <name slugifiedName="name-tls_gostr341112_256_with_ma">TLS_GOSTR3411 | ||||
| 12_256_WITH_MAGMA_CTR_OMAC Cipher Suite</name> | ||||
| <sourcecode type="test-vectors" markers="false" pn="section-appendix | ||||
| .a.1.1.1-1"> | ||||
| TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | |||
| *********************************************** | *********************************************** | |||
| Root Key K_root: | Root Key K_root: | |||
| 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | |||
| 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | |||
| seqnum = 0 | seqnum = 0 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | |||
| 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | |||
| seqnum = 4095 | seqnum = 4095 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | |||
| 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | |||
| seqnum = 4096 | seqnum = 4096 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| FB 30 EE 53 CF CF 89 D7 48 FC 0C 72 EF 16 0B 8B | FB 30 EE 53 CF CF 89 D7 48 FC 0C 72 EF 16 0B 8B | |||
| 53 CB BB FD 03 12 82 B0 26 21 4A B2 E0 77 58 FF | 53 CB BB FD 03 12 82 B0 26 21 4A B2 E0 77 58 FF | |||
| seqnum = 33554431 | seqnum = 33554431 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| B8 5B 36 DC 22 82 32 6B C0 35 C5 72 DC 93 F1 8D | B8 5B 36 DC 22 82 32 6B C0 35 C5 72 DC 93 F1 8D | |||
| 83 AA 01 74 F3 94 20 9A 51 3B B3 74 DC 09 35 AE | 83 AA 01 74 F3 94 20 9A 51 3B B3 74 DC 09 35 AE | |||
| seqnum = 33554432 | seqnum = 33554432 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 3F EA 59 38 DA 2B F8 DD C4 7E C1 DC 55 61 89 66 | 3F EA 59 38 DA 2B F8 DD C4 7E C1 DC 55 61 89 66 | |||
| 79 02 BE 42 0D F4 C3 7D AF 21 75 3B CB 1D C7 F3 | 79 02 BE 42 0D F4 C3 7D AF 21 75 3B CB 1D C7 F3 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 0F D7 C0 9E FD F8 E8 15 73 EE CC F8 6E 4B 95 E3 | 0F D7 C0 9E FD F8 E8 15 73 EE CC F8 6E 4B 95 E3 | |||
| AF 7F 34 DA B1 17 7C FD 7D B9 7B 6D A9 06 40 8A | AF 7F 34 DA B1 17 7C FD 7D B9 7B 6D A9 06 40 8A | |||
| seqnum = 274877906943 | seqnum = 274877906943 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| AB F3 A5 37 98 3A 1B 98 40 06 6D E6 8A 49 BF 25 | AB F3 A5 37 98 3A 1B 98 40 06 6D E6 8A 49 BF 25 | |||
| 97 7E E5 C3 F5 2D 33 3E 3C 22 0F 1D 15 C5 08 93 | 97 7E E5 C3 F5 2D 33 3E 3C 22 0F 1D 15 C5 08 93 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 48 0F 99 72 BA F2 5D 4C 36 9A 96 AF 91 BC A4 55 | 48 0F 99 72 BA F2 5D 4C 36 9A 96 AF 91 BC A4 55 | |||
| 3F 79 D8 F0 C5 61 8B 19 FD 44 CF DC 57 FA 37 33 | 3F 79 D8 F0 C5 61 8B 19 FD 44 CF DC 57 FA 37 33 | |||
| seqnum = 274877906944 | seqnum = 274877906944 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| 15 60 0D 9E 8F A6 85 54 CF 15 2D C7 4F BC 42 51 | 15 60 0D 9E 8F A6 85 54 CF 15 2D C7 4F BC 42 51 | |||
| 17 B0 3E 09 76 BB 28 EA 98 24 C3 B7 0F 28 CB D8 | 17 B0 3E 09 76 BB 28 EA 98 24 C3 B7 0F 28 CB D8 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 6C C2 8E B0 93 24 72 12 5C 7A D3 F8 09 73 B3 C8 | 6C C2 8E B0 93 24 72 12 5C 7A D3 F8 09 73 B3 C8 | |||
| C4 13 7D A5 73 BC 17 1A 24 ED D4 A3 71 F1 F8 73 | C4 13 7D A5 73 BC 17 1A 24 ED D4 A3 71 F1 F8 73 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 25 28 C1 C6 A8 F0 92 7B F2 BE 27 BB 78 D2 7F 21 | 25 28 C1 C6 A8 F0 92 7B F2 BE 27 BB 78 D2 7F 21 | |||
| 46 D6 55 93 B0 C7 17 3A 06 CB 9D 88 DF 92 32 65 | 46 D6 55 93 B0 C7 17 3A 06 CB 9D 88 DF 92 32 65 | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | <section numbered="true" toc="include" removeInRFC="false" pn="section | |||
| </figure> | -appendix.a.1.1.2"> | |||
| </t> | <name slugifiedName="name-tls_gostr341112_256_with_ku">TLS_GOSTR3411 | |||
| </section> | 12_256_WITH_KUZNYECHIK_CTR_OMAC Cipher Suite</name> | |||
| <section title ="TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | <sourcecode type="test-vectors" markers="false" pn="section-appendix | |||
| ciphersuite"> | .a.1.1.2-1"> | |||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | |||
| *********************************************** | *********************************************** | |||
| Root Key K_root: | Root Key K_root: | |||
| 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | |||
| 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | |||
| seqnum = 0 | seqnum = 0 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | |||
| 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | |||
| seqnum = 63 | seqnum = 63 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | |||
| 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | |||
| seqnum = 64 | seqnum = 64 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| AE BE 1E F4 18 71 3B F0 44 B9 FC D9 E5 72 D4 37 | AE BE 1E F4 18 71 3B F0 44 B9 FC D9 E5 72 D4 37 | |||
| FB 38 B5 D8 29 56 7A 6F 79 18 39 6D 9F 4E 09 6B | FB 38 B5 D8 29 56 7A 6F 79 18 39 6D 9F 4E 09 6B | |||
| seqnum = 524287 | seqnum = 524287 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | 51 37 D5 C4 A6 E6 BE 42 C4 40 D1 0A 95 EE A0 7F | |||
| 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | 08 9E 74 0D 38 90 EB 52 65 2C 0C B9 3F 20 7B B4 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 6F 18 D4 00 3E A2 CB 30 F5 FE C1 93 A2 34 F0 7D | 6F 18 D4 00 3E A2 CB 30 F5 FE C1 93 A2 34 F0 7D | |||
| 7C 43 94 98 7F 50 75 8D E2 2B 22 0D 8A 10 51 06 | 7C 43 94 98 7F 50 75 8D E2 2B 22 0D 8A 10 51 06 | |||
| seqnum = 524288 | seqnum = 524288 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| F6 59 EB 85 EE BD 2A 8D CC 1B B3 F7 C6 00 57 FF | F6 59 EB 85 EE BD 2A 8D CC 1B B3 F7 C6 00 57 FF | |||
| 6D 33 B6 0F 74 65 DD 42 B5 11 2C F3 A6 B1 AB 66 | 6D 33 B6 0F 74 65 DD 42 B5 11 2C F3 A6 B1 AB 66 | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| E5 4B 16 41 5B 3B 66 3E 78 0B 06 2D 24 F7 36 C4 | E5 4B 16 41 5B 3B 66 3E 78 0B 06 2D 24 F7 36 C4 | |||
| 49 54 63 C3 A8 91 E1 FA 46 F7 AE 99 FF F9 F3 78 | 49 54 63 C3 A8 91 E1 FA 46 F7 AE 99 FF F9 F3 78 | |||
| seqnum = 4294967295 | seqnum = 4294967295 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | F3 55 89 F0 9B F8 01 B1 CA 11 42 73 B9 5F D6 C1 | |||
| 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | 39 2E 78 F9 FB 81 4D A0 5A 7C CA 08 9E C8 65 42 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| F4 BC 10 1A BB 68 86 2A 8C E3 1E A0 0D DF A7 FE | F4 BC 10 1A BB 68 86 2A 8C E3 1E A0 0D DF A7 FE | |||
| B8 29 10 F1 24 F4 B1 E2 9E A8 3B E0 06 C2 26 8D | B8 29 10 F1 24 F4 B1 E2 9E A8 3B E0 06 C2 26 8D | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| CF 60 09 04 C7 1E 7B 88 A4 9A C8 E2 45 77 4B 3D | CF 60 09 04 C7 1E 7B 88 A4 9A C8 E2 45 77 4B 3D | |||
| BE ED FB 81 DE 9A 0E 2F 4E 46 C3 56 07 BC 2F 04 | BE ED FB 81 DE 9A 0E 2F 4E 46 C3 56 07 BC 2F 04 | |||
| seqnum = 4294967296 | seqnum = 4294967296 | |||
| First level key from Divers_1: | First-level key from Divers_1: | |||
| 55 CC 95 E0 D1 FB 54 85 AF 8E F6 9A CD 72 B2 32 | 55 CC 95 E0 D1 FB 54 85 AF 8E F6 9A CD 72 B2 32 | |||
| 79 7C D2 E8 5D 86 CD FD 1D E5 5B D1 FA 14 37 78 | 79 7C D2 E8 5D 86 CD FD 1D E5 5B D1 FA 14 37 78 | |||
| Second level key from Divers_2: | Second-level key from Divers_2: | |||
| 72 16 91 E1 01 C4 28 96 A6 40 AE 18 3F BB 44 5B | 72 16 91 E1 01 C4 28 96 A6 40 AE 18 3F BB 44 5B | |||
| 76 37 9C 57 E1 FD 8A 7D 49 A6 23 E4 23 8C 0E 1D | 76 37 9C 57 E1 FD 8A 7D 49 A6 23 E4 23 8C 0E 1D | |||
| The resulting key from Divers 3: | The resulting key from Divers_3: | |||
| 16 18 0B 24 64 54 00 B8 36 14 38 37 D8 6A AC 93 | 16 18 0B 24 64 54 00 B8 36 14 38 37 D8 6A AC 93 | |||
| 95 2A E3 EB 82 44 D5 EC 2A B0 2C FF 30 78 11 38 | 95 2A E3 EB 82 44 D5 EC 2A B0 2C FF 30 78 11 38 | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | </section> | |||
| </figure> | <section numbered="true" toc="include" removeInRFC="false" pn="section-a | |||
| </t> | ppendix.a.1.2"> | |||
| </section> | <name slugifiedName="name-record-examples">Record Examples</name> | |||
| </section> | <section numbered="true" toc="include" removeInRFC="false" pn="section | |||
| <section title ="Record Examples"> | -appendix.a.1.2.1"> | |||
| <section title ="TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC ciphers | <name slugifiedName="name-tls_gostr341112_256_with_mag">TLS_GOSTR341 | |||
| uite"> | 112_256_WITH_MAGMA_CTR_OMAC Cipher Suite</name> | |||
| <t> | <sourcecode type="test-vectors" markers="false" pn="section-appendix | |||
| <figure> | .a.1.2.1-1"> | |||
| <artwork> | ||||
| <![CDATA[ | ||||
| TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC | |||
| ******************************************************** | ******************************************************** | |||
| It is assumed that during Handshake following keys were established: | It is assumed that the following keys were established | |||
| during handshake: | ||||
| - MAC key: | - MAC key: | |||
| 00000: 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | 00000: 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | |||
| 00010: 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | 00010: 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | |||
| - Encryption key: | - Encryption key: | |||
| 00000: 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 | 00000: 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 | |||
| 00010: 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 22 | 00010: 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 22 | |||
| - IV: | - IV: | |||
| 00000: 00 00 00 00 | 00000: 00 00 00 00 | |||
| --------------------------------------------------------- | --------------------------------------------------------- | |||
| skipping to change at line 2102 ¶ | skipping to change at line 2682 ¶ | |||
| TLSCiphertext: | TLSCiphertext: | |||
| 00000: 17 03 03 08 08 99 95 26 07 03 47 1D ED A2 E6 55 | 00000: 17 03 03 08 08 99 95 26 07 03 47 1D ED A2 E6 55 | |||
| 00010: B6 B3 93 83 5E 33 8B 1E D0 0E DD 22 47 A2 FB 88 | 00010: B6 B3 93 83 5E 33 8B 1E D0 0E DD 22 47 A2 FB 88 | |||
| 00020: FB B7 A8 94 80 62 08 8A F3 2C AE B6 AA 2C 4F 2A | 00020: FB B7 A8 94 80 62 08 8A F3 2C AE B6 AA 2C 4F 2A | |||
| . . . | . . . | |||
| 007D0: 7F 0B 24 61 E7 5F E1 06 34 B8 4D C5 70 35 72 5A | 007D0: 7F 0B 24 61 E7 5F E1 06 34 B8 4D C5 70 35 72 5A | |||
| 007E0: CA 4F 0C BC A9 B0 6C B9 F7 6F BD 2F 80 46 2B 8D | 007E0: CA 4F 0C BC A9 B0 6C B9 F7 6F BD 2F 80 46 2B 8D | |||
| 007F0: 77 5E BD 41 6F 63 41 39 AC 89 C2 ED 3D F1 9F E2 | 007F0: 77 5E BD 41 6F 63 41 39 AC 89 C2 ED 3D F1 9F E2 | |||
| 00800: 4E F8 C0 5A A8 90 93 1B 01 86 FD 7D DF | 00800: 4E F8 C0 5A A8 90 93 1B 01 86 FD 7D DF | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | <section numbered="true" toc="include" removeInRFC="false" pn="section | |||
| </figure> | -appendix.a.1.2.2"> | |||
| </t> | <name slugifiedName="name-tls_gostr341112_256_with_kuz">TLS_GOSTR341 | |||
| </section> | 112_256_WITH_KUZNYECHIK_CTR_OMAC Cipher Suite</name> | |||
| <section title ="TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC ci | <sourcecode type="test-vectors" markers="false" pn="section-appendix | |||
| phersuite"> | .a.1.2.2-1"> | |||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC | |||
| *********************************************** | *********************************************** | |||
| It is assumed that during Handshake following keys were established: | It is assumed that the following keys were established | |||
| during handshake: | ||||
| - MAC key: | - MAC key: | |||
| 00000: 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | 00000: 00 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A | |||
| 00010: 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | 00010: 11 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 | |||
| - Encryption key: | - Encryption key: | |||
| 00000: 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 | 00000: 22 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 | |||
| 00010: 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 22 | 00010: 33 44 55 66 77 88 99 AA BB CC EE FF 0A 00 11 22 | |||
| - IV: | - IV: | |||
| 00000: 00 00 00 00 00 00 00 00 | 00000: 00 00 00 00 00 00 00 00 | |||
| skipping to change at line 2181 ¶ | skipping to change at line 2756 ¶ | |||
| . . . | . . . | |||
| 00FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 00FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 00FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 01000: 00 00 00 00 00 | 01000: 00 00 00 00 00 | |||
| K_MAC_63: | K_MAC_63: | |||
| 00000: 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | 00000: 19 A7 6E D3 0F 4D 6D 1F 5B 72 63 EC 49 1A D8 38 | |||
| 00010: 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | 00010: 17 C0 B5 7D 8A 03 56 12 71 40 FB 4F 74 25 49 4D | |||
| Mac value: | MAC value: | |||
| 00000: 98 46 27 61 D0 26 24 4A 2C 0B 7D 1B CC CB E7 B0 | 00000: 98 46 27 61 D0 26 24 4A 2C 0B 7D 1B CC CB E7 B0 | |||
| K_ENC_63: | K_ENC_63: | |||
| 00000: 58 AF BE 9A 4C 31 98 AA AB AA 26 92 C4 19 F1 79 | 00000: 58 AF BE 9A 4C 31 98 AA AB AA 26 92 C4 19 F1 79 | |||
| 00010: 7C 9B 92 DE B3 CC 74 46 B3 63 57 71 13 F0 FB 56 | 00010: 7C 9B 92 DE B3 CC 74 46 B3 63 57 71 13 F0 FB 56 | |||
| IV_63: | IV_63: | |||
| 00000: 00 00 00 00 00 00 00 3F | 00000: 00 00 00 00 00 00 00 3F | |||
| TLSCiphertext: | TLSCiphertext: | |||
| skipping to change at line 2227 ¶ | skipping to change at line 2802 ¶ | |||
| . . . | . . . | |||
| 01FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 01FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 01FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 01FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 01FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 01FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 02000: 00 00 00 00 00 | 02000: 00 00 00 00 00 | |||
| K_MAC_64: | K_MAC_64: | |||
| 00000: AE BE 1E F4 18 71 3B F0 44 B9 FC D9 E5 72 D4 37 | 00000: AE BE 1E F4 18 71 3B F0 44 B9 FC D9 E5 72 D4 37 | |||
| 00010: FB 38 B5 D8 29 56 7A 6F 79 18 39 6D 9F 4E 09 6B | 00010: FB 38 B5 D8 29 56 7A 6F 79 18 39 6D 9F 4E 09 6B | |||
| Mac value: | MAC value: | |||
| 00000: EA C3 97 87 84 2B 1D BD 60 80 CC 3F BF AE 5C 2F | 00000: EA C3 97 87 84 2B 1D BD 60 80 CC 3F BF AE 5C 2F | |||
| K_ENC_64: | K_ENC_64: | |||
| 00000: 64 F5 5A FC 37 A1 74 D9 53 3E 70 8B CD 14 FA 4A | 00000: 64 F5 5A FC 37 A1 74 D9 53 3E 70 8B CD 14 FA 4A | |||
| 00010: EE C3 7B C0 E3 2B A4 99 01 B4 66 9E 96 A6 3D 96 | 00010: EE C3 7B C0 E3 2B A4 99 01 B4 66 9E 96 A6 3D 96 | |||
| IV_64: | IV_64: | |||
| 00000: 00 00 00 00 00 00 00 40 | 00000: 00 00 00 00 00 00 00 40 | |||
| TLSCiphertext: | TLSCiphertext: | |||
| 00000: 17 03 03 20 10 E6 66 BB 98 AC 5B 0F 39 31 D8 55 | 00000: 17 03 03 20 10 E6 66 BB 98 AC 5B 0F 39 31 D8 55 | |||
| 00010: 1B 93 36 85 96 EE F0 EB A8 26 9C B8 BD AA E7 EB | 00010: 1B 93 36 85 96 EE F0 EB A8 26 9C B8 BD AA E7 EB | |||
| 00020: 80 C8 30 D7 5A B7 D4 6C 25 06 DC 8B 83 E1 F2 D3 | 00020: 80 C8 30 D7 5A B7 D4 6C 25 06 DC 8B 83 E1 F2 D3 | |||
| . . . | . . . | |||
| 01FE0: B3 02 67 2C CB 02 86 CD 40 48 FB D5 38 1A 65 55 | 01FE0: B3 02 67 2C CB 02 86 CD 40 48 FB D5 38 1A 65 55 | |||
| 01FF0: 26 11 25 51 01 4F A8 ED F5 C2 1B 7D 1D B3 9D 6B | 01FF0: 26 11 25 51 01 4F A8 ED F5 C2 1B 7D 1D B3 9D 6B | |||
| 02000: AD EC 0D 7C 07 05 34 8B 5C 55 6C 4D 50 81 69 1A | 02000: AD EC 0D 7C 07 05 34 8B 5C 55 6C 4D 50 81 69 1A | |||
| 02010: A9 EC 36 F8 B5 | 02010: A9 EC 36 F8 B5 | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | </section> | |||
| </figure> | <section numbered="true" toc="include" removeInRFC="false" pn="section-a | |||
| </t> | ppendix.a.1.3"> | |||
| </section> | <name slugifiedName="name-handshake-examples">Handshake Examples</name | |||
| </section> | > | |||
| <t indent="0" pn="section-appendix.a.1.3-1"> | ||||
| <section title ="Handshake Examples"> | The ClientHello.extensions and the ServerHello.extensions f | |||
| <t> | ields contain the extended_main_secret extension (see <xref target="RFC7627" for | |||
| The ClientHello.extensions and the ServerHello.extensions f | mat="default" sectionFormat="of" derivedContent="RFC7627"/>) and the renegotiati | |||
| ields contain the extended_master_secret extension (see <xref target="RFC7627"/> | on_info extension (see <xref target="RFC5746" format="default" sectionFormat="of | |||
| ) and the renegotiation_info extension (see <xref target="RFC5746"/>) | " derivedContent="RFC5746"/>) | |||
| in the following examples. | in the following examples. | |||
| </t> | </t> | |||
| <section title ="TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC ciphers | <section numbered="true" toc="include" removeInRFC="false" pn="section | |||
| uite"> | -appendix.a.1.3.1"> | |||
| <t> | <name slugifiedName="name-tls_gostr341112_256_with_magm">TLS_GOSTR34 | |||
| <figure> | 1112_256_WITH_MAGMA_CTR_OMAC Cipher Suite</name> | |||
| <artwork> | <sourcecode type="test-vectors" markers="false" pn="section-appendix | |||
| <![CDATA[ | .a.1.3.1-1"> | |||
| Server certificate curve OID: | Server certificate curve OID: | |||
| id-GostR3410-2001-CryptoPro-A-ParamSet, "1.2.643.2.2.35.1" | id-GostR3410-2001-CryptoPro-A-ParamSet, "1.2.643.2.2.35.1" | |||
| Server public key Q_s: | Server public key Q_s: | |||
| x = 0x6531D4A72E655BFC9DFB94293B260702 | x = 0x6531D4A72E655BFC9DFB94293B260702 | |||
| 82FABF10D5C49B7366148C60E0BF8167 | 82FABF10D5C49B7366148C60E0BF8167 | |||
| y = 0x37F8CC71DC5D917FC4A66F7826E72750 | y = 0x37F8CC71DC5D917FC4A66F7826E72750 | |||
| 8270B4FFC266C26CD4363E77B553A5B8 | 8270B4FFC266C26CD4363E77B553A5B8 | |||
| skipping to change at line 2328 ¶ | skipping to change at line 2897 ¶ | |||
| signature: | signature: | |||
| 41 | 41 | |||
| Extension: /* renegotiation_info */ | Extension: /* renegotiation_info */ | |||
| extension_type: FF01 | extension_type: FF01 | |||
| extension_data: | extension_data: | |||
| length: 0001 | length: 0001 | |||
| vector: | vector: | |||
| renegotiated_connection: | renegotiated_connection: | |||
| length: 00 | length: 00 | |||
| vector: -- | vector: -- | |||
| Extension: /* extended_master_secret */ | Extension: /* extended_main_secret */ | |||
| extension_type: 0017 | extension_type: 0017 | |||
| extension_data: | extension_data: | |||
| length: 0000 | length: 0000 | |||
| vector: -- | vector: -- | |||
| 00000: 01 00 00 40 03 03 93 3E A2 1E C3 80 2A 56 15 50 | 00000: 01 00 00 40 03 03 93 3E A2 1E C3 80 2A 56 15 50 | |||
| 00010: EC 78 D6 ED 51 AC 24 39 D7 E7 49 C3 1B C3 A3 45 | 00010: EC 78 D6 ED 51 AC 24 39 D7 E7 49 C3 1B C3 A3 45 | |||
| 00020: 61 65 88 96 84 CA 00 00 04 C1 00 C1 01 01 00 00 | 00020: 61 65 88 96 84 CA 00 00 04 C1 00 C1 01 01 00 00 | |||
| 00030: 13 00 0D 00 06 00 04 08 40 08 41 FF 01 00 01 00 | 00030: 13 00 0D 00 06 00 04 08 40 08 41 FF 01 00 01 00 | |||
| 00040: 00 17 00 00 | 00040: 00 17 00 00 | |||
| skipping to change at line 2387 ¶ | skipping to change at line 2956 ¶ | |||
| length: 0009 | length: 0009 | |||
| vector: | vector: | |||
| Extension: /* renegotiation_info */ | Extension: /* renegotiation_info */ | |||
| extension_type: FF01 | extension_type: FF01 | |||
| extension_data: | extension_data: | |||
| length: 0001 | length: 0001 | |||
| vector: | vector: | |||
| renegotiated_connection: | renegotiated_connection: | |||
| length: 00 | length: 00 | |||
| vector: -- | vector: -- | |||
| Extension: /* extended_master_secret */ | Extension: /* extended_main_secret */ | |||
| extension_type: 0017 | extension_type: 0017 | |||
| extension_data: | extension_data: | |||
| length: 0000 | length: 0000 | |||
| vector: -- | vector: -- | |||
| 00000: 02 00 00 41 03 03 93 3E A2 1E 49 C3 1B C3 A3 45 | 00000: 02 00 00 41 03 03 93 3E A2 1E 49 C3 1B C3 A3 45 | |||
| 00010: 61 65 88 96 84 CA A5 57 6C E7 92 4A 24 F5 81 13 | 00010: 61 65 88 96 84 CA A5 57 6C E7 92 4A 24 F5 81 13 | |||
| 00020: 80 8D BD 9E F8 56 10 C3 80 2A 56 15 50 EC 78 D6 | 00020: 80 8D BD 9E F8 56 10 C3 80 2A 56 15 50 EC 78 D6 | |||
| 00030: ED 51 AC 24 39 D7 E7 C1 01 00 00 09 FF 01 00 01 | 00030: ED 51 AC 24 39 D7 E7 C1 01 00 00 09 FF 01 00 01 | |||
| 00040: 00 00 17 00 00 | 00040: 00 00 17 00 00 | |||
| skipping to change at line 2904 ¶ | skipping to change at line 3473 ¶ | |||
| Record layer message: | Record layer message: | |||
| type: 15 | type: 15 | |||
| version: | version: | |||
| major: 03 | major: 03 | |||
| minor: 03 | minor: 03 | |||
| length: 000A | length: 000A | |||
| fragment: 999468B49AC5B0DE512C | fragment: 999468B49AC5B0DE512C | |||
| 00000: 15 03 03 00 0A 99 94 68 B4 9A C5 B0 DE 51 2C | 00000: 15 03 03 00 0A 99 94 68 B4 9A C5 B0 DE 51 2C | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | <section numbered="true" toc="include" removeInRFC="false" pn="section | |||
| </figure> | -appendix.a.1.3.2"> | |||
| </t> | <name slugifiedName="name-tls_gostr341112_256_with_kuzn">TLS_GOSTR34 | |||
| </section> | 1112_256_WITH_KUZNYECHIK_CTR_OMAC Cipher Suite</name> | |||
| <section title ="TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC ci | <sourcecode type="test-vectors" markers="false" pn="section-appendix | |||
| phersuite"> | .a.1.3.2-1"> | |||
| <t> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| Server certificate curve OID: | Server certificate curve OID: | |||
| id-tc26-gost-3410-2012-512-paramSetC, "1.2.643.7.1.2.1.2.3" | id-tc26-gost-3410-2012-512-paramSetC, "1.2.643.7.1.2.1.2.3" | |||
| Server public key Q_s: | Server public key Q_s: | |||
| x = 0xF14589DA479AD972C66563669B3FF580 | x = 0xF14589DA479AD972C66563669B3FF580 | |||
| 92E6A30A288BF447CD9FF6C3133E9724 | 92E6A30A288BF447CD9FF6C3133E9724 | |||
| 7A9706B267703C9B4E239F0D7C7E3310 | 7A9706B267703C9B4E239F0D7C7E3310 | |||
| C22D2752B35BD2E4FD39B8F11DEB833A | C22D2752B35BD2E4FD39B8F11DEB833A | |||
| y = 0xF305E95B36502D4E60A1059FB20AB30B | y = 0xF305E95B36502D4E60A1059FB20AB30B | |||
| skipping to change at line 3000 ¶ | skipping to change at line 3562 ¶ | |||
| signature: | signature: | |||
| 41 | 41 | |||
| Extension: /* renegotiation_info */ | Extension: /* renegotiation_info */ | |||
| extension_type: FF01 | extension_type: FF01 | |||
| extension_data: | extension_data: | |||
| length: 0001 | length: 0001 | |||
| vector: | vector: | |||
| renegotiated_connection: | renegotiated_connection: | |||
| length: 00 | length: 00 | |||
| vector: -- | vector: -- | |||
| Extension: /* extended_master_secret */ | Extension: /* extended_main_secret */ | |||
| extension_type: 0017 | extension_type: 0017 | |||
| extension_data: | extension_data: | |||
| length: 0000 | length: 0000 | |||
| vector: -- | vector: -- | |||
| 00000: 01 00 00 40 03 03 93 3E A2 1E C3 80 2A 56 15 50 | 00000: 01 00 00 40 03 03 93 3E A2 1E C3 80 2A 56 15 50 | |||
| 00010: EC 78 D6 ED 51 AC 24 39 D7 E7 49 C3 1B C3 A3 45 | 00010: EC 78 D6 ED 51 AC 24 39 D7 E7 49 C3 1B C3 A3 45 | |||
| 00020: 61 65 88 96 84 CA 00 00 04 C1 00 C1 01 01 00 00 | 00020: 61 65 88 96 84 CA 00 00 04 C1 00 C1 01 01 00 00 | |||
| 00030: 13 00 0D 00 06 00 04 08 40 08 41 FF 01 00 01 00 | 00030: 13 00 0D 00 06 00 04 08 40 08 41 FF 01 00 01 00 | |||
| 00040: 00 17 00 00 | 00040: 00 17 00 00 | |||
| skipping to change at line 3059 ¶ | skipping to change at line 3621 ¶ | |||
| length: 0009 | length: 0009 | |||
| vector: | vector: | |||
| Extension: /* renegotiation_info */ | Extension: /* renegotiation_info */ | |||
| extension_type: FF01 | extension_type: FF01 | |||
| extension_data: | extension_data: | |||
| length: 0001 | length: 0001 | |||
| vector: | vector: | |||
| renegotiated_connection: | renegotiated_connection: | |||
| length: 00 | length: 00 | |||
| vector: -- | vector: -- | |||
| Extension: /* extended_master_secret */ | Extension: /* extended_main_secret */ | |||
| extension_type: 0017 | extension_type: 0017 | |||
| extension_data: | extension_data: | |||
| length: 0000 | length: 0000 | |||
| vector: -- | vector: -- | |||
| 00000: 02 00 00 41 03 03 93 3E A2 1E 49 C3 1B C3 A3 45 | 00000: 02 00 00 41 03 03 93 3E A2 1E 49 C3 1B C3 A3 45 | |||
| 00010: 61 65 88 96 84 CA A5 57 6C E7 92 4A 24 F5 81 13 | 00010: 61 65 88 96 84 CA A5 57 6C E7 92 4A 24 F5 81 13 | |||
| 00020: 80 8D BD 9E F8 56 10 C3 80 2A 56 15 50 EC 78 D6 | 00020: 80 8D BD 9E F8 56 10 C3 80 2A 56 15 50 EC 78 D6 | |||
| 00030: ED 51 AC 24 39 D7 E7 C1 00 00 00 09 FF 01 00 01 | 00030: ED 51 AC 24 39 D7 E7 C1 00 00 00 09 FF 01 00 01 | |||
| 00040: 00 00 17 00 00 | 00040: 00 00 17 00 00 | |||
| skipping to change at line 3790 ¶ | skipping to change at line 4352 ¶ | |||
| type: 15 | type: 15 | |||
| version: | version: | |||
| major: 03 | major: 03 | |||
| minor: 03 | minor: 03 | |||
| length: 0012 | length: 0012 | |||
| fragment: EB62E5AB78BF2A4B678920A11027EC43 | fragment: EB62E5AB78BF2A4B678920A11027EC43 | |||
| 0C3F | 0C3F | |||
| 00000: 15 03 03 00 12 EB 62 E5 AB 78 BF 2A 4B 67 89 20 | 00000: 15 03 03 00 12 EB 62 E5 AB 78 BF 2A 4B 67 89 20 | |||
| 00010: A1 10 27 EC 43 0C 3F | 00010: A1 10 27 EC 43 0C 3F | |||
| ]]> | </sourcecode> | |||
| </artwork> | </section> | |||
| </figure> | </section> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" toc="include" removeInRFC="false" pn="section-app | |||
| endix.a.2"> | ||||
| </section> | <name slugifiedName="name-test-examples-for-cnt_imit-">Test Examples for | |||
| </section> | CNT_IMIT Cipher Suites</name> | |||
| <section title ="Test Examples for CNT_IMIT cipher suites"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-a | |||
| <section title ="Record Examples"> | ppendix.a.2.1"> | |||
| <t> | <name slugifiedName="name-record-examples-2">Record Examples</name> | |||
| <figure> | <sourcecode type="test-vectors" markers="false" pn="section-appendix.a | |||
| <artwork> | .2.1-1"> | |||
| <![CDATA[ | It is assumed that the following keys were established | |||
| It is assumed that during Handshake following keys were established: | during handshake: | |||
| - MAC key: | - MAC key: | |||
| 00000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | 00000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | |||
| 00010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | 00010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | |||
| - Encryption key: | - Encryption key: | |||
| 00000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| 00010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |||
| - IV: | - IV: | |||
| 00000: 00 00 00 00 00 00 00 00 | 00000: 00 00 00 00 00 00 00 00 | |||
| skipping to change at line 3856 ¶ | skipping to change at line 4414 ¶ | |||
| MAC: | MAC: | |||
| 00000: f7 c3 8b 8a | 00000: f7 c3 8b 8a | |||
| Ciphertext: | Ciphertext: | |||
| 00000: 17 03 03 08 04 cf aa 0c b4 2f a5 a4 7a 13 3d 73 | 00000: 17 03 03 08 04 cf aa 0c b4 2f a5 a4 7a 13 3d 73 | |||
| 00010: b9 f2 c0 b0 4f 8c a2 55 52 f8 56 bc be 6a 58 fa | 00010: b9 f2 c0 b0 4f 8c a2 55 52 f8 56 bc be 6a 58 fa | |||
| .... | .... | |||
| 007f0: 3e e2 c7 6f a2 30 a0 44 be 21 dc 8e 1a 96 f9 a8 | 007f0: 3e e2 c7 6f a2 30 a0 44 be 21 dc 8e 1a 96 f9 a8 | |||
| 00804: 88 1f ad 83 45 96 96 84 47 | 00804: 88 1f ad 83 45 96 96 84 47 | |||
| </sourcecode> | ||||
| ]]> | </section> | |||
| </artwork> | <section numbered="true" toc="include" removeInRFC="false" pn="section-a | |||
| </figure> | ppendix.a.2.2"> | |||
| </t> | <name slugifiedName="name-handshake-examples-2">Handshake Examples</na | |||
| me> | ||||
| </section> | <t indent="0" pn="section-appendix.a.2.2-1"> | |||
| The ClientHello.extensions and the ServerHello.extensions | ||||
| <section title ="Handshake Examples"> | fields contain the renegotiation_info extension (see <xref target="RFC5746" form | |||
| <t> | at="default" sectionFormat="of" derivedContent="RFC5746"/>) | |||
| The ClientHello.extensions and the ServerHello.extensions | ||||
| fields contain the renegotiation_info extension (see <xref target="RFC5746"/>) | ||||
| in the following examples. | in the following examples. | |||
| </t> | </t> | |||
| <t> | <sourcecode type="test-vectors" markers="false" pn="section-appendix.a | |||
| <figure> | .2.2-2"> | |||
| <artwork> | ||||
| <![CDATA[ | ||||
| Server certificate curve OID: | Server certificate curve OID: | |||
| id-tc26-gost-3410-12-512-paramSetA, "1.2.643.7.1.2.1.2.1" | id-tc26-gost-3410-12-512-paramSetA, "1.2.643.7.1.2.1.2.1" | |||
| Server public key Q_s: | Server public key Q_s: | |||
| x = 0x16DB0566C0278AC8204143994824236D | x = 0x16DB0566C0278AC8204143994824236D | |||
| 97F36A13D5433E990B2EAC859D2E9B7A | 97F36A13D5433E990B2EAC859D2E9B7A | |||
| E054794655389158B8242923E3841B14 | E054794655389158B8242923E3841B14 | |||
| 24FD89F221701C89D9A3BF6A9F946795 | 24FD89F221701C89D9A3BF6A9F946795 | |||
| y = 0xD01E80DEC5BD23C8BC6B85F12BBB1635 | y = 0xD01E80DEC5BD23C8BC6B85F12BBB1635 | |||
| skipping to change at line 4480 ¶ | skipping to change at line 5030 ¶ | |||
| Record layer message: | Record layer message: | |||
| type: 15 | type: 15 | |||
| version: | version: | |||
| major: 03 | major: 03 | |||
| minor: 03 | minor: 03 | |||
| length: 0006 | length: 0006 | |||
| fragment: 117B57AD5FED | fragment: 117B57AD5FED | |||
| 00000: 15 03 03 00 06 11 7B 57 AD 5F ED | 00000: 15 03 03 00 06 11 7B 57 AD 5F ED | |||
| </sourcecode> | ||||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="contributors" title="Contributors"> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Ekaterina Griboedova <vspace/> | ||||
| CryptoPro <vspace/> | ||||
| griboedova.e.s@gmail.com | ||||
| </t> | ||||
| <t> | ||||
| Grigory Sedov<vspace /> | ||||
| CryptoPro<vspace /> | ||||
| sedovgk@cryptopro.ru | ||||
| </t> | ||||
| <t> | ||||
| Dmitry Eremin-Solenikov <vspace /> | ||||
| Auriga <vspace /> | ||||
| dbaryshkov@gmail.com | ||||
| </t> | ||||
| <t> | ||||
| Lidiia Nikiforova <vspace/> | ||||
| CryptoPro <vspace/> | ||||
| nikiforova@cryptopro.ru | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Acknowledgments"> | ||||
| </section> | </section> | |||
| </section> | ||||
| </back> | </section> | |||
| <section anchor="contributors" numbered="false" toc="include" removeInRFC="f | ||||
| alse" pn="section-appendix.b"> | ||||
| <name slugifiedName="name-contributors">Contributors</name> | ||||
| <contact fullname="Ekaterina Griboedova"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| <address> | ||||
| <email>griboedova.e.s@gmail.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Grigory Sedov"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| <address> | ||||
| <email>sedovgk@cryptopro.ru</email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Dmitry Eremin-Solenikov"> | ||||
| <organization showOnFrontPage="true">Auriga</organization> | ||||
| <address> | ||||
| <email>dbaryshkov@gmail.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Lidiia Nikiforova"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| <address> | ||||
| <email>nikiforova@cryptopro.ru</email> | ||||
| </address> | ||||
| </contact> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.c"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author fullname="Stanislav Smyshlyaev" initials="S." role="editor" surnam | ||||
| e="Smyshlyaev"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>18, Suschevsky val</street> | ||||
| <city>Moscow</city> | ||||
| <code>127018</code> | ||||
| <country>Russian Federation</country> | ||||
| </postal> | ||||
| <phone>+7 (495) 995-48-20</phone> | ||||
| <email>svs@cryptopro.ru</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Dmitry Belyavskiy" initials="D." surname="Belyavskiy"> | ||||
| <organization showOnFrontPage="true">Cryptocom</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>14/2, Kedrova St.</street> | ||||
| <city>Moscow</city> | ||||
| <code>117218</code> | ||||
| <country>Russian Federation</country> | ||||
| </postal> | ||||
| <email>beldmit@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Evgeny Alekseev" initials="E." surname="Alekseev"> | ||||
| <organization showOnFrontPage="true">CryptoPro</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>18, Suschevsky val</street> | ||||
| <city>Moscow</city> | ||||
| <code>127018</code> | ||||
| <country>Russian Federation</country> | ||||
| </postal> | ||||
| <email>alekseev@cryptopro.ru</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 162 change blocks. | ||||
| 2015 lines changed or deleted | 3178 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||