它在页面级别加密 SQLite 数据库,好吧,没问题!
但是你的源代码呢?它已编译,但即使已编译,有人也可以反编译它,检索您的密码并解密数据库吗?
SQLCipher 的安全性如何?
根据SQLCipher设计文档 http://sqlcipher.net/design/,它基于安全组件(AES、OpenSSL、HMAC_SHA1、PBKDF2,...)。如果这些说法是正确的,那对我来说听起来不错。
有点不寻常的是(至少对我来说),每页有一个随机 IV。这与典型的文件系统加密模式有些不同AES-XTS http://en.wikipedia.org/wiki/Disk_encryption_theory#XEX-based_tweaked-codebook_mode_with_ciphertext_stealing_.28XTS.29。 SQLCipher 使用的设计比 AES-XTS 有一定的优势,例如写入相同的数据again不会产生相同的加密页面。但是,可能存在缺点,例如我不太确定使用 SQLCipher 是否可以move or copy页面(将加密页面复制到另一个页面)。这可能是不可能的,但是从设计文档中我看不出如何防止这种情况。如果使用非标准加密模式,这就是风险:-) 但即使这是一个问题,它也不允许攻击者读取数据;它只允许某些类型的攻击。即使使用 AES-XTS,某些类型的攻击也是可能的,所以我不会太担心。
你的源代码呢?
为了保存信息,请勿将密码存储在代码中。相反,让用户输入密码,或将其存储在钥匙串中。这对于双方来说都是可能的Android http://developer.android.com/reference/android/security/KeyChain.html and iOS https://stackoverflow.com/questions/16459879/how-to-store-a-string-in-keychain-ios据我所知,但我不知道细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)