Basic cyber security says that passwords should be encrypted and hashed, so that even the company storing them doesn’t know what the password is. (When you log in, the site performs the same encrypting and hashing steps and compares the results) Otherwise if they are hacked, the attackers get access to all the passwords.

I’ve noticed a few companies ask for specific characters of my password to prove who I am (eg enter the 2nd and 9th character)

Is there any secure way that this could be happening? Or are the companies storing my password in plain text?

  • GenderNeutralBro@lemmy.sdf.org
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I’ve noticed a few companies ask for specific characters of my password to prove who I am (eg enter the 2nd and 9th character)

    They what?!

    This is a huge red flag and should not even be possible for your primary password, if they are following basic security principles. Are you sure this isn’t a secondary PIN or something like that?

    • lobster_irl@kbin.social
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      NatWest in the Uk does it for both the password and the pin, has been since I signed up like 10 years ago. I assumed they do it so you don’t enter a full password that someone could access later. No idea how they work out but they are big and I assume if it was insecure they’d have had issues by now. I assume they store the letter groupings in advance.

      • El Barto@lemmy.world
        cake
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        I assume if it was insecure they’d have had issues by now.

        At this point, it’s okay to assume that they have had issues and they haven’t disclosed them.

          • El Barto@lemmy.world
            cake
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            I’m not sure if they can be sued for that. Surely you can sue them if they get hacked and you’re negatively affected, though.

            • xavier666@lemm.ee
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              So i get the feeling that storing pw in plaintext is heavily frowned upon but not illegal

              • El Barto@lemmy.world
                cake
                link
                fedilink
                arrow-up
                2
                ·
                1 year ago

                Not ilegal. Just very stupid. Like it’s not illegal to leave your house’s front door unlocked.

  • randombullet@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I’m assuming they’re plain text. There’s is no perceivable way they can only use those data points to to figure out which hash it is. Unless of course they’re using their own “hashing” function which isn’t secure at all since it’s probably reversible.

    • ayaya@lemmy.fmhy.ml
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      Theoretically they could take those two characters + a salt and then also store that hash. So there it is technically a way to do it although it’d be incredibly redundant, just ask for the actual password at that point.

      • hansl@lemmy.ml
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        Please don’t do that. Brute force attacks are very easy on single characters, even two of them.

        • r00ty@kbin.life
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          Yes, I did a reply about this above because this idea has been suggested a few times and it’s truly a bad security move. I’d prefer they just encrypted it and made sure the key was stored separate from the database. That’s more secure than this idea.

    • FearTheCron@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Perhaps they validate the passwords client side before hashing. The user could bypass the restrictions pretty easily by modifying the JavaScript of the website, but the password would not be transmitted un-hashed.

      It is worth pointing out that nearly any password restriction like this can be made ineffective by the user anyway. Most people who are asked to put a special character in the password just add a ! to the end. I think length is still a good validation though and it runs into the same issue @[email protected] is asking about

      • Kissaki@feddit.de
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        How would they validate individual characters client side? The set password is on the server.

        • FearTheCron@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          When you are filling out the web form with your password it’s stored plain text in the web browser and accessible via JavaScript. At that point, a JavaScript function checks the requirements like length and then does the salting/hashing/etc and sends the result to the server.

          You could probably come up with a convoluted scheme to check requirements server side, but it would weaken the strength of the hash so I doubt anyone does it this way. The down side of the client side checking is that a tenacious user could bypass the password requirements by modifying the JavaScript. But they could also just choose a dumb password within the requirements so it doesn’t matter much… “h4xor!h4xor!h4xor!” Fits most password requirements I have seen but is probably tried pretty quickly by password crackers.

          • Kissaki@feddit.de
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 year ago

            OP asked about validating specific characters of the password. Commenter then said it has to be stored in plain text for that to work. Then you commented about client-side validation. Which I really don’t see has anything to do with the stuff before in this thread?

            Commenter said it has to be plain text server side. You implied validating client side would allow storing hashed passwords and still validating individual characters of the password. Which I asked how that would work. Your answer to that seems to give a general view of password handling on forms and validation?

  • andrew@lemmy.stuart.fun
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    The most secure way this could happen is them storing the specific character separately. It reduces security of your password if that plaintext character is compromised but you could still store the rest of the password securely.

    You could even salt and hash the one character with a large salt to keep it behind a one-way function, and then the agent would need to enter it and confirm via the system, but that would reduce any downside of the one or two characters being compromised.

    It’s weird either way though.

  • TeczowaLesba@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    One of the main differences between hashing and encrypting is that encryption is réversible by some means, while hashing isn’t. The irreversibility is what makes it so ideal for storing a password in a way that definitely can’t be used to get the original password back, even if someone steals the whole database with the passwords in it.

    Those companies that ask for specific characters might be encrypting the passwords, but they definitely aren’t hashing them.

  • WigglyTortoise@dmv.social
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Do they always ask for the same characters? I’d imagine they could hash the password as well as saving only the 2nd and 9th characters as plaintext. Still a bit of a security risk but not nearly as bad

  • slazer2au@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Something fun you can do is set your password to an eicar test string. That should break things of they are running any av and storing the password in clear text

  • rufus@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Full-stack dev here, not necessarily in answer to OP’s question, but in my experience it is a pretty standard practice that when you log in to a service, the web page sends your unhashed creds to the server, where your password is then hashed and compared to the stored hash. Via HTTPS/TLS/SSL, this is a reasonably secure practice since the creds are still encrypted while in transport. Hashing is a computationally expensive process that (before the advent of WASM) wasn’t really feasible to do on the client side.