Live data from Hacker News

"Pwned Passwords" V2 With Half a Billion Passwords

troyhunt.com

141–150 of 369 posts

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#141

Earlier quoted context omitted.

A personal question. Do people really install megabytes of dependencies to run what would be a one line shell script, were it written in shell?

You wouldn't manage that with a one-line shell script, assuming that you want to format it reasonably. :) I do agree that having to install loads of things for a simple tool is overkill, but I'd wager the actual binary produced doesn't have many dependencies (I'd expect just libc, in fact); so would this at some point land in a package manager, your life will improve.

Well...

    CHECKPW="p@ssword" SHA1=`echo -n "$CHECKPW" | sha1sum`; curl -s https://api.pwnedpasswords.com/range/${SHA1:0:5} | grep -i ${SHA1:5:34}

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#142

A quick python script to hit the API, for those that don't want to use the webform (rightly so): https://gist.github.com/ShakataGaNai/cb786a2c64abc83d4dbe0db...

Or, for those that don't want to use Python (in case it isn't installed, or requires a non-core module, I dunno) but have access to a Linux box: # echo -n "password" | sha1sum 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 - Take the first 5 characters, in this case "5baa6" and use at the end of the API endpoint in your browser. E.g. https://api.pwnedpasswords.com/range/5baa6 Then take the all the rest of the hash after th…

For ease:

  # echo -n "password" | sha1sum | cut -b 1-5
    5baa6

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#143
The UX of a blacklist with a half billion entries would be so crippling that it would cause a user revolt.

Most people's password-selection strategies are similar enough to other people's (like kbenson's 4000+ hit) that they could spend hours trying to come up with a password that has never been leaked before.

I tried to encourage Troy to suggest to implementors that blacklisting all passwords was a Bad Idea. Instead, he doubled down:

https://twitter.com/TychoTithonus/status/966400790221930496

Please don't use the entire list for blacklisting unless you actively also guide the user in how to generate a random passphrase (if a human must remember it) or a random password (if it will be stored in a password manager).

Instead:

1. Use a high-level password-strength assessment widget like zxcvbn:

https://github.com/dropbox/zxcvbn

2. Configure a blacklist with, say, 10K or 20K of the most common passwords.

3. Hash passwords with bcrypt cost 12 (adjusted to your platform's hashrate capabilities), scrypt, or the appropriate method from the Argon2 family.

But for all that is holy, please don't use Troy's entire corpus - or even the first million - as a blacklist. To quote the old NANOG saw, I encourage all of my competitors to use it. ;)

Edit: And since Troy's API at this writing does not support only querying the top X passwords, there's no way to use the API while avoiding the UX nightmare. So if you want to use this data in a professional manner, but don't want to download the entire corpus, here are the first 20K from his list (of which I've only personally cracked 19965 so far, interestingly; gist will be updated once I get all 20K):

https://gist.github.com/roycewilliams/281ce539915a947a23db17...

Edit 2: Preliminary results indicate that this data may be dirty. The 273rd most common password, according to Troy, is '$HEX'. This is almost certainly an import/conversion artifact, since the '$HEX' prefix is how most cracking suites escape non-ASCII or passwords that contain colons. I expect that there will be more artifacts. Use the data with caution.

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#144
post #79

I just tried a 11 character password without special chars, that I’ve used on over 50 sites, over the last decade. It’s my password for throaway websites. Some pretty dodgy. Not in the database. Makes me feel pretty good about password security overall!

I have a password that’s a pair of words in two languages with some number substitution that I use a lot on websites I don’t care about and it’s not in the dB. And I’m sure I’ve used it on sites that have been hacked, so I dunno.

I think many websites that got hacked leaked email addresses cc info etc, but most do not store passwords so your password wasn't leaked in plaintext.

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#145

That moment when you test an old, but still highly valued and securely used, password that you think isn't super obscure but not likely to be used much and see a 4000+ count...

And that's exactly why using this entire corpus - or even more than the first few tens of thousands - as a blacklist would be an extremely user-hostile choice [1].

Password psychology is remarkably consistent across a given demographic, because most people start by modifying of one or more base tokens that are already stored in memory because of their personal significance.

