<?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 I-D.ietf-stir-rfc4474bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-stir-rfc4474bis.xml">
<!ENTITY I-D.ietf-stir-passport SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-stir-passport.xml">
<!ENTITY RFC3263 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3263.xml">
<!ENTITY RFC3447 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3447.xml">
<!ENTITY RFC4754 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4754.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 RFC6919 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6919.xml">
<!ENTITY RFC5958 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5958.xml">
<!ENTITY RFC2046 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2046.xml">
<!ENTITY RFC2392 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2392.xml">
<!ENTITY RFC7030 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7030.xml">
<!ENTITY RFC7340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7340.xml">
<!ENTITY RFC7375 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7375.xml">
<!ENTITY RFC7519 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7519.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">

]>
<!--?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-ietf-stir-certificates-05.txt"
     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 Certs">Secure Telephone Identity Credentials: Certificates</title>

        <author initials="J." surname="Peterson" fullname="Jon Peterson">
            <organization abbrev="Neustar">Neustar, Inc.</organization>
            <address>
                <email>jon.peterson@neustar.biz</email>
            </address>
        </author>

        <author initials="S." surname="Turner" fullname="Sean Turner">
            <organization abbrev="sn3rd">sn3rd</organization>
            <address>
                <email>sean@sn3rd.com</email>
            </address>
        </author>

    <date year="2016" />

    <!--    <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 prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically proves 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>

  <middle>

    <section title="Introduction">

    <t>The <xref target="RFC7340">STIR problem statement</xref> identifies the primary enabler of robocalling, vishing, swatting and related attacks as the capability to impersonate a calling party number.  The starkest examples of these attacks are cases where automated callees on the PSTN rely on the calling number as a security measure, for example to access a voicemail system.  Robocallers use impersonation as a means of obscuring identity; while robocallers can, in the ordinary PSTN, block (that is, withhold) their caller identity, callees are less likely to pick up calls from blocked identities, and therefore appearing to calling from some number, any number, is preferable.  Robocallers however prefer not to call from a number that can trace back to the robocaller, and therefore they impersonate numbers that are not assigned to them.</t>

    <t>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.  With these credentials, parties can prove that they are in fact authorized to use telephony numbers, and thus distinguish themselves from impersonators unable to present such credentials.  For that reason the <xref target="RFC7375">STIR threat model</xref> stipulates, "The design of the credential system envisioned as a solution to these threats must, for example, limit the scope of the credentials issued to carriers or national authorities to those numbers that fall under their purview."  This document describes credential systems for telephone numbers based on X.509 version 3 certificates in accordance with <xref target="RFC5280"/>. While telephone numbers have long been a part of the X.509 standard, this document provides ways to determine authority more aligned with telephone network requirements, including extending X.509 with a Telephone Number Authorization List which binds certificates to authority for particular telephone numbers, or potentially telephone number blocks or ranges.</t>

    <t> In the STIR in-band architecture specified in <xref target="I-D.ietf-stir-rfc4474bis"/>, two basic types of entities need access to these credentials: authentication services, and verification services (or verifiers). An authentication service must be operated by an entity enrolled with the certification authority (see <xref target="enroll"/>), whereas a verifier need only trust the root certificate of the authority, and have a means to access and validate the public keys associated with these certificates. Although the guidance in this document is written with the STIR in-band architecture in mind, the credential system described in this document could be useful for other protocols that want to make use of certificates to prove authority over telephone numbers on the Internet.</t>

    <t>This document specifies only the credential syntax and semantics necessary to support this architecture. It does not assume any particular certification authority or deployment environment. We anticipate that some deployment experience will be necessary to determine optimal operational models.</t>
	
    </section>
	
    <section anchor="sec-2" title="Terminology">

        <t>In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in <xref target="RFC2119">RFC 2119</xref> and <xref target="RFC6919">RFC 6919</xref>.</t>

    </section>
	
    <section anchor="approaches" title="Authority for Telephone Numbers in Certificates">

    <t>At a high level, this specification details two non-exclusive approaches that can be employed to determine authority over telephone numbers with certificates.</t>

    <t>The first approach is to leverage the subject of the certificate to ascertain that the holder of the certificate is authorized to claim authority over a telephone number. The subject might be represented as a domain name in the SubjectAltName, such as an "example.net" where that domain is known to relying parties as a carrier, or represented with other identifiers related to the operation of the telephone network including Service Provider Identifiers (SPIDs) could serve as a subject as well. A relying party could then employ an external data set or service that determines whether or not a specific telephone number is under the authority of the carrier identified as the subject of the certificate, and use that to ascertain whether or not the carrier should have authority over a telephone number. Potentially, a certificate extension to convey the URI of such an information service trusted by the issuer of the certificate could be developed (though this specification does not propose one). Alternatively, some relying parties could form bilateral or multilateral trust relationships with peer carriers, trusting one another's assertions just as telephone carriers in the SS7 network today rely on transitive trust when displaying the calling party telephone number received through SS7 signaling.</t>

    <t>The second approach is to extend the syntax of certificates to include a new attribute, defined here as TN Authorization List, which contains a list of telephone numbers defining the scope of authority of the certificate. Relying parties, if they trust the issuer of the certificate as a source of authoritative information on telephone numbers, could therefore use the TN Authorization List instead of the subject of the certificate to make a decision about whether or not the signer has authority over a particular telephone number. The TN Authorization List could be provided in one of two ways: as a literal value in the certificate, or as a network service that allows relying parties to query in real time to determine that a telephone number is in the scope of a certificate.  Using the TN Authorization list rather than the certificate subject makes sense when, for example, for privacy reasons, the certificate owner would prefer not to be identified, or in cases where the holder of the certificate does not participate in the sort of traditional carrier infrastructure taht the first approach assumes.</t>

    <t> The first approach requires little change to existing PKI certificates; for the second approach, we must define an appropriate enrollment and authorization process. For the purposes of STIR, the over-the-wire format specified in <xref target="I-D.ietf-stir-rfc4474bis"/> accommodates either of these approaches: the methods for canonicalizing, signing, for identifying and accessing the certificate and so on remain the same; it is only the verifier behavior and authorization decision that will change depending on the approach to telephone number authority taken by the certificate. For that reason, the two approaches are not mutually exclusive, and in fact a certificate issued to a traditional telephone network service provider could contain a TN Authorization List or not, depending on the certification authority issuing the credential.  Regardless of which approach is used, certificates that assert authority over telephone numbers are subject to the ordinary operational procedures that govern certificate use per <xref target="RFC5280"/>.  This means that verification services must be mindful of the need to ensure that they trust the root certificate authority that issued the certificate, and that they have some means to determine the freshness of the certificate (see <xref target="revoke"/>).</t>

    </section>
	
    <section anchor="usage" title="Certificate Usage">

    <t><xref target="I-D.ietf-stir-rfc4474bis"/> requires that all credential systems used for signing the Identity header in SIP detail the following:<list style="numbers">
				<t>The URI schemes permitted in the SIP Identity header "info" parameter, as well as any special procedures required to dereference the URIs. While normative text is given below in <xref target="verify"/>, this mechanism permits the HTTP, CID and SIP URI schemes to appear in the "info" parameter.</t>
				<t>Procedures required to extract keying material from the resources designated by the URI. Implementations perform no special procedures beyond dereferencing the "info" URI. See <xref target="verify"/>.</t>
				<t>Procedures used by the verification service to determine the scope of the credential. This specification effectively proposes two methods, as outlined in <xref target="approaches"/>: one where the subject (or more properly subjectAltName) of the certificate indicates the scope of authority through a domain name, and relying parties either trust the subject entirely or have some direct means of determining whether or not a number falls under a subject's authority; and another where an extension to the certificate as described in <xref target="scope"/> identifies the scope of the certificate.</t>
				<t>The cryptographic algorithms required to validate the credentials. For this specification, that means the signature algorithms used to sign certificates. This specification REQUIRES that implementations support both ECDSA with the P-256 curve (see <xref target="RFC4754"/>) and RSA PKCS#1 v1.5 (see <xref target="RFC3447"/> Section 8.2) for certificate signatures. Implementers are advised that RS256 is mandated only as a transitional mechanism, due to its widespread use in existing PKI, but we anticipate that this mechanism will eventually be deprecated.</t>
				<t>Finally, note that all certificates compliant with this specification MUST provide cryptographic keying material sufficient to generate the ECDSA P-256 signatures necessary to support the ES256 hashed signatures required by <xref target="I-D.ietf-stir-passport">PASSporT</xref>, which in turn follows <xref target="RFC7519">JSON Web Token (JWT)</xref>.</t></list></t>

    </section>
	
        <section anchor="enroll" title="Enrollment and Authorization using the TN Authorization List">

    <t>This document assumes a threefold model for certificate enrollment when using the TN Authorization List extension.</t>

    <t>The first enrollment model is one where the certification authority acts in concert with national numbering authorities to issue credentials to those parties to whom numbers are assigned. In the United States, for example, telephone number blocks are assigned to Local Exchange Carriers (LECs) by the North American Numbering Plan Administrator (NANPA), who is in turn directed by the national regulator. LECs may also receive numbers in smaller allocations, through number pooling, or via an individual assignment through number portability. LECs assign numbers to customers, who may be private individuals or organizations - and organizations take responsibility for assigning numbers within their own enterprise. This model requires top-down adoption of the model from regulators through to carriers.</t>

    <t>The second enrollment model is a bottom-up approach where a certification authority requires that an entity prove control by means of some sort of test, which, as with certification authorities for web PKI, might either be automated or a manual administrative process.  As an example of an automated process, an authority might send a text message to a telephone number containing a URL (which might be dereferenced by the recipient) as a means of verifying that a user has control of terminal corresponding to that number.  Checks of this  form are frequently used in commercial systems today to validate telephone numbers provided by users. This is comparable to existing enrollment systems used by some certificate authorities for issuing S/MIME credentials for email by verifying that the party applying for a credential receives mail at the email address in question.</t>

    <t>The third enrollment model is delegation: that is, the holder of a certificate (assigned by either of the two methods above) might delegate some or all of their authority to another party. In some cases, multiple levels of delegation could occur: a LEC, for example, might delegate authority to a customer organization for a block of 100 numbers used by an IP PBX, and the organization might in turn delegate authority for a particular number to an individual employee.  This is analogous to delegation of organizational identities in traditional hierarchical Public Key Infrastructures (PKIs) who use the name constraints extension <xref target="RFC5280"/>; the root CA delegates names in sales to the sales department CA, names in development to the development CA, etc.  As lengthy certificate delegation chains are brittle, however, and can cause delays in the verification process, this document considers optimizations to reduce the complexity of verification.</t>
	
    <t>[TBD] Future versions of this specification may address adding a level of assurance indication to certificates to differentiate those enrolled from proof-of-possession versus delegation.</t>

    <t>[TBD] Future versions of this specification may also discuss methods of partial delegation, where certificate holders delegate only part of their authority. For example, individual assignees may want to delegate to a service authority for text messages associated with their telephone number, but not for other functions.</t>
	
        <section anchor="structure" title="Certificate Extension Scope and Structure">

        <t>This specification places no limits on the number of telephone numbers that can be associated with any given certificate. Some service providers
		may be assigned millions of numbers, and may wish to have a single certificate that is capable of signing for any one of those numbers. Others
		may wish to compartmentalize authority over subsets of the numbers they control.</t>

        <t>Moreover, service providers may wish to have multiple certificates with the same scope of authority. For example, a service provider with
		several regional gateway systems may want each system to be capable of signing for each of their numbers, but not want to have each system
		share the same private key.</t>

        <t>The set of telephone numbers for which a particular certificate is valid is expressed in the certificate through a certificate extension; the certificate's extensibility mechanism is defined in <xref target="RFC5280"/> but the TN Authorization List extension is specified in this document.</t>

        <t>The subjects of certificates containing the TN Authorization List extension are typically the administrative entities to whom numbers are assigned or delegated. For example, a LEC might hold a certificate for a range of telephone numbers. In some cases, the organization or individual issued such a certificate may not want to associate themselves with a certificate; for example, a private individual with a certificate for a single telephone number might not want to distribute that certificate publicly if every verifier immediately knew their name.  The certification authorities issuing certificates with the TN Authorization List extensions may, in accordance with their policies, obscure the identity of the subject, though mechanisms for doing so are outside the scope of this document.</t>

        </section>
			
    </section>
	
    <section anchor="provision" title="Provisioning Private Keying Material">
	
    <t>In order for authentication services to sign calls via the procedures described in <xref target="I-D.ietf-stir-rfc4474bis"/>, they must hold a private key corresponding to a certificate with authority over the calling number. This specification does not require that any particular entity in a SIP deployment architecture sign requests, only that it be an entity with an appropriate private key; the authentication service role may be instantiated by any entity in a SIP network. For a certificate granting authority only over a particular number which has been issued to an end user, for example, an end user device might hold the private key and generate the signature. In the case of a service provider with authority over large blocks of numbers, an intermediary might hold the private key and sign calls.</t>

    <t>The specification recommends distribution of private keys through PKCS#8 objects signed by a trusted entity, for example through the CMS package specified in <xref target="RFC5958"/>.</t>
	
    </section>

    <section anchor="verify" title="Acquiring Credentials to Verify Signatures">

	<t>This specification documents multiple ways that a verifier can gain access to the credentials needed to verify a request. As the validity of certificates does not depend on the method of their acquisition, there is no need to standardize any single mechanism for this purpose. All entities that comply with <xref target="I-D.ietf-stir-rfc4474bis"/> necessarily support SIP, and consequently SIP itself can serve as a way to acquire certificates. <xref target="I-D.ietf-stir-rfc4474bis"/> provides an "info" parameter of the Identity header which contains a URI where the credential used to generate the Identity header, and requires documents which define credential systems to list the URI schemes that may be present in the "info" parameter. For implementations compliant with this specification, three URI schemes are REQUIRED: the CID URI, the SIP URI, and the HTTP URI.	</t>

    <t>The simplest way for a verifier to acquire the certificate needed to verify a signature is for the certificate be conveyed in a SIP request along with the signature itself. In SIP, for example, a certificate could be carried in a <xref target="RFC2046">multipart MIME body</xref>, and the URI in the Identity header "info" parameter could specify that body with a <xref target="RFC2392">CID URI</xref>. However, in many environments this is not feasible due to message size restrictions or lack of necessary support for multipart MIME.</t>

    <t>More commonly, the Identity header "info" parameter in a SIP request may contain a URI that the verifier dereferences with a network call. Implementations of this specification are required to support the use of SIP for this function (via the SUBSCRIBE/NOTIFY mechanism), as well as HTTP, via the Enrollment over Secure Transport mechanisms described in <xref target="RFC7030">RFC 7030</xref>.</t>

    <t>Note well that as an optimization, a verifier may have access to a service, a cache or other local store that grants access to certificates for a particular telephone number.  However, there may be multiple valid certificates that can sign a call setup request for a telephone number, and as a consequence, there needs to be some discriminator that the signer uses to identify their credentials. The Identity header "info" parameter itself can serve as such a discriminator, provided implementations use that parameter as a key when accessing certificates from caches or other sources.</t>

    </section>
	
    <section anchor="scope" title="Verifying Certificate Scope with TN Authorization List">

    <t>The subjects of certificates containing the TN Authorization List extension are the administrative entities to whom numbers are assigned or delegated. When a verifier is validating a caller's identity, local policy always determines the circumstances under which any particular subject may be trusted, but the purpose of the TN Authorization List extension particular is to allow a verifier to  ascertain when the certification authority has designed that the subject has authority over a particular telephone number or number range.</t>

    <t>The Telephony Number (TN) Authorization List certificate extension is identified by the following object identifier:</t>

    <t><figure>        <artwork><![CDATA[
  id-ce-TNAuthList OBJECT IDENTIFIER ::= { id-ce TBD }
]]></artwork></figure></t>

    <t>The TN Authorization List certificate extension has the following syntax:

      <figure><artwork><![CDATA[

  TNAuthorizationList ::= SEQUENCE SIZE (1..MAX) OF TNAuthorization

  TNAuthorization ::= SEQUENCE SIZE (1..MAX) OF TNEntry

  TNEntry ::= CHOICE {
    spid  [0] ServiceProviderIdentifierList,
    range [1] TelephoneNumberRange,
    one       E164Number }

  ServiceProviderIdentifierList ::= SEQUENCE SIZE (1..3) OF
                                      OCTET STRING

  -- When all three are present: SPID, Alt SPID, and Last Alt SPID

  TelephoneNumberRange ::= SEQUENCE {
    start E164Number,
    count INTEGER }

  E164Number ::= IA5String (SIZE (1..15)) (FROM ("0123456789"))
]]></artwork></figure></t>

    <t>The TN Authorization List certificate extension indicates the authorized phone numbers for the call setup signer.  It indicates one or more blocks of telephone number entries that have been authorized for use by the call setup signer.  There are three ways to identify the block:<list style="numbers">
        <t>A Service Provider Identifier (SPID) can be used to indirectly name all of the telephone numbers associated with that service provider,</t>
        <t>Telephone numbers can be listed in a range, and</t>
        <t>A single telephone number can be listed.</t></list></t>

    <t>Note that because large-scale service providers may want to associate many numbers, possibly millions of numbers, with a particular certificate, optimizations are required for those cases to prevent certificate size from becoming unmanageable. In these cases, the TN Authorization List may be given by reference rather than by value, through the presence of a separate certificate extension that permits verifiers to either securely download the list of numbers associated with a certificate, or to verify that a single number is under the authority of this certificate. This optimization will be detailed in future version of this specification.</t>

    </section>
	
    <section anchor="revoke" title="Certificate Freshness and Revocation">

    <t>Regardless of which of the approaches in <xref target="approaches"/> is followed for using certificates, some sort of certificate verification mechanism is required. However, the traditional problem of certificate freshness gains a new wrinkle when using the TN Authorization List extension, because verifiers must establish not only that a certificate remains valid, but also that the certificate's scope contains the telephone number that the verifier is validating.  Dynamic changes to number assignments can occur due to number portability, for example. So even if a verifier has a valid cached certificate for a telephone number (or a range containing the number), the verifier must determine that the entity that signed is still a proper authority for that number.</t>

    <t>To verify the status of the certificate, the verifier needs to acquire the certificate if necessary (via the methods described in <xref target="verify"/>), and then would need to either:</t><t><list style="format (%c)">
		<t>Rely on short-lived certificates and not check the certificate's status, or</t>
		<t>Rely on status information from the authority</t></list></t>

    <t>The tradeoff between short lived certificates and using status information is the former's burden is on the front end (i.e., enrollment) and the latter's burden is on the back end (i.e., verification).  Both impact call setup time, but it is assumed that performing enrollment for each call is more of an impact that using status information.  This document therefore recommends relying on status information.</t>

        <section anchor="realtime" title="Choosing a Verification Method">

        <t>There are three common certificate verification mechanisms employed by CAs:<list style="numbers">
            <t>Certificate Revocation Lists (CRLs) <xref target="RFC5280"/></t>
            <t>Online Certificate Status Protocol (OCSP) <xref target="RFC6960"/>, and</t>
            <t>Server-based Certificate Validation Protocol (SCVP) <xref target="RFC5055"/>.</t></list></t>

        <t>When relying on status information, the verifier needs to obtain the status information - but before that can happen, the verifier needs to know where to locate it.  Placing the location of the status information in the certificate makes the certificate larger, but it eases the client workload.  The CRL Distribution Point certificate extension includes the location of the CRL and the Authority Information Access certificate extension includes the location of OCSP and/or SCVP servers; both of these extensions are defined in <xref target="RFC5280"/>.  In all cases, the status information location is provided in the form of an URI.</t>

        <t>CRLs are an obviously attractive solution because they are supported by every CA.  CRLs have a reputation of being quite large (10s of MBytes), because CAs maintain and issue one monolithic CRL with all of their revoked certificates, but CRLs do support a variety of mechanisms to scope the size of the CRLs based on revocation reasons (e.g., key compromise vs CA compromise), user certificates only, and CA certificates only as well as just operationally deciding to keep the CRLs small. However, scoping the CRL introduces other issues (i.e., does the RP have all of the CRL partitions).</t>

        <t>CAs in the STIR architecture will likely all create CRLs for audit purposes, but it NOT RECOMMENDED that they be relying upon for status information.  Instead, one of the two "online" options is preferred.  Between the two, OCSP is much more widely deployed and this document therefore recommends the use of OCSP in high-volume environments for validating the freshness of certificates, based on <xref target="RFC6960"/>, incorporating some (but not all) of the optimizations of <xref target="RFC5019"/>.</t>

        </section>

        <section anchor="OCSP" title="Using OCSP with TN Auth List">
	
        <t>Certificates compliant with this specification therefore SHOULD include a URL pointing to an OCSP service in the Authority Information Access (AIA) certificate extension, via the "id-ad-ocsp" accessMethod specified in <xref target="RFC5280"/>.  Baseline OCSP however supports only three possible response values: good, revoked, or unknown.	 With some extension, OCSP would not indicate whether the certificate is authorized for a particular telephone number that the verifier is validating.</t>

        <t>[TBD] What would happen in the unknown case?	Can we profile OCSP usage so that unknown is never returned for our extension?

        </t><t>At a high level, there are two ways that a client might pose this authorization question:</t><t><list>

            <t>For this certificate, is the following number currently in its scope of validity?</t>

            <t>What are all the telephone numbers associated with this certificate, or this certificate subject?</t></list></t>


        <t>Only the former lends itself to piggybacking on the OCSP status mechanism; since the verifier is already asking an authority about the certificate's status, why not reuse that mechanism, instead of creating a new service that requires additional round trips?  Like most PKIX-developed protocols, OCSP is extensible; OCSP supports request extensions (including sending multiple requests at once) and per-request extensions. It seems unlikely that the verifier will be requesting authorization checks on multiple telephone numbers in one request, so a per-request extension is what is needed.</t>

        <t>[TBD] HVE OCSP requires SHA-1 be used as the hash algorithm, we're6960 obviously going to change this to be SHA-256.</t>

        <t>The requirement to consult OCSP in real time results in a network round-trip time of day, which is something to consider because it will add to the call setup time.  OCSP server implementations commonly pre-generate responses, and to speed up HTTPS connections, servers often provide OCSP responses for each certificate in their hierarchy.  If possible, both of these OCSP concepts should be adopted for use with STIR.</t>

            <section anchor="extension" title="OCSP Extension Specification">
	
            <t>The extension mechanism for OCSP follows X.509 v3 certificate extensions, and thus requires an OID, a criticality flag, and ASN.1 syntax as defined by the OID. The criticality specified here is optional: per <xref target="RFC6960"/> Section 4.4, support for all OCSP extensions is optional.  If the OCSP server does not understand the requested extension, it will still provide the baseline validation of the certificate itself. Moreover, in practical STIR deployments, the issuer of the certificate will set the accessLocation for the OCSP AIA extension to point to an OCSP service that supports this extension, so the risk of interoperability failure due to lack of support for this extension is minimal.</t>

            <t>The OCSP TNQuery extension is included as one of the requestExtensions in requests. It may also appear in the responseExtensions.  When an OCSP server includes a number in the responseExtensions, this informs the client that the certificate is still valid for the number that appears in the TNQuery extension field. If the TNQuery is absent from a response to a query containing a TNQuery in its requestExtensions, then the server is not able to validate that the number is still in the scope of authority of the certificate.</t><t>

                <figure><artwork><![CDATA[

  id-pkix-ocsp-stir-tn  OBJECT IDENTIFIER ::= { id-pkix-ocsp TBD }

  TNQuery ::= E164Number

                ]]></artwork></figure></t>

            <t>Note that HVE OCSP profile <xref target="RFC5019"/> prohibits the use of per-request extensions.  As it is anticipated that STIR will use OCSP in a high-volume environment, many of the optimizations recommended by HVE are desirable for the STIR environment. This document therefore uses these extensions in a baseline OCSP environment with some HVE optimizations. [More TBD]</t>

            <t>Ideally, once a certificate has been acquired by a verifier, some sort of asynchronous mechanism could notify and update the verifier if the scope of the certificate changes so that verifiers could implement a cache. While not all possible categories of verifiers could implement such behavior, some sort of event-driven notification of certificate status is another potential subject of future work. One potential direction is that a future SIP SUBSCRIBE/NOTIFY-based accessMethod for AIA might be defined (which would also be applicable to the method described in the following section) by some future specification.</t>

            <t>Strategies for stapling OCSP <xref target="RFC6961"/> have become common in some web PKI environments as an optimization which allows web servers to send up-to-date certificate status information acquired from OCSP to clients as TLS is negotiated.  A similar mechanism could be implemented for SIP requests, in which the authentication service adds status information for its certificate to the SIP request, which would save the verifier the trouble of performing the OCSP dip itself. Especially for high-volume authentication and verification services, this could result in significant performance improvements. This is left as an optimization for future work.</t>

            </section>

        </section>

        <section anchor="byref" title="Acquiring TN Lists By Reference">

        <t>Acquiring a list of the telephone numbers associated with a certificate or its subject lends itself to an application-layer query/response interaction outside of OCSP, one which could be initiated through a separate URI included in the certificate.  The AIA extension (see <xref target="RFC5280"/>) supports such a mechanism: it designates an OID to identify the accessMethod and an accessLocation, which would most likely be a URI.  A verifier would then follow the URI to ascertain whether the list of TNs authorized for use by the caller.</t>

        <t>HTTPS is the most obvious candidate for a protocol to be used for fetching the list of telephone number associated with a particular certificate. This document defines a new AIA accessMethod, called "id-ad-stir-tn", which uses the following AIA OID:</t>

        <t><figure><artwork><![CDATA[
  id-ad-stir-tn  OBJECT IDENTIFIER ::= { id-ad TBD }
        ]]></artwork></figure></t>

        <t>When the "id-ad-stir-tn" accessMethod is used, the accessLocation MUST be an HTTPS URI. The document returned by dereferencing that URI will contain the complete TN Authorization List (see <xref target="scope"/>) for the certificate.</t>

        <t>Delivering the entire list of telephone numbers associated with a particular certificate will divulge to STIR verifiers information about telephone numbers other than the one associated with the particular call that the verifier is checking. In some environments, where STIR verifiers handle a high volume of calls, maintaining an up-to-date and complete cache for the numbers associated with crucial certificate holders could give an important boost to performance.</t>

        </section>

    </section>
    <section anchor="Acknowledgments" title="Acknowledgments">
      <t>Russ Housley, Brian Rosen, Cullen Jennings and Eric Rescorla provided key input to the discussions leading to this document.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">

    <t>This document makes use of object identifiers for the TN Certificate Extension defined in <xref target="scope"/>, TN-HVE OCSP extension in <xref target="extension"/>, the TN by reference AIA access descriptor defined in <xref target="byref"/>, and the ASN.1 module identifier defined in Appendix A.  It therefore requests that the IANA make the following assignments:</t><t><list style="symbols">
        <t>TN Certificate Extension in the SMI Security for PKIX Certificate Extension registry: http://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.1</t>

        <t>TN-HVE OCSP extension in the SMI Security for PKIX Online Certificate Status Protocol (OCSP) registry: http://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.48.1</t>

        <t>TNS by reference access descriptor in the SMI Security for PKIX Access Descriptor registry: http://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.48</t>

        <t>The TN ASN.1 module in SMI Security for PKIX Module Identifier registry: http://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.0</t></list></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.</t>
    </section>

  </middle>

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

  <back>
  


    <references title="References">
