<?xml version="1.0" encoding="US-ASCII"?>
<!--
vim:et:ts=2:sw=2:spell:spelllang=en:tw=80
-->
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY I-D.peterson-sipping-retarget SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.peterson-sipping-retarget.xml">
<!ENTITY RFC8224 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8224.xml">
<!ENTITY RFC8225 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8225.xml">
<!ENTITY RFC8226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8226.xml">
<!ENTITY RFC3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY RFC5280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5055 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5055.xml">
<!ENTITY RFC6960 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6960.xml">
<!ENTITY RFC6961 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6961.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7519 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC9060 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9060.xml">
<!ENTITY RFC3986 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC7340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7340.xml">
<!ENTITY RFC5019 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5019.xml">
<!ENTITY RFC5912 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5912.xml">
<!ENTITY RFC6818 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6818.xml">
<!ENTITY RFC7093 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7093.xml">
<!ENTITY RFC4055 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4055.xml">
<!ENTITY I-D.ietf-stir-certificates-ocsp SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-stir-certificates-ocsp.xml">
<!ENTITY I-D.peterson-stir-certificates-shortlived SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.peterson-stir-certificates-shortlived.xml">
]>
<!--?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?-->
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<!--?rfc strict="yes" ?-->
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="no" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-peterson-stir-ocsp-staple-00"
     ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>

    <!-- The abbreviated title is used in the page header - it is only necessary if the full title is longer than 39 characters -->

  <title abbrev="STIR OCSP Stapling">OCSP Stapling for Secure Telephone Identity</title>

        <author initials="J." surname="Peterson" fullname="Jon Peterson">
            <organization abbrev="Neustar">Neustar (a TransUnion company)</organization>
            <address>
                <email>jon.peterson@team.neustar</email>
            </address>
        </author>

    <date year="2022" />

    <!--    <area>
    ART
    </area>-->

    <keyword>SIP</keyword>

    <keyword>Secure Origin Identification</keyword>

    <keyword>Communication Security</keyword>

    <keyword>Certificates</keyword>

    <keyword>Public Key Infrastructure</keyword>

    <keyword>Real-Time Communication</keyword>

    <abstract>
      <t>In order to facilitate the use of the Online Certificate Status Protocol (OCSP) with Secure Telephone Identity Revisited (STIR), this specification defines a mechanism for 
	  incorporating an OCSP staple into a Personal Assertion Token (PASSporT).</t>
    </abstract>

  </front>

  <middle>

    <section title="Introduction">

    <t>The <xref target="RFC7340">STIR problem statement</xref> discusses many attacks on the telephone network that are enabled by impersonation, including various forms of robocalling, voicemail hacking, and swatting. One of the most important components of a system to prevent impersonation is the implementation of credentials which identify the parties who control telephone numbers. The <xref target="RFC8226">STIR certificates</xref> specification describes a credential system based on <xref target="X.509"/> version 3 certificates in accordance with <xref target="RFC5280"/> for that purpose. Those credentials can then be used by STIR authentication services <xref target="RFC8224"/> to sign PASSporT objects <xref target="RFC8225"/> carried in a SIP <xref target="RFC3261"/> request.</t>
	<t><xref target="RFC8226"/> specifies an extension to X.509 that defines a Telephony Number (TN) Authorization List that may be included by certificate authorities in certificates. This extension provides additional information that relying parties can use when validating transactions with the certificate. When a SIP request, for example, arrives at a terminating administrative domain, the calling number attested by the SIP request can be compared to the TN Authorization List of the certificate that signed the request to determine if the caller is authorized to use that calling number in SIP.
		</t><t>
	<xref target="I-D.ietf-stir-certificates-ocsp"/> defines a means to use OCSP to establish that, at the time of STIR verification, a particular telephone number (the calling number) is within the scope of authority of a certificate. This is especially useful with STIR delegate certificates <xref target="RFC9060"/>, which typically claim authority over telephone number ranges rather than Service Provider Codes (SPCs) in their TN Authorization List. However, this requires an additional round-trip request and response from the verification service to the OCSP responder, and the telephony applications are delay sensitive. Thus, this document specifies a means to incorporate an OCSP staple into the PASSporT object.
	 </t>
    </section>
	
    <section anchor="term" title="Terminology">
	
