1
$\begingroup$

According to the spec, MULx operation is defined as -

MULx maps 16 bits to 8 bits. Let V and c be 8-bit input values. Then MULx is defined: If the leftmost (i.e. the most significant) bit of V equals 1, then MULx(V, c) = (V <<8 1) ⊕ c, else MULx(V, c) = V <<8 1. Example: MULx(0x69,0x1B) = 0xC2 MULx(0x96,0x1B) = 0x2C ⊕ 0x1B = 0x37.

What does it really do ?

$\endgroup$
1
$\begingroup$

It essentially is the value $02 \times V$ in the field $GF(2^8)$, and so MulxPOW(V, I, c) is essentially $02^i \times V$ in the field $GF(2^8)$, where $c$ specifies the representation used.

What is a representation: there are a lot of ways to map between 8 bit values and the members of the abstract $GF(2^8)$ field, and a number of those mappings are plausible (unless $GF(p)$, which has an obvious mapping between integers in the range $[0, p-1]$ and members of that field - so obvious that we typically ignore it).

What Snow does is use several different mappings (representations) for the various SBoxes, by specifying different $c$ values for the different sboxes.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.