昨天公司给我们进行了高级的安全培训,对一些技术细节理解的更加透彻了。
对Https的运行原理更加了解了,Https是保护Client端的利益的,当然也保护传输的安全;Https是非对称加密+对称加密结合起来用的,因为非对称加密的运算很耗CPU,所以一直用会导致通讯效率极低。
1、Https为什么安全?
1.1、Https安全是相对Http不安全而言的,Http是明文传输的,别人只要监听数据包就能看到里面的内容,比如银行卡密码。举个例子就是,A给B寄信,用Http协议的话,邮递员就可以打开信里面的内容,甚至给信改了,B都不知道。但是用Https协议的话,就相当于把信加密了,邮递员再打开时也看不懂写的是啥,好像老中医开的处方一样。
2、Https技术原理简介
2.1、 Client向服务器发送一个Hello,服务器端回一个Hello
2.2、服务器将证书发给Client,证书中包含公钥,这里命名成公钥2。
2.3、Client拿到此证书后,去操作系统本地验证此证书是否合法有效的,如果无效,浏览器上会提示用户是否继续。如果有效,利用公钥2生成【会话密钥】,服务端根据私钥解密【会话密钥】。
2.4、Client发送业务数据,用会话密钥加密,这样即使被捕获,也是看不懂的。
示意图如下:
3、关于CA证书
3.1、服务器需要提前准备好一对公私钥,可以用sshkeygen生成,将这对公私钥给CA,他就会生成证书给你用了。
4、加HSTS
利用浏览器的特性,强制客户端采用HTTPS,避免了首次用户用http访问网站被ISP域名劫持加广告。
注意:
1、用Https,别人一样可以对你进行抓包的,只是看不懂罢了。
2、但是如果是在客户端本地,可以提前导入服务器的证书,这样一切的【会话密钥】都是知晓的,所以可以解密里面的内容。利用这一点,就可以修改订单金额之类的进行欺骗。从这个角度上而言,可以理解Https不是万能的,千万不要以为用了Https就鸡毛当令箭了。
3、ISP劫持http网站易如反掌,因为它能拿到response的值,在html里面嵌入一段脚本非常容易,用https它就劫持不了了。但是像淘宝、百度这些网站为了保持用户体验,用户首次输入http://taobao时,也会被ISP劫持。