﻿<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ 
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
 <?rfc toc="yes" ?>
 <?rfc symrefs="yes" ?>
 <?rfc sortrefs="yes"?> 
 <?rfc compact="yes" ?>
 <?rfc subcompact="no" ?>  
 <?rfc iprnotified="no" ?>
  <?rfc strict="no" ?>

<rfc category="std" docName="draft-moskowitz-ssls-hip-00" ipr="trust200902">
 <front>
<title abbrev="SSLS kmp via HIP">Secure Session Layer Services KMP via HIP</title>
	<author fullname="Robert Moskowitz" initials="R." surname="Moskowitz" >
	<organization>Huawei</organization>
	<address>
	<postal> 
	  <street> </street>
	  <city>Oak Park</city>
	  <region>MI</region>
	  <code>48237</code> 
	</postal>
	<email>rgm@labs.htt-consult.com</email>
	</address>
	</author>
    <author fullname="Liang Xia" initials="L." surname="Xia">
        <organization>Huawei</organization>
        <address>
        <postal>
        <street>No. 101, Software Avenue, Yuhuatai District</street>
        <city>Nanjing</city>
        <country>China</country>
        </postal>
        <phone></phone>
        <email>Frank.xialiang@huawei.com</email>
        </address>
    </author>
    <author fullname="Igor Faynberg" initials="I." surname="Faynberg">
    <organization>Stargazers Consulting, LLC</organization>
    <address>
    <postal>
      <street></street>
      <city>East Brunswick</city>
      <region>NJ</region>
      <code>08816</code>
      <country>USA</country>
    </postal>
    <email> igorfaynberg@gmail.com</email>
    </address>
    </author>
	<author fullname="Susan Hares" initials="S." surname="Hares">
	<organization>Hickory Hill Consulting</organization>
	<address>
	<postal> 
	  <street>7453 Hickory Hill</street>
	  <city>Saline</city>
	  <region>MI</region>
	  <code>48176</code>
	  <country>USA</country>
	</postal>
	<email>shares@ndzh.com</email>
	</address>
	</author>
	<author fullname="Pierpaolo Giacomin" initials="P." surname="Giacomin">
	<organization>FreeLance</organization>
	<address>
	<email>yrz@anche.no</email>
	</address>
	</author>
<date year="2016"/>
   <area>Security Area</area>
   <workgroup>SSE BOF</workgroup>
    <keyword>RFC</keyword>
     <keyword>Request for Comments</keyword>
     <keyword>I-D</keyword>
     <keyword>Internet-Draft</keyword>
     <keyword>SSLS</keyword>
     <keyword>HIP</keyword>
     <keyword>SSE</keyword>

<abstract>
<t>
	This memo specifies the details for establishing and maintaining a 
	Secure Session Layer Services (SSLS) association between two 
	applications using the Host Identity Protocol (HIP <xref 
	target="RFC7401"/>).  This is primarily achieved by adding SSLS 
	specific HIP parameters for the HIP base exchange.  The SSLS 
	association state and security boundaries are also defined.
</t>
</abstract>
</front>
<middle>
<section anchor="intro" title="Introduction">
<t>
	The Secure Session Layer Services (SSLS) <xref 
	target="I-D.hares-i2nsf-ssls" /> provides a well defined session 
	layer that can be implemented in any application to provide any or 
	all of the following:
	<list style="symbols">
		<t>data compression</t>
		<t>chunking of data</t>
		<t>secure envelope</t>
		<t>fragmentation and reassembly</t>
	</list>
</t>
<t>
	Applications implementing SSLS may need to negotiate the use of 
	this service and its components.  They must be able to negotiate 
	the security association to support the use of the Session Security 
	Envelope (SSE <xref target="I-D.moskowitz-sse" />).  HIP is an 
	ideal protocol to support this association management.  The SSE 
	management requirement closely parallels HIP support of ESP <xref 
	target="RFC7402"/> to the extent that <xref target="HIP_Param"/> 
	need only define the new parameter and point to <xref 
	target="RFC7402"/> for the processing details.
