Sunteți pe pagina 1din 7

I.

Descrieţi algoritmii şi creaţi exemple numerice pentru urmatorii


itemi: 1.1 şi 1.2., parametrii de lucru la alegere.

1.1. Operaţii în cîmpul Galois (GF(256))


Adunarea in GF(256) este operatia XOR
Exemplu: A(10)10 -> (00001010)2
B(125)10->(01111101)2
A+B = (01110111)2 = (119)10

a) Daca nr < 0x80, se va face un deplasament cu 1 bit la stanga:


10 * 2 = 00001010 << 1 = 00010100 = 20
b) Daca nr > 0x80
129 * 2 = (10000001 xor 00011011) << 1 = 10011010 << 1 =
00110101 = 53

Inmultirea la orice nr: Se aduna inmultirile cu 1 si 2


A * 0x03 = A * (0x02 + 0x01) = (A * 0x02) + (A * 0x01)

1.2.Calculul logaritmului discret modulo (Algoritmul Shanks).


Fie P = 523 şi să determinăm log2 45mod522= ?.

Avem deci α=2 si β=45 m=22


Cream listele L1
(0, 1) (1, 367) (2,278) (3, 41) (4, 403) (5, 415) (6, 112) (7, 310)
(8, 279) (9, 408) (10, 158) (11, 456)(12, 515) (13, 286) (14, 391)
(15, 195) (16, 437) (17, 341) (18, 150) (19, 135) (20, 383) (21, 397)
Cream listele L2
(0, 45) (1 ,284) (2, 142) (3, 71) (4 ,297 ) (5 ,410 ) (6, 205) (7, 364)
(8, 182) (9, 91) (10, 307) (11, 415 ) (12, 469) (13, 496) (14, 248)
(15, 124) (16, 62) (17, 31) (18, 27) (19, 400) (20, 200) (21, 100)
Coincid elementele de pe pozitia 5 din lista L1: (5, 415) si
elementul 11 din lista L2:
(11,415), deci
Log245mod(523-1) = (22*5+11) mod(523-1 = 121mod523 = 121;
II.Descrieţi considerentele teoretice pentru itemii 2.1 şi 2.2.
2.1.Algoritmul Blacklay.
nu gasesc

2.2. Familia de algoritmi de hash-are SHA- (1, 160, 256,384,512).


ULTRA HZ, pe wiki doar schema (?)
SHA-1
In SHA-1 sunt 4 etape, fiecare acțiune se adaugă la rezultatele
anterioare, dimensiunea blocului de procesare este de 512 biți,
algoritmu efectuiaza adunarea pe modulo 232, ele se bazează pe
arhitectura de 32 de biți. In SHA-1 constantele se folosesc in mod
repetat pentru fiecare sin 4 grupe. In SHA-1 se adauga a cincea
variabila, se foloseste cod cyclic pentru a corecta greselile, la fiecare
etapa utilizeaza aceleasi valori pentru schimbare, sunt 3 functii
logice elementare, lungimea rezumatului 160biti,
SHA-1 – e MD4 cu adaos de conversie, un pas suplimentar și efect
avalanșă îmbunătățită.

SHA-2 (contine 256,384,512):


SHA-1:
III. Utilizînd schema ElGamal pentru crearea unui protocol efectiv de
autentificare, creaţi semnatura ElGamal (20 puncte)
a)Descrieţi algoritmul.

b)Creaţi şi verificati semnatura, parametrii de lucru la alegere.


Exemplul 1: Sa luam p = 467; α = 2; a = 127. Avem
β = α a (mod p) = 2127 (mod 467) = 132.
Daca Damon doreste sa semneze mesajul x = 100 alegand valoarea k
= 213 (de remarcat ca
(213; 466) = 1 si 213-1 (mod 466) = 431), va obtine
γ = 2213 (mod 467) = 29 ¸si δ = (100 - 127 * 29) * 431 (mod 466) = 51:
Pentru a verifica semnatura, calculam
13223 * 2951 = 189 (mod 467) si 2100 = 189 (mod 467):
Semnatura este deci valida.

Diffie-Helman:
Fie p=11; (Fie Campul Zp=11 si elemental primitive este g=2)
1) Utilizatorul A alege a = 3 (nr prim secret)
Utilizatorul B alege b = 5 (nr prim secret)
2) A calculeaza cheia sa publica: A = ga mod11 = 23 = 8
3) B calculeaza cheia sa publica: B = gb mod11 = 25 = 10
4) Utilizatorii se interschimba cu cheile publice
5) A calculeaza: KA = Ba mod n = 103 mod11 = 10
6) A calculeaza: KB = Ab mod n = 85 mod11 = 10
Concluzie: KA = KB = 10
RC4:
n=3
23 =8 – flux de biţi
Formăm vectrul S: 01234567
Alegem cheia: 17, K – vectorul cheii
Codul ASCII al cheii este: 1 → 49; 7 → 55;
Vectorul cheii este:
49 55 49 55 49 55 49 55
Depunem valorile codului ASCII al cheii:
S 0 1 2 3 4 5 6 7
K 49 55 49 55 49 55 49 55

Efectuăm permutări asupra biţilor vectorului S:

