<?xml version="1.0" encoding="utf-8"?>
<!--
    Remove when submiting to IETF
    
    Copyright(C) 2003-2008 ООО "Крипто-Про"

    Этот файл содержит информацию, являющуюся
    собственностью компании Крипто Про.

    Любая часть этого файла не может быть скопирована,
    исправлена, переведена на другие языки,
    локализована или модифицирована любым способом,
    откомпилирована, передана по сети с или на
    любую компьютерную систему без предварительного
    заключения соглашения с компанией Крипто Про.


    \file $RCSfile: cptls.xml,v $
    \version $Revision: 1.2.4.7 $
    \date $Date: 2008/11/06 17:08:24 $

    \author Леонтьев С.Е. (последнее исправление: $Author: chudov $)

  -->
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!-- пока не сделал XSLT преобразование для переименования ссылок
    <!ENTITY rfc2716 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2716.xml'>
  -->
]>
<?xml-stylesheet type='text/xsl' href='xml2rfc/rfc2629xslt/rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<rfc category="info" docName="draft-chudov-cryptopro-cptls-04" ipr="trust200811"
     obsoletes="" submissionType="IETF" updates="" xml:lang="en">
  <front>
    <title abbrev="GOST Cipher Suites for TLS">GOST 28147-89 Cipher Suites for
    Transport Layer Security (TLS)</title>

    <author fullname="Grigorij S. Chudov" initials="G.S." role="editor"
            surname="Chudov">
      <organization abbrev="CRYPTO-PRO">CRYPTO-PRO, Ltd.</organization>

      <address>
        <postal>
          <street>16/5, Suschevskij val</street>

          <city>Moscow</city>

          <code>127018</code>

          <country>Russia</country>
        </postal>

        <phone>+7 (495) 780 48 20</phone>

        <facsimile>+7 (495) 660 2330</facsimile>

        <email>chudov@CryptoPro.ru</email>

        <uri>http://www.CryptoPro.ru</uri>
      </address>
    </author>

    <author fullname="Serguei E. Leontiev" initials="S.E." role="editor"
            surname="Leontiev">
      <organization abbrev="CRYPTO-PRO">CRYPTO-PRO, Ltd.</organization>

      <address>
        <postal>
          <street>16/5, Suschevskij val</street>

          <city>Moscow</city>

          <code>127018</code>

          <country>Russia</country>
        </postal>

        <phone>+7 (495) 933 11 68</phone>

        <facsimile>+7 (495) 933 11 68</facsimile>

        <email>lse@CryptoPro.ru</email>

        <uri>http://www.CryptoPro.ru</uri>
      </address>
    </author>

    <!-- Авторов должно быть не более 5 голов.
     Я перенёс их в подраздел "авторы" раздела "благодарности".

    <author initials='Alexandr' surname='Afanasiev'
	    fullname='Alexandr Afanasiev'>
	<organization>
	    Factor-TS
	</organization>
	<address>
	    <postal>
		<street>office 711, 14, Presnenskij val</street>
		<city>Moscow</city>
		<code>123557</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>afa1@factor-ts.ru</email>
	</address>
    </author>

    <author initials='Nikolaj' surname='Nikishin'
	    fullname='Nikolaj Nikishin'>
	<organization>
	    Nikolaj Nikishin
	</organization>
	<address>
	    <postal>
		<street>p/b 35, 80-5, Leningradskij prospekt</street>
		<city>Moscow</city>
		<code>125315</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>nikishin@infotecs.ru</email>
	</address>
    </author>

    <author initials='Boleslav' surname='Izotov'
	    fullname='Boleslav Izotov'>
	<organization>
	    FGUE STC "Atlas"
	</organization>
	<address>
	    <postal>
		<street>38, Obraztsova</street>
		<city>Moscow</city>
		<code>127018</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>izotov@nii.voskhod.ru</email>
	</address>
    </author>

    <author initials='Elena' surname='Minaeva'
	    fullname='Elena Minaeva'>
	<organization>
	    MD PREI
	</organization>
	<address>
	    <postal>
		<street>build 3, 6A, Vtoroj Troitskij per.</street>
		<city>Moscow</city>
		<code>xxxxxx</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>evminaeva@mail.ru</email>
	</address>
    </author>

    <author initials='Serguei' surname='Murugov'
	    fullname='Serguei Murugov'>
	<organization>
	    R-Alpha
	</organization>
	<address>
	    <postal>
		<street>4/1, Raspletina</street>
		<city>Moscow</city>
		<code>123060</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>msm@top-cross.ru</email>
	</address>
    </author>

    <author initials='Igor' surname='Ustinov'
	    fullname='Igor Ustinov'>
	<organization>
	    Cryptocom
	</organization>
	<address>
	    <postal>
		<street>office 239, 51, Leninskij prospekt</street>
		<city>Moscow</city>
		<code>119991</code>
		<country></country>
	    </postal>
	    <phone>+7 (495) xxx xx xx</phone>
	    <email>igus@cryptocom.ru</email>
	</address>
    </author>

    <author initials='Anatolij' surname='Erkin'
	    fullname='Anatolij Erkin'>
	<organization>
	    SPRCIS (SPbRCZI)
	</organization>
	<address>
	    <postal>
		<street>1, Obrucheva</street>
		<city>St.Petersburg</city>
		<code>195220</code>
		<country></country>
	    </postal>
	    <phone>+7 (812) xxx xx xx</phone>
	    <email>erkin@nevsky.net</email>
	</address>
    </author>
