Sunteți pe pagina 1din 43

Sisteme de programe

pentru timp real

Universitatea “Politehnica” din Bucuresti


2007-2008
Adina Magda Florea
http://turing.cs.pub.ro/sptr_08
si curs.cs.pub.ro
Curs Nr. 2
Criptologie si criptosisteme
• Numere aleatoare
• Operatii aritmetice cu numere mari
• Criptologie – generalitati
• Criptosisteme conventionale
• Criptosisteme publice
• Standarde actuale

2
1. Numere aleatoare

• Numar intreg/real aleator intr-un domeniu dat si


cu o precizie fixata / Numar pseudoaleator
• Generator de numere aleatoare - o multime de
stari S, o functie f:S  S si o stare initiala s0 -
samanta.
• Starile generatorului evolueaza dupa relatia:
si=f(si-1), cu i =1,2,... g:S  (0,1)
• Perioada unui generator de numere aleatoare este
cel mai mic intreg pozitiv p a.i.
si+p=si , i > p  0
3
Sunt numere aleatoare?
• Testul 2
• N numere intregi in intervalul [ 0, r ), frecventa
fiecarui numar din interval fiind fi ( i = 0, r-1 )
-
r 1
( f i  N r) 2 (  [2 r , r])
i=0
2 
Nr

• Distributii uniforme (aceeasi probabilitate)

4
1.1 Metoda congruent multiplicativa

• f (si+1) = ( b*si + c ) mod m


g ( si ) = si/m
s0 - samanta , b, c < m, pozitivi
f(si)  [ 0, m-1 ]
int a [ Max ]
a [ 0 ] = sam ;
for ( i = 1; i <= N; i++ )
a [ i ] = ( a [ i-1 ] * b + 1 ) % m

5
1.1 Metoda congruent multiplicativa

• Cum se aleg m, s0 si b ?
• m trebuie sa fie mare = perioada maxima (aproape de
limita cuvantului calculatorului); m poate fi prim
• b trebuie sa fie prim relativ la m.
• O alegere este: b sa se termine cu ...x21 si x sa fie par.
• Cum calculez ?
• Fiecare valoare este mai mica decat cel mai mare intreg,
dar prima operatie a*b+1 duce la overflow
• Cum se elimina overflow-ul?

6
Cum se elimina overflow-ul?
• Reprezentare pe 32 de biti - intereseaza pentru rezultat numai
ultimii 8 digiti.
• Alegem a = 1234567 b = 31415821
• a si b se reprezinta ca doua polinoame in fct. de x.
p(x) = 3x 7 + ... + 2x + 1 , cu b = p(10)
6
(a*b +1) mod m
q(x) = x + ... + 7 , cu a = q(10)

grad(p)  N-1 grad(q)  N-1 grad(p*q)  2N-2


p = 104 * p1 + p0
q = 104 * q1 + q0
p * q = ( 104 *p1 + p0 ) ( 104 q1 + q0 ) =
108 * p1 * q1 + 104 * ( p1 * q0 + p0 * q1 ) + p0 * q0

7
Generare numere aleatoare
#define m 100000000
#define m1 10000
#define b 31415821
108 * p1 * q1 + 104 * ( p1 * q0 + p0 * q1 ) + p0 * q0
long int a =1234567;
long int mult( long int p , long int q )
{ long int p0, p1, q0, q1;
p1 = p / m; p0 = p % m1;
q1 = q / m1; q0 = q % m1;
return ((p0 * q1 + p1 * q0) % m1)*m1 + p0* q0)% m ;
}
long int random( )
{ a = ( mult( a, b ) + 1 ) % m ;
return a;
}
// nr. aleatoare [0,m-1]
// echiv rand() RAND_MAX=m-1
8
1.2 Metoda congruent-aditiva
• Registru de deplasare cu feed-back
• Adunare
1 2 3 4

