Subject: [Rats] Benjamin Kaduk's Discuss on draft-ietf-rats-tpm-based-network-device-attest-11: (with DISCUSS and COMMENT)

From: Benjamin Kaduk via Datatracker <[email-masked]>
Date: Wed, 02 Feb 2022 21:05:42 -0800

Benjamin Kaduk has entered the following ballot position for
draft-ietf-rats-tpm-based-network-device-attest-11: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)

Please refer to https://www.ietf.org/blog/handling-iesg-ballot-positions/
for more information about how to handle DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-rats-tpm-based-network-device-attest/

----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

Something of a process question, but in §2.3 we refer to
[Canonical-Event-Log] in a normative manner ("MUST be formatted according
to ..."), but the referenced document is marked as "draft" and "work in
progress", with warning that "Readers should not design products based
on this document".  Are we planning to hold publication of this document
until the TCG dependency is finalized?

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

There are quite a few requirements that are stated in multiple locations
in this document, using normative language in the multiple locations.
This can lead to confusion and ambiguity if the different statements are
found to be subtly different, and I would recommend making a normative
statement of each requirement exactly once, with other instances merely
mentioning as a statement of fact that the behavior in question is
required.  I note some (but presumably not all) instances in the
section-by-section remarks as they occur.

Other than that, it's generally well-written and was quite easy to follow.
Thanks!  (That, of course, could not possibly keep me from having further
comments to make, though...)

Section 1.5

   3.  Conveyance of Evidence reliably transports the collected Evidence
       from Attester to a Verifier to allow a management station to
       perform a meaningful appraisal in Step 4.  The transport is
       typically carried out via a management network.  The channel must
       provide integrity and authenticity, and, in some use cases, may
       also require confidentiality.

It seems like there is some subtlety here if we insist that the
communications channel to a potentially untrustworthy endpoint will
provide integrity and authenticity (let alone confidentiality).  I suggest
giving more clarity on what threats these technical measures are
protecting against in relation to the potentially untrusted endpoint.

Section 2.1

   The result is that the Verifier can verify the device's identity by
   checking the subject attribute of the distinguished name and
   signature of the certificate containing the TPM's attestation public

Please just refer to the Subject [RFC5280] of the certificate; per
draft-ietf-uta-rfc6125bis the subjectAltName (not the DN) is the preferred
representation for this information.

   *  Credentials - Administrators may wish to verify via attestation
      that public keys (and other credentials) outside the Root of Trust
      have not been subject to unauthorized tampering.  (By definition,

It's a bit surprising to see public keys referred to as Credentials; while
a private key or a signed certificate might be deemed a credential, a
public key devoid of other context seems to just be a public key.  Unless
the intent was to refer to public keys that are entries in a trust store,
in which they might be said to be credentials of the trusted entities that
hold the corresponding private keys?

Section 2.2

   *  When separate Identity and Attestation keys are used, the
      Attestation Key (AK) and its X.509 certificate should parallel the
      DevID, with the same device ID information as the DevID
      certificate (that is, the same subject and subjectAltName (if
      present), even though the key pairs are different).  This allows a
      quote from the device, signed by an AK, to be linked directly to
      the device that provided it, by examining the corresponding AK
      certificate.  [...]

This seems to also implicitly assume that the issuer of these certificates
does not issue any other credentials using the same subject information.
When the device serial number is included, this seems pretty reliable, but
in other cases the situation is less clear.

Section 2.3

   5.  Quotes MUST be retrieved from the TPM according to TCG TAP
       Information Model [TAP] and the CHARRA YANG model
       [I-D.ietf-rats-yang-tpm-charra].  While the TAP IM gives a
       [...]
       the signature, to preserve the trust model.  The
       [I-D.ietf-rats-yang-tpm-charra] can be used for this purpose.

If we're going to MUST-level require something, then "can be used for this
purpose" seems inaccurate -- wouldn't "is used" be better?

Section 2.4

   *  The product to be attested MUST be shipped by the equipment vendor
      with both an IEEE 802.1AR Device Identity and an Initial
      Attestation Key (IAK) with certificate in place.  The IAK

I feel like this is maybe the third time we've had "MUST ship with IDevID
and IAK"; once is probably enough, and would avoid any confusion if the
different locations in the text are subsequently found to be subtly
different.
(A couple of the other requirements in this section are, I think,
duplicates for the second time.)

Section 2.4.2

   Quotes from a TPM can provide evidence of the state of a device up to
   the time the evidence was recorded, but to make sense of the quote in
   most cases an event log that identifies which software modules
   contributed which values to the quote during startup MUST also be
   provided.  [...]

The "in most cases" seems to be a heavy qualifier on the "MUST".  How do I
know when the "MUST" does not apply?  (Or does it always apply, and there
are just rare instances where it is not actually needed for Verifier
operation?)

Section 3.1.1

   A secure Device Identity (DevID) in the form of an IEEE 802.1AR DevID
   certificate [IEEE-802-1AR] MUST be provisioned in the Attester's
   TPMs.

(Fourth time as a "MUST"?)

Section 3.2.1

   Network Management systems MUST retrieve signed PCR based Evidence
   using [I-D.ietf-rats-yang-tpm-charra] with NETCONF or RESTCONF.

We had a MUST-level requirement up in §3.2 for "accomplished via an
interface that implements the YANG Data Model for [tpm-charra]", but this
one also requires (NETCONF or RESTCONF), excluding potential future
developments such as CORECONF.  This is exactly the sort of skew between
restatements of a single requirement that has been problematic in other
documents, as I alluded to previously.

   Implementations that use NETCONF MUST do so over a TLS or SSH secure
   tunnel.  Implementations that use RESTCONF transport MUST do so over
   a TLS or SSH secure tunnel.

This is not a requirement I've seen before.  Everything else typically
just uses the YANG security considerations boilerplate that notes that the
mandatory (to implement) secure transport for RESTCONF is TLS and the
mandatory secure transport for NETCONF is SSH.  I don't even know that you
*can* use SSH for RESTCONF (NETCONF seems pretty clear that TLS is okay).

Section 3.3

   In this application, each device may need to be equipped with signed
   RIMs to act as an Attester, and also an Appraisal Policy for Evidence
   and a selection of trusted X.509 root certificates, to allow the
   device to act as a Verifier.  An existing link layer protocol such as
   802.1X [IEEE-802.1X] or 802.1AE [IEEE-802.1AE], with Evidence being
   enclosed over a variant of EAP [RFC3748] or LLDP [LLDP] are suitable
   methods for such an exchange.

Should we say that the details of those "variant"s being out of scope for
this document?  (What we do say is pretty far from a complete solution.)

Section 5

Do we want to incorporate by reference the security considerations
discussed in any other documents?

There may also be some banal things to say about the security of the
system as a whole being compromised if any omissions are made when
building the parts for measuring code, configuration, etc.

Section 5.1

   With these elements, the device's manufacturer and serial number can
   be identified by analyzing the DevID certificate plus the chain of
   intermediate certificates leading back to the manufacturer's root
   certificate.  As is conventional in TLS or SSH connections, a random
   nonce must be signed by the device in response to a challenge,
   proving possession of its DevID private key.

   RIV uses the DevID to validate a TLS or SSH connection to the device
   as the attestation session begins.  Security of this process derives
   from TLS or SSH security, with the DevID providing proof that the
   session terminates on the intended device.  See [RFC8446], [RFC4253].

   Evidence of software integrity is delivered in the form of a quote
   signed by the TPM itself.  Because the contents of the quote are
   signed inside the TPM, any external modification (including

I think somewhere in here would be a good place to reiterate that we
require a binding between the DevID key and the AK as residing in the same
TPM on the device, and that we rely on the presence of the device serial
number as Subject information combined with trust in the manufacturer to
not reuse serial numbers (or sign bogus stuff) in order to obtain that
binding.
(Or maybe it fits better near the start of this section where we
specifically list the two different sets of keypairs.)

Section 5.2

   *  The entire device could be spoofed.  If the Verifier goes to
      appraise a specific Attester, it might be redirected to a
      different Attester.  Use of the 802.1AR Device Identity (DevID) in
      the TPM ensures that the Verifier's TLS or SSH session is in fact
      terminating on the right device.

We might mention that if the device in question is compromised it could
then go and tunnel the contents of that TLS or SSH session to a different
Attester.  (As I understand it, we then go on to talk about how such an
attack would be detected/prevented.)

   This is accomplished in RIV through use of an AK certificate with the
   same elements as the DevID (same manufacturer's serial number, signed
   by the same manufacturer's key), but containing the device's unique
   AK public key instead of the DevID public key.

I would probably reiterate that it is vital to the security of the system
to enforce that the AK and DevID certificates are signed by the same
manufacturer's key.

Section 5.4

   *  TCG document [Platform-DevID-TPM-2.0] shows how the initial
      Attestation keys can be used to certify LDevID and LAK keys.  Use
      of the LDevID and LAK allows the device owner to use a uniform
      identity structure across device types from multiple manufacturers
      (in the same way that an "Asset Tag" is used by many enterprises
      to identify devices they own).  [...]

I think we should go into more detail on how the requirements that applied
to manufacturers as relate to IDevID+IAK are translated to requirements on
device owners when they elect to use local device credentials.  E.g., the
requirement to use the same subject information in the certificates
remains, as does the requirement to not issue certs to multiple devices
that use the same identifier.  On the other hand, though, the requirement
for being signed "by the same manufacturer key" seems to need
modification, as the "same key" is going go be higher up in the
certification path now.  (Hmm, maybe in a slightly different spot in the
section, as it also applies to the "any other mechanism" bullet point.)

   Clearly, local keys can't be used for secure Zero Touch provisioning;
   installation of the local keys can only be done by some process that
   runs before the device is installed for network operation.

How does this assertion relate to what BRSKI (RFC 8995) does?

Section 5.5

   RIV also depends on reliable Reference Values, as expressed by the
   RIM [RIM].  The definition of trust procedures for RIMs is out of
   scope for RIV, and the device owner is free to use any policy to
   validate a set of reference measurements.  RIMs may be conveyed out-
   of-band or in-band, as part of the attestation process (see
   Section 3.1.3).  But for network devices, where software is usually
   shipped as a self-contained package, RIMs signed by the manufacturer
   and delivered in-band may be more convenient for the device owner.

Is there a risk of a "replay attack" for in-band delivery of RIM data?
That is, deliberaly giving the peer stale RIM data that corresponds to an
old (e.g., vulnerable) firmware instead of the latest one (for patched
firmware)?

Section 9.2

   to record the results, and a Root of Trust for Reporting to report
   the results [TCGRoT], [SP800-155], [SP800-193].

The [TCGRoT] reference contains the word "reporting" only once, in a
non-normative note that lists the "one or more security-specific
functions" that a RoT can perform, so it may not be a particularly good
reference here.  [SP800-193] seems to mention reporting only insofar as to
say that RTRec is for Recovery, not Reporting.

Section 9.4

   --------------------------------------------------------------------
   | Connect the TPM to the TLS stack                | Vendor TLS     |
   |    o  Use the DevID in the TPM to authenticate  | stack (This    |
   |       TAP connections, identifying the device   | action is      |
   |                                                 | simply         |
   |                                                 | configuring TLS|
   |                                               | to use the DevID |
   |                                               | as its client    |
   |                                               | certificate)     |

Configuring a TLS stack to use a certificate with inaccessible private key
is not always a "simple" action :)

   | Make CoSWID tags for BIOS/Loader/Kernel objects | IETF CoSWID    |

Should we use RFC numbers/I-D names in addition to prose names?

Section 10.1

It will be interesting to see what the RFC Editor thinks about [IMA] as a
normative reference.  I seem to recall some controversy over in NFSv4
about whether IMA was suitable to reference in an RFC...

RFC 7950 is cited only once, in a context that does not call out to be
classified as normative.  (Perhaps it should be cited from other locations
if it is indeed expected to be normative?)

I'm not convinced that RFC 8572 needs to be classified as normative.
While it does appear adjacent to a MUST, that seems to be of the form "if
you might be used for 8572, you MUST do <X> to be prepared".  Only the <X>
seems normative in that construction, not any use of 8572.

Section 10.2

If "A normative taxonomy of terms is given in
[I-D.ietf-rats-architecture]", how could we possibly classify that draft
as informative?

NITS

I found both https://github.com/ietf-rats-wg and
https://github.com/ietf-rats but neither seemed to have a repo that holds
current and ongoing development for this document, so I gave up and am
submitting these the old-fashioned way.

Section 1

   A generic architecture for remote attestation has been defined in
   [I-D.ietf-rats-architecture].  Additionally, the use cases for
   remotely attesting networking devices are discussed within Section 6
   of [I-D.richardson-rats-usecases].  [...]

I suggest s/the use cases/use cases/ -- no need to implicitly claim to be
an exhaustive listing.

Section 1.2

   or a threat detection and mitigation tool, etc.).  While informally
   referred to as attestation, this document focuses on a specific
   subset of attestation tasks, defined here as Remote Integrity
   Verification (RIV).  RIV takes a network equipment centric
   perspective that includes a set of protocols and procedures for

I suggest s/RIV takes/RIV in this document takes/

I also think that "network-equipment-centric" should be hyphenated, but
the RFC Editor will probably catch it if we're unsure.

Section 1.5

   Software used to boot a device can be described as a chain of
   measurements, anchored at the start by a Root of Trust for

I don't think that software in general can be described *as* a bunch of
measurements.  To say it is described *by* a bunch of measurements seems
much less problematic.

Section 1.7

   *  This solution is for use in non-privacy-preserving applications
      (for example, networking, Industrial IoT), avoiding the need for a
      Privacy Certificate Authority for attestation keys [AK-Enrollment]

The referenced document seems to indicate that the term "Attestation CA"
is now preferred to "Privacy CA".

   *  Run-Time Attestation: The Linux Integrity Measurement Architecture
      [IMA] attests each process launched after a device is started (and
      is in scope for RIV), but continuous run-time attestation of Linux

Perhaps "in scope for RIV in general"?

      or other multi-threaded operating system processes after they've
      started considerably expands the scope of the problem.  Many

I think that, sentence-structure wise, "they've" refers to the processes
having started, but perhaps we intend to refer to the OSes as having
started?

   *  Processor Sleep Modes: Network equipment typically does not
      "sleep", so sleep and hibernate modes are not considered.
      Although out of scope for RIV, Trusted Computing Group
      specifications do encompass sleep and hibernate states.

Are they out of scope for RIV in general or just for RIV as handled in
this document (for network equipment)?

   *  Virtualization and Containerization: In a non-virtualized system,
      the host OS is responsible for measuring each User Space file or
      process, but that's the end of the boot process.  For virtualized

We could probably tighten this up around "that's the end of the boot
process".  Is it that "the boot process (which is what this document
considers itself with) ends once the files have been verified" or maybe
"such measurement occurs after the boot process has completed"?

Section 2.1

       Reset---------------flow-of-time-during-boot--...------->

Is the '...' (vs '---') intentional?

Section 2.3

   2.  For devices using UEFI and Linux, measurements of firmware and
       bootable modules MUST be taken according to TCG PC Client
       [PC-Client-EFI-TPM-1.2] or [PC-Client-BIOS-TPM-2.0], and Linux
       IMA [IMA]

Full stop at end of sentence.

Section 3.3

Figure 5 lacks a "Step 0B" annotation (though I'd be hard-pressed to find
a place to fit it in)

Section 9.3

Why is there a box in Figure 6 for UDP, that doesn't line up with anything
else?

Also, the TAP (PTS2.0) box seems misaligned.