针对按块选择边界攻击的http层对策的制作方法

文档序号:7776196阅读:159来源:国知局
针对按块选择边界攻击的http层对策的制作方法
【专利摘要】当处理器执行客户端应用(106)时,客户端应用(106)可操作以创建超文本传输协议“HTTP”请求,该HTTP请求包含包括机密值的目标报头。将通过安全套接字层“SSL”3.0连接或传输层安全“TLS”1.0连接向web服务器(104)发送HTTP请求。客户端应用在其HTTP层执行针对按块选择边界攻击的对策。客户端应用生成(602)具有不能被web服务器识别的报头名称的额外报头(710、810、910),并且在目标报头之前将额外报头插入(604)HTTP请求中,从而创建修改后的HTTP请求(700、800、900、1000、1100)。将通过SSL?3.0连接或TLS?1.0连接向web服务器发送修改后的HTTP请求而不是未修改的HTTP请求。
【专利说明】针对按块选择边界攻击的HTTP层对策
【背景技术】
[0001 ] 超文本传输协议(HTTP)是无状态协议。为了针对HTTP客户端与HTTP服务器(也称作web服务器)之间的通信提供连续性,HTTP客户端将存储包含由web服务器设置的信息的小甜饼(cookie),并且将在去往web服务器的后续HTTP请求中的小甜饼报头中包含该信息。例如,小甜饼报头可以包括会话标识符。
[0002]传输层安全(TLS)是与在线银行、电子商务和支付网站一起使用的通过安全信道交换数据的工业标准,并且还用作虚拟专用网(VPN)的基本保障(underlying security)。起初,使用用于认证的公共密钥基础设施(PKI)凭证来建立TLS通道,以在通道的每一端生成共享秘密以用于对通过TLS通道的通信进行加密。对称密码技术使用称作会话密钥的共享秘密,从而以安全的方式通过TLS通道来交换数据。
[0003]安全套接字层(SSL) 3.0和TLS 1.0受到已知的攻击,即,容易受到由W.Dai等早在2002年描述的选择明文攻击。直到最近,普遍认为并不容易执行选择明文攻击以攻击HTTPS通信。
[0004]在2011年9月,Juliano Rizzo和Thai Duong在阿根廷的Ekoparty会议上提出了对TLS 1.0/SSL 3.0进行的使他们能够实时地对HTTPS客户端请求进行解密并且拦截HTTPS客户端与web服务器之间的会话的攻击。攻击使用称作BEAST (针对SSL/TLS的浏览器开发)的工具,该工具使他们能够从活动用户会话(例如,与诸如在线银行、电子商务和支付网站(例如,PayPal?)等敏感网站进行的一般认为机密的会话)抓取HTTPS小甜饼并且对HTTPS小甜饼进行解密。该工具针对在TLS/SSL中使用的高级加密标准(AES)加密算法使用称作按块选择边界攻击的攻击。

【发明内容】

[0005]当处理器执行客户端应用时,客户端应用可操作以创建超文本传输协议(HTTP)请求,该HTTP请求包含包括机密值的目标报头。将通过安全套接字层(SSL) 3.0连接或传输层安全(TLS) 1.0连接向web服务器发送HTTP请求。客户端应用在其HTTP层执行对策,对抗对通过SSL 3.0连接或TLS 1.0连接向web服务器发送的HTTP请求的按块选择边界攻击。客户端应用生成具有不能被web服务器识别的报头名称的额外报头,并且在目标报头之前将额外报头插入HTTP请求中,从而创建修改后的HTTP请求。将通过SSL 3.0连接或TLS 1.0连接向web服务器发送修改后的HTTP请求而不是未修改的HTTP请求。
【专利附图】

