@1qaz 2016-01-21T05:34:19.000000Z 字数 2229 阅读 1033

# Factoring RSA Keys With TLS Perfect Forward Secrecy

rsa atack ssl

Florian Weimer,Red Hat technical report,2015 原文

## RSA-CRT Optimization

1. Attacks on RSA-CRT
y = S(x) = xd mod N

y1 = y mod P = y e*e^-1mod(P-1)mod P = xdP mod P
y2 = y mod Q = y e*e^-1mod(Q-1)mod Q = xdQ mod Q

y = y2 + h * q,其中 h = (y1-y2)*(1/q mod p)mod p


Bellcore attack(1996) needs one correct and one faulty signature of same message

y = y2 + q*(y1-y2)*(1/q mod p)mod p
y' = y2 + q*(y1'-y2)*(1/q mod p)mod p


gcd(y-y', n) = q

Arjen Lenstra attack(1996) only one faulty signature

y' = y2 + q*(y1'-y2)*(1/q mod p)mod p
y'e  = x mod q
q divides y'e-x,but p does not


gcd(y'e-x , n) = q

y1、y2同时出错就不行了

* 使用的大整数运算库可能产生错误结果 CVE-2014-3570 BN_sqr
* 多个线程间的对数据访问的竞争条件导致的数据错误
* CPU中计算单元的错误
* 在完整性检查通过后，私钥中的关键部分损坏
* CPU caches,main memory bit errors (rowhammer?overflow?)

Countermeasures:

rsa blinding

## RSA in TLS

(EC)DHE-RSA
RSA用来对DH参数签名

h := H(M)
m := 0x01||0xFF||...||0xFF||0x00||ASN.1||h


ASN.1是hash函数用ASN.1表示的标识符，消息M的签名即m^d mod N

RSASSA-PSS：Probabilistic Signature Scheme

## The experiment

target selection：

• 基于域名： Hubert Kario, Rapid7 Sonar,
25 million host names -> 8 million with forward secrecy
1.7 billion TLS handshakes -> 1.4 billion with forward secrecy

• 基于IP ： ZMap ServerKeyExchange
32 million IP -> 10 million with forward secrecy

• 基于证书：
26,000 targets in that category, with about 40 million forward secrecy handshakes

Citrix: TLS-terminating load balancer, old replaced
Hillstone: 200+ keys leak,firmware update
Alteon/Nortel：unable to complete the majority of handshakes successfully
Viprinet: key was corrupted in memory
Fortine: two key leaks in over 90 million TLS handshakes
BEJY:custon Java implementation of SSL

Citrix、Hillstone、ZyXEL确认使用了Cavium的硬件
Hillstone、ZyXEL使用了Cavium提供的custom OpenSSL -> patch SDK

• 公私钥不匹配
• 分解一个损坏的公钥
• No-op RSA :Viprinet 尽管公钥里e=65537,但是签名的值和明文相同，所以e=d=1
• Zero RSA：签名的值为0
RSA-CRT加固检测到了错误，没有把结果写到调用者的buffer中，调用者忽略了签名过程的失败，发送了没有写过的buffer

## Browser behavior

silent retry掩盖了服务器端的问题

IPsec

SSH、 DNSSEC

## 总结

1. RSA-CRT实现没有检查签名是否正确
2. TLS中RSA签名使用确定性的填充
3. 前向安全性被部署地更加广泛
4. 浏览器掩盖了服务器的问题

• 私有
• 公开
• 删除