一、回顾一下Http通信过程
1.单向认证
2.双向认证
一、SSL/TLS协议详解
二、 加密技术
三、数字签名和摘要的原理
四、数字证书与认证
一、回顾一下Http通信过程
「1️⃣ 单向认证」
以下是HTTPS的单向认证过程。在单向认证中,客户端验证服务器的身份,但服务器并不验证客户端的身份。这是最常见的HTTPS通信方式,适用于大多数网页浏览和互联网服务。
单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下:
「客户端发起HTTPS请求:」 用户在浏览器或其他客户端中输入一个HTTPS网址,然后客户端连接到服务器的443端口(HTTPS的默认端口)。
「服务器响应并发送证书:」 服务器响应客户端的请求,并发送其SSL/TLS数字证书给客户端。这个证书包含了服务器的公钥、证书颁发机构(CA)信息、服务器身份信息以及证书的签名等信息。
「客户端验证服务器证书:」 客户端接收到服务器的证书后,会验证证书的合法性。这包括检查证书的颁发机构是否可信、证书是否在有效期内、以及证书的签名是否有效等。如果证书验证失败,客户端会发出警告或中断连接。
「密钥交换与生成:」 如果服务器证书验证通过,客户端会生成一个随机的预主密钥(pre-master secret),并使用服务器的公钥进行加密后发送给服务器。服务器使用自己的私钥解密得到预主密钥。然后,客户端和服务器都基于这个预主密钥和一些其他参数,生成一个会话密钥(session key)。这个会话密钥将用于后续的数据加密和解密。
「建立安全连接:」 客户端和服务器使用协商出的会话密钥对传输的数据进行加密,确保数据在传输过程中的安全。此后,客户端和服务器之间的所有通信都会使用这个会话密钥进行加密。
「数据传输:」 在安全连接建立后,客户端和服务器就可以开始传输数据了。所有的数据在传输前都会被加密,接收方在收到数据后会使用会话密钥进行解密,以获取原始数据。
「连接关闭:」 当数据传输完成后,客户端和服务器会关闭连接。如果需要再次通信,它们会重新进行上述的握手和密钥交换过程。
通过上述过程,HTTPS确保了数据在传输过程中的机密性、完整性和身份真实性,从而为用户提供了更安全、更可靠的互联网通信体验。
「2️⃣ 双向认证」
双向认证(又称为双向SSL认证或双向TLS认证)是一个更严格的安全过程,其中不仅客户端验证服务器的身份,服务器也验证客户端的身份。这通常用于需要更高安全级别的应用,如银行交易或企业内部的敏感数据传输。
在双向认证中,除了单向认证的所有步骤外,还会增加以下步骤:
客户端在发送HTTPS请求时,也会将自己的数字证书发送给服务器。 服务器验证客户端证书的合法性。如果客户端证书验证失败,服务器可以拒绝连接。 如果客户端证书验证通过,服务器和客户端继续进行密钥交换和建立安全连接的过程。
由于双向认证增加了额外的安全层,它提供了更高级别的安全保障,但同时也增加了配置的复杂性和成本。因此,它通常只在需要最严格安全保障的场景中使用。
一、SSL/TLS协议详解
HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL(Secure Sockets Layer)及其后续版本TLS(Transport Layer Security)是HTTPS的核心。它们是一个安全协议,用于在两个通信应用程序之间提供隐私和数据完整性。
「1. 握手过程:」这是SSL/TLS协议中最为关键的部分。当客户端(如浏览器)尝试与服务器建立安全连接时,它们会经历一个握手过程。这个过程中,客户端和服务器会协商使用哪种加密套件、交换密钥、验证服务器的身份等。
客户端发送支持的加密套件列表给服务器。 服务器选择其中一个加密套件,并发送其数字证书给客户端。 客户端验证服务器的数字证书。如果证书有效,客户端会生成一个随机的预主密钥(pre-master secret),并使用服务器的公钥加密后发送给服务器。 服务器和客户端都使用这个预主密钥,结合一些其他参数,生成一个会话密钥(session key)。这个会话密钥将用于后续的数据加密。
「2. 数据加密:」一旦握手过程完成,客户端和服务器就会使用协商出的会话密钥对传输的数据进行加密。这确保了即使数据被截获,攻击者也无法读取其内容。
「3. 数据完整性:」除了加密,SSL/TLS还提供了数据完整性保护。通过使用消息认证码(MAC),可以确保数据在传输过程中没有被篡改。
二、 加密技术
HTTPS通信既使用了对称加密,也使用了非对称加密,二者在HTTPS通信过程中各自扮演了不同的角色。
「1. 非对称加密:」
用途:主要用于密钥交换和数字证书。非对称加密涉及公钥和私钥两个密钥,公钥用于加密数据,私钥用于解密数据。由于私钥不公开,因此非对称加密具有很高的安全性。 过程:在HTTPS握手阶段,服务器将其公钥(包含在数字证书中)发送给客户端。客户端验证数字证书的有效性后,使用服务器的公钥加密一个随机生成的对称密钥(会话密钥),然后发送给服务器。服务器使用其私钥解密得到会话密钥。
「2. 对称加密:」
用途:主要用于实际数据传输的加密。对称加密使用相同的密钥进行加密和解密,加密速度快,适合大量数据的加密。 过程:在客户端和服务器通过非对称加密协商好会话密钥后,双方使用该会话密钥对传输的数据进行对称加密。加密后的数据在传输过程中即使被截获,攻击者也无法解密,保证了数据的安全性。
三、数字签名和摘要的原理
在HTTPS通信流程中,数字签名和摘要都是确保数据完整性和安全性的重要机制:
「1. 数字签名原理」
签名生成:发送方(在HTTPS中通常是服务器)使用自己的私钥对数据的摘要进行加密,生成数字签名。摘要是通过Hash函数从原始数据中计算出来的固定长度的字符串,它代表了数据的唯一特征。
签名验证:接收方(在HTTPS中通常是客户端)收到数据和数字签名后,使用发送方的公钥对签名进行解密,得到摘要A。同时,接收方也使用相同的Hash函数对接收到的数据进行计算,得到摘要B。
比较摘要:接收方将摘要A与摘要B进行比较。如果两者相同,说明数据在传输过程中没有被篡改,因为任何对数据的微小改动都会导致Hash值发生显著变化。这样,数字签名就验证了数据的完整性和来源。
「2. 摘要原理」
摘要生成:摘要是通过Hash函数对原始数据进行计算得到的。Hash函数是一种单向函数,它将任意长度的数据映射为固定长度的字符串(即摘要)。这个过程是不可逆的,即不能从摘要反推出原始数据。
数据完整性校验:由于Hash函数的特性,即使原始数据发生微小的变化,生成的摘要也会完全不同。因此,通过比较发送方和接收方计算的摘要是否一致,可以判断数据是否在传输过程中被篡改。
在HTTPS中,数字签名和摘要通常一起使用,以提供更强的安全保障。服务器在发送数据前会先计算数据的摘要,并对摘要进行签名。客户端收到数据后,会验证签名并重新计算摘要,以确保数据的完整性和来源。这样,即使攻击者截获并篡改了数据,也无法伪造有效的数字签名或通过摘要校验,从而保证了HTTPS通信的安全性。
「3. HTTPS通信中的两个关键加密步骤:密钥交换和数据加密」
密钥交换:这个过程通常使用非对称加密。服务器将其公钥(包含在数字证书中)发送给客户端,客户端验证证书后生成一个随机的对称密钥(会话密钥),并使用服务器的公钥加密这个会话密钥,然后发送给服务器。服务器使用其私钥解密得到会话密钥。这一步确保了会话密钥的安全交换。
数据加密:一旦客户端和服务器协商好了会话密钥,双方就会使用这个对称密钥对传输的数据进行加密和解密。这里的数据指的是原文,也就是客户端和服务器之间要传输的实际内容。对称加密确保了数据在传输过程中的机密性,即使数据被截获,攻击者也无法解密得到原文。
至于摘要,它在HTTPS中主要用于数据完整性的校验,而不是直接用于加密。客户端和服务器在传输数据前,都会先对数据计算摘要(使用Hash函数),然后在收到数据后再计算一次摘要,并与发送方的摘要进行比较,以确认数据在传输过程中是否被篡改。
因此,HTTPS中加密的主要内容是原文,而摘要则用于数据完整性的校验。
四、数字证书与认证
数字证书是HTTPS安全机制中的另一个关键组件。它是由权威的证书颁发机构(CA)签发的,包含了持有者的公钥、持有者的身份信息和CA的签名。
证书的作用:数字证书的主要目的是验证服务器的身份。当客户端连接到服务器时,服务器会发送其数字证书给客户端。客户端可以使用预置的CA证书来验证服务器的证书是否有效。 证书链:为了验证服务器的证书,客户端可能需要验证整个证书链。证书链从服务器的证书开始,一直追溯到根CA证书。每个证书都由其上级CA签名,从而形成一个信任链。 证书吊销:如果服务器的私钥泄露或证书不再需要,CA可以吊销该证书。客户端在验证服务器证书时,也会检查它是否被吊销。这通常通过查询证书吊销列表(CRL)或使用在线证书状态协议(OCSP)来完成。
太强 ! SpringBoot中出入参增强的5种方法 : 加解密、脱敏、格式转换、时间时区处理
太强 ! SpringBoot中优化if-else语句的七种绝佳方法实战
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
SpringBoot中基于XXL-JOB实现大量数据灵活控制的分片处理方案