-->

    <date month="December" year="2008" />

    <area>Security</area>

    <!--
    <workgroup>TLS Working Group</workgroup>
  -->

    <workgroup>-</workgroup>

    <keyword>GOST 28147-89</keyword>

    <keyword>GOST R 34.10-94</keyword>

    <keyword>GOST R 34.11-94</keyword>

    <keyword>GOST R 34.10-2001</keyword>

    <keyword>GOST 34.310-95</keyword>

    <keyword>GOST 34.311-95</keyword>

    <keyword>GOST 34.310-2004</keyword>

    <!-- ???? -->

    <abstract>
      <t>This document is intended to register new cipher suites for the
      Transport Layer Security (TLS) protocol, according to the procedure
      specified in TLS Protocol standards. These cipher suites are based on
      Russian national cryptographic standards - GOST R 34.10-94 and
      GOST R 34.10-2001 public keys, GOST 28147-89 encryption algorithm and
      GOST R 34.11-94 digest algorithm.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>This document proposes the addition of new cipher suites to the
      Transport Layer Security (TLS) protocol to support GOST R 34.11-94
      digest, GOST 28147-89 encryption and VKO GOST R 34.10-94/2001 key
      exchange algorithms. The cipher suites defined here were proposed by
      CRYPTO-PRO Company for the "Russian Cryptographic Software Compatibility
      Agreement" community.</t>

      <t>Algorithms GOST R 34.10-94, GOST R 34.10-2001, GOST 28147-89 and
      GOST R 34.11-94 have been developed by Russian Federal Agency of
      Governmental Communication and Information (FAGCI) and "All-Russian
      Scientific and Research Institute of Standardization". They are
      described in <xref format="default" pageno="false"
      target="GOSTR341094"></xref>, <xref format="default" pageno="false"
      target="GOSTR341001"></xref>, <xref format="default" pageno="false"
      target="GOSTR341194"></xref> and <xref format="default" pageno="false"
      target="GOST28147"></xref> (<xref format="default" pageno="false"
      target="GOST3431095"></xref>, <xref format="default" pageno="false"
      target="GOST3431004"></xref>, <xref format="default" pageno="false"
      target="GOST3431195"></xref>). Algorithms VKO GOST R 34.10-94/2001 and
      PRF_GOSTR3411 are described in <xref format="default" pageno="false"
      target="CPALGS"></xref>.</t>

      <t>This document defines two configurations: <list>
          <t>anonymous client - authenticated server (only server provides a
          certificate);</t>

          <t>authenticated client - authenticated server (client and server
          exchange certificates).</t>
        </list></t>

      <t>The presentation language used here is the same as in <xref
      format="default" pageno="false" target="TLS1.2"></xref>. Since this
      specification extends <xref format="default" pageno="false"
      target="TLS1.2"></xref>, these descriptions should be merged with those
      in the TLS specification and any others that extend TLS. This means,
      that enum types may not specify all possible values and structures with
      multiple formats chosen with a select() clause may not indicate all
      possible cases.</t>

      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
      this document are to be interpreted as described in <xref
      format="default" pageno="false" target="RFC2119"></xref>.</t>
    </section>

    <section title="CipherSuite Definitions" toc="default">
      <section title="Key Exchange" toc="default">
        <t>The cipher suites defined here use the following key exchange
        algorithms:</t>

        <texttable align="center" style="full" suppress-title="false" title="">
          <ttcol align="left">CipherSuite</ttcol>

          <ttcol align="left">Key Exchange Algorithm</ttcol>

          <c>TLS_GOSTR341094_WITH_28147_CNT_IMIT</c>

          <c>VKO GOST R 34.10-94</c>

          <c>TLS_GOSTR341001_WITH_28147_CNT_IMIT</c>

          <c>VKO GOST R 34.10-2001</c>

          <c>TLS_GOSTR341094_WITH_NULL_GOSTR3411</c>

          <c>VKO GOST R 34.10-94</c>

          <c>TLS_GOSTR341001_WITH_NULL_GOSTR3411</c>

          <c>VKO GOST R 34.10-2001</c>
        </texttable>

        <t>Key derivation algorithms based on GOST R 34.10-94 and
        GOST R 34.10-2001 public keys (VKO GOST R 34.10-94, VKO
        GOST R 34.10-2001) are described in <xref format="default"
        pageno="false" target="CPALGS"></xref>.</t>
      </section>

      <section title="PRF, Signature and Hash" toc="default">
        <t>The cipher suites described here use HMAC and TLS PRF, as described
        in section 5 of <xref format="default" pageno="false"
        target="TLS1.2"></xref>, based on GOST R 34.11-94 hash function
        (HMAC_GOSTR3411 and PRF_GOSTR3411), with parameter set identified by
        id-GostR3411-94-CryptoProParamSet (refer to <xref format="default"
        pageno="false" target="CPALGS"></xref>). The same PRF MUST be used for
        all dependent protocols, such as <xref format="default" pageno="false"
        target="EAP-TLS"></xref>.</t>

        <t>GOST R 34.10-94/2001 signature is used for CertificateVerify
        message.</t>

        <t>GOST R 34.11 digest algorithm (<xref format="default"
        pageno="false" target="GOSTR341194"></xref>) is used for
        CertificateVerify.signature.gostR3411_hash and Finished.verify_data
        (see sections 7.4.10 and 7.4.11 of <xref format="default"
        pageno="false" target="TLS1.2"></xref>)</t>
      </section>

      <section title="Cipher and MAC" toc="default">
        <t>The following cipher algorithm and MAC functions are used (for
        details refer to <xref format="default" pageno="false"
        target="algs"></xref>):</t>

        <texttable align="center" style="full" suppress-title="false" title="">
          <ttcol align="left">CipherSuite</ttcol>

          <ttcol align="left">Cipher</ttcol>

          <ttcol align="left">MAC</ttcol>

          <c>TLS_GOSTR341094_WITH_28147_CNT_IMIT</c>

          <c>GOST28147</c>

          <c>IMIT_GOST28147</c>

          <c>TLS_GOSTR341001_WITH_28147_CNT_IMIT</c>

          <c>GOST28147</c>

          <c>IMIT_GOST28147</c>

          <c>TLS_GOSTR341094_WITH_NULL_GOSTR3411</c>

          <c>-</c>

          <c>HMAC_GOSTR3411</c>

          <c>TLS_GOSTR341001_WITH_NULL_GOSTR3411</c>

          <c>-</c>

          <c>HMAC_GOSTR3411</c>
        </texttable>

        <t>For all four cipher suites, the use of MAC is slighttly different
        from the one, described in section 6.2.3.1 of <xref format="default"
        pageno="false" target="TLS1.2"></xref> for standard stream ciphers,
        where MAC is calculated from the following data:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
  MACed_data[seq_num] = seq_num + 
                        TLSCompressed.type +
                        TLSCompressed.version + 
                        TLSCompressed.length +
                        TLSCompressed.fragment;
	    </artwork>
        </figure>

        <t>Cipher suites defined in this document use the same input for first
        record, but for each consequent record the input from all previous
        records is concatenated:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
  MACed_data[0] + ... + MACed_data[n]
	    </artwork>
        </figure>
      </section>
    </section>

    <section title="Data Structures and Computations" toc="default">
      <section anchor="algs" title="Algorithms" toc="default">
        <t>GOST 28147-89 <xref format="default" pageno="false"
        target="GOST28147"></xref> uses 256-bit key size and 8-byte IV. Cipher
        suites, defined here, use GOST 28147-89 as a stream cipher in counter
        mode with S-box parameter from id-Gost28147-89-CryptoPro-A-ParamSet
        (see <xref format="default" pageno="false" target="CPALGS"></xref>)
        and CryptoPro key meshing algorithm.</t>

        <t>IMIT_GOST28147 is GOST 28147-89 <xref format="default"
        pageno="false" target="GOST28147"></xref> in "IMITOVSTAVKA" mode (4
        bytes)</t>
      </section>

      <section title="Keys Calculation" toc="default">
        <t>Key calculation is done according to section 6.3 of <xref
        format="default" pageno="false" target="TLS1.2"></xref>, using
        PRF_GOSTR3411. The parameters are as follows:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
