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

Biometric Criteria Extension #510

Merged
merged 6 commits into from
Feb 9, 2018
Merged

Biometric Criteria Extension #510

merged 6 commits into from
Feb 9, 2018

Conversation

gmandyam
Copy link

@gmandyam gmandyam commented Jul 26, 2017

Biometric Selection Criteria extension


Preview | Diff

@gmandyam gmandyam changed the title Update index.bs Biometric Criteria Extension Jul 26, 2017
@nadalin nadalin added this to the CR milestone Jul 26, 2017
@nadalin nadalin requested a review from selfissued July 26, 2017 17:31
Copy link
Contributor

@equalsJeffH equalsJeffH left a comment

Choose a reason for hiding this comment

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

this looks nominally ok but IMO requires some terminological polishing.

index.bs Outdated
that could be leveraged when creating the credential.

: Extension identifier
:: `biometricBound`
Copy link
Contributor

Choose a reason for hiding this comment

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

the extension title is "Authenticator Biometric Criteria", yet the extension identifier is "biometricBound" which is inconsistent. FAR and FRR are "biometric matching criteria", yes? Perhaps the latter should be "biometricMatchingCriteria" ? And perhaps the section title ought to be "Biometric Authenticator Matching Criteria" ?

index.bs Outdated
:: Biometric performance bounds:

<pre class="idl">
dictionary biometricCriteria{
Copy link
Contributor

Choose a reason for hiding this comment

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

perhaps biometricCriteria should be authenticatorBiometricMatchingCriteria ?

index.bs Outdated

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports the Authenticator Biometric Criteria
Extension and biometric authenticators are available, it MUST use the first available biometric authenticator whose FAR and FRR match the bounds as provided.
Copy link
Contributor

Choose a reason for hiding this comment

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

we perhaps ought to define "biometric authenticators" up in terminology section, and then use [=biometric authenticators=] here.

Copy link
Contributor

@equalsJeffH equalsJeffH left a comment

Choose a reason for hiding this comment

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

thanks @gmandyam. Other than needing to (i think) define the input in terms of CBOR/CDDL and some further wordsmithing, this seems overall ok. HTH.

index.bs Outdated
float FAR;
float FRR;
};
</pre>
Copy link
Contributor

Choose a reason for hiding this comment

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

IIUC, we ought to define the input in terms of CDDL, rather than WebIDL, yes?
see also issue #679 "add CDDL to every extension" and issue #626 "Extensions need to define how their parameters convert to/from CBOR"

index.bs Outdated
@@ -3093,6 +3096,43 @@ This [=registration extension=] and [=authentication extension=] enables use of
01 -- Subitem 3: CBOR short for Matcher Protection Type Software
</pre>

## Biometric Authenticator Matching Criteria Extension (biometricBound) ## {#sctn-authenticator-biometric-criteria-extension}
Copy link
Contributor

Choose a reason for hiding this comment

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

I would title it:
"Biometric Authenticator Performance Bounds Extension"

index.bs Outdated
## Biometric Authenticator Matching Criteria Extension (biometricBound) ## {#sctn-authenticator-biometric-criteria-extension}

This [=registration extension=] allows a [=[RP]=] to specify the desired performance of a biometric authenticator
that could be leveraged when creating the credential.
Copy link
Contributor

Choose a reason for hiding this comment

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

suggest:
This [=registration extension=] allows [=[RPS]=] to specify the desired performance bounds for selecting [=biometric authenticators=] as candidates to be employed in a [=registration=] ceremony.

index.bs Outdated
The FAR is the maximum false rejection rate for a biometric authenticator allowed by the [=[RP]=].

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports the Authenticator Biometric Criteria
Copy link
Contributor

Choose a reason for hiding this comment

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

s/Authenticator Biometric Criteria Extension/this extension/

index.bs Outdated
:: Biometric performance bounds:

<pre class="idl">
dictionary authenticatorBiometricMatchingCriteria{
Copy link
Contributor

Choose a reason for hiding this comment

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

suggest:
s/ authenticatorBiometricMatchingCriteria/ authenticatorBiometricPerfBounds/

@gmandyam
Copy link
Author

@equalsJeffH

Thanks for review. Tried to address your comments in latest PR.

Regarding CDDL, this extension is intended to terminate in the client and therefore has no required authenticator input. My interpretation of https://w3c.github.io/webauthn/#sctn-client-extension-processing is that CBOR definition is only required when a "client extension input can be used to determine the CBOR authenticator extension input."

index.bs Outdated

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports the this
extension and at least one [=biometric authenticator=] is available, it MUST use the first available biometric authenticator whose FAR and FRR match the bounds as provided.
Copy link
Member

Choose a reason for hiding this comment

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

First off: s/the this/this/


Second:

If the client supports the this extension and at least one biometric authenticator is available, it MUST use the first available biometric authenticator whose FAR and FRR match the bounds as provided.

This formulation would likely be confusing with the new hot-plugging approach for create(). We no longer assume that there will be a single instant when you can list all "available" authenticators. Instead they will appear at some point (possibly immediately, e.g., platform authenticators) during the timeout, and the client can't know if the user will plug in an eligible biometric authenticator after the client has found a non-biometric authenticator. I therefore suggest reformulating this to something more like:

If the client supports this extension, it MUST NOT use a biometric authenticator whose FAR or FRR does not match the bounds as provided.

@gmandyam
Copy link
Author

@emlun

Thanks. Changes made; please review.

Copy link
Member

@emlun emlun left a comment

Choose a reason for hiding this comment

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

Thanks!

Copy link
Contributor

@equalsJeffH equalsJeffH left a comment

Choose a reason for hiding this comment

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

just a few consistency items, otherwise LGTM

index.bs Outdated
@@ -3861,6 +3864,45 @@ This [=registration extension=] and [=authentication extension=] enables use of
01 -- Subitem 3: CBOR short for Matcher Protection Type Software
</pre>


## Biometric Authenticator Performance Bounds Extension (biometricBound) ## {#sctn-authenticator-biometric-criteria-extension}
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: s/sctn-authenticator-biometric-criteria-extension/sctn-authenticator-biometric-perf-bounds/

Copy link
Contributor

Choose a reason for hiding this comment

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

suggest:
s/biometricBound/biometricPerfBounds/

index.bs Outdated
as candidates to be employed in a [=registration=] ceremony.

: Extension identifier
:: `biometricMatchingCriteria`
Copy link
Contributor

Choose a reason for hiding this comment

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

suggest:
s/biometricMatchingCriteria/biometricPerfBounds/

@equalsJeffH
Copy link
Contributor

wrt #510 (comment) -- what do others think?

@emlun
Copy link
Member

emlun commented Jan 3, 2018

Re #510 (comment) : Seems reasonable to me. The appid and authnSel extensions work in the same way.

index.bs Outdated

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports this
extension, it MUST NOT use a biometric authenticator whose FAR or FRR does not match the bounds as provided.
Copy link
Contributor

Choose a reason for hiding this comment

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

How does client know these values? Are you expecting client to contact some authority who verifies it? FIDO metadata service?

Copy link
Author

Choose a reason for hiding this comment

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

@akshayku

Yes, that is certainly one potential approach. Expectation is that authenticator would've gone through FIDO Biometric Cert, had its performance verified, and agreed to publish its performance data on the FIDO Metadata Service (MDS).

Copy link
Contributor

Choose a reason for hiding this comment

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

This whole thing seems really brittle. It's more likely to provide a false sense of security than to actually be accurate.

Copy link
Contributor

Choose a reason for hiding this comment

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

so the above text perhaps ought to additionally indicate that various platform-specific means (eg some possibly based on the MDS) are anticipated for the client platform to use in order to have knowledge of these values.

Copy link
Contributor

@selfissued selfissued left a comment

Choose a reason for hiding this comment

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

Providing no data of this is kind is better than providing data that provides a false sense of security. Unless there are existing related deployments to cite that successfully use similar functionality, I would consider this too speculative to include in the specification.

Please consider creating a separate specification for this proposed extension. This could still be registered in the IANA WebAuthn Extensions registry, and therefore be available to implementers.

index.bs Outdated

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports this
extension, it MUST NOT use a biometric authenticator whose FAR or FRR does not match the bounds as provided.
Copy link
Contributor

Choose a reason for hiding this comment

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

This whole thing seems really brittle. It's more likely to provide a false sense of security than to actually be accurate.

@gmandyam
Copy link
Author

@selfissued

I am sorry; I don't understand your exact concern.

Please consider creating a separate specification for this proposed extension.

Why is https://fidoalliance.org/specs/fido-uaf-v1.2-rd-20171128/fido-metadata-statement-v1.2-rd-20171128.html#dictionary-biometricaccuracydescriptor-members insufficient for this purpose? Do you believe FRR and FAR are not sufficiently defined in this specification, and therefore a new specification is needed?

This whole thing seems really brittle. It's more likely to provide a false sense of security than to actually be accurate.

I don't understand this concern as written. Perhaps you can explain further. Do you believe that FIDO MDS information on biometric accuracy will be inaccurate and/or unverified, for instance?

Copy link
Contributor

@equalsJeffH equalsJeffH left a comment

Choose a reason for hiding this comment

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

ok, thx, LGTM.

index.bs Outdated

: Client extension processing
:: This extension can only be used during {{CredentialsContainer/create()}}. If the client supports this
extension, it MUST NOT use a biometric authenticator whose FAR or FRR does not match the bounds as provided.
Copy link
Contributor

Choose a reason for hiding this comment

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

so the above text perhaps ought to additionally indicate that various platform-specific means (eg some possibly based on the MDS) are anticipated for the client platform to use in order to have knowledge of these values.

@equalsJeffH
Copy link
Contributor

@selfissued

Please consider creating a separate specification for this proposed extension

Hi Mike -- it seems to me that you are proposing a process here that the WG has not itself decided upon and is up to the WG to impose rather than individual members.

@emlun
Copy link
Member

emlun commented Feb 5, 2018

@selfissued

Providing no data of this is kind is better than providing data that provides a false sense of security.

How would you feel about this if the specified requirement in the extension, instead of

If the client supports this extension, it MUST NOT use a biometric authenticator whose FAR or FRR does not match the bounds as provided.

was something more like this?

If the client supports this extension, it MUST NOT use a biometric authenticator whose FAR or FRR is not certified by an authoritative source to match the bounds as provided.

@equalsJeffH
Copy link
Contributor

building on @emlun's fine suggestion, we perhaps ought to add a pointer to where one might obtain such metadata (as we have done elsewhere in the spec):

If the client supports this extension, it MUST NOT use a biometric authenticator whose FAR or FRR is not certified by an authoritative source to match the bounds as provided. For example, the FIDO Metadata Service [FIDOMetadataService] provides one way to access such information.

I note in FIDO Metadata Service section 3.3 "BiometricAccuracyDescriptor dictionary" that there is provision for conveying FAR, FRR, ERR, FAAR and other applicable metadata values.

@emlun
Copy link
Member

emlun commented Feb 5, 2018

By the way I'd also like to note that in the end it falls on the RP to verify any claimed performance certification by inspecting the attestation statement, and not blindly trust the client to do this verification. It is thus not critical to the integrity of the protocol that the client can derive these properties perfectly or even reliably, but it is of course nice if the extension can enable failing early.

@nadalin
Copy link
Contributor

nadalin commented Feb 6, 2018

@equalsJeffH @emlun So the extentions are vendor spepcifc that is they can do what they want, so including specifics may not be the correct way to go as that may dictate a specific implementaion

@equalsJeffH
Copy link
Contributor

I think what @emlun is teasing-out is a possible impl-cons Note or something similar, that's all.

Copy link
Contributor

@selfissued selfissued left a comment

Choose a reason for hiding this comment

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

After the merge conflicts are resolved, I'm now OK with this being merged.

@equalsJeffH
Copy link
Contributor

After the merge conflicts are resolved, I'm now OK with this being merged.

@nadalin
Copy link
Contributor

nadalin commented Feb 8, 2018

@gmandyam can you fix the branch conflicts and merge

@gmandyam
Copy link
Author

gmandyam commented Feb 9, 2018

@nadalin

Yes - I am working on it. I am getting a Travis build failure currently and am trying to debug.

@gmandyam gmandyam merged commit d563d83 into w3c:master Feb 9, 2018
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.

6 participants