云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_附加数据库失败_促销

小七 141 0

密码到底有多“贵”?

如果这篇文章的标题吸引了一些比特币爱好者,我不会感到惊讶,但如果你是这样的话,我想让你失望。对我来说,加密意味着加密,而不是网络货币,我们为此付出的代价是以CPU周期来衡量的,而不是美元。如果你读到第二段,你可能听说TLS现在部署起来非常便宜。在优化OpenSSL和BoringSSL的加密堆栈以及运行它们的硬件上投入了大量的精力。然而,除了偶尔的基准测试之外,它可以告诉我们一个给定的算法可以加密多少GB/s,或者某个椭圆曲线可以生成多少个签名,但是我没有找到多少关于在实际TLS部署中加密成本的信息。Michele M.F.的CC BY-SA 2.0图像。由于Cloudflare是地球上最大的TLS提供商,人们会认为我们执行了很多与加密相关的任务,而其中一个绝对正确。我们一半以上的外部流量现在是TLS,以及我们所有的内部流量。处于这样的地位意味着加密性能对我们的成功至关重要,而且碰巧的是,我们时不时地会分析我们的生产服务器,以确定和修复热点。在这篇文章中,我想分享与加密相关的最新分析结果。配置文件服务器位于我们的法兰克福数据中心,采用sports 2 Xeon Silver 4116处理器。每一个地理位置的TLS的使用模式都略有不同。在法兰克福,73%的请求是TLS,协商的密码套件如下所示:处理所有这些不同的密码套件,BoringSSL只消耗1.8%的CPU时间。没错,只有1.8%。这甚至不是纯粹的加密,也涉及到相当大的开销。我们再深入一点,好吗?密码如果我们按所使用的AEAD对协商的密码套件进行分解,则会得到以下细分:BoringSSL速度告诉我们,AES-128-GCM、ChaCha20-Poly1305和AES-128-CBC-SHA1可以实现3733.3 MB/s、1486.9 MB/s和387.0 MB/s的加密速度,但这种速度随着记录大小的变化而变化很大。实际上,我们看到GCM使用的CPU时间成比例地减少。加密和解密所消耗的CPU时间仍然取决于典型的记录大小以及处理的数据量,这两个指标我们目前没有记录。我们知道ChaCha20-Poly1305通常被老式手机使用,在那里连接时间很短以节省电力,而AES-CBC则用于……嗯,你的猜测和我的猜测一样好,我仍然在使用AES-CBC和做什么,但好的是它的使用率一直在下降。最后请记住,图中6.8%的BoringSSL使用率转化为6.8%x 1.8%=0.12%的CPU总时间。公钥TLS中的公钥算法有两个功能。第一个功能是作为密钥交换算法,这里流行的算法是使用NIST P256曲线的ECDHE,其次是使用DJB的x25519曲线的ECDHE。最后还有一小部分仍然使用RSA进行密钥交换,这是目前唯一使用的密钥交换算法,它不提供前向保密性保证。第二个功能是签名,用于签名握手参数,从而向客户机验证服务器。由于签名RSA非常活跃,几乎四分之一的连接都存在,其他四分之三的连接使用ECDSA。BoringSSL speed报告说,我们服务器上的单个内核可以执行1120个RSA2048个签名/秒、120个RSA4096个签名/秒、18477个P256 ESDSA签名/s、9394个P256 ECDHE操作/s和9278个x25519个ECDHE操作/s。从CPU消耗来看,RSA显然非常昂贵。大约有一半的时间BoringSSL执行与RSA相关的操作。P256消耗的CPU时间是x25519的两倍,但考虑到它处理的密钥交换量是x25519的两倍,同时也用作签名,这是值得称赞的。如果你想让互联网变得更好,请下次获得ECDSA签名证书!散列函数TLS中目前只使用了两个哈希函数:SHA1和SHA2(包括SHA384)。SHA3可能会在TLS1.3中首发。散列函数在TLS中有多种用途。首先,它们被用作证书和握手的签名的一部分,其次用于密钥派生,最后在使用AES-CBC时,在HMAC中使用SHA1和SHA2来验证记录。这里我们看到SHA1比预期消耗更多的资源,但这实际上是因为它被用作HMAC,而协商SHA256的大多数密码套件使用aead。在基准测试方面,BoringSSL速度报告SHA1为667.7 MB/s,SHA256为309.0 MB/s,SHA512为436.0 MB/s(在TLS中被截断为SHA384,这在图中不可见,因为它的使用率接近0%)。结论使用TLS非常便宜,即使在Cloudflare的规模下也是如此。现代密码非常快,AES-GCM和P256就是很好的例子。RSA曾经是密码学的一个重要组成部分,它真正让每个人都可以访问SSL,现在它已经是一个快死的恐龙,被更快、更安全的算法所取代,仍然消耗了不成比例的资源,但即使这样也很容易管理。然而,未来并不明朗。随着我们接近量子计算机的时代,很明显TLS必须尽快适应。我们已经支持SIDH作为一些服务的密钥交换算法,并且有一个NIST的竞争对手,这将决定TLS采用的最有可能的后量子候选,但是没有一个候选可以超过P256。我只希望两年后当我描述我们的优势时,我的结论不会变成"哇,密码很贵!"。