Skip to main content

Bootstrapping Remote Secure Key Infrastructure (BRSKI)
draft-ietf-anima-bootstrapping-keyinfra-45

Revision differences

Document history

Date Rev. By Action
2021-05-07
45 (System) RFC Editor state changed to AUTH48-DONE from AUTH48
2021-04-12
45 (System) RFC Editor state changed to AUTH48
2021-03-29
45 Francesca Palombini Closed request for Telechat review by ARTART with state 'Overtaken by Events'
2021-02-22
45 (System) RFC Editor state changed to RFC-EDITOR from AUTH
2021-02-10
45 (System) RFC Editor state changed to AUTH from EDIT
2021-02-03
45 Suhas Nandakumar Assignment of request for Telechat review by ARTART to Eliot Lear was marked no-response
2020-11-11
45 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-45.txt
2020-11-11
45 (System) Forced post of submission
2020-11-11
45 (System) Request for posting confirmation emailed to previous authors: Michael Richardson , Toerless Eckert , Max Pritikin , Kent Watsen , Michael Behringer
2020-11-11
45 Michael Richardson Uploaded new revision
2020-11-02
44 (System) RFC Editor state changed to EDIT from MISSREF
2020-09-21
44 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-44.txt
2020-09-21
44 (System) New version approved
2020-09-21
44 (System) Request for posting confirmation emailed to previous authors: Max Pritikin , Michael Richardson , Kent Watsen , Toerless Eckert , Michael Behringer
2020-09-21
44 Michael Richardson Uploaded new revision
2020-09-21
44 (System) Request for posting confirmation emailed to previous authors: Toerless Eckert , Kent Watsen , Michael Behringer , Max Pritikin , Michael Richardson
2020-09-21
44 Michael Richardson Uploaded new revision
2020-09-21
44 Michael Richardson Uploaded new revision
2020-08-07
43 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-43.txt
2020-08-07
43 (System) New version approved
2020-08-07
43 (System) Request for posting confirmation emailed to previous authors: Toerless Eckert , Kent Watsen , Max Pritikin , Michael Richardson , Michael Behringer
2020-08-07
43 Michael Richardson Uploaded new revision
2020-08-07
43 Michael Richardson Uploaded new revision
2020-08-04
42 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-42.txt
2020-08-04
42 (System) New version approved
2020-08-04
42 (System) Request for posting confirmation emailed to previous authors: Max Pritikin , Michael Richardson , Toerless Eckert , Michael Behringer , Kent Watsen
2020-08-04
42 Michael Richardson Uploaded new revision
2020-08-04
42 Michael Richardson Uploaded new revision
2020-07-10
41 Warren Kumari RFC Editor Note was changed
2020-07-10
41 Warren Kumari RFC Editor Note for ballot was generated
2020-07-10
41 Warren Kumari RFC Editor Note for ballot was generated
2020-07-10
41 Warren Kumari RFC Editor Note for ballot was generated
2020-04-30
41 (System) IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor
2020-04-30
41 (System) IANA Action state changed to Waiting on RFC Editor from In Progress
2020-04-30
41 (System) IANA Action state changed to In Progress from Waiting on Authors
2020-04-29
41 (System) IANA Action state changed to Waiting on Authors from In Progress
2020-04-29
41 (System) IANA Action state changed to In Progress from Waiting on ADs
2020-04-29
41 (System) IANA Action state changed to Waiting on ADs from On Hold
2020-04-16
41 (System) IANA Action state changed to On Hold from In Progress
2020-04-16
41 (System) IANA Action state changed to In Progress from Waiting on ADs
2020-04-14
41 (System) IANA Action state changed to Waiting on ADs from In Progress
2020-04-09
41 (System) RFC Editor state changed to MISSREF
2020-04-09
41 (System) IESG state changed to RFC Ed Queue from Approved-announcement sent
2020-04-09
41 (System) Announcement was received by RFC Editor
2020-04-09
41 (System) IANA Action state changed to In Progress
2020-04-09
41 Cindy Morgan IESG state changed to Approved-announcement sent from IESG Evaluation::AD Followup
2020-04-09
41 Cindy Morgan IESG has approved the document
2020-04-09
41 Cindy Morgan Closed "Approve" ballot
2020-04-09
41 Cindy Morgan Ballot approval text was generated
2020-04-08
41 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-41.txt
2020-04-08
41 (System) New version approved
2020-04-08
41 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Toerless Eckert , Kent Watsen , Michael Richardson
2020-04-08
41 Michael Richardson Uploaded new revision
2020-04-02
40 Benjamin Kaduk
[Ballot comment]
Thanks for putting in all the work to get this over the finish line!
I did a final read-through before entering my YES, …
[Ballot comment]
Thanks for putting in all the work to get this over the finish line!
I did a final read-through before entering my YES, which produced some
non-blocking comments.

Section 5.1

  The signatures in the certificate MUST be validated even if a signing

nit: just "signature" singular?

Section 5.2

  assertion:  The pledge indicates support for the mechanism described
      in this document, by putting the value "proximity" in the voucher-
      request, and MUST include the "proximity-registrar-cert" field
      (below).

Sorry if I asked this already, but is the "MUST include" only when the
"proximity" assertion is used?  The current text could be read that it
applies always.

Section 5.4

It's too bad we can't mention SCRAM in addition to Basic and Digest, but I
guess that ship has sailed.

Section 5.5

  The voucher media type "application/voucher-cms+json" is defined in
  [RFC8366] and is also used for the registrar voucher-request.  It is
  a JSON document that has been signed using a CMS structure.  The
  registrar MUST sign the registrar voucher-request.
  [...]
  [...]
  [...]
  MASA impementations SHOULD anticipate future media types but of
  course will simply fail the request if those types are not yet known.

I think these two paragraphs were originally next to each other but with the
large amount of intervening text it seems like the transition could be
improved.

Section 5.5.2

  A certificate chain is extracted from the Registrar's signed CMS
  container.  This chain may be as short as a single End-Entity

(I guess technically the CMS structure is an unordered set of certificates,
not a chain, but we're using it as a chain so I don't mind this usage.)

  The MASA MAY use the highest certificate from the certificate chain
  that it received from the Registrar, as determined by MASA policy.  A

"highest certificate" is not a particularly common usage; "farthest in the
chain from the end entity" might be more conventional.

Section 5.5.3

  As described in Section 5.5.2, the MASA has extracted Registrar's
  domain CA.  This is used to validate the CMS signature ([RFC5652]) on
  the voucher-request.

  Normal PKIX revocation checking is assumed during voucher-request
  signature validation.  This CA certificate MAY have Certificate
  Revocation List distribution points, or Online Certificate Status
  Protocol (OCSP) information ([RFC6960]).  If they are present, the

We could maybe wordsmith this a bit to only cover the case when the
pinned-domain-cert is a CA cert (vs. end entity).

Section 5.5.4

This section mentions that checking for the presence of id-kp-cmcRA in the
registrar's cert protects the domain in some cases, but that protection is
probably weakend in cases when the pinned-domain-cert is not the domain's
root CA.  That said, the failure mode is not catastrophic, since the
registrar still has to authenticate to the MASA somehow, and the MASA logic
can account for the different cases.

Section 5.6

  correct registrar, the pledge MUST NOT follow more than one
  redirection (3xx code) to another web origins.  EST supports

s/web origins/web origin/

Section 5.6.1

missing close parenthesis for "(according to local policy[...]"

Section 5.8.2

  The domainID is determined from the certificate chain associated with
  the pinned-domain-cert and is used to update the audit-log.

Is it determined from the "chain associated with" or just the
"pinned-domain-cert" itself?

Section 7.1

  Join Proxy:  Provides proxy functionalities but is not involved in
      security considerations.

The Join Proxy is not involved in crypto, as noted here, but could drop or
delay traffic.

Section 7.3

      X.509 IDevID factory installed credential.  New Entities without
      an X.509 IDevID credential MAY form the Section 5.2 request using
      the Section 5.5 format to ensure the pledge's serial number
      information is provided to the registrar (this includes the
      IDevID AuthorityKeyIdentifier value, which would be statically
      configured on the pledge.)  The pledge MAY refuse to provide a

It's not entirely clear to me why "(this includes the IDevID
AuthorityKeyIdentifier value" holds (it's not in the idevid-issuer, I
think), but if it's clear to others that's fine.

Section 9.1.1

  full sales channel integration where Domain Owners need to be
  positively identified by TLS Client Certicate pinned, or HTTP

I'm not sure if this was intended to be "by a pinned TLS Client Certificate" or
"by the pinned-domain-cert".

Section 10.3

It looks like the second paragraph may be an editing remnant (copy of text
being modified in the first paragraph).

Section 11.6.2.1

I guess the vouchers created by an attacker with access to the MASA signing
key would not necessarily be in the audit log, which is probably worth
mentioning.

Appendix B

  Discovery of registrar MAY also be performed with DNS-based service
  discovery by searching for the service "_brski-
  registrar._tcp.".  In this case the domain "example.com" is
  discovered as described in [RFC6763] section 11 (Appendix A.2
  suggests the use of DHCP parameters).

Is there a mismatch between "" and "example.com"?
2020-04-02
40 Benjamin Kaduk [Ballot Position Update] Position for Benjamin Kaduk has been changed to Yes from Discuss
2020-04-02
40 Warren Kumari [Ballot Position Update] Position for Warren Kumari has been changed to Yes from No Objection
2020-04-02
40 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-40.txt
2020-04-02
40 (System) New version approved
2020-04-02
40 (System) Request for posting confirmation emailed to previous authors: Michael Richardson , Max Pritikin , Toerless Eckert , Kent Watsen , Michael Behringer
2020-04-02
40 Michael Richardson Uploaded new revision
2020-04-02
40 Michael Richardson Uploaded new revision
2020-03-30
39 Benjamin Kaduk
[Ballot discuss]
Thanks for the updates leading to the -39; I believe we're almost there!

Unfortunately, it seems that the "pinned-domain-cert" in the issued voucher …
[Ballot discuss]
Thanks for the updates leading to the -39; I believe we're almost there!

Unfortunately, it seems that the "pinned-domain-cert" in the issued voucher
is the registrar's cert, not the CA cert.  (Given that the documented workflow is
to extract this CA cert from the registrar-voucher-request CMS object, and the
registrar-voucher-request in our examples does include both the registrar cert
and the CA cert, I wonder if this reflects a bug in the code itself used to generate
the examples, in that it picks the wrong cert?)  My understanding is that the
protocol requires this field to be populated by a CA cert, and the registrar's
cert is not a CA cert.

I am very hopeful that we can just regenerate the voucher without having to
redo the rest of the examples, since we have all the keys and certificate enshrined
in the document already, and my apologies for not noticing whether this issue was
present in previous revisions as well.
2020-03-30
39 Benjamin Kaduk
[Ballot comment]
I would make this a Discuss point but I think I already had my chance at the text and
missed it: Section C.1.5 …
[Ballot comment]
I would make this a Discuss point but I think I already had my chance at the text and
missed it: Section C.1.5 says that "The public key is used by the registrar to find the MASA",
but it's really the certificate (via the "MASA URL" extension) and not the public key that
is so used.

I would suggest noting in C.2 that the asn1parse output is truncated at $number
columns, and specifically calling out that this makes it hard to differentiate between
organizationally related name components, specifically "highway-test.example.com CA"
and "highway-test.example.com MASA".  (The full asn1parse output from the live openssl
CLI is much clearer about the distinction.)
2020-03-30
39 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2020-03-27
39 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-39.txt
2020-03-27
39 (System) New version approved
2020-03-27
39 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Kent Watsen , Toerless Eckert , Max Pritikin , Michael Richardson
2020-03-27
39 Michael Richardson Uploaded new revision
2020-03-27
39 Michael Richardson Uploaded new revision
2020-03-11
38 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-38.txt
2020-03-11
38 (System) New version approved
2020-03-11
38 (System) Request for posting confirmation emailed to previous authors: Max Pritikin , Toerless Eckert , Michael Richardson , Michael Behringer , Kent Watsen
2020-03-11
38 Michael Richardson Uploaded new revision
2020-03-11
38 Michael Richardson Uploaded new revision
2020-02-26
37 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-37.txt
2020-02-26
37 (System) New version approved
2020-02-26
37 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Toerless Eckert , Michael Richardson , Kent Watsen , Max Pritikin
2020-02-26
37 Michael Richardson Uploaded new revision
2020-02-26
37 Michael Richardson Uploaded new revision
2020-02-26
36 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-36.txt
2020-02-26
36 (System) New version approved
2020-02-26
36 (System) Request for posting confirmation emailed to previous authors: Michael Richardson , Max Pritikin , Michael Behringer , Toerless Eckert , Kent Watsen
2020-02-26
36 Michael Richardson Uploaded new revision
2020-02-26
36 Michael Richardson Uploaded new revision
2020-02-24
35 Benjamin Kaduk
[Ballot discuss]
Thanks for the updated examples using the allocated MASA URL extension OID!

Unfortunately, I think there are still some inconsistencies in the examples …
[Ballot discuss]
Thanks for the updated examples using the allocated MASA URL extension OID!

Unfortunately, I think there are still some inconsistencies in the examples to resolve:

The MASA cert/key is identical to the "manufacturer key pair for IDevID
signatures" (C.1.1 and C.1.2).  (It shows the MASA Subject CN, so maybe
just the included file was typo'd?)  The example IDevID cert shows an
issuer name that doesn't match the cert given.
(Also the MASA cert doesn't have a randomized serial number but the
registrar one does.)

The registrar-to-MASA voucher request in C.2.2 seems to have a CMS
SignedData with the SignerIdentifier identifying the "Unstrung Fountain
Root" (i.e,. the root CA used for these examples) instead of the
expected "fountain-test.example.com".  Am I misreading the ASN.1 dump?
(We do seem to send both certificates.)

The voucher response from MASA to Registrar seems to be signed by the
"highway-test.example.com CA" (which would be the "manufacturer key pair
for IDevID signatures" that we don't have in the -35 since the MASA
certificate is repeated), not the MASA's cert from C.1.1.
2020-02-24
35 Benjamin Kaduk [Ballot comment]
[trimming presumably stale comments]
2020-02-24
35 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2020-02-05
35 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-35.txt
2020-02-05
35 (System) New version approved
2020-02-05
35 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2020-02-05
35 Michael Richardson Uploaded new revision
2020-02-05
35 Michael Richardson Uploaded new revision
2020-01-27
34 Alissa Cooper Shepherding AD changed to Warren "Ace" Kumari
2020-01-24
34 Alissa Cooper
[Ballot comment]
Thanks for addressing Tom Petch's comments about the YANG.

Original COMMENT below.

------

I think this document would benefit from two concise lists, …
[Ballot comment]
Thanks for addressing Tom Petch's comments about the YANG.

Original COMMENT below.

------

I think this document would benefit from two concise lists, with notes about which items in each list are defined in this document and which ones are not defined: (1) what is operationally required of a manufacturer to support BRSKI, and (2) what is operationally required of a domain owner to support BRSKI.

= Section 2.3.1 =

What precisely is meant by "TPM identification"? Could a citation be provided?

= Section 10.1 =

"The domain can maintain some privacy since it has not necessarily been
  authenticated and is not authoritatively bound to the supply chain."

What does this mean? That the domain can expect the manufacturer not to trust the domainID because it hasn't been authenticated?

= Section 10.2 =

"The above situation is to be distinguished from a residential/
  individual person who registers a device from a manufacturer: that an
  enterprise/ISP purchases routing products is hardly worth mentioning.
  Deviations would, however, be notable."

What does the last sentence mean?
2020-01-24
34 Alissa Cooper [Ballot Position Update] Position for Alissa Cooper has been changed to No Objection from Discuss
2020-01-03
34 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-34.txt
2020-01-03
34 (System) New version approved
2020-01-03
34 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2020-01-03
34 Michael Richardson Uploaded new revision
2020-01-03
34 Michael Richardson Uploaded new revision
2020-01-03
33 Benjamin Kaduk
[Ballot discuss]
I think we're down to just:

Email exchange with mcr notes:
>    > An RFC Editor note about the RFC 8366 assignment …
[Ballot discuss]
I think we're down to just:

Email exchange with mcr notes:
>    > An RFC Editor note about the RFC 8366 assignment of OID
>    > 1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
>    > properly use that assigned OID now?
>
> We got a MASA URL Extension OID for:
>    1.3.6.1.5.5.7.1.32
>
> the examples date from before that, and do not use it yet.

We need to fix the examples before publication.
2020-01-03
33 Benjamin Kaduk
[Ballot comment]
[COMMENT unchanged from -31 and probably all stale]

A few new comments on the -30 and -31 to start.  I think some of …
[Ballot comment]
[COMMENT unchanged from -31 and probably all stale]

A few new comments on the -30 and -31 to start.  I think some of my comments
on the -29 are still valid, and will try to remove ones that have been addressed.
To reiterate: to the best of my knowledge, all the comments in this ballot position
are actionable and have not been overtaken by events.

In Section 5.9.4:

  In the case of a FAIL, the same TLS connection MUST be used.  The
  Reason string indicates why the most recent enrollment failed.

I'd suggest something more like "In the case of a failed enrollment, the
client MUST send the telemetry information over the same TLS connection
that was used for the enrollment attempt, with a Reason string indicating
why the most recent enrollment failed.  (For failed attempts, the TLS
connection is the most reliable way to correlate server-side information
with what the client provides.)"
(Also, why is "FAIL" capitalized?)

Thanks for the text in Section 11.2 about second-preimage-resistance of
DomainID calculation; the grammar needs a tweak or two, though.  My
suggestion would be to either drop "The consequences of" or add "be to" to
make "would be to allow" (but not both).

Section 11.3 has gone back to just "Devices which are reset to factory default
in order to perform a second bootstrap with a new owner MUST NOT use idential
seeds", but I think it's important to be clear about what the scope of uniqueness is.
The text in Section 5.2 is pretty good in this regard, with respect to the nonces
(which are generally derived from the seed); I wonder if we might want to
restructure this text to be more like "The random seed used by a device at boot
MUST be unique across all devices and all bootstraps.  Resetting a device to
factory default state does not obviate this requirement."  (FWIW, I think the
text in the -29 was that way because of my request.)

[A few comments on the -29, some of which I think might be repeats of
ones I made on a WIP interim draft; sorry if I say something again that was
already debunked.  The comment section from the -28 is preserved later.]

In Section 3.3, we now cite RFC 4648; I note that RFC 4648 specifies both
base64 and base64url, so a section reference is usually appropriate (and
in Section 5 we do give a section reference into RFC 4648).

Section 9.1

  Other use cases likely have similar, but MAY different requirements.

nit: ", but MAY have different, requirements"

Section 9.1.1

  Authentication process.  The MASA creates signed voucher artifacts
  according to a it's internally defined policies.

nit: s/a it's/its/

Section 9.1.3

(Do we need to say "DULL" specifically again here for Join Proxy discovery?
Maybe not...)

[All new comments for the -28]

Please respond to the secdir re-review.

Section 2.6.1

  A pledge with a real time clock in which it has confidence in, MUST
  check the above time fields in all certificates and signatures that
  it processes.

nit: s/in// from "in which it has confidence in" (your
choice which one).


Section 4

  This section applies is normative for uses with an ANIMA ACP.  The

nit: pick one of "applies to" or "is normative for".

  [...] The use of
  GRASP mechanism part of the ACP.  Other users of BRSKI will need

nit: missing "is", "the"


Section 5.7

  The Status field indicates if the voucher was acceptable.  Boolean
  values are acceptable.

nit: I suggest """acceptable, as a boolean, where "true" indicates the
voucher was acceptable""".

Section 10.6

  Section Section 7.4.3 describes some ways in which a manufacturer

nit: duplicate "Section".

Section 10.7

  existing products.  Said products might be previous deployed and need
  to be re-initialized, purchased used, or just kept in a warehouse as
  long-term spares.

nit: s/previous deployed and need/previously deployed that need/

Section 11.2

  In particular implementations should pay attention to the advance in
  [RFC4086] section 3, particulary section 3.4.  Devices which are
  reset to factory default in order to perform a second bootstrap with
  a new owner MUST NOT seed their random number generators in the same
  way.

nit: s/same way/same way across bootstraps/

Section 11.3

We had some discussion around my previous comment:

%    Additionally, in order to successfully use the resulting voucher the
%    Rm would have to attack the pledge and return it to a bootstrapping
%    enabled state.  This would require wiping the pledge of current
%
% ... and I think there is a different attack if the Rm is in a position
% to delay or drop network traffic between the  pledge and the intended
% registrar, to cause Rm's voucher to be delivered first even though it is
% generated after the intended registrar's authorization process.  The
% intended registrar would need to require reports on voucher processing
% status (or investigate their absence) in order to detect such a case.

but I can't remember if we decided that we didn't need to discuss the
risk in the document.
[ed. I also can't remember if we had discussion about this comment]

=======================================================================

I trimmed all the "Additional comments since posted ballot position on -28"
that were in my previous ballot position, as they are likely stale by now.
2020-01-03
33 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2020-01-03
33 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-33.txt
2020-01-03
33 (System) New version approved
2020-01-03
33 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2020-01-03
33 Michael Richardson Uploaded new revision
2020-01-03
33 Michael Richardson Uploaded new revision
2019-12-31
32 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-32.txt
2019-12-31
32 (System) New version approved
2019-12-31
32 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-12-31
32 Michael Richardson Uploaded new revision
2019-12-31
32 Michael Richardson Uploaded new revision
2019-12-20
31 Benjamin Kaduk
[Ballot discuss]
Thanks for providing a clear specification of the /enrollstatus EST endpoint
in the -30.  The following two points still seem unaddressed, though.

The …
[Ballot discuss]
Thanks for providing a clear specification of the /enrollstatus EST endpoint
in the -30.  The following two points still seem unaddressed, though.

The -29 reworks the definition of the 'nonce' field to be:

      strong random or pseudo-random number nonce (see [RFC4086] section
      6.2).  As the nonce is usually generated very early in the boot
      sequence there is a concern that the same nonce might generated
      across multiple boots, or after a factory reset.  Difference
      nonces MUST NOT generated for each bootstrapping attempt, whether
      in series or concurrently.  The freshness of this nonce mitigates
      against the lack of real-time clock as explained in Section 2.6.1.

This needs to either be "Different nonces MUST be generated" or
"the same nonce MUST NOT be reused"; this mashup is no good.

Email exchange with mcr notes:
>    > An RFC Editor note about the RFC 8366 assignment of OID
>    > 1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
>    > properly use that assigned OID now?
>
> We got a MASA URL Extension OID for:
>    1.3.6.1.5.5.7.1.32
>
> the examples date from before that, and do not use it yet.

We need to fix the examples before publication.
2019-12-20
31 Benjamin Kaduk
[Ballot comment]
A few new comments on the -30 and -31 to start.  I think some of my comments
on the -29 are still valid, …
[Ballot comment]
A few new comments on the -30 and -31 to start.  I think some of my comments
on the -29 are still valid, and will try to remove ones that have been addressed.
To reiterate: to the best of my knowledge, all the comments in this ballot position
are actionable and have not been overtaken by events.

In Section 5.9.4:

  In the case of a FAIL, the same TLS connection MUST be used.  The
  Reason string indicates why the most recent enrollment failed.

I'd suggest something more like "In the case of a failed enrollment, the
client MUST send the telemetry information over the same TLS connection
that was used for the enrollment attempt, with a Reason string indicating
why the most recent enrollment failed.  (For failed attempts, the TLS
connection is the most reliable way to correlate server-side information
with what the client provides.)"
(Also, why is "FAIL" capitalized?)

Thanks for the text in Section 11.2 about second-preimage-resistance of
DomainID calculation; the grammar needs a tweak or two, though.  My
suggestion would be to either drop "The consequences of" or add "be to" to
make "would be to allow" (but not both).

Section 11.3 has gone back to just "Devices which are reset to factory default
in order to perform a second bootstrap with a new owner MUST NOT use idential
seeds", but I think it's important to be clear about what the scope of uniqueness is.
The text in Section 5.2 is pretty good in this regard, with respect to the nonces
(which are generally derived from the seed); I wonder if we might want to
restructure this text to be more like "The random seed used by a device at boot
MUST be unique across all devices and all bootstraps.  Resetting a device to
factory default state does not obviate this requirement."  (FWIW, I think the
text in the -29 was that way because of my request.)

[A few comments on the -29, some of which I think might be repeats of
ones I made on a WIP interim draft; sorry if I say something again that was
already debunked.  The comment section from the -28 is preserved later.]

In Section 3.3, we now cite RFC 4648; I note that RFC 4648 specifies both
base64 and base64url, so a section reference is usually appropriate (and
in Section 5 we do give a section reference into RFC 4648).

Section 9.1

  Other use cases likely have similar, but MAY different requirements.

nit: ", but MAY have different, requirements"

Section 9.1.1

  Authentication process.  The MASA creates signed voucher artifacts
  according to a it's internally defined policies.

nit: s/a it's/its/

Section 9.1.3

(Do we need to say "DULL" specifically again here for Join Proxy discovery?
Maybe not...)

[All new comments for the -28]

Please respond to the secdir re-review.

Section 2.6.1

  A pledge with a real time clock in which it has confidence in, MUST
  check the above time fields in all certificates and signatures that
  it processes.

nit: s/in// from "in which it has confidence in" (your
choice which one).


Section 4

  This section applies is normative for uses with an ANIMA ACP.  The

nit: pick one of "applies to" or "is normative for".

  [...] The use of
  GRASP mechanism part of the ACP.  Other users of BRSKI will need

nit: missing "is", "the"


Section 5.7

  The Status field indicates if the voucher was acceptable.  Boolean
  values are acceptable.

nit: I suggest """acceptable, as a boolean, where "true" indicates the
voucher was acceptable""".

Section 10.6

  Section Section 7.4.3 describes some ways in which a manufacturer

nit: duplicate "Section".

Section 10.7

  existing products.  Said products might be previous deployed and need
  to be re-initialized, purchased used, or just kept in a warehouse as
  long-term spares.

nit: s/previous deployed and need/previously deployed that need/

Section 11.2

  In particular implementations should pay attention to the advance in
  [RFC4086] section 3, particulary section 3.4.  Devices which are
  reset to factory default in order to perform a second bootstrap with
  a new owner MUST NOT seed their random number generators in the same
  way.

nit: s/same way/same way across bootstraps/

Section 11.3

We had some discussion around my previous comment:

%    Additionally, in order to successfully use the resulting voucher the
%    Rm would have to attack the pledge and return it to a bootstrapping
%    enabled state.  This would require wiping the pledge of current
%
% ... and I think there is a different attack if the Rm is in a position
% to delay or drop network traffic between the  pledge and the intended
% registrar, to cause Rm's voucher to be delivered first even though it is
% generated after the intended registrar's authorization process.  The
% intended registrar would need to require reports on voucher processing
% status (or investigate their absence) in order to detect such a case.

