RFC 4189
Requirements for End-to-Middle Security for the Session Initiation Protocol (SIP)
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 Notice ยฉ๏ธ
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 ๐ก๏ธ๐
2.2.4. Media-related Services ๐
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
Full 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.
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
- ietf: rfc4189 2005-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms