Rijndael S-box

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

S-box-ul este utilizat în” algoritmul de criptare Rijndael (alias AES).

Cutia S.

După ce multiplicarea matricei este completă, se efectuează un OR exclusiv între numărul zecimal „99” ( 0x63 în notație hexazecimală, „1100011” în notație binară, „11000110” ca un șir de biți cu cel mai puțin semnificativ bit în prima poziție). Această operație generează următoarea S-Box, care este reprezentată în notație hexazecimală:
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:

  1. stocarea inversului multiplicativ al numărului de intrare în 2 variabile temporare nesemnate de 8 biți s și x ;
  2. 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”;
  3. SAU exclusiv între x și s , stocând rezultatul în x ;
  4. pentru 3 iterații: repetați punctele 2. și 3. (punctele 2. și 3. vor fi efectuate de 4 ori în total);
  5. 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
Următorul tabel reprezintă caseta S inversată a Rijndael:
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ă

  1. ^ FIPS PUB 197: Standardul oficial AES Arhivat 7 aprilie 2015 la Internet Archive . , secțiunea 5.5.1

Elemente conexe

linkuri externe