Sunteți pe pagina 1din 11

ATESTAREA 1

Realizat de: nume prenume

Grupa: SSET171, SSET_172

Verificat conf univ. O. Cerbu

Lucrarea va fi realizata ca in exemplul de mai jos si expediata pe contul din moodle.

Sarcina 1: Desrierea rețelei Feistel.

Un exemplu de raspuns:Rețeaua lui Feistel este una dintre metodele de construire a blocurilor
cifrate. O rețea este formată din celule numite celule Feistel. Fiecare celulă primește date și o
cheie. La ieș.irea fiecărei celule primesc datele modificate și cheia modificată. Toate celulele sunt
de același tip și se spune că rețeaua este o structură repetitivă (iterată). Cheia este selectată în
funcție de algoritmul de criptare / decriptare și se schimbă la trecerea de la o celulă la alta. La
criptare și decriptare, se efectuează aceleași operații; numai ordinea cheilor este diferită. Datorită
simplității operațiilor, rețeaua Feistel este ușor de implementat atât software cât și hardware.
Majoritatea blocurile cifrate moderne (DES, RC2, RC5, RC6, Blowfish, FEAL, CAST-128, TEA,
XTEA, XXTEA etc.) folosesc rețeaua Feistel ca bază.
Exemple de rețele Feistel

Sarcina 2:Realizati numeric criptarea deacriptarea algoritmului RC2(utilizat in


protocoalele retelelor wi-fi).Alegeti mesajul care doriti,dar sa nu intreacă 8
simboluri. Cheia va consta din initialele studentului: (exemplu: Iovu Nicolae
cheia: IN)In exemplul de mai jos mesajul pentru criptare este ”submarin”, iar Cheia
MT—Moraru Tudor. Lucrarea va fi realizata ca in exemplul de mai jos si expediata pe contul din
moodle.