• 1111
• 0111, 0011, 0001, 1000, ...
• Pt. n biti se pot obtine secvente de max. 2n-1
numere distincte
• n = 31 sunt bune pozitiile 0 si una din pozitiile 4,
7, 8, 14, 19, 25, 26 sau 29.
9
Metoda congruent-aditiva
• Adunare
b c
Re g k  Re g k b  Re g k c 1 2 3 4

• Considerand un sir de numere aleatoare a0 …ak,


se obtin numere aleatoare in continuare
in [ 0, m-1 ], astfel
• a [ k ] = ( a [ k-b] + a [ k-c ] ) % m (b<c)
• min 2c-1 numere distincte
• Valori b = 31, c = 55
• a – coada circulara 10
2 Operatii aritmetice cu numere mari
• Reprezentare
• Intregul 0120200103110001200004012314 cu N = 28
digiti se reprezinta prin p(10) unde p este polinomul

p(x) = x 26 + 2  x 25 + ... + x + 4

• Calcul eficient al inmultirii a doua polinoame p(x) si q(x)


de grad N-1
• Produs de grad 2N-2 cu 2N-1 termeni
• Produs calculat direct – N2 inmultiri
• Divide and conquer
• N – par => 2 polinoame de grad N/2

11
Utilizare “Divide and conquer”
p( x ) = p0 + p1x + ... + pN-1xN-1
pi( x ) = p0 + p1 + ... +pN/2-1xN/2-1
ps( x ) = pN/2 + ... + pN-1xN/2-1
p(x) = p i (x) + x N/2  p s (x)
q(x) = q i (x) + x N/2  q s (x)
p(x)  q(x) = p i (x)  q i (x) + ( p i (x)  q s (x) + q i (x)  p s (x) )  x N/2  p s (x)  q s (x)  x N

• Pentru a calcula p ( x ) * q ( x ) sunt necesare numai 3 inmultiri

ri (x) = p i (x)  q i (x)


rs (x) = p s (x)  q s (x)
rm (x) = (p i (x)  p s (x))  (q i (x)  q s (x))
p(x)  q(x) = ri (x) + (rm (x)  ri (x) - rs (x))  x N/2  rs (x)  x N

• Doua polinoame de grad N pot fi inmultite folosind  N 1.58 inmultiri


12
3 Criptologie - generalitati
• Criptografia - Proiectarea sistemelor de comunicatie
secreta
• Criptoanaliza - Studiul metodelor de intelegere a
comunicatiilor secrete
• Doua scopuri de baza Analist

Mesaj incriptat
Mesaj Mesaj
EMITATOR RECEPTOR

Cheie

• Doua tipuri de criptosisteme:


- conventionale (criptosisteme simetrice)
- publice (criptosisteme asimetrice)
13
4 Criptosisteme conventionale

14
Criptosisteme conventionale
Metode simple
• Cifrul lui Cezar – a N-a litera din alfabet se inlocuieste cu litera
(N+k) din alfabet, unde k este constant (Cezar lua k = 3)
• Substitutie simpla - Matrice cu 26 linii si 2 coloane care
defineste substitutia literelor
• Cifrul Vigenere: se utilizeaza o cheie pentru a determina
valorile lui k care trebuie adaugate fiecarei litere.
Fie cheia c1c2...cm.
j0
pentru fiecare litera li din mesaj executa
li din mesaj are indexul p in alfabet
j  ( j+1 ) mod m
alege cj din cheie
fie k indexul lui cj in alfabet
inlocuieste li cu litera din alfabet de index ( k + p )
sfarsit
15
Criptosisteme conventionale
Cifrul Vigenere se poate combina cu substitutia simpla
• Daca cheie  mesaj  Cifrul Vernam (one time pad)
• Masini de criptare/decriptare - primeste un numar de
chei adevarate, numite criptovariabile, care sunt
utilizate pentru a genera chei lungi
• Generarea pseudocheii din criptovariabile este
asemanatoare cu metoda congruent aditiva (cu
registru) de la numere aleatoare
• Pericol
• Dificultati ale sistemelor conventionale

