- HTTPS是HTTP+SSL/TLS构建的可进行加密传输、身份验证的网络协议,要比HTTP安全。和HTTP均属于应用层协议
- HTTPS与HTTP的区别
- https需要到CA申请证书,一般免费证书比较少,多数是收费的。
- HTTP是超文本传输协议,信息明文传输,https是具有安全性的ssl/tls加密传输协议
- http与https所使用的连接方式不同,端口也不同,http默认端口是80,https默认是443
- http协议很简单,是无状态的;https也是无状态的,但比http安全
- 客户端在使用HTTPS协议与服务器通信的过程
客户端与服务器要想进行安全的通信,应该使用对称加密传输数据。但是协商使用哪种对称加密算法的过程,需要使用非对称加密算法来保证安全。然而直接使用非对称加密算法的过程本身就不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书颁发机构(CA)颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制去协商出一个对称加密算法,就此双方使用该对称加密算法进行加密解密,从而解决了客户端与服务器安全传输的问题。
为了保证传输的安全性,客户端与服务器应该使用对称加密算法传输数据,之所以不用非对称加密,是因为非对称加密有两个致命缺点:1.CPU计算资源消耗非常大 2.非对称加密对加密内容长度有限制。所以使用对称加密,但协商使用哪种对称加密算法的过程需要使用非对称加密,客户端与服务器交互图如下:
但是这样似乎还不够,如果通信过程中,在三次握手或者客户端发起HTTP请求过程中,客户端的请求被中间人劫持,那么中间人就可以伪装成“假冒客户端”和服务器通信;中间人又可以伪装成“假冒服务器”和客户端通信。接下来,我们详细阐述中间人获取对称密钥的过程:
中间人在收到服务器发送给客户端的公钥(这里是“正确的公钥”)后,并没有发给客户端,而是中间人将自己的公钥(这里中间人也会有一对公钥和私钥,这里称呼为“伪造公钥”)发给客户端。之后,客户端把对称密钥用这个“伪造公钥”加密后,发送过程中经过了中间人,中间人就可以用自己的私钥解密数据并拿到对称密钥,此时中间人再把对称密钥用“正确的公钥”加密发回给服务器。此时,客户端、中间人、服务器都拥有了一样的对称密钥,后续客户端和服务器的所有加密数据,中间人都可以通过对称密钥解密出来。
中间人获取对称密钥的过程如下:
为了解决此问题,我们引入了数字证书的概念。服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,此时服务器就不是简单的把公钥给客户端,而是给客户端一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是服务器给客户端的。中间人发送的伪造证书,不能够获得CA的认证,此时,客户端和服务器就知道通信被劫持了。加入了CA数字签名认证的SSL会话过程如下所示:
所以综合以上所说的,非对称加密算法(公钥和私钥)交换对称密钥+数字证书验证身份(验证公钥是否是伪造的)+利用对称密钥加密解密后续传输数据=安全。
- 对称加密&非对称加密&散列加密
对称加密: 加密和解密的秘钥使用的是同一个。常见的对称加密: DES、3DES、RC4、IDEA、AES
非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。常见非对称加密:RSA、DSA(数字签名用)
Hash算法:Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。常见散列加密算法:MD5、SHA
网友评论