【附图说明】
[0006]在附图的各个图中,相似的附图标记指示相应、相似或类似的元素。为了使说明简单和清楚,附图中所示的元素不必按比例绘制。例如,为了清楚起见,可以将这些元素中的一些元素的大小相对于其它元素进行放大。
[0007]图1是用于HTTPS通信的示例性客户端-服务器计算机系统的示意图;
[0008]图2是HTTP/1.1请求消息的结构的示意图;[0009]图3和图4是简化的不例性HTTP/1.1请求消息的不意图;
[0010]图5是在TLS/SSL层中的多个密码组中进行密码块链(CBC)加密模式使用的示意图;
[0011]图6是可以在客户端应用的HTTP层组件中执行的一般对策方法的流程图;
[0012]图7-1、图7-2和图7-3是用于生成要包含在HTTP请求消息中的额外报头的备选方式的流程图;
[0013]图8至图12是简化的经修改的示例性HTTP/1.1请求消息的示意图;
[0014]图13是能够进行HTTPS通信的示例性客户端计算机的简化框图;以及
[0015]图14是能够进行HTTPS通信的示例性客户端计算机的简化功能框图。
【具体实施方式】
[0016]图1是用于HTTPS通信的示例性客户端-服务器计算机系统的示意图。服务器计算机102能够通过提供HTTP响应来对HTTP请求进行响应。在图1中,HTTP请求被示为点线箭头,并且HTTP响应被示出为虚线箭头。可以通过诸如内联网或互联网等网络来传输(carry)每一个[HTTP请求、HTTP响应]对。
[0017]服务器计算机102在其上安装有HTTP服务器,也称作web服务器104。web服务器104包括HTTP层组件、SSL/TLS层组件、传输控制协议(TCP)层组件、以及互联网协议(IP)层组件。未示出web服务器104的额外组件,以便不会使描述模糊不清。web服务器104的SSL/TLS层组件与SSL 3.0或TLS 1.0兼容,并且可以与TLS的诸如TLS 1.1和TLS 1.2等的后续版本兼容或不兼容。因此,认为web服务器104与SSL 3.0或TLS 1.0兼容是恰当的。
[0018]安装在客户端计算机108上的客户端应用106通过网络110与web服务器104进行通信。客户端应用106创建要向web服务器104发送的HTTP请求。客户端应用106包括HTTP层组件、SSL/TLS层组件、TCP层组件和IP层组件。未示出客户端应用106的额外组件,以便不会使描述模糊不清。客户端应用106的SSL/TLS层组件与SSL3.0或TLS 1.0兼容。因此,认为客户端应用106与SSL 3.0或TLS 1.0兼容是恰当的。客户端应用106的SSL/TLS层组件可以与TLS的诸如TLS 1.1或TLS 1.2或者这二者等的后续版本或者与TLS的将来版本兼容或不兼容。如果web服务器104和客户端应用106中的一个或这二者与TLS的诸如TLS 1.1或TLS 1.2等的后续版本不兼容,则根据SSL 3.0或TLS 1.0来建立和使用客户端应用106与web服务器104之间的所有SSL/TLS连接。
[0019]客户端计算机108的示例的非穷尽列表包括个人计算机、平板计算机、平板触摸计算机、膝上型计算机、笔记本计算机、智能电话、游戏设备、以及能够通过网络进行通信的任何其它计算设备。
[0020]客户端应用106的示例的非穷尽列表包括web浏览器、浏览器插件、单独的沙盒(sandbox)、web应用、使用HTTP承载的简单对象访问协议(SOAP)的web服务应用、使用HTTP承载的可扩展标记语言(XML)或JavaScript对象表示法(JSON)的web服务应用、以及能够创建要通过SSL/TLS连接传输到web服务器从而访问、消耗或显示web内容的HTTP请求的任何其它软件应用。
[0021]从客户端应用106到web服务器104的SSL/TLS连接上的HTTP请求可能容易受到Rizzo/Duong BEAST攻击(假设满足攻击的其它条件)。
[0022]图2是总体标记为200的HTTP/1.1请求消息的结构的示意图。与HTTP版本1.1兼容的HTTP请求消息(表示为“HTTP/1.1”,于1999年6月的征求评议文件中定义)包括请求行202、一个或多个报头行204、强制空行206、以及可选的消息主体208。这些行被回车字符〈CR〉和换行字符<LF>构成的序列210分隔开。
[0023]请求行202由方法令牌212、后接统一资源标识符(URI) 214、后接HTTP版本标识符216构成。请求行202中的这些元素由单个空白字符<SP>218分隔开。在HTTP/1.1中,方法令牌212是自定义方法令牌或以下八个字符串之一:“HEAD”、“GET”、“POST”、“PUT”、“DELETE”、“TRACE”、“OPTIONS”、以及 “CONNECT”。URI 216 标识将对其应用请求的资源。
[0024]每一个报头行204由报头名称222、后接冒号字符“:”224和报头值226构成。空白字符<SP>218将冒号字符224和报头值226分隔开。主机报头在HTTP/1.1中是强制的,其中,URI与在主机报头中标识的服务器有关。HTTP的准许绝对URI (即,包括服务器的标识的URI)的将来版本将不需要主机报头。
[0025]空行206仅由〈CRXLF〉序列210构成。可选的消息主体208由构成消息主体230的任何字符构成。
[0026]图3是简化的示例性HTTP/1.1请求消息300的示意图,图4是简化的示例性HTTP/1.1请求消息400的示意图。通常,HTTP请求的(除了消息主体以外的)内容是可预测的。也即是说,针对可以在特定的客户端计算机上操作的特定HTTP客户端,HTTP请求的以下元素是可预测的:方法令牌、HTTP版本、大多数报头。虽然小甜饼报头值的实际内容中的一些是不可预测的,但是小甜饼报头在HTTP请求中的存在和格式也是可预测的。
[0027]在示例性的HTTP请求消息300中,URI 310是“/imgl234.png”,而在示例性的HTTP请求消息400中,URI 410是/imgl2345.png,其比URI 310长一个字节。示例性的HTTP请求消息300和400中的所有其它元素是相同的。具体地说,示例性HTTP请求消息300和400的小甜饼报头是相同的,均包含报头值“sessionid = IcfIe8dac26e7afc9161baf30539fd”。
[0028]客户端应用106的SSL/TLS层组件采用密码块链(CBC)模式加密,如图5中所示。
[0029]具有对称密钥K的加密模块E对其固定长度的输入(称作块)执行块密码加密,从而产生具有相同的固定长度的密文输出。例如,模块E可以执行高级加密标准(AES)加密算法版本,其具有128个比特的固定块大小。在另一个示例中,模块E可以执行数据加密标准(DES)加密算法版本或三重DES加密算法版本。
[0030]CBC模式加密涉及按位异或OR(XOR)操作。将每一个明文块与上一个密文块进行X0R,然后对其进行加密以产生下一个密文块。将链中的第一明文块P1与初始化向量IV进行X0R。如果第一块具有索引η = 1,则CBC加密的数学公式是:Cn = EK(P?十C^),针对n>0,其中,Ctl = IV,并且Ek表示使用对称密钥K进行块密码加密。因此,每一个密文块在理论上取决于先前使用的明文的每一个比特。
[0031]在TLS 1.0中,CBC模式加密被应用到由明文块构成的记录,并且针对(除了第一记录以外的)每一个记录的初始化向量IV是前一记录的最后一个密文块,该技术被称作链接的 IV。如 Thai Duong 和 Juliano Rizzo 在“Here Come The ? Ninjas,,中所描述的,“因此,针对每一个记录的初始化向量IV是可预测的,并且拦截网络业务的攻击者可以在实际上对下一个记录进行加密之前获知要加密的下一个记录的IV。这意味着,如果攻击者可以控制向SSL的基本CBC加密方案输入的第一块,则他将能够控制与基本块密码相对应的输入”。
[0032]在2002年2月,W.Dai描述了对SSL/TLS的理论上的选择明文攻击。为了确定明文块Pi,攻击者观测密文块Cp1和Ci,然后在相同的链(因此,相同的对称密钥K用于加密)中,攻击者注入选择明文块匕。明文块匕被选择为等于g十Cp1十Ci4,其中,g是对明文块Pi的值的猜测,Ci^1是观测到的密文块,其与明文块Pi进行XOR并且然后被加密以产生也被观测到的密文块Ci, Cp1是观测到的密文块,其将与选择明文块Pj进行X0R。可以在数学上用公式将密文块Ci表示为EdP1十Cu)。可以在数学上用公式将密文块?.表示为Ek(Pj Θ Cj-1) = Ek(g 十 Cj-1 十 Ci_i 十 Cj_i) = Ex(g ? Ci_i)。如果猜测 g 是正确的(也即是说,g等于Pi),则密文块q等于Eid:^十Ci4),其等于密文块Citl因此,攻击者可以通过核查观测到的密文块Ci是否等于观测到的密文块Cj来证实猜测。
[0033]在128比特(16字节)的块的情况下,涉及所有块的选择明文攻击需要2128次猜测,或者平均来说,需要一半(也即是说,2127)次猜测,这对于实时进行的实时攻击是不切实际的。在“Here Come The任)Ninjas”中描述的Rizzo/Duong BEAST攻击是理论上的选择明文攻击的变形,并且控制或操纵块边界使得一次只攻击一个字节。其被称作按块选择边界攻击(BCBA)。
[0034]考虑TLS记录(因此明文块)是由在小甜饼报头中包括会话标识符的HTTP请求形成的情形。在CBC模式加密之前,每一个HTTP请求被划分为固定长度(例如,16个字节=128个比特)的明文块。通过控制HTTP请求中的URI的长度,攻击者能够控制块边界在HTTP请求中所处的位置。例如,URI的长度增加一个字节使明文块的所有后续边界移动一个字节。通过图3和图4中所示的示例性HTTP请求可以明白这一点,在图3和图4中,为了清楚起见,仅示出了块边界中的一些。URI的长度(从URI 310到URI 410)增加一个字节导致由箭头412、414和416指示的块边界,其相对于由箭头312、314和316指示的块边界前进一个字节。(在图3和图4所示的示例中,每一个明文块和每一个密文块的大小是16个字节=128个比特。其它CBC模式加密方案可以涉及不同的块大小。)
[0035]在图3中所示的示例中,箭头312与箭头314之间的16字节的明文块是由文本“kie:〈SP>sessionid = I”构成。除了最后一个字节以外,箭头312与箭头314之间的16字节的明文块的所有字节都是已知的。只需要256次猜测(或者平均128次猜测)来执行选择明文攻击以识别出“ I”是会话标识符的第一字节。
[0036]在图4中所示的示例中,箭头412与箭头414之间的16字节的明文块是由文本“ie:<SP>sessionid = lc”构成的。假设已经成功地猜测出会话标识符的第一字节“ I”,则除了最后一个字节以外,箭头312与箭头314之间的16字节的明文块的所有字节都是已知的。只需要256次猜测(或者平均128次猜测)来执行选择明文攻击以识别出“c”是会话标识符的第二字节。
[0037]Rizzo和Duong已经证实了这样的攻击,即,在2分钟之内成功地猜测出包含在向paypal.com处的web服务器发送的HTTP请求消息的小甜饼报头中的整个会话标识符,从而允许攻击者接管与web服务器正在进行的会话。[0038]更一般地,可以认为该攻击是将发现目标报头中的机密值的攻击。目标报头可以是包括机密会话标识符的小甜饼报头。正如PayPal?处的web服务器一样,甚至会话标识符小甜饼的名称可能是机密值。备选地,目标报头可以是包括诸如信用卡号、社会保险号或社会安全号等的敏感用户信息的报头。
[0039]提出的对策
[0040]先前已经例如由多个浏览器厂商在TLS层处执行了针对该攻击的对策。然而,在一些情况下,服务器不能处理由于TLS层的对策引起的TLS业务的改变,并且迫使HTTP客户端使用标准TLS 1.0进行通信。此外,在一些情况下,HTTP客户端使用第三方TLS库(例如,0penSSL?、Java 安全套接字扩展(JSSE)、Certicom 公司的 Security Builder? SSL? 等等)并且不能容易地或者不被准许改变TLS层。与先前的对策不同,本文提出了(在串行化HTTP请求之前或之后)在HTTP层处单独执行的针对该攻击的对策。因此,所提出的对策特别适合于不能或者不被准许改变TLS层的应用,并且特别适合于与TLS1.0不兼容的与不能处理TLS业务的改变的web服务器的通信。
[0041 ] 图6是可以在客户端应用的HTTP层组件中执行的一般对策方法的流程图。在600,HTTP请求消息准备好由下层处理并且最终通过SSL/TLS连接传输到web服务器。HTTP请求消息“准备好”在于,HTTP请求消息包含应用通常将在HTTP请求消息中包含使得HTTP请求消息被web服务器适当地处理的所有内容(请求行、任何报头行、强制空行、可选的主体)。HTTP请求消息包含包括机密值的目标报头。在602,应用生成要被web服务器忽略的额外报头。额外报头的内容是无意义的,并且可以包含随机值或任意值。下面参照图7-1、图7-2和图7-3描述用于生成额外报头的三种提出的备选方式。
[0042]在604,应用将所生成的额外报头插入HTTP请求消息中,从而创建经修改的HTTP请求消息。在606,经修改的HTTP请求消息准备好被串行化(如果还未被串行化的话)并且接下来由下层处理并且最终通过SSL/TLS连接传输到web服务器。
[0043]额外报头具有兼容的格式header_name: <SP>header_value<CRXLF>,其中,header_name不被web服务器识别,因此当处理所接收的包含额外报头的经修改的HTTP请求消息时,web服务器忽略整个额外报头。
[0044]应用在目标报头之前将所生成的额外报头插入HTTP请求消息中。对于参照图7-1和图7-2所描述的提出的备选方式,在目标报头之前将额外报头插入HTTP请求消息中是足够的,并且紧邻目标报头之前插入额外报头是不必要的。换言之,在这些备选方式中,在经修改的HTTP请求消息中一个或多个中间报头位于插入的额外报头与目标报头之间是可接受的。然而,对于参照图7-3所描述的提出的备选方式,可以紧邻目标报头之前插入额外报头,但是,在特定的环境中,可以在额外报头与目标报头之间具有一个或多个中间报头。这些环境将取决于在CBC模式的加密中使用的块密码的固定长度的大小、中间报头的大小、以及从目标报头的起始到机密值的距离。
[0045]对策:迫使边界位置到达机密值的起始
[0046]现在参照图7-1,可以按如下方式执行在应用的HTTP层组件处生成额外报头。在712,应用的HTTP层组件计算整数L,并且在714,应用的HTTP层组件生成长度为L个字节的报头。如上所述,报头名称是将不被web服务器识别的报头名称,因此当处理所接收的经修改的HTTP请求消息时,web服务器忽略整个额外报头。所生成的报头的长度L使得在经修改的HTTP请求消息中,机密值处于明文块的起始。这对抗攻击的边界设置方案,从而防止攻击者在明文块中包括机密值的起始,其中,明文块的剩余部分是已知的明文。
[0047]假设从HTTP请求消息的起始到机密值的起始的长度(以字节为单位)是M。通过在目标报头之前插入长度为L个字节的额外报头,从经修改的HTTP请求消息的起始到机密值的起始的长度(以字节为单位)是L+M。期望总和L+M是在CBC模式的加密中使用的块密码的固定长度的整数倍,这是因为(假设明文块的边界在HTTP请求消息的起始处),机密值的起始将在明文块的起始处。换言之,在目标报头之前插入长度为L个字节的额外报头迫使块边界与目标报头中的机密值的起始(也即是说,第一字节)对齐。在数学上,用公式将这一点表示为(L+M) =F*n,其中,整数η≥1,并且F是在CBC模式的加密中使用的块密码的固定长度(以字节为单位)。也即是说,F是与前一密文块进行XOR然后被加密的每一个明文块的固定长度(以字节为单位),并且F是通过加密产生的每一个密文块的固定长度(以字节为单位)。因此,可以按下式计算长度L(以字节为单位):L = F*n-M,其中,M是从HTTP请求消息的起始到机密值的起始的长度(以字节为单位)。
[0048]实际上,可以例如通过使用固定报头名称、后接冒号、空白、以及可变字节数量的任意值使得报头的总长度等于计算出的值L来实现该方法。
[0049]备选地,可以例如通过使用从具有固定报头名称(不必均具有相同的长度)的组中选择的报头名称并且改变报头值(由任意值构成)的长度使得报头的总长度等于计算出的值L来实现该方法。
[0050]报头值由任意值构成,这意味着针对报头值选择哪些值并不重要。报头值可以包括随机值、伪随机值、固定值、或者任何其它值。
[0051]在图8中示出了示例性的HTTP/1.1请求消息800,在图8中,为了清楚起见,仅示出了块边界中的一些,如箭头812、814和816所指示的。示例性的HTTP请求消息800与示例性的HTTP请求消息300的不同之处在于,已经在小甜饼报头之前插入了 15字节的报头“X-MLC:〈SP>8fc0a4〈CRXLF>”810,从而迫使由箭头814指示的块边界位于小甜饼报头中的机密值的起始,也即是说,位于会话标识符的值“ Icf Ie8dac26e7afc9161baf30539fd”的起始。将通过插入长度为15+16n个字节的报头来实现相同的结果,其中,整数η > I。
[0052]在图9中示出了示例性的ΗΤΤΡ/1.1请求消息900,在图9中,为了清楚起见,仅示出了块边界中的一些,如箭头912、914和916所指示的。示例性的HTTP请求消息900与示例性的HTTP请求消息400的不同之处在于,已经在小甜饼报头之前插入了 14字节的报头“XA:〈SP>8f2bc0a4〈CRXLF>”910,从而迫使由箭头914指示的块边界位于小甜饼报头中的机密值的起始,也即是说,位于会话标识符的值“ Icf Ie8dac26e7afc9161baf30539fd”的起始。将通过插入长度为14+16n个字节的报头来实现相同的结果,其中,整数η > I。
[0053]还将注意的是,在图8中,紧邻目标报头之前插入额外报头810,而在图9中,在主机报头与用户代理报头之间插入额外报头910,其中,主机报头和用户代理报头均在小甜饼报头之前。
[0054]因此,通过该对策对抗攻击者通过控制HTTP请求消息中的URI的长度来控制块边界的定位的尝试,这是因为插入的报头具有被精确计算以确保块边界位于目标报头中的机密数据的起始处的长度。因此,将防止攻击者执行选择边界攻击,在该选择边界攻击中,除了机密值的一个未知字节以外,明文块的所有字节都是已知的。[0055]在该提出的对策的修改中,迫使边界位置不与机密值的第一字节对齐,而是与机密值的第二字节对齐。通过这种修改,攻击者能够猜测机密值的第一字节,但不能猜测机密值的任何其它字节。上文提供的数学公式(L+M) =F*n适用于该修改,其中,M现在是从HTTP请求消息的起始到机密数据的第二字节的起始的长度(以字节为单位)。
[0056]对策:由于在目标报头之前插入的可变/随机长度的报头引起边界位置不可预测
[0057]现在参照图7-2,可以按如下方式执行在应用的HTTP层组件处生成额外报头。在722,应用的HTTP层组件以随机或不可预测的方式从集合{1,2,...,N}中选择整数L,在724,应用的HTTP层组件生成具有长度为L个字节的报头值的报头。(所生成的报头的整个长度是H+L+4,其中,H是报头名称的长度(以字节为单位),这是因为冒号、空白和〈CRXLF〉序列向报头贡献了另外4个字节。)这相当于应用的HTTP层组件以随机或不可预测的方式从集合{H+5,H+6,...,H+4+N}中选择整数Q,然后生成具有总长度为Q的报头,其中,H是报头名称的长度(以字节为单位)。如上所述,报头名称是将不被web服务器识别的报头名称,因此当处理所接收的经修改的HTTP请求消息时,web服务器忽略整个额外报头。攻击者预测HTTP请求行中的URI以使块边界位于精确的位置。插入所生成的具有“随机”长度L的报头值的额外报头意味着攻击者的预测只有1/N的机会是正确的。因此,攻击变得更加困难,这是因为攻击者不知道要攻击哪个块。因此,攻击者必须猜测要攻击哪一个块。因此,需要更多次猜测来对一个字节进行解密,并且使得攻击在所需的资源方面更加昂贵并且不切合实际。报头值长度的集合的大小N可以被选择为与密码块的固定长度(以字节为单位)F相同,例如,16。还设想大小N的其它选择。较大的大小N将在所生成的额外报头的长度中提供更多变化,从而使得攻击更加困难。然而,较大的大小N还将增加经修改的HTTP请求消息中的一些的大小。当选择要在执行对策时使用的大小N时,可以考虑这两个矛盾的效果。
[0058]实际上,可以例如使用固定报头名称、后接冒号、空白、L个字节的任意值、以及序列〈CRXLF〉来实现该方法。报头值由任意值构成,这意味着针对报头值选择哪些值并不重要。报头值可以包括随机值、伪随机值、固定值、或者任何其它值。
[0059]在图10中示出了示例性的HTTP/1.1请求消息1000,在图10中,为了清楚起见,仅示出了块边界中的一些,如由箭头1012、1014和1016所指示的。示例性的HTTP请求消息1000与示例性的HTTP请求消息300的不同之处在于,在小甜饼报头之前插入了报头“X-MLC:〈SP>81c8b7a2f〈CR>〈LF>”1010。因此,不是攻击者控制块边界使得箭头312与314之间的明文块等于“kie:<SP>sessionid = I”,而是移动块边界使得箭头1012与1014之间的明文块等于“ XSPhessionid = lcfl”。这干扰了攻击,这是因为攻击者不确定块边界的位置。
[0060]在图11中示出了示例性的HTTP/1.1请求消息1100,在图11中,为了清楚起见,仅示出了块边界中的一些,如由箭头1112、1114和1116所指示的。示例性的HTTP请求消息1100与示例性的HTTP请求消息400的不同之处在于,在小甜饼报头之前插入了 20字节的报头“X-MLC:〈SP>6a2bc0d43a7〈CRXLF>” 1110。因此,不是攻击者控制块边界使得箭头412与414之间的明文块等于“ie:<SP>sessionid = lc”,而是移动块边界使得箭头1112与1114之间的明文块等于“sessionid = Icf le8”。这干扰了攻击,这是因为攻击者不确定块边界的位置。[0061]虽然在主机报头与用户代理报头之间插入了额外报头1010和1110,其中,主机报头和用户代理报头均在小甜饼报头之前,但是在备选的实现中,可以紧邻目标报头之前在其相应的HTTP请求消息中插入这些额外报头中的一个或这二者。
[0062]因此,通过该对策使攻击者通过控制HTTP请求消息中的URI的长度来控制块边界的定位的尝试复杂化,这是因为插入的报头具有不可预测的可变长度。攻击者将需要更多次猜测以执行攻击,这可能使得攻击不太可行。
[0063]对策——在目标报头之前插入随机报头值,使得包含目标报头值的起始的块始终包括随机值
[0064]现在参照图7-3,可以按如下方式执行在应用的HTTP层组件处生成额外报头。在732,应用的HTTP层组件生成Y个字节的不可预测的值或随机值,并且在734,应用的HTTP层组件生成具有总长度为L个字节的报头,其中,L是块密码的固定长度F (以字节为单位)的倍数(η倍)。所生成的报头的报头值的最后Y个字节是在732处生成的Y个字节的不可预测的值或随机值。如上所述,报头名称是将不被web服务器识别的报头名称,并且当处理所接收的经修改的HTTP请求消息时,web服务器忽略整个额外报头。
[0065]攻击者预测HTTP请求行中的URI以使块边界被放置在精确的位置。插入所生成的总长度为L (以字节为单位)的额外报头确保经修改的HTTP请求中的块边界处于相同的精确的位置,其中,总长度L是块密码的固定长度F(以字节为单位)的n倍。
[0066]攻击者可以控制URI,使得块边界被放置在目标报头值的第一字节之后。攻击者旨在进行按块选择边界攻击,其中,HTTP请求的在目标报头值之前的所有(F-1)个字节都是已知的,只有目标 报头值的第一字节是未知的。然而,由于插入了所生成的额外报头,在目标报头值之前的(F-1)个字节中的Y个字节是不可预测的值或者随机值。因此,攻击者需要猜测明文的空间从I个字节扩展为(Y+1)个字节。换言之,攻击者需要进行28(1+y)次猜测(或者平均27+8Υ次猜测)以识别目标报头的未知的第一字节。对于足够大的Y,攻击不再可行。
[0067]在紧邻目标报头之前插入所生成的额外报头的情况下,在目标报头值之前的(F-1)个字节包括Y个不可预测的值或随机值、〈CR〉和<LF>字节、目标报头名称、冒号字节、以及<SP>字节。如果块密码的固定长度F(以字节为单位)特别大,则可以在目标报头之前但是不紧邻目标报头之前插入所生成的额外报头,使得即使在插入的额外报头与目标报头之间存在一个或多个中间报头,在与目标报头值的第一字节相同的明文块中也包括Y个不可预测的值或随机值。
[0068]在图12中示出了示例性的HTTP/1.1请求消息1200,在图12中,为了清楚起见,仅示出了块边界中的一些。URI <7img76edpl234.png” 1202使块边界被放置在精确的位置,例如,如由箭头1204和1206所指示的。由箭头1204指示的块边界紧随小甜饼报头值的第一字节之后。在该示例性的HTTP请求消息中,报头值中的小甜饼的名称本身是机密值。如果报头1208还未被插入HTTP请求消息中,则在小甜饼报头值的第一字节处终止的明文块将等于“/16.0<CRXLF>Cookie:〈SP>7”,使得除了小甜饼报头的第一字节以外,明文块的所有字节都是已知的。紧邻小甜饼报头之前插入报头1208导致箭头1210与箭头1204之间等于“C7d9a〈CRXLF>C00kie:〈SP>7”的明文块,除了小甜饼报头的第一(未知)字节以外,其还包括5个字节的不可预测的值或随机值,即“c7d9a”。因此,虽然攻击者已经成功地通过控制URI控制了块边界,但是紧邻目标报头之前插入5个字节的不可预测的值或随机值通过向明文添加不确定性干扰了攻击。
[0069]如果目标报头在机密值之前具有较长的可预测的前缀,则该对策将不起作用。也即是说,如果〈CR〉和<LF>字节以及目标报头名称(例如,“Cookie”)、冒号字节、<SP>字节和前缀具有等于或大于块密码的固定长度F(以字节为单位)的长度(以字节为单位),则紧邻目标报头之前插入HTTP请求中的报头中的任何不可预测的值或随机值将不在与任何字节的机密值相同的明文块中。例如,如果小甜饼报头以“Cookie:<SP>sessionID =”开始,则紧邻小甜饼报头之前插入HTTP请求中的报头中的任何不可预测的值或随机值将不在与会话标识符的任何字节的机密值相同的明文块中。
[0070]图13是能够进行HTTPS通信的诸如客户端计算机108等的示例性客户端计算机1300的简化框图。
[0071]各个组件可操作地彼此连接。也即是说,组件被物理地、机械地和/或电子地连接,使得它们可以彼此协作地或配合地工作。协作地或配合地工作可以包括控制另一组件或者由另一组件控制或者向另一组件发送电信号或从另一组件接收电信号。图13中的带箭头的线描绘了一些说明性的操作连接,但是本文描述的构思不限于这种连接配置。
[0072]客户端计算机1300包括用于接收电源组1304的接口 1302,电源组1304向客户端计算机1300的电子组件供电。电源组1304可以是一个或多个可再充电电池或者另一种类型的电源,例如,燃料电池或者电源的任意组合。虽然客户端计算机1300也可以无线地或者通过导体从外部源接收功率,但是电源组1304可以为普通使用供电,从而使得客户端计算机1300更容易携带。
[0073]客户端计算机1300包括处理器1306,其控制客户端计算机1300的整个操作。处理器1306可以被配置为执行(也即是说,能够执行)任意数量的操作或功能。虽然在图13中被描绘为单个组件,但`是处理器1306可以被具体实现为处理器或子处理器或者其它专用数据处理组件(例如,可以测量事件之间的时间间隔的时钟)的集合。通信子系统1308控制数据和语音通信功能,例如,电子邮件、PIN(个人标识号)消息功能、SMS(短消息服务)消息功能和蜂窝电话功能。通信子系统1308可以从无线网络1310接收消息并且向无线网络1310发送消息,其中,无线网络可以是以数据为中心的无线网络、以语音为中心的无线网络、或者双模式无线网络。客户端计算机1300接收到的数据被解码器1312解压缩和解
LU O
[0074]在图13中,通信子系统1308是支持语音通信和数据通信的双模式无线网络。可以根据全球移动通信系统(GSM)和通用分组无线电服务(GPRS)标准来配置通信子系统1308。备选地,可以根据增强数据GSM环境(EDGE)或通用移动电信服务(UMTS)标准来配置通信子系统1308。其它无线网络也可以与客户端计算机1300相关联,包括:码分多址(CDMA)或CDMA2000网络。以数据为中心的网络的一些其它示例包括WiFi 802.11、Mobitexn^PDataTAC?网络通信系统。其它以语音为中心的数据网络的示例包括诸如GSM和时分多址(TDMA)系统等的个人通信系统(PCS)网络。
[0075]无线网络1310可以包括提供到客户端计算机1300的无线链路的基站(未示出)。每一个基站定义了覆盖区域或小区,在覆盖区域或小区中,可以实现基站与客户端计算机1300之间的通信。客户端计算机1300在小区中可以移动并且可以移动到由其它小区限定的覆盖区域。客户端计算机1300还可以包括短距离通信子系统1314,其使客户端计算机1300能够在无需通过例如红外线或蓝牙?技术使用无线网络1310的情况下直接与其它设备和计算机系统进行通信。
[0076]为了识别网络访问的订户,客户端计算机1300使用订户标识模块或可拆卸用户标识模块(SM/RUM)卡1316来与诸如无线网络1310等的网络进行通信。可以经由接口1318将SM/RUM卡1316物理地或电子地或即物理地又电子地耦合到其它组件。备选地,用户标识信息可以被编程到存储器1320中。SM/RUIM卡1316用于识别便携式电子设备的用户,存储个人设备设置并且实现对诸如电子邮件和语音邮件等的网络服务的访问,并且未被绑定到特定的客户端计算机1300。
[0077]处理器1306被连接到存储器1320,存储器1320可以包括随机存取存储器(RAM)和或任何其它类型的易失性或非易失性存储器。虽然被描绘为单个组件,但是存储器1320可以包括多个不同的存储器元件。存储器1320通常存储由处理器106执行的诸如操作系统1322和软件程序1324等的软件。这些软件可以被存储在永久性的可更新的存储设备中。可以通过无线网络1310、辅助输入/输出(I/O)子系统1326、数据端口 1328、短距离通信子系统1314或任何其它设备子系统1330将应用或程序装载到客户端计算机1300上。可以存储在客户端计算机1300上并且由客户端计算机1300执行的软件应用的一些示例包括:电子消息传送、游戏、日历、地址簿、和音乐播放应用。通常在制造客户端计算机1300期间安装控制诸如语音通信和数据通信等的基本设备操作的软件应用。可以存储在存储器1320中的其它软件包括诸如客户端应用106等的客户端应用,其与SSL 3.0或TLS 1.0兼容并且可操作以创建HTTP请求(该HTTP请求包含包括机密值的目标报头),生成具有不能被web服务器识别的报头名称的额外报头,并且在目标报头之前将额外报头插入HTTP请求中,从而创建要通过SSL 3.0连接或TLS 1.0连接向web服务器发送的修改后的HTTP请求而不是未修改的HTTP请求。
[0078]辅助I/O子系统1326包括多个输入和输出子系统中的任意一个。辅助I/O子系统1326可以包括例如接收可视输入(其可以包括静态图像或动态图像或者这二者)的摄像机。辅助I/O子系统1326还可以包括用于照亮场景或者当摄像机正在接收可视输入以进行记录时产生闪光的光或灯。辅助I/O子系统1326可以处于处理器1306的控制下或者向处理器1306提供输入。
[0079]在图13中明确示出了一些其它输入输出设备。这些输入输出设备可以处于处理器1306的控制下或者向处理器1306提供输入。显示器1332可以向用户呈现可视信息。显示器1332可以具有任意类型。在一些设备中,显示器1332可以是可以显示可视输出并且接收触摸输入的触摸屏。麦克风1334可以获得可听信息,也即是说,麦克风1334可以接收或捕捉声波形式的可听信息,并且将可听信息转换为模拟信号或数字信号或者其组合。麦克风1334可以具有任意类型,并且可以在多种情况下接收可听输入,例如,在语音通信期间接收谈话、或者在录音期间接收声音、或者在具有录像的录音期间接收声音。扬声器1336可以将可听信息作为声音单独地或者与可视信息一起呈现给用户。通常,用户可以经由输入输出设备记录、控制、存储、处理和回放录音(其可以包括录像)。用户还可以参与任意数量的其它活动,例如,写和发送电子邮件或文本消息、发起或接收电话通信、查看网页、玩游
AAi寸寸ο[0080]客户端计算机1300的组件通常被容纳在外壳(未示出)中,其通常向客户端计算机1300提供了特定的结构完整性或整体形状并且可以是由用户频繁触摸的设备的一部分。外壳可以暴露显示器1332,并且包括针对扬声器1336和麦克风1334的一个或多个端口。外壳还可以包括对诸如按钮或其它开关等的一个或多个输入/输出设备的访问。
[0081]图14是能够进行HTTP通信的诸如客户端计算机108等的示例性客户端计算机的简化功能框图。与参照图6所描述的方法一致,客户端计算机108包括实现用于创建HTTP请求的装置的模块1402,其中,HTTP请求包含包括机密值的目标报头。要通过SSL 3.0连接或TLS 1.0连接向web服务器发送HTTP请求。客户端计算机108包括实现用于生成不能被web服务器识别的额外报头的装置的模块1404。例如,模块1404可以实现用于执行参照图7-1所描述的方法、参照图7-2所描述的方法或者参照图7-3所描述的方法的装置。客户端计算机108包括实现用于在目标报头之前将额外报头插入HTTP请求中从而创建修改后的HTTP请求的装置的模块1406。客户端计算机108包括实现用于串行化未修改的HTTP请求或者用于串行化修改后的HTTP请求的装置的模块1408。客户端计算机108包括实现用于建立与服务器的SSL 3.0连接或TLS 1.0连接的装置的551711^模块1410。客户端计算机108包括实现用于进行TCP通信的装置的TCP模块1412以及实现用于进行IP通信的装置的IP模块1414。SSL/TLS模块1410、TCP模块1412和IP模块1414与客户端应用106的SSL/TLS层、TCP层和IP层相似或相当。客户端计算机108包括实现用于由客户端计算机108通过网络进行通信的装置的网络模块1406。
【权利要求】
1.一种修改要通过安全套接字层“SSL” 3.0连接或传输层安全“TLS” 1.0连接向web服务器(104)发送的超文本传输协议“HTTP”请求的方法,所述HTTP请求包含包括机密值的目标报头,所述方法包括: 生成(602)具有不能被所述web服务器识别的报头名称的额外报头(710、810、910);以及 在所述目标报头之前将所述额外报头插入(604)所述HTTP请求中,从而创建要通过所述SSL 3.0连接或所述TLS 1.0连接向所述web服务器发送的修改后的HTTP请求(700、800、900、1000、1100),而不是未修改的HTTP请求。
2.根据权利要求1所述的方法,其中,生成所述额外报头包括:选择所述额外报头的长度,使得所述修改后的HTTP请求的直到但不包括所述机密值的第一字节的以字节为单位的长度是在针对所述SSL3.0连接或针对所述TLS 1.0连接的密码块链“CBC”模式加密中使用的块密码的固定字节长度的整数倍。
3.根据权利要求1所述的方法,其中,生成所述额外报头包括:选择所述额外报头的长度,使得所述修改后的HTTP请求的直到但不包括所述机密值的第二字节的以字节为单位的长度是在针对所述SSL3.0连接或针对所述TLS 1.0连接的密码块链“CBC”模式加密中使用的块密码的固定字节长度的整数倍。
4.根据权利要求1所述的方法,其中,生成所述额外报头包括:以随机或不可预测的方式从预定义集合中选择所述额外报头的长度。
5.根据权利要求1所述的方法,其中,生成所述额外报头包括: 生成(732)不可预测的值或随机值;以及 使用(734)所生成的不可预测的值或随机值作为所述额外报头的报头值中的最后面的值。
6.根据权利要求1所述的方法,其中,紧邻所述目标报头之前将所述额外报头插入所述HTTP请求中。
7.一种客户端计算机(108),包括: 实现用于与web服务器(104)建立安全套接字层“SSL”3.0连接或传输层安全“TLS” 1.0连接的装置的模块(1410); 实现用于创建超文本传输协议“HTTP”请求的装置的模块(1402),所述HTTP请求包含包括机密值的目标报头,其中,要通过SSL 3.0连接或者通过TLS 1.0连接向所述web服务器发送所述HTTP请求; 实现用于生成不能被所述web服务器识别的额外报头(710、810、910)的装置的模块(1404); 实现用于在所述目标报头之前将所述额外报头插入所述HTTP请求中从而创建要通过所述SSL 3.0连接或所述TLS 1.0连接向所述web服务器发送的修改后的HTTP请求(700、800、900、1000、1100),而不是未修改的HTTP请求的装置的模块(1406); 实现用于进行TCP通信的装置的传输控制协议“TCP”模块(1412); 实现用于进行IP通信的装置的互联网协议“IP”模块(1414);以及 实现用于由所述客户端计算机通过网络进行通信的装置的网络模块(1416)。
8.根据权利要求7所述的客户端计算机,其中,所述实现用于生成所述额外报头的装置的模块(1404)实现用于进行以下操作的装置:选择所述额外报头的长度,使得所述修改后的HTTP请求的直到但不包括所述机密值的第一字节的以字节为单位的长度是在针对所述SSL 3.0连接或针对所述TLS 1.0连接的密码块链“CBC”模式加密中使用的块密码的固定字节长度的整数倍。
9.根据权利要求7所述的客户端计算机,其中,所述模块(1404)实现用于进行以下操作的装置:选择所述额外报头的长度,使得所述修改后的HTTP请求的直到但不包括所述机密值的第二字节的以字节为单位的长度是在针对所述SSL 3.0连接或针对所述TLS 1.0连接的密码块链“CBC”模式加密中使用的块密码的固定字节长度的整数倍。
10.根据权利要求7所述的客户端计算机,其中,所述模块(1404)实现用于进行以下操作的装置:以随机或不可预测的方式从预定义集合中选择所述额外报头的长度。
11.根据权利要求7所述的客户端计算机,其中,所述模块(1404)实现用于进行以下操作的装置:生成(732)不可预测的值或随机值,以及使用(734)所生成的不可预测的值或随机值作为所述额外报头的报头值中的最后面的值。
【文档编号】H04L29/08GK103812926SQ201310559789
【公开日】2014年5月21日 申请日期:2013年11月12日 优先权日:2012年11月14日
【发明者】亚历山大·舍肯, 格雷戈里·马克·扎韦鲁哈, 亚历山大·特鲁斯科夫斯基, 迈克尔·马托夫斯基, 奥斯曼·佐哈比·阿芬 申请人:黑莓有限公司, 塞尔蒂卡姆公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1