幸运十三的攻击挤入’破解’HTTPS加密

网上交易的安全性,又在聚光灯下,一对英国密码破译瞄准TLS。

TLS或传输层安全性,SSL的继任者,或安全套接字层。

这是系统的S HTTPS(安全网站上看到的挂锁),并提供了许多其他协议的安全性了。

2011年的臭名昭著的BEAST攻击一样,它有一个Groovy名称: 幸运十三

这个名字来源于加密的TLS数据包的事实,有13头TLS加密计算上依赖于一体的所消耗的字节。

→文件的名称是有点厚脸皮-作者挖苦地指出:“从某种意义上说,13 幸运 ,但12岁时已经幸运,”因为12字节的头,使他们的攻击更有效。

为了给你一些想法是什么使密码破译打勾,他们是如何管理甚至精心预谋的混乱中提取秩序,这里的这一切是如何开始的。

论文作者注意到,最TLS会话加密的数据包:

  • 加密一个安全的分组密码,通常AES CBC模式,以保持内容的秘密。
  • 包括强大的密码校验,通常是HMAC-SHA1,以防止错误和伪造。

你可能认为不是一个而是两个强大的加密基元,将不可避免地提高安全性,但,密码学家不认为这样。

Nadhem AlFardan和肯尼斯·帕特森,著名的信息安全研究中心,是伦敦大学的一部分,皇家霍洛威认识彼此,因为他们在TLS结合的方式,他们可以利用这两个安全功能。

大大过于简单,攻击依赖于以下内容:

  • AES分组密码加密16个字节的时间。长不是16字节的倍数的数据的数据包必须被充分填充,直到它们。
  • TLS数据包校验和被存储在加密层后的原始数据,但在此之前任何必要的填充。

当的TLS服务器接收到一个包,是HMAC-SHA1校验和计算,和AES-CBS加密的,它需要验证它,像这样:

  • 解密接收到的数据,这应该是一个16个字节的长度的倍数。
  • 识别的任何填充在解密的缓冲区的末尾,并剥离它关闭。
  • 删除最后20个字节(HMAC-SHA1校验码的长度),并将其存储,以供参考。
  • 计算HMAC-SHA1的留在缓冲液(填充和参考校验)。

如果所计算的HMAC-SHA1校验和不匹配的参考校验,然后一直有一个错误或伪造。服务器将发回一个错误消息并终止连接。

现在想象一下,你是一个中间人,或者一个人在这方面的中间人。你不能解密和重新加密的数据包,因为他们飞了过去,但可以拦截他们,缩短他们,他们巧妙地改变,并通过修改后的版本。

每次你这样做,你会打破你的TLS会话攻击,但你可以这样做,可能只是泄漏信息,里面装的是什么现在破会议的方式。

这不会立即给你王冠上的宝石,但如果你什么都可以提取加密的数据流,你已经违反了TLS加密的神圣性,应该提供。

诀窍是,当你截断的加密数据包,那里是一个机会,在纯文本的切碎,关闭数据流结束会看像那种填充字节,TLS将有增加,如果原来的数据已经被更短的开始。

在这种情况下,TLS服务器将脱掉它认为是填充,提取它认为是数据包的校验和,然后验证校验和相匹配。

校验值不匹配,当然,但你不关心这个。

你关心的是多长时间的的TLS服务器需要回复其错误消息时,它实现了数据包是无效的。

由于的方式,HMAC-SHA1作品的,需要4个单位的CPU时间进行校验的第55个字节的数据,再加上额外的时间单位,每增加64字节块(或部分结束时)。

作者认识到,两个字节调整的加密数据包的一部分,将其截断,他们有机会约在65000,服务器最终会误以为消息填充,剥离的填充和校验是什么离开。

除非TLS服务器代码已经仔细设计,以消耗相同的时间量,而不管所解密的数据包的内容,这将需要时间处理untweaked分组五分之四。

这会发生,因为调整了欺骗数据包校验和55字节或更少的数据,而不是56岁或以上的服务器。

如果研究人员能够可靠地计量时间的这种加速服务器的错误响应速度有多快回来,然后,在调整的基础上,他们现在可以计算两个字节的原始数据包。

通过系统地尝试所有可能的两个字节的调整(2月16日 ,65536),并假设测量的最佳时机,才能保证提取的加密字节。

一旦这些都裂开了前两个字节,一个14个字节可以被破解,一个字节的时间,通过尝试所有可能的256,每个字节的调整,总的“调整成本”,2月16日 + 14×2 ~~ 8。

这是幸运的十三攻击,怪异的简要操作,如果没有理论,术语。

这不是一个非常实用的攻击,而不是因为完美的定时测量是不可能的:

  • 每个调整的尝试导致TLS会话终止,这可能是明显的和费时的。
  • 每个修改过的会话需要有相同的明文,在相同的数据包的位置的调整,以做详尽。
  • 需要2 7 2月16日的调整(即800万的哑弹TLS会话!)一个详尽的一套重复产生足够的统计学显着的时序数据可靠的结果。

哦,这是在理想的网络环境下,TLS客户端,服务器和中间人电脑上相同的专用LAN。

然而,这是一个重要的结果,因为,如上所述,穿刺一些加密神圣应该TLS提供。

解决方案和缓解,未来协议的设计者可能会牢记,包括:

  • 设计和编写代码,所以它是不会适当地更快或更慢时发生错误,即使这意味着执行冗余计算。
  • 使用流密码,而不是块密码,以避免需要对明文填充。
  • 校验码的加密后的数据,而不是加密校验和。这确保了以校验的数量的数据不依赖于明文。
  • 使用经过身份验证的加密算法,如AES-GCM相结合的校验和加密。

有趣的是,去年上市的缓解以上(使用认证加密)已经支持TLS 1.2版, 近5年前就出来了。

可悲的是,幸运十三点出来的作者,TLS 1.2仍是“尚未得到广泛支持的实现。”

少于12%的网站根据SSL脉冲项目,调查2013年1月支持TLS 1.2,和大多数浏览器 (IE在Windows 7和8是一个显着的例外),不包括它,无论是。

也许是时候继续前进!