Sunteți pe pagina 1din 5

Tema: Algoritmul de criptare TEA

Olga Cerbu
Scopul lucrrii: codificarea unui text cu ajutorul algoritmului TEA.
Descrierea lagoritmului TEA:
(Tiny Encryption Algorithm) este un algoritm de criptare bazat
pe blocuri de tip Feistel. Se bazeaz pe operaii pe bit cu blocuri de 64 de bii
i are cheia de criptare de 128 de bii. Numrul de runde standard al
sistemului Feistel este de 64 de runde, 32 de cicluri).
Pregtirea criptrii:
Mesajul se divizeaz n blocuri de 64 de bii fiecare. Cheia K de 128 de bii se
divizeaz n 4 subchei de 32 de bii
K0, K1, K2, K3.
Procesul criptrii:
Fiecare bloc de 64 de bii se
cripteaz pe parcursul a 32 de cicluri
de cripare (64 de runde), utiliznd
urmtorul algoritm.

S presupunem c la intrare n runda


n (pentru 1 <= n <= 64) survine
partea dreapt i partea stng (Ln,
Rn), atunci la ieirea rundei n va fi
partea stng i partea dreapt (Ln+1,
Rn+1), care se calculeaz dup
regulile urmtoare:

Ln+1 = Rn.

Dac n = 2 * i 1 pentru 1 i 32 (rundele impare), atunci

Rn+1 = Ln ({ [ Rn 4] K[0] } { Rn i*} { [ Rn 5] K[1] })

Dac n = 2 * i pentru 1 i 32 (rundele pare), atunci

Rn+1 = Ln ({ [ Rn 4] K[2] } { Rn i*} { [ Rn 5] K[3] })


Unde:

X Y operaia de adunare a numerelor X i Y pe modulul 232.


X Y SAU exclusiv pe (XOR) a numerelor X i Y, ( X ^ Y)
X Y X Y operaiile de deplasare pe bit (numerele X cu Y bii la
stnga sau, respectiv, la dreapta.
Constanta a fost introdus din mediana de aur = ( - 1) * 231 =
2654435769 = 9E3779B9h =
100111100011011101111001101110012.
n fiecare rund constanta se nmulete cu numrul ciclului i. Aceasta
se face cu scopul de a prentmpina atacurile simple, bazate pe simetria
rundelor.

Deasemenea, n algoritmul TEA nu exist algoritmul de programare a


cheilor. n loc se utilizeaz n rundele impare subcheile K0 i K1 i n cele pare
subcheile K2, K3. Dat fiind c algoritmul de tip bloc nu poate fi multiplu a 64
bii, valorile tuturor biilor complementari la multitudinea de uniti pe 64 de
bii este setat valoarea 0x01.

Mesajul: criptare 01100011 01110010 01101001 01110000 01110100


01100001 01110010 01100101

01100011011100100110100101110000
01110100011000010111001001100101

Cheia K0: abcd: 01100001 01100010 01100011 01100100

01100001011000100110001101100100

Cheia K1: efgh 01100101 01100110 01100111 01101000

01100101011001100110011101101000

Cheia K2: 1234 00110001 00110010 00110011 00110100

00110001001100100011001100110100

Cheia K3: 5678 00110101 00110110 00110111 00111000

00110101001101100011011100111000

Partea stng: 01100011011100100110100101110000

Partea dreapt: 01110100011000010111001001100101

2
1)Partea dreapt se deplaseaz la stnga cu 4 bii:
01110100011000010111001001100101 << 4 =
01000110000101110010011001010000
2)La rezultatul (1) se adaug valoarea cheia K0 mod 2^32:

01000110000101110010011001010000 +
01100001011000100110001101100100 mod 2^32 =
01100001011000100110001101100100

3) Partea dreapt se adun cu I * :

01110100011000010111001001100101 + 1*
01110100011000010111001001100101 mod 2^32 =
00011101000110000101110010011001

4) Rezultatul de la pasul (2) XOR Rezultatul de la pasul (3)

01100001011000100110001101100100 XOR
00011101000110000101110010011001 =
01111100011110100011111111111101

5) Partea dreapt se deplaseaz cu 5 bii la dreapta:

01110100011000010111001001100101 >> 5 =
00000100011000010111001001100101

6) Rezultatul de la pasul (5) se adun cu K1 mod 2^32:

00000100011000010111001001100101 +
(01100101011001100110011101101000 mod 2^32 =
1100101011001100110011101101000) =
1100101011001100110011101101000

7) Rezultatul de la pasul (3) XOR rezultatul de la pasul (6):

1111000000001000111110111111000 XOR
11110001100101001011010000001000 =
01111000011111100011101111110001
8) Partea stng se adun cu rezultatul de la pasul (7) mod 2^32:

01100011011100100110100101110000 +
01111000011111100011101111110001 mod 2^32 =
01111000011111100011101111110001

3
Partea para

1) Partea dreapt se deplaseaz la stnga cu 4 bii:


01110100011000010111001001100101 << 4 =
01000110000101110010011001010000

2) La rezultatul (1) se adaug valoarea cheia K0 mod 2^32:

01000110000101110010011001010000 +
00110001001100100011001100110100 mod 2^32 =
110001001100100011001100110100

3) Partea dreapt se adun cu I * :

01110100011000010111001001100101 + 10 *
10011110001101110111100110111001 mod 2^32 =
101110001010101100000100111010

4) Rezultatul de la pasul (2) XOR Rezultatul de la pasul (3)


110001001100100011001100110100 XOR
101110001010101100000100111010 =
101110001010101100000100111010

5) Partea dreapt se deplaseaz cu 5 bii la dreapta:

01110100011000010111001001100101 >> 5 =
00000100011000010111001001100101

6) Rezultatul de la pasul (5) se adun cu K3 mod 2^32:

00000100011000010111001001100101 +
00110101001101100011011100111000 mod 2^32 =
00110101001101100011011100111000

7) Rezultatul de la pasul (3) XOR rezultatul de la pasul (6):


101110001010101100000100111010 XOR
00110101001101100011011100111000 =

4
00011011000111001111011000000010

8) Partea stng se adun cu rezultatul de la pasul (7) mod 2^32:


01100011011100100110100101110000 +
00110101001101100011011100111000 mod 2^32 =
101100011011100100110100101110000

Rezultat:
4

http://www.movable-type.co.uk/scripts/tea-block.html
http://www.binaryhexconverter.com/binary-to-ascii-text-converter

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