Re: [dispatch] New I-D - SPIN - on voice/video interop between app providers

Eric Rescorla <> Fri, 22 July 2022 15:22 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 33E86C16ED16 for <>; Fri, 22 Jul 2022 08:22:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.903
X-Spam-Status: No, score=-6.903 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id UHH7rELytFYl for <>; Fri, 22 Jul 2022 08:22:12 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:4864:20::d2c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by (Postfix) with ESMTPS id 44B60C15A722 for <>; Fri, 22 Jul 2022 08:22:12 -0700 (PDT)
Received: by with SMTP id n138so3878582iod.4 for <>; Fri, 22 Jul 2022 08:22:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SBQBNn6A/Z5gJrOZDwhzhaAmkineV0KZLhjCLlJqoT8=; b=QI7oLYv70ATdlXzWHT02bB/1d0zhK3nhxaBktJXQzbIarDmLgO8aomveLLGMENZjgW NEQlSfMZdRI0CJ9hdXVaIAbC4Yv9UTmtTT886zb2dGFWiuZFC+BG+A9jhII9XdCt9I1D 5xRVxNCwghPqL7+zIIv9p3u50/9tpUMGi3S/6I9c8i+R5CzoppKxKDW8X09Ia3y72jWe Zfalj8gGc42n4mdoE8/Dms/PXTtsyI85gaZiLODMGn7nkTj9lmhTBQ/Bggk1Q/jEsi4g dlSP32nle4CWQlAilSSagiOlz9T3QnQb3YzfbComcKJ2gZ7lPyavc+OMxvI4hxoHMuSJ cFxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SBQBNn6A/Z5gJrOZDwhzhaAmkineV0KZLhjCLlJqoT8=; b=uZpI9i1O468jtV1slUKJ65FR0cc4WBJ/zS2ydbCnDRi9ucFWVX9hE/YB4+Vp3ycsmP K8HMbdfKGT0RAkEQ5fcN8JO41ZEoTCYekC+jE8URRxZ3opJa9RZXTT84CcHkxgZgzOtz i57D0Vs5I3DV61OY5u2vxmOu4TJXW56lowB8uKh/zw38stLTCrv3CzpotwsRu0vb6Ri8 a1qXQt+D7rUJxMb/gHq1CZftHWsJvRndSJlVikTwqIG4/bYIWfgqRN7DqifV1JaqAE6t kC/PxDHEm7PTxtyhNQPxEqsRiW8R1as6RDiKQuK93kTxhCZIzQyOyxHYRLLGuyUlPR2V 4zYA==
X-Gm-Message-State: AJIora8e9QdOJusMw4F/6bQpnhg3JJFFwonQo9pzC0LzTjxbiOm8a+VN YdLOerSc4/mlfGJztHwNAUBHkoqTYsuLKKKMev4TIEBvsTwp39kr
X-Google-Smtp-Source: AGRyM1skIj0muh1M8dEbVXtM0yt28Su9aRFzWPLBupwoC2Mmyg22MfoIHO1t98cmWqxpTLNpMQbtbblqHhyyEZqN3Yk=
X-Received: by 2002:a02:a61a:0:b0:33f:70cb:a86b with SMTP id c26-20020a02a61a000000b0033f70cba86bmr259086jam.137.1658503331257; Fri, 22 Jul 2022 08:22:11 -0700 (PDT)
MIME-Version: 1.0
References: <>
In-Reply-To: <>
From: Eric Rescorla <>
Date: Fri, 22 Jul 2022 08:21:33 -0700
Message-ID: <>
To: Jonathan Rosenberg <>
Content-Type: multipart/alternative; boundary="000000000000eb3de505e4666525"
Archived-At: <>
Subject: Re: [dispatch] New I-D - SPIN - on voice/video interop between app providers
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: DISPATCH Working Group Mail List <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 22 Jul 2022 15:22:16 -0000

Thanks for starting this conversation.

I agree with a number of the the assumptions underlying
this proposal, specifically:

- What makes this potentially possible where previous efforts have
  failed is the force of regulation, specifically the DMA.

- Forward message routing is the most practical way
  to establish who is entitled to a specific number.

However, it seems to me that the specific design you describe
has a number of suboptimal properties. In particular:

- It requires the sending and receiving endpoints to be jointly
  online. This is not unreasonable for voice calling but is
  undesirable for messaging.

- It makes the OS vendors certificate authorities, which (a) they may
  not to be (b) gives users no real choices in their trust decisions
  (specifically, even if I am an Apple user, I need to trust Android!)
  and (c) is incompatible with purely open source systems.

- It requires each individual relying party (caller) to make their own
  verification, which makes the kinds of transparency mechanisms we
  ordinarily use to detect impersonation or misissuance/misrouting
  much more difficult, if not impossible [0].

It seems to me that there are alternative designs which do not have
this problem.

As an intuition pump, consider a system in which we have a single
central Resolution Service (RS).

