Block-Cipher
Twofish 如何將 Reed-Solomon MDS 矩陣乘法的結果展平為 32 位結果?
我很難理解 Reed-Solomon 編碼如何產生與輸入相同數量的輸出位。
Twofish 使用這種技術。我已經閱讀了論文,但仍然不太了解展平是如何工作的。在我的理解中,RS應該添加冗餘位,並且輸出必須大於輸入。我錯過了什麼?
另外,如何從RS編碼構造MDS矩陣?它似乎是使用巧妙的啟發式方法建構的。
在加密擴散層設計中,MDS 矩陣通常以下列形式使用:
$$ X_{n+1}=M X_n, $$ 實際的程式碼字在哪裡 $ (X_n | X_{n+1}). $ 所以這是一個比率 $ 1/2 $ MDS 程式碼。它不一定是 Reed Solomon,並且在速度和其他考慮方面進行了優化。這也是在 Twofish 中完成的。
尤其是 $ X_n $ 由 4 個單片語成,它們是 sboxes 的輸出 $ (S_0,S_1,S_2,S_3) $ 和 $ X_{n+1} $ 是這個向量與 MDS 矩陣相乘的結果 $ M $ .
請參閱此問題的答案。