- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要将敏感数据存储在 android 应用程序的 sqlite 数据库中。
我如何确定这些数据非常安全?我知道我可以使用 key 来加密数据,但是我应该将 key 存储在哪里?我也不想要求用户填写 key ,我只想让它自己工作。因为我害怕逆向工程,所以我也不想在代码中放置加密 key 。
我发现了 SQLCipher .它说这是一种非常安全的加密数据库数据的方法,但为什么要这样呢?难道我不需要保留一把 key 来解锁这些信息吗?或者这真的是确保数据安全的完美方式吗?
如果不是,什么是(几乎)在 sqlite 数据库中存储敏感数据的防故障方法?
最佳答案
你说...
I don't want to ask the user to fill in a key either, I just want it to work on it's own. Because I am afraid of reverse engineering I don't want to put an encryption key in the code either.
不幸的是,您需要做其中一件事情(嗯,很可能)。您可以要求用户输入密码,然后使用为此目的设计的算法(称为基于密码的加密 - PBE - Android 包含一些良好的 PBE 算法标准)从中派生 key 。您可以将 key 存储在您的代码中或作为资源存储在您的 APK 中,但随后有人可以对其进行逆向工程。你可以这样做并混淆你的代码,这会减慢逆向工程过程,但你不能让它变得不可能(你的代码将需要在某个时候确定 key 所以这只是攻击者弄清楚它是如何做的问题它)。
这里尝试过的其他方法包括强制您的客户端连接回服务器以通过网络检索 key ......但是如果网络连接中断会发生什么以及什么阻止服务器将 key 提供给任何人,比如攻击者?好吧,那么您可以使用相互验证的 SSL 来确保只允许您的客户端获取它……但是您需要存储客户端 SSL 私钥……这与您现在遇到的问题完全相同。 :)
所以...底线是您需要一个 key (或类似的东西)来加密/解密数据。您可以存储它,让别人更难对其进行逆向工程。您可能会给用户带来不便并让他们输入密码。但是......你不知何故需要那些 secret 知识。
关于Android - 在sqlite数据库中存储敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515057/
我正在遍历自定义数据对象列表,并以可分页的格式将数据输出到屏幕。每个项目都需要提供编辑详细信息(重定向到另一个 View )和删除数据的能力。为此,我需要传递某种 id 来标识将要更新或删除的记录。我
我们正在使用 React-Native 构建移动应用程序,需要将一些敏感数据(例如客户端 key /密码)嵌入到移动应用程序本身中。 在安全性方面(最难进行逆向工程),标准做法是什么?数据应该在 na
我们已经知道使用 char[] 而不是 String 来处理敏感数据的建议/做法。有多种原因。一种是在不再需要敏感数据后立即清理它们: char[] passwd = passwordProvider
我有一些敏感数据想在使用后直接清除。目前,敏感数据的形式是 NSString。 NSString 在我的理解中是不可变的,这意味着我无法真正清除数据。不过,NSMutableString 似乎更合适,
我想知道如何推送到我的 Github 存储库(我需要公开该存储库,以便向雇主展示),而不显示敏感信息。我正在使用 Eclipse/Java。 我制作了一个在 Chrome 中使用 Selenium w
我是一名优秀的程序员,十分优秀!