我在理解here所描述的MixColumns步骤时遇到了问题。
我知道扩散,这一切都有意义,它指出每个列都被视为多项式并在GF(2 ^ 8)上乘以模数。
但是......在GF(2 ^ 8)中乘法。虽然域名仍然是相同的,但由于mod ......它是不可逆的,并且它必须是可逆的,因为这是它的全部要点。
就第一位而言,我的方法是将A,B,C和D作为列的4个字节,A1,A2,...,A8作为位和E,F,G和H作为输出字节。我打算设置
E = A1,B2,C3,D4,A5,B6,C7,D8
F = D1,A2,B3,C4,D5,A6,B7,C8
G = C1,D2,A3,B4,C5,D6,A7,B8
H = B1,C2,D3,A4,B5,C6,D7,A8
因此它是可逆的,一对一,线性和分配
它稍后声明它可以被视为矩阵乘法,但由于矩阵的元素必须是字节并输出为字节,因此矩阵的每个元素必须是模256,因此不可逆和非线性。
我明白这个错了吗?我努力学习数学,并试图了解需要做什么,以便将其转换为逻辑。
答案 0 :(得分:6)
MixColumns可能是AES中最难的部分,但我很兴奋地计算出数学并实际看到数字的来源。我在博客文章“A Stick Figure Guide to the Advanced Encryption Standard (AES)”中详细计算了它的数学。具体来说,请看第4幕,第16幕。我还将其反面放在下一个场景(17)的婴儿床单上。如果您有任何其他问题,请随时在该帖子或此处发表评论。
答案 1 :(得分:4)
MixColumns中的乘法确实是可逆的,并且它不是模256. samiam.org/mix-column.html对MixColumns步骤有一个很好的解释,samiam.org/galois.html在解释如何在AES中进行算术方面做得很好有限域。