RC2 (prescurtare de la Ron's Code 2) este un cifru cu chei simetrice, pe blocuri de 64 de biți,
proiectat de Ron Rivest, după ce fusese ținut secret, în proprietatea intelectuală a companiei RSA
Security fondată de Rivest împreună cu Adi Shamir și Leonard Adleman. RC2 este un cifru Feistel
ce constă din 18 runde, dintre care 16 sunt denumite runde de MIXING și două sunt runde de
MASHING.
I. CRIPTARE

Mesajul de criptare m=”submarin” Subkey MT

CRIPTARE
01110011 01110101 01100010 01101101
01100001 01110010 01101001 01101110

a => (01110011 01110101) b => (01100010 01101101)


c => (01100001 01110010) d => (01101001 01101110)

Subkey =MT=>(01001101 01010100)

1. a + subkey=>(01110011 01110101 + 01001101 01010100) mod 2^32=


(29557 + 19796) mod 2^32 = 49353 = 01100000 011001001

2. c^d=> 01100001 01110010 &


01101001 01101110 =
01100001 01100010
3. (not d) ^ b= 10010110 10010001&
01100010 01101101=
00000010 00000001

4. (c ^d) + (not d ^b)=> (01100001 01100010+


00000010 00000001) mod 2^32 =
(24930 + 513) mod 2^32 = 25443 =
(01100011 01100011)
5. (pt1)+(pt4) = (01100000 011001001+ 01100011 01100011) mod 2^32 =
(49353 + 25443) mod 2^32 = 74796 = (100100100 00101100)

6. Deplasament la stanga cu 4 (<<<4): (10010 0100 0010 1100) -> (<<<4): (0000 0010 0001 01001)

7. b => (01100010 01101101) c => (01100001 01110010)


d => (01101001 01101110) a => (0000 0000 0000 1000 11000 0010 0000)

8. Concatenare b,c,d,a => (01100010 01101101 01100001 01110010 01101001 01101110 000000100
00101001) ” bmarin”

DECRIPTARE

1. Deplasamentul a la dreapta cu 4 (>>>4):

0000 0010 0001 01001 (>>>4):


10010 0100 0010 1100

2. c^d => 01100001 01110010 &


01101001 01101110=
01100001 01100010

3. (not d)^b = 10010110 10010001&


01100010 01101101=
00000010 00000001

4. (c ^d) + (not d ^b) => 01100001 01100010+


00000010 00000001 mod 2^32 =>
(24930 + 513) mod 2^32 =>
25443 =>
01100011 01100011

5. (a - (b ^ (not d) + (c ^ d) )) =>
(10010 0100 0010 1100-
01100011 01100011) mod 2^32 =>
(74796 - 25443) mod 2^32 =>
49353 => 11000000 11001001

6. (pt5) – MT => (11000000 11001001- 01001101 01010100) mod 2^32 =>


(49353 - 19796) mod 2^32 = 29557 => 01110011 01110101
Concatenare a,b,c,d => (01110011 01110101 01100010 01101101
01100001 01110010 01101001 01101110)
“submarin”

Sarcina 3:Elaborati numeric criptarea si decriptarea cu algoritmul TEA asa cum


este prezentat in exemplul de mai jos. Fiecare student va allege un mesaj exact
din 8 simboluri la alegere, In volorile pentru cheia k0 se va introduce inițialele
studentului ca ex: mt -Moraru Tudor

Algoritmul TEA

Mesajul: submarin 01110011 01110101 01100010 01101101 01100001 01110010 01101001 01101110

01110011 01110101 01100010 01101101 - stânga


01100001 01110010 01101001 01101110 – dreapta

Cheia K0: mtid 01101101 01110100 01101001 01100100


Cheia K1: ball 01100010 01100001 01101100 01101100
Cheia K2: cash 01100011 01100001 01110011 01101000
Cheia K3: open 01101111 01110000 01100101 01101110
Partea impara

1. Partea dreapta se deplasează la stânga cu 4 biti

<<4 01100001 01110010 01101001 01101110 = 0001 01110010 01101001 01101110 0000

2. La rezultatul (1) se adaugă valoarea K0 mod 2^32=

(0001 01110010 01101001 01101110 0000 + 01101101 01110100 01101001 01100100)


mod 2^32 = (388404960 + 1836345700) mod 2^32 = 2224750660 = 1000 0100 1001 1011
0000 0000 0100 0100
3. Partea dreapta se aduna cu I* delta

(01100001 01110010 01101001 01101110 + 1*10011110001101110111100110111001)


mod 2^32 = (1634888046 + 2654435769) mod 2^32 = 4289323815 =
1111 1111 1010 1001 1110 0011 0010 0111

4. Rezultatul de la p (2) XOR Rezultatul de la p (3)


1000 0100 1001 1011 0000 0000 0100 0100 XOR
1111 1111 1010 1001 1110 0011 0010 0111=
0111 1011 0011 0010 1110 0011 0110 0011

5. Partea dreapta se deplasează la dreapta cu 5 biti


>>5 01100001 01110010 01101001 01101110 =
00000011 00001011 10010011 01001011
6. La rezultatul (5) se adaugă valoarea K1 mod 2^32
(00000011 00001011 10010011 01001011 +
01100010 01100001 01101100 01101100) mod 2^32 =
(51090251 + 1650551916) mod 2^32 = 1701642167 =
0110 0101 0110 1100 1111 1111 1011 0111

7. Rezultatul de la p (4) XOR Rezultatul de la p (6)


0111 1011 0011 0010 1110 0011 0110 0011 XOR
0110 0101 0110 1100 1111 1111 1011 0111=
0001 1110 0101 1110 0001 1100 1101 0100

8. Partea stângă se aduna cu rezultatul p(7) mod 2^32

(01110011 01110101 01100010 01101101 +


0001 1110 0101 1110 0001 1100 1101 0100) mod 2^32 =
(1937072749 + 509484244) mod 2^32 = 2446556993 =
1001 0001 1101 0011 0111 1111 0100 0001

Partea para (dreapta = rezultatul (8) de sus)


stanga = dreapta de sus

1. Partea dreapta se deplasează la stânga cu 4 biti

1001 0001 1101 0011 0111 1111 0100 0001 <<4 =


0001 1101 0011 0111 1111 0100 0001 0000

2. La rezultatul (1) se adaugă valoarea K2 mod 2^32

(0001 1101 0011 0111 1111 0100 0001 0000+


01100011 01100001 01110011 01101000) mod 2^32 =
(490206224 + 1667330920) mod 2^32 = 2157537144 =
1000 0000 1001 1001 0110 0111 0111 1000

3. Partea dreapta se aduna cu I* delta

(1001 0001 1101 0011 0111 1111 0100 0001 +


1*10011110001101110111100110111001) mod 2^32 =
(2446556993 + 2654435769) mod 2^32 = 806025466 =
0011 0000 0000 1010 1111 1000 1111 1010

4. Rezultatul de la p (2) XOR Rezultatul de la p (3)


1000 0000 1001 1001 0110 0111 0111 1000 XOR
0011 0000 0000 1010 1111 1000 1111 1010 =
1011 0000 1001 0011 1001 1111 1000 0010

5. Partea dreapta se deplasează la dreapta cu 5 biti

1001 0001 1101 0011 0111 1111 0100 0001 >>5 =


0000 0100 1000 1110 1001 1011 1111 1010

6. La rezultatul (5) se adaugă valoarea K3 mod 2^32

(0000 0100 1000 1110 1001 1011 1111 1010


+ 01101111 01110000 01100101 01101110) mod 2^32 =
(76454906 + 1869636974) mod 2^32 = 1946091880 =
0111 0011 1111 1111 0000 0001 0110 1000

7. Rezultatul de la p (4) XOR Rezultatul de la p (6)


1011 0000 1001 0011 1001 1111 1000 0010 XOR
0111 0011 1111 1111 0000 0001 0110 1000 =
1100 0011 0110 1100 1001 1110 1110 1010

8. Partea stângă se aduna cu rezultatul p(7) mod 2^32

(01100001 01110010 01101001 01101110 +


1100 0011 0110 1100 1001 1110 1110 1010) mod 2^32 =
(1634888046 + 3278675690) mod 2^32 = 618596440 =
0010 0100 1101 1111 0000 1000 0101 1000

Rezultatul: 1001 0001 1101 0011 0111 1111 0100 0001 0010 0100 1101 1111 0000 1000 0101
1000 = æ ╙ DEL A $ ▀ BS X

Decriptarea
Partea para
1001 0001 1101 0011 0111 1111 0100 0001 - stângă
0010 0100 1101 1111 0000 1000 0101 1000 – dreaptă
1. Partea dreaptă e deplasează la stânga cu 4 biti

0010 0100 1101 1111 0000 1000 0101 1000 <<4 =


0100 1101 1111 0000 1000 0101 1000 0000

2. La rezultatul (1) se adaugă valoarea cheie K2 mod 2^32

(0100 1101 1111 0000 1000 0101 1000 0000 +


01100011 01100001 01110011 01101000) mod 2^32 =
(1307608448 + 1667330920) mod 2^32 = 2974939368 =
1011 0001 0101 0001 1111 1000 1110 1000
3. Partea dreapta se aduna cu I* delta

(0010 0100 1101 1111 0000 1000 0101 1000 +


1*10011110001101110111100110111001) mod 2^32 =
(618596440 + 2654435769) mod 2^32 = 3273032209 =
1100 0011 0001 0110 1000 0010 0001 0001

4. Rezultatul de la p (2) XOR Rezultatul de la p (3)

1011 0001 0101 0001 1111 1000 1110 1000 XOR


1100 0011 0001 0110 1000 0010 0001 0001 =
0111 0010 0100 0111 0111 1010 1111 1001

5. Partea dreapta se deplasează la dreapta cu 5 biti

0010 0100 1101 1111 0000 1000 0101 1000 >>5 =


0000 0001 0010 0110 1111 1000 0100 0010

6. La rezultatul (5) se adaugă valoarea K3 mod 2^32

(0000 0001 0010 0110 1111 1000 0100 0010 +


01101111 01110000 01100101 01101110) mod 2^32 =
(19331138 + 1869636974) mod 2^32 =1888968112 =
0111 0000 1001 0111 0101 1101 1011 0000

7. Rezultatul de la p (4) XOR Rezultatul de la p (6)

0111 0010 0100 0111 0111 1010 1111 1001 XOR


0111 0000 1001 0111 0101 1101 1011 0000 =
0000 0010 1101 0000 0010 0111 0100 1001

8. Partea stângă se aduna cu rezultatul p(7) mod 2^32

(1001 0001 1101 0011 0111 1111 0100 0001 +


0000 0010 1101 0000 0010 0111 0100 1001) mod 2^32 =
(2446556993 + 47195977) mod 2^32 = 2493752970 =
1001 0100 1010 0011 1010 0110 1000 1010

1001 0100 1010 0011 1010 0110 1000 1010 -> arin

Partea impara
1. Partea dreapta se deplasează la stânga cu 4 biți
1001 0001 1101 0011 0111 1111 0100 0001 << 4 =
0001 1101 0011 0111 1111 0100 0001 0000

2. La rezultatul (1) se adaugă valoarea K0 mod 2^32=

(0001 1101 0011 0111 1111 0100 0001 0000 +


01101101 01110100 01101001 01100100) mod 2^32 =
( 490206224 + 1836345700) mod 2^32 = 2326551924 =
1000 1010 1010 1100 0101 1101 0111 0100

3. Partea dreapta se aduna cu I* delta

(1001 0001 1101 0011 0111 1111 0100 0001 +


1*10011110001101110111100110111001) mod 2^32 =
(2446556993 + 2654435769) mod 2^32 = 806025466 =
0011 0000 0000 1010 1111 1000 1111 1010

4. Rezultatul de la p (2) XOR Rezultatul de la p (3)

1000 1010 1010 1100 0101 1101 0111 0100 XOR


0011 0000 0000 1010 1111 1000 1111 1010 =
1011 1010 1010 0110 1010 0111 1000 1110

5. Partea dreapta se deplasează la dreapta cu 5 biți

1001 0001 1101 0011 0111 1111 0100 0001 >> 5 =


0000 0100 1000 1110 1001 1011 1111 1010

6. La rezultatul (5) se adaugă valoarea K1 mod 2^32


(0000 0100 1000 1110 1001 1011 1111 1010 +
01100010 01100001 01101100 01101100) mod 2^32 = (76454906 + 1650551916) mod 2^32
= 1727006822 = 0110 0110 1111 0000 0000 1000 0110 0110
7. Rezultatul de la p (4) XOR Rezultatul de la p (6)

1011 1010 1010 0110 1010 0111 1000 1110 XOR


0110 0110 1111 0000 0000 1000 0110 0110 =
1101 1100 0101 0110 1010 1111 1110 1000

8. Partea stângă se aduna cu rezultatul p(7) mod 2^32

(0010 0100 1101 1111 0000 1000 0101 1000 +


1101 1100 0101 0110 1010 1111 1110 1000) mod 2^32 =
(618596440 + 3696668648) mod 2^32 = 20297792 =
0000 0001 0011 0101 1011 1000 0100 0000
0000 0001 0011 0101 1011 1000 0100 0000-> subm

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