Network Working Group                                       J. Rosenberg
Internet-Draft                                               C. Jennings
Intended status: Standards Track                           Cisco Systems
Expires: September 2, 2018                                 March 1, 2018


  Bootstrapping STIR Deployments with Self-Signed Certs and Callbacks
                   draft-rosenberg-stir-callback-00

Abstract

   Robocalling has become an increasing problem in the Public Switched
   Telephone Network (PSTN).  A partial remedy for it is the provision
   of an authenticated caller ID in the PSTN, which today is lacking.
   Secure Telephone Identity Revisited (STIR) provides this through the
   usage of signed payloads in Session Initiation Protocol (SIP) calls.
   However, STIR deployment requires a global certificate system which
   allows for worldwide issuance of certifications that attest to which
   numbers a provider is responsible for.  Such a system is likely to
   take years to rollout.  To accelerate STIR deployment, this draft
   proposes a technique wherein STIR can be used without certificates
   that attest to number ownership.  This is done through a combination
   of self-signed certificates, reverse callbacks and cached
   validations.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 2, 2018.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.





Rosenberg & Jennings    Expires September 2, 2018               [Page 1]


Internet-Draft               STIR Callbacks                   March 2018


   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 review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Problem Statement . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Overview of Operation . . . . . . . . . . . . . . . . . . . .   4
   4.  Interactions with RFC 8226  . . . . . . . . . . . . . . . . .   8
   5.  SS7 Interactions  . . . . . . . . . . . . . . . . . . . . . .   9
   6.  Formal Protocol Specification . . . . . . . . . . . . . . . .   9
     6.1.  Originating Agent Behavior  . . . . . . . . . . . . . . .   9
       6.1.1.  On Receipt of incoming INVITE . . . . . . . . . . . .   9
       6.1.2.  On Receipt of a Verifying INVITE  . . . . . . . . . .  10
     6.2.  Terminating Agent Behavior  . . . . . . . . . . . . . . .  10
       6.2.1.  On Receipt of Incoming INVITE . . . . . . . . . . . .  10
       6.2.2.  On Receipt of a Response to the Verifying INVITE  . .  11
       6.2.3.  On expiration of the timer  . . . . . . . . . . . . .  12
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  12
     7.1.  Attacks from the Calling Agent  . . . . . . . . . . . . .  12
     7.2.  Attacks from the Called Agent . . . . . . . . . . . . . .  13
     7.3.  Attacks from the agent receiving the Verifying INVITE . .  13
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  13
     8.1.  sip-verify Option Tag . . . . . . . . . . . . . . . . . .  14
     8.2.  Response Code 471 . . . . . . . . . . . . . . . . . . . .  14
     8.3.  Response Code 472 . . . . . . . . . . . . . . . . . . . .  14
     8.4.  Verify-Call Header  . . . . . . . . . . . . . . . . . . .  14
   9.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  15
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  15
     10.2.  Informative References . . . . . . . . . . . . . . . . .  15
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  16

1.  Problem Statement

   Robocalling has become an increasing problem in the Public Switched
   Telephone Network (PSTN).  Efforts to prevent it - such as the do-
   not-call list - have so far proven ineffective.  Recently,
   robocallers have gotten even more crafty, and are tailoring the
   caller ID of incoming calls to match the area codes and exchanges of




Rosenberg & Jennings    Expires September 2, 2018               [Page 2]


