Taking over historically grown IT is hell

you are viewing a single comment's thread
view the rest of the comments
[–] 58 points 9 hours ago (11 children)

I'd happily use a passphrase with multiple unrelated 8-12 character words but for some reason most businesses have upper limits on how many characters can be used...

  • source
  • hideshow 11 child comments
  • [–] 48 points 9 hours ago (5 children)

    That is the character limit on the database field where they store your password in plain text.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 23 points 8 hours ago (4 children)

    Yup.

    For the unaware: modern hash algorithms have character limits, but it’s nothing that would ever interfere with a regular password. Even accounting for the salt that gets appended to the end of your password before it goes into the algorithm. Most of the popular hashes have a 128 character limit, and the site will also store a salt in your user’s database entry. That salt gets appended to your password before it goes into the hash. Basically, even if two users have the same password, the hash for each will see “password{Salt1}” and “password{Salt2}”. So they won’t show as the same hash in the database, even though they’re the same password.

    This salt is to prevent something called a rainbow table attack, where a hacker feeds a bunch of common passwords into a bunch of common hash algorithms, then compares with their stolen database. If they find matches, they now know which algorithm the database was using, and they only need to brute force the database once. So for instance, they feed “{common password}” into several hashing algorithms. One gives the result “1234567890”. They then check their stolen database, and find several users with the hash “1234567890”. They try using {common password} on those user accounts, and they work! Now the hacker knows which hash algorithm was used, and can brute force the entire stolen database at their leisure.

    By appending a salt to each password, “{common password}” actually becomes “{common password}{Salt1}” “{common password}{Salt2}”, etc… So even if the hacker tries to brute force it, they would need to brute force each individual password instead of brute forcing the entire database all at once. It’s still important to use strong passwords, because a weak password will still be broken in only a few seconds. But that will be a few seconds per weak password, instead of a few seconds for every user at the same time. This is why sites tell you to change your password after a breach. The idea is that salting the database makes brute force attacks take a lot longer, and gives most users time to change their passwords before the attackers manage to get anything.

    All of this is to say, you could have a 100 character password limit, and still have plenty of room for a 16-28 character salt. And the hashes will output the same length string regardless of what you feed into it. So longer or shorter passwords won’t matter, because they’ll all turn into a 64 character hash in the end.

    So putting a low character limit on a password is a site admin tattling on themselves, because it means they’re not hashing your password at all. If they were hashing it, the only upper limit on your password would be whatever the algorithm can accept (probably 128 characters) minus 20-30 characters for a salt.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 3 hours ago

    Despite salting passwords, I would personally also like to see a lower character limit, to get people into the habit, combined with said salting. Just in case other sites don't do password salting, among other potential reasons.

  • source
  • parent
  • [–] 8 points 7 hours ago

    Almost every hash algorithm does not have a character limit and instead uses chaining. Bcrypt is the odd one out of using only the first 72 bytes of a supplied password, tough you can still supply a longer password even if it does not make a difference.

  • source
  • parent
  • [–] 7 points 7 hours ago

    Some sites require special characters in their passwords, other websites don’t even allow them. I use a password manager, but still have to tweak the password generation rule for some sites.

  • source
  • parent
  • [–] 6 points 8 hours ago

    Oh there has to be an upper limit for things like buffer overflow or just plain RAM capacity limits. But even with allowing the max possible range of characters you are still looking at something like 100,000 in a single 1mb size and I'm sure they could manage to do that and still pass it along to a high quality hashing function.

    If you try putting in a password longer than that yes reject it.

  • source
  • parent