@1qaz
2016-10-27T09:44:06.000000Z
字数 1907
阅读 1255
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)的安全性证明。
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的安全性证明
length 必须在[5,218],而且是加密分组长度整倍数
rfc 4253: Encrypt-and-MAC,CBC,rc4
and other rfcs
OpenSSH 6.2 etm-MAC
6.6 默认禁止CBC和RC4
6.9 默认首选ChaCha20-Poly1305
ZMap,2015.11-2015.12,2016.1, 224 servers
SSH 握手从客户端的密码套件中按优先级选服务端支持的
130,980(166,572)servers vulnerable to Albrecht's 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个字节明文
长度不对时,不立即断开,调用ssh_packet_start_discard,继续读入输入,并填满PACKET_MAX_SIZE ,然后调用ssh_packet_stop_discard,对PACKET_MAX_SIZE长的数据计算MAC,然后断开连接。PACKET_MAX_SIZE = 218
** MAC不对时也会调用ssh_packet_start_discard **
"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"
flip a bit in the first block,880 microseconds
flip a bit in a later block,1200 microseconds