Skip to main content

Third-Party Device Attestation for ACME
draft-yusef-acme-3rd-party-device-attestation-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Author Rifaat Shekh-Yusef
Last updated 2019-01-12
RFC stream (None)
Formats
Additional resources
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-yusef-acme-3rd-party-device-attestation-00
ACME Working Group                                        R. Shekh-Yusef
Internet-Draft                                                     Avaya
Intended status: Standards Track                        January 12, 2019
Expires: July 16, 2019

                Third-Party Device Attestation for ACME
            draft-yusef-acme-3rd-party-device-attestation-00

Abstract

   This document defines a Third-Party Device Attestation for ACME
   mechanism to allow the ACME CA to delegate some of its authentication
   and authorization functions to a separate trusted entity, to automate
   the issuance of certificates to devices.

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 July 16, 2019.

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.

Shekh-Yusef               Expires July 16, 2019                 [Page 1]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

   This document may contain material from IETF Documents or IETF
   Contributions published or made publicly available before November
   10, 2008.  The person(s) controlling the copyright in some of this
   material may not have granted the IETF Trust the right to allow
   modifications of such material outside the IETF Standards Process.
   Without obtaining an adequate license from the person(s) controlling
   the copyright in such materials, this document may not be modified
   outside the IETF Standards Process, and derivative works of it may
   not be created outside the IETF Standards Process, except to format
   it for publication as an RFC or to translate it into languages other
   than English.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Entities  . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.2.  Use Case  . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.3.  Initial Trust . . . . . . . . . . . . . . . . . . . . . .   4
     2.4.  Protocol Flow . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Identifier Type . . . . . . . . . . . . . . . . . . . . . . .   7
   4.  Applying for a Certificate  . . . . . . . . . . . . . . . . .   7
   5.  ACME Challenge  . . . . . . . . . . . . . . . . . . . . . . .   7
   6.  Complete Authorization  . . . . . . . . . . . . . . . . . . .   8
   7.  Device Access Token . . . . . . . . . . . . . . . . . . . . .   8
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   9
   11. Normative References  . . . . . . . . . . . . . . . . . . . .   9
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   ACME [I-D.ietf-acme-acme] is a mechanism for automating certificate
   management on the Internet.  It enables administrative entities to
   prove effective control over resources like domain names, and
   automates the process of generating and issuing certificates.

   Proving effective control over a device requires an attestation from
   a third-party who has authority over the device.

   This document defines a Third-Party Device Attestation for ACME
   mechanism to allow the ACME CA to delegate some of its authentication
   and authorization functions to a separate trusted entity, to automate
   the issuance of certificates to devices.

Shekh-Yusef               Expires July 16, 2019                 [Page 2]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

1.1.  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].

2.  Overview

2.1.  Entities

   Device: this is an IP device, e.g.  SIP phone, that is manufactured
   by a Device Authority.

   Device Authority: this is the Third-Party Device manufacturer that
   has authority over the Device.

   Client: this is a server that has authority over a domain and deploys
   a Device and automatically obtains a certificate for it from ACME CA
   with the Client's domain as an identifier.

   ACME CA: this is the Certificate Authority (CA), e.g.  Let's Encrypt,
   that has a trust relationship with the above Device Authority, that
   issues the certificate.

2.2.  Use Case

   Some devices come from the factory with a self-signed certificate
   with the MAC of the device as the certificate identifier, and the
   details of the certificates stored in a server in the cloud that acts
   as the authority for these devices.

   These self-signed certificates are used to authenticate the device
   during a bootstrapping process, but are generally not useful to allow
   the device to authenticate to other services the device interacts
   with.

   The use case is that the Client wants to deploy a Device manufactured
   by a Device Authority and wants to be able to automatically obtain a
   certificate for the Device from ACME CA with an identifier controlled
   by the Client.

   For example, if vendor.com is configured as a trusted entity on ACME
   server, and if a device from vendor.com is being deployed by a
   customer.com, and customer.com requires the device to obtain an ACME
   certificate, this mechanism allows the automatic issuance of

Shekh-Yusef               Expires July 16, 2019                 [Page 3]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

   certificates to the device with the customer.com identifier based on
   attestation from vendor.com.

