4 ms·
I'd like to see a site which validates whether or not your password is exposed. Users should assume that it is exposed, but it would be nice to know wether or n
by benjamincburns 13y ago
I'd like to see a site which validates whether or not your password is exposed. Users should assume that it is exposed, but it would be nice to know wether or not it's floating around in some list somewhere.
Problem is, I can't think of a computationally efficient way to perform this check securely. I could see handing the user an nonce, asking them to manually hash their password concatenated with the nonce, and then comparing the user's response with a list you've hashed yourself, but I'm sure this won't scale well.
Is there such a thing as a secure, or "blind", bloom filter which allows a user to search for some chunk of text without exposing to the world what that chunk of text is?
Edit: Hmm, this might be what I'm looking for: http://www.tdp.cat/issues/tdp.a015a09.pdf http://www.tdp.cat/issues/tdp.a015a09.pdf
- jrockway 13y agoIt's possible to write a tool that will figure out all algorithms/salts used by compromised sites, and then hash your password with those algorithms/salts and see if that hash appears in the compromised password files. Most of the compromised sites use worthless password storage mechanisms, like unsalted hashes or plaintext, so this level of sophistication is mostly unnecessary. For example, say you used the password "foobar". md5 that: $ echo -n "foobar" | md5sum 3858f62230ac3c915f300c664312c63f - Then Google for 3858f62230ac3c915f300c664312c63f. The first result's snippet is: = rainbow.lookup('3858f62230ac3c915f300c664312c63f') # => 'foobar' ... There you go. Don't use "foobar" as your password.
- jason_slack 13y agoYou've got me thinking about how I store passwords. I have in the past done: ~ $ echo -n "mypassword" | base64 bXlwYXNzd29yZA== How would one combine the above with md5? on OS X is it `md5 -s <string>` So basically base64 'mypassword', then md5 the base64 result.
- benjamincburns 13y agoOh god, I hope you're joking. http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html http://www.codinghorror.com/blog/2007/09/youre-probably-stor...
- jason_slack 13y agoWell, I wasn't joking, but I didn't realize md5 was as vulnerable as Atwood says it is. SHA-2 or Bcrypt.
- blibble 13y agonothing wrong with md5 itself here, just the way it's being used. if you replace it with sha-2 you'd have the exact same problem (bcrypt is more than a simple hash function).
- benjamincburns 13y agoSorry, that was overly snarky and that wasn't warranted. Are you talking about how you store your own passwords so that you may retrieve them in order to log into some service, or are you talking about how you store user credentials as part of an application? If you're storing your own passwords, just use a well-rated password locker program, or store them in a TrueCrypt volume or similar. If you're storing your users' passwords... well, don't -- store the hash like that Atwood article suggests. To your initial question, if you need to use the output of one program as an argument to another program, you can wrap it in backticks: md5 -s `echo -n please_dont_actually_do_this | base64` But really there's no benefit to converting it to base64 before you hash.
- jason_slack 13y agono, I am just storing my passwords in a text file and I don't want to do it plaintext, but I also don't want to have to encode the whole text file and have to decode it first to use it. Just make it more complicated if someone opens it. Thanks for the reminder of ticks (`) I was accidentally using single quotes (')