</t> 
</section> 
    
<section anchor="terms" title="Terms and Definitions">
<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">RFC 2119</xref>.
</t>
</section>
<section title="Notations">
 <t> This section will contain notations </t> 
</section> 
<section title="Definitions">
	<t>
		<list style="hanging">
		<t hangText="GPcomp:">
			General Purpose Compression.
		</t>
		<t hangText="SSE:">
			Session Specific Envelope.
		</t>
		</list>
	</t>
</section> 
</section> 
<section title="Discovering an SSLS application peer">
<t>
	A HIP enabled SSLS application needs to discover its peer 
	application.  This could be manually configured, discovered via 
	DNS, or some other services discovery mechanism.
</t> 
<t>
	In the DNS example, the application recognizes the returned address 
	as a HIT and the HI RR record.  It next needs to discover the IP 
	address for this HIT.  If the HIT is Hierarchical <xref 
	target="I-D.moskowitz-hierarchical-hip" />, it can use the HHIT DNS 
	reverse lookup mechanism.  In either case, the IP address may be 
	that of the peer application's RVS <xref 
	target="I-D.ietf-hip-rfc5204-bis" />.
</t> 
<t>
	Any other service discovery mechanism still has to provide the HIT, 
	HI, and IP address as a minimal set of information.
</t> 
</section>
<section anchor="HIP_Param" title="HIP parameters to negotiate and manage SSLS">
<t>
	Five HIP parameters are defined for setting up SSLS associations 
	in HIP communication and for restarting existing ones.  Also, the 
	NOTIFICATION parameter, described in <xref target="RFC7401" />, has 
	four new error parameters.
</t>
<figure>       
 <artwork>

      Parameter         Type        Length     Data

      SSE_INFO          [TBD-IANA]  12         Remote's old SPI, new SPI
      SSE_TRANSFORM     [TBD-IANA]  variable   SSE Encryption and
                                               Authentication Transform(s)
      SSE_FORMAT        [TBD-IANA]  variable   SSE Format
      GPCOMP_INFO       [TBD-IANA]  12         Compression Algorithm
      SSLS_INFO         [TBD-IANA]  8          SSLS chunking and fragmenting

</artwork>     
</figure>
<section anchor="SSE_INFO" title="SSE_INFO">
<figure>
 <artwork>
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Reserved            |         KEYMAT Index          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            OLD SPI                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            NEW SPI                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Type           [TBD-IANA]
  Length         12
  KEYMAT Index   index, in bytes, where to continue to draw SSE keys
                 from KEYMAT.  If the packet includes a new
                 Diffie-Hellman key and the SSE_INFO is sent in an
                 UPDATE packet, the field MUST be zero.  If the
                 SSE_INFO is included in base exchange messages, the
                 KEYMAT Index must have the index value of the point
                 from where the SSE SA keys are drawn.  Note that
                 the length of this field limits the amount of
                 keying material that can be drawn from KEYMAT.  If
                 that amount is exceeded, the packet MUST contain
                 a new Diffie-Hellman key.
  OLD SPI        old SPI for data sent to address(es) associated
                 with this SA.  If this is an initial SA setup, the
                 OLD SPI value is zero.
  NEW SPI        new SPI for data sent to address(es) associated
                 with this SA.
 </artwork>
</figure>
<t>
	The processing of SSE_INFO is similar to ESP_INFO, section 5.1.1 
	of <xref target="RFC7402">RFC7402</xref>, without the KEYMAT 
	generation.
</t>
</section>
<section anchor="SSE_TRANSFORM" title="SSE_TRANSFORM">
<t>
	The SSE_TRANSFORM parameter is used during SSE SA establishment.  
	The first party sends a selection of transform families in the 
	SSE_TRANSFORM parameter, and the peer must select one of the 
	proposed values and include it in the response SSE_TRANSFORM 
	parameter.
