【问题标题】:Android Realm database SecurityAndroid Realm 数据库安全
【发布时间】:2016-06-14 11:04:22
【问题描述】:

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

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

【问题讨论】:

    标签: java android database security realm


    【解决方案1】:

    通过将 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 是在运行之间安全处理存储密钥的另一个不错的选择。
    • 这不是正确的方法。使用new SecureRandom().nextBytes(key); 每次都会生成一个随机密钥,而您每次都需要使用相同的密钥来加密和解密 Realm 数据库,否则它会抛出一个 RealmFileException
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2018-02-02
    相关资源
    最近更新 更多