超文本传输安全协议 - HTTPS

 

目录

前言

一、HTTP的缺点

二、对称加密

三、非对称加密

四、HTTPS

HTTPS的实现方式

几个关键步骤的作用

总结


前言

说到HTTPS,大多数人想到的都是更加安全的网络传输协议,为什么HTTP不安全?HTTPS做了什么操作来保证数据传输的安全性呢?本文参考了一些文章书籍加上自己的理解画图总结了HTTPS是如何解决网络传输的安全性问题。

一、HTTP的缺点

我们都知道用HTTP传输数据是不安全的,因为HTTP协议是建立在TCP之上的,HTTP的报文没有加密就交给TCP传输了,传输过程中就容易被监听和篡改,对话中的敏感信息就会被泄露,在网络支付和交易中造成损失,HTTP的传输方式如下图

整个过程没有对信息加密,很容易被中间人监听、修改信息

HTTP主要有3个不足之处:

  1. 内容不加密,使用明文传输容易被监听;
  2. 无法验证传输内容的完整性,也就是说不知道是不是被修改过的;
  3. 对方身份无法验证,客户端和服务端都不知道是不是在跟对方对话;

既然明文传输的信息容易被监听到,那么对信息加个密是不是就能解决这个问题呢?

二、对称加密

加密和解密用同一个秘钥的加密方式叫做对称加密。

这样一来,数据不再是明文传输了,但是问题又来了,秘钥怎么传递?服务端对应多个客户端,秘钥也不能是同一个啊,要是都用同一个秘钥,就像现在很多人在各个网站的登录密码是一样的 ,一个被破解,全部信息都要泄露了。

解决了这两个问题,信息传输就比较安全了,首先服务端和每个客户端之间要用不同的秘钥加密,只能是一方生成秘钥后传输给另一方,这样就剩下怎么把秘钥传送给对方的问题了。

我们再看另一种加密方式

三、非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

客户端和服务端只要保存好私钥,信息就不会被解密,但是直接将自己的公钥传给对方会存在被中间人修改的问题

中间人把客户端和服务端传输的公钥替换成自己的公钥,对客户端伪装成服务端,对服务端伪装成客户端,造成通讯不安全。

四、HTTPS

接下来要解决的问题就是把公钥安全的传送到对方手上,不被中间掉包,但是这似乎又回到对称加密传输秘钥的问题了,密钥总是要通过网络传输的,怎样验证对方身份呢?后来就出现了一些第三方的认证机构,这些认证机构很少,但是很权威,它会和电脑、浏览器等厂商达成信任关系,提前把第三方认证机构的公钥安装到系统或浏览器中,这样第三方机构用私钥签名,验证签名的时候直接就从本地拿到相应第三方机构的公钥,对私钥加密后的数字签名进行解密得到真正的签名,然后客户端利用签名生成规则进行签名验证,看两个签名是否匹配,如果匹配认证通过,不匹配则获取证书失败。下面是验证的流程

使用这样的验证方式可以防止公钥在传输过程中被掉包,但是使用非对称加密传输数据速度比较慢,是因为加密算法耗时较长,对称加密的优势就是加密解密耗时短,既然通过CA机构签名的方式确认了对方身份,也传送了公钥,那么就可以通过公钥把对称加密的密钥传输,双方都是用同一个密钥加密消息。

HTTPS的实现方式

HTTPS = HTTP + TLS/SSL

HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据,可认证用户和服务器,确保数据发送到正确的客户端和服务器。

几个关键步骤的作用

  1. 签名的作用是为了验证身份,防止公钥被掉包
  2. 传输公钥的作用是为了传输对称加密的密钥
  3. 使用加密是为了防止明文传输
  4. 使用对称加密是为了提高通信效率

总结

HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。HTTPS中具体的内容还有很多,这里只是简单介绍一下工作流程,写的不对的地方请留言指正。

参考文章

图解HTTP

猜你喜欢

转载自blog.csdn.net/weixin_44867400/article/details/108302421
今日推荐