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安全协议搭配数字证书保证了报文在传输过程中的绝对安全。
标签:TSL,加密,工作,报文,SSL,密钥,HTTPS,原理 来源: https://blog.csdn.net/programerxiaoer/article/details/99713731