一篇文章带你速通https

284 阅读6分钟

什么是HTTPS协议

超文本传输安全协议(Hypertext Transfer Protocol Secure,简称:HTTPS)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包,主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,结合起来就成了HTTPS

那么HTTPS是如何保证安全的?

先理解两个概念:

  • 对称加密:即通信的双⽅都使⽤同⼀个秘钥进⾏加解密,对称加密虽然很简单性能也好,但是很容易被拦截秘钥。
  • ⾮对称加密:

私钥和公钥组成密钥对。⽤私钥加密的数据,只有对应的公钥才能解密,⽤公钥加密的数据,只有对应的私钥才能解密,在通信时双⽅的⼿⾥都有⼀套⾃⼰的密钥对,通信之前双方会先把自己的公钥都先发给对方,然后对方再拿着这个公钥来加密数据响应给对方,等到了对方那⾥,对⽅再⽤自己的私钥进⾏解密。

非对称加密虽然安全性更高,但是带来的问题就是速度很慢。

结合对称加密和非对称加密

结合两种加密,将对称加密的密钥使⽤非对称加密的公钥进行加密,然后发送出去,接收者使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

TLS/SSL的工作原理

我们都知道HTTPS = HTTP + SSL/TLShttp大家也都清楚,那么TLS/SSL的工作原理大家知道吗。

TLS/SSL全称安全传输层协议, 是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议。

TLS/SSL的功能实现主要依赖三类基本算法:散列函数hash对称加密非对称加密

散列函数hash

常见的散列函数有MD5、SHA1、SHA256。该函数的特点是单向不可逆,对输入数据非常敏感,输出的长度固定,任何数据的修改都会改变散列函数的结果,可以用于防止信息篡改并验证数据的完整性

**特点:**在信息传输过程中,散列函数不能实现信息防篡改,由于传输是明文传输,中间人可以修改信息后重新计算信息的摘要,所以需要对传输的信息和信息摘要进行加密。

对称加密

对称加密的方法是,双方使用同一个密钥对数据进行加密和解密。 但是对称加密的存在一个问题,就是如何保证秘钥传输的安全性,因为秘钥还是会通过网络传输的,一旦秘钥被其他人获取到,那么整个加密过程就毫无作用了。

特点: 对称加密的优势就是信息传输使用一对一,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和N个客户端通信,需要维持N个密码记录且不能修改密码。

非对称加密

非对称加密的方法是,我们拥有两个秘钥,一个是公钥,一个是私钥。

公钥是公开的,私钥是保密的。用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密。我们可以将公钥公布出去,任何想和我们通信的客户,都可以使用我们提供的公钥对数据进行加密,这样我们就可以使用私钥进行解密,这样就能保证数据的安全了。但是非对称加密有一个缺点就是加密的过程很慢,因此如果每次通信都使用非对称加密的方式的话,反而会造成等待时间过长的问题。

特点: 非对称加密的特点就是信息一对多,服务器只需要维持一个私钥就可以和多个客户端进行通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密的速度慢。

TLS/SSL 小结

综合上述的几个算法,TLS/SSL的工作方式就是客户端使用非对称加密与服务器进行通信,实现身份的验证并协商对称加密使用的密钥。对称加密算法采用协商秘钥对信息以及信息摘要进行加密通信,不同节点之间采用的对称秘钥不同,从而保证信息只能通信双方获取。

数字证书

数字证书是什么

数字签名就是⽤CA⾃带的HASH算法对证书的内容进⾏HASH得到⼀个摘要,再⽤CA的私钥加密,最终组成数字签名。当别⼈把他的证书发过来的时候,我再⽤同样的Hash算法,再次⽣成消息摘要,然后⽤CA的公钥对数字签名解密,得到CA创建的消息摘要,两者⼀⽐,就知道中间有没有被⼈篡改了。

为什么要有数字证书

因为没有办法确定得到的公钥就一定是安全的公钥。 可能存在一个中间人,截取了对方发给我们的公钥,然后将他自己的公钥发送给我们,当我们使用他的公钥加密后发送的信息,就可以被他用自己的私钥解密。然后他伪装成我们以同样的方法向对方发送信息,这样我们的信息就被窃取了,然而自己还不知道。

总结

HTTPS出现正是为了解决HTTP不安全的特性。 为了保证这些隐私数据能加密传输,让HTTP运行安全的SSL/TLS协议上,即HTTPS = HTTP + SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

HTTPS优点如下:

  • 使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器;
  • 使用HTTPS协议可以进行加密传输、身份认证,通信更加安全,防止数据在传输过程中被窃取、修改,确保数据安全性;
  • HTTPS是现行架构下最安全的解决方案,虽然不是绝对的安全,但是大幅增加了中间人攻击的成本;

HTTPS缺点如下:

  • HTTPS需要做服务器和客户端双方的加密个解密处理,耗费更多服务器资源,过程复杂;
  • HTTPS协议握手阶段比较费时,增加页面的加载时间;
  • SSL证书是收费的,功能越强大的证书费用越高;
  • HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本;
  • SSL证书需要绑定IP,不能再同一个IP上绑定多个域名。