<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="no"?>
<?rfc compact="no" ?>
<?rfc sortrefs="yes" ?>
<?rfc strict="no" ?>
<?rfc linkmailto="yes" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY I-D.ietf-mmusic-sdescriptions   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-sdescriptions.xml'>
<!ENTITY I-D.ietf-mmusic-kmgmt-ext   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-kmgmt-ext.xml'>
<!ENTITY I-D.ietf-hip-arch   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-arch.xml'>
<!ENTITY I-D.ietf-hip-base   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-base.xml'>
<!ENTITY I-D.bradner-pbk-frame   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.bradner-pbk-frame.xml'>
<!ENTITY I-D.ietf-sip-certs   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-sip-certs.xml'>
<!ENTITY I-D.ietf-mmusic-sdp-new   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-sdp-new.xml'>
<!ENTITY RFC3830   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3830.xml'>
<!ENTITY RFC3515   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3515.xml'>
<!ENTITY I-D.ietf-hip-rvs
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-rvs.xml'>
   <!ENTITY I-D.ietf-hip-nat-traversal
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-nat-traversal.xml'>
<!ENTITY I-D.ietf-behave-rfc3489bis
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-behave-rfc3489bis.xml'>
   <!ENTITY I-D.ietf-behave-turn
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-behave-turn.xml'>
<!ENTITY I-D.ietf-mmusic-ice
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-ice.xml'>
<!ENTITY I-D.ietf-hip-esp
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-hip-esp.xml'>
<!ENTITY RFC4474
   PUBLIC ''  'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4474.xml'>
]>
<rfc ipr="full3978" docName="draft-tschofenig-hiprg-host-identities-06.txt">
  <front>
    <title abbrev="Interaction between SIP and HIP">Interaction between SIP and HIP</title>
     <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization>Nokia Siemens Networks</organization>
        <address>
           <postal>
              <street>Linnoitustie 6</street>
              <city>Espoo</city>
              <code>02600</code>
              <country>Finland</country>
           </postal>
           <phone>+358 (50) 4871445</phone>
           <email>Hannes.Tschofenig@nsn.com</email>
           <uri>http://www.tschofenig.com</uri>
        </address>
     </author>
    <author fullname="Joerg Ott" initials="J." surname="Ott">
      <organization abbrev="Helsinki University of Technology">Helsinki University of Technology</organization>
      <address>
        <postal>
          <street>Otakaari 5A</street>
          <city>Espoo</city>
          <code>FI-02150</code>
          <country>Finland</country>
        </postal>
        <email>jo@netlab.hut.fi</email>
      </address>
    </author>
    <author initials="H." surname="Schulzrinne" fullname="Henning Schulzrinne">
      <organization abbrev="Columbia U.">Columbia University</organization>
      <address>
        <postal>
          <street>Department of Computer Science</street>
          <street>450 Computer Science Building</street>
          <city>New York</city>
          <region>NY</region>
          <code>10027</code>
          <country>USA</country>
        </postal>
        <phone>+1 212 939 7042</phone>
        <email>schulzrinne@cs.columbia.edu</email>
        <uri>http://www.cs.columbia.edu/~hgs</uri>
      </address>
    </author>
    <author initials="T." surname="Henderson" fullname="Thomas R. Henderson">
      <organization>The Boeing Company</organization>
      <address>
        <postal>
          <street>P.O. Box 3707</street>
          <city>Seattle</city>
          <region>WA</region>
          <country>USA</country>
        </postal>
        <email>thomas.r.henderson@boeing.com</email>
      </address>
    </author>
    <author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <city>Jorvas</city>
          <code>02420</code>
          <country>Finland</country>
        </postal>
        <email>Gonzalo.Camarillo@ericsson.com</email>
      </address>
    </author>
    <date year="2008"/>
    <!--        <area>Network Working Group</area> -->
    <workgroup>HIPRG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document investigates the interworking between the Session Initiation Protocol (SIP)
        and the Host Identity Protocol (HIP) and the benefits that may arise from their combined
        operation.</t>
      <t>The aspect of exchanging Host Identities (or Host Identity Tags) in SIP/SDP for later usage
        with the Host Identity Protocol Protocol (HIP) is described in more detail as an example of
        this interworking.</t>
    </abstract>
  </front>
  <middle>
    <!-- ====================================================================== -->
    <section anchor="introduction" title="Introduction">
      <t>SIP <xref target="RFC3261"/> enables a pair of user agents to establish and maintain
        sessions. The communication typically involves SIP proxies before prior to communication
        between the end points taking place. As part of the initial exchange, a number of parameters
        are exchanged. Certain of these parameters are relevant to security. Examples of such
        parameters are keying material and other cryptographic information that is used in order to
        establish a security association for the protection of subsequent data traffic.</t>
      <t>HIP (see <xref target="I-D.ietf-hip-arch"/> and <xref target="I-D.ietf-hip-base"/>) propose
        an architecture with a cryptographic namespace and a layer between the network and the
        transport layer. This layer is used in order to shield applications from the impact of
        multi-homing, readdressing and mobility. A protocol, called the Host Identity Protocol, is
        used in order to establish state at the two end hosts. This state includes the establishment
        of IPsec SAs. </t>
    </section>
    <section title="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 anchor="host-identities" title="Exchanging Host Identities with SIP">
      <section title="Concept">
        <t>In order to provide security between two HIP end hosts beyond opportunistic encryption it
          is necessary to securely retrieve the Host Identities. A number of mechanisms can be used
          including directories (such as DNS) or more advanced concepts for example based on
          Distributed Hash Tables typically used in peer-to-peer networks. </t>
        <t>This document suggests to exchange the Host Identities (or Host Identity Tags) as part of
          the initial SIP exchange inside the SDP payload. As such, the Host Identities can also be
          bound to the user identities - a concept not used in HIP. </t>
        <t>
          <xref target="sip-trapezoid"/> illustrates the main idea: <figure anchor="sip-trapezoid"
            title="SIP Trapezoid">
            <artwork><![CDATA[
                +-----------+            +-----------+
         HI/HIT |SIP        |   HI/HIT   |SIP        | HI/HIT
        +------>|Proxy      |<---------->|Proxy      |<------+
        |       |Server X   |   TLS      |Server Y   |       |
        |       +-----------+ (+auth.id.)+-----------+       |
        |                                                    |
        | TLS or                                      TLS or |
        | SIP Digest                              SIP Digest |
        |                                        (+auth.id.) |
        |                                                    |
        v                                                    v
    +-----------+          SIP and HIP                +-----------+
    |SIP        | <---------------------------------> |SIP        |
    |User Agent |          RTP                        |User Agent |
    |Alice      | <=================================> |Bob        |
    +-----------+                                     +-----------+

    Legend:
    <--->: Signaling Traffic
    <===>: Data Traffic
               ]]></artwork>
          </figure>
        </t>
        <t>The initial SIP signaling messages between Alice and Bob often take place via the proxy
          servers. This exchange may be protected with TLS (between SIP proxies but also between SIP
          UAs and SIP proxies) or with SIP digest authentication between SIP UAs and the outbound
          proxy. Further SIP security mechanisms should be used in combination with this proposal.
          The security consideration section, see <xref target="security"/>, provides a discussion
          about the possible approaches to secure the Host Identity Tag and to relate it ongoing
          session.</t>
        <t>This allows two hosts to securely exchange keys even if there are only domain-level
          public and private keys, as well as secure associations within a domain, thus avoiding the
          need for a global user-level PKI. </t>
        <t>This initial message exchange is used to exchange Host Identities between the end points
          within the SDP payload.</t>
        <t>Subsequently, when both user agents Alice and Bob communicate directly with each other
          they are able to reuse the Host Identity for the HIP message exchange. </t>
        <t>If the SIP communication does not involve third parties (i.e., SIP proxies) and is
          therefore executed directly between the two SIP UAs then it is not useful to exchange Host
          Identities in the SDP payloads since the HIP exchange already took place before the first
          SIP message can be exchanged between the two peers. Still HIP might provide some
          advantages for the end-to-end communication, such as providing security at the lower layer
          and mobility and multi-homing support.</t>
        <t>The security of this approach relies on two properties: <list>
            <t>The signaling messages and the data traffic traverse a different path. Hence, an
              adversary needs to be located where it is able to see both, the signaling and the the
              data traffic. </t>
            <t>The signaling traffic is often protected.</t>
          </list>
        </t>
      </section>
      <!-- ====================================================================== -->
      <section anchor="extension" title="SDP Extension">
        <t>This document proposes to enhance the SDP <xref target="I-D.ietf-mmusic-sdescriptions"/>
          'k' or 'a' parameter.</t>
        <t>The 'k' parameter has the following structure:</t>
        <t>k=&lt;method&gt;:&lt;encryption key&gt;</t>
        <t>This document defines two new method fields: <list>
            <t>k=host-identity:&lt;HIP Host Identity&gt;</t>
            <t>k=host-identity-tag:&lt;hash of the public key&gt; </t>
          </list>
        </t>
        <t>Alternatively, the 'a' parameter could be used like <xref
            target="I-D.ietf-mmusic-kmgmt-ext"/> proposes. An example for MIKEY <xref
            target="RFC3830"/> is given in the reference, which could be reused for HIP. As defined
          in <xref target="I-D.ietf-mmusic-sdp-new"/>, the 'a' parameter has the following
          structure:</t>
        <t>a=&lt;attribute&gt;:&lt;value&gt;</t>
        <t>Similar to the MIKEY example in <xref target="I-D.ietf-mmusic-kmgmt-ext"/>, this document
          defines two new method fields: <list>
            <t>a=key-mgmt:host-identity &lt;HIP Host Identity&gt;</t>
            <t>a=key-mgmt:host-identity-tag &lt;hash of the public key&gt; </t>
          </list>
        </t>
        <t>Both, the Host Identity and the Host Identity Tag are defined in <xref
            target="I-D.ietf-hip-base"/>. The Host Identity contains the public key and a number of
          cryptographic parameters (such as used algorithms and Diffie-Hellmann public parameters).
          The Host Identity is base64 encoded.</t>
        <t>FOR DISCUSSION:<vspace blankLines="1"/>
          <list style="empty">
            <t>The usage of the k parameter as defined in <xref target="RFC2327"/> is deprecated.
                <xref target="I-D.ietf-mmusic-sdescriptions"/> is more appropriate but like 'k=',
              they come with the caveat that they require a secured e2e signaling path (or SDP is
              S/MIME protected). One alternative is the usage of MIKEY for the exchange as defined
              in <xref target="I-D.ietf-mmusic-kmgmt-ext"/>.<vspace blankLines="1"/>
            </t>
            <t>Furthermore, and probably more important, it is important to said what the Host
              Identity is supposed to be used with. They may help avoiding re-INVITEs when
              underlying IP addresses change to update the 'Contact:' address as well as the
              addresses in the 'c=' lines for the various media.<vspace blankLines="1"/>
            </t>
            <t>However, multiple devices may take part in the different media sessions (your laptop
              doing video in parallel to your hardware IP phone). To support these cases, it may be
              necessary to exchange _several_ HI(T)s within SDP and denote what they shall be used
              for. Such a mapping could naturally be achieved for each media stream (even using 'k='
              attributes); at simple 'a=' attributes (or the mechanisms from <xref
                target="I-D.ietf-mmusic-sdescriptions"/>/ <xref target="I-D.ietf-mmusic-kmgmt-ext"/>
              would be preferred.<vspace blankLines="1"/>
            </t>
            <t>SDP only deals with media streams and does not have a notion of user or main device
              in the background. Hence, the SIP HI(T) may need to go into SIP signaling (rather than
              be carried in SDP).<vspace blankLines="1"/> Logically, this appears to belong to the
              'Contact:' header which may be conveyed protected in an S/MIME body (signed and
                encrypted).<vspace blankLines="1"/>
            </t>
          </list>
        </t>
      </section>
      <section anchor="example" title="Example">
        <t>This example contains the full details of the example session setup taken from Section 4
          of <xref target="RFC3261"/>. The message flow is shown in Figure 1 of <xref
            target="RFC3261"/> and resembles the architecture shown in <xref target="sip-trapezoid"
          />. Note that these flows show the minimum required set of header fields; some other
          header fields such as Allow and Supported would normally be present.</t>
        <t>In our example Alice uses the following Host Identity Tag
          (7214148E0433AFE2FA2D48003D31172E) and Bob uses (44A5C522D7EDEDF962E55A0677DB1346) as the
          HIT. These HITs correspond to the following Host Identities (for convenience we reuse the
          XML representation format used by the Boeing implementation).</t>
        <t>
          <figure>
            <artwork><![CDATA[
------
Alice: 
------

<host_identity alg="DSA" alg_id="3" length="128" 
 anon="no" incoming="yes">

<name>sip:alice@atlanta.com</name>

<P>D757262C4584C44C211F18BD96E5F061C4F0A423F7FE6B6B85B34CEF72CE14
A0D3A222FE08CECE65BE6C265854889DC1EDBD13EC8B274DA9F75BA26CCB98772
3602787E92BA84421F22C3C89CB9B06FD60FE01941DDD77FE6B12893DA76EEBC1
D128D97F0678D772B5341C8506F358214B16A2FAC4B368950387811C7DA33</P>

<Q>C773218C737EC8EE993B4F2DED30F48EDACE915F</Q>

<G>82269009E14EC474BAF2932E69D3B1F18517AD9594184CCDFCEAE96EC4D5EF
9313384B47093C52B20CD35D02492B3959EC6499625BC4FA5082E22C5B374E16D
D00132CE71020217091AC717B612391C76C1FB2E88317C1BD8171D41ECB83E210
C03CC9B32E81056C21621C73D6DAAC028F4B1585DA7F42519718CC9B09EEF</G>

<PUB>A4666AED5F5E753773DC961EDD0412A03F1F8D7CEC70A057076062804B86
619D3DA4E7610EBBDB05F44C5784622D1B86600DFCC1431BC4451D4FD31329354
07A9B24718CB82BAE93A4CDD9CC4C8B9A41C000AB53D52A65E8383F54F5BF92A8
21EA776A207C6991EF23808C00DB820977D97CAC01CB96307274E2386001327
</PUB>

<HIT>7214148E0433AFE2FA2D48003D31172E</HIT>
</host_identity>
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
----
Bob: 
----

<host_identity alg="DSA" alg_id="3" length="96" 
 anon="no" incoming="yes">

<name>sip:bob@biloxi.com</name>

<P>F13ACC1693AFD04B9E1E8D2A9DEA6DE8DE4C276BE2BF15B6CFF6E269B0169
378CB0DDDE23D187827015DC67E6768193914B823BDF215D0DAD7A151E434F9E
128DAFB9DEFAE07874621E70D7ED2D34B80A95FA8312B9564E4D118FB525664C
77D</P>

<Q>C773218C737EC8EE993B4F2DED30F48EDACE915F</Q>

<G>241F32CF48F424B1A75D33B7AE6088E745D9E24E653AE2CAEBE67E4AA1C11
15BA0CC25055A63C139235A95B36EFBC2064AF304C0F8A431D151B2B5854DE61
5168B45B9EAEBF9A88354CA7876E52D169E14E502BEA0CBB98B55AD2AB61620F
498</G>

<PUB>E481C20D8FBAA84F9C7ED8B5598F60F5A7D03951CA4783841EB8ADDC63D
DE11A2F3555C5641F465160AB1E016756D826B0F8CE4FDE33BA17F6FFFA751DA
1389A10E5599802AB1EBE4FD943405819A74FD6F1C9EA2815EE6B651610DF107
5D19F</PUB>

<HIT>44A5C522D7EDEDF962E55A0677DB1346</HIT>

</host_identity>
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F1 INVITE Alice -> atlanta.com proxy

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: ...

v=0
o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com
s=Session SDP
t=0 0
c=IN IP4 pc33.atlanta.com
m=audio 3456 RTP/AVP 0 1 3 99
a=rtpmap:0 PCMU/8000
k=host-identity-tag:7214148E0433AFE2FA2D48003D31172E
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F2 100 Trying atlanta.com proxy -> Alice

SIP/2.0 100 Trying
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F3 INVITE atlanta.com proxy -> biloxi.com proxy

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
  ;branch=z9hG4bK77ef4c2312983.1
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
Max-Forwards: 69
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: ...

v=0
o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com
s=Session SDP
t=0 0
c=IN IP4 pc33.atlanta.com
m=audio 3456 RTP/AVP 0 1 3 99
a=rtpmap:0 PCMU/8000
k=host-identity-tag:7214148E0433AFE2FA2D48003D31172E
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F4 100 Trying biloxi.com proxy -> atlanta.com proxy

SIP/2.0 100 Trying
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F5 INVITE biloxi.com proxy -> Bob

INVITE sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
Max-Forwards: 68
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: ...

v=0
o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com
s=Session SDP
t=0 0
c=IN IP4 pc33.atlanta.com
m=audio 3456 RTP/AVP 0 1 3 99
a=rtpmap:0 PCMU/8000
k=host-identity-tag:7214148E0433AFE2FA2D48003D31172E
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F6 180 Ringing Bob -> biloxi.com proxy

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
 ;received=192.0.2.3
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F7 180 Ringing biloxi.com proxy -> atlanta.com proxy

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F8 180 Ringing atlanta.com proxy -> Alice

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: <sip:bob@192.0.2.4>
CSeq: 314159 INVITE
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F9 200 OK Bob -> biloxi.com proxy

SIP/2.0 200 OK
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
 ;received=192.0.2.3
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: ...

v=0
o=bob 2890844527 2890844527 IN IP4 192.0.2.4
s=Session SDP
c=IN IP4 192.0.2.4
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
k=host-identity-tag:44A5C522D7EDEDF962E55A0677DB1346
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F10 200 OK biloxi.com proxy -> atlanta.com proxy

SIP/2.0 200 OK
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
 ;branch=z9hG4bK77ef4c2312983.1
 ;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: ...

v=0
o=bob 2890844527 2890844527 IN IP4 192.0.2.4
s=Session SDP
c=IN IP4 192.0.2.4
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
k=host-identity-tag:44A5C522D7EDEDF962E55A0677DB1346
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F11 200 OK atlanta.com proxy -> Alice

SIP/2.0 200 OK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
 ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: ...

v=0
o=bob 2890844527 2890844527 IN IP4 192.0.2.4
s=Session SDP
c=IN IP4 192.0.2.4
t=3034423619 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
k=host-identity-tag:44A5C522D7EDEDF962E55A0677DB1346
           ]]></artwork>
          </figure>
        </t>
        <t>
          <figure>
            <artwork><![CDATA[
F12 ACK Alice -> Bob

ACK sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 ACK
Content-Length: 0
           ]]></artwork>
          </figure>
        </t>
        <t>The media session between Alice and Bob is now established.</t>
        <t>The exchanged HITs are now placed in the pool of known HITs at both end hosts. As such
          there is also a binding established between URI and HIT at this point.</t>
        <t>Next a regular HIP base exchange between Alice and Bob is started. As part of the
          exchange the two end hosts inspect their known-HITs pool and find the previously exchanged
          parameters.</t>
        <t>
          <figure>
            <artwork><![CDATA[
Alice -> Bob: I1: Trigger exchange

Alice <- Bob: R1: {Puzzle, D-H(R), HI(R), ESP Transform, 
              HIP Transform }SIG

Alice -> Bob: I2: {Solution, LSI(I), SPI(I), D-H(I), 
              ESP Transform, HIP Transform, {H(I)}SK }SIG

Alice <- Bob: R2: {LSI(R), SPI(R), HMAC}SIG
           ]]></artwork>
          </figure>
        </t>
        <t>As a result of this exchange, two IPsec SAs (one for each direction) is established. RTP
          media traffic can be exchanged between the two end hosts, Alice and Bob, protected by
          IPsec. If end host mobility takes place then a HIP readdressing exchange takes place which
          is not detected at the upper layer by UDP/RTP or SIP.</t>
      </section>
    </section>
    <!-- ====================================================================== -->
    <section anchor="security" title="Security Considerations">
      <t>The standard HIP strategy for authenticating the communicating parties is to give the
        Initiator and the Responder a Host Identity and to assure the authenticity of the Host
        Identity via external mechanisms, such as DNSSEC (if the Host Identities are stored in the
        DNS). The Initiator then verifies the Host Identity and checks its validity. The complexity
        of ensuring that the Host Identity has not been tampered with is pushed to DNS (and DNSSEC),
        as the only mechanism specified for ensuring that the public key is genuine. The
        infrastructure provided for SIP can provide a similar, but more deployment friendly,
        functionality when combined with already available SIP security mechanisms. </t>
      <t>The design described in this document is intended to leverage the authenticity of the
        signaling channel (while not requiring confidentiality). As long as each side of the
        connection can verify the integrity of the SDP INVITE then the HIP base exchange handshake
        cannot be hijacked via a man-in-the-middle attack. This integrity protection is easily
        provided by the caller to the callee via the SIP Identity <xref target="RFC4474"/>
        mechanism. However, it is less straightforward for the responder.</t>
      <t>Ideally Alice would want to know that Bob's SDP had not been tampered with and who it was
        from so that Alice's User Agent could indicate to Alice that there was a secure phone call
        to Bob. This is known as the SIP Response Identity problem and is still a topic of ongoing
        work in the SIP community. When a solution to the SIP Response Identity problem is
        finalized, it SHOULD be used here. In the meantime there are several approaches that can be
        used to mitigate this problem: Use UPDATE, Use SIPS, Use S/MIME, and do nothing. Each one is
        discussed here followed by the security implications of that approach.</t>
      <section title="UPDATE">
        <t>In this approach, Bob sends an answer, then immediately follows up with an UPDATE that
          includes the Host Identity Tag and uses the SIP Identity mechanism to assert that the
          message is from Bob's. The downside of this approach is that it requires the extra round
          trip of the UPDATE. However, it is simple and secure even when the proxies are not
          trusted.</t>
      </section>
      <section title="SIPS">
        <t>In this approach, the signaling is protected by TLS from hop to hop. As long as all
          proxies are trusted, this provides integrity for the Host Identity Tag. It does not
          provide a strong assertion of who Alice is communicating with. However, as much as the
          target domain can be trusted to correctly populate the From header field value, Alice can
          use that. The security issue with this approach is that if one of the Proxies wished to
          mount a man-in-the-middle attack, it could convince Alice that she was talking to Bob when
          really the media was flowing through a man in the middle media relay. However, this attack
          could not convince Bob that he was taking to Alice.</t>
      </section>
      <section title="S/MIME">
        <t>
          <xref target="RFC3261">RFC 3261</xref> defines a S/MIME security mechanism for SIP that
          could be used to sign that the fingerprint was from Bob. This would be secure. However, so
          far there have been no deployments of S/MIME for SIP.</t>
      </section>
      <section title="Single-sided Verification">
        <t>In this approach, no integrity is provided for the fingerprint from Bob to Alice. In this
          approach, an attacker that was on the signaling path could tamper with the fingerprint and
          insert themselves as a man-in-the-middle on the media. Alice would know that she had a
          secure call with someone but would not know if it was with Bob or a man-in-the-middle. Bob
          would know that an attack was happening. The fact that one side can detect this attack
          means that in most cases where Alice and Bob both wish the communications to be encrypted
          there is not a problem. Keep in mind that in any of the possible approaches Bob could
          always reveal the media that was received to anyone. We are making the assumption that Bob
          also wants secure communications. In this do nothing case, Bob knows the media has not
          been tampered with or intercepted by a third party and that it is from Alice. Alice knows
          that she is talking to someone and that whoever that is has probably checked that the
          media is not being intercepted or tampered with. This approach is certainly less than
          ideal but very usable for many situations. An alternative available to Alice and Bob is to
          use human speech to verified each others' identity then verify each others' Host Identity
          Tags also using human speech. Assuming that it is difficult to impersonate another's
          speech and seamlessly modify the audio contents of a call, this approach is relatively
          safe. On the other hand, SIP is not only used for voice communication.</t>
      </section>
      <t>Note that this proposal is closely aligned towards the usage of the 'k' parameter in SDP
          <xref target="RFC2327"/>. As a difference, an asymmetric key is exchanged unlike the
        proposals illustrated in Section 6 of <xref target="RFC2327"/>. Section 5.12 of <xref
          target="I-D.ietf-mmusic-sdp-new"/> is relevant for this discussion.</t>
      <t>Please note that this approach is in a certain sense a re-instantiation of the
        Purpose-Built-Key (PBK) idea (see <xref target="I-D.bradner-pbk-frame"/>). With PBK a hash
        of a public key is sent from node A to node B. If there was no adversary between A and B at
        that time to modify the transmitted hash value then subsequent communication interactions
        which use the public key are secure. This proposal reuses the same idea but focuses on the
        interworking between different protocols. In fact it would be possible to use the same
        approach to exchange the hash of an S/MIME certificate which can later be used in subsequent
        SIP signaling message exchanges.</t>
    </section>
    <section title="IANA Considerations">
      <t>[Editor's Note: A future version of this document will provide a discussion about IANA
        considerations.]</t>
    </section>
    <!-- ====================================================================== -->
    <section title="Contributors">
      <t>We would like to thank Vesa Torvinen for his contributions to the initial version of this
        document.</t>
    </section>
    <!-- ====================================================================== -->
    <section title="Acknowledgments">
      <t>The authors would like to thank Steffen Fries, Aarthi Nagarajan, Murugaraj Shanmugam, Franz
        Muenz, Jochen Grimminger and Joachim Kross for their feedback.</t>
      <t>The content of the security consideration section is based on DTLS-SIP.</t>
    </section>
  </middle>
  <!-- ====================================================================== -->
  <back>
    <references title="Normative References">
      <reference anchor="RFC2119">
        <front>
          <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner">
            <organization>Harvard University</organization>
          </author>
          <date month="March" year="1997"/>
        </front>
        <format type="TXT" octets="4723" target="ftp://ftp.isi.edu/in-notes/rfc2119.txt"/>
      </reference>
      <reference anchor="RFC3261">
        <front>
          <title>SIP: Session Initiation Protocol</title>
          <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
            <organization/>
          </author>
          <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne">
            <organization/>
          </author>
          <author fullname="G. Camarillo" initials="G." surname="Camarillo">
            <organization/>
          </author>
          <author fullname="A. Johnston" initials="A." surname="Johnston">
            <organization/>
          </author>
          <author fullname="J. Peterson" initials="J." surname="Peterson">
            <organization/>
          </author>
          <author fullname="R. Sparks" initials="R." surname="Sparks">
            <organization/>
          </author>
          <author fullname="M. Handley" initials="M." surname="Handley">
            <organization/>
          </author>
          <author fullname="E. Schooler" initials="E." surname="Schooler">
            <organization/>
          </author>
          <date year="2002" month="June"/>
        </front>
        <seriesInfo value="3261" name="RFC"/>
        <format octets="647976" type="TXT" target="ftp://ftp.isi.edu/in-notes/rfc3261.txt"/>
      </reference>
      <reference anchor="Sch00">
        <front>
          <title abbrev="Application-Layer Mobility using SIP">Application-Layer Mobility using SIP,
            ACM MC2R</title>
          <author fullname="Henning Schulzrinne" initials="H." surname="Schulzrinne">
            <organization> Columbia University</organization>
          </author>
          <author fullname="E. Wedlund" initials="E." surname="Wedlund">
            <organization/>
          </author>
          <date year="2000" month="July"/>
        </front>
        <seriesInfo value=" " name=" "/>
        <format type="" octets="" target=""/>
      </reference>
      <reference anchor="RFC2327">
        <front>
          <title abbrev="SDP">SDP: Session Description Protocol</title>
          <author fullname="Mark Handley" initials="M." surname="Handley">
            <organization> Information Sciences Institute</organization>
          </author>
          <author fullname="Van Jacobson" initials="V." surname="Jacobson">
            <organization> Lawrence Berkeley Laboratory</organization>
          </author>
          <date year="1998" month="April"/>
          <area>Applications</area>
          <keyword>multimedia</keyword>
          <keyword>SDP</keyword>
        </front>
        <seriesInfo value="2327" name="RFC"/>
        <format octets="105361" type="HTML"
          target="http://xml.resource.org/public/rfc/html/rfc2327.html"/>
        <format octets="96873" type="XML"
          target="http://xml.resource.org/public/rfc/xml/rfc2327.xml"/>
      </reference> &I-D.ietf-mmusic-sdescriptions; &I-D.ietf-mmusic-kmgmt-ext;
      &I-D.ietf-hip-arch; &I-D.ietf-hip-base; </references>
    <references title="Informative References"> &I-D.bradner-pbk-frame; &I-D.ietf-sip-certs;
      &I-D.ietf-mmusic-sdp-new; &RFC3830; &RFC3515; &I-D.ietf-hip-rvs;
      &I-D.ietf-hip-nat-traversal;
      &I-D.ietf-behave-rfc3489bis; &I-D.ietf-behave-turn;
      &I-D.ietf-hip-esp; &RFC4474; </references>
  </back>
</rfc>