Iniţial i=0, j=0.


j=(j+K[i]+S[j]) mod 8

1) i=0, j=(0+K[0]+S[0]) mod 8 = (0+49+0) mod 8 = 49 mod 8 = 1;


SWAP(S[i],S[j])=SWAP(S[0],S[1])=10234567=55 49 49 55 49 55
49 55
S 1 0 2 3 4 5 6 7
K 55 49 49 55 49 55 49 55

2) i=1, j=(1+K[1]+S[1]) mod 8 = (1+49+0) mod 8 = 50 mod 8 = 2;


SWAP(S[i],S[j])=SWAP(S[1],S[2])=12034567=55 49 49 55 49 55
49 55
S 1 2 0 3 4 5 6 7
K 55 49 49 55 49 55 49 55

3) i=2, j=(2+K[2]+S[2]) mod 8 = (2+49+0) mod 8 = 51 mod 8 = 3;


SWAP(S[i],S[j])=SWAP(S[2],S[3])=12304567=55 49 55 49 49 55
49 55
S 1 2 3 0 4 5 6 7
K 55 49 55 49 49 55 49 55

4) i=3, j=(3+K[3]+S[3]) mod 8 = (3+49+0) mod 8 = 52 mod 8 = 4;


SWAP(S[i],S[j])=SWAP(S[3],S[4])=12340567=55 49 55 49 49 55
49 55
S 1 2 3 4 0 5 6 7
K 55 49 55 49 49 55 49 55

5) i=4, j=(4+K[4]+S[4]) mod 8 = (4+49+0) mod 8 = 53 mod 8 = 5;


SWAP(S[i],S[j])=SWAP(S[4],S[5])=12345067=55 49 55 49 55 49
49 55
S 1 2 3 4 5 0 6 7
K 55 49 55 49 55 49 49 55

6) i=5, j=(5+K[5]+S[5]) mod 8 = (5+49+0) mod 8 = 54 mod 8 = 6;


SWAP(S[i],S[j])=SWAP(S[5],S[6])=12345607=55 49 55 49 55 49
49 55
S 1 2 3 4 5 6 0 7
K 55 49 55 49 55 49 49 55

7) i=6, j=(6+K[6]+S[6]) mod 8 = (6+49+0) mod 8 = 55 mod 8 = 7;


SWAP(S[i],S[j])=SWAP(S[6],S[7])=12345670=55 49 55 49 55 49
55 49
S 1 2 3 4 5 6 7 0
K 55 49 55 49 55 49 55 49

7) i=7, j=(7+K[7]+S[7]) mod 8 = (7+49+0) mod 8 = 56 mod 8 = 0;


SWAP(S[i],S[j])=SWAP(S[7],S[0])= 02345671= 49 49 55 49 55
49 55 55
S 0 2 3 4 5 6 7 1
K 49 49 55 49 55 49 55 55

CRIPTARE

Alegem un mesaj pentru criptare m = Dima.


Iniţial i=0, j=0.
i=(i+1) mod 8 = 1 mod 8 = 1.
j=(j+S[i]) mod 8 = (j+S[1]) mod 8 = (0+2) mod 8 = 2
Calculam t:
t=(S[i]+S[j]) mod 8 = (S[1]+S[2]) mod 8 = (2+3) mod 8 = 5

r = chr(ord(m)) XOR S[t]

S[t] = S[5] = 6, K[5] = (49)2 = (00110001)2


m[0] = D → (68)10 = (1000100)2
m[1] = i → (105)10 = (01101001)2
m[2] = m → (109)10 = (01101101)2
m[3] = a → (97)10 = (01100001)2
1)r[0] = 01000100 XOR 00110001 = (1110101)2 = (117)10 → u
2)r[1] = 01101001 XOR 00110001 = (1011000)2 = (88)10 → X
3)r[2] = 01101101 XOR 00110001 = (1011100)2 = (92)10 → \
4)r[3] = 01100001 XOR 00110001 = (1010000)2 = (80)10 → P
Deci, mesajul m = „Dima” criptat este „uX\P”
DECRIPTARE Cript r = uX\P;
K=17;
S= 02345671
S 0 2 3 4 5 6 7 1
K 49 49 55 49 55 49 55 55
Iniţial i=0, j=0.
i = (i+1) mod 8 = 1 mod 8 = 1.
j = (j+S[i]) mod 8 = (j+S[1]) mod 8 = (0+2) mod 8 = 2
SWAP(S[i],S[j]) mod 8 = (3+2) mod 8 = 5
i = chr(ord(r)) XOR S[t]
r[0] = u → (117)10 = (1110101)2
r[1] = X → (88)10 = (1011000)2
r[2] = \ → (92)10 = (1011100)2
r[3] = P → (80)10 = (1010000)2

m[0] = 1110101 XOR 110001 = (1000100)2 = (68)10 → D


m[1] = 1011000 XOR 110001 = (1101001)2 = (105)10 → i
m[2] = 1011100 XOR 110001 = (01101101)2 = (109)10 → m
m[3] = 1010000 XOR 110001 = (01100001)2 = (97)10 → a

Mesajul criptat r = „uX\P” decriptat va fi: „Dima”.

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