rfc8816.form.txt | rfc8816.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) E.K. Rescorla | Internet Engineering Task Force (IETF) E. Rescorla | |||
Request for Comments: 0000 Mozilla | Request for Comments: 8816 Mozilla | |||
Category: Informational J. Peterson | Category: Informational J. Peterson | |||
ISSN: 2070-1721 Neustar | ISSN: 2070-1721 Neustar | |||
3 August 2020 | August 2020 | |||
STIR Out-of-Band Architecture and Use Cases | Secure Telephone Identity Revisited (STIR) Out-of-Band Architecture and | |||
Use Cases | ||||
Abstract | Abstract | |||
The PASSporT format defines a token that can be carried by signaling | The Personal Assertion Token (PASSporT) format defines a token that | |||
protocols, including SIP, to cryptographically attest the identify of | can be carried by signaling protocols, including SIP, to | |||
callers. Not all telephone calls use Internet signaling protocols, | cryptographically attest the identity of callers. Not all telephone | |||
however, and some calls use them for only part of their signaling | calls use Internet signaling protocols, however, and some calls use | |||
path, or cannot reliably deliver SIP header fields end-to-end. This | them for only part of their signaling path, or cannot reliably | |||
document describes use cases that require the delivery of PASSporT | deliver SIP header fields end-to-end. This document describes use | |||
objects outside of the signaling path, and defines architectures and | cases that require the delivery of PASSporT objects outside of the | |||
semantics to provide this functionality. | signaling path, and defines architectures and semantics to provide | |||
this functionality. | ||||
Status of This Memo | Status of This Memo | |||
This document is not an Internet Standards Track specification; it is | This document is not an Internet Standards Track specification; it is | |||
published for informational purposes. | published for informational purposes. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Not all documents | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | approved by the IESG are candidates for any level of Internet | |||
Standard; see Section 2 of RFC 7841. | Standard; see Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc0000. | https://www.rfc-editor.org/info/rfc8816. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at line 60 ¶ | skipping to change at line 62 ¶ | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction | 1. Introduction | |||
2. Terminology | 2. Terminology | |||
3. Operating Environments | 3. Operating Environments | |||
4. Dataflows | 4. Dataflows | |||
5. Use Cases | 5. Use Cases | |||
5.1. Case 1: VoIP to PSTN Call | 5.1. Case 1: VoIP to PSTN Call | |||
5.2. Case 2: Two Smart PSTN endpoints | 5.2. Case 2: Two Smart PSTN Endpoints | |||
5.3. Case 3: PSTN to VoIP Call | 5.3. Case 3: PSTN to VoIP Call | |||
5.4. Case 4: Gateway Out-of-band | 5.4. Case 4: Gateway Out-of-Band | |||
5.5. Case 5: Enterprise Call Center | 5.5. Case 5: Enterprise Call Center | |||
6. Storing and Retrieving PASSporTs | 6. Storing and Retrieving PASSporTs | |||
6.1. Storage | 6.1. Storage | |||
6.2. Retrieval | 6.2. Retrieval | |||
7. Solution Architecture | 7. Solution Architecture | |||
7.1. Credentials and Phone Numbers | 7.1. Credentials and Phone Numbers | |||
7.2. Call Flow | 7.2. Call Flow | |||
7.3. Security Analysis | 7.3. Security Analysis | |||
7.4. Substitution Attacks | 7.4. Substitution Attacks | |||
7.5. Rate Control for CPS Storage | 7.5. Rate Control for CPS Storage | |||
8. Authentication and Verification Service Behavior for | 8. Authentication and Verification Service Behavior for | |||
Out-of-Band | Out-of-Band | |||
8.1. Authentication Service (AS) | 8.1. Authentication Service (AS) | |||
8.2. Verification Service (VS) | 8.2. Verification Service (VS) | |||
8.3. Gateway Placement Services | 8.3. Gateway Placement Services | |||
9. Example HTTPS Interface to the CPS | 9. Example HTTPS Interface to the CPS | |||
10. CPS Discovery | 10. CPS Discovery | |||
11. Encryption Key Lookup | 11. Encryption Key Lookup | |||
12. Acknowledgments | 12. IANA Considerations | |||
13. IANA Considerations | 13. Privacy Considerations | |||
14. Privacy Considerations | 14. Security Considerations | |||
15. Security Considerations | 15. Informative References | |||
16. Informative References | Acknowledgments | |||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The STIR problem statement [RFC7340] describes widespread problems | The STIR problem statement [RFC7340] describes widespread problems | |||
enabled by impersonation in the telephone network, including illegal | enabled by impersonation in the telephone network, including illegal | |||
robocalling, voicemail hacking, and swatting. As telephone services | robocalling, voicemail hacking, and swatting. As telephone services | |||
are increasingly migrating onto the Internet, and using Voice over IP | are increasingly migrating onto the Internet, and using Voice over IP | |||
(VoIP) protocols such as SIP [RFC3261], it is necessary for these | (VoIP) protocols such as SIP [RFC3261], it is necessary for these | |||
protocols to support stronger identity mechanisms to prevent | protocols to support stronger identity mechanisms to prevent | |||
impersonation. For example, [RFC8224] defines a SIP Identity header | impersonation. For example, [RFC8224] defines a SIP Identity header | |||
field capable of carrying PASSporT [RFC8225] objects in SIP as a | field capable of carrying PASSporT objects [RFC8225] in SIP as a | |||
means to cryptographically attest that the originator of a telephone | means to cryptographically attest that the originator of a telephone | |||
call is authorized to use the calling party number (or, for native | call is authorized to use the calling party number (or, for native | |||
SIP cases, SIP URI) associated with the originator of the call. | SIP cases, SIP URI) associated with the originator of the call. | |||
Not all telephone calls use SIP today, however, and even those that | 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 | do use SIP do not always carry SIP signaling end-to-end. Calls from | |||
telephone numbers still routinely traverse the Public Switched | telephone numbers still routinely traverse the Public Switched | |||
Telephone Network (PSTN) at some point. Broadly, calls fall into one | Telephone Network (PSTN) at some point. Broadly, calls fall into one | |||
of three categories: | of three categories: | |||
1. One or both of the endpoints is actually a PSTN endpoint. | 1. One or both of the endpoints is actually a PSTN endpoint. | |||
2. Both of the endpoints are non-PSTN (SIP, Jingle, ...) but the | 2. Both of the endpoints are non-PSTN (SIP, Jingle, etc.) but the | |||
call transits the PSTN at some point. | call transits the PSTN at some point. | |||
3. Non-PSTN calls which do not transit the PSTN at all (such as | 3. Non-PSTN calls that do not transit the PSTN at all (such as | |||
native SIP end-to-end calls). | native SIP end-to-end calls). | |||
The first two categories represent the majority of telephone calls | The first two categories represent the majority of telephone calls | |||
associated with problems like illegal robocalling: many robocalls | associated with problems like illegal robocalling: many robocalls | |||
today originate on the Internet but terminate at PSTN endpoints. | today originate on the Internet but terminate at PSTN endpoints. | |||
However, the core network elements that operate the PSTN are legacy | However, the core network elements that operate the PSTN are legacy | |||
devices that are unlikely to be upgradable at this point to support | devices that are unlikely to be upgradable at this point to support | |||
an in-band authentication system. As such, those devices largely | an in-band authentication system. As such, those devices largely | |||
cannot be modified to pass signatures originating on the Internet--or | cannot be modified to pass signatures originating on the Internet -- | |||
indeed any inband signaling data--intact. Even if fields for | or indeed any in-band signaling data -- intact. Even if fields for | |||
tunneling arbitrary data can be found in traditional PSTN signaling, | tunneling arbitrary data can be found in traditional PSTN signaling, | |||
in some cases legacy elements would strip the signatures from those | in some cases legacy elements would strip the signatures from those | |||
fields; in others, they might damage them to the point where they | fields; in others, they might damage them to the point where they | |||
cannot be verified. For those first two categories above, any in- | cannot be verified. For those first two categories above, any in- | |||
band authentication scheme does not seem practical in the current | band authentication scheme does not seem practical in the current | |||
environment. | environment. | |||
While the core network of the PSTN remains fixed, the endpoints of | 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 phones, | being replaced by three classes of intelligent devices: smart phones, | |||
IP PBXs, and terminal adapters. All three are general purpose | IP Private Branch Exchanges (PBXs), and terminal adapters. All three | |||
computers, and typically all three have Internet access as well as | are general purpose computers, and typically all three have Internet | |||
access to the PSTN; they may be used for residential, mobile, or | access as well as access to the PSTN; they may be used for | |||
enterprise telephone services. Additionally, various kinds of | residential, mobile, or enterprise telephone services. Additionally, | |||
gateways increasingly front for deployments of legacy PBX and PSTN | various kinds of gateways increasingly front for deployments of | |||
switches. All of this provides a potential avenue for building an | legacy PBX and PSTN switches. All of this provides a potential | |||
authentication system that implements stronger identity while leaving | avenue for building an authentication system that implements stronger | |||
PSTN systems intact. | identity while leaving PSTN systems intact. | |||
This capability also provides an ideal transitional technology while | This capability also provides an ideal transitional technology while | |||
in-band STIR adoption is ramping up. It permits early adopters to | in-band STIR adoption is ramping up. It permits early adopters to | |||
use the technology even when intervening network elements are not yet | use the technology even when intervening network elements are not yet | |||
STIR-aware, and through various kinds of gateways, it may allow | STIR-aware, and through various kinds of gateways, it may allow | |||
providers with a significant PSTN investment to still secure their | providers with a significant PSTN investment to still secure their | |||
calls with STIR. | calls with STIR. | |||
The techniques described in this document therefore build on the | The techniques described in this document therefore build on the | |||
PASSporT [RFC8225] mechanism and the work of [RFC8224] to describe a | PASSporT [RFC8225] mechanism and the work of [RFC8224] to describe a | |||
way that a PASSporT object created in the originating network of a | way that a PASSporT object created in the originating network of a | |||
call can reach the terminating network even when it cannot be carried | call can reach the terminating network even when it cannot be carried | |||
end-to-end in-band in the call signaling. This relies on a new | end-to-end in-band in the call signaling. This relies on a new | |||
service defined in this document called a Call Placement Service | service defined in this document called a Call Placement Service | |||
(CPS) that permits the PASSporT object to be stored during call | (CPS) that permits the PASSporT object to be stored during call | |||
processing and retrieved for verification purposes. | processing and retrieved for verification purposes. | |||
Potential implementors should note that this document merely defines | Potential implementors should note that this document merely defines | |||
the operating environments in which this out-of-band STIR mechanism | the operating environments in which this out-of-band STIR mechanism | |||
is intended to operate. It provides use cases, gives a broad | is intended to operate. It provides use cases, gives a broad | |||
description of the components and a potential solution architecture. | description of the components, and a potential solution architecture. | |||
Various environments may have their own security requirements: a | Various environments may have their own security requirements: a | |||
public deployment of out-of-band STIR faces far greater challenges | public deployment of out-of-band STIR faces far greater challenges | |||
than a constrained intranetwork deployment. To flesh out the storage | than a constrained intra-network deployment. To flesh out the | |||
and retrieval of PASSporTs in the CPS within this context, this | storage and retrieval of PASSporTs in the CPS within this context, | |||
document includes a strawman protocol suitable for that purpose. | this document includes a strawman protocol suitable for that purpose. | |||
Deploying this framework in any given environment would require | Deploying this framework in any given environment would require | |||
additional specification outside the scope of the current document. | additional specification outside the scope of this document. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Operating Environments | 3. Operating Environments | |||
This section describes the environments in which the proposed out-of- | This section describes the environments in which the proposed out-of- | |||
band STIR mechanism is intended to operate. In the simplest setting, | band STIR mechanism is intended to operate. In the simplest setting, | |||
Alice is calling Bob, and her call is routed through some set of | Alice calls Bob, and her call is routed through some set of gateways | |||
gateways and/or the PSTN which do not support end-to-end delivery of | and/or the PSTN that do not support end-to-end delivery of STIR. | |||
STIR. Both Alice and Bob have smart devices which can access the | Both Alice and Bob have smart devices that can access the Internet | |||
Internet (perhaps enterprise devices, or even end user ones), but | (perhaps enterprise devices, or even end-user ones), but they do not | |||
they do not have a clear telephone signaling connection between them: | have a clear telephone signaling connection between them: Alice | |||
Alice cannot inject any data into signaling which Bob can read, with | cannot inject any data into signaling that Bob can read, with the | |||
the exception of the asserted destination and origination E.164 | exception of the asserted destination and origination E.164 numbers. | |||
numbers. The calling party number might originate from her own | The calling party number might originate from her own device or from | |||
device or from the network. These numbers are effectively the only | the network. These numbers are effectively the only data that can be | |||
data that can be used for coordination between the endpoints. | used for coordination between the endpoints. | |||
+---------+ | +---------+ | |||
/ \ | / \ | |||
+--- +---+ | +--- +---+ | |||
+----------+ / \ +----------+ | +----------+ / \ +----------+ | |||
| | | Gateways | | | | | | | Gateways | | | | |||
| Alice |<----->| and/or |<----->| Bob | | | Alice |<----->| and/or |<----->| Bob | | |||
| (caller) | | PSTN | | (callee) | | | (caller) | | PSTN | | (callee) | | |||
+----------+ \ / +----------+ | +----------+ \ / +----------+ | |||
+--- +---+ | +--- +---+ | |||
skipping to change at line 226 ¶ | skipping to change at line 228 ¶ | |||
+----------+ +--+ / \ +--+ +----------+ | +----------+ +--+ / \ +--+ +----------+ | |||
| | | | | Gateways | | | | | | | | | | | Gateways | | | | | | |||
| Alice |<-|GW|->| and/or |<-|GW|->| Bob | | | Alice |<-|GW|->| and/or |<-|GW|->| Bob | | |||
| (caller) | | | | PSTN | | | | (callee) | | | (caller) | | | | PSTN | | | | (callee) | | |||
+----------+ +--+ \ / +--+ +----------+ | +----------+ +--+ \ / +--+ +----------+ | |||
+--- +---+ | +--- +---+ | |||
\ / | \ / | |||
+---------+ | +---------+ | |||
In such a case, Alice might have an analog (e.g., PSTN) connection to | In such a case, Alice might have an analog (e.g., PSTN) connection to | |||
her gateway/ switch which is responsible for her identity. | her gateway or switch that is responsible for her identity. | |||
Similarly, the gateway would verify Alice's identity, generate the | Similarly, the gateway would verify Alice's identity, generate the | |||
right calling party number information and provide that number to Bob | right calling party number information, and provide that number to | |||
using ordinary Plain Ol' Telephone Service (POTS) mechanisms. | Bob using ordinary Plain Old Telephone Service (POTS) mechanisms. | |||
4. Dataflows | 4. Dataflows | |||
Because in these operating environments endpoints cannot pass | Because in these operating environments, endpoints cannot pass | |||
cryptographic information to one another directly through signaling, | cryptographic information to one another directly through signaling, | |||
any solution must involve some rendezvous mechanism to allow | any solution must involve some rendezvous mechanism to allow | |||
endpoints to communicate. We call this rendezvous service a "call | endpoints to communicate. We call this rendezvous service a Call | |||
placement service" (CPS), a service where a record of call placement, | Placement Service (CPS), a service where 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 | principle, this service could communicate any information, but | |||
minimally we expect it to include a full-form PASSporT that attests | minimally we 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 | existence of a PASSporT for a given incoming call as rough validation | |||
of the asserted origin of that call. (See Section 11 for limitations | of the asserted origin of that call. (See Section 11 for limitations | |||
of this design.) | of this design.) | |||
This architecture does not mandate that any particular sort of entity | This architecture does not mandate that any particular sort of entity | |||
operate a CPS, or mandate any means to discover a CPS. A CPS could | operate a CPS or mandate any means to discover a CPS. A CPS could be | |||
be run internally within a network, or made publicly available. One | run internally within a network or made publicly available. One or | |||
or more CPSes could be run by a carrier, as repositories for | more CPSes could be run by a carrier, as repositories for PASSporTs | |||
PASSporTs for calls sent to its customers, or a CPS could be built-in | for calls sent to its customers, or a CPS could be built into an | |||
to an enterprise PBX, or even a smartphone. To the degree possible, | enterprise PBX or even a smartphone. To the degree possible, it is | |||
it is specified here generically, as an idea that may have | specified here generically as an idea that may have applicability to | |||
applicability to a variety of STIR deployments. | a variety of STIR deployments. | |||
There are roughly two plausible dataflow architectures for the CPS: | There are roughly two plausible dataflow architectures for the CPS: | |||
1. The callee registers with the CPS. When the caller wishes to | 1. The callee registers with the CPS. When the caller wishes to | |||
place a call to the callee, it sends the PASSporT to the CPS, | place a call to the callee, it sends the PASSporT to the CPS, | |||
which immediately forwards it to the callee, or, | which immediately forwards it to the callee. | |||
2. The caller stores the PASSporT with the CPS at the time of call | 2. The caller stores the PASSporT with the CPS at the time of call | |||
placement. When the callee receives the call, it contacts the | placement. When the callee receives the call, it contacts the | |||
CPS and retrieves the PASSporT. | CPS and retrieves the PASSporT. | |||
While the first architecture is roughly isomorphic to current VoIP | 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 | and is especially problematic for mobile endpoints. Indeed, if the | |||
endpoints had the capabilities to implement such an architecture, | endpoints had the capabilities to implement such an architecture, | |||
they could surely just use SIP or some other protocol to set up a | they could surely just use SIP or some other protocol to set up a | |||
secure session; even if the media were going through the traditional | secure session; even if the media were going through the traditional | |||
PSTN, a "shadow" SIP session could convey the PASSporT. Thus, we | PSTN, a "shadow" SIP session could convey the PASSporT. Thus, we | |||
focus on the second architecture in which the PSTN incoming call | focus on the second architecture in which the PSTN incoming call | |||
serves as the notification channel and the callee can then contact | serves as the notification channel, and the callee can then contact | |||
the CPS to retrieve the PASSporT. In specialized environments, for | the CPS to retrieve the PASSporT. In specialized environments, for | |||
example a call center that receives a large volume of incoming calls | example, a call center that receives a large volume of incoming calls | |||
that originated in the PSTN, the notification channel approach might | that originated in the PSTN, the notification channel approach might | |||
be viable. | be viable. | |||
5. Use Cases | 5. Use Cases | |||
The following are the motivating use cases for this mechanism. Bear | The following are the motivating use cases for this mechanism. Bear | |||
in mind that just as in [RFC8224] there may be multiple Identity | in mind that, just as in [RFC8224], there may be multiple Identity | |||
headers in a single SIP INVITE, so there may be multiple PASSporTs in | header fields in a single SIP INVITE, so there may be multiple | |||
this out-of-band mechanism associated with a single call. For | PASSporTs in this out-of-band mechanism associated with a single | |||
example, a SIP user agent might create a PASSporT for a call with an | call. For example, a SIP user agent might create a PASSporT for a | |||
end user credential, and as the call exits the originating | call with an end-user credential, and as the call exits the | |||
administrative domain the network authentication service might create | originating administrative domain, the network authentication service | |||
its own PASSporT for the same call. As such, these use cases may | might create its own PASSporT for the same call. As such, these use | |||
overlap in the processing of a single call. | cases may overlap in the processing of a single call. | |||
5.1. Case 1: VoIP to PSTN Call | 5.1. Case 1: VoIP to PSTN Call | |||
A call originates in a SIP environment in a STIR-aware administrative | A call originates in a SIP environment in a STIR-aware administrative | |||
domain. The local authentication service for that administrative | domain. The local authentication service for that administrative | |||
domain creates a PASSporT which is carried in band in the call per | domain creates a PASSporT that is carried in band in the call per | |||
[RFC8224]. The call is routed out of the originating administrative | [RFC8224]. The call is routed out of the originating administrative | |||
domain and reaches a gateway to the PSTN. Eventually, the call will | domain and reaches a gateway to the PSTN. Eventually, the call will | |||
terminate on a mobile smartphone that supports this out-of-band | terminate on a mobile smartphone that supports this out-of-band | |||
mechanism. | mechanism. | |||
In this use case, the originating authentication service can store | In this use case, the originating authentication service can store | |||
the PASSporT with the appropriate CPS (per the practices of | the PASSporT with the appropriate CPS (per the practices of | |||
Section 10) for the target telephone number as a fallback in case SIP | Section 10) for the target telephone number as a fallback in case SIP | |||
signaling will not reach end-to-end. When the destination mobile | signaling will not reach end-to-end. When the destination mobile | |||
smartphone receives the call over the PSTN, it consults the CPS and | smartphone receives the call over the PSTN, it consults the CPS and | |||
discovers a PASSporT from the originating telephone number waiting | discovers a PASSporT from the originating telephone number waiting | |||
for it. It uses this PASSporT to verify the calling party number. | for it. It uses this PASSporT to verify the calling party number. | |||
5.2. Case 2: Two Smart PSTN endpoints | 5.2. Case 2: Two Smart PSTN Endpoints | |||
A call originates with an enterprise PBX that has both Internet | A call originates with an enterprise PBX that has both Internet | |||
access and a built-in gateway to the PSTN, which communicates through | access and a built-in gateway to the PSTN, which communicates through | |||
traditional telephone signaling protocols. The PBX immediately | traditional telephone signaling protocols. The PBX immediately | |||
routes the call to the PSTN, but before it does, it provisions a | routes the call to the PSTN, but before it does, it provisions a | |||
PASSporT on the CPS associated with the target telephone number. | PASSporT on the CPS associated with the target telephone number. | |||
After normal PSTN routing, the call lands on a smart mobile handset | After normal PSTN routing, the call lands on a smart mobile handset | |||
that supports the STIR out-of-band mechanism. It queries the | that supports the STIR out-of-band mechanism. It queries the | |||
appropriate CPS over the Internet to determine if a call has been | appropriate CPS over the Internet to determine if a call has been | |||
skipping to change at line 346 ¶ | skipping to change at line 348 ¶ | |||
In this case, there are two subcases for how the PASSporT might be | In this case, there are two subcases for how the PASSporT might be | |||
retrieved. In subcase 1, the Internet gateway that receives the call | retrieved. In subcase 1, the Internet gateway that receives the call | |||
from the PSTN could query the appropriate CPS to determine if the | from the PSTN could query the appropriate CPS to determine if the | |||
original caller created and provisioned a PASSporT for this call. If | original caller created and provisioned a PASSporT for this call. If | |||
so, it can retrieve the PASSporT and, when it creates a SIP INVITE | so, it can retrieve the PASSporT and, when it creates a SIP INVITE | |||
for this call, add a corresponding Identity header field per | for this call, add a corresponding Identity header field per | |||
[RFC8224]. When the SIP INVITE reaches the destination | [RFC8224]. When the SIP INVITE reaches the destination | |||
administrative domain, it will be able to verify the PASSporT | administrative domain, it will be able to verify the PASSporT | |||
normally. Note that to avoid discrepancies with the Date header | normally. Note that to avoid discrepancies with the Date header | |||
field value, only full-form PASSporT should be used for this purpose. | field value, only a full-form PASSporT should be used for this | |||
In subcase 2, the gateway does not retrieve the PASSporT itself, but | purpose. In subcase 2, the gateway does not retrieve the PASSporT | |||
instead the verification service at the destination administrative | itself, but instead the verification service at the destination | |||
domain does so. Subcase 1 would perhaps be valuable for deployments | administrative domain does so. Subcase 1 would perhaps be valuable | |||
where the destination administrative domain supports in-band STIR but | for deployments where the destination administrative domain supports | |||
not out-of-band STIR. | in-band STIR but not out-of-band STIR. | |||
5.4. Case 4: Gateway Out-of-band | 5.4. Case 4: Gateway Out-of-Band | |||
A call originates in the SIP world in a STIR-aware administrative | A call originates in the SIP world in a STIR-aware administrative | |||
domain. The local authentication service for that administrative | domain. The local authentication service for that administrative | |||
domain creates a PASSporT which is carried in band in the call per | domain creates a PASSporT that is carried in band in the call per | |||
[RFC8224]. The call is routed out of the originating administrative | [RFC8224]. The call is routed out of the originating administrative | |||
domain and eventually reaches a gateway to the PSTN. | domain and eventually reaches a gateway to the PSTN. | |||
In this case, the originating authentication service does not support | In this case, the originating authentication service does not support | |||
the out-of-band mechanism, so instead the gateway to the PSTN | the out-of-band mechanism, so instead the gateway to the PSTN | |||
extracts the PASSporT from the SIP request and provisions it to the | extracts the PASSporT from the SIP request and provisions it to the | |||
CPS. (When the call reaches the gateway to the PSTN, the gateway | CPS. (When the call reaches the gateway to the PSTN, the gateway | |||
might first check the CPS to see if a PASSporT object had already | might first check the CPS to see if a PASSporT object had already | |||
been provisioned for this call, and only provision a PASSporT if none | been provisioned for this call, and only provision a PASSporT if none | |||
is present). | is present). | |||
Ultimately, the call may terminate on the PSTN, or be routed back to | Ultimately, the call may terminate on the PSTN or be routed back to a | |||
a SIP environment. In the former case, perhaps the destination | SIP environment. In the former case, perhaps the destination | |||
endpoint queries the CPS to retrieve the PASSporT provisioned by the | endpoint queries the CPS to retrieve the PASSporT provisioned by the | |||
first gateway. Or if the call ultimately returns to a SIP | first gateway. If the call ultimately returns to a SIP environment, | |||
environment, it might be the gateway from the PSTN back to the | it might be the gateway from the PSTN back to the Internet that | |||
Internet that retrieves the PASSporT from the CPS and attaches it to | retrieves the PASSporT from the CPS and attaches it to the new SIP | |||
the new SIP INVITE it creates, or it might be the terminating | INVITE it creates, or it might be the terminating administrative | |||
administrative domain's verification service that checks the CPS when | domain's verification service that checks the CPS when an INVITE | |||
an INVITE arrives with no Identity header field. Either way the | arrives with no Identity header field. Either way, the PASSporT can | |||
PASSporT can survive the gap in SIP coverage caused by the PSTN leg | survive the gap in SIP coverage caused by the PSTN leg of the call. | |||
of the call. | ||||
5.5. Case 5: Enterprise Call Center | 5.5. Case 5: Enterprise Call Center | |||
A call originates from a mobile user, and a STIR authentication | A call originates from a mobile user, and a STIR authentication | |||
service operated by their carrier creates a PASSporT for the call. | service operated by their carrier creates a PASSporT for the call. | |||
As the carrier forwards the call via SIP, it attaches the PASSporT to | As the carrier forwards the call via SIP, it attaches the PASSporT to | |||
the SIP call with an Identity header field. As a fallback in case | the SIP call with an Identity header field. As a fallback in case | |||
the call will not go end-to-end over SIP, the carrier also stores the | the call will not go end-to-end over SIP, the carrier also stores the | |||
PASSporT in a CPS. | PASSporT in a CPS. | |||
skipping to change at line 405 ¶ | skipping to change at line 406 ¶ | |||
computer to manage inbound calls and can receive STIR notifications | computer to manage inbound calls and can receive STIR notifications | |||
through it. When the PASSporT arrives at the CPS, it is sent through | through it. When the PASSporT arrives at the CPS, it is sent through | |||
a subscription/notification interface to a system that can correlate | a subscription/notification interface to a system that can correlate | |||
incoming calls with valid PASSporTs. The call center agent sees that | incoming calls with valid PASSporTs. The call center agent sees that | |||
a valid call from the originating number has arrived. | a valid call from the originating number has arrived. | |||
6. Storing and Retrieving PASSporTs | 6. Storing and Retrieving PASSporTs | |||
The use cases show a variety of entities accessing the CPS to store | The use cases show a variety of entities accessing the CPS to store | |||
and retrieve PASSporTs. The question of how the CPS authorizes the | and retrieve PASSporTs. The question of how the CPS authorizes the | |||
storage and retrieval of PASSporT is thus a key design decision in | storage and retrieval of PASSporTs is thus a key design decision in | |||
the architecture. The STIR architecture assumes that service | the architecture. The STIR architecture assumes that service | |||
providers and in some cases end user devices will have credentials | providers and, in some cases, end-user devices will have credentials | |||
suitable for attesting authority over telephone numbers per | suitable for attesting authority over telephone numbers per | |||
[RFC8226]. These credentials provide the most obvious way that a CPS | [RFC8226]. These credentials provide the most obvious way that a CPS | |||
can authorize the storage and retrieval of PASSporTs. However, as | can authorize the storage and retrieval of PASSporTs. However, as | |||
use cases 3, 4 and 5 in Section 5 show, it may sometimes make sense | use cases 3, 4, and 5 in Section 5 show, it may sometimes make sense | |||
for the entity storing or retrieving PASSporTs to be an intermediary | for the entity storing or retrieving PASSporTs to be an intermediary | |||
rather than a device associated with either the originating or | rather than a device associated with either the originating or | |||
terminating side of a call, and those intermediaries often would not | terminating side of a call; those intermediaries often would not have | |||
have access to STIR credentials covering the telephone numbers in | access to STIR credentials covering the telephone numbers in | |||
question. Requiring authorization based on a credential to store | question. Requiring authorization based on a credential to store | |||
PASSporTs is therefore undesirable, though potentially acceptable if | PASSporTs is therefore undesirable, though potentially acceptable if | |||
sufficient steps are taken to mitigate any privacy risk of leaking | sufficient steps are taken to mitigate any privacy risk of leaking | |||
data. | data. | |||
It is an explicit design goal of this mechanism to minimize the | It is an explicit design goal of this mechanism to minimize the | |||
potential privacy exposure of using a CPS. Ideally, the out-of-band | potential privacy exposure of using a CPS. Ideally, the out-of-band | |||
mechanism should not result in a worse privacy situation than in-band | mechanism should not result in a worse privacy situation than in-band | |||
[RFC8224] STIR: for in-band, we might say that a SIP entity is | STIR [RFC8224]: for in-band, we might say that a SIP entity is | |||
authorized to receive a PASSporT if it is an intermediate or final | authorized to receive a PASSporT if it is an intermediate or final | |||
target of the routing of a SIP request. As the originator of a call | target of the routing of a SIP request. As the originator of a call | |||
cannot necessarily predict the routing path a call will follow, an | cannot necessarily predict the routing path a call will follow, an | |||
out-of-band mechanism could conceivably even improve on the privacy | out-of-band mechanism could conceivably even improve on the privacy | |||
story. | story. | |||
Broadly, the architecture recommended here thus is one focused on | Broadly, the architecture recommended here thus is one focused on | |||
permitting any entity to store encrypted PASSporTs at the CPS, | permitting any entity to store encrypted PASSporTs at the CPS, | |||
indexed under the called number. PASSporTs will be encrypted with a | indexed under the called number. PASSporTs will be encrypted with a | |||
public key associated with the called number, so these PASSporTs may | public key associated with the called number, so these PASSporTs may | |||
safely be retrieved by any entity, as only holders of the | safely be retrieved by any entity because only holders of the | |||
corresponding private key will be able to decrypt the PASSporT. This | corresponding private key will be able to decrypt the PASSporT. This | |||
also prevents the CPS itself from learning the contents of PASSporTs, | also prevents the CPS itself from learning the contents of PASSporTs, | |||
and thus metadata about calls in progress, which makes the CPS a less | and thus metadata about calls in progress, which makes the CPS a less | |||
attractive target for pervasive monitoring (see [RFC7258]). As a | attractive target for pervasive monitoring (see [RFC7258]). As a | |||
first step, transport-level security can provide confidentiality from | first step, transport-level security can provide confidentiality from | |||
eavesdroppers for both the storing and retrieval of PASSporTs. To | eavesdroppers for both the storing and retrieval of PASSporTs. To | |||
bolster the privacy story, prevent denial-of-service flooding of the | bolster the privacy story, to prevent denial-of-service flooding of | |||
CPS, and to complicate traffic analysis, a few additional mechanisms | the CPS, and to complicate traffic analysis, a few additional | |||
are also recommended below. | mechanisms are also recommended below. | |||
6.1. Storage | 6.1. Storage | |||
There are a few dimensions to authorizing the storage of PASSporTs. | There are a few dimensions to authorizing the storage of PASSporTs. | |||
Encrypting PASSporTs prior to storage entails that a CPS has no way | Encrypting PASSporTs prior to storage entails that a CPS has no way | |||
to tell if a PASSporT is valid; it simply conveys encrypted blocks | to tell if a PASSporT is valid; it simply conveys encrypted blocks | |||
that it cannot access itself, and can make no authorization decision | that it cannot access itself and can make no authorization decision | |||
based on the PASSporT contents. There is certainly no prospect for | based on the PASSporT contents. There is certainly no prospect for | |||
the CPS to verify the PASSporTs itself. | the CPS to verify the PASSporTs itself. | |||
Note that this architecture requires clients that store PASSporTs to | Note that this architecture requires clients that store PASSporTs to | |||
have access to an encryption key associated with the intended called | have access to an encryption key associated with the intended called | |||
party to be used to encrypt the PASSporT. Discovering this key | party to be used to encrypt the PASSporT. Discovering this key | |||
requires the existence of a key lookup service (see Section 11); | requires the existence of a key lookup service (see Section 11), | |||
depending on how the CPS is architected, however, some kind of key | depending on how the CPS is architected; however, some kind of key | |||
store or repository could be implemented adjacent to it, and perhaps | store or repository could be implemented adjacent to it and perhaps | |||
even incorporated into its operation. Key discovery is made more | even incorporated into its operation. Key discovery is made more | |||
complicated by the fact that there can potentially be multiple | complicated by the fact that there can potentially be multiple | |||
entities that have authority over a telephone number: a carrier, a | entities that have authority over a telephone number: a carrier, a | |||
reseller, an enterprise, and an end user might all have credentials | reseller, an enterprise, and an end user might all have credentials | |||
permitting them to attest that they are allowed to originate calls | permitting them to attest that they are allowed to originate calls | |||
from a number, say. PASSporTs for out-of-band use therefore might | from a number, say. PASSporTs for out-of-band use therefore might | |||
need to be encrypted with multiple keys in the hopes that one will be | need to be encrypted with multiple keys in the hopes that one will be | |||
decipherable by the relying party. | decipherable by the relying party. | |||
Again, the most obvious way to authorize storage is to require the | Again, the most obvious way to authorize storage is to require the | |||
skipping to change at line 506 ¶ | skipping to change at line 507 ¶ | |||
6.2. Retrieval | 6.2. Retrieval | |||
For retrieval of PASSporTs, this architecture assumes that clients | For retrieval of PASSporTs, this architecture assumes that clients | |||
will contact the CPS through some sort of polling or notification | will contact the CPS through some sort of polling or notification | |||
interface to receive all current PASSporTs for calls destined to a | interface to receive all current PASSporTs for calls destined to a | |||
particular telephone number, or block of numbers. | particular telephone number, or block of numbers. | |||
As PASSporTs stored at the CPS are encrypted with a key belonging to | As PASSporTs stored at the CPS are encrypted with a key belonging to | |||
the intended destination, the CPS can safely allow anyone to download | the intended destination, the CPS can safely allow anyone to download | |||
PASSporTs for a called number without much fear of compromising | PASSporTs for a called number without much fear of compromising | |||
private information about calls in progress - provided that the CPS | private information about calls in progress -- provided that the CPS | |||
always returns at least one encrypted blob in response to a request, | always returns at least one encrypted blob in response to a request, | |||
even if there was no call in progress. Otherwise, entities could | even if there was no call in progress. Otherwise, entities could | |||
poll the CPS constantly, or eavesdrop on traffic, to learn whether or | poll the CPS constantly, or eavesdrop on traffic, to learn whether or | |||
not calls were in progress. The CPS MUST generate at least one | not calls were in progress. The CPS MUST generate at least one | |||
unique and plausible encrypted response to all retrieval requests, | unique and plausible encrypted response to all retrieval requests, | |||
and these dummy encrypted PASSporTs MUST NOT be repeated for later | and these dummy encrypted PASSporTs MUST NOT be repeated for later | |||
calls. An encryption scheme needs to be carefully chosen to make | calls. An encryption scheme needs to be carefully chosen to make | |||
messages look indistinguishable from random when encrypted, so that | messages look indistinguishable from random when encrypted, so that | |||
information about called party is not discoverable from legitimate | information about the called party is not discoverable from | |||
encrypted PASSporTs. | legitimate encrypted PASSporTs. | |||
Because the entity placing a call may discover multiple keys | Because the entity placing a call may discover multiple keys | |||
associated with the called party number, multiple valid PASSporTs may | associated with the called party number, multiple valid PASSporTs may | |||
be stored in the CPS. A particular called party who retrieves | be stored in the CPS. A particular called party who retrieves | |||
PASSporTs from the CPS may have access to only one of those keys. | PASSporTs from the CPS may have access to only one of those keys. | |||
Thus, the presence of one or more PASSporTs that the called party | Thus, the presence of one or more PASSporTs that the called party | |||
cannot decrypt - which would be indistinguishable from the "dummy" | cannot decrypt -- which would be indistinguishable from the "dummy" | |||
PASSporTS created by the CPS when no calls are in progress - does not | PASSporTs created by the CPS when no calls are in progress - does not | |||
entail that there is no call in progress. A retriever likely will | entail that there is no call in progress. A retriever likely will | |||
need to decrypt all PASSporTs retrieved from the CPS, and may find | need to decrypt all PASSporTs retrieved from the CPS, and may find | |||
only one that is valid. | only one that is valid. | |||
In order to prevent the CPS from learning the numbers that a callee | In order to prevent the CPS from learning the numbers that a callee | |||
controls, callees might also request PASSporTs for numbers that they | controls, callees might also request PASSporTs for numbers that they | |||
do not own, that they have no hope of decrypting. Implementations | do not own, that they have no hope of decrypting. Implementations | |||
could even allow a callee to request PASSporTs for a range or prefix | could even allow a callee to request PASSporTs for a range or prefix | |||
of numbers: a trade-off where that callee is willing to sift through | of numbers: a trade-off where that callee is willing to sift through | |||
bulk quantities of undecryptable PASSporTs for the sake of hiding | bulk quantities of undecryptable PASSporTs for the sake of hiding | |||
from the CPS what numbers it controls. | from the CPS which numbers it controls. | |||
Note that in out-of-band call forwarding cases, special behavior is | Note that in out-of-band call forwarding cases, special behavior is | |||
required to manage the relationship between PASSporTs using the | required to manage the relationship between PASSporTs using the | |||
diversion extension [PASSPORT-DIVERT]. The originating | diversion extension [PASSPORT-DIVERT]. The originating | |||
authentication service would encrypt the initial PASSporT with the | authentication service encrypts the initial PASSporT with the public | |||
public encryption key of the intended destination, but once a call is | encryption key of the intended destination, but once a call is | |||
forwarded, it may go to a destination that does not possess the | forwarded, it may go to a destination that does not possess the | |||
corresponding private key and thus could not decrypt the original | corresponding private key and thus could not decrypt the original | |||
PASSporT. This requires the retargeting entity to generate encrypted | PASSporT. This requires the retargeting entity to generate encrypted | |||
PASSporTs that show a secure chain of diversion: a retargeting storer | PASSporTs that show a secure chain of diversion: a retargeting storer | |||
SHOULD use the "div-o" PASSporT type, with its "opt" extension, as | SHOULD use the "div-o" PASSporT type, with its "opt" extension, as | |||
specified in [PASSPORT-DIVERT] in order to nest the original PASSporT | specified in [PASSPORT-DIVERT], in order to nest the original | |||
within the encrypted diversion PASSporT. | PASSporT within the encrypted diversion PASSporT. | |||
7. Solution Architecture | 7. Solution Architecture | |||
In this section, we discuss a high-level architecture for providing | In this section, we discuss a high-level architecture for providing | |||
the service described in the previous sections. This discussion is | the service described in the previous sections. This discussion is | |||
deliberately sketchy, focusing on broad concepts and skipping over | deliberately sketchy, focusing on broad concepts and skipping over | |||
details. The intent here is merely to provide an overall | details. The intent here is merely to provide an overall | |||
architecture, not an implementable specification. A more concrete | architecture, not an implementable specification. A more concrete | |||
example of how this might be specified is given in Section 9. | example of how this might be specified is given in Section 9. | |||
7.1. Credentials and Phone Numbers | 7.1. Credentials and Phone Numbers | |||
We start from the premise of the STIR problem statement [RFC7340] | We start from the premise of the STIR problem statement [RFC7340] | |||
that phone numbers can be associated with credentials which can be | that phone numbers can be associated with credentials that can be | |||
used to attest ownership of numbers. For purposes of exposition, we | used to attest ownership of numbers. For purposes of exposition, we | |||
will assume that ownership is associated with the endpoint (e.g., a | will assume that ownership is associated with the endpoint (e.g., a | |||
smartphone) but it might well be associated with a provider or | smartphone), but it might well be associated with a provider or | |||
gateway acting for the endpoint instead. It might be the case that | gateway acting for the endpoint instead. It might be the case that | |||
multiple entities are able to act for a given number, provided that | multiple entities are able to act for a given number, provided that | |||
they have the appropriate authority. [RFC8226] describes a | they have the appropriate authority. [RFC8226] describes a | |||
credential system suitable for this purpose; the question of how an | credential system suitable for this purpose; the question of how an | |||
entity is determined to have control of a given number is out of | entity is determined to have control of a given number is out of | |||
scope for the current document. | scope for this document. | |||
7.2. Call Flow | 7.2. Call Flow | |||
An overview of the basic calling and verification process is shown | An overview of the basic calling and verification process is shown | |||
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. | |||
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] | |||
When Alice wishes to make a call to Bob, she contacts the CPS and | When Alice wishes to make a call to Bob, she contacts the CPS and | |||
stores an encrypted PASSporT on the CPS indexed under Bob's number. | stores an encrypted PASSporT on the CPS indexed under Bob's number. | |||
The CPS then awaits retrievals for that number. | The CPS then awaits retrievals for that number. | |||
When Alice places the call, Bob's phone would usually ring and | When Alice places the call, Bob's phone would usually ring and | |||
display Alice's number (+1.111.555.1111), which is informed by the | display Alice's number (+1.111.555.1111), which is informed by the | |||
existing PSTN mechanisms for relaying a calling party number (e.g., | existing PSTN mechanisms for relaying a calling party number (e.g., | |||
the CIN field of the IAM). Instead, Bob's phone transparently | the CIN field of the Initial Address Message (IAM)). Instead, Bob's | |||
contacts the CPS and requests any current PASSporTs for calls to his | phone transparently contacts the CPS and requests any current | |||
number. The CPS responds with any such PASSporTs (or dummy PASSporTs | PASSporTs for calls to his number. The CPS responds with any such | |||
if no relevant ones are currently stored). If such a PASSporT | PASSporTs (or dummy PASSporTs if no relevant ones are currently | |||
exists, and the verification service in Bob's phone decrypts it using | stored). If such a PASSporT exists, and the verification service in | |||
his private key, validates it, then Bob's phone can present the | Bob's phone decrypts it using his private key, validates it, then | |||
calling party number information as valid. Otherwise, the call is | Bob's phone can present the calling party number information as | |||
unverifiable. Note that this does not necessarily mean that the call | valid. Otherwise, the call is unverifiable. Note that this does not | |||
is bogus; because we expect incremental deployment, many legitimate | necessarily mean that the call is bogus; because we expect | |||
calls will be unverifiable. | incremental deployment, many legitimate calls will be unverifiable. | |||
7.3. Security Analysis | 7.3. Security Analysis | |||
The primary attack we seek to prevent is an attacker convincing the | 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: | |||
1. The attacker wishes to impersonate a target when no call from | 1. The attacker wishes to impersonate a target when no call from | |||
that target is in progress. | that target is in progress. | |||
2. The attacker wishes to substitute himself for an existing call | 2. The attacker wishes to substitute himself for an existing call | |||
setup. | setup. | |||
If an attacker can inject fake PASSporTs into the CPS or in the | 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 digitally signed by an appropriate authority | As PASSporTs should be digitally signed by an appropriate authority | |||
for the number and verified by the callee (see Section 7.1), this | for the number and verified by the callee (see Section 7.1), this | |||
should not arise in ordinary operations. Any attacker who is aware | should not arise in ordinary operations. Any attacker who is aware | |||
of calls in progress can attempt to mount a race to subtitute | of calls in progress can attempt to mount a race to substitute | |||
themselves as described in Section 7.4. For privacy and robustness | themselves as described in Section 7.4. For privacy and robustness | |||
reasons, using TLS [RFC8446] on the originating side when storing the | reasons, using TLS [RFC8446] on the originating side when storing the | |||
PASSporT at the CPS is RECOMMENDED. | PASSporT at the CPS is RECOMMENDED. | |||
The entire system depends on the security of the credential | 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 [RFC8224] STIR. | number. However, that is no different from in-band STIR [RFC8224]. | |||
A secondary attack we must also prevent is denial-of-service against | A secondary attack we must also prevent is denial-of-service against | |||
the CPS, which requires some form of rate control solution that will | the CPS, which requires some form of rate control solution that will | |||
not degrade the privacy properties of the architecture. | not degrade the privacy properties of the architecture. | |||
7.4. Substitution Attacks | 7.4. Substitution Attacks | |||
All the receipt of the PASSporT from the CPS proves to the called | All that the receipt of the PASSporT from the CPS proves to the | |||
party is that Alice is trying to call Bob (or at least was as of very | called party is that Alice is trying to call Bob (or at least was as | |||
recently) - it does not prove that any particular incoming call is | of very recently) -- it does not prove that any particular incoming | |||
from Alice. Consider the scenario in which we have a service which | call is from Alice. Consider the scenario in which we have a service | |||
provides an automatic callback to a user-provided number. In that | that provides an automatic callback to a user-provided number. In | |||
case, the attacker can try to arrange for a false caller-id value, as | that case, the attacker can try to arrange for a false caller-id | |||
shown below: | value, as shown below: | |||
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) --------------------> | |||
skipping to change at line 682 ¶ | skipping to change at line 683 ¶ | |||
In order to mount this attack, the attacker contacts the Callback | In order to mount this attack, the attacker contacts the Callback | |||
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. | insert an appropriate PASSporT and then initiates a call to Bob. | |||
Because it is a valid CS injecting the PASSporT, none of the security | Because it is a valid CS injecting the PASSporT, none of the security | |||
checks mentioned above help. However, the attacker simultaneously | checks mentioned above help. However, the attacker simultaneously | |||
initiates a call to Bob using forged caller-id information | initiates a call to Bob using forged caller-id information | |||
corresponding to the CS. If he wins the race with the CS, then Bob's | corresponding to the CS. If he wins the race with the CS, then Bob's | |||
phone will attempt to verify the attacker's call (and succeed since | phone will attempt to verify the attacker's call (and succeed since | |||
they are indistinguishable) and the CS's call will go to busy/voice | they are indistinguishable), and the CS's call will go to busy/voice | |||
mail/call waiting. | mail/call waiting. | |||
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 | similar means to learn precisely when a call is placed, it is | |||
essential that the connection between the caller and the CPS be | essential that the connection between the caller and the CPS be | |||
encrypted as recommended above. Authentication services could store | encrypted as recommended above. Authentication services could store | |||
dummy PASSporTs at the CPS at random intervals in order to make it | dummy PASSporTs at the CPS at random intervals in order to make it | |||
more difficult for an eavesdropper to use traffic analysis to | more difficult for an eavesdropper to use traffic analysis to | |||
determine that a call was about to be placed. | determine that a call was about to be placed. | |||
skipping to change at line 709 ¶ | skipping to change at line 710 ¶ | |||
CPS, so shortening that window will reduce the opportunity for the | CPS, so shortening that window will reduce the opportunity for the | |||
attack. Finally, smart endpoints could implement some sort of state | attack. Finally, smart endpoints could implement some sort of state | |||
coordination to ensure that both sides believe the call is in | coordination to ensure that both sides believe the call is in | |||
progress, though methods of supporting that are outside the scope of | progress, though methods of supporting that are outside the scope of | |||
this document. | this document. | |||
7.5. Rate Control for CPS Storage | 7.5. Rate Control for CPS Storage | |||
In order to prevent the flooding of a CPS with bogus PASSporTs, we | In order to prevent the flooding of a CPS with bogus PASSporTs, we | |||
propose the use of "blind signatures" (see [RFC5636]). A sender will | propose the use of "blind signatures" (see [RFC5636]). A sender will | |||
initially authenticate to the CPS using its STIR credentials, and | initially authenticate to the CPS using its STIR credentials and | |||
acquire a signed token from the CPS that will be presented later when | acquire a signed token from the CPS that will be presented later when | |||
storing a PASSporT. The flow looks as follows: | storing a PASSporT. The flow looks as follows: | |||
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)) ---> | |||
At an initial time when no call is yet in progress, a potential | At an initial time when no call is yet in progress, a potential | |||
client connects to the CPS, authenticates, and sends a blinded | client connects to the CPS, authenticates, and sends a blinded | |||
version of a freshly generated public key. The CPS returns a signed | version of a freshly generated public key. The CPS returns a signed | |||
version of that blinded key. The sender can then unblind the key and | version of that blinded key. The sender can then unblind the key and | |||
gets a signature on K_temp from the CPS. | get a signature on K_temp from the CPS. | |||
Then later, when a client wants to store a PASSporT, it connects to | Then later, when a client wants to store a PASSporT, it connects to | |||
the CPS anonymously (preferably over a network connection that cannot | the CPS anonymously (preferably over a network connection that cannot | |||
be correlated with the token acquisition) and sends both the signed | be correlated with the token acquisition) and sends both the signed | |||
K_temp and its own signature over the encrypted PASSporT. The CPS | K_temp and its own signature over the encrypted PASSporT. The CPS | |||
verifies both signatures and if they verify, stores the encrypted | verifies both signatures and, if they verify, stores the encrypted | |||
passport (discarding the signatures). | passport (discarding the signatures). | |||
This design lets the CPS rate limit how many PASSporTs a given sender | 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 | can store just by counting how many times K_temp appears; perhaps CPS | |||
policy might reject storage attempts and require acquisition of a new | policy might reject storage attempts and require acquisition of a new | |||
K_temp after storing more than a certain number of PASSporTs indexed | K_temp after storing more than a certain number of PASSporTs indexed | |||
under the same destination number in a short interval. This does not | under the same destination number in a short interval. This does | |||
of course allow the CPS to tell when bogus data is being provisioned | not, of course, allow the CPS to tell when bogus data is being | |||
by an attacker, simply the rate at which data is being provisioned. | provisioned by an attacker, simply the rate at which data is being | |||
Potentially, feedback mechanisms could be developed that would allow | provisioned. Potentially, feedback mechanisms could be developed | |||
the called parties to tell the CPS when they are receiving unusual or | that would allow the called parties to tell the CPS when they are | |||
bogus PASSporTs. | receiving unusual or bogus PASSporTs. | |||
This architecture also assumes that the CPS will age out PASSporTs. | This architecture also assumes that the CPS will age out PASSporTs. | |||
A CPS SHOULD NOT keep any stored PASSporT for no longer than a value | A CPS SHOULD NOT keep any stored PASSporT for no longer than a value | |||
that might be selected for the verification service policy for | that might be selected for the verification service policy for | |||
freshness of the "iat" value as described in [RFC8224] (i.e. sixty | freshness of the "iat" value as described in [RFC8224] (i.e., sixty | |||
seconds). Any reduction in this window makes substitution attacks | seconds). Any reduction in this window makes substitution attacks | |||
(see Section 7.4) harder to mount, but making the window too small | (see Section 7.4) harder to mount, but making the window too small | |||
might conceivably age PASSporTs out while a heavily redirected call | might conceivably age PASSporTs out while a heavily redirected call | |||
is still alerting. | is still alerting. | |||
An alternative potential approach to blind signatures would be the | An alternative potential approach to blind signatures would be the | |||
use of oblivious pseudorandom functions (VOPRFs, per [PRIVACY-PASS]), | use of verifiable oblivious pseudorandom functions (VOPRFs, per | |||
which move prove faster. | [PRIVACY-PASS]), which move prove faster. | |||
8. Authentication and Verification Service Behavior for Out-of-Band | 8. Authentication and Verification Service Behavior for Out-of-Band | |||
[RFC8224] defines an authentication service and a verification | [RFC8224] defines an authentication service and a verification | |||
service as functions that act in the context of SIP requests and | service as functions that act in the context of SIP requests and | |||
responses. This specification thus provides a more generic | responses. This specification thus provides a more generic | |||
description of authentication service and verification service | description of authentication service and verification service | |||
behavior that might or might not involve any SIP transactions, but | behavior that might or might not involve any SIP transactions, but | |||
depends only on placing a request for communications from an | depends only on placing a request for communications from an | |||
originating identity to one or more destination identities. | originating identity to one or more destination identities. | |||
skipping to change at line 788 ¶ | skipping to change at line 789 ¶ | |||
PASSporT. It can do so only if it possesses the private key of one | PASSporT. It can do so only if it possesses the private key of one | |||
or more credentials that can be used to sign for that identity, be it | or more credentials that can be used to sign for that identity, be it | |||
a domain or a telephone number or some other identifier. For | a domain or a telephone number or some other identifier. For | |||
example, the authentication service could hold the private key | example, the authentication service could hold the private key | |||
associated with a STIR certificate [RFC8225]. | associated with a STIR certificate [RFC8225]. | |||
Step 2: The authentication service MUST determine that the originator | Step 2: The authentication service MUST determine that the originator | |||
of communications can claim the originating identity. This is a | of communications can claim the originating identity. This is a | |||
policy decision made by the authentication service that depends on | policy decision made by the authentication service that depends on | |||
its relationship to the originator. For an out-of-band application | its relationship to the originator. For an out-of-band application | |||
built-in to the calling device, for example, this is the same check | built into the calling device, for example, this is the same check | |||
performed in Step 1: does the calling device hold a private key, one | performed in Step 1: does the calling device hold a private key, one | |||
corresponding to a STIR certificate, that can sign for the | corresponding to a STIR certificate, that can sign for the | |||
originating identity? | originating identity? | |||
Step 3: The authentication service MUST acquire the public encryption | Step 3: The authentication service MUST acquire the public encryption | |||
key of the destination, which will be used to encrypt the PASSporT | key of the destination, which will be used to encrypt the PASSporT | |||
(see Section 11). It MUST also discover (see Section 10) the CPS | (see Section 11). It MUST also discover (see Section 10) the CPS | |||
associated with the destination. The authentication service may | associated with the destination. The authentication service may | |||
already have the encryption key and destination CPS cached, or may | already have the encryption key and destination CPS cached, or may | |||
need to query a service to acquire the key. Note that per | need to query a service to acquire the key. Note that per | |||
Section 7.5 the authentication service may also need to acquire a | Section 7.5, the authentication service may also need to acquire a | |||
token for PASSporT storage from the CPS upon CPS discovery. It is | token for PASSporT storage from the CPS upon CPS discovery. It is | |||
anticipated that the discovery mechanism (see Section 10) used to | anticipated that the discovery mechanism (see Section 10) used to | |||
find the appropriate CPS will also find the proper key server for the | find the appropriate CPS will also find the proper key server for the | |||
public key of the destination. In some cases, a destination may have | public key of the destination. In some cases, a destination may have | |||
multiple public encryption keys associated with it. In that case, | multiple public encryption keys associated with it. In that case, | |||
the authentication service MUST collect all of those keys. | the authentication service MUST collect all of those keys. | |||
Step 4: The authentication service MUST create the PASSporT object. | Step 4: The authentication service MUST create the PASSporT object. | |||
This includes acquiring the system time to populate the "iat" claim, | This includes acquiring the system time to populate the "iat" claim, | |||
and populating the "orig" and "dest" claims as described in | and populating the "orig" and "dest" claims as described in | |||
[RFC8225]. The authentication service MUST then encrypt the | [RFC8225]. The authentication service MUST then encrypt the | |||
PASSporT. If in Step 3 the authentication service discovered | PASSporT. If in Step 3 the authentication service discovered | |||
multiple public keys for the destination, it MUST create one | multiple public keys for the destination, it MUST create one | |||
encrypted copy for each public key it discovered. | encrypted copy for each public key it discovered. | |||
Finally, the authentication service stores the encrypted PASSporT(s) | Finally, the authentication service stores the encrypted PASSporT(s) | |||
at the CPS discovered in Step 3. Only after that is completed should | at the CPS discovered in Step 3. Only after that is completed should | |||
any call be initiated. Note that a call might be initiated over SIP, | any call be initiated. Note that a call might be initiated over SIP, | |||
and the authentication service would place the same PASSporT in the | and the authentication service would place the same PASSporT in the | |||
Identity header field value of the SIP request - though SIP would | Identity header field value of the SIP request -- though SIP would | |||
carry a cleartext version rather than an encrypted version sent to | carry a cleartext version rather than an encrypted version sent to | |||
the CPS. In that case, out-of-band would serve as a fallback | the CPS. In that case, out-of-band would serve as a fallback | |||
mechanism in case the request was not conveyed over SIP end-to-end. | mechanism if the request was not conveyed over SIP end-to-end. Also, | |||
Also, note that the authentication service MAY use a compact form of | note that the authentication service MAY use a compact form of the | |||
the PASSporT for a SIP request, whereas the version stored at the CPS | PASSporT for a SIP request, whereas the version stored at the CPS | |||
MUST always be a full form PASSporT. | MUST always be a full-form PASSporT. | |||
8.2. Verification Service (VS) | 8.2. Verification Service (VS) | |||
When a call arrives, an out-of-band verification service performs | When a call arrives, an out-of-band verification service performs | |||
steps similar to those defined in [RFC8224] with some exceptions: | steps similar to those defined in [RFC8224] with some exceptions: | |||
Step 1: The verification service contacts the CPS and requests all | Step 1: The verification service contacts the CPS and requests all | |||
current PASSporTs for its destination number; or alternatively it may | current PASSporTs for its destination number; or alternatively it may | |||
receive PASSporTs through a push interface from the CPS in some | receive PASSporTs through a push interface from the CPS in some | |||
deployments. The verification service MUST then decrypt all | deployments. The verification service MUST then decrypt all | |||
skipping to change at line 873 ¶ | skipping to change at line 874 ¶ | |||
signature over each PASSporT, as described in [RFC8225]. | signature over each PASSporT, as described in [RFC8225]. | |||
Finally, the verification service will end up with one or more valid | Finally, the verification service will end up with one or more valid | |||
PASSporTs corresponding to the call it has received. In keeping with | PASSporTs corresponding to the call it has received. In keeping with | |||
baseline STIR, this document does not dictate any particular | baseline STIR, this document does not dictate any particular | |||
treatment of calls that have valid PASSporTs associated with them; | treatment of calls that have valid PASSporTs associated with them; | |||
the handling of the call after the verification process depends on | the handling of the call after the verification process depends on | |||
how the verification service is implemented and on local policy. | how the verification service is implemented and on local policy. | |||
However, it is anticipated that local policies could involve making | However, it is anticipated that local policies could involve making | |||
different forwarding decisions in intermediary implementations, or | different forwarding decisions in intermediary implementations, or | |||
changing how the user is alerted or how identity is rendered in UA | changing how the user is alerted or how identity is rendered in user | |||
implementations. | agent implementations. | |||
8.3. Gateway Placement Services | 8.3. Gateway Placement Services | |||
The STIR out-of-band mechanism also supports the presence of gateway | The STIR out-of-band mechanism also supports the presence of gateway | |||
placement services, which do not create PASSporTs themselves, but | placement services, which do not create PASSporTs themselves, but | |||
instead take PASSporTs out of signaling protocols and store them at a | instead take PASSporTs out of signaling protocols and store them at a | |||
CPS before gatewaying to a protocol that cannot carry PASSporTs | CPS before gatewaying to a protocol that cannot carry PASSporTs | |||
itself. For example, a SIP gateway that sends calls to the PSTN | itself. For example, a SIP gateway that sends calls to the PSTN | |||
could receive a call with an Identity header field, extract a | could receive a call with an Identity header field, extract a | |||
PASSporT from the Identity header field, and store that PASSporT at a | PASSporT from the Identity header field, and store that PASSporT at a | |||
CPS. | CPS. | |||
To place a PASSporT at a CPS, a gateway MUST perform Step 3 of | To place a PASSporT at a CPS, a gateway MUST perform Step 3 of | |||
Section 8.1 above: that is, it must discover the CPS and public key | Section 8.1 above: that is, it must discover the CPS and public key | |||
associated with the destination of the call, and may need to acquire | associated with the destination of the call, and may need to acquire | |||
a PASSporT storage token (see Section 6.1). Per Step 3 of | a PASSporT storage token (see Section 6.1). Per Step 3 of | |||
Section 8.1 this may entail discovering several keys. The gateway | Section 8.1, this may entail discovering several keys. The gateway | |||
then collects the in-band PASSporT(s) from the in-band signaling, | then collects the in-band PASSporT(s) from the in-band signaling, | |||
encrypts the PASSporT(s), and stores them at the CPS. | encrypts the PASSporT(s), and stores them at the CPS. | |||
A similar service could be performed by a gateway that retrieves | A similar service could be performed by a gateway that retrieves | |||
PASSporTs from a CPS and inserts them into signaling protocols that | PASSporTs from a CPS and inserts them into signaling protocols that | |||
support carrying PASSporTS in-band. This behavior may be defined by | support carrying PASSporTs in-band. This behavior may be defined by | |||
future specifications. | future specifications. | |||
9. Example HTTPS Interface to the CPS | 9. Example HTTPS Interface to the CPS | |||
As a rough example, we show a Call Placement Service implementation | As a rough example, we show a CPS implementation here that uses a | |||
here which uses a REST API to store and retrieve objects at the CPS. | Representational State Transfer (REST) API to store and retrieve | |||
The calling party stores the PASSporT at the CPS prior to initiating | objects at the CPS. The calling party stores the PASSporT at the CPS | |||
the call; the PASSporT is stored at a location at the CPS that | prior to initiating the call; the PASSporT is stored at a location at | |||
corresponds to the called number. Note that it is possible for | the CPS that corresponds to the called number. Note that it is | |||
multiple parties to be calling a number at the same time, and that | possible for multiple parties to be calling a number at the same | |||
for called numbers such as large call centers, many PASSporTs could | time, and that for called numbers such as large call centers, many | |||
legitimately be stored simultaneously, and it might prove difficult | PASSporTs could legitimately be stored simultaneously, and it might | |||
to correlate these with incoming calls. | prove difficult to correlate these with incoming calls. | |||
Assume that an authentication service has created the following | Assume that an authentication service has created the following | |||
PASSporT for a call to the telephone number 2.222.555.2222 (note that | PASSporT for a call to the telephone number 2.222.555.2222 (note that | |||
these are dummy values): | these are dummy values): | |||
eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9 | eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9 | |||
jZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9.eyJkZXN0Ijp7InRuIjpbI | jZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9.eyJkZXN0Ijp7InRuIjpbI | |||
jIyMjI1NTUyMjIyIl19LCJpYXQiOiIxNTgzMjUxODEwIiwib3JpZyI6eyJ0biI6 | jIyMjI1NTUyMjIyIl19LCJpYXQiOiIxNTgzMjUxODEwIiwib3JpZyI6eyJ0biI6 | |||
IjExMTE1NTUxMTExIn19.pnij4IlLHoR4vxID0u3CT1e9Hq4xLngZUTv45Vbxmd | IjExMTE1NTUxMTExIn19.pnij4IlLHoR4vxID0u3CT1e9Hq4xLngZUTv45Vbxmd | |||
3IVyZug4KOSa378yfP4x6twY0KTdiDypsereS438ZHaQ | 3IVyZug4KOSa378yfP4x6twY0KTdiDypsereS438ZHaQ | |||
skipping to change at line 1002 ¶ | skipping to change at line 1003 ¶ | |||
Although the discussion above is written largely in terms of a single | Although the discussion above is written largely in terms of a single | |||
CPS, having a significant fraction of all telephone calls result in | CPS, having a significant fraction of all telephone calls result in | |||
storing and retrieving PASSporTs at a single monolithic CPS has | storing and retrieving PASSporTs at a single monolithic CPS has | |||
obvious scaling problems, and would as well allow the CPS to gather | obvious scaling problems, and would as well allow the CPS to gather | |||
metadata about a very wide set of callers and callees. These issues | metadata about a very wide set of callers and callees. These issues | |||
can be alleviated by operational models with a federated CPS; any | can be alleviated by operational models with a federated CPS; any | |||
service discovery mechanism for out-of-band STIR should enable | service discovery mechanism for out-of-band STIR should enable | |||
federation of the CPS function. Likely models include ones where a | federation of the CPS function. Likely models include ones where a | |||
carrier operates one or more CPS instances on behalf of its | carrier operates one or more CPS instances on behalf of its | |||
customers, enterprises run a CPS instance on behalf of their PBX | customers, an enterprise runs a CPS instance on behalf of its PBX | |||
users, or where third-party service providers offer a CPS as a cloud | users, or a third-party service provider offers a CPS as a cloud | |||
service. | service. | |||
Some service discovery possibilities under consideration include the | Some service discovery possibilities under consideration include the | |||
following: | following: | |||
For some deployments in closed (e.g. intranetwork) environments, | For some deployments in closed (e.g., intra-network) environments, | |||
the CPS location can simply be provisioned in implementations, | the CPS location can simply be provisioned in implementations, | |||
obviating the need for a discovery protocol. | obviating the need for a discovery protocol. | |||
If a credential lookup service is already available (see | If a credential lookup service is already available (see | |||
Section 11), the CPS location can also be recorded in the callee's | Section 11), the CPS location can also be recorded in the callee's | |||
credentials; an extension to [RFC8226] could for example provide a | credentials; an extension to [RFC8226] could, for example, provide | |||
link to the location of the CPS where PASSporTs should be stored | a link to the location of the CPS where PASSporTs should be stored | |||
for a destination. | for a destination. | |||
There exist a number of common directory systems that might be | There exist a number of common directory systems that might be | |||
used to translate telephone numbers into the URIs of a CPS. ENUM | used to translate telephone numbers into the URIs of a CPS. ENUM | |||
[RFC6116] is commonly implemented, though no "golden root" central | [RFC6116] is commonly implemented, though no "golden root" central | |||
ENUM administration exists that could be easily reused today to | ENUM administration exists that could be easily reused today to | |||
help the endpoints discover a common CPS. Other protocols | help the endpoints discover a common CPS. Other protocols | |||
associated with queries for telephone numbers, such as the TeRI | associated with queries for telephone numbers, such as the | |||
[MODERN-TERI] protocol, could also serve for this application. | Telephone-Related Information (TeRI) protocol [MODERN-TERI], could | |||
also serve for this application. | ||||
Another possibility is to use a single distributed service for | Another possibility is to use a single distributed service for | |||
this function. VIPR [VIPR-OVERVIEW] proposed a RELOAD [RFC6940] | this function. Verification Involving PSTN Reachability (VIPR) | |||
usage for telephone numbers to help direct calls to enterprises on | [VIPR-OVERVIEW] proposed a REsource LOcation And Discovery | |||
the Internet. It would be possible to describe a similar RELOAD | (RELOAD) [RFC6940] usage for telephone numbers to help direct | |||
usage to identify the CPS where calls for a particular telephone | calls to enterprises on the Internet. It would be possible to | |||
number should be stored. One advantage that the STIR architecture | describe a similar RELOAD usage to identify the CPS where calls | |||
has over VIPR is that it assumes a credential system that proves | for a particular telephone number should be stored. One advantage | |||
authority over telephone numbers; those credentials could be used | that the STIR architecture has over VIPR is that it assumes a | |||
to determine whether or not a CPS could legitimately claim to be | credential system that proves authority over telephone numbers; | |||
the proper store for a given telephone number. | those credentials could be used to determine whether or not a CPS | |||
could legitimately claim to be the proper store for a given | ||||
telephone number. | ||||
This document does not prescribe any single way to do service | This document does not prescribe any single way to do service | |||
discovery for a CPS; it is envisioned that initial deployments will | discovery for a CPS; it is envisioned that initial deployments will | |||
provision the location of the CPS at the Authentication Service and | provision the location of the CPS at the authentication service and | |||
Verification Service. | verification service. | |||
11. Encryption Key Lookup | 11. Encryption Key Lookup | |||
In order to encrypt a PASSporT (see Section 6.1), the caller needs | In order to encrypt a PASSporT (see Section 6.1), the caller needs | |||
access to the callee's public encryption key. Note that because STIR | access to the callee's public encryption key. Note that because STIR | |||
uses ECDSA for signing PASSporTs, the public key used to verify | uses the Elliptic Curve Digital Signature Algorithm (ECDSA) for | |||
PASSporTs is not suitable for this function, and thus the encryption | signing PASSporTs, the public key used to verify PASSporTs is not | |||
key must be discovered separately. This requires some sort of | suitable for this function, and thus the encryption key must be | |||
directory/lookup system. | discovered separately. This requires some sort of directory/lookup | |||
system. | ||||
Some initial STIR deployments have fielded certificate repositories | Some initial STIR deployments have fielded certificate repositories | |||
so that verification services can acquire the signing credentials for | so that verification services can acquire the signing credentials for | |||
PASSporTs, which are linked through a URI in the "x5u" element of the | PASSporTs, which are linked through a URI in the "x5u" element of the | |||
PASSporT. These certificate repositories could clearly be repurposed | PASSporT. These certificate repositories could clearly be repurposed | |||
for allowing authentication services to download the public | for allowing authentication services to download the public | |||
encryption key for the called party - provided they can be discovered | encryption key for the called party -- provided they can be | |||
by calling parties. This document does not specify any particular | discovered by calling parties. This document does not specify any | |||
discovery scheme, but instead offers some general guidance about | particular discovery scheme, but instead offers some general guidance | |||
potential approaches. | about potential approaches. | |||
It is a desirable property that the public encryption key for a given | It is a desirable property that the public encryption key for a given | |||
party be linked to their STIR credential. An ECDH [RFC7748] public- | party be linked to their STIR credential. An Elliptic Curve | |||
private key pair might be generated for a subcert [TLS-SUBCERTS] of | Diffie-Hellman (ECDH) [RFC7748] public-private key pair might be | |||
the STIR credential. That subcert could be looked up along with the | generated for a subcert [TLS-SUBCERTS] of the STIR credential. That | |||
STIR credential of the called party. Further details of this | subcert could be looked up along with the STIR credential of the | |||
subcert, and the exact lookup mechanism involved, are deferred for | called party. Further details of this subcert, and the exact lookup | |||
future protocol work. | mechanism involved, are deferred for future protocol work. | |||
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 keys, then | callee each access in real time to download the other's keys, then | |||
this represents a real privacy risk, as the central key database | this represents a real privacy risk, as the central key database | |||
learns about each call. A number of mechanisms are potentially | learns about each call. A number of mechanisms are potentially | |||
available to mitigate this: | available to mitigate this: | |||
Have endpoints pre-fetch keys for potential counterparties (e.g., | Have endpoints pre-fetch keys for potential counterparties (e.g., | |||
their address book or the entire database). | their address book or the entire database). | |||
Have caching servers in the user's network that proxy their | 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. | |||
Clearly, there is a privacy/timeliness tradeoff in that getting up- | Clearly, there is a privacy/timeliness trade-off in that getting up- | |||
to-date knowledge about credential validity requires contacting the | to-date knowledge about credential validity requires contacting the | |||
credential directory in real-time (e.g., via OCSP [RFC2560]). This | credential directory in real-time (e.g., via the Online Certificate | |||
is somewhat mitigated for the caller's credentials in that he can get | Status Protocol (OCSP) [RFC2560]). This is somewhat mitigated for | |||
short-term credentials right before placing a call which only reveals | the caller's credentials in that he can get short-term credentials | |||
his calling rate, but not who he is calling. Alternately, the CPS | right before placing a call which only reveals his calling rate, but | |||
can verify the caller's credentials via OCSP, though of course this | not who he is calling. Alternately, the CPS can verify the caller's | |||
requires the callee to trust the CPS's verification. This approach | credentials via OCSP, though of course this requires the callee to | |||
does not work as well for the callee's credentials, but the risk | trust the CPS's verification. This approach does not work as well | |||
there is more modest since an attacker would need to both have the | for the callee's credentials, but the risk there is more modest since | |||
callee's credentials and regularly poll the database for every | an attacker would need to both have the callee's credentials and | |||
potential caller. | regularly poll the database for every potential caller. | |||
We consider the exact best point in the tradeoff space to be an open | We consider the exact best point in the trade-off space to be an open | |||
issue. | issue. | |||
12. Acknowledgments | 12. IANA Considerations | |||
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, Mary Barnes, Ben Campbell, Ted Huang, | ||||
Jonathan Rosenberg, and Robert Sparks for helpful suggestions. | ||||
13. IANA Considerations | ||||
This memo includes no request to IANA. | This document has no IANA actions. | |||
14. Privacy Considerations | 13. Privacy Considerations | |||
Delivering PASSporTs out-of-band offers a different set of privacy | Delivering PASSporTs out-of-band offers a different set of privacy | |||
properties than traditional in-band STIR. In-band operations convey | properties than traditional in-band STIR. In-band operations convey | |||
PASSporTs as headers in SIP messages in cleartext, which any | PASSporTs as headers in SIP messages in cleartext, which any | |||
forwarding intermediaries can potentially inspect. By contrast, out- | forwarding intermediaries can potentially inspect. By contrast, out- | |||
of-band STIR stores these PASSporTs at a service after encrypting | of-band STIR stores these PASSporTs at a service after encrypting | |||
them as described in Section 6, effectively creating a path between | them as described in Section 6, effectively creating a path between | |||
the authentication and verification service in which the CPS is the | the authentication and verification service in which the CPS is the | |||
sole intermediary, but the CPS cannot read the PASSporTs. | sole intermediary, but the CPS cannot read the PASSporTs. | |||
Potentially, out-of-band PASSporT delivery could thus improve on the | Potentially, out-of-band PASSporT delivery could thus improve on the | |||
privacy story of STIR. | privacy story of STIR. | |||
The principle actors in the operation of out-of-band are the AS, VS, | The principle actors in the operation of out-of-band are the AS, VS, | |||
and CPS. The AS and VS functions differ from baseline [RFC8224] | and CPS. The AS and VS functions differ from baseline behavior | |||
behavior, in that they interact with an CPS over a non-SIP interface, | [RFC8224], in that they interact with a CPS over a non-SIP interface, | |||
of which the REST interface in Section 9 serves as an example. Some | of which the REST interface in Section 9 serves as an example. Some | |||
out-of-band deployments may also require a discovery service for the | out-of-band deployments may also require a discovery service for the | |||
CPS itself (Section 10) and/or encryption keys (Section 11). Even | CPS itself (Section 10) and/or encryption keys (Section 11). Even | |||
with encrypted PASSporTs, the network interactions by which the AS | with encrypted PASSporTs, the network interactions by which the AS | |||
and VS interact with the CPS, and to a lesser extent any discovery | and VS interact with the CPS, and to a lesser extent any discovery | |||
services, thus create potential opportunities for data leakage about | services, thus create potential opportunities for data leakage about | |||
calling and called parties. | calling and called parties. | |||
The process of storing and retrieving PASSporTs at a CPS can itself | The process of storing and retrieving PASSporTs at a CPS can itself | |||
reveal information about calls being placed. The mechanism takes | reveal information about calls being placed. The mechanism takes | |||
care not to require that the AS authenticate itself to the CPS, | care not to require that the AS authenticate itself to the CPS, | |||
relying instead on a blind signature mechanism for flood control | relying instead on a blind signature mechanism for flood control | |||
prevention. Section 7.4 discusses the practice of storing "dummy" | prevention. Section 7.4 discusses the practice of storing "dummy" | |||
PASSporTs at random intervals to thwart traffic analysis, and as | PASSporTs at random intervals to thwart traffic analysis, and as | |||
Section 8.2 notes, a CPS is required to return a dummy PASSporT even | Section 8.2 notes, a CPS is required to return a dummy PASSporT even | |||
if there is no PASSporT indexed for that calling number, which | if there is no PASSporT indexed for that calling number, which | |||
similarly enables the retrieval side to randomly request PASSporTs | similarly enables the retrieval side to randomly request PASSporTs | |||
when there are no calls in progress. These measures can help to | when there are no calls in progress. These measures can help to | |||
mitigiate information disclosure in the system. In implementations | mitigate information disclosure in the system. In implementations | |||
that require service discovery (see Section 10), perhaps through key | that require service discovery (see Section 10), perhaps through key | |||
discovery (Section 11), similar measures could be used to make sure | discovery (Section 11), similar measures could be used to make sure | |||
that service discovery does not itself disclose information about | that service discovery does not itself disclose information about | |||
calls. | calls. | |||
Ultimately, this document only provides a framework for future | Ultimately, this document only provides a framework for future | |||
implementation of out-of-band systems, and the privacy properties of | implementation of out-of-band systems, and the privacy properties of | |||
a given implementation will depend on architectural assumptions made | a given implementation will depend on architectural assumptions made | |||
in those environments. More closed systems for intranet operations | in those environments. More closed systems for intranet operations | |||
may adopt a weaker security posture but otherwise mitigate the risks | may adopt a weaker security posture but otherwise mitigate the risks | |||
of information disclosure, where more open environment will require | of information disclosure, whereas more open environments will | |||
careful implementation of the practices described here. | require careful implementation of the practices described here. | |||
For general privacy risks associated with the operations of STIR, | For general privacy risks associated with the operations of STIR, | |||
also see the Privacy Considerations of [RFC8224]. | also see the privacy considerations covered in Section 11 of | |||
[RFC8224]. | ||||
15. Security Considerations | 14. Security Considerations | |||
This entire document is about security, but the detailed security | This entire document is about security, but the detailed security | |||
properties will vary depending on how the framework is applied and | properties will vary depending on how the framework is applied and | |||
deployed. General guidance for dealing with the most obvious | deployed. General guidance for dealing with the most obvious | |||
security challenges posed by this framework is given in Section 7.3 | security challenges posed by this framework is given in Sections 7.3 | |||
and Section 7.4, along proposed solutions for problems like denial- | and 7.4, along proposed solutions for problems like denial-of-service | |||
of-service attacks or traffic analysis against the CPS. | attacks or traffic analysis against the CPS. | |||
Although there are considerable security challenges associated with | Although there are considerable security challenges associated with | |||
widespread deployment of a public CPS, those must be weighed against | widespread deployment of a public CPS, those must be weighed against | |||
the potential usefulness of a service that delivers a STIR assurance | the potential usefulness of a service that delivers a STIR assurance | |||
without requiring the passage of end-to-end SIP. Ultimately, the | without requiring the passage of end-to-end SIP. Ultimately, the | |||
security properties of this mechanism are at least comparable to in- | security properties of this mechanism are at least comparable to in- | |||
band STIR: the substitution attack documented in Section 7.4 could be | band STIR: the substitution attack documented in Section 7.4 could be | |||
implemented by any in-band SIP intermediary or eavesdropper who | implemented by any in-band SIP intermediary or eavesdropper who | |||
happened to see the PASSporT in transit, say, and launch its own call | happened to see the PASSporT in transit, say, and launched its own | |||
with a copy of that PASSporT to race against the original to the | call with a copy of that PASSporT to race against the original to the | |||
destination. | destination. | |||
16. Informative References | 15. Informative References | |||
[MODERN-TERI] | [MODERN-TERI] | |||
Peterson, J., "An Architecture and Information Model for | Peterson, J., "An Architecture and Information Model for | |||
Telephone-Related Information (TeRI)", Work in Progress, | Telephone-Related Information (TeRI)", Work in Progress, | |||
Internet-Draft, draft-ietf-modern-teri-00, 2 July 2018, | Internet-Draft, draft-ietf-modern-teri-00, 2 July 2018, | |||
<https://tools.ietf.org/html/draft-ietf-modern-teri-00>. | <https://tools.ietf.org/html/draft-ietf-modern-teri-00>. | |||
[PASSPORT-DIVERT] | [PASSPORT-DIVERT] | |||
Peterson, J., "PASSporT Extension for Diverted Calls", | Peterson, J., "PASSporT Extension for Diverted Calls", | |||
Work in Progress, Internet-Draft, draft-ietf-stir- | Work in Progress, Internet-Draft, draft-ietf-stir- | |||
skipping to change at line 1285 ¶ | skipping to change at line 1284 ¶ | |||
<https://tools.ietf.org/html/draft-ietf-tls-subcerts-09>. | <https://tools.ietf.org/html/draft-ietf-tls-subcerts-09>. | |||
[VIPR-OVERVIEW] | [VIPR-OVERVIEW] | |||
Barnes, M., Jennings, C., Rosenberg, J., and M. Petit- | Barnes, M., Jennings, C., Rosenberg, J., and M. Petit- | |||
Huguenin, "Verification Involving PSTN Reachability: | Huguenin, "Verification Involving PSTN Reachability: | |||
Requirements and Architecture Overview", Work in Progress, | Requirements and Architecture Overview", Work in Progress, | |||
Internet-Draft, draft-jennings-vipr-overview-06, 9 | Internet-Draft, draft-jennings-vipr-overview-06, 9 | |||
December 2013, <https://tools.ietf.org/html/draft- | December 2013, <https://tools.ietf.org/html/draft- | |||
jennings-vipr-overview-06>. | jennings-vipr-overview-06>. | |||
Acknowledgments | ||||
The ideas in this document came out of discussions with Richard | ||||
Barnes and Cullen Jennings. We'd also like to thank Russ Housley, | ||||
Chris Wendt, Eric Burger, Mary Barnes, Ben Campbell, Ted Huang, | ||||
Jonathan Rosenberg, and Robert Sparks for helpful suggestions. | ||||
Authors' Addresses | Authors' Addresses | |||
Eric Rescorla | Eric Rescorla | |||
Mozilla | Mozilla | |||
Email: ekr@rtfm.com | Email: ekr@rtfm.com | |||
Jon Peterson | Jon Peterson | |||
Neustar, Inc. | Neustar, Inc. | |||
1800 Sutter St Suite 570 | 1800 Sutter St Suite 570 | |||
End of changes. 97 change blocks. | ||||
242 lines changed or deleted | 248 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |