
PKI 数字证书体系,做为现代信息安全的基石,直到今天以来,还被绝大部分网民朋友认为是绝对安全的,甚至是技术研发人员都认为使用了https,信息就是安全的,就可以放心地在网上冲浪。造成这种局⾯面的原因之⼀一在于高等教育在做知识传授时对知识结构体系设计不完整,只重正向工程,忽略了逆向工程。最直接的后果就是高校培养的⾼高材⽣生走向工作岗位后在使用相关技术时,对SSL 技术的安全优势,盲目乐观,⽆无意识地忽略该技术本⾝身的缺陷和由此导致的严重后果。
在移动互联网时代背景下,云技术和大数据已是大势所趋,⼈人类⽂文明正在进入DT时代,无数的移动终端随时随地都连接在云端,⼏几乎⼈人⼈人都拥有了智能手机,分分秒秒都在和云端进行着数据交换,⽽而数据一旦在传输过程中被泄露,⼏几乎都是没有任何感知的,如果泄露的是极度敏感的个人数据和金融数据,很容易造成社会恐慌情绪,影响互联⽹网经济发展的⼤大好前景。所以在这个时代背景下,IT解决方案的最重要的一条原则应该就是要保护好⼈人类的隐私和财富数据。很可惜的是,目前市面上的大部分金融类APP(涉及大银行、证券、P2P,保险等),都在数据传输方面存在安全隐患。
先来回忆两个事件
1.chrome删除cnnic root 证书
google 删除chrome浏览器信任的cnnic的ROOT证书,此事曾经引起激烈讨论。
2.eDellRoot
dell的笔记本电脑默认安装了dell签发的CA证书,而且把签发的根私钥一块存储在电脑里。保护根私钥的密码也非常简单,结果被安全⼈人员轻易破解密码。
这两个看似不同的事件,在本质原理是⼀一样的。原理是只要一个”流氓机构“拥有了私钥,就可以利用私钥,签发证书,而流氓机构签发的证书,很⼤大可能也是流氓的。但是因为我们的计算机信任了“根流氓机构”,所以计算机也信任了根流氓签发的流氓,导致流氓在悄无声息偷我们资料的时候,计算机也不会警告我们,任其刷流氓。这就是PKI系统的脆弱性,在该套体系中如果信任了其中任何一个根CA,那么由其颁发的证书,都会被无条件地信任,也就是说,如果一个CA是有问题的,那么由其发布的证书都是无法被信任的,即便电脑中其它的CA都是绝对值得信赖的,我们的电脑也是处在信息泄露的威胁之中,这就是这套系统的现状。
回头来看事件1,chrome为什么要删除CNNIC ROOT CA呢?CNNIC 又是一个什么样的组织呢? CNNIC是中国互联息中心,是中国互联网的主管部门,但同时又是中国的数字证书颁发机构,通过颁发证书挣钱的商业机构。主流的浏览器都默认信任CNNIC的CA 根证书,包括在此事件之前,chrome也是信任CNNIC的CA证书。chrome之所以删除CNNIC CA ROOT,是因为CNNIC 之下的一个二级证书颁发机构,颁发伪造了google⾝身份的证书,导致和google服务器的加密通信形同虚设(原因是有了伪造的证书,可以完全冒充google和用户通信,用户的行为被完全监控),站在google的角度,此类CA完全没有负起CA的责任,其并没有对颁发的证书做严格的审查,是不值得信任的,所以清除出chrome。
再来看事件2:如果非法人员拥有了eDellRoot私钥,其可通过ARP欺骗或者DNS欺骗,做中间人攻击,所有dell出品的电脑,只要被成功欺骗引流,通信就完全暴露在监控之下,⽬目前国内很多人都在用网银,网银密码,个人隐私数据,这些敏感数据都会暴露无疑。
这两件事都提醒我们,PKI体系是极度脆弱的,严重依赖CA的责任,和CA对私钥的完好保护。一旦CA不负责任(随意颁发证书),或者CA的私钥丢失,那么基于SSL提供的服务(电子商务,网络银行,生活服务等),都将失去安全防护。
值得注意的是:现在很多流行的服务(例如支付宝数字证书),在安装了客户端之后,都会偷偷在机器上安装其⾃自签名的根证书,其将会用于什么目的?我们不得不怀疑。
还有CNNIC管治下的著名的GFW(国家绿网),其完全可以在通信网络的各个节点上,通过其颁发的数字证书,非法利用,从而对整个网络通信情况进行监控,个人隐私,网络言论自由都将无从谈起,⼈人⼈人都将在网络的世界里裸奔。
既然网络安全的基础如此薄弱,我们该如何应对呢?
公钥私钥技术,在目前的计算条件下,本身还是值得信赖的,我们可以在此基础上构建我们的安全环境,可以从以下⼏几⽅方⾯面做起:
作为普通的网民,可以这么做:
1.把计算机中的IE,chrome,firefox等上网冲浪的浏览器中的根证书,进行检查,删除使用不到和莫名其妙的证书,让监控,偷数据的行为被浏览器警⽰示,使其无处遁形。彻底删除CNNIC ROOT CA,防止你的上网行为被非法的网络管理部门监控利用。彻底删除alibaba 根root,防止非法部门利用阿里的证书,进行监控和利用。彻底删除eDellRoot,方式非法黑客监控和利用。删除公司的根root,防止上网行为被公司所监控和利用。删除一切不明的root ca。
2.敏感信息和数据,一定要全程是https访问,防止被sslstrip 攻击。
3.当按照任何程序或者智能设备app时,禁止给予安装root ca的权限。
4.特别是在移动端,禁止root或者越狱破解设备,防⽌止权限过高,被偷偷按照根证书和后台程序
5.在访问极度敏感的服务时,尽量使用数字证书,进行双向认证,防止中间人攻击。
作为网络服务提供者,我们要尽最大努力为我们的客户和用户提供一个安全放心的环境来使用我们的服务,保护其隐私、财产和人身安全。在设计时,应当最悲观的估计用户所处的网络环境,要做到就算在最坏的网络环境下,也不会泄密。为达此目的,可考虑这么做:
1.对所用的服务器,网络协议,密码算法与时俱进,及时发现漏洞并修复
2.利用最新的密码学成果,使用AEAD 类型的算法,加密和签名同时进行,切忌加密和加签分开进行
3.app和云端通信过程中,都加密加签,并通过pinned方式使用内嵌的服务端公钥和自签名CA,通过自签名证书来验证服务器端证书,防止各种方式的中间人攻击
5.使用密码学算法时,不要自己创造,自己创造的基本都是有漏洞的,应使用成熟的算法和成熟安全的密码库
6.对极度敏感的数据,考虑建立隧道,建立自己的安全环境,然后进行通信
7.本地的敏感数据一定要加密,账号密码和秘钥一定要密文存放
8.移动端要加固,防止静态和动态反编译,防止动态打包
相信通过网民和网络服务提供商安全意识的加强和共同努力,在如火如荼的两创时代,我们会享受到越来越爽心悦目的安全放心的便捷服务!!!
