Given how we didn't have the time to pass the document on so far, please find
attached my editorial review of the document. I think its in very good 
functional
description state, but the lange gould be improved via the suggestions i made

Thanks a lot
    Toerless

On Thu, Dec 01, 2022 at 09:43:30AM +0800, Sheng JIANG wrote:
> During the WGLC period, this drafts has received no objections, but comments, 
> particularly for editional issues. Therefore, the chairs would draw on 
> conclusiong on a conditional pass. The authors should make a thoroughly 
> editional check, particularly suggestion from Brian and Esko. The chairs 
> would check it with them after the authors made an update version. Till it 
> meet the condition, the chairs would push it forward.
> 
> 
> Regards,
> 
> 
> Sheng
> 
> ------------------ Original ------------------
> From: "Sheng JIANG"<[email protected]&gt;;
> Date: Mon, Nov 14, 2022 10:50 AM
> To: 
> 
> Subject: WGLC for draft-ietf-anima-brski-cloud-05, ends Nov. 28th, 2022
> 
> 
> Dear ANIMAers,
> 
> This message starts the two-week (*) ANIMA Working Group Last Call to advance 
> draft-ietf-anima-brski-cloud-05, which specifies the behavior of a BRSKI 
> Cloud Registrar, and how a pledge can interact with a BRSKI Cloud Registrar 
> when bootstrapping.
> 
> This document's intended status is Standards Track.
> At present, there is no IPR filed against this document.This document has 
> been ANIMA WG document since May, 2021 and has received a lot of feedback 
> from the WG and work from its authors. The authors therefore think is ready 
> for WGLC.
> Please send your comments by Nov. 28th 2022. If you do not feel this document 
> should advance, please state your reasons why.Sheng Jiang is now the document 
> shepherd.
> 
> Regards,
> 
> 
> Sheng

-- 
---
[email protected]
Line number are from idnits 2.17.1 

draft-ietf-anima-brski-cloud-05.txt:


  Checking references for intended status: Proposed Standard
  ----------------------------------------------------------------------------
  == Unused Reference: 'IEEE802.1AR' is defined on line 913, but no explicit
     reference was found in the text

  -- Duplicate reference: RFC7030, mentioned in 'RFC7030', was also mentioned
     in 'EST'.


2       Network Working Group                                           O. Friel
3       Internet-Draft                                                     Cisco
4       Intended status: Standards Track                          R. Shekh-Yusef
5       Expires: 17 May 2023                                               Auth0
6                                                                  M. Richardson
7                                                       Sandelman Software Works
8                                                               13 November 2022

10                               BRSKI Cloud Registrar
11                          draft-ietf-anima-brski-cloud-05

13      Abstract

15         This document specifies the behavior of a BRSKI Cloud Registrar, and
16         how a pledge can interact with a BRSKI Cloud Registrar when
17         bootstrapping.

If you can, add an explanation what the core aspects of a Cloud Registrar
are for tthe purpose of this document... discovery ? untrusted connection,.... ?

19         RFCED REMOVE: It is being actively worked on at https://github.com/
20         anima-wg/brski-cloud

22      Status of This Memo

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

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

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

37         This Internet-Draft will expire on 17 May 2023.

39      Copyright Notice

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

44         This document is subject to BCP 78 and the IETF Trust's Legal
45         Provisions Relating to IETF Documents (https://trustee.ietf.org/
46         license-info) in effect on the date of publication of this document.
47         Please review these documents carefully, as they describe your rights
48         and restrictions with respect to this document.  Code Components
49         extracted from this document must include Revised BSD License text as
50         described in Section 4.e of the Trust Legal Provisions and are
51         provided without warranty as described in the Revised BSD License.

53      Table of Contents

55         1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
56           1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
57           1.2.  Target Use Cases  . . . . . . . . . . . . . . . . . . . .   3
58             1.2.1.  Owner Registrar Discovery . . . . . . . . . . . . . .   4
59             1.2.2.  Bootstrapping with no Owner Registrar . . . . . . . .   4
60         2.  Architecture  . . . . . . . . . . . . . . . . . . . . . . . .   5
61           2.1.  Interested Parties  . . . . . . . . . . . . . . . . . . .   6
62           2.2.  Network Connectivity  . . . . . . . . . . . . . . . . . .   6
63           2.3.  Pledge Certificate Identity Considerations  . . . . . . .   6
64         3.  Protocol Operation  . . . . . . . . . . . . . . . . . . . . .   7
65           3.1.  Pledge Requests Voucher from Cloud Registrar  . . . . . .   7
66             3.1.1.  Cloud Registrar Discovery . . . . . . . . . . . . . .   7
67             3.1.2.  Pledge - Cloud Registrar TLS Establishment Details  .   7
68             3.1.3.  Pledge Issues Voucher Request . . . . . . . . . . . .   8
69           3.2.  Cloud Registrar Handles Voucher Request . . . . . . . . .   8
70             3.2.1.  Pledge Ownership Lookup . . . . . . . . . . . . . . .   8
71             3.2.2.  Cloud Registrar Redirects to Owner Registrar  . . . .   9
72             3.2.3.  Cloud Registrar Issues Voucher  . . . . . . . . . . .   9
73           3.3.  Pledge Handles Cloud Registrar Response . . . . . . . . .   9
74             3.3.1.  Redirect Response . . . . . . . . . . . . . . . . . .   9
75             3.3.2.  Voucher Response  . . . . . . . . . . . . . . . . . .  10
76         4.  Protocol Details  . . . . . . . . . . . . . . . . . . . . . .  10
77           4.1.  Voucher Request Redirected to Local Domain Registrar  . .  10
78           4.2.  Voucher Request Handled by Cloud Registrar  . . . . . . .  12
79         5.  YANG extension for Voucher based redirect . . . . . . . . . .  14
80           5.1.  YANG Tree . . . . . . . . . . . . . . . . . . . . . . . .  14
81           5.2.  YANG Voucher  . . . . . . . . . . . . . . . . . . . . . .  15
82         6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  17
83           6.1.  The IETF XML Registry . . . . . . . . . . . . . . . . . .  17
84           6.2.  The YANG Module Names Registry  . . . . . . . . . . . . .  17
85         7.  Security Considerations . . . . . . . . . . . . . . . . . . .  18
86           7.1.  Issues with Security of HTTP Redirect . . . . . . . . . .  18
87           7.2.  Security Updates for the Pledge . . . . . . . . . . . . .  19
88           7.3.  Trust Anchors for Cloud Registrar . . . . . . . . . . . .  19
89           7.4.  Issues with Redirect via Voucher  . . . . . . . . . . . .  20
90         8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  20
91           8.1.  Normative References  . . . . . . . . . . . . . . . . . .  20
92           8.2.  Informative References  . . . . . . . . . . . . . . . . .  21
93         Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  22

95      1.  Introduction

97         Bootstrapping Remote Secure Key Infrastructures [BRSKI] specifies
98         automated bootstrapping of an Autonomic Control Plane.  BRSKI

Suggest to replace after BRSKI with:

  ... BRSKI specifies automated and secure provisioning  of nodes (which are 
called pledges)
  with cryptographic keying material (trust anchors and certificates) to enable 
authenticated and
  confidential communication with other similarily enrolled nodes. This is also 
called enrolment.

No need to mention Autonomic Control Plane here IMHO (just sounds like limiting 
scope
of BRSKI Cloud).

If you really want folks to understand what is happening here, i suggest to
include explanations such as the following.