- When a user installs a communications application on their device,
  that application contacts the RS, demonstrates control of the relevant
  number via SMS answerback (i.e., the RS sends them a challenge via
  SMS) [1]. The application is then able to store a record at the
  RS with the relevant contact information. If there are multiple
  applications, there would be multiple records.

- The RS issues Alice a credential (e.g., a certificate) which she can
  use to authenticate ownership of her number.

- When Alice wants to call Bob, she (or rather the calling/messaging
  application) looks up Bob's phone number in the registration
  service, retrieves the appropriate records, and is able to select
  whichever one is appropriate to complete the communication.  Alice
  uses her credential to authenticate the call.

This system addresses most of my objections above. Specifically:

- It doesn't require the endpoints to be jointly online.

- It is fully compatible with open source because it doesn't
  require trusting the OS or OS vendor on the other end.
  It doesn't give the user choices about who to trust because
  they have to trust the RS (but see below).

- It doesn't require online user verification, and so is
  compatible with Certificate Transparency type systems,
  audit of the RS, etc.

I do want to flag one potential privacy issue with this class of
design, which is that it allows the calling party to determine which
messaging/calling applications a given user uses.  By contrast, a
design like the one in SPIN allows for filitering on the receiving
side (though that doesn't seem to be in the document). I'm not sure
how big an issue this is, given that you can often join each service
and then try to connect, but it's not ideal.  I do have some handwavy
ideas for how to address this (e.g., ACLs uploaded the RS), but
they're not fully fleshed out. I do think it's possible to address,

Obviously, one giant RS isn't that desirable (although as I understand
it, this is effectively how Local Number Portability works in the
NANP). With that said, one view of the current SPIN proposal is that
it has two big RSes, one run by Apple and one by Google: as described
in S 5, the originating party has already done effectively the
registration flow I describe above:

   There are two ways in which the originating OS can obtain such a
   certificate.  In one approach, the mobile OS would perform SMS
   verification (again, invisibly, by absorbing the SMS it sends to
   itself), and add an additional check of comparing it agaisnt the
   mobile numnber the user claimed they owned during provisioning time
   of the device.  The mobile OS vendor would be a valid CA, and then
   generte a certificate valid for that individual phone number.  In an
   alternative model, the telco uses certificate delegation [RFC9060],
   and generates a certificate that is handed to the phone during device
   provisioning.  The latter approach is more secure in some ways (as it
   would no longer depend on SMS forward routability for authentication
   of a user), but is much harder to deploy.

In fact, one could design something with roughly similar security
properties to the current draft by simply having Apple and Google
expose an RS API for the endpoints which had already registered as
above. The caller could then look up the target number in both Apple
and Google APIs and skip the forward SMS pieces entirely. This seems
less desirable than a single RS, but it would have a number of the
same advantages, such as not requiring both endpoints to be online
and being compatible with transparency mechanisms.

With that said, we can also do better than a single central RS.  I
don't have a complete design, but some thoughts are below.

First, it seems like authentication and discovery are separate
services, so we could have multiple CAs for telephone numbers that
each do SMS verification (a similar structure to the WebPKI) but a
single directory service. This would allow users (or really client
applications) to make their own decisions about who to trust.

One could also imagine having multiple RSes which stored phone number
records as long as there was some mechanism for determining which RS
had a given number. That mapping could then be on a single service or
just replicated to each application vendor (it's really not that
big). This would allow a diversity of RSs but with a single central
reference point so the originating party wouldn't need to poll all of

At any rate, I think this type of architecture is worth considering
as an alternative to the design in this specification.


[0] As an example of this point, consider a nation-state attacker who
controls the PSTN and wishes to covertly intercept Alice and Bob's
communications: it reroutes the SMS messages from their communication
and then completes the call itself. In the analogous context in the
WebPKI, this creates a record in the CT log which can then be
detected, but that is not the case here.

[1] This might require some OS affordances, but I don't think
they would be that hard to design.

On Tue, Jul 12, 2022 at 7:13 AM Jonathan Rosenberg <>

> Hi fellow dispatchers -
> I wanted to call attention to the following draft submitted yesterday:
> Abstract:
> This document introduces a framework and a protocol for facilitating
>    voice, video and messaging interoperability between application
>    providers.  This work is motivated by the recent passage of
>    regulation in the European Union - the Digital Markets Act (DMA) -
>    which, amongst many other provisions, requires that vendors of
>    applications with a large number of users enable interoperability
>    with applications made by other vendors.  While such interoperability
>    is broadly present within the public switched telephone network, it
>    is not yet commonplace between over-the-top applications, such as
>    Facetime, WhatsApp, and Facebook Messenger.  This document
>    specifically defines the Simple Protocol for Inviting Numbers (SPIN)
>    which is used to deliver invitations to mobile phone numbers that can
>    bootstrap subsequent communications over the Internet.
> Right now, we're looking to see if there is interest in working on this.
> Comments welcome.
> Thx,
> Jonathan R.
> --
> Jonathan Rosenberg, Ph.D.
> _______________________________________________
> dispatch mailing list