Re: [Acme] Fwd: New Version Notification for draft-yusef-acme-3rd-party-device-attestation-01.txt

Rifaat Shekh-Yusef <rifaat.ietf@gmail.com> Thu, 24 January 2019 19:21 UTC

Return-Path: <rifaat.ietf@gmail.com>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8D8261313AA for <acme@ietfa.amsl.com>; Thu, 24 Jan 2019 11:21:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id G09AldKdsvcO for <acme@ietfa.amsl.com>; Thu, 24 Jan 2019 11:21:27 -0800 (PST)
Received: from mail-it1-x130.google.com (mail-it1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2BDBC13120F for <acme@ietf.org>; Thu, 24 Jan 2019 11:21:27 -0800 (PST)
Received: by mail-it1-x130.google.com with SMTP id p197so6225923itp.0 for <acme@ietf.org>; Thu, 24 Jan 2019 11:21:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rDpeqD43rXcf507aAotL9rW/DamS8JggZGyqf8iKjbM=; b=OidvmudrFpTWZqsHYUxhHdngxXZrNa+JA4DQsVrFtPK07Wrs5IfTPAuu2Xr2K0xGgS 8djWnUbRhRpChBp4xndsTVzbVR2ux7rIj5b/GI86L46b9ye0lYKBf/rTTcr6djqHXVos iT6ijzbr6w8OucqM8wbu2W2Rf7XXAbSmvJg7NRXv5xI6ZR8RwdAedqqd1nGBL8crqhZ+ cqr483LPWopRq3o7ny2puWxzPRHbhmp/ojA6LWh0JTm7MA887sFZ4M5ZOq3DozIGzjFx opUU3ZBaXsY+nwT6Lc+gOu/cVCgU268j1FKCaHXymMFbyWwFHOy5yRXq9MlkVA4krGoT y0nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rDpeqD43rXcf507aAotL9rW/DamS8JggZGyqf8iKjbM=; b=GhxUEBeuuaf+AWjtZAPqYXJpEfnKZphARj1E3Xlje70E6+RVf1SjPfRceLWLhZ0dRO f+70YHelldsXAI3uNBkN312uoKHu48WTeiWu9ZOoebNzgcBsNxu5KvFLJUh3WEqAsBr+ 2va+zOsTQsTt7Q/a17sDErIBHScgzoblWJXJr9+RzHocC1ST/gZutz/TRUPSbsuUGPaU Hfidwq+XTz7G3Aj04BtF0mFlPs6Ddf++6IV13Y/SwRNe7X+f4MZzpixu6LEK/x1zHB8z ChI4XGfRXCb4Hs5L2qJwzC7oIJuu3/dNSiBtXM/5uvSNRqLOQYWREViL6vna08AAn9Rn 9HFQ==
X-Gm-Message-State: AJcUukcuriEOAWZgjFjtrENePI8NTol5ob+tLb/k1SlZ5xVgPtWrm1QS 4q64w6M60YfW0zdx8ym7eI8dfbtOQnG68CUh0QNHnz3e0AM=
X-Google-Smtp-Source: ALg8bN67FIDRIvCT8FFFJZoE8QKstqWWrkvfD5qsB/rjOe0WxYlNyiwrrMONOuXPNUu6Ba1iKj0zk9sfUsTXzRE77ag=
X-Received: by 2002:a02:85ae:: with SMTP id d43mr5224906jai.70.1548357686426; Thu, 24 Jan 2019 11:21:26 -0800 (PST)
MIME-Version: 1.0
References: <154767050457.29430.8305250740505088239.idtracker@ietfa.amsl.com> <CAGL6epJ6cVBSp_VWPbV9+kG7VGBp_mPPf_Q836cbf5bi8OY=hQ@mail.gmail.com> <CAL02cgQXYxqvi5q4iW8uhRkbsYG1UObQkb094ba1wFvw4dcy8Q@mail.gmail.com> <CAGL6epJX+dSb9fK7E8fagwROesL7DF_3KJhF0nB=TTqdcpi-cA@mail.gmail.com> <CAL02cgRx7SOYSmzCo8cLdz08U2Y=_KtjSe3Zha3GhFjQsYgW5Q@mail.gmail.com>
In-Reply-To: <CAL02cgRx7SOYSmzCo8cLdz08U2Y=_KtjSe3Zha3GhFjQsYgW5Q@mail.gmail.com>
From: Rifaat Shekh-Yusef <rifaat.ietf@gmail.com>
Date: Thu, 24 Jan 2019 14:21:15 -0500
Message-ID: <CAGL6epLpBCqyBbvSpZb41xOgOwy6TBobK_hHZ+SdSWAFjvuyKQ@mail.gmail.com>
To: Richard Barnes <rlb@ipv.sx>
Cc: IETF ACME <acme@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e27f540580391d67"
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/eWEYgxnM3KC-Fukbz0L2x9lGlxo>
Subject: Re: [Acme] Fwd: New Version Notification for draft-yusef-acme-3rd-party-device-attestation-01.txt
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jan 2019 19:21:31 -0000

Inline...

On Wed, Jan 23, 2019 at 3:07 PM Richard Barnes <rlb@ipv.sx> wrote:

> Inline.
>
> On Sun, Jan 20, 2019 at 3:04 PM Rifaat Shekh-Yusef <rifaat.ietf@gmail.com>
> wrote:
>
>> I looked at the TNAuthList draft, and as far as I understand, the
>> framework seems
>> a bit different from this proposal:
>>
>> 1. A Token Authority is authoritative for multiple identifier spaces
>> (e.g.
>>    TNAuthList with telephone numbers and service providers), while a
>> Device
>>    Authority is responsible for one identifier space, i.e. the devices
>>    manufactured by a specific vendor.
>>
>
> Just because the framework can address the case where a single authority
> can speak for multiple identifier spaces doesn't mean it can't also address
> the single identifier space case.
>
> True, but it slightly complicates the solution for this use case (see more
below).


>
>
>> 2. A certificate issued to an entity controlled by a Token Authority is
>> specific
>>    to that entity independent of any domain, while a certificate issued
>> to
>>    a device controlled by a Device Authority is specific to the device
>> *and* the
>>    Client domain (based on a Client account with ACME).
>>
>
> What do you mean by "domain" here?
>
>

By domain I am talking about a service that the device is expected to
consume.
For example, a SIP phone that is expected to connect to a SIP network to
get
configuration and SIP services.

What I am trying to achieve is that the certificate that would be issued to
the
device is not only an attestation to the device as an independent entity,
but a
valid device with permission to access a specific service.



>
>>
>> Also, I noticed that the TNAuthList proposal does support redirection, as
>> an
>> optional feature. In the Device Authority case this is not critical and
>> could be
>> left as optional too, which will simplify the flow even further, as it
>> would
>> allow us to drop Steps 3 & 4 from the flow described in section 2.4,
>> which would
>> look as follows without the redirection:
>>
>> 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] Use OAuth to obtain a device JWT
>>    |
>>   |<==================================>|
>>   |
>>   |                                    |
>>   |
>>   | [04] POST /vendor.com/acme/authz/1234 [JWT]
>>    |
>>
>> |------------------------------------------------------------------------>|
>>   |                                    |
>>   |
>>   |                                    |            [05] 200
>> [status=valid] |
>>
>> |<------------------------------------------------------------------------|
>>   |                                    |
>>   |
>>   | [06] POST /customer.com/acme/order/asdf/finalize [CSR]
>>     |
>>
>> |------------------------------------------------------------------------>|
>>   |                                    |
>>   |
>>   |                    [07] 200 [certificate=customer.com/acme/cert/asdf]
>>  |
>>
>> |<------------------------------------------------------------------------|
>>   |                                    |
>>   |
>>   | [8] GET /customer.com/acme/cert/asdf
>>     |
>>
>> |------------------------------------------------------------------------>|
>>   |                                    |
>>   |
>>   |                                    |              [8] 200
>> [certificate] |
>>
>> |<------------------------------------------------------------------------|
>>   |                                    |
>>   |
>>
>>
>> Unless I missed something, because of the above and to keep this
>> mechanism as
>> simple as possible, I would like to keep this proposal independent of the
>> Token
>> Authority framework at this stage.
>>
>
> I'm confused.  Issuing with authority tokens entails exactly the flow
> you've laid out.  It's just that the interaction between the client and the
> token authority is undefined in that doc, so you can fill it in with your
> step 03.
>
>
There are few differences between the Device Authority (DA) and the Token
Authority (TA) flows.
Let's discuss the flow without redirection. Here is what I think is the TA
flow:


