gpt4 book ai didi

android - 如何在 Android 中保护我的加密 key ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:51 24 4
gpt4 key购买 nike

我在我的 Android 应用程序中实现了 SQLCipher 以确保它的数据库安全。 SQLCipher 需要一个 key 来加密数据库文件。我面临的问题是 key 保护,如果我的应用程序在 Root设备上使用或被反向工程,那么我的 key 将被暴露并且数据库可以被解密。

请注意,我的应用程序不会在用户每次打开时都要求输入密码,因此用户输入的密码不能用作 key 。我想实现像 facebook、whatsapp 应用程序这样的行为,它使用私钥/ key 加密数据而不询问任何密码,并让用户始终保持登录状态。这些应用程序在哪里以及如何存储它们的 key ?

请提出保护 key 的解决方案/算法。此外,Android 操作系统是否提供任何此类数据保护/管理功能?

最佳答案

您可以使用 Andriod Keystore 来加密您的 SQLCipher 密码。

我前段时间遇到了同样的问题,SQLCipher 用于保护数据,但密码本身不是。这导致了一个安全漏洞,即简单的反编译会显示字符串常量形式的密码。

我的解决方案是:

  • 在应用首次启动时生成一个随机数。 (您可以根据自己的需要更改此行为)
  • 使用 Android Keystore 加密此号码。
  • 一旦加密,数字的原始形式就消失了。
  • 将其保存在 Prefs 中。
  • 现在,只要 SQLCipher 需要密码,它就会解密并使用它。
  • 由于 Android Keystore 在运行时提供 key ,并且 key 严格特定于应用程序,因此很难破坏此数据库。
  • 虽然一切都可能被破坏,但这种方法将使攻击者更难从数据库中检索数据或数据库密码。

这是我制作的示例项目,它也有一个与您相同的 SQLCipher 用例。

Encryption Helper for Encrypting Passwords

Use case for SQLCipher

请注意,您用作加密 key 的术语在上述讨论中用作 DB 的密码/编号。

关于android - 如何在 Android 中保护我的加密 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49145592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com