I have the following APP Design
- key store (contains 1:n user payload as 1:n key store entries)
- key store salt (is used to extend to key store password to 256 bits, stored in clear text)
- key store entry (what the user wants to encrypt)
own entry IV (payload is encrypted with AES256 MODE OFB, IV stored in clear text )
own entry SALT (64bytes random appended to payload before encryption, SALT stored in clear text)
encrypted entry is stored base64 encoded
model a) only passwords are allowed
model b) additional data is allowed
(eg. some comments / remarks in the users language / links / email addresses)
Is it secure to allow multiple keys on the key store if the key store SALT is shared on all keys? (the key store SALT is used for apple crypt function CCKeyDerivationPBKDF which extends the user password to 256bits to be used for AES256)
Can an attacker use the shared SALT for some attack ? (The number of used passwords is not detectable as the application accepts every entry as valid. You must decide on the decrypted information if the key is valid or not. This is also true for the user who should know the correct password).
Is there a security risk when I use model b) which allows the attacker to guess, that there is user language (or links/email addresses) in the encrypted entry?