Internet-Draft               STIR Callbacks                   March 2018


   the recipients in order to increase the likelihood that targets pick
   up the phone.

   Part of the reason robocalling is possible is that the PSTN doesn't
   provide a way to authenticate caller ID.  This problem has gotten
   worse through the deployment of the Session Initiation Protocol (SIP)
   [RFC3261] along with widespread availability of APIs (as an example,
   Twilio), which allow third parties to easily, at low cost, place
   calls with desired caller IDs to anywhere in the world.

   To remedy this, the Secure Telephony Identity (STIR) working group
   has undertaken to provide a way for e2e authenticated caller ID in
   SIP-based networks [RFC8224] [RFC8225] [RFC8226].  The core concept
   is to enable a signature over the SIP INVITE, the signature covering
   key SIP fields including the From header field containing the caller
   ID.  The signature uses a certificate which is signed by an entity to
   whom the target has a trust chain, and more importantly, the
   certificate claims as part of its structure, the phone numbers that
   the calling party is permitted to claim.

   The primary challenge to deployment of STIR is the certification
   process.  It requires a global certification system which can issue
   certificates to providers across the world, and furthermore, has the
   processes and database accesses required to assert the set of phone
   numbers owned by any carrier using the system.  This is likely to
   require coordination amongst telcos, governments, regulators, and
   telco providers across the globe.  Its scope of complexity is similar
   to ENUM [RFC2916] , which required a similar global infrastructure.
   ENUM was never successfully deployed.

   This document proposes a way to accelerate STIR deployments by
   relaxing the need for any such certification authority.  It works
   with traditional self-signed certificates, and requires only that the
   calling domain and receiving domain support the protocol defined in
   this specification.  This makes it much easier to deploy.  If and
   when certificates with number ownership are deployed, they can easily
   co-exist with this proposal, phasing it out over time.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].








Rosenberg & Jennings    Expires September 2, 2018               [Page 3]


Internet-Draft               STIR Callbacks                   March 2018


3.  Overview of Operation

   Consider the following reference architecture:


                      +----------+
                      |          |
                      |  c.com   |
                      |          |
                      +-----+----+
                            |
                            |
                    +-------+-------+
                    |               |
                    |    SIP        |
   +----------+     |    Core       |     +----------+
   |          |     |    Phone      |     |          |
   |  a.com   +-----+    Network    +-----+  b.com   |
   |          |     |               |     |          |
   +----+-----+     |               |     +-----+----+
        |           +---------------+           |
        |                                       |
       ++                                      ++
       ||                                      ||
       ++                                      ++
    Alice                                     Bob
    (tel:2)                                   (tel:1)


   Alice and Bob are telephone subscribers with phone numbers 2 and 1
   respectively, using service providers a.com and b.com respectively.
   These two providers are connected to each other over a SIP network,
   which provides routing of calls between providers.  A key assumption
   in this proposal is that this core network accurately routes calls to
   a specific number in a way which attackers cannot circumvent easily.
   It also assumes that sufficient portions of this core phone network
   are now SIP based, enabling delivery of SIP extension values between
   the originating and terminating providers.  This second constraint is
   identical to in-band STIR.  Note however that this proposal does not
   require SIP to the endpoints; it only assumes SIP between the
   originating and terminating call agents.  While those agents could be
   SIP proxies or B2BUA, they could also be traditional circuit switched
   agents with SIP interfaces.  We refer to this generically as a call
   agent.

   Alice places a call to Bob's telephone number.  It arrives at Alice's
   agent - the calling agent.  The calling agent has a self-signed
   certificate (the solution also works with traditional domain based



Rosenberg & Jennings    Expires September 2, 2018               [Page 4]


Internet-Draft               STIR Callbacks                   March 2018


   certificates).  Alice's agent uses this certificate to sign the
   INVITE as specified in [RFC8224] and [RFC8225].  The INVITE includes
   a Supported header field with the value stir-callback.

   This passes through the core SIP network, which ultimately delivers
   the call to the receiving agent based on traditional SIP routing
   logic.

   When the call arrives at Bob's agent, it verifies the signature per
   [RFC8224].  Bob's agent maintains a cache, called the validation
   cache, which is a mapping from caller IDs to public keys.  When the
   call arrives, Bob checks whether the caller ID matches an entry in
   the cache.  If there is no match - which is the case for the first
   call from this caller ID - Bob's agent performs a verifying callback
   to check the validity of the caller ID.

   To perform this callback, Bob's agent holds onto the incoming INVITE
   from Alice, and generates a completely separate INVITE, targeted back
   towards the number from the incoming caller ID.  The verifying INVITE
   includes a Require header field with the value stir-callback.  It
   also includes SDP, though the contents of this SDP are not relevant
   as they will never be used.  The verifying INVITE also includes the
   Verify-Call header field.  This header field is populated with value
   taken from the Identity header field of the incoming INVITE from
   Alice.

   The SIP core network will route the verifying INVITE towards the
   agent which owns Alice's number.  There are three possible cases to
   consider.

   1.  The CallerID was correct.  In this case, the verifying INVITE
       will return to one of Alice's call agents.  The agent sees the
       presence of the Require: stir-callback header field.  This tells
       the agent that this is not actually a real call to be completed
       towards Alice, but rather, a verifying callback to check that
       Alice's agent really meant to place the original call.  As such,
       Alice's agent extracts the certifcate and signature values from
       the Verify-Call header field, and checks if they reprsent a valid
       certificate for signatures from Alice.  If it is correct, Alice's
       agent rejects the INVITE with a 471 response code.  This is a new
       response code which means the call itself should not proceed, but
       the receiving agent recognizes the the information in the Verify-
       Call header field as valid.  Alice's agent creates a signature
       over the Call-ID in the incoming INVITE as well as the value in
       the Verify-Call header field, and includes this signature in the
       response, in the Verify-Call header field.  When this error code
       reaches Bob's agent, Bob's agent verifies the signature using the
       public key from the inbound INVITE.  Once this has verified,