SecurityParameters.enc_key_length = 32
SecurityParameters.mac_key_length = 32
SecurityParameters.fixed_iv_length = 8
	    </artwork>
        </figure>

        <t>Length of necessary key material is 144 bytes.</t>
      </section>

      <section title="Server Certificate" toc="default">
        <t>For these cipher suites this message is required and it MUST
        contain a certificate, with a public key algorithm matching
        ServerHello.cipher_suite.</t>
      </section>

      <section title="Server Key Exchange" toc="default">
        <t>This message MUST NOT be used in these cipher suites, because all
        the parameters necessary are present in server certificate (see <xref
        format="default" pageno="false" target="CPPK"></xref>).</t>
      </section>

      <section title="Certificate Request" toc="default">
        <t>This message is used as described in section 7.4.4 of <xref
        format="default" pageno="false" target="TLS1.2"></xref>, and extended
        as follows:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
 enum {
     gostr341094(21), gostr34102001(22),(255)
 } ClientCertificateType;
	    </artwork>
        </figure>

        <t>gostr341094 and gostr34102001 certificate types identify that the
        server accepts GOST R 34.10-94 and GOST R 34.10-2001 public key
        certificates.</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
 enum{
   gostr3411(XX)
 } HashAlgorithm;

 enum{
   gostr341094(XX), gostr34102001(XX)
 } SignatureAlgorithm;
	    </artwork>
        </figure>

        <t>gostr3411 hash type identifes that the server accepts
        GOST R 34.11-94 hash function. It is RECOMMENDED to populate
        CertificateRequest.certificate_hash only with gostr3411 value, when
        one of the cipher suites described in this document is chosen.</t>

        <t>The server SHOULD populate supported_signature_algorithm field with
        SignatureAndHashAlgorithm pairs, where HashAlgorithm equals gostr3411 and
        SignatureAlgorithm matches corresponding ClientCertificateType.
        </t>
      </section>

      <section title="Client Key Exchange Message" toc="default">
        <t>This message is used as described in section 7.4.7 of <xref
        format="default" pageno="false" target="TLS1.2"></xref>, it is
        required for these suites, and contains DER-encoded
        TLSGostKeyTransportBlob structure <xref format="default"
        pageno="false" target="X.660"></xref>.</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
 enum { vko_gost } KeyExchangeAlgorithm;

 struct {
     select (KeyExchangeAlgorithm) {
         case vko_gost: TLSGostKeyTransportBlob;
     } exchange_keys;
 } ClientKeyExchange;
	    </artwork>
        </figure>

        <t>ASN1-syntax for this structure is:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
 TLSGostKeyTransportBlob ::= SEQUENCE {
     keyBlob GostR3410-KeyTransport,
     proxyKeyBlobs SEQUENCE OF TLSProxyKeyTransportBlob OPTIONAL
 }
 
 TLSProxyKeyTransportBlob ::= SEQUENCE {
     keyBlob GostR3410-KeyTransport,
     cert    OCTET STRING
 } 
	    </artwork>
        </figure>

        <t>GostR3410-KeyTransport is defined in <xref format="default"
        pageno="false" target="CPCMS"></xref>.</t>

        <t>keyBlob.transportParameters MUST be present.</t>

        <t>keyBlob.transportParameters.ephemeralPublicKey MUST be present if
        the server didn't request client certificate or client's public key
        algorithm and parameters do not match those of the recipient. Else it
        SHOULD be omited.</t>

        <t>proxyKeyBlobs - (optional) contains key exchange for secondary
        recipients (for example, for the firewall, which audits
        connections).</t>

        <t>cert - contains secondary recipient's certificate.</t>

        <t>Actions of client:</t>

        <t>First, the client generates a random 32-byte premaster_secret.</t>

        <t>Then shared_ukm is calculated as first 8 bytes of digest of
        concatenated client random and server random:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
