RFC 4189

Requirements for End-to-Middle Security for the Session Initiation Protocol (SIP)

๐Ÿ“… published October 2005, from ietf

RFC 4189: Requirements for End-to-Middle Security for the Session Initiation Protocol (SIP) ๐ŸŽ€

okay bestie, this is RFC 4189, and it's called Requirements for End-to-Middle Security for the Session Initiation Protocol (SIP) โœจ It's written by K. Ono and S. Tachimoto from NTT Corporation, it's dated October 2005, and its category is Informational, so it's here to give the community info, not to be a standard ๐Ÿ“š The title block doesn't list anything it obsoletes or updates ๐Ÿ’…


Status of This Memo ๐Ÿ“œ

okay so this memo is just giving the Internet community some info ๐Ÿ’Œ It is not an Internet standard of any kind. Distribution is unlimited, so share away ๐Ÿฆ‹

Copyright (C) The Internet Society (2005).

Abstract โœจ

okay this is the vibe check ๐Ÿซถ A Session Initiation Protocol (SIP) User Agent (UA) doesn't always trust every intermediary on its request path to look at its message bodies and/or headers. The UA might want to keep those bodies and/or headers hidden from intermediaries, except the ones that offer services based on what's inside. That situation needs a mechanism called "end-to-middle security" ๐Ÿ” to protect the info passed between the UA and intermediaries, and it doesn't mess with end-to-end security. This document lays out a set of requirements for a mechanism that gets you end-to-middle security ๐Ÿ’œ

Table of Contents ๐Ÿ—‚๏ธ

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................2
   2. Use Cases .......................................................2
      2.1. Examples of Scenarios ......................................2
      2.2. Service Examples ...........................................4
   3. Scope of End-to-Middle Security .................................6
   4. Requirements for a Solution .....................................6
      4.1. General Requirements .......................................6
      4.2. Requirements for End-to-Middle Confidentiality .............7
      4.3. Requirements for End-to-Middle Integrity ...................7
   5. Security Considerations .........................................8
   6. Acknowledgments .................................................9
   7. References ......................................................9
      7.1. Normative References .......................................9
      7.2. Informative References .....................................9

1. Introduction ๐ŸŒธ

okay so the Session Initiation Protocol (SIP) [2] has hop-by-hop security using Transport Layer Security (TLS) [3], and end-to-end security using Secure MIME (S/MIME) [4] ๐Ÿ”ฅ TLS assumes the SIP UA trusts all the proxy servers on its request path to look at the message bodies, while S/MIME assumes the UA does not trust any proxy servers to do that ๐Ÿ’€

but here's the plot twist โœจ there's a model where trusted and partially-trusted proxy servers are mixed along one message path. The partially-trusted ones are only trusted to do SIP routing, and users don't trust them to look at their data, except the routing headers ๐Ÿ™ˆ Hop-by-hop confidentiality with TLS doesn't fit this model. End-to-end confidentiality with S/MIME doesn't fit either, once the intermediaries need to read the bodies and/or headers to offer their services. This problem is described in Section 23 of [2] ๐Ÿ“

sometimes a UA wants to protect its message bodies and/or headers from the proxy servers on its request path, except the ones that provide services based on reading them ๐Ÿ‘‘ And the other way around, a proxy server might want to view those bodies and/or headers so it can provide those services. Those proxies aren't always the first hop from the UA. So this situation needs a security mechanism that protects message bodies and/or headers between the UA and the proxy servers, while still sharing info with the ones that need it. We call this "end-to-middle security" ๐Ÿฆ‹

1.1. Conventions Used in This Document ๐Ÿ“–

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 RFC-2119 [1] ๐Ÿ’…

2. Use Cases ๐Ÿงš

2.1. Examples of Scenarios ๐ŸŽฌ

okay so these are scenarios where trusted and partially-trusted proxy servers both show up on a message path ๐ŸŒˆ They show exactly why end-to-middle security is needed โœจ

