我的算法模板:
...
Mkey = '123' // from Master Key
KdfKey = SHA512(Mkey) // from PBKDF2 password
KdfSalt = SHA256(AesIV + KdfKey) // from PBKDF2 salt
Pbkdf2 = PBKDF2(KdfKey, KdfSalt, 64 + 32) // "64+32"=OutputLen, Iteration is user selected
AesKey = sublast(Pbkdf2, 32) // AES 256 bit CBC key, select last 32 bit
HmacKey = subfirst(Pbkdf2, 64) // HMAC-SHA256 key, select first 64 bit
...
我的问题:
答案 0 :(得分:0)
安全还是不安全?
似乎您正在尝试使用最强大的方法如何从密码创建加密和MAC密钥。我说这有点过分了,但是玩起来似乎没问题
您需要了解此流程中的弱点,并且是用户输入。
迭代是用户选择的
" HmacKey"破解或成立,加密消息的安全问题或" Mkey" ?
如果有办法破解/找到hmackey,我们有比一些密码更大的问题。要回答 - pbkdf专门设计用于从低熵密码输出均匀分布,因此如果找到hmackey(输出pbkdf),它不会告诉原始密码
如果这不安全,我应该如何使用单个密码
密码的整个问题是用户记住它们并且往往具有低熵(随机性和长度)。使用好的密码是关键。 (imho使用pbkdf只是加密解决方法,没有更好的解决方案:/)