HTTPS工作原理

我们知道使用HTTP协议进行服务端与客户端通信时,信息是通过明文传输的。这期间信息就有可能被拦截或者篡改,为了解决这种场景,HTTPS就出现了。

相对于HTTP来说,HTTPS有如下作用。

  • 内容加密,无法被轻易破解;
  • 身份认证,如果信息被篡改,通信双方可以立刻发现;
  • 数据完整性校验;

接下来就学一下HTTPS的工作原理。

HTTPS的组成

HTTPS是目前使用最多的HTTP安全形式。在使用HTTPS时,所有的HTTP请求和响应数据在发送到网络之前,都会进行加密。

上图展示了HTTP与HTTPS在网络协议中的表现,可以看到在应用层中 HTTPS=HTTP + SSL/TLS

什么是SSL/TSL

SSL和TSL是一种安全协议。其中SSL是早起采用的安全协议,后来TSL是在SSL的基础上进一步标准化了SSL协议。在上面的图中可以看到,SSL和TSL位于传输层之上,在数据到达传输层之前都会经过SSL/TSL协议层处理,由SSL/TSL保证数据的机密性和完整性。

SSL/TSL中的加密技术

SSL/TSL安全协议保证数据安全的技术基础就是密码学。接下来,我们先了解一些跟HTTPS有关的密码学知识。

密码和密钥

密码是一种编码方案的算法,也就是使用一种编码方式编码数据,然后使用相应的解码方式解码数据的算法。

密钥是编码的参数。

通过密码+密钥就可以实现加密数据。

对称密钥加密

对称加密就是编码和解码使用同一个密钥的加密技术。

在对称加密中,发送端和接收端使用相同的密钥进行通信。发送端使用共享的密钥发送报文,然后将密文发送到接收端。接收端使用相同密钥解密密文,恢复原始数据。

非对称密钥加密

非对称加密也成为公开密钥加密技术,就是使用不同密钥进行通信的加密技术。

非对称加密技术使用了不同的密钥进行通信,在发送端使用公钥对报文进行加密( 公钥就是所用人都可以获取到的密钥 ),然后在接收端使用私钥对加密的密文进行解密。常见的非对称加密技术是 RSA 技术。

数字签名

数字签名是附加在报文上的特殊加密校验码。数字签名可以防止报文被篡改,如果有恶意攻击在传输过程在篡改了报文,那么校验的时候校验和就不再匹配,因此可以确认报文被篡改了。

数字签名的加解密过程:

  • 发送端将报文通过算法(比如通过HASH函数)提取为定长的摘要;
  • 发送端将摘要应用签名算法,以私有密钥作为参数生成一个签名;
  • 计算得出签名后,将签名附加在报文末端发送给接收方;
  • 接收端收到报文后,对签名进行检查。接收端通过公开密钥解码签名。然后比对报文生成的摘要是否与签名一致便可判断报文是否被篡改。

数字证书

数字证书是由权威机构给某网站颁发的一种认可凭证。它主要包含一些认证信息,比如:对象的名称(服务器、组织、个人等)、过期时间、证书颁发者、来自证书发布者的数字签名。

上面的图片就是www.google.com的证书。

我们可以看到在上面讲到 数字签名 的时候,似乎就可以保证报文的安全了。为什么还需要数字证书呢?这个设想一下这个场景:比如某人A把发送到浏览器的 公有密钥 进行了替换,同时A在给浏览器发送报文时使用自己的 私有密钥 对报文进行 数字签名 ,那么浏览器就不能确认报文是否来自于真实服务器。这个时候就可以使用数字证书进行验证,因为数字证书中保存了真实服务器的信息。

HTTPS的工作流程

建立安全传输

在TCP连接建立完成以后,在HTTPS协议中,客户端和服务端会初始化SSL层,也就是安全层。

SSL握手

在发送报文之前,客户端和服务端会进行一次SSL握手,在这个过程中主要完成以下工作:

  • 交换协议版本号;
  • 选择一个两端都了解的密码;
  • 对两端的身份进行认证;
  • 生成临时会话密钥,以便加密信道(建立完安全通道后,传输报文时使用对称加密);

在SSL会进行很多工作,处理交换一些必要的信息之外,还会对身份进行认证。

这里的认证是通过数字证书进行的,在客户端获取证书后,会采用相应的算法对服务端的身份信息进行验证:

  • 日期检测:客户端会检查证书的有效期是否合法;
  • 签名颁布者可信度检测:浏览器会附带一个签名颁发机构的授信列表,如果浏览器收到了位置的颁发机构签发的证书,那么它会显示一条警告信息;
  • 签名检测:客户端对签名使用签名颁发机构的公开密钥,然后将其与校验码比较,以便验证证书是否合法;
  • 站点身份检测:客户端验证数字证书中的域名是否与服务端的域名匹配;

身份认证完成后,客户端与服务端进行密码协商,确定本次连接采用哪种加密算法进行通信。

开始通信

SSL握手完成后,就完成建立了HTTPS通道,客户端与服务端就会根据协商的加密算法进行通信。

整个HTTPS的工作流程可以总结如下:

总结

相较于HTTP协议,HTTPS确保了报文的机密性以及完整性。HTTPS确保这些的依赖就是SSL/TSL协议,SSL/TSL安全协议搭配数字证书保证了报文在传输过程中的绝对安全。

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章