不做https有效性检查引发的安全问题
发布日期:2016-03-08https是一种基于SSL证书的安全加密传输协议,使用https加密协议可以认证网站服务器真实身份和加密网站传输数据,比当下的http协议更加安全。然而在https实际应用中,有部分网站、系统使用的却是自签名https证书(延伸:使用自签SSL证书有什么风险),并且只是简单的调用,并没有做https有效性检查,这将产生严重的安全漏洞,给恶意攻击者有机可乘。
https有效性检查的必要性
部分网站、系统开发者在开发过程中为了解决https证书报错的问题(使用了自己生成了证书后,客户端或浏览器发现证书无法与系统可信根CA形成信任链,出现了 CertificateException等异常。),会在客户端代码中信任客户端中所有证书的方式。而在客户端中覆盖google默认的证书检查机制(X509TrustManager),并且在代码中无任何校验https证书有效性相关代码。这样会引发一个问题:
如果用户手机中安装了一个恶意证书,那么就可以通过中间人攻击的方式进行窃听用户通信以及修改request或者response中的数据。
中间人攻击过程
1 客户端在启动时,传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。
2 中间人在此过程中将客户端请求服务器的握手信息拦截后,模拟客户端请求给服务器(将自己支持的一套加密规则发送给服务器),服务器会从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给客户端。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3 而此时中间人会拦截下服务端返回给客户端的证书信息,并替换成自己的证书信息。
4 客户端得到中间人的response后,会选择以中间人的证书进行加密数据传输。
5 中间人在得到客户端的请求数据后,以自己的证书进行解密。
6 在经过窃听或者是修改请求数据后,再模拟客户端加密请求数据传给服务端。就此完成整个中间人攻击的过程。
防护中间人攻击办法
使用CA机构颁发的受信任的https证书可以很好的应对,CA机构属于合法第三方https证书签发机构。通过国际WebTrust认证的CA比如沃通CA的根证书都内置到了各大浏览器证书库,全球通用,支持所有浏览器,能够有效的验证证书的合法性。为了网站、系统的安全,建议使用合法第三方CA机构签发的受浏览器及操作系统信任的https证书。
文章链接:http://www.wosign.com/FAQ/faq2016-0308-01.htm
关键词:https有效性检查
本文来源于互联网,本站所有转载文章言论不代表本站观点。