Beast attack 指的是针对 SSL3.0 和 TLS 1.0 版本的选择明文攻击。主要是因为在分组加密的过程中,如果采用的是CBC等链式IV的加密模式,且攻击者拥有 Blockwise 攻击的能力,那么就能够进行明文恢复攻击。并且,如果攻击者能够随意控制加密的明文,那么攻击者就能够进行 Blockwise attack 的基础上的选择边界攻击。这种攻击主要把需要猜解的数据按比特划分依次猜解,通过构造特殊的输入,将要猜解的字节始终在加密分组的最后一个字节。如此,在一个分组中,除需要猜解的字节外,其他数据可视为已知。表现到公式是为:
$$B_n: enc_k(P_s\oplus C_{n-1})=C_n$$
$$B_{n+1}: enc_k(P_{n+1}\oplus C_{n})=C_{n+i}$$

$$B_{n+i}: enc_k(P_g\oplus C_{n+i-1})=C_{n+i}$$

为了使 $$C_{n+i}=C_n$$则需要 $$P_s\oplus C_{n-1}=P_g\oplus C_{n+i-1}$$由于 $$C_{n-1}$$$$C_{n+i-1}$$已知,且 $$P_s$$$$P_g$$仅存在最后一个字节的差异,所以最多穷举256次,就可以爆破出 $$P_s$$由此可见,beast 攻击在中间人攻击中危害很大。

DROWN (Decrypting RSA with Obsolete and Weakened Necryption) is a serious vulnerability that affects HTTPS and other services that rely on SSL and TLS, some of the essential cryptographic protocols for Internet security. These protocols allow everyone on the Internet to browse the web, use email, shop online, and send instant messages without third-parties being able to read the communication.

https://drownattack.com/ - The DROWN Attack
https://drownattack.com/drown-attack-paper.pdf - DROWN: Breaking TLS using SSLv2

EFAIL describes vulnerabilities in the end-to-end encryption technologies OpenPGP and S/MIME that leak the plaintext of encrypted emails.

https://efail.de/
https://efail.de/efail-attack-paper.pdf - Efail: Breaking S/MIME and OpenPGP Email Encryption using Exfiltration Channels
https://www.eff.org/deeplinks/2018/05/pgp-and-efail-frequently-asked-questions - PGP and EFAIL: Frequently Asked Questions
https://protonmail.com/blog/pgp-efail-statement/ - Statement from PGP developers about eFail
https://blog.mozilla.org/thunderbird/2018/05/efail-and-thunderbird/ - EFail and Thunderbird, What You Need To Know
https://lists.mayfirst.org/pipermail/autocrypt/2018-May/000340.html - [Autocrypt] EFF/EFAIL and Autocrypt

FREAK 攻击的全称是 Factoring RSA Export Keys. 指的是对RSA出口密钥的分解攻击。在上世纪90年代,美国限制出口高强度的加密算法,限制加密强度最大为40位,密钥交换强度最大为512位。因为该限制,导致众多站点依然使用密钥长度为512位的RSA加密。随着CPU和GPU算力的增强,512位密钥长度的RSA已经很容易就被破解。中间人攻击者进行Freak攻击的步骤如下:

  1. MITM 攻击者篡改 Client 发出的 Hello 消息,改为请求“export RSA”
  2. Server 返回 512 比特位的出口级的RSA密钥
  3. 由于OpenSSL/Secure传输漏洞,客户端会接受这个存在漏洞的密钥。
  4. MITM 攻击者破解这个 export RSA。
  5. Client 发送预主密钥给 Server 时,攻击者会解密预主密钥并恢复出TLS主密钥。
  6. 攻击完成,MITM 攻击者已经能够监听并篡改所有的通信内容。

哈希长度拓展攻击是针对采用了 Merkle–Damgård 结构的哈希函数的攻击手段,如 MD5、SHA-1 和 SHA-2 等。该攻击可以伪造消息散列值,产生新的合法数字签名,对数据的完整性和不可否认性造成严重威胁。

https://kerkour.com/sha256-length-extension-attacks - Breaking SHA-256: length extension attacks in practice

The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. This weakness allows stealing the information protected, under normal conditions, by the SSL/TLS encryption used to secure the Internet. SSL/TLS provides communication security and privacy over the Internet for applications such as web, email, instant messaging (IM) and some virtual private networks (VPNs).

http://heartbleed.com/
https://en.wikipedia.org/wiki/Heartbleed

KRACKK 指的是针对WPA2协议的密钥重装攻击(Key Reinstallation Attacks),发现于2017年。由于 WPA2 协议是绝大多数设备的 WIFI 协议,所以影响甚广。WPA2协议规定通过四次握手来协商WIFI传输的密钥。该漏洞在于WPA2协议中规定四次握手中第三个消息报文可以被篡改,攻击者可以伪造钓鱼WIFI,再通过KRACK攻击重置客户端加密密钥,结合中间人攻击,可对被害者流量进行嗅探、劫持和篡改等。

POODLE 漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均使用SSL3.0),便可以成功获取到传输数据(例如cookies)。POODLE 漏洞只对 CBC 模式的明文进行了身份验证,但是没有对填充字节进行完整性验证,攻击者窃取采用 SSLv3版本加密通信过程中的内容,对填充字节修改并且利用预置填充来恢复加密内容,以达到攻击目的。

It is now practically possible to craft two colliding PDF files and obtain a SHA-1 digital signature on the first PDF file which can also be abused as a valid signature on the second PDF file.

https://shattered.it/

虽然在理论上,使用https能够保证传输中的安全,但在实际应用中,即使服务器端开启了https,但由于考虑到客户端可能并不支持https,服务端仍然可能会响应http请求,所以攻击者也可以使用 SSL stripping 技术强制转换为http后再使用中间人攻击。例如在 github 开源的 sslstrip 工具,就是用来将https强制转换为http的中间人攻击工具。

Sweet32 攻击是指在分组加密的过程中,CBC等链式IV的加密模式更加容易遭受碰撞攻击。尤其是当分组密码长度仅仅为64位时,简单的生日攻击就能够应用到碰撞上,再结合Beast 攻击,很容易就能够碰撞出明文。

时序攻击(Timing attacks )属于侧信道攻击的一种,在一些密码验证函数中,开发者出于性能或其他因素考虑,对密码的验证采用了按位验证,当遇到对应位不同时,则立即结束验证,返回错误。这种验证规则使得攻击者有机可乘。攻击者可以通过按位穷举的方式来重复的提交验证并观察响应时间来判定当前位是否正确。举例说明:某信息系统中有一个口令验证函数 F,专用于验证系统口令,系统口令为 “password”, F 依次对输入的口令按位进行比较。当首次遇到不匹配的位时直接返回错误。比如输入为 “pazzword”,那F首先比较第一位 'p',相同则进入第二位 'a' 的匹配,相同则进入第三位 's' 和 'z' 的匹配,发现不同则立刻返回错误。显然, 输入 “aassword” 和 “passworz” 的验证时间相差很大。前者只需要验证第一个字符就返回错误,而后者需要验证8个字符才返回错误。以上就是时序攻击的一个简单举例。