RFC 9888
Out-of-Band Secure Telephone Identity Revisited (STIR) for Service Providers
Out-of-Band Secure Telephone Identity Revisited (STIR) for Service Providers ๐โจ
Okay bestie, here's the ID card ๐ชช This is RFC 9888, published by the IETF in June 2026 (ISSN 2070-1721) as a Standards Track document. The author is J. Peterson of TransUnion. The title block doesn't list anything it obsoletes or updates, so it's standing on its own ๐
Abstract ๐ธ
Okay so the Secure Telephone Identity Revisited (STIR) framework has a way to carry its Personal Assertion Tokens (PASSporTs). You can send them in-band, tucked inside the headers of a Session Initiation Protocol (SIP) request, or out-of-band, through a service that stores PASSporTs so relying parties can go grab them later. This spec explains how out-of-band delivery can help big service providers in situations where in-band STIR isn't available everywhere. It's giving backup plan, and it's iconic ๐ฆ
Status of This Memo ๐
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). If you want more info on Internet Standards, check out Section 2 of RFC 7841.
Info about the current status of this document, any errata, and how to send feedback lives at https://www.rfc-editor.org/info/rfc9888. Bookmark it ๐
Copyright Notice ๐
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please read these carefully, because they spell out your rights and restrictions for this document. Code Components pulled out of this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License. Legal stuff, but it matters ๐
Table of Contents ๐๏ธ
1. Introduction
2. Terminology
3. Service Provider Deployment Architecture for Out-of-Band STIR
4. Advertising a CPS
5. Submitting a PASSporT
6. PASSporT Retrieval
7. Gateways
8. IANA Considerations
9. Privacy Considerations
10. Security Considerations
11. References
11.1. Normative References
11.2. Informative References
Acknowledgments
Author's Address
1. Introduction ๐ง
Okay so the Secure Telephone Identity Revisited (STIR) [RFC8224] framework gives you cryptographic proof of who's calling, and that's the whole point: it stops impersonation. Impersonation is a huge enabler of unwanted robocalls, swatting, vishing, voicemail hacking, and similar disasters (see [RFC7340]) ๐ญ The STIR out-of-band [RFC8816] framework lets PASSporT [RFC8225] objects get delivered through a Call Placement Service (CPS) instead of riding inside a signaling protocol like SIP. That's valuable when end-to-end SIP delivery is partly or completely unavailable because of network border policies, when calls routinely go through a gateway to the Public Switched Telephone Network (PSTN), or when things are similarly messy ๐
Out-of-band STIR can run as an open Internet service, but that comes with heavy security and privacy requirements, because the CPS would have to do its job without collecting data about the people placing calls. This spec is about CPS implementations that work specifically for service providers. Those providers are processing the calls STIR is securing, so they necessarily know who's communicating. That makes an alternative security architecture possible, and honestly it's a glow-up ๐ These functions could be crucial for getting STIR adopted in some environments, like legacy non-IP telephone networks, where sending PASSporTs in-band might not be feasible.
Environments that could use this flavour of out-of-band STIR include carriers, large enterprises, call centers, or any Internet service that aggregates on behalf of a large number of telephone endpoints. That last case can include PSTN gateway, interexchange, or international transit providers ๐
2. Terminology ๐
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. So the capitalised ones are the official requirement words, and the lowercase ones are just regular words ๐ซถ
3. Service Provider Deployment Architecture for Out-of-Band STIR ๐๏ธ
The architecture here assumes every participating service provider is associated with one or more designated CPS instances. A service provider's CPS is the spot where callers, or in some cases gateways, can drop off a PASSporT when they're trying to call a subscriber of the destination service provider. If the caller's domain supports in-band STIR, they can do this at the same time as the in-band STIR call is placed. The terminating service provider could run the CPS themselves, or a third party could run it on the destination's behalf. This model doesn't assume one giant CPS serving every service provider, and it doesn't stop multiple service providers from sharing a CPS provider either. A particular CPS can even be a logically distributed entity made up of several geographically distant entities that flood PASSporTs among themselves to support an anycast-like service. Spread out and still cohesive, honestly iconic ๐
Finding a destination CPS and submitting a PASSporT naturally requires Internet connectivity to the CPS. If the CPS is deployed in the terminating service provider's network, that same connectivity could instead be used by a caller to start a SIP session, and then in-band STIR could be used normally. So this architecture applies to cases where, for whatever reason, SIP requests can't reliably carry PASSporTs end-to-end, but an HTTP transaction can reliably be sent to the CPS from an out-of-band authentication service (OOB-AS). The hope is that as IP connectivity between telephone providers grows, there'll be less need for an out-of-band mechanism. Still, it can serve as a fallback for service providers who can't predict whether end-to-end delivery of SIP calls will happen ๐ฆ
4. Advertising a CPS ๐ฃ
If more than one CPS exists for a given deployment, there will need to be some way to discover CPSs, either administratively or programmatically. Lots of service providers have bilateral agreements to peer with each other, and in those setups, figuring out their respective CPSs can just be a simple matter of provisioning. A consortium of service providers could also agree to choose from a list of available CPS providers, say. But in more pluralist environments, some mechanism is needed to discover the CPS associated with the target of a call ๐
To let a service provider's chosen CPS be discovered securely, this specification defines a CPS advertisement. Basically, a CPS advertisement is a document that contains the URL of a CPS, plus any info needed to determine which PASSporTs should be submitted to that CPS (for example, Service Provider Codes (SPCs) or telephone number ranges). An advertisement can be signed with a STIR [RFC8226] credential, or with another credential trusted by the participants in a given STIR environment. Signing with STIR certificates is handy because they contain a "TNAuthList" value showing the telephone network resources a service provider controls. That info can be matched against the TNAuthList value in the CPS advertisement to check whether the signer actually has the authority to advertise a particular CPS as the right destination for PASSporTs ๐
The format of a service provider CPS advertisement is a simple JSON object containing one or more pairs of TNAuthList values pointing to the URIs of CPSs. For example:
{ "0-1234":"https://cps.example.com" }
The key is a hyphen-separated concatenation of each [RFC8226] TNAuthList TNEntry value ("0" for SPC, "1" for telephone number range, "2" for individual telephone number) followed by the corresponding TNAuthList value. For case "1", a telephone number range is expressed as a starting telephone number, then a count, and the count itself. Those are hyphen-separated from the TN, like "1-15714341000-99". An advertisement can hold multiple ranges by adding more pairs ๐งพ
Now the big rules. CPS URIs MUST be HTTPS URIs (Section 4.2.2 of [RFC9110]). These CPS URIs SHOULD be publicly reachable, because service providers usually can't predict all the potential callers that might want to connect with them. However, in more constrained environments, they MAY be reachable only over a closed network. Stay safe, bestie ๐
Advertising an SPC could be the wrong move in environments where the originating domain has no easy way to figure out whether a given called telephone number falls within an SPC's scope, like with a national routing database that maps telephone numbers to SPCs. In those environments, TN-based advertisements could make discovery possible instead. Also, PASSporTs can sign communication where the "orig" and/or "dest" aren't telephone numbers as such, but URI-based identifiers instead. Usually those PASSporTs wouldn't be validated with a certificate as described in [RFC8226], and any future specification would need to identify URI-based prefixes for CPS advertisements. Plot twist, there's more to come ๐
CPS advertisements could be made available through existing or new databases, potentially aggregated across multiple service providers and distributed to call originators as needed. They could be discovered during the call routing process, including through a DNS lookup. They could also be shared through a distributed database among the participants in a multilateral peering arrangement ๐ธ
Another option that might work in some environments is adding a field to STIR certificates, as described in [RFC8226], that identifies the CPS URI issued to individual service providers. Since those certificates are themselves signed by a Certification Authority (CA) and contain their own TNAuthList, the URI is securely bound to the proper telephone network identifiers. Because STIR assumes a community of relying parties who trust these credentials, this method maybe best mirrors the trust model needed to let a CPS authorize PASSporT submission and retrieval โจ
๐ง That's Part 1 of 3! Sections 5 through 11, plus the Acknowledgments and Author's Address, are coming in the next parts, so stay tuned, bestie ๐
- Submitting a PASSporT ๐ฌโจ
okay so submitting a PASSporT to a CPS, the way the STIR out-of-band framework [RFC8816] lays it out, needs security measures that are meant to stop the CPS from learning who the caller (or callee) is, as much as it possibly can ๐. BUT here's the tea: in this service provider case, the CPS is run by the callee's service provider (or someone acting for them) ๐ , so the stuff in the PASSporT is basically redundant with the call signaling the terminating party is getting anyway ๐. So the service provider out-of-band framework doesn't even try to hide the identity of the originating or terminating party from the CPS. It's giving honesty ๐ซถ (see Section 10 for potential data minimization concerns, bestie).
An OOB-AS forms a secure connection with the target CPS ๐. This can happen right when a call is being placed, or it can be a persistent connection if there's a big volume of traffic going over this interface ๐. The OOB-AS SHOULD authenticate itself to the CPS via mutual TLS (see [RFC9325]) using its STIR credential [RFC8226], the same one it would use to sign calls ๐. This helps mitigate the risk of flooding that more-open OOB implementations may face ๐. Also, using mutual TLS stops attackers from replaying captured PASSporTs to the CPS ๐ โโ๏ธ. A CPS makes its own policy decision about whether it'll accept calls from a particular OOB-AS, and at what volumes โญ.
A CPS can use this mechanism to authorize service providers who already hold STIR credentials to submit PASSporTs to a CPS ๐. But alternative mechanisms would be required for any entities that don't hold a STIR credential, including gateway or transit providers who want to submit PASSporTs ๐ง. See Section 7 for more on their behavior ๐.
Service provider out-of-band PASSporTs do NOT need to be encrypted for storage at the CPS ๐๏ธ, but the use of TLS to prevent eavesdropping on the connection between the CPS and OOB-ASs is REQUIRED ๐ฅ. PASSporTs will typically be submitted to the CPS at the time they're created by an AS โฐ. If the PASSporT is also being used for in-band transit within a SIP request, it can be submitted to the CPS before or after the SIP request is sent, at the discretion of the originating domain ๐ฆ. An OOB-AS MUST implement a Representational State Transfer (REST) interface to submit PASSporTs to the CPS as described in Section 9 of [RFC8816] ๐. PASSporTs persist at the CPS for as long as they need to be retrieved (see Section 6) but, in any event, for no longer than the freshness interval of the PASSporT itself (a maximum of sixty seconds) โณ๐.
- PASSporT Retrieval ๐ฅฐ
okay the STIR out-of-band framework [RFC8816] gives two ways for called parties to get PASSporTs out-of-band: a retrieval interface or a subscription interface ๐ฅ. In the service provider context, lots of calls to or from the same number can pass through a CPS at the same time ๐๐๐, so an out-of-band-capable verification service (OOB-VS) can work in one of two modes โจ. It can either pull PASSporTs from the CPS after calls arrive, or receive push notifications from the CPS for incoming calls ๐.
CPS implementations MUST support pulling PASSporTs via the REST flow described in Section 9 of [RFC8816] ๐. In the pull model, a terminating service provider polls the CPS via its OOB-VS after getting a call whose call signaling doesn't itself carry a PASSporT ๐ซ . Exactly how a CPS decides which PASSporTs an OOB-VS is eligible to receive over this interface is a matter of local policy ๐คทโโ๏ธ. If a CPS serves only one service provider, then all PASSporTs submitted to the CPS get made available to that provider's OOB-VS ๐ . Honestly, the CPS and OOB-VS may even be colocated or effectively run as one consolidated system ๐งฉ. In a multi-provider environment, the STIR credential of the terminating domain can be used by the CPS to figure out the range of TNAuthLists an OOB-VS is entitled to receive PASSporTs for ๐๏ธ. This can be through a mechanism like mutual TLS, or through the STIR credential being used to sign a token that the retrieving OOB-VS submits to the CPS ๐๏ธ. Note that a multi-provider CPS will need to inspect the "dest" element of a PASSporT to determine which OOB-VS should receive the PASSporT ๐.
In a push model, an OOB-VS could, for example, subscribe to a range of telephone numbers or a list of SPCs, and those will be directed to that OOB-VS by the CPS (provided the CPS has authorized the OOB-VS to receive them) ๐จ. A PASSporT might be sent to the OOB-VS either before or after unsigned call signaling has been received by the terminating domain ๐. In either model, the terminating side may need to delay rendering a call verification indicator when alerting, so it can wait for a potential PASSporT to show up at the OOB-VS โธ๏ธ. The exact timing of this, and how it interacts with the substitution attack described in Section 7.4 of [RFC8816], is left for future work ๐ฎ.
- Gateways ๐
In some deployment architectures, gateways might do a job that interfaces with a CPS to retrieve or store PASSporTs ๐ง. This is especially true when in-band STIR service providers need to swap secure calls with providers that can only be reached by STIR out-of-band ๐ค. For example, a closed network of in-band STIR providers may send SIP INVITEs to a gateway in front of a traditional PSTN tandem that services a set of legacy service providers ๐ก. In that setup, a gateway might pull a PASSporT out of an in-band SIP INVITE and store it in a CPS that was set up to handle requests for one or more legacy providers ๐๏ธ. Those legacy providers then consume the PASSporTs through an OOB-VS to help with robocall mitigation and similar functions ๐ก๏ธ๐ต.
The simplest way to build a gateway that does this sort of thing for a service provider CPS system is to issue credentials to the gateway that let it act on behalf of the legacy service providers it supports ๐ชช. That would let it both add PASSporTs to the CPS on behalf of the legacy providers, and also create PASSporTs for in-band STIR conveyance from the legacy providers to terminating service providers in the closed STIR network ๐. For example, a service provider could issue a delegate certificate [RFC9060] for this purpose ๐.
- IANA Considerations ๐๏ธ
This document has no IANA actions ๐.
- Privacy Considerations ๐ต๏ธโโ๏ธ
The analysis of out-of-band STIR in the Privacy Considerations section of [RFC8816] is pretty different from this document ๐. Per Section 1, this spec was motivated partly by picking a different privacy architecture than [RFC8816] ๐ง . In this one, the CPS is run by a service provider who is a party to the call itself, so it would independently have access to the call metadata captured in a PASSporT ๐.
That said, when a third-party service runs the verification service function on behalf of a carrier, that third-party service would indeed be privy to this metadata ๐ณ. It's a pretty common situation for third-party services to receive this sort of metadata for billing, security, number translation, and so on ๐ผ. Existing data governance agreements could be readily applied to the out-of-band STIR use case ๐.
Finally, PASSporTs are extensible tokens, and it's conceivable they might contain data that isn't otherwise carried in SIP signaling, or that would ordinarily be considered a component of call metadata ๐งฉ. Any such extensions might have specific interactions with the privacy of both in-band and out-of-band STIR, and their specifications would need to spell that out ๐โจ.
- Security Considerations ๐จ๐ฅ
Okay, the Security Considerations section of [RFC8816] applies to this document ๐, including concerns about potential denial-of-service vectors and traffic analysis ๐ช๏ธ. BUT that spec's model focused a LOT on the privacy implications of uploading PASSporTs to a third-party web service ๐ฑ. This document handles those concerns by making the CPS one of the parties to call setup (or an entity contractually acting on their behalf) ๐ซก. That said, any architecture where PASSporTs are shared with a federated or centralized CPS raises potential concerns about data collection [RFC7258] ๐ฉ. Moreover, in a PASSporT, any additional information that isn't strictly redundant with the contents of a SIP request increases data collection concerns ๐. PASSporTs as defined in [RFC8225] only contain information redundant with the SIP request โ . Existing and future extensions (e.g., the "origid" field described in [RFC8588]) might leak further information ๐ง.
Unlike [RFC8816], this document proposes using STIR certificates to authenticate transactions with a CPS, as well as signatures for CPS advertisements ๐. This presumes an environment where STIR certificates are issued by trust anchors that are already trusted by the CPS, potentially to gateways and similar services ๐๏ธ. Common STIR deployments use SPCs instead of telephone number ranges to identify service providers today ๐ท๏ธ. Figuring out whether a given SPC entitles a service provider to access PASSporTs for a given telephone number is not trivial ๐ตโ๐ซ, but it's a necessary component of this CPS architecture ๐งฑ. Otherwise, if anyone with a STIR certificate could publish or access PASSporTs for any telephone number, that could lead to an undesirable environment ๐ซ where effectively anyone with a STIR certificate could acquire PASSporTs for calls in progress to any service provider ๐๐.
- References ๐
11.1. Normative References ๐งพ
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, "Authenticated Identity Management in the Session Initiation Protocol (SIP)", RFC 8224, DOI 10.17487/RFC8224, February 2018, <https://www.rfc-editor.org/info/rfc8224>.
[RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, <https://www.rfc-editor.org/info/rfc8225>.
[RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity Credentials: Certificates", RFC 8226, DOI 10.17487/RFC8226, February 2018, <https://www.rfc-editor.org/info/rfc8226>.
[RFC8816] Rescorla, E. and J. Peterson, "Secure Telephone Identity Revisited (STIR) Out-of-Band Architecture and Use Cases", RFC 8816, DOI 10.17487/RFC8816, February 2021, <https://www.rfc-editor.org/info/rfc8816>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Semantics", STD 97, RFC 9110, DOI 10.17487/RFC9110, June 2022, <https://www.rfc-editor.org/info/rfc9110>.
[RFC9325] Sheffer, Y., Saint-Andre, P., and T. Fossati, "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November 2022, <https://www.rfc-editor.org/info/rfc9325>.
11.2. Informative References โจ
okay bestie, these are the informative refs ๐ they're not required reading to implement, but they're the receipts for the background stuff ๐
- [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May 2014,
https://www.rfc-editor.org/info/rfc7258. ๐ this one's the classic "surveillance is an attack, so design against it" manifesto, and it's giving principle energy - [RFC7340] Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure Telephone Identity Problem Statement and Requirements", RFC 7340, DOI 10.17487/RFC7340, September 2014,
https://www.rfc-editor.org/info/rfc7340. ๐ the origin story of STIR, where the problem got named and the requirements got written down ๐ซถ - [RFC8588] Wendt, C. and M. Barnes, "Personal Assertion Token (PaSSporT) Extension for Signature-based Handling of Asserted information using toKENs (SHAKEN)", RFC 8588, DOI 10.17487/RFC8588, May 2019,
https://www.rfc-editor.org/info/rfc8588. ๐ฆ the SHAKEN extension to PaSSporT, so the token format and the signing story get the same glow-up - [RFC9060] Peterson, J., "Secure Telephone Identity Revisited (STIR) Certificate Delegation", RFC 9060, DOI 10.17487/RFC9060, September 2021,
https://www.rfc-editor.org/info/rfc9060. ๐ธ certificate delegation for STIR, which is basically how trust gets handed down the chain without everyone needing the keys to the kingdom ๐
Acknowledgments
Thank you to Alex Fenichel for contributing to this specification. ๐ซถ๐ we love a contributor who shows up and helps the whole thing slay โจ
Author's Address
Jon Peterson ๐ง TransUnion Email: jon.peterson@transunion.com ๐
๐ฆ where this page comes from
- ietf: rfc9888 2026-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms