Sunteți pe pagina 1din 9

AES-sistem simetric pentru protocoale de autentificare

Lucrare de laborator
Sarcina: Criptati si decriptati un mesaaj de 128 de biti (strict 16
simboluri) va incepe mesajul cu inițialele studentului (Roman
Moraru-RM) alte date le selectati la alegere.

Criptarea

Textul initial (128 biti):


CemirtanEduardMD

43 65 6D 69 72 74 61 6E 45 64 75 61 72 64 4D 44
Cheia (128 biti):

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

Nb = 128/32 = 4

Nk = 128/32 = 4

Nr = 10

Stare initiala: 43 72 45 72
65 74 64 64
6D 61 75 4D
69 6E 61 44

W: 0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f

W[4]:

Temp = W[3] = 0c 0d 0e 0f

Deoarece row%Nk=0 (4%4):

Temp = SubWord(RotWord(Temp))

Temp = SubWord(0d 0e 0f 0c)

Temp = d7 ab 76 fe
Temp = Temp XOR Rcon[1]

Temp = d6 ab 76 fe

W[4] = W[4- Nk] XOR Temp

W[4] = 00 01 02 03 XOR d6 ab 76 fe

W[4] = d6 aa 74 fd

W[5]:

Temp = W[4] = d6 aa 74 fd

Deoarece row% Nk≠0

W[5] = W[5- Nk] XOR Temp

W[5] = 04 05 06 07 XOR d6 aa 74 fd

W[5] = d2 af 72 fa

W[6]:

Temp = W[5] = d2 af 72 fa

Deoarece row% Nk≠0

W[6] = W[2] XOR Temp

W[6] = 08 09 0a 0b XOR d2 af 72 fa

W[6] = da a6 78 f1

W[7]:

Temp = W[6] = da a6 78 f1

Deoarece row% Nk≠0

W[7] = W[3] XOR Temp

W[7] = 0c 0d 0e 0f XOR da a6 78 f1

W[7] = d6 ab 76 fe

W: 0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 d6 aa 74 fd
5 d2 af 72 fa
6 da a6 78 f1
7 d6 ab 76 fe
8 …
AddRoundKey:

Stare[i,j]= Stare[i,j] XOR W[round*4+j,i]

round = 0

Starea initiala: 6d 76 73 6f
72 61 61 61
69 74 7a 72
6e 61 62 65

Cheia utilizata: 00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f

Starea obtinuta: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A

Runda 1:

ByteSub:

Starea initiala:
6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A

Starea obtinuta: 3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02

ShiftRow:

Starea initiala:
3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02
Starea obtinuta: 3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6

MixColumn:

b0,0 = 02 x a0,0 +03 x a1,0 + a2,0 + a3,0 = 78 + c9 + 51 + 02 = E2

b1,0 = 02 x a1,0 +03 x a2,0 + a3,0 + a0,0 = 86 + f3 + 02 + 3c = 4B

b2,0 = 02 x a2,0 +03 x a3,0 + a0,0 + a1,0 = a2 + 06 + 3c + 43 = DB

b3,0 = 02 x a3,0 +03 x a0,0 + a1,0 + a2,0 = 04 + b4 + 43 + 51 = A2

b0,1 = 02 x a0,1 +03 x a1,1 + a2,1 + a3,1 = 70 + 2fd + 50 + 50 = 28D

b1,1 = 02 x a1,1 +03 x a2,1 + a3,1 + a0,1 = 1fe + f0 + 50 + 38 = 166

b2,1 = 02 x a2,1 +03 x a3,1 + a0,1 + a1,1 = a0 + f0 + 38 + ff = 97

b3,1 = 02 x a3,1 +03 x a0,1 + a1,1 + a2,1 = a0 + a8 + ff + 50 = A7

b0,2 = 02 x a0,2 +03 x a1,2 + a2,2 + a3,2 = 1de + f0 + a3 + 33 = 1BE

b1,2 = 02 x a1,2 +03 x a2,2 + a3,2 + a0,2 = a0 + 1e9 + 33 + ef = 195

