【协议分析】HTTP2技术变革的冲击和影响分析

HTTP2技术变革的冲击和影响分析

HTTP2于今年2月28日正式通过IETF组织批准发布,正式定稿,那么什么是HTTP2,HTTP2将给我们带来哪些改变,将对我们的业务和产品产生哪些影响,应用安全研究部的协议分析研究员对此进行了深入的分析。

HTTP协议发展及特点

HTTP是往返“浏览器”与“WEB Server”的协议(即:HTTP Protocol)。

HTTP 0.9

只有基本的文本 GET
功能,具有典型的无状态性,每个事务独立进行处理。事务结束时就释放这个连接。

客户无法使用内容协商,所以服务器也无法返回实体的媒体类型。

HTTP 1.0(1982年)

面向事务的应用层协议,每一次请求/响应,建立并拆除一次连接。

对客户请求响应慢,网络拥塞严重,安全性不佳。

HTTP 1.1(1997年)

流水方式,客户端对同一服务器发出多个请求,并等待这些请求发送完毕,再等待响应。

HTTP 1.1的服务器端处理请求时按照收到的顺序进行,服务器端发生中断时,会自动重传请求。也就是我们所说的PipeLine模式。

有内容协商机制,提供了(1)身份验证,(2)状态管理,(3)Cache缓存机制。

HTTP2 (201502)

HTTP 2.0 首个 draft
已于 2012 年 11
月发布,2015年2月正式批准发布。它保证了与 HTTP 1.1
的完全语义兼容,最初考虑的是 Google SPDY 协议、微软的 SM
协议和 Network-Friendly HTTP 更新。最终各方推荐了 SPDY
协议,并在此基础上进行了相应更新,详细见后面介绍。

HTTP2协议的优势

?多路复用

一个流上分配多个HTTP请求响应交换,流在很大程度上是相互独立的,因为一个请求上的阻塞和终止不会影响其他请求的处理,相比HTTP1.x协议的PipeLine模式更加灵活。

?HEAD 压缩

HTTP2中最基本的协议单位是帧。每个帧都有不同的类型和用途。例如,报头(HEADERS)和数据(DATA)帧组成了基本的http请求和响应。帧包含的HTTP报头字段是压缩的。HTTP请求有可能是高度冗余的,因此压缩能显著减少请求和响应的大小,相比HTTP1.x传输大量的报文头性能更高。

?服务器推送

添加了一种新的交互模式,即服务器能推送消息给客户端。服务器推送允许服务端预测客户端需要来发送相关数据内容,相比HTTP1.x按请求发送性能更高。

?优先级请求

流量控制和优先级确保正确使用复用流,流量控制有助于确保只传播接受需要的数据,优先级确保有限的资源能被重要的请求使用,相比HTTP1.x按顺序接收数据更加稳定高效。

HTTP1.x与HTTP2报文头差异

通过分析发现HTTP1.X和HTTP2协议之间存在较大差异,详细分析如下:

HTTP1.x

HTTP1.x协议中我们可以很容易提取出HTTP的头部字段,如下红色部分包括请求方法、主机域名地址、引用地址、客户端信息等。图1为HTTP1.x报文内容

GET
/ebook/478d1a62376baf1ffc4fad99 HTTP/1.1

Accept: */*

Referer: http://www.csdn.net/article/2014-09-17/2821721

Accept-Language: zh-CN

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2;
.NET4.0C; .NET4.0E; InfoPath.3)

Accept-Encoding: gzip, deflate

Host: yuedu.baidu.com

图1为HTTP1.x报文格式

HTTP2

HTTP2协议中报文头可以采用Haffman编码,我们看到的报文头信息都是二进制信息,如下为HTTP2协议的报头帧,对报文帧数据进行解码后内容如下:图2为HTTP2报文格式

图2 HTTP2报文格式

1、还原后报头内容如下:

:authority = localhost:3000

:method = Get

:path = /doc/manual/html/index.html

:scheme = http

:accept = */*

:accept-encoding = gzip,deflate

:user-agent = nghttp..

详细分析如下:

0000   50 52 49 20 2a 20 48 54 54 50 2f 32 2e 30 0d 0a

0010   0d 0a 53 4d 0d 0a 0d 0a 00 0c 04 00 00 00 00 00

0020   00 03 00 00 00 64 00 04 00 00 ff ff 00 39 01 05

0030   00 00 00 01 41 8a a0 e4 1d 13 9d 09 b8 c8 00 0f

0040   82 04 94 62 43 91 8a 47 55 a3 a1 89 d3 4d 0c 1a

