Internet DRAFT - draft-polk-sipping-e2e-sec-assurance

draft-polk-sipping-e2e-sec-assurance






SIPPING Working Group                                        James Polk
Internet-Draft                                            Cisco Systems
Expires: Jan 11th, 2006                                 July 11th, 2005
                                                         


          Requirements for Assured End-to-End Signaling Security 
                 within the Session Initiation Protocol
                 draft-polk-sipping-e2e-sec-assurance-00

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six 
   months and may be updated, replaced, or obsoleted by other documents
   at any time.  It is inappropriate to use Internet-Drafts as 
   reference material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on January 11th, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).


Abstract

   The Session Initiation Protocol (SIP) has existing mechanisms for 
   securing its signaling messages.  SIP has several transport 
   layers it works across: TCP, UDP, SCTP, and TLS over TCP.  There 
   currently is no mechanism to ensure that if TLS over TCP is chosen 
   by the originating UAC, the messaging will remain encrypted on a 
   hop-by-hop basis to the destination UAS.  This document discusses 
   this scenario, providing the requirements for such to exist, and 
   offering pieces of a possible solution for this set of requirements.


Polk                    Expires January 11, 2006               [Page 1]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .  2
     1.1   Conventions used in this document . . . . . . . . . . . .  3
   2.  Rationale for E2E Signaling Security  . . . . . . . . . . . .  4
   3.  Requirements for E2E Security in Signaling  . . . . . . . . .  4
   4.  High Level Offering at a Solution . . . . . . . . . . . . . .  5
     4.1   Step 1 to High Level Offering . . . . . . . . . . . . . .  5
     4.2   Step 2 to High Level Offering . . . . . . . . . . . . . .  6
     4.3   Rejection Response from Intermediary  . . . . . . . . . .  7
   5.  Diagrams for Discussion . . . . . . . . . . . . . . . . . . .  7
     5.1   Diagram for Discussion Involving 3 Domains  . . . . . . .  7
     5.2   Diagram for Discussion Involving >3 Domains . . . . . . .  8
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  8
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  8
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  9
     8.1   Normative References  . . . . . . . . . . . . . . . . . .  9
     8.2   Informative References  . . . . . . . . . . . . . . . . .  9
       Author's Address  . . . . . . . . . . . . . . . . . . . . . .  9
       Intellectual Property and Copyright Statements  . . . . . . . 10


1.  Introduction

   The Session Initiation Protocol (SIP) has many mechanisms for 
   securing its signaling messages.  SIP also has several transport 
   layers it works across: TCP, UDP, SCTP, and TLS over TCP.  According
   to RFC 3261 [RFC3261], these transport layers can change per SIP 
   element hop through an infrastructure.  Most of the time, this is a 
   valuable capability, as SIP elements would know best (or at least 
   better) which transport layer is more appropriate given the level 
   of service that element wants or needs to provide than the UAC 
   would.  However, there can be cases in which a user agent wants to 
   ensure its messages are transmitted with end-to-end security even if
   they require a hop-by-hop nature for message routing and other 
   services to be offered by the underlying infrastructure in place.  
   Currently this is not possible within SIP. SIP does have the ability
   to encrypt message bodies using S/MIME, but this does not address 
   encrypting message headers from source to destination.  SIP 
   necessitates hop-by-hop view and modifications to certain headers to
   succeed.  

   In this hop-by-hop nature of SIP, a UAC can have a false sense of 
   security if it originates a transaction using TLS (or IPsec for that
   matter) and the first hop Proxy (or any SIP intermediary along the 
   path) changes the transport layer from TLS to merely UDP, TCP or 
   SCTP.  SIP intermediaries have no means to inform the UAC of this 
   change even if one wanted to.  

   At the same time, if the last hop proxy/intermediary changes 
   transport layers to TLS - whether the UAC initiated TLS or not - the


