Sunteți pe pagina 1din 123

GENERATORI DE

NUMERE PSEUDO-
ALEATOARE
Asist. Drd. Morogan Maria Luciana
Ideal ar fi ca secretele cerute in algoritmii criptografici si
protocoale sa fie generate cu un generator de numere pur aleatoare.

Un asemenea generator necesita un mediu capabil sa ofere


numere aleatoare.

Creearea unui dispozitiv hardware sau a unui program


software in vederea exploatarii acestui mediu si producerii unei
secvente de biti in care anumite valori sa nu apara mai des decat altele
(ne vom referi la secventa in care anumite valori apar mai des decat
altele folosind termenul de bias) este o sarcina dificila.
Cuprins
1. Background teoretic
2. Generatori de numere pseudo – aleatoare
1. Generatori simplii de numere pseudo-aleatoare
2. Generatori bazati pe LFSR
3. Alti generatori de numere pseudo-aleatoare
3. Modelul teoretic de verificare a securitatii unui
generator
4. Teste statistice de validare
1. Distributia normala si distributia χ 2

2. Postulatele lui Golomb


3. Teste statistice de baza
4. Testul statistic universal al lui Maurer
Background teoretic

Un generator de biti aleatori este un dispozitiv sau un algoritm prin a carui iesire rezulta o
secventa de cifre binare independente din punct de vedere statistic, secventa in care probabilitatea de emitere
a valorii 1 este de exact 1 ( Termenul folosit in limba engleza pentru o secventa de acest tip este cel de
2
unbiased ).
Deci, un generator de biti pseudo-aleatori este un algoritm determinist[1] (in sensul ca fiind dat
acelasi sir de valori, generatorul va produce intotdeauna la iesire aceeasi secventa) prin care, fiind data o
secventa pur aleatoare binara de lungime k la intrare, la iesire va genera o secventa binara de lungime l, unde l
este mult mai mare decat k, secventa care “pare” a fi aleatoare.

Definitie formala : fie intregii strict pozitivi k si l, l ≥ k+1, ( unde l este obtinut din k prin
aplicatii polinomiale). Un (k, l)-generator de numere pseudo-aleatoare (pe scurt un (k, l)-PRBG), este o
functie f :Z 2k → Z 2l calculabila in timp polinomial[2] (in functie de k). Intrarea s0 ∈ Z 2k se numeste secventa initiala
de intrare, in timp ce iesirea f ( s0 ) ∈ Z 2l este numita secventa pseudo-aleatoare.

[1] Din punct de vedere informatic, un algoritm determinist este un algoritm a carui comportare este
previzibila. Fiind date aceleasi date particulare de intrare, algoritmul va produce la iesire acelasi rezultat
corect, iar masina pe care ruleaza acesta, va trece intotdeauna prin aceeasi secventa de stari.
[2] Timpul polinomial este timpul de calcul al functiei, timp marginit de un polinom de lungime l al secventei
de iesire.
In studiul securitatii unui sistem criptografic exista doua abordari fundamentale:

 Securitatea calculabila[1] care masoara cantitatea de calcul


necesar pentru spargerea unui sistem. Vom spune ca un sistem
este sigur in sensul teoriei complexitatii[2] daca cel mai bun
algoritm pentru spargerea sistemului necesita N operatii, unde N
este un numar foarte mare.
 Securitatea neconditionata masoara securitatea sistemului fara
limita a cantitatii de calcule pe care un adversar este capabil sa
le faca. Un procedeu este neconditionat sigur daca nu poate fi
spart, nici cu o putere de calcul infinita.

[1] Computational security


[2] Computationally secure
Este important de studiat informatia care poate
avea relevanta pentru un adversar in realizarea unui
atac cu text cunoscut si intr-un timp arbitrar de
calcul. Instrumentul de baza in studierea acestei
probleme il reprezinta notiunea de entropie
( Shannon, 1948, teoria informatiei).

In general, pentru un sir binar, avem:

entropia = log (numarul sirurilor posibile)

(log se refera la un logaritm in baza 2)


Generatori de numere pseudo – aleatoare

Alta clasificare:
Din punctul de vedere
al securitatii:  generatori simplii
 Generatorul liniar congruential
 Generatori Ranrot
 Generatorul Blum – Blum – Shub
 Generatori siguri  generatori bazati pe LFSR
 Generatorul Geffe
 ANSI X9.17  Generatori de tip “Stop-and-go”
 Generatorul Stop-and-go alternativ
 FISP 186  “clasa” separata
 Generatorul Mother-of-all
 Generatorul Blum – Micali
Generatorul1/p
 Generatori nesiguri: 

 Generatorul RSA
 Micali-Schnorr
 Blum-Blum-Schub
Generatori simplii de
numere pseudo-aleatoare
Generatorul liniar congruential
Face parte din clasa generatorilor nesiguri.

Un exemplu ilustrativ :

Luam M=31, a=3 si b=5. Obtinem un (5, 10) - PRBG cu un


generator liniar congruential.
Daca consideram aplicatia s → (3s + 5) mod 31 , avem 13 → 13, iar
celelate 30 de resturi sunt permutari dupa un ciclu de lungime 30 in
ordinea urmatoare: 0, 5, 20, 3, 14, 16, 22, 9, 1, 8, 29, 30, 2, 11, 7, 26,
21, 6, 23, 12, 10, 4, 17, 25, 18, 28, 27, 24, 15, 19.
Daca valoarea initiala este diferita de 13, aceasta defineste un
punct de plecare in acest ciclu, si urmatoarele 10 elemente reduse
modulo 2 formeaza sirul de numere pseudo-aleatoare.
Urmarind acest procedeu, cele 31 de siruri de numere pseudo-
aleatoare posibile sunt reprezentate in urmatorul tabel:
Generatori Ranrot
Definiti de Agner Fog[1], acestia se bazeaza pe
generatoare de numere Fibonacci[2], impreuna cu
operatia de rotatie pe biti. Se cunosc trei tipuri de
astfel de generatoare, iar relatiile dupa care se
definesc sunt urmatoarele:
 f0 = 0

 f1 = 1
f = f + f
 n +1 n n −1

[1] Agner Fog a definit in 1977 generatorii Ranrot, initial pentru algoritmi de tip Monte Carlo.
Mai multe informatii se gasesc pe internet la adresa http://www.agner.org/random/theory
[2] Sirul numerelor lui Fibonacci este dat de relatia de recurenta:
Generatorul Blum – Blum – Shub

Unul dintre cele mai des utilizate generatoare de


numere pseudo-aleatoare,este acest generator.
Generatorul Blum – Blum – Shub se bazeaza pe
problema resturilor patratice, al carei enunt este urmatorul:

Fie un intreg n = pq, unde p si q sunt numere prime


necunoscute si fie
x
x ∈ Z astfel incat   = 1
*
n
n
Intrebare: este x un rest patratic modulo n?
Definitie. Fie p si q doua numere prime. Daca
p ≡ q ≡ 3(mod 4)

atunci numarul n = pq se numeste intreg


Blum.
Algoritmul BBS prezentat ca un (k, l)-
PRBG este urmatorul:
Fie p si q doua numere prime, intregi Blum de
k/2 biti si fie n = pq. QR(n) reprezinta
ansamblul de resturi patratice modulo n.
Fie valoarea initiala: s0 ∈ QR (n), pentru i ≥ 0
si +1 = s mod n
2
i
unde
f ( s0 ) = ( z1 , z2 ,..., zl )
zi = si mod 2, pentru 1 ≤ i ≤ l.
Generatorul Blum – Blum – Shub este considerat un
generator sigur din punct de vedere criptografic, in acest
moment, fiind dealtfel considerat drept cel mai bun generator de
numere pseudo-aleatoare pentru protocoale de generare si
distributie a cheii.

