1 KEY = AES + PBKDF2 + HMAC

时间:2018-01-08 05:41:42

标签: encryption cryptography aes hmac pbkdf2

我的算法模板:

...
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
...

我的问题:

  1. 安全还是不安全?
  2. “HmacKey”破解或成立,加密消息或“Mkey”的安全问题?
  3. 如果这不安全,我该如何使用单一密码

1 个答案:

答案 0 :(得分:0)

  

安全还是不安全?

似乎您正在尝试使用最强大的方法如何从密码创建加密和MAC密钥。我说这有点过分了,但是玩起来似乎没问题

您需要了解此流程中的弱点,并且是用户输入。

  

迭代是用户选择的

eeee ..看,这是你不应该信任用户的地方(也许用户可以选择三个选项中的一个,恕我直言,依靠这里的用户没有意义)

  

" HmacKey"破解或成立,加密消息的安全问题或" Mkey" ?

如果有办法破解/找到hmackey,我们有比一些密码更大的问题。要回答 - pbkdf专门设计用于从低熵密码输出均匀分布,因此如果找到hmackey(输出pbkdf),它不会告诉原始密码

  

如果这不安全,我应该如何使用单个密码

密码的整个问题是用户记住它们并且往往具有低熵(随机性和长度)。使用好的密码是关键。 (imho使用pbkdf只是加密解决方法,没有更好的解决方案:/)