Client                           Token Authority                       ACME
CA
(customer.com)                  (ta.example.com)                      (
acme.com)
  |                                    |
|
  | [01] POST /new-order [kid=customer.com, url=customer.com,
identifier={mac}]

|------------------------------------------------------------------------>|
  |                    [02] 201
 |
  |                         [authorizations=customer.com/acme/authz/1234,
 |
  |                         finalize=customer.com/acme/order/asdf/finalize]
|

|<------------------------------------------------------------------------|
  |                                    |
|
  | [03] POST /customer.com/acme/authz/1234
 |

|------------------------------------------------------------------------>|
  |                        [04] 200 OK [url=customer.com/acme/authz/1234/0]
|

|<------------------------------------------------------------------------|
  |                                    |
|
  | [05] Obtain a JWT                  |
|
  |<==================================>|
|
  |                                    |
|
  | [06] POST /customer.com/acme/authz/1234/0 [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]
|

|<------------------------------------------------------------------------|
  |                                    |
|


With TA, the new_order request (step [01]) the kid and the url contain the
Client's domain.
With the DA, the kid contains the Client's domain while the url contains
the DA's domain.
This would allow the CA to discover the domain of the authority that will
issue the token,
and make a decision on whether it is supported or not at this stage.

With TA, the 201 response contains an authorizations and finalize urls with
the Client's domain,
while with DA the authorizations url contains the DA's domain.

