我目前正在开发一款需要在RMS中保存敏感数据的应用程序,无论是在RMS中还是使用LWUIT的存储类。 (例如用户名和密码)
此类实施的安全性如何,以及为确保数据安全且不易被盗而采取的步骤是什么?
答案 0 :(得分:2)
RMS未加密 - 攻击者可以轻松读取任何数据。您需要加密数据 - 我建议使用Bouncycastle AES提供程序,但Java AES提供程序也可以工作(尽管效率不高,而且need to enable 256-bit keys就可以了)。 See the accepted answer to this question for some example code,我不建议在不首先询问StackOverflow或其他好的Q& A站点的情况下更改代码中的任何内容(错误地使用加密库非常容易);代码使用Java加密提供程序,在导入Bouncycastle库后使用Bouncycastle提供程序使用Cipher.getInstance("AES/CBC/PKCS7Padding", new BouncyCastleProvider())
。需要注意的是,代码会从Keyspec spec
生成char[] password
- 用户需要在每个会话中至少输入一次此密码,以便您解密数据(您无法存储设备上的密码,这将破坏加密数据的目的)。同样重要的是,您需要在加密和解密阶段使用相同的IV(初始化向量);这个IV对于你正在加密的每个记录都应该是唯一的(例如,当你加密foo.txt然后使用与加密bar.txt时不同的IV时),但它不需要保密(你可以将它存储在明文中)与加密文件一起)。作为一项额外的预防措施,请在完成后擦除char[] password
。