Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enterprise packed attestation guidance #1954

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

dwaite
Copy link
Contributor

@dwaite dwaite commented Aug 30, 2023

Fixes #1916

Creates a new section describing verification when packed format is used for enterprise attestation.


Preview | Diff

This is separately proposed for general packed attestation verification.
@dwaite dwaite requested review from ve7jtb and pascoej August 30, 2023 18:42
@plehegar plehegar added this to the L3-WD-01 milestone Aug 30, 2023
index.bs Outdated Show resolved Hide resolved
index.bs Outdated Show resolved Hide resolved
index.bs Outdated Show resolved Hide resolved
index.bs Outdated
1. From a hardware device which is manufactured with a device-specific attestation statement and key
2. Via a provisioned attestation statement, such as with a platform authenticator configured via managed policy

For attestation statements provisioned at manufacturing, the Extension OID `1.3.6.1.4.1.45724.1.1.2` (`id-fido-gen-ce-sernum`)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You enumerate two cases just above, but then only mention one here. Are provisioned enterprise attestations forbidden from using this extension? Or can either use them?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd raise to someone more familiar such as @ve7jtb

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are still pending guidance here on usage for MDM-provisioned EAs. Since these can be dynamic (reprovisioned by the MDM or by switching which software provides the credentials), I would lean toward either saying this should not be used, or that it must indicate a persistent device identifier (and not some software value).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will update to recommend against this for software-provisioned EAs

Co-authored-by: Emil Lundberg <[email protected]>
@@ -5787,6 +5787,18 @@ The attestation certificate MUST have the following fields/extensions:
are both OPTIONAL as the status of many attestation certificates is available through authenticator metadata services.
See, for example, the FIDO Metadata Service [[FIDOMetadataService]].

### Certificate Requirements for Enterprise Packed Attestation Statements ### {#sctn-enterprise-packed-attestation-cert-requirements}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What in the spec references this section - i.e. when does an RP detect it has received an enterprise attestation, and should apply these processing rules?
This seems particularly important because there was talk about when an RP requests enterprise attestation, and none is available, it could fallback to direct.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, do any of the packed attestation certificate requirements above also apply to enterprise attestation certificates, or are these checks mutually exclusive?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree the section should probably be referenced somewhere. It's a bit weird, though, because this would of course only apply in the case of verifying an enterprise attestation. But perhaps this could just be an optional step of the verification procedure? I.e.:

dwaite and others added 4 commits March 6, 2024 13:26
Enterprise attestation is used elsewhere without capitalization, and it
could be said to be a characteristic and not a format like Packed.

Change "provisioned at manufacturing" to "provided at manufacturing" to
clarify difference from MDM-provisioned attestations.
@emlun emlun self-requested a review March 27, 2024 18:11
@@ -5787,6 +5787,18 @@ The attestation certificate MUST have the following fields/extensions:
are both OPTIONAL as the status of many attestation certificates is available through authenticator metadata services.
See, for example, the FIDO Metadata Service [[FIDOMetadataService]].

### Certificate Requirements for Enterprise Packed Attestation Statements ### {#sctn-enterprise-packed-attestation-cert-requirements}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree the section should probably be referenced somewhere. It's a bit weird, though, because this would of course only apply in the case of verifying an enterprise attestation. But perhaps this could just be an optional step of the verification procedure? I.e.:

Comment on lines +5882 to +5883
For attestation statements provided at manufacturing, the Extension OID `1.3.6.1.4.1.45724.1.1.2` (`id-fido-gen-ce-sernum`)
MUST be present, containing a unique serial number for the device as an OCTET STRING. The extension MUST NOT be marked as critical.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any way the RP can detect whether this is the case, and thus enforce this requirement? If not, the only actually actionable requirement in this section is that when the extension is present, the RP can verify that it is not marked critical. It's already a bit awkward that many of the requirements set in §8.2.1 (in particular the requirements for the subject field, other than Subject-OU) can only really be verified by a certification auditor, and not by a WebAuthn RP.

If this requirement is not really actionable for RPs, perhaps we should rephrase this section from a set of requirements to verify, to just a description of how these values can be retrieved and parsed if present?

@dwaite
Copy link
Contributor Author

dwaite commented Jun 26, 2024

@emlun I took a pass at some new proposed text, based on your above feedback and the corresponding conversation on the call about the variance of enterprise attestations:

8.2.2. Certificate Requirements for Enterprise Packed Attestation Statements

Enterprise attestations are often used to restrict access to enterprise resources to a small set of specific, vetted authenticators. Examples might include issuing hardware-based roaming authenticators to employees with a specific configuration, or deploying software authenticators via a system for managing corporate-owned devices.

This close relationship between relying party and authenticator may lead to a higher degree of variance in the attributes available in the enterprise attestation. Similar to non-enterprise attestations, there may be certification bodies that set additional requirements on enterprise attestations in order to achieve certification.

The Extension OID 1.3.6.1.4.1.45724.1.1.2 ( id-fido-gen-ce-sernum ) MAY be present, and if so MUST indicate a unique value per device against a particular AAGUID. This value MUST remain constant through factory resets, but MAY be distinct from any other serial number or other hardware identifier associated with the device. This extension MUST NOT be marked as critical, and the corresponding value is encoded as an OCTET STRING. This extension MUST NOT be present in non-enterprise attestations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Describe packed enterprise attestation
8 participants