but I can't remember if we decided that we didn't need to discuss the
risk in the document.
[ed. I also can't remember if we had discussion about this comment]

=======================================================================

I trimmed all the "Additional comments since posted ballot position on -28"
that were in my previous ballot position, as they are likely stale by now.
2019-12-20
31 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2019-12-16
31 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-31.txt
2019-12-16
31 (System) New version approved
2019-12-16
31 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-12-16
31 Michael Richardson Uploaded new revision
2019-12-16
31 Michael Richardson Uploaded new revision
2019-11-18
30 Sheng Jiang Added to session: IETF-106: anima  Wed-1520
2019-11-17
30 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-30.txt
2019-11-17
30 (System) New version approved
2019-11-17
30 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-11-17
30 Michael Richardson Uploaded new revision
2019-11-17
30 Michael Richardson Uploaded new revision
2019-11-05
29 Roman Danyliw
[Ballot comment]
Thank you for addressing my previous DISCUSS and COMMENTS.

I remain concerned that the current text continues to only normatively specify the behavior …
[Ballot comment]
Thank you for addressing my previous DISCUSS and COMMENTS.

I remain concerned that the current text continues to only normatively specify the behavior in the first part of the lifecycle that BRSKI-enabled equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  I appreciate that this scope is the consensus of the WG.  Therefore, thank you for all of the efforts made in recent version of the draft to more substantively document (if not fully specify) these later lifecycle activities. 

** Abstract.  Per “Support for lower security models, including devices with minimal identity, is described for legacy reasons but not encouraged.”, the rational for the lower security models as described in Section 7 do not appear to be “legacy”.

** Section 1.5  Per “Upon successfully validating a voucher artifact, a status telemetry MUST be returned.  See Section 5.7.”  Is a “voucher artifact” the same as a “voucher”?

** Section 5.9.4. Per “In the case of a SUCCESS the Reason string is omitted.  The SubjectKeyIdentifier is included so that the server can record the successful certificate distribution.”.  Given the single example in Figure 18, it isn’t clear how to represent the SubjectKeyIdentifier in JSON.

** Section 10.3.  Per “[t]he so-called "call-home" mechanism that occurs as part of the BRSKI-MASA connection standardizes what has been deemed by some as a sinister mechanism for corporate oversight of individuals. ([livingwithIoT] and [IoTstrangeThings] for a small sample).”

-- Thanks for including this text about the “call-home” mechanism.  However the references don’t seem like a fit.  Both references appear to focus on the regular “call home” activity of these device rather than the narrow, on-time one-time onboarding process.  The nature of the “call-home” isn’t just about privacy (as these articles imply), but also lock-in.

-- It isn't appropriate to characterize concerns about the BRISKI-MASA link as “sinister mechanisms ...”.

** Section 10.7.  Per “It is anticipated that specialist service providers will come to exist that deal with the creation of vouchers in much the same way that many companies have outsourced email, advertising and janitorial services.”, I don’t think this is a fair analogy.  Delegating the voucher process to an entity would take active cooperation of the manufacturer.  If the manufacture is out of business, there is not guarantee this would have been put in place (or those assets were acquired in the liquidation)

** Section 11.5.2.2 prescribes that the operator of a MASA “MUST issue a firmware update to all devices that had that key as a trust anchor”.  This suggests a required capability to update trust anchors.  However, Section 7.4.3 discusses a similar (albeit more flexible) practice but this is non-normative and deemed reduced security.  Why the dissidence?

** Please respond to Christian Huitema’s new SECDIR review items (thank you again, Christian!) on clarifying the TLS version negotiation and certificates for MASA authentication.

** Editorial Nits:

Section 3.4.  Typo. s/occurence/occurrence/

Section 4.  These sentences didn’t parse for me – “This section applies is normative for uses with an ANIMA ACP.  The use of GRASP mechanism part of the ACP.”

Section 4.  Reference expansion issue?.  s/{{RFC8446}}/[RFC8446]/

Section 5.1.  Typo.  s/progess/progress/

Section 5.2.  Editorial. Per “The media type is the same as defined in [RFC8366].  and is also …”, the start of the second sentence shouldn’t be “and is …”

Section 5.2. Editorial.  s/then there a On-Path Attacker (MITM)/then there is an On-Path Attacker (MITM)/

Section 4.1.  Recommend clarity on the non-normative behavior.  s/While the GRASP M_FLOOD mechanism is passive for the pledge, the optional other methods (mDNS, and IPv4 methods) are active./While the GRASP M_FLOOD mechanism is passive for the pledge, the non-normative, optional methods (mDNS, and IPv4 methods) described in Appendix A are active./

Section 5.7.  Editorial
s/The client HTTP POSTs the following to the server at the URI ".well-known URI "/voucher_status"./
The client sends an HTTP POSTs to the server at the URI ".well-known URI "/voucher_status".

Section 7.2.  Typo.  s/dependant/dependent/

Section 7.4.1. Typo.  s/A MASA has the option of not including a nonce is in the voucher/A MASA has the option of not including a nonce in the voucher/

Section 7.4.2.  Typo.  s/ nuissance/nuisance/

Section 7.4.3.  Typo. s/overwitten/overwritten/

Section 7.4.3.  Typo.  s/responsability/responsibility/

Section 10.2.  Duplicate word. s/the the/the/

Section 10.2. Typo. s/ arbitrary/ arbitrary/

Section 10.2 Typo. s/coorelate/correlate/

Section 10.3.  Typo. s/the the/the/

Section 10.4.  Typo. s/absense/absence/

Section 10.6.  Typo. s/gratuitiously/gratuitously/

Section 10.6.  Duplicate Word. s/Section Section/Section/

Section 10.6.  Duplicate Word. s/an an/an/

Section 11.2. Typo. s/particulary/particularly/

Section 11.3.  Typo.  s/occurence/occurrence/

Section 11.5.  Typo. s/proceedures/procedures/

Section 11.5. Sometime is amiss with reference expansions – s/{{cabforumaudit}}/[CABFORUMAUDIT]/ and s/{{dnssecroot}}/[DNSSECROOT]/

Section 11.5.2.1.  Typo. s/opportunies/opportunities/

==[ summary of old DISCUSS ]==
(1) Section 5.7.  The format of a pledge status telemetry message seems underspecified.

(2) Section 5.8.1.  The format of the MASA audit log seems underspecified.  Is the JSON snippet presented here normative to describe the MASA audit log response?

(3) Why is Section 7.x in this document if it explains how to use BRSKI but is considered non-normative?

(4) Thank you for documenting “manufacturer control issues” in Sections 10.3 and 10.4.  It helpfully lays justifies the current design approach.  I strongly concur with the premise that “facilitate[ing] a few new operat[i]onal modes without making any changes to the BRSKI protocol” is exactly what is needed. 

My concern is that even with the current applicability statement in Section 9, the current text appears to have only standardized the first part of the lifecycle that BRSKI equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  The text doesn’t appear to cover the practical aspects of the proposed mitigations in Section 10.5 or the situations described in Section 10.3/10.4 – various situations possible in the full lifecycle usage of a BRSKI device and needed support the “additional operational modes”.  Specifically:

** There appears to be little discussion on how owners/manufacturers/vendors can facilitate second sale/used equipment beyond narrative words (in Section 10.3 and 10.4)

** There is appears to be little discussion on how to practically implement a MASA (i.e., the offline use case).  For example, (Per Section 10.5) “A manufacturer could provide a mechanism to manage the trust anchors and built-in certificates (IDevID) as an extension.  This is a substantial amount of work, and may be an area for future standardization work”.  Without the ability to change anchors on the device the additional operational modes such as offline mode seems challenging.
2019-11-05
29 Roman Danyliw [Ballot Position Update] Position for Roman Danyliw has been changed to No Objection from Discuss
2019-10-28
29 Benjamin Kaduk
[Ballot discuss]
% (5.1) the new /enrollstatus EST endpoint seems under-specified.

Shame on me, I reused (5) for two points and have renumbered this to …
[Ballot discuss]
% (5.1) the new /enrollstatus EST endpoint seems under-specified.

Shame on me, I reused (5) for two points and have renumbered this to
(5.1) so we don't miss it again.  We don't anywhere give a formal
description of the contents of the POST body; there's just an example
JSON object.

The -29 reworks the definition of the 'nonce' field to be:

      strong random or pseudo-random number nonce (see [RFC4086] section
      6.2).  As the nonce is usually generated very early in the boot
      sequence there is a concern that the same nonce might generated
      across multiple boots, or after a factory reset.  Difference
      nonces MUST NOT generated for each bootstrapping attempt, whether
      in series or concurrently.  The freshness of this nonce mitigates
      against the lack of real-time clock as explained in Section 2.6.1.

This needs to either be "Different nonces MUST be generated" or
"the same nonce MUST NOT be reused"; this mashup is no good.

Email exchange with mcr notes:
>    > An RFC Editor note about the RFC 8366 assignment of OID
>    > 1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
>    > properly use that assigned OID now?
>
> We got a MASA URL Extension OID for:
>    1.3.6.1.5.5.7.1.32
>
> the examples date from before that, and do not use it yet.

We need to fix the examples before publication.
2019-10-28
29 Benjamin Kaduk
[Ballot comment]
[A few comments on the -29, some of which I think might be repeats of
ones I made on a WIP interim draft; …
[Ballot comment]
[A few comments on the -29, some of which I think might be repeats of
ones I made on a WIP interim draft; sorry if I say something again that was
already debunked.  The comment section from the -28 is preserved later.]

Thanks for sorting the definitions; I didn't verify that the text remained
the same in the reordering

In Section 3.3, we now cite RFC 4648; I note that RFC 4648 specifies both
base64 and base64url, so a section reference is usually appropriate (and
in Section 5 we do give a section reference into RFC 4648).

s/accesptable/acceptable

figure 17 seems to no longer be an "abstract example" but rather a concrete
one.

Section 9.1

  Other use cases likely have similar, but MAY different requirements.

nit: ", but MAY have different, requirements"

Section 9.1.1

  Authentication process.  The MASA creates signed voucher artifacts
  according to a it's internally defined policies.

nit: s/a it's/its/

Section 9.1.3

(Do we need to say "DULL" specifically again here for Join Proxy discovery?
Maybe not...)

[All new comments for the -28]

Please respond to the secdir re-review.

Abstract

nit: hyphenate "manufacturer-installed"

  or on limited/disconnected networks.  Support for lower security
  models, including devices with minimal identity, is described for

nit: maybe "deployment models with less-stringent security requirements"?

Section 1

  [I-D.ietf-anima-autonomic-control-plane].  This bootstrap process
  satisfies the [RFC7575] section 3.3 of making all operations secure
  by default.  Other users of the BRSKI protocol will need to provide

nit: missing "requirement"

  between manufacturer and owner: in it's default modes it provides a
  cryptographic transfer of control to the initial owner.  In it's
  strongest modes, it leverages sales channel information to identify

nit: s/it's/its/

Section 1.2

  domainID:  The domain IDentity is a unique hash based upon the
      Registrar CA's certificate.  Section 5.8.2 specifies how it is
      calculated.

nit: the grammar here is weird; I'd suggest s/hash based upon/value
derived from/

  MASA Audit-Log:  A list of previous owners maintained by the MASA on
      a per device (per pledge) basis.  Described in Section 5.8.1.

nit: maybe "anonymized list" since the MASA doesn't really track owners
directly?

  Ownership Tracker:  An Ownership Tracker service on the global
      Internet.  The Ownership Tracker uses business processes to
      accurately track ownership of all devices shipped against domains
      that have purchased them.  Although optional, this component
      allows vendors to provide additional value in cases where their
      sales and distribution channels allow for accurately tracking of
      such ownership.  Ownership tracking information is indicated in

nit: either "accurate tracking of" or "accurately tracking"

  ANI:  The Autonomic Network Infrastructure as defined by
      [I-D.ietf-anima-reference-model].  This document details specific
      requirements for pledges, proxies and registrars when they are
      part of an ANI.

Maybe refer to section 9 specifically?

Section 2.3.1

  The serialNumber fields is defined in [RFC5280], and is a SHOULD
  field in [IDevID].  IDevID certificates for use with this protocol

nit: s/fields/field/

Section 2.5.1

  The pledge is the device that is attempting to join.  The pledge can
  talk to the Join Proxy using link-local network connectivity.  In
  most cases, the pledge has no other connectivity until the pledge
  completes the enrollment process and receives some kind of network
  credential.

I'd consider s/can talk to/is assumed to talk to/.

Section 2.5.3

  The registrar uses an Implicit Trust Anchor database for
  authenticating the BRSKI-MASA TLS connection MASA certificate.  The
  registrar uses a different Implicit Trust Anchor database for
  authenticating the BRSKI-EST TLS connection pledge client
  certificate.  Configuration or distribution of these trust anchor
  databases is out-of-scope of this specification.

  Configuration or distribution of this trust anchor databases is out-
  of-scope of this specification.  Note that the trust anchors in/
  excluded from the database will affect which manufacturers' devices
  are acceptable to the registrar as pledges, and can also be used to
  limit the set of MASAs that are trusted for enrollment.

We seem to duplicate the "out-of-scope" text at the end/start of the two
paragraphs (and the second paragraph uses the definite article "the" as
if it was only talking about one of the two trust anchor databases).

Section 2.6.1

  A pledge with a real time clock in which it has confidence in, MUST
  check the above time fields in all certificates and signatures that
  ir processes.

nits: s/ir/it/, and s/in// from "in which it has confidence in" (your
choice which one).

Section 2.6.2

  year certificate lifetimes.  Registrars SHOULD be configurable on a
  per-manufacturer basis to ignore pledge lifetimes when they did not
  follow the RFC5280 recommendations.

nit: we want "they" to be the manufacturer, not the registrar, so we
can't use this pronoun.

Section 2.7

  be more important in the future.  In the ANIMA ACP scope, new devices
  will be quarantined behind a Join Proxy.

I can't decide whether the reader would benefit from being hit with a
hammer of "and as such will only have link-local connectivity, to the
Join Proxy".  The use of "quarantined" makes me lean towards "not"...

Section 3

In my previous comment, I said:

%    The "proximity-registrar-cert" leaf is used in the pledge voucher-
%    requests.  This provides a method for the pledge to assert the
%    registrar's proximity.
%
% "proximity" in what sense?  How much verification/confidence needs to be
% done?  (Also, I would have expected the assertion to go the other way;
% that the registrar asserts the pledge's proximity -- how does the pledge
% have a way to know that the registrar is nearby when the proxy is
% transparent?)

We talked about this some, but I think we're still making an unstated
assumption that there is a link-local or pre-ACP connection involved.
Making that an explicit assumption would be helpful.

Section 3.3

  Example (2)  The following example illustrates a registrar voucher-
                request.  The 'prior-signed-voucher-request' leaf is
                populated with the pledge's voucher-request (such as the
                prior example).  The pledge's voucher-request is a
                binary CMS signed object.  In the JSON encoding used
                here it must be base64 encoded.  The nonce and assertion
                MAY be carried forward from the pledge request to the
                registrar request.  The serial-number is extracted from
                the pledge's Client Certificate from the TLS connection.
                See Section 5.5.

Since this is an example, the "MAY be carried forward" feels out of
place -- while it's true in the general case, this is not the place to
say it; we can just describe what the example does, here.

Also, we should probably give a reference for base64 (not necessarily
here), such as Section 4 of RFC 4648.

Section 4

  This section applies is normative for uses with an ANIMA ACP.  The

nit: pick one of "applies to" or "is normative for".

  use of GRASP mechanism part of the ACP.  Other users of BRSKI will

nit: missing "is"

Section 4

  Registrar itself.  In this scenario the pledge is unaware that there
  is no proxing occurring.  This is useful for Registrars which are

nit: s/proxing/proxying/

Section 4.3

  The M_FLOOD message MUST be sent periodically.  The default SHOULD be
  60 seconds, the value SHOULD be operator configurable but SHOULD be
  not smaller than 60 seconds.  The frequency of sending MUST be such

nits: "default period" (or similar); s/be not/NOT be/

Section 5

  While EST section 3.2 does not insist upon use of HTTP persistent
  connections, ([RFC7230] section 6.3) BRSKI-EST connections SHOULD use

nit: comma after parenthetical, not before.

Section 5.1

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

How painful would it be to require 1.3 at this point?  RFC 8446 has been
out for more than a year, and the TLS WG is leaning on me to tighten up
on this...

  IDevID certificate is out-of-scope of this specification.  Note that
  the trust anchors in/excluded from the database will affect which
  manufacturers' devices are acceptable to the registrar as pledges,
  and can also be used to limit the set of MASAs that are trusted for
  enrollment.

I can't tell if we want to bring the division into two distinct trust
anchor databases into this discussion as well.

  A self-signed certificate for the Registrar is acceptable as the
  voucher will validate it.

nit: "will" applies only when everything works, so maybe "can" or "will
validate it in the case of successful enrollment".

  A pledge that can connect to multiple registries concurrently SHOULD

nit: s/registries/Regitstrars/

Section 5.3

  on the authenticated identity presented.  For different networks,
  examples of Automated acceptance may include:

nit: s/A/a/