Securitatea acestuia se bazeaza pe dificultate factorizarii


lui n.

n poate fi facut public (oricine poate genera o secventa


pseudo-aleatoare pe baza lui). Iar daca n nu se descompune in
factori, nimeni nu poate prezice iesirea.

Mai mult, fiind data o parte a secventei, nu exista nici o


modalitate de a prezice bitul anterior sau pe cel ulterior
secventei.
Generatori bazati pe LFSR
Un LFSR( Linear Feedback Shift Register ) este un
circuit liniar[1] format dintr-un registru serial si o functie de
intoarcere ( feedback ). Daca registrul este compus din n flip-
flopuri, vom avea un n – LFSR.

Sa consideram m registrii seriali Rm , Rm −1 ,..., R0 al caror


continut este fie 0 fie 1, care pot fi considerati dispozitive de
memorare cum ar fi flip-flopuile.

Consideram valorile initiale x0 , x1 ,..., xm −1


Un ceas electronic controleaza procesul.
La primul puls al ceasului, intrarea xm −1 este impinsa
spre dreapta pentru a ocupa registrul Rm −.2
Simultan, xm − 2 devine noua intrare in Rm−3, si asa mai departe,
pana la elementul cel mai din dreapta care va fi transferat
secventei de iesire.
De exemplu, pentru m=5 si configuratia initiala
x4 = 1, x3 = 0, x2 = 0, x1 = 1, x0 = 1

in care reprezentarea este urmatoarea:


1 0 0 1 1

R4 R3 R2 R1 R0

iar dupa primul puls al ceasului vom avea urmatoarea


configuratie: 1 0 0 1

R4 R3 R2 R1 R0

( x4 , x3 , x2 , x1 , x0 ) → ( −, x4 , x3 , x2 , x1 )
Secventa de iesire in acest moment consta in valoarea 1.
Simbolic: Aceasta secventa de elemente este numita satare
a vectorului.
In general, o relatie de recurenta (binara)
de lungime m (corespunzatoare a m registrii),
este o relatie de forma: m −1
xi + m = ∑ c j xi + j
j =0

m ≥ 0 este un intreg pozitiv fixat egal cu


numarul registrilor, toate variabilele xi sunt
binare si c0 = 1. Pentru i = 0 avem:
xm = cm−1 xm−1 + cm− 2 xm − 2 + ... + c1 x1 + c0 x0

Cele m numere cm−1 , cm−2 ,.., c0 binare se numesc


coeficientii recurentei.
Relatia de recurenta de mai sus poate fi
generata de un LFSR de lungime m si este
usor de implementat atat in software cat si in
hardware si poate fi reprezentata prin
schema de mai jos:
Generatorul Geffe

Generatorul Geffe combina, neliniar, trei LFSR, cel de al


treilea fiind folosit pentru a “alege” daca bitul rezultat provine din
primul registru sau din al doilea.
Sa consideram schema urmatoare a unui generator Geffe:

LFSR2 0

EMUX

LFSR3 1

LFSR1
Aici, LFSR1 formeaza functia de selectie a multiplexorului[1] elementar,
intrarile fiind asigurate de celelalte doua LFSR-uri.
Daca a1 , a2 , a3 sunt iesirile corespunzatoare celor trei LFSR-uri,
iesirea generatorului Geffe este data de relatia

b = (a1 ∧ a2 ) ⊕ (a1 ∧ a3 )
Perioada generatorului este cel mai mic multiplu comun al perioadelor
celor trei LFSR-uri. Deci, daca cele trei polinoame care definesc circuitele au
grade prime intre ele, perioada generatorului Geffe este produsul celor trei
perioade.

[1] Multiplexorul este un disozitiv logic care selecteaza o intrare dintr-un sir de intrari
in conformitate cu valoarea unei alte intrari a indexului. Secventele bazate pe
folosirea multiplexoarelor sunt destul de populare datorita faptului ca sunt relativ
rapide. Generatorul de chei este descris, conventional, ca folosind doua
secvente si multiplexorul este folosit pentru a combina cele doua secvente intr-
un mod neliniar.
Generatori de tip “Stop-and-go”
Generatorul Stop-and-go alternativ
Generatorul Beth-Piper (dupa numele foloseste tot trei LFSR-uri de lungimi diferite
autorilor) care controleaza ceasurile celor trei legate intr-un circuit de forma:
circuite. Structura sa este urmatoarea:

Ceasul de intrare in LFSR2 este Daca iesirea din LFSR1 este 1, atunci
controlat de iesirea din LFSR1 si, astfel, LFSR2 se activeaza LFSR2; altfel se activeaza LFSR3.
isi schimba starea la momentul t daca iesirea Iesirea finala din generator este reprezentata de
din LFSR1 era 1 la momentul t-1. un XOR intre cele doua iesiri.
Alti generatori de numere
pseudo-aleatoare
Generatorul Mother-of-all

Este un generator propus de George Marsaglia,


si consta in alegerea initiala a cinci numere intregi, nu
toate nule, memorate pe 32 de biti fiecare.
Generatorul Blum – Micali

Fie g un numar prim si p un numar prim


impar si fie x0 o valoare initiala.
Se genereaza numerele
xi +1 = g xi (mod p )
Iesirea din generator este
p −1
 1,daca xi <
2
 0, altfel.
Generatorul RSA

Fie n = pq, unde p si q reprezinta doua


numere prime mari.
Fie e un numar astfel incat
(e, (p - 1)(q - 1) ) = 1 si x0 o valoare initiala
astfel incat x0 < n. Se defineste relatia
xi +1 = x (mod n)
e
i

Iesirea generatorului este zi = xi (mod 2)


Generatorul1/p
Secventa de numere pseudo-aleatoare este generata prin
extinderea fractiei 1/p la o baza b unde p si b sunt relativ prime
[1].

[1] Fie a si b doua numere intregi, acestea sunt relativ prime


daca si numai daca (a, b) = 1.
MODELUL TEORETIC DE
VERIFICARE A SECURITATII
UNUI GENERATOR
Exista doua cerinte generale legate de securitatea unui
generator de numere pseudo-aleatoare:

 secventa rezultat a unui PRBG ar trebui sa


fie inseparabila, din punct de vedere
statistic, de o secventa de numere pur
aleatoare
 bitii rezultat ar trebui sa fie imprevizibili pentru
un adversar care dispune de resurse de
calcul limitate
Definitie. Fie X n , Yn doua distributii de probabilitate[1] pe {0,1}n
Prin t ∈ X n intelegem ca t este ales astfel incat
∀z ∈ {0,1}n , Pr[ x = z ] = X n ( z )

Spunem ca { X n } este inseparabil in timp polinomial de {Yn }


daca pentru orice algoritm probabilist A si orice polinom Q
exista n0 astfel incat ∀n, n > n0 , avem:
1
| Prt∈X n ( A(t ) = 1) − Prt∈Yn ( A(t ) = 1) |<
Q ( n)

Adica, conditia de inseparabilitate spune ca pentru siruri


suficient de lungi nu exista un algoritm probabilist care sa
decida daca sirul a fost selectat dupa distributia X n sau Yn

[1] O distributie de probabilitate pe o multime S este o


functie D : S → [0,1] ⊂ R astfel incat
∑ D( s ) = 1 s∈S
Notam distributia aleatoare uniforma cu U n si deci, pentru
orice α ∈ {0,1}n
avem 1
Prx∈U n ( x = α ) = n
2

