HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol
Secure)的主要区别如下:
-
安全性:
- HTTP是非加密协议,数据以明文形式在网络上传输,容易受到中间人攻击(MITM)、窃听和篡改。
- HTTPS是在HTTP的基础上添加了一个SSL/TLS(Secure Sockets Layer / Transport Layer Security)安全层,能够对客户端和服务器之间的通信进行加密,从而保护用户的隐私和数据安全。
-
连接方式:
- HTTP是无状态的,不支持默认的身份验证或加密功能。
- HTTPS使用SSL/TLS握手过程来建立安全连接,这个过程包含了身份认证、协商加密算法和生成会话密钥等步骤。
-
端口:
- HTTP通常运行在TCP端口80上。
- HTTPS运行在TCP端口443上。
-
信任和认证:
- HTTP没有强制的信任机制,任何服务器都可以声称自己是目标网站。
- HTTPS通过证书颁发机构(CA)签发的SSL/TLS证书来验证服务器身份,用户可以在浏览器中查看证书详情,确认服务器的真实性。
HTTPS加密过程:
HTTPS加密主要依赖于SSL/TLS协议的工作流程:
-
握手阶段:
客户端与服务器首先进行握手过程,这个过程中包括:
a. 服务器向客户端发送其数字证书,包含公钥和证书链。
b. 客户端验证服务器证书的有效性和可信性。
c. 双方协商一致的加密套件(包括加密算法、散列函数和密钥长度等)。 -
密钥交换:
根据协商的加密套件,可能采用RSA、DH/ECDH等算法进行密钥交换,也可以利用TLS 1.3以后的密码套件进行前向安全密钥协商。 -
会话加密:
在握手完成后,双方将使用协商好的密钥(通常是通过交换信息导出的一个对称密钥)对实际传输的数据进行加密。常用的加密算法有AES、ChaCha20等,而消息验证码(MAC)用于保证数据完整性。
通过这种方式,即使数据在传输过程中被截获,攻击者也无法直接读取其内容,因为数据已被高强度的加密算法所保护。同时,HTTPS还通过证书和签名机制确保了服务器身份的真实可靠,避免了钓鱼网站和中间人攻击的风险。