So unless the implementation gives specific, real-time UX feedback to teach users how to pick a password that is very unlikely to be in this (and future, ever-growing) versions of this corpus, using a large blacklist is "gotcha infosec". It creates UX where the user cannot possibly come up with a "good" password using most of their previous strategies. It's the worst kind of "gotcha infosec".

1. https://news.ycombinator.com/item?id=16434266

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#146

Earlier quoted context omitted.

Or, for those that don't want to use Python (in case it isn't installed, or requires a non-core module, I dunno) but have access to a Linux box: # echo -n "password" | sha1sum 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 - Take the first 5 characters, in this case "5baa6" and use at the end of the API endpoint in your browser. E.g. https://api.pwnedpasswords.com/range/5baa6 Then take the all the rest of the hash after th…

For ease: # echo -n "password" | sha1sum | cut -b 1-5 5baa6

Yeah, but you would need two commands then, because you need to search for bytes 6-40 in the resulting output. I made a one-liner farther down the comments.[1]

1: https://news.ycombinator.com/item?id=16434244

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#147
post #79

I just tried a 11 character password without special chars, that I’ve used on over 50 sites, over the last decade. It’s my password for throaway websites. Some pretty dodgy. Not in the database. Makes me feel pretty good about password security overall!

I have a password that’s a pair of words in two languages with some number substitution that I use a lot on websites I don’t care about and it’s not in the dB. And I’m sure I’ve used it on sites that have been hacked, so I dunno.

Unless the site was also storing in plaintext they’d have to actually crack the password hash too, which for some passwords is very hard to do.

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#148

Earlier quoted context omitted.

Why does 0000 have the largest number of hashes? Does SHA-1 not distribute hash values evenly?

It's indeed weird that "00000" would be the hash prefix with the highest number of entries. I think it must be a hidden variable. Like some sources put an all-zeroed-out hash in the database for testing or in case of a registration error or for deleted users, and these show up here.

Great thought, but it doesn't seem to be the case - as the number of unique suffixes is the large number here -- in fact, none of the values in the range are simply all zeroes.

https://api.pwnedpasswords.com/range/00000

I wonder if the hidden variable is something to do with how the passwords are leaked. First, let's suppose that a very commonly used broken password hash is plain SHA-1 (I think that's a valid assumption-- unfortunately!). Then, let's figure that amongst the many data dumps / extracts done by hackers, some of them are only able to extract part of the database, or save part of the database, or whatever....and they are fetched / saved / uploaded in lexical order?

Can't think of anything else.

EDIT: Ooops. The other thing is, that these actually are sha-1 hashes of real plaintext passwords. So it's definitely not a test-row in that sense.

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#149

Earlier quoted context omitted.

Now Dashlane seems to have in browser apps and finally supports Linux, I'm looking at moving away from Lastpass. Between them and BitWarden there seems to be quite good options form Linux users now. If anyone is a DashLane/BitWarden user and wants to chime in with their experience them that would be much appreciated.

I love Dashlane, and the Linux support is solid through the browser extension. Dashlane has the best interface across devices, of all the password managers I've used. The password sharing feature is great for business. Sure, it's a cloud service, but it's polished enough that I can get non-tech people like my family and coworkers to actually use it. Lastpass did not pass that test. I use Dashlane every day on Mac, Li…

Thanks. One question I have - can you turn off auto-login globally or just on a per website basis? Docs seem to imply on a per site basis only but that seems a bit odd.

I'm wondering how DashLane handles multiple logins for the same service (Google/GitHub etc etc).

Re: "Pwned Passwords" V2 With Half a Billion Passwords

#150
post #108

Earlier quoted context omitted.

Why does 0000 have the largest number of hashes? Does SHA-1 not distribute hash values evenly?

Maybe crypto people who have brute-forced up some typeable passwords that hash to low numbers on the first SHA-1 pass, for a fun-and-games equivalent to a Proof of Work? (It'd only show up in actual DB dumps for backends that use "SHA-1 with no salting" for password hashing, which might also serve as a useful canary value.)

Great idea! I ran a quick hashcat against the range00000 list on my laptop. In 1 minute I cracked 79 of them, and not too many of them look very odd - that is, they look sorta like normal cracked passwords.

I'm asking my friend to run a more thorough crack on his dedicated GPU, especially for hash value 000DD7F2A1C68A35673713783CA390C9E93:630 which does stick out to me!

Post reply on HN