仅使用密钥加密整个(小)文件系统是一个好主意吗?

Fer*_*lez 2 java filesystems security encryption mobile

这个问题是我对在Java移动电话(J2ME,BlackBerry,Android)上实现小型加密文件系统更广泛问题提出疑问的一部分.如果得到了收到的反馈意见,考虑到问题的密度,我决定将这些疑问分成小问题.

总而言之,我计划为移动电话"创建"加密文件系统(在BoucyCastle或JCE的子集的帮助下),提供一个API,以透明的方式访问它们.加密将基于文件(而不是块)进行.

我的问题是:

仅使用对称密钥(可能是AES-256)来加密所有文件(它们不会那么多,可能是数十个)并将此密钥存储在密钥库(由引脚保护)或您是否愿意使用存储在每个文件旁边的动态生成的密钥加密每个文件,使用存储在密钥库中的"主"密钥加密该密钥?

每种方法的好处/缺点是什么?

Joe*_*ari 5

为每个文件使用单独的密钥更安全,因为缺少密钥的人无法判断两个文件是否相同.

另一种选择是使用相同的密钥,但每个文件使用不同的初始化向量.您将初始化向量(未加密)存储在文件的标头中.

  • 你的第二个选择是一个很好的答案.使用多个密钥没有意义,因为保护最终都是由初始密钥提供的.另一方面,使用IV会降低已知明文攻击的成功率. (2认同)