Hey folks! Glad to see that there's interest in this API from Mozilla. :)
On Sun, Mar 13, 2016 at 10:15 AM, Martin Thomson <
m...@mozilla.com> wrote:
> On 12 Mar 2016 7:28 PM, "Anne van Kesteren" <
ann...@annevk.nl> wrote:
> > It should be identical to password manager integration.
>
> But it is not, though I suppose that a password manager might be
> exploited to store state. I hope that isn't possible... (note to self,
> attempt this attack)
>
Credential managers guess at a user's username and password, and ask the
user if they'd like to persist that information. It's generally stored
outside of "site data" (cookies, localstorage, IDB, etc), and users
generally treat it differently (anecdotally: ~12.9% of Chrome's users
who've opted into sharing usage data cleared cookies in the last week;
~2.7% cleared passwords). I think this distinction is pretty much in line
with user expectation.
This API offers a few things that the status quo cannot: Imperative
certainty about the data being persisted as opposed to heuristic guessing,
XSS mitigation, federation hints, and automatic sign-in for users who have
done whatever dance the UA requires to enable such a feature.
I don't believe, however, that it offers additional tracking capability
above and beyond the (quite intentional) capabilities inherent in a
credential manager. Sites are not granted any ability to persist data
without user knowledge; they are only granted control over the timing of
the prompt, but the prompt itself is still required. Nor are sites granted
the ability to read data without user knowledge; users are either directly
involved in handing credentials over to a site, or they grant the UA
permission to hand credentials over.
As we add more credential types (FIDO, etc), we'll certainly need to ensure
that we don't introduce privacy footguns, but I think we're capable of
maintaining that dicipline.
> > > In that case, credentials stored by a site should last no longer than
> > > cookies. Credentials created by a user maybe can live longer.
> >
> > How do you distinguish the two if the access is through a UI-mediated
> API?
>
> If credentials created in response to a `get()` call are stored at the
> point they are created, you could treat calls to `store()` very
> differently. Maybe. If the intent is to use a password manager, see
> Richard's earlier mail.
>
I'm not sure, but it sounds like this is based on some misunderstanding of
what the API offers. Does the above description ease your concerns? Or am I
missing the critique?
> > If we think this API should have no more power than storage/cookies,
> > there's not much point in having this API.
>
> Yes, the source of my concerns, right there. Sure, the fig leaf might
> allow us to convince ourselves that we aren't creating a tracker that
> trumps the rest.
>
> If we are creating something that is somehow greater out of the framework
> this provides (FIDO), then that is useful. But the stepping stone we are
> being offered on that path looks suspicious. Why not go straight for the
> real prize?
>
Websites use passwords today. While I agree that we can and should be
working on something better, I don't think that we should overlook small
improvements in the status quo. We can give users a better experience on
their favourite sites if we allow developers to bypass status quo
heuristics, and we keep users safer if we mitigate some of the XSS risks of
password managers today. I think this API does both, and is worth
experimenting with to see if it's a framework we can build upon.
-mike