in the first example, User #1 doesn't know the security policies or services of Proxy server #1 (Proxy#1) ๐Ÿ™ˆ User #1 sends a MESSAGE [5] request with S/MIME-encrypted message content for end-to-end security, as shown in Figure 1. Proxy #1 rejects the request because its strict security policy doesn't allow forwarding unknown data ๐Ÿ’€

               Home network
               +---------------------+
               | +-----+     +-----+ |   +-----+     +-----+
   User #1-----| |  C  |-----| [C] |-----| [C] |-----|  C  |-----User #2
               | +-----+     +-----+ |   +-----+     +-----+
               | UA #1      Proxy #1 |   Proxy #2     UA #2
               +---------------------+

   C:   Content that UA #1 allows the entity to inspect
   [C]: Content that UA #1 prevents the entity from inspecting

Figure 1: Deployment example #1

in the second example, Proxy server #1 is the home proxy server of User #1, who's using UA #1 ๐Ÿ  User #1 talks to User #2 through Proxy #1 and Proxy #2, as shown in Figure 2. User #1 already knows Proxy #1's security policy, which requires inspecting the content of the MESSAGE request. But User #1 doesn't know whether Proxy #2 is trustworthy, so they want to protect the message bodies in the request ๐Ÿ˜ญ To pull this off, UA #1 needs to be able to let a trusted intermediary (Proxy #1) inspect the message bodies, while keeping their confidentiality from other intermediaries (Proxy #2) ๐Ÿซถ

even if UA #1's request message lets Proxy #1 inspect the message bodies, UA #1 can't let that same proxy server inspect the message bodies in later MESSAGE requests from UA #2 ๐Ÿ™ƒ

              Home network
              +---------------------+
              | +-----+     +-----+ |   +-----+     +-----+
  User #1-----| |  C  |-----|  C  |-----| [C] |-----|  C  |----- User #2
              | +-----+     +-----+ |   +-----+     +-----+
              | UA #1      Proxy #1 |   Proxy #2     UA #2
              +---------------------+

  C:   Content that UA #1 needs to disclose
  [C]: Content that UA #1 needs to protect

Figure 2: Deployment example #2

in the third example, User #1 connects UA #1 to a proxy server in a visited (potentially insecure) network, like a hotspot or a roaming service ๐ŸŒ User #1 wants certain home network services, so UA #1 connects to a home proxy server, Proxy #1. But UA #1 has to connect to Proxy #1 through the proxy server of the visited network (Proxy A), because User #1 has to follow that network's policy ๐Ÿ“‹ Proxy A does access control based on the destination addresses of calls. User #1 only trusts Proxy A to route requests, not to inspect the message bodies in those requests, as shown in Figure 3 ๐Ÿ”’ User #1 trusts Proxy #1 to do both: route the requests and inspect the message bodies ๐Ÿ’–

the same problems as in the second example show up here too ๐Ÿ˜ฉ

               Visited network
              +---------------------+
              | +-----+     +-----+ |   +-----+     +-----+     +-----+
   User #1 -- | |  C  |-----| [C] |-----|  C  |-----| [C] |-----|  C  |
              | +-----+     +-----+ |   +-----+     +-----+     +-----+
              | UA #1       Proxy A |   Proxy #1     Proxy #2    UA #2
              +---------------------+

   C:   Content that UA #1 needs to disclose
   [C]: Content that UA #1 needs to protect

Figure 3: Deployment example #3

2.2. Service Examples ๐Ÿ’

here are several services that need end-to-middle security ๐Ÿ’ซ

2.2.1. Logging Services for Instant Messages ๐Ÿ’ฌ

logging services come from the archiving function, which sits in the proxy server and logs the message content exchanged between UAs ๐Ÿ“ The archiving function could live in the originator's network, the destination network, or both ๐ŸŒ When an instant message has private info in it, UACs (UA Clients) encrypt the content for the UASes (UA Servers) ๐Ÿ” The archiving function needs to log the content in a message body in bidirectional MESSAGE requests, in a way that the data can still be decoded ๐Ÿ”“ It also needs a way to verify the data integrity of the content before logging it โœ…