shared_ukm = GOSTR3411(client_random|server_random)[0..7]
	    </artwork>
        </figure>

        <t>Then client chooses a sender key. If
        keyBlob.transportParameters.ephemeralPublicKey is present, the
        corresponding secret key MUST be used as a sender key. If it is
        missing, the secret key, corresponding to the client certificate MUST
        be used.</t>

        <t>Using the sender key and recipient's public key, algorithm VKO
        GOST R 34.10-94 or VKO GOST R 34.10-2001 (described in <xref
        format="default" pageno="false" target="CPALGS"></xref>) is applied to
        produce KEK. VKO GOST R 34.10-2001 is used with shared_ukm as UKM.</t>

        <t>Then CryptoPro Key Wrap algorithm is applied to encrypt
        premaster_secret and produce CEK_ENC and CEK_MAC. Again, shared_ukm is
        used as UKM. keyBlob.transportParameters.encryptionParamSet is used
        for all encryption operations.</t>

        <t>The resulting encrypted key (CEK_ENC) is placed in
        keyBlob.sessionEncryptedKey.encryptedKey field, it's mac (CEK_MAC) is
        placed in keyBlob.sessionEncryptedKey.macKey field, and shared_ukm
        (UKM) is placed in keyBlob.transportParameters.ukm field.</t>

        <t>Actions of server:</t>

        <t>Server MUST verify, that keyBlob.transportParameters.ukm is equal
        to GOSTR3411(client_random|server_random)[0..7], before decrypting the
        premaster_secret.</t>

        <t>Server applies VKO GOST R 34.10-94 or VKO GOST R 34.10-2001,
        (depending on the client public key type), and CryptoPro Key Unwrap
        algorithm in the simillar manner to decrypt the premaster_secret.</t>

        <t>Server MUST verify keyBlob.sessionEncryptedKey.macKey after
        decrypting the premaster_secret.</t>
      </section>

      <section title="Certificate Verify" toc="default">
        <t>This message is used as described in section 7.4.8 of <xref
        format="default" pageno="false" target="TLS1.2"></xref>. If the client
        have sent both a client certificate and an ephemeral public key, it
        MUST send a certificate verify message, as a proof of possession of
        the private key for provided certificate.</t>

        <t>The TLS structures are extended as follows:</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
 enum { gostr341094, gostr34102001 } 
     SignatureAlgorithm;

 select (SignatureAlgorithm) {
     case gostr341094:
         digitally-signed struct {
             opaque gostr341194_hash[32];
         };
     case gostr34102001:
         digitally-signed struct {
             opaque gostr341194_hash[32];
         };
 } Signature;

 CertificateVerify.signature.gostR3411_hash = 
     GOSTR3411(handshake_messages)
	    </artwork>
        </figure>
      </section>

      <section title="Finished" toc="default">
        <t>This message is used as described in section 7.4.9 of <xref
        format="default" pageno="false" target="TLS1.2"></xref>.</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
