<?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-stir-mls SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.peterson-stir-mls.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 RFC7340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7340.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 RFC9060 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9060.xml">
<!ENTITY RFC9420 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9420.xml">
<!ENTITY RFC8862 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8862.xml">
<!ENTITY RFC9475 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9475.xml">
<!ENTITY I-D.mahy-mimi-identity SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.mahy-mimi-identity.xml">
<!ENTITY I-D.rosenberg-mimi-discovery-reqs SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.rosenberg-mimi-discovery-reqs.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-mls-01"
     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 MLS">Secure Telephone Identity for Message Layer Security</title>

        <author initials="J." surname="Peterson" fullname="Jon Peterson">
            <organization abbrev="TransUnion">TransUnion</organization>
            <address>
                <email>jon.peterson@transunion.com</email>
            </address>
        </author>


        <author initials="R." surname="Barnes" fullname="Richard Barnes">
            <organization abbrev="Cisco">Cisco</organization>
            <address>
                <email>rlb@ipv.sx</email>
            </address>
        </author>
    <!--    <area>
    ART
    </area>-->

    <keyword>SIP</keyword>



    <abstract>
      <t>
	   This document specifies Message Layer Security (MLS) Credential Types for use with Secure Telephone Identity Revisited (STIR), one for STIR certificates and another for the Personal Assertion Token (PASSporT). 
	  </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
	<t>
	The STIR problem statement <xref target="RFC7340"/> describes widespread problems enabled by impersonation in the telephone network, including illegal robocalling, voicemail hacking, and swatting.
	As telephone services have migrated onto the Internet using Voice over IP (VoIP) protocols such as <xref target="RFC3261">SIP</xref>, it is necessary for these protocols
	to support stronger identity mechanisms to prevent impersonation. <xref target="RFC8224"/> defines a SIP Identity header capable of carrying <xref target="RFC8225">PASSporT</xref> objects in SIP as a means to cryptographically attest that the originator of a telephone call is authorized to use the calling party number (or, for native SIP cases, SIP URI) associated with the originator of the call. <xref target="RFC8226"/> in turn defines an extension to X.509 certificates (TNAuthList) suitable attesting ownership of telephone numbers and signing PASSporTs.
	</t><t>
	The problem of bulk, unsolicited commercial communications is not, however, limited to telephone calls. Spammers and fraudsters are increasingly turning to messaging applications to deliver undesired content to consumers. And as STIR sees further deployment in the telephone network, the governance structures put in place for securing telephone network resources with STIR could be repurposed to help secure the messaging ecosystem. This problem and its applicability to STIR is described in <xref target="RFC9475"/>, both for signing individual messages with STIR and securing message streams negotiated by SIP.
	</t><t>
	Message Layer Security <xref target="RFC9420">(MLS)</xref> defines a key exchange mechanism to enable secure messaging between groups of users. Members in MLS groups are identified by credentials, which can include X.509 certificates. Because many messaging systems use telephone numbers as identifiers for users, having a secure means to identify MLS group members by telephone number is desirable.
	</t><t>
	This specification explores the applicability of <xref target="RFC8226"/> certificates to MLS, and how both service-provider level certificates and delegate certificates <xref target="RFC9060"/> might be used as credentials for MLS users for those cases where a telephone number is the primary identifier of a group member. It also specifies a way to use a <xref target="RFC8225"/> PASSporT as an MLS Credential. These MLS Credential Types could be used for carrier-adjacent deployments (e.g. RCS) or for over-the-top implementations.
	</t>
    </section> 
	
	<section 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="certs" title="MLS Credential Type for STIR Certificates">	  
	  <t>
	MLS already specifies the use of X.509 certificates as an MLS Credential Type. The guidance in <xref target="RFC9420"/> Section 5.3 allows MLS applications significant leeway in determining how to derive identifiers that will be rendered to users. An application could, for example, extract identifiers from the subjectAltName extension of an X.509 certificate.
	</t><t>
	<xref target="RFC8226"/> certificates used by STIR contain a TNAuthList extension, which may contain one or more telephone numbers, telephone number ranges, or Service Provider Codes (SPCs). In North American carrier deployments, the Service Provider Code field is most commonly used to convey an Operating Company Number (sometimes also known as a Service Provider ID), which designates only the serving carrier. These certificates do not convey any individual telephone number associated with a potential member in an MLS group, so that identifier would need to be conveyed separately by the application. Moreover, the keying material would in this case be held by a carrier, rather than an end-user device, so any security association created with that keying material would not be end-to-end.
	</t><t>
	<xref target="RFC9060"/> specifies delegate certificates in STIR, which allow intermediate certification authorities to issue subordinate keys that attest to a subset of a given carrier's authority. Delegate certificates may be issued down to the individual telephone number level, and are recommended for applications where end-to-end security is required, per <xref target="RFC8862"/>. MLS applications could extract the telephone number from the TNAuthList field to use as an identifier for the group member. 
	</t><t>
	The subjectAltName field, or a similar X.509 extension, could be used to convey the user's name in delegate certificates. Another <xref target="RFC8226"/> extension is JWTClaimsConstraint, which can place restrictions on the content of PASSporT objects that can be signed with a certificate. These can include constraints on Rich Call Data (RCD), which includes elements like proper names and images or logos associated with the certificate. A claim constraint on the "nam" RCD element, for example, could also be used by MLS applications as an alternative way to find a proper name for a group member.
	</t><t>
In deployments at this time, however, delegate certificates are rarely used, and few intermediate certification authorities exist who are capable of issuing delegate certificates.
	  </t>
	  	<section anchor="certdef" title="MLS STIR Certificate Credential Structure Definitions">
	  <t>
        <figure>
            <artwork><![CDATA[	  
struct {
  // Certificate chain, where Certificate is defined in RFC 9420 (and the same
  // ordering requirements apply), and certificates are in the form defined by
  // RFC 8226 / RFC 9060.  The subjectPublicKey of the first certificate MUST
  // match the signature_key of the enclosing LeafNode.
  Certificate certificates<V>;
} STIRCertificateCredential;

        ]]></artwork>
      </figure>

	  </t>	
	</section>
	</section>

	<section anchor="puts" title="MLS Credential Type for STIR PASSporTs">
	  <t>
	Instead of using a STIR certificate, implementations may also use a STIR <xref target="RFC8225">PASSporT</xref> as an MLS Credential Type. The PASSporT's contents contain identity information that could be consumed by messaging applications. Effectively, in this case a PASSporT would be created on a per-group basis.
	</t><t>
	The "orig" field of a PASSporT would indicate the telephone number identity of the group member. Further RCD data, including the "nam" field, could give additional identifiers for the member, including a proper name. The "dest" field of the PASSporT would contain a suitable identifier for the MLS group [TBD!].
	</t><t>
	While PASSporTs themselves do not convey keying material suitable for MLS, they can carry an "mky" field containing a fingerprint of keying material. This allows a PASSporT signed by an SPC-level certificate to contain an "mky" field with keying material generated by an end-user device. While this introduces certain security risks (see the Security Considerations), it provides a means to integrate STIR as commonly deployed today with MLS.
	</t><t>
	Note that PASSporTs as traditionally used by STIR have a short expiry, typically less than one minute, in order to prevent replay. Sessions negotiateed by SIP that use PASSporTs only check their validity at session initiation, even if the session itself is long-lived. With the use of "mky", however, the risk of a success replay attack is significantly mitigated, and it is safer to use longer expiry timers. PASSporTs created for use with MLS MUST contain an "mky" element.
	  </t>
	  	<section anchor="pptdef" title="MLS PASSporT Credential Structure Definitions">
	  <t>
        <figure>
            <artwork><![CDATA[	  
struct {
  // Certificate chain, where Certificate is defined in RFC 9420 (and the same
  // ordering requirements apply), and certificates are in the form defined by
  // RFC 8226 / RFC 9060.  The subjectPublicKey of the first certificate MUST
  // verify the signature on the object in the passport field.
  Certificate certificates<V>;

  // A PASSporT encoded as a byte string, signed by the first certificate in the
  // `certificates` vector.  The PASSporT MUST have an "mky" claim, which MUST
  // match the signature_key field in the enclosing LeafNode.
  opaque passport<V>;
} STIRPASSporTCredential;
        ]]></artwork>
      </figure>

	  </t>	
	</section>
	</section>

    <section anchor="mimi" title="Interaction with MIMI">
      <t>
	The use of telephone numbers as identities is a component of the More Instant Messaging Interoperability (MIMI) effort <xref target="I-D.mahy-mimi-identity"/>. The potential applicability of traditional STIR certificates described in <xref target="certs"/> to that effort is largely in the "consumer operator aligned" category of messaging providers (per <xref target="I-D.rosenberg-mimi-discovery-reqs"/>). There are however a variety of ways that non-carrier entities such as enterprises can acquire STIR credentials, including via delegate certificates (<xref target="RFC9060"/>). 
	  </t><t>
	For consumer OTT services, an alternative credential system would be needed, as the platforms that use telephone numbers in those systems are (typically) not affiliated with carriers.
	  </t>
    </section>
	
    <section anchor="group" title="MLS Group Messaging with STIR">
      <t>
	TBD.
	  </t>
    </section>
	
    <section anchor="Acknowledgments" title="Acknowledgments">
      <t></t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
	<t>TBD.</t>
    </section>

    <section anchor="Privacy" title="Privacy Considerations">
      <t>
TBD.
	  </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
	  This specification inherits the security considerations of <xref target="RFC9475"/>.
	  </t><t>
	  The use of PASSporTs as MLS Credentials signed with SPC-level STIR certificates creates a potential key substitution attack where a rogue service provider injects its own "mky" value before signing the PASSporT. MLS applications would need some out-of-band way to check the epoch authenticator in order to detect this substitution.
	</t>
    </section>
  </middle>
  
  
  

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

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->
    <references title="Normative References">
	

&RFC2119;
&RFC8174;
&RFC3261;
&RFC8224;
&RFC8225;
&RFC8226;
&RFC9060;
&RFC9420;
&RFC9475;
	</references>
    <references title="Informative References">
&I-D.mahy-mimi-identity;
&I-D.rosenberg-mimi-discovery-reqs;
&RFC7340;
&RFC8862;
	</references>
  </back>
</rfc>