Definitie. Spunem ca sirul X n este pseudo-aleator daca este


inseparabil in timp polinomial de U n , si deci pentru orice
algoritm probabilist A si orice polinom Q exista n0 astfel incat
∀n, n > n0 , avem:

1
| Prt∈X n ( A(t ) = 1) − Prt∈U n ( A(t ) = 1) |<
Q ( n)
Definitie. Algoritmul A din cele doua definitii anterioare este numit test
statistic. Exemple de astfel de teste se vor gasi in continuarea lucrarii de
fata.

Observatie. Daca exista A si Q astfel incat conditiile definitiei de mai


sus sunt incalcate, spunem ca X n pica, sau esueaza testul A.

Putem acum da urmatoarea definitie:

Definitie. Spunem ca un generator de biti pseudo-aleatoare trece toate


testele statistice in timp polinomial[1], teste ce vor fi detaliate mai tarziu,
daca nici un algoritm nu reuseste, in timp polinomial, sa faca distinctia
intre o secventa de iesire a generatorului si o secventa pur aleatoare de
aceeasi lungime cu o probabilitate semnificativ mai mare de ½.

[1] Timpul de rulare al testului este limitat de un polinom de lungime l al


secventei de iesire.
Definitie. Un program determinist in timp polinomial
G :{0,1}k → {0,1} p este un generator de numere pseudo-aleatoare
daca sunt indeplinite
urmatoarele conditii
1. p > k ;
2. {G p } peste pseudo-aleator, unde G p este distributia pe {0,1} p
obtinuta astfel:
pentru a obtine t ∈ G p :

a. se alege x ∈ Gk
b. se defineste t = G(x).

Adica, pentru orice algoritm probabilist A, orice polinom Q si


orice k suficient de mare, avem:
1
| Prt∈G p ( A(t ) = 1) − Prt∈U p ( A(t ) = 1) |<
Q( p )
Testul bitului urmator
Definitie. Testul bitului urmator este acel test
statistic care ia ca intrare prefixul unei secvente si in
urma caruia rezulta o predictie a urmatorului bit.

Definitie. Spunem ca un generator de numere


pseudo-aleatoare trece testul urmatorulu bit daca
nu exista algoritm in timp exponential care, la
intrarea primilor l biti ai unei secvente de iesire s, sa
poata prezice cei (l+1) biti ai lui s cu probabilitatea
semnificativ mai mare decat ½.
k
Formal, notam cu k probabilitatea de distributie pe {0,1} .
Definitie. Spunem ca un generator de numere pseudo-
aleatoare trece testul urmatorulu bit daca pentru orice polinom
Q, exista un intreg k0 astfel incat pentru orice p > k0 si m < p
avem 1 1
| Prt∈G p [ A(t1t2 ...tm ) = tm +1 ] |< +
2 Q(k )
Fapt (universalitatea testului bitului urmator). Un generator de
numere pseudo-aleatoare trece testul urmatorului bit daca si
numai daca trece toate testele statistice in timp polinomial.

Definitie. Un PRBG care trece testul urmatorului bit este


numit un generator criprografic sigur de biti pseudaleatori[1].

[1] Cryptographically secure pseudorandom bit


generator(CSPRBG).
TESTE STATISTICE DE
VALIDARE
Distributia normala si distributia χ 2

Distributia χ
2
Distributia normala
Definitie. O variabila aleatoare (continua) X
are o distributie normala de medie µ si
varianta σ , daca densitatea sa de Definitie. Fie v ≥ 1 un intreg. O variabila
2
aleatoare (continua) X are o distributie χ cu
2
probablitate este definita astfel:
v grade de libertate daca functia sa de
densitate probablistica este definita astfel:
1  −( x − µ ) 2   1
f ( x) = exp   , −∞ < x < ∞  x ( v / 2)−1 e − x / 2 , 0 ≤ x < ∞
σ 2π 2σ 2 f ( x) =  Γ(v / 2)2 v/2
 
 0, x < 0

Notatam X cu N (µ ,σ 2 )
unde Γ reprezinta functia gamma[1].
Daca X este N(0,1), atunci spunem ca X
are o distributie normala standard.
Media si varianta acestei distributii sunt µ =v
si σ 2 = 2v .
Fapt. Daca variabila aleatoare X este Fapt. Daca variabila aleatoare X este N ( µ , σ )
2

N ( µ , σ 2 ) , atunci variabila aleatoare , σ 2 > 0 atunci variabila aleatoare Z = ( X − µ ) 2 / σ 2


are o distributie χ cu 1 grad de libertate.
2

Z = (X − µ) /σ In particular, daca X este N(0,1), atunci Z = X


2

are o distributie χ cu 1 grad de libertate.


2

este N(0,1). ∞


t −1 − x
[1] Functia gamma este definita prin Γ (t ) = x e dx
unde t > 0. 0
Postulatele lui Golomb

Una din primele incercari in a stabili


cateva conditii necesare unor secvente
periodice pseudoaleatoare sa para intr-
adevar aleatoare, o reprezinta postulatele lui
Golomb. Aceste conditii sunt insa departe de
a fi suficiente pentru ca aceste secvente sa
para aleatoare, cu o singura exceptie: toate
secventele sunt binare.
Teste statistice de baza

Fie o secventa binara de lungime n:


s = s0 , s1 , s2 ,..., sn −1
Urmatoarele teste statistice determina daca
secventa binara s poseda sau nu anumite
caracteristici cum ar fi cele pe care ar trebui
sa le detina o secventa binara de numere pur
aleatoare.
Testul de frecventa (testul monobit)

Scopul acestui test este de a determina daca


numarul de 1 si, respectiv de 0, este acelasi
care ar trebui sa fie in cazul in care secventa
in cauza este aleatoare.
Testul serial (testul doi - biti)

Scopul acestui test este de a determina daca


numerele aparitiilor subsirurilor 00, 01, 10 si
11 ca subsiruri ale lui s sunt aproximativ
aceleasi, ceea ce se asteapta dealtfel de la o
secventa aleatoare.
Testul poker
n
Fie m un intreg pozitiv astfel incat  m  ≥ 5 ⋅ 2 m

n
si fie k =  m  . Se imparte secventa s in k
subsecvente, fiecare de lungime m si se
considera ni numarul aparitiilor celui de-al i-
lea tip de astfel de secventa, unde 1 ≤ i ≤
. 2 m

Testul poker determina daca fiecare secventa


de lungime m apare de un aproximativ
acelasi numar de ori in s, asa cum se
asteapta dealtfel de la o secventa aleatoare
de biti.
Testul de tip run

Determina daca numarul sirurilor de tip run


(numarul de zerouri sau de unu) de lungimi
diferite ale sirului s este acelasi cu cel al unui
sir aleator.
Testul de autocorelare

Scopul acestui test este de a verifica


eventualele corelatii dintre secventa s si
versiunea shiftata (versiunea lui s in care
aceasta secventa a fost modificata prin
aplicarea unor operatii de deplasare la
stanga sau la dreapta pe biti) eventual
neciclica, a acestuia.
Testul statistic universal al lui Maurer

Ideea de baza ce sta la baza testului statistic al lui Maurer


consta in aceea ca nu ar trebui sa se poata compresa
semnificativ si fara pierderi de informatie o secventa s de iesire a
unui generator de numere aleatoare.

In acest sens, daca o anumita secventa de iesire a unui


generator poate fi comprimata semnificativ, acesta din urma ar
trebui sa fie respins ca nefiind un bun generator.

In schimbul compresiei unei secvente s, testul statistic


universal calculeaza o cantitate care sa fie compatibila cu
lungimea secventei comprimate.
Universalitatea testului
statistic universal al lui Maurer
apare deoarece acest test este
capabil sa detecteze, orice defect
apartinand unei clase vaste de
posibile defecte pe care le poate
avea un generator.
Bibliografie
 Douglas Stinson, Cryptographie Theorie et pratique, International Thompson Publishing France, Paris
1996.
 Aiden A. Bruen, Mario A. Forcinito, Cryptography, Information Theory, and Error-Correction: a handbook
for the 21st century, Wiley-Interscience, John Wiley&Sons, Inc., Hoboken, New Jersey.
 A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pentru
mai multe informatii: www.cacr.math.uwaterloo.ca/hac
 A. Atanasiu, Crptografie, Note de Curs, disponibil la adresa de internet: http://
www.galaxyng.com/adrian_atanasiu/cript.htm
 S. Goldwasser, M. Bellare, Lecture Notes on Cryptography, Cambridge, Massachusetts, August 2001.
 M. J. Robshaw, Stream Ciphers, RSA Laboratories Tehnical Report TR-701, Version 2.0-July 25, 1995
 R. Davies, Hardware random number generators, articol prezentat lacea de a 15-a Australian Statistics
Conference in Julie, 2000 si la cea de-a 51-a Conference of the NZ Statistical Association in Septembrie,
2000, disponibil la adresa de internet http://www.robertnz.net/hwrng.htm
 J. Viega, Practical Random Number Generation in Software, in Proc. 19th Annual Computer Security
Applications Conference, Decembrie, 2003.
 www.agner.org/random/theory
 http://www.cs.utk.edu/~langston/projects/papers/ssst03.pdf
 http://www.crypto.wpi.edu/Research/truerandom.shtml
 http://www.cs.berkeley.edu/~daw/rnd/
Laborator

Sisteme de criptare bloc


- Moduri de utilizare -

Luciana Morogan

Facultatea de Matematica-Informatica
Universitatea Spiru Haret

Laborator
Laborator

Outline

Sisteme de criptare bloc

Modul de utilizare ECB

Modul de utilizare CBC

Modul de utilizare OFB

Modul de utilizare CFB


Laborator
Sisteme de criptare bloc

Sisteme de criptare - definitie

Sistemele de criptare bloc (block cyphers):


I elemente succesive ale textului clar sunt criptate folosind
aceeasi cheie de criptare
I daca x = x1 x2 x3 . . . atunci
y = y1 y2 y3 . . . = ek (x1 )ek (x2 )ek (x3 ) . . .
Laborator
Sisteme de criptare bloc

Moduri de utilizare

I ECB (Electonic Codebook Mode)


I CBC (Cypher Block Chaining Mode)
I OFB (Output Feedback Mode)
I CFB (Cypher Feedback Mode)
Laborator
Modul de utilizare ECB

Descrierea modului de utilizare ECB

I textul clar se descompune in blocuri de lungime n; daca


este necesar, aceasta se suplimenteaza a. i. lungimea sa
fie divizibila cu n (suplimentarea poate consta din simboluri
alese aleator)
I daca este folosita cheia de criptare k , atunci fiecare bloc
de lungime n se cripteaza folosind functia ek
I textul criptat este decriptat prin aplicarea functiei dk , unde
k reprezinta cheia de decriptare corespunzatoare lui k
Laborator
Modul de utilizare ECB

Descrierea formala a modului de utilizare ECB

I Fie x = α1 α2 α3 . . . texul clar unde fiecare bloc de text


αi , i ≥ 1 este de lungime n
I Formula de criptare cu cheia k : βi = ek (αi ), i ≥ 1
I Textul criptat este y = β1 β2 β3 . . .
Laborator
Modul de utilizare ECB

Exercitiu

I Consideram cifrul bloc care aplica permutari bitilor unui


vector de biti de lungime 4.

I Daca K =S4 , atunci pentru π ∈ S4 , avem


eπ : [0, 1]4 → [0, 1]4 , b1 b2 b3 b4 7−→ bπ(1) bπ(2) bπ(3) bπ(4)

In particular
Criptati textul clar x = 1011000101001010 folosind cheia
 
1 2 3 4
π=
2 3 4 1
Laborator
Modul de utilizare CBC

Descrierea modului de utilizare CBC

I codificarea unui bloc nu mai depinde doar de cheie (a se


vedea ECB) ci si de blocurile anterioare
I aceleasi blocuri in contexte diferite, vor fi codificate diferit
I receptorul poate spune daca textul criptat a fost modificat,
deoarece decriptarea acestuia esueaza
Laborator
Modul de utilizare CBC

Descrierea formala a modului de utilizare CBC

I se defineste blocul initial IV = β0


I Formula de criptare cu cheia k : βi = ek (βi−1 ⊕ αi ), i ≥ 1,
unde ⊕ reprezinta operatia XOR pe biti
Laborator
Modul de utilizare CBC

Schematic - CBC

Criptare Decriptare
Laborator
Modul de utilizare CBC

Exercitiu

I Consideram cifrul bloc care aplica permutari bitilor unui


vector de biti de lungime 4.

I Daca K =S4 , atunci pentru π ∈ S4 , avem


eπ : [0, 1]4 → [0, 1]4 , b1 b2 b3 b4 7−→ bπ(1) bπ(2) bπ(3) bπ(4)

In particular
Criptati textul clar x = 1011000101001010 folosind cheia
 
1 2 3 4
π=
2 3 4 1

Blocul initial este IV = 1010


Laborator
Modul de utilizare OFB

Descrierea modului de utilizare OFB

I construit conform sistemelor de criptare fluide


I se genereaza intai cheia fluida, care apoi se va combina
cu textul clar
I este o criptare sincronizabila aditiva: componentele cheii
fluide sunt obtinute prin criptarea iterativa a unui bloc initial
Laborator
Modul de utilizare OFB

Descrierea formala a modului de utilizare OFB

I Obtinerea cheii fluide


n
I se defineste blocul initial γ0 = IV , IV ∈ {0, 1} si un numar
intreg pozitiv r , 1 ≤ r ≤ n
I textul clar se va descompune in blocuri de dimensiune r
I se calculeaza recursiv cheia fluida γ1 γ2 γ3 . . . dupa formula
γi = ek (γi−1 ), i ≥ 1
I Secventa de text clar x = α1 α2 α3 . . . se codifica cu
formula de criptare βi = αi ⊕ γi , i ≥ 1
I Textul criptat este y = β1 β2 β3 . . .
Laborator
Modul de utilizare OFB

Exercitiu

I Consideram acelasi cifru bloc, text clar si cheie ca la


exercitiile anterioare
I Blocul initial este IV = 1010
Sa se realizeze criptarea/decriptarea secventei de text clar.
Laborator
Modul de utilizare CFB

Descrierea modului de utilizare CFB

I construit conform sistemelor de criptare fluide, este potrivit


pentru codificarea mesajelor mari
I in cadrul aplicatiilor in timp real, poate avea totusi
probleme de eficienta
I se genereaza intai cheia fluida, care apoi se va combina
cu textul clar
I este necesar un vector de initializare
Laborator
Modul de utilizare CFB

Descrierea formala a modului de utilizare CFB

I se defineste blocul initial IV = β0 , IV ∈ {0, 1}n si un numar


intreg pozitiv r , 1 ≤ r ≤ n
I textul clar se va descompune in blocuri de dimensiune r
I se calculeaza cheia fluida δ1 δ2 δ3 . . . criptand blocul de text
criptat anterior dupa formula δi = ek (βi−1 ), i ≥ 1
I Secventa de text clar x = α1 α2 α3 . . . se codifica cu
formula de criptare βi = αi ⊕ δi , i ≥ 1
I Textul criptat este y = β1 β2 β3 . . .
Laborator
Modul de utilizare CFB

Schematic - CFB

Criptare Decriptare
Laborator
Modul de utilizare CFB

Exercitiu

I Consideram acelasi cifru bloc, text clar si cheie ca la


exercitiile anterioare
I Lungimea blocurilor in care se imparte textul clar este tot 4
I Blocul initial este IV = 1010
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Sisteme de criptare cu cheie publica

Luciana Morogan

Facultatea de Matematica-Informatica
Universitatea Spiru Haret

Laborator
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Outline

1 Sisteme de criptare cu cheie publica


Generalitati
Securitatea

2 Sistemul RSA
RSA

3 Sistemul El-Gamal
El-Gamal

4 Exercitii propuse
Exercitii propuse
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Idei de baza

Regula de criptare ek poate fi pulicata intr-un registru public.

Alice (sau orice alta persoana) poate trimite lui Bob un mesaj
criptat cu ek , fara a intra in prealabil in contact, iar Bob este
singurul capabil sa descifreze textul, utilizand cheia sa secreta
de decriptare dk .
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Cele mai cunoscute sisteme cu cheie publica

Sistemul RSA - bazat pe dificultatea descompunerii in


factori primi a numerelor mari (de sute de cifre); cel mai
larg utilizat in acest moment
Sistemul El-Gamal - bazat pe dificultatea calculului
logarimului discret intr-un corp finit
Sistemul Merkle-Hellman - primul sistem definit cu cheie
publica, bazat pe problema {0, 1} a rucsacului (problema
NP-completa1 )
Sistemul McEliece - bazat pe teoria algebrica a codurilor
(decodificarea unui cod linear este o problema
NP-completa)
Curbe eliptice - sistem ce isi desfasoara calculele pe
multimea punctelor unei curbe eliptice
1
Daca problema se reduce la o problema nepolinomiala elementara
n
(NP-tare). De exemplu: 2n , en , aa s.a.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Functii neinversabile (1)

Exemple
Strazile cu sens unic dintr-un oras
A→B
B → A imposibil
desi este usor sa parcurgi drumul A → B, este imposibil sa te intorci
B → A (decriptarea)

Cartea de telefon a unui oras mare


Este usor de gasit numarul de telefon al unei persoane si foarte greu
(imposibil) de aflat persoana care are un anumit numar de telefon.
Criptarea. Pentru fiecare litera a textului clar se alege un nume care
incepe cu acelasi caracter, iar numarul de telefon al persoanei
reprezinta criptarea (doua aparitii ale aceleiasi litere pot fi codificate
diferit)
Decriptarea. Bob detine cartea de teleon scrisa in ordine
crescatoare/descrescatoare a numerelor de telefon
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Functii neinversabile (2)

O functie neinversabila trebuie sa verifice conditiile:


fiind dat x, f (x) este usor de calculat
calculul lui x din f (x) este imposibil
D. p. d. v. matematic nu se cunosc astfel de functii si deci o
problema este:
usoara - daca se poate rezolva cu un algoritm polinomial
cel mult linear
grea - daca se poate rezolva cu un algoritm polinomial
nelinear
imposibila - daca este NP-completa
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Trapa secreta

Bob trebuie sa dispuna de un procedeu care sa-i permita sa


transforme o problema NP-completa in una usoara.
procedeu numit trapa secreta

Exemplu
In exemplul cu cartea de telefon, trapa secreta este
reprezentata de cartea de telefon ordonata dupa numere si nu
dupa abonati.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Generalitati

Principii generale de constructie a unui sistem de criptare cu cheie


publica

Se incepe cu o problema P dificila a carei rezolvare, in


termeni de complexitate, este imposibila (nu exista nici un
algoritm de complitate polinomiala care sa rezolve P)
Se alege P1 o subproblema a lui P rezolvabila in timp
polinomial (preferabil linear)
Lui P1 i se aplica o transformare si se obtine P2 care sa nu
semene cu P1 , dar sa fie apropiata P
Se face publica P2 si se descrie algoritmul de criptare
bazat pe aceasta. Trapa secreta: modul in care se obtine
P1 din P2
Se construiesc detaliile de criptare a.i. destinatarul sa
poata folosi trapa secreta si sa rezolve P1 , iar criptanalistul
sa trebuiasca sa rezolve P2 , imposibila datorita asemanarii
acesteia cu P
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Securitatea

Atacuri (1)

Daca criptanalistul Oscar dispune de un text criptat y ,


atunci el poate cauta un text clar x a.i. ek (x) = y
Raspundeti la intrebarea ce modalitate de aparare
considerati a fi posibila in acest caz?
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Securitatea

Atacuri (1) - raspuns

Raspuns: gradul de complexitate al sistemului


Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Securitatea

Atacuri (2)

Meet - in - the middle

Presupunem ipoteza in care Alice si Bob vor sa stabileasca


intre ei o legatura (un contact)
cei doi vor face publice cheile lor de criptare eA si eB
daca contactul este nepersonalizat, aunci Oscar poate
controla mesajele schimbate intre cei doi:
Oscar opacizaza cele doua chei de criptare si trimite lui
Alice ceia eB1 ca venind dpartea lui Bob. La fel procedeaza
de cealalta parte substituind eA cu eA1
daca consideram m mesajul pe care Alice doreste sa-l
trimita lui Bob, atunci aceasta codifica pe m si trimite
y1 = eB1 (m)
Oscar intercepteaza mesajul si afla m = dB1 (y1 )
Oscar recripteaza y = eB (m) si trmite y lui Bob (Oscar
poate intarzia sau modifica mesajul)
CE CONCLUZII TRAGETI DE AICI?
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Securitatea

Atacuri (2) - raspuns

Apare necesitatea:
autentificarii mesajului sau expeditorului - autentificarea::
procesul princare un calculator (program sau alt uilizator)
incearca sa confirme destinatarului ca mesajul primit de
acesta provine sau nu din partea sa
confidentialtatea:: asigura accesul la informatie doar
partilor autorizate
integritatea:: siguranta ca datele la care se refera un
utilizator pot fi accesate si modificate doar de catre cei
autorizati
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

RSA

Algoritm

RSA:: Rivest-Shamir-Adleman
p, q numere prime impare, p 6= q si n = pq
ϕ(n) = (p − 1)(q − 1) indicatorul lui Euler
fie P = C =Zn , definim
K= {(n, p, q, a, b)|n = pq, ab ≡ 1(modϕ(n))}
pentru k = (n, p, q, a, b), ∀x, y ∈ Zn avem
ek (x) = x b (mod n)
dk (y ) = y a (mod n)
valorile n, b sunt publice; p, q, a sunt secrete
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

RSA

Securitatea si trapa secreta

Securitatea
Se bazeaza pe ipoteza ca ek (x) = x b (mod n) este
neinversabila d.p.d.v al complexitatii.
Pentru ca sistemul sa fie sigur, trebuie ca n sa fie suficient
de mare pentru ca factorizarea acestuia sa fie imposibila
(⇒ ϕ(n) imposibil ⇒ a imposibil)

Trapa secreta
Descompunerea lui n = pq
se calculeaza ϕ(n) = (p − 1)(q − 1)
se determina exponentul de decriptare a folosind
algoritmul lui Euclid extins (pentru aflarea cmmdc-ului si a
inversului intr-un inel Zn )
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

RSA

Implementarea

Decriptare
Bob trebuie sa urmareasca pasii:
genereaza numerele prime mari p si q
calculeaza n = pq si ϕ(n) = (p − 1)(q − 1)
alege aleator un b, 1 < b < ϕ(n) a.i. (b, ϕ(n)) = 1
calculeaza a = b−1 (modϕ(n)) folosind algoritmul lui Euclid
face publice n si b
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

El-Gamal

Problema logaritmului discret

p - prim, α, β ∈ Zp , β 6= 0
a =?, a ∈ Zp−1 a.i. αa ≡ β (mod p)
a, dc exista, este unic si a = logα β
Obs! Pentru problema logaritmilor discreti nu este obligatoriu ca p sa fie
numar prim, important este ca α sa fie radacina primitiva de ordinul p − 1 a
unitatii (∀i, 0 < i < p − 1, αi 6≡ 1 (mod p))

Teorma lui Fermat. αp−1 ≡ 1 (mod p)

Obs! Cum logritmul discret este dificil de calculat iar operatia inversa
(exponentierea) este simpla, trebuie utilizata problema logaritmului discret
dificila in Zp :
p - minim 512 biti (1024 pt securitate pe termen lung)
p − 1 - are cel putin un divizor prim mare
Pentru alegerea convenabila a lui p, problema este NP-completa.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

El-Gamal

El-Gamal

Algoritm
p - prim a.i. problema logaritmilor discreti sa fie dificila in
Zp si α ∈ Z∗p primitiv
P= Z∗p , C= Z∗p ∗ Z∗p
K= {(p, α, a, β)|β ≡ αa (modp)}
valorile p, α, β - publice, iar a - secreta
pt K = (p, α, a, β) si k ∈ Zp−1 aleator(secret) definim:
eK (x, k ) = (y1 , y2 ) unde
y1 = αk (mod p)
y2 = x · β k (mod p)
pt y1 , y2 ∈ Z∗p definim dK (y1 , y2 ) = y2 · (y1a )−1 (mod p)
Sistemul este nedeterminist: criptarea depinde de x si o
variabila aleatoare k aleasa de Alice ⇒ exista mai multe texte
criptate corespunzatoare unui anumit text clar.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

El-Gamal

Observatii

Dezavantaj: dublarea lungimii textului criptat comparativ cu


lungimea textului clar
Daca (y1 , y2 ), (z1 , z2 ) sunt textele criptare ale mesajelor
m1 , respectiv m2 , atunci se deduce textul criptat pentru
m1 m2 ca fiind (y1 z1 , y2 z2 )
criptarea pentru 2m1 (respectiv 2m2 ) conduce la concluzia
ca sistemul El-Gamal este sensibil la atacul cu text clar ales
ESENTIAL: doua texte diferite ce vor fi criptate trebuie sa
foloseasca valori diferite pentru k
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Exercitii propuse

Sistemul RSA

Ex. 1 Ex. 2
Fie d exponentul de decriptare al Fie d = 11 exponentul de decriptare al
sistemului de criptare RSA construit sistemului de criptare RSA construit
cu numerele prime p = 3, q = 5. Daca cu numerele prime p = 7, q = 11.
exponentul de criptare este e = 7, Determinati exponentul de criptare e.
determinati d.

Ex. 3 Ex. 4
Consideram sistemul de criptare RSA Un utilizator al sistemului de criptare
construit cu numerele prime RSA are ca cheie publica
p = 3, q = 5. Daca exponentul de (n, e) = (35, 5) si cheia secreta d = 5.
criptare este e = 4 si se doreste Daca primeste textul criptat c = 3,
codificarea textului clar m = 11, atunci textul clar decodificat de
determinati textul criptat c. utilizator este ...
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse

Exercitii propuse

Sistemul El-Gamal

Ex. 1
Fie cifrul El-Gamal asociat numarului prim p = 7 si radacinii
primitive α = 5. Cheia secreta a lui Alice este 3, iar cea a lui
Bob este 4. Daca Bob codifica textul clar x = 11 si il transmite
lui Alice, atunci aceasta primeste codificarea...

Ex. 2
Fie cifrul El-Gamal asociat numarului prim p = 11 si radacinii
primitive α = 5. Cheia secreta a lui Alice este 4, iar cea a lui
Bob este 7. Alice primeste de la Bob textul criptat (3,7) pe care
il decodifica si gaseste mesajul clar ...
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Semnaturi electronice si functii de


dispersie

Luciana Morogan

Facultatea de Matematica-Informatica
Universitatea Spiru Haret

Laborator
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Outline

1 Preview: Semnaturi electronice

2 Protocoale de semnatura
Protocoale de semnatura
Procedee de criptare vs. procedee de semnatura
Semnatura El-Gamal

3 Functii de dispersie
Semnaturi si functii de dispersie
Functii de dispersie cu coliziuni
Exemplu de exercitiu
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Semnaturi electronice

O semnatura electronica trebuie sa fie:


1 unica - o anumita semnatura trebuie sa poata fi generata
de catre o singura persoana
2 neimitabila - nici o alta persoana nu va putea genera
semnatura utilizatorului indicat
3 usor de autentificat - orice destinatar legal si, eventual,
orice arbitru sa poata stabilii autenticitatea semnaturii
4 imposibil de negat - nici un utilizator legal sa nu-si poata
nega propria semnatura
5 usor de generat
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Protocoale de semnatura

Protocoale

Protocolul este format din:


algoritmul de semnatura - secret: sig(x), unde x este
mesajul transmis
algoritmul de verificare - public: daca y este o semnatura
autentica a lui x, atunci ∀(x, y ) algoritmul ver (x, y ) ofera un
raspuns dicotomic (adevarat sau fals)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Protocoale de semnatura

Definitie formala

Un protocol de semnatura este un cvintuplu (P, A, K, S, V)


unde:
P, A, K - multimi finite, nevide ale caror elemente se
numesc mesaje, semnaturi si, respectiv, chei
exista o aplicatie biunivoca K ↔ S × V astfel incat
∀k ∈ K, ∃!(sigk , verk ) unde

sigk : P → A, verk : P × A →{T , F } au proprietatea ca


∀x ∈ P, ∀y ∈ A,
verk (x, y ) = T ⇔ y = sigk (x)
Obs! Pentru fiecare k ∈ K, functiile sigk si verk trebuie sa fie
calculabile in timp polinomial.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Procedee de criptare vs. procedee de semnatura

Procedee de criptare vs. procedee de semnatura (1)

Consideram cazul in care Alice ii trimite lui Bob un mesaj


semnat si criptat. Fie x textul in clar.
Alice:
determina semnatura y = sigAlice (x)
codifica x si y cu cheia publica a lui Bob obtinand textul
criptat z cu z = eBob ((x, y ))
trimite pe z lui Bob
Bob:
foloseste cheia sa secreta dBob si obtine perechea (x, y )
verifica semnatura lui Alice cu cheia publica verAlice (x, y )
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Procedee de criptare vs. procedee de semnatura

Procedee de criptare vs. procedee de semnatura (2)

Ce se poate intampla daca Alice cripteaza inainte de a semna?


Alice:
calculeaza z = eBob (x)
calculeaza y = sigAlice (eBob (x))
trimite lui Bob mesajul (z, y )
Bob:
decripteaza z si obtine x
verifica y ca semnatura lui z cu cheia publica verAlice (x, z)
Pericolul: Oscar poate intercepta (z, y ), inlocuieste y cu propria
sa semnatura y1 = sigOscar (z) si trimite lui Bob mesajul (z, y1 )
⇒ se recomanda folosirea semnaturii inante de criptare
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Semnatura El-Gamal

Semnatura El-Gamal

p - prim a.i. problema logaritmilor discreti sa fie dificila in


Zp si α ∈ Z∗p element primitiv
P= Z∗p , A= Z∗p × Zp−1
K= {(p, α, a, β)|β ≡ αa (modp)}
valorile p, α, β - publice, iar a - secreta
pt K = (p, α, a, β) si k ∈ Zp−1 aleator(secret) definim:
sigK (x, k ) = (γ, δ) unde
γ = αk (mod p)
δ = (x − aγ)k −1 (mod (p − 1))
pt x, γ ∈ Z∗p , δ ∈ Zp−1 definim
verK (x, γ, δ) =T⇔ β γ γ δ ≡ αx (mod p)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Semnatura El-Gamal

Observatii

1 Daca semnatura este corecta, verificarea autentifica


semnatura:
k
+k (x−aγ)k −1 k
β γ γ δ ≡ αaγ αk δ ≡ αaγ+k δ ≡ αaα ≡ αaα +x−aγ

k k
αaα +x−aα ≡ αx (mod p)
2 Protocolul este nedeterminist: pentru un mesaj dat, pot
exista mai multe semnaturi posibile.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Semnaturi si functii de dispersie

Trasatura generala a protocoalelor de semnatura digitala

Mesajele ce pot fi semnate sunt de dimensiune mica, insa, in


practica, documentele ce trebuiesc a fi semnate ajung la
dimensiuni mult mai mari.

Solutia: functia de dispersie ce trebuie calculata rapid. Aceasta


transforma un mesaj de lungime arbitrara intr-o amprenta
numerica de dimensiune fixata care ulterior va fi semnata:
daca se doreste semnarea unui mesaj x
1 se calculeaza amprenta numerica z = h(x)
2 aceasta se semneaza cu y = sigk (z)
3 perechea (x, y ) este transmisa prin canalul de comunicatie
oricine poate efectua verificarea calculand z = h(x) si
utilizand verk (z, y )
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Functii de dispersie cu coliziuni

Functii de dispersie cu coliziuni (1)

Cum semnatura foloseste doar amprenta numerica, h trebuie


sa satisfaca cateva conditii (pt a evita falsificarea)
atacul cel mai simplu al unui mesaj (x, y ) semnat cu
y = sigk (h(x)) este urmatorul:
1 se calculeaza z = h(x)
2 se cauta x1 6= x a.i h(x1 ) = h(x)
Daca exista x1 ⇒ (x1 , y ) este un mesaj valid

=⇒ h trebuie sa fie cu coliziuni slabe1

1
Definitie. Functia de dispersie h este cu coliziuni slabe daca fiind dat un
mesaj x, este calculabil dificil sa se gaseasca un mesaj x1 6= x a.i.
h(x1 ) = h(x)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Functii de dispersie cu coliziuni

Functii de dispersie cu coliziuni (2)

atac: Oscar cauta doua mesaje x1 , x2 a.i. x1 6= x2 si


h(x1 ) = h(x2 ). Il convinge pe Bob sa semneze x1 cu
amprenta sa numerica h(x1 ) si obtine y ⇒ (x1 , y )
semnatura autentica

=⇒ h trebuie sa fie cu coliziuni tari2

Obs! O functie cu coliziuni tari este si cu coliziuni slabe.

2
Definitie. Functia de dispersie h este cu coliziuni tari daca este calculabil
dificil sa se obtina doua mesaje x1 , x2 , x1 6= x2 a.i. h(x1 ) = h(x2 )
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Functii de dispersie cu coliziuni

Functii de dispersie cu coliziuni (2)

atac bazat pe observatia ca este posibil sa se obtina


aleator falsificari ale amprentelor numerice. Daca Oscar
obtine o semnatura valida a amprentei z, el cauta x a.i.
h(x) = z
=⇒ h neinversabila3

Lema. Daca o functie de dispersie este cu coliziuni tari,


atunci ea este neinversabila.

3
Definitie. h este neinversabila daca fiind data o amprenta numerica z,
este calculabil dificil sa se gaseasca mesajul x a.i. h(x) = z.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Exemplu de exercitiu

Exercitiu

Fie numarul prim p = 15 si radacina primitiva modulo 15 g = 3.


Alice doreste sa ii trimita lui Bob un document printr-un canal
de comunicatie. Pentru ca aceasta sa poata semna
documentul x ∈ {0, 1}∗ , ea alege cheia secreta a = 5 si k = 3.
Se considera publica o functie de dispersie (hash function) a.i.
h(x) = 11.
Cunoscand protocolul de semnatura El-Gamal folosit, cu
r = g k modp
s = (h(x) − ar )k −1 mod (p − 1)
determinati (r , s).
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie

Exemplu de exercitiu

Solutie

(r , s) =?
r = 33 mod 15 ≡ 12 mod 15
s = (11 − 5 ∗ 12)3−1 mod 14 ≡ 7 mod 14
=⇒ (r , s) = (12, 7)
Preview Sisteme sincrone Sisteme asincrone

Sisteme de criptare fluide

Luciana Morogan

Facultatea de Matematica-Informatica
Universitatea Spiru Haret

Laborator
Preview Sisteme sincrone Sisteme asincrone

Outline

1 Preview

2 Sisteme sincrone

3 Sisteme asincrone
Preview Sisteme sincrone Sisteme asincrone

Sisteme de criptare

Sistemele de criptare:
bloc(block cyphers)
elemente succesive ale textului clar sunt criptate folosind
aceeasi cheie de criptare
daca x = x1 x2 x3 . . . atunci
y = y1 y2 y3 . . . = ek (x1 )ek (x2 )ek (x3 ) . . .
fluide(stream cyphers)
sincrone
asincrone
Preview Sisteme sincrone Sisteme asincrone

Definitii formale (1)

Fie M = (P, C, K, E, D) un sistem de criptare. Secventa de


simboluri k1 k2 k3 · · · ∈ K + se numeste cheie fluida.
M = (P, C, K, E, D) este un sistem de criptare fluid daca
cipteaza textul clar x = x1 x2 x3 . . . in
y = y1 y2 y3 . . . = ek1 (x1 )ek2 (x2 )ek3 (x3 ) . . ., unde k1 k2 k3 . . .
este o cheie fluida din K +
Preview Sisteme sincrone Sisteme asincrone

Definitii formale (2)

Problema generala: generarea cheii fluide cu ajutorul unui


generator numit generator de chei fluide
Obs! Daca
cheia fluida este aleasa aleator si nu mai este foloita
ulterior
lungimea cheii = lungimea textului clar
Atunci sistemul de criptare se numeste one-time-pad
Preview Sisteme sincrone Sisteme asincrone

Definitie formala

Un sistem de criptare fluid sincron este o structura


(P, C, K, L, E, D) unde
Fie P, C, K sunt multimi finite, nevide, ale caror elemente
se numesc texte clare, texte criptate si, respectiv, chei
L este o multime finita, nevida numita alfabetul sirului de
chei
se defineste g : K → L+ generatorul de chei fluide astfel
incat ∀k ∈ K avem g(k ) = k1 k2 k3 · · · ∈ K + cheia fluida
(teoretic infinita)
∀z ∈ L,
exista regula de criptare ez ∈ E
exista regula de decriptare dz ∈ D
astfel incat ∀x ∈ P, dz (ez (x)) = x
Preview Sisteme sincrone Sisteme asincrone

Exemplu: Sistemul de criptare Vigenere

Descrierea sistemului
m lungimea cuvantului cheie
P, C, K=Z26 , K= (Z26 )m
ez (x) = x + z(mod26), dz (y ) = y − z(mod26)
cheia z1 z2 . . . definita prin

ki dc 1 ≤ i ≤ m
zi =
zi−m dc i ≥ m + 1

