ЖMm1*ЖМinv*(Ain+Bin+Cins)+ЖMm2*ЖМinv(Cin+Din)
Очевидно, что если мы заменим Ain на ЖМAin и аналогично поступим с остальными входными байтами, а их сложения тупо заменим на умножения, то у нас будет вот что-то такое:
(ЖMm1*ЖМinv*(ЖМAin*ЖМBin*ЖМCin))*(ЖMm2*ЖМinv*(ЖМCin*ЖМDin))
Фига всего этого фокуса в том, что нелинейный шифр стал линейным!
К слову, матрицы еще можно пересовывать туда-сюда, сокращать постоянные величины, и самое главное, что когда вы смотрите свой прончик с конями, то у вас заголовки запроса то известны. То есть все фокусничания AES можно размотать до чего-то вида набора уравнений:
ЖМA_j*(произведение в разном порядке(ЖМKi))=ЖМB_j