CBC模式下的AES如果沒有為padding oracle攻擊提供防禦是完全不安全的,對吧?
根據 crypto.stackexchange.com 和網路上的大量閱讀,如果沒有為 oracle padding 攻擊提供防禦,CBC 模式下的 AES 似乎是完全不安全的。而且不只是 AES,如果沒有為 padding oracle 攻擊提供防禦,任何使用 CBC 模式的加密算法都是完全不安全的。甚至還有關於如何從 CBC 模式密碼中恢復純文字的分步影片。 https://www.youtube.com/watch?v=aH4DENMN_O4
所有這一切都讓我大吃一驚,儘管維基百科說原始的填充預言攻擊是在 2002 年發布的https://en.wikipedia.org/wiki/Padding_oracle_attack 如果是這樣的話,怎麼可能經常吹捧 AES256CBC就像強大的現代加密一樣,沒有提到缺乏適當的 HMAC 驗證(Encrypt-Then-MAC)或其他一些填充 oracle 防禦的實現實際上根本不安全?如果我正確理解這一點,這讓我大吃一驚。我是否正確理解這一點?
加密社區的發展非常緩慢。以MD5 安全性為例。一個設計缺陷於 1996 年首次發布,2004 年發現了一個衝突(具有更多設計缺陷)。然而在 2012 年,Flame 惡意軟體的作者能夠使用 MD5 衝突來偽造 Windows 程式碼簽名證書。我們今天仍然聽說使用 MD5 的密碼雜湊轉儲。
為什麼 AES256CBC 經常被吹捧為強大的現代加密,卻沒有提到缺乏適當的 HMAC 驗證(Encrypt-Then-MAC)或其他一些填充 oracle 防禦的實現實際上根本不安全?
這絕對是社區的發展方向。我還沒有進行分析,但我猜現在大多數 TLS/SSL 連接都在使用完整性保護(HMAC 或 AEAD 模式)。當人們在 Crypto.SE 上提出不使用它的東西時,完整性保護也是他們首先提到的事情之一。
需要記住的是,padding-oracle 攻擊是一種線上攻擊,並且非常嘈雜。因此,有很多密碼學案例根本不適用。不過,我同意你的觀點。認證加密應該是預設設置。我們正在到達那裡,但這需要時間。