ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTPS 如何优化

2022-09-02 20:33:11  阅读:187  来源: 互联网

标签:证书 如何 Session 密钥 HTTPS 服务器 优化 ID 客户端


多角度优化 HTTPS

分析性能损耗

产生性能消耗的两个环节:

  1. TLS 协议握手过程;(TLS 协议握手过程最长可以花费 2 RTT<mean:网络延时>)
  2. 握手后的对称加密报文传输。

解决方案:

对于1,暂时没有办法。

 

对于2, 现在主流的对称加密算法 AES、ChaCha20 性能都是不错的,⽽且⼀些 CPU ⼚商还针对它们做了 硬件级别的优化,因此这个环节的性能消耗可以说⾮常地⼩。

硬件优化

HTTPS 协议是计算密集型,而不是 I/O 密集型。所以应该把钱花在 CPU 上,尽量选择可以支持 AES-NI 特性的 CPU。

软件优化

将正在使用的软件升级到最新版本。

协议优化

密钥交换算法优化

选用 ECDHE 算法替代 RSA 算法,同时尽量选择 x25519 椭圆曲线。

TLS 升级

把 TLS 1.2 升级成 TLS 1.3 。

证书优化

证书传输优化

对于服务器的证书应该选择椭圆曲线(ECDSA)证书,而不是 RSA 证书。

因为在相同按全强度下,ECC 密钥长度比 RSA 短得多。

证书验证优化

CRL称为证书吊销列表(Certificate Revocation List)。由 CA 维护。

  • 实时性较差。
  • 下载速度会随着吊销证书的增多越来越慢。

OCSP

OCSP 替代 CRL。

OCSP 称为在线证书状态协议(Online Certificate Status Protocol)。在线查询。

OCSP Stapling

OCSP Stapling 解决了 OCSP 的网络开销问题。

原理:服务器向 CA 周期性地查询证书状态,获得一个带有时间戳和签名的响应结果并缓存。

会话复用

Session ID

原理:

客户端和服务器首次 TLS 握手连接后,双方会在内存缓存会话密钥,并用唯一的 Session ID 来标识。( Session ID 和会话密钥相当于 key-value 的关系 )

具体过程:

当客户端再次连接时,hello 消息⾥会带上 Session ID,服务器收到后就会从内存找,如果找到就直接⽤该会话密 钥恢复会话状态,跳过其余的过程,只⽤⼀个消息往返就可以建⽴安全通信。当然为了安全性,内存中的会话密钥 会定期失效。

缺点:

  • 服务器必须保持每⼀个客户端的会话密钥,随着客户端的增多,服务器的内存压⼒也会越⼤。
  • 现在⽹站服务⼀般是由多台服务器通过负载均衡提供服务的,客户端再次连接不⼀定会命中上次访问过的服务器,于是还要⾛完整的 TLS 握⼿过程;

Session Ticket

解决了 Session ID 的问题:

服务器不再缓存每个客户端的会话密钥,而是把缓存的工作交给客户端。

缺点:

Session ID 和 Session Ticket 都不具备前向安全性,因为⼀旦加密「会话密钥」的密钥被破解或者服务器泄漏「会 话密钥」,前⾯劫持的通信密⽂都会被破解 。且难以应对 【重放攻击】。

重放攻击:

重放攻击的危险之处在于,如果中间人截获了某个客户端的 Session ID 或 Session Ticket 以及 POST 报文,而一般 POST 请求会改变数据库的数据,中间人就可以利用此截获的报文,不断向服务器发送该报文,这样就会导致数据库的数据被中间人改变了,而客户是不知情的。

如何避免重放攻击:

  • 对 会话密钥 设定一个合理的过期时间。
  • 只针对安全的 HTTP 请求如 GET/HEAD 使用会话重用。

Pre-shared Key

前⾯的 Session ID 和 Session Ticket ⽅式都需要在 1 RTT 才能恢复会话。

对于重连,TLS1.3 只需要 0 RTT,原理和 Ticket 类似,只不过在重连时,客户端会把 Ticket 和 HTTP 请求⼀同发送给服务端,这种⽅式叫 Pre-shared Key。

同样的,Pre-shared Key 也有重放攻击的危险。  

标签:证书,如何,Session,密钥,HTTPS,服务器,优化,ID,客户端
来源: https://www.cnblogs.com/tiddler/p/16651119.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有