做搜狗pc网站优,大连网站制作,查询网站注册信息,p2p做网站大型网站的HTTPS实践#xff08;一#xff09;——HTTPS协议和原理 原创 网络通信/物联网 作者#xff1a;AIOps智能运维 时间#xff1a;2018-11-09 15:07:39 349 0前言 百度于2015年上线了全站HTTPS的安全搜索#xff0c;默认会将HTTP请求跳转成HTTPS。从今天开始一——HTTPS协议和原理 原创 网络通信/物联网 作者AIOps智能运维 时间2018-11-09 15:07:39 349 0 前言 百度于2015年上线了全站HTTPS的安全搜索默认会将HTTP请求跳转成HTTPS。从今天开始我们将会分享多篇系列文章为大家重点介绍和解析百度的HTTPS最佳实践。 HTTPS协议概述 HTTPS可以认为是HTTPTLS。 HTTP协议大家耳熟能详了目前大部分WEB应用和网站都是使用HTTP协议传输的。 TLS是传输层加密协议它的前身是SSL协议最早由Netscape公司于1995年发布1999年经过IETF讨论和规范后改名为TLS。如果没有特别说明SSL和TLS说的都是同一个协议。 HTTP和TLS在协议层的位置以及TLS协议的组成如下图 图1 TLS协议格式 TLS协议主要有五部分应用数据层协议握手协议报警协议加密消息确认协议心跳协议。 TLS协议本身又是由Record协议传输的Record协议的格式如上图最右所示。 目前常用的HTTP协议是HTTP1.1常用的TLS协议版本有如下几个TLS1.3TLS1.2,TLS1.1,TLS1.0和SSL3.0。其中SSL3.0由于POODLE攻击已经被证明不安全但统计发现依然有不到1%的浏览器使用SSL3.0。TLS1.0也存在部分安全漏洞比如RC4和BEAST攻击。过去由于主流Web浏览器和应用程序中的TLS实现都支持降级协商过程导致即使服务器支持最新版本攻击者也有机会利用较弱的协议实施攻击。因此到2020年所有主流Web浏览器都将取消TLS1.0和TLS1.1的支持。 TLS1.2暂时没有已知的安全漏洞比较安全同时有大量扩展提升速度和性能当前被较为普遍的使用。 需要关注一点的就是TLS1.3是TLS协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。TLS1.3协议的最终版本RFC8446已于2018年8月10日发布各主流浏览器也逐渐支持TLS1.3。 同时HTTP2也于2015年5月正式定稿RFC7540这个由SPDY协议演化而来的协议相比HTTP1.1又是一个非常重大的变动能够明显提升应用层数据的传输效率。 HTTPS功能介绍 百度使用HTTPS协议主要是为了保护用户隐私防止流量劫持。 HTTP本身是明文传输的没有经过任何安全处理。例如用户在百度搜索了一个关键字比如“苹果手机”中间者完全能够查看到这个信息并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时发现首页或者结果页面浮了一个很长很大的广告这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话用户甚至无法访问百度。 这里提到的中间者主要指一些网络节点是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如WIFI热点路由器防火墙反向代理缓存服务器等。 在HTTP协议下中间者可以随意嗅探用户搜索内容窃取隐私甚至篡改网页。不过HTTPS是这些劫持行为的克星能够完全有效地防御。 总体来说HTTPS协议提供了三个强大的功能来对抗上述的劫持行为 内容加密。浏览器到百度服务器的内容都是以加密形式传输中间者无法直接查看原始内容 身份认证。保证用户访问的是百度服务即使被DNS劫持到了第三方站点也会提醒用户没有访问百度服务有可能被劫持 数据完整性。防止内容被第三方冒充或者篡改。 那HTTPS是如何做到上述三点的呢下面从原理角度介绍一下。 HTTPS原理介绍 1内容加密 加密算法一般分为两种对称加密和非对称加密。所谓对称加密也叫密钥加密就是指加密和解密使用的是相同的密钥。而非对称加密也叫公钥加密就是指加密和解密使用了不同的密钥。 图2 对称加密 图3 非对称加密 对称内容加密强度非常高一般破解不了。但存在一个很大的问题就是无法安全地生成和保管密钥。假如客户端软件和服务器之间每次会话都使用固定的、相同的密钥加密和解密肯定存在很大的安全隐患。如果有人从客户端获取到了对称密钥整个内容就不存在安全性了而且管理海量的客户端密钥也是一件很复杂的事情。 非对称加密主要用于密钥交换也叫密钥协商能够很好地解决这个问题。浏览器和服务器每次新建会话时都使用非对称密钥交换算法协商出对称密钥使用这些对称密钥完成应用数据的加解密和验证整个会话过程中的密钥只在内存中生成和保存而且每个会话的对称密钥都不相同除非会话复用中间者无法窃取。 非对称密钥交换很安全但同时也是HTTPS性能和速度严重降低的“罪魁祸首”。想要知道HTTPS为什么影响速度为什么消耗资源就一定要理解非对称密钥交换的整个过程。 下面重点介绍一下非对称密钥交换的数学原理及在TLS握手过程中的应用。 2非对称秘钥交换 在非对称密钥交换算法出现以前对称加密一个很大的问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题使得对称密钥的生成和使用更加安全。 密钥交换算法本身非常复杂密钥交换过程涉及到随机数生成模指数运算空白补齐加密签名等操作。 常见的密钥交换算法有RSAECDHEDHDHE等算法。它们的特性如下 RSA算法实现简单诞生于1977年历史悠久经过了长时间的破解测试安全性高。缺点就是需要比较大的素数目前常用的是2048位来保证安全强度很消耗CPU运算资源。RSA是目前唯一一个既能用于密钥交换又能用于证书签名的算法。 DHDiffie-Hellman密钥交换算法诞生时间比较早1977年但是1999年才公开。缺点是比较消耗CPU性能。 ECDHE使用椭圆曲线ECC的DH算法优点是能用较小的素数256位实现RSA相同的安全等级。缺点是算法实现复杂用于密钥交换的历史不长没有经过长时间的安全攻击测试。 ECDH不支持PFS安全性低同时无法实现False Start。 DHE不支持ECC。非常消耗CPU资源。 建议优先支持RSA和ECDH_RSA密钥交换算法。原因是 ECDHE支持ECC加速计算速度更快。支持PFS更加安全。支持False Start用户访问速度更快。 目前还有至少20%以上的客户端不支持ECDHE我们推荐使用RSA而不是DH或者DHE因为DH系列算法非常消耗CPU相当于要做两次RSA计算。 图4 百度HTTPS连接详情 需要注意通常所说的ECDHE密钥交换默认都是指ECDHE_RSA使用ECDHE生成DH算法所需的公私钥然后使用RSA算法进行签名最后再计算得出对称密钥。 非对称加密相比对称加密更加安全但也存在两个明显缺点 CPU计算资源消耗非常大。一次完全TLS握手密钥交换时的非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只相当于非对称加密的0.1%如果应用层数据也使用非对称加解密性能开销太大无法承受。 非对称加密算法对加密内容的长度有限制不能超过公钥长度。比如现在常用的公钥长度是2048位意味着待加密内容不能超过256个字节。 所以公钥加密目前只能用来作密钥交换或者内容签名不适合用来做应用层传输内容的加解密。 非对称密钥交换算法是整个HTTPS得以安全的基石充分理解非对称密钥交换算法是理解HTTPS协议和功能的关键。 总 结 在接下来的文章中我们会继续通俗地介绍一下RSA和ECDHE在密钥交换过程中的应用敬请期待。 文章整理自百度HTTPS技术联合团队 来自 “ ITPUB博客 ” 链接http://blog.itpub.net/31557835/viewspace-2219409/如需转载请注明出处否则将追究法律责任。 转载于:https://www.cnblogs.com/jinanxiaolaohu/p/9943773.html