Come fare Rijndael MixColumns step

0

Sto provando a seguire tutti i passaggi del Rijndael Encryption Algorithm usando carta e penna. Ho utilizzato link come esempio. Il passo delle colonne di mix è molto coinvolto. Per spiegarlo meglio, ho seguito il link . È davvero bello perché usa gli stessi numeri del primo link. Il mio problema è che quando arrivo alla parte che sembra dice questo:

Now another thing to remember, there is a rule established in the multiplication of the values as 
written in the book, Cryptography and Network Security[2], that multiplication of a value by x (ie. 
by 02) can be implemented as a 1-bit left shift followed by a conditional bitwise XOR with (0001 
1011) if the leftmost bit of the original value (before the shift) is 1. We can implement this rule in 
our calculation. 
{d4}.{02} = 1101 0100 << 1 (<< is left shift, 1 is the number of shift done, pad on with 0's)
     = 1010 1000 XOR 0001 1011 (because the leftmost is a 1 before shift)
     = 1011 0011 (ans)
    Calculation:
    1010 1000
    0001 1011 (XOR)
    ---------
    1011 0011

Le mie domande sono, da dove prendono il 0001 1011 ? Si suppone che siano XOR 1010 1000 di 02 . Uso questo numero ogni volta, anche per il passaggio successivo che è {03} . {bf} ? Sembra che utilizzino 0101 1101 per il calcolo XOR.

Aiuta davvero a guardare le immagini dal primo link per seguire qui.

    
posta Freiermuth 04.05.2014 - 23:57
fonte

1 risposta

1

Per il momento, quello che posso dire è che 0001 1011 è un valore dato e utilizzato nel libro Cryptography and Network Security per accelerare il calcolo del valore (che è molto probabilmente usato nella maggior parte del calcolo) Come ne derivano il numero? Beh, io non sono davvero un esperto, ma credo che questo implichi molto la teoria dei campi finiti GF (2 ^ m). Se potessi avere un buon esempio, probabilmente lo spiegherò (se posso ottenere la teoria giusta).

Mentre lo dici, tieni presente che mentre usi questo metodo di spostamento dei bit e XOR, tieni presente che dovresti solo XOR 0001 1011 quando, e SOLO quando, il primo bit del valore è 1 prima dello spostamento. Pertanto, nell'esempio, 1101 0100 ha il suo primo bit come 1, quindi quando si fa una moltiplicazione, sarà necessario fare un XOR 0001 1011. Aggiunta a questo criterio, questa viene usata solo quando si sta moltiplicando con il moltiplicatore di 2. Quindi, nel secondo esempio nel documento, {03} è suddiviso in {02} XOR {01} che è anche suggerito dal libro e moltiplicato rispettivamente. Credo che sia mostrato nel documento.

PS. Il calcolo è pronto per la lettura, fatemi sapere se vi sentite poco chiari: link

    
risposta data 05.05.2014 - 06:56
fonte

Leggi altre domande sui tag