Rosenberg & Jennings    Expires September 2, 2018               [Page 5]


Internet-Draft               STIR Callbacks                   March 2018


       Bob's agent knows that the caller-ID in the original INVITE was
       valid.  Bob's agent adds the caller-ID to its cache of validated
       numbers and associates it with the public key from the
       certificate.  Any future calls with this certificate and caller
       ID from that source will be trusted and not require the verifying
       callback.

   The sequence diagram for this case:

   Alice's       SIP Core           Bob's
   Agent                            Agent            Bob
    |               |                |                |
    |-------------->|                |                |
    |INVITE tel:1   |                |                |
    |From: tel:2    |                |                |
    |Call-ID: X     |                |                |
    |Supported:     |                |                |
    |  stir-verify  |                |                |
    |               |--------------->|                |
    |               |INVITE tel:1    |                |
    |               |From: tel:2     |                |
    |               |Call-ID: X      |                |
    |               |Supported:      |                |
    |               |  stir-verify   |                |
    |               |                |                |
    |               |                |                |
    |               |<-------------- |                |
    |               |INVITE tel:2    |                |
    |               |From: tel:1     |                |
    |               |Call-ID:Y       |                |
    |               |Require:        |                |
    |               |  stir-verify   |                |
    |               |Verify-Call: X  |                |
    |               |                |                |
    |<--------------|                |                |
    |INVITE tel:2   |                |                |
    |From: tel:1    |                |                |
    |Call-ID:Y      |                |                |
    |Require:       |                |                |
    |  stir-verify  |                |                |
    |Verify-Call:X  |                |                |
    |               |                |                |
    |-------------->|                |                |
    |471            |                |                |
    |Call-ID: Y     |                |                |
    |Verify-Call:   |                |                |
    | sig(X,Y)      |                |                |
    |               |--------------->|                |



Rosenberg & Jennings    Expires September 2, 2018               [Page 6]


