Signing HTTP Requests via JSON Web Signatures
draft-richanna-http-jwt-signature-00

Document Type Active Internet-Draft (individual)
Last updated 2019-11-18
Stream (None)
Intended RFC status (None)
Formats plain text xml pdf htmlized bibtex
Stream Stream state (No stream defined)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                    A. Backman, Ed.
Internet-Draft                                                    Amazon
Intended status: Standards Track                       November 19, 2019
Expires: May 22, 2020

             Signing HTTP Requests via JSON Web Signatures
                  draft-richanna-http-jwt-signature-00

Abstract

   This document defines a method for generating and validating a
   digital signature or Message Authentication Code (MAC) over a set of
   protocol elements within an HTTP Request, using JSON Web Signatures
   (JWS).

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 May 22, 2020.

Copyright Notice

   Copyright (c) 2019 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 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.

Backman                   Expires May 22, 2020                  [Page 1]
Internet-Draft        Signing HTTP Requests via JWS        November 2019

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Generating a HTTP Request Signature Using JWS . . . . . . . .   3
     3.1.  Generating the Payload of the JWS . . . . . . . . . . . .   4
     3.2.  Calculating the query parameter list and hash . . . . . .   5
     3.3.  Calculating the header list and hash  . . . . . . . . . .   6
   4.  Validating the HTTP Request Signature . . . . . . . . . . . .   6
     4.1.  Validating the query parameter list and hash  . . . . . .   7
     4.2.  Validating the header list and hash . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
     5.1.  JSON Web Signature and Encryption Type Values
           Registration  . . . . . . . . . . . . . . . . . . . . . .   8
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
     6.1.  Offering Confidentiality Protection for Access to
           Protected Resources . . . . . . . . . . . . . . . . . . .   8
     6.2.  Plaintext Storage of Credentials  . . . . . . . . . . . .   9
     6.3.  Entropy of Keys . . . . . . . . . . . . . . . . . . . . .   9
     6.4.  Denial of Service . . . . . . . . . . . . . . . . . . . .   9
     6.5.  Validating the integrity of HTTP message  . . . . . . . .   9
   7.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  10
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  10
   9.  Normative References  . . . . . . . . . . . . . . . . . . . .  10
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   Digital signatures and MACs are popular cryptographic tools that can
   be used to address a variety of use cases, such as providing message
   integrity, or establishing proof of possession of a cryptographic
   key.  While several digital signature algorithms exist, they
   generally share the constraint that any party wishing to validate a
   signature must have or be able to produce the exact byte sequence of
   the message that was signed.  Consequently, it is non-trivial to
   create digital signatures over content that may undergo
   transformation, such as can occur with HTTP messages as they pass
   through proxies and software libraries in use by the sender or
   recipient.

   This draft describes a method for generating and validating digital
   signatures or MACs over a set of protocol elements within an HTTP
   Request.  This method consists of:

      Mechanisms for identifying the protocol elements covered by the
      signature.

Backman                   Expires May 22, 2020                  [Page 2]
Internet-Draft        Signing HTTP Requests via JWS        November 2019

      Mechanisms for creating canonical representations of protocol
Show full document text