Just take the string as bytes and hash it ffs

  • @FierySpectre
    link
    English
    -3
    edit-2
    18 days ago

    Why would you not hash in the browser. Doing so makes sure the plaintext password never even gets to the server while still providing the same security.

    Edit: I seem to be getting downvoted… Bitwarden does exactly what I described above and I presume they know more than y’all in terms of security https://bitwarden.com/help/what-encryption-is-used/#pbkdf2

    • @candybrie
      link
      English
      18
      edit-2
      18 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?

    • @[email protected]
      link
      fedilink
      English
      618 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.

      • @[email protected]
        link
        fedilink
        English
        318 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.

        • @FierySpectre
          link
          English
          118 days ago

          It helps against the server being able to read the password, so a bad actor (either the website itself or after a hack) could read your password. Which isn’t bad if you’re using good password hygiene with random passwords, but that sadly is not the norm.

            • @FierySpectre
              link
              English
              1
              edit-2
              18 days ago

              For that particular website yes, but a salted client side hash is worthless on a different website.

              Edit: plus even unsalted it would only work if the algorithm is the same and less iterations are done

              • @[email protected]
                link
                fedilink
                English
                118 days ago

                If the end user is reusing passwords. Which, granted, a lot of people do.

                On the flip side, we’re also forcing the use of JavaScript on the client just to handle passwords. Meanwhile, the attack we’re protecting against only works for reused passwords, and the attacker is inside the server and can see the password after transport layer encryption is removed. This is a pretty marginal reason to force the complexity of JavaScript.

    • @[email protected]
      link
      fedilink
      English
      218 days ago

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

    • @[email protected]
      link
      fedilink
      English
      2
      edit-2
      18 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.