Finished.verify_data = PRF_GOSTR3411(master_secret, finished_label,
                           GOSTR3411(handshake_messages)) [0..11]
	    </artwork>
        </figure>
      </section>
    </section>

    <section title="Compatibility" toc="default">
      <t>For historical reasons, some applications use the cipher suites specified
      herein with <xref format="default" pageno="false" target="TLS1.0"></xref>,
      using some features of <xref format="default" pageno="false" target="TLS1.2"></xref>,
      including cipher-suite dependent PRF, Finished and Certificate Verify
      computations.</t>
    </section>

    <section title="Security Considerations" toc="default">
      <t>It is RECOMMENDED that software applications verify signature values,
      subject public keys and algorithm parameters to conform to <xref
      format="default" pageno="false" target="GOSTR341001"></xref>, <xref
      format="default" pageno="false" target="GOSTR341094"></xref> standards
      prior to their use.</t>

      <t>Use of the same key for signature and key derivation is NOT
      RECOMMENDED.</t>

      <t>It is RECOMMENDED for both client and server to verify the private
      key usage period, if this extension is present in the certificate.</t>

      <t>The cipher suites TLS_GOSTR341094_WITH_28147_CNT_IMIT and
      TLS_GOSTR341001_WITH_28147_CNT_IMIT proposed hereby, have been analyzed
      by special certification laboratory of Scientific and Technical Centre
      "ATLAS" in appropriate levels of target_of_evaluation (TOE).</t>

      <t>It is RECOMMENDED to subject the implementations of these cipher
      suites to examination by an authorized agency with approved methods of
      cryptographic analysis.</t>
    </section>

    <section title="IANA Considerations" toc="default">
      <t>This document defines the following new cipher suites, whose values
     presented here are used by several implementations of the same cipher
     suites for TLS 1.0, and were described in previous drafts.
     They are currently listed in the registry as reserved.
     IANA is requested to update the TLS Cipher Suite registry defined in
     [RFC5246] with these values.
      </t>

      <figure align="left" alt="" height="" suppress-title="false" title=""
              width="">
        <artwork align="left" alt="" height="" name="" type="" width=""
                 xml:space="preserve">
