密文填塞攻擊

本页使用了标题或全文手工转换,现处于香港繁体模式
求聞百科,共筆求聞

在加密學中,密文填塞攻擊Padding Oracle attack,字面譯為填充神諭攻擊)是指使用密文的填充驗證資訊來進行解密的攻擊方法。密碼學中,可變長度的明文資訊通常需要經填充後才能相容基礎的密碼原語。此攻擊方式依賴對密文是否被正確填充的反饋資訊。密文填塞攻擊常常與區塊加密法內的密碼塊連結解密模式有關。非對稱加密演算法,如最佳非對稱加密填充演算法,也可能易受到密文填充攻擊。[1]

對稱加密

在對稱加密中,填充神諭攻擊可應用在區塊加密法工作模式上,其反饋的「神諭」(通常為伺服器)資訊將返回泄漏密文填充的正確與否。攻擊者可在沒有加密金鑰的情況下,透過此資訊的神諭金鑰解密(或加密)資訊。

對密碼塊連結進行密文填充攻擊

對密碼塊連結進行解密需要先解密所有密文組,再驗證填充,隨後移除PKCS7填充,最後再返回解密後的明文資訊。 若伺服器返回「填充無效」資訊而非「解密失敗」錯誤,則攻擊者可利用伺服器本身進行密文填塞來解密(或加密)資訊。

進行密碼塊連結解密的數學公式為

如上文所述,進行密碼塊連結解密時會將每個明文塊與先前的密文塊進行異或比較。 因此,若塊更改了一個位元組,則塊中的對應位元組也會被修改。

假設攻擊者擁有密文塊,且欲解密第二個密文塊來獲得明文。 攻擊者可以更改的最後一個位元組(即),並行送至伺服器。 伺服器隨後將返回最後一個解密塊()的填充是否正確(是否等於0x01)。 若填充正確,攻擊者則能確定的最後一個位元組是,即。 若填充不正確,攻擊者則可以將的最後一個位元組更改為下一個可能的值。 在最不理想的情況下,攻擊者需要進行256次嘗試(即嘗試每個位元組)來尋找的最後一個位元組。若解密的明文塊內包含填充資訊或用於填充的位元組,攻擊者則還需要進行額外的嘗試來排除不同的可能性。[2]

在確定的最後一個位元組後,攻擊者可以使用相同的手段來取得的倒數第二個位元組。 攻擊者可將的最後一個位元組設置為,進而可將的相應位元組設置為。 利用上述的相同方式,攻擊者可繼續更改倒數第二個位元組,直到填充正確為止(0x02, 0x02)。

若一個密文塊包含了128位元(或16位元組)的資訊(如AES),攻擊者可在255x16=4080次嘗試中取得到明文的資訊。這比使用暴力破解所需的次嘗試要快得多。

使用密文填塞進行攻擊

使用密文填塞的攻擊方法起初由塞爾日·瓦德奈於2002年發佈。[3]攻擊者隨後利用此方法投入實際,用於應對SSL[4]和IPSec[5][6]。除此之外,此攻擊方法也用於多個網頁框架上,如JavaServer FacesRuby on Rails[7]ASP.NET[8][9][10]Steam遊戲客戶端。[11]2012年,此方法被證明為應對加固安全裝置的有效方式。[12]

雖然早期的攻擊方法均已被大多數TLS實現修復,但在2013年,網絡上出現了名為幸運十三攻擊的新變種,它使用側信道來重新利用軟件中的缺陷。截止2014年上半年,儘管幸運十三攻擊理論上對特定機器依然有效(參見信噪比),但研究學者們認為此方法在現實中已無威脅。截至2015年 (2015-Missing required parameter 1=month!),對解密互聯網加密協定的最活躍攻擊方法為降級攻擊,如Logjam[13]和Export RSA/FREAK[14]攻擊,此類別方法會欺騙客戶端使用舊版安全性相對較低的但相容性較高的加密演算法。另外,一種名為POODLE[15](2014年下半年出現)將降級攻擊(降級至SSL 3.0)與對老版本不安全協定的密文填充攻擊相結合,進而破解傳輸中的數據。2016年5月,研究人員發現OpenSSL在修復幸運十三時引入了另一個填充神諭,此缺陷被標記為CVE-2016-2107。[16][17]

參考文獻

  1. Manger, James. A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0 (PDF). Telstra Research Laboratories. [2019-07-08]. 
  2. Is the padding oracle attack deterministic, [2019-07-08] 
  3. Serge Vaudenay. Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS... (PDF). EUROCRYPT 2002. 2002 [2019-07-08]. 
  4. Brice Canvel; Alain Hiltgen; Serge Vaudenay; Martin Vuagnoux, Password Interception in a SSL/TLS Channel (PDF), 2003 [2019-07-08] .
  5. Jean Paul Degabriele; Kenneth G. Paterson, Attacking the IPsec Standards in Encryption-only Configurations (PDF), 2007 [2019-07-08] .
  6. Jean Paul Degabriele; Kenneth G. Paterson, On the (In)Security of IPsec in MAC-then-Encrypt Configurations, 2010 [2019-07-08] .
  7. Juliano Rizzo; Thai Duong. Practical Padding Oracle Attacks (PDF). USENIX WOOT 2010. 2010-05-25 [2019-07-08]. 
  8. Thai Duong; Juliano Rizzo. Cryptography in the Web: The Case of Cryptographic Design Flaws in ASP.NET (PDF). IEEE Symposium on Security and Privacy 2011. 2011 [2019-07-08]. 
  9. Dennis Fisher. 'Padding Oracle' Crypto Attack Affects Millions of ASP.NET Apps. Threat Post. 2010-09-13 [2019-07-08]. 
  10. Vlad Azarkhin. "Padding Oracle" ASP.NET Vulnerability Explanation. 2010-09-19 [2019-07-08]. 
  11. Breaking Steam Client Cryptography. Steam Database. [2016-05-01]. 
  12. Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay, Efficient Padding Oracle Attacks on Cryptographic Hardware (PDF), 2012 [2019-07-08] 
  13. Matthew Green; Nadia Heninger; Paul Zimmerman; et al, Imperfect Forward Secrecy: How Diffie–Hellman Fails in Practice (PDF), 2015 [2019-07-08] . For further information see https://www.weakdh.org .
  14. Matthew Green. Attack of the week: FREAK (or 'factoring the NSA for fun and profit'). 2015-03-03 [2019-07-08]. ; see https://www.freakattack.com for more information.
  15. Matthew Green. Attack of the week: POODLE. 2014-10-14 [2019-07-08]. ; for further information, see https://www.poodle.io
  16. OpenSSL Security Advisory [3rd May 2016], 2016-05-03 [2019-07-08] 
  17. Yet Another Padding Oracle in OpenSSL CBC Ciphersuites, Cloudflare, 2016-05-04 [2019-07-08]