this service might get deployed in financial networks, healthcare providers' networks, and other networks where archiving communication is required by their security policies ๐Ÿฅ๐Ÿ’ผ

2.2.2. Non-emergency Call Routing Based on the Location Object ๐Ÿ“

the Location Object [6] holds a person's geographical location info, which is super privacy-sensitive ๐Ÿฅบ Some proxy servers can route calls based on that geographical location info โœจ When UAs want location-based routing in non-emergency situations, they need to connect to proxy servers that have that capability, and share the geographical location info in the message body of the INVITE request. Meanwhile, they still need to protect it from other proxy servers on the request path ๐Ÿ›ก๏ธ The proxy servers also need to verify the Location Object's data integrity before location-based routing gets applied โœ… Sometimes UACs want to send the Location Object to the UASes too ๐Ÿ“ฌ That's another great example of UACs needing to send secure data to a proxy server and to the UASes at the same time ๐Ÿ‘‘

2.2.3. User Authentication ๐Ÿชช

2.2.3.1. User Authentication Using the AIBs ๐Ÿ”

the Authenticated Identity Bodies (AIBs) [7] are digitally-signed data used to identify users โœ๏ธ Proxy servers that need to authenticate a user verify the signature ๐Ÿง When the originator wants anonymity, the user identity in the AIB gets encrypted before it's signed ๐Ÿ•ถ๏ธ Proxy servers that authenticate the user need to decrypt the body to see the user identity in the AIB ๐Ÿ”“ These proxy servers can be located adjacently and/or non-adjacently to the UA ๐ŸŒธ

the AIB could be included in all request/response messages ๐Ÿ“จ The proxy server needs to see it in request messages to authenticate users ๐Ÿ‘€ Another proxy server sometimes needs to see it in response messages for user authentication too ๐Ÿ’…

2.2.3.2. User Authentication in HTTP Digest Authentication ๐Ÿ”‘

user authentication data for HTTP Digest authentication [8] can include potentially private info, like a user name ๐Ÿ™ˆ That user authentication data can only be set in a SIP header of request messages ๐Ÿ“ฎ This info needs to be sent securely to the servers that authenticate users, whether they're located adjacently and/or non-adjacently to the UA ๐Ÿ›ก๏ธ๐Ÿ’œ

okay so this one is giving media ๐Ÿ“น. Firewall traversal is a super clear example of services that look at the media info inside a message body, like the Session Description Protocol (SDP) [9]. A firewall entity that speaks SIP, or a midcom [10] agent living next to a proxy server, controls a firewall using the address and port info of the media streams in the SDP offer/answer ๐Ÿงฑ. That address and port info has to travel securely to the recipient UAs and to the proxy server acting as a midcom agent ๐Ÿ”. So a proxy server needs to be able to decrypt the SDP and verify its integrity too, bestie ๐Ÿ’œ.

When the SDP includes key parameters for Secure RTP (SRTP) [11], those key parameters only need to be encrypted for end-to-end confidentiality ๐Ÿ”‘โœจ.

3. Scope of End-to-Middle Security ๐Ÿ’–

End-to-middle security is made up of user authentication, data integrity, and data confidentiality ๐Ÿซถ. Data integrity needs the peer that created the data to be authenticated. BUT this document only describes requirements for data confidentiality and data integrity, because end-to-middle authentication is already covered by existing mechanisms like HTTP Digest authentication, the S/MIME Cryptographic Message Syntax (CMS) SignedData body [12], or an AIB ๐Ÿ™Œ.

On the data integrity side, the CMS SignedData body can be used to verify data integrity and to authenticate the signer, and any entity can do that ๐Ÿง. It can even be used for end-to-middle security and end-to-end security at the same time ๐Ÿ”ฅ. The catch is that a proxy server generally does not verify data integrity using the CMS SignedData body, and a UA has no way to ask the proxy server to verify a message ๐Ÿ˜ญ. So some new mechanisms are needed to get data integrity for end-to-middle security ๐Ÿ› ๏ธ.

This document mainly talks about requirements for data confidentiality and for the integrity of end-to-middle security ๐Ÿ’….

