首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SSL/TLS 加密攻击小记

简介

HTTP 协议因为其明文传输的特性已然逐渐被 HTTPS 所代替 . HTTPS 协议即是在 HTTP 协议的基础上增加了 SSL/TLS 加密 , 具体加密方式为 : 由客户端与服务端协商以非对称加密方式生成一个会话密钥 , 然后由会话密钥以对称加密的方式去加密会话内容 . 这样的加密方式的优点是 : 用效率较低的非对称加密方式去加密短小的会话密钥 , 用效率较高的对称加密去加密冗长的会话内容 , 从而保证整个会话的加解密效率 .

HTTPS 连接过程

客户端向服务端发送客户端的SSL/TLS版本号、加密方式、随机数A以及服务端所需的其它信息。

服务端向客户端发送服务端选定的SSL/TLS版本号、加密方式、随机数B、服务器的数字证书以及客户端所需的其他信息。证书中包含服务器的公钥。

客户端使用服务器发来的证书来验证服务器的身份。若认证通过,则继续下一步连接,否则终止连接。

若认证通过,客户端利用之前握手过程中的数据创建预主密钥(premaster secret)并用服务端数字证书中的公钥加密后发送给服务端。

服务端利用私钥解密获取预主密钥。

客户端和服务端利用预主密钥生成会话密钥,用于对之后的会话内容进行加密。

客户端通知服务器,来自客户端的消息将会用会话密钥加密,然后发送一个单独的加密消息,用来告知服务端客户端部分的握手已经完成。服务端也会用相同的方式告知客户端。

握手完毕,会话开始。客户端和服务端会用会话密钥加解密会话内容。

SSL/TLS 加密算法及加密模式

目前HTTPS中使用最多的加密算法为RSA算法和AES算法。

AES算法采用最多的加密模式为CBC模式:原理如下:

采用CBC模式对明文进行加密时,明文会被分成若干组,每组的长度都与密钥长度相同,一般为128位。最后一组如果小于密钥长度,会使用特殊字符填充。第一个明文组会与一个随机向量(IV)异或计算后被加密生成密文,该密文会作为下一个明文组的IV与其进行异或并加密生成密文,依此类推。

C0 = E(P0,IV)Cn = E(Pn,Cn-1)

在https传输过程中,密文是可见的。

HTTPS报文

攻击方式中间人攻击

一般意义上的中间人攻击指攻击者介入客户端和服务端之间,分别与真实的客户端和服务端协商生成会话密钥。服务端向客户端发送数据时,先用与服务端协商的密钥解密获得明文,再用与客户端协商的密钥加密后发送给客户端。反之亦然。

例子:BurpSuite(劫持过程对用户可见并可控)。

缺点:如果客户端要求对服务端进行身份验证,那么伪装成服务端的攻击者无法提供有效的证书来自证身份,在这种情况下,浏览器会进行警告。

如果攻击者可以提供有效证书,则不会有上述问题。但是在有证书的情况下做恶意劫持一旦被发现会被吊销证书。

选择明文攻击

攻击条件:攻击者可以观察到受害者的https数据包,可以用受害者的身份发送HTTPS请求。

攻击原理:

截获数据包,将数据包按长度拆分,得到加密内容的数据部分,提取出 IV 。

构造P2 = P' xor IV xor C1 ,则C2 = E( P' xor IV xor C1 xor C1 ) = E(P' xor IV )

不断重复第2步,直到C2=C1 , 则P2=P1。以此类推。

缺点:每个密文组长度为128位,猜解需要大量的计算资源和时间,效率较低。

BEAST攻击

条件:攻击者可以观察到受害者的https数据包,可以修改受害者发送的明文数据内容,可以用受害者的身份发送HTTPS请求。

攻击原理:

猜解某些固定的明文 。譬如请求方法,User-Agent等。这些信息一般是固定的,猜解比较容易。

对这些明文数据进行填充,使cookie等有效内容的第一位处在某一个分组的最后一位。

发送(已知内容+猜解内容)来猜解cookie的第一位。

猜解到第一位后,修改填充方式,使第二位有效内容处于某一分组的最后一位,继续猜解。以此类推。

优点:每次仅需猜解一位,大大提高了攻击效率。

缺点:攻击条件苛刻。

BREACH攻击:

条件: 攻击者可以让任意数据和某些加密数据在同一个上下文中被压缩。

攻击原理:

1. 压缩算法原理:压缩算法会对目标内容中相同的内容进行压缩。

2. 通过观察压缩后的长度来判断加密数据中是否有这个数据 . 如果长度减小了 , 说明猜解正确 , 否则猜解错误 .

某用户在发送一次HTTP请求时 , 请求头中 Cookie:Session=asdfghjk . 那么攻击者可以在用户的请求头后追加 "Cookie:S" , 这种情况下 , 如果用户和攻击者提交的内容一起被压缩 , 攻击者提交的内容 "S" 与用户cookie中的内容中的第一个字符S相同 , 所以压缩后长度会比不同时要小 , 说明猜解正确 . 通过向服务器发送大量的请求 , 即可完全猜解出 cookie 的值。

针对request压缩的攻击叫做CRIME,针对response压缩的攻击叫做BREACH(要求在response中包含有cookie等关键信息)。

其他:

其他一些攻击方式基本都是基于上述原理(压缩、填充等)来实施的,比如POODLE等,判断方式的不同。还有一些则是SSL在实现中的漏洞,并非本身的缺陷,比如HeartBleed。

针对协议的攻击不论从攻击方式还是攻击条件都比一般的攻击方式更苛刻,成本也更高,所以更多用于学术界的论证,在实际攻防中比较少用到。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180420G189AF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券