【问题标题】:How should I encrypt data for Couchbase-Lite for Android?我应该如何加密 Couchbase-Lite for Android 的数据?
【发布时间】:2015-07-03 06:41:44
【问题描述】:

我正在开发一个使用 Couchbase-Lite (1.1.0) 的 Android 项目,要求所有数据(文档本身和任何 Couchbase 附件)在存储之前都经过加密。

我最初设想使用 SQLCipher 之类的东西加密整个数据库文件,但我一直无法找到一个简单的实现(我知道 iOS 的 Couchbase-Lite 实现使用这种方法,但 Android 构建有点落后),所以我的计划是在将文档(JSON 表示)和附件(流)保存到 Couchbase-Lite 数据库之前对其进行加密。

我的问题: 对这种加密有什么建议?什么方法/库?我假设是 AES-256,但我应该自己构建还是使用 3rd 方库(有什么建议)?

在设备中维护密码短语的最佳方法是什么,比在应用程序中硬编码更安全(这真的非常糟糕)?

有没有人看到类似的东西(我的谷歌搜索能力让我兴奋不已)可以指出类似的用例?

谢谢!

【问题讨论】:

标签: android encryption couchbase-lite


【解决方案1】:

使用现有的 AES 库。要么使用带有 HMAC 的 CBC 模式来检查真实性,要么使用像 GCM 这样的自检模式。并非所有图书馆都有 GCM,因为它是较新的。

将密码写在一张纸上,并将其保存在上锁的抽屉中。那是不可破解的。需要时输入。使用完后立即清除内存。或者,把它放在记忆棒上,然后把它锁在抽屉里。您仍然需要清除内存。定期更改密码。是的,这确实意味着用旧密钥解密整个数据库并用新密钥重新加密。在您的每日/每周/每月/任何日程安排中留出时间来执行此操作。就在备份好之前。将旧密码安全地离线保存,或许可以放在保险箱中,以防您需要重新获取密钥以恢复旧备份。

查看一个好的密钥派生函数,如 HKDF(来自 RFC 5869),以从您的密码中派生实际密钥。

这是加密货币,它复杂的。以前都做过,所以你需要坚持久经考验的方法。

【讨论】:

  • 感谢您的提示 -- 我会进行更深入的研究,看看我能想出什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多