Firefox: https://addons.mozilla.org/pl/firefox/addon/password-hasher/
Chrome: https://chrome.google.com/webstore/detail/pawhash/adgekjfphh...
21–30 of 54 posts
Firefox: https://addons.mozilla.org/pl/firefox/addon/password-hasher/
Chrome: https://chrome.google.com/webstore/detail/pawhash/adgekjfphh...
Why do 2^16 rounds of a designed-to-be-fast SHA-256 when there are deliberately slow PBKDF, such as scrypt?
Ok, the idea in general isn't good because most people won't use a good password and also because now there's a single point of failure if someone sees your password. However, it might be okay if one can provide their own hashing function. Like a JS function that takes the domain and secret key as parameters.
This is one of those "only use it if you know what you're doing" things.
- salt. To avoid rainbow table attacks. One could use the login/email as salt
- key strengthening function. Instead of repeating naively SHA-256 a few times, use PBDKF2 or even better, something which is also memory hard like scrypt.
Finally. What happens when the password requires to have upper case, symbols, x number of digits, min or max number of characters... If you think about it, some websites have conflicting requirements.
This is why beginners should not design crypto, much less encourage others to use their creations... Do not use this, it's a textbook example of how to not do it.
Stanford published a paper that is basically the exact same model: http://crypto.stanford.edu/PwdHash/pwdhash.pdf This is not a new technique. In addition to the Stanford paper, there are several other implementations mentioned in these comments. It's a compromise, not a mistake. It is better to memorize one strong password than a dozen weak ones. This isn't custom crypto. It's a well-known hash function that serves…
Um yea.. "basically".
Except they demand an 'ultra-slow' hash function in that paper. You ignored that requirement and that makes your implementation equivalent[1] to using the same password for all websites.
It needs to be improved to be secure - salt. To avoid rainbow table attacks. One could use the login/email as salt - key strengthening function. Instead of repeating naively SHA-256 a few times, use PBDKF2 or even better, something which is also memory hard like scrypt. Finally. What happens when the password requires to have upper case, symbols, x number of digits, min or max number of characters... If you think abo…
Re key strengthening: Agreed, but only salt-less schemes will work in this stateless model. Unfortunately they are few.
> Finally. What happens when the password requires to have upper case, symbols, x number of digits, min or max number of characters... If you think about it, some websites have conflicting requirements.
Addressed this in the article: "Some websites have certain requirements on passwords, e.g., at least one number and one capital letter. A simple way to meet such requirements is to append something like A9! to the generated password (and remember you did that)."
It's an interesting idea, but is it really usable? If you ever need to change the master key, you'll have to update all the websites you are using, and you won't even know on which websites you used the password manager with since there is no database. I just don't see how I could ever want this. Or is it assumed that master keys never need to be changed?
Not having a database certainly has its downsides.
Re usability: I've been using it for a couple days now, and I find it pretty tolerable. It's nice to not have to memorize a new password when I sign up for something. I did change my master key once; it took about 5 minutes to update all my passwords. If you only do that once every few months or once a year, it's not so bad.
Earlier quoted context omitted.
and the best part is you can't change your password in case some website becomes compromised and the hash is leaked. (without changing the secret key and as the result changing all passwords on all websites).
I tried to address this in the article: "If a generated password is ever compromised, you don’t need to memorize a whole new secret key and update all of your passwords. For that service only, just add an incrementing index to your secret key. For example, if your key was bananas, just use bananas2. If you can’t remember which iteration of your secret key you used for a particular service, simply try them all in orde…