📌HTTPS 通信原理
HTTPS(HyperText Transfer Protocol Secure)是一种在HTTP基础上加入了加密传输层(TLS或SSL)的安全通信协议,用来确保在互联网上传输的数据能够得到加密和安全保护。HTTPS通信的原理可以简单分为以下几个步骤:
- 客户端发起连接:客户端(如浏览器)向服务器发起连接请求,请求建立一个安全的连接。
- 服务器端返回证书:服务器将自己的数字证书发送给客户端。数字证书包含了服务器的公钥以及一些其他信息。
- 客户端验证证书:客户端接收到服务器的证书后,会验证证书的合法性。这包括验证证书是否由可信的证书机构颁发,证书是否在有效期内等。
- 协商加密算法:如果证书验证通过,客户端会使用服务器的公钥来协商对称密钥,并将其加密后发送给服务器。
- 建立加密通道:服务器使用自己的私钥解密客户端发来的对称密钥,然后客户端和服务器使用这个对称密钥来加密和解密通信数据。
- 安全通信:一旦加密通道建立起来,客户端和服务器之间的通信就会通过这个加密通道进行,保护数据在传输过程中的安全性。
通过这些步骤,HTTPS可以确保在互联网上传输的数据能够得到加密和安全保护,防止数据被窃听、篡改或伪造。
📌TLS 与 SSL
TLS(Transport Layer Security)与SSL(Secure Sockets Layer)是两种加密通信协议,它们的目的都是为了保护在网络上传输的数据安全。
TLS和SSL有很大的相似性,但在技术上存在一些差异。SSL是早期被广泛使用的加密协议,TLS协议是SSL协议的升级版本,它修复了SSL的一些安全漏洞,并增加了新的加密算法和协议版本。TLS的设计目标是确保通信的安全性、完整性和验证性,同时提供更好的性能和灵活性。
📌SSL 与 TLS 的各个版本
SSL 2.0:存在严重的安全漏洞,已经被废弃。
SSL 3.0:使用的加密算法包括MD5和SHA-1等,这些算法都已经被证明不够安全,存在被攻击的风险。
TLS 1.0:使用的加密算法包括MD5和SHA-1等,这些算法也存在安全隐患,已经被证明不足以应对现代的攻击手段,不建议使用。
TLS 1.1:加入了更安全的加密算法,包括SHA-256等,增强数据完整性和安全性,提高了安全性,但依然包含了如 MD5、SHA-1 等一些不安全加密算法,所以也不建议使用。
TLS 1.2:进一步增强了安全性,支持更多的加密算法,包括AES和GCM等,去除了一些不安全加密算法,提供更强的安全保护,推荐使用。
TLS 1.3:引入了更多安全性和性能优化,去除了一些不安全的加密算法,提供更快的握手速度和更好的加密性能,推荐使用。
📌客户端和服务端是如何协商加密算法的?
客户端和服务器协商选择加密算法的依据主要包括以下几个方面:
- 支持的算法:客户端和服务器都会在握手过程中发送自己所支持的加密算法列表。基于这个列表,双方会选择一个双方都支持的算法。
- 安全性:双方会选择一个安全性较高的加密算法,以确保通信数据的保密性和完整性。但是随着安全漏洞的暴露,部分加密算法已经不再被认为是安全的,从而被移除,比如TLS 1.0 中的 MD5和SHA-1 在 TLS 1.1 中已经被移除。
- 性能:客户端和服务器也会考虑选择一个性能较好的加密算法,以确保通信的效率。
基于以上的因素,客户端和服务器会协商共同选择一个都支持且安全,并且性能较好的算法,用于后续通信数据的加密和解密。这样可以确保通信的安全性和保密性。
📌当同时支持多个版本时,客户端和服务端是如何协商使用 TLS 哪个版本的?
如果客户端和服务端都支持多个版本,它们会选择双方都支持的最高版本来进行通信。
比如客户端和服务端都支持 TLS 1.0、TLS 1.1、TLS 1.2,但是服务端支持 TLS 1.3,客户端不支持 TLS 1.3,此时就会选择双方都支持的最高版本 TLS 1.2。
📌MD5 和 SHA-1 为什么被认为不安全的算法?
MD5(Message Digest Algorithm 5)和SHA-1(Secure Hash Algorithm 1)是两种常见的摘要算法,被广泛用于数据完整性验证和唯一性标识。
MD5 的结果是 128 位 2 进制,通常展示为 32 位 16 进制,也有少部分会截取中间 16 位;
SHA-1 的结果是 160 位 2 进制,通常展示位 40 位 16 进制;
它们已经被认为不安全的主要原因如下:
- 强力碰撞攻击:对于MD5和SHA-1,已经出现了强力碰撞攻击的方法,即可以通过计算找到两个不同的输入数据,但它们产生相同的散列值。这意味着攻击者可以伪造数据并通过验证,这对于数据完整性是一个严重的威胁。
- 安全性漏洞:MD5和SHA-1算法的设计在现代密码学标准中已经被证明存在一些安全性漏洞,这些漏洞使得这些算法容易受到各种攻击,如碰撞攻击和预像攻击。
- 算法强度:随着计算机技术和计算能力的不断提高,MD5和SHA-1的算法强度已经无法满足当今的安全需求,这使得它们容易受到暴力破解和计算攻击。