2.3.  Initial Trust

   This architecture assumes a trust relationship between the ACME CA
   and the Third-Party Device Authority, which means that the ACME CA is
   willing to accept the attestation of the Third-Party Device Authority
   for particular types of identifiers as sufficient proof to issue a
   certificate.

   The following figure describes the various elements, the relationship
   between these elements, and the OAuth role of each element.

                     OAuth AS                                OAuth RS
                   +-----------+                           +-----------+
                   |  Device   |                           |           |
     +------------>| Authority |<------------------------->|  ACME CA  |
     |             |           |                           |           |
     |             +-----------+                           +-----------+
     |                   ^
     |                   |
     |                   |
     |                   |
  +------+               |
  |Device|               |
  +------+               |
                         |
                         |
                         |
                         |
                   +-----------+
                   |           |
                   |  Client   |
                   |           |
                   +-----------+
                    OAuth Client

   The Device trusts the Device Authority.

   The Device Authority and ACME CA trust each other.

   The Client has an account with the Device Authority and is able to
   claim devices manufactured by the Device Authority.  The Client has
   an account with ACME CA and able to request certificates for its
   domain.

Shekh-Yusef               Expires July 16, 2019                 [Page 4]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

2.4.  Protocol Flow

   The following figure provides an overview of the interaction between
   the ACME Client and ACME Server, as defined in [I-D.ietf-acme-acme],
   with few changes to allow the Client to obtain an end entity
   certificate for a Device based on an attestation from a Device
   Authority:

Client                         Device Authority                         ACME CA
(customer.com)                  (as.vendor.com)                      (acme.com)
  |                                    |                                    |
  | [01] POST /new-order [kid=customer.com, url=vendor.com, identifier={mac}]
  |------------------------------------------------------------------------>|
  |                                    |                                    |
  |                    [02] 201                                             |
  |                         [authorizations=vendor.com/acme/authz/1234,     |
  |                         finalize=customer.com/acme/order/asdf/finalize] |
  |<------------------------------------------------------------------------|
  |                                    |                                    |
  | [03] POST /vendor.com/acme/authz/1234                                   |
  |------------------------------------------------------------------------>|
  |                                    |                                    |
  |                             [04] 401 Unauthorized [Link: as.vendor.com] |
  |<------------------------------------------------------------------------|
  |                                    |                                    |
  | [05] Use OAuth to obtain a device JWT                                   |
  |<==================================>|                                    |
  |                                    |                                    |
  | [06] POST /vendor.com/acme/authz/1234 [JWT]                             |
  |------------------------------------------------------------------------>|
  |                                    |                                    |
  |                                    |            [07] 200 [status=valid] |
  |<------------------------------------------------------------------------|
  |                                    |                                    |
  | [08] POST /customer.com/acme/order/asdf/finalize [CSR]                  |
  |------------------------------------------------------------------------>|
  |                                    |                                    |
  |                    [09] 200 [certificate=customer.com/acme/cert/asdf]   |
  |<------------------------------------------------------------------------|
  |                                    |                                    |
  | [10] GET /customer.com/acme/cert/asdf                                   |
  |------------------------------------------------------------------------>|
  |                                    |                                    |
  |                                                  [11] 200 [certificate] |
  |<------------------------------------------------------------------------|
  |                                    |                                    |

Shekh-Yusef               Expires July 16, 2019                 [Page 5]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

   In Step [01] the Client starts the process with a POST request, as
   per [I-D.ietf-acme-acme], but the header contains a "kid" with the
   Client domain and "url" with the AS URL.

   In Step [2] the server replies with the authorization URL, as per
   [I-D.ietf-acme-acme], but the authorization url contains the AS, and
   the finalize URL points to the Client.

   In Step [3] the Client starts the authorization process with an empty
   payload, as per [I-D.ietf-acme-acme].

   In Step [04] the server indicates to the Client that it needs to
   redirect the device to the AS to authenticate, and obtain an access
   token.

   Step [05] is out of scope for this document, which covers the
   interaction between the Client, the Device, and the AS, to obtain an
   access token for a device.

   In Steps [06] and [07] the Client completes the authorization process
   using the JWT obtained from the AS.

   In Steps [08] and [09] the Client finalizes the process by sending
   the CSR request to the server, as per [I-D.ietf-acme-acme].

   In Steps [10] and [11] the client downloads the certificate from the
   server, as per [I-D.ietf-acme-acme].