In BRSKI, the pledge performs enrolment by communicating with a BRSKI Registrar
belonging to the domain that provides the cryptopgraphic keying material and
usually is or acts upon the owner of the pledge. The pledge does not know 
who its owner is. Insted, in BRSKI it is assumed that the network to which the
pledge connects belongs to the owner of the pledge and therefore 
network-supported
discovery mechanisms can resolve generic, non-owner specific names to the 
owners Registrar.
To support enrolment of pledges without such an owner based access network, the 
mechanisms
of BRSKI Cloud are required which assume that Pledge and Registrar simply 
connect to the
Internet. The Internet ("Cloud") connected Registrar will then determine 
ownership of the Pledge
and redirect the Plege to its owners Registar.

99         Section 2.7 describes how a pledge "MAY contact a well-known URI of a
100        cloud registrar if a local registrar cannot be discovered or if the
101        pledge's target use cases do not include a local registrar".

I would remove parenthesis and lowercase the MAY. No need for this formalism to 
expose
your internal repetition of sentence. This is still introduction, repetition is 
perfectly fine.

103        This document further specifies use of a BRSKI cloud registrar and
104        clarifies operations that are not sufficiently specified in BRSKI.

106     1.1.  Terminology

108        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
109        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
110        "OPTIONAL" in this document are to be interpreted as described in
111        BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
112        capitals, as shown here.

114        This document uses the terms Pledge, Registrar, MASA, and Voucher
115        from [BRSKI] and [RFC8366].

117        *  Local Domain: The domain where the pledge is physically located
118           and bootstrapping from.  This may be different to the pledge
119           owner's domain.

121        *  Owner Domain: The domain that the pledge needs to discover and
122           bootstrap with.

124        *  Cloud Registrar: The default Registrar that is deployed at a URI
125           that is well known to the pledge.

127        *  Owner Registrar: The Registrar that is operated by the Owner, or
128           the Owner's delegate.  There may not be an Owner Registrar in all
129           deployment scenarios.

131        *  Local Domain Registrar: The Registrar discovered on the Local
132           Domain.  There may not be a Local Domain Registrar in all
133           deployment scenarios.

Isn't one core aspect of interest (which should be discussed in the text),
that the pledge does discover a Registar locally, but its not of its owner ?

135     1.2.  Target Use Cases

137        Two high level use cases are documented here.  There are more details

This document specifies and standardizes procedures for two high level use 
cases.

(use case documentation is fine, but the beef of standard tracks RFCs is the 
specification of 
 standardized procedures).

138        provided in sections Section 4.1 and Section 4.2.  While both use
139        cases aid with incremental deployment of BRSKI infrastructure, for
140        many smaller sites (such as teleworkers) no further infrastructure
141        are expected.

Last sentence is not correct english and reads weird. How about:

Common to both uses cases is that they aid with the use of BRSKI 
in the presence of many small sites (such as teleworkers) with minimum
expectations against their network infrastructure.

143        The pledge is not expected to know which of these two situations it
144        is in.  The pledge determines this based upon signals that it
145        receives from the Cloud Registrar.  The Cloud Registrar is expected

rephrase/explain: "determines this" -> determines what ? which of the two cases 
?

146        to make the determination based upon the identity presented by the
147        pledge.

rephrase/explain: make determination of what ?

149        While a Cloud Registrar will typically handle all the devices of a
150        particular product line from a particular manufacturer there are no
151        restrictions on how the Cloud Registrar is horizontally (many sites)
152        or vertically (more equipment at one site) scaled.  It is also

This is very hard to grasp if you did not know in before what the paragraph
means to confer. I hope i get it right. How about:

A Cloud Registrar will receive BRSKI communications from all devices configured
with its URI. This could (for example) all devices of a particular product line 
from
a particular manufacturer. When this is a significantly large number, a Cloud 
Registrar may need to be scaled with the usual web-service scaling mechansisms.

(btw: This is useful text, i am just not sure if its best positioned here
 upfront. I would prefer if this was a detail explained later because i don't
 feel its so super important or non-obvious).

Insert new paragraph after sentence because you're starting a completely new
piece of information following.

152        or vertically (more equipment at one site) scaled.  It is also
153        entirely possible that all devices sold by through a particular VAR
                                                   ^^^^^^^^^^
154        might be preloaded with a configuration that changes the Cloud
155        Registrar URL to point to a VAR.  Such an effort would require
156        unboxing each device in a controlled environment, but the
157        provisioning could occur using a regular BRSKI or SZTP [RFC8572]
158        process.

I think VAR is an unnecessary term and the whole paragraph is somewhat 
confusing.

If i understand it correctly, the core argument is like this:

The procedures specified in this document are an alternative to mechanisms
possible with just BRSKI to reduce operational cost.

Consider pledges are to be enrolled when being connected solely to the
Internet, but no owner based network. Likewise, the Registar is assumed to be
only connected to the Internet. The challenge in this case is for the pledge to
discover a URI for the Oners Registar. In the absence of the procdures described
in this doument, BRSKI could be used, but the pledge would need to be
pre-staged with that URI. In one instance, the seller of the pledge could
attach to the shipment of the pledge a USB stick pre-populated with a file
containing that Owner Registar URI, and that USB stick would need to be
inserted into the pledge to enavble enrolment. This is but one option,
and compared to similar alternatives, it does not require 
unpacking/configuration/repackaging
of the pledge at the sellers site, but only configuration of a USB stick

Yada yada... i really don't know how to make this shorter without looking 
readers
who do not live & breathe this stuff, so it probably is all better suited to be
put later into the document and only put a pointer to such a chapter here into 
the
Introduction.

160     1.2.1.  Owner Registrar Discovery

See also note in 1.2.2 - i would suggest "Bootstrap via Cloud Registrar and 
Owner Registrar" as better title

162        A pledge is bootstrapping from a remote location with no local domain

You didn't define remote location.

163        registrar (specifically: with no local infrastructure to provide for
164        automated discovery), and needs to discover its owner registrar.  The
165        cloud registrar is used by the pledge to discover the owner
166        registrar.  The cloud registrar redirects the pledge to the owner
167        registrar, and the pledge completes bootstrap against the owner
168        registrar.

170        A typical example is an enduser deploying a pledge in a home or small

s/enduser/employee who is/

171        branch office, where the pledge belongs to the enduser's employer.

s/enduser's employer/employer/

172        There is no local domain registrar, and the pledge needs to discover
173        and bootstrap with the employer's registrar which is deployed in
174        headquarters.  For example, an enduser is deploying an IP phone in a
175        home office and the phone needs to register to an IP PBX deployed in

...needs the keying material from BRSKI to register..

176        their employer's office.

178     1.2.2.  Bootstrapping with no Owner Registrar

How about Bootstrapping from via "Cloud Registrar and Owner EST-Server"

180        A pledge is bootstrapping where the owner organization does not yet
                                                                           ^^^
181        have an owner registrar deployed.  The cloud registrar issues a
                                           ^
...  but it has an [RFC7030] EST-Server for enrolment of pledges.

(aka: pull up this sentence here, because later in the paagraph it reads weird.

182        voucher, and the pledge completes trust bootstrap using the cloud
183        registrar.  The voucher issued by the cloud includes domain
184        information for the owner's [EST] service the pledge should use for
185        certificate enrollment.

I should have tried to understand this earlier ;-), but i really like this
case. WOuld love to see the following type of explanation here:

This option can be used to introduce the benefits of BRSKI for an initial
period when BRSKI is not available in existing EST-Servers. But it can also
be used long-term as an security-equivalent solution in which BRSKI and
EST-Server are set up in a modular fashion.

