Internet DRAFT - draft-rescorla-tigress-http

draft-rescorla-tigress-http







Transfer dIGital cREdentialS Securely                        E. Rescorla
Internet-Draft                                   Windy Hill Systems, LLC
Intended status: Informational                                 B. Lassey
Expires: 25 March 2024                                            Google
                                                       22 September 2023


               Transferring Digital Credentials with HTTP
                     draft-rescorla-tigress-http-00

Abstract

   There are many systems in which people use "digital credentials" to
   control real-world systems, such as digital car keys, digital hotel
   room keys, etc.  In these settings, it is common for one person to
   want to transfer their credentials to another, e.g., to share your
   hotel key.  It is desirable to be able to initiate this transfer with
   a single message (e.g., SMS) which kicks off the transfer on the
   receiver side.  However, in many cases the credential transfer itself
   cannot be completed over these channels, e.g., because it is too
   large or because it requires multiple round trips.  However, the
   endpoints cannot speak directly to each other and may not even be
   online at the same time.  This draft defines a mechanism for
   providing an appropriate asynchronous channel using HTTP as a
   dropbox.

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://ekr.github.io/draft-rescorla-tigress-http/draft-rescorla-
   tigress-http.html.  Status information for this document may be found
   at https://datatracker.ietf.org/doc/draft-rescorla-tigress-http/.

   Discussion of this document takes place on the Transfer dIGital
   cREdentialS Securely Working Group mailing list
   (mailto:tigress@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/tigress/.  Subscribe at
   https://www.ietf.org/mailman/listinfo/tigress/.

   Source for this draft and an issue tracker can be found at
   https://github.com/ekr/draft-rescorla-tigress-http.

Status of This Memo

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



Rescorla & Lassey         Expires 25 March 2024                 [Page 1]

Internet-Draft                    TDCH                    September 2023


   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 25 March 2024.

Copyright Notice

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

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   3
   3.  Overview of Operation . . . . . . . . . . . . . . . . . . . .   3
   4.  Architectural Model . . . . . . . . . . . . . . . . . . . . .   4
   5.  Initiating Message  . . . . . . . . . . . . . . . . . . . . .   5
   6.  HTTP Binding  . . . . . . . . . . . . . . . . . . . . . . . .   5
   7.  Message Format  . . . . . . . . . . . . . . . . . . . . . . .   6
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     10.1.  Normative References . . . . . . . . . . . . . . . . . .   8
     10.2.  Informative References . . . . . . . . . . . . . . . . .   9
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   DISCLAIMER: This draft is work-in-progress and has not yet seen
   significant (or really any) security analysis.  It should not be used
   as a basis for building production systems.



Rescorla & Lassey         Expires 25 March 2024                 [Page 2]

Internet-Draft                    TDCH                    September 2023


   There are many systems in which people use "digital credentials" to
   control real-world systems, such as digital car keys, digital hotel
   room keys, etc.  Generally these are proprietary system-specific
   credentials are embedded in and used by a (potentially proprietary)
   mobile app.  In these settings, it is common for one person to want
   to transfer their credentials to another, e.g., to share your hotel
   key with a family member.

   Although the credentials and transfer mechanisms are often
   proprietary they share a common workflow in which:

   1.  The Sender initiates the transfer from their app and sends an
       invitation message over a preexisting channel such as SMS or
       e-mail.

   2.  Bob receives the invitation message from Alice and hands it to
       his app (ideally this would happen automatically, e.g., by some
       URL handler).

   3.  Bob uses the invitation message to contact Alice to complete the
       transfer.  This may require multiple round trips between Alice
       and Bob. In addition, Alice or Bob may need to contact some
       external server, but this is out of scope for this protocol.

   The preexisting channel may not be suitable for completing the
   transfer, for instance because it has insufficient bandwidth.  or
   because it requires manual intervention by the users.  In addition,
   the participants may not be online simultaneously, so a "store-and-
   forward" channel is required.  [I-D.ietf-tigress-requirements]
   describes the requirements in more detail.  This document specifies
   how to build such a channel using a standard HTTP [RFC9110] server.

2.  Conventions and Definitions

   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.

3.  Overview of Operation

   Figure 1 provides a broad overview of the message flow:








Rescorla & Lassey         Expires 25 March 2024                 [Page 3]

Internet-Draft                    TDCH                    September 2023


   Alice                     HTTP Server                    Bob

   Initiating (R) -------------------------------------------->
   PUT <L0> MSG0 ---------------->
                                 <-------------------- GET <L0>
                                 <----------------- DELETE <L0>
                                 <--------------- PUT <L1> MSG1
   GET <L1> --------------------->
   <------------------------- MSG1
   DELETE <MSG1> ---------------->
                                ...

                      Figure 1: Overview of Operation

   In order to initiate the transfer, Alice generates a random secret
   value R.  She then does the following:

   1.  Sends R and the address of the HTTP server to Bob over the
       preexisting channel.

   2.  Generates the first protocol message MSG0 and stores it in a
       location on the HTTP server (L0) pseudorandomly generated from R.

   When Bob receives the initiating message, he uses R to determine L0,
   retrieves it from the server, and then deletes it.  In order to send
   a message (MSG1) to Alice, Bob stores it at a new pseudorandom
   location L1 (again, based on R).  Alice retrieves it and then deletes
   it.  Any further message exchanges proceed in the same fashion.

4.  Architectural Model

   The overall system has the following architecture:

   +-----------------------------------------------+
   |   Credential Exchange Protocol (proprietary)  |
   +-----------------------------------------------+
   |    Protected Message Format (Section TODO)    |
   +-----------------------------------------------+
   |           HTTP Binding (Section TODO)         |
   +-----------------------------------------------+

   The lowest level of operation is a binding to HTTP specifying how to
   use an HTTP server as a store-and-forward channel, specified in
   Section 6.  That channel is then used to carry encrypted messages in
   the format defined in Section 7.  Those messages contain an opaque
   payload that is used by the relevant proprietary credential exchange
   protocol.




Rescorla & Lassey         Expires 25 March 2024                 [Page 4]

Internet-Draft                    TDCH                    September 2023


5.  Initiating Message

   The initiating message needs to contain at least the following three
   values:

   *  A URI template.  This MUST contain a single variable, named
      "tigress_location".  [[TODO: Need to flesh this out some more.]]
      This template MUST be for an HTTPS URI.

   *  A secret value R generated with a cryptographically secure PRNG
      [RFC4086] and containing at least 256 bits of entropy.

   *  The AEAD algorithm defined using TLS 1.3 cipher suites Section 8.4
      of [RFC8446].

   In practice, it will probably contain other information such as the
   type of credential to be transferred and perhaps some human-readable
   context.  These values are out of topic for this specification.

   The initiating message SHOULD be delivered over a secure channel but
   this protocol provides limited security even when that does not
   happen (see Section 8).

6.  HTTP Binding

   The basic concept of the HTTP binding is very simple.  In order for
   endpoint A to send a message to endpoint B, A does a PUT to a
   resource in a predefined secret location.  B then does a GET to
   retrieve the resource and a DELETE to remove it.  Receivers MUST
   delete messages immediately after they have retrieved them.

   [[OPEN ISSUE: Polling is bad, so we're going to need some kind of
   notification mechanism, but this document doesn't specify that.]]

   HTTP requests MUST not contain information from other context (e.g.,
   browser cookies).  [[OPEN ISSUE: Can it contain other authentication
   information, for instance for attestation.]]

   The URL for message i is generated as follows, using the HKDF-Expand-
   Label function from TLS 1.3 [RFC8446].

       U_i = HKDF-Expand-Label(R, "Location",
                               Transcript, 256)

   [[OPEN ISSUE: This construction puts some secret information (the
   nonces from the previous messages) in the transcript.  Maybe we
   should instead do a combiner?]]




Rescorla & Lassey         Expires 25 March 2024                 [Page 5]

Internet-Draft                    TDCH                    September 2023


   Where "Transcript" is the concatenation of the plaintext of all
   previous messages and HKDF-Expand-Label uses the hash from the
   defined cipher suite.

   The URL is then generated by subsituting the URL-safe base64 encoding
   [RFC4648] for the "tigress_location" variable in the URL template.

   [[OPEN ISSUE: What is the media type of the message?]]

   HTTP servers used for this protocol MUST NOT allow enumeration of
   resources that match the URL template.

   This protocol operates in a lock-step "ping-pong" fashion.  Each
   endpoint can send exactly one message and then must wait for the
   other side to reply before sending another.  The sender of the
   credential speaks first.

7.  Message Format

   All messages are encrypted using the AEAD algorithm specified by the
   cipher suite, formatted as an O-HTTP "Encapsulated Response"
   Section 4.2 of [I-D.ietf-ohai-ohttp]).  The "nonce" MUST be
   pseudorandomly generated.

   The encryption key is generated as follows:

       K_i = HKDF-Expand-Label(R, "Key",
                               Transcript, 256)

   The plaintext of the message is as follows (using TLS syntax):

   struct {
     opaque random<0..255>;
     uint16 message_id;
     opaque message<0..2^32-1>;
   } TigressPlaintext;

   These fields have the following values:

   random  A cryptographically random field.  The first message in each
      direction MUST have a random value of at least 16 octets.
      Subsequent messages MAY contain random values of at any length.

   message_id  The sequence number of the message, starting from 0 and







Rescorla & Lassey         Expires 25 March 2024                 [Page 6]

Internet-Draft                    TDCH                    September 2023


      incrementing with each message in the exchange.  This space is
      shared and so in practice even numbers are from the credential
      sender and odd numbers from the receiver.  [[OPEN ISSUE: Do we
      need this?  It's basically a double check because the system
      guarantees uniqueness.]]

   message  The proprietary credential exchange message.

   Upon receiving a message, an endpoint MUST first deprotect it using
   the correct key and algorithm.  If AEAD deprotection fails, it MUST
   signal an error and abort the protocol run.

   Endpoints MUST check that the message_id has the expected value and
   that the random values are of the right length must signal an error
   and abort the protocol run if they are incorrect.

8.  Security Considerations

   The protocol is intended to guarantee the following properties:

   1.  In order to determine the location of a message, an entity must
       know both R and the plaintext of every previous message.

   2.  In order to decrypt a message, an entity must know both R and the
       plaintext of every previous message.

   If R is delivered over a secure channel, then an attacker should not
   be able to read any message or inject a new one.  Because the HTTP
   server sees messages when they are stored it can delete them or
   replace them with an invalid message, but because it does not have R
   it cannot generate a new valid message or replay an old one.  The
   result of this attack is to cause the credential exchange to fail.
   An attacker other than the server does not know the location of the
   resource and therefore cannot even store bogus values.  If the

   An attacker who learns R prior to the protocol exchange can simply
   impersonate the receiver.  This is why R should be sent over a secure
   channel.  If it is necessary to send R over an insecure channel then
   some other mechanism is required to prevent this attack.  [[OPEN
   ISSUE: this is not great, but it seems to be the assumed setting
   based on list discussion.]]

   An attacker who learns R after the receiver has retrieved and and
   deleted the first message will not have the random value from MSG0
   and therefore will not be able to determine either the location and
   encryption key for MSG1, so cannot forge their own message to the
   sender or any future message.  Note that an attacker who learns R
   after the receiver has retrieved MSG0 but before they have deleted it



Rescorla & Lassey         Expires 25 March 2024                 [Page 7]

Internet-Draft                    TDCH                    September 2023


   and replied can race the receiver to respond.  If they win the race,
   then they will be able to complete the protocol exchange with the
   sender and the receiver will be locked out.  This is why it is
   important for the receiver to delete MSG0 immediately upon retrieval.

   The reason for including the transcript of all previous messages in
   the next key and URL is that it straightforwardly includes the random
   values which each side must send in their first message.  It also
   serves to bind each message to those that came before it, though this
   does not have a straightforward security rationale.  Note that if any
   message is lost, then the entire exchange fails and so the HTTP
   server is assumed to be reliable.  This is one reason why the delete
   is explicit rather than a side effect, thus avoiding issues where the
   retrieval of a message fails but the server thinks it succeeded and
   deletes the message.

9.  IANA Considerations

   This document has no IANA actions.

10.  References

10.1.  Normative References

   [I-D.ietf-ohai-ohttp]
              Thomson, M. and C. A. Wood, "Oblivious HTTP", Work in
              Progress, Internet-Draft, draft-ietf-ohai-ohttp-10, 25
              August 2023, <https://datatracker.ietf.org/doc/html/draft-
              ietf-ohai-ohttp-10>.

   [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/rfc/rfc2119>.

   [RFC4086]  Eastlake 3rd, D., Schiller, J., and S. Crocker,
              "Randomness Requirements for Security", BCP 106, RFC 4086,
              DOI 10.17487/RFC4086, June 2005,
              <https://www.rfc-editor.org/rfc/rfc4086>.

   [RFC4648]  Josefsson, S., "The Base16, Base32, and Base64 Data
              Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
              <https://www.rfc-editor.org/rfc/rfc4648>.

   [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/rfc/rfc8174>.




Rescorla & Lassey         Expires 25 March 2024                 [Page 8]

Internet-Draft                    TDCH                    September 2023


   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/rfc/rfc8446>.

   [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/rfc/rfc9110>.

10.2.  Informative References

   [I-D.ietf-tigress-requirements]
              Vinokurov, D., Astiz, C., Pelletier, A., Karandikar, Y.,
              and B. Lassey, "Transfer Digital Credentials Securely -
              Requirements", Work in Progress, Internet-Draft, draft-
              ietf-tigress-requirements-00, 9 August 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-tigress-
              requirements-00>.

Acknowledgments

   Thanks to Chris Wood and Martin Thomson for helpful discussions.

Authors' Addresses

   Eric Rescorla
   Windy Hill Systems, LLC
   Email: ekr@rtfm.com


   Brad Lassey
   Google
   Email: lassey@google.com


















Rescorla & Lassey         Expires 25 March 2024                 [Page 9]