4. Requirements for a Solution โœจ

Here are the requirements for a solution ๐Ÿ“. They mostly kick in during dialog creation or when a MESSAGE request gets sent ๐Ÿ“จ.

4.1. General Requirements ๐ŸŒธ

These are the general requirements for end-to-middle confidentiality and integrity ๐Ÿ’œ.

REQ-GEN-1: The solution SHOULD have little impact on the way a UA handles S/MIME-secured messages.

REQ-GEN-2: It SHOULD NOT have an impact on proxy servers that do not provide services based on S/MIME-secured bodies in terms of handling the existing SIP headers.

REQ-GEN-3: It SHOULD NOT violate the standardized mechanism of proxy servers in terms of handling message bodies.

REQ-GEN-4: It SHOULD allow a UA to discover security policies of proxy servers. Security policies imply what data is needed to disclose and/or verify in a message.

This requirement is necessary when the UA does not know statically which proxy servers or domains need disclosing data and/or verification ๐Ÿง .

4.2. Requirements for End-to-Middle Confidentiality ๐Ÿ”

REQ-CONF-1: The solution MUST allow encrypted data to be shared with the recipient UA and a proxy server, when a UA wants ๐ŸŽ.

REQ-CONF-2: It MUST NOT violate end-to-end encryption when the encrypted data does not need to be shared with any proxy servers ๐Ÿ™…โ€โ™€๏ธ.

REQ-CONF-3: It SHOULD allow a UA to request a proxy server to view specific message bodies. The request itself SHOULD be secure; namely it SHOULD be authenticated for the UA and verified for the data integrity ๐Ÿ›ก๏ธ.

REQ-CONF-4: It MAY allow a UA to request that the recipient UA disclose information to the proxy server to which the requesting UA is initially disclosing information. The request itself SHOULD be secure; namely it SHOULD be authenticated for the UA and verified for the data integrity ๐Ÿฆ‹.

This requirement is necessary when a provider operating the proxy server allows its security policies to be revealed to the provider serving the recipient UA ๐Ÿ‘€.

4.3. Requirements for End-to-Middle Integrity ๐Ÿง

This section lists the requirements for end-to-middle integrity ๐Ÿ“‹. Verifying data integrity means checking that the data was created by the authenticated user and wasn't forged by a malicious user ๐Ÿ˜ค. That's why verifying data integrity needs user authentication, no cap ๐Ÿ’ฏ.

REQ-INT-1: The solution SHOULD work even when the SIP end-to-end authentication and integrity services are enabled.

REQ-INT-2: It SHOULD allow a UA to request a proxy server to verify specific message bodies and authenticate the user. The request itself SHOULD be secure; namely it SHOULD be authenticated for the UA and verified for the data integrity.

REQ-INT-3: It SHOULD allow a UA to request the recipient UA to send the verification data of the same information that the requesting UA is providing to the proxy server. The request itself SHOULD be secure; namely it SHOULD be authenticated for the UA and verified for the data integrity.

This requirement is necessary when a provider operating the proxy server allows its security policies to be revealed to the provider serving the recipient UA โœจ.

5. Security Considerations ๐Ÿ’€

Okay bestie, this part is SERIOUS ๐Ÿšจ, so read it closely. This document describes the requirements for confidentiality and integrity between a UA and a proxy server. It does not cover any requirements for authentication, BUT verifying data integrity requires peer authentication. Peer authentication is also important for preventing attacks from malicious users and servers ๐Ÿ›‘.

End-to-middle security needs extra processing on message bodies, like unpacking MIME structure, decrypting data, and/or verifying signatures, all done by the proxy servers. Because of that, proxy servers that enable end-to-middle security are vulnerable to a Denial-of-Services attack ๐Ÿ˜ฑ. One threat model is a malicious user sending lots of messages with complicated MIME structures to a proxy server, with user authentication data gathered by eavesdropping ๐Ÿ‘‚. Another threat model is a malicious proxy server sending lots of messages with complicated MIME structures to a proxy server, containing the source IP address and the Via header of an adjacent proxy server ๐Ÿซ . These attacks will slow down the overall performance of the target proxy servers ๐ŸŒ.