Would also suggest to add:

The use of an EST-Server instead of a BRSKI Registrar may mean that
not all the EST options required by [BRSKI] may be available and hence
this option may not support all BRSKI deployment cases. For example,
certificates to enroll into an ACP [RFC8994] needs to include an
AcpNodeName (see [RFC8994], Section 6.2.2), which non-BRSKI capable EST-Servers
ma not support.



At this point in the doc you need to insert 1.2.3 Summary

187        In one use case, an organization has an EST service deployed, but
188        does not have yet a BRSKI capable Registrar service deployed.  The
189        pledge is deployed in the organization's domain, but does not
190        discover a local domain, or owner, registrar.  The pledge uses the
191        cloud registrar to bootstrap, and the cloud registrar provides a
192        voucher that includes instructions on finding the organization's EST
193        service.
195     2.  Architecture

197        The high level architecture is illustrated in Figure 1.

199        The pledge connects to the cloud registrar during bootstrap.

201        The cloud registrar may redirect the pledge to an owner registrar in
202        order to complete bootstrap against the owner registrar.

s/against/with/

204        If the cloud registrar issues a voucher itself without redirecting
205        the pledge to an owner registrar, the cloud registrar will inform the
206        pledge what domain to use for accessing EST services in the voucher
207        response.

These two paragrapsh need to be specifically referring to which of the section 1
mentioned use cases they are. Aka: in case of 1.2.2 ..., In case of 1.2.2...

209        Finally, when bootstrapping against an owner registrar, this
210        registrar may interact with a backend CA to assist in issuing
211        certificates to the pledge.  The mechanisms and protocols by which
212        the registrar interacts with the CA are transparent to the pledge and
213        are out-of-scope of this document.

"will interact with a CA" (aka: i don't think we hacve a case where a CA is not 
involved,
but no need to express opinion about where it's located "backend..." 
superflous).

More importantly: This paragraph applies to both owner registar and owner 
EST-Server,
rewrite all occurrances within paragraph to cover both cases.
(i think...!)

215        The architecture shows the cloud registrar and MASA as being
216        logically separate entities.  The two functions could of course be
217        integrated into a single service.

s/single service/single entity/

(much as the owner registrar and CA could be integrated into a single entity).

219        TWO CHOICES: 1.  Cloud Registrar redirects to Owner Registrar 2.
220        Cloud Registrar returns VOUCHER pinning Owner Register.

This paragraph comes totall unexpected without context. Pinning is unexplained.
Maybe less ternse explanation here.


222        |<--------------OWNER------------------------>|     MANUFACTURER

224         On-site                Cloud
225        +--------+                                         +-----------+
226        | Pledge |---------------------------------------->| Cloud     |
227        +--------+                                         | Registrar |
228            |                                              +---+  +----+
229            |                                                  |??|
230            |                 +-----------+                +---+  +----+
231            +---------------->|  Owner    |--------------->|   MASA    |
232            |   VR-sign(N)    | Registrar |sign(VR-sign(N))+-----------+
233            |                 +-----------+
234            |                       |    +-----------+
235            |                       +--->|    CA     |
236            |                            +-----------+
237            |
238            |                 +-----------+
239            +---------------->| Services  |
240                              +-----------+

242                          Figure 1: High Level Architecture

This picture does not show the EST-Server option. Gap ?!

What is "Services" ??

The end-to-end lines look like explicit connections. This is confiusing.
Maybe the connections can be repainted in two ways:

1. replace lines with just some "Internet" in the middle with some dotted
lines from each box connecting to it.

Then insert some rough lines, e.g.: 

      <--(1) cloud register--->

       between Pledge and Cloud Registar
    

      <--(2) VR-sign(N)--->

      <--(3) sign(VR-sign(N))-->

Finally, you should add a paragraph with text explaining what the picture shows.
For example saying that all nodes only need to connect over the Internet, and
that it shows the three high-level stages of communication (1) (2), (3)

jut roughly so readers understand it.

244     2.1.  Interested Parties

246        1.  OEM - Equipment manufacturer.  Operate the MASA.

The rest of the document does not use the term OEM. Delete

248        2.  Network operator.  Operate the Owner Registrar.  Often operated
249            by end owner (company), or by outsourced IT entity.

This is only used twice below and the second time its not clear its the same
operator.

251        3.  Network integrator.  They operate a Cloud Registrar.

You never use the term Network integrator in the rest of the document. Delete

Aka: This whole section doesn't make sense unless you add some more explanation
(but likely it can just go).

253     2.2.  Network Connectivity

255        The assumption is that the pledge already has network connectivity
256        prior to connecting to the cloud registrar.  The pledge must have an
257        IP address, must be able to make DNS queries, and must be able to
258        send HTTP requests to the cloud registrar.  The pledge operator has

I would remove the "able to send HTTP requests" as this opens a rathole of
questions re. HTTP and mutual authentication, which are just resolved later in 
the doc.

259        already connected the pledge to the network, and the mechanism by

