Raccoon攻击可以打破特定条件下的TLS 加密

安全
Raccoon攻击利用了TLS 规范中的侧信道,TLS 1.2及之前版本规定premaster 密钥中的所有零开始的零字节在进一步计算之前都需要剥离。

[[343456]]

 Raccoon 攻击是TLS规范中的时序漏洞,影响HTTPS 和其他基于TLS 和 SSL 的服务。基于 TLS 的这些协议使得用户可以在浏览web网站、使用邮箱、发送即时消息时没有第三方可以读取通信的内容。

Raccoon攻击使得攻击者可以在特定情况下打破TLS 加密,读取敏感通信内容。该漏洞是非常难以利用的,需要非常精确的时序测量和特定的服务器配置才可以利用。

攻击概述

Diffie-Hellman (DH)密钥交换是 TLS 连接中交换密钥的方法。通过使用DH 交换,TLS 通信的双方可以随机生成密钥并计算公钥:ga mod p 和 gb mod p。这些密钥会在TLS KeyExchange(密钥交换)消息中发送。一旦双方接收到密钥,客户端和服务器都会计算一个共享密钥gab mod p(参数密钥),用专门的密钥派生函数来派生所有的 TLS 会话密钥。

Raccoon攻击利用了TLS 规范中的侧信道,TLS 1.2及之前版本规定premaster 密钥中的所有零开始的零字节在进一步计算之前都需要剥离。这就会导致premaster 密钥用作密钥派生函数的输入,而这是基于不同时序配置的哈希函数,精确的时序策略可能会使得攻击者可以构造一个TLS 服务器的预言机(Oracle)。Oracle可以告诉攻击者计算的premaster 密钥是否以0 开头。比如,攻击者可以监听客户端发送的ga,重发给服务器,确定最终的premaster secret是否是以0 开头的。

从premaster 密钥中得到 1个字节并不能帮助攻击者。但是假设攻击者拦截了含有值ga 的ClientKeyExchange (密钥交换)消息,那么攻击者就可以构造与ga 相关的值,并在TLS 握手中发送给服务器。具体来说,攻击者可以构造值gri*ga,可以生成premaster secret gri*b*gab。根据服务器的时序行为,攻击者可以找出以0 开头的premaster secret。

FAQ

如果我是管理员,应该如何修复该漏洞?

Raccoon 是一个复杂的时序攻击,非常难以利用,而且还需要解密现实世界的TLS 会话。

攻击者可以获得什么?

攻击者利用Raccoon 攻击可以解密用户和服务器之间的会话,包括但不限于用户名、密码、信用卡号码、邮件、即时消息、敏感文件等等。

攻击影响

攻击的目标是 TLS 1.2及之前版本的Diffie-Hellman 密钥交换。成功发起攻击需要2个先决条件:

· 服务器重用TLS 握手中的公共 DH 密钥。比如,服务器篇日志为使用静态TLS -DH密文套件,或服务器使用TLS-DHE 并为多个连接重用临时密钥。

· 攻击者需要执行精确的时序测量,这样才能找出DH 共享密钥的第一个字节是否为0。

Raccoon攻击可以窃取私钥吗?

不可以。必须对每个要攻击的连接单独发起攻击。

TLS 1.3受影响吗?

不受影响。在TLS 1.3中,DHE 密钥套件中以0开头的字节和密钥都是不重用的。但是存在TLS 1.3变种允许密钥重用,比如ETS和 eTLS。如果这些变种中重用了临时密钥,就会引发微架构的侧信道,攻击者就可能成功利用。因此,研究人员建议不要使用这些变种。

厂商回应

包括微软在内的多个厂商都对该漏洞分配了CVE编号。

· F5分配的CVE编号为 CVE-2020-5929,许多F5 产品都允许执行该攻击的特定变种,无需精确的时序策略。此外,F5 推荐用户不用重用临时密钥。

· OpenSSL 分配的CVE编号为 CVE-2020-1968。OpenSSL从1.0.2f 版本开始就默认使用新的DH 密钥了,因此攻击主要影响OpenSSL 1.0.2 之前版本。

· Mozilla 分配的CVE编号为 CVE-2020-12413。通过在Firefox中禁用DH 和DHE 密文套件可以解决该问题。

微软分配的CVE编号为 CVE-2020-1596。因为BearSSL 和 BoringSSL不支持 DH(E) 密文套件因此不受该漏洞的影响。

更多参见:https://raccoon-attack.com/#paper

完整分析论文下载地址:https://raccoon-attack.com/RacoonAttack.pdf

本文翻译自:https://raccoon-attack.com/如若转载,请注明原文地址:

 

 

责任编辑:姜华 来源: 嘶吼网
相关推荐

2016-08-17 14:26:09

CTO训练营

2015-06-25 10:06:05

软件定义数据中心

2010-01-13 11:27:06

C++安全性

2023-05-09 11:28:03

雷达技术

2017-07-17 09:29:41

MySQL索引测试

2017-07-11 09:22:23

MySQL索引测试

2010-12-16 13:59:52

OpenSSL

2018-11-05 09:00:13

苏宁易购数据分析

2015-06-24 10:04:50

软件定义数据中心基础设施

2019-08-08 14:40:18

开发者技能工具

2015-08-10 15:51:03

数据中心

2023-10-31 08:32:59

2013-09-27 13:27:18

2022-12-22 10:19:26

数据集智能

2018-01-18 13:12:02

数据安全存储

2013-02-27 16:27:37

2019-03-12 08:23:56

TLS

2021-07-26 07:47:36

数据库

2010-09-27 12:42:15

JVM1.4.1JVM垃圾收集

2020-10-09 09:45:49

加密
点赞
收藏

51CTO技术栈公众号