Polk                    Expires January 11, 2006               [Page 2]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   UAS implicitly believes the entire messaging path was secure - when 
   in fact the only known hop that was secure was the last hop towards 
   the UAS.

   This document should not address cases in which the UAC did not 
   transmit over TLS initially, even if as the results of a 407 (Proxy 
   Authentication Required) challenge adjusting the transport layer to 
   TLS from one of the other offerings; as that challenge is intended 
   to provide integrity protection of the authorization header to that 
   specific Proxy, and not beyond.  This should only apply to SIP 
   messages from UACs that initiate TLS by the user's choice/ 
   configuration for that flow of messages.  

   This document cannot account for SIP elements that wish to lie about
   the security status of a message.  That said, this document can 
   provide the necessary indications for an agreement to exist between 
   two or more entities that the transit element or receiver did indeed
   comply with the agreement for securing the signaling when the 
   message was processed. 

   This document discusses the requirements for such a security 
   assurance to the user agent client (UAC) of a SIP message flow that 
   its messages remained encrypted on a hop-by-hop basis to the 
   destination user agent server (UAS).

   Although this document frequently discusses securing SIP signaling 
   messages as using TLS (because RFC3261 made its implementation 
   mandatory for SIP), IPsec is another optional means of securing SIP 
   messaging hop-by-hop.  To keep from repeating the two options over 
   and over again, for the most part, TLS will be written from now on -
   even though either is functionally the same in this document's 
   context.

   [RFC3261] provides the means for hop-by-hop encryption, but also the
   ability to change the transport layers per hop.  There are strong 
   hints at maintaining TLS (a SIPS URI) if it is received along a 
   message path.  This document wants to make sure that is more robust.

   [RFC3329] provided the agreement of security only between the UAC 
   and its first hop proxy.  

   [RFC3840] provides a means for a UAC to convey its preference for 
   message handling, but did not cover other than to state the SIPS URI
   should be used if the UAC does not want caller preferences to be 
   viewed by any element other than the SIP Server.  This effort does 
   (pretty much) that, and it should be discussed as to whether this is
   an extension of the caller prefs efforts, or is independent of it.


1.1  Conventions used in this document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 


Polk                    Expires January 11, 2006               [Page 3]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 
   "OPTIONAL" in this document are to be interpreted as described 
   in [RFC2119].


2.  Rationale for E2E Signaling Security

   User's (through their user agents) should not implicitly trust that 
   just because the first hop was secured using TLS (or IPsec), the 
   message remained secure from unwanted observation from that SIP hop 
   element to the destination SIP element.  Nothing written here can or
   should prevent jurisdictions from viewing what the local law allows 
   them to view within the messages, but this document can take the 
   assurance a user has for secure communications one step further 
   towards this theme:

   "If I encrypted a SIP message, I want to know if it remained 
   encrypted in transit (between SIP elements) all the way to who I 
   wanted to contact with that message.  If it did not, I want to 
   know it did not."

   If, by chance, the first and last hops a message took were encrypted 
   along its path, there is no means to know if a message was in 
   cleartext in between those two SIP intermediaries.  


3.  Requirements for E2E Security in Signaling

   Here is a set of requirements for consideration to achieve the goal 
   of informing the UAC that a message sent by it was processed 
   successfully by a SIP intermediary along the SIP path to the 
   destination UAS and the transport layer was changed from TLS to 
   something else not secure:

   Req#1  - a user agent client that sets the transport layer of a SIP 
            message to TLS over TCP MUST be assured that message 
            arrived at the destination user agent server using TLS over
            TCP

   Req#2  - there MUST be a means within a SIP message to indicate "TLS
            over TCP is mandatory" in the processing of the message 
            towards the next SIP element

   Req#3  - this indication that "TLS over TCP is mandatory" within a 
            SIP message MUST be readable, MAY be added, but MUST NOT be
            modified in message processing by SIP intermediaries

   Req#4  - whenever this "TLS over TCP is mandatory" requirement in a 
            SIP message cannot be met, a rejection indication MUST be 
            sent conveying this rejection.  The rejection indication 
            SHOULD convey exactly why the message is being rejected.



Polk                    Expires January 11, 2006               [Page 4]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   NOTE to Req#4 - the author is not sure what to do if this indication
        was added by an intermediary in the path of the message and a 
        SIP element further downstream cannot or will not support the 
        indication.  Does the intermediary swallow the message and 
        formulate another one the downstream element can support? Or, 
        does the injecting intermediary react with a new SIP request 
        message not mandating TLS?

   As this document was written fairly quickly, with little time to 
   coordinate with others within the SIP community, additional 
   requirements can be added and the above modified based on 
   discussions within the WG.  


4.  High Level Offering at a Solution

   Here is a list of steps that can be taken to satisfy the 
   requirements listed above as is.  If those requirements change, 
   whether through modification or addition, this offered (high level) 
   solution will have to change as well.  

   Obviously, discussion is necessary on this general idea.