</t>
<figure>
 <artwork>
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Reserved             |           Suite ID #1         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Suite ID #2          |           Suite ID #3         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Suite ID #n          |             Padding           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type           [TBD-IANA]
      Length         length in octets, excluding Type, Length, and
                     padding.
      Reserved       zero when sent, ignored when received.
      Suite ID       defines the SSE Suite to be used.

   The following Suite IDs can be used:

          Suite ID                     Value

          RESERVED                          0      [this draft]
          RESERVED                          1 - 9  [this draft]
          AES-CCM-8                         10     [RFC4309]
          AES-CCM-16                        11     [RFC4309]
          AES-GCM with an 8-octet ICV       12     [RFC4106]
          AES-GCM with a 16-octet ICV       13     [RFC4106]
          AES-CMAC-96                       14     [RFC4493], [RFC4494]
          AES-GMAC                          15     [RFC4543]
 </artwork>
</figure>
<t>
	SSE only supports the newer CCM and GCM modes of operation.  The 
	Suite ID assignments are as above to align with <xref 
	target="RFC7402" />.
</t>
<t>
	The sender of an SSE transform parameter MUST make sure that there 
	are no more than six (6) Suite IDs in one SSE transform parameter. 
	Conversely, a recipient MUST be prepared to handle received 
	transform parameters that contain more than six Suite IDs. The 
	limited number of Suite IDs sets the maximum size of the 
	SSE_TRANSFORM parameter. As the default configuration, the 
	SSE_TRANSFORM parameter MUST contain at least one of the mandatory 
	Suite IDs.  There MAY be a configuration option that allows the 
	administrator to override this default.

</t>
<t>
	Mandatory implementations: AES-CCM-16.  AES-CMAC-96 SHOULD also be 
	supported.
</t>
</section>
<section anchor="SSE_FORMAT" title="SSE_FORMAT">
<t>
	The SSE_FORMAT parameter is used during SSE SA establishment. The 
	first party sends a selection of formats in the SSE_FORMAT 
	parameter, and the peer must select one of the proposed values and 
	include it in the response SSE_FORMAT parameter.
</t>
<figure>
 <artwork>
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Reserved             |          Format ID #1         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Format ID #2          |          Format ID #3         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Format ID #n          |             Padding           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type           [TBD-IANA]
      Length         length in octets, excluding Type, Length, and
                     padding.
      Reserved       zero when sent, ignored when received.
      Format ID      defines the SSE Format to be used.

   The following Format IDs can be used:

          Format ID         Value

          RESERVED            0     [this draft]
          Compact             1     [I-D.moskowitz-sse]
          Large               2     [I-D.moskowitz-sse]
          Extreme             3     [I-D.moskowitz-sse]

 </artwork>
</figure>
<t>
	The sender of an SSE format parameter MUST make sure that there are 
	no more than six (6) Format IDs in one SSE format parameter. 
	Conversely, a recipient MUST be prepared to handle received format 
	parameters that contain more than six Format IDs. The limited 
	number of Format IDs sets the maximum size of the SSE_FORMAT 
	parameter. As the default configuration, the SSE_FORMAT parameter 
	MUST contain at least one of the mandatory Format IDs.  There MAY 
	be a configuration option that allows the administrator to override 
	this default.
</t>
<t>
	Mandatory implementations: Compact
</t>
</section>
<section anchor="GPCOMP_INFO" title="GPCOMP_INFO">
<figure>
 <artwork>
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             CPI               |            Comp ID #1         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Comp ID #2          |            Comp ID #3         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Comp ID #n          |             Padding           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Type           [TBD-IANA]
  Length         length in octets, excluding Type, Length, and
                 padding.
  Suite ID       defines the SSE Suite to be used.

   The following Comp IDs can be used:

          Comp ID           Value

          RESERVED          0      [this draft]
          GPCOMP_OUI        1      (UNSPECIFIED)
          GPCOMP_DEFLATE    2      [RFC 2394]
          GPCOMP_LZS        3      [RFC 2395]
          GPCOMP_LZJH       4      [RFC 3051]
 </artwork>
