Last week, I tried to register for a service and was really surprised by a password limit of 16 characters. Why on earth yould you impose such strict limits? Never heard of correct horse battery staple?

  • faltryka@lemmy.world
    link
    fedilink
    arrow-up
    149
    arrow-down
    5
    ·
    2 年前

    This is my biggest pet peeve. Password policies are largely mired in inaccurate conventional wisdom, even though we have good guidance docs from NIST on this.

    Frustrating poor policy configs aside, this max length is a huge red flag, basically they are admitting that they store your password in plan text and aren’t hashing like they should be.

    If a company tells you your password has a maximum length, they are untrustable with anything important.

    • cron@feddit.orgOP
      link
      fedilink
      arrow-up
      88
      ·
      2 年前

      Oh I had the same thought. Whoever limits password length probably has many other shitty security practices.

      • cron@feddit.orgOP
        link
        fedilink
        arrow-up
        59
        arrow-down
        1
        ·
        2 年前

        OWASP recommendation is to allow 64 chars at least:

        Maximum password length should be at least 64 characters to allow passphrases (NIST SP800-63B). Note that certain implementations of hashing algorithms may cause long password denial of service.

        The lemmy-UI limit is reasonably close and as everything is open source, we can verifiy that it does hash the password before storing it in the database.

        There is a github issue, too.

      • faltryka@lemmy.world
        link
        fedilink
        arrow-up
        16
        arrow-down
        1
        ·
        2 年前

        It being open source helps because we can confirm it’s not being mishandled, but it’s generally arbitrary to enforce password max lengths beyond avoiding malicious bandwidth or compute usage in extreme cases.

    • unmagical@lemmy.ml
      link
      fedilink
      arrow-up
      20
      ·
      2 年前

      If a company tells you your password has a maximumn length, they are untrustable with anything important.

      I would add if they require a short “maximum length.” There’s no reason to allow someone to use the entirety of Moby Dick as their password, so a reasonable limit can be set. That’s not 16 characters, but you probably don’t need to accept more than 1024 anyway.

        • phcorcoran@lemmy.world
          link
          fedilink
          arrow-up
          12
          ·
          2 年前

          Sure but if my password is the entire lord of the rings trilogy as a string, hashing that would consume some resources

        • unmagical@lemmy.ml
          link
          fedilink
          arrow-up
          5
          ·
          2 年前

          Of course, but if you’re paying for network and processing costs you might as well cap it at something secure and reasonable. No sense in leaving that unbounded when there’s no benefit over a lengthy cap and there are potentially drawbacks from someone seeing if they can use the entirety of Wikipedia as their password.

          • DaPorkchop_ [any]@lemmy.ml
            link
            fedilink
            arrow-up
            2
            ·
            2 年前

            You can also hash it on the client-side, then the server-side network and processing costs are fixed because every password will be transmitted using same number of bytes

            • unmagical@lemmy.ml
              link
              fedilink
              arrow-up
              2
              ·
              2 年前

              You still need to deal with that on the server. The client you build and provide could just truncate the input, but end users can pick their clients so the problem still remains.

        • frezik@midwest.social
          link
          fedilink
          arrow-up
          2
          ·
          2 年前

          Bcrypt and scrypt functionally truncate it to 72 chars.

          There’s bandwidth and ram reasons to put some kind of upper limit. 1024 is already kinda silly.

      • Revan343@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        2 年前

        you probably don’t need to accept more than 1024 anyway.

        OWASP recommends allowing at least 64 characters. That would cover all of my passphrases, including the ones that are entire sentences

      • AA5B@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        2 年前

        I wonder if a lot of it is someone using their personal experience and saying “just a little bigger ought to cover it”

        When I used my own passwords, I rarely used more than 12 characters, so that should be enough

        All the password generators I’ve used default to about 24 chars, so 30 ought to be enough for anyone

    • clearedtoland@lemmy.world
      link
      fedilink
      English
      arrow-up
      13
      ·
      2 年前

      The number of government websites that I’ve encountered with this “limitation.” Even more frustrating when it’s not described upfront in the parameters or just results in an uncaught error that reloads the page with no error message.

    • chameleon@fedia.io
      link
      fedilink
      arrow-up
      10
      ·
      2 年前

      bcrypt has a maximum password length of 56 to 72 bytes and while it’s not today’s preferred algo for new stuff, it’s still completely fine and widely used.

      • DaPorkchop_ [any]@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        2 年前

        Wait, really? I always thought bcrypt was just a general-purpose hash algorithm, never realized that it had an upper data size limit like that.

    • primrosepathspeedrun@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      2 年前

      also, if they think a strong password is only about types of characters. a dozen words from as many languages and 5+alphabets is just as good!

      its to the point I don’t bother remembering my passwords anymore, because this bullshit makes user-memorable-hard-to-machine-guess passwords impossible.

      • wer2@lemm.ee
        link
        fedilink
        arrow-up
        15
        arrow-down
        1
        ·
        2 年前

        It doesn’t matter the input size, it hashes down to the same length. It does increase the CPU time, but not the storage space. If the hashing is done on the client side (pre-transmission), then the server has no extra cost.

        For example, the hash of a Linux ISO isn’t 10 pages long. If you SHA-256 something, it always results in 256 bits of output.

        On the other hand, base 64-ing something does get longer as the input grows.

        • redxef@scribe.disroot.org
          link
          fedilink
          arrow-up
          3
          ·
          2 年前

          Hashing on the client side is as secure as not hashing at all, an attacker can just send the hashes, since they control the client code.

          • wer2@lemm.ee
            link
            fedilink
            arrow-up
            3
            ·
            2 年前

            Hashing is more about obscuring the password if the database gets compromised. I guess they could send 2^256 or 2^512 passwords guesses, but at that point you probably have bigger issues.

            • redxef@scribe.disroot.org
              link
              fedilink
              arrow-up
              2
              ·
              2 年前

              It’s more about when a database gets leaked. They then don’t even have to put in the effort of trying to match hashes to passwords. And that’s what hashing a password protects against, when done correctly.

      • frezik@midwest.social
        link
        fedilink
        arrow-up
        7
        arrow-down
        2
        ·
        2 年前

        Just in case someone runs across this and doesn’t notice the downvotes, the parent post is full of inaccuracies and bad assumptions. Don’t base anything on it.

        • frezik@midwest.social
          link
          fedilink
          arrow-up
          1
          ·
          2 年前

          The hash isn’t at all secure when you do that, but don’t worry too much about it. GP’s thinking about how things work is laughably bad and can’t be buried in enough downvotes.

            • frezik@midwest.social
              link
              fedilink
              arrow-up
              3
              ·
              2 年前

              The Wikipedia article is probably a good place to start: https://en.wikipedia.org/wiki/Cryptographic_hash_function

              Though I’d say this isn’t something you read directly, but rather understand by going through cryptographic security as a whole.

              To keep it short, cryptographic hashes make a few guarantees. A single bit change in the input will cause a drastic change in the output. Due to the birthday problem, the length needs to be double the length of a block cipher key to provide equivalent security. And a few others. When you chop it down, you potentially undermine all the security guarantees that academics worked very hard to analyze.

              Even a small change would require going to a lot of work to make sure you didn’t break something. And when you’ve read up on cryptography in general and understand it, this tends to be an automatic reflex.

              None of which really matters. GP’s big assumption is that the hash size grows with input size, which is not true. Hash size stays fixed no matter the input.