1.HTTP缺点
1)通信是以明文方式,内容可能会被监听。
2)不验证通信方的身份,因此可能遭遇伪装
3)无法证明报文的完整性,所以可能遭遇篡改
因此HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
2.HTTPS
1)概念:
HTTPS:HTTPS其实就是建构在SSL/TLS之上的 HTTP协议被称为HTTPS超文本传输安全协议
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
2)加密算法:
主要的加密方法分为两种:一种是对称加密算法,一种是非对称加密算法
1.对称加密算法:加密与解密使用同一个密钥(AES,DES,3DES)
在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。也就是说在加密的同时,也会把密钥发送给对方。在发送密钥过程中可能会造成密钥被窃取
也就是说在加密的同时,也会把密钥发送给对方。在发送密钥过程中可能会造成密钥被窃取
2.非对称加密算法(RSA):非对称加密算法使用一对非对称密钥。一把叫私有密钥,另一把叫公开密钥,私有密钥不让任何人知道,公有密钥随意发送。
用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密。也就是说,发送密文方使用对方的公开密钥进行加密,对方接受到信息后,使用私有密钥进行解密。
3)HTTPS算法
HTTPS采用非对称加密算法和对称加密算法两者混合加密。
两者都有各自的优点,对称加密算法处理速度快,但密钥无法安全发送给对方;非对称加密算法处理速度慢,但密钥能够安全交换。
将两种加密方式一起使用,则两种加密方式就能互补。
生成一个对称加密算法的密钥, 用非对称加密的方式安全发送,随后就不用非对称加密了, 只用这个密钥,利用对称加密来通信。
证明收到的公开密钥是原本预想那台服务器发行的密钥,有数字证书认证机构和相关机构颁发的公开密钥证书就可以确定公开密钥是否正确了。
4)HTTPS的工作原理
1》客户端发送client hello报文开始SSL通信。报文中包含客户端吧支持的SSL的指定版本,加密组件列表(所使用的的加密算法及密钥长度等)
2》服务器可进行SSL通信时,会以Server hello报文作为应答,在报文中包含SSL版本以及加密组件。服务器的加密组件是从客户端加密组件筛选出来的
3》服务器发送Certificate(证书)报文。报文中包含公开密钥证书
4》最后服务器发送Server hello done报文通知客户端,最初阶段的SSL握手协商部分结束
5》SSL第一次握手结束之后,客户端以client key exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用3中的公开密钥
6》接着客户端继续发送Change Cipher Spec(更改密码规格)报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密
7》客户端发送Finished报文。该报文包含连接至今全部报文的整体效验值。这次握手协商是否成功,要以服务器是否能够正确解密报文作为判断准则。
8》服务器同样发送change cipher spec(更改密码规格)报文
9》服务器同样发送Finished报文。
10》服务器和客户端的Finished报文交换完毕后,SSL连接就算建立完毕。从此处开始应用层协议的通信,即HTTP请求
11》HTTP响应
12》最后客户端断开连接。
在以上过程应用层发送数据会附加一种叫MAC的报文摘要,能够查知报文是否遭到篡改,从而保护报文的完整性。