3 ms·
Whilst more passwords (and indeed more attempts to add ad-hoc features to HTML) are the last thing we need right now, a simpler answer to all of this (including
by tekacs 13y ago
Whilst more passwords (and indeed more attempts to add ad-hoc features to HTML) are the last thing we need right now, a simpler answer to all of this (including hosts storing passwords insecurely) if we absolutely must stick with such authentication for now, has always struck me as adding authentication which only relies on trusting one's browser/local OS.
I'd be curious to hear criticism (tptacek?) of, for example, an attribute on <input type='password'/> that caused the browser to hide its plaintext contents even from the site in question and to only expose a hashed/<>crypted/MACed form - granted this would require periodic updates to bring it in line with newer standards, but it would centralise the implementation of such password securing schemes (we could even have a stab at proper zero-knowledge!) and subject to the field being implemented sanely (secret set, non-empty, using MAC) the field could perhaps be indicated secure by the browser in a way hard to emulate in HTML (changing something in the window chrome upon entering the field? I know this is difficult.)
(something along the lines of <input type='password' expose='hmac-sha1' secret='...' /> (taking the example from the Matasano article) - I grant that in the case of a server compromise this would allow this field to be a chosen secret, but as before, an empty secret could be noted by the browser as insecure, for example - and no, in this instance I haven't sat down and gone over the primitives for this yet to check how they would behave in the face of a chosen secret).
Granted this is all wishful thinking (and certainly thought upon by others before), but I'd be curious to hear criticism.
- icebraining 13y ago(Note: I'm not a cryptography expert by any means) If the server doesn't know the password, he can only verify the hash by storing it once and comparing it when logging in, right? Therefore, the server must always use the same secret, because if the hash changes, it can't verify it. So if the hash is always the same, and the server must know it to log the user in, the hash effectively becomes the password, since any attacker could just send it as-is to authenticate. If you want some system that the server can verify without knowing, but that can change to prevent replay attacks, I think you need some kind of asymmetric signature.
- flyinRyan 13y agoLook into HTTP digest AUTH. It works in a manner you suggest but without the vulnerabilities in your suggested implementation (the a reply pointed out).
- tekacs 13y agoIt very much doesn't, not least because it does nothing to alleviate the issue that everything typed into a browser page is currently available for access to the site in question and should a MITM attack or similar attack occur, JS can trivially be inserted to capture passwords long before they're sent. :/