16
5 Criptosisteme publice
Idee: fiecare utilizator are o cheie publica P care
poate fi cunoscuta de oricine si o cheie secreta S
cunoscuta numai de el.
• Mesaj M
• E - cheia publica P a receptorului - C = P ( M )
• R - cheia secreta S - M = S ( C )

17
Criptosisteme publice
Conditii
• S ( P ( M ) ) = M pentru fiecare mesaj M
• Toate perechile ( S, P ) sa fie distincte
• Deducerea lui S din P sa fie la fel de dificila ca si
decriptarea lui C
• Atat S cat si P sunt usor de calculat

18
6. Standarde actuale
Conventionale
• DES – Data Encryption Standard
• AES – Advanced Encryption Standard
Publice
• RSA - Ron Rivest, Adi Shamir, and Leonard
Adelman
• DSA – Digital Signature Algorithm
• DSS – Digital Signature Standard
• NIST (National Institute of Standards and Technology,
USA) lucreaza la Federal Public Key Infrastructure – va
sustine semnaturile digitale
7 Criptosistemul public RSA
• Cheia de incriptare P este o pereche de intregi ( N, p ) cu p
public
• Cheia de decriptare S este o pereche de intregi ( N, s ) unde
s este secret.
Aceste numere trebuie sa fie foarte mari, in mod tipic N -
200 digiti iar p si s aproximativ 100 digiti

Metoda de criptare/decriptare
1. Se imparte mesajul in k grupri de biti M1…Mk
2. Se incripteaza mesajul astfel: C = P(M) = C1…Ck
unde Ci = (Mpi) mod N R
3. Receptorul decripteaza mesajul
M = S(C) = M1...Mk unde Mi = (Csi) mod N

20
Modul de alegere a p si s
1. Se genereaza trei numere aleatoare prime mari ( 100 digiti ) x,
y, z.
2. Cel mai mare dintre acestea este ales ca valoare a lui s.
3. Fie celelalte doua numere x si y.
4. N = x * y
5. p se alege astfel incat p * s mod ( x-1 ) * ( y-1 ) = 1.

Se poate demonstra ca, pt. aceste alegeri,

Mps mod N = M

Este sigur?

21
Cum se genereaza un nr. prim f. mare?

Se genereaza un nr. aleator f. mare + se testeaza daca


este prim
Fie w numarul pentru care se testeaza daca este prim.
1. i  1, n  50
2. Determina a si m a.i. w=1+2am , unde m este impar si a
este cea mai mare putere a lui 2 care divide w-1.
3. Genereaza un numar aleator b ( 1, w )
4. j  0, z  bm mod w
5. daca (( j=0 ) si ( z=1 )) sau ( z=w-1 )
atunci executa pasul 9
6. daca ( j>0 ) si ( z=1 ) atunci executa pasul 8

22
Cum se genereaza un nr. prim f. mare?

Iterat de n ori va raspunde incorect ca numarul este


prim cu o probabilitate de cel mult 1/4n

7. j  j + 1
daca j<a atunci z  z2 mod w
executa pasul 6
8. w nu este prim
stop
9. daca i<n
atunci i = i + 1; executa pasul 3
altfel w este probabil prim
sfarsit

