[关闭]
@1qaz 2016-10-27T09:44:06.000000Z 字数 1907 阅读 1255

A Surfeit of SSH Cipher Suites

ssh


Martin R. Albrecht, Kenneth G. Paterson et al.
Royal Holloway ,CCS'16
(previous Lucky13,RC4)

对SSH中使用的对称加密模式进行了系统性的分析:实际部署情况的统计、CBC模式新的攻击和常见模式(ChaCha20-Poly1305,Encrypt-then-MAC, AES-GCM)的安全性证明。

Introduction

Bellare 2002, 证明SSH的binary packet protocol 在CBC下的安全性
Albrecht et al.(S&P 2009),CBC 2-18的概率恢复明文32bit,patched in OpenSSH 5.2
对密文的解密是碎片化的的,bellare的证明并没有考虑到这点
K.G.Paterson 2010 证明CTR安全性

主要贡献:
1. 对SSH部署情况的扫描,主流是dropbear而不是之前的OpenSSH。并从他们的版本中发现有些仍然有Albrecht2009的漏洞;AES-GCM、AES-CTR、gEtM、ChaCha20-Poly1305也有显著的比例,一共发现了199中不同的server端首选密码套件
2. OpenSSH 5.2中对Albrecht攻击的patch引入了新的问题,攻击者可以把MAC的计时作为oracle,类似于Lucky13,但是时间差更明显(几百微秒)
3. 对ChaCha20-Poly1305,Encrypt-then-MAC, AES-GCM的安全性证明

Symmetric encryption in SSH

length 必须在[5,218],而且是加密分组长度整倍数
bpp

rfc 4253: Encrypt-and-MAC,CBC,rc4
and other rfcs

OpenSSH 6.2 etm-MAC
6.6 默认禁止CBC和RC4
6.9 默认首选ChaCha20-Poly1305

SSH Deployment Statistics

ZMap,2015.11-2015.12,2016.1, 224 servers
SSH 握手从客户端的密码套件中按优先级选服务端支持的

deploy

130,980(166,572)servers vulnerable to Albrecht's attack

cipher

Attacks on SSH

The Albrecht-Paterson-Watson Attack

CBC: pi = ci-1 xor Dec(ci)

target ciphertext
p*i = c*i-1 xor Dec(c*i)

密文c*i 注入到同一次SSH连接的新的包的第一个block(长度域),IV是上一个密文分组
p'1 = IV xor Dec(c*i)

p*i = c*i-1 xor p'1 xor IV

攻击者改变了长度域:
1. 长度合法,在范围内,且是分组倍数,SSH会一直等待输入,直到读满长度对应的字节数
2. 长度不合法,连接断开

长度合法 ,p'1 在[5,218],前14个比特为0,得到p*i前14个比特

计算SSH继续读入的字节数,可以得到长度域的值,恢复出4个字节明文

OpenSSH countermeasure

长度不对时,不立即断开,调用ssh_packet_start_discard,继续读入输入,并填满PACKET_MAX_SIZE ,然后调用ssh_packet_stop_discard,对PACKET_MAX_SIZE长的数据计算MAC,然后断开连接。PACKET_MAX_SIZE = 218

** MAC不对时也会调用ssh_packet_start_discard **

New attack on OpenSSH CBC

"replace the byte-counting side-channel with a timing side-channel"

将密文插入第一个分组
1. 长度不合法,调用ssh_packet_start_discard,对PACKET_MAX_SIZE长的数据MAC
2. 长度合法,会对数据做MAC,MAC校验失败,调用ssh_packet_start_discard,对PACKET_MAX_SIZE长的数据MAC,因此这里有两次MAC,

长度是随机的,1/2的概率长度至少为217,HMAC是64个字节分组,211次压缩,几百微秒 "easily detectable remotely over a network"

Experimental results

flip a bit in the first block,880 microseconds
flip a bit in a later block,1200 microseconds

openssh commit diff

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注