修改任意 ARX 密碼的密鑰會使其更難破解嗎?
考慮一個簡單的 ARX 塊密碼,其中在每個塊被加密之後,密鑰被旋轉和/或通過某個變數值進行異或。這會使密鑰更安全,還是只是浪費時間?它會以某種方式降低密鑰的安全性嗎?
例如,如果密鑰是 0101,並且在一個塊被加密之後,密鑰將左移最後 2 位(在本例中為 01)。因此,下一個加密塊的密鑰將是 1010。
或者,後 2 位用於播種偽隨機數生成器,並將密鑰與結果進行異或。
抱歉,如果這是一個愚蠢的問題,我對整個密碼學很陌生,這個問題是在我為今年秋天要學習的課程查看一些資源時想到的。
考慮一個簡單的 ARX 塊密碼,其中每個塊被加密後,密鑰被旋轉和/或異或某個變數值
聽起來您在問“如果我們在操作模式級別應用關鍵計劃會怎樣?”
如果密碼很強大,那麼在呼叫加密函式之間應該不需要修改密鑰;密碼強這一事實意味著攻擊者無法從明文-密文對中獲取密鑰,因此通過以任何確定性方式修改密鑰都無法獲得“更高的安全性”。
它會以某種方式降低密鑰的安全性嗎?
是的,絕對是:假設您公開的確定性密鑰演化函式簡單地輸出所有 $ 0 $ ,不管輸入;我們可能會說這是一個病態的例子,但這實際上只是“你的函式有多大偏差”的極端情況——你的函式可能產生的輸出比函式的輸入更容易被猜到。
例如,如果密鑰是 0101,並且在一個塊被加密之後,密鑰將左移最後 2 位(在本例中為 01)。因此,下一個加密塊的密鑰將是 1010。
在這個特定的例子中,你可以通過旁道資訊洩露密鑰位:依賴於秘密數據的旋轉可以將有關操作數的資訊洩露給外部觀察者。如果攻擊者能夠以某種方式隨意呼叫加密方法,並且他們可以觀察到時間資訊,那麼他們就有可能使用它來恢復密鑰的位。
基本上,在密碼學方面,更多不一定更好:你只想做完成目標所需的事情,而不是更多;過多的操作只會創建更多的攻擊面。