Section 5.4

  Section 2.8.  The mechanisms in [RFC6125] SHOULD be used
  authentication of the MASA.  Some vendors will establish explicit (or

nit: s/used/used for/
Also, we tend to require that people using 6125 specify what name type
in the cert to verify (e.g., DNS-ID) against what expected name.  It
would be pretty easy to convince me that we don't need to do that here,
though.

Section 5.4

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

As above, how painful would requiring 1.3 be?

  client certificate.  Registrars SHOULD also permit an HTTP Basic and
  Digest authentication to be configured.

nit: s/an//

Section 5.4.1

  be uniquely identified.  This can be done by any stateless method
  that HTTPS supports: such as with HTTP Basic or Digest authentication

nit: this colon is not appropriate usage.

  Stateful methods involving API tokens, or HTTP Cookies are not
  recommended.

nit: zero commas or two, around "or HTTP Cookies", but one is right out.

  This document does not make a specific recommendation as there is
  likely different tradeoffs in different environments and product

nit: s/is/are/

Section 5.5

  idevid-issuer:  The Issuer value from the pledge IDevID certificate
      is included to ensure a uniqueness of the serial-number.  In the
      case of nonceless (offline) voucher-request, then an appropriate
      value needs to be configured from the same out-of-band source as
      the serial-number.

nit: I suggest s/a uniqueness of/a unique interpretation of/ (but if you
don't take that, the "a" is superfluous in the current formulation).

  prior-signed-voucher-request:  The signed pledge voucher-request
      SHOULD be included in the registrar voucher-request.  The entire
      CMS signed structure is to be included, base64 encoded for
      transport in the JSON structure.

I think we need a ref for (which) base64.

  The MASA verifies that the registrar voucher-request is internally
  consistent but does not necessarily authenticate the registrar
  certificate since the registrar MAY not be known to the MASA in
  advance.  The MASA performs the actions and validation checks

I suggest s/MAY not be known/MAY be unknown/.

Section 5.5.2

  The registrar's certificate chain is extracted from the signature
  method.  The entire registrar certificate chain was included in the
  CMS structure, as specified in Section 5.5.  This CA certificate will
  be used to populate the "pinned-domain-cert" of the voucher being
  issued.

By saying "this CA certificate", are we excluding use cases where the
pinned-domain-cert is not the global root CA of the organization (or is
the implication just that you don't send the rest of the chain)?

Section 5.5.5

  voucher-request MUST include a 'proximity-registrar-cert' that is
  consistent with to the certificate used to sign the registrar

nit: s/to// (first one)

Section 5.5.6

  The MASA populates the audit-log with the nonce that was verified.
  If a nonceless voucher is issued, then the audit-log is to be
  populated with the JSON value "null".

The quotes around "null" are perhaps anti-helpful.

Section 5.6.1

  The pledge MUST verify that the voucher nonce field is accurate and
  matches the nonce the pledge submitted to this registrar, or that the
  voucher is nonceless (see Section 7.2).

In my previous Discuss position I had asked:
% Is the pledge supposed to accept a nonceless voucher in response to a
% nonce-ful voucher request?
and we had some discussion that helped clarify the intent.  I just have
a suggested rewording, that I *think* is entirely editorial and might
reduce the potential for confusion:
NEW
  The pledge MUST verify the nonce information in the voucher.  If
  present, the nonce in the voucher must match the nonce the pledge
  submitted to the registrar; vouchers with no nonce can also be
  accepted (according to local policy).

Section 5.7

  The Status field indicates if the voucher was acceptable.  Boolean
  values are acceptable.

nit: I suggest """acceptable, as a boolean, where "true" indicates the
voucher was acceptable""".

  The version, and status fields MUST be present.  The Reason field
  SHOULD be present whenever the status field is negative.  The Reason-
  Context field is optional.

nit: no comma after "version".
nit: s/negative/false/

  The keys to this JSON hash are case-insensitive.  Figure 15 shows an
  example JSON.

This (case-insensitivity) seems to be a drastic divergence from the RFC
8259
standard behavior and as such would require some justification.
nit: s/hash/object/

Section 5.8.1

It's hard to call Figure 17 an "example" when it doesn't conform to the
CDDL schema...

  The domainID is a binary value calculated SubjectKeyIdentifier
  according to Section 5.8.2.  It is encoded once in base64 in order to
  be transported in this JSON container.

nit: I suggest "binary SubjectKeyIdentifier value calculated"

Section 5.8.2

  used as the domainID.  If not, then it is the SPKI Fingerprint as
  described in [RFC7469] section 2.4 is to be used.  This value needs

nit: drop "is to be used" or "then it is".

Section 5.8.3

  A relatively simple policy is to white list known (internal or
  external) domainIDs.  To require all vouchers to have a nonce.

nit: sentence fragment.

  Alternatively to require that all nonceless vouchers be from a subset

nit: comma after "alternatively".  (Hmm, this is also a sentence
fragment.)

Section 5.9.4

  In order to communicate this indicator, the client HTTP POSTs the
  following to the server at the new EST endpoint at "/.well-known/est/
  enrollstatus".

"The following" is just more text, not a formal description of a
protocol element.

    "reason-context": "Additional information"

Is this supposed to be a string or a JSON object similar to
/voucher_status?

Section 6

  When used within BRSKI, the original RFC7030 EST endpoints remain
  Base64 encoded, but the new BRSKI end points which send and receive
  binary artifacts (specifically, /requestvoucher) are binary.  That

The other two occurrences spell this "/.well-known/est/requestvoucher".

Section 7.2

  The following are a list of alternatives behaviours that the pledge
  can be programmed to implement.  These behaviours are not mutually
  exclusive, nor are they dependant upon other.  Some of these methods

nits: singular/plural mismatch "are"/"list"; "upon each other"

Section 7.3

  A registrar can choose to accept devices using less secure methods.
  These methods are acceptable when low security models are needed, as
  the security decisions are being made by the local administrator, but
  they MUST NOT be the default behavior:

I'm having a hard time parsing "low security models"; the best I can
come up with is "threat models where low security is adequate".

Section 7.4.1

  A MASA has the option of not including a nonce is in the voucher,

nit: s/is//

  and/or not requiring one to be present in the voucher-request.  This
  results in distribution of a voucher that never expires and in effect

"expires-on" is distinct from the nonce-ful freshness check, so I think
some additional wordsmithing is in order.

  This is useful to support use cases where registrars might not be
  online during actual device deployment.

nit: there's enough intervening text that we should probably replace
"this is" with "nonceless vouchers are".

  authorized to provide this functionality to this customer.  The MASA
  is RECOMMENDED to use this functionality only in concert with an
  enhanced level of ownership tracking (out-of-scope.)

I suggest s/out-of-scope/the details of which are out of scope for this
document/.

Section 7.4.2

  functionality.  This provides a proof-of-proximity check that reduces
  the need for ownership verification.

I suggest reiterating the assumption that pledge and JP are on a
link-local connection; whether or not to reiterate that JP and registrar
have a trust relationship (with respect to not falsifying proximity
information) is less clear to me.

Section 7.4.3

We might benefit from some introductory text here to suggest that
updating/extending trust anchors would be desirable in the case of a
vanished or uncooperative manufacturer.

  This weaker factor reset might leave valuable credentials on the
  device and this may be unacceptable to some owners.

nit: s/factor/factory/

Section 9

  Provider organizations.  Equivalent enterprises that has significant
  layer-3 router connectivity also will find significant benefit,

nit: s/has/have/

  In the ACP, the Join Proxy is found to be proximal because
  communication between the pledge and the join proxy is exclusively on

nit(?) My dictionary doesn't list anything for "proximal" that is a good
match for "with proximity"; might be worth double-checking.

  asssertion is satisfied.  Other uses of BRSKI will need make similar
  analysis if they use proximity.

nit: maybe "proximity information" or "proximity assertions".

Section 10.3

  While the contents of the signed part of the pledge voucher request
  can not be changed, they are not encrypted at the registrar.  The
  ability to audit the messages by the owner of the network a mechanism
  to defend against exfiltration of data by a nefarious pledge.  Both

nit: missing verb ("is a mechanism", "provides a mechanism", etc.)

  The manufacturer knows the IP address of the Registrar, but it can
  not see the IP address of the device itself.  The manufacturer can
  not track the device to a detailed physical or network location, only
  to the the location of the Registrar itself.  That is likely to be at

nit: we probably don't need the last "itself".

  is likely on the same network as the device.  A manufacturer that
  sells switching/routing products to enterprises should hardly be
  surprised if additional purchases switching/routing products are
  purchased.  Deviations from a historical trend or an establish

nit: we probably only need one of "purchases" and "purchased".

Section 10.6

  Section Section 7.4.3 describes some ways in which a manufacturer

nit: duplicate "Section".

Section 10.7

  existing products.  Said products might be previous deployed and need
  to be re-initialized, purchased used, or just kept in a warehouse as
  long-term spares.

nit: s/previous deployed and need/previously deployed that need/

Section 11.2

  In particular implementations should pay attention to the advance in
  [RFC4086] section 3, particulary section 3.4.  Devices which are
  reset to factory default in order to perform a second bootstrap with
  a new owner MUST NOT seed their random number generators in the same
  way.

nit: s/same way/same way across bootstraps/

Section 11.3

We had some discussion around my previous comment:

%    Additionally, in order to successfully use the resulting voucher the
%    Rm would have to attack the pledge and return it to a bootstrapping
%    enabled state.  This would require wiping the pledge of current
%
% ... and I think there is a different attack if the Rm is in a position
% to delay or drop network traffic between the  pledge and the intended
% registrar, to cause Rm's voucher to be delivered first even though it is
% generated after the intended registrar's authorization process.  The
% intended registrar would need to require reports on voucher processing
% status (or investigate their absence) in order to detect such a case.

but I can't remember if we decided that we didn't need to discuss the
risk in the document.

Section 11.5

  This next section examines the risk due to a compromised MASA key.
  This is followed by examination of the risk of a compromised
  manufacturer IDevID signing key.  The third section sections below

nit: I think these appear in the other order.

Section 13.1

[cabforumaudit] and [dnssecroot] probably would be fine as just
informative references.

Appendix D.2

An RFC Editor note about the RFC 8366 assignment of OID
1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
properly use that assigned OID now?

=======================================================================
Additional comments since posted ballot position on -28

Section 2

Should the "Drop Ship" arrow in Figure 1 be unidirectional instead of
bidirectional?

  3.  Request to join the discovered registrar.  A unique nonce is
      included ensuring that any responses can be associated with this
      particular bootstrapping attempt.

This still seems to assume nonce-ful operation, which IIUC remains
required for pledge voucher-requests; only registrar-voucher-requests
have the option of being nonceless.  So, this seems okay as-is, right?

  4.  Imprint on the registrar.  This requires verification of the
      manufacturer service provided voucher.  A voucher contains

nit: hyphenate "manufacturer-service-provided"

Section 2.3.1

  The serialNumber fields is defined in [RFC5280], and is a SHOULD
  field in [IDevID].  IDevID certificates for use with this protocol
  MUST include the "serialNumber" attribute with the device's unique
  serial number (from [IDevID] section 7.2.8, and [RFC5280] section
  4.1.2.4's list of standard attributes).

This is 4.1.2.2 (or just 4.1.2) from RFC 5280.

Section 2.4

I note that both Figure 2 and Figure 4 have a step labeled "Identity",
but the description accompanying Figure 2 describes the step as
"Identify itself"; perhaps the 'f' form is more appropriate everywhere?

Section 2.8

  Note that the registrar can only select the configured MASA URL based
  on the trust anchor -- so manufacturers can only leverage this
  approach if they ensure a single MASA URL works for all pledge's
  associated with each trust anchor.

nit: s/pledge's/pledges/

Section 3

  Voucher-requests are how vouchers are requested.  The semantics of
  the vouchers are described below, in the YANG model.

nit: semantics of vouchers, or voucher requests?

Section 3.3

        Figure 6: JSON representation of example Voucher-Request

I suggest adding "(unsigned)" or "prior to CMS wrapping".

Section 3.4

      refine "voucher/assertion" {
        mandatory false;
        description "Any assertion included in voucher
              requests SHOULD be ignored by the MASA.";

If this is true, why do we propagate the assertion from pledge
voucher-request to registrar voucher-request?

Section 4.1

  Each possible proxy offer SHOULD be attempted up to the point where a
  voucher is received: while there are many ways in which the attempt
  may fail, it does not succeed until the voucher has been validated.

nit: I suggest "valid voucher is received".

Section 5

  o  The pledge requests and validates a voucher using the new REST
      calls described below.

nit: I think the validation is local and does not use the REST call.

  o  The registrar forwards the voucher to the pledge when requested.

I suggest "validates and forwards" to cover the case where the registrar
applies policy.

Section 5.2

  nonce:  The pledge voucher-request MUST contain a cryptographically
      strong random or pseudo-random number nonce. (see [RFC4086]) Doing
      so ensures Section 2.6.1 functionality.  The nonce MUST NOT be

This section reference reads kind of strangely.  (Also, full stop after
parenthetical, not before.)

  proximity-registrar-cert:  In a pledge voucher-request this is the
      first certificate in the TLS server 'certificate_list' sequence
      (see [RFC5246]) presented by the registrar to the pledge.  That
      is, it is the end-entity certificate.  This MUST be populated in a
      pledge voucher-request if the "proximity" assertion is populated.

nit: there is no "proximity" field to be populated; it's the "assertion"
field that's populated with the value "proximity".

Section 5.5

  serial-number:  The serial number of the pledge the registrar would
      like a voucher for.  The registrar determines this value by
      parsing the authenticated pledge IDevID certificate.  See
      Section 2.3.  The registrar MUST verify that the serial number
      field it parsed matches the serial number field the pledge
      provided in its voucher-request.  This provides a sanity check
      useful for detecting error conditions and logging.  The registrar
      MUST NOT simply copy the serial number field from a pledge voucher
      request as that field is claimed but not certified.

(Just to be clear, the serial-number field is optional in the pledge's
voucher-request.)

Section 5.6.2

  intervals according to the backoff timer described earlier.  Attempts
  SHOULD be repeated as failure may be the result of a temporary
  inconsistently (an inconsistently rolled registrar key, or some other
  mis-configuration).  The inconsistently could also be the result an
  active MITM attack on the EST connection.

nit: only one of these "inconsistently"s is correct; the others should
be "inconsistency".

Section 5.8

  although it results in additional network traffic.  The relying MASA
  implementation MAY leverage internal state to associate this request
  with the original, and by now already validated, voucher-request so
  as to avoid an extra crypto validation.

It seems that doing so would turn the voucher-request into a bearer
token for retrieving audit-log information (if the MASA accepts
unauthenticated clients).

Section 5.8.2

  If the "pinned-domain-cert" certificate includes the
  SubjectKeyIdentifier (Section 4.2.1.2 [RFC5280]), then it is to be
  used as the domainID.  If not, then it is the SPKI Fingerprint as
  described in [RFC7469] section 2.4 is to be used.  This value needs
  to be calculated by both MASA (to populate the audit-log), and by the
  Registrar (to recognize itself).

nit: maybe "to recognize itself in the audit log"?

Section 5.9

  The pledge SHOULD follow the BRSKI operations with EST enrollment
  operations including "CA Certificates Request", "CSR Attributes" and
  "Client Certificate Request" or "Server-Side Key Generation", etc.
  This is a relatively seamless integration since BRSKI REST calls

(I think we decided to not call this REST.)

Section 7.3

  4.  A registrar MAY ignore unrecognized nonceless log entries.  This
      could occur when used equipment is purchased with a valid history
      being deployed in air gap networks that required permanent
      vouchers.

"nonceless" and "permanent" are related but subtly different concepts,
given the potential for an expiration date in a nonceless voucher.

Section 7.4.3

  As a third option, the manufacturer's trust anchors could be entirely
  overwitten with local trust anchors.  A factory default would never
  restore those anchors.  This option comes with a lot of power, but
  also a lot of responsability: if the new anchors are lost the
  manufacturer may be unable to help.

nit: perhaps we refer to the private key portions of the anchors.

Section 11

I am somewhat embarassed that I did not previously note that the
mechanism used to generate the domainID needs to be
second-preimage-resistant or an attacker can claim to be a registrar for
a domain that already exists.

Section 11.2

  Although the nonce used by the Pledge in the voucher-request does not
  require a strong cryptographic randomness, the use of TLS in all of
  the protocols in this document does.

We discuss the need for strong randomness in the nonce in Section 11.3,
so it's not clear this is actually true.
2019-10-28
29 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2019-10-28
29 (System) Sub state has been changed to AD Followup from Revised ID Needed
2019-10-28
29 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-29.txt
2019-10-28
29 (System) New version approved
2019-10-28
29 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-10-28
29 Michael Richardson Uploaded new revision
2019-10-28
29 Michael Richardson Uploaded new revision
2019-10-28
29 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-10-28
29 Michael Richardson Uploaded new revision
2019-10-28
29 Michael Richardson Uploaded new revision
2019-10-23
28 Benjamin Kaduk
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point …
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point and one
that I think may have been missed (probably because I inadvertently numbered
two points with the same number).

(16) The audit log response (Section 5.8.1) describes the nonce as a JSON
string, but the RFC 8366 nonce is a binary value.  I think we need to
describe some mapping procedure (such as always base64-encoding as is
done for domainID, even if the original nonce is itself base64-encoded
random data) in order to be fully functional.

% (5.1) the new /enrollstatus EST endpoint seems under-specified.

Shame on me, I reused (5) for two points and have renumbered this to
(5.1) so we don't miss it again.  We don't anywhere give a formal
description of the contents of the POST body; there's just an example
JSON object.


Email exchange with mcr notes:
>    > An RFC Editor note about the RFC 8366 assignment of OID
>    > 1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
>    > properly use that assigned OID now?
>
> We got a MASA URL Extension OID for:
>    1.3.6.1.5.5.7.1.32
>
> the examples date from before that, and do not use it yet.

We need to fix the examples before publication.
2019-10-23
28 Benjamin Kaduk Ballot discuss text updated for Benjamin Kaduk
2019-10-17
28 Benjamin Kaduk
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point …
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point and one
that I think may have been missed (probably because I inadvertently numbered
two points with the same number).

(16) The audit log response (Section 5.8.1) describes the nonce as a JSON
string, but the RFC 8366 nonce is a binary value.  I think we need to
describe some mapping procedure (such as always base64-encoding as is
done for domainID, even if the original nonce is itself base64-encoded
random data) in order to be fully functional.

% (5.1) the new /enrollstatus EST endpoint seems under-specified.

Shame on me, I reused (5) for two points and have renumbered this to
(5.1) so we don't miss it again.  We don't anywhere give a formal
description of the contents of the POST body; there's just an example
JSON object.
2019-10-17
28 Benjamin Kaduk
[Ballot comment]
[All new comments for the -28]

Please respond to the secdir re-review.

Abstract

nit: hyphenate "manufacturer-installed"

  or on limited/disconnected networks.  Support for …
[Ballot comment]
[All new comments for the -28]

Please respond to the secdir re-review.

Abstract

nit: hyphenate "manufacturer-installed"

  or on limited/disconnected networks.  Support for lower security
  models, including devices with minimal identity, is described for

nit: maybe "deployment models with less-stringent security requirements"?

Section 1

  [I-D.ietf-anima-autonomic-control-plane].  This bootstrap process
  satisfies the [RFC7575] section 3.3 of making all operations secure
  by default.  Other users of the BRSKI protocol will need to provide

nit: missing "requirement"

  between manufacturer and owner: in it's default modes it provides a
  cryptographic transfer of control to the initial owner.  In it's
  strongest modes, it leverages sales channel information to identify

nit: s/it's/its/

Section 1.2

  domainID:  The domain IDentity is a unique hash based upon the
      Registrar CA's certificate.  Section 5.8.2 specifies how it is
      calculated.

nit: the grammar here is weird; I'd suggest s/hash based upon/value
derived from/

  MASA Audit-Log:  A list of previous owners maintained by the MASA on
      a per device (per pledge) basis.  Described in Section 5.8.1.

nit: maybe "anonymized list" since the MASA doesn't really track owners
directly?

  Ownership Tracker:  An Ownership Tracker service on the global
      Internet.  The Ownership Tracker uses business processes to
      accurately track ownership of all devices shipped against domains
      that have purchased them.  Although optional, this component
      allows vendors to provide additional value in cases where their
      sales and distribution channels allow for accurately tracking of
      such ownership.  Ownership tracking information is indicated in

nit: either "accurate tracking of" or "accurately tracking"

  ANI:  The Autonomic Network Infrastructure as defined by
      [I-D.ietf-anima-reference-model].  This document details specific
      requirements for pledges, proxies and registrars when they are
      part of an ANI.

Maybe refer to section 9 specifically?

Section 2.3.1

  The serialNumber fields is defined in [RFC5280], and is a SHOULD
  field in [IDevID].  IDevID certificates for use with this protocol

nit: s/fields/field/

Section 2.5.1

  The pledge is the device that is attempting to join.  The pledge can
  talk to the Join Proxy using link-local network connectivity.  In
  most cases, the pledge has no other connectivity until the pledge
  completes the enrollment process and receives some kind of network
  credential.

I'd consider s/can talk to/is assumed to talk to/.

Section 2.5.3

  The registrar uses an Implicit Trust Anchor database for
  authenticating the BRSKI-MASA TLS connection MASA certificate.  The
  registrar uses a different Implicit Trust Anchor database for
  authenticating the BRSKI-EST TLS connection pledge client
  certificate.  Configuration or distribution of these trust anchor
  databases is out-of-scope of this specification.

  Configuration or distribution of this trust anchor databases is out-
  of-scope of this specification.  Note that the trust anchors in/
  excluded from the database will affect which manufacturers' devices
  are acceptable to the registrar as pledges, and can also be used to
  limit the set of MASAs that are trusted for enrollment.

We seem to duplicate the "out-of-scope" text at the end/start of the two
paragraphs (and the second paragraph uses the definite article "the" as
if it was only talking about one of the two trust anchor databases).

Section 2.6.1

  A pledge with a real time clock in which it has confidence in, MUST
  check the above time fields in all certificates and signatures that
  ir processes.

nits: s/ir/it/, and s/in// from "in which it has confidence in" (your
choice which one).

Section 2.6.2

  year certificate lifetimes.  Registrars SHOULD be configurable on a
  per-manufacturer basis to ignore pledge lifetimes when they did not
  follow the RFC5280 recommendations.

nit: we want "they" to be the manufacturer, not the registrar, so we
can't use this pronoun.

Section 2.7

  be more important in the future.  In the ANIMA ACP scope, new devices
  will be quarantined behind a Join Proxy.

I can't decide whether the reader would benefit from being hit with a
hammer of "and as such will only have link-local connectivity, to the
Join Proxy".  The use of "quarantined" makes me lean towards "not"...

Section 3

In my previous comment, I said:

%    The "proximity-registrar-cert" leaf is used in the pledge voucher-
%    requests.  This provides a method for the pledge to assert the
%    registrar's proximity.
%
% "proximity" in what sense?  How much verification/confidence needs to be
% done?  (Also, I would have expected the assertion to go the other way;
% that the registrar asserts the pledge's proximity -- how does the pledge
% have a way to know that the registrar is nearby when the proxy is
% transparent?)

We talked about this some, but I think we're still making an unstated
assumption that there is a link-local or pre-ACP connection involved.
Making that an explicit assumption would be helpful.

Section 3.3

  Example (2)  The following example illustrates a registrar voucher-
                request.  The 'prior-signed-voucher-request' leaf is
                populated with the pledge's voucher-request (such as the
                prior example).  The pledge's voucher-request is a
                binary CMS signed object.  In the JSON encoding used
                here it must be base64 encoded.  The nonce and assertion
                MAY be carried forward from the pledge request to the
                registrar request.  The serial-number is extracted from
                the pledge's Client Certificate from the TLS connection.
                See Section 5.5.

Since this is an example, the "MAY be carried forward" feels out of
place -- while it's true in the general case, this is not the place to
say it; we can just describe what the example does, here.

Also, we should probably give a reference for base64 (not necessarily
here), such as Section 4 of RFC 4648.

Section 4

  This section applies is normative for uses with an ANIMA ACP.  The

nit: pick one of "applies to" or "is normative for".

  use of GRASP mechanism part of the ACP.  Other users of BRSKI will

nit: missing "is"

Section 4

  Registrar itself.  In this scenario the pledge is unaware that there
  is no proxing occurring.  This is useful for Registrars which are

nit: s/proxing/proxying/

Section 4.3

  The M_FLOOD message MUST be sent periodically.  The default SHOULD be
  60 seconds, the value SHOULD be operator configurable but SHOULD be
  not smaller than 60 seconds.  The frequency of sending MUST be such

nits: "default period" (or similar); s/be not/NOT be/

Section 5

  While EST section 3.2 does not insist upon use of HTTP persistent
  connections, ([RFC7230] section 6.3) BRSKI-EST connections SHOULD use

nit: comma after parenthetical, not before.

Section 5.1

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

How painful would it be to require 1.3 at this point?  RFC 8446 has been
out for more than a year, and the TLS WG is leaning on me to tighten up
on this...

  IDevID certificate is out-of-scope of this specification.  Note that
  the trust anchors in/excluded from the database will affect which
  manufacturers' devices are acceptable to the registrar as pledges,
  and can also be used to limit the set of MASAs that are trusted for
  enrollment.

I can't tell if we want to bring the division into two distinct trust
anchor databases into this discussion as well.

  A self-signed certificate for the Registrar is acceptable as the
  voucher will validate it.

nit: "will" applies only when everything works, so maybe "can" or "will
validate it in the case of successful enrollment".

  A pledge that can connect to multiple registries concurrently SHOULD

nit: s/registries/Regitstrars/

Section 5.3

  on the authenticated identity presented.  For different networks,
  examples of Automated acceptance may include:

nit: s/A/a/

Section 5.4

  Section 2.8.  The mechanisms in [RFC6125] SHOULD be used
  authentication of the MASA.  Some vendors will establish explicit (or

nit: s/used/used for/
Also, we tend to require that people using 6125 specify what name type
in the cert to verify (e.g., DNS-ID) against what expected name.  It
would be pretty easy to convince me that we don't need to do that here,
though.

Section 5.4

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

As above, how painful would requiring 1.3 be?

  client certificate.  Registrars SHOULD also permit an HTTP Basic and
  Digest authentication to be configured.

nit: s/an//

Section 5.4.1

  be uniquely identified.  This can be done by any stateless method
  that HTTPS supports: such as with HTTP Basic or Digest authentication

nit: this colon is not appropriate usage.

  Stateful methods involving API tokens, or HTTP Cookies are not
  recommended.

nit: zero commas or two, around "or HTTP Cookies", but one is right out.

  This document does not make a specific recommendation as there is
  likely different tradeoffs in different environments and product

nit: s/is/are/

Section 5.5

  idevid-issuer:  The Issuer value from the pledge IDevID certificate
      is included to ensure a uniqueness of the serial-number.  In the
      case of nonceless (offline) voucher-request, then an appropriate
      value needs to be configured from the same out-of-band source as
      the serial-number.

nit: I suggest s/a uniqueness of/a unique interpretation of/ (but if you
don't take that, the "a" is superfluous in the current formulation).

  prior-signed-voucher-request:  The signed pledge voucher-request
      SHOULD be included in the registrar voucher-request.  The entire
      CMS signed structure is to be included, base64 encoded for
      transport in the JSON structure.

I think we need a ref for (which) base64.

  The MASA verifies that the registrar voucher-request is internally
  consistent but does not necessarily authenticate the registrar
  certificate since the registrar MAY not be known to the MASA in
  advance.  The MASA performs the actions and validation checks

I suggest s/MAY not be known/MAY be unknown/.

Section 5.5.2

  The registrar's certificate chain is extracted from the signature
  method.  The entire registrar certificate chain was included in the
  CMS structure, as specified in Section 5.5.  This CA certificate will
  be used to populate the "pinned-domain-cert" of the voucher being
  issued.

By saying "this CA certificate", are we excluding use cases where the
pinned-domain-cert is not the global root CA of the organization (or is
the implication just that you don't send the rest of the chain)?

Section 5.5.5

  voucher-request MUST include a 'proximity-registrar-cert' that is
  consistent with to the certificate used to sign the registrar

nit: s/to// (first one)

Section 5.5.6

  The MASA populates the audit-log with the nonce that was verified.
  If a nonceless voucher is issued, then the audit-log is to be
  populated with the JSON value "null".

The quotes around "null" are perhaps anti-helpful.

Section 5.6.1

  The pledge MUST verify that the voucher nonce field is accurate and
  matches the nonce the pledge submitted to this registrar, or that the
  voucher is nonceless (see Section 7.2).

In my previous Discuss position I had asked:
% Is the pledge supposed to accept a nonceless voucher in response to a
% nonce-ful voucher request?
and we had some discussion that helped clarify the intent.  I just have
a suggested rewording, that I *think* is entirely editorial and might
reduce the potential for confusion:
NEW
  The pledge MUST verify the nonce information in the voucher.  If
  present, the nonce in the voucher must match the nonce the pledge
  submitted to the registrar; vouchers with no nonce can also be
  accepted (according to local policy).

Section 5.7

  The Status field indicates if the voucher was acceptable.  Boolean
  values are acceptable.

nit: I suggest """acceptable, as a boolean, where "true" indicates the
voucher was acceptable""".

  The version, and status fields MUST be present.  The Reason field
  SHOULD be present whenever the status field is negative.  The Reason-
  Context field is optional.

nit: no comma after "version".
nit: s/negative/false/

  The keys to this JSON hash are case-insensitive.  Figure 15 shows an
  example JSON.

This (case-insensitivity) seems to be a drastic divergence from the RFC
8259
standard behavior and as such would require some justification.
nit: s/hash/object/

Section 5.8.1

It's hard to call Figure 17 an "example" when it doesn't conform to the
CDDL schema...

  The domainID is a binary value calculated SubjectKeyIdentifier
  according to Section 5.8.2.  It is encoded once in base64 in order to
  be transported in this JSON container.

nit: I suggest "binary SubjectKeyIdentifier value calculated"

Section 5.8.2

  used as the domainID.  If not, then it is the SPKI Fingerprint as
  described in [RFC7469] section 2.4 is to be used.  This value needs

nit: drop "is to be used" or "then it is".

Section 5.8.3

  A relatively simple policy is to white list known (internal or
  external) domainIDs.  To require all vouchers to have a nonce.

nit: sentence fragment.

  Alternatively to require that all nonceless vouchers be from a subset

nit: comma after "alternatively".  (Hmm, this is also a sentence
fragment.)

Section 5.9.4

  In order to communicate this indicator, the client HTTP POSTs the
  following to the server at the new EST endpoint at "/.well-known/est/
  enrollstatus".

"The following" is just more text, not a formal description of a
protocol element.

    "reason-context": "Additional information"

Is this supposed to be a string or a JSON object similar to
/voucher_status?

Section 6

  When used within BRSKI, the original RFC7030 EST endpoints remain
  Base64 encoded, but the new BRSKI end points which send and receive
  binary artifacts (specifically, /requestvoucher) are binary.  That

The other two occurrences spell this "/.well-known/est/requestvoucher".

Section 7.2

  The following are a list of alternatives behaviours that the pledge
  can be programmed to implement.  These behaviours are not mutually
  exclusive, nor are they dependant upon other.  Some of these methods

nits: singular/plural mismatch "are"/"list"; "upon each other"

Section 7.3

  A registrar can choose to accept devices using less secure methods.
  These methods are acceptable when low security models are needed, as
  the security decisions are being made by the local administrator, but
  they MUST NOT be the default behavior:

I'm having a hard time parsing "low security models"; the best I can
come up with is "threat models where low security is adequate".

Section 7.4.1

  A MASA has the option of not including a nonce is in the voucher,

nit: s/is//

  and/or not requiring one to be present in the voucher-request.  This
  results in distribution of a voucher that never expires and in effect

"expires-on" is distinct from the nonce-ful freshness check, so I think
some additional wordsmithing is in order.

  This is useful to support use cases where registrars might not be
  online during actual device deployment.

nit: there's enough intervening text that we should probably replace
"this is" with "nonceless vouchers are".

  authorized to provide this functionality to this customer.  The MASA
  is RECOMMENDED to use this functionality only in concert with an
  enhanced level of ownership tracking (out-of-scope.)

I suggest s/out-of-scope/the details of which are out of scope for this
document/.

Section 7.4.2

  functionality.  This provides a proof-of-proximity check that reduces
  the need for ownership verification.

I suggest reiterating the assumption that pledge and JP are on a
link-local connection; whether or not to reiterate that JP and registrar
have a trust relationship (with respect to not falsifying proximity
information) is less clear to me.

Section 7.4.3

We might benefit from some introductory text here to suggest that
updating/extending trust anchors would be desirable in the case of a
vanished or uncooperative manufacturer.

  This weaker factor reset might leave valuable credentials on the
  device and this may be unacceptable to some owners.

nit: s/factor/factory/

Section 9

  Provider organizations.  Equivalent enterprises that has significant
  layer-3 router connectivity also will find significant benefit,

nit: s/has/have/

  In the ACP, the Join Proxy is found to be proximal because
  communication between the pledge and the join proxy is exclusively on

nit(?) My dictionary doesn't list anything for "proximal" that is a good
match for "with proximity"; might be worth double-checking.

  asssertion is satisfied.  Other uses of BRSKI will need make similar
  analysis if they use proximity.

nit: maybe "proximity information" or "proximity assertions".

Section 10.3

  While the contents of the signed part of the pledge voucher request
  can not be changed, they are not encrypted at the registrar.  The
  ability to audit the messages by the owner of the network a mechanism
  to defend against exfiltration of data by a nefarious pledge.  Both

nit: missing verb ("is a mechanism", "provides a mechanism", etc.)

  The manufacturer knows the IP address of the Registrar, but it can
  not see the IP address of the device itself.  The manufacturer can
  not track the device to a detailed physical or network location, only
  to the the location of the Registrar itself.  That is likely to be at

nit: we probably don't need the last "itself".

  is likely on the same network as the device.  A manufacturer that
  sells switching/routing products to enterprises should hardly be
  surprised if additional purchases switching/routing products are
  purchased.  Deviations from a historical trend or an establish

nit: we probably only need one of "purchases" and "purchased".

Section 10.6

  Section Section 7.4.3 describes some ways in which a manufacturer

nit: duplicate "Section".

Section 10.7

  existing products.  Said products might be previous deployed and need
  to be re-initialized, purchased used, or just kept in a warehouse as
  long-term spares.

nit: s/previous deployed and need/previously deployed that need/

Section 11.2

  In particular implementations should pay attention to the advance in
  [RFC4086] section 3, particulary section 3.4.  Devices which are
  reset to factory default in order to perform a second bootstrap with
  a new owner MUST NOT seed their random number generators in the same
  way.

nit: s/same way/same way across bootstraps/

Section 11.3

We had some discussion around my previous comment:

%    Additionally, in order to successfully use the resulting voucher the
%    Rm would have to attack the pledge and return it to a bootstrapping
%    enabled state.  This would require wiping the pledge of current
%
% ... and I think there is a different attack if the Rm is in a position
% to delay or drop network traffic between the  pledge and the intended
% registrar, to cause Rm's voucher to be delivered first even though it is
% generated after the intended registrar's authorization process.  The
% intended registrar would need to require reports on voucher processing
% status (or investigate their absence) in order to detect such a case.

but I can't remember if we decided that we didn't need to discuss the
risk in the document.

Section 11.5

  This next section examines the risk due to a compromised MASA key.
  This is followed by examination of the risk of a compromised
  manufacturer IDevID signing key.  The third section sections below

nit: I think these appear in the other order.

Section 13.1

[cabforumaudit] and [dnssecroot] probably would be fine as just
informative references.

Appendix D.2

An RFC Editor note about the RFC 8366 assignment of OID
1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
properly use that assigned OID now?

=======================================================================
Additional comments since posted ballot position on -28

Section 2

Should the "Drop Ship" arrow in Figure 1 be unidirectional instead of
bidirectional?

  3.  Request to join the discovered registrar.  A unique nonce is
      included ensuring that any responses can be associated with this
      particular bootstrapping attempt.

This still seems to assume nonce-ful operation, which IIUC remains
required for pledge voucher-requests; only registrar-voucher-requests
have the option of being nonceless.  So, this seems okay as-is, right?

  4.  Imprint on the registrar.  This requires verification of the
      manufacturer service provided voucher.  A voucher contains

nit: hyphenate "manufacturer-service-provided"

Section 2.3.1

  The serialNumber fields is defined in [RFC5280], and is a SHOULD
  field in [IDevID].  IDevID certificates for use with this protocol
  MUST include the "serialNumber" attribute with the device's unique
  serial number (from [IDevID] section 7.2.8, and [RFC5280] section
  4.1.2.4's list of standard attributes).

This is 4.1.2.2 (or just 4.1.2) from RFC 5280.

Section 2.4

I note that both Figure 2 and Figure 4 have a step labeled "Identity",
but the description accompanying Figure 2 describes the step as
"Identify itself"; perhaps the 'f' form is more appropriate everywhere?

Section 2.8

  Note that the registrar can only select the configured MASA URL based
  on the trust anchor -- so manufacturers can only leverage this
  approach if they ensure a single MASA URL works for all pledge's
  associated with each trust anchor.

nit: s/pledge's/pledges/

Section 3

  Voucher-requests are how vouchers are requested.  The semantics of
  the vouchers are described below, in the YANG model.

nit: semantics of vouchers, or voucher requests?

Section 3.3

        Figure 6: JSON representation of example Voucher-Request

I suggest adding "(unsigned)" or "prior to CMS wrapping".

Section 3.4

      refine "voucher/assertion" {
        mandatory false;
        description "Any assertion included in voucher
              requests SHOULD be ignored by the MASA.";

If this is true, why do we propagate the assertion from pledge
voucher-request to registrar voucher-request?

Section 4.1

  Each possible proxy offer SHOULD be attempted up to the point where a
  voucher is received: while there are many ways in which the attempt
  may fail, it does not succeed until the voucher has been validated.

nit: I suggest "valid voucher is received".

Section 5

  o  The pledge requests and validates a voucher using the new REST
      calls described below.

nit: I think the validation is local and does not use the REST call.

  o  The registrar forwards the voucher to the pledge when requested.

I suggest "validates and forwards" to cover the case where the registrar
applies policy.

Section 5.2

  nonce:  The pledge voucher-request MUST contain a cryptographically
      strong random or pseudo-random number nonce. (see [RFC4086]) Doing
      so ensures Section 2.6.1 functionality.  The nonce MUST NOT be

This section reference reads kind of strangely.  (Also, full stop after
parenthetical, not before.)

  proximity-registrar-cert:  In a pledge voucher-request this is the
      first certificate in the TLS server 'certificate_list' sequence
      (see [RFC5246]) presented by the registrar to the pledge.  That
      is, it is the end-entity certificate.  This MUST be populated in a
      pledge voucher-request if the "proximity" assertion is populated.

nit: there is no "proximity" field to be populated; it's the "assertion"
field that's populated with the value "proximity".

Section 5.5

  serial-number:  The serial number of the pledge the registrar would
      like a voucher for.  The registrar determines this value by
      parsing the authenticated pledge IDevID certificate.  See
      Section 2.3.  The registrar MUST verify that the serial number
      field it parsed matches the serial number field the pledge
      provided in its voucher-request.  This provides a sanity check
      useful for detecting error conditions and logging.  The registrar
      MUST NOT simply copy the serial number field from a pledge voucher
      request as that field is claimed but not certified.

(Just to be clear, the serial-number field is optional in the pledge's
voucher-request.)

Section 5.6.2

  intervals according to the backoff timer described earlier.  Attempts
  SHOULD be repeated as failure may be the result of a temporary
  inconsistently (an inconsistently rolled registrar key, or some other
  mis-configuration).  The inconsistently could also be the result an
  active MITM attack on the EST connection.

nit: only one of these "inconsistently"s is correct; the others should
be "inconsistency".

Section 5.8

  although it results in additional network traffic.  The relying MASA
  implementation MAY leverage internal state to associate this request
  with the original, and by now already validated, voucher-request so
  as to avoid an extra crypto validation.

It seems that doing so would turn the voucher-request into a bearer
token for retrieving audit-log information (if the MASA accepts
unauthenticated clients).

Section 5.8.2

  If the "pinned-domain-cert" certificate includes the
  SubjectKeyIdentifier (Section 4.2.1.2 [RFC5280]), then it is to be
  used as the domainID.  If not, then it is the SPKI Fingerprint as
  described in [RFC7469] section 2.4 is to be used.  This value needs
  to be calculated by both MASA (to populate the audit-log), and by the
  Registrar (to recognize itself).

nit: maybe "to recognize itself in the audit log"?

Section 5.9

  The pledge SHOULD follow the BRSKI operations with EST enrollment
  operations including "CA Certificates Request", "CSR Attributes" and
  "Client Certificate Request" or "Server-Side Key Generation", etc.
  This is a relatively seamless integration since BRSKI REST calls

(I think we decided to not call this REST.)

Section 7.3

  4.  A registrar MAY ignore unrecognized nonceless log entries.  This
      could occur when used equipment is purchased with a valid history
      being deployed in air gap networks that required permanent
      vouchers.

"nonceless" and "permanent" are related but subtly different concepts,
given the potential for an expiration date in a nonceless voucher.

Section 7.4.3

  As a third option, the manufacturer's trust anchors could be entirely
  overwitten with local trust anchors.  A factory default would never
  restore those anchors.  This option comes with a lot of power, but
  also a lot of responsability: if the new anchors are lost the
  manufacturer may be unable to help.

nit: perhaps we refer to the private key portions of the anchors.

Section 11

I am somewhat embarassed that I did not previously note that the
mechanism used to generate the domainID needs to be
second-preimage-resistant or an attacker can claim to be a registrar for
a domain that already exists.

Section 11.2

  Although the nonce used by the Pledge in the voucher-request does not
  require a strong cryptographic randomness, the use of TLS in all of
  the protocols in this document does.

We discuss the need for strong randomness in the nonce in Section 11.3,
so it's not clear this is actually true.
2019-10-17
28 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2019-10-17
28 Cindy Morgan IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation::AD Followup
2019-10-17
28 Benjamin Kaduk
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point …
[Ballot discuss]
Thanks for the time and attention to detail put into addressing my previous
Discuss and Comment points.  I have one new Discuss-level point and one
that I think may have been missed (probably because I inadvertently numbered
two points with the same number).

(16) The audit log response (Section 5.8.1) describes the nonce as a JSON
string, but the RFC 8366 nonce is a binary value.  I think we need to
describe some mapping procedure (such as always base64-encoding as is
done for domainID, even if the original nonce is itself base64-encoded
random data) in order to be fully functional.

% (1) The text of the document suffers from lack of clarity throughout about
% whether the nonce-ful operation is mandatory or not, with several
% figures and discussions making declarative statements about nonce usage
% and others saying that nonce usage is optional. (See COMMENT.)

[keep in mind when reading]

% (5.1) the new /enrollstatus EST endpoint seems under-specified.

Shame on me, I reused (5) for two points and have renumbered this to
(5.1) so we don't miss it again.  We don't anywhere give a formal
description of the contents of the POST body; there's just an example
JSON object.
2019-10-17
28 Benjamin Kaduk
[Ballot comment]
[All new comments for the -28]

Please respond to the secdir re-review.

Abstract

nit: hyphenate "manufacturer-installed"

  or on limited/disconnected networks.  Support for …
[Ballot comment]
[All new comments for the -28]

Please respond to the secdir re-review.

Abstract

nit: hyphenate "manufacturer-installed"

  or on limited/disconnected networks.  Support for lower security
  models, including devices with minimal identity, is described for

nit: maybe "deployment models with less-stringent security requirements"?

Section 1

  [I-D.ietf-anima-autonomic-control-plane].  This bootstrap process
  satisfies the [RFC7575] section 3.3 of making all operations secure
  by default.  Other users of the BRSKI protocol will need to provide

nit: missing "requirement"

  between manufacturer and owner: in it's default modes it provides a
  cryptographic transfer of control to the initial owner.  In it's
  strongest modes, it leverages sales channel information to identify

nit: s/it's/its/

Section 1.2

  domainID:  The domain IDentity is a unique hash based upon the
      Registrar CA's certificate.  Section 5.8.2 specifies how it is
      calculated.

nit: the grammar here is weird; I'd suggest s/hash based upon/value
derived from/

  MASA Audit-Log:  A list of previous owners maintained by the MASA on
      a per device (per pledge) basis.  Described in Section 5.8.1.

nit: maybe "anonymized list" since the MASA doesn't really track owners
directly?

  Ownership Tracker:  An Ownership Tracker service on the global
      Internet.  The Ownership Tracker uses business processes to
      accurately track ownership of all devices shipped against domains
      that have purchased them.  Although optional, this component
      allows vendors to provide additional value in cases where their
      sales and distribution channels allow for accurately tracking of
      such ownership.  Ownership tracking information is indicated in

nit: either "accurate tracking of" or "accurately tracking"

  ANI:  The Autonomic Network Infrastructure as defined by
      [I-D.ietf-anima-reference-model].  This document details specific
      requirements for pledges, proxies and registrars when they are
      part of an ANI.

Maybe refer to section 9 specifically?

Section 2.3.1

  The serialNumber fields is defined in [RFC5280], and is a SHOULD
  field in [IDevID].  IDevID certificates for use with this protocol

nit: s/fields/field/

Section 2.5.1

  The pledge is the device that is attempting to join.  The pledge can
  talk to the Join Proxy using link-local network connectivity.  In
  most cases, the pledge has no other connectivity until the pledge
  completes the enrollment process and receives some kind of network
  credential.

I'd consider s/can talk to/is assumed to talk to/.

Section 2.5.3

  The registrar uses an Implicit Trust Anchor database for
  authenticating the BRSKI-MASA TLS connection MASA certificate.  The
  registrar uses a different Implicit Trust Anchor database for
  authenticating the BRSKI-EST TLS connection pledge client
  certificate.  Configuration or distribution of these trust anchor
  databases is out-of-scope of this specification.

  Configuration or distribution of this trust anchor databases is out-
  of-scope of this specification.  Note that the trust anchors in/
  excluded from the database will affect which manufacturers' devices
  are acceptable to the registrar as pledges, and can also be used to
  limit the set of MASAs that are trusted for enrollment.

We seem to duplicate the "out-of-scope" text at the end/start of the two
paragraphs (and the second paragraph uses the definite article "the" as
if it was only talking about one of the two trust anchor databases).

Section 2.6.1

  A pledge with a real time clock in which it has confidence in, MUST
  check the above time fields in all certificates and signatures that
  ir processes.

nits: s/ir/it/, and s/in// from "in which it has confidence in" (your
choice which one).

Section 2.6.2

  year certificate lifetimes.  Registrars SHOULD be configurable on a
  per-manufacturer basis to ignore pledge lifetimes when they did not
  follow the RFC5280 recommendations.

nit: we want "they" to be the manufacturer, not the registrar, so we
can't use this pronoun.

Section 2.7

  be more important in the future.  In the ANIMA ACP scope, new devices
  will be quarantined behind a Join Proxy.

I can't decide whether the reader would benefit from being hit with a
hammer of "and as such will only have link-local connectivity, to the
Join Proxy".  The use of "quarantined" makes me lean towards "not"...

Section 3

In my previous comment, I said:

%    The "proximity-registrar-cert" leaf is used in the pledge voucher-
%    requests.  This provides a method for the pledge to assert the
%    registrar's proximity.
%
% "proximity" in what sense?  How much verification/confidence needs to be
% done?  (Also, I would have expected the assertion to go the other way;
% that the registrar asserts the pledge's proximity -- how does the pledge
% have a way to know that the registrar is nearby when the proxy is
% transparent?)

We talked about this some, but I think we're still making an unstated
assumption that there is a link-local or pre-ACP connection involved.
Making that an explicit assumption would be helpful.

Section 3.3

  Example (2)  The following example illustrates a registrar voucher-
                request.  The 'prior-signed-voucher-request' leaf is
                populated with the pledge's voucher-request (such as the
                prior example).  The pledge's voucher-request is a
                binary CMS signed object.  In the JSON encoding used
                here it must be base64 encoded.  The nonce and assertion
                MAY be carried forward from the pledge request to the
                registrar request.  The serial-number is extracted from
                the pledge's Client Certificate from the TLS connection.
                See Section 5.5.

Since this is an example, the "MAY be carried forward" feels out of
place -- while it's true in the general case, this is not the place to
say it; we can just describe what the example does, here.

Also, we should probably give a reference for base64 (not necessarily
here), such as Section 4 of RFC 4648.

Section 4

  This section applies is normative for uses with an ANIMA ACP.  The

nit: pick one of "applies to" or "is normative for".

  use of GRASP mechanism part of the ACP.  Other users of BRSKI will

nit: missing "is"

Section 4

  Registrar itself.  In this scenario the pledge is unaware that there
  is no proxing occurring.  This is useful for Registrars which are

nit: s/proxing/proxying/

Section 4.3

  The M_FLOOD message MUST be sent periodically.  The default SHOULD be
  60 seconds, the value SHOULD be operator configurable but SHOULD be
  not smaller than 60 seconds.  The frequency of sending MUST be such

nits: "default period" (or similar); s/be not/NOT be/

Section 5

  While EST section 3.2 does not insist upon use of HTTP persistent
  connections, ([RFC7230] section 6.3) BRSKI-EST connections SHOULD use

nit: comma after parenthetical, not before.

Section 5.1

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

How painful would it be to require 1.3 at this point?  RFC 8446 has been
out for more than a year, and the TLS WG is leaning on me to tighten up
on this...

  IDevID certificate is out-of-scope of this specification.  Note that
  the trust anchors in/excluded from the database will affect which
  manufacturers' devices are acceptable to the registrar as pledges,
  and can also be used to limit the set of MASAs that are trusted for
  enrollment.

I can't tell if we want to bring the division into two distinct trust
anchor databases into this discussion as well.

  A self-signed certificate for the Registrar is acceptable as the
  voucher will validate it.

nit: "will" applies only when everything works, so maybe "can" or "will
validate it in the case of successful enrollment".

  A pledge that can connect to multiple registries concurrently SHOULD

nit: s/registries/Regitstrars/

Section 5.3

  on the authenticated identity presented.  For different networks,
  examples of Automated acceptance may include:

nit: s/A/a/

Section 5.4

  Section 2.8.  The mechanisms in [RFC6125] SHOULD be used
  authentication of the MASA.  Some vendors will establish explicit (or

nit: s/used/used for/
Also, we tend to require that people using 6125 specify what name type
in the cert to verify (e.g., DNS-ID) against what expected name.  It
would be pretty easy to convince me that we don't need to do that here,
though.

Section 5.4

  Use of TLS 1.3 (or newer) is encouraged.  TLS 1.2 or newer is
  REQUIRED.

As above, how painful would requiring 1.3 be?

  client certificate.  Registrars SHOULD also permit an HTTP Basic and
  Digest authentication to be configured.

nit: s/an//

Section 5.4.1

  be uniquely identified.  This can be done by any stateless method
  that HTTPS supports: such as with HTTP Basic or Digest authentication

nit: this colon is not appropriate usage.

  Stateful methods involving API tokens, or HTTP Cookies are not
  recommended.

nit: zero commas or two, around "or HTTP Cookies", but one is right out.

  This document does not make a specific recommendation as there is
  likely different tradeoffs in different environments and product

nit: s/is/are/

Section 5.5

  idevid-issuer:  The Issuer value from the pledge IDevID certificate
      is included to ensure a uniqueness of the serial-number.  In the
      case of nonceless (offline) voucher-request, then an appropriate
      value needs to be configured from the same out-of-band source as
      the serial-number.

nit: I suggest s/a uniqueness of/a unique interpretation of/ (but if you
don't take that, the "a" is superfluous in the current formulation).

  prior-signed-voucher-request:  The signed pledge voucher-request
      SHOULD be included in the registrar voucher-request.  The entire
      CMS signed structure is to be included, base64 encoded for
      transport in the JSON structure.

I think we need a ref for (which) base64.

  The MASA verifies that the registrar voucher-request is internally
  consistent but does not necessarily authenticate the registrar
  certificate since the registrar MAY not be known to the MASA in
  advance.  The MASA performs the actions and validation checks

I suggest s/MAY not be known/MAY be unknown/.

Section 5.5.2

  The registrar's certificate chain is extracted from the signature
  method.  The entire registrar certificate chain was included in the
  CMS structure, as specified in Section 5.5.  This CA certificate will
  be used to populate the "pinned-domain-cert" of the voucher being
  issued.

By saying "this CA certificate", are we excluding use cases where the
pinned-domain-cert is not the global root CA of the organization (or is
the implication just that you don't send the rest of the chain)?

Section 5.5.5

  voucher-request MUST include a 'proximity-registrar-cert' that is
  consistent with to the certificate used to sign the registrar

nit: s/to// (first one)

Section 5.5.6

  The MASA populates the audit-log with the nonce that was verified.
  If a nonceless voucher is issued, then the audit-log is to be
  populated with the JSON value "null".

The quotes around "null" are perhaps anti-helpful.

Section 5.6.1

  The pledge MUST verify that the voucher nonce field is accurate and
  matches the nonce the pledge submitted to this registrar, or that the
  voucher is nonceless (see Section 7.2).

In my previous Discuss position I had asked:
% Is the pledge supposed to accept a nonceless voucher in response to a
% nonce-ful voucher request?
and we had some discussion that helped clarify the intent.  I just have
a suggested rewording, that I *think* is entirely editorial and might
reduce the potential for confusion:
NEW
  The pledge MUST verify the nonce information in the voucher.  If
  present, the nonce in the voucher must match the nonce the pledge
  submitted to the registrar; vouchers with no nonce can also be
  accepted (according to local policy).

Section 5.7

  The Status field indicates if the voucher was acceptable.  Boolean
  values are acceptable.

nit: I suggest """acceptable, as a boolean, where "true" indicates the
voucher was acceptable""".

  The version, and status fields MUST be present.  The Reason field
  SHOULD be present whenever the status field is negative.  The Reason-
  Context field is optional.

nit: no comma after "version".
nit: s/negative/false/

  The keys to this JSON hash are case-insensitive.  Figure 15 shows an
  example JSON.

This (case-insensitivity) seems to be a drastic divergence from the RFC
8259
standard behavior and as such would require some justification.
nit: s/hash/object/

Section 5.8.1

It's hard to call Figure 17 an "example" when it doesn't conform to the
CDDL schema...

  The domainID is a binary value calculated SubjectKeyIdentifier
  according to Section 5.8.2.  It is encoded once in base64 in order to
  be transported in this JSON container.

nit: I suggest "binary SubjectKeyIdentifier value calculated"

Section 5.8.2

  used as the domainID.  If not, then it is the SPKI Fingerprint as
  described in [RFC7469] section 2.4 is to be used.  This value needs

nit: drop "is to be used" or "then it is".

Section 5.8.3

  A relatively simple policy is to white list known (internal or
  external) domainIDs.  To require all vouchers to have a nonce.

nit: sentence fragment.

  Alternatively to require that all nonceless vouchers be from a subset

nit: comma after "alternatively".  (Hmm, this is also a sentence
fragment.)

Section 5.9.4

  In order to communicate this indicator, the client HTTP POSTs the
  following to the server at the new EST endpoint at "/.well-known/est/
  enrollstatus".

"The following" is just more text, not a formal description of a
protocol element.

    "reason-context": "Additional information"

Is this supposed to be a string or a JSON object similar to
/voucher_status?

Section 6

  When used within BRSKI, the original RFC7030 EST endpoints remain
  Base64 encoded, but the new BRSKI end points which send and receive
  binary artifacts (specifically, /requestvoucher) are binary.  That

The other two occurrences spell this "/.well-known/est/requestvoucher".

Section 7.2

  The following are a list of alternatives behaviours that the pledge
  can be programmed to implement.  These behaviours are not mutually
  exclusive, nor are they dependant upon other.  Some of these methods

nits: singular/plural mismatch "are"/"list"; "upon each other"

Section 7.3

  A registrar can choose to accept devices using less secure methods.
  These methods are acceptable when low security models are needed, as
  the security decisions are being made by the local administrator, but
  they MUST NOT be the default behavior:

I'm having a hard time parsing "low security models"; the best I can
come up with is "threat models where low security is adequate".

Section 7.4.1

  A MASA has the option of not including a nonce is in the voucher,

nit: s/is//

  and/or not requiring one to be present in the voucher-request.  This
  results in distribution of a voucher that never expires and in effect

"expires-on" is distinct from the nonce-ful freshness check, so I think
some additional wordsmithing is in order.

  This is useful to support use cases where registrars might not be
  online during actual device deployment.

nit: there's enough intervening text that we should probably replace
"this is" with "nonceless vouchers are".

  authorized to provide this functionality to this customer.  The MASA
  is RECOMMENDED to use this functionality only in concert with an
  enhanced level of ownership tracking (out-of-scope.)

I suggest s/out-of-scope/the details of which are out of scope for this
document/.

Section 7.4.2

  functionality.  This provides a proof-of-proximity check that reduces
  the need for ownership verification.

I suggest reiterating the assumption that pledge and JP are on a
link-local connection; whether or not to reiterate that JP and registrar
have a trust relationship (with respect to not falsifying proximity
information) is less clear to me.

Section 7.4.3

We might benefit from some introductory text here to suggest that
updating/extending trust anchors would be desirable in the case of a
vanished or uncooperative manufacturer.

  This weaker factor reset might leave valuable credentials on the
  device and this may be unacceptable to some owners.

nit: s/factor/factory/

Section 9

  Provider organizations.  Equivalent enterprises that has significant
  layer-3 router connectivity also will find significant benefit,

nit: s/has/have/

  In the ACP, the Join Proxy is found to be proximal because
  communication between the pledge and the join proxy is exclusively on

nit(?) My dictionary doesn't list anything for "proximal" that is a good
match for "with proximity"; might be worth double-checking.

  asssertion is satisfied.  Other uses of BRSKI will need make similar
  analysis if they use proximity.

nit: maybe "proximity information" or "proximity assertions".

Section 10.3

  While the contents of the signed part of the pledge voucher request
  can not be changed, they are not encrypted at the registrar.  The
  ability to audit the messages by the owner of the network a mechanism
  to defend against exfiltration of data by a nefarious pledge.  Both

nit: missing verb ("is a mechanism", "provides a mechanism", etc.)

  The manufacturer knows the IP address of the Registrar, but it can
  not see the IP address of the device itself.  The manufacturer can
  not track the device to a detailed physical or network location, only
  to the the location of the Registrar itself.  That is likely to be at

nit: we probably don't need the last "itself".

  is likely on the same network as the device.  A manufacturer that
  sells switching/routing products to enterprises should hardly be
  surprised if additional purchases switching/routing products are
  purchased.  Deviations from a historical trend or an establish

nit: we probably only need one of "purchases" and "purchased".

Section 10.6

  Section Section 7.4.3 describes some ways in which a manufacturer

nit: duplicate "Section".

Section 10.7

  existing products.  Said products might be previous deployed and need
  to be re-initialized, purchased used, or just kept in a warehouse as
  long-term spares.

nit: s/previous deployed and need/previously deployed that need/

Section 11.2

  In particular implementations should pay attention to the advance in
  [RFC4086] section 3, particulary section 3.4.  Devices which are
  reset to factory default in order to perform a second bootstrap with
  a new owner MUST NOT seed their random number generators in the same
  way.

nit: s/same way/same way across bootstraps/

Section 11.3

We had some discussion around my previous comment:

%    Additionally, in order to successfully use the resulting voucher the
%    Rm would have to attack the pledge and return it to a bootstrapping
%    enabled state.  This would require wiping the pledge of current
%
% ... and I think there is a different attack if the Rm is in a position
% to delay or drop network traffic between the  pledge and the intended
% registrar, to cause Rm's voucher to be delivered first even though it is
% generated after the intended registrar's authorization process.  The
% intended registrar would need to require reports on voucher processing
% status (or investigate their absence) in order to detect such a case.

but I can't remember if we decided that we didn't need to discuss the
risk in the document.

Section 11.5

  This next section examines the risk due to a compromised MASA key.
  This is followed by examination of the risk of a compromised
  manufacturer IDevID signing key.  The third section sections below

nit: I think these appear in the other order.

Section 13.1

[cabforumaudit] and [dnssecroot] probably would be fine as just
informative references.

Appendix D.2

An RFC Editor note about the RFC 8366 assignment of OID
1.2.840.113549.1.9.16.1.40 was removed from -23 to -28; do the examples
properly use that assigned OID now?
2019-10-17
28 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2019-10-17
28 Martin Vigoureux [Ballot Position Update] New position, No Objection, has been recorded for Martin Vigoureux
2019-10-16
28 Roman Danyliw
[Ballot discuss]
One remaining item of clarity in the Section 7 from my previous DISCUSS position:

** Section 7.  Per “This section is considered non-normative …
[Ballot discuss]
One remaining item of clarity in the Section 7 from my previous DISCUSS position:

** Section 7.  Per “This section is considered non-normative in the generality of the protocol.  Use of the suggested mechanism here MUST be detailed in specific profiles of BRSKI, such as in Section 9.”

-- Can you please clarify “non-normative in the generality of the protocol”?  If I take the perspective of an implementer, it seems like a black-and-white issue – either this section is normative or not (I either have to conform or not). 

-- what this MUST is requiring isn’t clear.  Practically, why would using any of these mechanisms in this section require further elaboration?

I’d offer an alternative introduction to this section to address these ambiguities:

OLD
  A common requirement of bootstrapping is to support less secure
  operational modes for support specific use cases.  The following
  sections detail specific ways that the pledge, registrar and MASA can
  be configured to run in a less secure mode for the indicated reasons.

  This section is considered non-normative in the generality of the
  protocol.  Use of the suggested mechanism here MUST be detailed in
  specific profiles of BRSKI, such as in Section 9.

NEW
A common requirement of bootstrapping is to support less secure operational modes for support specific use cases.  This section suggests a range of mechanisms that would alter the security assurance of BRSKI to accommodate alternative deployment architectures and mitigate lifecycle management issues identified in Section 10.4 – 10.7.  They are presented here as informative (non-normative) design guidance for future standardization activities.  It would be expected that subsets of these mechanisms could be profiled with an accompanying applicability statements similar to the one described in Section 9.
2019-10-16
28 Roman Danyliw
[Ballot comment]
Thank you for addressing my previous COMMENTS.

I remain concerned that the current text continues to only normatively specify the behavior in the …
[Ballot comment]
Thank you for addressing my previous COMMENTS.

I remain concerned that the current text continues to only normatively specify the behavior in the first part of the lifecycle that BRSKI-enabled equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  I appreciate that this scope is the consensus of the WG.  Therefore, thank you for all of the efforts made in recent version of the draft to more substantively document (if not fully specify) these later lifecycle activities. 

** Abstract.  Per “Support for lower security models, including devices with minimal identity, is described for legacy reasons but not encouraged.”, the rational for the lower security models as described in Section 7 do not appear to be “legacy”.

** Section 1.5  Per “Upon successfully validating a voucher artifact, a status telemetry MUST be returned.  See Section 5.7.”  Is a “voucher artifact” the same as a “voucher”?

** Section 5.9.4. Per “In the case of a SUCCESS the Reason string is omitted.  The SubjectKeyIdentifier is included so that the server can record the successful certificate distribution.”.  Given the single example in Figure 18, it isn’t clear how to represent the SubjectKeyIdentifier in JSON.

** Section 10.3.  Per “[t]he so-called "call-home" mechanism that occurs as part of the BRSKI-MASA connection standardizes what has been deemed by some as a sinister mechanism for corporate oversight of individuals. ([livingwithIoT] and [IoTstrangeThings] for a small sample).”

-- Thanks for including this text about the “call-home” mechanism.  However the references don’t seem like a fit.  Both references appear to focus on the regular “call home” activity of these device rather than the narrow, on-time one-time onboarding process.  The nature of the “call-home” isn’t just about privacy (as these articles imply), but also lock-in.

-- It isn't appropriate to characterize concerns about the BRISKI-MASA link as “sinister mechanisms ...”.

** Section 10.7.  Per “It is anticipated that specialist service providers will come to exist that deal with the creation of vouchers in much the same way that many companies have outsourced email, advertising and janitorial services.”, I don’t think this is a fair analogy.  Delegating the voucher process to an entity would take active cooperation of the manufacturer.  If the manufacture is out of business, there is not guarantee this would have been put in place (or those assets were acquired in the liquidation)

** Section 11.5.2.2 prescribes that the operator of a MASA “MUST issue a firmware update to all devices that had that key as a trust anchor”.  This suggests a required capability to update trust anchors.  However, Section 7.4.3 discusses a similar (albeit more flexible) practice but this is non-normative and deemed reduced security.  Why the dissidence?

** Please respond to Christian Huitema’s new SECDIR review items (thank you again, Christian!) on clarifying the TLS version negotiation and certificates for MASA authentication.

** Editorial Nits:

Section 3.4.  Typo. s/occurence/occurrence/

Section 4.  These sentences didn’t parse for me – “This section applies is normative for uses with an ANIMA ACP.  The use of GRASP mechanism part of the ACP.”

Section 4.  Reference expansion issue?.  s/{{RFC8446}}/[RFC8446]/

Section 5.1.  Typo.  s/progess/progress/

Section 5.2.  Editorial. Per “The media type is the same as defined in [RFC8366].  and is also …”, the start of the second sentence shouldn’t be “and is …”

Section 5.2. Editorial.  s/then there a On-Path Attacker (MITM)/then there is an On-Path Attacker (MITM)/

Section 4.1.  Recommend clarity on the non-normative behavior.  s/While the GRASP M_FLOOD mechanism is passive for the pledge, the optional other methods (mDNS, and IPv4 methods) are active./While the GRASP M_FLOOD mechanism is passive for the pledge, the non-normative, optional methods (mDNS, and IPv4 methods) described in Appendix A are active./

Section 5.7.  Editorial
s/The client HTTP POSTs the following to the server at the URI ".well-known URI "/voucher_status"./
The client sends an HTTP POSTs to the server at the URI ".well-known URI "/voucher_status".

Section 7.2.  Typo.  s/dependant/dependent/

Section 7.4.1. Typo.  s/A MASA has the option of not including a nonce is in the voucher/A MASA has the option of not including a nonce in the voucher/

Section 7.4.2.  Typo.  s/ nuissance/nuisance/

Section 7.4.3.  Typo. s/overwitten/overwritten/

Section 7.4.3.  Typo.  s/responsability/responsibility/

Section 10.2.  Duplicate word. s/the the/the/

Section 10.2. Typo. s/ arbitrary/ arbitrary/

Section 10.2 Typo. s/coorelate/correlate/

Section 10.3.  Typo. s/the the/the/

Section 10.4.  Typo. s/absense/absence/

Section 10.6.  Typo. s/gratuitiously/gratuitously/

Section 10.6.  Duplicate Word. s/Section Section/Section/

Section 10.6.  Duplicate Word. s/an an/an/

Section 11.2. Typo. s/particulary/particularly/

Section 11.3.  Typo.  s/occurence/occurrence/

Section 11.5.  Typo. s/proceedures/procedures/

Section 11.5. Sometime is amiss with reference expansions – s/{{cabforumaudit}}/[CABFORUMAUDIT]/ and s/{{dnssecroot}}/[DNSSECROOT]/

Section 11.5.2.1.  Typo. s/opportunies/opportunities/

==[ summary of old DISCUSS ]==
(1) Section 5.7.  The format of a pledge status telemetry message seems underspecified.

(2) Section 5.8.1.  The format of the MASA audit log seems underspecified.  Is the JSON snippet presented here normative to describe the MASA audit log response?

(3) Why is Section 7.x in this document if it explains how to use BRSKI but is considered non-normative?

(4) Thank you for documenting “manufacturer control issues” in Sections 10.3 and 10.4.  It helpfully lays justifies the current design approach.  I strongly concur with the premise that “facilitate[ing] a few new operat[i]onal modes without making any changes to the BRSKI protocol” is exactly what is needed. 

My concern is that even with the current applicability statement in Section 9, the current text appears to have only standardized the first part of the lifecycle that BRSKI equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  The text doesn’t appear to cover the practical aspects of the proposed mitigations in Section 10.5 or the situations described in Section 10.3/10.4 – various situations possible in the full lifecycle usage of a BRSKI device and needed support the “additional operational modes”.  Specifically:

** There appears to be little discussion on how owners/manufacturers/vendors can facilitate second sale/used equipment beyond narrative words (in Section 10.3 and 10.4)

** There is appears to be little discussion on how to practically implement a MASA (i.e., the offline use case).  For example, (Per Section 10.5) “A manufacturer could provide a mechanism to manage the trust anchors and built-in certificates (IDevID) as an extension.  This is a substantial amount of work, and may be an area for future standardization work”.  Without the ability to change anchors on the device the additional operational modes such as offline mode seems challenging.
2019-10-16
28 Roman Danyliw Ballot comment and discuss text updated for Roman Danyliw
2019-10-16
28 Alvaro Retana
[Ballot comment]
(1) §1.3.2 (Constrained environments): "Those types of networks SHOULD NOT use this solution."  The use of Normative language seems out of place: if …
[Ballot comment]
(1) §1.3.2 (Constrained environments): "Those types of networks SHOULD NOT use this solution."  The use of Normative language seems out of place: if this document is not applicable to constrained environments, then there's no way to enforce (SHOULD NOT)...  s/SHOULD NOT/should not

(2) §2.1: In Figure 2, should the "rejected" action be a result of step 3 (instead of 2)?

  |                  |
  |            +------v-------+
  |            | (2) Identity |
  ^------------+              |
  | rejected  +------+-------+
  |                  |
  |            +------v-------+
  |            | (3) Request  |
  |            |    Join    |
  |            +------+-------+
  |                  |


(3) s/The serialNumber fields is defined in [RFC5280], and is a SHOULD field in [IDevID]./The serialNumber field is defined in [RFC5280], and is a recommended field in [IDevID].  Note that SHOULD is not used properly here because it does not have a Normative quality (as it refers to the other document).  I'm assuming that the replacement is "recommended" (per rfc2119), but it may be "required".


(4) [nits]

s/Bootstrapping to is complete/Bootstrapping is complete

§1: "This bootstrap process satisfies the [RFC7575] section 3.3 of making all operations secure by default."  Satisfies the what?  Requirement, maybe?

s/explains the details applicability/explains the detailed applicability

s/out-of-band" information"/out-of-band" information

s/This section applies is normative for uses with an ANIMA ACP./This section is normative for uses with an ANIMA ACP.

s/RFC XXXX: Manufacturer Usage Description Specification/RFC 8520: Manufacturer Usage Description Specification

s/might be previous deployed/might be previously deployed

s/were receives by/were received from

s/{{...}}/[...]
2019-10-16
28 Alvaro Retana [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana
2019-10-16
28 Alissa Cooper
[Ballot discuss]
Apologies for the multiple emails, I failed to realize there was a new Gen-ART review for this document. The follow-up from the Gen-ART …
[Ballot discuss]
Apologies for the multiple emails, I failed to realize there was a new Gen-ART review for this document. The follow-up from the Gen-ART review seems to indicate that a YANG doctor review of this document is needed and/or that the YANG issues raised by Tom Petch need fixing. Is there a plan to get either of those done?
2019-10-16
28 Alissa Cooper
[Ballot comment]
Thanks for addressing my original DISCUSS points.

Please respond to the full Gen-ART review.

Original COMMENT below.

------

I think this document would …
[Ballot comment]
Thanks for addressing my original DISCUSS points.

Please respond to the full Gen-ART review.

Original COMMENT below.

------

I think this document would benefit from two concise lists, with notes about which items in each list are defined in this document and which ones are not defined: (1) what is operationally required of a manufacturer to support BRSKI, and (2) what is operationally required of a domain owner to support BRSKI.

= Section 2.3.1 =

What precisely is meant by "TPM identification"? Could a citation be provided?

= Section 10.1 =

"The domain can maintain some privacy since it has not necessarily been
  authenticated and is not authoritatively bound to the supply chain."

What does this mean? That the domain can expect the manufacturer not to trust the domainID because it hasn't been authenticated?

= Section 10.2 =

"The above situation is to be distinguished from a residential/
  individual person who registers a device from a manufacturer: that an
  enterprise/ISP purchases routing products is hardly worth mentioning.
  Deviations would, however, be notable."

What does the last sentence mean?
2019-10-16
28 Alissa Cooper [Ballot Position Update] Position for Alissa Cooper has been changed to Discuss from No Objection
2019-10-16
28 Alissa Cooper
[Ballot comment]
Thanks for addressing my DISCUSS points. Original COMMENT below.

------

I think this document would benefit from two concise lists, with notes about …
[Ballot comment]
Thanks for addressing my DISCUSS points. Original COMMENT below.

------

I think this document would benefit from two concise lists, with notes about which items in each list are defined in this document and which ones are not defined: (1) what is operationally required of a manufacturer to support BRSKI, and (2) what is operationally required of a domain owner to support BRSKI.

= Section 2.3.1 =

What precisely is meant by "TPM identification"? Could a citation be provided?

= Section 10.1 =

"The domain can maintain some privacy since it has not necessarily been
  authenticated and is not authoritatively bound to the supply chain."

What does this mean? That the domain can expect the manufacturer not to trust the domainID because it hasn't been authenticated?

= Section 10.2 =

"The above situation is to be distinguished from a residential/
  individual person who registers a device from a manufacturer: that an
  enterprise/ISP purchases routing products is hardly worth mentioning.
  Deviations would, however, be notable."

What does the last sentence mean?
2019-10-16
28 Alissa Cooper [Ballot Position Update] Position for Alissa Cooper has been changed to No Objection from Discuss
2019-10-16
28 Alexey Melnikov
[Ballot comment]
Thank you for addressing my DISCUSS points.

Some comments below were still applicable to -27, but some might be out of date.

In …
[Ballot comment]
Thank you for addressing my DISCUSS points.

Some comments below were still applicable to -27, but some might be out of date.

In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete IRI SHOULD be in
  this extension, including the scheme, iauthority, and ipath.  As a
  consideration to constrained systems, this MAY be reduced to only the
  iauthority, in which case a scheme of "https://" and ipath of
  "/.well-known/est" is to be assumed, as explained in section
  Section 5.

This is not a problem per se, but mixing absolute URIs and iauthority in the same field makes me rather uncomfortable. Maybe you can define ABNF for this field to make it crystally clear what is allowed here.
This would also avoid the need to use SHOULD and MAY above.

In 2.3.2: "https" URI scheme needs a Normative reference.

2.7.  Cloud Registrar

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].

Just referencing RFC 6125 is not clear enough, as there are lots of parameters that need to be specified:

a) which of CN-ID/DNS-ID/URI-ID/SRV-ID are allowed
b) are wildcards allowed in any of these?
2019-10-16
28 Alexey Melnikov [Ballot Position Update] Position for Alexey Melnikov has been changed to No Objection from Discuss
2019-10-15
28 Warren Kumari
[Ballot comment]
I initially balloted Recuse as I'm the author of a similar document "Secure Device Install" (draft-ietf-opsawg-sdi) - after discussions and consideration …
[Ballot comment]
I initially balloted Recuse as I'm the author of a similar document "Secure Device Install" (draft-ietf-opsawg-sdi) - after discussions and consideration I'm changing my position to No Objection; my document addresses a small slice of the problem space.

My initial Recuse also contained a bit of a soapbox rant about the ability of users to buy and use old equipment (avoiding having network gear become a "subscription" service). I'm still somewhat twitchy about this, but am balloting NoObj anyway.
2019-10-15
28 Warren Kumari [Ballot Position Update] Position for Warren Kumari has been changed to No Objection from Recuse
2019-10-13
28 Dan Romascanu Request for Telechat review by GENART Completed: Ready with Issues. Reviewer: Dan Romascanu. Sent review to list.
2019-10-12
28 Christian Huitema Request for Telechat review by SECDIR Completed: Has Nits. Reviewer: Christian Huitema. Sent review to list.
2019-10-04
28 Jean Mahoney Request for Telechat review by GENART is assigned to Dan Romascanu
2019-10-04
28 Jean Mahoney Request for Telechat review by GENART is assigned to Dan Romascanu
2019-10-03
28 Suhas Nandakumar Request for Telechat review by ARTART is assigned to Eliot Lear
2019-10-03
28 Suhas Nandakumar Request for Telechat review by ARTART is assigned to Eliot Lear
2019-10-03
28 Tero Kivinen Request for Telechat review by SECDIR is assigned to Christian Huitema
2019-10-03
28 Tero Kivinen Request for Telechat review by SECDIR is assigned to Christian Huitema
2019-10-01
28 Amy Vezza Telechat date has been changed to 2019-10-17 from 2019-07-11
2019-09-19
28 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-28.txt
2019-09-19
28 (System) New version approved
2019-09-19
28 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-19
28 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-19
28 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-19
28 Michael Richardson Uploaded new revision
2019-09-17
27 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman. …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman.

1) Resolved

2) Resolved

3) Resolved

4) In 5.8.1:

Format of different fields is not defined in enough details, so this is not interoperable. Are numeric fields always represented as JSON numbers?

5) Resolved
2019-09-17
27 Alexey Melnikov
[Ballot comment]
Some comments below are still applicable to -27, but some might be out of date.

In 2.3.2:

  As explained in [RFC5280 …
[Ballot comment]
Some comments below are still applicable to -27, but some might be out of date.

In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete IRI SHOULD be in
  this extension, including the scheme, iauthority, and ipath.  As a
  consideration to constrained systems, this MAY be reduced to only the
  iauthority, in which case a scheme of "https://" and ipath of
  "/.well-known/est" is to be assumed, as explained in section
  Section 5.

This is not a problem per se, but mixing absolute URIs and iauthority in the same field makes me rather uncomfortable. Maybe you can define ABNF for this field to make it crystally clear what is allowed here.
This would also avoid the need to use SHOULD and MAY above.

In 2.3.2: "https" URI scheme needs a Normative reference.

2.7.  Cloud Registrar

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].

Just referencing RFC 6125 is not clear enough, as there are lots of parameters that need to be specified:

a) which of CN-ID/DNS-ID/URI-ID/SRV-ID are allowed
b) are wildcards allowed in any of these?
2019-09-17
27 Alexey Melnikov Ballot comment and discuss text updated for Alexey Melnikov
2019-09-16
27 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-27.txt
2019-09-16
27 (System) New version approved
2019-09-16
27 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
27 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
27 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Toerless Eckert , Kent Watsen
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
27 Michael Richardson Uploaded new revision
2019-09-16
26 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman. …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman.