"The peldge is already connected to the network" ("plege operator" is not a good
term when yo think of employee/enduser... IMHO, i'd avoid it).

260        which this has happened is out of scope of this document.

There are power cables and strange sockets... kidding.

262     2.3.  Pledge Certificate Identity Considerations

264        BRSKI section 5.9.2 specifies that the pledge MUST send an EST
265        [RFC7030] CSR Attributes request to the registrar.  The registrar MAY

which registrar - cloud or owner ?

266        use this mechanism to instruct the pledge about the identities it
267        should include in the CSR request it sends as part of enrollment.
268        The registrar may use this mechanism to tell the pledge what Subject
269        or Subject Alternative Name identity information to include in its
270        CSR request.  This can be useful if the Subject must have a specific
271        value in order to complete enrollment with the CA.

So... In case of using an owner EST-Server instead of the Owner BRSKI
Registrar, this paragraph seems to hint at the option that the pledge
does the CSR Attribute request so that the Cloud registrar provides this
information because the EST-Server may not ? That should be said more 
explicitly.

For the case of Cloud and Owner Registrar it seems that the CSR attr request
could also be sent to the cloud registrar, but also to owner registrar.
Should both be sent ?? Be more explicit please.


273        EST [RFC7030] is not clear on how the CSR Attributes response should
274        be structured, and in particular is not clear on how a server can
275        instruct a client to include specific attribute values in its CSR.
276        [I-D.richardson-lamps-rfc7030-csrattrs] clarifies how a server can
277        use CSR Attributes response to specify specific values for attributes
278        that the client should include in its CSR.

This is now IETF draft draft-ietf-lamps-rfc7030-csrattrs, fi up reference.

Also make this normative reference.

280        For example, the pledge may only be aware of its IDevID Subject which
281        includes a manufacturer serial number, but must include a specific
282        fully qualified domain name in the CSR in order to complete domain
283        ownership proofs required by the CA.

puuh... interesting, but bring up security challenge if i understand it
correctly:

So the pledge would learn attributes from the cloud registrar via CSRattr 
request/reply
and later on uses them in the cert enrolment step with the 
EST-Server/Owner-Registrar.

Yes ?

Because in this case we would just upgradr the trust requirement against the
Cloud Registrar. Without this step, the Cloud Registrar is just a glorified
traffic guide to redirect the pledge to the Owner and deliver a a voucher to
it. But really doesn't have to be well trusted - just good enough to oppress
the worst of DoS attack opportunities. (I hope i get this right).

But with such aditional attributes, the cloud-registar has to be trusted
much more. 

I would suggest that for this case, if feasible, the voucher would also vouch
for the cloud registar - that would upgrade all the information received from
the cloud registrar to the same level of trust that the pledge has against the
owner registrar - by virtue of the voucher.

Alternatively, i think we should explicitly call for authenticartion of the
Cloud Registrar only via explicit TA for the purpose of Cloud Registrar
connections, but not general purpose WebPKI TA (which a lot of pledges
may also have...). 

285        As another example, the registrar may deem the manufacturer serial
286        number in an IDevID as personally identifiable information, and may
287        want to specify a new random opaque identifier that the pledge should
288        use in its CSR.

But this is now only about what's in the ultimate LDevID, right ? SO this
is not a new issue for BRSKI Cloud, but for BRSKI too, right ? 

If this is applicable to non-BRSKI Cloud cases, can this please go into 
draft-ietf-lamps-rfc7030-csrattrs instead ?

290     3.  Protocol Operation

292     3.1.  Pledge Requests Voucher from Cloud Registrar

294     3.1.1.  Cloud Registrar Discovery

296        BRSKI defines how a pledge MAY contact a well-known URI of a cloud
297        registrar if a local domain registrar cannot be discovered.

Actually, it would really be good if some text in the introduction of brski 
cloud
would discus/refer to RFC8995 section 2.7 "Cloud Registar", such as:

"RFC8995 2.7 introduces concept of Cloud Registar, but does not define how a 
Cloud
Registrar should perform BRSKI enrolment for pledges from potentially multiple 
domain.
This document provides a specification for Cloud Registar in which the Cloud
Registar either only provides a Voucher and then redirects the pledge to its
owners EST server, or where it only redirects the pledge to its owners BRSKI 
Registar.

This whole scope of this document also makes me wonder if we should amend the 
title
of the docuemtn to "Redirecting BRSKI Cloud Registar". Because there could 
still be
perfectly well an "all-in-one" BRSKI Cloud Registar, perfectly well fitting 
RFC8995
section 2.7 - bit not requiring any of this documents procedures, right ? Aka:
The key identifying property is not that of the Cloud Registrar but the fact 
that it
is redirecting (i think).

298        Additionally, certain pledge types may never attempt to discover a
299        local domain registrar and may automatically bootstrap against a
300        cloud registrar.

302        The details of the URI are manufacturer specific, with BRSKI giving
303        the example "brski-registrar.manufacturer.example.com".

Hmm. RFC8995 says:

performing a DNS lookup using a well-known URI such as 
"brski-registrar.manufacturer.example.com"

but i think thats wrong text because "brski-..." is not a URI given how it has 
no
scheme. Sentence should have been "DNS lookup using the host of the well-known 
URI".

I am actually not even sure how a BRSKI URI would look like. E.g.: when the
pledge just has a URI - how does it know that the protocol should be BRSKI - 
let's say
it does support multiple different enrolment protocols...  ???

https://brski-registrar.manufacturer.example.com/.well-known/brski

Is that a correct URI that fully identifies BRSKI ???
(i think it is...)

305        The Pledge SHOULD be provided with the entire URL of the Cloud
306        Registrar, including the path component, which is typically "/.well-
307        known/brski/requestvoucher", but may be another value.

See.. now you're saying URL instead of URI, is that necessary/beneficial ?

And how would i determine whether "requestvoucher" is required in the URI ? 
Isn't
that implied by the protocol we're describing here ???

309     3.1.2.  Pledge - Cloud Registrar TLS Establishment Details

311        The pledge MUST use an Implicit Trust Anchor database (see [EST]) to
          ^

According to RFC8995, Section 2.7, 

312        authenticate the cloud registrar service.  The Pledge can be done

313        with pre-loaded trust-anchors that are used to validate the TLS
314        connection.  This can be using a public Web PKI trust anchors using
315        [RFC6125] DNS-ID mechanisms, a pinned certification authority, or
316        even a pinned raw public key.  This is a local implementation
317        decision.

I am mostly worried of this being mis-read such that it could be appropriate
to include the teirrbly long list of WebPKI Trust Anchors and think thats
good security. If we sa WebPKI it would certainlt be good to suggest limiting
WebPKI Trust anchros to only the ones known to be required for the Cloud
Registar.

319        The pledge MUST NOT establish a provisional TLS connection (see BRSKI
320        section 5.1) with the cloud registrar.

Reads confusingly here. Suggest to remove paragraph here and explain after the
following paragraph that compared to BRSKI, the TLS connection is immediately
mutually authenticated and not first a provisional TLS connection as in BRSKI.

322        The cloud registrar MUST validate the identity of the pledge by
323        sending a TLS CertificateRequest message to the pledge during TLS
324        session establishment.  The cloud registrar MAY include a
325        certificate_authorities field in the message to specify the set of
326        allowed IDevID issuing CAs that pledges may use when establishing
327        connections with the cloud registrar.

329        The cloud registrar MAY only allow connections from pledges that have
330        an IDevID that is signed by one of a specific set of CAs, e.g.
331        IDevIDs issued by certain manufacturers.

How about we upgrade this ?

To protect itself against DoS attacks, the cloud registrar SHOULD reject TLS 
connections 
when it can determine during TLS authentication that it can not support the 
pledge, for example because
the plege can not provide an IDevID signed by a CA recognized/supported 
by the cloud registrar.

333        The cloud registrar MAY allow pledges to connect using self-signed

s/connect/authenticate/ ?

334        identity certificates or using Raw Public Key [RFC7250] certificates.

I think you're mention this because you have a good business case, such as 
reduction
in manufacturing cost by doing self enrolment or raw public keys during 
manufacturing
and capturing those into MASA and manufacturing databases - instead of also 
having
to bother about a CA. It might be useful to add a paragraph about this benefit, 
although
it is AFAIK not really BRSKI Cloud specific - but it seems like this could be 
even
a more common case as peldges with non-self-signed certs.

336     3.1.3.  Pledge Issues Voucher Request

338        After the pledge has established a full TLS connection with the cloud
                                           
s/full/mutually authenticated/ ?

339        registrar and has verified the cloud registrar PKI identity, the

s/and has verified the cloud registrar PKI identity,// ??

340        pledge generates a voucher request message as outlined in BRSKI
341        section 5.2, and sends the voucher request message to the cloud
342        registrar.

344     3.2.  Cloud Registrar Handles Voucher Request

346        The cloud registrar must determine pledge ownership.  Once ownership
347        is determined, or if no owner can be determined, then the registrar
348        may:

350        *  return a suitable 4xx or 5xx error response to the pledge if the
351           registrar is unwilling or unable to handle the voucher request

call this " * error: " ?

353        *  redirect the pledge to an owner register via 307 response code
                                                    ^ ra

call this " * redirect to owner registrar:" ?

355        *  issue a voucher and return a 200 response code

call this " * redirect to owner EST server" ?? Although i don't see
any redirect... Forgot initial text is there no redirect, pledge should assume
to know where to find EST-Server ?


357     3.2.1.  Pledge Ownership Lookup

359        The cloud registrar needs some suitable mechanism for knowing the
360        correct owner of a connecting pledge based on the presented identity
361        certificate.  For example, if the pledge establishes TLS using an
                      ^ or raw keys

362        IDevID that is signed by a known manufacturing CA, the registrar
363        could extract the serial number from the IDevID and use this to
364        lookup a database of pledge IDevID serial numbers to owners.

366        Alternatively, if the cloud registrar allows pledges to connect using
367        self-signed certificates, the registrar could use the thumbprint of
368        the self-signed certificate to lookup a database of pledge self-
369        signed certificate thumbprints to owners.

is there any spec for thumbprint you could cite ?

371        The mechanism by which the cloud registrar determines pledge
372        ownership is out-of-scope of this document.

... but as Figure 1 intends to imply, it could obtain this information from the
MASA of the pledges manufacturer.

Btw: Self-signed certs and raw keys sound like a fun cloud registrar / masa 
integration.
Seems like if you want to implement a cloud registrar for multiple manufacturers
that use raw keys or self-signed certs, that the cloud registrar better have
different URIs for every manufacturer if it does not always want to get a full
dump of all the tumbprints of those self-signed certs and/or raw keys. After all
the cloud registrar can not figure out who the manufacturer is with raw keys
or thumbprints unless it already has that info - unless the pledge does provide
a second piece of information (who is my manufacturer) by mean of the URI
of the cloud server that it connects to.

If i am not missing something, this condition may or may not be worthwhile to
explain. I think to remember that in BRSKI and/or ACP, and because back then
we expected still to maybe get only TLS 1.2, that we asked for support of
SNI (Server Name Indication) on pledges. Something that would especially be
applicable here. In TLS 1.3 that is standard. But i guess when we are not saying
aything then this RFC will still permit use of TLS 1.2 and hence a requirement 
for
pledge side SNI support seems appropriate.

374     3.2.2.  Cloud Registrar Redirects to Owner Registrar

376        Once the cloud registrar has determined pledge ownership, the cloud
377        registrar may redirect the pledge to the owner registrar in order to
378        complete bootstrap.  Ownership registration will require the owner to
379        register their local domain.  The mechanism by which pledge owners
380        register their domain with the cloud registrar is out-of-scope of
381        this document.

Reads a bit confusing. Maybe rephrase: 

If the owner wants the Cloud Registrr
to redirect pledges to the Owner Registrar, the owner needs to register the
Owner Registrars URI with cloud Registar. The mechanisms...

383        The cloud registrar replies to the voucher request with a suitable
      
384        HTTP 307 response code, including the owner's local domain in the
385        HTTP Location header.

387     3.2.3.  Cloud Registrar Issues Voucher

389        If the cloud registrar issues a voucher, it returns the voucher in a
390        HTTP response with a 200 response code.

392        The cloud registrar MAY issue a 202 response code if it is willing to
393        issue a voucher, but will take some time to prepare the voucher.

395        The voucher MUST include the "est-domain" field as defined below.
396        This tells the pledge where the domain of the EST service to use for
397        completing certificate enrollment.


Seems "est-domain" is a new voucher field not in rfc8366 or rfc8995. SO please
say so and point to at least the section here pointing to i gues rfc8366bis so
reader know where this magial "est-domain" is. 'New "est-domain"' would also
help to make this understood.


399        The voucher MAY include the "additional-configuration" field.  This
400        points the pledge to a URI where application specific additional

s/application/pledge/ ??? (don't introduce additional new terms like aplication 
without defining them).

401        configuration information may be retrieved.  Pledge and Registrar
402        behavior for handling and specifying the "additional-configuration"
403        field is out-of-scope of this document.

But it seems as if the Manufacturer and/or owner may want to be able to specify 
the
value of this field to the Cloud Registrar.

405     3.3.  Pledge Handles Cloud Registrar Response

407     3.3.1.  Redirect Response

409        The cloud registrar returned a 307 response to the voucher request.

411        The pledge should restart the process using a new voucher request
412        using the location provided in the HTTP redirect.  Note if the pledge
413        is able to validate the new server using a trust anchor found in its
414        Implicit Trust Anchor database, then it MAY accept another 307
415        redirect.  The pledge MUST never visit a location that it has already
416        been to.  If that happens then the pledge MUST fail the onboarding
                                                                   ^^^^^^^^^^

bootstrap, onboarding, enrollment - pick at most two, ideally one, and use 
consistently
throughout document.

417        attempt and go back to the beginning, which includes listening to
418        other sources of onboarding information as specified in [BRSKI]
419        section 4.1 and 5.0.

421        The pledge should establish a provisional TLS connection with
422        specified local domain registrar.  The pledge should not use its

...with the registar at the redirect specified location.

423        Implicit Trust Anchor database for validating the local domain
424        registrar identity.  The pledge should send a voucher request message
425        via the local domain registrar.  When the pledge downloads a voucher,
426        it can validate the TLS connection to the local domain registrar and
427        continue with enrollment and bootstrap as per standard BRSKI
428        operation.

Is this chapter not already saying to much ? E.g.: with the redirect from the
Cloud Registrar, we just in this case have a new form of (Owner) Registrar and
everythinf else would be as it is in BRSKI ? Aka: at line 421 write that from
here on behavior is as in BRSKI Section (find right section).

430     3.3.2.  Voucher Response

432        The cloud registrar returned a voucher to the pledge.  The pledge
433        should perform voucher verification as per standard BRSKI operation.
434        The pledge should verify the voucher signature using the
435        manufacturer-installed trust anchor(s), should verify the serial
436        number in teh voucher, and must verify any nonce information in the
437        voucher.

439        The pledge should extract the "est-domain" field from the voucher,
440        and should continue with EST enrollment as per standard BRSKI
441        operation.

This section too would IMHO be better if it could incldue the BRSKI section
for the validation etc..

Then i wonder about CSR attrributes... where does it happen.

And then EST enrolment: Is that as perr standard BRSKI operation, which is
more than ESTE7030, or is it according to RFC7030. With the use case of
a legacy EST server, it probably is only only RFC7030 and not BRSKI, right ???

443     4.  Protocol Details

445     4.1.  Voucher Request Redirected to Local Domain Registrar

447        This flow illustrates the Owner Registrar Discovery flow.  A pledge
448        is bootstrapping in a remote location with no local domain registrar.
449        The assumption is that the owner registrar domain is accessible and
450        the pledge can establish a network connection with the owner
451        registrar.  This may require that the owner network firewall exposes
452        the registrar on the public internet.

registrar or EST-server enrollment port to the public internet ?? 

454        +--------+                                       +----------+
455        | Pledge |                                       | Cloud RA |
456        |        |                                       |          |
457        +--------+                                       +----------+
458            |                                                 |
459            | 1. Mutual-authenticated TLS                     |
460            |<----------------------------------------------->|
461            |                                                 |
462            | 2. Voucher Request                              |
463            |------------------------------------------------>|
464            |                                                 |
465            | 3. 307 Location: owner-ra.example.com           |
466            |<------------------------------------------------|
467            |
468            |                  +-----------+             +---------+
469            |                  | Owner     |             |  MASA   |
470            |                  | Registrar |             |         |
471            |                  +-----------+             +---------+
472            | 4. Provisional TLS   |                          |
473            |<-------------------->|                          |
474            |                      |                          |
475            | 5. Voucher Request   |                          |
476            |--------------------->| 6. Voucher Request       |
477            |                      |------------------------->|
478            |                      |                          |
479            |                      | 7. Voucher Response      |
480            |                      |<-------------------------|
481            | 8. Voucher Response  |                          |
482            |<---------------------|                          |
483            |                      |                          |
484            | 9. Validate TLS      |                          |
485            |<-------------------->|                          |
486            |                      |                          |
487            | 10. etc.             |                          |
488            |--------------------->|                          |

490        The process starts, in step 1, when the Pledge establishes a Mutual
491        TLS channel with the Cloud RA using artifacts created during the

s/RA/registrar/g - not a new term this late in the doc please unless there is a 
good reason
that should be explained in text.

492        manufacturing process of the Pledge.

494        In step 2, the Pledge sends a voucher request to the Cloud RA.

496        The Cloud RA completes pledge ownership lookup as outlined in

s/completes/determines/

497        Section 3.2.1, and determines the owner registrar domain.  In step 3,
498        the Cloud RA redirects the pledge to the owner registrar domain.

500        Steps 4 and onwards follow the standard BRSKI flow.  The pledge
501        establishes a provisional TLS connection with the owner registrar,
502        and sends a voucher request to the owner registrar.  The registrar
503        forwards the voucher request to the MASA.  Assuming the MASA issues a
504        voucher, then the pledge validates the TLS connection with the
505        registrar using the pinned-domain-cert from the voucher and completes
506        the BRSKI flow.

508     4.2.  Voucher Request Handled by Cloud Registrar

would suggest for 4.1 and 4.2 the same titles as for 1.2.1 and 1.2.2
so they can easier be matched up

510        The Voucher includes the EST domain to use for EST enroll.  It is

s/enroll/enrollment/

511        assumed services are accessed at that domain too.  As trust is
512        already established via the Voucher, the pledge does a full TLS
513        handshake against the local RA indicated by the voucher response.

515        The returned voucher contains an attribute, "est-domain", defined in
516        Section 5 below.  The pledge is directed to continue enrollment using
517        the EST registrar found at that URI.  The pledge uses the pinned-
518        domain-cert from the voucher to authenticate the EST registrar.

I am not sure these two paragraphs are needed given how the explanation after
the picture should cover it all in chronological order. But if you want to
keep this text, please reorder from benjaming button order to chronological.


520        +--------+                                       +----------+
521        | Pledge |                                       | Cloud RA |
522        |        |                                       | / MASA   |
523        +--------+                                       +----------+
524            |                                                 |
525            | 1. Mutual TLS                                   |
526            |<----------------------------------------------->|
527            |                                                 |
528            | 2. Voucher Request                              |
529            |------------------------------------------------>|
530            |                                                 |
531            | 3. Voucher Response  {est-domain:fqdn}          |
532            |<------------------------------------------------|
533            |                                                 |
534            |                 +----------+                    |
535            |                 | RFC7030  |                    |
536            |                 |  EST     |                    |
537            |                 | Registrar|                    |
538            |                 +----------+                    |
539            |                      |                          |
540            | 4. Full TLS          |                          |
541            |<-------------------->|                          |
542            |                                                 |
543            |     3a. /voucher_status POST  success           |
544            |------------------------------------------------>|
545            |     ON FAILURE 3b. /voucher_status POST         |
546            |                                                 |
547            | 5. EST Enrol         |                          |
548            |--------------------->|                          |
549            |                      |                          |
550            | 6. Certificate       |                          |
551            |<---------------------|                          |
552            |                      |                          |
553            | 7. /enrollstatus     |                          |
554            |--------------------->|                          |

556        The process starts, in step 1, when the Pledge establishes a Mutual
557        TLS channel with the Cloud RA/MASA using artifacts created during the
558        manufacturing process of the Pledge.  In step 2, the Pledge sends a
559        voucher request to the Cloud RA/MASA, and in response the Pledge
560        receives an [RFC8366] format voucher from the Cloud RA/MASA that
                       ^^^^^^^^^

This should ultimately be the rfc8366bis format voucher because of est-domain, 
right ?
I see right now we still have the extension here. In any case, point to the 
right
place, not just RFC8366.

561        includes its assigned EST domain in the est-domain attribute.

563        At this stage, the Pledge should be able to establish a TLS channel

s/channel/connection/

564        with the EST Registrar.  The connection may involve crossing the
565        Internet requiring a DNS lookup on the provided name.  It may also be
566        a local address that includes an IP address literal including both
567        [RFC1918] and IPv6 Unique Local Address.  The EST Registrar is

Whow a local address that includes both RFC1918 and IPv6 Unique Local address. 
Never seen that!

s/and/or/ ;-)

