<?xml version="1.0" encoding="US-ASCII"?>
<!-- this is version 5 of this xml2rfc template -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2223 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2223.xml">
<!ENTITY rfc2578 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2578.xml">
<!ENTITY rfc2579 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2579.xml">
<!ENTITY rfc2580 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2580.xml">
<!ENTITY rfc2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY rfc3410 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3410.xml">
<!ENTITY rfc4181 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4181.xml">
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc strict="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<!--<rfc category="std" docName="draft-v2-tls-cert-ETSI-IEEE.txt" ipr="trust200902">-->
<!--<rfc category="info" docName="draft-v2-tls-cert-ETSI-IEEE.txt" ipr="trust200902">-->
<rfc category="info" docName="draft-msahli-ipwave-ieee1609-00.txt" ipr="trust200902">
<front>
	<!--<title abbrev="IEEE and IETF Certificate Types for TLS">Transport Layer Security (TLS) Authentication using ETSI TS 103 097 and IEEE 1609.2 certificates</title>-->
	<title abbrev="IEEE and ETSI Certificate Types for TLS"> TLS Authentication using IEEE 1609.2 certificates</title>
	
	
	 <author fullname="Mounira Msahli" initials="M" role="editor" surname="Msahli">
      <organization> Telecom ParisTech</organization>
			<address>
				<postal>
					<street/>
					<city/>
					<code/> 
					<country> France</country>
				</postal>
				<email> mounira.msahli@telecom-paristech.fr</email>
			</address>
			 </author>
	
	<author fullname="Panos Kampanakis" initials="P.K" role="editor" surname="Kampanakis">
      	<organization> Cisco</organization>
			<address>
				<postal>
					<street/>
					<city/>
					<code/>
					<country>  USA </country>
				</postal>
				<email> pkampana@cisco.com</email>
			</address>
			 </author>
			 
		<date/>

	<workgroup> IPWAVE Working Group</workgroup>

	<abstract>
		<t>This document specifies the use of a new certificate type to
		authenticate TLS entities. The first type enables the use of a
		certificate specified by the IEEE and the European Telecommunications Standards Institute (ETSI).</t>
	</abstract>

</front>

<middle>

	<section title="Introduction">
		<t> The TLS protocol [RFC8446] [RFC5246] uses X509 and Raw Public Key in
   order to authenticate servers and clients.  This document describes
   the use of the certificate specified by the IEEE in [IEEE1609.2]
   and profiled by the European Telecommunications Standards Institute 
   (ETSI) in [TS103097].  These standards specify secure communications 
   in vehicular environments.  The certificate types are optimized for 
   bandwidth and processing time to support delay-sensitive applications,
   and also provide both authentication and authorization information to
   enable fast access control decisions in ad hoc networks such as are
   found in Intelligent Transportation System (ITS). The extension is following the [RFC6066].
  </t>
  </section>

	<section title="Requirements Terminology">
		<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
		"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
		document are to be interpreted as described in <xref target="RFC2119"/>.</t>
	</section>

	<section title="Extension Overview">
	 <t>
   This specification extends the Client Hello and Server Hello messages, 
   by using the "extension_data" field of the ClientCertType Extension 
   and the ServerCertType Extension structures defined in RFC7250. 
   In order to negotiate the support of IEEE 1609.2 or ETSI TS 
   103097 certificate-based authentication, the clients and the 
   servers MAY include the extension of type "client_certificate_type" 
   and "server_certificate_type" in the extended Client Hello and 
   "EncryptedExtensions".  The "extension_data" field of this 
   extension SHALL contain a list of supported certificate types 
   proposed by the client as provided in the figure below:
	 <figure>
		<artwork>
		
  /* Managed by IANA */
   enum {
       X509(0),
       RawPublicKey(2),
       1609Dot2(3),
       (255)
   } CertificateType;
   
   struct {
       select (certificate_type) {
       
           /* certificate type defined in this document.*/
            case 1609Dot2:
            opaque cert_data&lt;1..2^24-1&gt;;
            
            /* RawPublicKey defined in RFC 7250*/
           case RawPublicKey:
           opaque ASN.1_subjectPublicKeyInfo&lt;1..2^24-1&gt;;
              
           /* X.509 certificate defined in RFC 5246*/
           case X.509:
           opaque cert_data&lt;1..2^24-1&gt;;
           
            };
            
          Extension extensions&lt;0..2^16-1&gt;;
      } CertificateEntry;
  </artwork>
	</figure></t>

		<t>   In case where the TLS server accepts the described extension, it selects
   one of the certificate types in the extension described above.  Note
   that a server MAY authenticate the client using other authentication
   methods.
   The end-entity certificate's public key has to be compatible with one
   of the certificate types listed in the extension described above.</t>

  </section>
	
	
	<section title="TLS Client and Server Handshake">
	<t>   The "client_certificate_type" and "server_certificate_type"
   extensions MUST be sent in handshake phase as illustrated in Figure 1
   below. The same extension shall be sent in Server Hello for
   TLS 1.2.
		<figure anchor="msg_flow" title="Message Flow with certificate type extension for Full TLS 1.3 Handshake">
		<artwork>
  Client                                           Server