1) Resolved

2) Resolved

3) Resolved

4) In 5.8.1:

Format of different fields is not defined in enough details, so this is not interoperable. Please specify what format is used for dates and nonces.

5) Resolved
2019-09-16
26 Alexey Melnikov
[Ballot comment]
Some comments below are still applicable to -26, but some might be out of date.

The first mention of HTTP 1.1 needs a …
[Ballot comment]
Some comments below are still applicable to -26, but some might be out of date.

The first mention of HTTP 1.1 needs a Normative reference.


In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete IRI SHOULD be in
  this extension, including the scheme, iauthority, and ipath.  As a
  consideration to constrained systems, this MAY be reduced to only the
  iauthority, in which case a scheme of "https://" and ipath of
  "/.well-known/est" is to be assumed, as explained in section
  Section 5.

This is not a problem per se, but mixing absolute URIs and iauthority in the same field makes me rather uncomfortable. Maybe you can define ABNF for this field to make it crystally clear what is allowed here.
This would also avoid the need to use SHOULD and MAY above.

In 2.3.2: "https" URI scheme needs a Normative reference.

2.7.  Cloud Registrar

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].

Just referencing RFC 6125 is not clear enough, as there are lots of parameters that need to be specified:

a) which of CN-ID/DNS-ID/URI-ID/SRV-ID are allowed
b) are wildcards allowed in any of these?
2019-09-16
26 Alexey Melnikov Ballot comment and discuss text updated for Alexey Melnikov
2019-09-16
26 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman. …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman.

1) Resolved

2) In 5.6:

  assertion:  The method used to verify assertion.  See Section 5.5.5.

Section 5.5.5 doesn't define syntax of this field in enough details to implement.
Can it contain one of the allowed values (like C enum)?

— I couldn’t quite figure out what was changed from wdiff. I don’t think this was addressed.

3) Resolved

4) In 5.8.1:

Format of different fields is not defined in enough details, so this is not interoperable. Please specify what format is used for dates and nonces.

5) Resolved
2019-09-16
26 Alexey Melnikov Ballot discuss text updated for Alexey Melnikov
2019-08-30
26 Éric Vyncke [Ballot comment]
Thank you for addressing my previous DISCUSSes and COMMENTs


-éric
2019-08-30
26 Éric Vyncke [Ballot Position Update] Position for Éric Vyncke has been changed to No Objection from Discuss
2019-08-29
26 Adam Roach [Ballot comment]
Thanks for addressing my DISCUSS points.
2019-08-29
26 Adam Roach [Ballot Position Update] Position for Adam Roach has been changed to No Objection from Discuss
2019-08-15
26 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-26.txt
2019-08-15
26 (System) New version approved
2019-08-15
26 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Michael Behringer , Toerless Eckert , Kent Watsen
2019-08-15
26 Michael Richardson Uploaded new revision
2019-08-15
26 Michael Richardson Uploaded new revision
2019-08-12
25 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-25.txt
2019-08-12
25 (System) New version approved
2019-08-12
25 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Max Pritikin , Michael Richardson , Michael Behringer , Kent Watsen
2019-08-12
25 Michael Richardson Uploaded new revision
2019-08-12
25 Michael Richardson Uploaded new revision
2019-07-22
24 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-24.txt
2019-07-22
24 (System) New version approved
2019-07-22
24 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Steinthor Bjarnason , Michael Behringer , Kent Watsen
2019-07-22
24 Michael Richardson Uploaded new revision
2019-07-22
23 (System) Sub state has been changed to AD Followup from Revised ID Needed
2019-07-22
23 (System) IANA Review state changed to Version Changed - Review Needed from IANA - Not OK
2019-07-22
23 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-23.txt
2019-07-22
23 (System) New version approved
2019-07-22
23 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Steinthor Bjarnason , Michael Behringer , Kent Watsen
2019-07-22
23 Michael Richardson Uploaded new revision
2019-07-21
22 Sheng Jiang Added to session: IETF-105: anima  Tue-1330
2019-07-18
22 Jean Mahoney Request for Last Call review by GENART Completed: On the Right Track. Reviewer: Jari Arkko.
2019-07-15
22 Magnus Westerlund [Ballot Position Update] Position for Magnus Westerlund has been changed to No Objection from Discuss
2019-07-15
22 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman. …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman.

1) In Section 5:

  o  In the language of [RFC6125] this provides for a SERIALNUM-ID
      category of identifier that can be included in a certificate and
      therefore that can also be used for matching purposes.  The
      SERIALNUM-ID whitelist is collated according to manufacturer trust
      anchor since serial numbers are not globally unique.

I think now you are just inventing things. Please define what exactly SERIALNUM-ID is. Cut & paste text from RFC 6125, if needed.

2) In 5.6:

  assertion:  The method used to verify assertion.  See Section 5.5.5.

Section 5.5.5 doesn't define syntax of this field in enough details to implement.
Can it contain one of the allowed values (like C enum)?

3) Resolved

4) In 5.8.1:

Format of different fields is not defined, so this is not interoperable.

5) In 8.1:

  This document extends the definitions of "est" (so far defined via
  RFC7030) in the "https://www.iana.org/assignments/well-known-uris/
  well-known-uris.xhtml" registry as follows:

  o  add /.well-known/est/requestvoucher (see Section 5.5 )

  o  add /.well-known/est/requestauditlog (see Section 5.7)

The .well-known URIs IANA registry doesn't list anything below the first level (i.e. "est" in your case).
So I think you really want to have 2 IANA actions here:

a) Add the reference to this document as another reference for "est".
-- This was addressed.

b) create a new registry of "est" URIs and add your 2 URIs above to it and also populate other entries from the original EST RFC.
2019-07-15
22 Alexey Melnikov
[Ballot comment]
The first mention of HTTP 1.1 needs a Normative reference.


In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete …
[Ballot comment]
The first mention of HTTP 1.1 needs a Normative reference.


In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete IRI SHOULD be in
  this extension, including the scheme, iauthority, and ipath.  As a
  consideration to constrained systems, this MAY be reduced to only the
  iauthority, in which case a scheme of "https://" and ipath of
  "/.well-known/est" is to be assumed, as explained in section
  Section 5.

This is not a problem per se, but mixing absolute URIs and iauthority in the same field makes me rather uncomfortable. Maybe you can define ABNF for this field to make it crystally clear what is allowed here.
This would also avoid the need to use SHOULD and MAY above.

In 2.3.2: "https" URI scheme needs a Normative reference.

2.7.  Cloud Registrar

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].

Just referencing RFC 6125 is not clear enough, as there are lots of parameters that need to be specified:

a) which of CN-ID/DNS-ID/URI-ID/SRV-ID are allowed
b) are wildcards allowed in any of these?
2019-07-15
22 Alexey Melnikov Ballot comment and discuss text updated for Alexey Melnikov
2019-07-11
22 Cindy Morgan IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation
2019-07-11
22 Magnus Westerlund
[Ballot discuss]
Hi,

A. This is really a discuss discuss. With to little time to dig into the details it appears that this protocol is …
[Ballot discuss]
Hi,

A. This is really a discuss discuss. With to little time to dig into the details it appears that this protocol is making i hack of its interface towards the its transport. It appears to attempt to use an HTTP rest interface, but then it is also have a lot of talking about requirement for the TLS connection underlying the HTTP. So to illustrate the issue I see here is what happens if one like to use QUIC as the underlying transport for the rest interface rather than TCP/TLS? So can this document achieve a clearer interface to the lower layers so that it will be simpler to move the protocol to another underlying version of the HTTP "transport"?

B. Section 5.6:

The server MUST answer with a suitable 4xx
  or 5xx HTTP [RFC2616] error code when a problem occurs.

Referencing RFC 2616 that has been obsolete by RFC 7230 and companions. I do note that there are no normative reference for that part in this document.
2019-07-11
22 Magnus Westerlund [Ballot Position Update] New position, Discuss, has been recorded for Magnus Westerlund
2019-07-11
22 Mirja Kühlewind
[Ballot comment]
I agree with Alissa's discuss that the conclusion of section 10(.3) should be to recommend a manual configuration mode. Also with respect to …
[Ballot comment]
I agree with Alissa's discuss that the conclusion of section 10(.3) should be to recommend a manual configuration mode. Also with respect to section 10.2: if ownership is "enforced" by the manufacturer, there should also probably be a way for the buyer to check if ownership was transferred by the saler during the re-sale process.

Two other small comments on more load related points:

1) sec 4.1: "Connection attempts SHOULD be run in parallel to avoid head of queue
  problems wherein an attacker running a fake proxy or registrar could
  perform protocol actions intentionally slowly.  The pledge SHOULD
  continue to listen to for additional GRASP M_FLOOD messages during
  the connection attempts."
One minor comment: Maybe also say explicitly, while running in parallel, one should not send all initial messages at exactly the same time but pace  them out (e.g. one every 3 secs) to avoid network overload when initial connectivity is very constraint.

2) sec 4.3: " It must
  be sufficiently low that the aggregate amount of periodic M_FLOODs
  from all EST servers causes negligible traffic across the ACP."
I know this is a little bit a blurry requirement but I would still like to see a MUST here. Or maybe give an upper bound for the maximum frequency, e.g. MUST NOT send more than once per minute...? Not sure it there is a reasonable value here.
2019-07-11
22 Mirja Kühlewind [Ballot Position Update] Position for Mirja Kühlewind has been changed to No Objection from No Record
2019-07-11
22 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman. …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

I agree with DISCUSS points from Alissa, Adam and Roman.

1) In Section 5:

  o  In the language of [RFC6125] this provides for a SERIALNUM-ID
      category of identifier that can be included in a certificate and
      therefore that can also be used for matching purposes.  The
      SERIALNUM-ID whitelist is collated according to manufacturer trust
      anchor since serial numbers are not globally unique.

I think now you are just inventing things. Please define what exactly SERIALNUM-ID is. Cut & paste text from RFC 6125, if needed.

2) In 5.6:

  assertion:  The method used to verify assertion.  See Section 5.5.5.

Section 5.5.5 doesn't define syntax of this field in enough details to implement.
Can it contain one of the allowed values (like C enum)?

3) In 5.8

  This is done with an HTTP GET using the operation path value of
  "/.well-known/est/requestauditlog".

Here you say to use HTTP GET.

  The registrar SHOULD HTTP POST the same registrar voucher-request as

But you only define how to use POST. I think the first "GET" is supposed to be "POST".

4) In 5.8.1:

Format of different fields is not defined, so this is not interoperable.

5) In 8.1:

  This document extends the definitions of "est" (so far defined via
  RFC7030) in the "https://www.iana.org/assignments/well-known-uris/
  well-known-uris.xhtml" registry as follows:

  o  add /.well-known/est/requestvoucher (see Section 5.5 )

  o  add /.well-known/est/requestauditlog (see Section 5.7)

The .well-known URIs IANA registry doesn't list anything below the first level (i.e. "est" in your case).
So I think you really want to have 2 IANA actions here:

a) Add the reference to this document as another reference for "est".

b) create a new registry of "est" URIs and add your 2 URIs above to it and also populate other entries from the original EST RFC.
2019-07-11
22 Alexey Melnikov Ballot discuss text updated for Alexey Melnikov
2019-07-11
22 Alexey Melnikov
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

1) In Section 5:

  o  In the language of …
[Ballot discuss]
Thank you for this document. Despite comments/DISCUSSes raised, this was a good read.

1) In Section 5:

  o  In the language of [RFC6125] this provides for a SERIALNUM-ID
      category of identifier that can be included in a certificate and
      therefore that can also be used for matching purposes.  The
      SERIALNUM-ID whitelist is collated according to manufacturer trust
      anchor since serial numbers are not globally unique.

I think now you are just inventing things. Please define what exactly SERIALNUM-ID is. Cut & paste text from RFC 6125, if needed.

2) In 5.6:

  assertion:  The method used to verify assertion.  See Section 5.5.5.

Section 5.5.5 doesn't define syntax of this field in enough details to implement.
Can it contain one of the allowed values (like C enum)?

3) In 5.8

  This is done with an HTTP GET using the operation path value of
  "/.well-known/est/requestauditlog".

Here you say to use HTTP GET.

  The registrar SHOULD HTTP POST the same registrar voucher-request as

But you only define how to use POST. I think the first "GET" is supposed to be "POST".

4) In 5.8.1:

Format of different fields is not defined, so this is not interoperable.

5) In 8.1:

  This document extends the definitions of "est" (so far defined via
  RFC7030) in the "https://www.iana.org/assignments/well-known-uris/
  well-known-uris.xhtml" registry as follows:

  o  add /.well-known/est/requestvoucher (see Section 5.5 )

  o  add /.well-known/est/requestauditlog (see Section 5.7)

The .well-known URIs IANA registry doesn't list anything below the first level (i.e. "est" in your case).
So I think you really want to have 2 IANA actions here:

a) Add the reference to this document as another reference for "est".

b) create a new registry of "est" URIs and add your 2 URIs above to it and also populate other entries from the original EST RFC.
2019-07-11
22 Alexey Melnikov
[Ballot comment]
The first mention of HTTP 1.1 needs a Normative reference.


1.5.  Requirements for Autonomic Network Infrastructure (ANI) devices

  Upon successfully validating a …
[Ballot comment]
The first mention of HTTP 1.1 needs a Normative reference.


1.5.  Requirements for Autonomic Network Infrastructure (ANI) devices

  Upon successfully validating a voucher artiface, a status telemetry
  MUST be returned.  See Section 5.7.

"artiface" is an unfortunate typo. I think you meant "artifact" here.

In 2.3.2:

  As explained in [RFC5280] section 7.4, a complete IRI SHOULD be in
  this extension, including the scheme, iauthority, and ipath.  As a
  consideration to constrained systems, this MAY be reduced to only the
  iauthority, in which case a scheme of "https://" and ipath of
  "/.well-known/est" is to be assumed, as explained in section
  Section 5.

This is not a problem per se, but mixing absolute URIs and iauthority in the same field makes me rather uncomfortable. Maybe you can define ABNF for this field to make it crystally clear what is allowed here.
This would also avoid the need to use SHOULD and MAY above.

In 2.3.2: "https" URI scheme needs a Normative reference.

2.7.  Cloud Registrar

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].

Just referencing RFC 6125 is not clear enough, as there are lots of parameters that need to be specified:

a) which of CN-ID/DNS-ID/URI-ID/SRV-ID are allowed
b) are wildcards allowed in any of these?


