我必须为每个记录(标签,用户名和密码)加密包含三个字段的列表。
这些将保存在JSON结构中,然后写入存储。
我的问题是,我应该加密整个文件还是应该加密单个字段,将加密的字符串转换为Base64并将这些加密字段放在JSON文件中?
考虑到我不希望文件变得非常大(比如说不到MB),我总是会把它作为一个整体阅读而且目标平台是Android,那么最好的方法是什么?性能和安全性?
答案 0 :(得分:3)
如果您一次加密少于整个块,则加密会显着减弱。所以加密整个文件。
答案 1 :(得分:2)
我建议加密整个文件。如果您逐字段加密,则攻击者将看到数据是(标记,用户名,密码)的数组。这已经暴露了部分数据结构并削弱了加密。加密和解密整个文件甚至可能比单独执行每个字段更快,尽管对于您所讨论的大小我不认为这是一个问题。
答案 2 :(得分:2)
通常,您应该加密整个文件。但是,如果您使用的是较差的实现,那么这可能会对您不利。例如,如果您使用像RC4这样的流密码并重用密钥,则可以通过显示prng流的各个部分来对您使用文件结构。这用于WEP攻击。但这里的问题是实施不力。
简而言之,使用带有随机IV和Blowfish的CBC或CMAC模式或带有s2k功能或随机密钥的AES-256。另外请记住,没有用户可以访问它的地方,没有地方可以隐藏Android或iPhone上的密钥。