sslset安全协议(SSLBEAST攻击详解)
sslset安全协议(SSLBEAST攻击详解)如果第一个分组的序号记为1,CBC加密的数学公式是:分组密码最简单的使用方式是将明文划分成特定长度的分组(例如DES分组长度是64比特),并对每个分组分别进行加密,这种模式称为电子密码本模式(ECB)模式。使用ECB模式时你会发现相同的明文对应相同的密文,这样就会泄露明文中的一些习惯用语或固定模式信息。为了防止这种信息泄露,密码学家们设计了一些密码使用模式,CBC是其中的一种,在SSL/TLS等大部分应用中都使用CBC模式。BEAST攻击的不是SSL认证握手环节,而是SSL加密传输机制。SSL协议中使用的对称加密算法分为:分组加密算法和流加密算法,BEAST漏洞只是针对分组加密算法,包括CBC模式的AES算法,CBC模式的3DES算法等。2004年研究人员公布了针对分组密码算法CBC模式可预知IV问题的攻击方法,Thai Duong 和Juliano Rizzo利用这个漏洞,通过优化,将原
1 BEAST攻击介绍
2011年9月,安全研究人员Thai Duong和Juliano Rizzo发布了一个针对SSL3.0和TLS 1.0的攻击演示视频,该攻击成功截获了用户访问Paypal网站的cookie,并成功假冒用户登录Paypal网站。这个攻击被称为SSL BEAST(Browser Exploit Against SSL/TLS),主要利用了SSL/TLS协议(1.0之前版本)中CBC加密模式使用方法的漏洞,通过截获SSL加密通信以及浏览器等SSL客户端上的agent程序,即可破解https加密消息中的某些关键字段。
2 BEAST攻击原理
2.1 原理概述
BEAST攻击的不是SSL认证握手环节,而是SSL加密传输机制。SSL协议中使用的对称加密算法分为:分组加密算法和流加密算法,BEAST漏洞只是针对分组加密算法,包括CBC模式的AES算法,CBC模式的3DES算法等。2004年研究人员公布了针对分组密码算法CBC模式可预知IV问题的攻击方法,Thai Duong 和Juliano Rizzo利用这个漏洞,通过优化,将原来的破解时间大大缩短。原来的破解方式是分组猜测(如128比特) 因此破解速度很慢,Thai Duong 和Juliano Rizzo掌握了字节猜测的暴力破解方法,并且声明将破解时间缩短到5分钟以内。
该攻击的核心原理有两点:
- 发动针对浏览器的中间人攻击(MIMT),截获包含Cookie或口令信息的SSL 加密消息分组。
- 利用优化了的针对SSL3.0/TLS1.0分组算法的选择明文攻击(block-wise chosen-plaintext attack)方法,在短时间破解包含cookie或口令的SSL 加密分组,从而获取Cookie或口令。
2.2 分组密码CBC模式
分组密码最简单的使用方式是将明文划分成特定长度的分组(例如DES分组长度是64比特),并对每个分组分别进行加密,这种模式称为电子密码本模式(ECB)模式。使用ECB模式时你会发现相同的明文对应相同的密文,这样就会泄露明文中的一些习惯用语或固定模式信息。为了防止这种信息泄露,密码学家们设计了一些密码使用模式,CBC是其中的一种,在SSL/TLS等大部分应用中都使用CBC模式。
如果第一个分组的序号记为1,CBC加密的数学公式是:
CBC解密的数学公式是
2.3 CBC模式的可预知IV攻击原理
已知是口令等敏感信息,对应密文是,CBC加密模式下运算过程如下:
消息CBC处理过程
攻击者知道是口令等敏感信息,并猜测是P,并且知道下一个分组使用进行加密,这样攻击者就可以插入一条消息:
攻击者的攻击动作
这样在j步时,送到分组算法进行加密的数据是,这样攻击者就可以将用户的口令通过猜测出来,而对口令的猜测可以通过字典攻击、社会工程学等方法,快速猜到用户口令。
2.4 Rizzo/Duong攻击原理
Rizzo/Duong找出了一种对CBC可预知IV攻击的改进方法,这种攻击每次猜测口令的一个字节,而不是一个分组。
在一般的应用中,用户端向服务器提交的认证信息内容可简写为:username=alice&password=********。在SSL通信过程中,会根据分组加密算法分组长度对认证信息进行分组,攻击者通过加入信息等方式,控制分组的位置,使得分组为:username=alice&password=*|*******,这样攻击者就可以通过猜字节的方式,逐字节将用户密码等敏感信息猜测出来。
2.5 BEAST攻击的条件
BEAST攻击需要一些条件才能够成功进行,包括:
1. TLS1.0或之前的版本
2. 使用分组密码算法(例如:DES或AES)
3. 攻击者可以在不同的地点进行控制
4. 攻击者可以控制目标信息(cookie或口令)出现在特定的位置
5. 攻击者能够得到目标信息对应的密文分组n,并能控制后续的分组m,并且密文分组n. 和m对应的明文有很少的差别,只有几个比特的差别。
2.2和2.3节中的攻击能够进行需要有开发技术的支撑,获取往浏览器当前SSL加密过程中塞入数据的能力。Thai Duong 和Juliano Rizzo的文章中提到通过HTML5 WebSocket API和Java URLConnection API技术可以让攻击者成功实施上述攻击。
2 应对措施
3.1 浏览器更新情况
hai Duong 和 Juliano Rizzo向主流的浏览器厂商发去了安全提示邮件,包括:Mozilla Apple Microsoft Google Opera CERT 和 Oracle。各厂商也都积极应对发布了相应的安全更新。
Ø Microsoft 发布了:安全公告 MS12-006,安全级别为: 重要, 用于解决“SSL/TLS 中的漏洞可能允许信息泄露 (2643584)”。
该安全更新通过修改Windows 安全通道(SChannel) 组件发送和接收经过加密的网络数据包的方式来解决漏洞。SChannel在进行加密数据时执行记录拆分,SSL协议中将对上层数据封装的一个数据包称为一个记录,通常的拆分方案是将明文的第一个字节作为一个单独的记录进行发送,明文的其它字节根据需要进行记录发送,这种拆分方案叫做1/n-1拆分。关于SChannel的注册表配置可参考(2643584)。
还可以通过限制SSL/TLS算法的方式进行漏洞消除,可参考KB245030。
Ø Mozilla Firefox通过修复Bug665814和Bug689661解决BEAST攻击问题。
Bug665814解决方案是对上层明文消息进行记录拆分,Bug689661通过限制Java插件解决该问题。
Ø Oracle也对Java进行了更新,更新做法也是对数据进行1/n-1分拆。
3.2 应用中应注意的问题
n 使用OTP:硬件令牌、短信认证码等
n 使用浏览器控件的输入框:对信息加密处理
n 关键信息位置的随机化处理
n 注意电脑的安全防护,减少病毒木马等程序的危害,避免访问不清楚的网站
3.3 分组密码算法的使用建议
分组密码的CBC模式从算法本身是没有问题的,使用过程中要注意的是对IV的选取和使用问题。
IV的选取:保证随机性,不可预知
IV的使用:对每次请求使用新的IV,而不是使用一个IV保护整个通信过程。
3.4 建议使用加密认证模式
加密认证模式Authenticated Encryption with Associated Data (AEAD) 是一种同时具备保密性,完整性和可认证性的加密形式。常见的 AEAD 算法如下:
- AES-128-GCM
- AES-192-GCM
- AES-256-GCM
- ChaCha20-IETF-Poly1305
- XChaCha20-IETF-Poly1305
3 密码攻击类型补充
进行密码分析时首先要确定一个攻击模型,一个攻击模型就确定了敌手进行攻击时可得到的信息。最常见的攻击类型有:
n 惟密文攻击(ciphertext only attack):敌手只有密文串。
n 已知明文攻击(known plaintext attack):敌手掌握明文串x和对应的密文串y。
n 选择明文攻击(chosen plaintext attack):敌手可获取对加密机的访问权限,这样他能够获取任意的明文串x对应的密文串y。
选择密文攻击(chosen ciphertext attack):敌手可获得对解密机的访问权限,这样他能获得任意明文串y对应的明文串x。
这些攻击模型中敌手的目标是为了确定正在使用的密钥。显然,这四种类型的攻击强度依次增大,选择密文攻击主要和公钥密码体制相关。
这里我们可以借用这些攻击模型的划分,可以看到2.3节和2.4节是选择明文攻击,但这种攻击的目的不是获取密钥,而仅是获得一个分组的明文。因为不能获取密钥,所以算法本身的安全性是没有问题的,但需要我们注意的算法的使用方式,每次重新加密是都要选择随机的IV。