安卓 Realm 数据库安全

9

简单的问题。Realm数据库安全吗?有没有办法在应用程序之外接收数据?如果没有:

我有非常敏感的数据,必须记住-如何保持它们的安全?

答:Realm数据库是安全的,因为它提供了加密和身份验证功能。但是,如果您需要在应用程序之外接收数据,建议使用其他安全通信协议,例如SSL或TLS。对于敏感数据,请考虑使用加密算法和密码学技术来保护数据。
1个回答

15

通过将512位(64字节)加密密钥传递给RealmConfiguration.Builder.encryptionKey(),可以在磁盘上以加密形式存储Realm文件:

byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
RealmConfiguration config = new RealmConfiguration.Builder(context)
  .encryptionKey(key)
  .build();

Realm realm = Realm.getInstance(config);

这确保所有持久化到磁盘的数据都使用标准的AES-256加密进行透明加密和解密。每次创建用于该文件的Realm实例时必须提供相同的加密密钥。

请参阅以下链接,了解如何在Android KeyStore中安全存储密钥,以便其他应用程序无法读取:

https://github.com/realm/realm-java/tree/master/examples/encryptionExample


Facebook Conceal是另一个处理安全存储密钥的良好选择。 - LordParsley
这不是正确的方法。使用 new SecureRandom().nextBytes(key); 将会每次生成一个随机密钥,而你需要每次使用相同的密钥来加密和解密 Realm 数据库,否则它将抛出 RealmFileException 异常。 - Deep Lathia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接