b2,2 = 02 x a2,2 +03 x a3,2 + a0,2 + a1,2 = 146 + 99 + ef + 50 = 160

b3,2 = 02 x a3,2 +03 x a0,2 + a1,2 + a2,2 = 66 + 2cd + 50 + a3 = 258

b0,3 = 02 x a0,3 +03 x a1,3 + a2,3 + a3,3 = 154 + 2df + 85 + b6 = 3B8

b1,3 = 02 x a1,3 +03 x a2,3 + a3,3 + a0,3 = 1ea + 18f + b6 + aa = 79

b2,3 = 02 x a2,3 +03 x a3,3 + a0,3 + a1,3 = 10a + 222 + aa + f5 = 377

b3,3 = 02 x a3,3 +03 x a0,3 + a1,3 + a2,3 = 16c + 1fe + f5 + 85 = E2

Starea obtinuta: E3 28D 1BE 3B8


4B 166 195 79
DB 97 160 377
A2 A7 258 E2

AddRoundKey
Starea initiala: E3 28D 1BE 3B8
4B 166 195 79
DB 97 160 377
A2 A7 258 E2

Cheia utilizata: d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe

Starea obtinuta: 35 227 1CA 345


99 1C9 1E7 83
1 31 118 386
74 C 22E 1C

Mesajul criptat: 35991742271C931C1CA1E711822E345832861C

[...]

Decriptarea

Cheia (128 biti):

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

W: 0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 d6 aa 74 fd
5 d2 af 72 fa
6 da a6 78 f1
7 d6 ab 76 fe
8 …

[...]
Runda 1:

Mesajul criptat: 35991742271C931C1CA1E711822E345832861C

AddRoundKey

Starea initiala: 35 227 1CA 345


99 1C9 1E7 83
1 31 118 386
74 C 22E 1C

Cheia utilizata: d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe

Starea obtinuta: E3 28D 1BE 3B8


4B 166 195 79
DB 97 160 377
A2 A7 258 E2

InvMixColumn

a0,i = 0e x b0,i + 0b x b1,i + 0d x b2,i + 09 x b3,i

a1,i = 0e x b1,i + 0b x b2,i + 0d x b3,i + 09 x b0,i

a2,i = 0e x b2,i + 0b x b3,i + 0d x b0,i + 09 x b1,i

a3,i = 0e x b3,i + 0b x b0,i + 0d x b1,i + 09 x b2,i

a0,0 = 21 + 31 + e4 + e3 = 3C

a1,0 = 3a + a1 + e2 + 53 = 43

a2,0 = 23 + 92 + e6 + 1f = 51

a3,0 = d2 + 2c + e1 + 68 = 02

a0,1 = 31 + c2 + 2d + 6e = 38

a1,1 = d1 + 21 + 13 + e9 = FF

a2,1 = 2d + 51 + 9c +14 = 50

a3,1 = 34 + 12 + 2c + c2 = 50

a0,2 = 3e + 51 + 18 + e2 = EF
a1,2 = 4c + 8a + de + 0e = 50

a2,2 = 59 + 1c + 2f + 22 = A3

a3,2 = 05 + 12 + 11 + e2 = 33

a0,3 = c2 + 6f + c6 + ca = AA

a1,3 = 02 + cc + e1 + c1 = F5

a2,3 = a2 + ce + 41 + 21 = 85

a3,3 = c2 + fa + 14 + 1c = B6

Starea obtinuta: 3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6

InvShiftRow

Starea initiala:
3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6

Starea obtinuta: 3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02

InvByteSub:

Starea initiala:
3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02

Starea obtinuta: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A

Sfirsitul ciclului
AddRoundKey (final)

Starea initiala: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A

Cheia utilizata: 00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f

Starea obtinuta: 6d 76 73 6f
72 61 61 61
69 74 7a 72
6e 61 62 65

Mesajul obtinut: 6d 72 69 6e 76 61 74 61 73 61 7a 62 6f 61 72 65

Mesajul a fost decriptat cu succes!

S-ar putea să vă placă și