Vous êtes sur la page 1sur 41

Sisteme de programe

pentru timp real


Universitatea Politehnica din Bucuresti
2005-2006
Adina Magda Florea
http://turing.cs.pub.ro/sptr_06
Curs Nr. 3
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 s
0
-
samanta.
Starile generatorului evolueaza dupa relatia:
s
i
=f(s
i-1
), cu i =1,2,... g:S (0,1)
Perioada unui generator de numere aleatoare este
cel mai mic intreg pozitiv p a.i.
s
i+p
=s
i
, i > p > 0
3
Sunt numere aleatoare?
Testul
N numere intregi in intervalul [ 0, r ), frecventa
fiecarui numar din interval fiind f
i
( i = 0, r-1 )



Distributii uniforme (aceeasi probabilitate)
=

2
i
2
i=0
r 1
f N r )
-
N r
(
( [ r , r ] )
2
e

2
4
1.1 Metoda congruent multiplicativa
f (s
i+1
) = ( b*s
i
+ c ) mod m
g ( s
i
) = s
i
/m
s
0
- samanta , b, c < m, pozitivi
f(s
i
) e [ 0, m-1 ]
Cum se aleg m, s
0
si b ?
Fiecare valoare este mai mica decat cel mai mare
intreg, dar prima operatie a*b+1 duce la
overflow
Cum se elimina overflow-ul?

5
Cum se elimina overflow-ul?
Reprezentare pe 32 de biti - intereseaza pentru rezultat numai
ultimii 8 digiti.
a si b se reprezinta ca doua polinoame in fct. de x.
a = 1234567 b = 31415821



grad(p) s N-1 grad(q) s N-1 grad(p*q) s 2N-2
p = 10
4
* p
1
+ p
0
q = 10
4
* q
1
+ q
0
p * q = ( 10
4
*p
1
+ p
0
) ( 10
4
q
1
+ q
0
) =
10
8
* p
1
* q
1
+ 10
4
* ( p
1
* q
0
+ p
0
* q
1
) + p
0
* q
0
.
p(x) = 3x + ... + 2x +1 , cu b = p(10)
q(x) = x + + 7 , cu a = q(10)
7
6
...
6
Generare numere aleatoare
#define m 100000000
#define m1 10000
#define b 31415821

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 e[0,m-1]
// echiv rand() RAND_MAX=m-1
7
1.2 Metoda congruent-aditiva
Registru de deplasare cu feed-back
Adunare


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



Considerand un sir de numere aleatoare a
0
a
k
,
se obtin numere aleatoare in continuare
in [ 0, m-1 ], astfel
a [ k ] = ( a [ k-b] + a [ k-c ] ) % m ( b < c )
min 2
c
-1 numere distincte
Valori b = 31, c = 55
a coada circulara

Re Re Re g g g
k b k c k
=

1 2 3 4
+
b c
9
2 Operatii aritmetice cu numere mari
Reprezentare
Intregul 0120200103110001200004012314 cu N = 28
digiti se reprezinta prin p(10) unde p este polinomul


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 N
2
inmultiri
Divide and conquer
N par => 2 polinoame de grad N/2

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

10
Utilizare Divide and conquer
p( x ) = p
0
+ p
1
x + ... + p
N-1
x
N-1
p
i
( x ) = p
0
+ p
1
+ ... +p
N/2-1
x
N/2-1
p
s
( x ) = p
N/2
+ ... + p
N-1
x
N/2-1





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







Doua polinoame de grad N pot fi inmultite folosind inmultiri



11
p(x) = p (x) + x p (x)
q(x) = q (x) + x q (x)
p(x) q(x) = p (x) q (x) + ( p (x) q (x) + q (x) p (x) ) x p (x) q (x) x
i
N/2
s
i
N/2
s
i i i s i s
N/2
s s
N

+
r (x) = p (x) q (x)
r (x) = p (x) q (x)
r (x) = (p (x) p (x)) q (x) q (x))
p(x) q(x) = r (x) + (r (x) r (x) - r (x)) x r (x) x
i i i
s s s
m i s i s
i m i s
N/2
s
N

+ +
+
(
~ N
1.58
3 Criptologie - generalitati
Criptografia - Proiectarea sistemelor de comunicatie
secreta
Criptoanaliza - Studiul metodelor de intelegere a
comunicatiilor secrete
Doua scopuri de baza



Doua tipuri de criptosisteme:
- conventionale (criptosisteme simetrice)
- publice (criptosisteme asimetrice)
EMITATOR RECEPTOR
Mesaj
Mesaj incriptat
Cheie
Mesaj
Analist
12
4 Criptosisteme conventionale
13
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 c
1
c
2
...c
m
.
j 0
pentru fiecare litera l
i
din mesaj executa
l
i
din mesaj are indexul p in alfabet
j ( j+1 ) mod m
alege c
j
din cheie
fie k indexul lui c
j
in alfabet
inlocuieste l
i
cu litera din alfabet de index ( k + p )
sfarsit
14
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
15
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 )