23
Discutie criptosisteme publice
• Toate abordarile se bazeaza pe calcule NP
• Problema: daca se inlocuieste p (cu s asociat)
cu p’ (si s’ asociat)
• Managementul de chei implica
– Genererarea cheilor
– Cautarea cheilor
– Distribuirea cheilor
– Incredere in cheile publice
• Cheile publice – certificate de cheie (digitale)
• Cheia secreta – cheie incriptata cu o parola
24
Certificate digitale
Certificate digitale: verifica daca o cheie publica apartine
unui individ
Un certificat contine:
• Un nume si cheia publica
• Data de expirare
• Numele autoritatii de certificare
• Numar de serie
• Semnatura digitala a autoritatii de certificare
Receptorul verifica un certificat folosind cheia publica a
autoritatii de certificare
Se autentifica astfel semnaturile digitale ale mesajelor
• Lungimea cheii 1024 bits.
• 512 bits nesigur
• 2048 , 4096 bits.
• In practica, 512-bit key.
25
8. Criptosisteme conventionale - DES
• Criptare sir
• Criptare blocuri
• Simetrice – mai rapide
• Simetrice – fnct de incriptare – reversibila
• Criptare pe blocuri
– p1,p2 -> p2’,p1 --- runda
– p2’= p2 + f(p1,cheie)
• f - functie hash unidirectionala
• Dim bloc: 64, 128 bits sau variabila
• Dim cheie: 40, 56, 64, 80, 128, 192, 256 bits
26
Functie hash unidirectionala
• F hash cu proprietati suplimentare – securitatea
informatiei
– fiind dat h – greu de aflat m al h = hash(m)
– fiind dat m1- greu de gasit m2<>m1 ai
hash(m1)=hash(m2)
– greu de gasit m1 si m2 ai hash(m1)=hash(m2)
• F hash – mesaj de lungime variabila intr-o
iesire de lungime fixa
• Imparte intrarea in 2 parti, fiecare se comprima
cu o functie de compresie
27
DES – Data Encryption Standard
• Data Encryption Standard (DES) adoptat ca
standard in USA in 1977 (IBM – Lucifer) de
FIPS (Federal Information Processing Standard
of USA)
• Foloseste o cheie de 56-bits – insuficient
• Varianta Triple-DES (TDES or 3DES) –
foloseste o cheie mai lunga
• Advanced Encryption Standard (AES) – se
crede ca va fi mai bun ca DES (si 3DES)

28
DES – Mod de functionare
 Criptarea si decriptarea utilizeaza aceeasi cheie k –
decriptarea este reversul criptarii
 Algoritm lucreaza pe blocurilor de date de 64 de biti
pe baza unei chei de 56 de biti.
 16 runde de criptare
 Permutare initiala IP si finala FP
 Blocul spart in 2 blocuri de 32 biti prelucrate
alternativ – schema Feistel
 Initial proiectat pt incriptare hardware
 Sigur pt scopuri comerciale
 Un calculator foarte puternic poate sparge DES prin
forta bruta

29
DES – Mod de functionare
 Algoritm pt. criptarea si decriptarea blocurilor de date
de 64 de biti pe baza unei chei de 56 (64) de biti.

• Blocul de criptat:
1) Permutare initiala IP
2) Calcul complex care depinde de cheie = o functie f -
functia de criptare (Feistel), si o functie KS -
planificarea cheii (selecteaza 56 de biti)
3) Permutare inversa a cele initiale FP = IP-1

1 2 3
Bloc
Left Right 30
DES – Mod de functionare
2) Calcul
 16 iteratii; functia f opereaza asupra a 2 blocuri: unul de
32 biti si unul de 48 de biti  un bloc de 32 de biti
 Blocul de intrare = 64 biti = L (32) R (32)
 K – un bloc de 48 biti ales din cheia KEY de 56 biti
 La fiecare iteratie, blocul K este diferit
Kn = KS(n,KEY)
n[1,16], Kn – functie care permuta o selectie
de biti din KEY
 Pt un bloc Ln-1Rn-1, iesirea LnRn a unei iteratii este:
Ln = Rn-1 Rn = Ln-1  f(Rn-1,Kn)
31
DES – Mod de functionare

32
DES – Mod de functionare
Functia de criptare (f)
 E (bloc de 32)  Cheie (48) – produce 32 biti
 4 etape:
 Expansiune – permutare de expansiune E de la 32 la 48
 Mixare cheie – XOR cu 48 biti din cheie – planif cheie (16
subchei)
 Substitutie – 8 bucati de 6 biti – 8 bucati de 4 biti –
transformare neliniara – tabela de substitutie 
 Permutare – biti rearanjati printr-o permutare finala
 Alternarea substitutiei cu permutarea si expansiunea
creeaza “confuzie si difuzie” – Shannon