4.1  Step 1 to High Level Offering

   An obvious means for identifying a certain mandatory handling of SIP
   messages is through the use of the Proxy-Require header.  Since 
   there is no current value to indicate end-to-end signaling security,
   one would have to be created.  For example:

   Proxy-Require:  e2e-sec

   This would satisfy Req#2 above which calls for an indication within 
   the SIP message that it is to be treated in a certain way.  This 
   header/option-tag indicates to the receiving SIP element to 
   continue with the transport layer security which was received from 
   the previous hop SIP element.

   The Proxy-Require header is visible to the processing of SIP 
   intermediaries, satisfying Req#3 above.  This header and option-tag 
   MUST be readable by SIP intermediaries.  The header (or option-tag) 
   MAY be added by any SIP intermediary to a message it does not exist 
   in.  This header and its option-tag MUST NOT be modified or 
   deleted by any SIP intermediary during processing and transmission. 
   This satisfies Req#4 from above.

   If the UAC wants to inform the destination UAS it originated TLS 
   over TCP for this message, SIPFRAG [RFC3420] SHOULD be used to hide 
   this fact from all intermediaries that may modify or delete the 
   Proxy-Require and/or Require header, including its option-tag(s).  

   NOTE - The author is not sure how to address the likelihood that the 


Polk                    Expires January 11, 2006               [Page 5]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

        Proxy-Require header (meant for Proxies only) will not satisfy 
        all SIP intermediaries, and that the additional "Require" 
        header will have to also be present in the SIP message from the 
        UAC to satisfy B2BUAs and BCs in the signaling path.  This 
        appears to be redundant, yet perhaps necessary.


4.2  Step 2 to High Level Offering

   Although this may meet with some amount of controversy, one means of
   providing the necessary indications per hop back to the UAC is to 
   create implicit subscriptions based on the Proxy-Require header 
   option-tag: "e2e-sec" just being in the Request message.

   This would mandate that each SIP intermediary compliant with this 
   specification send a one-time NOTIFY to the UAC that it complied 
   with the request that the message be forwarded as requested 
   (encrypted) for that hop it controlled.

   The UAC would be aware of these NOTIFY messages coming and create a 
   state table, waiting for the successful Response to the Request 
   message it sent.  If could be possible that these NOTIFY messages 
   are sent to a remote server from the UAC and a combined single 
   NOTIFY is sent to the UAC from this server the UAC trusts.

   The tuple within the NOTIFY with the same Call-ID, to and from and 
   tags from the original Request message should suffice as 
   identification to the UAC which Request message these NOTIFY 
   messages are associated to.

   The subscription need not be long lasting - therefore it is not 
   foreseen it should last longer than it takes the SIP intermediary to
   complete the NOTIFY transaction.  

   Either the UAC could implicitly trust all the NOTIFY messages that 
   were sent, or there could be a means of the UAS for informing the 
   UAC which intermediaries the message transited.  This could be 
   accomplished as part of the XML of the NOTIFY message from the UAS 
   to the UAC, or it could be part of a new header that lists all the 
   SIP intermediaries the UAS is aware of from the VIA headers in the 
   Request message.  The UAS could take all the intermediary's URIs and
   build this new header's header values (similar to a Route header) 
   and return that in a 200 OK of the original transaction.  An example
   could be:

   Hop-Record:  server1.atlanta.example.com, 
                server10.atlanta.example.com, 
                bigbox3.biloxi.example.com

   for the 3 Proxies the original SIP Request traversed from the VIA 
   headers received by the UAS.  No order is likely necessary.



Polk                    Expires January 11, 2006               [Page 6]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   This listing of the SIP elements by URI in the 200 OK would give the
   UAC receiving such a message the necessary information to match 
   against all the tuple matching NOTIFY messages it received for that 
   Request message and compare to see if all the SIP element URIs had 
   positive indications indicated in their NOTIFY message to that UAC. 
   If the list matched, the UAC can know as best as possible that the 
   original Request message transited to the UAS encrypted all the way.
   If the list doesn't match, it will know that something went wrong - 
   but that the UAS still received the request message.

   If the list contained in this new header in the 200 OK matches the 
   list of received NOTIFY messages from SIP intermediaries, this 
   satisfies Req#1 above.

   NOTE - The author doesn't know what to do about this list of 
        intermediaries in the 200 OK being inconsistent with the list 
        of NOTIFY respondents, divulging that there are more SIP 
        elements that were present in the UAS's response.  This 
        c/should lead the UAC to conclude there are intermediaries 
        acting as B2BUAs or BCs between it and the UAS.  This is 
        topology information the UAC might not have the privilege to 
        know otherwise.  This is a potential security risk with this 
        solution.


4.3  Rejection Response from Intermediary

   Section 8.1.3.5 of [RFC3261] states clearly that the proper 
   rejection indication to an unsupported extension to SIP is a 420 
   (Bad Extension) Response accompanied with an Unsupported Header 
   listing all extensions not supported by that SIP element; this 
   includes Proxy-Require and Require header option-tags.  This 
   satisfies Req#4 above.


