Rijndael S-box
„ S-box-ul este utilizat în” algoritmul de criptare Rijndael (alias AES).
Cutia S.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | 63 | 7c | 77 | 7b | f2 | 6b | 6f | c5 | 30 | 01 | 67 | 2b | fe | d7 | ab | 76 |
10 | aproximativ | 82 | c9 | 7d | face | 59 | 47 | f0 | la | d4 | a2 | af | 9c | a4 | 72 | c0 |
20 | b7 | fd | 93 | 26 | 36 | 3f | f7 | cc | 34 | a5 | și5 | f1 | 71 | d8 | 31 | 15 |
30 | 04 | c7 | 23 | c3 | 18 | 96 | 05 | 9a | 07 | 12 | 80 | și2 | și b | 27 | b2 | 75 |
40 | 09 | 83 | 2c | 1a | 1b | 6e | 5a | a0 | 52 | 3b | d6 | b3 | 29 | și3 | 2f | 84 |
50 | 53 | d1 | 00 | și | 20 | fc | b1 | 5b | 6a | cb | bine | 39 | 4a | 4c | 58 | cf. |
60 | d0 | ef | aa | fb | 43 | 4d | 33 | 85 | 45 | f9 | 02 | 7f | 50 | 3c | 9f | a8 |
70 | 51 | a3 | 40 | 8f | nouăzeci și doi | 9d | 38 | f5 | bc | b6 | din | 21 | 10 | ff | f3 | d2 |
80 | CD | 0c | 13 | ec | 5f | 97 | 44 | 17 | c4 | a7 | 7e | 3d | 64 | 5d | 19 | 73 |
90 | 60 | 81 | 4f | ANUNȚ | 22 | 2a | 90 | 88 | 46 | si si | b8 | 14 | de | 5e | 0b | db |
a0 | și0 | 32 | 3a | 0a | 49 | 06 | 24 | 5c | c2 | d3 | B.C | 62 | 91 | 95 | și4 | 79 |
b0 | și7 | c8 | 37 | 6d | 8 D | d5 | 4e | a9 | 6c | 56 | f4 | este la | 65 | 7a | ae | 08 |
c0 | ba | 78 | 25 | 2e | 1c | a6 | b4 | c6 | e8 | dd | 74 | 1f | 4b | bd | 8b | 8a |
d0 | 70 | 3e | b5 | 66 | 48 | 03 | f6 | 0e | 61 | 35 | 57 | b9 | 86 | c1 | 1d | 9e |
și0 | și1 | f8 | 98 | 11 | 69 | d9 | 8e | 94 | 9b | 1e | 87 | și9 | există | 55 | 28 | df |
f0 | 8c | a1 | 89 | 0d | bf | și6 | 42 | 68 | 41 | 99 | 2d | 0f | b0 | 54 | bb | 16 |
Caseta S este generată prin determinarea inversului multiplicativ al unui număr aparținând câmpului finit al Rijndael (zero, care nu are invers, este setat la zero). Inversul multiplicativ este apoi transformat folosind următoarea transformare afină :
unde [x 0 , ..., x 7 ] este inversul multiplicativ exprimat ca vector.
Înmulțirea matricilor poate fi calculată cu următorul algoritm:
- stocarea inversului multiplicativ al numărului de intrare în 2 variabile temporare nesemnate de 8 biți s și x ;
- rotiți s 1 bit spre stânga; dacă valoarea lui s a avut cel mai mare bit (al optulea din dreapta) setat la „1”, setați cel mai mic bit al lui s la „1”, altfel la „0”;
- SAU exclusiv între x și s , stocând rezultatul în x ;
- pentru 3 iterații: repetați punctele 2. și 3. (punctele 2. și 3. vor fi efectuate de 4 ori în total);
- x va conține acum rezultatul înmulțirii
Coloanele sunt determinate de ronțăitul cel mai puțin semnificativ, rândurile sunt determinate de ronțăitul cel mai semnificativ. De exemplu, valoarea 0x9a este convertită la 0xb8 . Rețineți că inversul multiplicativ al 0x00 este definit ca el însuși.
Cutie S inversată
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | 52 | 09 | 6a | d5 | 30 | 36 | a5 | 38 | bf | 40 | a3 | 9e | 81 | f3 | d7 | fb |
10 | 7c | și3 | 39 | 82 | 9b | 2f | ff | 87 | 34 | 8e | 43 | 44 | c4 | de | și9 | cb |
20 | 54 | 7b | 94 | 32 | a6 | c2 | 23 | 3d | si si | 4c | 95 | 0b | 42 | face | c3 | 4e |
30 | 08 | 2e | a1 | 66 | 28 | d9 | 24 | b2 | 76 | 5b | a2 | 49 | 6d | 8b | d1 | 25 |
40 | 72 | f8 | f6 | 64 | 86 | 68 | 98 | 16 | d4 | a4 | 5c | cc | 5d | 65 | b6 | nouăzeci și doi |
50 | 6c | 70 | 48 | 50 | fd | și | b9 | din | 5e | 15 | 46 | 57 | a7 | 8 D | 9d | 84 |
60 | 90 | d8 | ab | 00 | 8c | bc | d3 | 0a | f7 | și4 | 58 | 05 | b8 | b3 | 45 | 06 |
70 | d0 | 2c | 1e | 8f | aproximativ | 3f | 0f | 02 | c1 | af | bd | 03 | 01 | 13 | 8a | 6b |
80 | 3a | 91 | 11 | 41 | 4f | 67 | ANUNȚ | este la | 97 | f2 | cf. | există | f0 | b4 | și6 | 73 |
90 | 96 | B.C | 74 | 22 | și7 | la | 35 | 85 | și2 | f9 | 37 | e8 | 1c | 75 | df | 6e |
a0 | 47 | f1 | 1a | 71 | 1d | 29 | c5 | 89 | 6f | b7 | 62 | 0e | aa | 18 | bine | 1b |
b0 | fc | 56 | 3e | 4b | c6 | d2 | 79 | 20 | 9a | db | c0 | fe | 78 | CD | 5a | f4 |
c0 | 1f | dd | a8 | 33 | 88 | 07 | c7 | 31 | b1 | 12 | 10 | 59 | 27 | 80 | ec | 5f |
d0 | 60 | 51 | 7f | a9 | 19 | b5 | 4a | 0d | 2d | și5 | 7a | 9f | 93 | c9 | 9c | ef |
și0 | a0 | și0 | 3b | 4d | ae | 2a | f5 | b0 | c8 | și b | bb | 3c | 83 | 53 | 99 | 61 |
f0 | 17 | 2b | 04 | 7e | ba | 77 | d6 | 26 | și1 | 69 | 14 | 63 | 55 | 21 | 0c | 7d |
Caseta S inversată este pur și simplu caseta S efectuată înapoi: de exemplu, caseta S inversată a 0xdb este 0x9f . Se calculează calculând mai întâi transformarea afină inversă a valorii de intrare și apoi inversul multiplicativ. Transformarea afină inversă este definită după cum urmează:
Specificații de proiectare
Rijndael S-box a fost conceput special pentru a fi rezistent lacriptanaliza diferențială și liniară : acest lucru a fost realizat prin minimizarea corelației dintre transpunerile liniare ale biților de intrare / ieșire și, în același timp, minimizarea probabilității de propagare a unei diferențe. În plus, s-a adăugat transformarea afină pentru a întări cutia S împotriva atacurilor algebrice.
Dacă există suspiciunea unei uși capcană în interiorul cifrului, cutia S curentă poate fi înlocuită cu alta. Autorii susțin că structura cifrului Rijndael ar trebui să ofere suficientă rezistență la criptanaliza liniară și diferențială pentru a rezista acestor tipuri de atacuri chiar dacă s-a folosit o casetă S cu corelație „medie” sau propagare a diferențelor.
O ecuație alternativă pentru transformarea afină
O ecuație alternativă pentru transformarea afină este:
unde b ' , b și c sunt matrici de 8 biți și c este "01100011" [1] .
Implementări
Următoarea este o implementare Java a algoritmului anterior:
public static boolean [] affineX ( boolean [] bprime , boolean [] b , boolean [] c ) {
for ( int j = 0 ; j < 8 ; j ++ ) {
bprime [ j ] = b [ j ] ^ b [ ( j + 4 ) % 8 ] ;
bprime [ j ] ^ = b [ ( j + 5 ) % 8 ] ;
bprime [ j ] ^ = b [ ( j + 6 ) % 8 ] ;
bprime [ j ] ^ = b [ ( j + 7 ) % 8 ] ;
bprime [ j ] ^ = c [ j ] ;
}
returnează bprime ;
}
Notă
- ^ FIPS PUB 197: Standardul oficial AES Arhivat 7 aprilie 2015 la Internet Archive . , secțiunea 5.5.1
Elemente conexe
linkuri externe
- Specificațiile Rijndael ( ZIP ), pe iaik.tu-graz.ac.at . Adus la 11 noiembrie 2008 (arhivat din original la 27 septembrie 2007) .
- Pagina principală a Rijndael , pe iaik.tugraz.at . Adus la 11 noiembrie 2008 (arhivat din original la 15 mai 2006) .