&RFC2119;
&RFC6919;
&RFC3447;
&RFC4754;
&RFC5280;
&RFC5055;
&RFC5958;
&RFC2046;
&RFC2392;
&RFC5912;
&RFC6960;
&RFC6961;
&RFC7030;
&RFC7340;
&RFC7375;
&RFC7519;
&RFC5019;

&I-D.ietf-stir-passport;
&I-D.ietf-stir-rfc4474bis; 

    <reference anchor='X.680'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One.</title>
			           <author>
                <organization abbrev='ITU-T'>
                USC/Information Sciences Institute
                </organization>
            </author>

            <date year='2002' />
        </front>
        <seriesInfo name='ITU-T' value='X.680' />
        <seriesInfo name='ISO/IEC' value='8824-1:2002' />
    </reference>
	
	<reference anchor='X.681'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Information Object Specification</title>
			           <author>
                <organization abbrev='ITU-T'>
                USC/Information Sciences Institute
                </organization>
            </author>

            <date year='2002' />
        </front>
        <seriesInfo name='ITU-T' value='X.681' />
        <seriesInfo name='ISO/IEC' value='8824-2:2002' />
    </reference>
	
	 <reference anchor='X.682'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Constraint Specification</title>
			           <author>
                <organization abbrev='ITU-T'>
                USC/Information Sciences Institute
                </organization>
            </author>

            <date year='2002' />
        </front>
        <seriesInfo name='ITU-T' value='X.682' />
        <seriesInfo name='ISO/IEC' value='8824-3:2002' />
    </reference>
	
	<reference anchor='X.683'>
        <front>
            <title>Information Technology - Abstract Syntax Notation One: Parameterization of ASN.1 Specifications</title>
			           <author>
                <organization abbrev='ITU-T'>
                USC/Information Sciences Institute
                </organization>
            </author>

            <date year='2002' />
        </front>
        <seriesInfo name='ITU-T' value='X.683' />
        <seriesInfo name='ISO/IEC' value='8824-4:2002' />
    </reference>

    </references>

	  <section anchor="app-a" title="ASN.1 Module">
  <t>
     This appendix provides the normative ASN.1 <xref target="X.680"/> definitions for
   the structures described in this specification using ASN.1, as
   defined in <xref target="X.680"/> through <xref target="X.683"/>.