Key  ^ ClientHello
Exch | + server_certificate_type*
     | + client_certificate_type*
     | + key_share*
     v + signature_algorithms*       --------&gt;
                                                  ServerHello  ^ Key
                                                 + key_share*  v Exch
                                        {EncryptedExtensions}  ^ Server
                                   {+ server_certificate_type*}| Params
                                   {+ client_certificate_type*}|
                                        {CertificateRequest*}  v
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               &lt;-------   [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              --------&gt;
       [Application Data]      &lt;-------&gt;   [Application Data]		
       
              +  Indicates noteworthy extensions sent in the
                 previously noted message.

              *  Indicates optional or situation-dependent
                 messages/extensions that are not always sent.

              {} Indicates messages protected using keys
                 derived from a [sender]_handshake_traffic_secret.

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.

		  
</artwork>
		</figure></t>

		<section title="Client Hello">
		
			<t>In order to indicate the support of IEEE 1609.2 or ETSI TS 103097 certificates,
			client MUST include an extension of type "client_certificate_type" and "server_certificate_type" in the extended
			Client Hello message. The Hello extension is described in
			Section 4.1.2 of TLS 1.3 <xref target="RFC8446"/>.</t>

			<t>The extension 'client_certificate_type' sent in the client hello MAY carry a list
			of supported certificate types, sorted by client preference.  It is a
			list in the case where the client supports multiple certificate types.</t>

			<t>Client MAY respond along with supported certificates by sending a
			"Certificate" message immediately followed by the "CetificateVerify"
			message. These specifications are valid for TLS 1.2 and TLS 1.3.</t>

<t> All implementations SHOULD be prepared to handle extraneous certificates and arbitrary orderings from any
TLS version, with the exception of the end-entity certificate which MUST be first. </t>
	</section>
  
  <section title="Server Hello">
 <t> When the server receives the Client Hello containing the client_certificate_type extension and/or the server_certificate_type extension, the following options are possible:
	
 <list style="symbolSSi">
 	<t>	- The server supports the extension described in this document. It selects a certificate type from the client_certificate_type field in the extended Client Hello and must take into account the client authentication list priority.</t>
	<t>	- The server does not support the proposed certificate type and terminates the session with a fatal alert of type "unsupported_certificate".</t>
 	<t>	- The server does not support the extension defined in this document.  In this case, the server returns the server hello without the extensions defined in this document.</t>
   <t> 	- The server supports the extension defined in this document, but it does not have any certificate type in common with the client.  Then, the server terminates the session with a fatal alert of  type "unsupported_certificate".</t>
  <t>	- The server supports the extensions defined in this document and has at least one certificate type in common with the client.  In  this case, the server MAY include the client_certificate_type   extension in the Server Hello for TLS 1.2  or in Encrypted
      Extension for TLS 1.3.  Then, the server requests a certificate from the client (via the certificate_request message) </t>
    
  
  </list>
	</t>
	
	<t>	It is worth to mention that the TLS client or server public keys  are obtained from a certificate chain from a web page. </t>
	
	</section>
	
	
	
	</section>

	<section title="Certificate Verification">
		
	<!--<t>#Are there trust anchors, pre-loaded lists, standard verification
		policies, TOFU approaches, or other regimes for validating these
		certificates?  "best practices" for certificate validation: pki memo,
		scoopf (Lamia :P), PRESERVE... #</t>-->

	<t>Verification of an IEEE 1609.2/ ETSI TS 103097 certificates or certificate chain is
	described in section 5.5.2 of <xref target=" IEEE1609.2"/>. In the case where the certificate_type is 1609Dot2, the CertificateVerify message 
 does not contain a raw signature but instead contains a Canonical Octet Encoding
 Rules (COER)-encoded Ieee1609Dot2Data of type signed as specified
 in [1609.2b], with the pduFunctionalType field present and set to
 tlsHandshake. A full specification of the contents of this Ieee1609Dot2Data,
 including optional fields, is given in [1609.2b]. The message input to
 the signature calculation is the usual message input for TLS 1.3, as
 specified in [RFC8446] section 4.4.3, consisting of pad, context string, separator
 and content, where content is Transcript-Hash(Handshake Context, Certificate). </t>


	</section>
	
		
	<section title="Examples">
	<t>Some of exchanged messages examples are illustrated  in Figures 2 and 3.</t>
	
<section title="TLS Server and TLS Client use the 1609Dot2 Certificate">

<t>This section shows an example where the TLS client as well as the 
TLS server use the  IEEE 1609.2 certificate. In consequence, both the 
server and the client populate the client_certificate_type and server_certificate_type with 
extension IEEE 1609.2 certificates as mentioned in figure 2. 

	<figure anchor="msg_fltw" title="TLS Client and TLS Server use the IEEE 1609.2 certificate">
		<artwork>
   Client                                           Server

ClientHello,
client_certificate_type*=1609Dot2,
server_certificate_type*=1609Dot2,   --------&gt;     ServerHello,
                                          {EncryptedExtensions}
                            {client_certificate_type*=1609Dot2}
                            {server_certificate_type*=1609Dot2}
                                          {CertificateRequest*}
                                                 {Certificate*}
                                           {CertificateVerify*}
                                                     {Finished}
  {Certificate*}           &lt;-------         [Application Data*]
  {CertificateVerify*}
  {Finished}              --------&gt; 
  [Application Data]      &lt;-------&gt;          [Application Data]		

</artwork>
</figure></t>
</section>
<section title="TLS Client uses the IEEE 1609.2 certificate and TLS Server uses the X 509 certificate">

	<t>   This example shows the TLS authentication, where the TLS Client populates the
   server_certificate_type extension with the X509 certificate and Raw
   Public Key type as presented in figure 3. the client indicates its ability to receive and to validate an X509 certificate
   from the server. The server chooses the X509 certificateto make its authentication with the Client. 
	
		<figure anchor="msg_fluw" title="TLS Client uses the IEEE 1609.2 certificate and TLS Server uses the X 509 certificate">
		<artwork>
  Client                                           Server

ClientHello,
client_certificate_type*=(1609Dot2),
server_certificate_type*=(1609.9Dot,
X509,RawPublicKey),         -----------&gt;         ServerHello,
                                        {EncryptedExtensions}  
                          {client_certificate_type*=1609Dot2}
                              {server_certificate_type*=X509}
                                               {Certificate*}  
                                         {CertificateVerify*} 
                                                   {Finished}  
                            &lt;---------    [Application Data*]
{Finished}                  ---------&gt;
[Application Data]          &lt;--------&gt;     [Application Data]		

</artwork>
</figure></t>
</section>
</section>

	<section title="Security Considerations">
	
	<t>This section provides an overview of the basic security
		considerations which need to be taken into account before
		implementing the necessary security mechanisms. The security
		considerations described throughout <xref target="RFC8446"/>  and [RFC5246] apply here as well.</t>

   <t>For security considerations in a vehicular environment, the minimal
   use of any TLS extensions is recommended such as :

<list style="symbolSSi">

   <t> The "client_certificate_type" [IANA value 19] extension who's
      purpose was previously described in [RFC7250].</t>

   <t>  The "server_certificate_type" [IANA value 20] extension who's
      purpose was previously described in [RFC7250].</t>

    <t>The "SessionTicket" [IANA value 35] extension for session
      resumption.</t>
      
  <t> In addition, servers SHOULD not support renegotiation [RFC5746] which
   presented Man-In-The-Middle (MITM) type attacks over the past years for TLS 1.2. </t>

      	</list>

      </t>
      

	</section>
	
	<section title="Privacy Considerations">
	
<t>For privacy considerations in a vehicular environment the use of EEE 1609.2/ETSI TS 103097 certificate is recommended for many reasons: 
			<list style="symbolsi">
			<t>In order to address the risk of a personal data leakage, messages exchanged for V2V communications are signed using IEEE 1609.2/ETSI TS 103097 pseudonym certificates</t>
			<t>The purpose of these certificates is to provide privacy relying on geographical and/or temporal validity criteria, and minimizing the exchange of private data</t>
		</list>
	</t>
	</section>

	<section title="IANA Considerations">
		<t>Existing IANA references have not been updated yet to point to this
		document.</t>
   <!--<t>IANA is also asked to register two new values in the "TLS ClientCertificateType
		Identifiers Registry", as follows:
		<list style="symbols">
			<t>TBD</t>
			<t>TBD</t>
		</list></t>-->
	</section>

	<section anchor="ack" title="Acknowledgements">
	
  <t>  The authors wish to thank Eric Rescola and Ilari Liusvaara for 
   their feedback and suggestions on improving this document.  
   Thanks are due to Sean Turner for his valuable and detailed 
   comments. Special thanks to Maik Seewald 
   for their guidance and support in the early stages of the draft.</t>
    
    </section>
    
 </middle>

<back>

	<references title="Normative References">
		<reference anchor="TS103097">
			<front>
				<title>
				ETSI TS 103 097 v1.3.1 (2017-10): Intelligent Transport
				Systems (ITS); Security; Security header and certificate formats</title>
				<author surname="ETSI"/>
				<date month="October" year="2017"/>
			</front>
		</reference>

		<reference anchor="IEEE1609.2">
			<front>
				<title>IEEE Standard for Wireless Access in 
				Vehicular Environments - Security Services for Applications and
				Management Messages</title>
				<author surname="IEEE"/>
				<date year="2016"/>
			</front>
		</reference>
		
				<reference anchor="IEEE1609.2b">
			<front>
				<title> Draft Standard for Wireless Access in  Vehicular Environments Security Services for Applications and for Management Messages </title>
				<author surname="IEEE"/>
				<date year="2018"/>
			</front>
		</reference>

		<reference anchor="RFC2119">
			<front>
				<title>Key words for use in RFCs to Indicate
				Requirement Levels</title>
				<author initials="S." surname="Bradner"/>
				<date month="March" year="1997"/>
			</front>
		</reference>

		<reference anchor="RFC4492">
			<front>
				<title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)</title>
				<author initials="S." surname="Blake-Wilson"/>
				<author initials="N." surname="Bolyard"/>
				<author initials="V." surname="Gupta"/>
				<author initials="C." surname="Hawk"/>
				<author initials="B." surname="Moeller"/>
				<date month="May" year="2006"/>
			</front>
		</reference>

		<reference anchor="RFC5246">
			<front>
				<title>The Transport Layer Security
				(TLS) Protocol Version 1.2</title>
				<author initials="T." surname="Dierks"/>
				<author initials="E." surname="Rescorla"/>
				<date month="August" year="2008"/>
			</front>
		</reference>


		<reference anchor="RFC8446">
			<front>
				<title>The Transport Layer Security
				(TLS) Protocol Version 1.3</title>
			<author initials="E." surname="Rescorla"/>
				<date month="August" year="2018"/>
			</front>
		</reference>


		<reference anchor="RFC5746">
			<front>
				<title>Transport
				Layer Security (TLS) Renegotiation Indication Extension"</title>
				<author initials="E." surname="Rescorla"/>
				<author initials="M." surname="Ray"/>
				<author initials="S." surname="Dispensa"/>
				<author initials="N." surname="Oskov"/>
				<date month="February" year="2010"/>
			</front>
		</reference>

		<reference anchor="RFC7250">
			<front>
				<title> Using Raw Public Keys in Transport Layer Security (TLS)
              and Datagram Transport Layer Security (DTLS)</title>
        <author initials="P." surname="Wouters"/>
				<author initials="H." surname="Tschofenig"/>
				<author initials="S." surname="Weiler"/>
				<author initials="T." surname=" Kivinen"/>
				<date month="June" year="2014"/>
			</front>
