读书频道 > 安全 > Android应用程序安全
5.3.2 密钥生成
2013-11-15 14:56:50     我来说两句 
收藏    我要投稿   

本文所属图书 > Android应用程序安全

本书是一本系统讲解Android应用开发安全的书籍。它首先介绍了Android系统的架构和安全机制,然后详细说明了Android应用中存在的安全风险,并提出如何实现相应的安全控制以保护用户的私密信息。同时,本书还深入讲  立即去当当网订购

密钥是密码学的一部分。许多现代密码算法都需要一个密钥才能正常工作。在第2章的例子中,我使用了一个伪随机数生成器(PRNG)来产生加密密钥(请参考清单5-1)。这里我建议的一个基本准则是永远选用算法支持的最大密钥长度。只有当测试的时候发现程序运行得很慢,我才会减少到下一个可以接受的密钥长度。在密码学里,你总是希望使用算法所支持的最大密钥长度,因为这样可以使得对你的密钥的暴力破解变得更难。

为了说明这个道理,我们假设你选择了长度为16bit的密钥。这就意味着一个攻击者仅需尝试216=65536次就可破解你的密钥。但是如果你选择的是长度为256bit的密钥,攻击者不得不尝试2256=1.16e77次才能破解你的密钥,这可能需要几年时间才能完成。当然了,随着计算机计算能力的提高,这个时间也会缩短,在所有的密码学领域都是这样。因此,长密钥和强算法可以保证攻击者不能轻易地破解你的密文。

在多数情况下,加密后的数据对于那些追求容易破解程序的攻击者来说是种威慑。与其花很多时间来破解你的密码,还不如寻找下一个容易攻击的目标——当然这个前提是你的数据的价值没有超过攻击者愿意花在破解你的密码上的时间、精力和资源。

注意 对密钥和密码的暴力破解就是攻击者尝试着不同的字母组合,如A~Z、a~z、0~9及特殊字符,来猜用户正确的密码。因为他尝试了所有的组合方式,所以最后很可能会猜出正确的密码。

我知道一些程序员觉得加密密钥等同于密码,严格来说,这并不正确。在我们的密钥生成的例子里,我们使用了一个256bit的随机数。尽管用户密码也可以成为密钥,但我不建议这么做,一个原因就是用户的密码的长度通常都不会超过10~12字节,甚至不到32字节(256bit/8=32字节)的一半。既然我们知道了暴力破解的概念,那么我们应选取算法允许的最大密钥长度。

清单5-1 密钥生成算法

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:5.3.1 对称加密算法
下一篇:5.3.3 数据填充
相关文章
图文推荐
2.9.3 静态可信根与
2.8 远程管理
2.7.6 微内核中的安
2.7.3 直通技术
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站