To prevent these attacks, user and server authentication mechanisms need to be protected against replay attacks, or user and server authentication always need to be run at the same time as data integrity protection. To prevent these attacks, the following requirements should be met ๐Ÿงท.

  • The solution MUST support mutual authentication, data confidentiality, and data integrity protection between a UA and a proxy server.
  • It SHOULD support protection against a replay attack for user authentication.
  • It SHOULD simultaneously support user authentication and data integrity protection.
These last two requirements are met by HTTP Digest authentication.
  • It MUST support mutual authentication, data confidentiality, and data integrity protection between proxy servers.
  • It SHOULD support protection against a replay attack for server authentication.
  • It SHOULD simultaneously support server authentication and data integrity protection.
These last three requirements are met by TLS. ๐ŸŽ€

6. Acknowledgments ๐Ÿซถ

The authors want to thank Rohan Mahy and Cullen Jennings for their initial support of this concept, and Jon Peterson, Gonzalo Camarillo, Sean Olson, Mark Baugher, Mary Barnes, and others for their reviews and constructive comments ๐Ÿ’.

7. References ๐Ÿ“š

7.1. Normative References ๐Ÿ’œ

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

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

7.2. Informative References ๐ŸŒˆ

[3] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999.

[4] Ramsdell, B., "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.1 Certificate Handling", RFC 3850, July 2004.

[5] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., and D. Gurle, "Session Initiation Protocol (SIP) Extension for Instant Messaging", RFC 3428, December 2002.

[6] Peterson, J., "A Presence-based GEOPRIV Location Object Format", RFC 4119, October 2005.

[7] Peterson, J., "Session Initiation Protocol (SIP) Authenticated Identity Body (AIB) Format", RFC 3893, September 2004.

[8] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest Access Authentication", RFC 2617, June 1999.

[9] Handley, M. and V. Jacobson, "SDP: Session Description Protocol", RFC 2327, April 1998.

[10] Srisuresh, P., Kuthan, J., Rosenberg, J., Molitor, A., and A. Rayhan, "Middlebox communication architecture and framework", RFC 3303, August 2002.

[11] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.

[12] Housley, R., "Cryptographic Message Syntax (CMS)", RFC 3852, July 2004.

Authors' Addresses ๐Ÿงš

Kumiko Ono
Network Service Systems Laboratories
NTT Corporation
9-11, Midori-Cho 3-Chome
Musashino-shi, Tokyo  180-8585
Japan

EMail: ono.kumiko@lab.ntt.co.jp, kumiko@cs.columbia.edu


Shinya Tachimoto
Network Service Systems Laboratories
NTT Corporation
9-11, Midori-Cho 3-Chome
Musashino-shi, Tokyo  180-8585
Japan

EMail: tachimoto.shinya@lab.ntt.co.jp

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.

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.

Intellectual Property โœจ

okay so the IETF is being super clear here ๐Ÿ’… it takes no position on whether any Intellectual Property Rights (or other rights) that someone might claim over the tech in this doc are valid, or how far they reach. It also doesn't say whether any license for those rights is available, and it hasn't claimed it went looking for them either ๐Ÿ™ˆ if you want the procedures for rights in RFC documents, check out BCP 78 and BCP 79 ๐Ÿ“š

Want to see IPR disclosures that were sent to the IETF Secretariat? Any licensing assurances? Or what happened when someone tried to get a general license or permission for implementers or users? That's all in the IETF online IPR repository at http://www.ietf.org/ipr ๐Ÿ”—

The IETF also invites anyone to flag copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard ๐Ÿฆ‹ just send the info to ietf-ipr@ietf.org ๐Ÿ’Œ


Acknowledgement ๐Ÿซถ

Funding for the RFC Editor function is currently provided by the Internet Society ๐ŸŒˆ thank you, Internet Society, for keeping the RFC Editor running ๐Ÿ’–

๐Ÿ“ฆ where this page comes from