please add reference for ULA (RFC4193)

568        validated using the pinned-domain-cert value provided in the voucher
569        as described in [BRSKI] section 5.6.2.  This involves treating the
570        artifact provided in the pinned-domain-cert as a trust anchor, and
571        attempting to validate the EST Registrar from this anchor only.

s/validate/authenticate/

573        There is a case where the pinned-domain-cert is the identical End-
574        Entity (EE) Certificate as the EST Registrar.  It also explicitly
575        includes the case where the EST Registrar has a self-signed EE
576        Certificate, but it may also be an EE certificate that is part of a
577        larger PKI.  If the certificate is not a self-signed or EE
578        certificate, then the Pledge SHOULD apply [RFC6125] DNS-ID validation
579        on the certificate against the URL provided in the est-domain
580        attribute.  If the est-domain was provided by with an IP address
581        literal, then it is unlikely that it can be validated, and in that
582        case, it is expected that either a self-signed certificate or an EE
583        certificate will be pinned.

Maybe "pinned by the voucher" to avoid confusion ? (maybe also in other places
where you use pinning).

585        The Pledge also has the details it needs to be able to create the CSR
586        request to send to the RA based on the details provided in the
587        voucher.

589        In step 4, the Pledge establishes a TLS channel with the Cloud RA/
590        MASA, and optionally the pledge should send a request, steps 3.a and
591        3.b, to the Cloud RA/MASA to inform it that the Pledge was able to
592        establish a secure TLS channel with the EST Registrar.

594        The Pledge then follows that, in step 5, with an EST Enroll request
595        with the CSR and obtains the requested certificate.  The Pledge must
596        validate that the issued certificate has the expected identifier
597        obtained from the Cloud RA/MASA in step 3.

599     5.  YANG extension for Voucher based redirect

601        An extension to the [RFC8366] voucher is needed for the case where
602        the client will be redirected to a local EST Registrar.

604     5.1.  YANG Tree
605        module: ietf-voucher-redirected

607          grouping voucher-redirected-grouping
608            +-- voucher
609               +-- created-on                       yang:date-and-time
610               +-- expires-on?                      yang:date-and-time
611               +-- assertion                        enumeration
612               +-- serial-number                    string
613               +-- idevid-issuer?                   binary
614               +-- pinned-domain-cert               binary
615               +-- domain-cert-revocation-checks?   boolean
616               +-- nonce?                           binary
617               +-- last-renewal-date?               yang:date-and-time
618               +-- est-domain?                      ietf:uri
619               +-- additional-configuration?        ietf:uri

621     5.2.  YANG Voucher

623        <CODE BEGINS> file "[email protected]"
624        module ietf-voucher-redirected {
625          yang-version 1.1;

627          namespace
628            "urn:ietf:params:xml:ns:yang:ietf-voucher-redirected";
629          prefix "redirected";

631          import ietf-restconf {
632            prefix rc;
633            description
634              "This import statement is only present to access
635               the yang-data extension defined in RFC 8040.";
636            reference "RFC 8040: RESTCONF Protocol";
637          }

639          import ietf-inet-types {
640            prefix ietf;
641            reference "RFC 6991: Common YANG Data Types";
642          }

644          import ietf-voucher {
645            prefix "v";
646          }

648          organization
649           "IETF ANIMA Working Group";

651          contact
652           "WG Web:   <http://tools.ietf.org/wg/anima/>
653            WG List:  <mailto:[email protected]>
654            Author:   Michael Richardson
655                      <mailto:[email protected]>
656            Author:   Owen Friel
657                      <mailto: [email protected]>
658            Author:   Rifaat Shekh-Yusef
659                      <mailto: [email protected]>";
660        description
661          "This module extendes the base RFC8366 voucher format to
662           include a redirect to an EST server to which enrollment
663           should continue.

665           The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
666           'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY',
667           and 'OPTIONAL' in the module text are to be interpreted as
668           described in BCP14, RFC 2119, and RFC8174.";

670          revision "2020-09-23" {
671            description
672             "Initial version";
673            reference
674             "RFC XXXX: Voucher Profile for Cloud redirected Devices";
675          }

677          rc:yang-data voucher-redirected-artifact {
678            // YANG data template for a voucher.
679            uses voucher-redirected-grouping;
680          }

682          // Grouping defined for future usage
683          grouping voucher-redirected-grouping {
684            description
685              "Grouping to allow reuse/extensions in future work.";

687            uses v:voucher-artifact-grouping {

689              augment "voucher" {
690                description "Base the constrained voucher
691                             upon the regular one";
692                leaf est-domain {
693                  type ietf:uri;
694                  description
695                    "The est-domain is a URL to which the Pledge should
696                     continue doing enrollment rather than with the
697                     Cloud Registrar.
698                     The pinned-domain-cert contains a trust-anchor
699                     which is to be used to authenticate the server
700                     found at this URI.

702                    ";
703                }
704                leaf additional-configuration {
705                  type ietf:uri;
706                  description
707                    "The additional-configuration attribute contains a
708                     URL to which the Pledge can retrieve additional
709                     configuration information.
710                     The contents of this URL are vendor specific.
711                     This is intended to do things like configure
712                     a VoIP phone to point to the correct hosted
713                     PBX, for example.";
714                }
715              }
716            }
717          }
718        }
719        <CODE ENDS>

721     6.  IANA Considerations

723     6.1.  The IETF XML Registry

725        This document registers one URI in the IETF XML registry [RFC3688].
726        Following the format in [RFC3688], the following registration is
727        requested:

729        {: newline="true"}
730        URI:
731        : urn:ietf:params:xml:ns:yang:ietf-voucher-redirected

733        Registrant Contact:
734        : The ANIMA WG of the IETF.

736        XML:
737        : N/A, the requested URI is an XML namespace.

739     6.2.  The YANG Module Names Registry

741        This document registers two YANG modules in the YANG Module Names
742        registry [RFC6020].  Following the format defined in [RFC6020], the
743        the following registration is requested:

745        {: newline="true"}
746        name:
747        : ietf-voucher-redirected

749        namespace:
750        : urn:ietf:params:xml:ns:yang:ietf-voucher-redirected

752        prefix:
753        : vch

755        reference:
756        : THIS DOCUMENT

758     7.  Security Considerations

760        The Cloud-Registrar described in this document inherits all of the
761        issues that are described in [BRSKI].  This includes dependency upon
                                               ^

applicable to the stages of BRSKI that it also performsn (i have no idea
wheter or what security considerations we've written into 8995 for e.g.:
the cert enrollment stages, but those for example would not apply here, but
are a problem of the EST-server for example.

762        continued operation of the manufacturer provided MASA, as well as
763        potential complications where a manufacturer might interfere with
764        resale of a device.

766        In addition to the dependency upon the MASA, the successful
767        enrollment of a device using a Cloud Registrar depends upon the
768        correct and continued operation of this new service.  This internet
769        accessible service may be operated by the manufacturer and/or by one
770        or more value-added-resellers.  All of the considerations for
771        operation of the MASA also apply to operation of the Cloud Registrar.

The way i see it overall, the Cloud Registrar opens up (based on deployment
details) new opportunities for attackers to perform DoS against successful 
enrolment,
starting from the use of the Internet itself, public DNS and all that. BUT it 
seems to me that
we do not introduce new security problems for inappropriate LDevID enrolment
(e.g.: into the wrong domain), because that still all depend solely on unchanged
behavior on an Owner EST-Server/Registrar.

Aka: that should be rephrased and be on top as reassuring high level property.

773     7.1.  Issues with Security of HTTP Redirect

775        If the Redirect to Registrar method is used, as described in
776        Section 4.1, there may be a series of 307 redirects.  An example of
777        why this might occur is that the manufacturer only knows that it
778        resold the device to a particular value added reseller (VAR), and
779        there may be a chain of such VARs.  It is important the pledge avoid
780        being drawn into a loop of redirects.  This could happen if a VAR

"the Cloud Registrar of a VAR" - also in other uses here. Check what sentence
refers to the VAR at large vs. its Cloud Registrar.

781        does not think they are authoritative for a particular device.  A
782        "helpful" programmer might instead decide to redirect back to the
783        manufacturer in an attempt to restart at the top: perhaps there is
784        another process that updates the manufacturer's database and this
785        process is underway.  Instead, the VAR MUST return a 404 error if it
786        cannot process the device.  This will force the device to stop,
787        timeout, and then try all mechanisms again.

789        There is another case where a connection problem may occur: when the
790        pledge is behind a captive portal or an intelligent home gateway that
791        provides access control on all connections.  Captive portals that do
792        not follow the requirements of [RFC8952] section 1 may forcibly
793        redirect HTTPS connections.  While this is a deprecated practice as
794        it breaks TLS in a way that most users can not deal with, it is still
795        common in many networks.

797        On the first connection, the incorrect connection will be discovered
798        because the Pledge will be unable to validate the connection to its
799        cloud registrar via DNS-ID.  That is, the certificate returned from
800        the captive portal will not match.

802        At this point a network operator who controls the captive portal,
803        noticing the connection to what seems a legitimate destination (the
804        cloud registrar), may then permit that connection.  This enables the
805        first connection to go through.

807        The connection is then redirected to the Registrar, either via 307,
808        or via est-domain in a voucher.  If it is a 307 redirect, then a
809        provisional TLS connection will be initiated, and it will succeed.
810        The provisional TLS connection does not do [RFC6125] DNS-ID
811        validation at the beginning of the connection, so a forced
812        redirection to a captive portal system will not be detected.  The
813        subsequent BRSKI POST of a voucher will most likely be met by a 404
814        or 500 HTTP code.  As the connection is provisional, the pledge will
815        be unable to determine this.

I don't think that programming problems of friendly implementors that don't
understand this are actually part of security considerations. So maybe the mayor
part of this should go into a different section on implementation 
considerations.

In such a section you can be liberal and mention everything, and then in the
formally required security considerations here you may jsut that that if
an attacker manages to create one of the problems that are outlined in that
implementations ection, then he can create a DoS attack against timely 
enrolment,
but nothing worse.

817        It is RECOMMENDED therefore that the pledge look for [RFC8910]
818        attributes in DHCP, and if present, use the [RFC8908] API to learn if
819        it is captive.

821     7.2.  Security Updates for the Pledge

823        Unlike many other uses of BRSKI, in the Cloud Registrar case it is
824        assumed that the Pledge has connected to a network on which there is

I don't think the Internet is Voldemort. Aka: feel free to globally replace
"the Internet". If it really could be another network than the Internet, thats
fine to keep explicitly, but for something like firmware updates specifically,
it clearly seems to be just the Internet.

825        addressing and connectivity, but there is no other local
826        configuration available.

828        There is another advantage to being online: the pledge may be able to
829        contact the manufacturer before onboarding in order to apply the
830        latest firmware updates.  This may also include updates to the
831        Implicit list of Trust Anchors.  In this way, a Pledge that may have
832        been in a dusty box in a warehouse for a long time can be updated to
833        the latest (exploit-free) firmware before attempting onboarding.

835     7.3.  Trust Anchors for Cloud Registrar

837        The Implicit TA database is used to authenticate the Cloud Registrar.
838        This list is built-in by the manufacturer along with a DNS name to
839        which to connect.  (The manufacturer could even build in IP addresses
840        as a last resort)

841        The Cloud Registrar does not have a certificate that can be validated
842        using a public (WebPKI) anchor.  The pledge may have any kind of
843        Trust Anchor built in: from full multi-level WebPKI to the single
844        self-signed certificate used by the Cloud Registrar.  There are many

The first and second sentences here do seem to contradict each other WebPKI 
yes/no/maybe ???...

844        self-signed certificate used by the Cloud Registrar.  There are many
845        tradeoffs to having more or less of the PKI present in the Pledge,
846        which is addresses in part in
847        [I-D.richardson-t2trg-idevid-considerations] in sections 3 and 5.

849     7.4.  Issues with Redirect via Voucher

851        The second redirect case is handled by returning a special extension
852        in the voucher.  The Cloud Registrar actually does all of the voucher
853        processing as specified in [BRSKI].  In this case, the Cloud
854        Registrar may be operated by the same entity as the MASA, and it
855        might even be combined into a single server.  Whether or not this is
856        the case, it behaves as if it was separate.

I think this is not correct. IN either of the flows, the Cloud Registrar can
be operated by the same entity as the MASA and both might be combined into a 
single
server. I also wouldn't know what "behaves as if it was separate" means. 

What i think is true is this:

A Cloud Registrar supporting the same set of pledges as a MASA can be integrated
MASA to avoid the need for a network based API between them, and without 
changing
their external behaviror as specified here.

If the Cloud Registrar issues a voucher, there is no need anymore for 
BRSKI-MASA.

It is left up to the exercise of a more advanced security expert than myself
to claim whether or not this improves security, but likely it does, because now 
the
whole flow up to the point of getting a pledge to a voucher can only involve
code from one party (the manufacturer).
 

858        It may be the case that one or more 307-Redirects have taken the
859        Pledge from the built-in Cloud Registrar to one operated by a VAR.

861        When the Pledge is directed to the Owner's [EST] Registrar, the
862        Pledge validates the TLS connection with this server using the
863        "pinned-domain-cert" attribute in the voucher.  There is no
864        provisional TLS connection, and therefore there are no risks
865        associated with being behind a captive portal.

Was that being behind captive portal a real security risk or just a possible
failure issue (failure is not a security problem AFAIK...)

867     8.  References

869     8.1.  Normative References

871        [BRSKI]    Pritikin, M., Richardson, M., Eckert, T., Behringer, M.,
872                   and K. Watsen, "Bootstrapping Remote Secure Key
873                   Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995,
874                   May 2021, <https://www.rfc-editor.org/info/rfc8995>.

876        [EST]      Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed.,
877                   "Enrollment over Secure Transport", RFC 7030,
878                   DOI 10.17487/RFC7030, October 2013,
879                   <https://www.rfc-editor.org/info/rfc7030>.

881        [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
882                   Requirement Levels", BCP 14, RFC 2119,
883                   DOI 10.17487/RFC2119, March 1997,
884                   <https://www.rfc-editor.org/info/rfc2119>.

886        [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
887                   2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
888                   May 2017, <https://www.rfc-editor.org/info/rfc8174>.

890        [RFC8366]  Watsen, K., Richardson, M., Pritikin, M., and T. Eckert,
891                   "A Voucher Artifact for Bootstrapping Protocols",
892                   RFC 8366, DOI 10.17487/RFC8366, May 2018,
893                   <https://www.rfc-editor.org/info/rfc8366>.

895     8.2.  Informative References

897        [I-D.richardson-lamps-rfc7030-csrattrs]
898                   Richardson, M., Friel, O., von Oheimb, D., and D. Harkins,
899                   "Clarification of RFC7030 CSR Attributes definition", Work
900                   in Progress, Internet-Draft, draft-richardson-lamps-
901                   rfc7030-csrattrs-04, 24 July 2022,
902                   <https://www.ietf.org/archive/id/draft-richardson-lamps-
903                   rfc7030-csrattrs-04.txt>.

905        [I-D.richardson-t2trg-idevid-considerations]
906                   Richardson, M., "A Taxonomy of operational security
907                   considerations for manufacturer installed keys and Trust
908                   Anchors", Work in Progress, Internet-Draft, draft-
909                   richardson-t2trg-idevid-considerations-09, 6 November
910                   2022, <https://www.ietf.org/archive/id/draft-richardson-
911                   t2trg-idevid-considerations-09.txt>.

913        [IEEE802.1AR]
914                   IEEE Standard, "IEEE 802.1AR Secure Device Identifier",
915                   2018, <http://standards.ieee.org/findstds/
916                   standard/802.1AR-2018.html>.

918        [RFC1918]  Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G.
919                   J., and E. Lear, "Address Allocation for Private
920                   Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918,
921                   February 1996, <https://www.rfc-editor.org/info/rfc1918>.

923        [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
924                   DOI 10.17487/RFC3688, January 2004,
925                   <https://www.rfc-editor.org/info/rfc3688>.

927        [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
928                   the Network Configuration Protocol (NETCONF)", RFC 6020,
929                   DOI 10.17487/RFC6020, October 2010,
930                   <https://www.rfc-editor.org/info/rfc6020>.

932        [RFC6125]  Saint-Andre, P. and J. Hodges, "Representation and
933                   Verification of Domain-Based Application Service Identity
934                   within Internet Public Key Infrastructure Using X.509
935                   (PKIX) Certificates in the Context of Transport Layer
936                   Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March
937                   2011, <https://www.rfc-editor.org/info/rfc6125>.

939        [RFC7030]  Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed.,
940                   "Enrollment over Secure Transport", RFC 7030,
941                   DOI 10.17487/RFC7030, October 2013,
942                   <https://www.rfc-editor.org/info/rfc7030>.

944        [RFC7250]  Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J.,
945                   Weiler, S., and T. Kivinen, "Using Raw Public Keys in
946                   Transport Layer Security (TLS) and Datagram Transport
947                   Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250,
948                   June 2014, <https://www.rfc-editor.org/info/rfc7250>.

950        [RFC8572]  Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero
951                   Touch Provisioning (SZTP)", RFC 8572,
952                   DOI 10.17487/RFC8572, April 2019,
953                   <https://www.rfc-editor.org/info/rfc8572>.

955        [RFC8908]  Pauly, T., Ed. and D. Thakore, Ed., "Captive Portal API",
956                   RFC 8908, DOI 10.17487/RFC8908, September 2020,
957                   <https://www.rfc-editor.org/info/rfc8908>.

959        [RFC8910]  Kumari, W. and E. Kline, "Captive-Portal Identification in
960                   DHCP and Router Advertisements (RAs)", RFC 8910,
961                   DOI 10.17487/RFC8910, September 2020,
962                   <https://www.rfc-editor.org/info/rfc8910>.

964        [RFC8952]  Larose, K., Dolson, D., and H. Liu, "Captive Portal
965                   Architecture", RFC 8952, DOI 10.17487/RFC8952, November
966                   2020, <https://www.rfc-editor.org/info/rfc8952>.

968     Authors' Addresses

970        Owen Friel
971        Cisco
972        Email: [email protected]

974        Rifaat Shekh-Yusef
975        Auth0
976        Email: [email protected]

978        Michael Richardson
979        Sandelman Software Works
980        Email: [email protected]








_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima

Reply via email to