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?

  • Skull giver@popplesburger.hilciferous.nl
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    With SSS the secrets are calculated either on your end (in the browser) or at the moment you would normally hash the password when you first set it. And yes, the server does receive some secrets as well.

    What you basically do is encrypt something with the combined secret key. The helpdesk only has one or a few parts of the secret key themselves. They need one or more secrets from you to derive enough of the secret key to decrypt the message. That message could literally be “congratulations you found the secret key” for all intents and purposes.

    If they enter the secrets you provide (say, secrets derived from the second and ninth position, and the appropriate characters in a password) and the message gets decrypted successfully, the other side will know that you are who you claim you are, without ever disclosing all of your secret material. It doesn’t necessarily matter which part of the secret your share, as long as you share enough to successfully decrypt a message, but the agents probably want random positions to make sure someone who overheard you on the phone can’t just reuse the letters you used.

    This is quite tricky to set up so I doubt it’s commonly used. It’s also vulnerable to potential brute forcing if the secrets stored by the bank can be extracted, but if the helpdesk doesn’t have direct server access only the IT people inside the bank (who can probably read the password you submit to their servers anyway) can really brute force anything.

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

      So in this case the shared partial secret key would be a part of the secret. That seems like a bad idea, bad practice for security. But I see how it’d work.

      • Skull giver@popplesburger.hilciferous.nl
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        It’s not necessarily bad practice, that’s exactly how such a system should work, assuming the keys material is good enough not to be brute forced easily. SSS is better if you combine strong key material (actual cryptographic keys, for example) but reading out ECDSA keys over the phone is quite the hassle.

        I’ve never actually encountered a business that asked for my password over the phone and I would feel sketched out regardless of how good their implementation might theoretically be. It’s better than voice identification, but I’d rather keep my passwords to myself.