Just take the string as bytes and hash it ffs

    • Showroom7561@lemmy.ca
      link
      fedilink
      English
      arrow-up
      1
      ·
      30 days ago

      Reasonable upper limits are OK. But FFS, the limit should be enough to have a passphrase with 4 or 5 words in it.

      • aname@lemmy.one
        link
        fedilink
        English
        arrow-up
        0
        ·
        30 days ago

        Usually 256 bit hash is used. 256 bits is 32 bytes or 32 characters. Of course you are losing some entropy because character set is limited, but 32 characters is beyond reasonable anyway.

        • Lojcs@lemm.ee
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          30 days ago

          The eff passphrase generator has about 2.5 bits of entropy per character (without word separators). Eff recommends 6 word passphrases, and with an avg word length of 7, that’s (only) 79.45 bits of entropy that won’t even fit in the 32 characters. If there wasn’t a password length limit it would be possible to saturate the hash entropy with a 20+ word & 102+ char passphrase.

      • Discover5164@lemm.ee
        link
        fedilink
        English
        arrow-up
        1
        ·
        30 days ago

        the password cannot contains the same sequences of characters as the old password.

        and i have seen this requirement in a service that requires changing it every month for some reasons.

        and this is to manage a government digital identity that allows to log it in all governments websites.

        • PM_me_your_doggo@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          29 days ago

          the password cannot contains the same sequences of characters as the old password.

          That’s a weird way to say “we store your password in plaintext”

          • blackstrat@lemmy.fwgx.uk
            link
            fedilink
            English
            arrow-up
            1
            ·
            29 days ago

            Not necessarily. Presumably the change password form requires entering the old and new password at the same time. Then they can compare the two as plain text and hash the old password to make sure it matches, then if so, hash the new password and overwrite it. Passwords stored hashed, comparison only during the change process. A theme on this is checking password complexity rules during the login process and advising to update to something more secure. It’s possible because you’re sending the password as plain text (hopefully over a secure connection), so it can be analysed before computing the hash. This even works if the hash is salt and peppered.

      • CaptPretentious@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        30 days ago

        Yep. Having to have requirements that doesn’t flow with people very well and requiring constant updates, people WILL find shortcuts. In the office, I’ve seen sheets of paper with the password written down, I’ve seen sticky notes, I’ve seen people put them in notepad/word so they could just copy paste.

        This is made worse, because you have to go out of your way for a password manager, which means you need to know what that is. And you need a good one because there has been (and I’m going to generalize here) problems with some password managers in the past. And for work, they have to allow a password manager for that to even be an option. Which you then end up with this security theater.

        • rekabis@lemmy.ca
          link
          fedilink
          English
          arrow-up
          1
          ·
          29 days ago

          And you need a good one because there has been problems with some password managers in the past.

          coughLastPasscough

          “Problems”. What an delightfully understated term to use.

    • CosmicTurtle0@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      30 days ago

      I sort of get it. You don’t want to allow the entire work of Shakespeare in the text field, even if your database can handle it.

      16 characters is too low. I’d say a good upper limit would be 100, maybe 255 if you’re feeling generous.

      • Saik0@lemmy.saik0.com
        link
        fedilink
        English
        arrow-up
        1
        ·
        30 days ago

        I sort of get it. You don’t want to allow the entire work of Shakespeare in the text field, even if your database can handle it.

        You don’t store the original text. You store the hash of it. If you SHA512 it, anything that’s ever given in the password field will always be 64Bytes.

        The only “legit” reason to restrict input to 16 character is if you’re using an encryption mechanism that just doesn’t support more characters as an input. However, if that’s the case, that’s a site I wouldn’t want to use to begin with if at all possible.

        • CosmicTurtle0@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          1
          ·
          30 days ago

          I’ll admit I kind of typed this without thinking it through. In a secured site, the password would be hashed and salted before storing in the database.

          Depending on where you’re doing the hashing, long strings might still slow you down. That being said, from a security standpoint, any gain in entropy by adding characters would be negligible past a certain point. I don’t remember what that number is but it certainly isn’t in the thousands.

          • rain_worl@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            2 days ago

            you might compare 1,000 to 10,000, but more like 0.1% to 0.01%
            meaning of this? no. bad grammar.

      • Chris@feddit.uk
        link
        fedilink
        English
        arrow-up
        1
        ·
        30 days ago

        The eBay password limit is 256 characters.

        They made the mistake of mentioning this when I went to change my password.

        Guess how many characters my eBay password has?

                • Farid@startrek.website
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  ·
                  1 day ago

                  Oh you mean that the number 256 overflows into 0 in 8-bit range. My joke was leaning more into the idea that when you use all 256 possible bit combinations (1111 1111), it can represent -1 in signed integer formats. Even though 255 is the highest number you can directly represent, there are still 256 total combinations, including zero, so IMO, the joke works.

      • owsei@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        30 days ago

        The problem is that you (hopefully) hash the passwords, so they all end up with the same length.

        • Carighan Maconar@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          30 days ago

          And sure, in theory your hashing browser-side could break if you do that. Depending on how much text the user pastes in. But at that point, it’s no longer your problem but the browser’s. 🦹

          • owsei@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            30 days ago

            Why are you hasing in the browser?

            Also, what hashing algorithm would break with large input?

              • owsei@programming.dev
                link
                fedilink
                English
                arrow-up
                1
                ·
                30 days ago

                Damm, I legit didn’t knew there bcrypt had a length limit! Thank you for another reason not to use bcrypt

                • frezik@midwest.social
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  30 days ago

                  Scrypt has the same limit, FWIW.

                  It doesn’t matter too much. It’s well past the point where fully random passwords are impossible to brute force in this universe. Even well conceived passphrases won’t get that long. If you’re really bothered by it, you can sha256 the input before feeding it to bcrypt/scrypt, but it doesn’t really matter.

              • Swedneck@discuss.tchncs.de
                link
                fedilink
                English
                arrow-up
                0
                ·
                25 days ago

                wouldn’t you then just break it up into chunks of 72 bytes, hash them individually, and concatenate the hashes? And if that’s still too long, split the hash into 72 byte chunks and repeat until it’s short enough?

                • yhvr@lemm.ee
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  25 days ago

                  I don’t know the specifics behind why the limit is 72 bytes, but that might be slightly tricky. My understanding of bcrypt is that it generates 2^salt different possible hashes for the same password, and when you want to test an input you have to hash the password 2^salt times to see if any match. So computation times would get very big if you’re combining hashes

              • candybrie@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                edit-2
                30 days ago

                Because then the hash is the password. Someone could just send the hash instead of trying to find a password that gets the correct hash. You can’t trust the client that much.

                You can hash the password on both sides to make it work; though I’m not sure why you’d want to. I’m not sure what attack never having the plain text password on the server would prevent. Maybe some protection for MITM with password reuse?

              • frezik@midwest.social
                link
                fedilink
                English
                arrow-up
                1
                ·
                edit-2
                30 days ago

                Per your edit, you’re misunderstanding what Bitwarden does and why it’s different than normal web site password storage.

                Bitwarden is meant to not have any insight into your stored passwords what so ever. Bitwarden never needs to verify that the passwords you’ve stored match your input later on. The password you type into Bitwarden to unlock it is strictly for decrypting the database, and that only happens client side. Bitwarden itself never needs to even get the master password on the server side (except for initial setup, perhaps). It’d be a breach of trust and security if they did. Their system only needs to store encrypted passwords that are never decrypted or matched on their server.

                Typical website auth isn’t like that. They have to actually match your transmitted password against what’s in their database. If you transmitted the hashed password from the client and a bad actor on the server intercepted it, they could just send the hashed password and the server would match it as usual.

              • frezik@midwest.social
                link
                fedilink
                English
                arrow-up
                1
                ·
                30 days ago

                With comments like this all over public security forums, it’s no wonder we have so many password database cracks.

              • CommanderCloon@lemmy.ml
                link
                fedilink
                English
                arrow-up
                0
                ·
                30 days ago

                Because then that means you don’t salt your hashes, or that you distribute your salt to the browser for the hash. That’s bad.

                • frezik@midwest.social
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  30 days ago

                  You could salt it. Distributing a unique salt doesn’t help attackers much. Salt is for preventing precomputing attacks against a whole database. Attacking one password hash when you know the salt is still infeasible.

                  It’s one of those things in security where there’s no particular reason to give your attacker information, but if you’ve otherwise done your job, it won’t be a big deal if they do.

                  You don’t hash in the browser because it doesn’t help anything.

          • CommanderCloon@lemmy.ml
            link
            fedilink
            English
            arrow-up
            0
            ·
            30 days ago

            If you hash in the browser it means you don’t salt your hash. You should absolutely salt your hash, not doing so makes your hashes very little better than plaintext.

            • Shadow@lemmy.ca
              link
              fedilink
              English
              arrow-up
              1
              ·
              edit-2
              30 days ago

              There’s nothing stopping a browser from salting a hash. Salts don’t need to be kept secret, but it should be a new random salt per user.

      • MangoPenguin@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        30 days ago

        Even 255 bytes with 10 million entries is only ~2.6GB of data you need to store, and if you have 10 million users the probably $1 a month extra that would cost is perfectly fine.

        I suppose there may be a performance impact too since you have to read more data to check the hash, but servers are so fast now it doesn’t seem like that would be significant unless your backend was poorly made.