With TA, the Client would need to send another request to obtain the
challenges, steps
[03] & [4], to obtain details about the token to be used, and a second
authorizations resource.
With DA this is not needed and the Client should be able to send the JWT to
first authorizations url.


Having said all of that, I am not suggesting that this proposal cannot be
made to
work with the TA framework, but that the flow seems to become a bit more
complicated
for the use case I have in mind.

Regards,
 Rifaat






> --Richard
>
>
>>
>> Thoughts?
>>
>> Regards,
>>  Rifaat
>>
>>
>> On Thu, Jan 17, 2019 at 1:51 AM Richard Barnes <rlb@ipv.sx> wrote:
>>
>>> It seems like the core of this draft is identifier delegation.  Namely,
>>> the CA recognizes the DA as an authority for a certain identifier space
>>> (e.g., the first few octets of a MAC address), and the JWT delegates
>>> permission to issue certificates for some identifier in that space to the
>>> Client.
>>>
>>> Given that, it seems to me like this could fit under the rubric of the
>>> "authority token" challenge.  If you were to do what this draft wants to do
>>> with that framework, the Client would have two separate interactions -- an
>>> OAuth interaction with the DA to get a token, then an ACME interaction with
>>> the CA to issue the certificate.  The only specification needed would be to
>>> specify the identifier and token type, as has been done for TNAuthList [2].
>>>
>>> The only thing that would then be missing with regard to this draft is
>>> that the CA wouldn't provide the redirect to the DA.  Whether that makes
>>> sense depends on the use case, but I suspect that in most cases it does
>>> not.  The design in the draft presumes there's a single DA per identifier,
>>> and that the CA keeps a mapping table from possible identifiers to DAs.
>>> That seems unlikely for most identifier spaces and most CAs with reasonably
>>> broad coverage.  So losing this property of the draft doesn't seem like a
>>> big issue.
>>>
>>> So net/net, I think this draft should be restructured along the lines of
>>> [2], to just define a token type and maybe an identifier type.
>>>
>>> --Richard
>>>
>>> [1] https://tools.ietf.org/html/draft-ietf-acme-authority-token
>>> [2]
>>> https://tools.ietf.org/wg/acme/draft-ietf-acme-authority-token-tnauthlist/
>>>
>>> On Wed, Jan 16, 2019 at 12:33 PM Rifaat Shekh-Yusef <
>>> rifaat.ietf@gmail.com> wrote:
>>>
>>>> All,
>>>>
>>>> I have just submitted new updated version to address the issues raised
>>>> by Ilari and Ryan.
>>>> I would appreciate any more reviews and comments.
>>>>
>>>> Regards,
>>>>  Rifaat
>>>>
>>>>
>>>> ---------- Forwarded message ---------
>>>> From: <internet-drafts@ietf.org>
>>>> Date: Wed, Jan 16, 2019 at 3:28 PM
>>>> Subject: New Version Notification for
>>>> draft-yusef-acme-3rd-party-device-attestation-01.txt
>>>> To: Rifaat Shekh-Yusef <rifaat.ietf@gmail.com>
>>>>
>>>>
>>>>
>>>> A new version of I-D,
>>>> draft-yusef-acme-3rd-party-device-attestation-01.txt
>>>> has been successfully submitted by Rifaat Shekh-Yusef and posted to the
>>>> IETF repository.
>>>>
>>>> Name:           draft-yusef-acme-3rd-party-device-attestation
>>>> Revision:       01
>>>> Title:          Third-Party Device Attestation for ACME
>>>> Document date:  2019-01-16
>>>> Group:          Individual Submission
>>>> Pages:          9
>>>> URL:
>>>> https://www.ietf.org/internet-drafts/draft-yusef-acme-3rd-party-device-attestation-01.txt
>>>> Status:
>>>> https://datatracker.ietf.org/doc/draft-yusef-acme-3rd-party-device-attestation/
>>>> Htmlized:
>>>> https://tools.ietf.org/html/draft-yusef-acme-3rd-party-device-attestation-01
>>>> Htmlized:
>>>> https://datatracker.ietf.org/doc/html/draft-yusef-acme-3rd-party-device-attestation
>>>> Diff:
>>>> https://www.ietf.org/rfcdiff?url2=draft-yusef-acme-3rd-party-device-attestation-01
>>>>
>>>> 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.
>>>>
>>>>
>>>>
>>>>
>>>> Please note that it may take a couple of minutes from the time of
>>>> submission
>>>> until the htmlized version and diff are available at tools.ietf.org.
>>>>
>>>> The IETF Secretariat
>>>>
>>>> _______________________________________________
>>>> Acme mailing list
>>>> Acme@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/acme
>>>>
>>>