0050   a9 0b e5 79 d3 4d 1f 86 53 03 2a 2f 2a 90 7a 8d

0060   aa 69 d2 9a c4 c0 17 6d 71 2d 7f 07 1f

分析还原:

1、连接序言:

0000   50 52 49 20 2a 20 48 54 54 50 2f 32 2e 30 0d 0a

0010   0d 0a 53 4d 0d 0a 0d 0a

2、设置帧及数据

0010             00 0c 04 00 00 00 00 00

0020   00 03 00 00 00 64 00 04 00 00 ff ff

设置帧及数据内容

设置最大流数为96,滑动窗口大小65535

3、报头帧及数据

0020                                    00 39 01 05

0030   00 00 00 01 41 8a a0 e4 1d 13 9d 09 b8 c8 00 0f

0040   82 04 94 62 43 91 8a 47 55 a3 a1 89 d3 4d 0c 1a

0050   a9 0b e5 79 d3 4d 1f 86 53 03 2a 2f 2a 90 7a 8d

0060   aa 69 d2 9a c4 c0 17 6d 71 2d 7f 07 1f

41::authority

8a: len = 10 data = a0 e4  1d 13 9d 09 b8 c8 00 0f  data dec = localhost:3000

82: :method = Get

04: :path

94: len = 20 data 62 43 91 8a 47  55 a3 a1 89 d3 4d 0c 1a a9 0b e5 79 d3 4d 1f data dec /doc/manual/html/index.html

86: :scheme = http

53: :accept