Internet-Draft               STIR Callbacks                   March 2018


    |               |471             |                |
    |               |Call-ID: Y      |                |
    |               |Verify-Call:    |                |
    |               | sig(X,Y)       |                |
    |               |                |                |
    |               |<---------------|                |
    |               |ACK             |                |
    |               |Call-ID: Y      |                |
    |<--------------|                |                |
    |ACK            |                |--------------->|
    |Call-ID: Y     |                |INVITE          |
    |               |                |From: tel:1     |
    |               |                |To: tel:2       |
    |               |                |Call-ID:X       |
    |               |                |                |
    |               |                |<---------------|
    |               |                |200 OK          |
    |               |                |Call-ID:X       |
    |               |<---------------|                |
    |               |200 OK          |                |
    |               |Call-ID: X      |                |
    |<--------------|                |                |
    |200 OK         |                |                |
    |Call-ID: X     |                |                |
    |               |                |                |
    |               |                |                |
    |               |                |                |
    |               |                |                |
    |               |                |                |

   1.  Alice's agent presented a false caller ID, and the agent which
       owns that false caller ID supports this extension.  The verifying
       INVITE will route through the SIP core but arrive at a different
       agent, that of c.com.  That agent supports the stir-verify option
       tag.  However, when goes to validate the values from the Verify-
       Call header field, it will fail.  In that case, it rejects the
       INVITE with a 472 response code.  This is another new response
       code, which means the call itself should not proceed, and
       furthermore, the receiving agent did not recognize the
       information in the Verify-Call header field as valid.  When Bob's
       agent receives this, it rejects the incoming INVITE with a 472 as
       well, informing Alice's agent that it rejected the call due to an
       invalid caller ID.

   2.  Alice's agent presented a false caller ID, and the agent which
       owns that false caller ID does not support this extension.  When
       the verifying INVITE arrives at c.com's agent, it will reject the
       INVITE as normal with a 420 response code due to the presence of



Rosenberg & Jennings    Expires September 2, 2018               [Page 7]


Internet-Draft               STIR Callbacks                   March 2018


       the unsupported Require option tag.  This is routed back to Bob's
       agent.  The receipt of a 420 could signify a malicious caller ID,
       but could also indicate that there was an intermediate PSTN
       gateway in the SIP core, in which case the caller ID could be
       authentic.  In this case, Bob's agent MAY complete the call
       towards the caller.

   Each agent builds its own cache of validated certificates for caller
   ID values.  These caches do not need to be shared between providers;
   they are purely localized to a single administrative entity.  The
   cache entries are invalidated based on the lifetime of the
   certificate, or through the receipt of an incoming INVITE whose
   caller ID matches a cache entry, but with a different public key in
   the certificate.  This can happen legitimately due to a number port.
   In such a case, the receiving agent removes the cache entry and re-
   performs the validation callback.

   Open Issue: Should a new public key invalidate previos ones or should
   multiple public keys for same caller ID be allowed.

   The design proposed here uses an INVITE in the reverse direction,
   rather than an OPTIONS request or another extension, to maximize the
   probability that the verifying call actually traverses the SIP core.
   The significant number of SBCs and other entities which are not
   likely to pass OPTIONS or non-INVITE requests makes this the best
   approach for success.  It also ensures that the same policy that
   would be use to route a real call, routes the verifying call.

   The presence of the Require header field in the verifying INVITE is
   critical to the operation of the solution.  It prevents the verifying
   INVITE from actually ringing a real phone, which would be quite
   annoying.

4.  Interactions with RFC 8226

   This mechanism provides a technique for deploying STIR prior to the
   availability of RFC 8226 certificates.  It also works nicely in
   conjunction with incremental deployment of RFC 8226.

   In the case where an originating agent supports both this
   specification and RFC 8226, it would use the RFC 8226 certificates
   which cryptographically assure its ownership of the number in the
   From header field.  When this is received at the terminating agent,
   if that agent supports both RFC 8226 and this specification, it first
   checks for the presence of the RFC 8226 certificate.  If present and
   valid, it proceeds with the call and no verifying callback is
   required.  If the certificate is RFC 8226 compliant but the number




Rosenberg & Jennings    Expires September 2, 2018               [Page 8]


Internet-Draft               STIR Callbacks                   March 2018


   does not match the one in the From header field, or there was no RFC
   8226 certificate present, the verifying INVITE is generated.

   The consequence of this co-existence is that the volume of verifying
   callbacks decreases as RFC 8226 is deployed, and the overall system
   provides verified caller ID the entire time.

5.  SS7 Interactions

   In reality, significant portions of the PSTN traffic between carriers
   remain powered by SS7 and not SIP.  If that happens, the verifying
   INVITE might hit an SS7 gateway which is not an agent acting on
   behalf of Alice.

   There are two subcases.  In one case, the SS7 gateway does not
   support this extension.  When that happens, the INVITE is rejected
   with a 420.  As described above, Bob's agent will pass the call to
   Bob. If however the SS7 gateway does support this extension, it still
   rejects the request with a 420 error code.  This is because the
   overall system - the PSTN - does not support the extension and the
   call cannot be passed through the PSTN.

   TODO: consider specifying an SS7 gateway function and corresponding
   SS7 extension; this extension needs only a single bit to pass through
   the SS7 network, and two bits in the call rejection message.  It is
   worth noting that SS7 extensions may be needed to pass the PASSporT
   information.  Need to investigate if that is possible.