4.  Proxying details (Pledge - Proxy - Registrar)

  In order to permit the proxy functionality to be implemented on the
  maximum variety of devices the chosen mechanism SHOULD use the
  minimum amount of state on the proxy device.

What does this mean? How can compliance with this SHOULD be evaluated? I think you want to use lower case "should" here.


In 5.7 (and a similar issue elsewhere):

  {
    "version":"1",
    "Status":FALSE /* TRUE=Success, FALSE=Fail"

This is not valid JSON, this is not even valid pseudo-JSON. Please move the comment:

TRUE=Success, FALSE=Fail

After this block to avoid confusion. Please add missing "," after each attribute value


    "Reason":"Informative human readable message"
    "reason-context": { additional JSON }
  }
2019-07-11
22 Alexey Melnikov [Ballot Position Update] New position, Discuss, has been recorded for Alexey Melnikov
2019-07-11
22 Mirja Kühlewind
[Ballot comment]
sec 4.1: "Connection attempts SHOULD be run in parallel to avoid head of queue
  problems wherein an attacker running a fake proxy …
[Ballot comment]
sec 4.1: "Connection attempts SHOULD be run in parallel to avoid head of queue
  problems wherein an attacker running a fake proxy or registrar could
  perform protocol actions intentionally slowly.  The pledge SHOULD
  continue to listen to for additional GRASP M_FLOOD messages during
  the connection attempts."
One minor comment: Maybe also say explicitly, while running in parallel, one should not send all initial messages at exactly the same time but pace  them out (e.g. one every 3 secs) to avoid network overload when initial connectivity is very constraint.

sec 4.3: " It must
  be sufficiently low that the aggregate amount of periodic M_FLOODs
  from all EST servers causes negligible traffic across the ACP."
I know this is a little bit a blurry requirement but I would still like to see a MUST here. Or maybe give an upper bound for the maximum frequency, e.g. MUST NOT send more than once per minute...? Not sure it there is a reasonable value here.
2019-07-11
22 Mirja Kühlewind Ballot comment text updated for Mirja Kühlewind
2019-07-10
22 Adam Roach
[Ballot discuss]
Thanks to everyone who invested time in developing this mechanism.
I have two blocking comments that should be quite easy to resolve.

--------------------------------------------------------------------------- …
[Ballot discuss]
Thanks to everyone who invested time in developing this mechanism.
I have two blocking comments that should be quite easy to resolve.

---------------------------------------------------------------------------

§5:

>  MASA URI is "https://" iauthority "/.well-known/est".

This doesn't make sense: iauthority is a component of IRIs, not of URIs. In
URIs this is simply an "authority." It's not simply a terminology distinction:
converting from an iauthority to an authority requires idna encoding. Please
consult with an IRI expert (which I do not consider myself to be) to work out
the proper terminology and procedures here.  If you need help finding an
expert, please let me know and I'll track someone down for you.

---------------------------------------------------------------------------

§5.8:

>  Rather than returning the audit log as a response to the POST (with a
>  return code 200), the MASA MAY instead return a 201 ("Created")
>  RESTful response ([RFC7231] section 7.1) containing a URL to the
>  prepared (and easily cachable) audit response.

The DISCUSS portion of my comment on this text is that it is unclear about how
the URL is to be returned. It can just as easily be interpreted as returning
it in a "Location" header field as it could as returning it in the response
body -- or maybe somewhere else entirely (e.g., a link relation).  This
ambiguity will cause an interop issue. Please be explicit about precisely how
the value is conveyed.

While not part of the DISCUSS, I also have a fairly serious comment on the
phrasing and citation of  "return a 201 ("Created") RESTful response
([RFC7231] section 7.1)". Section 7.1 points to the top-level discussion of
Control Data header fields, rather than any general discussion of RESTful
responses.  It's worth noting that the term "RESTful" never appears in RFC
7231
, so it's really unclear what section this was attempting to target.
Perhaps 6.3.2?
2019-07-10
22 Adam Roach
[Ballot comment]
I share Warren's discomfort with the models described in this document,
especially in the context of device viability after companies disappear or
change …
[Ballot comment]
I share Warren's discomfort with the models described in this document,
especially in the context of device viability after companies disappear or
change focus.  It's not clear that this an unintended side effect of the
model: much of the text around "legal ownership" seems aimed at subverting the
doctrine of first sale/rule of exhaustion, and congruent laws around the world.

While I sincerely appreciate the treatment of this issue in section 10.3, I
think the document really needs *normative* behaviors defined that address the
two issues of resale and device utility in a world where the device
manufacturer (as that term is defined in section 1.2) is no longer available,
rather than the high-level non-normative sketches currently provided for
future study.

In short, beyond the user-hostile effects of these two issues, I have
ethical issues with the IETF publishing a protocol that promotes the
unnecessary creation of e-waste; and, unless handled properly, that will
be the inevitable result of the two factors I cite above.

While this isn't part of my DISCUSS, I can't in good conscience ballot "No
Objection" to a document that doesn't normatively address those issues.  I
urge the authors and working group to add text that does so.  I do, however,
recognize that the prospect of this happening at this stage of the process is
vanishingly small. In the absence of such admittedly unlikely action, I plan
to Abstain after my DISCUSS issue has been addressed.

---------------------------------------------------------------------------

§2.1

>  |            +------v-------+
>  |            | (5) Enroll  |<---+ (non-error HTTP codes  )
>  ^------------+              |\___/ (e.g. 201 'Retry-After')
>  | Enroll    +------+-------+
>  | Failure          |

I can't work out what a "Retry-After" would mean in a "201 Created" response.
As noted above, section 5.6 of this document does indicate the use of a
"Retry-After" header field with a 202 response, so I presume this diagram
should say 202?

---------------------------------------------------------------------------

§5:

>  BRSKI uses existing CMS message formats for existing EST operations.
>  BRSKI uses JSON [RFC7159] for all new operations defined here, and
>  voucher formats.

RFC 7159 has been obsoleted by RFC 8259.

---------------------------------------------------------------------------

§5.2

>  The pledge SHOULD include an [RFC7231] section 5.3.2 "Accept" header
>  indicating the acceptable media type for the voucher response.  The

Nit: ..."Accept" header field indicating...

---------------------------------------------------------------------------

§5.5

>  The Registrar SHOULD include an [RFC7231] section 5.3.2 "Accept"
>  header indicating the response media types that are acceptable.  This

Nit: ..."Accept" header field indicating...

>  field and appropriate 'Accept header' field values from the physical

Nit: ...'Accept header field' values...

---------------------------------------------------------------------------

§5.6

>  pledge would keep track of the appropriate Retry-After header values

Nit: "...Retry-After header field values..."

>  desired type or using the desired algorithms (as indicated by the
>  Accept: headers, and algorithms used in the signature) cannot be

Nit: "...Accept: header fields, ..."

>  The voucher response format is as indicated in the submitted accept
>  header or based on the MASA's prior understanding of proper format

Nit: "...Accept header field..."

---------------------------------------------------------------------------

§5.6

>  {
>    "ietf-voucher:voucher": {
>      "nonce": "62a2e7693d82fcda2624de58fb6722e5",
>      "assertion": "logging"
>      "pinned-domain-cert": "base64encodedvalue=="
>      "serial-number": "JADA123456789"
>    }
>  }

This JSON is syntactically invalid. Please run this example and all other
instances of JSON in this document through a validation tool.

With a reasonably modern version of nodejs, validation can be as simple as
something like:

node -e 'console.log(JSON.stringify(JSON.parse(`
  {
    "ietf-voucher:voucher": {
      "nonce": "62a2e7693d82fcda2624de58fb6722e5",
      "assertion": "logging"
      "pinned-domain-cert": "base64encodedvalue=="
      "serial-number": "JADA123456789"
    }
  }
`)));'

If the JSON is valid, you'll get no errors.

---------------------------------------------------------------------------

§5.7:

>  {
>    "version":"1",
>    "Status":FALSE /* TRUE=Success, FALSE=Fail"
>    "Reason":"Informative human readable message"
>    "reason-context": { additional JSON }
>  }

Please see https://tools.ietf.org/html/rfc8259#section-3 --

  A JSON value MUST be an object, array, number, or string, or one of
  the following three literal names:

      false
      null
      true

  The literal names MUST be lowercase.  No other literal names are
  allowed.

There are also a number of other syntax errors in this JSON example, even
setting aside the "additional JSON" indication.

---------------------------------------------------------------------------

§5.8:

>  A MASA that returns a code 200 MAY also include a Location: header
>  for future reference by the registrar.

Nit: "Location: header field"

Also, it's not 100% clear what the registrar would use this URI for. Please
explain in the document.

---------------------------------------------------------------------------

§5.8.1:

>  {
>    "version":"1",
>    "events":[
>      {
>      "date":"",
>      "domainID":"",
>      "nonce":""
>      "assertion":""
>      "truncated":""
>      },
>      {
>      "date":"",
>      "domainID":"",
>      "nonce":""
>      "assertion":""
>      }
>    ],
>    "truncation": {
>      "nonced duplicates": "",
>      "nonceless duplicates": "",
>      "arbitrary": ""
>      }
>  }

This JSON is syntactically invalid. Please validate.

---------------------------------------------------------------------------

§5.8.1:

>  Distribution of a large log is less than ideal.  This structure can
>  be optimized as follows: Nonced or Nonceless entries for the same
>  domainID MAY be truncated from the log leaving only the single most

Nit: "truncate" means to shorten something by removing only the beginning or
only the end. I believe that you mean "omitted" (here and elsewhere in this
section).

---------------------------------------------------------------------------

§5.9.4:

>  {
>    "version":"1",
>    "Status":TRUE /* TRUE=Success, FALSE=Fail"
>    "Reason":"Informative human readable message"
>    "reason-context": "Additional information"
>  }

This JSON is syntactically invalid. Please validate.


---------------------------------------------------------------------------

§6:

>  In the BRSKI context, the EST "Content-Transfer-Encoding" header if
>  present, SHOULD be ignored.  This header does not need to included.

Nit: "...header field, if present..."

Nit: "This header field does not..."

---------------------------------------------------------------------------

§8.1:

>  This document extends the definitions of "est" (so far defined via
RFC7030) in the "https://www.iana.org/assignments/well-known-uris/
>  well-known-uris.xhtml" registry as follows:
>
>  o  add /.well-known/est/requestvoucher (see Section 5.5 )
>
>  o  add /.well-known/est/requestauditlog (see Section 5.7)

The .well-known registry does not contain sub-paths under the path
element that appears after ".well-known". I note that "est" has already
been registered by RFC 7030. There are a bunch of ways this can be
handled, the easiest of which would be a request for the IANA to add
this RFC alongside RFC 7030 to the entry for "est."

More complex solutions would be selecting a different path than
"est", or establishing a separate sub-registry for paths under
the "est" well-known path.

---------------------------------------------------------------------------

§8.4:

>  Service Name: _brski-proxy
...
>  Service Name: _brski-registrar

You almost certainly don't want the service name to contain a leading
underscore. That is added as part of the DNS-SD resolution process, but
not part of the service name itself.

---------------------------------------------------------------------------

Appendix B:

>  For example, if the first
>  Multicast DNS _bootstrapks._tcp.local response doesn't work then the
>  second and third responses are tried.

I got a little lost here. Where is the "bootstrapks" service defined?
I don't see it defined in this document or registered at
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=bootstrapks
2019-07-10
22 Adam Roach [Ballot Position Update] New position, Discuss, has been recorded for Adam Roach
2019-07-10
22 Benjamin Kaduk
[Ballot discuss]
(1) The text of the document suffers from lack of clarity throughout about
whether the nonce-ful operation is mandatory or not, with several …
[Ballot discuss]
(1) The text of the document suffers from lack of clarity throughout about
whether the nonce-ful operation is mandatory or not, with several
figures and discussions making declarative statements about nonce usage
and others saying that nonce usage is optional. (See COMMENT.)

(2) There also seems to be internal inconsistency about the proximity
assertion process (and, any sort of assertion in a voucher-request at
all, it seems).  I've tried to note some locations in the Comment
section.

(3) There are other internal inconsistencies as well, including about
section references for when various behaviors occur (see COMMENT).

(4) In Section 5.6.1

  The pledge MUST verify that the voucher nonce field is accurate and
  matches the nonce the pledge submitted to this registrar, or that the
  voucher is nonceless (see Section 7.2).

Is the pledge supposed to accept a nonceless voucher in response to a
nonce-ful voucher request?

(5) RFC7951 is cited for the audit log response, but I cannot find the
underlying YANG module that is JSON-encoded using the RFC 7951
procedures.
Furthermore, I don't think the "nonce" handling (with explicit "NULL"
string where base64-encoded binary data might be expected) would be
consistent with the 7951 rules.

(5) the new /enrollstatus EST endpoint seems under-specified.

(6) In Section 7.2:

  The pledge can choose to accept vouchers using less secure methods.
  These methods enable offline and emergency (touch based) deployment
  use cases:

  1.  The pledge MUST accept nonceless vouchers.  This allows for a use

It's very unclear to me what this "MUST" means, especially so given that
the entire section 7 is declared to be non-normative.  Is it that the
client "can choose" whether it "MUST accept nonceless vouchers"?
That would seem to make the MUST basically ineffective.

More broadly, if the entire Section 6 is non-normative, why is there any
normative language in it?

(7) the new /enrollstatus and /voucher_status well-known EST endpoints
are not registered in Section 8.1

(7.1) I think we also need to register the
"urn:ietf:params:xml:ns:yang:ietf-mud-brski-masa"  XML namespace.

(8) The versioning mechanism for Pledge BRSKI Status Telemetry is
underspecified, including the interaction with new registered values.

(9) The versioning mechainsm for the MASA audit log response is
underspecified, including whether a registry of field names is
appropriate.

(10) The term PKIX seems to be incorrectly used a few times; it refers
to the Internet PKI, and so things like a private PKI internal to a
manufacturer would probably not be best described as such.  Such private
PKIs can of course still reuse the protocols and mechanisms developed
for PKIX, and it's accurate to describe them as such.

(11) In a few places we describe the voucher-request in terms of its
YANG structure but do not say that it has to be wrapped in a signed CMS
object as is done for the RFC 8366 voucher.

(12) Maybe this is a "discuss discuss", but why do we need SHA-1 in the
domainID calculation?

(13) In Section 5.5.1:

  As described in [RFC8366] vouchers are normally short lived to avoid
  revocation issues.  If the request is for a previous (expired)
  voucher using the same registrar then the request for a renewed
  voucher SHOULD be automatically authorized.  The MASA has sufficient

I don't understand what "for a previous (expired) voucher" means.
Is it something like "containing the same content as a previous voucher
request for which a voucher was issued", with the presumption that the
voucher expired before the pledge could successfully imprint, so it
needs to try again?  Or does this extend to longer timescales, like a
device that gets deployed for a couple years and is  then reset to
factory settings and has to rebootstrap but is still by the same
registrar?


(14) In Section 5.6:

                            The server MUST answer with a suitable 4xx
  or 5xx HTTP [RFC2616] error code when a problem occurs.  In this
  case, the response data from the MASA MUST be a plaintext human-
  readable (ASCII, English) error message containing explanatory
  information describing why the request was rejected.

It seems hard to support this stance on internationalization in 2019.


(15) In Section 5.9.4:

  To indicate successful enrollment the client SHOULD re-negotiate the
  EST TLS session using the newly obtained credentials.  This occurs by
  the client initiating a new TLS ClientHello message on the existing
  TLS connection.  The client MAY simply close the old TLS session and
  start a new one.  The server MUST support either model.

Is this supposed to be sending a new TLS ClientHello in the application
data channel or as a new handshake message (aka "renegotiation")?  The
latter is not possible in TLS 1.3 and is generally disrecommended
anyways even in TLS 1.2.  I would strongly suggest to remove the
"renegotiation" option and just leave "close the connection and start a
new connection/handshake".
2019-07-10
22 Benjamin Kaduk
[Ballot comment]
[disclaimer: some of these comments get pretty blunt at the end; it's a
long document and I'm tired.  Please try not to get …
[Ballot comment]
[disclaimer: some of these comments get pretty blunt at the end; it's a
long document and I'm tired.  Please try not to get too annoyed if I'm
failing to see something that's right in front of me.]

I concur with the directorate reviewers that expected a
high-level security analysis of what information flows where, and what
policy choices can be made that affect it.  At a *very* high level
(skipping over a lot of things that I would expect to see), this would
be structured like:

On initial bootstrap, a new device uses local service autodiscovery to
locate a (proxy to a) local registrar.  Having found a candidate
registrar, the fledgling pledge sends a fair bit of information about
itself to the registrar, including its serial number and device identity
(IDevID) along with a voucher request.  The registrar can determine
whether it expected such a device to appear, and locate a MASA, probably
from an extension in the IDevID.  Having determined that the MASA is
suitable, the entire information from the initial voucher request
(including device serial number) is transmitted over the internet in a
TLS protected channel to the manufacturer, along with information about
the registrar/owner.  The manufacturer can then apply policy based onthe
provided information and other sources of information, deciding whether
to approve the claim  by the registrar to own the device; if the claim
is accepted, a voucher is issued that directs the device to accept its
new owner.  The voucher is returned to the registrar, but not
necessarily to the device -- the registrar has an opportunity to examine
the voucher, the MASA's audit logs, and other sources of information to
determine whether the device has been tampered with, whether the
bootstrap should be accepted, etc.  No filtering of information is
possible in the signed voucher, so this is a binary accept-or-not
decision.  If the registrar accepts the voucher as a proper one for its
device, the voucher is returned to the pledge for imprinting.
The voucher also includes a trust anchor that the pledge should use as
representing the owner, successfully bootstrapping from an environment
where only the manufacturer has some (limited) level of trust by the
device into an environment where an owner has a PKI footprint on the
device.  When BRSKI is followed with EST this single footprint is
further leveraged into the full owner's PKI and a LDevID for the device.
Subsequent reporting steps provide flows of  information to indicate
success/failure of the process.

I also concur with the directorate reviewer that wanted to see more
discussion about the tradeoff in the applicability statement between
manufacturer control and ease/automation of bootstrap

Abstract

(side note?) Is there a quick explanation of why bootstrapping can
complete with just installation of the PKI (trust anchor?) and
provisioning a locally issued certificate is not mandatory?

Section 1

  This document describes how pledges discover (or be discovered by) an
  element of the network domain to which the pledge belongs to perform
  the bootstrap.  [...]

nit: s/be/are/, IIUC.
I think there's also something funky with the wording of "to perform the
bootstrap"; we may be looking for an element "that will perform the
bootstrap".

  4.  Pledge authorizing the registrar: "Should I join it?"

nit: what is "it"?  Surely not the registrar, and presumably the
"network domain" in question?

  This document details protocols and messages to answer the above
  questions.  It uses a TLS connection and an PKIX (X.509v3)
  certificate (an IEEE 802.1AR [IDevID] LDevID) of the pledge to answer
  points 1 and 2.  It uses a new artifact called a "voucher" that the

I'm kind of confused by "[IDevID] LDevID", since my understanding was
that the LDevID is issued only after all four steps are complete.
Also, following the IDevID link lands me at a page that claims to be for
a standard of status "superseded".
nit: one can use X.509v3 without being PKIX, and it's not entirely clear
that the IDevIDs will chain up to the Internet PKI.

Section 1.2

RFC 8174 has an updated version of the BCP 14 boilerplate.

I'd suggest adding "MASA Audit Log" as a defined term to give advance
warning that this is an explicit protocol feature.

  domainID:  The domain IDentity is the 160-bit SHA-1 hash of the BIT
      STRING of the subjectPublicKey of the pinned-domain-cert leaf,
      i.e. the Registrars' certificate.  This is consistent with the
      subject key identifier (Section 4.2.1.2 [RFC5280]).

What would it take to move away from SHA-1 for this purpose?  It's
unclear how long it will be before finding a second preimage of the SPKI
hash is feasible and thus using it as an identifier no longer serves to
uniquely identify something.

  enrollment:  The process where a device presents key material to a
      network and acquires a network specific identity.  For example

nit: hyphenate "network-specific".

Section 1.4

  As a result of the protocol described herein, the bootstrapped
  devices have the Domain CA trust anchor in common.  An end entity
  certificate has optionally been issued from the Domain CA.  [...]

This end-entity certificate is supposed "to authenticate each
bootstrapped device to other parties in the domain", right?

  The major beneficiary is that it possible to use the credentials
  deployed by this protocol to secure the Autonomic Control Plane (ACP)
  ([I-D.ietf-anima-autonomic-control-plane]).

I might humbly suggest "major intended beneficiary", as there seem to be
many possibilities involving BRSKI.

Section 1.5

  The pledge must perform discovery of the proxy as described in
  Section 4.1 using GRASP M_FLOOD announcements.

Is this DULL GRASP or full-on ACP GRASP flooding?

  Upon successfully validating a voucher artiface, a status telemetry
  MUST be returned.  See Section 5.7.

nit: artifact (right?)

  The ANI Join Registrar ASA MUST support all the BRSKI and above
  listed EST operations.

nit: probably need to expand ASA the first time.

Section 2

The text following Figure 1 suggests that the Domain Registrar is not
always (also) a PKI RA, but the parentheticals in the figure itself are
easy to read as a clarification and not an optional thing, especially
since parentheticals are used in a different manner for the Key
Infrastructure box.

Section 2.1

  3.  Request to join the discovered registrar.  A unique nonce is
      included ensuring that any responses can be associated with this
      particular bootstrapping attempt.

But the nonce is not always present!

  5.  Enroll.  After imprint an authenticated TLS (HTTPS) connection
      exists between pledge and registrar.  Enrollment over Secure
      Transport (EST) [RFC7030] is then used to obtain a domain
      certificate from a registrar.

Isn't this step optional?

Section 2.2

  A voucher is a cryptographically protected artifact (a digital
  signature) to the pledge device authorizing a zero-touch imprint on
  the registrar domain.

nit: "using a digital signature"

  Vouchers provide a signed but non-encrypted communication channel
  among the pledge, the MASA, and the registrar.  The registrar
  maintains control over the transport and policy decisions allowing
  the local security policy of the domain network to be enforced.

nit: is there supposed to be a comma after "policy decisions" (in that
both the transport and policy decisions allow for policy enforcement)?

Section 2.3

  Pledge authentication and pledge voucher-request signing is via a
  PKIX certificate installed during the manufacturing process.  This is

(As noted elsewhere, "PKIX" may not be the best term here.)

  1.  Uniquely identifying the pledge by the Distinguished Name (DN)
      and subjectAltName (SAN) parameters in the IDevID.  The unique
      identification of a pledge in the voucher objects are derived
      from those parameters as described below.

These unique identifiers can (by design) be used for tracking, so let's
be sure that we talk about any privacy considerations with them, later.
I see a mention in passing in Section 10.2, at least...

  3.  Secure auto-discovery of the pledge's MASA by the registrar (see
      Section 2.8).

I don't think this is an ironclad property, since the crypto chain is
slightly limited and you are in effect trusting the pledge to hand you
something that says "use this issuer" but without as much crypto to back
that up as we might want.  We have to know that the given manufacturer
that signed the IDevID actually is associated with the device we're
trying to bootstrap, which can probably be arranged but I don't remember
being called out explicitly.

  Section 7.2.13 of [IDevID] discusses keyUsage and extendedKeyUsage
  extensions in the IDevID certificate.  Any restrictions included

I only got my hands on the 2018 rev of [IDevID], but that one does not
actually talk about extendedKeyUsage.

Section 2.3.1

  In the context of BRSKI, pledges are uniquely identified by a
  "serial-number".  This serial-number is used both in the "serial-
  number" field of voucher or voucher-requests (see Section 3) and in
  local policies on registrar or MASA (see Section 5).

(editorial) if the IDevID is supposed to be a unique identifier, why do
we need another one?

  o  The subject field's DN encoding MUST include the "serialNumber"
      attribute with the device's unique serial number.  (from [IDevID]
      section 7.2.8, and [RFC5280] section 4.1.2.4's list of standard
      attributes)

side note: I had to think a  bit to convince myself that DN is the right
thing here; when we use dnsNames it's preferred to put them in
subjectAltName to avoid having to pick a preferred/privileged one, but
the serial number does seem to be in a privileged position for
distinguishing the subject.

  o  The subject-alt field's encoding MAY include a non-critical
      version of the RFC4108 defined HardwareModuleName.  (from [IDevID]
      section 7.2.9) If the IDevID is stored in a Trusted Platform
      Module (TPM), then this field MAY contain the TPM identification
      rather than the device's serial number.  If both fields are
      present, then the subject field takes precedence.

"if both fields are present", but the subject field MUST be present, so
this field can never take precedence.

  1.  [RFC4519] section 2.31 provides an example ("WI-3005") of the
      Distinguished Name "serialNumber" attribute.  [RFC4514] indicates
      this is a printable string so no encoding is necessary.

I don't understand why these references were chosen.  Why are LDAP specs
authoritative about what the encoding format for the serialNumber DN
attribute is?  E.g., one could look at RFC 5280 to see that
X520SerialNumber is a PrintableString.

  2.  The HardwareModuleName hwSerialNum OCTET STRING.  This value is
      base64 encoded to convert it to a printable string format.

Please cite Section 4 of RFC 4648 (unless you mean base64url, in which
case use Section 5).
Also, it might be nice to somehow (maybe enumerate the first list in the same
way) tie these two items to the respective subject ND/subjectAltName
fields, to clarify why these are the only two choices.

  As explained in Section 5.5 the Registrar MUST extract the serial-
  number again itself from the pledge's TLS certificate.  [...]

To be clear, this is still the device's IDevID certificate, that just
happens to be getting used as a TLS client certificate.

Section 2.3.2

nit: maybe put a blank line after the IMPORTS are over?

Section 2.4

In Figure 3, I had to think a bit to figure out whether the text that
did not fit mid-arrow was supposed to apply to the arrow above or below
the text (e.g., "optional: mDNS query RFC6763/RFC6762").

[Hmm, so we send our TLS client cert on the provisional connection,
meaning that we have to trust the proxy and registrar to be doing the
right thing w.r.t. broadcasting our identity to the world]

Section 2.5.1

  The pledge is the device that is attempting to join.  Until the
  pledge completes the enrollment process, it has link-local network
  connectivity only to the proxy.

nit(?): I think there is a subtle difference in  meaning between "only
has link-local network connectivity to the proxy" and this text, and I'm
not sure which is intended.

Section 2.5.3

This may just be my personal preference (so feel free to ignore), but
talking about a "trust store used to authenticate the MASA" and "trust
store used to authenticate the pledge" would feel more readable than
"trust anchor database for authenticating the [thing] TLS connection
[thing] certificate".

It may be worth some comment about how this requirement for out-of-band
distribution of implicit trust anchors is something that BRSKI is
designed to avoid, but that distributing to just the registrar is a much
more manageable task than distributing them to all devices/pledges.

Section 2.5.5

  The Public Key Infrastructure (PKI) administers certificates for the
  domain of concerns, providing the trust anchor(s) for it and allowing

nit: "domain of concern" singular

  The voucher provides a method for the distribution of a single PKI
  trust anchor (as the "pinned-domain-cert").  A distribution of the

Earlier we talked about the "pinned-domain-cert leaf" in  the domainID
definition.  Was that supposed to be "leaf"  in the YANG sense and not
in the PKIX "leaf certificate"/"end-entity certificate" sense?

  The expectations of the PKI are unchanged from EST [[RFC7030]].  This

Which parts of RFC 7030 talk about its expectations of the PKI?

Section 2.6.1

  Many devices when bootstrapping do not have knowledge of the current
  time.  Mechanisms such as Network Time Protocols cannot be secured
  until bootstrapping is complete.  Therefore bootstrapping is defined
  in a method that does not require knowledge of the current time.  A

nit: I'd suggest maybe "framework", "scenario", or "environment" rather
than "method".

Section 2.6.2

  [RFC5280] explains that long lived pledge certificates "SHOULD be
  assigned the GeneralizedTime value of 99991231235959Z".  Registrars

This misses the important "for the notAfter field" part.

Why is 3 years the relevant cutoff here?

Section 2.7

  There exist operationally open network wherein devices gain

nit: "networks"  plural

  unauthenticated access to the internet at large.  In these use cases
  the management domain for the device needs to be discovered within
  the larger internet.  These are less likely within the anima scope
  but may be more important in the future.

nit: less likely than what?

  There are additionally some greenfield situations involving an
  entirely new installation where a device may have some kind of
  management uplink that it can use (such as via 3G network for
  instance).  In such a future situation, the device might use this
  management interface to learn that it should configure itself to
  become the local registrar.

  In order to support these scenarios, the pledge MAY contact a well
  known URI of a cloud registrar if a local registrar cannot be
  discovered or if the pledge's target use cases do not include a local
  registrar.

I don't see the connection between "configure itself to become the local
registrar" and "contact a well-known URI of a cloud registrar".

  If the pledge uses a well known URI for contacting a cloud registrar
  an Implicit Trust Anchor database (see [RFC7030]) MUST be used to
  authenticate service as described in [RFC6125].  This is consistent

Would this be more likely to be installed by the manufacturer or device
owner?
nit: "service" needs an article.

Section 2.8

  approach if they ensure a single MASA URL works for all pledge's
  associated with each trust anchor.

nit: "pledges" non-possessive

Section 3

  A pledge forms the "pledge voucher-request" and submits it to the
  registrar.

It would be helpful (at least to me) to know that the request is signed
by the IDevID cert, here.

  The "proximity-registrar-cert" leaf is used in the pledge voucher-
  requests.  This provides a method for the pledge to assert the
  registrar's proximity.

"proximity" in what sense?  How much verification/confidence needs to be
done?  (Also, I would have expected the assertion to go the other way;
that the registrar asserts the pledge's proximity -- how does the pledge
have a way to know that the registrar is nearby when the proxy is
transparent?)

Section 3.3

  Example (1)  The following example illustrates a pledge voucher-
                request.  The assertion leaf is indicated as 'proximity'
                and the registrar's TLS server certificate is included
                in the 'proximity-registrar-cert' leaf.  See
                Section 5.2.

  {
      "ietf-voucher-request:voucher": {
          "nonce": "62a2e7693d82fcda2624de58fb6722e5",
          "created-on": "2017-01-01T00:00:00.000Z",
          "proximity-registrar-cert": "base64encodedvalue=="
      }
  }

I do not see an 'assertion' leaf populated.

  Example (2)  The following example illustrates a registrar voucher-
                request.  The 'prior-signed-voucher-request' leaf is
                populated with the pledge's voucher-request (such as the
                prior example).  The pledge's voucher-request is a
                binary object.  In the JSON encoding used here it must

Why is it a binary object?  We just saw a previous example with a JSON
(non-binary) encoding.  (Hint: CMS-signed,but we didn't say that.)

                be base64 encoded.  The nonce, created-on and assertion
                is carried forward.  The serial-number is extracted from

There is (again) no assertion, and the created-on does not match
exactly.

Section 3.4

The RFC 8174 version of the BCP 14 boilerplate could be used in the
module, too.
Also, is the 2017 copyright still correct, especially given that it is a
2018-02-14 revision?

            For example, a pledge might sign a voucher request
            with a proximity-registrar-cert, and the registrar
            then includes it in the prior-signed-voucher-request field.

nit: maybe "includes it" could be disambiguated (perhaps s/in/as/)?

            This is a simple mechanism for a chain of trusted
            parties to change a voucher request, while
            maintaining the prior signature information.

"chain" seems to admit the possibility of more than one
modification/resigning event, but the architecture as described seems to
only have the registrar doing this.

            registrar agree on proximity assertions. The MASA SHOULD
            remove all prior-signed-voucher-request information when
            signing a voucher for imprinting so as to minimize the
            final voucher size.";

(side note?) This removal would open up some minor exotic attacks in
cases where a pledge reuses an existing nonce (potentially from a
different device), but is probably an okay tradeoff to make.

            The first certificate in the Registrar TLS server
            certificate_list sequence  (see [RFC5246]) presented by
            the Registrar to the Pledge. This MUST be populated in a
            Pledge's voucher request if a proximity assertion is
            requested.";

5246 is replaced by 8446.
It might be simplest to just say the "end-entity TLS certificate", at
least for TLS practitioners.  (Maybe nof for a different audience,
though.)
How do I know that a proximity assertion is requested?

Section 4

  The role of the proxy is to facilitate communications.  The proxy
  forwards packets between the pledge and a registrar that has been
  provisioned to the proxy via GRASP discovery.

[same DULL question as above]

  The proxy does not terminate the TLS handshake: it passes streams of
  bytes onward without examination.  A proxy MUST NOT assume any
  specific TLS version.

Passing bytes without examination is by definition not assuming any
version of TLS.  So while I  think it would make the most  sense to just
remove that sentence, if it's going to say it  might be worth also
noting the TLS invariants discussed in
https://tools.ietf.org/html/rfc8446#section-9.3 .

Section 4.1

  through a proxy.  The proxy is transparent to the pledge.  The
  communication between the pledge is over IPv6 Link-Local addresses.

nit: between the pledge and what?

  M_FLOOD.  The active methods SHOULD exponentially back-off to a
  maximum of one hour to avoid overloading the network with discovery
  attempts.  Detection of change of physical link status (ethernet
  carrier for instance) SHOULD reset the exponential back off.

Mathematically, "exponential" requires to specify the base of the
exponent (or just say "by doubling").  (Also later in the section.)

  Once all discovered services are attempted (assuming that none
  succeeded) the device MUST return to listening for GRASP M_FLOOD.  It
  SHOULD periodically retry the manufacturer specific mechanisms.  The
  pledge MAY prioritize selection order as appropriate for the
  anticipated environment.

nit: "manufacturer-specific" takes a hyphen
not-nit: what are "the manufacturer-specific mechanisms"?  (I don't
remember such discussion yet.)

  Once all discovered services are attempted (assuming that none
  succeeded) the device MUST return to listening for GRASP M_FLOOD.  It
  SHOULD periodically retry the manufacturer specific mechanisms.  The
  pledge MAY prioritize selection order as appropriate for the
  anticipated environment.

nit: "manufacturer-specific" takes a hyphen
not-nit: what are "the manufacturer-specific mechanisms"?  (I don't
remember such discussion yet.)

Section 4.1.1

Is Figure 6b supposed to be using JSON diagnostic notation for CBOR or
some other notation?
Also, I'm not sure that picking an arbitrary (representative) session-id
value, LL address, and port is helpful when describing the formatting of
the message.  Maybe some different introductory text would change
things.

Section 4.3

If we're only defining an EST-TLS objective, how will proxies know that
the registrar supports BRSKI?

It's a little weird to put the reference for GRASP but not ACP.  Either
none or both would feel more natural (given that we've seen both already
a couple times).

Section 5

  MASA URI is "https://" iauthority "/.well-known/est".

nit: "The MASA URI".
Is this always the case, with no opportunity for modification, even as
included in an IDevID certificate extension?

  BRSKI uses JSON [RFC7159] for all new operations defined here, and

RFC 7159 is obsoleted by RFC 8259.

  While EST section 3.2 does not insist upon use of HTTP 1.1 persistent
  connections, BRSKI-EST connections SHOULD use persistent connections.
  The intention of this guidance is to ensure the provisional TLS state
  occurs only once, and that the subsequent resolution of the provision
  state is not subject to a MITM attack during a critical phase.

I think we probably want a requirement that if persistent connections
are not used (and what about HTTP/2 or HTTP/3 ones?), the pledge MUST
check that the exact same certificate is used to authenticate the
registrar for all transactions.  If the signature in the handshake is
valid but you can only chain the certificate up to your trust anchor
once you finish imprinting, you still know that the entire session's
data has been talking to the now-authenticated party (as opposed to the
TLS case where you try to add a new certificate mid-connection, where
that boundary is unclear), but things are much easier to reason about if
you are sure that each EST transaction is talking to the same peer.

  o  In the language of [RFC6125] this provides for a SERIALNUM-ID
      category of identifier that can be included in a certificate and
      therefore that can also be used for matching purposes.  The
      SERIALNUM-ID whitelist is collated according to manufacturer trust
      anchor since serial numbers are not globally unique.

RFC 6125 does not define a SERIALNUM-ID, so maybe we could reword to "in
the model of RFC 6125" or "provides a new SERIAL-ID category" or
similar.

  o  The registrar performs log verifications in addition to local
      authorization checks before accepting optional pledge device
      enrollment requests.

Maybe give us a section reference to what the "log validations" are?

Section 5.1

  Establishment of the BRSKI-EST TLS connection is as specified in EST
  [RFC7030] section 4.1.1 "Bootstrap Distribution of CA Certificates"
  [RFC7030] wherein the client is authenticated with the IDevID
  certificate, and the EST server (the registrar) is provisionally
  authenticated with an unverified server certificate.

I'd consider noting that the signature (or other operation) made by the
certificate must be validated, and that the received certificate and
chain must be retained for later validation.

  The pledge maintains a security paranoia concerning the provisional
  state, and all data received, until a voucher is received and
  verified as specified in Section 5.6.1

Since section 5.6.1 just talks about the voucher verification process, I
think we need to say more about what "security paranoia" entails:
acknowledging that all data transmitted is sent to an unauthenticated
peer, with corresponding privacy considerations, and that all received
data is not authenticated by the TLS connection and must be
self-authenticating or otherwise considered untrusted.

  A pledge that can not maintain as many connections as there are
  eligible proxies.  If no connection is making process after 5 seconds

nit: that's not a complete sentence.

Section 5.2

  application/voucher-cms+json  The request is a "YANG-defined JSON
      document that has been signed using a CMS structure" as described
      in Section 3 using the JSON encoding described in [RFC7951].  This

Section 3 does not describe any "sign[ing] using a CMS structure"
operation.

      voucher media type is defined in [RFC8366] and is also used for
      the pledge voucher-request.  The pledge SHOULD sign the request
      using the Section 2.3 credential.

To be clear, this is MUST sign, but SHOULD use IDevID (vs. some other
credential) to sign?

  constrained voucher formats are expected in the future.  Registrar's
  and MASA's are expected to be flexible in what they accept.

nits: no apostrophes for plurals.

  proximity-registrar-cert:  In a pledge voucher-request this is the
      first certificate in the TLS server 'certificate_list' sequence
      (see [RFC5246]) presented by the registrar to the pledge.  This
      MUST be populated in a pledge voucher-request if the "proximity"
      assertion is populated.

[same comment as above about "end-entity certificate"]

  The registrar validates the client identity as described in EST
  [RFC7030] section 3.3.2.  The registrar confirms that the 'proximity'
  assertion and associated 'proximity-registrar-cert' are correct.

what 'proximity' assertion?
Does verifying proximity-registrar-cert just mean checking that it's the
same leaf certificate that the registrar presented?  What happens if the
validation fails?

Section 5.3

  A Registrar accepts or declines a request to join the domain, based
  on the authenticated identity presented.  Automated acceptance
  criteria include:

I suggest "for different networks, examples of automated acceptance
criteria may include".

  If these validations fail the registrar SHOULD respond with an
  appropriate HTTP error code.

Similarly, "If validation fails".

Section 5.4

  The BRSKI-MASA TLS connection is a 'normal' TLS connection
  appropriate for HTTPS REST interfaces.  The registrar initiates the
  connection and uses the MASA URL obtained as described in Section 2.8
  for [RFC6125] authentication of the MASA.

I'd consider mentioning  the implicit trust anchor database as well as
the MASA URL.

  The MASA and the registrars SHOULD be prepared to support TLS client
  certificate authentication and/or HTTP Basic or Digest authentication
  as described in [RFC7030] for EST clients.  This connection MAY also
  have no client authentication at all (Section 7.4)

I don't see discussion of skipping client authentication in Section 7.4.
It would be great to have some, there!

  The authentication of the BRSKI-MASA connection does not affect the
  voucher-request process, as voucher-requests are already signed by
  the registrar.  Instead, this authentication provides access control
  to the audit log.

I don't understand what "access control to the audit log" means.  Is the
idea that the TLS client identity in the BSRKI-MASA connection is only
used when processing requests to the requestauditlog endpoint and that
some clients might be denied access?

Section 5.5

  created-on:  Registrars are RECOMMENDED to populate this field.  This
      provides additional information to the MASA.

Earlier we said that this field would be propagated from the pledge
voucher-request; we should probably say something like "populate this
field; if it was present in the pledge voucher-request it is copied
unchanged to the registrar voucher-request; otherwise the current time
is used".

  nonce:  This is the value from the pledge voucher-request.  The
      registrar voucher-request MAY omit the nonce as per Section 3.1)

I'd suggest "value from the pledge voucher-request, if present" and
changing the second sentence to refer to the pledge voucher-request.

  idevid-issuer:  The idevid-issuer value from the pledge certificate
      is included to ensure a statistically unique identity.

There is no "idevid-issuer" field in the pledge certificate; I assume
this is supposed to be the Issuer Name of the IDevID certificate.

  prior-signed-voucher-request:  The signed pledge voucher-request
      SHOULD be included in the registrar voucher-request.  (NOTE: what
      is included is the complete pledge voucher-request, inclusive of
      the 'assertion', 'proximity-registrar-cert', etc wrapped by the
      pledge's original signature).  If a signed voucher-request was not
      recieved from the pledge then this leaf is omitted from the
      registrar voucher request.

This is a good example of text that implies the signed voucher is
binary.  (And as such would be a good place to talk about the base64
encoding.)

  All other fields MAY be omitted in the registrar voucher-request.

Should the proximity-registrar-cert field *not* be present?

Section 5.5.2

  The MASA MUST verify that the registrar voucher-request is signed by
  a registrar.  This is confirmed by verifying that the id-kp-cmcRA
  extended key usage extension field (as detailed in EST RFC7030
  section 3.6.1) exists in the certificate of the entity that signed
  the registrar voucher-request.  This verification is only a
  consistency check that the unauthenticated domain CA intended the
  voucher-request signer to be a registrar.  Performing this check
  provides value to the domain PKI by assuring the domain administrator
  that the MASA service will only respect claims from authorized
  Registration Authorities of the domain.

If the MASA has no prior knowledge of the domain (certificate), this is
susceptible to anyone spinning up something that claims to be a domain
CA and issuing registrar certs with that extension.  We need to document
somewhere what other part of the system prevents that from causing an
unauthorized voucher to be used.  (Perhaps preventing one from being
issued is not feasible, but acceptable if the pledge will not accept
it, though there remains risk of DoS on the MASA.)

Section 5.5.3

  If a nonceless voucher-request is submitted the MASA MUST
  authenticate the registrar as described in either EST [RFC7030]
  section 3.2, section 3.3, or by validating the registrar's

Subsubsection references might be more helpful.

  In the nonced case, validation of the registrar MAY be omitted if the
  device policy is to accept audit-only vouchers.

I don't see any (SHOULD?) guidance about validating the registrar in the
nonced case when other policy is used.  Even the previous section does
not really say much to indicate there is value in authenticating the
signature on the voucher request.

Section 5.5.4

  authentication or voucher-request signature validation.  Similarly,
  as noted in Section 5.5.2, the MASA performs normal PKIX revocation
  checking during signature consistency checks (a signature by a
  registrar certificate that has been revoked is an inconsistency).

I think this needs to be noted more clearly in Section 5.5.2.

Section 5.5.5

  The MASA MAY verify that the registrar voucher-request includes the
  'prior-signed-voucher-request' field.  If so the prior-signed-
  voucher-request MUST include a 'proximity-registrar-cert' that is
  consistent with the certificate used to sign the registrar voucher-
  request.  Additionally the voucher-request serial-number leaf MUST

This seems kind of tautological ("if the MASA is checking X, X MUST have
happened").  Also, what does "consistent with"  mean?

  match the pledge serial-number that the MASA extracts from the
  signing certificate of the prior-signed-voucher-request.  The MASA is
  aware of which pledges support signing of their voucher requests and
  can use this information to confirm proximity of the pledge with the
  registrar, thus ensuring that the BRSKI-EST TLS connection has no
  man-in-the-middle.

To be clear, this MITM detection is only for the case of pledges that
sign their voucher requests, right?  And it seems to only hold if
pledges that support signing actually do sign, every time.

Section 5.5.6

  The registrar's certificate chain is extracted from the signature
  method.  The chain includes the domain CA certificate as specified in
  Section 5.5.  This certificate is used to populate the "pinned-

I don't think Section 5.5 is the right reference for "includes the
domain CA certificate" (both here and in 5.5.2).

  domain-cert" of the voucher being issued.  The domainID (e.g., hash
  of the root public key) is determined from the pinned-domain-cert and
  is used to update the audit log.

If the pinning takes the whole cert (per RFC 8366), then what do we need
the domainID for?  Just the audit log?  Surely in that case SHA-1 is
not a hard requirement...

Section 5.5.7

  The MASA MUST use the nonce from the registrar voucher-request for
  the resulting voucher and audit log.  The prior-signed-voucher-
  request nonce is ignored during this operation.

I don't understand this requirement.  They could only be different if
the MUST from the previous paragraph is ignored.

Section 5.6

  The MASA voucher response to the registrar is forwarded without
  changes to the pledge; therefore this section applies to both the
  MASA and the registrar.  The HTTP signaling described applies to both
  the MASA and registrar responses.  A registrar either caches prior
  MASA responses or dynamically requests a new voucher based on local
  policy (it does not generate or sign a voucher).  [...]

Do we need to say how this local caching policy interacts with HTTP
cache control headers?
I got confused by "or dynamically requests a new voucher" the first
couple times I read it; I landed on something like "when a voucher
request arrives at the registrar, if it has a cached response from the
MASA for the corresponding registrar voucher-request, that cached
response can be used according to local policy; otherwise the registrar
constructs a new registrar voucher-request and sends it to the MASA".

  type.  The registrar SHOULD use this response if it determines the
  pledge is unacceptable due to inventory control, MASA audit logs, or
  any other reason.

What does "unacceptable due to inventory control" mean?

  A 415 (Unsupported Media Type) response is approriate for a request
  that has a voucher-request or accept encoding that is not understood.

Isn't "Accept-Encoding:" a more typical spelling?

  vouchers are described in detail in [RFC8366].  For example, the
  voucher consists of:

  {
    "ietf-voucher:voucher": {
      "nonce": "62a2e7693d82fcda2624de58fb6722e5",
      "assertion": "logging"
      "pinned-domain-cert": "base64encodedvalue=="
      "serial-number": "JADA123456789"
    }
  }

nit: I think "might consist of" is better than "consists of".

  assertion:  The method used to verify assertion.  See Section 5.5.5.

The method used to verify itself?

  The pledge MUST be prepared to parse and fail gracefully from a
  voucher response that does not contain a 'pinned-domain-cert' field.

What would such a graceful failure look like?  Reverting back to the
discovery stage, since without a manufacturer-validated indication of
the trust anchor for the domain, the pledge cannot  consider itself to
be a part of a domain?

Section 5.6.2

  found.  It SHOULD return to the same proxy again after attempting
  with other proxies.  Attempts should be attempted in the exponential

But only if those other proxies failed to produce a valid voucher?

  The pledge's PKIX path validation of a registrar certificate's
  validity period information is as described in Section 2.6.1.  Once
  the PKIX path validation is successful the TLS connection is no
  longer provisional.

Section 2.6.1 doesn't actually say that the pledge has to check the five
listed timestamps in the case that it does have a realtime clock.

Section 5.7

  To indicate pledge status regarding the voucher, the pledge MUST post
  a status message.

I think we've had other text that implies that providing telemetry is
optional; perhaps just "the pledge POSTs a status message"?

  The client HTTP POSTs the following to the server at the EST well
  known URI "/voucher_status".  The Status field indicates if the

I think it's probably more clear to write out
".well-known/est/voucher_status"; there's not a separate registry of EST
well-known URIs.


We don't actually have anything in  this section that declares "this is
the structure of the JSON object used as the POST body"; it's only
implicitly provided.

  indicates why.  In the failure case this message may be sent to an
  unauthenticated, potentially malicious registrar and therefore the
  Reason string SHOULD NOT provide information beneficial to an
  attacker.  The operational benefit of this telemetry information is

What sort of information might a pledge consider including that would be
beneficial to an attacker?

  {
    "version":"1",
    "Status":FALSE /* TRUE=Success, FALSE=Fail"

I guess you should probably close the comment, not that this is a
formal comment syntax for JSON...

  The reason-context attribute is an arbitrary JSON object (literal
  value or hash of values) which provides additional information
  specific to this pledge.  The contents of this field are not subject
  to standardization.

This still have some privacy considerations, though.

Section 5.8

  is posted to the /requestauditlog URI instead.  The "idevid-issuer"
  and "serial-number" informs the MASA which log is requested so the
  appropriate log can be prepared for the response.  Using the same

Is the implicit point that the other fields are ignored?

  A registrar MAY request logs at future times.  If the registrar
  generates a new request then the MASA is forced to perform the
  additional cryptographic operations to verify the new request.

Is this statement just supposed to be further justification for using
the original voucher-request as the POST body, or describing new
behavior?

  A MASA that receives a request for a device that does not exist, or
  for which the requesting owner was never an owner returns an HTTP 404
  ("Not found") code.

What is a "requesting owner"?  I thought devices were owned by the
domain, not the specific registrar.

  In order to avoid enumeration of device audit logs, MASA that return
  URLs SHOULD take care to make the returned URL unguessable.  For
  instance, rather than returning URLs containing a database number
  such as https://example.com/auditlog/1234 or the EUI of the device
  such https://example.com/auditlog/10-00-00-11-22-33, the MASA SHOULD
  return a randomly generated value (a "slug" in web parlance).  The
  value is used to find the relevant database entry.

https://www.w3.org/TR/capability-urls/ may also be a useful reference.

Section 5.8.1

  A log data file is returned consisting of all log entries associated
  with the the device selected by the IDevID presented in the request.
  The audit log may be truncated of old or repeated values as explained
  below.  The returned data is in JSON format ([RFC7951]), and the
  Content-Type SHOULD be "application/json".  For example:

If RFC 7951 is to be used, I'd suggest "is JSON-encoded YANG data".

  This document specifies a simple log format as provided by the MASA
  service to the registrar.  This format could be improved by
  distributed consensus technologies that integrate vouchers with
  technologies such as block-chain or hash trees or optimized logging
  approaches.  Doing so is out of the scope of this document but is an
  anticipated improvement for future work.  As such, the registrar
  client SHOULD anticipate new kinds of responses, and SHOULD provide
  operator controls to indicate how to process unknown responses.

This would be a great place to talk about the "version" field that's
otherwise ignored.

  anticipated improvement for future work.  As such, the registrar
  client SHOULD anticipate new kinds of responses, and SHOULD provide
  operator controls to indicate how to process unknown responses.

Is "registrar client" intended to be both words or just one?

  A registrar SHOULD use the log information to make an informed
  decision regarding the continued bootstrapping of the pledge.  The

I may be confused, but I thought the registrar was asking for the log
after the voucher had already been issued.  Are these check supposed to
keep the registrar from forwarding the voucher to the  pledge, or just
as a check for future renewal operations?

  A relatively simple policy is to white list known (internal or
  external) domainIDs and to require all vouchers to have a nonce and/
  or require that all nonceless vouchers be from a subset (e.g. only
  internal) domainIDs.  A simple action is to revoke any locally issued

nit: missing "of"

  credentials for the pledge in question or to refuse to forward the
  voucher.  A registrar MAY be configured to ignore the history of the

"simple action" in the case that the registrar doesn't like the audit
log results?

  device but it is RECOMMENDED that this only be configured if hardware
  assisted NEA [RFC5209] is supported.

Probably need to expand NEA.

Section 5.9

  Although EST allows clients to obtain multiple certificates by
  sending multiple CSR requests BRSKI mandates use of the CSR
  Attributes request and mandates that the registrar validate the CSR
  against the expected attributes.  This implies that client requests

Where is this requirement stated normatively?

Section 5.9.1

  This ensures that the pledge has the complete set of current CA
  certificates beyond the pinned-domain-cert (see Section 5.6.1 for a
  discussion of the limitations inherent in having a single certificate
  instead of a full CA Certificates response.)  Although these

I don't see such a discussion in the indicated section.

Section 5.9.2

  To alleviate these operational difficulties, the pledge MUST request
  the EST "CSR Attributes" from the EST server and the EST server needs
  to be able to reply with the attributes necessary for use of the
  certificate in its intended protocols/services.  This approach allows

"intended" implies that the EST server has some knowledge of what the
pledge is expected to be doing in the network, right?

  To alleviate these operational difficulties, the pledge MUST request
  the EST "CSR Attributes" from the EST server and the EST server needs
  to be able to reply with the attributes necessary for use of the
  certificate in its intended protocols/services.  This approach allows
  for minimal CA integrations and instead the local infrastructure (EST
  server) informs the pledge of the proper fields to include in the
  generated CSR.  This approach is beneficial to automated boostrapping
  in the widest number of environments.

This is convenient, but has some security considerations in that it
implies that the validation policy on the CA is somewhat  lax, since the
EST server is expected to be doing most of the policy controls.  Thus, a
compromised pledge/device could send a CSR with unauthorized fields and
it is likely to be signed, allowing for some level of privilege
escalation.  When the registrar acts as a proxy to the CA as well as its
EST role, as described later, this risk is diminished.

  In networks using the BRSKI enrolled certificate to authenticate the
  ACP (Autonomic Control Plane), the EST attributes MUST include the
  "ACP information" field.  See
  [I-D.ietf-anima-autonomic-control-plane] for more details.

This MUST seems like it belongs in the ACP spec and need not be repeated
here using normative language.

Section 5.9.4

  administrators concerning device lifecycle status.  This might
  include information concerning attempted bootstrapping messages seen
  by the client, MASA provides logs and status of credential
  enrollment.  [RFC7030] assumes an end user and therefore does not

This looks like a comma splice.

  In the case of a FAIL, the Reason string indicates why the most
  recent enrollment failed.  The SubjectKeyIdentifier field MUST be
  included if the enrollment attempt was for a keypair that is locally

We haven't talked about POSTing to a new status-report endpoing yet, so
this comes out of the blue.  It would probably be worth adding above
"SHOULD [start a new TLS handshake] and POST a enrollment status
message".

    "Status":TRUE /* TRUE=Success, FALSE=Fail"

[same note about JSON comments]

    "reason-context": "Additional information"

Is this supposed to be a string or a JSON object similar to
/voucher_status?

  This allows for clients that wish to minimize their crypto operations
  to simply POST this response without renegotiating the TLS session -
  at the cost of the server not being able to accurately verify that
  enrollment was truly successful.

I'd prefer to not have this sort of option available, but I can't
disprove the claim of its utility, so I will not object if it stays.

Section 5.9.5

Is the idea that the initial BRSKI-EST-issued certificate would
authenticate the client for the subsequent EST requests?

Section 7

If this is non-normative and will need to be fleshed out in a separate
document, would an Appendix be more appropriate?

Section 7.1

  Pledge:  The pledge could be compromised and providing an attack
      vector for malware.  The entity is trusted to only imprint using
      secure methods described in this document.  Additional endpoint

How do "could be compromised" and "is trusted to only [...]" go
together?

  Vendor Service, MASA:  This form of manufacturer service is trusted
      to accurately log all claim attempts and to provide authoritative
      log information to registrars.  The MASA does not know which
      devices are associated with which domains.  These claims could be

I think this is maybe more of a "does not enforce" than "does not know",
since the domainID ends up in the audit logs that the MASA holds.

      Current text provides only for a trusted manufacturer.

nit: not a complete sentence.

Section 7.3

  A registrar can choose to accept devices using less secure methods.
  These methods are acceptable when low security models are needed, as
  the security decisions are being made by the local administrator, but
  they MUST NOT be the default behavior:

I'm having a hard time parsing "low security models"; the best I can
come up with is "threat models where low security is adequate".

  Lower security modes chosen by the MASA service affect all device
  deployments unless bound to the specific device identities.  In which

Is this "unless the lower-security behavior is tied to specific device
identities"?

  case these modes can be provided as additional features for specific
  customers.  The MASA service can choose to run in less secure modes

nit: This middle sentence is not a complete sentence.

  1.  Not enforcing that a nonce is in the voucher.  This results in
      distribution of a voucher that never expires and in effect makes

A nonceless voucher can still include an expiration time ... it is just
in practice possible for it to never expire, if the target pledge does
not have an accurate clock.

      subsequent bootstrapping attempts.  That this occurred is
      captured in the log information so that the registrar can make
      appropriate security decisions when a pledge joins the Domain.
      This is useful to support use cases where registrars might not be
      online during actual device deployment.  Because this results in

nit: I think that grammatically the "This" at the start of this sentence
refers to the behavior described in the previous sentence  (the
availability of the log information) rather than the issuance of the
nonceless voucher.

Section 9

  The autonomic control plane that this document provides bootstrap for
  is typically a medium to large Internet Service Provider
  organization, or an equivalent Enterprise that has signficant layer-3
  router connectivity.  (A network consistenting of primarily layer-2

nit: "is used in" -- the ACP is not the entire organization!

Section 10.1

  The MASA audit log includes a hash of the domainID for each Registrar
  a voucher has been issued to.  This information is closely related to
  the actual domain identity, especially when paired with the anti-DDoS
  authentication information the MASA might collect.  This could

I thought I remembered some discussion of collecting this information
and thus what sort of information might be collected, but searching for
"DDoS" in the document didn't find it.

  There are a number of design choices that mitigate this risk.  The
  domain can maintain some privacy since it has not necessarily been
  authenticated and is not authoritatively bound to the supply chain.

Is this really "privacy" or just "semi-plausible deniability"?

  Additionally the domainID captures only the unauthenticated subject
  key identifier of the domain.  A privacy sensitive domain could

It's interesting to see "unauthenticated" used here, since the domainID
is deterministically generated from the pinned-domain-cert that is
included in the voucher and inserted into the pledge's trust store.  So
in a sense it is a committal by "the domain" to tie that domain cert to
that device or have the device otherwise be unusable.  The subsequent
text here seems to be suggesting that instead of having a single root CA
cert used by all devices in the domain, distinct certs would be used for
each device, thus attempting to remove an ability to associate devices
with each other via joint domain membership.  One might imagine doing
this by entering intermediate CAs (or even leafs?) into the
pinned-domain-cert field, but if those certs ever become visible (e.g.,
via certificate transparency), then the domainIDs can be independently
computed and associated to the MASA audit log, and the issuer chain used
to recorrelate the devices by domainID.  So to fully protect privacy,
the per-device pinned-domain-certs would need to be "root"s (i.e.,
self-issued), which greatly increases the manageability complexity and
is in effect counter to the goals of ANIMA and BRSKI.

Section 10.2

  While the contents of the signed part of the pledge voucher request
  can not be changed, they are not encrypted at the registrar.  The
  ability to audit the messages by the owner of the network prevents
  exfiltration of data by a nefarious pledge.  The contents of an

I think "prevents" is too strong -- steganography and concealed channels
are really hard to completely defend against.  "Gives a mechanism to
defend against" would be more accurate, in my opinion.

  The above situation is to be distinguished from a residential/
  individual person who registers a device from a manufacturer: that an
  enterprise/ISP purchases routing products is hardly worth mentioning.
  Deviations would, however, be notable.

Deviations in what sense?

Section 10.3

  4.  There is a fourth case, if the manufacturer is providing
      protection against stolen devices.  The manufacturer then has a
      responsability to protect the legitimate owner against fraudulent
      claims that the the equipment was stolen.  Such a claim would
      cause the manufacturer to refuse to issue a new voucher.  Should
      the device go through a deep factory reset (for instance,
      replacement of a damaged main board component, the device would
      not bootstrap.

I'm  not sure I understand this scenario -- is it talking about where a
third party makes a false theft report in the hopes that the real owner
will have to do a deep reset and then have the device fail to bootstrap
because of the reported theft?

Section 11

  To facilitate logging and administrative oversight, in addition to
  triggering Registration verification of MASA logs, the pledge reports

I'm not sure if "Registration verification" is a typo or not.

  registrar.  This is mandated anyway because of the operational
  benefits of an informed administrator in cases where the failure is
  indicative of a problem.  The registrar is RECOMMENDED to verify MASA

I'd also expect some comment about the limited value of the additional
information to an attacker in the context where the attacker already
would know [other information].

  To facilitate truely limited clients EST RFC7030 section 3.3.2
  requirements that the client MUST support a client authentication
  model have been reduced in Section 7 to a statement that the
  registrar "MAY" choose to accept devices that fail cryptographic
  authentication.  This reflects current (poor) practices in shipping

But section 7 is non-normative!

  devices without a cryptographic identity that are NOT RECOMMENDED.

I guess if we really wanted to disrecommend this practice we could split
it out into a separate document that profiles core BRSKI for such usage.

Section 11.1

  this might be an issue during disaster recovery.  This risk can be
  mitigated by Registrars that request and maintain long term copies of
  "nonceless" vouchers.  In that way they are guaranteed to be able to
  bootstrap their devices.

This, of course, comes with a different risk of what is something like a
long-term credential existing that needs to be protected and stored.

  The issuance of nonceless vouchers themselves creates a security
  concern.  If the Registrar of a previous domain can intercept
  protocol communications then it can use a previously issued nonceless
  voucher to establish management control of a pledge device even after
  having sold it.  This risk is mitigated by recording the issuance of
  such vouchers in the MASA audit log that is verified by the
  subsequent Registrar and by Pledges only bootstrapping when in a
  factory default state.  This reflects a balance between enabling MASA
  independence during future bootstrapping and the security of
  bootstrapping itself.  Registrar control over requesting and auditing
  nonceless vouchers allows device owners to choose an appropriate
  balance.

I would expect some discussion here about nonceless vouchers
with/without expiration times.

I also wonder whether the owner or registrar should expect to be doing
soem periodic MASA audit log checking, akin to a CT auditor or monitor.

  of specific pledge devices, helps to mitigate this.  Pledge
  signatures on the pledge voucher-request, as forwarded by the
  registrar in the prior-signed-voucher-request field of the registrar
  voucher-request, significantly reduce this risk by ensuring the MASA
  can confirm proximity between the pledge and the registrar making the
  request.  This mechanism is optional to allow for constrained
  devices.  Supply chain integration ("know your customer") is an

And so the protection is only available when all devices served by the
MASA are known to produce signed voucher-requests.

  additional step that MASA providers and device vendors can explore.

In terms of adding some more crypto to the BRSKI-MASA flow that would
prevent unauthenticated DoS?

Section 11.2

I appreciate having this discussion present; thanks!

  The fake registrar (Rm) can obtain a voucher signed by the MASA
  either directly or through arbitrary intermediaries.  Assuming that

I'm not sure what sort of intermediary this is thinking about.

  This pledge voucher-request would be 'stale' in that it has a nonce
  that no longer matches the internal state of the pledge.  In order to
  successfully use any resulting voucher the Rm would need to remove
  the stale nonce or anticipate the pledge's future nonce state.
  Reducing the possibility of this is why the pledge is mandated to
  generate a strong random or pseudo-random number nonce.

This gets a bit more complicated to reason about when we assume that a
pledge will have multiple voucher requests out in parallel, instead of
doing them in sequence and timing out (so that there is literally only
one valid nonce at a given time)...

  Additionally, in order to successfully use the resulting voucher the
  Rm would have to attack the pledge and return it to a bootstrapping
  enabled state.  This would require wiping the pledge of current

... and I think there is a different attack if the Rm is in a position
to delay or drop network traffic between the  pledge and the intended
registrar, to cause Rm's voucher to be delivered first even though it is
generated after the intended registrar's authorization process.  The
intended registrar would need to require reports on voucher processing
status (or investigate their absence) in order to detect such a case.

  o  Retreival and examination of MASA log information upon the
      occurance of any such unexpected events.  Rm will be listed in the
      logs along with nonce information for analysis.

How strongly guaranteed is it that a given device will only have a single
specific MASA that it trusts to issue vouchers (and thus limit the scope
of monitoring needed by the owner)?

Section 11.3

  o  A Trust-On-First-Use (TOFU) mechanism.  A human would be queried
      upon seeing a manufacturer's trust anchor for the first time, and
      then the trust anchor would be installed to the trusted store.
      There are risks with this; even if the key to name is validated
      using something like the WebPKI, there remains the possibility

nit: is this "key to name mapping"?

Section 11.4

It is not entirely clear to me whether device manufacturers are set up
with incentives to maintain a well-run secure CA with strong hardware
protections on the offline signing key for the root CA, cycling through
various levels of intermediates, etc., that CAs in the Web PKI do today.
If the manufacturer uses a less stringent process, that would leave the
manufacturer's key as a more tempting attack surface, and it may be
worth some discussion here about what damage could be done with a
compromised MASA signing key.  E.g., would an attack require restoring
devices to factory defaults or otherwise waiting for natural
bootstrapping events to occur?  Would the attacker need to be on-path?
Etc.

Section 13.2

I think CDDL needs to be a normative reference, as does RFC 7231.
RFC 2473 is listed but not referenced in the text, as are RFC 2663,
RFC 7217, and RFC 7575.

Appendix B

  Discovery of registrar MAY also be performed with DNS-based service
  discovery by searching for the service "_brski-
  registrar._tcp.example.com".  In this case the domain "example.com"
  is discovered as described in [RFC6763] section 11 (Appendix A.2
  suggests the use of DHCP parameters).

I'd suggest using "" per 6763 rather than "example.com".

  If no local proxy or registrar service is located using the GRASP
  mechanisms or the above mentioned DNS-based Service Discovery methods
  the pledge MAY contact a well known manufacturer provided
  bootstrapping server by performing a DNS lookup using a well known
  URI such as "brski-registrar.manufacturer.example.com".  The details
  of the URI are manufacturer specific.  Manufacturers that leverage
  this method on the pledge are responsible for providing the registrar
  service.  Also see Section 2.7.

It seems like there are some security considerations for device owners
that may wish to prevent such registrars from being used.  Do we need to
direct them to run a firewall or similar?

Appendix C

I don't know how important
file "ietf-mud-extension@2018-02-14.yang"
is, but it seems a tad generic.

Appendix D

[Just checking that Michael wants sandelman.ca embedded in the final
RFC]
2019-07-10
22 Benjamin Kaduk [Ballot Position Update] New position, Discuss, has been recorded for Benjamin Kaduk
2019-07-10
22 Barry Leiba
[Ballot comment]
I support the comments that Warren makes in his ballot, and related comments in Alissa’s DISCUSS.  While simple device provisioning and onboarding is …
[Ballot comment]
I support the comments that Warren makes in his ballot, and related comments in Alissa’s DISCUSS.  While simple device provisioning and onboarding is critical, especially in IoT scenarios, I, too, have serious concerns about how such setups can allow too much control by vendors of the use that legitimate buyers can make of the products they bought.

That said, I am balloting “no objection”, because I don’t think that my opinion on that overrides the consensus of the working group and the IETF community, and we and other SDOs are working on alternative mechanisms to do similar things.
2019-07-10
22 Barry Leiba [Ballot Position Update] New position, No Objection, has been recorded for Barry Leiba
2019-07-10
22 Suresh Krishnan [Ballot comment]
I support Eric, Roman and Alissa's DISCUSS positions.
2019-07-10
22 Suresh Krishnan [Ballot Position Update] New position, No Objection, has been recorded for Suresh Krishnan
2019-07-10
22 Alissa Cooper
[Ballot discuss]
I apologize if I'm misunderstanding how this works, but I didn't see much discussion in the document about the implications of the manufacturer …
[Ballot discuss]
I apologize if I'm misunderstanding how this works, but I didn't see much discussion in the document about the implications of the manufacturer going out of business. Specifically, it seems like if a device ships with BRSKI as its only available mechanism for bootstrapping and the manufacturer goes out of business before the device is enrolled, the ability for the device to function securely on the network may be significantly impaired if not impossible. It seems like this document needs to make clear to manufacturers that a fallback manual enrollment mechanism of some sort needs to be implemented along with BRSKI in order to avoid this situation.

= Section 1.3.1 =

"But this solution is not exclusive to large equipment: it is intended
  to scale to thousands of devices located in hostile environments,
  such as ISP provided CPE devices which are drop-shipped to the end
  user."

I don't quite understand how this squares with the scope limitation described in Section 1 and Section 9. If the whole network is professionally managed by the ISP, what part would be the "hostile environment"?
2019-07-10
22 Alissa Cooper
[Ballot comment]
I think this document would benefit from two concise lists, with notes about which items in each list are defined in this document …
[Ballot comment]
I think this document would benefit from two concise lists, with notes about which items in each list are defined in this document and which ones are not defined: (1) what is operationally required of a manufacturer to support BRSKI, and (2) what is operationally required of a domain owner to support BRSKI.

= Section 2.3.1 =

What precisely is meant by "TPM identification"? Could a citation be provided?

= Section 10.1 =

"The domain can maintain some privacy since it has not necessarily been
  authenticated and is not authoritatively bound to the supply chain."

What does this mean? That the domain can expect the manufacturer not to trust the domainID because it hasn't been authenticated?

= Section 10.2 =

"The above situation is to be distinguished from a residential/
  individual person who registers a device from a manufacturer: that an
  enterprise/ISP purchases routing products is hardly worth mentioning.
  Deviations would, however, be notable."

What does the last sentence mean?
2019-07-10
22 Alissa Cooper [Ballot Position Update] New position, Discuss, has been recorded for Alissa Cooper
2019-07-10
22 Amanda Baber IANA Review state changed to IANA - Not OK from Version Changed - Review Needed
2019-07-10
22 Roman Danyliw
[Ballot discuss]
I support Eric’s Discuss position. Also a big thanks to Christian Huitema’s thorough SECDIR reviews and the associated improvements made as a result.  …
[Ballot discuss]
I support Eric’s Discuss position. Also a big thanks to Christian Huitema’s thorough SECDIR reviews and the associated improvements made as a result.  I have a few more items:

(1) Section 5.7.  The format of a pledge status telemetry message seems underspecified.

** what are all of the fields (e.g., version appears in the example but no the text)

** what are the field formats (e.g., the format of the status field is inferred from the unlabeled example

** which fields are mandatory?

** Per the JSON snippet, is that normative is some way in describing the format?

** Also, how does a server receiving the telemetry messages behave when receiving unexpected JSON attributes?

(2) Section 5.8.1.  The format of the MASA audit log seems underspecified.  Is the JSON snippet presented here normative to describe the MASA audit log response?

(3) Why is Section 7.x in this document if it explains how to use BRSKI but is considered non-normative?

-- How should implementers take this language?
-- Why are normative sections, like Section 11, discussing it?

(4) Thank you for documenting “manufacturer control issues” in Sections 10.3 and 10.4.  It helpfully lays justifies the current design approach.  I strongly concur with the premise that “facilitate[ing] a few new operat[i]onal modes without making any changes to the BRSKI protocol” is exactly what is needed. 

My concern is that even with the current applicability statement in Section 9, the current text appears to have only standardized the first part of the lifecycle that BRSKI equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  The text doesn’t appear to cover the practical aspects of the proposed mitigations in Section 10.5 or the situations described in Section 10.3/10.4 – various situations possible in the full lifecycle usage of a BRSKI device and needed support the “additional operational modes”.  Specifically:

** There appears to be little discussion on how owners/manufacturers/vendors can facilitate second sale/used equipment beyond narrative words (in Section 10.3 and 10.4)

** There is appears to be little discussion on how to practically implement a MASA (i.e., the offline use case).  For example, (Per Section 10.5) “A manufacturer could provide a mechanism to manage the trust anchors and built-in certificates (IDevID) as an extension.  This is a substantial amount of work, and may be an area for future standardization work”.  Without the ability to change anchors on the device the additional operational modes such as offline mode seems challenging.
2019-07-10
22 Roman Danyliw Ballot discuss text updated for Roman Danyliw
2019-07-10
22 Roman Danyliw
[Ballot discuss]
I support Eric’s Discuss position. Also a big thanks to Christian Huitema’s thorough SECDIR reviews and the associated improvements made as a result.  …
[Ballot discuss]
I support Eric’s Discuss position. Also a big thanks to Christian Huitema’s thorough SECDIR reviews and the associated improvements made as a result.  I have a few more items:

(1) Section 5.7.  The format of a pledge status telemetry message seems underspecified.

** what are all of the fields (e.g., version appears in the example but no the text)
** what are the field formats (e.g., the format of the status field is inferred from the unlabeled example
** which fields are mandatory?
** Per the JSON snippet, is that normative is some way in describing the format?
** Also, how does a server receiving the telemetry messages behave when receiving unexpected JSON attributes?

(2) Section 5.8.1.  The format of the MASA audit log seems underspecified.  Is the JSON snippet presented here normative to describe the MASA audit log response?

(3) Why is Section 7.x in this document if it explains how to use BRSKI but is considered non-normative?

-- How should implementers take this language?
-- Why are normative sections, like Section 11, discussing it?

(4) Thank you for documenting “manufacturer control issues” in Sections 10.3 and 10.4.  It helpfully lays justifies the current design approach.  I strongly concur with the premise that “facilitate[ing] a few new operat[i]onal modes without making any changes to the BRSKI protocol” is exactly what is needed. 

My concern is that even with the current applicability statement in Section 9, the current text appears to have only standardized the first part of the lifecycle that BRSKI equipment might see -- equipment on first sale as long as the manufacturer supports it or stays in business.  The text doesn’t appear to cover the practical aspects of the proposed mitigations in Section 10.5 or the situations described in Section 10.3/10.4 – various situations possible in the full lifecycle usage of a BRSKI device and needed support the “additional operational modes”.  Specifically:

** There appears to be little discussion on how owners/manufacturers/vendors can facilitate second sale/used equipment beyond narrative words (in Section 10.3 and 10.4)

** There is appears to be little discussion on how to practically implement a MASA (i.e., the offline use case).  For example, (Per Section 10.5) “A manufacturer could provide a mechanism to manage the trust anchors and built-in certificates (IDevID) as an extension.  This is a substantial amount of work, and may be an area for future standardization work”.  Without the ability to change anchors on the device the additional operational modes such as offline mode seems challenging.
2019-07-10
22 Roman Danyliw
[Ballot comment]
(5) Section 1.3.2.  Cite the origin of the taxonomy which defines “class 2+” devices – likely RFC7228

(6) Section 1.5.  Per “Upon successfully …
[Ballot comment]
(5) Section 1.3.2.  Cite the origin of the taxonomy which defines “class 2+” devices – likely RFC7228

(6) Section 1.5.  Per “Upon successfully validating a voucher artiface, a status telemetry MUST be returned.”, what is a “voucher artiface”?  is that just a “voucher”?

(7) Section 2.6.1.  What is a “Network Time Protocols” – specifically why is protocols plural?  Is this something more than NTP?

(8) Section 4.1.  Per “The communication between the pledge is over IPv6 Link-Local addresses”, if that is the case, why does Figure 3 show IPv4 and Appendix A describes an IPv5 approach?

(9) Section 5.1., Per “The pledge maintains a security paranoia concerning the provisional state …”, what does it mean to “maintain a security paranoia”?

(10) Section 5.1.  Per “A pledge that can not maintain as many connections as there are eligible proxies.”, this is an unfinished sentence.  What should the pledge do?

(11) Section 5.2.  created-on.  The value to use in this field of this field is not described here.

(12) Section 5.2.  Per “All other fields MAY be omitted in the pledge voucher-request”, should this be read as guidance that the fields mentioned above this text are mandatory (i.e., created-on, nonce, proximity-registrar-cert). If so, what value should pledges without clocks use?

(13) Section 5.3.  Per “If these validations fail the registrar SHOULD respond with an appropriate HTTP error code”, a few questions:

** Is this text suggesting that silent failure?  Given the text says SHOULD, validation could fail and the registrar would not share this failure?

** What specific codes should be used?

(14) Section 5.4.  Per “The registrar initiates the connection and uses the MASA URL obtained as described in Section 2.8 for [RFC6125] authentication of the MASA.”, RFC6125 doesn’t have a Section 2.8.  Please clarify how this connection is made.

(15) Section 5.5.  What is the relationship between the value of the created-on field passed by the pledge per Section 5.2, and described in Section 5.5 as being populated by the registrar.

(16) Section 5.5. What is a “statistically unique identity” per the “idevid-issuer” field?

(17) Section 5.7.  Per the JSON snippet:

** It isn’t labeled as a figure or example; and isn’t referenced in the text.

** This isn’t valid JSON: no commas between items.  What does the notation “/* TRUE=Success, FALSE=Fail”” mean – opening with a /* and closing with a “?

(18) Section 5.8.2.  Per “Each time the Manufacturer Authorized Signing Authority (MASA) issues a voucher, it places it into the audit log for that device.  The details are described in Section 5.8.”, this reference to Section 5.8 on how the MASA logs doesn’t seem correct.  Section 5.8 describes how a registrar asks a MASA about its logs.

(19) Section 5.9.4.  What happens if the pledge doesn’t re-negotiate an EST TLS session after been successful enrolled?

(20) Section 5.9.4.  In what way is a the SubjectKeyIdentifier included in the success telemetry message?

(21) Section 6.  What is “../voucherrequest”?

(22) Section 7.  Per “This section is considered non-normative: use suggested methods MUST be detailed in specific profiles of BRSKI” -- the clause after the colon doesn’t parse.  What is the guidance relative to profiles?

(23) Section 11.0.  The caution about untrusted data and HTTP libraries seems warranted.  Wouldn’t this also apply to the application code too?

(24) Section 11.1.  Per the list of examples where a MASA is unavailable or uncooperative, wouldn’t a manufacturing going out of business also be a concern?

(25) Section D.1.4.  Provide an openssl version and reference that generated this output

(26) Per Christian Huitema’s Last Call SecDir Review (https://datatracker.ietf.org/doc/review-ietf-anima-bootstrapping-keyinfra-20-secdir-lc-huitema-2019-06-04/), please respond to the last two issues – random number generation and the missing assertion leaf.

(27) Editorial

Section 1.  Duplicate Word.  s/Section Section/Section/

Section 1.  Editorial. /(or be discovered by)/(or are discovered by)/

Section 1.1.  Typo.  s/transfered/transferred/

Section 1.1. Typo. s/serveral/several/

Section 1.2.  The term “drop ship” is initial stated with a space, but is later used with a hyphen in the definition.  Consistency is recommended.

Section 1.3.1.  Typo.  s/aquire/acquire/

Section 1.3.3.  Typo.  s/consistant/consistent/

Section 1.3.4.  Typo. s/transfered/transferred

Section 2.3.2.  Typo. s/docucment/document/

Section 2.3.2.  Typo.  s/registrary/registrar/

Section 2.5.4.  Typo.  s/seperate/separate/

Section 2.6.1. Typo.  s/certificiate/certificate/

Section 3.4. Missing letter.  s/conn ection/connection/

Section 3.4.  Typo.  s/occurance/occurrence/

Section 4.  Typo.  s/refered/referred/

Section 4.  Typo.  s/occuring/occurring/

Section 5.  Typo.  s/boostrap/bootstrap/

Section 5.1.  Typo.  s/atttempts/attempts/

Section 5.1.  Typo.  s/making process/making progress/

Section 5.2.  Typo.  s/impementations/implementations/

Section 5.5.  Typo.  s/impementations/implementations/

Section 5.5. Typo.  s/recieved/received/

Section 5.5.7. Typo. s/is exist/exists/

Section 5.6.  Typo.  s/approriate/appropriate/

Section 5.6. Duplicate word.  s/section Section/Section/

Section 5.6.  Typo.  s/sufficent/sufficient/

Section 5.6.1.  Typo.  s/manufacter/manufacturer/

Section 5.8.1.  Duplicate word. s/the the/the/

Section 5.8.2.  Typo.  s/dicussion/discussion/

Section 5.8.2.  Typo.  s/evens/events/

Section 5.8.2.  Typo.  s/anomoly/anomaly/

Section 5.9.2.  Typo.  s/boostrapping/bootstrapping/

Section 5.9.4.  Typo.  s/adminstrative/administrative/

Section 5.9.6.  Typo.  s/defintion/definition/

Section 7.2.  Typo. s/innappropriate/inappropriate/

Section 9.  Typo. s/signficant/significant/

Section 9.  Typo. s/consistenting/consisting/

Section 9.  Duplicate Word.  s/like like/like/

Section 9.  Editorial.  The sentence “Such an operator also is …” does not parse without the parenthetical.  Perhaps it should read like “Such an operator is also capable of performing bootstrapping of a device using a serial-console.”

Section 9.  Typo. s/signficiant/significant/

Section 9.  Duplicate word.  s/still still/still/

Section 10.2.  Typo.  s/targetted/targeted/

Section 10.2.  Typo.  s/comissioning/commissioning/

Section 10.2.  Typo.  s/constrast/contrast/

Section 10.2.  Typo.  s/redesigs/re-designs/

Section 10.2.  Typo.  s/seperate/separate/

Section 10.3.  Typo.  s/responsability/ responsibility/

Section 10.3.  Duplicate Word.  s/the the/the/

Section 10.3.  Typo.  s/occurrance/occurrence/

Section 10.4.  Typo.  s/informatin/information/

Section 10.5.  Typo.  s/gratutiously/gratuitously/

Section 10.5.  Duplicate word.  s/these these/these/

Section 10.5.  Typo.  s/facilitiates/facilitates/

Section 10.5.  Typo.  s/operatonal/operational/

Section 10.5.  Typo.  s/warantee/warrantee/

Section 10.5.  Typo. s/requiments/requirements/

Section 11.0.  Typo. s/truely/truly/

Section 11.2.  Typo.  s/Retreival/Retrieval/

Section 11.2.  Typo.  s/occurance/occurrence/

Section 11.4. Typo.  s/Maintainance/Maintenance/

Section 11.4.  Typo.  s/environements/environments/
2019-07-10
22 Roman Danyliw [Ballot Position Update] New position, Discuss, has been recorded for Roman Danyliw
2019-07-10
22 Éric Vyncke
[Ballot discuss]
Thank you (and so many friends in the authors' list!) for the work put into this document; it took a while to get …
[Ballot discuss]
Thank you (and so many friends in the authors' list!) for the work put into this document; it took a while to get to this stage ;-) The intersection with MUD is also a nice feature.

I have a couple of DISCUSSes (probably easy to fix) and _several_ COMMENTs and some nits (after a couple of nits, I stopped marking them). I also stopped writing COMMENTs after section 5.3.

Regards,

-éric

== DISCUSS ==

TLS is assumed to be used but I failed to find WHICH version of TLS MUST be used. The only reference in the reference section is version 1.2. Probably worth to refer to this version in the text as well and use version 1.3 of TLS.

-- Section 2.3.1 --

Does the "serial number" need to be unique per vendor ? I guess so then I strongly suggest to use a different word than "serial number" (e.g. unique device ID) as a vendor can have multiple products in its portfolio, each having a different set of unique "serial numbers".

-- Section 3.3 --

The example 1 does not include the mandatory (per YANG module) serial-number. It should also state that the cert is not included for saving space in this document.

-- Section 4.1 --

There are TWO back-off mechanisms: one for the method and one for the proxy but no description on how those mechanisms interact together.

-- Section 4.3 --

Probably a naive question about GRASP (that I do not know), but in the example there is "IPPROTO_TCP, 80" that seems to indicate the use of plain HTTP and no TLS at all. Is it an issue ?

Is there a reason why IPv6 ULA are used rather than the documentation prefix ?
2019-07-10
22 Éric Vyncke
[Ballot comment]
== COMMENTS ==


-- Section 1 --

Please introduce the MASA acronym used after.

-- Section 1.1 --

> the pledge requires realtime …
[Ballot comment]
== COMMENTS ==


-- Section 1 --

Please introduce the MASA acronym used after.

-- Section 1.1 --

> the pledge requires realtime connectivity to the manufacturer
>      service
     
Why this connection requires "realtime" ? Esp when reading in section 1.3.1 "The bootstrapping process can take minutes to complete"

-- Section 1.2 --

Please use the RFC 8174 boilerplate.

"160-bit SHA-1 hash" I will let the security AD to check whether SHA-1 is deemed sufficient for this purpose.

- Section 1.5 --

Please explain/refer GRASP acronym.

-- Section 2 --

I wonder what will happen when the device vendor stops maintaining the MASA on-line?

-- Section 2.2 --

Out of curiosity, why this document uses the word "voucher" as opposed to "ticket" ?

-- Section 3.4 --

I find a little weird that the included YANG module has a different authors list than the document itself.

Please refer to RFC 8174.

"RFC YYYY: Voucher Profile for Bootstrapping Protocols" does not seem correct in a YANG module reference.

-- Section 5 --

The MASA URI synthesis explanation is a duplicate of a previous explanation. Unsure whether it helps the reader.

...

-- Section 8.4 --

I am afraid that the DNS service names have a length of maximum 15 characters. But, IANA is of course the source of truth.

-- Appendix A --

Using IPv6 LLA should be enough, I do not see the reason to describe a new protocol using legacy IPv4 addresses because IPV6 link-local addresses should work on any decent layer-2 network.

== NITS ==

A lot of "ethernet" and "internet" while those words are usually capitalized as "Ethernet" or "Internet".

-- Abstract --

Shouldn't the plural form used in "using manufacturer installed X.509 certificate" ?

-- Section 1.5 --

s/Some of the options in this document is the result of requirements/Some of the options in this document are the result of requirements/ ?

-- Section 2.3.2 --

Please use uppercase in the protocol acronyms in "that MUST be supported, including ldap, http and ftp"

....

-- Section 5.1 --

"A Pledge that can connect to multiple registries concurrently, SHOULD do so." lower case for pledge and what is the purpose of the comma in this sentence? (ok I am not an English native speaker so I can be wrong)
2019-07-10
22 Éric Vyncke [Ballot Position Update] New position, Discuss, has been recorded for Éric Vyncke
2019-07-08
22 Deborah Brungard [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard
2019-07-04
22 Warren Kumari
[Ballot comment]
I remain deeply concerned about the ability of manufacturers to limit the use of devices after they have been sold / prevent resale …
[Ballot comment]
I remain deeply concerned about the ability of manufacturers to limit the use of devices after they have been sold / prevent resale / charge for transfers of ownership; I own many old bits of network gear, including a Cisco IGS router (end-of-sale 1993-01-01), and a Procket (went of of business / acquired in 2004) in my basement -- both were gifts, but I "own" them, and can (and have :-) reset them to factory defaults. The secondary market for network gear is vibrant (e.g I purchased a Brocade 48 port 10GE switch for performance testing on the secondary market for <$300) - this was after Brocade had been acquired, and Broadcom has no incentive to transfer it to me - they'd (understandably!) much rather I purchase a shiny new switch. A search on eBay for "Cisco switch" generates ~23,000 hits- while some may be for compatibles / modules, it does still demonstrate that this is a common thing -- this is especially important in developing countries, where many networks made extensive use of used / pre-loved gear.

I see very little incentive for vendors to facilitate transfers, and don't really see enough text about allowing operators to override / bypass this to make me comfortable.
I was going to Abstain, but I'm an author on a document which also allows secure device install, and so feel it is more appropriate to Recuse
2019-07-04
22 Warren Kumari [Ballot Position Update] New position, Recuse, has been recorded for Warren Kumari
2019-07-02
22 Amy Vezza Placed on agenda for telechat - 2019-07-11
2019-07-02
22 Ignas Bagdonas IESG state changed to IESG Evaluation from Waiting for AD Go-Ahead
2019-07-02
22 Ignas Bagdonas IESG state changed to Waiting for AD Go-Ahead from Waiting for Writeup
2019-07-02
22 Ignas Bagdonas Ballot has been issued
2019-07-02
22 Ignas Bagdonas [Ballot Position Update] New position, Yes, has been recorded for Ignas Bagdonas
2019-07-02
22 Ignas Bagdonas Created "Approve" ballot
2019-07-02
22 Ignas Bagdonas Ballot writeup was changed
2019-06-17
22 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-22.txt
2019-06-17
22 (System) New version approved
2019-06-17
22 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2019-06-17
22 Michael Richardson Uploaded new revision
2019-06-17
22 Michael Richardson Uploaded new revision
2019-06-17
22 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2019-06-17
22 Michael Richardson Uploaded new revision
2019-06-17
22 Michael Richardson Uploaded new revision
2019-06-13
21 (System) IANA Review state changed to Version Changed - Review Needed from IANA - Not OK
2019-06-13
21 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-21.txt
2019-06-13
21 (System) New version approved
2019-06-13
21 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Kent Watsen , Steinthor Bjarnason , Michael Behringer
2019-06-13
21 Michael Richardson Uploaded new revision
2019-06-13
21 Michael Richardson Uploaded new revision
2019-06-04
20 Christian Huitema Request for Last Call review by SECDIR Completed: Has Nits. Reviewer: Christian Huitema. Sent review to list.
2019-06-04
20 (System) IANA Review state changed to IANA - Not OK from Version Changed - Review Needed
2019-06-04
20 Sabrina Tanamal
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-anima-bootstrapping-keyinfra-20. If any part of this review is inaccurate, please let …
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-anima-bootstrapping-keyinfra-20. If any part of this review is inaccurate, please let us know.

The IANA Functions Operator has a question about one of the actions requested in the IANA Considerations section of this document.

IANA understands that some of the actions requested in the IANA Considerations section of this document are dependent upon the approval of and completion of IANA Actions in another document:

The IANA Functions Operator understands that, upon approval of this document, there are five actions which we must complete.

First, in the Well-Known URIs registry located at:

https://www.iana.org/assignments/well-known-uris/

the current document, in section 7.1 asks to extend the definition of the Well-Known URI "est."

IANA Question --> Is it the authors intention to simply add the reference [ RFC-to-be ] to the existing [RFC7030] reference? Or, is something further being requested?

Second, in the SMI Security for PKIX Certificate Extension registry on the Structure of Management Information (SMI) Numbers (MIB Module Registrations) registry page located at:

https://www.iana.org/assignments/smi-numbers/

the existing, temporary registration for decimal value 32 will be made permanent as follows:

Decimal: 32
Description: id-pe-masa-url
Reference: [ RFC-to-be ]

Third, a new registry page is to be created called the "BRSKI Parameters" registry page. On that new registry page a new registry is to be created called the Pledge BRSKI Status Telemetry Attribute registry. The new registry is to be managed viaa Specification Required as defined in [RFC 8126].

There are initial registrations in the new registry as follows:

----------------------------------------
| Attribute | Reference |
----------------------------------------
| Version | [ RFC-to-be ]|
| Status | [ RFC-to-be ]|
| Reason | [ RFC-to-be ]|
| Reason-Context | [ RFC-to-be ]|
----------------------------------------

Fourth,  in the Service Name and Transport Protocol Port Number Registry located at:

https://www.iana.org/assignments/service-names-port-numbers

two new service names will be registered as follows:

Service Name: _brski-proxy
Transport Protocol(s): tcp
Assignee: IESG .
Contact: IETF Chair
Description: The Bootstrapping Remote Secure Key Infrastructures Proxy
Reference: [ RFC-to-be ]

Service Name: _brski-registrar
Transport Protocol(s): tcp
Assignee: IESG .
Contact: IETF Chair
Description: The Bootstrapping Remote Secure Key Infrastructures Registrar
Reference: [ RFC-to-be ]

Fifth, this document requests the registration of the name "masa" with a reference of [ RFC-to-be ] in the MUD Extensions registry proposed to be created in the Internet-Draft ietf-opsawg-mud.

The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document.

Note:  The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed.

Thank you,

Sabrina Tanamal
Senior IANA Services Specialist
2019-06-04
20 (System) IESG state changed to Waiting for Writeup from In Last Call
2019-05-23
20 Tero Kivinen Request for Last Call review by SECDIR is assigned to Christian Huitema
2019-05-23
20 Tero Kivinen Request for Last Call review by SECDIR is assigned to Christian Huitema
2019-05-21
20 Jean Mahoney Request for Last Call review by GENART is assigned to Jari Arkko
2019-05-21
20 Jean Mahoney Request for Last Call review by GENART is assigned to Jari Arkko
2019-05-21
20 Amy Vezza
The following Last Call announcement was sent out (ends 2019-06-04):

From: The IESG
To: IETF-Announce
CC: ibagdona@gmail.com, draft-ietf-anima-bootstrapping-keyinfra@ietf.org, anima-chairs@ietf.org, Toerless Eckert , …
The following Last Call announcement was sent out (ends 2019-06-04):

From: The IESG
To: IETF-Announce
CC: ibagdona@gmail.com, draft-ietf-anima-bootstrapping-keyinfra@ietf.org, anima-chairs@ietf.org, Toerless Eckert , tte+ietf@cs.fau.de, anima@ietf.org
Reply-To: ietf@ietf.org
Sender:
Subject: Last Call:  (Bootstrapping Remote Secure Key Infrastructures (BRSKI)) to Proposed Standard


The IESG has received a request from the Autonomic Networking Integrated
Model and Approach WG (anima) to consider the following document: -
'Bootstrapping Remote Secure Key Infrastructures (BRSKI)'
  as Proposed Standard

This is a second Last Call. IoT Directorate review was done after the ANIMA
WG Last Call and consensus to request the publication, and that review resulted
in substantial changes to the document. 

The IESG plans to make a decision in the next few weeks, and solicits final
comments on this action. Please send substantive comments to the
ietf@ietf.org mailing lists by 2019-06-04. Exceptionally, comments may be
sent to iesg@ietf.org instead. In either case, please retain the beginning of
the Subject line to allow automated sorting.

Abstract


  This document specifies automated bootstrapping of an Autonomic
  Control Plane.  To do this a remote secure key infrastructure (BRSKI)
  is created using manufacturer installed X.509 certificate, in
  combination with a manufacturer's authorizing service, both online
  and offline.  Bootstrapping a new device can occur using a routable
  address and a cloud service, or using only link-local connectivity,
  or on limited/disconnected networks.  Support for lower security
  models, including devices with minimal identity, is described for
  legacy reasons but not encouraged.  Bootstrapping is complete when
  the cryptographic identity of the new key infrastructure is
  successfully deployed to the device but the established secure
  connection can be used to deploy a locally issued certificate to the
  device as well.




The file can be obtained via
https://datatracker.ietf.org/doc/draft-ietf-anima-bootstrapping-keyinfra/

IESG discussion can be tracked via
https://datatracker.ietf.org/doc/draft-ietf-anima-bootstrapping-keyinfra/ballot/

The following IPR Declarations may be related to this I-D:

  https://datatracker.ietf.org/ipr/2816/
  https://datatracker.ietf.org/ipr/3233/
  https://datatracker.ietf.org/ipr/2463/



The document contains these normative downward references.
See RFC 3967 for additional information:
    rfc8368: Using an Autonomic Control Plane for Stable Connectivity of Network Operations, Administration, and Maintenance (OAM) (Informational - IETF stream)



2019-05-21
20 Amy Vezza IESG state changed to In Last Call from Last Call Requested
2019-05-21
20 Ignas Bagdonas Last call was requested
2019-05-21
20 Ignas Bagdonas IESG state changed to Last Call Requested from Waiting for Writeup
2019-05-21
20 Ignas Bagdonas Last call announcement was changed
2019-05-21
20 Amy Vezza Last call announcement was generated
2019-05-11
20 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-20.txt
2019-05-11
20 (System) New version approved
2019-05-11
20 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2019-05-11
20 Michael Richardson Uploaded new revision
2019-05-11
20 Michael Richardson Uploaded new revision
2019-03-11
19 Gunter Van de Velde Closed request for Last Call review by OPSDIR with state 'Overtaken by Events'
2019-03-10
19 Tim Chown Assignment of request for Last Call review by OPSDIR to Tim Chown was rejected
2019-03-07
19 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-19.txt
2019-03-07
19 (System) New version approved
2019-03-07
19 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2019-03-07
19 Michael Richardson Uploaded new revision
2019-03-07
19 Michael Richardson Uploaded new revision
2019-01-17
18 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-18.txt
2019-01-17
18 (System) New version approved
2019-01-17
18 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2019-01-17
18 Michael Richardson Uploaded new revision
2019-01-17
18 Michael Richardson Uploaded new revision
2018-12-03
17 Russ Housley Request for Telechat review by IOTDIR Completed: Not Ready. Reviewer: Russ Housley. Sent review to list.
2018-11-27
17 Samita Chakrabarti Request for Telechat review by IOTDIR is assigned to Russ Housley
2018-11-27
17 Samita Chakrabarti Request for Telechat review by IOTDIR is assigned to Russ Housley
2018-11-05
17 (System) IANA Review state changed to Version Changed - Review Needed from IANA - Not OK
2018-11-05
17 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-17.txt
2018-11-05
17 (System) New version approved
2018-11-05
17 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2018-11-05
17 Michael Richardson Uploaded new revision
2018-11-05
17 Michael Richardson Uploaded new revision
2018-11-04
16 Sheng Jiang Added to session: IETF-103: anima  Mon-1350
2018-11-04
16 Ignas Bagdonas Requested Telechat review by IOTDIR
2018-10-05
16 Jari Arkko Request for Last Call review by GENART Completed: Not Ready. Reviewer: Jari Arkko. Sent review to list.
2018-10-02
16 (System) IESG state changed to Waiting for Writeup from In Last Call
2018-10-01
16 (System) IANA Review state changed to IANA - Not OK from IANA - Review Needed
2018-10-01
16 Sabrina Tanamal
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-anima-bootstrapping-keyinfra-16. If any part of this review is inaccurate, please let …
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-anima-bootstrapping-keyinfra-16. If any part of this review is inaccurate, please let us know.

The IANA Functions Operator has a question about one of the actions requested in the IANA Considerations section of this document.

IANA understands that some of the actions requested in the IANA Considerations section of this document are dependent upon the approval of and completion of IANA Actions in another document:

IANA Question --> is the YANG Module in section 3.3 of the current draft to be registered?

The IANA Functions Operator understands that, upon approval of this document, there are five actions which we must complete.

First, in the Well-Known URIs registry located at:

https://www.iana.org/assignments/well-known-uris/

there is an existing registration for 'est' as follows:

URI Suffix: est
Change Controller: IETF
Reference: RFC7030
Related information:
Date Registered: 2013-08-16
Date Modified:

IANA Question --> is it the authors' intent to change this so that the reference includes both rfc7030 and [ RFC-to-be ]? If not, what is the authors' specific request of IANA in section 7.1 of the current document?

Second, the authors make the following request in section 7.2 of the current document:

"IANA is requested to register the following:

This document requests a number for id-mod-MASAURLExtn2016(TBD) from the pkix(7) id-mod(0) Registry. [[EDNOTE: fix names]]

This document requests a number from the id-pe registry for id-pe-masa-url. XXX"

IANA Question --> are these two separate requests for registration? Specifically, what are the registries from which numbers are being requested (the author should supply a name of the registry and the associated URI)?

Third, a new registry is to be created called the Voucher Status Telemetry Attributes registry. The new registry is to be maintained via Specification Required as defined by RFC 8126.

IANA Question --> Where should this new registry be located? Should it be added to an existing registry page? If not, does it belong in an existing category at http://www.iana.org/protocols?

There are four, initial registrations in the new registry as follows:

Attribute: version
Reference: [ RFC-to-be ]

Attribute: Status
Reference: [ RFC-to-be ]

Attribute: Reason
Reference: [ RFC-to-be ]

Attribute: reason-context
Reference: [ RFC-to-be ]

IANA Question --> Is there a reason that some attributes are capitalized and some are not? Should there be a standard approach for the attributes? Should entries in the new registry be alphabetized?

Fourth, in the Service Name and Transport Protocol Port Number Registry located at:

https://www.iana.org/assignments/service-names-port-numbers

two new service names will be registered as follows:

Service Name: _brski-proxy
Transport Protocol(s): tcp
Assignee: IESG .
Contact: IETF Chair
Description: The Bootstrapping Remote Secure Key Infrastructures Proxy
Reference: [ RFC-to-be ]

Service Name: _brski-registrar
Transport Protocol(s): tcp
Assignee: IESG .
Contact: IETF Chair
Description: The Bootstrapping Remote Secure Key Infrastructures Registrar
Reference: [ RFC-to-be ]

Fifth, in section 7.5 of the current document, the author request IANA to register
the name "masa" in the MUD extensions registry defined in the yet to be approved document [I-D.ietf-opsawg-mud]. Upon approval of the related document, "masa" will be registered in the newly created MUD extensions registry with a reference of [ RFC-to-be ].

The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document.

Note:  The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed.

Thank you,

Sabrina Tanamal
Senior IANA Services Specialist
2018-09-29
16 Christian Huitema Request for Last Call review by SECDIR Completed: Has Issues. Reviewer: Christian Huitema. Sent review to list.
2018-09-21
16 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Tim Chown
2018-09-21
16 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Tim Chown
2018-09-20
16 Jean Mahoney Request for Last Call review by GENART is assigned to Jari Arkko
2018-09-20
16 Jean Mahoney Request for Last Call review by GENART is assigned to Jari Arkko
2018-09-20
16 Tero Kivinen Request for Last Call review by SECDIR is assigned to Christian Huitema
2018-09-20
16 Tero Kivinen Request for Last Call review by SECDIR is assigned to Christian Huitema
2018-09-18
16 Amy Vezza IANA Review state changed to IANA - Review Needed
2018-09-18
16 Amy Vezza
The following Last Call announcement was sent out (ends 2018-10-02):

From: The IESG
To: IETF-Announce
CC: ibagdona@gmail.com, draft-ietf-anima-bootstrapping-keyinfra@ietf.org, anima-chairs@ietf.org, Toerless Eckert , …
The following Last Call announcement was sent out (ends 2018-10-02):

From: The IESG
To: IETF-Announce
CC: ibagdona@gmail.com, draft-ietf-anima-bootstrapping-keyinfra@ietf.org, anima-chairs@ietf.org, Toerless Eckert , tte+ietf@cs.fau.de, anima@ietf.org
Reply-To: ietf@ietf.org
Sender:
Subject: Last Call:  (Bootstrapping Remote Secure Key Infrastructures (BRSKI)) to Proposed Standard


The IESG has received a request from the Autonomic Networking Integrated
Model and Approach WG (anima) to consider the following document: -
'Bootstrapping Remote Secure Key Infrastructures (BRSKI)'
  as Proposed Standard

The IESG plans to make a decision in the next few weeks, and solicits final
comments on this action. Please send substantive comments to the
ietf@ietf.org mailing lists by 2018-10-02. Exceptionally, comments may be
sent to iesg@ietf.org instead. In either case, please retain the beginning of
the Subject line to allow automated sorting.

Abstract


  This document specifies automated bootstrapping of a remote secure
  key infrastructure (BRSKI) using manufacturer installed X.509
  certificate, in combination with a manufacturer's authorizing
  service, both online and offline.  Bootstrapping a new device can
  occur using a routable address and a cloud service, or using only
  link-local connectivity, or on limited/disconnected networks.
  Support for lower security models, including devices with minimal
  identity, is described for legacy reasons but not encouraged.
  Bootstrapping is complete when the cryptographic identity of the new
  key infrastructure is successfully deployed to the device but the
  established secure connection can be used to deploy a locally issued
  certificate to the device as well.




The file can be obtained via
https://datatracker.ietf.org/doc/draft-ietf-anima-bootstrapping-keyinfra/

IESG discussion can be tracked via
https://datatracker.ietf.org/doc/draft-ietf-anima-bootstrapping-keyinfra/ballot/

The following IPR Declarations may be related to this I-D:

  https://datatracker.ietf.org/ipr/2816/
  https://datatracker.ietf.org/ipr/3233/
  https://datatracker.ietf.org/ipr/2463/



The document contains these normative downward references.
See RFC 3967 for additional information:
    rfc3542: Advanced Sockets Application Program Interface (API) for IPv6 (Informational - IETF stream)
    rfc7228: Terminology for Constrained-Node Networks (Informational - IETF stream)



2018-09-18
16 Amy Vezza IESG state changed to In Last Call from Last Call Requested
2018-09-18
16 Ignas Bagdonas Last call was requested
2018-09-18
16 Ignas Bagdonas Last call announcement was generated
2018-09-18
16 Ignas Bagdonas Ballot approval text was generated
2018-09-18
16 Ignas Bagdonas Ballot writeup was generated
2018-09-18
16 Ignas Bagdonas IESG state changed to Last Call Requested from AD Evaluation
2018-08-21
16 Toerless Eckert
v1.1 8/20/2018 removed concern about "voucher" registry in IANA section. Fixed in -17 rev of document. It is now a BRSKI registry with a voucher …
v1.1 8/20/2018 removed concern about "voucher" registry in IANA section. Fixed in -17 rev of document. It is now a BRSKI registry with a voucher status telemetry table (perfect). Added NIT about request details though (see NITS section). Recommended Max/Michael as expert reviewers for new IANA registry (BRSKI parameters). Removed NITs about down-references (fixed in -17). removed NIT about Pledge authorization (fixed in -17).
v1.0 Original version 7/25/2018
-------------------------------------------------------------------------------
Shepherd writeup for For draft-ietf-anima-bootstrapping-keyinfra-16
Shepherd: Toerless Eckert, tte+ietf@cs.fau.de

> https://www.ietf.org/iesg/template/doc-writeup-qa-style.html of 24 February 2012.

> (1) What type of RFC is being requested (BCP, Proposed Standard, Internet Standard, Informational, Experimental, or Historic)? Why is this the proper type of RFC? Is this type of RFC indicated in the title page header?

  RFC type requested: Proposed Standard. Correctly indicated in title page header.
  This document describes a protocol based on EST/RFC730 run between nodes of different
  roles - pledge, registrar, masa, proxy. It is intended to be useable across all type of
  networks and requires standardization for products of all roles from different vendors.

> (2) The IESG approval announcement includes a Document Announcement Write-Up. Please provide such a Document Announcement Write-Up. Recent examples can be found in the "Action" announcements for approved documents. The approval announcement contains the following sections:
>
> Technical Summary:

  This document specifies automated bootstrapping of a remote secure
  key infrastructure (BRSKI) using manufacturer installed X.509
  certificate, in combination with a manufacturer's authorizing
  service (MASA), both online and offline.  Bootstrapping a new device can
  occur using a routable address and a cloud service, or using only
  link-local connectivity, or on limited/disconnected networks.

  Support for lower security models, including devices with minimal
  identity, is described for legacy reasons but not encouraged.
  Bootstrapping is complete when the cryptographic identity of the new
  key infrastructure is successfully deployed to the device but the
  established secure connection can be used to deploy a locally issued
  certificate to the device as well.

> Working Group Summary:

  This document was called draft-pritikin-anima-bootstrapping-keyinfra before it was
  adopted. There was unanimous support for it in favor of adoption and
  none against, so this document was adopted by the ANIMA WG in February 2016.

  There was ongoing interest in this work posts since its adoption. There was never
  any opposition for this work. Since it adoption, a core mechanism of the
  work called the voucher was seen as useful that it was forked off into a separate
  document, which is now https://www.rfc-editor.org/rfc/rfc8366.txt after it was
  determined that there wa interest to not only use it in this documents protocol
  BRSKI, but also in draft-ietf-netconf-zerotouch.

  This document went through a long and intense document development
  period (9 months for individual document period, 28 months for WG
  document period). It has been reviewed well and passed last call without
  opposition.

> Was there anything in WG process that is worth noting? For example, was there controversy about particular points or were there decisions where the consensus was particularly rough?

  The most important change process was the above mentioned fork of the voucher
  text from the document. The concept itself grew through the WG work on the
  BRSKI document. BRSKI also inspired derived work in further working groups

  There was no noteworthy controversy about items of the document, instead, optional
  elements that could have delayed the document where forked off into future work
  (e.g. IPinIP proxy).
 
> Document Quality:
> Are there existing implementations of the protocol? Have a significant number of vendors indicated their plan to implement the specification?

  There is a range of existing implementations, and seemingly vendors working on BRSKI.
  Here are points from the mail thread opened during WG last call.
  Starting with <6ca37514-0a83-598c-ec9b-5dc007efc3e6@cisco.com>
  (WG Last Call on draft-ietf-anima-bootstrapping-keyinfra-15 -> references to code)

  Toerless: github.com/cisco/libest supports BRSKI
  Brian Carpenter, GRASP part of BRSKI: https://github.com/becarpenter/graspy
  Eliot Lear: I have reviewed the document and we have a PoC. I am also aware of
    others that have done PoC code.
  Eliot Lear: The 2nd piece of code is not open source and not by Cisco.
  Michael Richardson (<1234.1527803470@localhost>): https://minerva.sandelman.ca/
    https://github.com/AnimaGUS-minerva
    there are two MASA "live" on the Internet, see:
    https://minerva.sandelman.ca/metasite/2017/10/25/jokeshop-setup.html
      - more technical explanation in his email.

  An overview of other efforts inspired or related to BRSKI can be found in
    https://www.ietf.org/id/draft-richardson-enrollment-roadmap-02.txt

>  Are there any reviewers that merit special mention as having done a thorough review, e.g., one that resulted in important changes or a conclusion that the document had no substantive issues? If there was a MIB Doctor, Media Type or other expert review, what was its course (briefly)? In the case of a Media Type review, on what date was the request posted?

  The document received numerous detailed reviews during its WG time, including,
  but not limited to the reviews by Brian Carpenter and the Shepherd, with the
  conclusion that the document has no substantive issues.

  There was no dedicated expert review for BRSKI IANA allocation requests. There was
  YANG review for Voucher RFC8366 which BRSKI inherits and extends so BRSKI YANG complies
  to the YANG review conclusions from RFC8366.

> Personnel:
> Who is the Document Shepherd? Who is the Responsible Area Director?

  Document Shepherd: Toerless Eckert
  Responsible Area Director: Ignas Bagdonas

> (3) Briefly describe the review of this document that was performed by the Document Shepherd. If this version of the document is not ready for publication, please explain why the document is being forwarded to the IESG.
>
  First shepherd review from 2017:
  https://github.com/anima-wg/anima-bootstrap/tree/master/1706-shepherd-review
  Second shepherd review 2018:
  https://github.com/anima-wg/anima-bootstrap/blob/master/shepherd-review-2.txt
  Shepherd also parrticipated often in the authors ongoing work meeting
  and provided input.
 
  Summary: extensive repeated shepherd review, primarily focussed on document clarity,
  correct integration with the other ANIMA charter items and various technical
  an formalistic details.

> (4) Does the document Shepherd have any concerns about the depth or breadth of the reviews that have been performed?

  No concerns. The document is comprehensive and conclusive.

> (5) Do portions of the document need review from a particular or from broader perspective, e.g., security, operational complexity, AAA, DNS, DHCP, XML, or internationalization? If so, describe the review that took place.

The shepherd thinks that standard IESG review is appropriate. The three
key areas are OPS and SEC:

  Operational complexity review: Baked into the documents goal and WG process:
  This document automates often very painfull manual processes (secure device enrollment),
  so the WG thinks that the document actually is a solution and not a perpetrator
  wrt. operational complexity.

  Being in OPS, the design choices by the authors and WG did focus on this aspect.
  Pretty much all of the options in the document address the problem of allowing
  deployability in different operational environment (specifically different
  form of vouchers and discovery).

  There was to the memory of the shepherd no prior external (non-WG) SEC review
  for BRSKI, but the fundamental new security concept voucher introduced for
  BRSKI is already an RFC (8366), which includes a SEC review understanding the
  whole concept how the voucher is used in BRSKI. The authors also include experts
  of prior security protocol standards (e.g.: RFC7030).

> (6) Describe any specific concerns or issues that the Document Shepherd has with this document that the Responsible Area Director and/or the IESG should be aware of? For example, perhaps he or she is uncomfortable with certain parts of the document, or has concerns whether there really is a need for it. In any event, if the WG has discussed those issues and has indicated that it still wishes to advance the document, detail those concerns here.

  No concerns by the document shepherd or the WG (in the memory of the shepherd).

> (7) Has each author confirmed that any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79 have already been filed. If not, explain why?

  Yes. The authors, have confirmed in writing or verbally that they are not aware
  of other IPR than what is listed on datatracker:

  https://datatracker.ietf.org/ipr/search/?submit=draft&id=draft-ietf-anima-bootstrapping-keyinfra

> (8) Has an IPR disclosure been filed that references this document? If so, summarize any WG discussion and conclusion regarding the IPR disclosures.

The Cisco and Silver Sprint disclosures where brought up by the WG when they
where filed (2014/2016) with no concerns raised. All three IPR where brought
up during Shepherd Writeup when it was it was discovered that the Juniper
IPR had only been disclosed against draft-netconf-zerotouch (which shares the
voucher with BRSKI). Juniper immediately also filed the disclosure against BRSKI
because it might be applicable to BRSKI to. No concerns against the document
processing where raised because of any of the disclosures.

> (9) How solid is the WG consensus behind this document? Does it represent the strong concurrence of a few individuals, with others being silent, or does the WG as a whole understand and agree with it?

  There is broad support for this document. It was reviewed by active WG
  participants.

> (10) Has anyone threatened an appeal or otherwise indicated extreme discontent? If so, please summarise the areas of conflict in separate email messages to the Responsible Area Director. (It should be in a separate email because this questionnaire is publicly available.)

  No. There was unanimous support for this work and nobody raised any objections.

> (11) Identify any ID nits the Document Shepherd has found in this document. (See http://www.ietf.org/tools/idnits/ and the Internet-Drafts Checklist). Boilerplate checks are not enough; this check needs to be thorough.

  This document is now free of officially tracked nits.
  There is a small number of other nits discoverded through this shepherd writeup,
  the authors have been asked to fix them in the next rev, and this email
  is appended at the end of this writeup.

> (12) Describe how the document meets any required formal review criteria, such as the MIB Doctor, media type, and URI type reviews.

  The document requires IANA review and YANG doctor review.
  Datatracker already shows the included YANG definitions to pass YANG validation.

> (13) Have all references within this document been identified as either normative or informative?

  Yes.
 
> (14) Are there normative references to documents that are not ready for advancement or are otherwise in an unclear state? If such normative references exist, what is the plan for their completion?

  No.

> (15) Are there downward normative references references (see RFC 3967)? If so, list these downward references to support the Area Director in the Last Call procedure.

  rfc7228 defined terminology is used in this document and therefore that
  document is listed as a normative reference even though it is an informational
  document. Shepherd thinks this is appropriate because this documents terminology is now widely
  accepted and there is no standard document alternative for this terminology.

> (16) Will publication of this document change the status of any existing RFCs? Are those RFCs listed on the title page header, listed in the abstract, and discussed in the introduction? If the RFCs are not listed in the Abstract and Introduction, explain why, and point to the part of the document where the relationship of this document to the other RFCs is discussed. If this information is not in the document, explain why the WG considers it unnecessary.

  No change to existing RFCs suggested.

> (17) Describe the Document Shepherd's review of the IANA considerations section, especially with regard to its consistency with the body of the document. Confirm that all protocol extensions that the document makes are associated with the appropriate reservations in IANA registries. Confirm that any referenced IANA registries have been clearly identified. Confirm that newly created IANA registries include a detailed specification of the initial contents for the registry, that allocations procedures for future registrations are defined, and a reasonable name for the new registry has been suggested (see RFC 5226).

  The All requests in IANA section are correct  correct except for the request details for the voucherstatustelemetry. See NITs below.

> (18) List any new IANA registries that require Expert Review for future allocations. Provide any public guidance that the IESG would find useful in selecting the IANA Experts for these new registries.

The new registry requested is "BRSKI parameters". Shepherd suggests to list two volunteering authors as experts: Max Pritkin and Michael Richardson.

> (19) Describe reviews and automated checks performed by the Document Shepherd to validate sections of the document written in a formal language, such as XML code, BNF rules, MIB definitions, etc.

YANG definitions in the document where generated by YANG toolchain and
are passing datatracker syntax check. For source of toolchain see:

https://github.com/anima-wg/anima-bootstrap/blob/master/Makefile

NITS:
A) - D) resolved

E) IANA

  E.1) The text for for requesting pledgestatustelemtry is ok (reigstry+table), but
  i think the text for decribing how the table should look like is
  incomplete:

  The text is just requesting some initial values(version,...), but no
  context associated with it.

  A comparable JSON table is requested in rfc7519 section 10.1. In
  subsection 10.1.1 is defines the requested registration template,
  which include (using current BRSKI terminology): "item", "item description",
  "change controller", "specification document(s)".

  Resulting registry is in https://www.iana.org/assignments/jwt/jwt.xhtml

  I would suggest to amend the IANA section text to match such an example
  in spirit. The four columns in rfc7519 look reasonable. IMHO the "item"
  and "specification document" are mandatory, "change controller" is
  very useful, "description" is nice to have.

  E.2) There are two unclear text tags in the PKIX registry text:
          EDNOTE (if this is meant to be an AUTH48 or RFC-editor action, please change tag accordingly).
        XXX -
2018-08-07
16 Ignas Bagdonas IESG state changed to AD Evaluation from Publication Requested
2018-07-25
16 Toerless Eckert
Shepherd writeup for For draft-ietf-anima-bootstrapping-keyinfra-16
Shepherd: Toerless Eckert, tte+ietf@cs.fau.de

> https://www.ietf.org/iesg/template/doc-writeup-qa-style.html of 24 February 2012.

> (1) What type of RFC is being requested (BCP, …
Shepherd writeup for For draft-ietf-anima-bootstrapping-keyinfra-16
Shepherd: Toerless Eckert, tte+ietf@cs.fau.de

> https://www.ietf.org/iesg/template/doc-writeup-qa-style.html of 24 February 2012.

> (1) What type of RFC is being requested (BCP, Proposed Standard, Internet Standard, Informational, Experimental, or Historic)? Why is this the proper type of RFC? Is this type of RFC indicated in the title page header?

  RFC type requested: Proposed Standard. Correctly indicated in title page header.
  This document describes a protocol based on EST/RFC730 run between nodes of different
  roles - pledge, registrar, masa, proxy. It is intended to be useable across all type of
  networks and requires standardization for products of all roles from different vendors.

> (2) The IESG approval announcement includes a Document Announcement Write-Up. Please provide such a Document Announcement Write-Up. Recent examples can be found in the "Action" announcements for approved documents. The approval announcement contains the following sections:
>
> Technical Summary:

  This document specifies automated bootstrapping of a remote secure
  key infrastructure (BRSKI) using manufacturer installed X.509
  certificate, in combination with a manufacturer's authorizing
  service (MASA), both online and offline.  Bootstrapping a new device can
  occur using a routable address and a cloud service, or using only
  link-local connectivity, or on limited/disconnected networks.

  Support for lower security models, including devices with minimal
  identity, is described for legacy reasons but not encouraged.
  Bootstrapping is complete when the cryptographic identity of the new
  key infrastructure is successfully deployed to the device but the
  established secure connection can be used to deploy a locally issued
  certificate to the device as well.

> Working Group Summary:

  This document was called draft-pritikin-anima-bootstrapping-keyinfra before it was
  adopted. There was unanimous support for it in favor of adoption and
  none against, so this document was adopted by the ANIMA WG in February 2016.

  There was ongoing interest in this work posts since its adoption. There was never
  any opposition for this work. Since it adoption, a core mechanism of the
  work called the voucher was seen as useful that it was forked off into a separate
  document, which is now https://www.rfc-editor.org/rfc/rfc8366.txt after it was
  determined that there wa interest to not only use it in this documents protocol
  BRSKI, but also in draft-ietf-netconf-zerotouch.

  This document went through a long and intense document development
  period (9 months for individual document period, 28 months for WG
  document period). It has been reviewed well and passed last call without
  opposition.

> Was there anything in WG process that is worth noting? For example, was there controversy about particular points or were there decisions where the consensus was particularly rough?

  The most important change process was the above mentioned fork of the voucher
  text from the document. The concept itself grew through the WG work on the
  BRSKI document. BRSKI also inspired derived work in further working groups

  There was no noteworthy controversy about items of the document, instead, optional
  elements that could have delayed the document where forked off into future work
  (e.g. IPinIP proxy).
 
> Document Quality:
> Are there existing implementations of the protocol? Have a significant number of vendors indicated their plan to implement the specification?

  There is a range of existing implementations, and seemingly vendors working on BRSKI.
  Here are points from the mail thread opened during WG last call.
  Starting with <6ca37514-0a83-598c-ec9b-5dc007efc3e6@cisco.com>
  (WG Last Call on draft-ietf-anima-bootstrapping-keyinfra-15 -> references to code)

  Toerless: github.com/cisco/libest supports BRSKI
  Brian Carpenter, GRASP part of BRSKI: https://github.com/becarpenter/graspy
  Eliot Lear: I have reviewed the document and we have a PoC. I am also aware of
    others that have done PoC code.
  Eliot Lear: The 2nd piece of code is not open source and not by Cisco.
  Michael Richardson (<1234.1527803470@localhost>): https://minerva.sandelman.ca/
    https://github.com/AnimaGUS-minerva
    there are two MASA "live" on the Internet, see:
    https://minerva.sandelman.ca/metasite/2017/10/25/jokeshop-setup.html
      - more technical explanation in his email.

  An overview of other efforts inspired or related to BRSKI can be found in
    https://www.ietf.org/id/draft-richardson-enrollment-roadmap-02.txt

>  Are there any reviewers that merit special mention as having done a thorough review, e.g., one that resulted in important changes or a conclusion that the document had no substantive issues? If there was a MIB Doctor, Media Type or other expert review, what was its course (briefly)? In the case of a Media Type review, on what date was the request posted?

  The document received numerous detailed reviews during its WG time, including,
  but not limited to the reviews by Brian Carpenter and the Shepherd, with the
  conclusion that the document has no substantive issues.

  There was no dedicated expert review for BRSKI IANA allocation requests. There was
  YANG review for Voucher RFC8366 which BRSKI inherits and extends so BRSKI YANG complies
  to the YANG review conclusions from RFC8366.

> Personnel:
> Who is the Document Shepherd? Who is the Responsible Area Director?

  Document Shepherd: Toerless Eckert
  Responsible Area Director: Ignas Bagdonas

> (3) Briefly describe the review of this document that was performed by the Document Shepherd. If this version of the document is not ready for publication, please explain why the document is being forwarded to the IESG.
>
  First shepherd review from 2017:
  https://github.com/anima-wg/anima-bootstrap/tree/master/1706-shepherd-review
  Second shepherd review 2018:
  https://github.com/anima-wg/anima-bootstrap/blob/master/shepherd-review-2.txt
  Shepherd also parrticipated often in the authors ongoing work meeting
  and provided input.
 
  Summary: extensive repeated shepherd review, primarily focussed on document clarity,
  correct integration with the other ANIMA charter items and various technical
  an formalistic details.

> (4) Does the document Shepherd have any concerns about the depth or breadth of the reviews that have been performed?

  No concerns. The document is comprehensive and conclusive.

> (5) Do portions of the document need review from a particular or from broader perspective, e.g., security, operational complexity, AAA, DNS, DHCP, XML, or internationalization? If so, describe the review that took place.

The shepherd thinks that standard IESG review is appropriate. The three
key areas are OPS and SEC:

  Operational complexity review: Baked into the documents goal and WG process:
  This document automates often very painfull manual processes (secure device enrollment),
  so the WG thinks that the document actually is a solution and not a perpetrator
  wrt. operational complexity.

  Being in OPS, the design choices by the authors and WG did focus on this aspect.
  Pretty much all of the options in the document address the problem of allowing
  deployability in different operational environment (specifically different
  form of vouchers and discovery).

  There was to the memory of the shepherd no prior external (non-WG) SEC review
  for BRSKI, but the fundamental new security concept voucher introduced for
  BRSKI is already an RFC (8366), which includes a SEC review understanding the
  whole concept how the voucher is used in BRSKI. The authors also include experts
  of prior security protocol standards (e.g.: RFC7030).

> (6) Describe any specific concerns or issues that the Document Shepherd has with this document that the Responsible Area Director and/or the IESG should be aware of? For example, perhaps he or she is uncomfortable with certain parts of the document, or has concerns whether there really is a need for it. In any event, if the WG has discussed those issues and has indicated that it still wishes to advance the document, detail those concerns here.

  No concerns by the document shepherd or the WG (in the memor of the shepherd).

> (7) Has each author confirmed that any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79 have already been filed. If not, explain why?

  Yes. The authors, have confirmed in writing or verbally that they are not aware
  of other IPR than what is listed on datatracker:

  https://datatracker.ietf.org/ipr/search/?submit=draft&id=draft-ietf-anima-bootstrapping-keyinfra

> (8) Has an IPR disclosure been filed that references this document? If so, summarize any WG discussion and conclusion regarding the IPR disclosures.

The Cisco and Silver Sprint disclosures where brought up by the WG when they
where filed (2014/2016) with no concerns raised. All three IPR where brought
up during Shepherd Writeup when it was it was discovered that the Juniper
IPR had only been disclosed against draft-netconf-zerotouch (which shares the
voucher with BRSKI). Juniper immediately also filed the disclosure against BRSKI
because it might be applicable to BRSKI to. No concerns against the document
processing where raised because of any of the disclosures.

> (9) How solid is the WG consensus behind this document? Does it represent the strong concurrence of a few individuals, with others being silent, or does the WG as a whole understand and agree with it?

  There is broad support for this document. It was reviewed by active WG
  participants.

> (10) Has anyone threatened an appeal or otherwise indicated extreme discontent? If so, please summarise the areas of conflict in separate email messages to the Responsible Area Director. (It should be in a separate email because this questionnaire is publicly available.)

  No. There was unanimous support for this work and nobody raised any objections.

> (11) Identify any ID nits the Document Shepherd has found in this document. (See http://www.ietf.org/tools/idnits/ and the Internet-Drafts Checklist). Boilerplate checks are not enough; this check needs to be thorough.

  This document is now free of officially tracked nits.
  There is a small number of other nits discoverded through this shepherd writeup,
  the authors have been asked to fix them in the next rev, and this email
  is appended at the end of this writeup.

> (12) Describe how the document meets any required formal review criteria, such as the MIB Doctor, media type, and URI type reviews.

  The document requires IANA review and YANG doctor review.
  Datatracker already shows the included YANG definitions to pass YANG validation.

> (13) Have all references within this document been identified as either normative or informative?

  Yes.
 
> (14) Are there normative references to documents that are not ready for advancement or are otherwise in an unclear state? If such normative references exist, what is the plan for their completion?

  No.

> (15) Are there downward normative references references (see RFC 3967)? If so, list these downward references to support the Area Director in the Last Call procedure.

  See also a nit at the end of this review.

  rfc7228 defined terminology is used in this document and therefore that
  document is listed as a normative reference even though it is an informational
  document. Shepherd thinks this is appropriate because this terminology is now widely
  accepted and there is no standard document alternative for this terminology.

> (16) Will publication of this document change the status of any existing RFCs? Are those RFCs listed on the title page header, listed in the abstract, and discussed in the introduction? If the RFCs are not listed in the Abstract and Introduction, explain why, and point to the part of the document where the relationship of this document to the other RFCs is discussed. If this information is not in the document, explain why the WG considers it unnecessary.

  No change to existing RFCs suggested.

> (17) Describe the Document Shepherd's review of the IANA considerations section, especially with regard to its consistency with the body of the document. Confirm that all protocol extensions that the document makes are associated with the appropriate reservations in IANA registries. Confirm that any referenced IANA registries have been clearly identified. Confirm that newly created IANA registries include a detailed specification of the initial contents for the registry, that allocations procedures for future registrations are defined, and a reasonable name for the new registry has been suggested (see RFC 5226).

  All requests in IANA section look correct except for one NIT:

  -16 requests one registry for "Voucher status telemetry attributes". I am not
  even clear if IANA allows single-table registries, but given how there might be 
  future voucher parameters too, i told the authors i would prefer for the request
  to be changed to "Voucher parameters" registry with one table "Voucher status telemetry
  attributes".

> (18) List any new IANA registries that require Expert Review for future allocations. Provide any public guidance that the IESG would find useful in selecting the IANA Experts for these new registries.

  Spheherd does not have good insight into experts in this space, but suggest
  to ask ART ADs and consider authors of RFC8366 (voucher) as candidates.

> (19) Describe reviews and automated checks performed by the Document Shepherd to validate sections of the document written in a formal language, such as XML code, BNF rules, MIB definitions, etc.

YANG definitions in the document where generated by YANG toolchain and
are passing datatracker syntax check. For source of toolchain see:

https://github.com/anima-wg/anima-bootstrap/blob/master/Makefile

NITS:

Dear authors of draft-ietf-anima-bootstrapping-keyinfra
Please review and accordingly resolve the following nits in revision -16.
These are result of shepherd lookup and from Brian:

A) Downward references

RFC3542 is a normative reference that is not referenced in the document
        either remove or move into informational so as not to create an
unnecessary normative downward reference.

RFC7228 is a normative reference referenced in the document even though
        it is an informational document. I am writing into the shepherd doc
that i think this is an appropriate downrev given how we only
use it for terminology but derive requirements through classifications
by that terminology ("constrained").

let me know if from your experience you think this is inappropriate
and you'd rather like to move it to informational.

B) IANA

There is one candidate NIT where i am looking for your guidance, also
given possible future work:

The IANA section asks for the creation of a registry entitled:
_Voucher Status Telemetry Attributes_. Even if IANA allocates registries
with just one table, i am going to suggest that the ask is changed to
create a registry "Voucher Parameter registry" with one table
called "Voucher Status Telemetry Attribute".  Especially in the likely
expectation that future work might come up with more voucher parameters.
Please change the wording in the IANA section accordingly.

C) Expert reviewer

Any suggested expert reviewer for the new voucher registry
Short of an answer, If not, i'll recommend IANA to ask authors of RFC8366.

D) https://github.com/anima-wg/anima-bootstrap/issues/66

rev -16 section 5.2 has an unresolved EDNOTE pointing to a section for "Pledge Authorization". That section was last D.1.3.2. in -07 and was then removed when D.* was integrated back and the rest of D was removed in -08.

I can not find offhand any stubs of D.1.3.2 integrated elsewhere into the text, so i would suggest to reintroduce an appropriate subset of that section (aka: anything you think is uncontentuous).
2018-07-25
16 Toerless Eckert Responsible AD changed to Ignas Bagdonas
2018-07-25
16 Toerless Eckert IETF WG state changed to Submitted to IESG for Publication from WG Consensus: Waiting for Write-Up
2018-07-25
16 Toerless Eckert IESG state changed to Publication Requested
2018-07-25
16 Toerless Eckert IESG process started in state Publication Requested
2018-07-25
16 Toerless Eckert Changed document writeup
2018-07-15
16 Sheng Jiang Added to session: IETF-102: anima  Wed-0930
2018-07-15
Jenny Bui Posted related IPR disclosure: Juniper's Statement about IPR related to draft-ietf-anima-bootstrapping-keyinfra
2018-07-03
16 Toerless Eckert IETF WG state changed to WG Consensus: Waiting for Write-Up from In WG Last Call
2018-06-22
16 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-16.txt
2018-06-22
16 (System) New version approved
2018-06-22
16 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2018-06-22
16 Michael Richardson Uploaded new revision
2018-06-22
16 Michael Richardson Uploaded new revision
2018-05-30
15 Toerless Eckert
Dear ANIMA WG,

After thorough review and discussions on the mailing list and in bootstrap
meetings, leading to the -15 version the authors and WG …
Dear ANIMA WG,

After thorough review and discussions on the mailing list and in bootstrap
meetings, leading to the -15 version the authors and WG chairs think the draft
is now mature enough for working group last call.

This e-mail starts a two-weeks period for evaluation of this document by the WG.

Please provide your feedback on the ANIMA mailing list by end of June 14th, 2018.

Thanks and best regards

Toerless (for the ANIMA chairs).
2018-05-30
15 Toerless Eckert IETF WG state changed to In WG Last Call from WG Document
2018-05-30
15 Toerless Eckert Changed consensus to Yes from Unknown
2018-05-30
15 Toerless Eckert
This was intended to be proposed standard from day 1 of ANIMA charter and never contended by the WG. Wrong status here was just a …
This was intended to be proposed standard from day 1 of ANIMA charter and never contended by the WG. Wrong status here was just a lazy oversight in datatracker by yours truly greenhorn WG chair.
2018-05-30
15 Toerless Eckert Intended Status changed to Proposed Standard from Informational
2018-04-26
15 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-15.txt
2018-04-26
15 (System) New version approved
2018-04-26
15 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Kent Watsen , Steinthor Bjarnason , Michael Behringer
2018-04-26
15 Max Pritikin Uploaded new revision
2018-04-14
14 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-14.txt
2018-04-14
14 (System) New version approved
2018-04-14
14 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2018-04-14
14 Michael Richardson Uploaded new revision
2018-04-14
14 Michael Richardson Uploaded new revision
2018-03-26
13 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-13.txt
2018-03-26
13 (System) New version approved
2018-03-26
13 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2018-03-26
13 Michael Richardson Uploaded new revision
2018-03-26
13 Michael Richardson Uploaded new revision
2018-03-05
12 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-12.txt
2018-03-05
12 (System) New version approved
2018-03-05
12 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , Max Pritikin , Michael Richardson , Steinthor Bjarnason , Kent Watsen
2018-03-05
12 Michael Richardson Uploaded new revision
2018-03-05
12 Michael Richardson Uploaded new revision
2018-02-20
11 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-11.txt
2018-02-20
11 (System) New version approved
2018-02-20
11 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Kent Watsen , Steinthor Bjarnason , Michael Behringer
2018-02-20
11 Michael Richardson Uploaded new revision
2018-02-20
11 Michael Richardson Uploaded new revision
2018-02-13
10 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-10.txt
2018-02-13
10 (System) New version approved
2018-02-13
10 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , anima-chairs@ietf.org, Michael Richardson , Max Pritikin , Kent Watsen , Steinthor Bjarnason
2018-02-13
10 Michael Richardson Uploaded new revision
2018-02-13
10 Michael Richardson Uploaded new revision
2017-10-30
09 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-09.txt
2017-10-30
09 (System) New version approved
2017-10-30
09 (System) Request for posting confirmation emailed to previous authors: Max Pritikin , Michael Richardson , Michael Behringer , Steinthor Bjarnason , Kent Watsen
2017-10-30
09 Max Pritikin Uploaded new revision
2017-10-13
08 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-08.txt
2017-10-13
08 (System) New version approved
2017-10-13
08 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , anima-chairs@ietf.org, Michael Richardson , Steinthor Bjarnason , Max Pritikin , Kent Watsen
2017-10-13
08 Max Pritikin Uploaded new revision
2017-07-03
07 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-07.txt
2017-07-03
07 (System) New version approved
2017-07-03
07 (System) Request for posting confirmation emailed to previous authors: Max Pritikin , Michael Richardson , Michael Behringer , Steinthor Bjarnason , Kent Watsen
2017-07-03
07 Max Pritikin Uploaded new revision
2017-05-24
06 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-06.txt
2017-05-24
06 (System) New version approved
2017-05-23
06 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , anima-chairs@ietf.org, Michael Richardson , Steinthor Bjarnason , Max Pritikin , Kent Watsen
2017-05-23
06 Max Pritikin Uploaded new revision
2017-03-13
05 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-05.txt
2017-03-13
05 (System) New version approved
2017-03-13
05 (System) Request for posting confirmation emailed to previous authors: Michael Behringer , anima-chairs@ietf.org, Michael Richardson , Steinthor Bjarnason , Max Pritikin , Kent Watsen
2017-03-13
05 Max Pritikin Uploaded new revision
2017-01-17
04 Sheng Jiang Notification list changed to "Toerless Eckert" <tte+ietf@cs.fau.de>
2017-01-17
04 Sheng Jiang Document shepherd changed to Toerless Eckert
2017-01-17
04 Sheng Jiang Intended Status changed to Informational from None
2016-11-15
04 Sheng Jiang Added to session: IETF-97: anima  Wed-0930
2016-10-31
04 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-04.txt
2016-10-31
04 (System) New version approved
2016-10-31
03 (System) Request for posting confirmation emailed to previous authors: anima-chairs@ietf.org, "Steinthor Bjarnason" , "Max Pritikin" , "Michael Richardson" , "Michael Behringer"
2016-10-31
03 Michael Richardson Uploaded new revision
2016-06-30
03 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-03.txt
2016-03-17
02 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-02.txt
2015-10-19
01 Max Pritikin New version available: draft-ietf-anima-bootstrapping-keyinfra-01.txt
2015-08-26
00 Sheng Jiang This document now replaces draft-pritikin-anima-bootstrapping-keyinfra instead of None
2015-08-26
00 Michael Richardson New version available: draft-ietf-anima-bootstrapping-keyinfra-00.txt