I have a feeling that a lot of servers may do some of following:
- store all of user passwords in a un-hashed form whether encrypted or not.
- user data are uncorrelated to the user password.
If that true, there is no security at all. Password, MFA, U2F are insignificant for keep user data secure.
I don’t think, any company want to ask user password enter every time process user data. So, there is no way we have no back door security. And our data just sit there waiting for a large scale stealing.
So the question is, why user don’t have a control of which part of data need to be access with user password all the time. And which part of data the company can store it uncorrelated to user password.
I think this basic did not meet, then whatever authentication style will not keep our own data secure. Only keep the connection through the network secure, and prevent user stealing from other users. But company can steal user data all day long.
Also, for the sake of secure user password. I would think, every program, communication for entering password should always using the hashed-form of your password. So that no one, no program actually know your password. So it will be very hard to figure out the user password patterns event if they got hack from multiple accounts!
I mean, company got hacked. Then the blame on user have too simple passwords, and introduce a bunch of B.S. authentication style. But, large scale attach are from the way they store user data. So all of these are non-sense until they have the basic right first.!
Also, using Public key, and Private Key like SSH + password. Event if you give the password to the stranger, they may not able to read your data. For example, your computer have private key, and your set public key to the company account. So event after password entering, all sensitive data still transfer using public key you set. Only the computer that have your private key can show the data. So why are we event need the MFA, and lose password to stranger in HASHED form is no big deal!