<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc tocompact="yes"?>
<?rfc toc="yes" ?>
<?rfc tocdepth="2"?>
<?rfc sortrefs="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc comments="yes" ?>
<!--<?rfc editing="yes" ?>-->
<rfc category="exp" ipr="pre5378Trust200902" docName="draft-lagutin-hip-pla-00">
<front> 
<title abbrev="HIP PLA">Packet Level Authentication (PLA) Extensions for Host Identity Protocol (HIP)</title>
<author fullname="Dmitrij Lagutin" initials="D" surname="Lagutin">
  <organization>Helsinki Institute for Information Technology</organization>
  <address>
  <postal>
    <street>Metsanneidonkuja 4</street>
    <city>Helsinki</city>
    <country>Finland</country>
  </postal>
  <phone>+358 9 47001</phone>
  <facsimile>+358 9 694 9768</facsimile>
  <email>dmitrij.lagutin@hiit.fi</email>
  <!--<uri>xx</uri>-->
  </address>
</author>
<date year="2010"/>
<area>Internet Area</area>
<workgroup>Host Identity Protocol</workgroup>

  <abstract>

    <t>
	    This document defines extensions to provide Packet Level Authentication (PLA) functionality for the HIP protocol. PLA provides strong hop-by-hop security features that allow intermediate nodes to detect the hostile traffic quickly, and drop the traffic before it reaches the destination and can consume resources in the target network.
    </t>
    <t>
	    Unlikely other similar solutions, PLA does not require excessive signaling or state in verifying nodes, and is path-independent, making it suitable for dynamic environments, such as ad-hoc networks.
    </t>

</abstract>


<note title="Requirements Language">
	<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
		&quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
		&quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
		&quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
		interpreted as described in  <xref target="RFC2119">RFC2119</xref>.
	</t>
</note>


</front>
<middle>

<section anchor="sec:intro" title="Introduction">

<t>
	Packet Level Authentication (PLA) <xref target="LAG08" /> is a novel security solution that aims to provide availability and integrity protection on the network layer. PLA offers hop-by-hop authentication: any intermediate node has the ability to independently verify authenticity and integrity of the traffic, without pre-established trust relationships with the sender or other nodes that handled the traffic. The good analogy to PLA is a paper currency: anyone can verify validity of the paper bill using built-in security measures such as watermark and hologram, there is no need to contact the bank that has issued the bill.
</t><t>
	Similarly, PLA allows intermediate nodes to detect modified, delayed, and duplicated packets simply by looking at the packet's contents. This protects the recipient from denial-of-service attacks, since such packets can be dropped immediately before they can reach the destination, and cause a load to the recipient or the recipient's network. Furthermore, strong security mechanisms offered by PLA have additional uses. They can be used to implement simple and secure user authentication, since there is often no need for puzzle mechanisms or to contact external authentication servers.
</t><t>
	PLA achieves it goals by adding a cryptographic signature and other fields to the packet's header. PLA utilizes elliptic curve cryptography (ECC) due to its compact key and signature sizes, but can also work with other cryptographic solutions. While the public key signature verification is resource intensive operation, it can be performed at wire-speed with a dedicated hardware acceleration <xref target="FOR08" />.
</t><t>
	We feel that combining PLA with HIP is advantageous, since both technologies are based on
	cryptographic operations and provide different sets of features. PLA offers hop-by-hop authentication and integrity protection, and depending on local policies it can make the HIP base exchange unnecessary in some cases. While HIP provides end-to-end confidentiality and security.
</t>

</section> <!-- intro -->

<!--
<section anchor="sec:terminology" title="Terminology">

<t></t>

</section>--> <!-- terminology -->

<section anchor="sec:pla-hip" title="PLA-HIP Protocol Overview">
	
<t>
	Packet Level Authentication (PLA) Extensions for Host Identity Protocol (HIP) basically add PLA's features, such as a hop-by-hop integrity protection, to HIP using a new HIP parameter (PLA_HIP).
</t>
	
	<section anchor="sec:pla-hip-security" title="Security Mechanisms"> 
<t>	
	Following PLA's security mechanisms are included in the PLA-HIP extensions, and MUST be added to the PLA_HIP parameter by the sender:
	
</t><t>
	1. The sender's cryptographic identity (public key) and the signature over the packet. The signature protects packet's integrity and should be calculated over the whole packet ignoring the fields that may change during the lifetime of the packet. If the signature verification fails, the packet MUST be dropped.
</t><t>		
	While PLA-HIP can utilize any public key algorithms including RSA and DSA, using Elliptic Curve Digital Signature Algorithm (ECDSA) is recommended due to its low key and signature sizes.
	
</t><t>2. Timestamp. The aim of the timestamp is provide protection against replay attacks that use delayed packets. Efficient usage of the timestamp field requires loosely synchronized clocks in the network. Network's policy decides how strictly the timestamp is enforced. For example, in a public network differences of several seconds can be tolerated.

	
</t><t>3. The sequence number is a monotonically increasing number that allow intermediate nodes to detect duplicated packets, and packets that are significantly out-of-order.
	
</t><t>
	It is important to note that performing signature and other above mentioned checks is optional. The recipient and intermediate nodes can decide which checks to perform. For example, some nodes may opt to verify only the timestamp and sequence number fields, ignoring the signature field. Therefore PLA-HIP can also be supported by devices with a limited computing power.
</t><t>
	PLA also offers additional security mechanisms, such as trusted third parties that act as certificate authorities (CAs) and authorize nodes in the network. For simplicity, they have been omitted from this version of the draft.
</t>
</section> <!-- pla-hip-security -->
<section anchor="sec:pla-hip-related" title="Related Solutions"> 

