我阅读了很多关于 SqlCipher 的教程和主题,但我不明白我应该做什么!我的资产文件夹中有现成的数据库。我的数据库包含大约 4 个表和 5000 条记录。我想让它更安全。我该怎么做?有人可以帮我解决这个问题吗?由于我是 android 新手,我需要一步一步的解决方案。目前我使用 sqliteasset.SQLiteAssetHelper 库从 assets 文件夹中读取数据库。
问问题
656 次
1 回答
-4
不要将开发时间浪费在客户端数据的加密上——这些数据应该可以由应用程序以无人参与的方式访问(即应用程序在没有用户输入任何密码的情况下解密)。
以下是对我的陈述的解释:
让我们假设您设法通过一些加密密钥保护(加密)您的数据库,并且应用程序在启动时应该读取所有加密数据。这意味着您的应用程序应该具有解密所需的内置密钥。任何具有最少逆向工程知识的人都可以从您的 apk 文件中提取密钥和数据库并对其进行解密。
当您设计安全机制来保护数据时,您需要回答的第一个问题是:
- 对手需要花费多少时间来打开数据?如果您的回答类似于“暴力破解我的保护需要 10,000 年”,那么您的保护可能还可以。
但是现在你正试图通过默默无闻来实现安全性,并且它是更新的作品。确定的人可以轻松地从您自己的代码中提取加密密钥并几乎立即解密您的数据库。
当您设计客户端-服务器架构时,只有一种方法可以保护商业机密——将所有敏感的东西放在服务器端。
如果您的客户端应用程序依赖于一些业务敏感信息(例如使用您自己的 API 密钥调用一些付费 API),那么您的应用程序存在设计缺陷。
如果您的应用程序依赖于对业务不敏感的信息,那么加密这些信息是没有意义的。
于 2019-12-26T07:04:36.127 回答