RFC 9410
Handling of Identity Header Errors for Secure Telephone Identity Revisited (STIR)
RFC 9410: Handling of Identity Header Errors for Secure Telephone Identity Revisited (STIR) πβ¨
Okay bestie, this is RFC 9410 π It's a Standards Track doc, so it's the real deal and not just a suggestion π It came out in July 2023 π¦ and the author is C. Wendt from Somos Inc. πΈ The ISSN is 2070-1721 if you ever need it. The header doesn't list anything it obsoletes or updates, so it's standing on its own π«Ά
Abstract β¨
Okay so this doc extends the error-handling rules for mapping verification failure reasons to 4xx codes in STIR (Secure Telephone Identity Revisited) and in Authenticated Identity Management in SIP (Session Initiation Protocol) π π The big glow-up is that it lets you use the Reason header field to pass along an error tied to an Identity header field, but only when local policy says the call should keep going even though verification failed π It also says how to map a failure reason to one specific Identity header field when a call has multiple Identity header fields, some with errors and some without π¦ It spells out how those situations get handled too β¨
Status of This Memo π
This is an Internet Standards Track document π
It's a product of the Internet Engineering Task Force (IETF), it represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication π«Ά If you want more on Internet Standards, check Section 2 of RFC 7841 π
For info on the current status, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9410 π
Copyright Notice Β©οΈ
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved. π
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date. Please actually read those, bestie, because they explain what you can and can't do with this doc π Any Code Components pulled out of this document must include the Revised BSD License text described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Revised BSD License says π
Table of Contents ποΈ
1. Introduction
2. Terminology
3. Reason Header Field Protocol "STIR"
4. Use of Provisional Response to Signal Errors without
Terminating the Call
5. Handling of a Verification Error When There Are Multiple
Identity Header Fields
6. Handling Multiple Verification Errors
7. Removal of the Reason Header Field by Authentication Service
8. IANA Considerations
9. Security Considerations
10. References
10.1. Normative References
10.2. Informative References
Acknowledgements
Author's Address
1. Introduction πΈ
Okay so the STIR framework from [RFC7340] is an authentication framework π It lets you vouch for a telephone number or a URI-based identity using digital signatures and a certificate-based setup, which are covered in [RFC8225] and [RFC8226] respectively π¦ [RFC8224] explains how STIR works inside SIP [RFC3261] π It defines two roles: a) the authentication service, which makes a PASSporT [RFC8225] and delivers it in an Identity header field, and b) the verification service, which checks that PASSporT and the originating identity inside it β¨
This doc is all about errors when validating PASSporTs and Identity header fields, and how those errors get communicated in special cases π It also has a fix for the mess that can happen when there are multiple Identity header fields and a bunch of possible verification errors π Another thing it tackles: the current 4xx error response just terminates the call whenever a verification error shows up π In some deployments, though, policy says calls should keep going even with a verification error. Like, if it's an accidental or operational slip-up and not someone faking an identity, the preferred move might be to keep the call going despite the unverified identity π«Ά Even then, the authentication service still needs to hear about the error so someone can fix it π This spec talks about using the Reason header field in later provisional (1xx) responses to send the error back to the authentication service, or to other SIP path network equipment that handles errors π§
For calls with multiple Identity header fields where some verify and some don't (meaning they have errors), this doc defines a way to add an identifier to the header π₯ That way the authentication service can tell exactly which Identity header field an error is about β¨
2. Terminology π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. π
3. Reason Header Field Protocol "STIR" π
This doc defines a brand-new Reason header field [RFC3326] protocol called "STIR" for STIR apps that use SIP as defined in [RFC8224] π Using "STIR" as the Reason header field protocol with the error defined in [RFC8224] causes codes to allow multiple Reason header fields, as detailed in [RFC3326] and updated in [RFC9366] π¦ Any provisional SIP response message or final response message MAY contain one or more Reason header fields with a STIR-related cause code from [RFC8224] or future specs, with one exception: a 100 (Trying) doesn't get to do this π We'll get into multiple Reason header fields later in the doc π«Ά
4. Use of Provisional Response to Signal Errors without Terminating the Call π
So here's the deal: if local policy says a call should keep going no matter what verification errors happen, including the 4xx errors described in Section 6.2.2 of [RFC8224], the verification service MUST NOT send the 4xx as a response π« Instead, it should put the error response code and reason phrase in a Reason header field in the next provisional or final response it sends to the authentication service π
Example Reason header field:
Reason: STIR ;cause=436 ;text="Bad Identity Info"
8. IANA Considerations π
okay so IANA registered a new protocol value π¦ in the "Reason Protocols" registry, under <http://www.iana.org/assignments/sip-parameters>. It comes with its own protocol cause too, and you can see the whole thing in Table 1 below β¨
+================+=================+===========+
| Protocol Value | Protocol Cause | Reference |
+================+=================+===========+
| STIR | STIR Error code | [RFC8224] |
+----------------+-----------------+-----------+
Table 1
they also registered a brand new header field parameter name π in the "Header Field Parameters and Parameter Values" registry, under <https://www.iana.org/assignments/sip-parameters>. Table 2 has the details, and yes it's giving very organized πΈ
+==============+================+===================+===========+
| Header Field | Parameter Name | Predefined Values | Reference |
+==============+================+===================+===========+
| Reason | ppi | No | RFC 9410 |
+--------------+----------------+-------------------+-----------+
Table 2
9. Security Considerations ππ«Ά
bestie, this section is SERIOUS π so read it carefully.
okay so this spec is talking about using a PASSporT π as an identifier when there are multiple identity header field errors showing up in the Reason header field response. For some call scenarios (like diversion-based call flows π), the person who signed the PASSporT(s) might not be the first-hop initiator of the call. In those cases, there could be security or privacy concerns π because PASSporT information gets passed upstream, past the authentication service that originally signed it, inside that error Reason header field.
so the spec says the authentication service MUST remove the Reason header field with the PASSporT in it π«. Why? To protect security (imagine a still-fresh PASSporT getting used for replay attacks π±) and privacy of anything that could travel back toward the call initiator past the authentication service response. It's giving "protect your secrets" energy π₯
also, while this spec lets you use either the full or the compact form of the PASSporT as the error identifier, using the compact form is RECOMMENDED π. The reason is to avoid accidentally exposing call information that's inside the full form. Protect that call info, periodt π
10. References β
10.1. Normative References
okay these are the ones you NEED to read π§
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
- [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002, <https://www.rfc-editor.org/info/rfc3261>.
- [RFC3326] Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason Header Field for the Session Initiation Protocol (SIP)", RFC 3326, DOI 10.17487/RFC3326, December 2002, <https://www.rfc-editor.org/info/rfc3326>.
- [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
- [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, "Authenticated Identity Management in the Session Initiation Protocol (SIP)", RFC 8224, DOI 10.17487/RFC8224, February 2018, <https://www.rfc-editor.org/info/rfc8224>.
- [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, <https://www.rfc-editor.org/info/rfc8225>.
- [RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity Credentials: Certificates", RFC 8226, DOI 10.17487/RFC8226, February 2018, <https://www.rfc-editor.org/info/rfc8226>.
- [RFC9366] Sparks, R., "Multiple SIP Reason Header Field Values", RFC 9366, DOI 10.17487/RFC9366, March 2023, <https://www.rfc-editor.org/info/rfc9366>.
10.2. Informative References
and this one is just for extra context π·
- [RFC7340] Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure Telephone Identity Problem Statement and Requirements", RFC 7340, DOI 10.17487/RFC7340, September 2014, <https://www.rfc-editor.org/info/rfc7340>.
Acknowledgements π«Ά
the author wants to thank David Hancock for helping identify these error scenarios π and also Jon Peterson, Roman Shpount, Robert Sparks, Christer Holmberg, and others in the STIR Working Group for their helpful feedback and discussion. the whole group is iconic π
Author's Address π¦
Chris Wendt Somos Inc. Email: chris-ietf@chriswendt.net
π¦ where this page comes from
- ietf: rfc9410 2023-07
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms