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=0

N r)

( [ 2 r, r])

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

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?

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, cub = p(10)
6

q(x) = x + ... + 7, cua = q(10)

(a*b +1) mod m

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
#define
#define

m
m1
b

100000000
10000
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

+
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.

Metoda congruent-aditiva
Adunare

Re g k Re g k b Re g k c

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

1.58

N
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

EMITATOR

Mesaj

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.
j0
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 M1Mk
2. Se incripteaza mesajul astfel: C = P(M) = C1Ck
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,

M ps 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
jj+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
7.

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

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 onetime-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 selfsignature 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