</figure>
<t>
	The Comp ID has the same interpretation as IPcomp, section 
	2.22 of <xref target="RFC7296">RFC7402</xref>.
</t>
<t>
	The processing of GPCOMP_INFO is similar to ESP_TRANSFORM, section 
	5.1.2 of <xref target="RFC7402">RFC7402</xref>.
</t>
</section>
<section anchor="SSLS_INFO" title="SSLS_INFO">
<figure>
 <artwork>
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Chunk size           |          Fragment size        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Type              [TBD-IANA]
  Length            8
  Chunk size        Maximum data chunk supported.  0 if no chunking.
  Fragment size     Maximum data fragment supported.  0 if no fragmenting.
 </artwork>
</figure>
</section>
<section anchor="notify_pars" title="NOTIFICATION Parameter">
<t>
	The HIP base specification defines a set of NOTIFICATION error 
	types.  The following error types are required for describing 
	errors in ESP Transform crypto suites during negotiation.
</t>
<figure>
	<artwork>
      NOTIFICATION PARAMETER - ERROR TYPES     Value
      ------------------------------------     -----

      NO_SSE_PROPOSAL_CHOSEN                    20

         None of the proposed SSE Transform crypto suites was
         acceptable.

      INVALID_SSE_TRANSFORM_CHOSEN              21

         The SSE Transform crypto suite does not correspond to
         one offered by the Responder.
            
      NO_SSE_FORMAT_CHOSEN                      22

         None of the proposed SSE Format suites was acceptable.

      INVALID_SSE_FORMAT_CHOSEN                 23

         The SSE Format suite does not correspond to one offered 
         by the Responder.
            
	</artwork>
</figure>
</section>
</section>
<section title="Security Boundaries and APIs">
<t>
	When an application has direct control over the security of the 
	communication, even when this is done via external modules, extreme 
	care is needed in managing the environment.  This is why HIP 
	communicates some values directly to the SSE and GPcomp modules. 
	This way the application cannot override their action.  This does 
	require the application to be able to accept calls from HIP itself 
	whenever an event changes the SPIs for an association.
</t> 
<section title="Application to HIP API">
<t>
	It is assumed the application has learned the peer HIT and IP 
	address before invoking HIP.  Thus the calling parameters are:
 <figure>
  <artwork>
  
	 Source HIT, HI, and IP address
	 Destination HIT, HI, and IP address
	 SSE acceptable Transform and Format lists
	 GPcomp acceptable Algorithms list [Null if no compression]
	 Max chunk size [0 = no chunking]
	 Max fragment size [0 = no fragmenting]
	 
 </artwork>
 </figure>
</t> 
<t>
	HIP returns to the calling application:
 <figure>
  <artwork>
  
	 Source HIT, HI, and IP address
	 Actual destination HIT, HI, and IP address
	 SSE SPIs
	 SSE agreed format
	 GPcomp status [Yes/No]
	 Agreed max chunk size [0 = no chunking]
	 Agreed max fragment size [0 = no fragment]
	 
 </artwork>
 </figure>
</t> 
<t>
	HIP sends to the SSE module:
 <figure>
  <artwork>
  
	 SSE SPIs
	 SSE agreed transform
	 SSE session keys [Note: SSE controls HIP rekeying based on
	                    transform and Sequence Number.  In which
	                    case HIP will notify the application of
	                    a change to the SPIs]
	 
 </artwork>
 </figure>
</t> 
<t>
	HIP sends to the GPcomp module:
 <figure>
  <artwork>
  
	 SSE SPIs
	 GPcomp agreed algorithm
	 
 </artwork>
 </figure>
</t> 
</section>
</section>
<section title="HIP mobility and SSLS">
<t>
	The HIP module SHOULD detect an IP address change for an interface 
	and initiate a HIP Mobility operation <xref 
	target="I-D.ietf-hip-rfc5206-bis" />.  It will then inform the SSLS 
	application of the address change and any SPI changes to the 
	application and other components.