5.  Diagrams for Discussion 

   For early discussions of the document, please consider the following
   two layer 7 diagrams for those discussions:


5.1 Diagram for Discussion Involving 3 Domains

    ____________   _____________________   ____________     
   |            | |                     | |            |    
   | UAC -- PS1 --- PS2 --- PS3 --- PS4 --- PS5 -- UAS |    
   |____________| |_____________________| |____________|    
       Domain 1           Domain 2           Domain 3        

     Figure 1. 3 Domain Diagram

   - Alice is the user of the UAC.


Polk                    Expires January 11, 2006               [Page 7]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   - Bob is the user of the UAS.
   - PS1 is the outbound Proxy for the UAC.
   - PS5 is the inbound Proxy for the UAS.
   - PS2, PS3 and PS4 are within the same domain (separate from 
     PS1 and PS5


5.2  Diagram for Discussion Involving >3 Domains

   Consider the following layer 7 diagram for discussion:

    ____________   _____   _____   _____   ____________     
   |            | |     | |     | |     | |            |    
   | UAC -- PS1 --- PS2 --- PS3 --- PS4 --- PS5 -- UAS |    
   |____________| |_____| |_____| |_____| |____________|    
       Domain 1  Domain 2    ^    Domain 4   Domain 5       
                          Domain 3

     Figure 2. 5 Domain Diagram

   - Alice is the user of the UAC.
   - Bob is the user of the UAS.
   - PS1 is the outbound Proxy for the UAC.
   - PS5 is the inbound Proxy for the UAS.
   - PS2, PS3 and PS4 are each in separate domains (and separate 
     from PS1 and PS5)


6.  IANA Considerations

   This document makes no request of the IANA at this time.

   If this document progresses further to the SIP WG for extensions to 
   the SIP protocol as is, the Proxy-Require and Require header 
   option-tag "e2e-sec" and the header "hop-record" (with no option-
   tags) will be called out here for registration.

   Modifications to this document will modify this section.


7.  Security Considerations

   This document attempts to address a security hole within the SIP 
   architecture, but probably opens up more security holes in its 
   present form.

   Providing the possibility of a topology view of an infrastructure 
   between a UAC and UAS could reveal SIP elements that would otherwise
   know be known to that endpoint.  This could be of concern to the 
   UAC's home network administrators.  

   Part of the High Level solution offered here creates implicit 


Polk                    Expires January 11, 2006               [Page 8]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

   subscriptions back to a UAC that doesn't have a relationship with 
   each SIP intermediary along a message path.  Asking that each 
   intermediary send a NOTIFY message back to the UAC opens up a means 
   of both:

   - overloading the UAC with NOTIFY message (although there will not 
     be that many packets send overall)

   - provides each intermediary a target endsystem to send packets to

   The latter of the two above could lead to abuse (a point of attack) 
   or a security hole.


8.  References

8.1  Normative References

 [RFC3261] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J.
           Peterson, R. Sparks, M. Handley, and E. Schooler, "SIP:
           Session Initiation Protocol", RFC 3261, May 2002.

 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

 [RFC3420] Sparks, R., "Internet Media Type message/sipfrag",
           RFC 3420, November 2002.


8.2  Informative References

 [RFC3329] J. Arkko, V. Torvinen, G. Camarillo, A. Niemi, T. Haukka, 
           "Security Mechanism Agreement for the Session Initiation 
           Protocol (SIP)", RFC 3329, January 2003

 [RFC3840] J. Rosenberg, H. Schulzrinne, P. Kyzivat, "Indicating User 
           Agent Capabilities in the Session Initiation Protocol", RFC 
           3840, August 2004


Author's Address

   James M. Polk
   3913 Treemont Circle
   Colleyville, Texas  76034
   USA

   Phone: +1-817-271-3552
   Fax:   none
   Email: jmpolk@cisco.com




Polk                    Expires January 11, 2006               [Page 9]
 
Internet-Draft      SIP E2E Assured Signaling Security         Jan 2006

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed 
   to pertain to the implementation or use of the technology described 
   in this document or the extent to which any license under such 
   rights might or might not be available; nor does it represent that 
   it has made any independent effort to identify any such rights.   
   Information on the procedures with respect to rights in RFC 
   documents can be found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any 
   assurances of licenses to be made available, or the result of an 
   attempt made to obtain a general license or permission for the use 
   of such proprietary rights by implementers or users of this 
   specification can be obtained from the IETF on-line IPR repository 
   at http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Disclaimer of Validity

   This document and the information contained herein are provided on 
   an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE 
   REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
   INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR 
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.







Polk                   Expires October 29, 2005               [Page 10]