它以页面级别加密SQLLite数据库,这很好,没有什么问题!
但是你的源代码怎么办?虽然它被编译了,但即使它被编译了,有人也可以反编译它,检索出你的密码并解密数据库吗?
它以页面级别加密SQLLite数据库,这很好,没有什么问题!
但是你的源代码怎么办?虽然它被编译了,但即使它被编译了,有人也可以反编译它,检索出你的密码并解密数据库吗?
SQLCipher有多安全?
根据SQLCipher设计文档,它基于安全组件(AES、OpenSSL、HMAC_SHA1、PBKDF2等)。如果这些声明是正确的,那听起来很不错。
有点不寻常的是(至少对我来说),每个页面都有一个随机IV。这与典型的文件系统加密模式AES-XTS有所不同。 SQLCipher使用的设计相对于AES-XTS具有某些优点,例如再次写入相同的数据不会导致相同的加密页面。但是,可能存在缺点,例如我不确定是否可以移动或复制页面(将加密页面复制到另一页)。也许不可能,但是从设计文档中我看不出如何防止这种情况。这就是使用非标准加密模式的风险 :-) 但即使出现这种问题,攻击者也无法读取数据;它只允许某些类型的攻击。即使使用AES-XTS,仍然可能发生某些类型的攻击,所以我不会太担心。
你的源代码怎么样?
为了保持安全,请勿将密码存储在代码中。相反,让用户输入密码或将其存储在密钥链中。据我所见,这对于Android和iOS都是可能的,但我不知道细节。