你应该知道的数据传输安全-Https

486 阅读3分钟

HTTP和HTTPS两者核心的区别在于安全性

HTTPS在HTTP的基础上通过 加密、身份验证数据完整性保护,解决了HTTP的明文传输风险

HTTP和HTTPS核心区别

特性HTTPHTTPS
协议层应用层协议HTTP + SSL/TLS(传输层安全协议)
默认端口80443
数据传输方式明文传输(未加密)加密传输(SSL/TLS加密)
安全性低(易被窃听、篡改、伪装)高(防窃听、防篡改、身份验证)
性能开销略高(加密/解密消耗CPU资源)
SEO优化无优势被搜索引擎(如Google)优先收录
浏览器标识地址栏显示“不安全”地址栏显示“🔒安全”

HTTPS的改进方案

1. 加密传输

实现方式: 在握手阶段采用非对称加密,在后续通信期间采用堆成加密(性能更高)

目的: 防止数据在传输过程中被窃听,保护敏感信息

2. 安全握手

TLS握手

客户端发起连接(Client Hello)

发送支持的TLS版本、加密套件(Cipher Suites)、随机数(Client Random)。

  • 关键扩展
    • supported_groups:支持的密钥交换算法(如ECDHE)。
    • key_share:客户端预生成的公钥参数(加速密钥交换)。

服务器响应(Server Hello)

选择加密套件(如TLS_AES_256_GCM_SHA384),发送随机数(Server Random)。

  • 关键操作
    • 发送数字证书(包含服务器公钥)。
    • 使用key_share扩展返回服务器公钥参数。
    • 签名验证(证明服务器拥有私钥)。

密钥交换与计算

客户端和服务器通过ECDHE算法生成共享密钥(Pre-Master Secret)。

结合Client Random、Server Random和Pre-Master Secret,生成主密钥(Master Secret) ,最终导出会话密钥(Session Key)。

完成握手

双方切换加密模式,使用会话密钥加密后续通信。

验证握手消息的完整性(防止篡改)。

3. 身份验证

实现方式: 服务器需向客户端提供数字证书(由受信任的证书颁发鸡头签发)

目的: 确保用户访问的是真实网站,验证服务器身份,防止中间人攻击

4. 数据完整性

实现方式: 使用 消息认证码或哈希算法生成数据摘要,接收方验证摘要是否匹配

目的: 防止传输过程中数据被篡改

HTTPS解决的场景问题

1. 防窃听

HTTP风险:明文传输的数据可被网络中间节点(如路由器、ISP)截获。

HTTPS方案:加密后数据为密文,即使被截获也无法解密。

2. 防篡改

HTTP风险:攻击者可修改响应内容(如插入恶意脚本)。

HTTPS方案:数据完整性校验使篡改行为可被检测。

3. 防伪装(中间人攻击)

HTTP风险:攻击者伪造服务器(如DNS劫持)。

HTTPS方案:证书验证确保通信对方身份合法。

4. 合规性

场景:支付系统(PCI DSS)、用户隐私(GDPR)等法规要求必须使用HTTPS。

TLS是什么

TLS(Transport Layer Security)传输层安全协议

是一种加密协议,用于在网络通信中提供数据加密,身份验证和完整性保护,是互联网安全的基石

协议安全性性能应用场景
SSL 3.0已淘汰(存在POODLE)无,建议禁用
TLS 1.2高(需配置强套件)中等广泛支持
TLS 1.3最高(默认安全)高(0-RTT)现代浏览器和服务端

TLS的核心目标

保密性(Confidentiality)
通过加密防止数据被窃听。

完整性(Integrity)
检测数据是否被篡改。

身份认证(Authentication)
验证通信双方的身份,防止中间人攻击。

前向保密(Forward Secrecy)
即使长期密钥泄露,历史会话仍安全。