va genera din cheia fixa K = (k1 , k2 , . . . , km ), cheia fluida


k1 , k2 , . . . , km k1 , k2 , . . . , km k1 , k2 , . . .
Preview Sisteme sincrone Sisteme asincrone

Criptarea si decriptarea

Se realizeaza ca un automat descris de


qi+1 = δ(qi , k ), zi = g(qi , k ), yi = h(zi , xi ) unde:
q0 - starea initiala determinata din cheia k
δ - functia de tranzitie a starilor
g - functia ce produce cheia fluida zi
h - functia iesire care produce textul criptat yi pe baza
textului clar xi si a cheii fluide zi
Preview Sisteme sincrone Sisteme asincrone

Criptarea si decriptarea: schematic

Criptarea
Preview Sisteme sincrone Sisteme asincrone

Decriptarea: schematic

Decriptarea
Preview Sisteme sincrone Sisteme asincrone

Observatii

Sistemul de criptare bloc este un caz particular de sistem


de criptare fluid: ∀i ≥ 1, zi = k
(Sincronizare.) Cel care trimite mesajele si cel ce urmeaza
a le primi trebuie sa isi sincronizeze cheia fluida pentru a
obtine o criptare/decriptare corecta. Daca in timpul
transmisiei sunt inserati sau eliminati biti in textul criptat,
atunci decriptarea esueaza si poate fi reluata pe baza unor
tehnici de resincronizare (de exp. reinitializarea)
Modificarea unui bit din textul criptat (fara a se elimina sau
adauga nimic) nu afecteaza decriptarea altor caractere
(nepropagarea erorii)
Adversarul activ care elimina, insereaza sau retrimite
componente ale mesajului provoaca desincronizari si va
fidetectat la receptie
Preview Sisteme sincrone Sisteme asincrone

Sistemul aditiv fluid binar de criptare

Un sistem aditiv fluid binar de criptare este un sistem fluid


sincron in care P = C = L= Z2 iar h reprezinta functia XOR

Criptare Decriptare
Preview Sisteme sincrone Sisteme asincrone

Sistemul aditiv fluid binar de criptare - exemplu

Sa considerm exemplul in care dorim criptarea/decriptarea secventei de text


clar x = 101101 si presupunem ca iesirea generatorului de chei fluide ofera
cheia z = 1101. Vom avea: x1 = 1, x2 = 0, x3 = 1, x4 = 1, x5 = 0, x6 = 1 si
z1 = 1, z2 = 1, z3 = 0, z4 = 1, z5 = z1 = 1, z6 = z2 = 1

Criptarea Decriptarea
y1 = ez1 (x1 ) = x1 ⊕ z1 = 1 ⊕ 1 = 0 x1 = dz1 (y1 ) = y1 ⊕ z1 = 1 ⊕ 0 = 1
y2 = ez2 (x2 ) = x2 ⊕ z2 = 0 ⊕ 1 = 1 x2 = dz2 (y2 ) = y2 ⊕ z2 = 1 ⊕ 1 = 0
y3 = ez3 (x3 ) = x3 ⊕ z3 = 1 ⊕ 0 = 1 x3 = dz3 (y3 ) = y3 ⊕ z3 = 0 ⊕ 1 = 1
y4 = ez4 (x4 ) = x4 ⊕ z4 = 1 ⊕ 1 = 0 x4 = dz4 (y4 ) = y4 ⊕ z4 = 1 ⊕ 0 = 1
y5 = ez1 (x5 ) = x5 ⊕ z1 = 0 ⊕ 1 = 1 x5 = dz1 (y5 ) = y5 ⊕ z1 = 1 ⊕ 1 = 0
y6 = ez2 (x6 ) = x6 ⊕ z2 = 1 ⊕ 1 = 0 x6 = dz2 (y6 ) = y6 ⊕ z2 = 1 ⊕ 0 = 1
Se obtine astfel secventa de text cript Se obtine astfel secventa de text clar
y = 011010 x = 101101
Preview Sisteme sincrone Sisteme asincrone

Definitie formala

Un sistem de criptare fluid se numeste asincron


(auto-sincronizabil) daca functia de generare a cheii fluide
depinde de un numar de caractere criptate anterior:
qi = (yi−t , yi−t+1 , . . . , yi−1 ), zi = g(qi , k ), yi = h(zi , xi ) unde:
q0 = (y−t , y−t+1 , . . . , y−1 ) - starea initiala
k - cheia
g - functia ce produce cheia fluida
h - functia iesire care produce care cripteaza textului clar xi
Preview Sisteme sincrone Sisteme asincrone

Sisteme asincrone - Exemple

LFSR
- registrii lineari cu feedback

Criptarea cu auto-cheie
P = C = L= Z26
cheia fluida este data de z1 = k , zi = yi−1 , i ≥ 2
pentru z ∈ Z26 , definim
ez (x) = x + z(mod26)
dz (y ) = y − z(mod26)

Exercitiu Solutia
Pentru k = 11 Se va obtine textul criptatat
codificati/decodificati textul clar DSARLSSJNG.
SPIRU HARET
Preview Sisteme sincrone Sisteme asincrone

Solutia detaliata a exercitiului anterior

Codificarea textului clar SPIRU HARET este x =18 15 8 17 20 7 0 17 4 19,


iar k = z1 = 11

Modul criptare
y1 = ez1 (x1 ) = x1 + z1 (mod26) = 18 + 11(mod26) = 3 si z2 = y1 = 3
y2 = ez2 (x2 ) = x2 + z2 (mod26) = 15 + 3(mod26) = 18 si z3 = y2 = 18
y3 = ez3 (x3 ) = x3 + z3 (mod26) = 8 + 18(mod26) = 0 si z4 = y3 = 0
y4 = ez4 (x4 ) = x4 + z4 (mod26) = 17 + 0(mod26) = 17 si z5 = y4 = 17
y5 = ez5 (x5 ) = x5 + z5 (mod26) = 20 + 17(mod26) = 11 si z6 = y5 = 11
y6 = ez6 (x6 ) = x6 + z6 (mod26) = 7 + 11(mod26) = 18 si z7 = y6 = 18
y7 = ez7 (x7 ) = x7 + z7 (mod26) = 0 + 18(mod26) = 18 si z8 = y7 = 18
y8 = ez8 (x8 ) = x8 + z8 (mod26) = 17 + 18(mod26) = 9 si z9 = y8 = 9
y9 = ez9 (x9 ) = x9 + z9 (mod26) = 4 + 9(mod26) = 13 si z10 = y9 = 13
y10 = ez10 (x10 ) = x10 + z10 (mod26) = 19 + 13(mod26) = 6
Se obtine astfel textul criptat y = 3 18 0 17 11 18 18 9 13 6 si deci
codificarea DSARLSSJNG.

Decripatrea se va realiza in mod similar.


Preview Sisteme sincrone Sisteme asincrone

Observatii

Auto-sincronizare: cum h−1 depinde de un numar fixat de


caractere criptate anterior, desincronizarea rezulta din
inserarea sau stergerea de caractere criptate (se poate
evita)
Daca starea unui sistem fluid auto-sincronizabil depinde de
t caractere anterioare, atunci modificarea
(stergerea,inserarea) unui caracter va duce la decriptarea
incorecta a maxim t caractere, dupa care decriptarea
redevine corecta.
Preview Sisteme sincrone Sisteme asincrone

Alte exemple de sisteme fluide de criptare

SEAL - sistem de criptare aditiv binar


RC4 (Rist Code 4) - creat pentru RSA Data Security Inc.
(astazi RSA Security), este un sistem aditiv fluid de
criptare destinat scopurilor comerciale