Will the UI be retained, and just always submit nothing?
Is there interest in eventually sunsetting the <keygen> element entirely, as has been done with e.g. <applet> in Chrome? This would mean that it no longer shows up in the form data set at all; the HTMLKeygenElement would be removed; and various form-related things would change (e.g. it would not appear in form.elements). There's also an optional step of removing parser support for it, although for <applet> the conclusion was to not change the parser.
Ryan, does that sounds OK, or have I overlooked some reason for preferring to remove all key types while leaving the HTMLKeygenElement API intact?
For what it's worth, the metrics may understate user-facing breakage in this case.
As a specific example, here's a site I know that uses keygen: the one that MIT uses to create user certificates that are then used by students to access all the secure web stuff the university has. This is a site that each student would typically access once a year or so, when the user cert expires (usually in August). Note that inability to generate the user cert means inability to access anything that requires a "login" on the MIT infrastructure, or did last I checked.
What would that usage pattern look like in the metrics data?
P.S. I just looked into how they handle the certificate thing in Edge. They do it by having a Windows app that you download and run that generates the certificates and puts them into the Windows certificate store. If you're a Chrome user on Linux, you're SOL without keygen support in their current setup.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
Of those, less than 0.001% are set via enterprise policy, indicating there is no longer a strong enterprise need to maintain support (Metric: Enterprise.Policies).
...
Given these requirements, we recognize that an "improved keygen element" could be built using the new solution as a foundation (e.g., using web components).
We also call on implementations to improve the client certificate UI experience in order to make client-certificate use in authentication more accessible to general users.
--
On 29 Nov 2016, at 13:14, Philip Jägenstedt <foo...@chromium.org> wrote:
On Mon, Nov 28, 2016 at 1:00 PM Melvin Carvalho <melvinc...@gmail.com> wrote:
On Sat, Nov 26, 2016 at 9:31 AM <melvinc...@gmail.com> wrote:
On Tuesday, November 22, 2016 at 9:46:29 PM UTC+1, Ryan Sleevi wrote:Primary eng (and PM) emails
Link to “Intent to Deprecate” thread
SummaryRemove support for all key types in <keygen>. As per the HTML spec, the element may continue to be recognized, but attempts to submit a form with this element will result in it providing a zero-length string, as defined by all versions of HTML that include <keygen> ( https://html.spec.whatwg.org/multipage/forms.html#the-keygen-element )MotivationAs documented in the "Intent to Deprecate," thread, <keygen> poses systemic risk by modifying the permanent system, outside of the browsers' security model and the origin security model. It was introduced for purposes of device-wide configuration, not limited to TLS client certs (as reaffirmed on the Intent to Deprecate thread by those using it to provision S/MIME and other non-browser certs), and poses risks to user security. The lack of cross-browser support and the insufficient level of configurability that has lead to vendor-specific alternatives further indicate that <keygen> is not a desirable part of the Web Platform.Compatibility RiskSince Chrome 49, <keygen>'s default behaviour has been to return the empty string, unless a permission was granted to this page. This was originally scheduled for removal during Chrome 54, but to avoid any issues around holiday production freezes (and because of CA security incidents distracting from timely deprecation), this has been pushed back, tentatively targeting Chrome 57. This time was to allow sufficient migration time for enterprises relying on this feature for enterprise device provisioning, migrating to the OS-provided APIs. For non-enterprise cases, libraries such as PKIjs ( https://pkijs.org/ ) exist to address the use case of creating CSRs or downloading PKCS#12 files for import.Usage information from UseCounterFrom https://www.chromestatus.com/metrics/feature/popularity#HTMLKeygenElement , usage is at 0.0028%, well below the 0.03% upper bound for deprecation.UMA metrics indicate that 0.01% of users over 28 days have stored a permanent exception for a single domain, which is consistent with it primarily being an enterprise feature of limited scope (Metric: ContentSettings.Exceptions.keygen). Those who have stored for more than 1 domain, in aggregate, are approximately 0.001% of users, with the vast majority of that being stored at 2 domains.UMA metrics indicate that 0.10% of users over 28 days that have configured an explicit default setting have set a default policy of allowing <keygen> on all domains, despite the security risks identified (Metric: ContentSettings.DefaultKeygenSetting ). Of those, less than 0.001% are set via enterprise policy, indicating there is no longer a strong enterprise need to maintain support (Metric: Enterprise.Policies).These metrics are consistent with the Intent to Deprecate, that the feature is rarely used in practice, and when it is used, it is for a limited set of domains.
-1
This element is in use.
Please do not deprecate, until a suitable replacement is available.
Can you elaborate on how you are using keygen?
While I do have a number of use cases for keygen, and several million pages that use it, but I think Travis Leithead (Microsoft) wrote up the issue far better than I could.
https://w3ctag.github.io/client-certificates/I agree with the W3C Technical Architecture Group, that there is currently no like for like replacement for this functionality, and so should only be deprecated when there is consensus that there is a suitable replacement.There has been pushback on this from crypto developers, web developers, free and open source developers and enterprise developers.
I think that deprecating this element and providing something better (something everyone would like to see) would be a win-win, but deprecating it prematurely would be a lose-lose. Both from a technical and a business perspective.
Melvin, I didn't realize when asking, but I see that Ryan already engaged with you and Henry on the deprecation thread, and the use cases around WebID were known at that time.My LGTM2 stands, I thought perhaps there was new information.
--
You received this message because you are subscribed to a topic in the Google Groups "blink-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/blink-dev/z_qEpmzzKh8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to blink-dev+...@chromium.org.
Multi-factor authentication provisioning (e.g. StartSSL) - using TLS authentication for multi-factor authentication. An example is https://www.startssl.com.
Multi-factor authentication provisioning (e.g. StartSSL) - using TLS authentication for multi-factor authentication. An example is https://www.startssl.com.
I did not check the StartSSL website in mid-September 2015, but checking it today, it looks to me like StartSSL is performing certificate provisioning for TLS client authentication as the primary factor for authentication with the StartSSL website (the login cert can also be used for S/MIME).
Such a use case - provision certificate for TLS client authentication with a non-enterprise website - is the use case that I have been actively trying to enable for my own companies' websites and other companies' websites. TLS client authentication can certainly be used as a more seamless second factor of authentication, but its potential as an outright replacement for passwords as the primary factor of authentication for consumer-facing Internet websites is what's most appealing.
I'm not talking about smart cards for government IDs or certificates that need to be multi-origin like the Web ID folks desire. I am talking about TLS client certificates for each user for each of their existing devices for each of their websites (aka per-origin). For a user's browser, not some other application on the user's device. With the right guidance, all businesses could implement this today as long as basic building blocks like keygen remain available. We do not need to wait for new browsers or new standards or literally billions of users to go buy new whatever-standard enabled devices. We can do this today and upgrade the solution over time as all those new standards / devices come online and become the new ubiquitous web platform.
One of the most critical parts of enabling such a use case is the user experience for provisioning the user's device certificate for a particular website. Relatively speaking, Chrome, especially before Chrome 49 when keygen was still enabled by default, had one of the relatively best user experiences amongst browsers. Chrome 48 and earlier let a user know something happened in response to their actions - a progress bar while key gen is in progress and a nice little info bar when the certificate response was received - without prompting the user to take an unnecessary action or to perform an action that he/she likely would not understand. Importantly, from a security perspective, keygen also allows for the private key to be generated on a user's device.
(1) Prompt for a P12 password [at least on Mac OS X 10.11, you cannot import a P12 through the UI with an empty password; user confusion right off the bat: why do I need a password still?]
(2) Click to download the P12 [though this could potentially be automatically downloaded with (1)] [NOTE: For some reason StartSSL asks to download CA chain too, but this is not necessary for TLS auth with their website]
(3) Click to open the downloaded P12, bringing up default OS Cert UI
(4) Enter the P12 password from (1)
(5) Navigate back to Log In [this is not unique to JS-flow]
(6) Select certificate [this is not unique to JS-flow]
(7) Grant permission to Chrome's use of private key associated with (6) [this is unique to JS-flow; will user always allow? if not, this has to be repeated]
So that's at least 4-5 extra UI interactions (1/2,3,4,7) in the JavaScript flow that are not required in the keygen+x-x509-user-cert flow.
They could generate the P12 on the client-side to keep the private key local to the device, but if you want to split the cert request / cert response apart like you can do with keygen, it's not obvious to me how to achieve this in JavaScript, especially across restarts of the browser.
Also, the P12 will remain in the download area on disk, unlike being only in the OS's cert store.
With regards to some of the other security points that have been raised, I would like to comment on a couple of those: signing the public key on the cert request with MD5withRSA is obviously poor, but this can be mitigated by performing form submission over TLS with properly configured modern key exchange / ciphers. The certificate in the response can be signed with any modern algorithm and can also be delivered over properly configured TLS.
With regards to other apps having access to the certs / key pairs, default access control seems to be limited to the installing app on some platforms (like Mac and Linux),
and origin control can be mitigated by TLS servers specifying the acceptable list of client CAs.
but I just do not understand the urgency to remove status quo tech like keygen until the new tech is much farther along.
On 29 Nov 2016, at 13:14, Philip Jägenstedt <foo...@chromium.org> wrote:
On Mon, Nov 28, 2016 at 1:00 PM Melvin Carvalho <melvinc...@gmail.com> wrote:
Henry
--
You received this message because you are subscribed to a topic in the Google Groups "blink-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/blink-dev/z_qEpmzzKh8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to blink-dev+unsubscribe@chromium.org.