CipherSuite TLS_GOSTR341094_WITH_28147_CNT_IMIT = {0x00,0x80}
CipherSuite TLS_GOSTR341001_WITH_28147_CNT_IMIT = {0x00,0x81}
CipherSuite TLS_GOSTR341094_WITH_NULL_GOSTR3411 = {0x00,0x82}
CipherSuite TLS_GOSTR341001_WITH_NULL_GOSTR3411 = {0x00,0x83}
	</artwork>
      </figure>

      <t>This document defines the following new client certificate types,
     whose values presented here are used by several implementations of the
     same suites for TLS 1.0, and were described in previous drafts.
     They are currently listed in the registry as reserved.
     IANA is requested to update the TLS ClientCertificateType Identifiers Registry
     defined in [RFC5246] with these values.
      </t>

      <figure align="left" alt="" height="" suppress-title="false" title=""
              width="">
        <artwork align="left" alt="" height="" name="" type="" width=""
                 xml:space="preserve">
 enum {
     gostr341094(21), gostr34102001(22)
 } ClientCertificateType;
	</artwork>
      </figure>

      <t>This document defines the following new signature algorithm types, whose
       values are to be assigned from the TLS SignatureAlgorithm Registry defined
       in [RFC5246].</t>

      <figure align="left" alt="" height="" suppress-title="false" title=""
              width="">
        <artwork align="left" alt="" height="" name="" type="" width=""
                 xml:space="preserve">
 enum{
   gostr341094(XX), gostr34102001(XX)
 } SignatureAlgorithm;
	</artwork>
      </figure>

      <t>This document defines the following new hash algorithm types, whose
       values are to be assigned from the TLS HashAlgorithm Registry defined
       in [RFC5246].</t>

      <figure align="left" alt="" height="" suppress-title="false" title=""
              width="">
        <artwork align="left" alt="" height="" name="" type="" width=""
                 xml:space="preserve">
 enum {
   gostr3411(XX)
 } HashAlgorithm;
	</artwork>
      </figure>

    </section>
  </middle>

  <back>
    <references title="Normative references">
      <reference anchor="TLS1.2">
        <front>
          <title>The TLS Protocol</title>

          <author fullname="Tim Dierks" initials="T" surname="Dierks">
            <organization></organization>
          </author>

          <author fullname="Eric Rescorla" initials="E" surname="Rescorla">
            <organization></organization>
          </author>

          <date day="27" month="June" year="2006" />

          <abstract>
            <t>This document specifies Version 1.2 of the Transport Layer
            Security (TLS) protocol. The TLS protocol provides communications
            security over the Internet. The protocol allows client/server
            applications to communicate in a way that is designed to prevent
            eavesdropping, tampering, or message forgery.</t>
          </abstract>
        </front>

        <seriesInfo name="Internet-Draft"
                    value="draft-ietf-tls-rfc4346-bis-01" />

        <format target="http://www.ietf.org/internet-drafts/draft-ietf-tls-rfc4346-bis-01.txt"
                type="TXT" />
      </reference>

      <reference anchor="CPALGS">
        <front>
          <title>Additional Cryptographic Algorithms for Use with GOST
          28147-89, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94
          Algorithms</title>

          <author fullname="V. Popov" initials="V." surname="Popov">
            <organization></organization>
          </author>

          <author fullname="I. Kurepkin" initials="I." surname="Kurepkin">
            <organization></organization>
          </author>

          <author fullname="S. Leontiev" initials="S." surname="Leontiev">
            <organization></organization>
          </author>

          <date month="January" year="2006" />

          <abstract>
            <t>&lt;p&gt;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 applications. This memo provides
            information for the Internet community.&lt;/p&gt;</t>
          </abstract>
        </front>

        <seriesInfo name="RFC" value="4357" />

        <format octets="114564"
                target="ftp://ftp.isi.edu/in-notes/rfc4357.txt" type="TXT" />
      </reference>

      <reference anchor="CPPK">
        <front>
          <title>Using the GOST R 34.10-94, GOST R 34.10-2001, and GOST R
          34.11-94 Algorithms with the Internet X.509 Public Key
          Infrastructure Certificate and CRL Profile</title>

          <author fullname="S. Leontiev" initials="S." surname="Leontiev">
            <organization></organization>
          </author>

          <author fullname="D. Shefanovski" initials="D."
                  surname="Shefanovski">
            <organization></organization>
          </author>

          <date month="May" year="2006" />

          <abstract>
            <t>&lt;p&gt;This document supplements RFC 3279. It describes
            encoding formats, identifiers, and parameter formats for the
            algorithms GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94
            for use in Internet X.509 Public Key Infrastructure (PKI).
            [STANDARDS TRACK]&lt;/p&gt;</t>
          </abstract>
        </front>

        <seriesInfo name="RFC" value="4491" />

        <format octets="39095" target="ftp://ftp.isi.edu/in-notes/rfc4491.txt"
                type="TXT" />
      </reference>

      <reference anchor="CPCMS">
        <front>
          <title>Using the GOST 28147-89, GOST R 34.11-94, GOST R 34.10-94,
          and GOST R 34.10-2001 Algorithms with Cryptographic Message Syntax
          (CMS)</title>

          <author fullname="S. Leontiev" initials="S." surname="Leontiev">
            <organization></organization>
          </author>

          <author fullname="G. Chudov" initials="G." surname="Chudov">
            <organization></organization>
          </author>

          <date month="May" year="2006" />

          <abstract>
            <t>&lt;p&gt;This document describes the conventions for using the
            cryptographic algorithms GOST 28147-89, GOST R 34.10-94, GOST R
            34.10-2001, and GOST R 34.11-94 with the Cryptographic Message
            Syntax (CMS). The CMS is used for digital signature, digest,
            authentication, and encryption of arbitrary message contents.
            [STANDARDS TRACK]&lt;/p&gt;</t>
          </abstract>
        </front>

        <seriesInfo name="RFC" value="4490" />

        <format octets="54912" target="ftp://ftp.isi.edu/in-notes/rfc4490.txt"
                type="TXT" />
      </reference>

      <reference anchor="GOST28147">
        <front>
          <title>Cryptographic Protection for Data Processing System,
          Gosudarstvennyi Standard of USSR (In Russian)</title>

          <author>
            <organization>Government Committee of the USSR for
            Standards</organization>
          </author>

          <date year="1989" />

          <abstract>
            <t>?????</t>
          </abstract>
        </front>

        <seriesInfo name="GOST" value="28147-89" />
      </reference>

      <reference anchor="GOSTR341094">
        <front>
          <title>Information technology. Cryptographic Data Security. Produce
          and check procedures of Electronic Digital Signatures based on
          Asymmetric Cryptographic Algorithm, Gosudarstvennyi Standard of
          Russian Federation (In Russian)</title>

          <author>
            <organization>Government Committee of the Russia for
            Standards</organization>
          </author>

          <date year="1994" />
        </front>

        <seriesInfo name="GOST R" value="34.10-94" />
      </reference>

      <reference anchor="GOSTR341001">
        <front>
          <title>Information technology. Cryptographic Data Security.Signature
          and verification processes of [electronic] digital signature,
          Gosudarstvennyi Standard of Russian Federation (In Russian)</title>

          <author>
            <organization>Government Committee of the Russia for
            Standards</organization>
          </author>

          <date year="2001" />
        </front>

        <seriesInfo name="GOST R" value="34.10-2001" />
      </reference>

      <reference anchor="GOSTR341194">
        <front>
          <title>Information technology. Cryptographic Data Security. Hashing
          function, Gosudarstvennyi Standard of Russian Federation (In
          Russian)</title>

          <author>
            <organization>Government Committee of the Russia for
            Standards</organization>
          </author>

          <date year="1994" />
        </front>

        <seriesInfo name="GOST R" value="34.11-94" />
      </reference>

      <reference anchor="GOST3431095">
        <front>
          <title>Information technology. Cryptographic Data Security. Produce
          and check procedures of Electronic Digital Signature based on
          Asymmetric Cryptographic Algorithm (In Russian)</title>

          <author>
            <organization>Council for Standardization, Metrology and
            Certification of the Commonwealth of Independence States (EASC),
            Minsk</organization>
          </author>

          <date year="1995" />
        </front>

        <seriesInfo name="GOST" value="34.310-95" />
      </reference>

      <reference anchor="GOST3431004">
        <front>
          <title>Information technology. Cryptographic Data Security.
          Formation and verification processes of (electronic) digital
          signature based on Asymmetric Cryptographic Algorithm (In
          Russian)</title>

          <author>
            <organization>Council for Standardization, Metrology and
            Certification of the Commonwealth of Independence States (EASC),
            Minsk</organization>
          </author>

          <date year="2004" />
        </front>

        <seriesInfo name="GOST" value="34.310-2004" />
      </reference>

      <reference anchor="GOST3431195">
        <front>
          <title>Information technology. Cryptographic Data Security. Cashing
          function (In Russian)</title>

          <author>
            <organization>Council for Standardization, Metrology and
            Certification of the Commonwealth of Independence States (EASC),
            Minsk</organization>
          </author>

          <date year="1995" />
        </front>

        <seriesInfo name="GOST" value="34.311-95" />
      </reference>
    </references>

    <references title="Informative references">
      <reference anchor="RFC2119">
        <front>
          <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate
          Requirement Levels</title>

          <author fullname="Scott Bradner" initials="S." surname="Bradner">
            <organization>Harvard University</organization>

            <address>
              <postal>
                <street>1350 Mass. Ave.</street>

                <street>Cambridge</street>

                <street>MA 02138</street>
              </postal>

              <phone>- +1 617 495 3864</phone>

              <email>sob@harvard.edu</email>
            </address>
          </author>

          <date month="March" year="1997" />

          <area>General</area>

          <keyword>keyword</keyword>

          <abstract>
            <t>In many standards track documents several words are used to
            signify the requirements in the specification. These words are
            often capitalized. This document defines these words as they
            should be interpreted in IETF documents. Authors who follow these
            guidelines should incorporate this phrase near the beginning of
            their document: <list>
                <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
                "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
                "OPTIONAL" in this document are to be interpreted as described
                in RFC 2119.</t>
              </list></t>

            <t>Note that the force of these words is modified by the
            requirement level of the document in which they are used.</t>
          </abstract>
        </front>

        <seriesInfo name="BCP" value="14" />

        <seriesInfo name="RFC" value="2119" />

        <format octets="4723" target="ftp://ftp.isi.edu/in-notes/rfc2119.txt"
                type="TXT" />

        <format octets="17491"
                target="http://xml.resource.org/public/rfc/html/rfc2119.html"
                type="HTML" />

        <format octets="5777"
                target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"
                type="XML" />
      </reference>

      <!-- &rfc2716; - всё руками, всё руками -->

      <reference anchor="EAP-TLS">
        <front>
          <title>PPP EAP TLS Authentication Protocol</title>

          <author fullname="Bernard Aboba" initials="B." surname="Aboba">
            <organization>Microsoft Corporation</organization>

            <address>
              <postal>
                <street>One Microsoft Way</street>

                <city>Redmond</city>

                <region>WA</region>

                <code>98052</code>

                <country>US</country>
              </postal>

              <phone>+1 425 936 6605</phone>

              <email>bernarda@microsoft.com</email>
            </address>
          </author>

          <author fullname="Dan Simon" initials="D." surname="Simon">
            <organization>Microsoft Corporation</organization>

            <address>
              <postal>
                <street>One Microsoft Way</street>

                <city>Redmond</city>

                <region>WA</region>

                <code>98052</code>

                <country>US</country>
              </postal>

              <phone>+1 425 936 6711</phone>

              <email>dansimon@microsoft.com</email>
            </address>
          </author>

          <date month="October" year="1999" />

          <abstract>
            <t>The Point-to-Point Protocol (PPP) provides a standard method
            for transporting multi-protocol datagrams over point-to-point
            links. PPP also defines an extensible Link Control Protocol (LCP),
            which can be used to negotiate authentication methods, as well as
            an Encryption Control Protocol (ECP), used to negotiate data
            encryption over PPP links, and a Compression Control Protocol
            (CCP), used to negotiate compression methods. The Extensible
            Authentication Protocol (EAP) is a PPP extension that provides
            support for additional authentication methods within PPP.</t>

            <t>Transport Level Security (TLS) provides for mutual
            authentication, integrity-protected ciphersuite negotiation and
            key exchange between two endpoints. This document describes how
            EAP-TLS, which includes support for fragmentation and reassembly,
            provides for these TLS mechanisms within EAP.</t>
          </abstract>
        </front>

        <seriesInfo name="RFC" value="2716" />

        <format octets="50108" target="ftp://ftp.isi.edu/in-notes/rfc2716.txt"
                type="TXT" />
      </reference>

      <reference anchor="TLS1.0">
        <front>
          <title>The TLS Protocol Version 1.0</title>

          <author fullname="Tim Dierks" initials="T." surname="Dierks">
            <organization>Certicom</organization>

            <address>
              <email>tdierks@certicom.com</email>
            </address>
          </author>

          <author fullname="Christopher Allen" initials="C." surname="Allen">
            <organization>Certicom</organization>

            <address>
              <email>callen@certicom.com</email>
            </address>
          </author>

          <date month="January" year="1999" />

          <abstract>
            <t>This document specifies Version 1.0 of the Transport Layer
            Security (TLS) protocol. The TLS protocol provides communications
            privacy over the Internet. The protocol allows client/server
            applications to communicate in a way that is designed to prevent
            eavesdropping, tampering, or message forgery.</t>
          </abstract>
        </front>

        <seriesInfo name="RFC" value="2246" />

        <format octets="170401"
                target="ftp://ftp.isi.edu/in-notes/rfc2246.txt" type="TXT" />
      </reference>

      <reference anchor="X.660">
        <front>
          <title>ITU-T Recommendation X.660 Information Technology - ASN.1
          encoding rules: Specification of Basic Encoding Rules (BER),
          Canonical Encoding Rules (CER) and Distinguished Encoding Rules
          (DER)</title>

          <author>
            <organization>ISO/IEC</organization>
          </author>

          <date year="1997" />
        </front>

        <seriesInfo name="ITU-T" value="X.660" />
      </reference>
    </references>

    <section title="ASN.1 Modules" toc="default">
      <t>Additional ASN.1 modules, referenced here, can be found in <xref
      format="default" pageno="false" target="CPALGS"></xref> and <xref
      format="default" pageno="false" target="CPCMS"></xref>.</t>

      <section title="Gost-CryptoPro-TLS" toc="default">
        <!-- Пока так ????
	    .so Gost-CryptoPro-TLS.asn
    	-->

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve">
Gost-CryptoPro-TLS
    { iso(1) member-body(2) ru(643) rans(2) 
      cryptopro(2) other(1) modules(1) gost-CryptoPro-TLS(16) 1 }