Shekh-Yusef               Expires July 16, 2019                 [Page 6]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

3.  Identifier Type

   This document introduces the new identifier type that will be used to
   identify the device applying for a certificate with the ACME server,
   e.g.  { "type": "mac", "value": "112233445566" }

4.  Applying for a Certificate

   The process starts, step [01], when the Client sends a POST request
   to the "/acme/new-order" resource on the ACME server.

   The request object carries a protected header that contains a "kid"
   with the Client domain and "url" with the Device Authority URL.  The
   request object carries a payload with the MAC identifier, as defined
   above, that identifies the device that will be issued a certificate.

   The signature carried in the request object is issued using the
   Client account with the ACME server.

   The ACME server responds with a 201, step [02] with an authorization
   url that contains the Device Authority URL, and finalize ulr that
   contains the Client URL.

5.  ACME Challenge

   In step [03] the Client starts the authorization process by sending a
   POST request to the authorization URL with an empty body.  In
   response, the server replies with a 401 Unauthorized as defined in
   [I-D.ietf-oauth-distributed]:

      401 Unauthorized
      WWW-Authenticate: Bearer error="invalid_token"
      Link: <https://as.vendor.com/.well-known/oauth-authorization-server>
            ;rel="oauth_server_metadata_uri"
            ;requested_token_type="urn:ietf:params:oauth:token-type:jwt"

   The WWW-Authenticate header includes an error parameter with the
   value of "invalid_token" to indicate that a token is needed to
   complete this request.

   The Link header provides the details of the AS server and the type of
   the token that the client must obtain for this request to be
   processed by the server.

Shekh-Yusef               Expires July 16, 2019                 [Page 7]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

6.  Complete Authorization

   After obtaining the access token, the client completes the
   authorization process by sending a POST request to the authorization
   URL with the access token in the payload of the JWS object.

7.  Device Access Token

   The Device Authority must issue a device access token, in the form of
   a JWT, to allow the Client to request the ACME CA to issue an end
   entity certificate.

   The payload of the JWT must include the following claims:

   iss: contains the device authority url, e.g. as.vendor.com

   sub: contains the device mac address.

   aud: contains the Client domain, e.g. customer.com, and ACME CA url,
   e.g. acme.com

   The following is an example of a device access token:

   Header:
   {
     "alg": "ES256",
     "typ": "JWT"
   }

   Body:
   {
     "iss" : "as.vendor.com",
     "sub": "112233445566",   // Device MAC address
     "aud" : ["custmer.com", "acme.com"]
   }

8.  Security Considerations

   TODO

Shekh-Yusef               Expires July 16, 2019                 [Page 8]
Internet-Draft    3rd-Party Device Attestation for ACME     January 2019

9.  IANA Considerations

   TODO

10.  Acknowledgments

   The author would like to thank Dick Hardt for his reviews and
   valuable feedback on the pre-published version of this draft.

11.  Normative References

   [I-D.ietf-acme-acme]
              Barnes, R., Hoffman-Andrews, J., McCarney, D., and J.
              Kasten, "Automatic Certificate Management Environment
              (ACME)",  https://datatracker.ietf.org/doc/draft-ietf-
              acme-acme/, April 2018.

   [I-D.ietf-oauth-distributed]
              Hardt, D., Campbell, B., and N. Sakimura, "Distributed
              OAuth",  https://datatracker.ietf.org/doc/draft-ietf-
              oauth-distributed/, October 2018.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", RFC 2119, March 1997.

   [RFC6749]  Hardt, D., "The OAuth 2.0 Authorization Framework",
              RFC 6749, October 2012.

Author's Address

   Rifaat Shekh-Yusef
   Avaya
   250 Sidney Street
   Belleville, Ontario
   Canada

   Phone: +1-613-967-5176
   EMail: rifaat.ietf@gmail.com

Shekh-Yusef               Expires July 16, 2019                 [Page 9]