For a system that is using public key cryptography to authenticate users and their actions I'm trying to solve (ease) UI/UX problem so that users will be able to use login/passwords they're accustomed to.
- So, the idea is that I will use some KDF over password with login as the salt (or maybe KDF(login) as the salt, not sure if that's better). I can't use random bytes as the salt because login/password should be self-sufficient to generate private key.
(For now I'm looking at Argon2, because it won PHC, but maybe it's not extensively researched yet and it's better to look somewhere else?)
Overall, is this approach secure or maybe there is something better?
- I wan't to give users ability to "restore" their login and/or password with a set of security questions/answers.
To implement this I'm planning to encrypt login and/or password using ECC and store it in a public accessible place (where user can reach it, but so is anyone else, hence why it's encrypted).
I need to derive private key used for decryption from a set of key/value attributes in the form of:
question_id -> answer
What is the good KDF algorith and approach I can use for that? I tried to google key-value based KDFs or attributes-based KDFs but so far nothing. Again, set of questions/answers should be self-sufficient, so I can't use anything random (salt).
Maybe the same approach can be used for my first question where key is login and value is password.