不使用填充是否意味著缺乏安全性?
我讀過幾篇文章,其中說如果整個明文是塊大小填充的倍數,則不需要填充(並且不使用填充並不意味著失去安全性)。我一般不同意這一點。在某些特殊情況下,例如在 OFB 模式的 CTR 中,填充甚至可以揭示有關塊密碼輸出的更多資訊,而不是不使用它。但是許多目前使用的填充是隨機的。
當使用現代分組密碼的隨機填充時,分組密碼輸入中的最小變化將改變整個分組密碼輸出。因此,填充的隨機性有助於加密安全。
我的第一個問題是上述說法是否正確以及為什麼。第二:CBC/PCBC 等模式是否比 CTR/OFB 等模式更安全?還是取決於使用的填充?
我讀過幾篇文章,其中說如果整個明文是塊大小填充的倍數,則不需要填充(並且不使用填充並不意味著失去安全性)。我一般不同意這一點。
在使用填充的模式(例如,CBC)中,填充是強制性的。這是每個規格。不包括填充根本不是一種選擇。
在某些特殊情況下,例如在 OFB 模式的 CTR 中,填充甚至可以揭示有關塊密碼輸出的更多資訊,而不是不使用它。但是許多目前使用的填充是隨機的。
您在這裡實際詢問的內容有點令人困惑,因為 CTR 和 OFB 不使用填充,因為它們是流密碼。您可以填充它們(例如,使流量分析更加困難),但是否這樣做是完全獨立於底層密碼的塊大小的決定。對於像 CBC 這樣的塊模式,填充到塊大小。
當使用現代分組密碼的隨機填充時,分組密碼輸入中的最小變化將改變整個分組密碼輸出。
僅用於最後一個塊。除非你在前面墊,否則我所知道的任何模式都沒有做到這一點。對於分組密碼的流模式,填充不會改變實際密文的任何位。除非,再次,你墊在前面。
因此,填充的隨機性有助於加密安全。
不,甚至一點也不。即使您確實在分組密碼的前面進行了填充並因此獲得了一個全新的密文,這至少不會直接影響分組密碼的安全性。如果分組密碼事先是安全的,那麼您只需擁有同樣安全的不同比特流。如果分組密碼事先是不安全的,那麼您仍然有一個(通常)容易受到與以前相同的攻擊集的位流。
像這樣的填充可能會改變一些位,但它不會提高密碼的實際安全性。事實上,有時,它可以削弱它(參見 CBC 填充 oracle 攻擊)。分組密碼中的填充不是為了安全起見,而是因為底層分組密碼需要塊大小的輸入。
我的第一個問題是上述說法是否正確以及為什麼。第二:CBC/PCBC 等模式是否比 CTR/OFB 等模式更安全?還是取決於使用的填充?
您的問題實際上沒有任何意義。這些模式具有不同的安全屬性並且以不同的方式失敗。由於其填充,CBC 可能會災難性地失敗以填充 oracle 攻擊。當 IV 被重用時,CTR 可能會發生災難性的失敗,但填充無助於解決這個問題。正確使用時兩者同樣安全,但 CBC 在常見案例中更難正確使用。