I am aware of other questions asking similar things as this one, but I believe this design addresses many of the issues raised in those questions. I'm also not concerned with making sure there's no database to store, only that the database doesn't store any secrets.
Using some key derivation function KDF With master password provided from elsewhere Password requirements are the rules of what are allowed by the site, i.e. length, allowed character classes, required classes # To register with a new site With username provided from elsewhere With password requirements provided from elswhere Create a salt Store site,password requirements,username,salt Create key by KDF(salt, master password) Convert key to generated password to fit password requirements Give username and generated password to site Register # To login to a site Retrieve password requirements,username,salt by site Create key by KDF(salt, master password) Convert key to generated password to fit password requirements Give username and generated password to site Login
Let's say an attacker acquires both the store and the plaintext generated passwords.
- Does this design make it any easier for the attacker to find the master password than by a brute force attack?
- Is a brute force attack on this design easier than a brute force attack on an encrypted password store?
- Is this in any other way easier to attack than encrypted password managers that derive the encryption key from a master password?
Of course the list of sites and usernames itself is important information. I'm only wondering about the security of the master password.