6.  Formal Protocol Specification

   This specification defines behavior for two entities - an originating
   agent and a terminating agent.

   An entity acting as an originating or terminating agent can be a
   proxy or a B2BUA.  However, it MUST be the registrar of record for
   the user on whose behalf it operates.

6.1.  Originating Agent Behavior

6.1.1.  On Receipt of incoming INVITE

   When an originating agent is acting as an outbound proxy on behalf of
   the user and receives an outbound INVITE from a user (no Require
   header field with a value of stir-verify), it MUST include a
   Supported header field in the INVITE with a value of stir-verify.  It
   MUST add an entry to a table, the pending transactions table.





Rosenberg & Jennings    Expires September 2, 2018               [Page 9]


Internet-Draft               STIR Callbacks                   March 2018


   Furthermore, the originating agent MUST follow the procedures defined
   in [RFC8224] and [RFC8225] to compute a passport and create a
   signature over it.  It MAY utilize either a self-signed certificate
   or a traditional domain based certificate.

6.1.2.  On Receipt of a Verifying INVITE

   When an originating agent receives an INVITE with a Require header
   field containing the value stir-verify, it MUST examine the INVITE
   for the presence of a Verify-Call header field.  If this header field
   is not present, the originating agent MUST reject the INVITE with a
   400 error code.  If the header field is present, the agent extracts
   the value there, and checks that it represets a valid PASSporT
   signature using any self singned certificates for the caller ID.

   If it is valid, it MUST reject the incoming INVITE with a response
   code of 471.  If it is not valid, it MUST reject the incoming INVITE
   with a 472 response code.

   A response with a 471 response code MUST contain a signature, placed
   into the Verify-Call header field in the response.  This signature is
   computed by taking the caller ID from the incoming INVITE,
   concatenating it with the value present in the Verify-Call header
   field, and then using that as an input to the signature function.
   TODO: provide detailed spec on signature function.

   Open Issue: is this signature in 471 needed?

6.2.  Terminating Agent Behavior

6.2.1.  On Receipt of Incoming INVITE

   When a terminating agent receives an incoming request for a user on
   whose behalf it operates, it checks for the existence of the
   Supported header field with a value of stir-verify.  If not present,
   the agent SHOULD pass the call to the targeted user.  If present, the
   agent behaves as follows.

   The agent SHOULD maintain a validation cache.  This cache is indexed
   by E.164 number, and contains as a value the public key of the
   certificate for the agent that was validated as being authoritative
   for that number.

   The agent extracts the number from the From header field of the
   incoming INVITE.  It performs the validation processing defined in
   [RFC8224] to verify the signature.  Once validated, it checks the
   value of the From header field against the cache.




Rosenberg & Jennings    Expires September 2, 2018              [Page 10]


Internet-Draft               STIR Callbacks                   March 2018


   If there is a matching cache entry, and the public key in the cache
   entry matches that of the certificate, the agent SHOULD forward the
   original INVITE towards the called party.

   If there is a matching cache entry, but the public key in the cache
   entry does not match that of the certificate, the agent MUST
   invalidate the cache entry and proceed as if there was no match.

   If there was no matching entry in the cache, the agent constructs a
   new INVITE header field.  The Request-URI and To header field of this
   INVITE MUST match that of the From header field from the incoming
   INVITE.  The From header field MUST be set to the value from the To
   header field in the incoming INVITE.  The request MUST contain a
   Require header field with value stir-verify.  The request MUST
   contain any valid SDP offer [RFC3264].  This request MUST then be
   sent towards the request URI in the same way it would have been sent
   had it been received from its own user.

   The agent sets a timer, with a RECOMMENDED value of 5 seconds.  This
   represents the maximum amount of time the agent will wait for a
   response to the verifying INVITE before passing the call onwards to
   the the target of the incoming call.

