Here is the text of the NIST sp800-63b Digital Identity Guidelines.

  • Amanduh@lemm.ee
    link
    fedilink
    English
    arrow-up
    7
    ·
    2 days ago

    Can you elaborate further? Why would someone want to truncate passwords to begin with?

    • essteeyou@lemmy.world
      link
      fedilink
      English
      arrow-up
      19
      ·
      2 days ago

      To save a few megabytes of text in a database somewhere. Likely the same database that gets hacked.

      • orclev@lemmy.world
        link
        fedilink
        English
        arrow-up
        24
        ·
        2 days ago

        Which shouldn’t even matter because passwords are salted and hashed before storing them, so you’re not actually saving anything. At least they better be. If you’re not hashing passwords you’ve got a much bigger problem than low complexity passwords.

        • essteeyou@lemmy.world
          link
          fedilink
          English
          arrow-up
          28
          ·
          2 days ago

          The place that truncates passwords is probably not the place to look for best practices when it comes to security. :-)

          • orclev@lemmy.world
            link
            fedilink
            English
            arrow-up
            6
            ·
            2 days ago

            Hashing passwords isn’t even best practice at this point, it’s the minimally acceptable standard.

              • pivot_root@lemmy.world
                link
                fedilink
                English
                arrow-up
                8
                ·
                edit-2
                2 days ago

                Use a library. It’s far too easy for developers or project managers to fuck up the minimum requirements for safely storing passwords.

                But, if you are wanting to do it by hand…

                • Don’t use a regular hashing algorithm, use a password hashing algorithm
                • Use a high iteration count to make it too resource-intensive to brute force
                • Salt the hash to prevent rainbow tables
                • Salt the hash with something unique to that specific user so identical passwords have different hashes
                • Laser@feddit.org
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  ·
                  2 days ago

                  Salt the hash with something unique to that specific user so identical passwords have different hashes

                  Isn’t that… the very definition of a Salt? A user-specific known string? Though my understanding is that the salt gets appended to the user-provided password, hashed and then checked against the record, so I wouldn’t say that the hash is salted, but rather the password.

                  Also using a pepper is good practice in addition to a salt, though the latter is more important.

                • Buddahriffic@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  1 day ago

                  I remember hearing to not layer encryptions or hashes on top of themselves. It didn’t make any sense to me at the time. It was presented as if that weakened the encryption somehow, though wasn’t elaborated on (it was a security focused class, not encryption focused, so didn’t go heavy into the math).

                  Like my thought was, if doing more encryption weakened the encryption that was already there, couldn’t an attacker just do more encryption themselves to reduce entropy?

                  The class was overall good, but this was still a university level CS course and I really wish I had pressed on that bit of “advice” more. Best guess at this point is that I misunderstood what was really being said because it just never made any sense at all to me.

                  • orclev@lemmy.world
                    link
                    fedilink
                    English
                    arrow-up
                    2
                    ·
                    1 day ago

                    It’s because layering doesn’t really gain you anything so it only has downsides. It’s important to differentiate encryption and hashing from here on since the dangers are different.

                    With hashing, layering different hashing algorithms can lead to increased collision chance and if done wrong a reduced entropy (for instance hashing a 256 bit hash with a 16 bit hashing algorithm). Done correctly it’s probably fine and in fact rehashing a hash with the same algorithm is standard practice, but care should be taken.

                    With encryption things get much worse. When layering encryption algorithms a flaw in one can severely compromise them all. Presumably you’re using the same secret across them all. If the attacker has a known piece of input or can potentially control the input a variety of potential attack vectors open up. If there’s a flaw in one of the algorithms used that can make the process of extracting the encryption key much easier. Often times the key is more valuable than any single piece of input because keys are often shared across many encrypted files or data streams.