DEFINITIONS ::=
BEGIN
-- EXPORTS All --
-- The types and values defined in this module are exported for
-- use in the other ASN.1 modules contained within the Russian
-- Cryptography "GOST" &amp; "GOST R" Specifications, and for the use
-- of other applications which will use them to access Russian 
-- Cryptography services. Other applications may use them for
-- their own purposes, but this will not constrain extensions and
-- modifications needed to maintain or improve the Russian 
-- Cryptography service.
    IMPORTS 
        Certificate,
        AlgorithmIdentifier
        FROM PKIX1Explicit88 {iso(1) identified-organization(3)
        dod(6) internet(1) security(5) mechanisms(5) pkix(7)
        id-mod(0) id-pkix1-explicit-88(1)}
        id-CryptoPro-algorithms, gostR3410-EncryptionSyntax
        FROM Cryptographic-Gost-Useful-Definitions 
            { iso(1) member-body(2) ru(643) rans(2) 
              cryptopro(2) other(1) modules(1) 
              cryptographic-Gost-Useful-Definitions(0) 1 }
        GostR3410-KeyTransport
        FROM GostR3410-EncryptionSyntax 
             gostR3410-EncryptionSyntax
    ;
    id-PRF-GostR3411-94 OBJECT IDENTIFIER ::= 
        { id-CryptoPro-algorithms prf-gostr3411-94(23) }
    TLSProxyKeyTransportBlob ::=
        SEQUENCE {
            keyBlob GostR3410-KeyTransport,
            cert    OCTET STRING
        }
    TLSGostKeyTransportBlob ::=
        SEQUENCE {
            keyBlob GostR3410-KeyTransport,
            proxyKeyBlobs SEQUENCE OF 
                TLSProxyKeyTransportBlob OPTIONAL
        }
    TLSGostSrvKeyExchange ::= 
        SEQUENCE OF 
            OCTET STRING (CONSTRAINED BY {Certificate})
    TLSGostExtensionHashHMACSelect ::=
        SEQUENCE {
            hashAlgorithm AlgorithmIdentifier,
            hmacAlgorithm AlgorithmIdentifier,
            prfAlgorithm AlgorithmIdentifier
        }
    TLSGostExtensionHashHMACSelectClient ::=
        SEQUENCE OF
            TLSGostExtensionHashHMACSelect
    TLSGostExtensionHashHMACSelectServer ::=
        TLSGostExtensionHashHMACSelect
    
