【问题标题】:Compile Android SQLite with different encryption/codec使用不同的加密/编解码器编译 Android SQLite
【发布时间】:2013-03-13 18:33:12
【问题描述】:

我正在尝试使用加密/编解码器(例如 wxSQLite 或 Libtomcrypt 中的那个)编译 SQLite(启用 SQLITE_HAS_CODEC),以便生成的结果将提供加密的 SQLite 数据库。

但由于 Android 安全模型实施了安全沙盒策略,其中任何应用都无法读取其他应用数据,因此生成的 SQLite(使用加密构建)是否可以透明地与所有应用一起使用并避免安全沙盒策略,或者您需要配置每个项目分开以便它可以将加密数据保存到 SQLite?

我的意思是它会加密来自所有应用程序的数据以存储在 SQLite 数据库中,或者它仅适用于需要配置的一个项目。

谢谢。

【问题讨论】:

    标签: android encryption sqlite


    【解决方案1】:

    我正在尝试使用加密/编解码器(例如 wxSQLite 或 Libtomcrypt 中的那个)编译 SQLite(启用 SQLITE_HAS_CODEC),以便生成的结果将提供加密的 SQLite 数据库。

    我建议您使用SQLCipher for Android,它已经为您完成了所有这些工作。

    生成的 SQLite(使用加密构建)是否可以透明地与所有应用一起使用并避免安全沙盒策略

    没有。

    您可以创建自己的 ROM 模块,将标准 SQLite 替换为启用加密的模块。但是,没有应用程序实际上会使用加密,因为它们不会要求用户输入密码并使用它。虽然您可以说您将使用硬连线密码,但您并没有添加任何安全性,因为任何人都可以获取该密码,然后使用它来解密数据库。

    或者您需要单独配置每个项目,以便它可以将加密数据保存到 SQLite?

    是的,更重要的是,每个项目都需要向用户询问密码。

    【讨论】:

    • 我有兴趣创建我自己的 ROM 模块,它可以提供启用加密的 SQLite。因此,如果我们可以通过某种方式解决密码短语问题(我承认这是一个复杂的方式),是否有办法让生成的 SQLite 能够透明地加密来自不同应用程序的数据。或者,我们是否可以通过修改Android架构的某些部分来启用它,或者没有办法,因为它与Linux内核层完全相关。
    • @user2139641:“有没有办法让生成的 SQLite 能够透明地加密来自不同应用程序的数据”——只要您修改后的 SQLite 不会更改框架代码使用的任何公共接口(例如,SQLiteDatabase),框架代码和写入该框架代码的应用程序不应受到影响。但是,我远非这种固件修补方面的专家。
    【解决方案2】:

    您可以将数据库写入 SD 卡/外部存储,因此其他应用可以读取它,如果他们知道路径。或者你可以提供一个库来完成它。

    【讨论】:

    • 我认为 SD 卡不如内部存储安全,它可以随时删除,让您的应用程序没有数据库数据。我更喜欢针对保存在内部存储中的原始 SQLite 数据库。无论如何感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2021-12-10
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多