阅读 57

图解HTTP(06)——HTTPS加密

这是我参与更文挑战的第6天,活动详情查看:更文挑战

HTTP的缺点

通信使用明文(不加密),内容可能会被窃听

网络中的所有对象都可被窃听

无论世界哪个角落的服务器,在和客户端通信时,在此通信线路上的某些网络设备、光缆、计算机等都不可能是个人的私有物,所以不排除某个环节中会遭到恶意窥视行为。

0601.jpg

即使已经加密过的通信,也能被监控到,只是说加密过后的报文不容易被解析。

窃听相同段上的通信很简单,通过fiddler或者wireshark就能抓到数据包。

有两种方式加密通信

  1. 将通信加密

比如使用SSL或TLS建立安全通信线路

  1. 将报文加密

将报文加密以后就可以直接进行通信,但要求是客户端与服务器都能解密加密。但是这种方式信息可能会被篡改。

不验证通信方的身份,因此有可能遭遇伪装

任何人都能发起请求

0602.jpg

HTTP协议十分简单,不论是谁发送过来的请求都会返回响应,因此不确认通信方,会存在以下各种隐患。

  • 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的 Web 服务器。
  • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。
  • 无法确定正在通信的对方是否具备访问权限。因为某些Web服务器上保存着重要的信息,只想发给特定用户通信的权限。
  • 无法判定请求是来自何方、出自谁手。
  • 即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)。

查明对方的证书

使用SSL可以通过证书来确定通信方的身份。

证书由第三方机构颁发,很难伪造。

无法验证报文的完整性,所以有可能已遭篡改

中间人攻击

HTTP无法确认发出的报文和接收到的报文一定相同,发送过程中即使内容被篡改也无法意识到。

如何防止篡改

提供文件下载的网站一般都会提供这个文件的MD5码,下载文件后重新计算MD5就能辨别这个文件是否被篡改过。

HTTP+加密+认证+完整性保护=HTTPS

公开密钥加密技术

对称性密钥加密(共享密钥)

0604.jpg

意思就是加密和解密全部使用同一个密钥。但是这种方式就会存在一个问题:如何安全的发送密钥给客户端?

只要这个密钥泄露,那么加密就没有任何意义了。

非对称性密钥加密

0603.jpg

客户端使用公开的算法、公开的密钥进行加密,服务器端使用对应私有密钥进行解密,这样就能保证密钥的安全性。

使用混合加密机制

使用公钥加密要比使用共享密钥加密要慢一些,所以将两种方式结合起来,用公钥发送密钥,再用共享密钥传输数据。

证明公钥正确性的证书

用公钥加密还是会存在一个问题,就是无法验证公钥的正确性,这个公钥是否被篡改过呢?

为了解决这个问题,可以使用数字证书认证机构(CA)办法的公钥证书。

企业向这些机构提交信息,然后机构根据这些信息创建数字签名并办法证书。如何确保这个证书安全发送给客户端也是一个困难的事情,所以一些浏览器内置了许多证书。

客户端证书

通过客户端证书服务器能确定客户端的身份,但是客户端证书一般要收费,往往只有特殊行业会用到客户端证书,比如网银什么的。

认证机构是否靠谱?

2011年7月黑客攻击了一家认证机构篡改了google.com导致大量用户遭受损失。

文章分类
后端
文章标签