</reference>

		<reference anchor="RFC6066">
			<front>
				<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
				<author initials="D." surname="Eastlake"/>  
				<date month="January" year=" 2011"/>
    	</front>
		</reference>
		

	</references>
		
	<references title="Informative References">
		
		<reference anchor="draft-serhrouchni-tls-certieee1609-00">
			<front>
				<title>Transport Layer Security (TLS) Authentication using ITS ETSI and IEEE certificates</title>
				<author initials="A." surname="KAISER"/>
				<author initials="H." surname="LABIOD"/>
				<author initials="B" surname="LONC"/>
				<author initials="M." surname="MSAHLI"/>
				<author initials="A" surname=" SERHROUCHNI"/>
				<date month="august" year="2017"/>
    	</front>
		</reference>
		
				
	</references>
	
	<section anchor="Co-Authors" title="Co-Authors">
	
 <t><list style="symbols">

<t>Houda Labiod <vspace/>
Telecom ParisTech<vspace/>
houda.labiod@telecom-paristech.fr</t>

<t>Nancy Cam-Winget <vspace/>
CISCO, USA<vspace/>
ncamwing@cisco.com</t>

<t>Ahmed Serhrouchni<vspace/>
Telecom ParisTech<vspace/>
ahmed.serhrouchni@telecom-paristech.fr</t>

<t>William Whyte<vspace/>
 Onboard Security<vspace/>
wwhyte@onboardsecurity.com</t>
	
</list></t>
</section>

	</back>
	</rfc>
