因为HTTP是明文传输,是可以被别人恶意劫持http请求包,并篡改其中的数据的,相当于裸奔,危险性不言而喻。HTTPS为了解决这个问题,在HTTP协议基础上加上了SSL/TLS层。它能够防止我们的信息被窃取,同时及时的判断出不良网站。
SSL层的目的
-
保证你是在跟真正的服务器通信,而不是伪装的服务器.
-
保证只有真正的服务器才能解密你发送的信息.同时,也只有你才能解密服务器跟你发送消息.就是保证是你跟真正的服务器在通信,这过程中没有第三者.
在这过程中,其他人还是可以中途截取到你发送的信息,但是是加密的,它们拿到也无法解密.
加密方式
加密方式有两种:对称加密、非对称加密。
- 对称加密
对称加密的原理:加密算法是公开的,但是加密算法所需要借助的密钥不是公开的。使用密钥加密,那就得用相同的密钥解密。
常用的对称加密算法:DES、3DES、AES
对称加密优点:计算量小,加密解密速度快,适合加密比较大的数据
对称加密的缺点:密钥容易泄漏,每个用户都要有不同的密钥,服务端管理必要每个人的秘钥也比较麻烦。
TIP:
对称算法,因为解密和加密都需要相同的密钥,所以为了让服务端知道密钥是什么,客户端就必须在发送加密数据之前向服务端传递密钥。此时密钥还是经历了网络传输,如果黑客劫持了密钥,黑客也可以将数据解密,因此对称加密算法并不可靠。
另外,每个人的密钥都不能相同,如果相同,那么密钥就同样会被发现,不同的用户只需要发送任意请求就可以获取这个‘公用的’密钥,密钥也就不再秘密了。
- 非对称加密
非对称加密原理:算法公开,有一个公钥(public key)和一个私钥(private key)
公钥加密只能私钥解密
私钥加密只能公钥解密
加密和解密使用不同的钥匙,所以称之为非对称加密。
非对称加密算法:RSA
非对称加密优点:加密和解密都是用不同的钥匙,可以传输公钥,数据传输是安全的。
非对称加密的缺点:计算量大,加密和解密的速度比较慢。
TIP:
公钥和私钥都不是随机生成的,而是经过算法计算而来的超长字符串,之所以安全是因为只有拿到公钥和私钥才能机密所有数据,但是私钥是存在服务器端,永远都不会经历网络传输的过程。别人即使通过劫持拿到了公钥也无法解密由公钥加密的数据。
HTTPS的实现原理
- 思维导向
之所以谈对称加密和非对称加密这两种加密方式,是因为我们需要认识到两种加密方式的优点和缺点。对称加密由于算法简单,而且会在传输的时候暴露公钥,所以速度更快,但是更危险。非对称加密由于算法复杂,传输时只暴露了无法解密客户端数据的公钥,所以速度更慢,但更安全。https为了实现安全、快速的传输,他设计了一套十分可靠的传输方案,
也就是融合了非对称加密和对称加密两种方式,让他们优势互补,从而实现安全可靠。
对称加密的特点是快速,用同样的密匙去解密和加密,危险在密匙要通过网络传输容易被截取。非对称加密的特点是安全,只暴露无危害的公钥,但慢在算法的计算。因为性能消耗的产生主要还是在加密每一次所要传输的数据的时候,因此为了提高性能,加密传输数据的主要方式应该使用性能较高的对称加密算法,现在我们只需要想出一个办法,让密钥也具备保密性即可,这也就需要非对称算法去加密密钥。
-
过程分析
-
首先客户端发送http请求,这也就是‘三次握手’的开始,服务器在接受到请求的时候把服务器自身的SSL数字证书发送到客户端进行验证,证书中包含着这个网站的信息以及服务器的公钥,同时服务器还保存着自己的私钥。
TIP:
SSL证书和我们生活中的驾驶证,营业许可证类似,我们是需要购买SSL证书的。
-
客户端在接受到服务端的证书后,进行证书的验证,如果浏览器验证证书时发现这个服务器不是一个‘好家伙’就会报出https警告(也就是提示你该网站的证书存在问题,是否继续跳转,还是退回上一个安全页面),如果验证通过,就会保存证书中的公钥,然后随机生成一个随机码,这个随机码正是之后进行真正请求数据传输时的密钥,然后用公钥对密钥进行加密然后把加密后的密钥传输给服务器。期间如果黑客劫持了密钥,可密钥是经过非对称算法中的公钥加密的,他没有私钥也就无法识破密钥的‘真身’。
-
服务器接收到由公钥加密的密钥,就用私钥进行解密,得到了密钥的‘真身’。至此,客户端和服务端都有了密钥,而外面的黑客却只有被公钥加密了的密钥。
-
‘三次握手’结束,开始请求数据,请求内容用密钥加密。
-
服务端接收到由密钥加密的数据,在用密钥进行解密即可获取传输的内容。