密碼學中的操作模式
我們需要為平均消息大小在 7 到 1024 字節之間的 Telnet 類應用程序選擇一種操作模式。在這種情況下,最好的操作模式是什麼?
一個。CBC
B. CFB
C. 點擊率
D. 以上任何一項都可以
我會選擇e) 以上都不是。這些模式都沒有提供完整性保護,因此除非在其他地方處理完整性,否則您的應用程序非常不安全。攻擊者可以修改傳輸中的位並做一些邪惡的事情。
在這三者中,CFB 和 CTR 對應用程序來說是最糟糕的,攻擊者應該很容易發動成功的攻擊,更改發送到伺服器的格式正確的命令。CBC 需要更多的創造力,但對於聰明的攻擊者來說應該不會太難。
您不僅需要一種操作模式來滿足您的要求。您需要的是一個安全的傳輸協議。當然,對於 TCP 連接而言,最著名的一種可能是 TLS。對於 UDP 連接,您可以使用 DTLS。如果您有共享密鑰,則可以使用其中一種*預共享密鑰 (PSK)*變體。
如果您想創建自己的傳輸協議,您可以使用一種經過身份驗證的密碼。GCM 可能是最著名的一個。CCM 是另一種專門為基於數據包的加密而創建的。EAX 介於兩者之間,但沒有被 NIST 正式標準化。不過,我強烈建議不要創建自己的運輸安全;這條路充滿危險。如果您不確定,只需計算以前 SSL 漏洞的數量即可。
傳輸協議處理重放攻擊、IV 處理以及在需要時使用單獨的會話密鑰等事情。它還可以提供完美的前向保密。這種功能並非僅由操作模式提供。
原則上,您可以使用上述任何一種模式在傳輸模式安全性內提供明文的*機密性。*但是,您必須將它與提供完整性和真實性的某些功能(通常是 MAC 或 HMAC)配對。
例如,CBC 會使攻擊者更難更改命令,但您會立即受到填充預言攻擊的攻擊,這會完全破壞消息的機密性(即命令和/或響應)。
在不太可能發生主動攻擊的情況下,您可以使用 CFB 或 CTR 模式,因為這些模式可以單獨加密每個位。你必須絕對確保你永遠不會重複計數器。