找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

150

积分

0

好友

18

主题
发表于 4 天前 | 查看: 10| 回复: 0

加密

HTTPS在HTTP基础上增加了加密层,确保数据传输安全。其核心在于通过密钥对数据进行加解密处理。

数据加密机制

客户端与服务端之间通过共享密钥实现加解密,这就是对称加密,而共享的密钥称为会话密钥

因此,HTTPS对传输数据采用对称加密方式。

关键问题在于:如何安全交换会话密钥? 如果密钥交换过程被窃听,整个加密体系将失效。

这时就需要引入非对称加密机制。公钥用于加密数据,私钥用于解密数据。客户端使用服务端公钥加密会话密钥后传输,服务端再用私钥解密获取密钥。

密钥交换流程简化如下:

  1. 客户端发起连接请求
  2. 服务端返回公钥
  3. 客户端使用公钥加密会话密钥并发送
  4. 服务端使用私钥解密获取会话密钥

需要注意的是,实际交换的是"预主密钥",最终会话密钥由预主密钥和随机数通过算法计算得出。

加密过程包含两个关键环节:

  • 密钥交换:采用非对称加密
  • 数据传输:采用对称加密

只要服务端妥善保管私钥,即使中间人截获数据也无法解密。

证书

服务器身份验证

仅靠加密还不够,必须确保连接的是合法服务器。如果客户端被诱导连接恶意服务器,加密将失去意义。

HTTPS通过数字证书解决身份验证问题。证书由权威机构颁发,与服务器域名绑定。建立连接时,服务器需向客户端出示证书。

证书验证机制

浏览器通过证书链验证证书真实性。证书链包含:服务器证书 → 中间证书 → 根证书。

验证过程基于数字签名技术:

  • 从服务器证书提取签名信息,使用上级证书公钥解密得到哈希值H2
  • 对服务器证书计算哈希值H1
  • 对比H1与H2,若相等则证书有效
  • 逐级验证直至根证书

根证书内置于操作系统和浏览器,验证过程无需网络请求。

证书验证还包括域名匹配、有效期检查等。任何一项验证失败,连接都会立即终止。

数字签名在HTTPS中主要有两个应用场景:

  • 数据加密:公钥加密,私钥解密
  • 身份验证:私钥签名,公钥验证

证书相当于服务器的数字身份证,向客户端证明其合法身份。

加密优化

传统加密方式存在前向保密隐患。如果服务器私钥泄露,历史会话密钥可能被破解。

TLS 1.3通过临时密钥对解决这个问题:

  1. 客户端生成临时密钥对,发送公钥至服务器
  2. 服务器生成临时密钥对,返回公钥至客户端
  3. 双方通过椭圆曲线算法计算共享密钥
  4. 基于共享密钥生成最终会话密钥

核心改进:

  • 服务器长期密钥不再参与加密过程
  • 握手流程从3次缩减为2次
  • 临时密钥在会话结束后立即销毁

即使长期私钥泄露,历史会话仍保持安全,因为破解需要获取已销毁的临时私钥。

总结

HTTPS = HTTP + TLS,当前主流采用TLS 1.3,具备两大核心功能:

证书验证

  • 证书链确保服务器真实性
  • 数字签名验证证书合法性

加密传输

  • 基于椭圆曲线的临时密钥交换
  • 会话密钥实现数据加解密

加密保障数据传输安全,证书确保连接对象可信。

您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-1 13:29 , Processed in 0.054385 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表