通常情况下,我会使用PBKDF2来生成一个密钥,我将使用它来使用AES。但是,考虑到哈希将与我需要加密的数据一样长,仅仅对其进行XOR处理有什么缺点吗?
我的推理是,如果您可以导出哈希,您将得到AES密钥无论如何。
*添加我使用PBKDF2的原因是它必须使用用户提供的密码。被加密的数据可以被认为是随机的。我也在腌制。
发布于 2015-05-14 20:15:25
通过这样使用PBKDF2,您真正要做的是将PBKDF2转换为流密码。这一想法的三个主要问题是:
发布于 2015-05-14 20:02:56
是。因为已知的-明文攻击,一个可以找到明文的多态者,可以用它来查找哈希来解密不具有明文的密文。
AES是专门为防止攻击者查找密钥而构建的,即使他同时知道明文和密文。
如果您想获得性能并且仍然使用XOR,则可以将随机字符添加到密码中,然后将这些字符包含在消息中。
为了加密M,您生成了一个随机的名N,然后使用: PBKDF2(密码+ N) xor M=C
将NC发送给收件人
NC是通过选择当前密码来解密的,然后接收方提供预共享密码,因此
PBKDF2(密码+ N) xor C= M
要找到用XOR + PBKDF2(密码+A)加密的消息的密钥,并将明文和密文绑定到PBKDF2 (密码+N ),他仍然需要使用普通的蛮力破解PBKDF2。
发布于 2015-05-14 20:20:07
除了标准的选择--纯文本和密文攻击之外,这个构造没有理由是不安全的。为了防止出现这种情况,您仍然需要一个身份验证机制。(如AES-GCM或Poly-1305)。
作为实际的建筑,我建议你使用抵消。因此,您可以使用PBKDF的前几个位来派生用于身份验证的密钥,其余的作为pad。
然后使用HMAC- the 256对密文进行身份验证并追加标记。
这仅适用于在执行密码派生之前知道数据大小的情况。这就是为什么它没有被广泛使用的原因。
我在这里跳过身份验证部分,因为这是流密码的标准。
基本上,PBKDF是对HMAC的重复调用,HMAC是一个PRF,所以如果您的salt是随机的(这里是您的IV ),那么输出是伪随机的,并且应该和HMAC一样安全。
https://security.stackexchange.com/questions/89256
复制相似问题