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

服务器_何以笙箫默小说百度云_好用

小七 141 0

查查:使用加密技术提高移动性能

CC BY-ND 2.0图像图片CloudFlare一直在尝试通过采用最新和最好的web技术来改善客户体验,以便我们的客户(以及他们的访问者)获得快速和安全的web浏览体验。现在越来越多的网站默认使用HTTPS。这一巨大的变化是由许多组织率先发起的,其中包括CloudFlare为数百万个使用通用SSL的站点提供免费SSL,谷歌正朝着在Chrome中将纯HTTP标记为不安全的方向前进,以及Let's Encrypt项目计划在2015年免费提供证书。如果实现了最新的HTTPS功能,加密的web不仅更安全,而且比未加密的web更快。HTTPS站点在CloudFlare上迅速发展,因为我们跟上了最新的性能增强功能:默认情况下,所有客户都启用SPDY 3.1。SPDY通过启用多路复用来实现比HTTP更快的下载速度OCSP装订:更快的吊销检查。使用CFSSL的优化证书捆绑包,我们的开源SSL绑定器:优化的证书链在浏览器中提供更快的证书验证ECDSA证书适用于所有使用通用SSL的免费客户:具有较小密钥的较小证书可以加快连接建立时间全局会话票证恢复可在全局负载平衡的服务器上更快地恢复会话:与已访问站点的连接将立即启动,恢复所需的往返时间减少一次今天,我们添加了一个新的特性,实际上是一种新的加密形式,它可以提高移动性能:ChaCha20-Poly1305密码套件。直到今天,谷歌服务是互联网上唯一支持这种新算法的主要网站。现在CloudFlare上的所有站点也支持它。这意味着移动浏览器在使用CloudFlare访问站点时可以获得更好的体验。截至今天(2015年2月23日)发布,到CloudFlare的https连接中有近10%使用新的密码套件。下图显示了在全局范围内打开ChaCha20/Poly1305时的上升趋势:最大TLS加密HTTPS连接的协议称为传输层安全性(TLS)。TLS的一个优点是可以提出新的加密算法或密码,并将其添加到规范中。正如我们在TLS简介中所描述的,TLS密码套件有几个组件。以下各项都有一种算法:密钥建立(通常是Diffie-Hellman变体或RSA)身份验证(证书类型)机密性(对称密码)完整性(哈希函数)我们添加的新密码套件包括用于数据加密的新对称密码(基于ChaCha20和Poly1305算法)。目前TLS中还没有针对移动浏览器和API优化的安全加密算法,这些新密码填补了这一空白。有两种类型的密码通常用于用TLS加密数据:块密码和流密码。在分组密码中,数据被分成固定大小的块,每个块都被加密。在流密码中,数据一次加密一个字节。这两种密码都有各自的优点,分组密码通常在硬件上很快,在软件上稍慢,而流密码通常有快速的软件实现。TLS有一个安全的分组密码AES,它已经在硬件中实现,并且通常非常快。TLS当前的一个问题是没有安全的流密码选择。用于TLS的事实上的流密码是RC4,它已经被证明有偏差,不再被认为是安全的。AES是一种可以在大多数现代计算机上使用的好密码。英特尔处理器自2010年Westmile推出以来,就提供了AES硬件支持,使AES操作有效地免费。这使得它成为我们服务器和使用现代台式机和笔记本电脑的网络访问者的理想密码选择。对于老式电脑和移动设备来说,这并不理想。手机和平板电脑通常没有AES的加密硬件,因此需要使用密码的软件实现。当在软件中实现时,AES-GCM密码可能特别昂贵。对于每一个处理器周期都会消耗宝贵的电池寿命的设备来说,这是不太理想的。对于这些移动设备来说,低成本的流密码是理想的,但是唯一的选择(RC4)不再安全。为了为移动设备提供一种电池友好的AES替代方案,几位来自Google的工程师开始寻找并实现一种快速安全的流密码来添加到TLS中。他们的选择——ChaCha20-Poly1305——于2013年11月加入Chrome31,并于2014年4月底在Android和iOS上使用Chrome。在TLS中选择安全的流密码对于移动性能是一件好事。增加密码多样性也是很好的保证。如果有人在将来某个时候在基于AES的密码套件中发现了一个缺陷,那么它将提供一个安全、快速的选择。安全我们以前谈到过不同类型密码的相对强度。有些密钥比其他密钥更强大,当使用新算法时,必须使用适当的加密强度来选择密钥。这些新的密码套件甚至比最好的标准选择更安全。新的密码套件使用了两种算法:ChaCha20(一种流密码)和Poly1305(一种代码验证器)。这两种密码原语都是由danbernstein教授(djb)在2008年和2005年发明的。一年多以来,它们都经过了学术界的彻底审查和Chrome的战斗测试。来自IETF互联网草案:cha256位cha20密码旨在提供安全性。Poly1305验证器的设计目的是,即使在发送了2^64条合法消息之后,也能以1-(n/(2^102))的概率拒绝伪造消息,因此用[AE]的术语来说,它是SUF-CMA(~mihir/papers/oem.html).总之,对于HTTPS,安全级别已经足够了。CloudFlare的AES-GCM密码提供了大约128位的安全性,这对于经得起未来考验的通信来说已经足够了。ChaCha20远远不止于此,它提供256位的安全性。Poly1305提供身份验证,保护TLS免受攻击者在安全流中插入假消息的攻击。Poly1305的密钥强度被认为足以阻止这种攻击,提供大约100位的安全性。TLS中的身份验证比加密稍不重要,因为即使攻击者可以向流中添加假消息,他们也无法在不破坏加密密钥的情况下读取其中的信息。ChaCha20-Poly1305还使用当前推荐的结构来组合加密和身份验证。它是使用带关联数据的认证加密(AEAD)结构构建的。AEAD是一种将密码和验证器组合在一起以获得加密和身份验证的组合属性的方法。这将在前面用两种不同的算法完成,通常是块密码和HMAC。经过身份验证的加密使解密密文变得不可能无序,这有助于排除包括BEAST、Lucky 13和POODLE在内的一系列问题。AEAD还通过在同一个操作中组合使用这两种方法,使有关MAC-then-encrypt-vs-encrypt-then-MAC的古老讨论变得过时。我们的另一个首选TLS1.2加密算法AES-GCM也是AEAD。性能新的密码套件很快。正如亚当·兰利所描述的,ChaCha20-Poly1305在移动设备上比AES-128-GCM快三倍。在解密上花费更少的时间意味着更快的页面呈现和更好的电池寿命。虽然TLS的密码部分可能不是电池消耗的最大来源(握手更昂贵(PDF)),但在加密上花费较少的CPU周期可以节省电池寿命,尤其是在大文件上。例如:解密Galaxy Nexus(OMAP 4460芯片)上的1MB文件:AES-128-GCM:41.6毫秒ChaCha20-Poly1305:13.2ms在功能较弱的Android手机和运行Chrome的老iphone上,差别更为显著。在pre Sandy Bridge和低功耗Intel cpu上也有类似的区别。使用ChaCha/Poly,旧的计算机和移动设备在解密上花费的时间和计算能力更少。在支持AES硬件的台式计算机上,AES-128-GCM仍然是更快的选择。CloudFlare能够根据客户机公布的密码偏好智能地选择是选择AES还是ChaCha/Poly。对于最新的英特尔处理器,我们使用标准的AES-GCM算法。对于没有硬件AES芯片的机器上的浏览器,我们更喜欢ChaCha20-Poly1305。为了在我们的服务器上支持超过一百万个HTTPS站点,我们必须确保CPU使用率很低。为了帮助提高性能,我们使用了CloudFlare工程师Vlad Krasnov和其他人开发的ChaCha/Poly的开源汇编代码版本,该版本已经针对我们服务器的Intel cpu进行了优化。这使得使用这种新密码加密数据的成本降到最低。浏览器支持和未来方向根据最新的浏览器统计,Chrome占据了超过三分之一的网络浏览器市场份额,这一变化对大量用户来说意义重大。虽然ChaCha20-Poly1305目前只是一个Chrome特性,但它很快会得到更广泛的应用。Mozilla正计划在Firefox中添加对ChaCha20-Poly1305的支持,不过这可能需要一段时间才能完成。苹果也有一个悬而未决的问题,跟踪iOS上的实现,尽管不太可能完成,因为新的64位ARM处理器(如iPhone5S和更高版本的处理器)在硬件上支持AES。需要注意的是,CloudFlare和Chrome实现的ChaCha/Poly版本并不是IETF标准化的最终版本。最近的一份稍加修改的草案已经出版,正在走向标准化。我们计划在这个新版本的密码定稿后采用它。展望未来ChaCha20-Poly1305是一种新的密码,它有一个有用的用途:它可以提高浏览器在受限环境下的性能