16
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
17
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 M
1
M
k
2. Se incripteaza mesajul astfel: C = P(M) = C
1
C
k

unde C
i
= (M
p
i
) mod N R
3. Receptorul decripteaza mesajul
M = S(C) = M
1
...M
k
unde M
i
= (C
s
i
) mod N

19
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,



Este sigur?

20
M mod N = M
ps
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+2
a
m , unde m este impar si 2
este cea mai mare putere a lui 2 care divide w-1.
3. Genereaza un numar aleator b e( 1, w )
4. j 0, z b
m
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
21
Cum se genereaza un nr. prim f. mare?
Se genereaza un nr. aleator f. mare + se testeaza daca
este prim

7. j j + 1
daca j<a atunci
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
22
Discutie criptosisteme publice
23
Toate abordarile se bazeaza pe calcule NP
Problema: daca se inlocuieste p (cu s asociat)
cu p (si s asociat)
Cheile publice certificate de cheie (digitale)
prefixate cu un certificat de semnatura; contin:
User key ID
Data la care a fost creata cheia
Cheia
Cheia secreta cheie incriptata cu o parola

Certificate digitale
24
Atacuri asupra sistemelor de cu chie publice: afla
cheia secreta
Management sigur
Managementul de chei implica
Genererarea cheilor
Cautarea cheilor
Distribuirea cheilor
Incredere in cheile publice
Certificate digitale
25
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

Certificate digitale
26
Lungimea cheii 1024 bits.
512 bits nesigur
2048 , 4096 bits.
4096-bits
Inpractica, 512-bit key.

NSA
Cu cat mai mult timp, cu atat cheia mai lunga

8. DES Data Encryption Standard
27
Data Encryption Standard (DES) adoptat ca
standard in USA in 1977.
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)
DES Mod de functionare
28
Algoritm pt. criptarea si decriptarea blocurilor de
date de 64 de biti pe baza unei chei de 56 de biti.
Criptarea si decriptarea utilizeaza aceeasi cheie k
decriptarea este reversul criptarii
DES are un bloc cu dimensiunea de 64 biti
codifica 64 de biti de data odata
Incripteaza mesajul folosind o cheie de 56 de biti
Initial proiectat pt incriptare hardware
Sigur pt scopuri comerciale
Un calculator foarte puternic poate sparge DES
prin forta bruta
DES Mod de functionare
29
Algoritm pt. criptarea si decriptarea blocurilor de date
de 64 de biti pe baza unei chei de 64 de biti.

Blocul de criptat:
1) Permutare initiala IP
2) Calcul complex care depinde de cheie = o functie f -
functia de criptare, si o functie KS - planificarea cheii
3) Permutare inversa a cele initiale IP
-1
Bloc
Right
Left
1 2 3
DES Mod de functionare
30
DES Mod de functionare
31
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
K
n
= KS(n,KEY)
ne[1,16], K
n
functie care permuta o selectie
de biti din KEY
Pt un bloc L
n-1
R
n-1
, iesirea L
n
R
n
a unei iteratii este:
L
n
= R
n-1
R
n
= L
n-1
f(R
n-1
,K
n
)
DES Atac
32
Cheia: 56 biti de incercat 72,057,594,037,927,936
chei posibile

1998 - Electronic Frontier Foundation (EFF)
Au construit un calculator dedicat 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
DES Modele de operare
33
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 pseudoaleatoare care sunt
combinate cu textul neincriptat pentru a
produce text incriptat
TDEA Triple Data Encryption Standard

Triple DES
34
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
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.
35
36
9 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)
37
PGP creaza o cheie de sesiune, o cheie secreta one-
time-only.
Cheia numar aleator generat pe baza msicarilor
mouse si taste apasate
Se foloseste cheia intr-un sistem clasic (rapid) -
ciphertext.
Cheia de sesiune se incripteaza cu cheia publica a
receptorului
Se transmite cheia de sesiune criptata + ciphertext
38
Decriptarea - invers
Criptarea conventionala cam de 1, 000 de ori
mai rapida decat cea publica
Avantaje combinare
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
39
Certificat digital PGP
Un certificat PGP:
The PGP version number this identifies which
version of PGP was used to create the key associated
with the certificate.
The certificate holder's public key the public
portion of your key pair, together with the algorithm of
the key: RSA, DH (Diffie-Hellman), or DSA (Digital
Signature Algorithm).
The certificate holder's information this consists
of "identity" information about the user, such as his or
her name, user ID, photograph, and so on.

40
Certificat digital PGP
The digital signature of the certificate owner
also called a self-signature, this is the signature using
the corresponding private key of the public key
associated with the certificate.
The certificate's validity period the certificate's
start date/ time and expiration date/ time; indicates
when the certificate will expire.
The preferred symmetric encryption algorithmfor
the key indicates the encryption algorithm to which
the certificate owner prefers to have information
encrypted. The supported algorithms are CAST, IDEA
or Triple-DES.


41