<t>
	The functionality provided by PLA-HIP is somehow related to <xref target="I-D.ietf-hip-hiccups" >HICCUPS</xref>, <xref target="I-D.kuptsov-sava-hip">SAVAH</xref>, and <xref target="I-D.ietf-hip-cert">HIP certificates</xref>. The biggest difference is that PLA-HIP is a path independent solution that does not use acknowledgment messages, and does not require state for the integrity protection in verifying nodes. Since each packet can be verified independently, PLA-HIP is suitable for multihoming and dynamic network environments.
</t>

</section> <!-- pla-hip-related -->
</section> <!-- PLA-HIP -->

<section anchor="sec:packet-processing" title="Packet Processing">
	
	<t>
		The following diagram in <xref target="fig:packet-processing"/>, shows an example how the PLA-HIP packet is processed in a node. The order of verification steps is not strict, and can be decided by the verifier. PLA-HIP packets are considered to be fully valid if they pass all checks, however, in some cases nodes may forward packets even though they have failed timestamp or sequence number checks.
		

	<figure anchor="fig:packet-processing">
		<artwork><![CDATA[
  (In)         +----------------+            OK
-------------> |Verify timestamp| ----------------------+
               +----------------+                       |
                       |                                |
                       | Fail                           |
                       |                                |
                       v                                v
                 /-----------\     Fail      +----------------------+
                 |Drop packet| <------------ |Verify sequence number|
                 \-----------/               +----------------------+
                       ^                                |
                       |                                |  OK
                       | Fail                           |
                       |                                |
         OK    +----------------+                       |
<------------- |Verify signature|-----------------------+
  (Out)        +----------------+
		
		 ]]></artwork>
	</figure>
		
	</t>
</section> <!-- packet-processing -->

<section anchor="sec:packet-formats" title="Packet Formats">
	
	<t>
		In addition to the basic HIP headers, the PLA-HIP packet contains sender's public key, signature, and timestamp and sequnce number fields provided by the PLA_HIP parameter. Basically the PLA-HIP packet can be expressed as:</t><t>
		
		IP ( HIP ( HOST_ID, PLA_HIP, HIP_SIGNATURE) PAYLOAD )</t><t>
		
		Where HOST_ID and HIP_SIGNATURE parameters are defined in Sections 5.2.8 and 5.2.11 of <xref target="RFC5201" />. And the PLA_HIP parameter is defined in <xref target="sec:packet-formats-pla-hip" />.
	</t>
	
	<section anchor="sec:packet-formats-pla-hip" title="Definition of the PLA_HIP Parameter">
		<t>
		The following is the definition of the PLA_HIP parameter:

	</t>
	<t>
	<figure anchor="fig:pla-hip">
		<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            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Timestamp                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Sequence number                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		</artwork>
	</figure>
	</t><t>
		Both the timestamp and sequence number fields are 32 bits long.
	</t>
	</section> <!-- packet-formats-pla-hip -->

	
</section> <!-- packet-formats -->


<section anchor="sec:packet-discussion" title="Discussion">

</section> <!-- Discussion -->

<section anchor="sec:iana" title="IANA Considerations">

<t>No IANA considerations.</t>

</section> <!-- iana -->

<section anchor="sec:security" title="Security Considerations">

<t>No security considerations.</t>

</section> <!-- security -->

<section anchor="sec:acknowledgements" title="Acknowledgements">

<t>
Thanks to Miika Komu for his helpful comments and suggestions.
</t>

</section> <!-- acknowledgements -->

</middle>

<back>

<references title="Normative References">
	<?rfc include="reference.RFC.5201" ?>
	<?rfc include="reference.RFC.2119" ?>
	<?rfc include="reference.I-D.draft-ietf-hip-hiccups-02" ?>
	<?rfc include="reference.I-D.draft-kuptsov-sava-hip-01" ?>
	<?rfc include="reference.I-D.draft-ietf-hip-cert-03" ?>
</references>
	

    <references title="Informative References">
	    <reference anchor="LAG08" target="http://www.tcs.hut.fi/Software/PLA/new/doc/Lagutin-Redesigning%20Internet-The%20Packet%20Level%20Authentication%20architecture.pdf">
        <front>
	<title>Redesigning Internet - The Packet Level Authentication architecture, Licentiate's thesis</title>
        <author initials="D." surname="Lagutin" fullname="D. Lagutin">
	<organization>Helsinki University of Technology, Faculty of Information and Natural Sciences, Department of Information and Computer Science</organization>
        </author>
        <date month="Jun" year="2008" />
        </front>
      </reference>
      <reference anchor="FOR08" target="http://www.tcs.hut.fi/Software/PLA/new/doc/PLA_HW_final_report.pdf">
	      <front>
		      <title>Packet Level Authentication - Hardware Subtask Final Report, Technical report</title>
		      <author initials="J." surname="Forsten" fullname="J. Forsten"></author>
		      <date month="May" year="2008" />
	      </front>
      </reference>
</references>
      
<!--
      <?rfc include="reference.RFC.5014" ?>
      <?rfc include="reference.RFC.3493" ?>
      <?rfc include="reference.RFC.4843" ?>
      <?rfc include="reference.RFC.4423" ?>

      <?rfc include="reference.RFC.5201" ?>
      <?rfc include="reference.RFC.5205" ?>

      <?rfc include="reference.RFC.5338" ?>

      <?rfc include="reference.I-D.ietf-shim6-multihome-shim-api" ?>




    <references title="Informative References">
      <?rfc include="reference.RFC.5533" ?>
    </references>
-->

  </back>
</rfc>
