将盐与加密文件一起存储会破坏安全性吗?

Ale*_*yan 7 security android aes salt

我正在编写一个Android应用程序,旨在使用AES 256加密和解密文件.我使用AES-CBC模式和PBKDF2从用户输入的密码中导出AES密钥.此外,我正在为每个文件的加密密钥生成一个安全的伪随机盐.我将IV和salt与加密文件一起存储,因此我可以重新读取它们并稍后重新生成密钥以便能够解密文件.

我的问题:将盐与加密文件一起存储会破坏安全性和盐本身的任何含义吗?知道盐和IV的攻击者不能对加密文件进行离线暴力攻击以找出加密密钥吗?

Paŭ*_*ann 10

盐的主要目的不是秘密,而是为了确保攻击者在尝试强制密码时不能使用快捷方式,例如使用彩虹表(即一个现有表,或者一个新表用于多个加密文件),或一次强制多个收集的文件(应该有不同的盐).

只要您的密码具有足够的熵并且密钥派生函数中的迭代次数足够高,将盐与密文一起存储就没有问题.单独的盐不允许任何人解密文件.

此外,如果你想保持盐的秘密(它通常被称为"胡椒"而不是盐),你将不得不考虑一些机制,以获得合法解密的合适盐.

  • @AlexAmiryan建造彩虹桌至少和蛮力攻击一样昂贵.因此,如果你不能重复使用表(这就是盐的阻止),那么构建表是没用的.只是直接执行暴力攻击. (9认同)