</t><t>
   This ASN.1 module imports ASN.1 from <xref target="RFC5912"/>.
</t><t>
    <figure><artwork><![CDATA[

  TN-Module {
     iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-tn-module(TBD) }
     
   DEFINITIONS EXPLICIT TAGS ::= BEGIN

   IMPORTS
   id-ad, id-ad-ocsp                               -- From [RFC5912]
   FROM PKIX1Explicit-2009 {
     iso(1) identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) }
     
  id-ce                                            -- From [RFC5912]
  FROM PKIX1Implicit-2009 {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59) }
    
  EXTENSION                                        -- From [RFC5912]
  FROM PKIX-CommonTypes-2009 {
    iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-pkixCommon-02(57) }
    
  ;

  -- TN Entry Certificate Extension
  
  ext-tnAuthList  EXTENSION  ::= {
    SYNTAX TNAuthorizationList IDENTIFIED BY id-ce-TNAuthList }

  TNAuthorizationList ::= SEQUENCE SIZE (1..MAX) OF TNAuthorization

  TNAuthorization ::= SEQUENCE SIZE (1..MAX) OF TNEntry

  TNEntry ::= CHOICE {
    spid   [0] ServiceProviderIdentifierList,
    range  [1] TelephoneNumberRange,
    one        E164Number }

  ServiceProviderIdentifierList ::= SEQUENCE SIZE (1..3) OF
                                      OCTET STRING

  -- When all three are present: SPID, Alt SPID, and Last Alt SPID

  TelephoneNumberRange ::= SEQUENCE {
    start E164Number,
    count INTEGER }

  E164Number ::= IA5String (SIZE (1..15)) (FROM ("0123456789"))

  -- TN OCSP Extension

  re-ocsp-tn-query  EXTENSION ::= {
    SYNTAX TNQuery IDENTIFIED BY id-pkix-ocsp-stir-tn }

  TNQuery ::= E164Number

  -- TN Access Descriptor

  id-ad-stir-tn          OBJECT IDENTIFIER ::= { id-ad TBD }

  --
  --  Object Identifiers
  --

  id-pkix-ocsp           OBJECT IDENTIFIER ::= id-ad-ocsp
  id-ce-TNAuthList       OBJECT IDENTIFIER ::= { id-ce TBD }
  id-pkix-ocsp-stir-tn   OBJECT IDENTIFIER ::= { id-pkix-ocsp TBD }

  END

  ]]></artwork></figure>
    </t>
  </section>

  </back>
</rfc>