6.2.2.  On Receipt of a Response to the Verifying INVITE

   If the terminating agent receives a 471 response to the verifying
   INVITE, it MUST look for the presence of a Verify-Call header field
   in the response.  If not present, the original INVITE is rejected
   with a 472, and it MUST NOT add an entry to its validation cache.
   The signature from this Verify-Call header field is verified, and
   checked to match against the public key used in the incoming INVITE.
   If not valid, the original INVITE is rejected with a 472, and it MUST
   NOT add an entry to its validation cache.  If the signature is valid,
   It SHOULD add an entry to its validation cache.  This cache is
   indexed by the caller ID present in the From header field of the
   original INVITE.  Its value is the public key from the certificate in
   the incoming INVITE.

   If the terminating agent receives a 472 response to the verifying
   INVITE, it MUST NOT add an entry to its validation cache.  It SHOULD
   reject the original INVITE with a 472 error response.  If the
   terminating agent receives a 420 response to the verifying INVITE, it
   MUST NOT add an entry to its validation cache.  It SHOULD forward the
   original INVITE towards the called party.







Rosenberg & Jennings    Expires September 2, 2018              [Page 11]


Internet-Draft               STIR Callbacks                   March 2018


6.2.3.  On expiration of the timer

   If the 5 second timer fires before a response has been received to
   the verifying INVITE, the agent SHOULD CANCEL the verifying INVITE.
   It SHOULD forward the original INVITE towards the called party.

7.  Security Considerations

   The primary purpose of this specification is to improve the security
   of caller ID in the public SIP-based phone network.  We can consider
   three actors in the system, and examine malicious behavior from each.
   These actors are the caller, the callee, and the agent receiving the
   verifying INVITE.

7.1.  Attacks from the Calling Agent

   The primary attack the caller can launch is to place a call with a
   faked caller ID.  Preventing this attack is the primary purpose of
   this specification.  This specification prevents it under the
   assumption that the SIP core network provides forward routability,
   and therefore, the caller ID is valid if the agent that placed the
   call, would also receive a call placed towards that callerID.  This
   relationship is verified with the signature over the callerID in both
   INVITE requests.

   It is possible in this system for the calling agent to lie about the
   callerID, but for the fake caller ID to be associated with the number
   space owned by that agent.  In that case, the calling agent can
   verify its own faked caller ID.  However, since the originating agent
   is in purview of the usage of its own numbers, there is little that
   can be done to solve this attack, and in many regards it is not an
   attack.  As an example, outbound call center calls frequently "lie"
   about the caller ID by placing the company main number in the
   callerID.  Since both are owned by the same administrative entity,
   this is an acceptable use case.

   In a different attack, the calling agent is malicious.  It doesn't
   lie about its callerID in the outbound INVITE.  However, when the
   verifying call arrives, the calling agent rejects it with a 472,
   indicating that the caller ID was faked.  The only affect of this
   action would have is to cause the verify call placed by the calling
   agent to be rejected, and therefore seems to serve no purpose.

   An additional consideration is whether the mechanism specified here
   can be used as a denial of service attack.  Consider a malicious
   originating agent which purposefully inserts a fake caller ID, not to
   be delivered to the called party, but to trigger a verifying INVITE
   to the agent which actually owns that phone number.  Indeed, based on



Rosenberg & Jennings    Expires September 2, 2018              [Page 12]


Internet-Draft               STIR Callbacks                   March 2018


   this specification, the terminating agent will in fact generate such
   an INVITE.  However, since the attacker must emit a single INVITE in
   order to cause the terminating agent to generating a single INVITE,
   there is no amplification possible.

