Modes-of-Operation
XEX 模式 - 如何擾動調整
XEX經典描述的第一部分是
$ X = E_{k}(I) \otimes \alpha^j $
我在網上的範常式式碼中看到的很多是你從 $ T_ = E_{k}(I) $ 並將其用於消息的第一個塊。然後你拿 $ T $ 並左移一位。如果該操作的進位是 1,那麼您在底部字節的 0x87 中進行異或。這成為下一個區塊的加密前和加密後 XOR 材料,依此類推。
此操作與 $ K1 $ 和 $ K2 $ CMAC中的推導操作。這要麼是一個有趣的巧合,要麼……好吧,我不知道。
這在功能上正確嗎?
然後你拿 $ T $ 並左移一位。如果該操作的進位是 1,那麼您在底部字節的 0x87 中進行異或。這成為下一個區塊的加密前和加密後 XOR 材料,依此類推。
這裡發生的是域中的有限域乘法 $ GF(2^{128}) $ , 模不可約多項式 $ x^{128} + x^7 + x^2 + x + 1 $ ; 如果您仔細查看該多項式的最後四項的指數,它們對應於
0b10000111
=中一位的位置0x87
。這種移位和條件異或技巧是一種將二進製字元串“加倍”的廉價方法 $ GF(2^{128}) $ ,即乘以多項式 $ x $ ,其二進製表示是兩個的數字。所以有時你會看到完全相同的東西被標記為 $ 2^n \cdot E_k(0) $ ,其中點表示已為該上下文固定的有限域中的乘法。