New issue
Advanced search Search tips

Issue 803829 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: ----
Type: ----



Sign in to add a comment

Implement AttestationConveyancePreference for the WebAuthN API

Project Member Reported by kpaulhamus@chromium.org, Jan 19 2018

Issue description

Add AttestationConveyancePreference to MakePublicKeyCredentials and support replacing device certificates with "Self Attestation" certificates.
 
Owner: agl@chromium.org
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 2 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54e157ee6d142e724c0f2bdfe8d54644bb583781

commit 54e157ee6d142e724c0f2bdfe8d54644bb583781
Author: Adam Langley <agl@chromium.org>
Date: Fri Feb 02 18:50:36 2018

webauthn: implement AttestationConveyancePreference.

AttestationConveyancePreference allows an RP to declare whether or not
they are interested in attestation information. If not (which is the
default), it is replaced with a “none” attestation.

The option for ”indirect” attestation is currently implemented in the
same way as “direct” since we are not currently planning on standing up
a Privacy CA for this.

The AAGUID is not zeroed out because, for U2F devices, the AAGUID is
created by Chrome and is always zero. When we support CTAP2 devices this
will have to be addressed.

(The URLs in the comments here might not actually work yet. They are
written assuming that https://github.com/w3c/webauthn/pull/741 lands,
which should happen within a week or two.)

Bug:  803829 
Change-Id: Id701349ea2ec999b40a592cc94b1535818c25e78
Reviewed-on: https://chromium-review.googlesource.com/895387
Reviewed-by: Mike West <mkwst@chromium.org>
Reviewed-by: Kim Paulhamus <kpaulhamus@chromium.org>
Reviewed-by: Jan Wilken Dörrie <jdoerrie@chromium.org>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Commit-Queue: Adam Langley <agl@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534110}
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/content/browser/webauth/authenticator_impl.cc
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/content/browser/webauth/authenticator_impl.h
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/attestation_object.cc
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/attestation_object.h
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/attestation_statement.cc
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/attestation_statement.h
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/register_response_data.cc
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/device/u2f/register_response_data.h
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/third_party/WebKit/Source/modules/credentialmanager/CredentialManagerTypeConverters.cpp
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/third_party/WebKit/Source/modules/credentialmanager/MakePublicKeyCredentialOptions.idl
[modify] https://crrev.com/54e157ee6d142e724c0f2bdfe8d54644bb583781/third_party/WebKit/public/platform/modules/webauth/authenticator.mojom

Project Member

Comment 3 by bugdroid1@chromium.org, Feb 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/85339f6516a0e93e0ee05e9bfd8e1066db4374a9

commit 85339f6516a0e93e0ee05e9bfd8e1066db4374a9
Author: Adam Langley <agl@chromium.org>
Date: Mon Feb 12 22:03:56 2018

webauthn: prompt for attestation permission when needed.

This change implements a user consent prompt before returning
attestation information from a device. (Thus making webauthn act like
U2F currently does.) Unlike U2F, however, it is a fatal error if a user
denies consent, as required by the spec.

The attestation behavior is also affected by the
SecurityKeyPermitAttestation[1] enterprise policy. This list can contain
either U2F AppIDs (which are full URLs) or webauthn RP IDs (which are
domains). Its affect on attestation is detailed in the following table:

"attestation" value | RP ID not listed in policy | RP ID listed
--------------------+----------------------------+---------------------
"none" / not given  | Empty, "none" attestation  | Empty, "none"
                    | returned.                  | attesation returned.
--------------------+----------------------------+---------------------
"indirect"/"direct" | User prompted for consent. | Attestation from
                    | If granted, attestation    | device is returned.
                    | from device is returned.   |
                    | Otherwise a permission     |
                    | error is generated.        |

(The behavior of "indirect" attestation in webauthn may change in the
future but, for now, it is identical to "direct".)

[1] https://www.chromium.org/administrators/policy-list-3#SecurityKeyPermitAttestation

Bug:  803829 ,793985
Change-Id: I4e1d15a93ebc067869df7656016990b29fe12b59
Reviewed-on: https://chromium-review.googlesource.com/900452
Reviewed-by: Timothy Loh <timloh@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Reviewed-by: Kim Paulhamus <kpaulhamus@chromium.org>
Commit-Queue: Adam Langley <agl@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536206}
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/BUILD.gn
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/chrome_content_browser_client.h
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc
[add] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/permissions/attestation_permission_request.cc
[add] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/chrome/browser/permissions/attestation_permission_request.h
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/content/browser/webauth/authenticator_impl.cc
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/content/browser/webauth/authenticator_impl.h
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/content/public/browser/content_browser_client.cc
[modify] https://crrev.com/85339f6516a0e93e0ee05e9bfd8e1066db4374a9/content/public/browser/content_browser_client.h

Comment 4 by agl@chromium.org, Feb 13 2018

Status: Fixed (was: Available)

Sign in to add a comment