当前位置:  开发笔记 > 编程语言 > 正文

SSL施加了多少开销?

如何解决《SSL施加了多少开销?》经验,为你挑选了3个好方法。

我知道没有单一的硬性和快速的答案,但是对于SSL的加密开销与未加密的套接字通信,是否存在通用的数量级估计近似值?我只谈论通信处理和线路时间,而不是计算应用级处理.

更新

有一个关于HTTPS与HTTP的问题,但我有兴趣在堆栈中看得更低.

(我更换了那句"的数量级",以避免混淆,我用它作为非正式的术语,而不是在正规CompSci意义当然,如果我.正式的意思是,作为一个真正的怪胎我就一直在思考的二进制,而不是小数!;-)

更新

根据评论中的每个请求,假设我们讨论的是持久连接上的大小良好的消息(范围为1k-10k).因此,连接建立和数据包开销不是重要问题.



1> erickson..:

数量级:零.

换句话说,当您添加TLS时,您不会看到您的吞吐量减少一半或类似的东西."重复"问题的答案主要关注应用程序性能,以及与SSL开销的比较.此问题明确排除了应用程序处理,并试图仅将非SSL与SSL进行比较.虽然在优化时采用全局性能视图是有意义的,但这不是这个问题所要求的.

SSL的主要开销是握手.这就是昂贵的非对称加密技术发生的地方.在协商之后,使用相对有效的对称密码.这就是为什么为您的HTTPS服务启用SSL会话非常有用,因为HTTPS服务建立了许多连接.对于长期连接,这种"末端效应"并不那么重要,会话也没那么有用.


这是一个有趣的轶事.当Google将Gmail切换为使用HTTPS时,无需其他资源; 没有网络硬件,没有新主机.它只增加了1%的CPU负载.


@Bart van Heukelom - Keep-alive将帮助保持套接字(和SSL连接)打开更长时间,这有所帮助.但是SSL会话导致协商的加密参数从套接字到"套接字"被"记住".因此,HTTP keep-alive对于加载带有引用内容的单个网页非常有用,但几秒钟后,该连接将关闭.三分钟后,比如说,当获取另一个页面时,SSL会话允许重新建立SSL连接而不重复完全握手.特别是,可以跳过与公钥加密的*slow*密钥交换.
您如何"为您的HTTPS服务启用SSL会话"?了解这一点有什么好资源?
@Tony在一次写入一个字节时,我看到普通套接字在空间方面的性能优于SSL套接字,这是最糟糕的情况.从未见过250x.我在互联网上做了一个大量的实验,有1700个数据点,一般的结果是明文套接字的速度不比SSL高三倍,使用的编程并不比缓冲和刷新更复杂.JSSE,可能是Java 5,给出了实验日期.
@Tony你有任何真实世界的例子,其中TLS增加了超过几个百分点的开销吗?我的答案和问题一样笼统.如果您有不同的搭配,请分享.

2> max..:

我是第二个@erickson:纯粹的数据传输速度惩罚可以忽略不计.现代CPU达到几百MBit/s的加密/ AES吞吐量.因此,除非您使用资源受限制系统(移动电话),否则TLS/SSL的速度足够快,可以绕过数据.

但请记住,加密使缓存和负载平衡更加困难.这可能会导致巨大的性能损失.

但是连接设置实际上是许多应用程序的显示阻止.在低带宽,高数据包丢失,高延迟连接(乡村移动设备)上,TLS所需的额外往返可能会使某些东西变得无法使用.

例如,我们不得不放弃访问我们的一些内部网络应用程序的加密要求 - 如果在中国使用,它们旁边就无法使用.


经过4年的回顾:中国可能也故意搞砸了所有SSL/TLS流量.
中国审查互联网并试图嗅闻每个人的流量并不是新闻.虽然事后有4年的时间,但您认为这是NSA MITMing在前往您网站的途中.

3> Jan Schejbal..:

假设您没有计算连接设置(如您在更新中所示),它很大程度上取决于所选的密码.网络开销(带宽方面)可以忽略不计.CPU开销将由密码学主导.在我的移动Core i5上,我可以在一个内核上使用RC4每秒加密大约250 MB.(RC4是您应该选择的最佳性能.) AES速度较慢,仅"50"/秒左右.因此,如果您选择了正确的密码,即使您拥有充分利用的1 Gbit线路,也无法保持单个当前核心忙于加密开销.[ 编辑:不应使用RC4,因为它不再安全.但是,AES硬件支持现在存在于许多CPU中,这使得AES加密在这些平台上非常快.

然而,连接建立是不同的.根据实现(例如支持TLS错误启动),它将添加往返,这可能导致明显的延迟.另外,在第一个连接建立时发生了昂贵的加密(如果您愚蠢地使用4096位密钥,上述CPU每秒只能接受每个核心14个连接,如果使用2048位密钥,则只能接受100个连接).在后续连接中,以前的会话经常被重用,避免了昂贵的加密.

所以,总结一下:

转移已建立的连接:

延迟:几乎没有

CPU:可以忽略不计

带宽:可以忽略不计

第一次连接建立:

延迟:额外往返

带宽:几千字节(证书)

客户端上的CPU:中等

服务器上的CPU:高

后续连接机构:

延迟:额外往返(不确定一个或多个,可能依赖于实现)

带宽:可以忽略不计

CPU:几乎没有

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有