安全科普:加密不是安全的一切

搞数学的往往迷信于只需要加密与算法就能解决一切安全问题.可事实是攻击者并不是在算法层和你对抗,代码,实现,逻辑和协议流程,配置,意识的漏洞无所不在.比如在网上经常看到一些对加密算法比较了解的人,觉得在公开接入的无线环境下通过HTTPS协议可以确保安全的看法就是如此.现有的网络协议,基本上实施中间人比较容易,同名欺骗/ARP欺骗/DHCP欺骗都可以做到在客户端实施中间人,还有通过邮件/IM/WEB等方式实施中间人.且不说加密协议的加密算法强度如何不可攻破,随便说几种攻击可能:

1)基本所有HTTPS站点都很少是直接HTTPS,用户习惯大多是通过站点主页点选或通过搜索引擎点选上去的.这些页面并非HTTPS而是明文可直接篡改的.中间人直接篡改这些页面指向HTTPS的URL到自己的钓鱼站点,放置自己证书,模拟正常页面行为,可以窃取用户敏感信息,劫持用户操作.

2)如果直接通过HTTPS URL访问而且所有资源都使用HTTPS,但是服务器端证书首先是通过明文下载到客户端,攻击者可以实施中间人替换自己的证书到客户端然后实施劫持.当然浏览器端会有提示但大多数普通用户不会注意到直接会确认.

3)另外网银客户端网盾主要用于签名关键交易.如果自身处理设计不好,一是没有防范回放攻击.二是一些交易要素可能并没有签名.比如我们实施安全测试服务的一家手机充值支付厂商就没有对手机号做签名.中间人篡改手机号后可以修改充值到别的手机上实施交易.

4)HTTPS协议的实现也可能存在很多问题.协议过程实现的问题可以参考技术文档:关于BEAST攻击:http://www.2cto.com /Article/201109/106046.html 还有分组加密的算法实现也可能导致一些问题,例如参考文档http://www.2cto.com/Article/201109 /105505.html和www.2cto.com/ebook/201109/29585.html

5)代码自身的安全漏洞,有客户端证书的应用需要实现浏览器本身不支持的功能,大都采用了ACTIVEX控件这样的技术,在我们的测试中,这些控件大多存在安全漏洞.2010年我们测试国内提供证书用于金融交易处理的activex组件,70%都存在本地文件创建漏洞,攻击者直接可以种马到客户端.加密算法再坚固一万倍又如何?就算加密算法和加密实现都无懈可击,可他也最多只能保证信息在传输和存储时的安全,用于处理和使用信息的程序自身不安全也是白搭, 所谓皮之不存毛之焉附,强调加密算法安全没错,但以为这就万事大吉了,就能让攻击者成本高于攻击收益了,只能说太天真了.

安全不是想的这么简单的事,被黑客远程成功入侵的防护严密的重要客户不少,如GOOGLE,SYSMENTEC,伊朗物理隔离的核电站,美国能源部,美国国防军火承包商,花旗银行等等,连他们都不能幸免.如果只靠加密算法就能保证安全,也不会连RSA这种以加密产品著称的顶级公司于2011年3月份也被APT攻击入侵,用于多个重要部门的高端加密产品SecureID的加密种子都被窃取,当时RSA还不肯承认损害(www.2cto.com/News/201103 /85778.html),直到导致使用SecureID产品的重要客户也被入侵才承认.之后RSA彻底研究了APT攻击之后写出了<当APT成为主流>的报告在2011年的RSA大会上发布,得出甚至比我们都还悲观的结论:认为APT入侵当前防护体系不可能防住,强调以后要侧重被入侵之后能及时发现的能力,因此企业防护策略也要调整不再强调全面保护而是收缩只防护重点资产等(英文原文http://www.rsa.com /innovation/docs/SBIC_RPT_0711.pdf)

美国已经将网络划为第5空间,将网络安全战略已上升成国家安全战略,截止2008年美国因为网络安全导致的被窃取的信息资产损失达1万亿美圆,国土安全部在招聘启事中提出, 申请者应能够“像恶意攻击者那样思考”,同时掌握黑客的常用技术,熟悉网络运行原理并能迅速判断政府网络系统的“薄弱之处” (http://wenku.baidu.com/view/fa18afb069dc5022aaea00e7.html).可见系统的“薄弱之处”才是IT系统面临的最大的安全问题而不仅仅只是加密算法强度的问题.

当然,如何降低安全成本又能大幅度提高攻击者成本同时还要尽量减少用户的易用性损失是安全必须要考虑的,但当前的现实是,单纯依靠加密类产品,并没有很大幅度提高攻击者成本,精通数学的黑客并不多,但能找到安全漏洞的人相对就多多了,而且这些漏洞在我们应用中比比皆是,攻击者不需要付出不可承受的成本就能找到,就无须去从解密上去对抗算法.

安全行业肩负的使命还很重,要走的路还很长