我的算法模板如下:
...
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
...我的问题:
发布于 2018-01-08 07:45:15
安全还是不安全?
似乎您正在尝试使用最强大的方法,如何创建一个加密和MAC密钥从一个密码。我想说这有点过火了,但为了安全起见,似乎没问题。
您需要注意这个流程中的一个弱点,它是用户的输入。
迭代是用户选择的
呃..。看,这是你不应该信任用户的地方(也许用户可以选择三个选项之一,IMHO --依赖这里的用户是没有意义的)
"HmacKey“破解或建立,加密消息或"Mkey”的安全问题?
如果有办法破解/找到hmackey,我们有比几个密码更大的问题。要回答- pbkdf是专门设计的从低熵密码输出均匀分布,所以如果找到hmackey (pbkdf的输出),它就不会告诉原始密码。
如果这是不安全的,我应该如何使用一个密码
密码的全部问题是,它们被用户记住,并且往往具有低熵(随机性和长度)。使用好的密码是关键。(使用pbkdf的imho只是没有更好的解决方案的密码解决方案:/ )
https://stackoverflow.com/questions/48144785
复制相似问题