7.2.  Attacks from the Called Agent

   Consider the case where the called agent is malicious.  The calling
   agent A is not malicious, and places a legitimate call with a valid
   caller ID (tel:2) to agent B.  Agent B places a new call (not a
   verifying call) to a third agent, agent C, using the same Call-ID as
   the incoming INVITE it just received, and claims the caller ID tel:2.
   When agent C places a verifying call for this caller ID, tel:2, it
   will be routed back to agent A.  In this case, because there is in
   fact a valid call in progress from agent A with that caller ID, the
   verifying call will succeed.  This will cause agent C to believe that
   agent A legitimately owns the caller ID tel:2, and agent C now caches
   the certificate from agent B.  Agent B is now free, at will to place
   calls towards agent C with the fake caller ID.

   This is prevented through the usage of the signatures in the 471
   response codes.  In this attack, the signature used by A to sign the
   response will use its own public certificate.  This will not match
   the one used in the inbound INVITE from B to C which triggered the
   verifying call.  Therefore, B will reject the incoming INVITE and
   will not update its validation cache.

7.3.  Attacks from the agent receiving the Verifying INVITE

   In the case where the caller is malicious, and so is the agent
   receiving the verifying INVITE, it is possible (even without
   collusion) that the agent receiving the verifying INVITE responds
   with a 471 to the verifying INVITE, even though it doesn't actually
   own the number in question.  It might do this in an attempt to
   pollute the cache of the called agent with an invalid entry.

   This is prevented through the usage of signatures in the 471
   response.  Since the agent receiving the verifying INVITE is not the
   same as the calling agent, and there is no collusion in which private
   keys are shared, the signature in the 471 will not match that of the
   incoming INVITE.  This will cause the incoming INVITE to be rejected,
   and no valid cache entry is added.

8.  IANA Considerations

   This specification registers a new SIP option code and two new
   response codes.




Rosenberg & Jennings    Expires September 2, 2018              [Page 13]


Internet-Draft               STIR Callbacks                   March 2018


8.1.  sip-verify Option Tag

   This section registers a new SIP option-tag, sip-verify.  The
   required information for this registration, as specified in RFC 3261,
   is:

   Name: sip-verify

   Description: This option code indicates support for verification of
   caller ID using a verifying INVITE.  When present in a Supported
   header field, if informs the recipient that it can, and should,
   generate a verifying INVITE to confirm the caller ID.  When present
   in a Require header field, it tells the receiving agent that the
   purpose of the INVITE is to validate that a prior call had been
   placed, and that the INVITE should not actually be passed to the
   target of the INVITE.

8.2.  Response Code 471

   This section registers a new SIP response code, 471.  The required
   information for this registration, as specified in RFC 3261, is:

   RFC Number: NOTE TO RFC-EDITOR: replace with the RFC number of this
   specification.

   Response Code Number: 471

   Default Reason Phrase: Caller ID Verified

8.3.  Response Code 472

   This section registers a new SIP response code, 472.  The required
   information for this registration, as specified in RFC 3261, is:

   RFC Number: NOTE TO RFC-EDITOR: replace with the RFC number of this
   specification.

   Response Code Number: 472

   Default Reason Phrase: Caller ID Not Verified

8.4.  Verify-Call Header

   TODO







Rosenberg & Jennings    Expires September 2, 2018              [Page 14]


Internet-Draft               STIR Callbacks                   March 2018


9.  Acknowledgments

   Thanks for Richard Barnes for identifying the attacks described in
   the Security Considerations section.

10.  References

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

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              DOI 10.17487/RFC3264, June 2002,
              <https://www.rfc-editor.org/info/rfc3264>.

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

10.2.  Informative References

   [RFC2916]  Faltstrom, P., "E.164 number and DNS", RFC 2916,
              DOI 10.17487/RFC2916, September 2000,
              <https://www.rfc-editor.org/info/rfc2916>.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              DOI 10.17487/RFC3261, June 2002,
              <https://www.rfc-editor.org/info/rfc3261>.

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






Rosenberg & Jennings    Expires September 2, 2018              [Page 15]


Internet-Draft               STIR Callbacks                   March 2018


Authors' Addresses

   Jonathan Rosenberg
   Cisco Systems

   Email: jdrosen@jdrosen.net


   Cullen Jennings
   Cisco Systems

   Email: fluffy@iii.ca







































Rosenberg & Jennings    Expires September 2, 2018              [Page 16]