RFC 9888

Out-of-Band Secure Telephone Identity Revisited (STIR) for Service Providers

๐Ÿ“… published June 2026, from ietf

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 (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 ๐Ÿ’œ

  1. 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) โณ๐Ÿ’€.

  1. 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 ๐Ÿ”ฎ.

  1. 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 ๐Ÿ“œ.

  1. IANA Considerations ๐Ÿ—‚๏ธ

This document has no IANA actions ๐Ÿ˜Œ.

  1. 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 ๐Ÿ“โœจ.

  1. 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 ๐Ÿ†˜๐Ÿ’€.

  1. 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