<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-stir-identity-header-errors-handling-08" number="9410" submissionType="IETF" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml:lang="en" prepTime="2023-07-31T21:21:31" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-stir-identity-header-errors-handling-08" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9410" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Identity Header Errors Handling for STIR">Handling of Identity Header Errors for Secure Telephone Identity Revisited (STIR)</title>
    <seriesInfo name="RFC" value="9410" stream="IETF"/>
    <author initials="C." surname="Wendt" fullname="Chris Wendt">
      <organization showOnFrontPage="true">Somos Inc.</organization>
      <address>
        <email>chris-ietf@chriswendt.net</email>
      </address>
    </author>
    <date month="07" year="2023"/>
    <area>art</area>
    <workgroup>stir</workgroup>
    <keyword>Identity</keyword>
    <keyword>multiple errors</keyword>
    <keyword>passport</keyword>
    <keyword>reason header field</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document extends the current error-handling procedures for mapping of
verification failure reasons to 4xx codes for Secure Telephone Identity Revisited (STIR)
and the Authenticated Identity Management in the Session Initiation
Protocol (SIP). 
It extends the ability to use the Reason header field as an option for conveying
an error associated with an Identity header field to the upstream
authentication service when local policy dictates that the call
should continue in the presence of a verification failure. 
This document also defines procedures that enable a failure reason to be mapped to a specific Identity header field for scenarios that use multiple Identity header fields, where some may have errors and others may not. The handling of those situations is also defined.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9410" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reason-header-field-protoco">Reason Header Field Protocol "STIR"</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-of-provisional-response">Use of Provisional Response to Signal Errors without Terminating the Call</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-handling-of-a-verification-">Handling of a Verification Error When There Are Multiple Identity Header Fields</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-handling-multiple-verificat">Handling Multiple Verification Errors</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-removal-of-the-reason-heade">Removal of the Reason Header Field by Authentication Service</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The STIR framework as described in <xref target="RFC7340" format="default" sectionFormat="of" derivedContent="RFC7340"/> is an authentication framework for asserting a telephone number or URI-based identity using a digital signature and certificate-based framework, as described <xref target="RFC8225" format="default" sectionFormat="of" derivedContent="RFC8225"/> and <xref target="RFC8226" format="default" sectionFormat="of" derivedContent="RFC8226"/>, respectively.  
<xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> describes the use of the STIR framework in the SIP protocol <xref target="RFC3261" format="default" sectionFormat="of" derivedContent="RFC3261"/>. It defines both a) the authentication service that creates a PASSporT <xref target="RFC8225" format="default" sectionFormat="of" derivedContent="RFC8225"/> and delivers it in an Identity header field, and b) the verification service that correspondingly verifies the PASSporT and embedded originating identity.</t>
      <t indent="0" pn="section-1-2">This document is concerned with errors in validating PASSporTs and Identity header fields and how they are communicated in special cases. This document also defines a solution to help address the potential issue of multiple Identity header fields and the plurality of potential verification errors. 
Additionally, it addresses the issue of the current 4xx error response, i.e., the call is terminated when a verification error is present. In some deployments, it may be the case that the policy for handling errors dictates that calls should continue even if there is a verification error. 
For example, in many cases of inadvertent or operational errors that do not represent any type of identity falsification attempt, the preferred policy may be to continue the call despite the unverified identity. In these cases, the authentication service should still be notified of the error so that corrective action can be taken to fix any issues. This specification will discuss the use of the Reason header field in subsequent provisional (1xx) responses in order to deliver the error back to the authentication service or other SIP path network equipment responsible for error handling.</t>
      <t indent="0" pn="section-1-3">To handle multiple Identity header fields where 
 some in a call may be verified while others may not (i.e., they have 
 errors), this document defines a method by which an identifier is added 
 to the header so that the authentication service can uniquely identify 
 which Identity header field is being referred to in
 the case of an error.</t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section anchor="reason-header-field-protocol-stir" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-reason-header-field-protoco">Reason Header Field Protocol "STIR"</name>
      <t indent="0" pn="section-3-1">This document defines a new Reason header field <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/> protocol, "STIR", for STIR applications using SIP as defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/>. 
The use of "STIR" as a Reason header field protocol with the error defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> causes codes to allow the use of multiple Reason header fields as detailed in <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/> and updated in <xref target="RFC9366" format="default" sectionFormat="of" derivedContent="RFC9366"/>. Any provisional SIP response message or final response message, with the exception of a 100 (Trying), <bcp14>MAY</bcp14> contain one or more Reason header fields with a STIR-related cause code defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> or future specifications. The use of multiple Reason header fields is discussed in more detail later in the document.</t>
    </section>
    <section anchor="use-of-provisional-response-to-signal-errors-without-terminating-the-call" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-use-of-provisional-response">Use of Provisional Response to Signal Errors without Terminating the Call</name>
      <t indent="0" pn="section-4-1">In cases where local policy dictates that a call should continue regardless of any verification errors that may have occurred, including 4xx errors described in <xref sectionFormat="of" target="RFC8224" section="6.2.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8224#section-6.2.2" derivedContent="RFC8224"/>, the verification service <bcp14>MUST NOT</bcp14> send the 4xx as a response. Rather, it should include 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.</t>
      <t indent="0" pn="section-4-2">Example Reason header field:</t>
      <artwork align="left" pn="section-4-3">
Reason: STIR ;cause=436 ;text="Bad Identity Info"
</artwork>
    </section>
    <section anchor="handling-of-a-verification-error-when-there-are-multiple-identity-header-fields" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-handling-of-a-verification-">Handling of a Verification Error When There Are Multiple Identity Header Fields</name>
      <t indent="0" pn="section-5-1">In cases where a SIP message includes multiple Identity header fields and one of those Identity header fields has an error, the verification service <bcp14>MUST</bcp14> include the error response code and reason phrase associated with the error in a Reason header field, defined in <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/>, in the next provisional or final responses sent to the authentication service. The reason cause in the Reason header field <bcp14>MUST</bcp14> represent the error that occurred when verifying the contents of the Identity header field. For a SIP INVITE containing multiple Identity header fields, the "ppi" parameter for the Reason header field is <bcp14>RECOMMENDED</bcp14>. As defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/>, the STIR error codes used in responses are based on an error associated with a specific Identity header field representing a single error occurring with the verification and processing of that Identity header field. 
The association of a "ppi" parameter with a Reason header field <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/> using the protocol value of "STIR" defined in this document <bcp14>MUST</bcp14> only identify a single cause code <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/> in the context of a call dialog <xref target="RFC3261" format="default" sectionFormat="of" derivedContent="RFC3261"/> corresponding only to the STIR-related error codes defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> or future documents defining STIR-related error codes. The associated PASSporT object can be included either in full form or in compact form, where only the signature of the PASSporT is included with two periods as a prefix, as defined in <xref target="RFC8225" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8225#section-7" derivedContent="RFC8225"/>, to identify the reported Identity header field with an error. Compact form is the recommended form, as full form may include information that could have privacy or security implications in some call scenarios; this is discussed in <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 9"/>.</t>
      <t indent="0" pn="section-5-2">Example Reason header field with a full form PASSporT:</t>
      <artwork align="left" pn="section-5-3">
Reason: STIR ;cause=436 ;text="Bad Identity Info" ;ppi= \
"eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1I \
joiaHR0cHM6Ly9jZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9.eyJ \
kZXN0Ijp7InVyaSI6WyJzaXA6YWxpY2VAZXhhbXBsZS5jb20iXX0sImlhdC \
I6IjE0NDMyMDgzNDUiLCJvcmlnIjp7InRuIjoiMTIxNTU1NTEyMTIifX0.r \
q3pjT1hoRwakEGjHCnWSwUnshd0-zJ6F1VOgFWSjHBr8Qjpjlk-cpFYpFYs \
ojNCpTzO3QfPOlckGaS6hEck7w"
</artwork>
      <t indent="0" pn="section-5-4">Example Reason header field with a compact form PASSporT:</t>
      <artwork align="left" pn="section-5-5">
Reason: STIR ;cause=436 ;text="Bad Identity Info" ;ppi= \
"..rq3pjT1akEGjHCnWSwUnshd0-zJ6F1VOgFWSjHBr8Qjpjlk-cpFYpFYs \
ojNCpTzO3QfPOlckGaS6hEck7w"
</artwork>
    </section>
    <section anchor="handling-multiple-verification-errors" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-handling-multiple-verificat">Handling Multiple Verification Errors</name>
      <t indent="0" pn="section-6-1">If there are multiple Identity header field verification errors being reported, the verification service <bcp14>MUST</bcp14> include a corresponding number of Reason header fields per error.  These Reason header fields should include a "ppi" parameter, including the full or compact form of the PASSporT with cause and text parameters identifying each error. As mentioned previously, the potential use of multiple Reason header fields defined in <xref target="RFC3326" format="default" sectionFormat="of" derivedContent="RFC3326"/> is updated in <xref target="RFC9366" format="default" sectionFormat="of" derivedContent="RFC9366"/>, allowing multiple Reason header fields with the same protocol value. For this specification, "STIR" should be used for any STIR error defined in <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> or future specifications.</t>
      <t indent="0" pn="section-6-2">Example Reason header fields for two identity info errors:</t>
      <artwork align="left" pn="section-6-3">
Reason: STIR ;cause=436 ;text="Bad Identity Info" ;ppi=     \
"..rq3pjT1hoRwakEGjHCnWSwUnshd0-zJ6F1VOgFWSjHBr8Qjpjlk-cpFY \
pFYsojNCpTzO3QfPOlckGaS6hEck7w"

Reason: STIR ;cause=438 ;text="Invalid Identity Header" ;ppi=  \
"..rJ6F1VOgFWSjHBr8Qjpjlk-cpFYpFYsq3pjT1hoRwakEGjHCnWSwUnsh \
d0-zckGaS6hEck7wojNCpTzO3QfPOl"
</artwork>
    </section>
    <section anchor="removal-of-the-reason-header-field-by-authentication-service" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-removal-of-the-reason-heade">Removal of the Reason Header Field by Authentication Service</name>
      <t indent="0" pn="section-7-1">When an authentication service <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/> receives the Reason header field with a PASSporT it generated as part of an Identity header field and the authentication of a call, it should first follow local policy to recognize and acknowledge the error (e.g., perform operational actions like logging or alarming). Then, it <bcp14>MUST</bcp14> remove the identified Reason header field to avoid the PASSporT information from going upstream to a User Agent Client (UAC) or User Agent Server (UAS) that may not be authorized to see claim information contained in the PASSporT for privacy or other reasons.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">IANA has registered the following new protocol value (and associated protocol cause) in the "Reason Protocols" registry under <eref target="http://www.iana.org/assignments/sip-parameters" brackets="angle"/>:</t>
      <table anchor="iana1" align="center" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Protocol Value</th>
            <th align="left" colspan="1" rowspan="1">Protocol Cause</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">STIR</td>
            <td align="left" colspan="1" rowspan="1">STIR Error code</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC8224" format="default" sectionFormat="of" derivedContent="RFC8224"/></td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-8-3">IANA has also registered a new header field parameter name in the 
"Header Field Parameters and Parameter Values" registry under <eref target="https://www.iana.org/assignments/sip-parameters" brackets="angle"/>:</t>
      <table anchor="iana2" align="center" pn="table-2">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Header Field</th>
            <th align="left" colspan="1" rowspan="1">Parameter Name</th>
            <th align="left" colspan="1" rowspan="1">Predefined Values</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">Reason</td>
            <td align="left" colspan="1" rowspan="1">ppi</td>
            <td align="left" colspan="1" rowspan="1">No</td>
            <td align="left" colspan="1" rowspan="1">RFC 9410</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-9-1">This specification discusses the use of a PASSporT as an identifier for cases where there are multiple identity header field errors occurring as part of the Reason header field response. For some call scenarios (e.g., diversion-based call flows), the signer of the PASSporT(s) may not be the first-hop initiator of the call. In those cases, there may be some security or privacy concerns associated with PASSporT information that is passed upstream beyond the authentication service that originally signed the PASSporT(s) in the resulting error Reason header field. This specification states that the authentication service <bcp14>MUST</bcp14> remove the Reason header field with the PASSporT to protect the security (e.g., use of a potentially still-fresh PASSporT for replay attacks) and privacy of any potential information that could be passed beyond the authentication service response back in the direction of the call initiator. While this specification allows for both the full and compact form of the PASSporT to be used as the error identifier, use of the compact form is <bcp14>RECOMMENDED</bcp14> to avoid  the potential exposure of call information contained in the full form of the PASSporT.</t>
    </section>
  </middle>
  <back>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3261" target="https://www.rfc-editor.org/info/rfc3261" quoteTitle="true" derivedAnchor="RFC3261">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
            <author fullname="A. Johnston" initials="A." surname="Johnston"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="R. Sparks" initials="R." surname="Sparks"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="E. Schooler" initials="E." surname="Schooler"/>
            <date month="June" year="2002"/>
            <abstract>
              <t indent="0">This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3261"/>
          <seriesInfo name="DOI" value="10.17487/RFC3261"/>
        </reference>
        <reference anchor="RFC3326" target="https://www.rfc-editor.org/info/rfc3326" quoteTitle="true" derivedAnchor="RFC3326">
          <front>
            <title>The Reason Header Field for the Session Initiation Protocol (SIP)</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="D. Oran" initials="D." surname="Oran"/>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
            <date month="December" year="2002"/>
            <abstract>
              <t indent="0">The REGISTER function is used in a Session Initiation Protocol (SIP) system primarily to associate a temporary contact address with an address-of-record. This contact is generally in the form of a Uniform Resource Identifier (URI), such as Contact: and is generally dynamic and associated with the IP address or hostname of the SIP User Agent (UA). The problem is that network topology may have one or more SIP proxies between the UA and the registrar, such that any request traveling from the user's home network to the registered UA must traverse these proxies. The REGISTER method does not give us a mechanism to discover and record this sequence of proxies in the registrar for future use. This document defines an extension header field, "Path" which provides such a mechanism. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3326"/>
          <seriesInfo name="DOI" value="10.17487/RFC3326"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8224" target="https://www.rfc-editor.org/info/rfc8224" quoteTitle="true" derivedAnchor="RFC8224">
          <front>
            <title>Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="C. Wendt" initials="C." surname="Wendt"/>
            <date month="February" year="2018"/>
            <abstract>
              <t indent="0">The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.</t>
              <t indent="0">This document obsoletes RFC 4474.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8224"/>
          <seriesInfo name="DOI" value="10.17487/RFC8224"/>
        </reference>
        <reference anchor="RFC8225" target="https://www.rfc-editor.org/info/rfc8225" quoteTitle="true" derivedAnchor="RFC8225">
          <front>
            <title>PASSporT: Personal Assertion Token</title>
            <author fullname="C. Wendt" initials="C." surname="Wendt"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <date month="February" year="2018"/>
            <abstract>
              <t indent="0">This document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8225"/>
          <seriesInfo name="DOI" value="10.17487/RFC8225"/>
        </reference>
        <reference anchor="RFC8226" target="https://www.rfc-editor.org/info/rfc8226" quoteTitle="true" derivedAnchor="RFC8226">
          <front>
            <title>Secure Telephone Identity Credentials: Certificates</title>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="February" year="2018"/>
            <abstract>
              <t indent="0">In order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8226"/>
          <seriesInfo name="DOI" value="10.17487/RFC8226"/>
        </reference>
        <reference anchor="RFC9366" target="https://www.rfc-editor.org/info/rfc9366" quoteTitle="true" derivedAnchor="RFC9366">
          <front>
            <title>Multiple SIP Reason Header Field Values</title>
            <author fullname="R. Sparks" initials="R." surname="Sparks"/>
            <date month="March" year="2023"/>
            <abstract>
              <t indent="0">The SIP Reason header field as defined in RFC 3326 allows only one Reason value per protocol value. Experience with more recently defined protocols shows it is useful to allow multiple values with the same protocol value. This document updates RFC 3326 to allow multiple values for an indicated registered protocol when that protocol defines what the presence of multiple values means.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9366"/>
          <seriesInfo name="DOI" value="10.17487/RFC9366"/>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC7340" target="https://www.rfc-editor.org/info/rfc7340" quoteTitle="true" derivedAnchor="RFC7340">
          <front>
            <title>Secure Telephone Identity Problem Statement and Requirements</title>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="September" year="2014"/>
            <abstract>
              <t indent="0">Over the past decade, Voice over IP (VoIP) systems based on SIP have replaced many traditional telephony deployments. Interworking VoIP systems with the traditional telephone network has reduced the overall level of calling party number and Caller ID assurances by granting attackers new and inexpensive tools to impersonate or obscure calling party numbers when orchestrating bulk commercial calling schemes, hacking voicemail boxes, or even circumventing multi-factor authentication systems trusted by banks. Despite previous attempts to provide a secure assurance of the origin of SIP communications, we still lack effective standards for identifying the calling party in a VoIP session. This document examines the reasons why providing identity for telephone numbers on the Internet has proven so difficult and shows how changes in the last decade may provide us with new strategies for attaching a secure identity to SIP sessions. It also gives high-level requirements for a solution in this space.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7340"/>
          <seriesInfo name="DOI" value="10.17487/RFC7340"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The author would like to thank <contact fullname="David Hancock"/> for help identifying these error scenarios, as well as <contact fullname="Jon Peterson"/>, <contact fullname="Roman Shpount"/>, <contact fullname="Robert Sparks"/>, <contact fullname="Christer Holmberg"/>, and others in the STIR Working Group for their helpful feedback and discussion.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="C." surname="Wendt" fullname="Chris Wendt">
        <organization showOnFrontPage="true">Somos Inc.</organization>
        <address>
          <email>chris-ietf@chriswendt.net</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
