AES 與其他 SBoxes
我不是密碼學家,只是一個感興趣的工程師(現已退休)。我曾經使用 AES 加密/解密模組設計硬體,並使用我自己的 Tcl 腳本使用嵌入式 AES 函式生成測試向量。
但是,我想知道如果修改 AES 以使用超過 1 個 SBox(& 反向),它會“更安全”,還是不是這樣?我找到了 1108 個符合原始標準的 SBox(共 256 個!可能的組合)。我的觀點是有一個簡短的表格來指示每輪 14 使用哪個 SBox(假設 256 鍵)。我意識到這會使 h/wa 有點複雜,但修改 C 程序並不是很複雜。最初只使用 2 個 SBoxes,原始的和另一個,但很容易擴展以在軟體中使用 3,4.. 等。
老實說,它會更安全,但不是很多,這是假設您使用的是有限域反轉 s-box。
更好地使用多個 8 位 s-box 將使它們依賴於密鑰,但是在軟體中可能會產生不幸的副作用,即創建另一個側通道以洩漏有關密鑰的資訊。
如果您想要基於 AES 設計但稍作修改以使其更安全的東西,那麼您想要的不是更多的 s-box,而是具有更多代數複雜性的更好的 s-box。就圓形設計而言,這可能是您在偏離原始設計太多之前可以進行的唯一修改。
另一個要看的地方是關鍵時間表,非常簡單快捷。這既有好處也有壞處,因為它可能是密碼的最薄弱環節,但可以使需要更改密鑰的應用程序可用。想想一個 wifi 晶片,它需要為每個連接的設備使用不同的密鑰,並且需要不斷地切換密鑰才能與它們通信。它還可以“滾動”以節省嵌入式系統上的記憶體,但這意味著可以使用圓形子密鑰來恢復密鑰。
從僅軟體的角度來看,可以通過更改密鑰計劃、減慢速度並使用線性度較低的單向函式生成子密鑰來提高安全性。
有一個很好的工具SBox Generator,它可以從給定的不可約多項式生成 SBox 和逆。GF( $ 2^8 $ ) 有 30 個所謂的特徵多項式。Rijndael作者只是拿了列表中的第一個。認為偏移量(第一個表條目,0x00 的圖像)是固定 0x63;這將是優化擴散的另一個參數。