gpt4 book ai didi

encryption - 密码、Salt 和 IV,我需要所有这些吗?

转载 作者:行者123 更新时间:2023-12-03 07:40:13 24 4
gpt4 key购买 nike

如果我使用 Rijndael CBC 模式,我不知道为什么我们需要盐。我的理解是即使人们知道密码,但没有IV他也无法获取数据。所以从我的角度来看,密码 + IV 似乎足够安全。

我有什么问题吗?

最佳答案

是的,您需要所有这些东西。

盐(和“迭代计数”)用于从密码中派生 key 。有关详细信息,请参阅 PKCS #5。用于 key 派生的盐和迭代计数不必是 secret 的。然而,盐应该是不可预测的,最好是随机选择。

CBC 模式需要初始化向量。这是由加密随机数生成器为每条消息生成的随机数据 block 。它充当密文的虚拟初始 block 。与 key 派生盐一样,它不必保密,通常与密文一起传输。

密码以及从中派生的 key 必须保密。即使攻击者掌握了 key 导出和加密的参数以及密文,没有 key 他也无能为力。

<小时/>

更新:

密码不是随机选择的;有些密码比其他密码更有可能出现。因此,攻击者不是生成给定长度的所有可能的密码(穷举暴力搜索),而是维护一个密码列表,按概率递减排序。

从密码派生加密 key 的速度相对较慢(由于 key 派生算法的迭代)。获取几百万个密码的 key 可能需要几个月的时间。这将促使攻击者从最有可能的密码列表中导出 key 一次,并存储结果。有了这样的列表,他可以快速尝试使用列表中的每个 key 进行解密,而不是花费数月的计算时间来再次派生 key 。

但是,每一位盐都会使存储派生 key 所需的空间加倍,并且为每个可能的密码派生 key 所需的时间也会增加一倍。几个字节的盐,创建和存储这样的列表很快就变得不可行。

盐对于防止预计算攻击是必要的。

IV(或具有计数器模式的随机数)使相同的纯文本产生不同的密文。这可以防止攻击者利用纯文本中的模式从一组加密消息中获取信息。

需要初始化向量来隐藏消息中的模式。

一个用于增强 key 的安全性,另一个用于增强使用该 key 加密的每条消息的安全性。两者缺一不可。

关于encryption - 密码、Salt 和 IV,我需要所有这些吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com