1.http协议的一些缺点&解决方案
1.传输的数据没有使用加密算法,导致数据在传输的过程中可能会被第三方的用户窃取。
解决方案:
a.通信的加密:http协议和ssl(安全套接层)或TLS(安全层传输协议)的组合使用,实现方式为在客户端和服务器建立一条安全的通信线路。

b.内容的加密
对传输的内容使用加密算法,在进行传输前,先将待传的http报文进行加密处理后在进行发送。这种方式实现的前提是,客户端和服务器同时需要具备加解密机制,但由于未使用一条安全的通信线路,所以数据在传输过程中仍然存在被篡改的可能。
2.tcp协议仅保证数据完整无误的传到通信的双方,但不会去校验双方的身份,有可能会遭遇身份的伪装,导致数据传输到不正确的接收方,例如一些涉及到支付类的相关业务下,易造成金额上的损失
解决方案:
SSL不仅提供加密处理,而且还可以用到证书,可以用来鉴别通信双方的身份。客户端持有证书可以完成个人身份的认证,可用于web服务器验证请求方的身份;服务器端有证书,可以保证http报文是传到自己想传的服务器上,减少个人信息被泄漏的可能性。
注:证书由值得信任的第三方机构颁发,伪造证书从技术角度来说是异常困难的一件事。
3.传输的过程中,内容有没有可能被他人篡改无法保证
解决方案:
使用md5和sha-1等散列值校验的方法对http报文进行加密处理,但使用这些加密算法也无法百分百保证内容未被篡改。
通过以上这些解决方案的整理,可以采用http+ssl的方式来进一步保证传输内容的安全性。
2.https的工作原理
1.https的工作层级

https不是一种新的协议,只是将原来的http协议直接和tcp通信,变成http协议先和ssl协议通信,再由ssl协议和tcp通信。
注:ssl协议是独立于http协议的,其余应用层上的协议如FTP协议也可以结合ssl协议使用,提高数据传输过程中的安全性。
2.https采用的加密技术
目前加密算法都是公开的,但密钥可以根据业务方来进行选择,从而保证加密算法的安全性。
共享密钥加密
加密和解密共用同一个密钥的方式叫做共享密钥加密。
优点:传输速度快
缺点:无法保证密钥在传输过程中不会被窃取
公开密钥加密
公开密钥加密使用一对非对称的密钥,一把叫做私有密钥,一把叫做公开密钥。具体实现方式:发送密文的一方使用对方公开密钥对http报文进行加密处理,对方收到加密后的http报文后,再使用自己的私有密码进行解密。传输的过程中不需要传输用来加密的密钥,从而减少密钥被他人窃走的可能性。
优点:根据密文和公开密钥对传输的内容进行解密的可能性很低,同时也能进一步有效避免数据在传输过程中被篡改的可能性。
缺点:传输速度慢
基于以上两种方式的优缺点,先通过公开密钥方式将共享方式中的密钥进行传输,完成传输后,再使用共享方式中的密钥对http报文进行加密。具体见下图方式:

3.https的证书
使用公开密钥加密的方式,需保证使用的公开密钥就是来自于相应的web服务器发行的公开密钥,此时就需要用到证书,确保web服务器的公开密钥是真实有效的,保证通信双方的身份。
4.整个https的通信过程

具体通信步骤如下:
a.客户端和服务器首先通过ssl协议中的证书确保通信双方身份的正确性
b.确认了双方的身份后,客户端取出服务器端公开密钥,对共享密钥(master secret)进行加密处理,生成随机数(pre-master secret)传递给服务器
c.服务器端接收到随机数(pre-master secret)后,使用自己的私钥解密后得到共享密钥(master secret)
d.客户端将http报文使用共享密钥(master secret)进行加密处理后传到服务端
e.服务器接收到加密后的http报文后,使用c步骤中得到的共享密钥对报文进行解密,完成了http报文的响应后再通过一样的方法回传给客户端
f.整个https通信过程结束
注:采用https协议,应用层发送http报文的时候会附加一种Mac的报文摘要。可以通过Mac查阅报文是否被修改,从而保证报文的正确性。
网友评论