<?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 RFC8224 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8224.xml">
<!ENTITY RFC8555 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8555.xml">
<!ENTITY RFC7519 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC9448 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9448.xml">
<!ENTITY RFC8823 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8823.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.barnes-mimi-arch SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.barnes-mimi-arch.xml">
<!ENTITY I-D.rosenberg-mimi-discovery-reqs SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.rosenberg-mimi-discovery-reqs.xml">
<!ENTITY I-D.ietf-acme-telephone SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-acme-telephone.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-mimi-idprover-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="ID Prover">An Identitifier Proof-of-Possession Mechanism</title>

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

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

    <keyword>MIMI</keyword>


    <abstract>
      <t>
	   This document specifies a means for a third-party service to prove and attest the association of a communications platform with a particular user's telephone number. This capability supports secure enrollment for users of messaging platforms or similar real-time communication applications, for cases where users assert telephone numbers as communication identifiers, and interoperating platforms need to verify that identifiers are being properly attested. This general approach can potentially work with other forms of Service Independent Identifiers (SIIs) in the More Instant Messaging Interoperability (MIMI) framework.
	  </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
	<t>
	Many applications and platforms rely the receipt of a text message, typically a Short Messaging Service (SMS) (typically <xref target="SMPP"/>) message, to enable users to prove their control or ownership of a telephone number. During enrollment with a platform, services will send an SMS to the user's asserted telephone number containing a code or one-time URL; by interacting with that resource, the user proves receipt of the SMS, and thus validates the association of their telephone number with their account on that service. Resources sent via SMS may be used continually after enrollment as a two-factor authentication (TFA) systems.
	</t><t>
	While this mechanism may be sufficient to prove to the service in question that a user controls a telephone number, it does not help services prove to other services that users control telephone numbers and can legitimately assert them as identifiers in communications systems. For example, if Alice enrolls a telephone number with Platform A, and uses that telephone number as her identifier for a messaging service communicating with Bob on Platform B, Platform B has no way of validating how or if Platform A verified Alice's telephone number.
	</t><t>
	This issue arises in interoperable messaging systems that use Service Independent Identifiers (SIIs) as defined in <xref target="I-D.rosenberg-mimi-discovery-reqs"/>, and in particular telephone numbers as SIIs. There is a need in interoperable messaging for users to be able to assert an SII as an identity, per <xref target="I-D.mahy-mimi-identity"/>, in a way that multiple platforms can rely on. While this is often straightforward for Service Specific Identifiers (SSIs) of the form "user@example.com", where clearly "example.com" should can attest to the users of its service, it is more difficult for SIIs, as such identifiers are often not issued or controlled by the messaging platform. This specification thus describes a service that can be invoked by a communications platform to validate a platform user's control of an SII in order to create a publicly-verifiable credential asserting te platform's association with the SII. As prior work for X.509 credentials has been done along similar lines for ACME <xref target="RFC8555"/>, this document builds on the existing ACME framework for telephone numbers <xref target="RFC9448"/>.
	</t><t>
	This mechanism might be used to prove possession of SIIs other than telephone numbers, including email addresses. Moreover, this mechanism could be applied to proving identifiers for communications other than textual messaging, including most forms of real-time communications (e.g. <xref target="RFC8224">STIR</xref>).
	Note that the aim of this document is not to prove the assignment and delegation of resources in the telephone network: it is instead to establish whether Internet-enabled entites have effective control over the devices associated with those resources. Such credentials are not mutually exclusive with credentials delegated from national authorities.
		</t><t>
	Because the assignment of numbering resources can change over time, demonstrations of effective control must be regularly refreshed -- though because of the diverse capabilities
	of the devices involved, different schemes for refreshing the challenge, ones that require less direct user supervision, may be available to some devices and not others.
	</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="overview" title="Overview of Operations">	  
	  <t>
	  The following details the basic flow of this identity proving mechanism. Assume a case where a user, either a new user or an existing one updating their account, is interacting with a platform via an appp or over a web interface, and attempting to associate a new telephone number with their account. The exact methods that platforms use to communicate with users in steps 1, 2, and 6 below are outside the scope of this document.
	  </t><t>
	<list style="number"><t>
	  A user enrolling with a communications platform asserts their ownership of the telephone number to the platform
	  	  </t><t>
	  The platform instructs the user to await an SMS with a code
	  	  </t><t>
	  Simultaneously, the platform contacts an ACME server with a new order for that telephone number
	  	  </t><t>
	  The ACME server issues a challenge to the platform that requires a code to complete
	  	  </t><t>
	  In parallel, the ACME server also sends an SMS with the code to the asserted telephone number (without sharing that code with the platform)
	      </t><t>
	  Upon receipt of the code, the user inputs the code to the communications platform
	  	  </t><t>
	  The platform then responds to the ACME challenge with the code
	  	  </t><t>
      Provided the challenge is correctly answered, the ACME platform issues the certificate to the communications platform	      
	  </t></list>
	  </t><t>
	  At the end of this process, the platform has a certificate that could be to assert that SII identity in communication (per <xref target="I-D.mahy-mimi-identity"/>), as well as in support of various discovery functions as described in <xref target="I-D.rosenberg-mimi-discovery-reqs"/>. Any relying parties who trust the identity proving service can trust that the platform can assert the telephone number in question, and that the user of that SII is reachable at the platform. Subordinate certificates of various kinds could then be issued to the enrolling user by the platform for various end-to-end security functions.
	  </t>
    </section> 
	
	<section anchor="acme" title="ACME Behavior">	  
	  <t>
	 New-order requests issued by platforms to ACME servers in this specification MUST utilize the TNAuthList ACME identifier type <xref target="RFC9448"/>, with a TNAuthList value of a single telephone number. From there, the ACME flow follows that of <xref target="RFC8823"/>, although it uses a new ACME challenge type identifier here, "sms-link-00."
	 </t><t>
	 
	  <list><t>
	  type (required, string): The string "sms-link-00"
	  	  </t><t>
		  token (required, string):
    A random value that uniquely identifies the challenge. This value MUST have at least 128 bits of entropy, in order to prevent an attacker from guessing it. It MUST NOT contain any characters outside the URL-safe Base64 alphabet and MUST NOT contain any padding characters ("=").
	  </t></list>

	  </t>
	  	  	<figure>
        <artwork><![CDATA[
{
  "type": "sms-link-00",
}
	  	  ]]></artwork>
      </figure>
	  <t>
	  A client's response to this challenge simply acknowledges that it is ready to receive the validation SMS from the server.
	  </t><t>
	  On receiving a response, the identity proving service sends an SMS message to the TN being validated containing a code that the client must have a user access in order to complete the challenge. This code is intended to be relayed to the platform to complete the ACME challenge. By allowing a user action to complete the challenge, this validation method supports the use of ACME with SMS endpoints that do not support automated response to challenges; handset support for automated responses to these challenges is outside the scope of this document. The use of six-digit numeric codes is however weidely supported for automatic responses on handsets today.
	 </t>
    </section> 
	
	 <section anchor="example" title="Example">
 	<t>TBD.</t>
    </section>
	
    <section anchor="Acknowledgments" title="Acknowledgments">
      <t>
	  This document incorporates ideas and text from <xref target="I-D.ietf-acme-telephone"/>. Thanks as well go to Jonathan Rosenberg for his work on these ideas.
	  </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>
TBD.
	</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;
&RFC8224;
&RFC8823;
&RFC8555;
&RFC9448;
&I-D.mahy-mimi-identity;
&I-D.barnes-mimi-arch;
&I-D.ietf-acme-telephone;
&I-D.rosenberg-mimi-discovery-reqs;
	</references>
    <references title="Informative References">

	
		 <reference anchor='SMPP'>
        <front>
            <title>Short Message Peer to Peer Protocol Specification</title>
			           <author>
                <organization>
                SMS Forum v5.0 | 19 February 2003
                </organization>
            </author>
            <date year='2003' />
        </front>
    </reference>
	
    </references>


  </back>
</rfc>