03 len = 3 data = 2a 2f 2a */*

90: :accept-encoding = gzip,deflate

7a: :user-agent

8d: len = 13 data = aa 69 d2 9a c4 c0 17 6d  71 2d 7f 07 1f data dec = nghttp

HTTP2产生的影响

工具的影响

?  传统的使用HTTP1.x的爬虫工具无法爬取并获取到HTTP2的网页内容信息。

?  传统的攻防工具使用HTTP1.x的协议无法对HTTP2网站进行渗透测试,无法验证原有攻击是否有效。

对业务的影响

?  应用识别:目前我们只能识别到HTTP2,还无法对HTTP2协议进行细分识别,如目前在HTTP1.x上,我们可以对Youku、爱奇艺等进行细分识别,但对HTTP2还无法做到细分。


URL分类:域名分类业务失效,传统的网页爬取工具紧支持HTTP1.x,对HTTP2网页无法还原获取,与此同时URL分类引擎目前只能对HTTP1.x的HOST字段进行提取过滤,暂时不支持HTTP2。


WAF特征:传统的HTTP1.x的检测特征无法对使用了HTTP2协议的SQL注入跨站等进行检测。


IDP特征:传统的HTTP1.x的特征无法对使用了HTTP2协议的溢出、扫描等攻击进行检测。

?  病毒特征:病毒特征对于HTTP2协议传输的病毒文件将无法进行检测。

对产品的影响:

使用了上面特征库的产品或项目或多或少都会被HTTP2所冲击,一旦HTTP2被大范围推广使用,这将意味着现网所销售的产品都将全面升级,影响范围巨大。

应对策略

特征库:在提取识别和攻击检测规则时要重点考虑HTTP1.x和HTTP2协议之间的差异,重点考虑如何提取一个高质量的通用规则。

引擎开发:支持对HTTP2协议的解码审计,目前应用安全研究部正在着手分析并开发对HTTP2协议的解码审计功能,计划在下半年落地到版本中。

产品:将HTTP2协议带来的需求和挑战落入版本,综合考虑影响,制定输出全网解决方案,在大范围推广使用HTTP2前,将现网版本逐步升级,以此应对风险和挑战。

时间: 2024-08-25 04:46:35

【协议分析】HTTP2技术变革的冲击和影响分析的相关文章

人工智能对教育行业的冲击和机遇分析

问题二:人工智能对教育行业的冲击和机遇分析 作者:梁蓉 一问:人工智能对教学方式有何优化作用? 未来学家.发明家雷·库兹韦尔曾说:"不断减轻人类痛苦是技术持续进步的主要动力."技术发展的愿景和初衷是好的,人工智能也一样,它的研发初衷是为了把人从简单.机械.繁琐的工作中解放出来,然后从事更具创造性的工作.教育人工智能的使命应该是让教师腾出更多地时间和精力,创新教育内容.改革教学方法,让教育这件事变得更好. 目前人工智能在教育领域的应用技术主要包括图像识别.语音识别.人机交互等.比如通过图

人工智能对教育产业的冲击和机遇分析 ——网络文凭就是未来

网络文凭就是未来 摘要:人工智能对教育产业的冲击和机遇分析 作者:冯志颖 文章来源:奇虎360百科 目录: 一.什么是网络文凭? 二.网络文凭被国家认可吗? 三.网络文凭可以决定未来吗? 一.什么是网络文凭? 随着科学技术的发展,教育技术也在不断进步,网络教育是随着社会的发展新兴的一种教育形式,有基础网络教育和高等网络教育两种,我们通常所说的为高等网络教育. 网络教育学院实行弹性学制和学分制,只要在规定的时间内修满规定的学分即可取得网络文凭.凡正式录取的学生.修满规定的学分者,由学校发给国家承认

2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析

2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析 原理与实践说明 1.实践目标 2.实践内容概述    3.基础问题回答 实践过程记录 系统运行监控 恶意软件分析 实验总结与体会   原理与实践说明 实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件. 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

最近刚刚读完李智慧的<大型网站技术架构-核心原理与案例分析>,对每章重点内容作了一些笔记,以便加深印象及日后查阅. 一.大型网站软件系统的特点 高并发,大流量:需要面对高并发用户,大流量访问. 高可用:系统7X24小时不间断服务. 海量数据:需要存储.管理海量数据,需要使用大量服务器. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击. 需求快

《大型网站技术架构 -核心原理与安全分析》读书笔记

大型网站架构演化的价值观 网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所以在网站还很小的时候去追求网站的架构是舍本逐末,得不偿失的.小型网站最需要做的就是为用户提供好的服务来创造价值,得到用户的认可,活下去,野蛮生长. 网站架构设计误区 一味追求大公司的解决方案 大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就失去了坚持自我的勇气,在架构演化的道路上迟早会迷路. 为了技术而技术 网站技术是为业务而存在的,除此毫无意义.在技术选型和架构设计中

大型网站技术架构--核心原理和案例分析 大型网站架构演化(一)

如果把上世纪90年代CERN正式发布web标准和第一个WEB服务的出现当作互联网的开始,那么互联网站的发展之经历了短短20多年的时间.在20多年的时间里,互联网的世界发生了变化,今天,全球有近一半的人口使用互联网,人们的生活因为互联网而产生了巨大的变化.从信息检索到即使通信,从电子购物到文化娱乐,互联网渗透到生活的每一个 角落,而且这种趋势还在蔓延.因为互联网,我们的世界正变得越来越小. 同时我们也看到,在互联网跨越式发展进程中,在电子商务火热的市场背后却是不堪重负的网站架构.某些B2C网站逢促

技术变革 企业互联 ——技术落地用友3.0战略

8月25-26日,由用友和MSUP共同发起的以“技术变革 企业互联”为主题的技术开放日在北京用友产业园中区成功举行.(用友技术开放日活动集锦)本次技术开放日不仅邀请到用友技术骨干对互联网技术应用进行实践分享,还邀请到磁云数字运营副总裁.58到家技术总监及京东敏捷教练等多位互联网研发技术专家走进用友,分享互联网架构实践.生态创新建设及产品设计等方面的精髓,与数百名参与者共同探讨互联网技术的变革与创新.(用友网络执行副总裁 谢志华)用友网络执行副总裁谢志华在活动致辞中表示:目前用友正处于企业互联网的

JAVA读书推荐----《深入分析Java Web技术内幕》--《java多线程编程核心技术》--《大型网站技术架构 核心原理与案例分析》-《Effective Java中文版》

(1)  首先推荐的不是一本书,而是一个博客,也是我们博客园另外一位博友java_my_life. 目前市面上讲解设计模式的书很多,虽然我前面讲了看书是最好的,但是对设计模式感兴趣的朋友们,我推荐的是这个博客.这位博友的设计模式讲得非常非常好,我认为90%的内容都是没有问题且很值得学习的,其讲解设计模式的大体路线是: 1.随便开篇点明该设计模式的定义 2.图文并茂讲解该设计模式中的结构 3.以详细的代码形式写一下该种设计模式的实现 4.补充内容 5.讲解该设计模式的优缺点 对于一个设计模式我们关

Android涂鸦技术及刮刮乐示例分析

概述: 很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点.下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和刮刮乐. 参考: http://blog.csdn.net/lmj623565791/article/details/40162163 此人的博客的确很好,想学习的同学也可以去参考一下这个大牛的其他博客. http://blog.csdn.net/t12x3456/article/details/104329