</t>
<t>
	An example of this is a CPE gateway managed with RESTCONF on a 
	PPPoE link that has restarted and had a new IP address assigned. 
	The RESTCONF server would be able to apply any configuration 
	changes to the gateway without needing to wait for the gateway to 
	call back first.
</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>
	This document defines five Parameter Types and four NOTIFY Message 
	Types for the Host Identity Protocol <xref target="RFC7401" />.
</t>
<t>
	<list style="hanging">
        <t hangText="SSE_INFO:">
		  This document defines the new SSE_INFO parameter (see 
		  <xref target="SSE_INFO" />).  The parameter value will be 
		  assigned by IANA.  Its value should come from the 66-127 
		  range.
        </t>
        <t hangText="SSE_TRANSFORM:">
		  This document defines the new SSE_TRANSFORM parameter (see 
		  <xref target="SSE_TRANSFORM" />).  The parameter value will 
		  be assigned by IANA.  Its value should come from the 
		  4096-4480 range.
        </t>
        <t hangText="SSE_FORMAT:">
		  This document defines the new SSE_FORMAT parameter (see <xref 
		  target="SSE_FORMAT" />).  The parameter value will be 
		  assigned by IANA.  Its value should come from the 4096-4480 
		  range.
        </t>
        <t hangText="GPCOMP_INFO:">
		  This document defines the new GPCOMP_INFO parameter (see 
		  <xref target="GPCOMP_INFO" />).  The parameter value will be 
		  assigned by IANA.  Its value should come from the 66-127 
		  range.  It should be greater than SSE_INFO.
        </t>
        <t hangText="SSLS_INFO:">
		  This document defines the new SSLS_INFO parameter (see 
		  <xref target="SSLS_INFO" />).  The parameter value will be 
		  assigned by IANA.  Its value should come from the 66-127 
		  range.
        </t>
	</list>
</t>
<t>
	The new NOTIFY error types and their values are defined in <xref 
	target="notify_pars" />, and they have been added to the Notify 
	Message Type namespace created by <xref target="RFC7401"/>.
</t>
</section>

<section title="Security Considerations">
<t>
	Security boundaries must be rigorously observed. Care is taken in 
	terms of what information is known to which module.  Still the 
	application possesses both the clear and crypto text and can thus 
	be an attack point against the session keys.
</t> 
</section>
<section title="Acknowledgments">
<t>
	TBD
</t>
</section>
  
</middle>
<back>
<references title="Normative References">
	<?rfc include="reference.RFC.2119.xml"?>
	<?rfc include="reference.RFC.7401.xml"?>
	<?rfc include="reference.RFC.7402.xml"?>
	<?rfc include="reference.I-D.hares-i2nsf-ssls.xml"?>
</references>
<references title="Informative References">
	<?rfc include="reference.RFC.2394.xml"?>
	<?rfc include="reference.RFC.2395.xml"?>
	<?rfc include="reference.RFC.3051.xml"?>
	<?rfc include="reference.RFC.4309.xml"?>
	<?rfc include="reference.RFC.4106.xml"?>
	<?rfc include="reference.RFC.4493.xml"?>
	<?rfc include="reference.RFC.4494.xml"?>
	<?rfc include="reference.RFC.4543.xml"?>
	<?rfc include="reference.RFC.7296.xml"?>
	<?rfc include="reference.I-D.ietf-hip-dex.xml"?>
	<?rfc include="reference.I-D.moskowitz-sse.xml"?>
	<?rfc include="reference.I-D.moskowitz-hierarchical-hip.xml"?>
	<?rfc include="reference.I-D.ietf-hip-rfc5204-bis.xml"?>
	<?rfc include="reference.I-D.ietf-hip-rfc5206-bis.xml"?>
</references>   
</back>
</rfc>
