rfc8816xml2.original.xml | rfc8816.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!-- | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
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.ietf-modern-teri SYSTEM "http://xml.resource.org/public/rfc/bibxml3 | ||||
/reference.I-D.ietf-modern-teri.xml"> | ||||
<!ENTITY I-D.ietf-stir-passport-divert SYSTEM "http://xml.resource.org/public/rf | ||||
c/bibxml3/reference.I-D.ietf-stir-passport-divert.xml"> | ||||
<!ENTITY I-D.ietf-tls-subcerts SYSTEM "http://xml.resource.org/public/rfc/bibxml | ||||
3/reference.I-D.ietf-tls-subcerts.xml"> | ||||
<!ENTITY I-D.privacy-pass SYSTEM "http://xml.resource.org/public/rfc/bibxml3/ref | ||||
erence.I-D.privacy-pass.xml"> | ||||
<!ENTITY I-D.jennings-vipr-overview SYSTEM "http://xml.resource.org/public/rfc/b | ||||
ibxml3/reference.I-D.jennings-vipr-overview.xml"> | ||||
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.2119.xml"> | ||||
<!ENTITY RFC2560 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.2560.xml"> | ||||
<!ENTITY RFC5636 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.5636.xml"> | ||||
<!ENTITY RFC3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.3261.xml"> | ||||
<!ENTITY RFC6116 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.6116.xml"> | ||||
<!ENTITY RFC6940 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.6940.xml"> | ||||
<!ENTITY RFC7340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.7340.xml"> | ||||
<!ENTITY RFC7258 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.7258.xml"> | ||||
<!ENTITY RFC7748 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.7748.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8174.xml"> | ||||
<!ENTITY RFC8446 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8446.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"> | ||||
]> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
<!--?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?--> | number="8816" | |||
<!-- used by XSLT processors --> | docName="draft-ietf-stir-oob-07" | |||
<!-- For a complete list and description of processing instructions (PIs), | ipr="trust200902" | |||
please see http://xml.resource.org/authoring/README.html. --> | obsoletes="" | |||
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | updates="" | |||
might want to use. | submissionType="IETF" | |||
(Here they are set differently than their defaults in xml2rfc v1.32) --> | category="info" | |||
<!--?rfc strict="yes" ?--> | consensus="true" | |||
<!-- give errors regarding ID-nits and DTD validation --> | xml:lang="en" | |||
<!-- control the table of contents (ToC) --> | tocInclude="true" | |||
<?rfc toc="yes"?> | tocDepth="4" | |||
<!-- generate a ToC --> | symRefs="true" | |||
<?rfc tocdepth="4"?> | sortRefs="true" | |||
<!-- the number of levels of subsections in ToC. default: 3 --> | version="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="info" docName="draft-ietf-stir-oob-07" | ||||
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 ***** --> | <!-- xml2rfc v2v3 conversion 2.41.0 --> | |||
<front> | <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 Out-of-Band">STIR Out-of-Band Architecture and Use Cases | ||||
</title> | ||||
<author fullname="Eric Rescorla" initials="E.K." surn | <title abbrev="STIR Out-of-Band">Secure Telephone Identity Revisited (STIR) | |||
ame="Rescorla"> | Out-of-Band Architecture and Use Cases</title> | |||
<seriesInfo name="RFC" value="8816"/> | ||||
<author fullname="Eric Rescorla" initials="E." surname="Rescorla"> | ||||
<organization>Mozilla</organization> | <organization>Mozilla</organization> | |||
<address> | <address> | |||
<email>ekr@rtfm.com</email> | <email>ekr@rtfm.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="J." surname="Peterson" fullname="Jon Peterson"> | ||||
<author initials="J." surname="Peterson" fullname="Jon Peterson"> | <organization abbrev="Neustar">Neustar, Inc.</organization> | |||
<organization abbrev="Neustar">Neustar, Inc.</organization> | <address> | |||
<address> | <postal> | |||
<postal> | <street>1800 Sutter St Suite 570</street> | |||
<street>1800 Sutter St Suite 570</street> | <city>Concord</city> | |||
<city>Concord</city> | <region>CA</region> | |||
<region>CA</region> | <code>94520</code> | |||
<code>94520</code> | <country>United States of America</country> | |||
<country>US</country> | </postal> | |||
</postal> | <email>jon.peterson@team.neustar</email> | |||
<email>jon.peterson@team.neustar</email> | </address> | |||
</address> | </author> | |||
</author> | <date month="August" year="2020"/> | |||
<date year="2020" /> | ||||
<!-- <area> | ||||
ART | ||||
</area>--> | ||||
<keyword>SIP</keyword> | <keyword>SIP</keyword> | |||
<abstract> | <abstract> | |||
<t> | <t>The Personal Assertion Token (PASSporT) format defines | |||
The PASSporT format defines a token that can be carried by signaling | a token that can be carried by signaling protocols, including SIP, | |||
protocols, including SIP, to cryptographically attest the identify of callers. | to cryptographically attest the identity of callers. | |||
Not all telephone calls use Internet signaling protocols, however | However, not all telephone calls use Internet signaling protocols, | |||
, and some calls use them for only part of their signaling path, or cannot relia | and some calls use them for only part of their signaling | |||
bly deliver SIP header fields end-to-end. | path, while some cannot reliably deliver SIP header fields end-to-end. | |||
This document describes use cases that require the delivery of PA | This document describes use cases that require the delivery of | |||
SSporT objects outside of the signaling path, and defines architectures and sema | PASSporT objects outside of the signaling path, and defines | |||
ntics to provide | architectures and semantics to provide | |||
this functionality. | this functionality. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<t> | <name>Introduction</name> | |||
The STIR problem statement <xref target="RFC7340"/> describes widespread | ||||
problems enabled by impersonation in the telephone network, including illegal ro | <t>The STIR problem statement <xref target="RFC7340" format="default"/> | |||
bocalling, voicemail hacking, and swatting. | describes widespread problems enabled by impersonation in the telephone network, | |||
As telephone services are increasingly migrating onto the Internet, and u | including illegal robocalling, voicemail hacking, and swatting. | |||
sing Voice over IP (VoIP) protocols such as <xref target="RFC3261">SIP</xref>, i | As telephone services are increasingly migrating onto the Internet, | |||
t is necessary for these protocols | and using Voice over IP (VoIP) protocols such as <xref target="RFC3261" format=" | |||
to support stronger identity mechanisms to prevent impersonation. For exa | default">SIP</xref>, | |||
mple, <xref target="RFC8224"/> defines a SIP Identity header field capable of ca | it is necessary for these protocols to support stronger identity mechanisms to p | |||
rrying <xref target="RFC8225">PASSporT</xref> objects in SIP as a means to crypt | revent impersonation. | |||
ographically attest that the originator of a telephone call is authorized to use | For example, <xref target="RFC8224" format="default"/> defines a SIP Identity he | |||
the calling party number (or, for native SIP cases, SIP URI) associated with th | ader field | |||
e originator of the call. | capable of carrying <xref target="RFC8225" format="default">PASSporT objects</xr | |||
</t><t> | ef> | |||
Not all telephone calls use SIP today, however, and even those that do us | in SIP as a means to cryptographically attest that the originator of a | |||
e SIP do not always carry SIP signaling end-to-end. | telephone call is authorized to use the calling party number (or, for native SIP | |||
cases, | ||||
SIP URI) associated with the originator of the call. | ||||
</t> | ||||
<t>Not all telephone calls use SIP today, however, and even those that do | ||||
use SIP do not always carry SIP signaling end-to-end. | ||||
Calls from telephone numbers still routinely traverse the Public Switched Tel ephone Network (PSTN) at some | Calls from telephone numbers still routinely traverse the Public Switched Tel ephone Network (PSTN) at some | |||
point. Broadly, calls fall into one of three categories: | point. Broadly, calls fall into one of three categories: | |||
</t><t><list style="numbers"><t> | </t> | |||
<ol spacing="normal" type="1"> | ||||
<li> | ||||
One or both of the endpoints is actually a PSTN endpoint. | One or both of the endpoints is actually a PSTN endpoint. | |||
</t><t> | </li> | |||
Both of the endpoints are non-PSTN (SIP, Jingle, ...) but the call | <li>Both of the endpoints are non-PSTN (SIP, Jingle, etc.) but the call | |||
transits the PSTN at some point. | transits the PSTN at some point. | |||
</t><t> | </li> | |||
Non-PSTN calls which do not transit the PSTN at all (such as native SIP e | <li>Non-PSTN calls that do not transit the PSTN at all (such as native S | |||
nd-to-end calls). | IP end-to-end calls). | |||
</t></list></t><t> | </li> | |||
The first two categories represent the majority of telephone calls assoc | </ol> | |||
iated with problems like illegal robocalling: many robocalls today originate on | <t>The first two categories represent the majority of telephone calls ass | |||
the Internet but terminate at PSTN endpoints. | ociated with problems like illegal robocalling: many robocalls today originate o | |||
n the Internet but terminate at PSTN endpoints. | ||||
However, the core network elements that operate the PSTN are legacy devices t hat | However, the core network elements that operate the PSTN are legacy devices t hat | |||
are unlikely to be upgradable at this point to support an in-band authenticat ion system. | are unlikely to be upgradable at this point to support an in-band authenticat ion system. | |||
As such, those devices largely cannot be modified to pass signatures originat | As such, those devices largely cannot be modified to pass signatures originat | |||
ing on the Internet--or indeed any inband signaling | ing on the Internet -- or indeed any in-band signaling | |||
data--intact. Even if fields for tunneling arbitrary data can be found in tr | data -- intact. Even if fields for tunneling arbitrary data can be found in | |||
aditional PSTN signaling, in some cases legacy elements would strip the signatur | traditional PSTN signaling, in some cases legacy elements would strip the signat | |||
es from those fields; in | ures from those fields; in | |||
others, they might damage them to the point where they cannot be | others, they might damage them to the point where they cannot be | |||
verified. For those first two categories above, any in-band authentication s cheme does not | verified. For those first two categories above, any in-band authentication s cheme does not | |||
seem practical in the current environment. | seem practical in the current environment. | |||
</t><t> | </t> | |||
While the core network of the PSTN remains fixed, the endpoints of | <t>While the core network of the PSTN remains fixed, the endpoints of | |||
the telephone network are becoming increasingly programmable and | the telephone network are becoming increasingly programmable and | |||
sophisticated. Landline "plain old telephone service" deployments, | sophisticated. Landline "plain old telephone service" deployments, | |||
especially in the developed world, are shrinking, and increasingly | especially in the developed world, are shrinking, and increasingly | |||
being replaced by three classes of intelligent devices: smart | being replaced by three classes of intelligent devices: smart | |||
phones, IP PBXs, and terminal adapters. All three are general | phones, IP Private Branch Exchanges (PBXs), and terminal adapters. All three are general | |||
purpose computers, and typically all three have Internet access as | purpose computers, and typically all three have Internet access as | |||
well as access to the PSTN; they may be used for residential, mobile, or ente rprise telephone services. | well as access to the PSTN; they may be used for residential, mobile, or ente rprise telephone services. | |||
Additionally, various kinds of gateways increasingly front for | Additionally, various kinds of gateways increasingly front for | |||
deployments of legacy PBX and PSTN switches. All of this provides a potential avenue for | deployments of legacy PBX and PSTN switches. All of this provides a potential avenue for | |||
building an authentication system that implements stronger identity while lea ving PSTN systems intact. | building an authentication system that implements stronger identity while lea ving PSTN systems intact. | |||
</t><t> | </t> | |||
This capability also provides an ideal transitional technology while in-b | <t> This capability also provides an ideal transitional technology while i | |||
and STIR adoption is ramping up. It permits early adopters to use the technology | n-band STIR adoption is ramping up. It permits early adopters to use the technol | |||
even when intervening network | ogy even when intervening network | |||
elements are not yet STIR-aware, and through various kinds of gateways, i | elements are not yet STIR-aware, and through various kinds of gateways, it may a | |||
t may allow providers with a significant PSTN investment to still secure their c | llow providers with a significant PSTN investment to still secure their calls wi | |||
alls with STIR. | th STIR. | |||
</t><t> | </t> | |||
The techniques described in this document therefore build on the <xref ta | <t>The techniques described in this document therefore build on the | |||
rget="RFC8225">PASSporT</xref> mechanism and the work of <xref target="RFC8224"/ | <xref target="RFC8225" format="default">PASSporT</xref> mechanism and the work o | |||
> to describe a way that | f <xref target="RFC8224" format="default"/> to describe a way that | |||
a PASSporT object created in the originating network of a call can reach | a PASSporT object created in the originating network of a call can reach the ter | |||
the terminating network even when it cannot be carried end-to-end in-band in the | minating network even when it cannot be carried end-to-end in-band in the call s | |||
call signaling. This relies on | ignaling. This relies on | |||
a new service defined in this document called a Call Placement Service (C | a new service defined in this document called a Call Placement Service (CPS) tha | |||
PS) that permits the PASSporT object to be stored during call processing and ret | t permits the PASSporT object to be stored during call processing and retrieved | |||
rieved for verification purposes. | for verification purposes. | |||
</t><t> | </t> | |||
Potential implementors should note that this document merely defines the | <t>Potential implementors should note that this document merely defines th | |||
operating environments in which this | e operating environments in which this | |||
out-of-band STIR mechanism is intended to operate. It provides use case | out-of-band STIR mechanism is intended to operate. It provides use cases | |||
s, gives a broad description of the components and a potential solution architec | , gives a broad description of the components, and a potential solution architec | |||
ture. | ture. | |||
Various environments may have their own security requirements: a | Various environments may have their own security requirements: a public deployme | |||
public deployment of out-of-band STIR faces far greater challenges than a constr | nt of out-of-band STIR faces far greater challenges than a constrained intra-net | |||
ained | work deployment. | |||
intranetwork deployment. | ||||
To flesh out the storage and retrieval of PASSporTs in the CPS within th is | To flesh out the storage and retrieval of PASSporTs in the CPS within th is | |||
context, this document includes a strawman protocol suitable for that pu rpose. Deploying this framework in any given environment | context, this document includes a strawman protocol suitable for that pu rpose. Deploying this framework in any given environment | |||
would require additional specification outside the scope of the current | would require additional specification outside the scope of this documen | |||
document. | t. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t>TThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"OPTIONAL" in this document are to be interpreted as described in | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and o | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
nly when, they appear in all | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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> | |||
<section numbered="true" toc="default"> | ||||
<section title="Operating Environments"> | <name>Operating Environments</name> | |||
<t> | <t>This section describes the environments in which the proposed out-of-ba | |||
This section describes the environments in which the proposed out-of | nd STIR mechanism is intended to operate. In the simplest setting, Alice | |||
-band STIR | calls Bob, and her call is routed through some set of gateways and/or the PST | |||
mechanism is intended to operate. In the simplest setting, Alice is | N | |||
calling Bob, and her call is routed through some set of gateways and/or the P | that do not support end-to-end delivery of STIR. Both Alice | |||
STN | and Bob have smart devices that can access the Internet (perhaps enterprise d | |||
which do not support end-to-end delivery of STIR. Both Alice | evices, or even end-user ones), but they do not have | |||
and Bob have smart devices which can access the Internet (perhaps enterprise | ||||
devices, or even end user ones), but they do not have | ||||
a clear telephone signaling connection between them: Alice cannot inject any data into | a clear telephone signaling connection between them: Alice cannot inject any data into | |||
signaling which Bob can read, with the exception of the asserted destination | signaling that Bob can read, with the exception of the asserted destination a | |||
and origination | nd origination | |||
E.164 numbers. The calling party number might originate from her own device o | E.164 numbers. The calling party number might originate from her own device o | |||
r from the network. These numbers are effectively the only data that can be use | r from the network. These numbers are effectively the only data that can be use | |||
d for coordination between | d for coordination between the endpoints. | |||
the endpoints. | </t> | |||
</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<figure> | +---------+ | |||
<artwork><![CDATA[ | / \ | |||
+---------+ | +--- +---+ | |||
/ \ | +----------+ / \ +----------+ | |||
+--- +---+ | | | | Gateways | | | | |||
+----------+ / \ +----------+ | | Alice |<----->| and/or |<----->| Bob | | |||
| | | Gateways | | | | | (caller) | | PSTN | | (callee) | | |||
| Alice |<----->| and/or |<----->| Bob | | +----------+ \ / +----------+ | |||
| (caller) | | PSTN | | (callee) | | +--- +---+ | |||
+----------+ \ / +----------+ | \ / | |||
+--- +---+ | +---------+ | |||
\ / | ]]></artwork> | |||
+---------+ | <t>In a more complicated setting, Alice and/or Bob may not have a smart or | |||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
In a more complicated setting, Alice and/or Bob may n | ||||
ot have a smart or | ||||
programmable device, but instead just a traditional telephone. However, one o r both of them are behind a STIR-aware gateway that can participate in out-of-ba nd coordination, as shown below: | programmable device, but instead just a traditional telephone. However, one o r both of them are behind a STIR-aware gateway that can participate in out-of-ba nd coordination, as shown below: | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<figure> | +---------+ | |||
<artwork><![CDATA[ | / \ | |||
+---------+ | +--- +---+ | |||
/ \ | +----------+ +--+ / \ +--+ +----------+ | |||
+--- +---+ | | | | | | Gateways | | | | | | |||
+----------+ +--+ / \ +--+ +----------+ | | Alice |<-|GW|->| and/or |<-|GW|->| Bob | | |||
| | | | | Gateways | | | | | | | (caller) | | | | PSTN | | | | (callee) | | |||
| Alice |<-|GW|->| and/or |<-|GW|->| Bob | | +----------+ +--+ \ / +--+ +----------+ | |||
| (caller) | | | | PSTN | | | | (callee) | | +--- +---+ | |||
+----------+ +--+ \ / +--+ +----------+ | \ / | |||
+--- +---+ | +---------+ | |||
\ / | ]]></artwork> | |||
+---------+ | <t>In such a case, Alice might have an analog (e.g., PSTN) connection to h | |||
]]></artwork> | er | |||
</figure> | gateway or switch that is responsible for her identity. Similarly, the gatew | |||
ay | ||||
<t> | ||||
In such a case, Alice might have an analog (e.g., PSTN) conne | ||||
ction to her gateway/ | ||||
switch which is responsible for her identity. Similarly, the gateway | ||||
would verify Alice's identity, generate the right calling party number | would verify Alice's identity, generate the right calling party number | |||
information and provide that number to Bob using ordinary | information, and provide that number to Bob using ordinary | |||
Plain Ol' Telephone Service (POTS) mechanisms. | Plain Old Telephone Service (POTS) mechanisms. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="data" numbered="true" toc="default"> | ||||
<section anchor="data" title="Dataflows"> | <name>Dataflows</name> | |||
<t>Because in these operating environments endpoints cannot pass cryptogra | <t>Because in these operating environments, endpoints cannot pass cryptogr | |||
phic information to one another directly | aphic information to one another directly | |||
through signaling, any solution must | through signaling, any solution must | |||
involve some rendezvous mechanism to allow endpoints to communicate. | involve some rendezvous mechanism to allow endpoints to communicate. | |||
We call this rendezvous service a "call placement service" (CPS), a service w here a record of call placement, | We call this rendezvous service a Call Placement Service (CPS), a service whe re a record of call placement, | |||
in this case a PASSporT, can be stored for future retrieval. In | in this case a PASSporT, can be stored for future retrieval. In | |||
principle this service could communicate any information, but minimally we | principle, this service could communicate any information, but minimally we | |||
expect it to include a full-form PASSporT that attests | expect it to include a full-form PASSporT that attests | |||
the caller, callee, and the time of the call. The callee can use the | the caller, callee, and the time of the call. The callee can use the | |||
existence of a PASSporT for a given incoming call as rough validation of | existence of a PASSporT for a given incoming call as rough validation of | |||
the asserted origin of that call. (See <xref target="lookup"/> for limitatio ns of | the asserted origin of that call. (See <xref target="lookup" format="default "/> for limitations of | |||
this design.) | this design.) | |||
</t><t> | </t> | |||
This architecture does not mandate that any particular sort of entity ope | <t>This architecture does not mandate that any particular sort | |||
rate a CPS, or mandate any means to discover a CPS. A CPS | of entity operate a CPS or mandate any means to discover a CPS. A CPS | |||
could be run internally within a network, or made publicly available. One | could be run internally within a network or made publicly available. | |||
or more CPSes could be run by a carrier, as repositories for PASSporTs | One or more CPSes could be run by a carrier, as repositories for PASSporTs | |||
for calls sent to its customers, or a CPS could be built-in to an enterpr | for calls sent to its customers, or a CPS could be built into an enterprise | |||
ise PBX, or even a smartphone. To the degree possible, it is | PBX or even a smartphone. To the degree possible, it is | |||
specified here generically, as an idea that may have applicability to a v | specified here generically as an idea that may have applicability to a variety o | |||
ariety of STIR deployments. | f STIR deployments. | |||
</t><t> | </t> | |||
There are roughly two plausible dataflow architectures for the CPS: | <t>There are roughly two plausible dataflow architectures for the CPS: | |||
</t><t><list style="numbers"><t> | </t> | |||
The callee registers with the CPS. When the caller wishes to | ||||
<ol spacing="normal" type="1"> | ||||
<li>The callee registers with the CPS. When the caller wishes to | ||||
place a call to the callee, it sends the PASSporT to the CPS, which immedi ately | place a call to the callee, it sends the PASSporT to the CPS, which immedi ately | |||
forwards it to the callee, or, | forwards it to the callee. | |||
</t><t> | </li> | |||
The caller stores the PASSporT with the CPS at the time of call | <li>The caller stores the PASSporT with the CPS at the time of call | |||
placement. When the callee receives the call, it contacts the CPS | placement. When the callee receives the call, it contacts the CPS | |||
and retrieves the PASSporT. | and retrieves the PASSporT. | |||
</t></list></t><t> | </li> | |||
While the first architecture is roughly isomorphic to current VoIP | </ol> | |||
<t>While the first architecture is roughly isomorphic to current VoIP | ||||
protocols, it shares their drawbacks. Specifically, the callee must | protocols, it shares their drawbacks. Specifically, the callee must | |||
maintain a full-time connection to the CPS to serve as a notification | maintain a full-time connection to the CPS to serve as a notification | |||
channel. This comes with the usual networking costs to the callee | channel. This comes with the usual networking costs to the callee | |||
and is especially problematic for mobile endpoints. Indeed, if the endpoints had the capabilities | and is especially problematic for mobile endpoints. Indeed, if the endpoints had the capabilities | |||
to implement such an architecture, they could surely just use SIP or some oth er | to implement such an architecture, they could surely just use SIP or some oth er | |||
protocol to set up a secure session; even if the media were going through the traditional PSTN, a | protocol to set up a secure session; even if the media were going through the traditional PSTN, a | |||
"shadow" SIP session could convey the PASSporT. Thus, we focus | "shadow" SIP session could convey the PASSporT. Thus, we focus | |||
on the second architecture in which the PSTN incoming call serves as | on the second architecture in which the PSTN incoming call serves as | |||
the notification channel and the callee can then contact the CPS to | the notification channel, and the callee can then contact the CPS to | |||
retrieve the PASSporT. In specialized environments, for example a call center | retrieve the PASSporT. In specialized environments, for example, a call cente | |||
that receives a large volume of | r that receives a large volume of | |||
incoming calls that originated in the PSTN, the notification channel approach might be viable. | incoming calls that originated in the PSTN, the notification channel approach might be viable. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="uses" numbered="true" toc="default"> | ||||
<section anchor="uses" title="Use Cases"> | <name>Use Cases</name> | |||
<t> | <t>The following are the motivating use cases for this mechanism. Bear in | |||
The following are the motivating use cases for this mechanism. Bear in mi | mind that, | |||
nd that just as in <xref target="RFC8224"/> there may be multiple Identity heade | just as in <xref target="RFC8224" format="default"/>, there may be multiple Iden | |||
rs in a single SIP | tity header fields in a single SIP | |||
INVITE, so there may be multiple PASSporTs in this out-of-band mechanism | INVITE, so there may be multiple PASSporTs in this out-of-band mechanism associa | |||
associated with a single call. For example, a SIP user agent might create a PASS | ted with a single call. For example, a SIP user agent might create a PASSporT fo | |||
porT for a call with an end user | r a call with an end-user | |||
credential, and as the call exits the originating administrative domain t | credential, and as the call exits the originating administrative domain, | |||
he network authentication service might create its own PASSporT for the same cal | the network authentication service might create its own PASSporT for the same ca | |||
l. As such, these use cases may overlap | ll. As such, these use cases may overlap | |||
in the processing of a single call. | in the processing of a single call. | |||
</t> | </t> | |||
<section anchor="case-ip-pstn" title="Case 1: VoIP to PSTN Call"> | <section anchor="case-ip-pstn" numbered="true" toc="default"> | |||
<t> | <name>Case 1: VoIP to PSTN Call</name> | |||
A call originates in a SIP environment in a STIR-aware administra | <t>A call originates in a SIP environment in a STIR-aware administrative | |||
tive domain. The local authentication service for that administrative domain cre | domain. The local authentication service for that administrative domain creates | |||
ates a PASSporT which is carried | a PASSporT that is carried | |||
in band in the call per <xref target="RFC8224"/>. The call is rou | in band in the call per <xref target="RFC8224" format="default"/>. The call is r | |||
ted out of the originating administrative domain and reaches a gateway to the PS | outed out of the originating administrative domain and reaches a gateway to the | |||
TN. | PSTN. | |||
Eventually, the call will terminate on a mobile smartphone that s | Eventually, the call will terminate on a mobile smartphone that supports this ou | |||
upports this out-of-band mechanism. | t-of-band mechanism. | |||
</t><t> | </t> | |||
In this use case, the originating authentication service can store t | <t>In this use case, the originating authentication service | |||
he PASSporT with the appropriate CPS (per the practices of | can store the PASSporT with the appropriate CPS (per the practices of | |||
<xref target="cps"/>) for the target telephone number as a fallback | <xref target="cps" format="default"/>) for the target telephone number | |||
in case SIP signaling will not | as a fallback in case SIP signaling will not reach end-to-end. When | |||
reach end-to-end. When the destination mobile smartphone receives | the destination mobile smartphone receives the call over the PSTN, it | |||
the call over the PSTN, it consults the CPS and discovers a PASSporT from the o | consults the CPS and discovers a PASSporT from the originating telephone number | |||
riginating telephone number waiting for it. | waiting for it. | |||
It uses this PASSporT to verify the calling party number. | It uses this PASSporT to verify the calling party number. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="case-pstn-pstn-gw" title="Case 2: Two Smart PSTN | <section anchor="case-pstn-pstn-gw" numbered="true" toc="default"> | |||
endpoints"> | <name>Case 2: Two Smart PSTN Endpoints</name> | |||
<t> | <t>A call originates with an enterprise PBX that has both | |||
A call originates with an enterprise PBX that has both Internet a | Internet access and a built-in gateway to the PSTN, which communicates | |||
ccess and a built-in gateway to the PSTN, which communicates through traditional | through traditional telephone signaling protocols. | |||
telephone signaling protocols. The PBX immediately routes the call to the PSTN, | The PBX immediately routes the call to the PSTN, but before it does, | |||
but before it does, it provisions | it provisions a PASSporT on the CPS associated with the target telephone number. | |||
a PASSporT on the CPS associated with the target telephone number | </t> | |||
. | <t>After normal PSTN routing, the call lands on a smart mobile handset t | |||
</t><t> | hat supports the STIR out-of-band mechanism. It queries the appropriate CPS over | |||
After normal PSTN routing, the call lands on a smart mobile hands | the Internet to determine if a call has been placed to it | |||
et that supports the STIR out-of-band mechanism. It queries the appropriate CPS | by a STIR-aware device. It finds the PASSporT provisioned by the | |||
over the Internet to determine if a call has been placed to it | enterprise PBX and uses it to verify the calling party number. | |||
by a STIR-aware device. It finds the PASSporT provisioned by the | </t> | |||
enterprise PBX and uses it to verify the calling party number. | </section> | |||
</t> | <section anchor="case-pstn-ip" numbered="true" toc="default"> | |||
</section> | <name>Case 3: PSTN to VoIP Call</name> | |||
<section anchor="case-pstn-ip" title="Case 3: PSTN to VoIP Call"> | <t>A call originates with an enterprise PBX that has both | |||
<t> | Internet access and a built-in gateway to the PSTN. It will immediately | |||
A call originates with an enterprise PBX that has both Internet a | route the call to the PSTN, but before it does, it provisions | |||
ccess and a built-in gateway to the PSTN. It will immediately route the call to | a PASSporT with the CPS associated with the target telephone number. | |||
the PSTN, but before it does, it provisions | However, it turns out that the call will eventually route through | |||
a PASSporT with the CPS associated with the target telephone numb | the PSTN to an Internet gateway, which will translate this into a SIP | |||
er. However, it turns out that the call will eventually route through the PSTN t | call and deliver it to an administrative domain with a STIR verification service | |||
o an Internet gateway, which will translate this into a SIP | . | |||
call and deliver it to an administrative domain with a STIR verif | </t> | |||
ication service. | <t>In this case, there are two subcases for how the PASSporT | |||
</t><t> | might be retrieved. In subcase 1, the Internet gateway that receives | |||
In this case, there are two subcases for how the PASSporT might b | the call from the PSTN could query the appropriate CPS to determine | |||
e retrieved. In subcase 1, | if the original caller created and provisioned a PASSporT for this call. If so, | |||
the Internet gateway that receives the call from the PSTN could q | it can retrieve the PASSporT and, when it creates a SIP INVITE for | |||
uery the appropriate CPS to determine if the original caller created and provisi | this call, add a corresponding Identity header field per | |||
oned a PASSporT for this call. If so, | <xref target="RFC8224" format="default"/>. When the SIP INVITE reaches | |||
it can retrieve the PASSporT and, when it creates a SIP INVITE fo | the destination administrative domain, it will be able to verify the | |||
r this call, add a corresponding Identity header field per <xref target="RFC8224 | PASSporT normally. Note that to avoid discrepancies with the Date | |||
"/>. When the SIP INVITE reaches | header field value, only a full-form PASSporT should be used for this purpose. I | |||
the destination administrative domain, it will be able to verify | n | |||
the PASSporT normally. Note that to avoid discrepancies with the Date header fie | subcase 2, the gateway does not retrieve the PASSporT itself, but | |||
ld value, only full-form PASSporT should be used for this purpose. In | instead the verification service at the destination administrative | |||
subcase 2, the gateway does not retrieve the PASSporT itself, but | domain does so. Subcase 1 would perhaps be valuable for deployments where | |||
instead the verification service at the destination administrative domain does | the destination administrative domain supports in-band STIR but not out-of-band | |||
so. Subcase 1 would perhaps be valuable for deployments where | STIR. | |||
the destination administrative domain supports in-band STIR but n | </t> | |||
ot out-of-band STIR. | </section> | |||
</t> | <section anchor="case-gateways" numbered="true" toc="default"> | |||
</section> | <name>Case 4: Gateway Out-of-Band</name> | |||
<section anchor="case-gateways" title="Case 4: Gateway Out-of-ban | <t>A call originates in the SIP world in a STIR-aware administrative dom | |||
d"> | ain. | |||
<t> | The local authentication service for that administrative domain creates a PASSpo | |||
A call originates in the SIP world in a STIR-aware administrative | rT that is carried | |||
domain. The local authentication service for that administrative domain creates | in band in the call per <xref target="RFC8224" format="default"/>. The call is r | |||
a PASSporT which is carried | outed | |||
in band in the call per <xref target="RFC8224"/>. The call is rou | out of the originating administrative domain and eventually reaches a gateway to | |||
ted out of the originating administrative domain and eventually reaches a gatewa | the PSTN. | |||
y to the PSTN. | </t> | |||
</t><t> | <t>In this case, the originating authentication service does not support | |||
In this case, the originating authentication service does not sup | the out-of-band mechanism, so instead the gateway to the PSTN extracts the PASS | |||
port the out-of-band mechanism, so instead the gateway to the PSTN extracts the | porT from the SIP request and provisions it to the CPS. (When the call reaches t | |||
PASSporT from the SIP request and provisions it to the CPS. (When the call reach | he gateway to the PSTN, the gateway might first check the CPS to see if a PASSpo | |||
es the gateway to the PSTN, the gateway might first check the CPS to see if a PA | rT object had already been provisioned for this call, and only provision a PASSp | |||
SSporT object had already been provisioned for this call, and only provision a P | orT if none is present). | |||
ASSporT if none is present). | </t> | |||
</t><t> | <t>Ultimately, the call may terminate on the PSTN or be routed back to a | |||
Ultimately, the call may terminate on the PSTN, or be routed back | SIP environment. In the former case, perhaps the destination endpoint queries t | |||
to a SIP environment. In the former case, perhaps the destination endpoint quer | he CPS to retrieve the PASSporT provisioned by the first gateway. If the call ul | |||
ies the CPS to retrieve the PASSporT provisioned by the first gateway. Or if the | timately returns to a SIP environment, it might be the gateway from the PSTN bac | |||
call ultimately returns to a SIP environment, it might be the gateway from the | k to the Internet that retrieves the PASSporT from the CPS and attaches it to th | |||
PSTN back to the Internet that retrieves the PASSporT from the CPS and attaches | e new SIP INVITE it creates, or it might be the terminating administrative domai | |||
it to the new SIP INVITE it creates, or it might be the terminating administrati | n's verification service that checks the CPS when an INVITE arrives with no Iden | |||
ve domain's verification service that checks the CPS when an INVITE arrives with | tity header field. Either way, the PASSporT can survive the gap in SIP coverage | |||
no Identity header field. Either way the PASSporT can survive the gap in SIP co | caused by the PSTN leg of the call. | |||
verage caused by the PSTN leg of the call. | </t> | |||
</t> | </section> | |||
</section> | <section anchor="case-enterprise" numbered="true" toc="default"> | |||
<section anchor="case-enterprise" title="Case 5: Enterprise Call | <name>Case 5: Enterprise Call Center</name> | |||
Center"> | <t>A call originates from a mobile user, and a STIR authentication servi | |||
<t> | ce operated by their carrier creates a PASSporT for the call. As the carrier for | |||
A call originates from a mobile user, and a STIR authentication s | wards the call via SIP, it attaches the PASSporT to the SIP call with an Identit | |||
ervice operated by their carrier creates a PASSporT for the call. As the carrier | y header field. As a fallback in case the call will not go end-to-end over SIP, | |||
forwards the call via SIP, it attaches the PASSporT to the SIP call with an Ide | the carrier also stores the PASSporT in a CPS. | |||
ntity header field. As a fallback in case the call will not go end-to-end over S | </t> | |||
IP, the carrier also stores the PASSporT in a CPS. | <t>The call is then routed over SIP for a time, before it | |||
</t><t> | transitions to the PSTN and ultimately is handled by a legacy PBX at a | |||
The call is then routed over SIP for a time, before it transition | high-volume call center. The call center supports the out-of-band service, | |||
s to the PSTN and ultimately is handled by a legacy PBX at a high-volume call ce | and has a high-volume interface to a CPS to retrieve PASSporTs for incoming | |||
nter. The call center supports the out-of-band service, and has a high-volume in | calls; agents at the call center use a general purpose computer to manage | |||
terface to a CPS to retrieve PASSporTs for incoming calls; agents at the call ce | inbound calls and can receive STIR notifications through it. When the PASSporT | |||
nter use a general purpose computer to manage inbound calls and can receive STIR | arrives at the CPS, it is sent through a subscription/notification interface | |||
notifications through it. When the PASSporT arrives at the CPS, it is sent thro | to a system that can correlate incoming calls with valid PASSporTs. The call | |||
ugh a subscription/notification interface to a system that can correlate incomin | center agent sees that a valid call from the originating number has arrived. | |||
g calls with valid PASSporTs. The call center agent sees that a valid call from | </t> | |||
the originating number has arrived. | </section> | |||
</t> | </section> | |||
</section> | <section anchor="authz" numbered="true" toc="default"> | |||
<name>Storing and Retrieving PASSporTs</name> | ||||
</section> | <t>The use cases show a variety of entities accessing the CPS to | |||
store and retrieve PASSporTs. The question of how the CPS authorizes the | ||||
<section anchor="authz" title="Storing and Retrieving PASSporTs"> | storage and retrieval of PASSporTs is thus a key design decision in the architec | |||
<t>The use cases show a variety of entities accessing the CPS to store and | ture. | |||
retrieve PASSporTs. The question of how the CPS authorizes the storage | The STIR architecture assumes that service providers and, in some cases, | |||
and retrieval of PASSporT is thus a key design decision in the architec | end-user devices will have credentials suitable for attesting authority | |||
ture. | over telephone numbers per <xref target="RFC8226" format="default"/>. | |||
The STIR architecture assumes that service providers and in some cases | These credentials provide the most obvious way that a CPS can authorize | |||
end user devices will have credentials suitable for attesting authority over tel | the storage and retrieval of PASSporTs. However, as use cases 3, 4, and 5 | |||
ephone numbers per <xref target="RFC8226"/>. | in <xref target="uses" format="default"/> show, it may sometimes make sense | |||
These credentials provide the most obvious way that a CPS can authorize | for the entity storing or retrieving PASSporTs to be an intermediary rather | |||
the storage and retrieval of PASSporTs. However, as use cases 3, 4 and 5 in <xr | than a device associated with either the originating or terminating side of | |||
ef target="uses"/> show, it may sometimes make sense for the entity | a call; those intermediaries often would not have access to STIR | |||
storing or retrieving PASSporTs to be an intermediary rather than a dev | credentials covering the telephone numbers in question. Requiring authorization | |||
ice associated with either the originating or terminating side of a call, and th | based on a credential to store PASSporTs is therefore undesirable, though | |||
ose intermediaries often would not have access to STIR credentials covering the | potentially acceptable if sufficient steps are taken to mitigate any privacy | |||
telephone numbers in question. Requiring authorization based on a credential to | risk of leaking data. | |||
store PASSporTs is therefore undesirable, though potentially acceptable if suffi | </t> | |||
cient steps are taken to mitigate any privacy risk of leaking data. | <t>It is an explicit design goal of this mechanism to minimize | |||
</t><t> | the potential privacy exposure of using a CPS. Ideally, the out-of-band | |||
It is an explicit design goal of this mechanism to minimize the potenti | mechanism should not result in a worse privacy situation than in-band | |||
al privacy exposure of using a CPS. Ideally, the out-of-band | STIR <xref target="RFC8224" format="default"/>: for in-band, we might say | |||
mechanism should not result in a worse privacy situation than in-band < | that a SIP entity is authorized to receive a PASSporT if it is an intermediate | |||
xref target="RFC8224"/> STIR: for in-band, we might say that a SIP entity is aut | or final target of the routing of a SIP request. As the originator of a | |||
horized to receive a PASSporT if it | call cannot necessarily predict the routing path a call will follow, an | |||
is an intermediate or final target of the routing of a SIP request. As | out-of-band mechanism could conceivably even improve on the privacy story. | |||
the originator of a call cannot necessarily predict the routing path a call will | </t> | |||
follow, an out-of-band mechanism could conceivably | <t>Broadly, the architecture recommended here thus is one focused | |||
even improve on the privacy story. | on permitting any entity to store encrypted PASSporTs at the CPS, indexed | |||
</t><t> | under the called number. PASSporTs will be encrypted with a public key | |||
Broadly, the architecture recommended here thus is one focused on permi | associated with the called number, so these PASSporTs may safely be retrieved | |||
tting any entity to store | by any entity because only holders of the corresponding private key will be | |||
encrypted PASSporTs at the CPS, indexed under the called number. PASSpo | able to decrypt the PASSporT. This also prevents the CPS itself from | |||
rTs will be encrypted with a public key associated with the called number, so th | learning the contents of PASSporTs, and thus metadata about calls in | |||
ese PASSporTs may safely be retrieved by any entity, as | progress, which makes the CPS a less attractive target for pervasive | |||
only holders of the corresponding private key will be able to decrypt t | monitoring (see <xref target="RFC7258" format="default"/>). As a first | |||
he PASSporT. This also prevents the CPS itself from learning the contents of PA | step, transport-level security can provide confidentiality from eavesdroppers | |||
SSporTs, and thus metadata about calls in progress, which makes the CPS a less a | for both the storing and retrieval of PASSporTs. To bolster the privacy story, | |||
ttractive target for pervasive monitoring (see <xref target="RFC7258"/>). As a f | to prevent denial-of-service flooding of the CPS, and to complicate traffic | |||
irst step, transport-level security can provide confidentiality from eavesdroppe | analysis, a few additional mechanisms are also recommended below. | |||
rs for both the storing and retrieval of PASSporTs. To bolster the privacy story | </t> | |||
, prevent denial-of-service flooding of the CPS, and to complicate traffic analy | <section anchor="stor" numbered="true" toc="default"> | |||
sis, a few additional mechanisms are also recommended below. | <name>Storage</name> | |||
<t>There are a few dimensions to authorizing the storage of PASSporTs. | ||||
</t> | Encrypting PASSporTs prior to storage entails that a CPS has no way to tell | |||
<section anchor="stor" title="Storage"> | if a PASSporT is valid; it simply conveys encrypted blocks that it cannot | |||
<t> | access itself and can make no authorization decision based on the PASSporT | |||
There are a few dimensions to authorizing the storage of PASSporTs. Enc | contents. There is certainly no prospect for the CPS to verify the PASSporTs its | |||
rypting PASSporTs prior to storage entails that a CPS has no way to tell if a PA | elf. | |||
SSporT is valid; it simply conveys encrypted | </t> | |||
blocks that it cannot access itself, and can make no authorization deci | <t>Note that this architecture requires clients that store PASSporTs | |||
sion based on the PASSporT contents. There is certainly no prospect for the CPS | to have access to an encryption key associated with the intended called party | |||
to verify the PASSporTs itself. | to be used to encrypt the PASSporT. Discovering this key requires the existence | |||
</t><t> | of a key lookup service (see <xref target="lookup" format="default"/>), | |||
Note that this architecture requires clients that store PASSporTs to ha | depending on how the CPS is architected; however, some kind of key store or | |||
ve access to an encryption key associated with the intended called party to be u | repository could be implemented adjacent to it and perhaps even incorporated | |||
sed to encrypt the PASSporT. Discovering this key requires the existence of a ke | into its operation. Key discovery is made more complicated by the fact that | |||
y lookup service (see <xref target="lookup"/>); depending on how the CPS is arch | there can potentially be multiple entities that have | |||
itected, however, some kind of key store or repository could be implemented adja | authority over a telephone number: a carrier, a reseller, an enterprise, | |||
cent to it, and perhaps even incorporated into its operation. Key discovery is m | and an end user might all have credentials permitting them to attest that they | |||
ade more complicated by the fact that there can potentially be multiple entities | are allowed to originate calls from a number, say. PASSporTs for out-of-band use | |||
that have | therefore might need to be encrypted with multiple keys in the hopes that one | |||
authority over a telephone number: a carrier, a reseller, an enterprise | will be decipherable by the relying party. | |||
, and an end user might all have credentials permitting them to attest that they | </t> | |||
are allowed to originate calls from a number, say. PASSporTs for out-of-band us | <t>Again, the most obvious way to authorize storage is to require | |||
e therefore might need to be encrypted with multiple keys in the hopes that one | the originator to authenticate themselves to the CPS with their STIR credential. | |||
will be decipherable by the relying party. | However, since the call is indexed at the CPS under the called number, | |||
</t><t> | this can weaken the privacy story of the architecture, as it reveals to | |||
Again, the most obvious way to authorize storage is to require the orig | the CPS both the identity of the caller and the callee. Moreover, it does not wo | |||
inator to authenticate themselves to the CPS with their STIR credential. However | rk | |||
, since the call is indexed at the CPS under the called number, this can weaken | for the gateway use cases described above; to support those use cases, we must | |||
the privacy story of the architecture, as it reveals to the CPS both the identit | effectively allow any entity to store PASSporTs at a CPS. This does not degrade | |||
y of the caller and the callee. Moreover, it does not work for the gateway use c | the anti-impersonation security of STIR, because entities who do not possess | |||
ases described above; to support those use cases, we must effectively allow any | the necessary credentials to sign the PASSporT will not be able to create | |||
entity to store PASSporTs at a CPS. This does not degrade the anti-impersonation | PASSporTs that will be treated as valid by verifiers. In this architecture, | |||
security of STIR, because entities who do not possess the necessary credentials | it does not matter whether the CPS received a PASSporT from the authentication | |||
to sign the PASSporT will not be able to create PASSporTs that will be treated | service that created it or from an intermediary gateway downstream in the | |||
as valid by verifiers. In this architecture, it does not matter whether the CPS | routing path as in case 4 above. However, if literally anyone can store | |||
received a PASSporT from the authentication service that created it or from an i | PASSporTs in the CPS, an attacker could easily flood the CPS with millions | |||
ntermediary gateway downstream in the routing path as in case 4 above. However, | of bogus PASSporTs indexed under a calling number, and thereby prevent the calle | |||
if literally anyone can store PASSporTs in the CPS, an attacker could easily flo | d | |||
od the CPS with millions of bogus PASSporTs indexed under a calling number, and | party from finding a valid PASSporT for an incoming call buried in a haystack of | |||
thereby prevent the called | fake entries. | |||
party from finding a valid PASSporT for an incoming call buried in a ha | </t> | |||
ystack of fake entries. | <t>The solution architecture must therefore include some sort of traffic | |||
</t><t> | control system to prevent flooding. Preferably, this should not require | |||
The solution architecture must therefore include some sort of traffic c | authenticating the source, as this will reveal to the CPS both the source and | |||
ontrol system to prevent flooding. Preferably, this should not require authentic | destination of traffic. A potential solution is discussed below in <xref target= | |||
ating the source, as this will reveal to the CPS both the source and destination | "rate-control" format="default"/>. | |||
of traffic. A potential solution is discussed below in <xref target="rate-contr | </t> | |||
ol"/>. | </section> | |||
</t> | <section anchor="retr" numbered="true" toc="default"> | |||
</section> | <name>Retrieval</name> | |||
<section anchor="retr" title="Retrieval"> | <t>For retrieval of PASSporTs, this architecture assumes that clients wi | |||
<t> | ll | |||
For retrieval of PASSporTs, this architecture assumes that clients will | contact the CPS through some sort of polling or notification interface to receiv | |||
contact the CPS through some sort of polling or notification interface to recei | e all | |||
ve all | current PASSporTs for calls destined to a particular telephone number, or block | |||
current PASSporTs for calls destined to a particular telephone number, | of numbers. | |||
or block of numbers. | </t> | |||
</t> | <t>As PASSporTs stored at the CPS are encrypted with a key belonging | |||
<t> | to the intended destination, the CPS can safely allow anyone to download PASSpor | |||
As PASSporTs stored at the CPS are encrypted with a key belonging to th | Ts | |||
e intended destination, the CPS can safely | for a called number without much fear of compromising private information | |||
allow anyone to download PASSporTs for a called number without much fea | about calls in progress -- provided that the CPS always returns at least one | |||
r of compromising private information about calls in progress - provided that th | encrypted blob in response to a request, even if there was no call in progress. | |||
e CPS always returns at least one encrypted blob in response to a request, even | Otherwise, entities could poll the CPS constantly, or eavesdrop on traffic, | |||
if there was no call in progress. Otherwise, entities could poll the CPS constan | to learn whether or not calls were in progress. The CPS <bcp14>MUST</bcp14> gene | |||
tly, or eavesdrop on traffic, to learn whether or not calls were in progress. Th | rate | |||
e CPS MUST generate at least one unique and plausible encrypted response to all | at least one unique and plausible encrypted response to all retrieval requests, | |||
retrieval requests, and these dummy encrypted PASSporTs MUST NOT be repeated for | and these dummy encrypted PASSporTs <bcp14>MUST NOT</bcp14> be repeated for | |||
later calls. An encryption scheme needs to be carefully chosen to make messages | later calls. An encryption scheme needs to be carefully chosen to make messages | |||
look indistinguishable from random when encrypted, so that information about ca | look indistinguishable from random when encrypted, so that information about the | |||
lled party is not discoverable from legitimate encrypted PASSporTs. | called party is not discoverable from legitimate encrypted PASSporTs. | |||
</t><t> | </t> | |||
Because the entity placing a call may discover multiple keys associated | <t>Because the entity placing a call may discover multiple keys | |||
with the called party number, multiple valid PASSporTs may be stored in the CPS | associated with the called party number, multiple valid PASSporTs may be | |||
. A particular called party who retrieves PASSporTs from the CPS may have access | stored in the CPS. A particular called party who retrieves PASSporTs from | |||
to only one of those keys. Thus, the presence of one or more PASSporTs that the | the CPS may have access to only one of those keys. Thus, the presence of | |||
called party cannot decrypt - which would be indistinguishable from the "dummy" | one or more PASSporTs that the called party cannot decrypt -- which would | |||
PASSporTS created by the CPS when no calls are in progress - does not entail th | be indistinguishable from the "dummy" PASSporTs created by the CPS when | |||
at there is no call in progress. A retriever likely will need to decrypt all PAS | no calls are in progress - does not entail that there is no call in progress. | |||
SporTs retrieved from the CPS, and may find only one that is valid. | A retriever likely will need to decrypt all PASSporTs retrieved from the CPS, | |||
</t><t> | and may find only one that is valid. | |||
In order to prevent the CPS from learning the numbers that a callee controls, ca | </t> | |||
llees might also request PASSporTs for numbers that they do not own, that they h | <t>In order to prevent the CPS from learning the numbers that a callee | |||
ave no hope of decrypting. Implementations could even allow a callee to request | controls, callees might also request PASSporTs for numbers that they do not own, | |||
PASSporTs for a range or prefix of numbers: a trade-off where that callee is wil | that they have no hope of decrypting. Implementations could even allow a callee | |||
ling to sift through bulk quantities of undecryptable PASSporTs for the sake of | to request PASSporTs for a range or prefix of numbers: a trade-off where that | |||
hiding from the CPS what numbers it controls. | callee is willing to sift through bulk quantities of undecryptable PASSporTs | |||
</t><t> | for the sake of hiding from the CPS which numbers it controls. | |||
Note that in out-of-band call forwarding cases, special behavior is req | </t> | |||
uired to manage the relationship between PASSporTs using the diversion extension | <t>Note that in out-of-band call forwarding cases, special behavior is | |||
<xref target="I-D.ietf-stir-passport-divert"/>. The originating authentication | required to manage the relationship between PASSporTs using the diversion | |||
service would encrypt the initial PASSporT with the public encryption key of the | extension <xref target="I-D.ietf-stir-passport-divert" format="default"/>. | |||
intended destination, but once a call is forwarded, it may go to a destination | The originating authentication service encrypts the initial PASSporT with the | |||
that does not possess the corresponding private key and thus could not decrypt t | public encryption key of the intended destination, but once a call is forwarded, | |||
he original PASSporT. This requires the retargeting entity to generate encrypted | it may go to a destination that does not possess the corresponding private key | |||
PASSporTs that show a secure chain of diversion: a retargeting storer SHOULD us | and thus could not decrypt the original PASSporT. This requires the retargeting | |||
e the "div-o" PASSporT type, with its "opt" extension, as specified in <xref ta | entity to generate encrypted PASSporTs that show a secure chain of diversion: | |||
rget="I-D.ietf-stir-passport-divert"/> in order to nest the original PASSporT wi | a retargeting storer <bcp14>SHOULD</bcp14> use the "div-o" PASSporT type, | |||
thin the encrypted diversion PASSporT. | with its "opt" extension, as specified in | |||
</t> | <xref target="I-D.ietf-stir-passport-divert" format="default"/>, in order to nes | |||
</section> | t | |||
</section> | the original PASSporT within the encrypted diversion PASSporT. | |||
</t> | ||||
<section anchor="arch" title="Solution Architecture"> | </section> | |||
</section> | ||||
<section anchor="arch" numbered="true" toc="default"> | ||||
<name>Solution Architecture</name> | ||||
<t>In this section, we discuss a high-level architecture for providing the service | <t>In this section, we discuss a high-level architecture for providing the service | |||
described in the previous sections. This discussion is deliberately | described in the previous sections. This discussion is deliberately | |||
sketchy, focusing on broad concepts and skipping over details. The | sketchy, focusing on broad concepts and skipping over details. The | |||
intent here is merely to provide an overall architecture, not an implementabl e | intent here is merely to provide an overall architecture, not an implementabl e | |||
specification. A more concrete example of how this might be specified is give | specification. A more concrete example of how this might be specified is give | |||
n in <xref target="web"/>. | n in <xref target="web" format="default"/>. | |||
</t> | </t> | |||
<section anchor="phone" title="Credentials and Phone Numbers"> | <section anchor="phone" numbered="true" toc="default"> | |||
<t> | <name>Credentials and Phone Numbers</name> | |||
We start from the premise of the <xref target="RFC7340">STIR problem statemen | <t>We start from the premise of the | |||
t</xref> that phone numbers can be | <xref target="RFC7340" format="default">STIR problem statement</xref> that ph | |||
associated with credentials which can be used to attest | one numbers can be | |||
associated with credentials that can be used to attest | ||||
ownership of numbers. For purposes of exposition, we will assume | ownership of numbers. For purposes of exposition, we will assume | |||
that ownership is associated with the endpoint (e.g., a smartphone) | that ownership is associated with the endpoint (e.g., a smartphone), | |||
but it might well be associated with a provider or gateway acting for the | but it might well be associated with a provider or gateway acting for the | |||
endpoint instead. It might be the case that multiple entities are | endpoint instead. It might be the case that multiple entities are | |||
able to act for a given number, provided that they have the | able to act for a given number, provided that they have the | |||
appropriate authority. <xref target="RFC8226"/> describes | appropriate authority. <xref target="RFC8226" format="default"/> describes | |||
a credential system suitable for this purpose; the question of how an entity is determined | a credential system suitable for this purpose; the question of how an entity is determined | |||
to have control of a given number is out of scope for the current document. | to have control of a given number is out of scope for this document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="solve" title="Call Flow"> | <section anchor="solve" numbered="true" toc="default"> | |||
<t> | <name>Call Flow</name> | |||
An overview of the basic calling and verification process is show | <t>An overview of the basic calling and verification process is shown | |||
n | ||||
below. In this diagram, we assume that Alice has the number | below. In this diagram, we assume that Alice has the number | |||
+1.111.555.1111 and Bob has the number +2.222.555.2222. | +1.111.555.1111 and Bob has the number +2.222.555.2222. | |||
</t> | </t> | |||
<figure> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Alice Call Placement Service Bob | Alice Call Placement Service Bob | |||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
Store Encrhypted PASSporT for 2.222.555.2222 -> | Store Encrypted PASSporT for 2.222.555.2222 -> | |||
Call from 1.111.555.1111 ------------------------------------------> | Call from 1.111.555.1111 ------------------------------------------> | |||
<-------------- Request PASSporT(s) | <-------------- Request PASSporT(s) | |||
for 2.222.555.2222 | for 2.222.555.2222 | |||
Obtain Encrypted PASSporT --------> | Obtain Encrypted PASSporT --------> | |||
(2.222.555.2222, 1.111.555.1111) | (2.222.555.2222, 1.111.555.1111) | |||
[Ring phone with verified callerid | [Ring phone with verified callerid | |||
= 1.111.555.1111] | = 1.111.555.1111] | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t>When Alice wishes to make a call to Bob, she contacts the CPS and | |||
<t> | ||||
When Alice wishes to make a call to Bob, she contacts the CPS and | ||||
stores an encrypted PASSporT on | stores an encrypted PASSporT on | |||
the CPS indexed under Bob's number. The CPS then awaits retrievals for | the CPS indexed under Bob's number. The CPS then awaits retrievals for | |||
that number. | that number. | |||
</t> | </t> | |||
<t> | <t>When Alice places the call, Bob's phone would usually ring and displa | |||
When Alice places the call, Bob's phone would usually ring and display | y | |||
Alice's number (+1.111.555.1111), which is informed by the existing | Alice's number (+1.111.555.1111), which is informed by the existing | |||
PSTN mechanisms for relaying a calling party number (e.g., the CIN field of t | PSTN mechanisms for relaying a calling party number (e.g., the | |||
he IAM). Instead, | Calling Party's Number (CIN) field of | |||
the Initial Address Message (IAM)). Instead, | ||||
Bob's phone transparently contacts the CPS and requests any current | Bob's phone transparently contacts the CPS and requests any current | |||
PASSporTs for calls to his number. The CPS responds with any such PASSporTs | PASSporTs for calls to his number. The CPS responds with any such PASSporTs | |||
(or dummy PASSporTs if no relevant ones are currently stored). | (or dummy PASSporTs if no relevant ones are currently stored). | |||
If such a PASSporT exists, and the verification service in Bob's phone decrypts it using | If such a PASSporT exists, and the verification service in Bob's phone decrypts it using | |||
his private key, validates it, then | his private key, validates it, then | |||
Bob's phone can present the calling party number | Bob's phone can present the calling party number | |||
information as valid. Otherwise, the call is unverifiable. Note | information as valid. Otherwise, the call is unverifiable. Note | |||
that this does not necessarily mean that the call is bogus; because | that this does not necessarily mean that the call is bogus; because | |||
we expect incremental deployment, many legitimate calls will be | we expect incremental deployment, many legitimate calls will be | |||
unverifiable. | unverifiable. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec" numbered="true" toc="default"> | ||||
<name>Security Analysis</name> | ||||
<section anchor="sec" title="Security Analysis"> | <t>The primary attack we seek to prevent is an attacker convincing the | |||
<t> | ||||
The primary attack we seek to prevent is an attacker convincing the | ||||
callee that a given call is from some other caller C. There are two | callee that a given call is from some other caller C. There are two | |||
scenarios to be concerned with: | scenarios to be concerned with: | |||
</t><t><list style="numbers"><t> | </t> | |||
The attacker wishes to impersonate a target when no call from that | <ol spacing="normal" type="1"> | |||
<li>The attacker wishes to impersonate a target when no call from that | ||||
target is in progress. | target is in progress. | |||
</t><t> | </li> | |||
The attacker wishes to substitute himself for an existing call setup. | <li>The attacker wishes to substitute himself for an existing call set | |||
</t></list></t><t> | up. | |||
If an attacker can inject fake PASSporTs into the CPS or in the | </li> | |||
</ol> | ||||
<t>If an attacker can inject fake PASSporTs into the CPS or in the | ||||
communication from the CPS to the callee, he can mount either attack. | communication from the CPS to the callee, he can mount either attack. | |||
As PASSporTs should be | As PASSporTs should be | |||
digitally signed by an appropriate authority for the number and verified by t he callee | digitally signed by an appropriate authority for the number and verified by t he callee | |||
(see <xref target="phone"/>), this should not arise in ordinary operations. | (see <xref target="phone" format="default"/>), this should not arise in ordin | |||
Any attacker who is aware of calls in progress can attempt to mount a race to | ary operations. | |||
subtitute themselves | Any attacker who is aware of calls in progress can attempt to mount a race to | |||
as described in <xref target="sub"/>. For privacy and robustness reasons, | substitute themselves | |||
using <xref target="RFC8446">TLS</xref> on the originating side when storing | as described in <xref target="sub" format="default"/>. For privacy and robust | |||
the PASSporT at the CPS is RECOMMENDED. | ness reasons, | |||
</t><t> | using <xref target="RFC8446" format="default">TLS</xref> on the originating | |||
The entire system depends on the security of the credential | side when storing the PASSporT at the CPS is <bcp14>RECOMMENDED</bcp14>. | |||
</t> | ||||
<t>The entire system depends on the security of the credential | ||||
infrastructure. If the authentication credentials for a given number | infrastructure. If the authentication credentials for a given number | |||
are compromised, then an attacker can impersonate calls from that | are compromised, then an attacker can impersonate calls from that | |||
number. However, that is no different from in-band <xref target="RFC8224"/> S | number. However, that is no different from in-band STIR <xref target="RFC8224 | |||
TIR. | " format="default"/>. | |||
</t><t> | </t> | |||
A secondary attack we must also prevent is denial-of-service against the | <t>A secondary attack we must also prevent is denial-of-service against | |||
CPS, which requires some form of rate control solution that will not degrade the | the CPS, which requires some form of rate control solution that will not degrade | |||
privacy properties of the architecture. | the privacy properties of the architecture. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sub" title="Substitution Attacks"> | <section anchor="sub" numbered="true" toc="default"> | |||
<t> | <name>Substitution Attacks</name> | |||
All the receipt of the PASSporT from the CPS proves to the called party | <t>All that the receipt of the PASSporT from the CPS proves to the calle | |||
d party | ||||
is that Alice is trying to call | is that Alice is trying to call | |||
Bob (or at least was as of very recently) - it does not prove that | Bob (or at least was as of very recently) -- it does not prove that | |||
any particular incoming call is from Alice. Consider the scenario | any particular incoming call is from Alice. Consider the scenario | |||
in which we have a service which provides an automatic callback to a | in which we have a service that provides an automatic callback to a | |||
user-provided number. In that case, the attacker can try to arrange for a | user-provided number. In that case, the attacker can try to arrange for a | |||
false caller-id value, as shown below:</t> | false caller-id value, as shown below:</t> | |||
<figure> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Attacker Callback Service CPS Bob | Attacker Callback Service CPS Bob | |||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
Place call to Bob ----------> | Place call to Bob ----------> | |||
(from 111.555.1111) | (from 111.555.1111) | |||
Store PASSporT for | Store PASSporT for | |||
CS:Bob -------------> | CS:Bob -------------> | |||
Call from Attacker (forged CS caller-id info) --------------------> | Call from Attacker (forged CS caller-id info) --------------------> | |||
Call from CS ------------------------> X | Call from CS ------------------------> X | |||
<-- Retrieve PASSporT | <-- Retrieve PASSporT | |||
for CS:Bob | for CS:Bob | |||
PASSporT for CS:Bob ------------------------> | PASSporT for CS:Bob ------------------------> | |||
[Ring phone with callerid = | [Ring phone with callerid = | |||
111.555.1111] | 111.555.1111] | |||
]]></artwork> | ]]></artwork> | |||
</figure><t> | <t>In order to mount this attack, the attacker contacts the Callback | |||
In order to mount this attack, the attacker contacts the Callbac | ||||
k | ||||
Service (CS) and provides it with Bob's number. This causes the CS | Service (CS) and provides it with Bob's number. This causes the CS | |||
to initiate a call to Bob. As before, the CS contacts the CPS to | to initiate a call to Bob. As before, the CS contacts the CPS to | |||
insert an appropriate PASSporT and then initiates a call to Bob. Because | insert an appropriate PASSporT and then initiates a call to Bob. Because | |||
it is a valid CS injecting the PASSporT, none of the security checks | it is a valid CS injecting the PASSporT, none of the security checks | |||
mentioned above help. However, the attacker simultaneously initiates | mentioned above help. However, the attacker simultaneously initiates | |||
a call to Bob using forged caller-id information corresponding to the | a call to Bob using forged caller-id information corresponding to the | |||
CS. If he wins the race with the CS, then Bob's phone will attempt | CS. If he wins the race with the CS, then Bob's phone will attempt | |||
to verify the attacker's call (and succeed since they are | to verify the attacker's call (and succeed since they are | |||
indistinguishable) and the CS's call will go to busy/voice mail/call | indistinguishable), and the CS's call will go to busy/voice mail/call | |||
waiting. | waiting. | |||
</t><t> | </t> | |||
<t> | ||||
In order to prevent a passive attacker from using traffic analysis or | In order to prevent a passive attacker from using traffic analysis or | |||
similar means to learn precisely when a call is placed, it is essential | similar means to learn precisely when a call is placed, it is essential | |||
that the connection between the caller and the CPS be encrypted as recommende d above. | that the connection between the caller and the CPS be encrypted as recommende d above. | |||
Authentication services could store dummy PASSporTs at the CPS at random inte rvals in order | Authentication services could store dummy PASSporTs at the CPS at random inte rvals in order | |||
to make it more difficult for an eavesdropper to use traffic analysis to dete rmine | to make it more difficult for an eavesdropper to use traffic analysis to dete rmine | |||
that a call was about to be placed. | that a call was about to be placed. | |||
</t><t> | </t> | |||
<t> | ||||
Note that in a SIP environment, the callee might notice that | Note that in a SIP environment, the callee might notice that | |||
there were multiple INVITEs and thus detect this attack, but in some PSTN | there were multiple INVITEs and thus detect this attack, but in some PSTN | |||
interworking scenarios, or highly intermediated networks, only one call setup | interworking scenarios, or highly intermediated networks, only one call setup | |||
attempt will reach the target. Also note that the success of this substitutio n | attempt will reach the target. Also note that the success of this substitutio n | |||
attack depends on the attacker landing their call within the narrow window | attack depends on the attacker landing their call within the narrow window | |||
that the PASSporT is retained in the CPS, so | that the PASSporT is retained in the CPS, so | |||
shortening that window will reduce the | shortening that window will reduce the | |||
opportunity for the attack. Finally, smart endpoints could implement some sor t of | opportunity for the attack. Finally, smart endpoints could implement some sor t of | |||
state coordination to ensure that both sides believe the call is in progress, though | state coordination to ensure that both sides believe the call is in progress, though | |||
methods of supporting that are outside the scope of this document. | methods of supporting that are outside the scope of this document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="rate-control" title="Rate Control for CPS Storage"> | <section anchor="rate-control" numbered="true" toc="default"> | |||
<t> | <name>Rate Control for CPS Storage</name> | |||
In order to prevent the flooding of a CPS with bogus PASSporTs, we prop | <t>In order to prevent the flooding of a CPS with bogus PASSporTs, | |||
ose the use of "blind signatures" (see <xref target="RFC5636"/>). A sender will | we propose the use of "blind signatures" (see <xref target="RFC5636" format="def | |||
initially authenticate to the CPS using its STIR credentials, and acquire a sign | ault"/>). | |||
ed token from the CPS that will be presented later when storing a | A sender will initially authenticate to the CPS using its STIR credentials | |||
PASSporT. The flow looks as follows: | and acquire a signed token from the CPS that will be presented later | |||
</t> | when storing a PASSporT. The flow looks as follows: | |||
<figure> | </t> | |||
<artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Sender CPS | Sender CPS | |||
Authenticate to CPS ---------------------> | Authenticate to CPS ---------------------> | |||
Blinded(K_temp) -------------------------> | Blinded(K_temp) -------------------------> | |||
<------------- Sign(K_cps, Blinded(K_temp)) | <------------- Sign(K_cps, Blinded(K_temp)) | |||
[Disconnect] | [Disconnect] | |||
Sign(K_cps, K_temp) | Sign(K_cps, K_temp) | |||
Sign(K_temp, E(K_receiver, PASSporT)) ---> | Sign(K_temp, E(K_receiver, PASSporT)) ---> | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t>At an initial time when no call is yet in progress, a potential clien | |||
<t> | t connects to the CPS, authenticates, | |||
At an initial time when no call is yet in progress, a potential client connects | ||||
to the CPS, authenticates, | ||||
and sends a blinded version of a freshly generated public key. The | and sends a blinded version of a freshly generated public key. The | |||
CPS returns a signed version of that blinded key. The sender can | CPS returns a signed version of that blinded key. The sender can | |||
then unblind the key and gets a signature on K_temp from the CPS. | then unblind the key and get a signature on K_temp from the CPS. | |||
</t><t> | </t> | |||
<t> | ||||
Then later, when a client wants to store a PASSporT, it connects | Then later, when a client wants to store a PASSporT, it connects | |||
to the CPS anonymously (preferably over a network connection that cannot be corr elated with the token acquisition) and | to the CPS anonymously (preferably over a network connection that cannot be corr elated with the token acquisition) and | |||
sends both the signed K_temp and its own signature over the | sends both the signed K_temp and its own signature over the | |||
encrypted PASSporT. The CPS verifies both signatures and if they | encrypted PASSporT. The CPS verifies both signatures and, if they | |||
verify, stores the encrypted passport (discarding the signatures). | verify, stores the encrypted passport (discarding the signatures). | |||
</t><t> | </t> | |||
<t> | ||||
This design lets the CPS rate limit how many PASSporTs a given | This design lets the CPS rate limit how many PASSporTs a given | |||
sender can store just by counting how many times K_temp appears; perhaps CPS pol | sender can store just by counting how many times K_temp appears; | |||
icy might reject storage attempts and require acquisition of a new K_temp after | perhaps CPS policy might reject storage attempts and require acquisition | |||
storing more than a certain number of PASSporTs indexed under the same destinati | of a new K_temp after storing more than a certain number of PASSporTs | |||
on number in a short interval. This does not of course allow the CPS to tell whe | indexed under the same destination number in a short interval. | |||
n bogus data is being provisioned by an attacker, | This does not, of course, allow the CPS to tell when bogus data | |||
simply the rate at which data is being provisioned. Potentially, feedback mechan | is being provisioned by an attacker, | |||
isms could be developed that would allow the called parties to tell the CPS when | simply the rate at which data is being provisioned. Potentially, | |||
they are receiving unusual or bogus | feedback mechanisms could be developed that would allow the called | |||
parties to tell the CPS when they are receiving unusual or bogus | ||||
PASSporTs. | PASSporTs. | |||
</t><t> | </t> | |||
This architecture also assumes that the CPS will age out PASSporTs. A C | <t> | |||
PS SHOULD NOT keep any stored PASSporT for no longer than a value that might be | This architecture also assumes that the CPS will age out PASSporTs. | |||
selected for the verification service policy for freshness of the "iat" value as | A CPS <bcp14>SHOULD NOT</bcp14> keep any stored PASSporT for longer | |||
described in <xref target="RFC8224"/> (i.e. sixty seconds). Any reduction in th | than the recommended freshness | |||
is window makes substitution attacks (see <xref target="sub"/>) harder to mount, | policy for the "iat" value as described in | |||
but making the window too small might conceivably age PASSporTs out while a hea | <xref target="RFC8224" format="default"/> (i.e., sixty seconds) | |||
vily redirected call is still alerting. | unless some local policy for a CPS deployment requires a longer or shorter inter | |||
</t><t> | val. | |||
An alternative potential approach to blind signatures would be the use of oblivi | Any reduction in this window makes substitution attacks | |||
ous pseudorandom functions (VOPRFs, per <xref target="I-D.privacy-pass"/>), whic | (see <xref target="sub" format="default"/>) harder to mount, | |||
h move prove faster. | but making the window too small might conceivably age PASSporTs out | |||
</t> | while a heavily redirected call is still alerting. | |||
</section> | </t> | |||
<t> | ||||
An alternative potential approach to blind signatures would be | ||||
the use of verifiable oblivious pseudorandom functions (VOPRFs, per | ||||
<xref target="I-D.privacy-pass" format="default"/>), which may prove faster. | ||||
</t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="u8224" numbered="true" toc="default"> | ||||
<section anchor="u8224" title="Authentication and Verification Service Be | <name>Authentication and Verification Service Behavior for Out-of-Band</na | |||
havior for Out-of-Band"> | me> | |||
<t> | <t> | |||
<xref target="RFC8224"/> defines an authentication service and a verifica | <xref target="RFC8224" format="default"/> defines an authentication service and | |||
tion service as functions that act in the context of SIP requests and responses. | a verification service as functions that act in the context of SIP requests and | |||
This specification thus provides a more generic description of authentication s | responses. This specification thus provides a more generic description of authen | |||
ervice and verification service behavior that might or might not involve any SIP | tication service and verification service behavior that might or might not invol | |||
transactions, but depends only on placing a request for communications from | ve any SIP transactions, but depends only on placing a request for communication | |||
an originating identity to one or more destination identities. | s from | |||
</t> | an originating identity to one or more destination identities. | |||
<section anchor="as" title="Authentication Service (AS)"> | </t> | |||
<t> | <section anchor="as" numbered="true" toc="default"> | |||
Out-of-band authentication services perform steps similar to those define | <name>Authentication Service (AS)</name> | |||
d in <xref target="RFC8224"/> with some exceptions: | <t> | |||
</t><t> | Out-of-band authentication services perform steps similar to those defined in <x | |||
Step 1: The authentication service MUST determine whether it is | ref target="RFC8224" format="default"/> with some exceptions: | |||
</t> | ||||
<t> | ||||
Step 1: The authentication service <bcp14>MUST</bcp14> determine whether it is | ||||
authoritative for the identity of the originator of the request, that is, th e identity it will populate in the "orig" claim of the PASSporT. | authoritative for the identity of the originator of the request, that is, th e identity it will populate in the "orig" claim of the PASSporT. | |||
It can do so only if it possesses the private key of one or more credenti | It can do so only if it possesses the private key of one or more credentials tha | |||
als that can be used | t can be used | |||
to sign for that identity, be it a domain or a telephone number or some othe | to sign for that identity, be it a domain or a telephone number or some othe | |||
r identifier. For example, the authentication service could hold the private key | r identifier. For example, the authentication service could hold the private key | |||
associated with a <xref target="RFC8225">STIR certificate</xref>. | associated with a <xref target="RFC8225" format="default">STIR certificate</xre | |||
</t><t> | f>. | |||
Step 2: The authentication service MUST determine that the originator of | </t> | |||
communications can claim the originating identity. This is a policy | <t> | |||
decision made by the authentication service that depends on its relations | Step 2: The authentication service <bcp14>MUST</bcp14> determine that the | |||
hip to the originator. For an out-of-band application built-in to the | originator of communications can claim the originating identity. This is a polic | |||
calling device, for example, this is the same check performed in Step 1: | y | |||
does the calling device hold a private key, one corresponding to a STIR certific | decision made by the authentication service that depends on its relationship to | |||
ate, | the originator. For an out-of-band application built into the | |||
that can sign for the originating identity? | calling device, for example, this is the same check performed in Step 1: does th | |||
</t><t> | e | |||
Step 3: The authentication service MUST acquire the public encryption key | calling device hold a private key, one corresponding to a STIR certificate, | |||
of the destination, which will be used to encrypt the PASSporT (see <xref targe | that can sign for the originating identity? | |||
t="lookup"/>). It MUST also discover (see <xref target="cps"/>) | </t> | |||
the CPS associated with the destination. The authentication service | <t anchor="as-step3"> | |||
may already have the encryption key and destination CPS cached, or may ne | Step 3: The authentication service <bcp14>MUST</bcp14> acquire the public encryp | |||
ed to query a service to acquire the key. Note that per <xref target="rate-contr | tion key | |||
ol"/> the authentication service may also need to acquire a token for PASSporT s | of the destination, which will be used to encrypt the PASSporT (see <xref target | |||
torage from the CPS upon CPS discovery. It is anticipated that the discovery mec | ="lookup" format="default"/>). | |||
hanism (see <xref target="cps"/>) used to find the appropriate | It <bcp14>MUST</bcp14> also discover (see <xref target="cps" format="default"/>) | |||
CPS will also find the proper key server for the public key of the destin | the CPS associated with the destination. The authentication service | |||
ation. In some cases, a destination may have multiple public encryption keys ass | may already have the encryption key and destination CPS cached, or may need | |||
ociated with it. In that case, the authentication service MUST collect all of th | to query a service to acquire the key. Note that per <xref target="rate-control" | |||
ose keys. | format="default"/>, | |||
</t><t> | the authentication service may also need to acquire a token for PASSporT | |||
Step 4: The authentication service MUST create the PASSporT object. This | storage from the CPS upon CPS discovery. It is anticipated that the discovery me | |||
includes acquiring the system time to populate the "iat" claim, and populating t | chanism | |||
he "orig" and "dest" claims as | (see <xref target="cps" format="default"/>) used to find the appropriate | |||
described in <xref target="RFC8225"/>. The authentication service MUST th | CPS will also find the proper key server for the public key of the destination. | |||
en encrypt the PASSporT. If in Step 3 the authentication service discovered mult | In some cases, a destination may have multiple public encryption keys associated | |||
iple public keys for the destination, it | with it. | |||
MUST create one encrypted copy for each public key it discovered. | In that case, the authentication service <bcp14>MUST</bcp14> collect all of thos | |||
</t><t> | e keys. | |||
Finally, the authentication service stores the encrypted PASSporT(s) at t | </t> | |||
he CPS discovered in Step 3. Only after that is completed should any call be ini | <t> | |||
tiated. Note that a call might be initiated over SIP, and the authentication | Step 4: The authentication service <bcp14>MUST</bcp14> create the PASSporT objec | |||
service would place the same PASSporT in the Identity header field value | t. This includes acquiring the system time to populate the "iat" claim, and popu | |||
of the SIP request - though SIP would carry a cleartext version rather than an e | lating the "orig" and "dest" claims as | |||
ncrypted version sent to the CPS. In that case, out-of-band would serve as a fal | described in <xref target="RFC8225" format="default"/>. The authentication servi | |||
lback mechanism in case the request was not conveyed over SIP end-to-end. Also, | ce <bcp14>MUST</bcp14> then encrypt the PASSporT. If in Step 3 the authenticatio | |||
note that the authentication service MAY | n service discovered multiple public keys for the destination, it | |||
use a compact form of the PASSporT for a SIP request, whereas the version | <bcp14>MUST</bcp14> create one encrypted copy for each public key it disc | |||
stored at the CPS MUST always be a full form PASSporT. | overed. | |||
</t> | </t> | |||
</section> | <t> | |||
<section anchor="vs" title="Verification Service (VS)"> | Finally, the authentication service stores the encrypted PASSporT(s) at the CPS | |||
<t> | discovered in Step 3. Only after that is completed should any call be initiated. | |||
When a call arrives, an out-of-band verification service performs steps s | Note that a call might be initiated over SIP, and the authentication | |||
imilar to those defined in <xref target="RFC8224"/> with some exceptions: | service would place the same PASSporT in the Identity header field value of the | |||
</t><t> | SIP request -- | |||
Step 1: The verification service contacts the CPS and requests all curren | though SIP would carry a cleartext version rather than an encrypted version | |||
t PASSporTs for its destination number; or alternatively it may receive PASSporT | sent to the CPS. In that case, out-of-band would serve as a fallback mechanism | |||
s through a push interface from the CPS in some deployments. The verification se | if the request was not conveyed over SIP end-to-end. Also, note that the | |||
rvice MUST then decrypt all PASSporTs using its private key. Some PASSporTs may | authentication service <bcp14>MAY</bcp14> use a compact form of the PASSporT | |||
not be decryptable for any number of reasons: they may be intended for a differe | for a SIP request, whereas the version stored at the CPS <bcp14>MUST</bcp14> | |||
nt verification service, or they may be "dummy" values inserted by the CPS for p | always be a full-form PASSporT. | |||
rivacy purposes. The next few steps will narrow down the set of PASSporTs that t | </t> | |||
he verification service will examine from that initial decryptable set. | </section> | |||
</t><t> | <section anchor="vs" numbered="true" toc="default"> | |||
Step 2: The verification service MUST determine if any "ppt" extensions i | <name>Verification Service (VS)</name> | |||
n the PASSporTs are unsupported. It takes only the set of supported PASSporTs an | <t> | |||
d applies the next step to them. | When a call arrives, an out-of-band verification service performs steps similar | |||
</t><t> | to those defined in <xref target="RFC8224" format="default"/> with some exceptio | |||
Step 3: The verification service MUST determine if there is an overlap be | ns: | |||
tween the calling party number presented in call signaling and the "orig" field | </t> | |||
of any decrypted PASSporTs. It takes the set of matching PASSporTs and applies t | <t anchor="vs-step1"> | |||
he next step to them. | Step 1: The verification service contacts the CPS and requests all current PASSp | |||
</t><t> | orTs for its destination number; or alternatively it may receive PASSporTs throu | |||
Step 4: The verification service MUST determine if the credentials that s | gh a push interface from the CPS in some deployments. The verification service < | |||
igned each PASSporT are valid, and if the verification service trusts the CA tha | bcp14>MUST</bcp14> then decrypt all PASSporTs using its private key. Some PASSpo | |||
t issued the credentials. It takes the set | rTs may not be decryptable for any number of reasons: they may be intended for a | |||
of trusted PASSporTs to the next step. | different verification service, or they may be "dummy" values inserted by the C | |||
</t><t> | PS for privacy purposes. The next few steps will narrow down the set of PASSporT | |||
Step 5: The verification service MUST check the freshness of the "iat" cl | s that the verification service will examine from that initial decryptable set. | |||
aim of each PASSporT. The exact interval of time that determines freshness is le | </t> | |||
ft to local policy. It takes the set of fresh PASSporTs to the next step. | <t> | |||
</t><t> | Step 2: The verification service <bcp14>MUST</bcp14> determine if any "ppt" exte | |||
Step 6: The verification service MUST check the validity of the signature | nsions in the PASSporTs are unsupported. It takes only the set of supported PASS | |||
over each PASSporT, as described in <xref target="RFC8225"/>. | porTs and applies the next step to them. | |||
</t><t> | </t> | |||
Finally, the verification service will end up with one or more valid PASS | <t> | |||
porTs corresponding to the call it has received. In keeping with baseline STIR, | Step 3: The verification service <bcp14>MUST</bcp14> determine if there is an ov | |||
this document does not dictate any particular treatment of calls that have valid | erlap between the calling party number presented in call signaling and the "orig | |||
PASSporTs associated with them; the handling of the call | " field of any decrypted PASSporTs. It takes the set of matching PASSporTs and a | |||
pplies the next step to them. | ||||
</t> | ||||
<t> | ||||
Step 4: The verification service <bcp14>MUST</bcp14> determine if the credential | ||||
s that signed each PASSporT are valid, and if the verification service trusts th | ||||
e CA that issued the credentials. It takes the set | ||||
of trusted PASSporTs to the next step. | ||||
</t> | ||||
<t> | ||||
Step 5: The verification service <bcp14>MUST</bcp14> check the freshness of the | ||||
"iat" claim of each PASSporT. The exact interval of time that determines freshne | ||||
ss is left to local policy. It takes the set of fresh PASSporTs to the next step | ||||
. | ||||
</t> | ||||
<t> | ||||
Step 6: The verification service <bcp14>MUST</bcp14> check the validity of the s | ||||
ignature over each PASSporT, as described in <xref target="RFC8225" format="defa | ||||
ult"/>. | ||||
</t> | ||||
<t> | ||||
Finally, the verification service will end up with one or more valid PASSporTs c | ||||
orresponding to the call it has received. In keeping with baseline STIR, this do | ||||
cument does not dictate any particular treatment of calls that have valid PASSpo | ||||
rTs associated with them; the handling of the call | ||||
after the verification process depends on how the verification | after the verification process depends on how the verification | |||
service is implemented and on local policy. However, it is anticipated that l ocal policies could involve | service is implemented and on local policy. However, it is anticipated that l ocal policies could involve | |||
making different forwarding decisions in intermediary | making different forwarding decisions in intermediary | |||
implementations, or changing how the user is alerted or how identity | implementations, or changing how the user is alerted or how identity | |||
is rendered in UA implementations. | is rendered in user agent implementations. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="hybrid" title="Gateway Placement Services"> | <section anchor="hybrid" numbered="true" toc="default"> | |||
<t> | <name>Gateway Placement Services</name> | |||
The STIR out-of-band mechanism also supports the presence of gateway plac | <t> | |||
ement services, which do not create PASSporTs themselves, but instead take PASSp | The STIR out-of-band mechanism also supports the presence of gateway placement s | |||
orTs out of signaling protocols and store them at a CPS before gatewaying to a p | ervices, which do not create PASSporTs themselves, but instead take PASSporTs ou | |||
rotocol that cannot carry PASSporTs itself. For example, a SIP gateway that send | t of signaling protocols and store them at a CPS before gatewaying to a protocol | |||
s calls to the PSTN could receive a call with an Identity header field, extract | that cannot carry PASSporTs itself. For example, a SIP gateway that sends calls | |||
a PASSporT from the Identity header field, and store that PASSporT at a CPS. | to the PSTN could receive a call with an Identity header field, extract a PASSp | |||
</t><t> | orT from the Identity header field, and store that PASSporT at a CPS. | |||
To place a PASSporT at a CPS, a gateway MUST perform Step 3 of <xref targ | </t> | |||
et="as"/> above: that is, it must discover the CPS and public key associated wit | <t> | |||
h the destination of the call, and may need to acquire a PASSporT storage token | To place a PASSporT at a CPS, a gateway <bcp14>MUST</bcp14> perform | |||
(see <xref target="stor"/>). Per Step 3 of <xref target="as"/> this may entail d | <xref target="as-step3" format="none">Step 3</xref> of <xref target="as" format= | |||
iscovering several keys. The gateway then collects the in-band PASSporT(s) from | "default"/> above: | |||
the in-band signaling, encrypts the PASSporT(s), and stores them at the CPS. | that is, it must discover the CPS and public key associated with the | |||
</t><t> | destination of the call, and may need to acquire a PASSporT storage token | |||
A similar service could be performed by a gateway that retrieves PASSporT | (see <xref target="stor" format="default"/>). Per <xref target="as-step3" format | |||
s from a CPS and inserts them into signaling protocols that support carrying PAS | ="none">Step 3</xref> | |||
SporTS in-band. This behavior may be defined by future specifications. | of <xref target="as" format="default"/>, this may entail discovering several key | |||
</t> | s. | |||
</section> | The gateway then collects the in-band PASSporT(s) from the in-band signaling, | |||
</section> | encrypts the PASSporT(s), and stores them at the CPS. | |||
</t> | ||||
<section anchor="web" title="Example HTTPS Interface to the CPS"> | <t> | |||
<t> | A similar service could be performed by a gateway that retrieves PASSporTs from | |||
As a rough example, we show a Call Placement Service implementation here | a CPS and inserts them into signaling protocols that support carrying PASSporTs | |||
which uses a REST API to store and retrieve objects at the CPS. The calling part | in-band. This behavior may be defined by future specifications. | |||
y stores the PASSporT at the CPS prior to initiating the call; the | </t> | |||
PASSporT is stored at a location at the CPS that corresponds to the calle | </section> | |||
d number. Note that it is possible for multiple parties to be calling a number a | </section> | |||
t the same time, and that for called | <section anchor="web" numbered="true" toc="default"> | |||
numbers such as large call centers, many PASSporTs could legitimately be | <name>Example HTTPS Interface to the CPS</name> | |||
stored simultaneously, and it might prove difficult to correlate these with inco | <t> | |||
ming calls. | As a rough example, we show a CPS implementation here that uses a | |||
</t> | Representational State Transfer (REST) API <xref target="REST"/> to store and re | |||
<t> | trieve objects at the CPS. | |||
Assume that an authentication service has created the following PASSporT | The calling party stores the PASSporT at the CPS prior to initiating the call; t | |||
for a call to the telephone number 2.222.555.2222 (note that these are dummy val | he | |||
ues): | PASSporT is stored at a location at the CPS that corresponds to the called numbe | |||
</t> | r. | |||
<figure> | Note that it is possible for multiple parties to be calling a number at the same | |||
<artwork><![CDATA[ | time, and that for called | |||
numbers such as large call centers, many PASSporTs could legitimately be stored | ||||
simultaneously, and it might prove difficult to correlate these with incoming ca | ||||
lls. | ||||
</t> | ||||
<t> | ||||
Assume that an authentication service has created the following PASSporT for a c | ||||
all to the telephone number 2.222.555.2222 (note that these are dummy values): | ||||
</t> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9 | eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9 | |||
jZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9.eyJkZXN0Ijp7InRuIjpbI | jZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9.eyJkZXN0Ijp7InRuIjpbI | |||
jIyMjI1NTUyMjIyIl19LCJpYXQiOiIxNTgzMjUxODEwIiwib3JpZyI6eyJ0biI6 | jIyMjI1NTUyMjIyIl19LCJpYXQiOiIxNTgzMjUxODEwIiwib3JpZyI6eyJ0biI6 | |||
IjExMTE1NTUxMTExIn19.pnij4IlLHoR4vxID0u3CT1e9Hq4xLngZUTv45Vbxmd | IjExMTE1NTUxMTExIn19.pnij4IlLHoR4vxID0u3CT1e9Hq4xLngZUTv45Vbxmd | |||
3IVyZug4KOSa378yfP4x6twY0KTdiDypsereS438ZHaQ | 3IVyZug4KOSa378yfP4x6twY0KTdiDypsereS438ZHaQ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | Through some discovery mechanism (see <xref target="cps" format="default"/>), th | |||
Through some discovery mechanism (see <xref target="cps"/>), the authenti | e authentication service discovers the network location of a web service that ac | |||
cation service discovers the network location of a web service that acts as the | ts as the CPS for 2.222.555.2222. Through the same mechanism, we will say that i | |||
CPS for 2.222.555.2222. Through the same mechanism, we will say that it has also | t has also discovered one public encryption key for that destination. It uses th | |||
discovered one public encryption key for that destination. It uses that encrypt | at encryption key to encrypt the PASSporT, resulting in the encrypted PASSporT: | |||
ion key to encrypt the PASSporT, resulting in the encrypted PASSporT: | </t> | |||
</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<figure> | ||||
<artwork><![CDATA[ | ||||
rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | |||
MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | |||
nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | |||
wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | |||
IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | Having concluded the numbered steps in <xref target="as" format="default"/>, inc | |||
Having concluded the numbered steps in <xref target="as"/>, including ac | luding acquiring any token (per <xref target="stor" format="default"/>) needed t | |||
quiring any token (per <xref target="stor"/>) needed to store the PASSporT at th | o store the PASSporT at the CPS, the authentication service then stores the encr | |||
e CPS, the authentication service then stores the encrypted PASSporT: | ypted PASSporT: | |||
</t> | </t> | |||
<figure> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | ||||
POST /cps/2.222.555.2222/ppts HTTP/1.1 | POST /cps/2.222.555.2222/ppts HTTP/1.1 | |||
Host: cps.example.com | Host: cps.example.com | |||
Content-Type: application/passport | Content-Type: application/passport | |||
rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | |||
MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | |||
nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | |||
wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | |||
IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | The web service assigns a new location for this encrypted PASSporT in the collec | |||
The web service assigns a new location for this encrypted PASSporT in the | tion, returning a 201 OK with the location of /cps/2.222.222.2222/ppts/ppt1. | |||
collection, returning a 201 OK with the location of /cps/2.222.222.2222/ppts/pp | Now the authentication service can place the call, which may be signaled by vari | |||
t1. | ous protocols. Once the call arrives at the terminating side, a verification ser | |||
Now the authentication service can place the call, which may be signaled | vice | |||
by various protocols. Once the call arrives at the terminating side, a verificat | contacts its CPS to ask for the set of incoming calls for its telephone number ( | |||
ion service | 2.222.222.2222). | |||
contacts its CPS to ask for the set of incoming calls for its telephone n | </t> | |||
umber (2.222.222.2222). | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
</t> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
GET /cps/2.222.555.2222/ppts | GET /cps/2.222.555.2222/ppts | |||
Host: cps.example.com | Host: cps.example.com | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | This returns to the verification service a list of the PASSporTs currently in t | |||
This returns to the verification service a list of the PASSporTs current | he collection, which currently consists of only /cps/2.222.222.2222/ppts/ppt1. T | |||
ly in the collection, which currently consists of only /cps/2.222.222.2222/ppts/ | he verification | |||
ppt1. The verification | service then sends a new GET for /cps/2.222.555.2222/ppts/ppt1/ which yields: | |||
service then sends a new GET for /cps/2.222.555.2222/ppts/ppt1/ which yi | </t> | |||
elds: | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
</t> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Type: application/passport | Content-Type: application/passport | |||
Link: <https://cps.example.com/cps/2.222.555.2222/ppts> | Link: <https://cps.example.com/cps/2.222.555.2222/ppts> | |||
rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | rlWuoTpvBvWSHmV1AvVfVaE5pPV6VaOup3Ajo3W0VvjvrQI1VwbvnUE0pUZ6Yl9w | |||
MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | MKW0YzI4LJ1joTHho3WaY3Oup3Ajo3W0YzAypvW9rlWxMKA0Vwc7VaIlnFV6JlWm | |||
nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | nKN6LJkcL2INMKuuoKOfMF5wo20vKK0fVzyuqPV6VwR0AQZlZQtmAQHvYPWipzyaV | |||
wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | wc7VaEhVwbvZGVkAGH1AGRlZGVvsK0ed3cwG1ubEjnxRTwUPaJFjHafuq0-mW6S1 | |||
IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | IBtSJFwUOe8Dwcwyx-pcSLcSLfbwAPcGmB3DsCBypxTnF6uRpx7j | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | That concludes <xref target="vs-step1" format="none">Step 1</xref> of <xref tar | |||
That concludes Step 1 of <xref target="vs"/>; the verification service t | get="vs" format="default"/>; the verification service then goes on to the next s | |||
hen goes on to the next step, processing that PASSporT through its various check | tep, processing that PASSporT through its various checks. A complete protocol de | |||
s. A complete protocol description for CPS interactions is left to future work. | scription for CPS interactions is left to future work. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="cps" numbered="true" toc="default"> | ||||
<section anchor="cps" title="CPS Discovery"> | <name>CPS Discovery</name> | |||
<t> | <t> | |||
In order for the two ends of the out-of-band dataflow to coordinate, they | In order for the two ends of the out-of-band dataflow to coordinate, they must a | |||
must agree on a way to discover a CPS and retrieve PASSporT objects from it | gree on a way to discover a CPS and retrieve PASSporT objects from it | |||
based solely on the rendezvous information available: the calling party n | based solely on the rendezvous information available: the calling party number a | |||
umber and the called number. Because the storage of PASSporTs in this architectu | nd the called number. Because the storage of PASSporTs in this architecture is i | |||
re is indexed | ndexed | |||
by the called party number, it makes sense to discover a CPS based on the | by the called party number, it makes sense to discover a CPS based on the called | |||
called party number as well. | party number as well. | |||
There are a number of potential service discovery mechanisms that could b | There are a number of potential service discovery mechanisms that could be used | |||
e used for | for | |||
this purpose. The means of service discovery may vary by use case. | this purpose. The means of service discovery may vary by use case. | |||
</t><t> | </t> | |||
Although the discussion above is written largely in terms of a single CP | <t> | |||
S, having a significant fraction of all telephone calls result in storing and re | Although the discussion above is written largely in terms of a single CPS, havi | |||
trieving PASSporTs at a single monolithic CPS | ng a significant fraction of all telephone calls result in storing and retrievin | |||
g PASSporTs at a single monolithic CPS | ||||
has obvious scaling problems, and would as well allow the CPS to | has obvious scaling problems, and would as well allow the CPS to | |||
gather metadata about a very wide set of callers and callees. These issues can be alleviated by operational models with a | gather metadata about a very wide set of callers and callees. These issues can be alleviated by operational models with a | |||
federated CPS; any service discovery mechanism for out-of-band STIR should en | federated CPS; any service discovery mechanism for out-of-band STIR | |||
able federation of the CPS function. Likely models include ones | should enable federation of the CPS function. Likely models include ones | |||
where a carrier operates one or more CPS instances on behalf of its customers | where a carrier operates one or more CPS instances on behalf of its customers | |||
, enterprises run a CPS instance on behalf of their PBX users, or where third-pa | , | |||
rty service providers offer a CPS as a cloud service. | an enterprise runs a CPS instance on behalf of its PBX users, or a third-party s | |||
</t><t> | ervice provider | |||
offers a CPS as a cloud service. | ||||
</t> | ||||
<t> | ||||
Some service discovery possibilities under consideration include the followin g: | Some service discovery possibilities under consideration include the followin g: | |||
<list><t> | </t> | |||
For some deployments in closed (e.g. intranetwork) environments, the CPS loca | <ul empty="true" spacing="normal"> | |||
tion can simply | <li> | |||
For some deployments in closed (e.g., intra-network) environments, the CPS lo | ||||
cation can simply | ||||
be provisioned in implementations, obviating the need for a discovery protoco l. | be provisioned in implementations, obviating the need for a discovery protoco l. | |||
</t><t> | </li> | |||
If a credential lookup service is already available (see <xref target="lookup | <li> | |||
"/>), | If a credential lookup service is already available (see <xref target="lookup | |||
the CPS location can also be recorded in the callee's credentials; an extensi | " format="default"/>), | |||
on to <xref target="RFC8226"/> could for example provide a link to the location | the CPS location can also be recorded in the callee's credentials; | |||
of the CPS | an extension to <xref target="RFC8226" format="default"/> could, for example, | |||
provide a link to the location of the CPS | ||||
where PASSporTs should be stored for a destination. | where PASSporTs should be stored for a destination. | |||
</t><t> | </li> | |||
There exist a number of common directory systems that might be used to tr | <li> | |||
anslate telephone numbers into the URIs of a CPS. <xref target="RFC6116">ENUM</x | There exist a number of common directory systems that might be used to translate | |||
ref> is commonly implemented, | telephone numbers into the URIs of a CPS. | |||
though no "golden root" central ENUM administration exists that could be | <xref target="RFC6116" format="default">ENUM</xref> is commonly implemented, | |||
easily reused today to help the endpoints discover a common CPS. Other protocols | though no "golden root" central ENUM administration exists that could be easily | |||
associated with queries for | reused today to help the endpoints discover a common CPS. Other protocols associ | |||
telephone numbers, such as the <xref target="I-D.ietf-modern-teri">TeRI</ | ated | |||
xref> protocol, could also serve for this application. | with queries for telephone numbers, such as the | |||
</t><t> | <xref target="I-D.ietf-modern-teri" format="default">Telephone-Related Informati | |||
Another possibility is to use a single distributed service for this funct | on (TeRI) protocol</xref>, | |||
ion. <xref target="I-D.jennings-vipr-overview">VIPR</xref> proposed a | could also serve for this application. | |||
<xref target="RFC6940">RELOAD</xref> usage for telephone numbers to help | </li> | |||
direct calls to enterprises on the Internet. It would be possible to describe a | <li> | |||
similar RELOAD usage | Another possibility is to use a single distributed service for this function. | |||
to identify the CPS where calls for a particular telephone number should | <xref target="I-D.jennings-vipr-overview" format="default">Verification Involvin | |||
be stored. One advantage that the STIR architecture has over VIPR is that it ass | g PSTN Reachability (VIPR)</xref> proposed a | |||
umes a credential system | <xref target="RFC6940" format="default">REsource LOcation And Discovery (RELOAD) | |||
that proves authority over telephone numbers; those credentials could be | </xref> usage for telephone numbers to help direct calls to enterprises on the I | |||
used to determine whether or not a CPS could legitimately claim to be the proper | nternet. It would be possible to describe a similar RELOAD usage | |||
store for a given telephone | to identify the CPS where calls for a particular telephone number should be stor | |||
number. | ed. | |||
</t></list></t><t> | One advantage that the STIR architecture has over VIPR is that it assumes a cred | |||
This document does not prescribe any single way to do service discovery f | ential system | |||
or a CPS; it is envisioned that initial deployments will provision the location | that proves authority over telephone numbers; those credentials could be used to | |||
of the CPS at the Authentication Service and Verification Service. | determine | |||
</t> | whether or not a CPS could legitimately claim to be the proper store for a given | |||
</section> | telephone | |||
number. | ||||
<section anchor="lookup" title="Encryption Key Lookup"> | </li> | |||
</ul> | ||||
<t> | <t> | |||
In order to encrypt a PASSporT (see <xref target="stor"/>), the caller needs | This document does not prescribe any single way to do service discovery for a CP | |||
access to the callee's | S; | |||
public encryption key. Note that because STIR uses ECDSA for signing PASSporT | it is envisioned that initial deployments will provision the location of the CPS | |||
s, the public key used to | at the authentication service and verification service. | |||
verify PASSporTs is not suitable for this function, and thus the encryption k | </t> | |||
ey must be discovered separately. This requires some sort | </section> | |||
<section anchor="lookup" numbered="true" toc="default"> | ||||
<name>Encryption Key Lookup</name> | ||||
<t> | ||||
In order to encrypt a PASSporT (see <xref target="stor" format="default"/>), | ||||
the caller needs access to the callee's | ||||
public encryption key. Note that because STIR uses the Elliptic Curve Digital | ||||
Signature Algorithm (ECDSA) | ||||
for signing PASSporTs, the public key used to | ||||
verify PASSporTs is not suitable for this function, and thus the encryption k | ||||
ey | ||||
must be discovered separately. This requires some sort | ||||
of directory/lookup system. | of directory/lookup system. | |||
</t><t> | </t> | |||
<t> | ||||
Some initial STIR deployments have fielded certificate repositories so that v erification services | Some initial STIR deployments have fielded certificate repositories so that v erification services | |||
can acquire the signing credentials for PASSporTs, which are linked throu | can acquire the signing credentials for PASSporTs, which are linked through a UR | |||
gh a URI in the "x5u" element of the PASSporT. | I in the "x5u" element of the PASSporT. | |||
These certificate repositories could clearly be repurposed for allowing a | These certificate repositories could clearly be repurposed for allowing authenti | |||
uthentication services to download | cation services to download | |||
the public encryption key for the called party - provided they can be dis | the public encryption key for the called party -- provided they can be discovere | |||
covered by calling parties. | d by calling parties. | |||
This document does not specify any | This document does not specify any | |||
particular discovery scheme, but instead offers some general guidance about p otential approaches. | particular discovery scheme, but instead offers some general guidance about p otential approaches. | |||
</t><t> | </t> | |||
It is a desirable property that the public encryption key for a given party b | <t> | |||
e linked to their STIR credential. An <xref target="RFC7748">ECDH</xref> public- | It is a desirable property that the public encryption key for a given party | |||
private key pair might be generated for a <xref target="I-D.ietf-tls-subcerts">s | be linked to their STIR credential. An <xref target="RFC7748" format="default">E | |||
ubcert</xref> of the STIR credential. That subcert could be looked up along with | lliptic Curve Diffie-Hellman (ECDH)</xref> | |||
the STIR credential of the called party. Further details of this subcert, and t | public-private key pair might be generated for a | |||
he exact lookup mechanism involved, are deferred for future protocol work. | <xref target="I-D.ietf-tls-subcerts" format="default">subcert</xref> of the STIR | |||
</t><t> | credential. | |||
That subcert could be looked up along with the STIR credential of the called par | ||||
ty. | ||||
Further details of this subcert, and the exact lookup mechanism involved, are de | ||||
ferred for future protocol work. | ||||
</t> | ||||
<t> | ||||
Obviously, if there is a single central database that the caller and | Obviously, if there is a single central database that the caller and | |||
callee each access in real time to download the other's | callee each access in real time to download the other's | |||
keys, then this represents a real privacy risk, as the central | keys, then this represents a real privacy risk, as the central | |||
key database learns about each call. A number of mechanisms are | key database learns about each call. A number of mechanisms are | |||
potentially available to mitigate this: | potentially available to mitigate this: | |||
</t><t><list><t> | </t> | |||
Have endpoints pre-fetch keys for potential counterparties | <ul empty="true" spacing="normal"> | |||
<li> | ||||
Have endpoints pre-fetch keys for potential counterparties | ||||
(e.g., their address book or the entire database). | (e.g., their address book or the entire database). | |||
</t><t> | </li> | |||
Have caching servers in the user's network that proxy their | <li> | |||
Have caching servers in the user's network that proxy their | ||||
fetches and thus conceal the relationship between the user and the | fetches and thus conceal the relationship between the user and the | |||
keys they are fetching. | keys they are fetching. | |||
</t></list></t><t> | </li> | |||
Clearly, there is a privacy/timeliness tradeoff in that getting | </ul> | |||
<t> | ||||
Clearly, there is a privacy/timeliness trade-off in that getting | ||||
up-to-date knowledge about credential validity requires | up-to-date knowledge about credential validity requires | |||
contacting the credential directory in real-time (e.g., via <xref target="RFC | contacting the credential directory in real-time (e.g., via the | |||
2560">OCSP</xref>). | <xref target="RFC6960" format="default">Online Certificate Status Protocol (O | |||
CSP)</xref>). | ||||
This is somewhat mitigated for the caller's credentials in that he | This is somewhat mitigated for the caller's credentials in that he | |||
can get short-term credentials right before placing a call which only | can get short-term credentials right before placing a call which only | |||
reveals his calling rate, but not who he is calling. Alternately, | reveals his calling rate, but not who he is calling. Alternately, | |||
the CPS can verify the caller's credentials via OCSP, though of | the CPS can verify the caller's credentials via OCSP, though of | |||
course this requires the callee to trust the CPS's verification. | course this requires the callee to trust the CPS's verification. | |||
This approach does not work as well for the callee's credentials, but | This approach does not work as well for the callee's credentials, but | |||
the risk there is more modest since an attacker would need to both | the risk there is more modest since an attacker would need to both | |||
have the callee's credentials and regularly poll the database for | have the callee's credentials and regularly poll the database for | |||
every potential caller. | every potential caller. | |||
</t><t> | </t> | |||
We consider the exact best point in the tradeoff space to be an open | <t> | |||
We consider the exact best point in the trade-off space to be an open | ||||
issue. | issue. | |||
</t> | </t> | |||
</section> | ||||
<section anchor="Acknowledgments" title="Acknowledgments"> | ||||
<t>The ideas | ||||
in this document come out of discussions with Richard Barnes and Cullen | ||||
Jennings. We'd also like to thank Russ Housley, Chris Wendt, Eric Burger, Mar | ||||
y Barnes, Ben Campbell, Ted Huang, | ||||
Jonathan Rosenberg and Robert Sparks for helpful suggestions.</t> | ||||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>This memo includes no request to IANA.</t> | <t>This document has no IANA actions.</t> | |||
</section> | </section> | |||
<section anchor="priv" numbered="true" toc="default"> | ||||
<section anchor="priv" title="Privacy Considerations"> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
Delivering PASSporTs out-of-band offers a different set of privacy propertie | Delivering PASSporTs out-of-band offers a different set of privacy propertie | |||
s than traditional in-band STIR. In-band operations convey | s | |||
PASSporTs as headers in SIP messages in cleartext, which any forwarding inte | than traditional in-band STIR. In-band operations convey | |||
rmediaries can potentially inspect. By contrast, out-of-band | PASSporTs as headers in SIP messages in cleartext, which any | |||
STIR stores these PASSporTs at a service after encrypting them as described | forwarding intermediaries can potentially inspect. By contrast, out-of-band | |||
in <xref target="authz"/>, effectively creating a path | STIR stores these PASSporTs at a service after encrypting them | |||
between the authentication and verification service in which the CPS is the | as described in <xref target="authz" format="default"/>, effectively creating a | |||
sole intermediary, but the CPS cannot read the PASSporTs. | path | |||
between the authentication and verification service in which the CPS | ||||
is the sole intermediary, but the CPS cannot read the PASSporTs. | ||||
Potentially, out-of-band PASSporT delivery could thus improve on the privacy story of STIR. | Potentially, out-of-band PASSporT delivery could thus improve on the privacy story of STIR. | |||
</t><t> | </t> | |||
The principle actors in the operation of out-of-band are the AS, VS, and CPS | <t> | |||
. The AS and VS functions differ from baseline <xref target="RFC8224"/> behavior | The principle actors in the operation of out-of-band are the | |||
, in that they interact with an CPS over a non-SIP interface, of which the REST | AS, VS, and CPS. The | |||
interface in <xref target="web"/> serves as an example. Some out-of-band deploym | AS and VS functions differ from baseline behavior <xref target="RFC8224" format= | |||
ents may also require a discovery service for the CPS itself (<xref target="cps" | "default"/>, | |||
/>) and/or encryption keys (<xref target="lookup"/>). Even with encrypted PASSpo | in that they interact with a CPS over a non-SIP interface, | |||
rTs, the network interactions by which the AS and VS interact with the CPS, and | of which the REST interface in <xref target="web" format="default"/> serves as a | |||
to a lesser extent any discovery services, thus create potential opportunities f | n example. | |||
or data leakage about calling and called parties. | Some out-of-band deployments may also require a discovery service for the | |||
</t><t> | CPS itself (<xref target="cps" format="default"/>) and/or encryption keys | |||
The process of storing and retrieving PASSporTs at a CPS can itself reveal i | (<xref target="lookup" format="default"/>). Even with encrypted PASSporTs, | |||
nformation about calls being placed. The mechanism takes | the network interactions by which the AS and VS interact with the CPS, and | |||
care not to require that the AS authenticate itself to the CPS, relying inst | to a lesser extent any discovery services, thus create potential opportunities | |||
ead on a blind signature mechanism for flood control prevention. | for data leakage about calling and called parties. | |||
<xref target="sub"/> | </t> | |||
discusses the practice of storing "dummy" PASSporTs at random intervals to t | <t> | |||
hwart traffic analysis, and as <xref target="vs"/> notes, a CPS is required to | The process of storing and retrieving PASSporTs at a CPS can itself | |||
return a dummy PASSporT even if there is no PASSporT indexed for that callin | reveal information about calls being placed. The mechanism takes | |||
g number, which similarly enables the retrieval side to | care not to require that the AS authenticate itself to the CPS, | |||
randomly request PASSporTs when there are no calls in progress. These measur | relying instead on a blind signature mechanism for flood control prevention. | |||
es can help to mitigiate information disclosure in the system. In implementation | <xref target="sub" format="default"/> | |||
s that require service discovery (see <xref target="cps"/>), perhaps through key | discusses the practice of storing "dummy" PASSporTs at random intervals | |||
discovery (<xref target="lookup"/>), similar measures could be used to make sur | to thwart traffic analysis, and as <xref target="vs" format="default"/> notes, a | |||
e that service discovery does not itself disclose information about calls. | CPS is required to | |||
</t><t> | return a dummy PASSporT even if there is no PASSporT indexed for | |||
Ultimately, this document only provides a framework for future implementatio | that calling number, which similarly enables the retrieval side to | |||
n of out-of-band systems, and the privacy properties of a given implementation w | randomly request PASSporTs when there are no calls in progress. | |||
ill depend on architectural assumptions made in those environments. More closed | These measures can help to mitigate information disclosure in the system. | |||
systems for intranet operations may adopt a weaker security posture but otherwis | In implementations that require service discovery | |||
e mitigate the risks of information disclosure, where more open environment will | (see <xref target="cps" format="default"/>), perhaps through key discovery | |||
require careful implementation of the practices described here. | (<xref target="lookup" format="default"/>), similar measures could be used | |||
</t><t> | to make sure that service discovery does not itself disclose information about c | |||
For general privacy risks associated with the operations of STIR, also see t | alls. | |||
he Privacy Considerations of <xref target="RFC8224"/>. | </t> | |||
</t> | <t> | |||
</section> | Ultimately, this document only provides a framework for future implementatio | |||
n | ||||
<section anchor="Security" title="Security Considerations"> | of out-of-band systems, and the privacy properties of a given implementation wil | |||
l | ||||
depend on architectural assumptions made in those environments. More closed | ||||
systems for intranet operations may adopt a weaker security posture but | ||||
otherwise mitigate the risks of information disclosure, whereas more open enviro | ||||
nments | ||||
will require careful implementation of the practices described here. | ||||
</t> | ||||
<t> | ||||
For general privacy risks associated with the operations of STIR, | ||||
also see the privacy considerations covered in <xref target="RFC8224" section="1 | ||||
1" sectionFormat="of" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="Security" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>This entire document is about security, but the detailed security | <t>This entire document is about security, but the detailed security | |||
properties will vary depending on how the framework is applied and deployed. General guidance for dealing | properties will vary depending on how the framework is applied and deployed. General guidance for dealing | |||
with the most obvious security challenges posed by this framework is given | with the most obvious security challenges posed by this framework is given | |||
in <xref target="sec"/> and <xref target="sub"/>, along proposed solutions for | in | |||
problems like denial-of-service attacks or traffic analysis against the CPS.</t> | Sections <xref target="sec" format="counter"/> and <xref target="sub" format="co | |||
<t>Although there are considerable security challenges associated with wid | unter"/>, | |||
espread deployment of a public CPS, those must be weighed against the potential | along proposed solutions for problems like denial-of-service attacks or traffic | |||
usefulness of a service that delivers a STIR assurance without requiring the pas | analysis against the CPS.</t> | |||
sage of end-to-end SIP. Ultimately, the security properties of this mechanism ar | <t>Although there are considerable security challenges associated with | |||
e at least comparable to in-band | widespread deployment of a public CPS, those must be weighed against the | |||
STIR: the substitution attack documented in <xref target="sub"/> could | potential usefulness of a service that delivers a STIR assurance without | |||
be implemented by any in-band SIP intermediary or eavesdropper who happened to s | requiring the passage of end-to-end SIP. Ultimately, the security properties | |||
ee the PASSporT in transit, say, and launch its own call with a copy of that PAS | of this mechanism are at least comparable to in-band | |||
SporT to race against the original to the destination. | STIR: the substitution attack documented in <xref target="sub" format="default | |||
"/> | ||||
could be implemented by any in-band SIP intermediary or eavesdropper who | ||||
happened to see the PASSporT in transit, say, and launched its own call with a | ||||
copy of that PASSporT to race against the original to the destination. | ||||
</t> | </t> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | ||||
<back> | <back> | |||
<!-- References split into informative and normative --> | ||||
<!-- There are 2 ways to insert reference entries from the citation librarie | <displayreference target="I-D.ietf-stir-passport-divert" to="PASSPORT-DIVERT"/> | |||
s: | <displayreference target="I-D.ietf-modern-teri" to="MODERN-TERI"/> | |||
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here ( | <displayreference target="I-D.ietf-tls-subcerts" to="TLS-SUBCERTS"/> | |||
as shown) | <displayreference target="I-D.privacy-pass" to="PRIVACY-PASS"/> | |||
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml | <displayreference target="I-D.jennings-vipr-overview" to="VIPR-OVERVIEW"/> | |||
"?> here | ||||
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.x | ||||
ml") | ||||
Both are cited textually in the same manner: by using xref elements. | <references> | |||
If you use the PI option, xml2rfc will, by default, try to find included fil | <name>Informative References</name> | |||
es in the same | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | |||
directory as the including file. You can also define the XML_LIBRARY environ | ce.RFC.2119.xml"/> | |||
ment variable | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | |||
with a value containing a set of directories to search. These can be either | ce.RFC.6960.xml"/> | |||
in the local | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | |||
filing system or remote ones accessed by http (http://domain/dir/... ).--> | ce.RFC.5636.xml"/> | |||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7340.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7258.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.3261.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6116.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.6940.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7748.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8224.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8225.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8226.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8446.xml"/> | ||||
<references title="Informative References"> | <!-- [I-D.draft-ietf-stir-passport-divert] IANA state as of Sep 28 --> | |||
&RFC2119; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC2560; | D.ietf-stir-passport-divert.xml"/> | |||
&RFC5636; | ||||
&RFC7340; | <!-- [I-D.draft-ietf-modern-teri] WG doc expired 2018 December --> | |||
&RFC7258; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC3261; | D.ietf-modern-teri.xml"/> | |||
&RFC6116; | ||||
&RFC6940; | <!-- [I-D.draft-ietf-tls-subcerts] Active WG document, expires 2020 Dec --> | |||
&RFC7748; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC8224; | D.ietf-tls-subcerts.xml"/> | |||
&RFC8225; | ||||
&RFC8226; | <!-- [I-D.draft-privacy-pass] Individual draft expired 2020 May --> | |||
&RFC8174; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC8446; | D.privacy-pass.xml"/> | |||
&I-D.ietf-stir-passport-divert; | ||||
&I-D.ietf-modern-teri; | <!-- [I-D.draft-jennings-vipr-overview] Individual draft expired 2014 June --> | |||
&I-D.ietf-tls-subcerts; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I- | |||
&I-D.privacy-pass; | D.jennings-vipr-overview.xml"/> | |||
&I-D.jennings-vipr-overview; | ||||
<reference anchor='REST'> | ||||
<front> | ||||
<title>Architectural Styles and the Design of Network-based Software Archi | ||||
tectures, | ||||
Chapter 5: Representational State Transfer</title> | ||||
<author initials='R' surname='Fielding' fullname="Roy Fielding"> | ||||
<organization /> | ||||
</author> | ||||
<date year='2010' /> | ||||
</front> | ||||
<seriesInfo name='Ph.D. Dissertation,' value='University of California, Irvi | ||||
ne' /> | ||||
<format type="pdf" target='http://www.ics.uci.edu/~fielding/pubs/dissertatio | ||||
n/fielding_dissertation.pdf'/> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The ideas | ||||
in this document came out of discussions with <contact fullname="Richard Barn | ||||
es"/> and | ||||
<contact fullname="Cullen Jennings"/>. We'd also like to thank | ||||
<contact fullname="Russ Housley"/>, <contact fullname="Chris Wendt"/>, | ||||
<contact fullname="Eric Burger"/>, <contact fullname="Mary Barnes"/>, | ||||
<contact fullname="Ben Campbell"/>, <contact fullname="Ted Huang"/>, | ||||
<contact fullname="Jonathan Rosenberg"/>, and <contact fullname="Robert Spark | ||||
s"/> | ||||
for helpful suggestions.</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 98 change blocks. | ||||
1093 lines changed or deleted | 1147 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |