android – 存储盐和加密文件是否会破坏安全性?

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

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

解决方法

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

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

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

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...