针对多次访问尝试的SQLCipher安全性(Android)

时间:2014-08-04 00:08:00

标签: android sqlcipher

因此,CommonsWare书似乎建议(在位置30091)SQLcipher对用户复制数据库和手动尝试许多不同密码以猜测正确版本有很多保护。任何人都可以详细说明这些安全功能吗?数据库是否会在连续30次尝试之后锁定?

3 个答案:

答案 0 :(得分:4)

这是使用的加密类型。 SQL Cipher使用256位AES加密。这种加密形式对于强力攻击是极其安全的(即,通过尝试每个可能的值来编程地尝试猜测加密密钥)。

This article很好地描述了AES的安全性。为了量化这一点,文章指出:

  

如果你认为:地球上的每个人都拥有10台计算机。这个星球上有70亿人。每台计算机都可以测试1   每秒十亿个键组合。平均而言,你可以破解关键   在测试了50%的可能性之后。那么地球的人口   可以在77,000,000,000,000,000,000,000,000破解一个加密密钥   年!

答案 1 :(得分:2)

  

任何人都可以详细说明这些安全功能吗?数据库是否会在连续30次尝试之后锁定?

不,但默认情况下它使用64,000轮PBKDF2。引用the Wikipedia article on PBKDF2

  

PBKDF2将伪随机函数(例如加密哈希,密码或HMAC)与salt值一起应用于输入密码或密码短语,并多次重复该过程以生成派生密钥,然后可将其用作加密密钥关键是后续行动。增加的计算工作使得密码破解变得更加困难,并且被称为密钥扩展。

基本上,攻击者有两种选择:

  1. 尝试字典攻击等内容(例如,针对常用密码列表进行测试)。 PBKDF2轮次为每次检查增加了开销,因此除了最弱的密码之外,破解密码将花费过多的时间。

  2. 绕过PBKDF2开销并尝试直接使用生成的派生密钥进行攻击。在这种情况下,有太多可能的密钥要尝试,所以再次找到所需的密钥变得不切实际。

答案 2 :(得分:0)

详细描述了here的SQLCipher设计和安全功能。源代码也可用here进行审核。