END -- Gost-CryptoPro-TLS
	</artwork>
        </figure>
      </section>
    </section>

    <section title="Acknowledgments" toc="default">
      <t>This document was created in accordance with "Russian Cryptographic
      Software Compatibility Agreement", signed by FGUE STC "Atlas",
      CRYPTO-PRO, Factor-TS, MD PREI, Infotecs GmbH, SPRCIS (SPbRCZI),
      Cryptocom, R-Alpha. The aim of this agreement is to achieve mutual
      compatibility of the products and solutions.</t>

      <t>The authors wish to thank:</t>

      <t><list>
          <t>Microsoft Corporation Russia for provided information about
          company products and solutions, and also for technical consulting in
          PKI.</t>

          <t>RSA Security Russia and Demos Co Ltd for active colaboration and
          critical help in creation of this document.</t>

          <t>NIP Informzachita for compatibility testing of the proposed data
          formats while incorporating them into company products.</t>

          <t>Citrix Inc for help in compatibility testing Citrix products for
          Microsoft Windows.</t>

          <t>Russ Hously (Vigil Security, LLC, housley@vigilsec.com) and
          Vasilij Sakharov (DEMOS Co Ltd, svp@dol.ru) for initiative, creating
          this document.</t>

          <!--<t>Eric Rescorla (Network Resonance,
	    ekr@networkresonance.com) for review this
	    document.</t>-->
        </list></t>

      <!-- Пока так ????
    	-->

      <figure align="left" alt="" height="" suppress-title="false" title=""
              width="">
        <preamble>Author's Addresses</preamble>

        <artwork align="left" alt="" height="" name="" type="" width=""
                 xml:space="preserve">
Alexandr Afanasiev
Factor-TS
office 711, 14, Presnenskij val,
Moscow, 123557, Russian Federation 
EMail: afa1@factor-ts.ru

Nikolaj Nikishin
Infotecs GmbH
p/b 35, 80-5, Leningradskij prospekt,
Moscow, 125315, Russian Federation 
EMail: nikishin@infotecs.ru

Boleslav Izotov
FGUE STC "Atlas"
38, Obraztsova, 
Moscow, 127018, Russian Federation 
EMail: izotov@nii.voskhod.ru

Elena Minaeva
MD PREI
build 3, 6A, Vtoroj Troitskij per.,
Moscow, Russian Federation 
EMail: evminaeva@mail.ru

Serguei Murugov
R-Alpha
4/1, Raspletina,
Moscow, 123060, Russian Federation 
EMail: msm@top-cross.ru

Igor Ustinov
Cryptocom
office 239, 51, Leninskij prospekt,
Moscow, 119991, Russian Federation 
EMail: igus@cryptocom.ru

Anatolij Erkin
SPRCIS (SPbRCZI)
1, Obrucheva,
St.Petersburg, 195220, Russian Federation 
EMail: erkin@nevsky.net
	</artwork>
      </figure>
    </section>
  </back>
</rfc>