<t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

    </section>

        <section anchor="overview" title="Approaches to OCSP Stapling">
		<t>
		At a high level, there are a number of potential solutions that could mitigate the round-trip time incurred on the verification service side to perform OCSP validation.
		</t><t>
		A verification service validating a PASSporT acquires the certificate referenced by its "x5u" header element, if that certificate is not cached. Typically, that acquisition happens by derefencing the URI in the value of the "x5u" element. One could design an system where OCSP validation is piggybacked onto that network fetch. This solution is however not optimal for cases where signing certificates are long-lived and cached, so that queries will otherwise be very infrequent. Requiring certificate fetches every time a new telephone number is seen at the verification service would likely incur roughly the same number of round trips as the <xref target="I-D.peterson-stir-certificates-shortlived"/> mechanism.
		</t><t>
		There are also variants of the "x5u" approach that sidestep OCSP entirely, by decorating the "x5u" URI with query parameters that incorporate the calling telephone number. As the authentication service necessarily knows the telephone number from the "orig" field, and controls the contents of "x5u", it has the means to decorate the URI appropriately during PASSporT creation. The certificate repository (i.e. HTTP service) receiving a certificate fetch with a decorated URI could could then verify that the calling number is currently in the scope of the requested certificate - if it is not, the service could then fail to return a certificate, preventing the verification service from validating. However, like the approach above, this would have implications for certificate fetch frequency similar to short-lived certs, as the decorated URIs would be governed by HTTP caching mechanics.
		</t><t>
		Thus, the solution proposed here is that the authentication service instead inserts a new PASSporT payload element, "stpl", which has as its value an OCSP staple compliant with the STIR extension defined in <xref target="I-D.ietf-stir-certificates-ocsp"/>. Such staples can either be pre-generated (<xref target="RFC6960"/> Section 2.5) and published regularly to the authentication service, or the authentication service can query for a staple on a per-call basis. Note that OCSP for STIR does furnish a response concerning only a single telephone number, and thus if a certificate can sign for a large number range, one pre-generated staple would need to be furnished to the authentication service for each telephone number that could potentially originate a call. Generating OCSP staples on the fly may however cause a round-trip time delay of its own, which depending on how the authentication service and the certificate authority are connected, could effectively incur the same delay as an OCSP dip from the verification service.
		</t><t>
		One alternative design would be to carry an OCSP staple at the SIP layer, in a body or header. But the because PASSporT can be used in non-SIP environments, and this OCSP extension is specific to certificates that use the TNAuthList extension, embedding the staple in the PASSporT is a superior choice. While encoding and embedding an OCSP response will increase the size of the PASSporT, that overall increase in SIP message size will ideally be the same as if the response had been placed in a separate header.
		</t><t>
		Finally, it could be argued that the round-trip delay incurred at the verification service is not actually problematic, as there is a fungible delay on the terminating side during which ringing can be played to the caller without commencing alerting on the end-user called device. But <xref target="I-D.ietf-stir-certificates-ocsp"/> also describes the potential privacy implications of revealing to the OCSP responder the verification service that has received a call for a particular calling number. On balance, stapling at the authentication service, especially pre-generated stapling, seems to offer the best all-around solution.
		</t>
        </section>

    <section anchor="solution" title="OCSP Staple PASSporT Element">
		<t>
		TBD.
		</t>
	</section>
    
    <section anchor="IANA" title="IANA Considerations">
		      <t>This specification requests that the IANA add one new claim to the JSON Web Token Claims registry as defined in <xref target="RFC7519"/>.</t>
	  	  <t>
	 Claim Name: "stpl"
	  </t><t>
	 Claim Description: OCSP Staple
	</t><t>
	 Change Controller: IESG
	 </t><t>
	 Specification Document(s): [RFCThis]
		</t>
 
    </section>
	 <section anchor="priv" title="Privacy Considerations">
      <t>The use of OCSP stapling should largely mitigate the privacy risks noted in <xref target="I-D.ietf-stir-certificates-ocsp"/>.
	  </t>
    </section>
	
    <section anchor="Security" title="Security Considerations">
      <t>This document is  entirely about security. For further information on certificate security and practices, see <xref target="RFC5280"/>, in particular its Security Considerations.  For OCSP-related security considerations see <xref target="RFC6960"/> and <xref target="RFC5019"/>.</t>

    </section>
	
	    <section anchor="Acknowledgments" title="Acknowledgments">
      <t>We thank the STIR working group for its input into this document.</t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>


      <references title="Normative References">
&RFC2119;
&RFC8174;
&RFC3261;
&RFC5280;
&RFC5912;
&RFC6960;
&RFC5019;
&RFC7093;
&RFC4055;
&RFC3986;
&RFC6818;
&RFC8224;
&RFC8225;
&RFC8226;
&RFC9060;
&RFC7519;
&I-D.ietf-stir-certificates-ocsp;
&I-D.peterson-stir-certificates-shortlived;
	    <reference anchor='X.509'>
        <front>
            <title>Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks</title>
			           <author>
                <organization>
                ITU-T Recommendation X.509 (10/2012) | ISO/IEC 9594-8 
                </organization>
            </author>
            <date year='2012' />
        </front>
    </reference>


    <reference anchor='X.680'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Specification of basic notation</title>
			           <author>
                <organization>
                ITU-T Recommendation X.680 (08/2015) | ISO/IEC 8824-1
                </organization>
            </author>
            <date year='' />
        </front>
    </reference>
	
	<reference anchor='X.681'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Information Object Specification</title>
			           <author>
                <organization>
                ITU-T Recommendation X.681 (08/2015) | ISO/IEC 8824-2
                </organization>
            </author>

            <date year='' />
        </front>
    </reference>
	
	 <reference anchor='X.682'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Constraint Specification</title>
			           <author>
                <organization>
                ITU-T Recommendation X.682 (08/2015) | ISO/IEC 8824-2
                </organization>
            </author>
            <date year='' />
        </front>
    </reference>
	
	<reference anchor='X.683'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Parameterization of ASN.1 Specifications</title>
			           <author>
                <organization>
                ITU-T Recommendation X.683 (08/2015) | ISO/IEC 8824-3
                </organization>
            </author>
            <date year='' />
        </front>
    </reference>

	
		  </references>
    <references title="Informative References">
	&RFC5055;
	&RFC6961;
	&RFC7340;
	</references>


      
  </back>
</rfc>
