它在页面级别加密SQLLite数据库,好吧没关系,没有错!
但你的源代码呢?它的编译,但即使它编译有人可以反编译它,检索你的密码和解密数据库?
答案 0 :(得分:2)
SQLCipher的安全性如何?
根据SQLCipher design documentation,它基于安全组件(AES,OpenSSL,HMAC_SHA1,PBKDF2,...)。如果这些说法是正确的,那对我来说听起来不错。
有点不寻常(对我来说,至少)是每页有一个随机的IV。这与典型的文件系统加密模式AES-XTS略有不同。 SQLCipher使用的设计具有优于AES-XTS的某些优势,例如,再次写入相同的数据 将不会产生相同的加密页面。但是,可能存在缺点,例如我不太确定使用SQLCipher是否可以移动或复制页面(将加密页面复制到另一页面)。这可能是不可能的,但是从设计文件中我看不出如何防止这种情况。如果使用非标准加密模式,则存在风险:-)但即使这是一个问题,它也不允许攻击者读取数据;它只允许某些类型的攻击。即使使用AES-XTS也可以进行某些类型的攻击,所以我不会太担心。
您的源代码怎么样?
为了保存,请不要将密码存储在代码中。相反,让用户输入密码,或将其存储在密钥链中。据我所知,这对于Android和iOS都是可行的,但我不知道细节。