使用 Twofish、Serpent 或 Threefish 代替 AES 有真正的目的嗎?
我想知道像 Serpent 或 Twofish 甚至 Threefish 這樣的其他密碼在現實生活中是否真的有用,因為 AES 在大多數情況下似乎非常有效。
但是例如 TrueCrypt 或 VeraCrypt 提供 Serpent 和 Twofish 作為加密驅動器的算法,那麼為什麼有人會選擇這些密碼而不是 AES?(我知道 Threefish 是可調整的,因此可以有效地加密磁碟)。
所以要澄清我的問題:使用 Twofish、Serpent 或 Threefish 代替 AES 有真正的目的嗎?
由於位切片設計,Serpent 很容易通過側通道電阻實現。因為 AES 包含一個 S-Box,它最簡單地實現為一個查找表,它的實現往往容易受到側通道攻擊。
Threefish 是為 SHA-3 競賽而設計的,旨在成為一種加密原語包的一部分,包括加密、散列和 MAC。如果您想要一個不需要實現大量不同算法的加密庫,那麼 Threefish 可能是一個不錯的選擇。
使用 AES 的一個令人信服的理由是許多現代 CPU 支持AES-NI 指令,這幾乎可以肯定使用 AES 進行加密比任何其他算法都快。更快的算法通常總是更好,但除非您加密大量數據,否則您可能永遠不會注意到差異。由於 AES-NI 需要更少的 CPU 週期,它可能會節省幾美分的電費。
當然,作為使用者,這些實現細節可能是不可見的。而且您提到的庫已經實現了許多不同的算法,因此在您關心的情況下,這種優勢可以忽略不計。
提供多個選項通常比單個選項更好(在合理範圍內 - 選擇太多是不好的)。這有點像問為什麼一家餐館的菜單上有不止一個項目。出於任意原因,有些人可能不關心那一項。
對於為什麼選擇 Rijndael 而不是 Serpent 或 Twofish 作為 AES 的逐點概述,您可以調查這些其他相關問題