如果我們不改變算法的結構,更大的密鑰是否意味著更高的安全性?
假設我有 128 位密碼,其中每一輪需要獲得 768 個密鑰位。讓我們考慮 10 輪。
它可以很容易地成為 128 位密鑰密碼。我可以進行密鑰調度並生成 7680 位密鑰(假設使用 HKDF)。但我也可以使案例如 512 位密鑰。然後我仍然需要鍵程,但是主鍵更強。並且密碼仍然以相同的速度在相同的 128 位塊上工作(因為它在每一輪中仍然使用 768 個密鑰位)。
只有增加創建輪密鑰的主密鑰的大小,我才能使算法更安全嗎?在這種情況下更難破解主鍵,但回合仍然很弱(攻擊者仍然必須在每回合中破壞 768 位)。所以也許我們應該說它只製作更強大的密鑰調度,而不是實際的密碼?在這種情況下增加主鍵大小是否有意義?
一般來說,不需要超過 128 位的安全性 - 除非可能是為了防止對手可以使用大量密文的多目標攻擊。原因是沒有系統能夠執行 $ 2^{128} $ 操作。因此,如果有一個分析威脅到所使用的結構或輪數,那麼增加輪數或更新算法可能會比增加密鑰大小更能增強密碼的安全性。
量子電腦並不是真正的例外,但由於它們的工作方式,它們通常首先具有不同的安全價值。因此,對於分組密碼,您通常可以假設 Grover 算法將量子電腦的安全性降低到 64 位。為此,您需要一台具有足夠量子位和糾錯功能的成熟量子電腦,而不是我們現在擁有的昂貴玩具。
儘管如此,這意味著升級到 256 位安全性可能是一個好主意,以便在考慮量子計算/多目標攻擊時恢復 128 位安全性。再高一點意義不大。增加輪數是否明智取決於算法。也許已經使用了保守的回合數。另一方面,密鑰時間表的擴展可能需要使用更多輪次。一個很好的例子當然是 AES,根據密鑰大小使用 10、12 或 14 輪。
如果內部狀態和/或輪數已經足夠大,這可能不是必需的。但請注意,HKDF 不是擴展密鑰的有效方式。您不想要一個非常繁重的密鑰調度程序,因為執行它需要大量的指令(這反過來意味著使用硬體實現時的門)。而且 HKDF 在初始化期間也被認為是計算密集型的。在您的情況下這可能沒問題,但它不適用於通用密碼。