33
DES – Mod de functionare
Planificarea cheii
 Permuta cheia de 64 – PC1
 Selecteaza 56 biti initial
 Impart in 2 bucati de 28 biti
 La fiecare runda ambele bucati sunt rotite la
stanga cu 1,2 biti si apoi selectez subcheia de 48
de biti printr-o functie de permutare PC2: 24 biti
din stanga si 24 biti din dreapta

34
DES – Atac
Cheia: 56 biti – de incercat 72,057,594,037,927,936
chei posibile

 1998 - Electronic Frontier Foundation (EFF)


Au construit un calculator dedicat DESCHALL care
poate decripta un mesaj care incearca toate cheile
posibile in mai putin de 3 zile.
Cost calculator: < $250,000
Cauta 88 miliarde chei/sec
 COPACOBANA = Cost Optimized Parallel Code
Breaker – Germania
35
DES – Modele de operare
• ECB – Electronic Codebook – DES direct
• CBC – Cipher Block Chaining – DES extins
care inlantuie blocuri de text incifrat
• CFB – Cipher Feedback – utilizeaza text
incriptat anterior ca intrare pt. DES si
genereaza iesiri care sunt combinate cu textul
neincriptat pentru a produce text incriptat
• TDES – Triple Data Encryption Standard

36
Triple DES
Triple-DES – dupa ce s-a aratat vulnerabilitatea DES
Foloseste 3 chei DES de 56 biti – lungime cheie totala
168 biti
1. Incriptare folosind DES cu prima cheie de 56 biti
2. Incriptare folosind DES cu a doua cheie de 56 biti
3. Incriptare folosind DES cu a treia cheie de 56 biti
Decriptarea la fel, in sens invers

37
9 Sisteme combinate
• RSA si DES pot fi folosite impreuna
• DES – viteza mare, RSA – management
convenabil
• Un mesaj incriptat cu DES
• Emitatorul utilizeaza cheia publica (RSA) a
receptorului pt incriptarea cheii DES
• Mesajul DES incriptat + cheia DES incriptata cu
RSA sunt trimise receptorului intr-un plic digital
RSA.
• Cand plicul este primit de receptor, receptorul
decripteaza cheia DES cu cheia lui RSA privata
apoi utilizeaza cheia DES pt decriptare mesaj.

38
39
• Criptarea conventionala – cam de 1, 000 de ori
mai rapida decat cea publica
• O cheie conventionala de 80 biti este
echivalenta ca putere cu o cheie publica de
1024 biti
• O cheie conventionala de 128 biti este
echivalenta ca putere cu o cheie publica de
3000 biti

40
PGP (Phil Zimmermann, 1991)
• PGP combina avantajele sistemelor publice si
conventionale
• Criptosistem hibrid
• Intai comprima textul
• De ce?
• Mai scurt, mai repede de transmis
• Creste securitatea prin eliminarea sabloanelor
• (fisierele care sunt prea scurte sau care nu se
comprima bine nu sunt comprimate)

41
• PGP creaza o cheie de sesiune, o cheie secreta “one-
time-only”.
• Cheia – numar aleator generat pe baza miscarilor
mouse si taste apasate
• Se foloseste cheia intr-un sistem conventional
• Cheia de sesiune se incripteaza cu cheia publica a
receptorului
• Se transmite cheia de sesiune criptata + textul incriptat
• Decriptarea - invers

42
Certificat digital PGP
Un certificat PGP:
• Numarul versiunii PGP — identifica versiunea de PGP
utilizata pentru crearea cheii asociata certificatului
• Cheia publica din certificat a persoanei — cheia publica +
algoritmul cheii: RSA, DH (Diffie-Hellman), or DSA (Digital
Signature Algorithm).
• Informatii referitor la persoana —nume, id, poza, etc.
• Semnatura digitala a proprietarului certificatului —self-
signature – semnatura ce utilizeaza cheia privata
corespunzatoare cheii publice din certificat
• Perioada de validitate a certificatului — data de incepere a
validitatii si data de expirare
• Algoritmul de criptare simetric preferat pentru cheie —
CAST, IDEA or Triple-DES.

43

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