criptografie 600

605
Sisteme generale de criptare 1

Upload: irinucaxp

Post on 05-Jul-2015

419 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Criptografie 600

Sisteme generale de criptare

1

Page 2: Criptografie 600

Caracteristicile unui sistem de criptare

1. Confidentialitate (privacy): proprietatea de

a pastra secretul informatiei, pentru ca

aceasta sa fie folosita numai de persoanele

autorizate.

2. Integritatea datelor: proprietatea de a evita

orice modificare (inserare, stergere, substi-

tutie) neautorizata a informatiei.

3. Non - repudierea: Proprietatea care previne

negarea unor evenimente anterioare.

2

Page 3: Criptografie 600

4. Autentificare: Proprietatea de a identifica

o entitate conform anumitor standarde.

Este compusa din

(a) Autentificarea unei entitati;

(b) Autentificarea sursei informatiei.

Page 4: Criptografie 600

Definitia 1. Criptografia este studiul metode-

lor matematice legate de securitatea informa-

tiei, capabile sa asigure confidentialitatea,

autentificarea si non-repudierea mesajelor, pre-

cum si integritatea datelor vehiculate.

Termenul criptografie ınseamna scriere secreta∗

Domeniul cuprinde atat operatia de criptare

(cifrare) a unui text, cat si eventualele ıncercari

de descifrare si de aflare a cheii de criptare.

In unele lucrari, cadrul general de lucru este

numit criptologie, termenul de criptografie de-

semnand numai operatia de cifrare si descifrare

legala.

∗Cuvantul – inventat ın 1658 de fizicianul englezThomas Browne – este format din cuvintele grecesticryptos – ascuns si grafie – scriere.

3

Page 5: Criptografie 600

Situatia generala de care se ocupa criptografia

este urmatoarea:

Criptanalist

Expeditor Destinatar6-

4

Page 6: Criptografie 600

In general, hackerul Oscar poate avea doua

tipuri de comportament:

• Pasiv: se multumeste sa intercepteze mesa-

jele si sa le citeasca, folosindu-le ın scop

personal;

• Activ: doreste sa modifice mesajele, sa le

schimbe ordinea sau sa introduca propriile

sale mesaje, ın intentia de a fi acceptat de

Bob drept Alice.

In acest caz, mesajul va trebui sa verifice –

ınafara de conditia de confidentialitate – si pe

cea de autenticitate: Bob trebuie sa fie sigur

ca mesajul primit a fost de la Alice.

5

Page 7: Criptografie 600

In unele cazuri, problema se poate complica

prin faptul ca exista anumite mesaje pe care

Alice neaga ca ıi apartin, desi le-a trimis chiar

ea.

In acest caz trebuie prevazute anumite proto-

coale care sa ıntareasca proprietatile de au-

tentificare; proprietati care sa o sileasca pe

Alice sa ısi recunoasca propriile mesaje (non-

repudiere).

6

Page 8: Criptografie 600

Terminologie:

Un mesaj ın forma sa originara este numit text

clar.

Expeditorul rescrie acest mesaj folosind o meto-

da cunoscuta numai de el (eventual si de desti-

natar); spunem ca el cripteaza (sau cifreaza)

mesajul, obtinand un text criptat.

Destinatarul primeste textul cifrat si ıl decrip-

teaza, stiind metoda folosita pentru criptare.

Deci Alice si Bob trebuie sa stabileasca ıntr-o

etapa preliminara toate detaliile de criptare si

de decriptare.

7

Page 9: Criptografie 600

Definitia 2.Un sistem de criptare este o struc-

tura (P, C,K, E,D), unde:

• P= {w | w ∈ V ∗} este multimea ”textelor

clare”, scrise peste un alfabet nevid V

(uzual V = {0,1}).

• C= {w | w ∈ W ∗} este multimea ”textelor

criptate”, scrise peste un alfabet nevid W

(uzual W = V ).

• K este o multime de elemente numite ”chei”.

• Fiecare cheie K ∈ K determina o metoda

de criptare eK ∈ E si o metoda de de-

criptare dK ∈ D.

eK : P−→ C si dK : C−→ P sunt functii cu

proprietatea dK(eK(w)) = w, ∀w ∈ P.

8

Page 10: Criptografie 600

In general se considera C= {α | ∃a ∈ P, ∃k ∈K, α = eK(a)}.

Functia eK este evident injectiva (de remar-

cat ca aceasta conditie de injectivitate nu este

obligatorie pentru functia de decriptare dK).

Daca eK este bijectiva (si deci dK = e−1K ), sis-

temul de criptare se numeste ”simetric” sau

sistem de criptare bloc.

9

Page 11: Criptografie 600

Un mesaj de intrare x este descompus ın

x = x1x2 . . . xn, xi ∈ P.

Apoi fiecare xi este criptat folosind regula de

criptare eK, specificata de o cheie fixata K ∈ K.

Deci Alice calculeaza yi = eK(xi) (1 ≤ i ≤ n) si

obtine textul criptat

y = y1y2 . . . yn, yi ∈ C

pe care ıl trimite prin canalul de comunicatie.

Bob primeste mesajul y = y1y2 . . . yn, pe care ıl

decripteaza folosind functia dK :

xi = dK(yi) (1 ≤ i ≤ n)

10

Page 12: Criptografie 600

Pentru ca un sistem de criptare sa fie consi-

derat bun, trebuie ındeplinite trei criterii

(enuntate de Francis Bacon ın sec. XV II):

1. Fiind date eK si α ∈ P, este usor de deter-

minat eK(α);

2. Fiind date dK si w ∈ C, este usor de deter-

minat dK(w);

3. α este imposibil de determinat din w, fara

a cunoaste dK.

Ultimul criteriu defineste ideea de ”securitate”

a sistemului.

11

Page 13: Criptografie 600

La aceste criterii, Bacon adauga si o a patra

regula:

4 Textul criptat trebuie sa fie un text banal,

fara suspiciuni.

Aceasta ultima conditie este utilizata astazi

doar de unele subdomenii al criptografiei, cum

ar fi steganografie sau watermarking.

12

Page 14: Criptografie 600

Intreaga disciplina numita ”criptografie” se ba-

zeaza pe conjectura

P6= NP.

P reprezinta clasa problemelor rezolvabile prin

algoritmi a caror complexitate este marginita

superior de o functie polinomiala ın lungimea

datelor de intrare. Modelul standard de calcu-

labilitate este masina Turing.

NP este clasa problemelor rezolvabile prin al-

goritmi nedeterministic polinomiali (care sunt

inclusi ın algoritmii de complexitate cel putin

exponentiala).

Evident, P⊆ NP, dar se pare ca problema egali-

tatii este nedecidabila (ın termeni matematici).

13

Page 15: Criptografie 600

Exemplul 1.Unul din primele sisteme de criptare

cunoscute este sistemul de criptare Cezar.

Sa consideram alfabetul latin scris, ın ordine

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Fie k un numar ıntreg din intervalul [0,25].

Rescriem alfabetul latin permutat ciclic, ıncepand

ınsa cu litera avand numarul de ordine k (litera

A are numarul de ordine 0).

Aceasta noua scriere o asezam sub prima scriere,

astfel (am presupus k = 2):

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

14

Page 16: Criptografie 600

NIMIC NOU =⇒ PKOKEPQW

(din motive suplimentare de securitate, spatiile

dintre cuvinte se ignora de obicei).

Bob cunoaste (fiind destinatar legal) cheia de

criptare ek.

Cheia sa de decriptare este dk = e26−k.

Pe baza ei Bob va putea construi cele doua linii

ale tabelului:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

PKOKEPQW =⇒ NIMICNOU

15

Page 17: Criptografie 600

Codificare:

A B C D E F G H I J K L M0 1 2 3 4 5 6 7 8 9 10 11 12N O P Q R S T U V W X Y Z13 14 15 16 17 18 19 20 21 22 23 24 25

In acest fel putem opera pe inelul finit Z26.

P = C = K= Z26

Pentru K ∈ K ales arbitrar (si m ∈ P, α ∈ C):

eK(m) = m + K (mod 26)

si

dK(α) = α−K (mod 26)

16

Page 18: Criptografie 600

Exista doua tehnici de constructie a sistemelor

de criptare (Claude Shannon, 1949):

• Confuzie: Scopul este de a bloca orice

informatie obtinuta prin analize statistice

sau redondante ale textului criptat.

O modalitate simpla de a obtine un grad

ridicat de confuzie se bazeaza pe utilizarea

de substitutii.

• Difuzie: Aceasta tehnica disipeaza redon-

danta specifica textului clar.

Practic, o modificare a unui singur caracter

din textul clar provoaca multiple modificari

ın textul criptat.

Deci pentru distingerea unei redondante din

textul clar este necesara studierea unei can-

titati apreciabile de text criptat.

17

Page 19: Criptografie 600

Secret perfect (perfect secrecy)

Un sistem de criptare are proprietatea de se-

cret perfect daca din textul criptat, Oscar nu

poate obtine nici o informatie referitoare la tex-

tul clar.

Definitia 3. Un sistem de criptare este perfect

secret daca

Pr[x|y] = Pr[x]

pentru orice x ∈ P, y ∈ C.

Probabilitatea aposteriori ca textul clar x sa fie

criptat ın textul receptionat y este identica cu

probabilitatea apriori ca textul clar sa fie x.

18

Page 20: Criptografie 600

Urmatoarea teorema caracterizeaza proprieta-

tea de secret perfect pentru majoritatea sis-

temelor de criptare simetrice:

Teorema 1. Fie (P, C,K, E,D) un sistem de

criptare cu

card(K) = card(C) = card(P).

El asigura un secret perfect daca si numai daca

toate cheile sunt utilizate cu probabilitati egale

si ∀x ∈ P, ∀y ∈ C exista o cheie unica K ∈ K cu

y = eK(x).

19

Page 21: Criptografie 600

Criptanaliza sistemelor de criptare

Definitia 4. Procesul de determinare a unei

chei K folosind un text criptat α (asociat even-

tual cu alte informatii auxiliare) se numeste

”criptanaliza”.

Decriptarea si criptanaliza au ın final acelasi

scop: aflarea textului clar.

Diferenta consta ın faptul ca ın criptanaliza

acesta trebuie aflat fara a sti cheia de de-

criptare.

20

Page 22: Criptografie 600

Nu subestimati niciodata pe criptanalist.

regula verificata din punct de vedere istoric

pentru toate sistemele create pana ın prezent:

acestea sau au fost sparte sau trebuie sa se

revizuiasca periodic pentru a rezista atacurilor

permanente ale intrusilor.

21

Page 23: Criptografie 600

Oscar are la dispozitie facilitati de calcul ex-

celente, adesea superioare celor de care dispun

cei doi parteneri Alice si Bob.

In secolul XIX Kirkoff lanseaza o ipoteza fun-

damentala (numita ”Principiul lui Kerkoff”):

Criptanalistul stie toate detaliile sistemului de

criptare folosit, inclusiv algoritmii utilizati pre-

cum si implementarile lor.

Ca o consecinta, securitatea unui sistem de

criptare se bazeaza ın totalitate pe cheie.

22

Page 24: Criptografie 600

Definitia 5. Un atac este un algoritm eficient

care – pentru un sistem de criptare fixat –

gaseste elemente protejate care pot fi determi-

nate (mult mai) rapid decat au fost specificate

de autori.

Evident, unele atacuri pot sa nu contrazica se-

curitatea sistemului ci doar sa prevada anumite

slabiciuni posibile, de care utilizatorii trebuie sa

tina cont.

23

Page 25: Criptografie 600

In general, scopul criptografiei este desemnarea

de algoritmi (protocoale, scheme, servicii) de

criptare siguri (din punct de vedere al com-

plexitatii), ın timp ce criptanaliza se concen-

treaza pe construirea de atacuri asupra sis-

temelor de criptare, avand ca scop determin-

area cheilor de criptare.

Ulterior, atacurile potential reusite furnizeaza

criterii de constructie a sistemelor de criptare,

si vor face parte implicit din criptografie.

Criteriile de constructie obtinute dintr-un atac

permit realizarea de sisteme de criptare imune

(rezistente) la atacul respectiv.

24

Page 26: Criptografie 600

Criptanaliza examineaza cu atentie toate slabi-

ciunile (faliile) unui sistem si ıncearca sa con-

struiasca atacuri bazate pe aceste slabiciuni,

pentru a demonstra ca sistemul nu este sigur

(si deci poate fi spart de Oscar).

In general este imposibil de demonstrat ca un

sistem rezista la orice fel de atac, ın timp ce

opusul sau este totdeauna posibil: este sufi-

cient de descris un atac.

Metodele de atac (cum ar fi furtul, mituirea,

presiuni fizice si psihice asupra persoanelor im-

plicate ın construirea si utilizarea sistemului de

criptare) care nu sunt legate direct de slabi-

ciunile sistemului de criptare, nu intra ın dome-

niul criptanalizei.

25

Page 27: Criptografie 600

In general un sistem de criptare poate fi

• neconditionat sigur,

• conditionat sigur.

Un sistem neconditionat sigur este imun la orice

tip de atac.

In acest caz, securitatea sa depinde de difi-

cultatea de a rezolva problema matematica pe

care se bazeaza construirea cheii.

26

Page 28: Criptografie 600

In general, un criptanalist este pus ın fata urma-

toarelor situatii (care solicita strategii diverse):

1. Oscar stie numai textul criptat w; ın acest

caz atacurile sunt direct legate de lungimea

textului.

Cel mai simplu atac ın acest caz consta ın par-

curgerea tuturor cheilor posibile si verificarea

textului criptat, pana se gaseste cheia corecta.

Este atacul prin forta bruta si el reuseste tot-

deauna.

27

Page 29: Criptografie 600

Teorema 2. Pentru a ghici o cheie din n vari-

ante posibile sunt necesare ın medie (n + 1)/2

ıncercari.

De exemplu, pentru un sistem de criptare cu

card(K) = 256, se folosesc aproximativ 255

ıncercari pana se gaseste cheia corecta.

In cazul cand numarul cheilor posibile este mic,

aceasta cheie se poate afla foarte usor dupa un

numar mic de ıncercari.

De aceea sunt folosite obligatoriu sisteme de

criptare cu card(K) foarte mare.

Pentru o cheie care ocupa n biti sunt necesare

ın medie 2n−1 ıncercari (daca nu exista nici o

informatie suplimentara).

O extindere a lungimii cheii la n+1 biti dubleaza

deci spatiul de cautare.

28

Page 30: Criptografie 600

In momentul de fata, tehnica de calcul ofera

atacuri prin forta bruta eficiente pentru cheile

de lungimi mai mici de 128 biti; asa ca sis-

temele de criptare actuale folosesc ın general

chei de 1024 biti sau chiar mai mult (exceptie:

sistemele bazate pe curbe eliptice).

Atacul prin forta bruta poate fi ımbunatatit

semnificativ cu alte informatii legate de sis-

tem, informatii care pot reduce numarul cheilor

posibile.

Multe atacuri folosesc diverse strategii pentru

a reduce semnificativ spatiul cheilor posibile,

dupa care se foloseste atacul prin forta bruta.

29

Page 31: Criptografie 600

2. Oscar stie cel putin o pereche de caractere

(text clar, text criptat).

Din cunoasterea catorva perechi (x, eK(x)) cu

x ∈ P Oscar va ıncearca sa decripteze ıntregul

text criptat interceptat.

Exemplul 2. La sistemul de criptare Cezar, o

singura pereche (a, eK(a)), dezvaluie imediat

cheia si – implicit duce la decriptare.

Exemplul 3. Aceasta a fost situatia ın care s-a

aflat orientalistul francez Jean Francois Cham-

pollion, cand a descifrat hieroglifele folosind

piatra de la Rosetta.

30

Page 32: Criptografie 600

Oscar cunoaste criptarea unor texte clare

selectate de el.

Acesta este atacul cu text clar ales, luat ın con-

siderare de majoritatea studiilor de criptanaliza.

31

Page 33: Criptografie 600

Exemplul 4. Sistemul de criptare Hill (creat ın

1929 de Lester Hill).

Definim un numar ıntreg fixat d (d ≥ 2). Se

construiesc multimile

P= C= (Z26)d,

K= {M | M ∈Md(Z26), det(M) 6= 0}.

Textul clar w se ımparte ın blocuri de lungime

d : w = α1α2 . . . αn, |αi| = d

(ultimul bloc se completeaza eventual pana ajun-

ge la lungimea d).

Textul criptat va fi x = β1β2 . . . βn unde

βi = eM(αi) = αi·M (mod 26), (1 ≤ i ≤ n).

Pentru decriptare se foloseste relatia

dM(βi) = βi ·M−1 (mod 26).

32

Page 34: Criptografie 600

Sa luam de exemplu d = 2 si cheia

M =

(3 32 5

)cu inversa

M−1 =

(15 1720 9

)

Daca textul clar este w = FRAC, vom avea

α1 = (F R) = (5 17), α2 = (A C) = (0 2)

Din relatiile

β1=α1·M (mod 26)=(5 17)·

(3 32 5

)=(23 22)=(X W )

β2=α2·M (mod 26)=(0 2)·

(3 32 5

)=(4 10)=(E K)

se obtine textul criptat x = XWEK.

33

Page 35: Criptografie 600

Sa ne situam acum pe pozitia lui Oscar: pre-

supunem ca am gasit dimensiunea d = 2 si

ıncercam sa aflam matricea M (sau – echiva-

lent – M−1), stiind perechea (text clar, text

criptat)= (FRAC, XWEG).

Care este matricea

M =

(a bc d

)cu a, b, c, d ∈ {0,1, . . . ,25}, astfel

ca (5 170 2

)·(

a bc d

)=

(23 224 10

).

Oscar afla ıntai inversa lui A =

(5 170 2

).

Cum det(A) = 10 si cmmdc(10,26) > 1, rezulta

ca 10−1 (mod 26) nu exista; deci A nu este

inversabila.

34

Page 36: Criptografie 600

Sa presupunem acum ca Oscar lucreaza ın ipo-

teza (3); alege un text clar a carui matrice este

inversabila si ıi afla criptarea.

Fie BRAD acest text clar, a carui matrice aso-

ciata este

A =

(1 170 3

)

Oscar solicita criptarea lui BRAD si primeste

LKGP , de matrice

B =

(11 106 15

)

Deci el dispune de perechea (BRAD, LKGP ).

35

Page 37: Criptografie 600

Oscar determina ıntai

A−1 =

(1 30 9

)Apoi, din ecuatia A ·M = B, va gasi solutia

M = A−1 ·B =

(1 30 9

)·(

11 106 15

)=

(3 32 5

)

36

Page 38: Criptografie 600

4. Oscar stie cheia de criptare eK. Pe baza

ei ıncearca sa determine dK ınainte de inter-

ceptarea mesajelor criptate.

Aceasta este situatia tipica sistemelor de cripta-

re cu cheie publica: cheia de criptare eK este

cunoscuta public cu mult ınainte de a fi folosita

pentru criptare.

Deci criptanalistul are la dispozitie destul de

mult timp pentru prelucrarea ei si orice clarifi-

care ın perioada cand timpul este ”ieftin” are

o valoare deosebita; dupa ce se primesc mesaje

criptate, timpul devine ”scump”, si el trebuie

sa fie scurtat cat mai mult.

37

Page 39: Criptografie 600

Sisteme simetrice de criptare

1

Page 40: Criptografie 600

In general, sistemele de criptare clasice

se numesc si sisteme simetrice.

Motive:

• Odata cu aflarea cheii de criptare eK, cheia

de decriptare dK se obtine imediat, fiind

functia inversa.

• Alice si Bob dispun de aceeasi informatie

relativ la sistemul de criptare.

Sistemele de criptare simetrice se ımpart ın

doua clase mari: cifruri de permutare si cifruri

de substitutie.

2

Page 41: Criptografie 600

Cifruri de permutare

Textul clar se ımparte ın blocuri de n (n ≥ 2)

caractere, dupa care fiecarui bloc i se aplica o

permutare π ∈ Sn (multimea permutarilor de n

elemente).

Elementele n si π sunt fixate.

π este cheia de criptare, iar π−1 va fi cheia de

decriptare.

3

Page 42: Criptografie 600

Exemplul 1. Cheie de criptare

(1 2 32 1 3

).

Un text clar, de exemplu

FLOARE ALBASTRA

se ımparte ın grupuri de cate trei caractere (s-a

considerat si caracterul spatiu, notat )

FLO ARE AL BAS TRA

Textul criptat va fi

LFO RAE A L ABS RTA

sau – eliminand gruparile,

LFORAEA LABSRTA.

4

Page 43: Criptografie 600

Exemplul 2. Sistemul de criptare Richelieu

(Jules Verne – Mathias Sandorf).

Fie cartonul 6× 6, ın care zonele hasurate

constituie gauri.

Vrem sa criptam textul

EMINESCU A FOST UN MARE POET NATIONAL

5

Page 44: Criptografie 600

Vom scrie acest text sub forma unui tabel cu

sase linii si sase coloane, astfel:

E M I N E SC U A FO S T U NM A R E PO E T N AT I O N A L

Aplicand cartonul peste acest text, vor ramane

vizibile 9 caractere:

MNS TA AN

6

Page 45: Criptografie 600

Vom roti acum cartonul cu 90o ın sensul acelor

de ceasornic. El va arata

Asezand acum peste text, raman vizibile

caracterele

F MPTNIL

La a treia rotire a cartonului se obtine

ICSUEETOA, iar la a patra – EEUAOURO

Deci textul criptat este

MNS TA AN F MPTNILICSUEETOAEEUAOURO

Operatia de decriptare se realizeaza similar.

7

Page 46: Criptografie 600

Definitia 1. Fie n un numar natural nenul. Un

cifru de permutare este un sistem (P, C,K, E,D)

unde P= C= (Z26)n, K= Sn.

Pentru o cheie (permutare) π ∈ Sn

eπ(a1a2 . . . an) = aπ(1)aπ(2) . . . aπ(n)

dπ(b1b2 . . . bn) = bπ−1(1)bπ−1(2) . . . bπ−1(n)

8

Page 47: Criptografie 600

Lema 1. Un cifru de permutare este un sistem

de criptare Hill.

Demonstratie. Pentru fiecare permutare

π ∈ Sn putem construi o matrice de permutare

Mπ = (mi,j) definita

mi,j = 1 ⇐⇒ i = π(j)

Se verifica usor faptul ca sistemul de criptare

Hill cu matricea Mπ este echivalent cu un cifru

de permutare bazat pe cheia π.

Mai mult, M−1π = Mπ−1.

9

Page 48: Criptografie 600

Exemplul 3. (continuarea Exemplului 1)

Permutarii

(1 2 32 1 3

)ıi corespunde matricea

de permutare

0 1 01 0 00 0 1

.

Operatia de criptare este imediata.

De exemplu, criptarea textului FLO este

(5 11 14) ·

0 1 01 0 00 0 1

= (11 5 14)

adica LFO.

10

Page 49: Criptografie 600

Cifruri de substitutie

Cele mai utilizate sisteme de criptare simetrice.

Cifrul consta ın ınlocuirea fiecarui caracter din

V cu alt caracter (din W ).

• sisteme monoalfabetice;

• sisteme polialfabetice.

11

Page 50: Criptografie 600

Sisteme de criptare monoalfabetice

Substituie fiecare caracter cu alt caracter –

totdeauna acelasi, indiferent de pozitie.

Cand cele doua alfabete coincid (V = W ),

sistemele monoalfabetice sunt cazuri particu-

lare de cifruri de permutare.

12

Page 51: Criptografie 600

Sistemul de criptare Cezar

Odata stabilita cheia de criptare eK, fiecare

caracter x se ınlocuieste prin caracterul

eK(x) = x + k (mod 26).

Decriptarea se realizeaza dupa formula

dK(x) = x− k (mod 26).

13

Page 52: Criptografie 600

Sistemul Cezar are numai 26 chei;deci este vul-

nerabil la atacul prin forta bruta.

Pentru a-i mari rezistenta, se poate utiliza o

varianta, numita sistem Cezar cu cheie:

Se defineste un cuvant (cheie), care se aseaza

la ınceputul alfabetului.

Dupa ce se termina, sirul de completeaza cu

literele care nu existau ın cuvantul cheie, ın

ordine alfabetica.

14

Page 53: Criptografie 600

Exemplul 4. Sa presupunem ca s-a ales cuvan-

tul cheie MARTOR.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

M A R T O B C D E F G H I J K L N P Q S U V W X Y Z

Pentru textul clar se vor folosi caracterele de

pe primul rand, iar pentru criptare – caracterele

corespondente de pe randul al doilea.

STUDENT −→ QSUTOJS,

ARGINT −→MPCEJS

Sistemul Cezar cu cheie rezista mai bine la

atacul cu forta bruta, numarul cheilor putand

ajunge la card(S26) = 26!.

15

Page 54: Criptografie 600

Sistemul de criptare afin

Generalizare a sistemului Cezar.

P = C= Z26,

K= {(a, b) | a, b ∈ Z26, cmmdc(a,26) = 1},

Pentru o cheie K = (a, b) fixata:

eK(x) = ax + b (mod 26)

dK(y) = a−1y + a−1(26− b) (mod 26)

Conditia cmmdc(a,26) = 1 asigura existenta lui

a−1 ın Z26.

16

Page 55: Criptografie 600

Exemplul 5. Functia de criptare

eK(x) = 3x + 50 1 2 3 4 5 6 7 8 9 10 11 125 8 11 14 17 20 23 0 3 6 9 12 15

13 14 15 16 17 18 19 20 21 22 23 24 2518 21 24 1 4 7 10 13 16 19 22 25 2

sau – scris direct pentru caractere

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

F I L O R U X A D G J M P S V Y B E H K N Q T W Z C

PRIMAVARA TARZIE −→ YEDPFQFEF KDECDR.

Deoarece 3−1 = 9 (mod 26), decriptarea serealizeaza folosind functia dK(x) = 9x + 7(sau – practic – inversand cele doua linii aletabelului de mai sus).

Conditia cmmdc(a,26) = 1 asigura injectivi-tatea aplicatiei eK.

Pentru eK(x) = 10x + 1, A si N se transformaambele ın B, iar O nu apare ca imagine ın al-fabetul substitutiei.

17

Page 56: Criptografie 600

Spatiul cheilor ıntr-un sistem de criptare

afin.

Orice cheie K ∈ K este determinata complet

de valorile ıntregi (a, b) cu cmmdc(a,26) = 1.

Sunt posibile 12 valori pentru a:

1,3,5,7,9,11,15,19,21,23,25

Pentru b sunt posibile 26 valori, care se iau

independent de a, cu singura exceptie

a = 1, b = 0.

Deci card(K) = 311, numar suficient de mic

pentru reusita unui atac prin forta bruta.

18

Page 57: Criptografie 600

Sistemul de criptare Polybios

Initial a fost un sistem maritim de semnalizare

cu torte; ulterior i s-a dat o semnificatie crip-

tografica.

Alfabetul latin, din care se elimina o litera de

frecventa cat mai redusa; fie aceasta W .

Cele 25 litere ramase se aseaza ıntr-un patrat

5× 5 (numit careu Polybios) ın felul urmator:

A B C D EA A B C D EB F G H I JC K L M N OD P Q R S TE U V X Y Z

In operatia de criptare, fiecare caracter a va fi

reprezentat printr-o pereche (x, y)

(x, y ∈ {A, B, C, D, E}) care dau linia respectiv

coloana pe care se afla a.

19

Page 58: Criptografie 600

Variante ale sistemului Polybios.

Daca se folosesc drept coordonate cifrele 1,2,

3,4,5 ın loc de A, B, C, D, E, sistemul a fost

folosit ın penitenciarele rusesti, iar ulterior de

catre prizonierii americani din Vietnam.

Este foarte simplu de ınvatat si poate fi aplicat

folosind diverse semne drept coordonate (cifre,

puncte, figuri, batai de toba etc).

A fost utilizat de asemenea ın cadrul altor sis-

teme de criptare, cum ar fi sistemul nihilist,

cifrul ADFGVX (utilizat de armata germana ın

primul razboi mondial) sau sistemul Bifid, in-

ventat de Dellastell ın 1901.

20

Page 59: Criptografie 600

Sistemul cavalerilor de Malta

Sistem de criptare monoalfabetic bazat pe stili-

zarea unei cruci.

A : B : C :D : E : F :G : H : I :

J. K. L.M. N. O.P. Q. R.

S T UV W XY Z

Liniile care ıncadreaza fiecare caracter (inclusiv

spatiul), ımpreuna cu punctele (doua, unul sau

zero) indica substitutia caracterului respectiv.

DUPA DOUAZECI DE ANI

: . : : . : : : : : : : . :

21

Page 60: Criptografie 600

Criptanaliza sistemelor de criptare monoalfabetice

Frecventa de aparitie a caracterelor ın text.

Daca un text criptat este suficient de lung sise cunoaste limba ın care este scris textul clar,sistemul poate fi spart printr-un atac bazat pefrecventa aparitiei literelor ıntr-o limba.

Cu cat un text criptat este mai lung, cu atatfrecventa literelor folosite ın text este mai apro-piata de frecventa literelor utilizate ın limba ıncare este scris mesajul.

O comparare ıntre cele doua relatii de ordine(cea a caracterelor din textul criptat si cea aliterelor din alfabetul limbii curente) conducela realizarea catorva corespondente

(litera text clar −→ litera text criptat),

care releva cheia de criptare.

Pentru sistemul Cezar este suficienta stabilireaunei singure perechi; pentru sistemul afin tre-buiesc doua perechi etc.

22

Page 61: Criptografie 600

Pentru limba romana, un tabel al literelor cele

mai frecvent ıntalnite este

Litera FrecventaA 13,04 %I 12,89 %E 11,75 %R 7,39 %T 6,62 %N 6,44 %U 6,44 %S 5,50 %C 5,47 %

Litera FrecventaL 4,58 %O 3,85 %D 3,68 %M 3,33 %P 2,91 %F 1,50 %V 1,26%

(restul caracterelor au o ın mod normal o

frecventa de aparitie sub 1 %).

23

Page 62: Criptografie 600

Exemplul 6. S-a interceptat urmatorul text,

criptat cu un sistem monoalfabetic (nu se stie

exact ce sistem a fost utilizat).

lqakc sp gcxk aca pcmgqb kq kxc pkersmpqsb

vk vsmgxkbc mkacpc tcacpbqlqs vk cgele

cmtxq ms nocxgsb mbxcsp vk exsgk oxcbqsbcbk

texbslk spclbk gcxk cmgqpvkcq bxkgcbexslk

gqxbslk xktxknkpbcq tkpbxq mbxcsps qp

cfkxbsmakpb mqtcxcbex vcx lsatkvk pq

bxkrqscq mc zsk txkc gqxsems psgs mc mk

cmbktbk mc czlk acxk lqgxq vk lc gks gq

gcxk fkpkcq sp gepbcgb

In prima etapa, vom numara de cate ori apare

ın text fiecare caracter.

c k x b s q g p m l e39 38 27 25 23 20 19 18 18 11 9p a v b n o f z8 7 7 2 2 2 2 2

24

Page 63: Criptografie 600

Caracterele cele mai frecvente sunt c si k.

Pe de-alta parte, cele mai frecvente caractere

din limba romana sunt A, I si E. In mod cert,

A ∈ {c, k}.

Sunt patru optiuni posibile, din care trei se

elimina rapid. Raman

c←− A, k ←− E.

lqaEA sp gAxE aAa pAmgqb Eq ExA pEersmpqsb

vE vsmgxEbA mEaApA tAaApbqlqs vE Agele

Amtxq ms noAxgsb mbxAsp vE exsgE oxAbqsbAbE

texbslE spAlbE gAxE AmgqpvEAq bxEgAbexslk

gqxbslE xEtxEnEpbAq tEpbxq mbxAsps qp

AfExbsmaEpb mqtAxAbex vAx lsatEvE pq

bxErqsAq mA zsE txEA gqxsems psgs mA mE

AmbEtbE mA AzlE aAxE lqgxq vE lA gEs gq

gAxE fEpEAq sp gepbAgb

25

Page 64: Criptografie 600

Cuvantul ExA de pe primul rand are carac-

terul din mijloc (x) de frecventa ridicata (27

aparitii); deci el trebuie sa corespunda unei

litere frecvente din limba romana si – ın plus –

sa aiba semnificatie semantica.

Concluzie: acest cuvant este ERA. Deci

x←− R

lqaEA sp gARE aAa pAmgqb Eq ERA pEersmpqsb

vE vsmgREbA mEaApA tAaApbqlqs vE Agele

AmtRq ms noARgsb mbRAsp vE eRsgE oRAbqsbAbE

teRbslE spAlbE gARE AmgqpvEAq bREgAbeRsleR

gqRbslE REtREnEpbAq tEpbRq mbRAsps qp

AfERbsmaEpb mqtARAbeR vAR lsatEvE pq

bRErqsAq mA zsE tREA gqRsems psgs mA mE

AmbEtbE mA AzlE aARE lqgRq vE lA gEs gq

gARE fEpEAq sp gepbAgb

26

Page 65: Criptografie 600

Cuvantul REtREnEpbAq are corespondent ın

limba romana numai pe

REPREZENTA{I, M, U}.

Se obtin decriptarile

t←− P, n←− Z, p←− N, b←− T

lqaEA sp gARE aAa NAmgqT Eq ERA NEersmNqsT

vE vsmgRETA mEaANA PAaANTqlqs vE Agele

AmPRq ms ZoARgsT mTRAsN vE eRsgE oRATqsTATE

PeRTslE sNAlTE gARE AmgqNvEAq TREgATeRsleR

gqRTslE REPREZENTAq PENTRq mTRAsNs qN

AfERTsmaENT mqPARATeR vAR lsaPEvE Nq

bRErqsAq mA zsE PREA gqRsems Nsgs mA mE

AmTEPTE mA AzlE aARE lqgRq vE lA gEs gq

gARE fENEAq sN geNTAgT

27

Page 66: Criptografie 600

PENTRq este corect numai pentru q ←− U ,

AmTEPTE pentru m←− S.

Apoi NASgUT da g ←− C, SUPARATeR da

e←− O, iar din fENEAU deducem f ←− V .

lUaEA sp CARE MAM NASCUT EU ERA NEOrsSNUsT

DE vsSCRETA SEaANA PAaANTUlUs DE ACOlO ASPRU

Ss ZoARCsT STRAsN vE ORsCE oRATUsTATE

PORTslE sNAlTE CARE ASCUNvEAU TRECATORslOR

CURTslE REPREZENTAU PENTRU STRAsNs UN

AfERTsSaENT SUPARATOR vAR lsaPEvE NU

bRErqsAU SA zsE PREA CURsOms NsCs SA SE

ASTEPTE mA AzlE aARE lUCRU vE lA CEs CU

CARE VENEAU sN CONTACT

28

Page 67: Criptografie 600

Ultimele caractere:

l←− L, a←−M, r ←− B, s←− I, v ←− D

Textul clar final este:

LUMEA IN CARE MAM NASCUT EU ERA NEOBISNUIT

DE DISCRETA SEMANA PAMANTULUI DE ACOLO ASPRU

SI ZGARCIT STRAIN DE ORICE GRATUITATE

PORTILE INALTE CARE ASCUNDEAU TRECATORILOR

CURTILE REPREZENTAU PENTRU STRAINI UN

AVERTISMENT SUPARATOR DAR LIMPEDE NU

TREBUIAU SA FIE PREA CURIOSI NICI SA SE

ASTEPTE SA AFLE MARE lUCRU DE LA CEI CU

CARE VENEAU IN CONTACT

(textul provine din romanul ”Viata ca o corida”

de Octavian Paler).

29

Page 68: Criptografie 600

Tabelele de frecventa a literelor pentru prin-

cipalele limbi europene (din fiecare limba sunt

numai cele mai frecvente 9 litere):

Engleza FrecventaE 12,31 %T 9,59 %A 8,05 %O 7,94 %N 7,19 %I 7,18 %S 6,59 %R 6,03 %H 5,14 %

Germana FrecventaE 18,46 %N 11,42 %I 8,02 %R 7,14 %S 7,04 %A 5,38 %T 5,22%U 5,01%D 4,94%

Franceza FrecventaE 15,87 %A 9,42 %I 8,41 %S 7,90 %T 7,26 %N 7,15 %R 6,46 %U 6,24 %L 5,34 %

Spaniola FrecventaE 13,15 %A 12,69 %O 9,49 %S 7,60 %N 6,95 %R 6,25 %I 6,25 %L 5,94 %D 5,58 %

30

Page 69: Criptografie 600

Sisteme de criptare polialfabetice

Substitutia unui caracter variaza ın text, ın

functie de diversi parametri (pozitie, context

etc.).

Se pare ca primul sistem de criptare polialfa-

betic a fost creat de Leon Battista ın 1568.

31

Page 70: Criptografie 600

Sistemul homofonic

Este un sistem intermediar ıntre sistemelemono si cele poli-alfabetice.

Principalul lui scop este de a evita atacul prinfrecventa de aparitie a caracterelor.

Fiecarui caracter a ∈ P i se asociaza o multimeH(a) ⊂ C astfel ıncat:

1. H(a) ∩H(b) = ∅ ⇐⇒ a 6= b;

2. Daca a apare mai frecvent ın textele clare,atunci card((H(a)) ≥ card(H(b)).

Criptarea unui caracter a ∈ P se face cu unelement ales aleator din H(a).

Pentru decriptarea lui y ∈ C se cauta o multimeH(a) astfel ca y ∈ H(a).

32

Page 71: Criptografie 600

Exemplul 7. Sa consideram P= {a, b} si

H(a) = {001,010}, H(b) = {000,011,101,111}.

Pentru criptarea textului ab se poate folosi ori-

care din secventele

001000,001011,001101,001111,

010000,010011,010101,010111

Sistemul homofonic este mult mai rezistent

la un atac bazat numai pe textul criptat, dar

cedeaza usor la un atac cu text clar ales.

33

Page 72: Criptografie 600

Sistemul de criptare Playfair

A fost inventat 1854 de Sir Charles Wheat-stone. Promovat si sustinut (pentru a fi adop-tat ca cifru oficial al Marii Britanii) de catrebaronul Lyon Playfair de St. Andrews.

Din cele 26 litere ale alfabetului se elimina unade frecventa minima; sa spunem Q.

Restul literelor se aranjeaza arbitrar sub formaunui patrat 5× 5.

Constructia va fi exemplificata folosind tabloul:

S Y D W ZR I P U LH C A X FT N O G EB K M J V

Acest tabel va forma atat cheia de criptare catsi cea de decriptare.

34

Page 73: Criptografie 600

Regulile de criptare/decriptare:

• Textul clar este separat ın blocuri de catedoua caractere (ignorand spatiile).

Nici un bloc sa nu contina aceiasi litera, iartextul sa fie de lungime para.

• Criptarea unui bloc: daca cele doua literenu sunt plasate ın tabel pe aceeasi liniesau coloana, se cerceteaza colturile drep-tunghiului determinat de cele doua litere.Perechea este criptata ın celelalte doua col-turi opuse.

Daca cele doua litere se gasesc pe aceeasilinie (coloana), se merge ciclic cu o pozitiela dreapta (respectiv jos).

Deci CA se cripteaza ın AX, WX ın UG,CA ın AX etc.

AFARA PLOUA −→ XHHPPDPEPX.35

Page 74: Criptografie 600

O permutare ciclica a liniilor si coloanelor numodifica criptarea. De exemplu, patratul

P U L R IA X F H CO G E T NM J V B KD W Z S Y

obtinut prin deplasarea cu doua pozitii sprestanga si o pozitie ın sus, este echivalent cu celinitial (ambele dau aceiasi cheie de criptare).

Regulile de baza pot fi modificate sau comple-tate dupa necesitati.

Astfel, se poate adauga din loc ın loc cate olitera falsa (cu frecventa foarte redusa, cum arfi X, Y ) care sa modifice textul criptat.

Patratul 5×5 poate fi ınlocuit cu un dreptunghi4×6 sau 3×8, cu schimbarile corespunzatoareın alegerea literelor care se elimina.

36

Page 75: Criptografie 600

Pentru a pastra cheia ın siguranta, se reco-

manda memorarea acesteia.

Cum o astfel de cheie este extrem de greu de

memorat, se foloseste un cuvant cheie sau o

propozitie cu toate literele distincte.

Acesta cuvant este scris la ınceputul tabloului.

Spatiile ramase sunt completate cu restul lite-

relor alfabetului, scrise ın ordinea aparitiei lor.

37

Page 76: Criptografie 600

In preajma primului razboi mondial, armata

romana folosea un dreptunghi 3 × 8 din care

lipseau literele Q si K.

Cuvantul cheie era ROMANESC. Un astfel de

tablou putea avea de exemplu forma

R O M A N E S CB D F G H I J LP T U V W X Y Z

Ca si sistemul anterior, Playfair rezista la

atacuri bazate pe frecventa aparitiei, dar nu si

la cele prin text clar ales.

Implementari actuale folosesc o reprezentare

binara a literelor; ın plus, dupa ce s-a obtinut o

pereche criptata, aceasta se combina printr-un

XOR (adunare modulo 2) cu perechea criptata

anterior.

38

Page 77: Criptografie 600

Sistemul de criptare Vigenere

Numele sistemului vine de la baronul francez

Blaise de Vigenere (1523 − 1596) diplomat la

curtea regelui Henry III (alte surse indica drept

real inventator al sistemului pe Giovan Batista

Belaso ın 1553).

Reamintim codificarea:

A B C D E F G H I J K L M0 1 2 3 4 5 6 7 8 9 10 11 12

N O P Q R S T U V W X Y Z13 14 15 16 17 18 19 20 21 22 23 24 25

Definim P = C= Z26, K= Z+26.

39

Page 78: Criptografie 600

O cheie K ∈ K este un cuvant avand codifi-

carea numerica k0k1 . . . kp−1.

Fie

a = a0a1 . . . an

codificarea textului clar care trebuie transmis.

Textul criptat va fi

eK(a) = x = x0x1 . . . xn

unde

xi = ai + ki (mod p) (mod 26)

40

Page 79: Criptografie 600

Exemplul 8. Fie cuvantul cheie FOCAR; deci

p = 5 si K = 5 14 2 0 17.

Sa criptam cheie textul clar

NU POT VENI AZI

Codificarea sa este

a = 13 20 15 14 19 21 4 13 8 0 25 8.

Sub fiecare numar din a se aseaza cate un

numar din K; cand cheia se termina, ea se

reia ciclic, pana se termina a.

Deci vom avea

13 20 15 14 19 21 4 13 8 0 25 85 14 2 0 17 5 14 2 0 17 5 14

18 8 17 14 10 0 18 15 8 17 4 22S I R O K A S P I R E W

Linia a treia contine suma modulo 26 a nu-

merelor de pe primele doua linii; acesta este

textul criptat rezultat.

41

Page 80: Criptografie 600

Decriptarea se realizeaza similar, scazand

(modulo 26) din codul caracterului criptat,

codul caracterului corespunzator din cheie.

O varianta a sistemul Vigenere este sistemul

Beaufort; aici relatia de criptare este

xi = ki (mod p) − ai (mod 26), (i ≥ 0)

Avantajul sistemului Beaufort consta ın faptul

ca ecuatia de criptare se aplica si la decriptare

(ai = ki (mod p) − xi).

42

Page 81: Criptografie 600

Alta varianta este sistemul Autoclave, atribuit

matematicianului Cardano.

Aici cheia se foloseste doar pe primele pozitii,

dupa care este utilizat drept cheie textul clar.

Exemplul 9. Cuvantul cheie COV OR si textul

clar

A VENIT TOAMNA

Text clar: A V E N I T T O A M N ACheie: C O V O R A V E N I T T

Text criptat C J Z B Z T O S N U G T

43

Page 82: Criptografie 600

Sistemul Vigenere a fost considerat unul din

cele mai sigure sisteme de criptare.

In 1917 de exemplu, revista ”Scientific Ameri-

can” ıl considera imposibil de atacat.

Numai ca acest sistem a fost spart de Kasiski

ınca din 1863 (si independent de Babbage ın

1854).

44

Page 83: Criptografie 600

Criptanaliza sistemului Vigenere

Fie

x = x0x1 . . . xn−1

textul criptat cu cheia

K = k0k1 . . . kp−1.

Putem aranja acest text sub forma unei matricicu p linii si dn/pe coloane, astfel

x0 xp x2p . . .x1 xp+1 x2p+1 . . .

...xp−1 x2p−1 x3p−1 . . .

Elementele de pe prima linie au fost criptatedupa formula

xpr = apr + k0 (mod 26), (r ≥ 0)

adica folosind un sistem Cezar(k0 fiind o valoare fixata din Z26).

In mod similar si celelalte linii.

45

Page 84: Criptografie 600

Daca se cunoaste lungimea p a cheii, problemase reduce la criptanaliza a p texte criptate cuCezar – sistem de criptare monoalfabetic.

Sunt cunoscute doua metode pentru aflarealungimii cheii:

• testul lui Kasiski

• indexul de coincidente (definit ın 1920 decriptanalistul american Wolfe Friedman).

Prima metoda consta ın studiul textului criptatsi aflarea de perechi de segmente de cel putin3 caractere identice.

Pentru fiecare astfel de pereche, se determinadistanta dintre segmente.

Dupa ce s-au gasit mai multe astfel de distan-te, valoarea lui p va fi cel mai mare divizorcomun al lor (sau – eventual un divizor al aces-tuia).

46

Page 85: Criptografie 600

Exemplul 10. Oscar intercepteaza urmatorul

text criptat, despre care banuie ca s-a folosit

Vigenere:

D V L O E G O G L C G I W W A F R S C K A

R V S S R A A K R S T U H D A Q L N C J T

S R U J V C W E A W K O H Z T I E U A R I

Q L N C J C I K A Q V A G K A S J T S G R

W D A G K R C W A O L N S Z P C V Z W Z C

S C E P I E R V M W Y A W V M W E E G T U

Folosind metoda Kasiski, Oscar gaseste secven-

ta QLNCJ care apare de doua ori, avand distan-

ta 27.

De asemenea, apar doua cuvinte foarte asema-

natoare: AQLN si AOLN , la distanta 57 unul

de altul.

Deci putem banui ca avem de-a face cu un

cuvant cheie de lungime cmmdc(27,57) = 3.

47

Page 86: Criptografie 600

Rescriem textul pe coloane, fiecare coloanaavand trei elemente. Anume:

D O O C W F C R S A S H Q C S J W W H I A Q C I Q GV E G G W R K V R K T D L J R V E K Z E R L J K V KL G L I A S A S A R U A N T U C A O T U I N C A A A

S S W G C O S C W S P R W W W GJ G D K W L Z V Z C I V Y V E TT R A R A N P Z C E E M A M E U

Numaram frecventa aparitiei literelor pe fiecare

linie

A B C D E F G H I J K L MI 2 0 6 1 0 1 3 2 2 1 0 0 0

II 0 0 1 2 4 0 3 0 1 3 6 3 0III 11 0 3 0 3 0 1 0 2 0 0 2 2

N O P Q R S T U V W X Y ZI 0 3 1 3 2 7 0 0 1 8 0 0 0

II 0 0 0 0 4 0 2 0 6 2 0 1 3III 3 1 1 0 3 2 3 4 0 0 0 0 1

48

Page 87: Criptografie 600

In limba romana, primele litere ca frecventa

sunt A−E − I, aflate la distanta egala una de

alta.

Deci vom cauta pe fiecare linie tripletele de

litere situate pe pozitiile

(k, k + 4, k + 8)

avand frecventa semnificativ de mare.

- Pentru linia 3, alegerea este simpla: ea este

chiar A−E−I (16 aparitii din 49 posibile), deci

o deplasare 0 ın codul Cezar.

- Pentru prima linie, sunt doua posibilitati: O−S−W (deplasare 14) sau S−W −A (deplasare

18), ambele cu cate 18 aparitii.

- Tot doua variante apar si pentru a doua linie:

C − G − K (deplasare 2) cu 10 aparitii, sau

R− V − Z (deplasare 14) cu 13 aparitii.

49

Page 88: Criptografie 600

Deplasarile dau exact codificarile cheii.

Deci trebuie luate ın considerare patru variante

de cuvant cheie: OCA, ORA, SCA sau SRA.

O simpla verificare retine drept cuvant cheie

ORA, care conduce la decriptarea corecta a

textului (spatiile si semnele de punctuatie se

pun corespunzator):

PELANGAPLOPIIFARASOT

ADESEAAMTRECUT

MACUNOSTEAUVECINIITOTI

TUNUMAICUNOSCUT

ACEASTAESTEPRIMASTROFAAUNEINPOEZIICELEBRE

DEMIHAIEMINESCU

50

Page 89: Criptografie 600

Sisteme mecanice de criptare

1

Page 90: Criptografie 600

Ordin crescut de complexitate si securitate.

Simplifica operatiile de criptare/decriptare.

Capabile sa genereze un numar semnificativ de

chei posibile.

2

Page 91: Criptografie 600

Sistemul Skitala

Skitala (”baston” ın greceste) permite realiza-

rea unui sistem de criptare cu permutari.

Spartanii foloseau skitala (ıncepand cu sec. V

ı.H.) ın timpul campaniilor militare.

Ea a fost mentionata prima oara de poetul grec

Archilochus (sec. VII ı.H). Abia la mijlocul se-

colului III ı.H. Apollonius din Rhodos specifica

limpede utilizarea lui ca mijloc de criptare.

O descriere a modului de operare este data

apoi de Plutarh (50-120 A.D.).

Avantaj: rapid; nu comporta erori de trans-

mitere.

Dezavantaj: usor de spart.

3

Page 92: Criptografie 600

Exemplul 1.O skitala ale carei dimensiuni per-

mit scrierea a 4 randuri, cu 5 caractere pe

fiecare rand.

VINO MAINE LA INTALNIRE

Ignorand spatiile, mesajul va apare scris sub

forma:

________________________

| | V | I | N | O | M |

|__| A | I | N | E | L |__

| A | I | N | T | A | |

| L | N | I | R | E | |

|___|___|___|___|___|__|

Dupa derulare, mesajul scris pe banda de hartie

este:

VAALIIINNNNIOETRMLAE.

La decriptare, banda va fi rulata din nou si

fiecare a patra litera va fi pe aceeasi linie.

4

Page 93: Criptografie 600

Criptanaliza este foarte simpla.

Se iau pe rand valorile n = 2,3,4, . . ..

Pentru o astfel de valoare fixata, se formeaza

n randuri de tipul

n + i,2n + i,3n + i, . . . (i = 1,2, . . .)

care ulterior se concateneaza.

Exista o valoare a lui n pentru care textul astfel

format este inteligibil.

5

Page 94: Criptografie 600

Cilindrul Jefferson

Ideea de masina de criptare apare clar prima

data la Thomas Jefferson, primul secretar de

Stat al Statelor Unite; acesta a inventat un

aparat de criptat numit roata de criptare, folo-

sit pentru securitatea corespondentei cu aliatii.

Thomas Jefferson a folosit acest aparat ın pe-

rioada 1790−1802, dupa care se pare ca ideea

s-a pierdut.

6

Page 95: Criptografie 600

Un cilindru Jefferson este format din n discuri

de dimensiuni egale (initial n = 26 sau n = 36)

asezate pe un ax.

Discurile se pot roti independent pe ax, iar pe

muchea fiecaruia sunt inscrise cele 26 litere ale

alfabetului, ıntr-o ordine aleatoare.

La criptare, textul clar se ımparte ın blocuri de

n caractere.

Fiecare astfel de bloc se scrie pe o linie (gene-

ratoare) a cilindrului, rotind corespunzator fie-

care disc pentru a aduce pe linie caracterul

cautat.

Oricare din celelalte 25 linii va constitui blocul

de text criptat.

7

Page 96: Criptografie 600

Pentru decriptare este necesar un cilindru iden-

tic, ın care se scrie pe o linie textul criptat (de

n caractere) si apoi se cauta printre celelalte

25 linii un text cu semnificatie semantica.

Probabilitatea de a avea un singur astfel de

text creste cu numarul de discuri din cilindru.

8

Page 97: Criptografie 600

Daca textul clar nu are nici o semnificatie se-

mantica (s-a folosit o dubla criptare), atunci

trebuie convenita dinainte o anumita distanta

de criptare s (1 ≤ s ≤ 25).

Un cilindru cu n = 10 discuri poate realiza

10! = 3.628.800 texte criptate diferite pentru

acelasi text clar.

Cilindrul Jefferson realizeaza o substitutie po-

lialfabetica de perioada n.

9

Page 98: Criptografie 600

Exemplul 2. Fie n = 10 si cilindrul:

1 2 3 4 5 6 7 8 9 101 A A A A A A A A A A2 R R P N V S P E I I3 I O S I O O U S R H4 E S Y M T R H U E E5 K U L O Y P I P S T6 O V U C L M S B L O7 B I K U E U E L B M8 C J B L B B N C C U9 U L R T C D R D D C10 D B C Y D Y Y H F D11 J V D B G E D I N F12 T C T F F C B J Y G13 L G F G K V F F T J14 N K G S N H G O G P15 P N O H H F V G H Q16 W P N J U K J K J B17 Q Q E D P L K M K N18 M T H E Q Q M N M V19 S H M K R I T Q P W20 V E Q P S J O R Q X21 X D V Q W N L V V L22 Z Y W V X G W W W Y23 G W X X M T Q Y O K24 H X Z R I W X X U R25 Y Z I Z J X Z T X S26 F M J W Z Z C Z Z Z

10

Page 99: Criptografie 600

Text clar

TREI CULORI

T R E I C U L O R IL O H M D B W G E HN S M O G D Q K S EP U Q C F Y X M L TW V V U K E Z N B OQ I W L N C C Q C MM J X T H V A R D US L Z Y U H P V F CV B I B P F U W N DX F J F Q K H Y Y FZ C A G R L I X T GG G P S S Q S T G JH K S H W I E Z H PY N Y J X J N A J QF P L D M N R E K BA Q U E I G Y S M NR T K K J T D U P VI H B P Z W B P Q WE E R Q A X F B V XK D C V V Z G L W LO Y D X O A V C O YB W T R T S J D U KC X F Z Y O K H X RU Z G W L R M I Z SD M O A E P T J A ZJ A N N B M O F I A

11

Page 100: Criptografie 600

Daca se considera o dubla criptare cu distanta

s = 3, atunci textul clar

AAAAAAAAAA

va fi criptat cu cilindrul anterior ın

ESYMTRHUEE

Cilindrul Jefferson a fost reinventat ulterior de

mai multe ori, cea mai notabila fiind se pare

masina de criptat M − 94, care a fost utilizata

pana la ınceputul celui de al doilea razboi mon-

dial.

12

Page 101: Criptografie 600

Enigma

Prima jumatate a sec. XX este dominata de

masinile de criptat, o combinatie ıntre masinile

de scris si sisteme de criptare mecanice bazate

pe discuri.

Poate cea mai celebra masina de criptat a fost

masina germana Enigma.

Ea a fost proiectata la Berlin ın 1918, de in-

ginerul german Arthur Scherbius.

Primul model (A) este prezentat la Congresele

Uniunii Postale Internationale din 1923 si 1924.

Modele ulterioare sunt folosite ın mai multe

tari europene si asiatice (Suedia, Olanda,

Marea Britanie, Japonia, Italia, Spania, SUA,

Polonia, Elvetia) ın scopuri comerciale, militare

sau diplomatice.

13

Page 102: Criptografie 600

Din 1926 ıncepe sa fie preluata si de armata

germana, care dupa 1928 ısi defineste propriile

modele (G, I, K).

In total au fost construite circa 100.000 masini

Enigma, din care 40.000 ın timpul razboiului.

Dupa 1945 aliatii au capturat toate masinile

de pe teritoriul german, acestea fiind ınca mult

timp considerate sigure.

Abia ın 1970 au aparut primele informatii

despre decriptarea de catre aliati a unui mare

numar de mesaje criptate prin modelul mili-

tar Enigma si transmise prin radio ın timpul

razboiului.

14

Page 103: Criptografie 600

In linii mari, o masina Enigma are urmatoarele

componente:

• Tastatura: Este o componenta mecanica

formata din:

– Un pupitru de taste (similar unei masini

de scris);

– n discuri adiacente, care se rotesc ın ju-

rul unui ax.

Pe fiecare disc sunt scrise cele 26

caractere alfabetice (la care uneori se

mai adauga trei caractere speciale);

– Un mecanism de avans (similar ceasuri-

lor mecanice) care permite – la apasarea

unei taste – rotirea unuia sau mai multor

discuri cu un numar de pozitii.

15

Page 104: Criptografie 600

• Circuite electrice: Criptarea unui caracter

se realizeaza electric.

La apasarea unei taste se ınchide un cir-

cuit si lumineaza una sau mai multe lampi,

indicand litera de iesire.

• Reflector (Umkehrwalze): Componenta

specifica masinilor de criptat Enigma, cu

scopul de a realiza un sistem de criptare

Beaufort.

In majoritatea variantelor, reflectorul este

asezat pe ax dupa ultimul disc (din stanga);

el realizeaza o substitutie (fixata), dupa

care reintroduce noul caracter prin discuri

ın sens invers, dar pe alt drum.

Deci o masina Enigma cu n discuri va re-

aliza criptarea unui caracter prin 2n + 1

substitutii.

16

Page 105: Criptografie 600

• Tabela de conexiuni (Steckerbrett): Com-

ponenta (pozitionata ın fata, sub tastele

literelor) ın care se pot face conexiuni ıntre

perechi de litere, prin intermediul unor ca-

bluri (similar centralelor telefonice vechi).

Deci la un mesaj sunt posibile maxim 13

conexiuni.

De exemplu, daca printr-un cablu sunt

conectate literele S si W , de cate ori este

tastat S, semnalul este comutat pe W ına-

inte de a intra pe discuri.

Introdusa ın 1930, aceasta componenta

asigura un plus de securitate si a fost prin-

cipalul obstacol ın criptanaliza.

17

Page 106: Criptografie 600

Starea initiala a unei masini Enigma se refera

la:

• Ordinea discurilor (Walzenlage): alegerea

numarului de discuri si ordinea lor de uti-

lizare;

• Pozitia initiala a discurilor: pozitionarea ın

mod independent a fiecarui disc, diferita

pentru fiecare mesaj;

• Initializarea inelului de caractere (Ringstel-

lung): pozitionarea alfabetului relativ la

primul disc.

• Initializarea conexiunilor (Steckerverbin-

dungen): conexiunile dintre litere ın cadrul

tabelei de conexiuni.

18

Page 107: Criptografie 600

Enigma cripteaza fiecare litera dupa o proce-

dura care poate fi exprimata prin produs de

permutari.

Fie o masina Enigma cu 3 discuri si

- P transformarea tabelei de conexiuni,

- U – reflectorul,

- S, M, D – actiunile celor 3 discuri (din stanga,

mijloc si respectiv dreapta).

Atunci criptarea e poate fi scrisa sub forma:

e = PDMSUS−1M−1D−1P−1

Dupa fiecare apasare a unei taste, discurile se

rotesc schimband transformarea.

19

Page 108: Criptografie 600

De exemplu, daca discul din dreapta se roteste

cu i pozitii, atunci transformarea devine

ρiDρ−i

where ρ este permutarea ciclica stanga a vec-

torului (A, B, C, . . . , Z).

Similar, discurile din mijloc si stanga pot fi

reprezentate prin j respectiv k rotiri ale lui M

respectiv S.

Atunci functia de criptare este:

e = P (ρiDρ−i)(ρjMρ−j)(ρjSρ−k)U

(ρjS−1ρ−k)(ρjM−1ρ−j)(ρiD−1ρ−i)P−1

Decriptarea se efectueaza dupa aceeasi for-

mula.

20

Page 109: Criptografie 600

Care este numarul de variante posibile pentrucriptarea unui mesaj ?

Fie o masina Enigma cu 3 discuri.

Atunci numarul de situatii initiale posibile este26 · 26 · 26 = 17.576.

Cum cele 3 discuri pot fi permutate ın 6 mo-duri, numarul variantelor se ridica la6 · 17.576 = 105.456.

Pentru fiecare din acestea, o tabela de cone-xiuni cu 10 perechi de litere conectate ridicanumarul variantelor la 150.738.274.937.250.

La acestea se adauga si modul de pozitionare alinelului de caractere la mecanismul discurilor,care mai ridica ordinul de marime al variantelorcu aproximativ 105.

Aceste estimari arata ca Enigma era cea maisigura masina de criptat a momentului respec-tiv.

21

Page 110: Criptografie 600

Sa detaliem functionarea matematica a unei

masini Enigma:

• Fiecare disc poate fi reprezentat ca un set

de permutari pentru litere – codificate cu

valori ıntre 0 si 25; fie α1, α2, α3 permutarile

de pe cele trei discuri (de la dreapta spre

stanga).

• Fie r1, r2, r3 setarile initiale de pe cele trei

discuri (caracterele situate initial pe poziti-

ile accesibile ale discurilor).

• Pentru simplificare, ignoram rolul tabelei

de conexiuni.

• Vom nota cu β substitutia reflectorului

(reprezentata ca un set de permutari ıntre

perechi de caractere).

22

Page 111: Criptografie 600

Sa urmarim un traseu care pleaca de la sem-

nalul de intrare (un caracter din textul clar),

trece prin cele trei discuri si reflector si da ca

rezultat caracterul criptat.

Text

clar

Text

criptat

YI�

>6

=�

Y�

+�

6

-

s -

>-

j -

Reflector

aa

a′a′

b

b′

c

c′

d

e Tabela deconexiuni

Disc1Disc2Disc3

23

Page 112: Criptografie 600

Exemplul 3. Sa presupunem ca cele permuta-rile celor trei discuri sunt:α1 = (0 15 6 10 14 8 19 17 22 18 11)(1 2 9 13 21 25)

(3 4 23 5 24 7 12 16 20)

α2 = (0 7 9 4 6 18 23 25 8)(1 17 19)(2 20 10)(3 12)(5 11 13 21)(14 22 15 16 24)

α3 = (0 2 4 7 16 17 19 5)(1 6 3 8 21 24 11 13 9 10 25 12 14 15)

(18 23 20 22)

Substitutia β este definita

β = (0 4)(1 7)(2 9)(3 16)(5 20)(6 8)(10 19)(11 17)(12 25)(13 18)

(14 24)(15 22)(21 23).

Deci, cu α1, 0 este mutat ın 15, 15 este mutatın 6, 25 este mutat ın 1 etc.

Inversele celor trei permutari sunt:α−1

1 = (11 18 22 17 19 8 14 10 6 15 0)(25 21 13 9 2 1)(20 16 12 7 24 5 23 4 3)

α−12 = (8 25 23 18 6 4 9 7 0)(19 17 1)(10 20 2)(12 3)(21 13 11 5)

(24 16 15 22 14)

α−13 = (5 19 17 16 7 4 2 0)(15 14 12 25 10 9 13 11 24 21 8 3 6 1)

(22 20 23 18)

24

Page 113: Criptografie 600

Setarile initiale: r1 = 22 (primul rotor are

”vizibila” litera V ), r2 = 7, r3 = 12.

Substitutiile celor trei discuri:

b = [a + r1 (mod 26)]α1,

c = [b + r2 (mod 26)]α2,

d = [c + r3 (mod 26)]α3,

unde xα = y, y fiind elementul care urmeaza

lui x ın permutarea α.

De exemplu 3α1 = 4, 8α2 = 0 etc.

Notatia permite sa scriem e = dβ.

In continuare, semnalul parcurge cele trei dis-

curi ın sens invers:

c′ = eα−13 − r3 (mod 26),

b′ = (c′)α−12 − r2 (mod 26),

a′ = (b′)α−11 − r1 (mod 26).

25

Page 114: Criptografie 600

Dupa criptarea unui caracter, cele trei discuri

sunt resetate dupa regula:

r1 := r1 + 1 (mod 26);

daca r1 = 0 atunci r2 := r2 + 1 (mod 26);

daca r2 = 0, atunci r3 := r3 + 1 (mod 26).

26

Page 115: Criptografie 600

Sa criptam litera K (cod numeric 10):

a = 10;

b = [a + r1 (mod 26)]α1 = [10 + 22 (mod 26)]α1 = 6α1 = 10;

c = [b + r2 (mod 26)]α2 = [10 + 7 (mod 26)]α2 = 17α2 = 22;

d = [c + r3 (mod 26)]α3 = [22 + 12 (mod 26)]α3 = 8α3 = 21.

Trecerea prin reflector da e = dβ = 21β = 23.

Apoi se parcurg cele trei discuri ın sens invers:

c′ = eα−13 −r3 (mod 26) = 23α−1

3 −12 (mod 26) = 18−12 (mod 26) = 6;

b′ = (c′)α−12 −r2 (mod 26) = 6α−1

2 −7 (mod 26) = 4−7 (mod 26) = 23;

a′ = (b′)α−11 −r1 (mod 26) = 23α−1

1 −22 (mod 26) = 4−22 (mod 26) =

8.

Deci criptarea caracterului K este I (cod 8).

Setarile pentru criptarea urmatorului caracter

sunt r1 := 23, r2 = 7, r3 = 12.

27

Page 116: Criptografie 600

C − 36 (M − 209 C)

Masina C−36 este conceputa de inginerul sue-

dez Boris Hagelin, la solicitarea armatei ame-

ricane de a avea o masina de criptat portabila,

usor de manuit, care sa poata fi folosita dupa

un instructaj sumar.

Este cunoscuta si sub numele de M −209 C, la

baza fiind un model creat de Hagelin ın Suedia

la sfarsitul anilor ′30.

Ea ıncepe sa fie produsa – dupa cateva modifi-

cari legate de design – ın 1940 si ınlocuieste

treptat masina de criptat M − 94.

Se apreciaza ca ın timpul razboiului au fost

produse circa 140.000 masini de criptat C−36.

28

Page 117: Criptografie 600

Definitia 1. Se numeste matrice lug o matrice

binara M6×27 ın care fiecare din cele 27 coloane

contine cel mult doi de 1.

Exemplul 4. Fie matricea lug

M =

000100001010001110000000001100010001001100010010010100000000000000000000000000000001100010100001001000111111001010000001000100100000000000000010010010000010001000

Fie v un vector binar de dimensiune 6.

Atunci c ·M este un vector cu 27 componente

avand elemente din multimea {0,1,2}.

Numarul de elemente nenule din v · M se

numeste ponderea lui v ın raport cu M .

29

Page 118: Criptografie 600

O configuratie de ınceput se obtine prin aseza-

rea unul sub altul (aliniati la stanga) a 6 sase

vectori binari de lungimi 17,19,21,23,25,26.

Exemplul 5. Structura

01100010000000110011111000000000000000100000100000000000000000000000100100010001101000000000000000000000011000000000000100010000001

formeaza o posibila configuratie de ınceput.

Spre deosebire de matricea lug, la configuratia

de ınceput nu exista restrictii privind numarul

de 1.

30

Page 119: Criptografie 600

Se pot genera o infinitate de vectori de dimen-siune 6 ın felul urmator:

1. Primii 17 vectori sunt coloanele completeale configuratiei de ınceput.

2. Fiecare vector linie se repeta ciclic din mo-mentul cand s-a terminat.

Pe baza acestor elemente se poate descrie sis-temul de criptare al masinii C − 36.

Folosim codificarea numerica a literelor: A− 0pana la Z−25; toate calculele sunt modulo 26.

Fie x codul celui de-al i-lea caracter din textulclar si h ponderea celui de-al i-lea vector gen-erat de configuratia de ınceput ın raport cumatricea lug.

Atunci

y = h − x − 1.

31

Page 120: Criptografie 600

Exemplul 6. Text clar

NU PUTEM REUSI DECAT IMPREUNA

Matricea lug si configuratia de ınceput sunt

cele anterioare.

Codificarea numerica a textului:

13 20 15 20 19 4 12 17 4 20 18 8 3 4 2 0 19 8 12 15 17 4 20 13 0.

Se calculeaza ponderile primilor 25 vectori si

se formeaza tabela:h 10 17 16 9 9 9 7 0 0 0 0 12 0x 13 20 15 20 19 4 12 17 4 20 18 8 3

h − x − 1 22 20 0 14 15 4 20 8 21 5 7 3 22W W A O P E U I V F H D W

h 0 18 7 0 0 18 7 9 9 19 14 9x 4 2 0 19 8 12 15 17 4 20 13 0

h − x − 1 21 15 6 6 17 5 17 17 4 24 0 8V P G G R F R R E Y A I

Deci textul criptat este

WWAOPEUIVFHDWVPGGRFRREYAI

32

Page 121: Criptografie 600

Remarca 1. Ecuatia de decriptare este iden-

tica cu cea de criptare:

x = h − y − 1.

Deci din acest punct de vedere sistemul de

criptare este de tip Beaufort si masina C − 36

poate fi folosita atat pentru criptare cat si pen-

tru decriptare.

Deoarece liniile din configuratia de ınceput au

lungimi numere prime ıntre ele, vectorii gene-

rati ıncep sa se repete sigur dupa

17 · 19 · 21 · 23 · 25 · 26 = 101.405.850

pasi; deci cuvantul cheie poate fi considerat

mai lung decat orice text clar.

33

Page 122: Criptografie 600

Masina de criptat M − 209 avea si ea o se-

rie de slabiciuni (un atac cu texte clare alese

care au anumite componente comune poate

duce la informatii asupra matricii lug), astfel ca

ın 1943 criptanalistii germani puteau decripta

mesajele.

Totusi – din punct de vedere militar tactic –

ea a fost considerata perfect adaptata nece-

sitatilor si a fost folosita de armata americana

pana dupa razboiul din Coreea (1953− 1956).

Ulterior, Hagelin a elaborat un model ımbuna-

tatit: masina C − 52.

Aceasta avea o perioada de 2.756.205.443; dis-

curile puteau si scoase si reinserate ın alta or-

dine; exista un disc al carui alfabet putea fi

permutat.

34

Page 123: Criptografie 600

Sisteme fluide de criptare

1

Page 124: Criptografie 600

Sisteme sincrone si auto-sincronizabile

Pana acum: Fie K ∈ K o cheie de criptare si

x = x1x2x3 . . .

un text clar. Textul criptat este

y = y1y2y3 . . . = eK(x1)eK(x2)eK(x3) . . .

Sunt sisteme de criptare bloc (block cyphers).

Alta maniera: sisteme de criptare fluide

(stream cyphers).

2

Page 125: Criptografie 600

Definitia 1. Fie M= (P, C,K, E,D) un sistem

de criptare. O secventa de simboluri

k1k2k3 . . . ∈ K+

se numeste cheie fluida.

Definitia 2.M= (P, C,K, E,D) este un sistem

fluid de criptare daca cifreaza un text clar

x = x1x2x3 . . .

ın

y = y1y2y3 . . . = ek1(x1)ek2

(x2)ek3(x3) . . .

unde

k = k1k2k3 . . .

este o cheie fluida din K+.

3

Page 126: Criptografie 600

Problema: generarea unei chei de criptare flu-

ide (teoretic infinita).

Aceasta se poate realiza fie aleator, fie pe baza

unui algoritm care pleaca de la o secventa mica

de chei de criptare.

Un astfel de algoritm se numeste generator de

chei fluide.

4

Page 127: Criptografie 600

Exemplul 1. (Sistemul de criptare Vernam):

Aici

xi, ki, yi ∈ {0,1}

Criptarea:

yi = xi ⊕ ki (i ≥ 1).

Cand cheia fluida este aleasa aleator si nu maieste folosita ulterior, sistemul se numeste ”one- time pad”.

Un sistem de criptare one-time pad asigura unsecret perfect:

Fiind dat un text criptat cu un astfel de sistem,Oscar nu are nici o informatie privind cheiafluida sau textul clar.

Dificultatea consta ınsa atat ın lungimea cheii(egala cu cea a textului clar), cat si ın moda-litatea de transmitere a ei ıntre Alice si Bob.

5

Page 128: Criptografie 600

Pentru sistemul Vernam exista o modalitate de

atac bazata pe ”criptanaliza diferentiala”:

Daca y1y2 . . . yn si y′1y′2 . . . y′n sunt doua texte

criptate cu aceiasi cheie fluida K = k1k2 . . . kn,

atunci

yi = xi ⊕ ki, y′i = x′i ⊕ ki (1 ≤ i ≤ n)

deci yi ⊕ y′i = xi ⊕ x′i, si cheia K nu mai este

necesara; redundanta ultimei relatii va permite

criptanaliza.

Sistemele de criptare fluide sunt clasificate ın:

- sisteme sincrone;

- auto-sincronizabile.

6

Page 129: Criptografie 600

Definitia 3. Un sistem de criptare fluid sincron

este o structura (P, C,K,L, E,D), unde:

• P, C,K sunt multimi finite nevide cu

semnificatia cunoscuta;

• L este o multime finita nevida numita

”alfabet de chei”;

• g : K−→ L+ este un generator de chei

fluide: pentru

∀K ∈ K, g(K) = k1k2k3 . . . ∈ L+

este o cheie fluida (teoretic infinita);

• ∀z ∈ L exista o regula de criptare ez ∈ E si

o regula de decriptare dz ∈ D astfel ca

∀x ∈ P, dz(ez(x)) = x

7

Page 130: Criptografie 600

Exemplul 2. Sistemul Vigenere poate fi definitca un sistem de criptare fluid sincron.

Fie m lungimea cuvantului cheie din sistemulVigenere.

Definim

P = C = L =Z26, K =(Z26)m ,

ez(x) = x + z (mod 26),

dz(y) = y − z (mod 26)

Cheia z1z2z3 . . . este definita

zi =

{ki daca 1 ≤ i ≤ mzi−m daca i ≥ m + 1

Din cheia fixa K = (k1, k2, . . . , km) se obtinecheia fluida

k1k2 . . . kmk1k2 . . . kmk1k2 . . .

8

Page 131: Criptografie 600

Procesul de criptare cu un sistem fluid sincron

poate fi reprezentat ca un automat descris de

relatiile

qi+1 = δ(qi, K), zi = g(qi, K), yi = h(zi, xi)

unde

- q0 este starea initiala – care poate fi deter-

minata din cheia K,

- δ este functia de tranzitie a starilor,

- g este functia care produce cheia fluida zi,

- h este functia de iesire care produce textul

criptat yi pe baza textului clar xi si a cheii

fluide zi.

� �� � ��� �� qi

- - -6

6-

?�

g hK

qi+1

zi

xi

yi � �� � ��� �� qi

- - -6

6-

?�

g h−1K

qi+1

zi

yi

xi

(a) Criptare (b) Decriptare

9

Page 132: Criptografie 600

Remarca 1.

• Un sistem de criptare bloc poate fi privit

ca un caz particular de sistem de criptare

fluid, ın care ∀i ≥ 1, zi = K.

• (sincronizare): In sistemele de criptare flu-

ide sincrone, Alice si Bob trebuie sa-si sin-

cronizeze cheia fluida pentru a putea ob-

tine o criptare/decriptare corecta.

Daca ın timpul transmisiei sunt inserati sau

eliminati biti ın textul criptat, atunci de-

criptarea esueaza si ea poate fi reluata nu-

mai pe baza unor tehnici de resincronizare

(cum ar fi de exemplu reinitializarea sau

plasarea unor marcatori speciali la intervale

regulate ın textul transmis).

10

Page 133: Criptografie 600

Remarca 2.

• Modificarea unui bit din textul criptat (fara

a se elimina sau adauga nimic) nu va afecta

decriptarea altor caractere (nepropagarea

erorii).

• Un adversar activ care elimina, insereaza

sau retrimite componente ale mesajului

criptat, va provoca desincronizari si va fi

deci detectat la receptie.

De asemenea, el poate face modificari ın

textul criptat si sa observe cum vor afecta

ele textul clar.

Deci un text criptat cu un sistem fluid sin-

cron necesita mecanisme separate de

autentificare si de garantare a integritatii

datelor.

11

Page 134: Criptografie 600

Definitia 4. Un sistem aditiv fluid binar de

criptare este un sistem fluid sincron ın care

P = C = L =Z2 iar functia de iesire h este

⊕ (XOR).

Gen.chei ⊕- -

?-K

zi

xi

yiGen.chei ⊕- -

?-K

zi

yi

xi

(a) Criptare (b) Decriptare

12

Page 135: Criptografie 600

Definitia 5. Un sistem de criptare fluid este

auto-sincronizabil (sau ”asincron”) daca func-

tia de generare a cheii fluide depinde de un

numar fixat de caractere criptate anterior.

Deci comportamentul poate fi descris astfel:

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) este starea initiala,

- K este cheia,

- g este functia de generare a cheii fluide,

- h este functia de iesire care cripteaza textul

clar xi.

13

Page 136: Criptografie 600

Proprietati:

1. Auto-sincronizare: Desincronizarea, rezul-

tata eventual prin inserarea/stergerea de

caractere criptate – se poate evita.

Astfel de sisteme de criptare pot restabili

proprietatea de sincronizare, afectand doar

un numar finit de caractere din textul clar.

2. Propagarea limitata a erorii: Daca starea

unui sistem auto-sincronizabil depinde de

t caractere anterioare, atunci modificarea

(eventual stergerea sau inserarea) unui ca-

racter din textul criptat poate duce la de-

criptarea incorecta a maxim t caractere;

dupa aceea decriptarea redevine corecta.

14

Page 137: Criptografie 600

3 Difuzia textelor clare: Deoarece fiecare

caracter din textul clar afecteaza ıntregul

text criptat care urmeaza, eventualele pro-

prietati statistice ale textului clar sunt dis-

persate prin textul criptat.

Deci, din acest punct de vedere, procesul

de difuzie al sistemelor auto-sincronizabile

este mai bun decat al celor sincronizabile.

4 Rezistenta la criptanaliza activa: Din pro-

prietatile anterioare rezulta ca este destul

de dificil de depistat un atac venit de la un

adversar activ (care poate modifica, insera

sau sterge caractere).

De aceea sunt necesare mecanisme supli-

mentare pentru a asigura autentificarea si

integritatea datelor.

15

Page 138: Criptografie 600

SEAL

Software - optimized Encryption ALgorithm

(SEAL) este un sistem de criptare aditiv binar,

definit ın 1993 de Coppersmith si Rogaway.

Este unul din cele mai eficiente sisteme imple-

mentabile pe procesoare de 32 biti.

La un astfel de sistem este importanta des-

crierea generatorului de chei fluide (care se

aduna modulo 2 cu textul clar).

SEAL este ın fond o functie pseudo-aleatoare

care scoate o cheie fluida de L biti folosind un

numar n de 32 biti si o cheie secreta a de 160

biti.

16

Page 139: Criptografie 600

Fie A, B, C, D, Xi, Yj cuvinte de 32 biti. Notatii:

1. A: complementul lui A (bit cu bit);

2. A ∨ B, A ∧ B, A ⊕ B: operatiile OR, AND siXOR (definite pe biti);

3. A << s: rotirea ciclica a lui A spre stangacu s pozitii;

4. A >> s: rotirea ciclica a lui A spre dreaptacu s pozitii;

5. A + B (mod 232): suma lui A si B (consi-derate ca numere ıntregi fara semn);

6. f(B, C, D) = (B ∧ C) ∨ (B ∧D);g(B, C, D) = (B ∧ C) ∨ (B ∧D) ∨ (C ∧D)h(B, C, D) = B ⊕ C ⊕D.

17

Page 140: Criptografie 600

7 A||B: concatenarea lui A cu B;

8 (X1, X2, . . . , Xn)←− (Y1, Y2, . . . , Yn):

atribuire simultana: variabila Yi ia valoarea

Xi simultan pentru toate valorile lui

i = 1,2, . . . , n.

Algoritmul SEAL 1.0 este bazat pe functia

de dispersie SHA, iar SEAL 2.0 – pe functia

SHA− 1:

18

Page 141: Criptografie 600

Algoritmul de generare a tabelei G pentru

SEAL 2.0

Intrare: Sirul a = H0H1H2H3H4 de 160 biti si i (0 ≤ i < 232).

Iesire: Ga(i) – sir de 160 biti.

Algoritm 1:

1. Se definesc constantele (de 32 biti):

y1 = 5A827999, y2 = 6ED9EBA1,y3 = 8F1BBCDC, y4 = CA62C1D6

2. a. X0 ←− i;

b. for j ←− 1 to 15 do Xj ←− 00000000;

c. for j ←− 16 to 79 doXj ←− ((Xj−3 ⊕Xj−8 ⊕Xj−14 ⊕Xj−16) << 1);

d. (M0, M1, M2, M3, M4)←− (H0, H1, H2, H3, H4);

e. (Runda 1): for j ←− 0 to 19 do

t←− ((M0 << 5) + f(M1, M2, M3) + M4 + Xj + y1);

(M0, M1, M2, M3, M4)←− (t, M0, M1 << 30, M2, M3);

f. (Runda 2): for j ←− 20 to 39 do

t←− ((M0 << 5) + h(M1, M2, M3) + M4 + Xj + y2);

(M0, M1, M2, M3, M4)←− (t, M0, M1 << 30, M2, M3);

g. (Runda 3): for j ←− 40 to 59 do

t←− ((M0 << 5) + g(M1, M2, M3) + M4 + Xj + y3);

(M0, M1, M2, M3, M4)←− (t, M0, M1 << 30, M2, M3);

19

Page 142: Criptografie 600

h. (Runda 4): for j ←− 60 to 79 do

t←− ((M0 << 5) + h(M1, M2, M3) + M4 + Xj + y4);

(M0, M1, M2, M3, M4)←− (t, M0, M1 << 30, M2, M3);

i. Hi ←− Hi + Mi, (0 ≤ i ≤ 4);

Ga(i) = H0||H1||H2||H3||H4.

20

Page 143: Criptografie 600

SEAL(a, n)

(Generatorul de chei fluide pentru SEAL 2.0):

Intrare:a – cheia secreta (160 biti),n ∈ [0,232) ıntreg,L - lungimea solicitata pentru cheia fluida.

Iesire:Cheia fluida y, |y| = L′ (L′ - primul multiplu de 128 din [L,∞)).

1. Se genereaza tabelele T, S, R avand ca elemente cuvinte.

Fie constanta Y = 000007FC si functia Fa(i) = Hii (mod 5)

unde Hi0H

i1H

i2H

i3H

i4 = Ga(bi/5c).

a. for i←− 0 to 511 do T [i]←− Fa(i);

b. for j ←− 0 to 255 do S[j]←− Fa(00001000 + j);

c. for k ←− 0 to 4 · d(L− 1)/8192e − 1 doR[k]←− Fa(k + 00002000);

2. Procedure Initialize(n, l, M1, M2, M3, M4, n1, n2, n3, n4)

a.M1 ←− n⊕R[4 · l], M2 ←− (n >> 8)⊕R[4 · l + 1],M3 ←− (n >> 16)⊕R[4 · l + 2], M4 ←− (n >> 24)⊕R[4 · l + 3].

b. for j ←− 1 to 2 do

P ←−M1∧Y, M2 ←−M2+T [P/4], M1 ←− (M1 >> 9),

P ←−M2∧Y, M3 ←−M3+T [P/4], M2 ←− (M2 >> 9),

P ←−M3∧Y, M4 ←−M4+T [P/4], M3 ←− (M3 >> 9),

P ←−M4∧Y, M1 ←−M1+T [P/4], M4 ←− (M4 >> 9),

(n1, n2, n3, n4)←− (M4, M1, M2, M3);

21

Page 144: Criptografie 600

P ←−M1 ∧ Y, M2 ←−M2 + T [P/4], M1 ←− (M1 >> 9),

P ←−M2 ∧ Y, M3 ←−M3 + T [P/4], M2 ←− (M2 >> 9),

P ←−M3 ∧ Y, M4 ←−M4 + T [P/4], M3 ←− (M3 >> 9),

P ←−M4 ∧ Y, M1 ←−M1 + T [P/4], M4 ←− (M4 >> 9),

3 y ←− ε (sirul vid);

4 for l −→ 0 to ∞ do

a. Initialize(n, l, M1, M2, M3, M4, n1, n2, n3, n4);

b. for i←− 1 to 64 do

P ←−M1 ∧ Y, M2 ←−M2 + T [P/4],M1 ←− (M1 >> 9), M2 ←−M2 ⊕M1;

Q←−M2 ∧ Y, M3 ←−M3 + T [Q/4],M2 ←− (M2 >> 9), M3 ←−M3 ⊕M2;

P ←− (P + M3) ∧ Y, M4 ←−M4 + T [P/4],M3 ←− (M3 >> 9), M4 ←−M4 ⊕M3;

Q←− (Q + M4) ∧ Y, M1 ←−M1 + T [Q/4],M4 ←− (M4 >> 9), M1 ←−M1 ⊕M4;

P ←− (P + M1) ∧ Y, M2 ←−M2 + T [P/4], M1 ←− (M1 >> 9);

Q←− (Q + M2) ∧ Y, M3 ←−M3 + T [Q/4], M2 ←− (M2 >> 9);

P ←− (P + M3) ∧ Y, M4 ←−M4 + T [P/4], M3 ←− (M3 >> 9);

Q←− (Q + M4) ∧ Y, M1 ←−M1 + T [Q/4], M4 ←− (M4 >> 9);

y ←− y||(M2+S[4 · i−4])||(M3⊕S[4 · i−3])||(M4+S[4 · i−2])||(M1⊕S[·i− 1]).

if |y| ≥ L then return(y) STOP

else if i (mod 2) = 1 then (M1, M3)←− (M1 + n1, M3 + n2)

else (M1, M3)←− (M1 + n3, M3 + n4)

22

Page 145: Criptografie 600

Remarca 3. In majoritatea aplicatiilor pentru

SEAL 2.0 se foloseste L ≤ 219.

Algoritmul functioneaza si pentru valori mai

mari, dar devine ineficient deoarece creste mult

dimensiunea tabelei R.

O varianta este concatenarea cheilor fluide

SEAL(a,0)||SEAL(a,1)||SEAL(a,2)|| . . .

Deoarece n < 232, se pot obtine astfel chei

fluide de lungimi pana la 251, pastrand

L = 219.

23

Page 146: Criptografie 600

RC4

Sistemul RC4 (Rivest Code #4) a fost creat

ın 1987 de Ron Rivest pentru societatea RSA

Data Security Inc (astazi RSA Security).

Este un sistem aditiv fluid de criptare.

Printre sistemele care folosesc RC4:

SQL (Oracle), Lotus Notes, AOCE (Apple

Computer), WEP WPA CipherSaber

Secure Sockets Layer (optional), Secure Shell

(optional)

RC4 este utilizat pentru criptarea fisierelor ın

protocoale cum ar fi RSA SecurPC sau ın stan-

darde de comunicatii (WEP, WPA pentru car-

duri, criptarea traficului de date sau a site-

urilor de web bazate pe protocolul SSL).

De asemenea, el face parte din Cellular Digital

Packet Data specification.

24

Page 147: Criptografie 600

Pentru generarea cheii fluide se foloseste o

stare interna secreta) din doua componente:

• Un tablou de 256 octeti: S[0], . . . , S[255],

numit S − box.

• Doi pointeri de cate un octet

(notati ”i” respectiv ”j”).

S − boxul este initializat cu o cheie de lungime

variabila – de obicei ıntre 40 si 256 biti, folosind

un algoritm numit KSA (key-sheduling algo-

rithm).

In faza a doua, cheia fluida este generata folo-

sind algoritmul PRGA (pseudo-random gene-

ration algorithm).

25

Page 148: Criptografie 600

Algoritmul PRGA

i j

+

? ?

?�?-?�

6

?

S0 1 2 S[i]+S[j] 254 255

K

. . . . . . . . . . . .

i := 0

j := 0

while GeneratingOutput:

i := (i + 1) mod 256

j := (j + S[i]) mod 256

swap(S[i],S[j])

output S[(S[i] + S[j]) mod 256]

26

Page 149: Criptografie 600

Algoritmul KSA

KSA este utilizat la initializarea S − boxului.

Fie n (1 ≤ n ≤ 255) numarul de octeti din cheie(ın majoritatea implementarilor n ∈ [5,16]).

Initial ın S se introduce permutarea identica.Ulterior se realizeaza 256 transpozitii. Formal

for i from 0 to 255 do S[i] := i

j := 0

for i from 0 to 255 do

j := (j + S[i] + key[i mod n]) mod 256;

swap(S[i],S[j])

Implementarea sistemului RC4 este simpla: selucreaza cu octeti. Sunt necesari 256 octetipentru S − box, n octeti de memorie pentrucheie, plus trei variabile ıntregi i, j, k.

Operatiile folosite sunt XOR si AND (sau – peunele platforme – simpla adunare pe biti, faratransport).

27

Page 150: Criptografie 600

Sistemul A5/1

A5/1 este un sistem de criptare fluid utilizat ın

retelele de telefonie mobila GSM (ınafara algo-

ritmului de criptare A5/1, retelele GSM folo-

sesc si un algoritm de autentificare A3/8).

Construit ın 1987 special pentru Europa si SUA

(o versiune intentionat mai slaba – A5/2 – a

fost definita ın 1989 pentru export ın alte zone

geografice), el a fost facut public dupa ce ın

2000 s-a demonstrat vulnerabilitatea sa.

28

Page 151: Criptografie 600

A5/1 este un AF bazat pe trei registri seriali

cu feedback (LFSR) sincroni R1, R2, R3.

Acestia contin 19, 22, 23 DFF .

La un tact, fiecare registru poate ramane pe

loc sau ısi poate deplasa continutul spre sta-

nga, aducand pe ultima pozitie o combinatie

liniara de alti biti.

Cele trei combinatii liniare sunt definite astfel:

R1[0] ←− R1[13]⊕R1[16]⊕R1[17]⊕R1[18]R2[0] ←− R2[20]⊕R2[21]R3[0] ←− R3[7]⊕R3[20]⊕R3[21]⊕R3[22]

×

×

×

⊕ ⊕ ⊕

⊕ ⊕ ⊕

?��

6

?- ?- ? - ? -

6�

?- ? -6

?- ?- ? - ? -6

Automatul A5/1

29

Page 152: Criptografie 600

Pentru a decide ce registri se deplaseaza la un

tact, se folosesc trei biti de tact (notati ×).

La fiecare tact se determina valoarea majori-

tara din acesti biti; un registru se deplaseaza

(si scoate o valoare) daca bitul sau de tact are

aceeasi valoare cu cea majoritara.

Deci, la fiecare pas, cel putin doi registri vor

suferi o deplasare.

La fiecare tact, valoarea emisa de automat este

k = R1[18]⊕R2[21]⊕R3[22]

Apoi y se combina prin XOR cu bitul curent

din mesajul de informatie (ca la one-time-pad).

30

Page 153: Criptografie 600

Exemplul 3. Sa presupunem ca cei trei registrisunt (bitii de tact au fost marcati):

R1 = 0110 1011 1010 1001 011,R2 = 1010 1100 0010 1101 1001 11,R3 = 1100 0101 1011 0010 1010 010

1. Tact 1: Iesire: y ←− 0⊕ 1⊕ 1 = 0.

Bit majoritar: 0. Se deplaseaza R2 si R3.Noua stare:

R1 = 0110 1011 1010 1001 011,R2 = 0101 1000 0101 1011 0011 11,R3 = 1000 1011 0110 0101 0100 100

2. Tact 2: Iesire: y ←− 0⊕ 0⊕ 1 = 1.

Bit majoritar: 1. Se deplaseaza R1 si R2.Noua stare:

R1 = 1101 0111 0101 0010 110,R2 = 1011 0000 1011 0110 0111 11,R3 = 1000 1011 0110 0101 0100 100

31

Page 154: Criptografie 600

3 Tact 3: Iesire: y ←− 1⊕ 1⊕ 1 = 1.

Bit majoritar: 0. Se deplaseaza R1 si R3.

Noua stare:

R1 = 1010 1110 1010 0101 101,R2 = 1011 0000 1011 0110 0111 11,R3 = 0001 0110 1100 1010 1001 000

4 Tact 4: Iesire: y ←− 1⊕ 1⊕ 0 = 0.

Bit majoritar: 1. Deplasare R1, R2, R3.

Noua stare:

R1 = 0101 1101 0100 1011 011,R2 = 0110 0001 0110 1100 1111 11,R3 = 0010 1101 1001 0101 0010 000

Deci cheia fluida de criptare este z = 01100 . . .

32

Page 155: Criptografie 600

A5/1 necesita o intializare, bazata pe o cheiede criptare K de 64 biti si anumiti parametriGSM stocati ıntr-o constanta Count de 22 biti.

Cum GSM transmite mesajele ın pachete decate 114 biti, A5/1 va genera chei fluide de114 biti; deci este necesara o initializare a au-tomatului la fiecare pachet nou primit.

Algoritmul de initializare:

1. Se reseteaza toti registrii.

2. for i←− 0 to 63 do

2.1. R1[0]←− R1[0]⊕K[i];

2.2. R2[0]←− R2[0]⊕K[i];

2.3. R3[0]←− R3[0]⊕K[i];

2.4. Deplasare stanga toti registrii;

3. for i←− 0 to 21 do

3.1. R1[0]←− R1[0]⊕ Count[i];

3.2. R2[0]←− R2[0]⊕ Count[i];

3.3. R3[0]←− R3[0]⊕ Count[i];

3.4. Deplasare stanga toti registrii;

4. for i←− 0 to 99 do

Functioneaza un tact automatul A5/1, cu ignorarea iesirii.

33

Page 156: Criptografie 600

Sisteme simetrice de criptare

moderne

Sistemul de criptare DES

1

Page 157: Criptografie 600

Retele Feistel

Avantaj: operatiile de criptare si decriptaresunt similare.

Aceasta permite o reducere substantiala amarimii codului (circuitelor) care implementea-za sistemul de criptare.

Retelele Feistel apar la sistemul de criptare Lu-cifer, construit pentru IBM de o echipa con-dusa de Horst Feistel si Don Coppersmith.

Succesul a fost asigurat odata cu desemnareasistemului DES ca standard oficial de criptare.

Blowfish, Camellia, CAST-128, DES, FEAL,KASUMI, LOKI97, Lucifer, MAGENTA,MISTY1, RC5, TEA, Triple DES, Twofish,XTEA sunt bazate pe retele Feistel.

CAST-256, MacGuffin, RC2, RC6, Skipjackutilizeaza diverse generalizari ale retelelor Feis-tel.

2

Page 158: Criptografie 600

Desi se stie de mult cum sa se construiascafunctii cu caracter aleator (care sa creeze ”di-fuzie” si ”confuzie”), pana la retelele Feistelnu se cunosteau algoritmi de constructie pen-tru functii bijective aleatoare.

S D

L R

����f

?PPPPPq

?

?�

������

?

Algoritmul de criptare va opera cu blocuri de2n biti, imaginea criptata a unui bloc printr-oretea Feistel fiind tot un bloc de 2n biti.

Transformarea este bijectiva:din perechea (L, R) se poate regasi (S, D) prinD = L, S = R⊕ f(L).

Functia f nu este obligatoriu inversabila. Decele mai multe ori ea se compune din operatiisimple care sunt executate rapid de calculator.

3

Page 159: Criptografie 600

Exemple de operatii folosite frecvent:

• Permutari de biti (implementate sub forma

unor tabele de permutare: P − boxuri).

• Functii simple neliniare (implementate sub

forma unor tabele de substitutie, numite

S − boxuri).

• Operatii liniare (deplasari, adunari, XOR)

Operatii pot fi implementate direct pe struc-

turi hardware (extrem de rapide).

Cum dupa criptare, jumatatea din dreapta a

blocului nu a suferit nici o transformare (doar

o deplasare spre stanga), reteaua Feistel se

aplica de mai multe ori – fiecare aplicatie

fiind numita runda.4

Page 160: Criptografie 600

Consideratii generale DES

In mai 1973, Biroul National de Standarde din

SUA a lansat ın Registrul Federal (jurnalul ofi-

cial al guvernului) un apel la construirea unui

sistem de criptare oficial care sa se numeasca

Data Encryption Standard (DES).

Firma IBM a construit acest sistem –

publicat ın Registrul Federal la 17 martie 1975,

modificand sistemul Lucifer, pe care deja ıl

testa.

Dupa dezbateri publice, DES a fost adoptat la

17 ianuarie 1977 drept standard de criptare.

De atunci, el a fost re-evaluat la fiecare 5 ani,

fiind ın acest moment cel mai popular sistem

de criptare cu cheie simetrica.

Spargerea sa ın iulie 1998 a coincis cu durata

sa oficiala de utilizare pe teritoriul SUA.

5

Page 161: Criptografie 600

Descrierea sistemului DES

1. Fie α textul clar initial, de 64 biti.

Lui i se aplica o permutare IP initiala,obtinandu-se α0 = IP (α) = L0R0.

2. Se efectueaza 16 runde (iteratii) ale uneifunctii care se va preciza.

La fiecare runda se calculeaza LiRi(1 ≤ i ≤ 16) dupa regula

Li = Ri−1Ri = Li−1 ⊕ f(Ri−1, Ki)

unde f este o functie care se va preciza,iar K1, K2, . . . , K16 sunt secvente de 48 biticalculati din cheia K.

3. Blocului R16L16 i se aplica inversa permu-tarii initiale pentru a obtine textul criptat

β = IP−1(R16L16).

6

Page 162: Criptografie 600

Functia de criptare f(A, J) are ca argumente

doua secvente binare: una de 32 biti, iar a

doua de 48 biti.

Rezultatul este o secventa de 32 biti.

1. Argumentul A este extins la 48 biti folosind

o functie de expansiune E.

2. Se calculeaza B = E(A) ⊕ J; rezultatul se

descompune ın 8 subsecvente de cate 6

biti:

B = B1B2B3B4B5B6B7B8.

3. Se folosesc 8 S − boxuri S1, S2, . . . , S8,

fiecare fiind un tablou 4 × 16 cu elemente

numere ıntregi din intervalul [0,15].

7

Page 163: Criptografie 600

Pentru o secventa Bj = b1b2b3b4b5b6 se cal-

culeaza un sir de 4 biti Sj(Bj):

bitii b1b6 dau reprezentarea binara a indicelui

unei linii r (0 ≤ r ≤ 3) din Sj; ceilalti patru biti

b2b3b4b5 dau reprezentarea binara a indicelui

unei coloane c (0 ≤ c ≤ 15) din tablou.

Atunci Cj = Sj(Bj) = [Sj(r, c)]2 (1 ≤ j ≤ 8).

4 Secventa C = C1C2C3C4C5C6C7C8 – de

lungime 32 – se rearanjeaza folosind o per-

mutare fixata P .

Rezultatul final este

f(A, J) = P (C).

8

Page 164: Criptografie 600

Permutarea initiala IP :

58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7

Permutarea inversa IP−1:

40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25

9

Page 165: Criptografie 600

Functia de expansiune E:

32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1

Permutarea fixata P :

16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25

10

Page 166: Criptografie 600

Cele opt cutii S (S − boxuri):

S114 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S215 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S310 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S47 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

11

Page 167: Criptografie 600

S52 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S612 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S74 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S813 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

12

Page 168: Criptografie 600

Procesul de diversificare al cheii K

K este o secventa de 64 biti, din care 56 de-

finesc cheia, iar bitii de pe pozitiile

8,16,24, . . . ,64 sunt biti de paritate.

1. Din cheie se elimina bitii de paritate, iar

asupra celorlalti se aplica o permutare PC1,

obtinandu-se PC1(K) = C0D0

(C0 sunt primii 28 biti din secventa).

Permutarea PC1 este

57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4

13

Page 169: Criptografie 600

2 Pentru i = 1,2, . . . ,16 se calculeaza

Ci = LSi(Ci−1),Di = LSi(Di−1)

unde LSi este o rotatie circulara la stangacu una sau 2 pozitii: daca i = 1,2,9,16,atunci cei 28 biti se rotesc cu o pozitie,altfel rotirea este cu doua pozitii.

In final Ki = PC2(CiDi) unde PC2 este opermutare si o selectie de 48 biti;daca renumerotam bitii din CiDi, ın urmalui PC2 se elimina bitii 9,18,22,25,35,38,43 si 54:

14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32

14

Page 170: Criptografie 600

Decriptarea se realizeaza plecand de la tex-

tul criptat β si utilizand acelasi algoritm, ın

ordine inversa; se vor folosi ın ordine cheile

K16, . . . , K1.

Exemplul 1. Sa consideram textul clar

”Now is time for all”

reprezentat ca o secventa de caractere ASCII

scrise ın hexazecimal.

Daca se face o criptare DES folosind cheia

K = 0123456789ABCDEF , se obtineα = 4E6F772069732074

68652074696D6520666F7220616C6C20

β = 3FA40E8A984D48156A271787AB8883F9893D51EC4B563B53

15

Page 171: Criptografie 600

Chei slabe

Definitia 1. O cheie DES slaba este o cheie

K cu proprietatea eK(eK(α)) = α, ∀α ∈ P.

O pereche de chei (K1, K2) este semi-slaba

DES daca eK1(eK2

(α)) = α, ∀α ∈ P.

In DES sunt 4 chei slabe si 6 perechi de cheisemi-slabe, date de tabelele urmatoare:

Chei slabe (hex) C0 D0

0101010101010101 028 028

FEFEFEFEFEFEFEFE 128 128

1F1F1F1F0E0E0E0E 028 128

E0E0E0E0F1F1F1F1 128 028

C0 D0 Perechi de chei semi− slabe (hex) C0 D0

(01)14 (01)14 01FE01FE01FE01FE, FE01FE01FE01FE01 (10)14 (10)14

(01)14 (10)14 1FE01FE00EF10EF1, E01FE01FF10EF10E (10)14 (01)14

(01)14 028 01E001E001F101F1, E001E001F101F101 (10)14 028

(01)14 128 1FFE1FFE0EFE0EFE, FE1FFE1FFE0EFE0E (10)14 128

028 (01)14 011F011F010E010E, 1F011F010E010E01 028 (10)14

128 (01)14 E0FEE0FEF1FEF1FE, FEE0FEE0FEF1FEF1 128 (10)14

Nesansa ca printr-o alegere aleatoare a cheii

sa se obtina o cheie slaba sau semi-slaba este

deci 2−52.16

Page 172: Criptografie 600

Fiind data o cheie semi-slaba K, cealalta cheie

din pereche poate fi obtinuta sectionand K ın

doua parti egale si rotind fiecare jumatate cu

8 biti.

Pentru fiecare cheie slaba K exista 232 puncte

fixe: texte clare α cu proprietatea eK(α) = α.

Pentru fiecare cheie semi-slaba K din partea

superioara a tabelului exista 232 puncte anti-

fixe: texte clare α cu eK(α) = α.

Aceste patru chei semi-slabe se numesc si

chei anti - palindromice, deoarece subcheile

generate sunt complementare:

K1 = K16, K2 = K15 etc.

17

Page 173: Criptografie 600

Controverse legate de DES

O prima obiectie: S − boxurile.Toate calculele din DES sunt liniare,cu exceptia acestor S − boxuri.

NSA afirma ın 1976 ca S − boxurile au fostconstruite pe baza urmatoarelor criterii:

1. O linie este o permutare pentru (0, . . . ,15);

2. Un S − box nu este o functie liniara/afina;

3. La modificarea unui bit din operand, unS − box provoaca modificarea cel putin adoi biti din rezultat;

4. Pentru fiecare cutie S si α (|α| = 6), S(α)si S(α ⊕ 001100) difera prin cel putin doibiti.

18

Page 174: Criptografie 600

Alte doua proprietati au fost mentionate drept

”consecinte ale criteriilor de constructie”:

5. Pentru orice cutie S si orice α,

S(α) 6= S(α⊕ 11ab00), ∀a, b ∈ {0,1};

6. Daca un bit din operand este mentinut con-

stant si se urmareste un bit al rezultatu-

lui, numarul de valori care produc 0 este

”apropiat” de numarul de valori care pro-

duc 1.

Mai exact, acest numar este ın intervalul

[13,19].

Nici un alt criteriu referitor la S − boxuri nu a

mai fost recunoscut public.

19

Page 175: Criptografie 600

Alta obiectie se refera la marimea prea mica

(numai 256) a spatiului cheilor.

S-au conceput numeroase masini dedicate ata-

curilor prin forta bruta, care sa caute cheia.

Fiind dat un text clar α de 64 biti si textul sau

criptat β, se verifica toate cheile K posibile

(aproximativ 255), pana se obtine eK(α) = β

(solutia exista totdeauna).

20

Page 176: Criptografie 600

Moduri de implementare ale DES -ului

Sistemul de criptare DES a cunoscut patru

moduri de implementare

(extinse ulterior la toate sistemele de criptare):

• Modul ECB (Electronic Codebook Mode):

fiind dat un text clar x = α1α2 . . ., fiecare

bloc αi de 64 biti este criptat cu cheia K

dupa formula

βi = eK(αi), (i ≥ 1)

Se obtine textul criptat y = β1β2 . . .

21

Page 177: Criptografie 600

• Modul CBC (Cypher Block Chaining

Mode):

β1

eK eK

β2

α1 α2

V I = β0 ⊕ ⊕

Criptare

-?

?

?-

6- ?

?

?-

6- . . .

α1 α2

dK dK

β1 β2

V I = β0 -

?

?

?

-

?-

?

?

?

-

?-⊕ ⊕ . . .

Decriptare

Bloc cu valoare initiala V I = β0.

Functia de criptare

βi = eK(βi−1 ⊕ αi) (i ≥ 1)

Functia de decriptare

αi = βi−1 ⊕ dK(βi) (i ≥ 1)

nu este recursiva.

De aceea, decriptarea se poate efectua mai

rapid (comparativ cu operatia de criptare),

printr-un proces de calcul paralel.

22

Page 178: Criptografie 600

Modurile OFB si CFB sunt construite con-

form sistemelor de criptare cu chei fluide: se

genereaza cheia fluida, care se combina apoi cu

textul clar (similar sistemului one-time-pad).

• OFB (Output Feedback Mode):

Criptare sincronizabila aditiva: componen-

tele cheii fluide sunt obtinute prin criptarea

iterativa a unui bloc initial V I de 64 biti.

Se defineste γ0 = V I si se calculeaza

γ1, γ2, . . . cu formula

γi = eK(γi−1), (i ≥ 1)

Textul clar x = α1, α2, . . . este criptat apoi

conform relatiei

βi = αi ⊕ γi, (i ≥ 1)

23

Page 179: Criptografie 600

• Modul CFB (Cypher Feedback Mode):

1. Se ıncepe cu blocul initial β0 = V I;

2. Se calculeaza cheia fluida γi:

γi = eK(βi−1) (i ≥ 1)

3. (ca la modul OFB)

βi = αi ⊕ γi (i ≥ 1)

Functia eK este folosita atat la procesul decriptare cat si la cel de decriptare.

β1

eKV I = β0

α1

eK

β2

α2

- -?

?-

6- -

?

?-

6-⊕⊕

Criptare

. . .

α1

eKV I = β0

β1

eK

α2

β2

- -?

?

-

?- -?

?

-

?-⊕⊕

Decriptare

. . .

Si aici este posibila o decriptare ın paralel,datorita formulei

αi = βi ⊕ eK(βi−1) (i ≥ 1)

Modurile OFB si CFB pot fi extinse la blocuride k biti (1 ≤ k ≤ 64).

24

Page 180: Criptografie 600

Remarca 1.

La ECB si OFB, modificarea unui bloc de textclar αi provoaca modificarea unui singur blocde text criptat, βi.

Modul OFB este utilizat adesea pentru trans-misiile prin satelit.

In modurile CBC si CFB dimpotriva, modi-ficarea unui bloc αi de text clar antreneazamodificari ın toate blocurile de texte criptate,ıncepand cu βi.

De aceea, aceste moduri sunt adaptate ın par-ticular problemelor de autentificare a mesajelor(MAC - Message Authentication Code).

Un MAC este adaugat la un text clar cu scopulde a-l convinge pe Bob ca textul primit a fostscris de Alice si nu a fost alterat de Oscar.

El garanteaza astfel integritatea (sau autenti-citatea) mesajului, dar nu si confidentialitateasa.

25

Page 181: Criptografie 600

Constructia unui MAC folosind CBC.

Se pleaca de la blocul initial V I ın care toti bitii

sunt 0.

Se construieste textul criptat β1, β2, . . . , βn cu

cheia K, ın modul CBC, iar MAC este blocul

βn.

Alice va transmite mesajul α1, α2, . . . , αn, aso-

ciat cu MAC-ul βn.

Cand Bob primeste mesajul α1, α2, . . . , αn, el

genereaza β1, . . . , βn folosind cheia (secreta) K

si verifica daca βn este identic cu mesajul MAC

primit.

De remarcat ca Oscar nu poate construi un

MAC deoarece nu cunoaste cheia K utilizata

de Alice si Bob; orice modificare a mesajelor

clare este depistata astfel usor.

26

Page 182: Criptografie 600

Se poate realiza si o combinare a integritatiicu confidentialitatea:

Alice utilizeaza cheia K1 pentru a calcula unMAC bazat pe α1, . . . , αn; fie αn+1 acest MAC.

Apoi, ea cripteaza mesajul α1, . . . , αn+1 ınβ1, . . . , βn+1 folosind o a doua cheie K2.

Cand Bob primeste mesajul, el decripteaza ınprima faza (cu cheia K2), apoi verifica cu cheiaK1 daca αn+1 este MAC-ul lui α1, . . . , αn.

Varianta:

Alice poate utiliza K1 pentru criptarea mesaju-lui α1, . . . , αn; apoi, pentru β1, . . . , βn determinaMAC-ul βn+1 folosind cheia K2.

Bob va face ıntai verificarea corectitudinii datade MAC si – daca totul este ın ordine – vatrece la decriptare.

27

Page 183: Criptografie 600

Parole UNIX

Algoritmul UNIX crypt – de criptare al parolelor

din sistemul UNIX – este bazat pe DES.

DES DES DES- - - - - -

-

6

6-

6�6 6

? -

?

? ?

′0′ . . .

w

Salt

/etc/passwrd

56

64 64

1212

88

64 64 64

Versiunea criptata a unei parole este stocata

ıntr-o baza de date /etc/passwrd (a carei confi-

dentialitate nu este obligatoriu asigurata).

Atunci cand un utilizator da parola, sistemul o

cripteaza si o compara cu varianta din baza de

date.

28

Page 184: Criptografie 600

Modul de criptare:

1. Parola este trunchiata la primele opt ca-

ractere ASCII (sau completata cu 0 daca

parola are mai putin de 8 caractere).

Fiecare caracter da 7 biti, formand o cheie

DES de 56 biti.

2. Se realizeaza o criptare ın serie prin 25 sis-

teme DES, textul clar initial fiind 00 . . .0.

3. Cei 64 biti obtinuti dupa ultima criptare

se combina cu 12 biti dati de Salt si cu

un bit suplimentar, formand 11 caractere

printabile de cate 7 biti.

Bitii de paritate completeaza parola crip-

tata pana la 88 biti.

29

Page 185: Criptografie 600

Sistemul UNIX ofera pentru criptare un pa-

chet de 12 biti – numit Salt – generat de sis-

temul de ceas al sistemului la momentul creerii

parolei si stocat ın baza de date, ın cadrul

parolei criptate.

Acesti biti sunt folositi pentru modificarea

functiei de expansiune E din DES, oferind

212 = 4096 variante.

Anume: fiecare bit din Salt este asociat cu o

pereche fixata din blocul de 48 biti din E.

Daca el este 1, atunci bitii din E asociati lui

sunt interschimbati; altfel, sunt lasati pe loc.

Aceasta modificare previne utilizarea de imple-

mentari ale sistemului DES externe sistemului

UNIX.

30

Page 186: Criptografie 600

Triplu DES (3DES)

Triplu DES (cunoscut si sub numele 3DES sau

– mai rar – DES − ede) este propus de Walter

Tuchman (seful echipei IBM care a construit

DES).

Numele oficial este FIPS Pub 46− 3.

Formal, 3DES este definit prin formula

c = DESk3(DES−1

k2(DESk1

(m)))

Introducerea la pasul 2 a decriptarii nu afectea-

za securitatea algoritmului.

Uneori – dar destul de rar – se foloseste pentru

3DES o criptare ın lant de trei criptari DES

(numita si DES − eee):

c = DESk3(DESk2

(DESk1(m))).

31

Page 187: Criptografie 600

Criptarea ın trei pasi (ede sau eee) este esenti-ala pentru protejarea contra unui atac de tipulmeet-in-the-middle (posibil ın cazul unei dublecriptari).

Fie un sistem de criptare bloc unde marimeacheii este n.

Pentru un text clar dat m, sa presupunem caputem stoca multimea {eK(m) | K ∈ K}.

Fie x un text criptat dupa formulax = ek2

(ek1(m)),

unde cheile k1 si k2 sunt secrete.

Pentru fiecare cheie p exista o cheie unica q

astfel ca dp(x) = eq(m).

In particular exista exact 2n chei posibile de-terminate de perechea (m, x), chei care pot figasite ın aproximativ O(2n) pasi.

32

Page 188: Criptografie 600

Pentru oricare din situatiile

k1 = k2, k2 = k3, k1 = k2 = k3,

DES − ede se reduce la un simplu DES, lucru

utilizat frecvent pentru a verifica compatibili-

tatea.

Cheia pentru 3DES are 3 × 56 = 168 biti, la

care se adauga 3 × 8 = 24 biti de paritate; ın

total sunt 192 biti.

O varianta, numita ”3DES cu doua chei”

foloseste k1 = k3; aici marimea de stocare a

cheii va fi de numai 128 biti (din care 16 biti

de paritate).

33

Page 189: Criptografie 600

Sistemul de criptare 3DES nu este ınca spart,

dar utilizarea sa este ıngreunata din cauza vite-

zei mici de criptare.

Totusi multe sisteme continua sa foloseasca

3DES; ca exemple mai recente sunt cardurile

bancare (Mastercard si partial – Visa) care din

2002 sunt configurate pe baza acestui sistem

de criptare.

De asemenea, sistemul de telefonie mobila

Zapp foloseste 3DES ca sistem de criptare.

34

Page 190: Criptografie 600

DES −X

Varianta a sistemului de criptare DES, dez-

voltata pentru a rezista mai bine unui atac prin

forta bruta.

Este propus de Rivest ın 1984 ın ideea de a

creste marimea cheii K fara a modifica prea

mult algoritmul DES.

DES −X foloseste doua chei suplimentare

K1, K2 (de cate 64 biti) si efectueaza criptarea

dupa formula

DESXK,K1,K2(x) = K2 ⊕DESK(x⊕K1)

Marimea cheii creste deci la 56 + 2 ∗ 64 = 184

biti.

35

Page 191: Criptografie 600

IDEA

Apare initial ın 1990, sub denumirea PES

(Proposed Encryption Standard).

Deoarece ın acelasi an, Biham si Shamirpublica sistemul de atac al DES-ului prin crip-tanaliza diferentiala, ın 1991 autorii (Xuejia Laisi James Massey) modifica sistemul de criptarepentru a rezista acestui gen de atac.

Noul sistem este numit IPES (Improved Pro-posed Encryption Standard); ın 1992 numelese schimba ın IDEA (International Data En-cryption Standard Algorithm).

In opinia lui Bruce Schneider, ın 1996 IDEA

constituia cel mai sigur sistem de criptare uti-lizabil fara restrictii.

Este o componenta a sistemului de securitateprin posta electronica PGP , unde asigura crip-tarea datelor.

36

Page 192: Criptografie 600

IDEA este un sistem simetric care opereazacu blocuri de texte clare de 64 biti, folosind ocheie de 128 biti.

Textul clar de 64 biti este despartit ın 4 sub-blocuri X1, X2, X3, X4, de cate 16 biti fiecare.

Aceste patru componente formeaza intrarea laprima runda a algoritmului.

Sunt 8 runde, care folosesc operatiile de adu-nare, ınmultire (modulo 216) si XOR; toate pe16 biti.

De asemenea sunt implicate si 16 subchei acate 16 biti fiecare.

Intre runde, subblocurile 2 si 3 sunt schimbateıntre ele.

Dupa runda 8, cele patru subblocuri sunt com-binate cu 4 subchei, formand iesirea.

37

Page 193: Criptografie 600

O runda contine 14 operatii, anume:

1. Se ınmulteste X1 cu prima subcheie;

2. Se aduna X2 cu a doua subcheie;

3. Se aduna X3 cu a treia subcheie;

4. Se ınmulteste X4 cu a patra subcheie;

5. Ce s-a obtinut la pasii 1 si 3 se combina

prin XOR;

6. Ce s-a obtinut la pasii 2 si 4 se combina

prin XOR;

7. Se ınmulteste rezultatul pasului 5 cu sub-

cheia 5;

8. Se aduna rezultatele pasilor 6 si 7;

38

Page 194: Criptografie 600

9. Se ınmulteste rezultatul pasului 8 cu sub-

cheia 6;

10. Se aduna rezultatele pasilor 7 si 9;

11. Ce s-a obtinut la pasii 1 si 9 se combina

prin XOR;

12. Ce s-a obtinut la pasii 3 si 9 se combina

prin XOR;

13. Ce s-a obtinut la pasii 2 si 10 se combina

prin XOR;

14. Ce s-a obtinut la pasii 4 si 10 se combina

prin XOR.

Rezultatele pasilor 11− 14 formeaza iesirea

dintr-o runda; cele patru subblocuri (dupa ce

subblocurile doi si trei sunt interschimbate)

formeaza intrarea ın runda urmatoare.39

Page 195: Criptografie 600

Dupa ultima runda, are loc o transformare fi-

nala:

1. Se ınmulteste X1 cu prima subcheie;

2. Se aduna X2 cu a doua subcheie;

3. Se aduna X3 cu a treia subcheie;

4. Se ınmulteste X4 cu a patra subcheie.

Cela patru subblocuri obtinute ın final

formeaza textul criptat.

40

Page 196: Criptografie 600

Prelucrarea subcheilor se face dupa urmatorul

algoritm:

1. Cheia de 128 biti este desfacuta ın 8 sub-

chei a cate 16 biti fiecare;

2. Primele 6 subchei sunt folosite la prima

runda, iar urmatoarele doua, la runda a doua;

3. Cheia este rotita spre stanga cu 25 biti

si se desface din nou ın 8 subchei, folosite la

rundele 2 si 3 (cate patru subchei);

4. Se repeta pasul 3 cat timp este necesar.

Operatia de decriptare se realizeaza urmand

aceiasi pasi, cu singura diferenta ca subcheile

se introduc ın ordine inversa.

41

Page 197: Criptografie 600

Ce a urmat dupa DES

La sfarsitul anilor ′90 se decide ınlocuirea sis-

temului de criptare DES. Motive:

• In iulie 1998 sistemul DES pe 56 biti este

spart de catre organizatia Electronic Fron-

tier Foundation; s-a folosit un calculator

construit special ın acest scop, iar timpul

necesar spargerii a fost de 3 zile.

• In luna septembrie a aceluiasi an, adminis-

tratia americana acorda companiilor pro-

ducatoare de soft de securitate permisi-

unea de a exporta implementari ale algo-

ritmului DES bazate pe chei de criptare de

56 biti.

42

Page 198: Criptografie 600

Pe 20 august 1998 NIST (National Institute

of Standards and Technology) anunta un set

de 15 algoritmi candidati sa ınlocuiasca DES

(CAST − 256, CRY PTON, DEAL, DFC, E2,

FROG, HPC, LOKI97, MAGENTA, MARS,

RC6, Rijndael, SAFER+, Serpent, Twofish).

Este ales si numele noului sistem de criptare:

AES (Advanced Encryption Standard).

43

Page 199: Criptografie 600

• Sa fie un sistem de criptare simetric peblocuri de 128 biti.

• Sa accepte chei de lungime 128, 192 si 256biti;

• Sa nu aiba chei slabe;

• Sa fie eficient atat pe platforme Intel Pen-tium Pro cat si pe alte platforme softwaresau hardware;

• Sa poata fi implementat atat pe procesoarede 32 biti cat si pe smart - carduri (proce-soare de 8 biti);

• Sa fie cat mai simplu.

• Sa fie mai rapid decat DES si sa ofere osecuritate mai mare decat 3DES.

44

Page 200: Criptografie 600

A doua conferinta AES are loc ın martie 1999;

Sunt selectata 5 algoritmi:

Mars, RC6, Rijndael, Serpent si Twofish.

Acestia sunt supusi testelor si discutiilor pub-

lice, folosind drept criterii de evaluare:

securitate, cost, implementare.

In mai 2000 NIST anunta drept ”castigator”

sistemul de criptare Rijndael, care devine ofi-

cial AES.

Rijndael a castigat cu 86 voturi,

contra Serpent cu 59, Twofish cu 31,

RC6 cu 23 si Mars cu 13 voturi.

Principalul atu: desi Serpent este considerat

mai sigur, Rijndael are mai putine transformari

si este mai rapid.

45

Page 201: Criptografie 600

Sistemul de criptare AES

Similar sistemelor anterioare (inclusiv DES),

sistemul AES cripteaza blocuri de text clar de

lungime fixa, folosind subchei ale unei chei

generate aleator.

Lungimile folosite sunt de 128, 192 sau 256

biti.

In schimb AES nu foloseste structura Feistel

ın constructia sa.

46

Page 202: Criptografie 600

Descrierea sistemului AES

Definitia 2. Un rezultat intermediar al

sistemului de criptare se numeste ”stare”.

Starea unui bloc este un tablou cu 4 linii si Nb

coloane, ale carui elemente sunt octeti; deci

Nb = N/32

unde N este lungimea blocului text care se

cripteaza.

Similar, o cheie de criptare se va reprezenta

printr-un tablou 4×Nk, unde

Nk = K/32

(K – lungimea cheii).

47

Page 203: Criptografie 600

Exemplul 2. O stare cu Nb = 6 si o cheie cu

Nk = 4 au forma urmatoare:

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5a1,0 a1,1 a1,2 a1,3 a1,4 a1,5a2,0 a2,1 a2,2 a2,3 a2,4 a2,5a3,0 a3,1 a3,2 a3,3 a3,4 a3,5

k0,0 k0,1 k0,2 k0,3k1,0 k1,1 k1,2 k1,3k2,0 k2,1 k2,2 k2,3k3,0 k3,1 k3,2 k3,3

48

Page 204: Criptografie 600

Un bloc se reprezinta uneori sub forma unui

vector ın care fiecare element este coloana unei

stari (deci, un cuvant).

In functie de marimea N a blocului de criptare

(respectiv K a cheii), un astfel de vector are

4, 6 sau 8 componente, numite cuvinte.

Octetii unui cuvant se noteaza (a, b, c, d);

octetul 0 este a, octetul 1 este b s.a.m.d.

Intrarea si iesirea din sistemul AES sunt defi-

nite sub forma unor vectori avand drept com-

ponente octeti, numerotati de la 0 la 4Nb − 1.

Un vector de intrare/iesire are deci 16, 24 sau

32 componente, numerotate 0 . . .15, 0 . . .23

respectiv 0 . . .31.

49

Page 205: Criptografie 600

Similar, cheia de criptare este definita ca unvector de 16, 24 sau 32 octeti, numerotati dela 0 la 4Nk−1 (unde Nk = 128, 192 si respectiv256).

Octetii care formeaza intrarea ın sistem(textul clar pentru modul de criptare ECB)completeaza pe coloane un tablou, numitstarea initiala.

Similar se procedeaza cu cheia de criptare.

Procedeul este identic la sfarsit, cand se obtineblocul criptat prin liniarizarea pe coloane astarii finale rezultate dupa criptare.

Criptarea se realizeaza ın Nr runde, unde Nr

depinde de Nb si Nk.

Nr Nb = 4 Nb = 6 Nb = 8Nk = 4 10 12 14Nk = 6 12 12 14Nk = 8 14 14 14

50

Page 206: Criptografie 600

Fiecare runda are la intrare o stare si foloseste

o cheie de runda.

Cu exceptia rundei finale, o runda este formata

din patru transformari:

• ByteSub(Stare);

• ShiftRow(Stare);

• MixColumn(Stare);

• AddRoundKey(Stare, Cheie).

Ultima runda contine numai trei transformari,

fiind eliminata MixColumn(Stare).

51

Page 207: Criptografie 600

ByteSub(Stare):

Substitutie neliniara care opereaza pe octeti.

Tabela de substitutie (S - box) este o matrice

inversabila formata din compunerea a doua

transformari:

1. Fiecare octet nenul α este ınlocuit cu in-

versul sau α−1 ∈ GF (28);

octetul 00 este lasat nemodificat.

2. Rezultatul este trecut printr-o transfor-

mare afina:y0y1y2y3y4y5y6y7

=

1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 1 00 0 0 1 1 1 1 1

x0x1x2x3x4x5x6x7

+

11000110

52

Page 208: Criptografie 600

Transformarea ByteSub se aplica tuturor

octetilor starii de intrare ın runda, rezultatul

fiind o alta stare (de iesire din runda).

Inversa transformarii se obtine aplicand fiecarui

octet transformarea afina inversa, dupa care

se ia inversul multiplicativ din GF (28) (daca

octetul nu este nul).

53

Page 209: Criptografie 600

ShiftRow(Stare):

Liniile unei stari sunt permutate ciclic stanga.

Numarul de octeti cu care se face ciclarea:

0 pentru linia 0, Ci pentru linia i (1 ≤ i ≤ 3).

Valorile Ci depind de lungimea Nb a blocului:

Nb C1 C2 C34 1 2 36 1 2 38 1 3 4

54

Page 210: Criptografie 600

Exemplul 3. Aplicam transformarea ShiftRow

starii din Exemplul 2 (cu Nb = 6):

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5a1,1 a1,2 a1,3 a1,4 a1,5 a1,0a2,2 a2,3 a2,4 a2,5 a2,0 a2,1a3,3 a3,4 a3,5 a3,0 a3,1 a3,2

55

Page 211: Criptografie 600

Inversa transformarii ShiftRow:

permutare ciclica spre stanga cu Nb−Ci octeti

pentru linia i (1 ≤ i ≤ 3).

In acest fel, fiecare octet aflat pe pozitia j ın

linia i se deplaseaza pe pozitia

j + Nb − Ci (mod Nb).

56

Page 212: Criptografie 600

MixColumn(Stare):

Fiecare coloana a starii este considerata un

polinom p(X) ∈ GF (28)[X] de gradul 3.

Fiecare astfel de polinom este ınmultit cu

c(X) = ′03′X3 + ′01′X2 + ′01′X + ′02′

ın algebra polinoamelor modulo X4 + 1.

Transformarea poate fi reprezentata ca o

ınmultire matriciala, care transforma starea

coloana cu coloana:

b0b1b2b3

=

02 03 01 0101 02 03 0101 01 02 0303 01 01 02

a0a1a2a3

57

Page 213: Criptografie 600

Operatia inversa este similara.

Fiecare coloana este transformata prin ınmulti-

re cu polinomul invers lui c(X) modulo X4+1:

d(X) = ′0B′X3 + ′0D′X2 + ′09′X + ′0E′.

58

Page 214: Criptografie 600

AddRoundKey(Stare, Cheie):

Consta ın aplicarea unui XOR ıntre stareacurenta si cheia de runda.

De exemplu, pentru Nb = 6, transformareaeste:

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5a1,0 a1,1 a1,2 a1,3 a1,4 a1,5a2,0 a2,1 a2,2 a2,3 a2,4 a2,5a3,0 a3,1 a3,2 a3,3 a3,4 a3,5

k0,0 k0,1 k0,2 k0,3 k0,4 k0,5k1,0 k1,1 k1,2 k1,3 k1,4 k1,5k2,0 k2,1 k2,2 k2,3 k2,4 k2,5k3,0 k3,1 k3,2 k3,3 k3,4 k3,5

=

b0,0 b0,1 b0,2 b0,3 b0,4 b0,5b1,0 b1,1 b1,2 b1,3 b1,4 b1,5b2,0 b2,1 b2,2 b2,3 b2,4 b2,5b3,0 b3,1 b3,2 b3,3 b3,4 b3,5

unde bi,j = ai,j ⊕ ki,j (0 ≤ i ≤ 3, 0 ≤ j ≤ 5).

59

Page 215: Criptografie 600

Cheia de runda are lungimea Nb si se deduce

din cheia de criptare.

Transformarea AddRoundKey si inversa ei sunt

identice.

60

Page 216: Criptografie 600

Algoritmul de criptare AES este format din:

1. O transformare AddRoundKey initiala;

2. Nr − 1 runde;

3. O runda finala.

61

Page 217: Criptografie 600

Generarea cheilor de runda

Cheile de runda se obtin din cheia de criptareprin:

1. extinderea cheii, si

2. alegerea cheii de runda.

Principiile de baza ale prelucrarii sunt:

• Numarul total al bitilor din toate cheile derunda este Nb(Nr + 1).

• Cheia de criptare este extinsa ıntr-o CheieExpandata.

• Cheia de runda se obtine luand primii Nb

octeti din Cheia Expandata, care nu au fostfolositi pentru alte chei.

62

Page 218: Criptografie 600

Extinderea cheii

Cheia expandata (notata W [Nb(Nr + 1)]) este

un tablou liniar ale carui elemente sunt cuvinte.

Primele Nk cuvinte sunt cheia de criptare; cele-

lalte cuvinte se obtin recursiv din cuvintele de-

finite anterior.

Functia de extindere a cheii depinde de val-

oarea lui Nk; exista o versiune pentru Nk ≤ 6

si o alta pentru Nk > 6.

63

Page 219: Criptografie 600

Pentru Nk ≤ 6:

KeyExpansion(byte Key[4 ∗Nk] word W [Nb ∗ (Nr + 1)])

{

for (i = 0; i < Nk; i + +)

W [i] = (Key[4 ∗ i], Key[4 ∗ i + 1], Key[4 ∗ i + 2], Key[4 ∗i + 3]);

for (i = Nk; i < Nb ∗ (Nr + 1); i + +)

{

temp = W [i− 1];

if (i % Nk == 0)

temp = SubByte(RotByte(temp)) ˆ Rcon(i/Nk);

W [i] = W [i−Nk] ˆ temp;

}

}

64

Page 220: Criptografie 600

SubByte(W ) este o functie care ıntoarce uncuvant ın care fiecare octet este rezultatul apli-carii S - boxului definit de ByteSub fiecaruioctet din cuvantul de intrare.

RotByte(w) ıntoarce un cuvant ın care octetiisunt rotiti ciclic la stanga:

(a, b, c, d) −→ (b, c, d, a).

Ideea algoritmului:

Primele Nk cuvinte sunt completate cu cheiade criptare.

Apoi W [i] = W [i− 1]⊕W [i−Nk].

Pentru cuvintele aflate pe pozitii multipli deNk, ınainte de aceasta operatie, lui W [i − 1]i se aplica o permutare ciclica spre stanga aoctetilor, urmata de aplicarea unui S - box.

In final se face ınca un XOR ıntre rezultat si oconstanta de runda.

65

Page 221: Criptografie 600

Pentru Nk > 6:

KeyExpansion(byte Key[4 ∗Nk] word W [Nb ∗ (Nr + 1)])

{

for (i = 0; i < Nk; i + +)

W [i] = (Key[4 ∗ i], Key[4 ∗ i+1], Key[4 ∗ i+2], Key[4 ∗i + 3]);

for (i = Nk; i < Nb ∗ (Nr + 1); i + +)

{

temp = W [i− 1];

if (i % Nk == 0)

temp = SubByte(RotByte(temp)) ˆ Rcon(i/Nk);

else if (i % Nk == 4)

temp = SubByte(temp)

W [i] = W [i−Nk] ˆ temp;

}

}

66

Page 222: Criptografie 600

Apare conditia suplimentara: cand i − 4 este

multiplu de Nk, procedura SubByte este apli-

cata lui W [i− 1] ınainte de XOR.

Constantele de runda:

Rcon[i] = (RC[i], ′00′, ′00′, ′00′)

unde RC[i] = αi−1 (α este un generator al lui

GF (28))

67

Page 223: Criptografie 600

Selectarea cheii de runda

Cheia rundei i este formata din secventa de

cuvinte

W [Nb ∗ i] . . . W [Nb ∗ (i + 1)− 1]

Cheia poate fi calculata treptat, pe masura ce

se ajunge la runda respectiva.

68

Page 224: Criptografie 600

Atacuri asupra sistemelor decriptare bloc

1

Page 225: Criptografie 600

Compromisul spatiu - timp

Este un tip de atac cu text clar ales, bazat

pe un compromis ıntre complexitatea spatiu

si complexitatea timp a atacurilor prin forta

bruta.

Oscar dispune de cel putin o pereche (α, β) cu

β = eK(α).

Scop: determinarea cheii K.

Referintele se fac (implicit) la sistemul DES:

textele clare si cele criptate sunt de 64 biti, iar

cheia are 56 biti.

2

Page 226: Criptografie 600

i. O cautare exhaustiva consta ın a ıncerca

toate cele 256 chei posibile.

Operatia nu necesita memorie, dar sunt nece-

sare ın medie 255 chei pentru a o gasi pe cea

buna.

ii. Fiind dat un text clar α, Oscar poate forma

anterior (ın faza de precalcul) o tabela cu 256

perechi (βk, K), ordonata dupa βK = eK(α).

Dupa ce Oscar obtine mesajul β (criptat din

textul clar α), el va cauta ın tabela si va afla

imediat cheia K.

Astfel, aflarea cheii va necesita un timp de cal-

cul neglijabil (complexitate logaritmica), dar

un spatiu de memorie gigantic si un timp de

precalcul important.

3

Page 227: Criptografie 600

Avantajul variantei (ii) apare cand este nece-

sara cautarea mai multor chei (deoarece tabela

precalculata a fost construita o singura data).

Compromisul spatiu - timp permite obtinerea

unui timp de calcul (precalculul nu se include)

inferior celui unei cautari exhaustive, cu un

spatiu de memorie inferior celui necesar reti-

nerii tuturor cheilor.

4

Page 228: Criptografie 600

Algoritmul foloseste o functie de reducere R,

care reduce o secventa de 64 biti la una de 56

biti (de exemplu, R poate sterge pur si simplu

8 biti din secventa initiala).

Fie α un text clar de 64 biti; se defineste

g(K0) = R(eK0(α))

pentru orice secventa K0 de 56 biti (rezultatul

g(K0) este de asemenea de lungime 56).

Algoritmul mai foloseste doi parametri ıntregi

pozitivi m, t.

5

Page 229: Criptografie 600

In faza de precalcul, Oscar defineste m

secvente arbitrare de 56 biti fiecare,

notate X(i,0), 1 ≤ i ≤ m.

Apoi, folosind relatia de recurenta

X(i, j) = g(X(i, j − 1)), (1 ≤ i ≤ m, 1 ≤ j ≤ t)

Oscar determina valorile X(i, j), 1 ≤ j ≤ t,

formand cu ele o matrice Xm×t.

Din aceste valori, Oscar pastreaza ıntr-o tabela

T numai 2m perechi

(X(i,0), X(i, t)), (1 ≤ i ≤ m)

(sunt memorate numai prima si ultima coloana

a matricii X).

6

Page 230: Criptografie 600

In momentul atacului, Oscar obtine textul crip-

tat β al textului clar α ales de el.

El va cauta cheia K ın cele t coloane ale ma-

tricii X, consultand tabela T .

Presupunem K = X(i, t−j) pentru j (1 ≤ j ≤ t)

dat (K este ın una din cele t coloane ale lui X).

Vom avea gj(K) = X(i, t), si

gj(K) = gj−1(g(K)) = gj−1(R(eK(α))) =

= gj−1(R(β)).

7

Page 231: Criptografie 600

Se calculeaza sirul βj (1 ≤ j ≤ t) definit prin

relatia de recurenta

βj =

{R(β) daca j = 1g(βj−1) daca 2 ≤ j ≤ t

Daca K = X(i, t− j), vom avea βj = X(i, t).

8

Page 232: Criptografie 600

Reciproca nu este adevarata: nu este suficient

ca βj = X(i, t) pentru a avea K = X(i, t − j),

deoarece functia de reducere R nu este injec-

tiva (R reduce un spatiu de 264 valori ın unul

de 256 valori; deci fiecare valoare provine ın

general din 28 = 256 elemente).

Trebuie verificata egalitatea

β = eX(i,t−j)(α)

pentru a decide daca X(i, t−j) este ıntr-adevar

cheia.

Valoarea X(i, t− j) nu este disponibila ın

memorie, dar ea se poate recalcula ın t−j pasi,

plecand de la X(i,0).

9

Page 233: Criptografie 600

Oscar aplica algoritmul:

1. β1 ← R(β)

2. for j ←− 1 to t do

2.1. if ∃ i cu βj = X(i, t) then

2.1.1. X(i, t− j) = gt−j(X(i,0))

2.1.2. if β = eX(i,t−j)(α) then K ← X(i, t−j), STOP

2.2. βj+1 ← g(βj)

10

Page 234: Criptografie 600

Daca mt2 ≈ N = 256, atunci probabilitatea

aflarii cheii K ın cele t coloane ale matricii X

este de circa 0,8mt/N .

Coeficientul 0,8 provine din faptul ca valorile

X(i, t) pot sa nu fie distincte.

O sugestie este de a alege m ≈ t ≈ N1/3 si de

a construi N1/3 tabele, fiecare cu alta functie

de reducere R.

Astfel, spatiul de memorie necesar este de 112·N2/3 biti (trebuie pastrati 2N2/3 valori de 56

biti).

Timpul de precalcul este liniar O(N).

11

Page 235: Criptografie 600

Timpul de calcul al atacului este mai dificil de

evaluat.

Pasul 2.1 poate fi implementat ın cel mai rau

caz ıntr-un timp O(log m), utilizand arbori bi-

nari de cautare.

Daca acest pas esueaza (deci nu se gaseste nici

o valoare), timpul de calcul este O(N2/3).

Ceilalti pasi care urmeaza cresc acest timp doar

cu un factor constant.

12

Page 236: Criptografie 600

Atacul meet-in-the-middle

Atac cu text clar ales, dezvoltat ın 1981 de

Merkle si Hellman ca raspuns la ideea unei

duble criptari cu doua chei diferite, conform

schemei

e e- - -? ?

m x y

K1 K2

13

Page 237: Criptografie 600

Lema 1. Pentru un sistem de criptare bloc, odubla criptare poate fi atacata folosind O(2n)operatii si O(2n) spatiu de memorie, unde neste lungimea cheii.

Fie (α, β) o pereche (text clar, text criptat)obtinuta pe baza schemei de mai sus.

1. Pentru fiecare din cele 2n chei posibile secalculeaza xi = eKi

(α);

2. Se stocheaza (xi, Ki) sortate dupa xi.

3. Pentru fiecare din cele 2n chei posibile:

3.1 Se calculeaza xj = dKj(β);

3.2. In lista creata se cauta o pereche(xi, Ki) cu xi = xj;

4. O pereche de chei posibile este (Ki, Kj);

Algoritmul se reia cu alte perechi (α, β), panace perechea de chei folosite este determinataın mod unic.

14

Page 238: Criptografie 600

Exemplul 1. Un atac direct asupra unei duble

criptari cu DES ar necesita un timp de ordin

2112 si un spatiu neglijabil.

Daca se foloseste un atac meet-in-the-middle,

timpul va fi 256 iar spatiul 256.

Strategii complementare de genul compromi-

sului spatiu - timp pot duce la variante de

genul: 2p spatiu, 2q timp, unde p + q = 112.

15

Page 239: Criptografie 600

Criptanaliza diferentiala

A fost introdusa de Biham si Shamir ın 1991.

Cu toate ca nu da o modalitate practica de

spargere a functiei DES ın 16 tururi, ea asigura

atacuri eficace pentru variantele de DES cu un

numar redus de runde.

De exemplu, un DES cu 8 runde poate fi spart

ın cateva minute cu un PC obisnuit.

Ulterior, criptanaliza diferentiala a fost extinsa

ca metoda standard de atac pentru toate sis-

temele de criptare bloc.

16

Page 240: Criptografie 600

Criptanaliza diferentiala exploateaza faptul caunele diferente dintre texte clare pot genera –cu probabilitate semnificativa – diferente fixateıntre mesajele criptate corespunzatoare.

Fie un sistem de criptare pe blocuri de n biti,cu intrarea (textul clar) α = (a1, a2, . . . , an) siiesirea (textul criptat) β = (b1, b2, . . . , bn).

Fie α′ si α′′ doua blocuri de intrare si β′, β′′

blocurile de iesire corespunzatoare.

Diferenta dintre bitii de intrare este data de

∆α = α′ ⊕ α′′ = (∆a1,∆a2, . . .∆an)

unde ∆ai = ai′ ⊕ ai

′′, iar ai′ si ai

′′ reprezinta ali-lea bit din α′, respectiv α′′.

Similar,

∆β = β′ ⊕ β′′ = (∆b1,∆b2, . . . ,∆bn)

este diferenta dintre mesajele de iesire (unde∆bi = bi

′ ⊕ bi′′).

17

Page 241: Criptografie 600

Intr-un sistem de criptare ideal, probabilitatea

ca, fiind data o diferenta de intrare ∆α, sa

apara o anumita diferenta de iesire ∆β, este

1/2n (n este marimea blocului de criptare).

Criptanaliza diferentiala exploateaza situatia

cand pentru o anumita diferenta de intrare ∆α,

o diferenta de iesire ∆β apare cu o probabili-

tate pD semnificativ mai mare decat 1/2n.

Perechea (∆α,∆β) pentru care exista o astfel

de situatie se numeste diferentiala.

In esenta, criptanaliza diferentiala este un atac

cu text clar ales: Oscar alege perechi de intrari

(α′, α′′), care verifica o anumita diferenta ∆α,

stiind ca pentru aceasta valoare ∆α, exista o

diferentiala (∆α,∆β).

18

Page 242: Criptografie 600

Cel mai important pas consta ın construirea

unei diferentiale (∆α,∆β), folosind bitii textu-

lui clar pentru α, si intrarea ın ultima runda a

sistemului de criptare pentru β.

Aceasta se poate realiza examinand diverse

diferentiale caracteristice.

O diferentiala caracteristica este o secventa

(∆α1,∆α2, . . . ,∆αn) unde (∆αi,∆αi+1) este

o diferentiala a rundei i din sistemul de criptare

(deci α1 = α, αn = β).

Pe baza unei diferentiale caracteristice putem

exploata informatia care intra ın ultima runda a

sistemului, pentru a afla o parte din bitii cheii.

19

Page 243: Criptografie 600

Pentru construirea de diferentiale caracteris-

tice se exploateaza unele particularitati ale S-

boxurilor.

Practic se considera toate diferentele de in-

trare si iesire din fiecare S-box, determinand

perechile (∆α,∆β) cu probabilitati mari.

Combinand aceste perechi de la o runda la alta,

astfel ca diferentele dintre doua iesiri dintr-o

runda sa coincida cu diferentele dintre doua

intrari ın runda urmatoare, se poate determina

o diferentiala ıntre doua texte clare si intrarile

a doua texte ın ultima runda.

In final, bitii ultimei sub-chei vor dispare (sunt

folositi ın ambele texte si, prin XOR-are, se

anuleaza reciproc).

20

Page 244: Criptografie 600

Analiza componentelor unui sistem de criptare

Fie un 4× 4 S-box, cu intrarea

α = (a1, a2, a3, a4)

si iesirea

β = (b1, b2, b3, b4)

4× 4 S-box

? ?? ?

? ? ? ?

a1 a2 a3 a4

b1 b2 b3 b4

Toate perechile de diferente (∆α,∆β) ale unui

astfel de S - box vor fi examinate.

Se fixeaza o diferenta ∆α si se calculeaza san-

sele de aparitie pentru toate diferentele de iesiri

∆β, peste multimea perechilor de intrare

(α′, α′′) cu α′ ⊕ α′′ = ∆α.

21

Page 245: Criptografie 600

Ordinea perechilor nu este relevanta; deci pen-

tru un 4× 4 S-box sunt necesare doar cele 16

valori posibile ale unei intrari α′; a doua intrare

α′′ va fi calculata cu formula α′′ = α′ ⊕∆α.

Prezentarea foloseste prima linie a primului S-

box din DES:

Intrare 0 1 2 3 4 5 6 7 8 9 A B C D E FIesire E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7

Fiecare pereche (intrare, iesire) poate fi con-

siderata ca un 4 × 4 S-box cu intrari si iesiri

pe 4 biti.

22

Page 246: Criptografie 600

Putem calcula diferenta de iesire ∆β pentru

orice pereche de intrare (α′, α′′ = α′ ⊕∆α).

Tabela 1 prezinta valorile (binare) pentru α, β,

si valorile ∆β pentru perechile de intrare

(α, α⊕∆α), unde ∆α are valorile

1011 (hex B), 1000 (hex 8) si 0100 (hex 4).

α β ∆α = 1011 ∆α = 1000 ∆α = 01000000 1110 0010 1101 11000001 0100 0010 1110 10110010 1101 0111 0101 01100011 0001 0010 1011 10010100 0010 0101 0111 11000101 1111 1111 0110 10110110 1011 0010 1011 01100111 1000 1101 1111 10011000 0011 0010 1101 01101001 1010 0111 1110 00111010 0110 0010 0101 01101011 1100 0010 1011 10111100 0101 1101 0111 01101101 1001 0010 0110 00111110 0000 1111 1011 01101111 0111 0101 1111 1011

Tabela 1. Perechi de diferente ıntr-un S - box

23

Page 247: Criptografie 600

De exemplu, pentru α = 0000 si ∆α = 1011

avem α′ = α⊕∆α = 1011.

Iesirea (din S - box) pentru intrarea α′ este

β′ = 1100 (hex C), deci

∆β = β ⊕ β′ = 1110⊕ 1100 = 0010,

valoare care apare ın tabela pe coloana a treia.

In Tabela 1: numarul aparitiilor lui ∆β = 0010

pentru ∆α = 1011 (coloana 3) este 8 din 16

valori posibile (deci probabilitate 8/16).

Similar, numarul de aparitii ∆β = 1011 pentru

∆α = 1000 este 4 (din 16), iar numarul de

aparitii ale lui ∆β = 1010 pentru ∆α = 0100

este 0 (din 16).

24

Page 248: Criptografie 600

Se aduna toate datele unui S - box ıntr-o tabelade distributie a diferentelor, ın care liniile repre-zinta valorile ∆α, iar coloanele – valorile ∆β

(toate ın hexazecimal).

Tabela de distributie a diferentelor pentru S-boxul luat ca exemplu, este:

0 1 2 3 4 5 6 7 8 9 A B C D E F0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 2 0 0 0 2 0 2 4 0 4 2 0 02 0 0 0 2 0 6 2 2 0 2 0 0 0 0 2 03 0 0 2 0 2 0 0 0 0 4 2 0 2 0 0 44 0 0 0 2 0 0 6 0 0 2 0 4 2 0 0 05 0 4 0 0 0 2 2 0 0 0 4 0 2 0 0 26 0 0 0 4 0 4 0 0 0 0 0 0 2 2 2 27 0 0 2 2 2 0 2 0 0 2 2 0 0 0 0 48 0 0 0 0 0 0 2 2 0 0 0 4 0 4 2 29 0 2 0 0 2 0 0 4 2 0 2 2 2 0 0 0A 0 2 2 0 0 0 0 0 6 0 0 2 0 0 4 0B 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2C 0 2 0 0 2 2 2 0 0 0 0 2 0 6 0 0D 0 4 0 0 0 0 0 4 2 0 2 0 2 0 2 0E 0 0 2 4 2 0 0 0 6 0 0 0 0 0 2 0F 0 2 0 0 6 0 0 0 0 4 0 2 0 0 2 0

Tabela 2. Tabela de distributie a diferentelor

Fiecare element al tabelei reprezinta numarulde aparitii ale diferentei de iesire ∆β, fiind datadiferenta de intrare ∆α.

25

Page 249: Criptografie 600

1. Inafara de cazul (∆α = 0, ∆β = 0), cea

mai mare valoare din tabela este 8; cores-

punde lui ∆α = B si ∆β = 2.

Deci, pentru o pereche de intrari arbitrare

cu ∆α = B, probabilitatea ca ∆β = 2 este

8/16 = 1/2.

2. Cea mai mica valoare din tabela este 0;

deci probabilitatea de aparitie a valorii ∆β

pentru ∆α corespunzator, este 0.

3. Suma elementelor pe fiecare linie este

2n = 16; similar, suma pe fiecare coloana

este tot 2n = 16.

4. Toate valorile din tabel sunt numere po-

zitive pare, deoarece perechile de valori de

intrare/iesire (α′, α′′) si (α′′, α′) au aceeasi

diferenta ∆α.

26

Page 250: Criptografie 600

5 Pentru un S - box injectiv, o diferenta de

intrare ∆α = 0 va duce la o diferenta de

iesire ∆β = 0.

Ca o consecinta, prima linie si prima coloa-

na vor fi 0, cu exceptia intersectiei lor, unde

va fi valoarea 2n = 16.

27

Page 251: Criptografie 600

Daca s-ar putea construi un S - box ideal, care

sa nu ofere nici o informatie de tip diferential

ıntre intrari si iesiri, atunci toate valorile din

tabela sa de distributie a diferentelor vor fi

egale cu 1, iar probabilitatea de aparitie a unei

diferente ∆β atunci cand diferenta de intrare

este ∆α, va fi 1/2n = 1/16.

Totusi pe baza proprietatilor enuntate mai sus,

un astfel de S - box ideal nu este posibil.

28

Page 252: Criptografie 600

Retea substitutie - permutare

O retea substitutie - permutare (Substitution

Permutation Network – SPN) este un sistem

de criptare bloc, format din mai multe runde,

fiecare runda continand o substitutie si o per-

mutare.

Cheia este expandata ın mod similar sistemelor

uzuale si fiecare cheie de runda va fi XOR-

ata cu mesajul de intrare la ınceputul fiecarei

runde.

Un SPN pastreaza proprietatile generale ale

sistemelor de criptare uzuale (inclusiv DES si

AES).

29

Page 253: Criptografie 600

Vom utiliza un SPN care cripteaza un text clar

de 16 biti ıntr-un mesaj de 16 biti.

Cheia are tot 16 biti si este expandata ın 5

sub-chei de runda, de cate 16 biti fiecare.

La fiecare runda, cei 16 biti de intrare sunt

XOR - ati cu cheia de runda, apoi sunt separati

ın patru blocuri de cate 4 biti, iar fiecare bloc

trece prin cate un S - box.

La sfarsitul rundei, cei 16 biti sunt permutati.

Folosim acelasi S - box pentru toate blocurile si

toate rundele: prima linie din S1 - boxul DES.

30

Page 254: Criptografie 600

Permutarea utilizata este aceiasi pentru toate

rundele:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Tabela 3

31

Page 255: Criptografie 600

Structura unui SPN :

XOR cu sub-cheia K5

S41 S44S42 S43

XOR cu sub-cheia K4

S31 S34S32 S33

XOR cu sub-cheia K3

S21 S24S22 S23

XOR cu sub-cheia K2

S11 S14S12 S13

XOR cu sub-cheia K1

������

��

runda 1

runda 2

runda 3

runda 4

m1 m16. . . . . .text clar

y1 . . . y16. . .text criptat

32

Page 256: Criptografie 600

Diferentiala caracteristica ıntr-un SPN

O modalitate de atac prin criptanaliza diferen-

tiala asupra unui SPN .

Scop: aflarea unui set de biti din sub-cheia

folosita ın ultima runda.

Notatie:

- Ui intrarea ın S- boxurile din runda i,

- Vi – iesirea din S - boxuri ın runda i.

33

Page 257: Criptografie 600

Doua texte clare, cu diferenta

∆U1 = [0000 1011 0000 0000]

Deci singurul S - box activ ın prima runda este

S12 (celelalte S - boxuri sunt inactive: intrarea

este 0, deci si iesirea va fi tot 0).

Tabela 1: diferenta de iesire

∆V1 = [0000 0010 0000 0000]

Altfel spus,

S12 : ∆α = 1116 = 1011 =⇒∆β = 216 = 0010

cu probabilitate 8/16 = 1/2.

34

Page 258: Criptografie 600

Mesajul de intrare ın S - boxurile rundei a doua:

∆U2 = [0000 0000 0100 0000]

cu probabilitate 1/2.

In a doua runda, singurul S - box activ este

S23.

Vom avea perechea de diferente

S23 : ∆α = 416 = 0100 =⇒∆β = 616 = 0110

cu probabilitate 6/16 = 3/8.

Iesirea este deci

∆V2 = [0000 0000 0110 0000]

iar permutarea de la sfarsitul rundei a doua da

∆U3 = [0000 0010 0010 0000]

cu probabilitate 3/8.

35

Page 259: Criptografie 600

In a treia runda sunt active doua S - boxuri:

S32 si S33:

S32 : ∆α = 216 = 0010 =⇒∆β = 516 = 0101

cu probabilitate 6/16 = 3/8, si

S33 : ∆α = 216 = 0010 =⇒∆β = 516 = 0101

cu probabilitate 6/16 = 3/8.

Deci, iesirea din S - boxurile din runda a treia

este

∆V3 = [0000 0101 0101 0000]

iar intrarea ın runda a patra (dupa efectuarea

permutarii) este

∆U4 = [0000 0110 0000 0110]

36

Page 260: Criptografie 600

Deci

∆U1 = [0000 1011 0000 0000] =⇒∆V3 = [0000 0101 0101 0000]

si

∆V3 = [0000 0101 0101 0000] =⇒∆U4 = [0000 0110 0000 0110]

Rezulta

∆U1 = [0000 1011 0000 0000] =⇒∆U4 = [0000 0110 0000 0110]

cu probabilitate 12 ·

38 ·

38 ·

38 = 27

1024.

37

Page 261: Criptografie 600

Extragerea bitilor din cheie

Dupa ce s-a obtinut diferentiala caracteristica

a rundelor, se poate construi un atac din care

sa rezulte o parte din bitii care formeaza cheia

de criptare.

Intr-un sistem de criptare bloc cu N runde,

vom ataca runda N − 1 .

Astfel, ın cazul retelei SPN , vom putea extrage

biti din sub-cheia K5 atacand runda 4.

Pentru o decriptare a textului obtinut dupa ul-

tima runda, trebuie sa mergem ın sens invers:

realizam un XOR ıntre textul criptat si sub-

cheia ultimei runde – care este influentata de

diferentialele nenule – iar apoi trecem datele ın

sens invers prin S-boxuri.

Un XOR ıntre textul criptat si toate subcheile

posibile; apoi se aplica inversele S-boxurilor.

38

Page 262: Criptografie 600

Cautarea cheii poate fi redusa daca se iau nu-

mai perechile ”bune” (perechile pentru care se

obtin diferentiale caracteristice).

Exemplu de pereche ”buna”: cea anterioara,

cu U41 = U43 = 0000, care a dus la diferentia-

lele nenule U42 si U44 (Uij reprezinta intrarea

ın S - boxul j din runda i).

Decriptarea este obtinuta pentru toate pere-

chile de mesaje criptate care corespund pere-

chilor de texte clare cu diferenta de intrare

fixata ∆α.

39

Page 263: Criptografie 600

O reprezentare a modalitatii de atac

pentru diferentiala caracteristica detaliata

anterior:

S41 S44S42 S43

S31 S34S32 S33

S21 S24S22 S23

S11 S14S12 S13

∆α = [0000 1011 0000 0000]

K5,5, . . . , K5,8 K5,13, . . . , K5,16

∆U4,5,...,∆U4,8 ∆U4,13,...∆U4,16

���������

XXXXXXXXXXXXXXXXX

? ? ?

����������

aaaaaaaa

?

40

Page 264: Criptografie 600

Pentru fiecare sub-cheie posibila, ai carei bitisunt influentati de diferentele nenule din dife-rentiale, definim cate un counter.

Acesti counteri sunt incrementati atunci candintrarea ın ultima runda coincide cu valoareaprevazuta de diferentiala caracteristica.

In final, sub-cheia cu valoare maxima a coun-terului atasat va fi considerata cea corecta;restul bitilor din sub-cheie vor fi gasiti cu ocautare prin forta bruta.

In exemplul anterior, diferentiala caracteristicaa influentat S - boxurile S42 si S44 din ul-tima runda; deci – pentru orice pereche demesaje criptate – ıncercam toate cele 256 vari-ante pentru [K5,5 . . . K5,8, K5,13 . . . K5,16], si –de cate ori diferenta la intrarea ın ultima rundadeterminata de decriptare este

∆U4 = [0000 0110 0000 0110]

va fi incrementat counterul asociat.41

Page 265: Criptografie 600

Criptanaliza diferentiala pentru DES

Intr-un astfel de atac se ignora permutarea

initiala IP si inversa sa (nu joaca nici un rol

ın criptanaliza).

Consideram un DES restrans pe n (n ≤ 16)

runde.

Textul clar este L0R0, iar cel criptat – LnRn

(se ignora si inversarea finala dintre Ln si Rn).

Fie textele clare L0R0, L∗0R∗0 si textele criptate

corespunzatoare LnRn respectiv L∗nR∗n.

Diferentele sunt

L0′R0′ = L0R0⊕L∗0R∗0 si Ln

′Rn′ = LnRn⊕L∗nR∗n.

42

Page 266: Criptografie 600

Definitia 1. Fie Sj (1 ≤ j ≤ 8) un S - box din

sistemul de criptare DES.

Pentru orice pereche (Bj, B∗j ) de siruri de 6

biti, se defineste XOR-ul de intrare pentru Sj

prin Bj′ = Bj ⊕ B∗j , iar XOR-ul de iesire prin

Sj(Bj)⊕ Sj(B∗j ).

Un XOR de intrare este o secventa de 6 biti,

iar un XOR de iesire este o secventa de 4 biti.

Definitia 2. Pentru orice Bj′ ∈ Z6

2 se noteaza

∆(Bj′) multimea perechilor (Bj, B

∗j ) care prin

XOR dau B′j.

• O multime ∆(Bj′) contine 26 = 64 ele-

mente;

• ∆(Bj′) = {(Bj, Bj ⊕Bj

′)| Bj ∈ Z62}.

43

Page 267: Criptografie 600

Pentru fiecare pereche din ∆(Bj′) se calculeaza

XOR-ul de iesire al lui Sj si se construieste o

tabela de distributii ale valorilor obtinute (sunt

64 iesiri pe un spatiu de 24 = 16 valori posi-

bile).

Exemplul 2. Sa consideram primul S - box S1

si XOR-ul de intrare 110100. Vom avea:

∆(110100) = {(000000,110100), (000001,110101), . . .

. . . , (111111,001011)}.

Pentru fiecare pereche din ∆(110100) se de-

termina XOR-ul de iesire al lui S1.

De exemplu

S1(000000) = E16 = 1110,

S1(110100) = 916 = 1001

deci XOR-ul de iesire S1 al perechii

(000000,110100) este 0111.

44

Page 268: Criptografie 600

Pentru toate cele 64 perechi din ∆(110100)

se obtine distributia urmatoare a XOR-urilor

de iesire pentru S1:

0000 0001 0010 0011 0100 0101 0110 01110 8 16 6 2 0 0 12

1000 1001 1010 1011 1100 1101 1110 11116 0 0 0 0 8 0 6

In exemplu au aparut numai 8 din cele 16 valori

de iesire posibile.

In general, daca se fixeaza un S - box Sj si un

XOR de intrare diferit de 000000, se constata

ca vor apare aproximativ 75−80 % din valorile

posibile de iesire.

45

Page 269: Criptografie 600

Definitia 3. Pentru 1 ≤ j ≤ 8 si secventeleBj′, Cj

′ de 6 respectiv 4 biti, definim

INj(Bj′, Cj

′) = {Bj ∈ Z62 | Sj(Bj)⊕ Sj(Bj ⊕Bj

′) = Cj′},

Nj(Bj′, Cj

′) = card(INj(Bj′, Cj

′)).

Distributia data ın Exemplul anterior da valorile

N1(110100, C1′), C1

′ ∈ Z42.

XOR de iesire intrari posibile00000001 000011, 001111, 011110, 011111, 101010, 101011,

110111, 1110110010 000100, 000101, 001110, 010001, 010010, 010100,

011010, 011011, 100000, 100101, 010110, 101110,101111, 110000, 110001, 111010

0011 000001, 000010, 010101, 100001, 110101, 1101100100 010011, 100111010101100111 000000, 001000, 001101, 010111, 011000, 011101,

100011, 101001 101100, 110100, 111001, 1111001000 001001, 001100, 011001, 101101, 111000, 11110110011010101111001101 000110, 010000, 010110, 011100, 100010, 100100,

101000, 11001011101111 000111, 001010, 001011, 110011, 111110, 111111

Tabela 4: Distributia valorilor intrare/iesire pentru S1

46

Page 270: Criptografie 600

Pentru fiecare din cele 8 S - boxuri exista 64XOR-uri de intrare posibile; deci ın total vorfi 512 date de distribuit, lucru usor de realizatcu un calculator.

Intrarea ıntr-un S - box la runda i esteB = E ⊕ J,

unde E = E(Ri−1) este rezultatul expandariilui Ri−1, iar J = Ki este un subsir reordonat alcheii K.

XOR-ul de intrare (al celor 8 S - boxuri) estedeci

B ⊕B∗ = (E ⊕ J)⊕ (E∗ ⊕ J) = E ⊕ E∗.

Detaliat pe grupuri de cate 6 biti:

B = B1B2B3B4B5B6B7B8,

E = E1E2E3E4E5E6E7E8,

J = J1J2J3J4J5J6J7J8

In mod similar se scriu B∗ si E∗.47

Page 271: Criptografie 600

Sa presupunem ca se stiu valorile Ej si E∗j pen-

tru un j (1 ≤ j ≤ 8) dat, precum si valoarea

XOR de iesire Cj′ = Sj(Bj)⊕ Sj(B

∗j ) a lui Sj.

Vom avea

Ej ⊕ Jj ∈ INj(Ej′, Cj

′)

unde Ej′ = Ej ⊕ E∗j .

Se defineste multimea testj:

testj(Ej, E∗j , Cj

′) = {Bj⊕Ej| Bj ∈ INj(Ej′, Cj

′)}

(s-au luat toate XOR-urile lui Ej cu elemente

din INj(Ej′, Cj

′)).

48

Page 272: Criptografie 600

Teorema 1. Daca Ej, E∗j sunt subsecvente

construite pentru intrarea ın S - boxul Sj, iarCj′ este XOR-ul de iesire al lui Sj, atunci bitii

sub-cheii Jj apar ın testj(Ej, E∗j , Cj

′).

Exista exact Nj(Ej′, Cj

′) secvente de 6 biti ıntestj(Ej, E

∗j , Cj

′); valoarea corecta Jj este unadin acestea.

Exemplul 3. Sa consideramE1 = 000001, E∗1 = 110101, C1

′ = 1101.

Deoarece

N1(110100,1101) = {000110,010000,010110,011100,100010,

101000,110010}

are 8 elemente, exista 8 secvente posibile pen-tru J1, cumulate ıntest1(000001,110101,1101) = {000111,010001,010111,011101,

100011,100101,101001,110011}.

Daca se ia un alt triplet (E1, E∗1, C1′), vom

obtine alta multime test1 cu valori pentru J1,deci valoarea corecta se va gasi ın intersectialor.

49

Page 273: Criptografie 600

Atacul unui DES definit pe trei runde

Incepem cu o pereche de texte clare L0R0 si

L∗0R∗0, criptate ın L3R3 respectiv L∗3R∗3.

Vom avea

R3 = L2 ⊕ f(R2, K3) = R1 ⊕ f(R2, K3) =

= L0 ⊕ f(R0, K1)⊕ f(R2, K3).

Constructia pentru R∗3 este similara. Deci

R3′ = L0

′⊕f(R0, K1)⊕f(R∗0, K1)⊕f(R2, K3)⊕f(R∗2, K3).

50

Page 274: Criptografie 600

Se alege R0 = R∗0, deci R0′ = 00 . . .0.

Atunci f(R0, K1) = f(R∗0, K1) si deci

R3′ = L0

′ ⊕ f(R2, K3)⊕ f(R∗2, K3).

R3′ se poate calcula pe baza textelor criptate,

iar L0′ – pe baza textelor clare; deci se poate

determina f(R2, K3)⊕ f(R∗2, K3) = R3′ ⊕ L0

′.

Avem f(R2, K3) = P (C), f(R∗2, K3) = P (C∗)unde C respectiv C∗ sunt iesirile din cele 8 S -

boxuri (P este o permutare fixata din DES).

Deci P (C)⊕ P (C∗) = R3′ ⊕ L0, de unde

C′ = C ⊕ C∗ = P−1(R3′ ⊕ L0

′).

Acesta este XOR-ul de iesire din cele opt S -

boxuri, dupa a treia runda.

51

Page 275: Criptografie 600

R2 = L3 si R∗2 = L∗3 sunt cunoscute (com-

ponente ale textelor criptate); deci se poate

calcula

E = E(L3), E∗ = E(L∗3)

folosind functia de expansiune E.

Aceste valori sunt intrarile ın S - boxuri la

runda a treia.

Se cunosc deci E, E∗, C′ la a treia runda si se

pot construi multimile test1, test2, . . . , test8 de

valori posibile pentru J1, J2, . . . , J8.

52

Page 276: Criptografie 600

Un algoritm pentru aceasta metoda este:

Intrare: L0R0, L∗0R∗0, L3R3, L∗3R∗3 cu

R0 = R∗0.

1. C′ ← P−1(R3′ ⊕ L0

′)

2. E ← E(L3), E∗ ← E(L∗3)

3. for j := 1 to 8 do testj(Ej, E∗j , Cj).

Atacul foloseste mai multe triplete E, E∗, C′.

Se utilizeaza opt tabele de valori si se deter-

mina astfel cei 48 biti ai subcheii K3 de la a

treia runda.

Cheia de 56 biti se calculeaza apoi printr-o

cautare exhaustiva a celor 28 = 256 posibilitati

pentru cei 8 biti ramasi necunoscuti.

53

Page 277: Criptografie 600

Criptanaliza liniara

Definita de Mitsuru Matsui (1992).

Prima oara s-a aplicat asupra sistemului de

criptare FEAL.

Ulterior, Matsui a publicat un atac similar

asupra sistemului DES, probabil prima

criptanaliza experimentala prezentata public

asupra unui sistem de criptare bloc.

Practic, un atac asupra sistemului DES nu este

ınsa viabil, el necesitand 243 texte clare cunos-

cute.

Ulterior au fost construite diverse rafinari ale

atacurilor prin criptanaliza liniara, folosind

aproximari liniare multiple sau aproximari lo-

cale cu expresii neliniare.

54

Page 278: Criptografie 600

Prezentare generala

Criptanaliza liniara este un atac cu text clar

ales, bazata pe o relatie liniara de aproximare

care descrie sistemul de criptare.

Plecand de la un numar suficient de mare de

perechi (text clar, text criptat) se pot obtine

informatii despre cheie, cu o probabilitate ac-

ceptabila.

Pentru ilustrare este folosita aceiasi structura

SPN de la criptanaliza difererentiala, bazata

pe prima linie din S1 - boxul DES (privita ca

un 4 × 4 S - box) si permutarea definita ın

Tabela 3.

55

Page 279: Criptografie 600

Se aproximeaza statistic functionarea unei

portiuni din sistemul de criptare printr-o

expresie liniara (bazata pe operatia XOR).

O astfel de expresie are forma

ai1 ⊕ ai2 ⊕ . . .⊕ aiu ⊕ bj1 ⊕ bj2 ⊕ . . .⊕ bjv = 0

unde ai reprezinta al i-lea bit al intrarii

α = (a1, a2, . . .), iar bj reprezinta al j-lea bit al

iesirii β = (b1, b2, . . .).

Scopul criptanalizei liniare este de a determina

astfel de expresii, avand o probabilitate de apa-

ritie cat mai diferita de 1/2.

56

Page 280: Criptografie 600

Rezistenta unui sistem de criptare la criptana-

liza liniara este cu atat mai mare cu cat astfel

de relatii sunt mai putine.

Existenta unei relatii liniare (cu probabilitate

mare sau mica) denota o slaba abilitate a sis-

temului de criptare privind difuzia datelor crip-

tate.

Daca alegem aleator valori pentru u + v biti

si le plasam ıntr-o relatie liniara, probabilitatea

ca relatia sa fie verificata este ın general 1/2.

Cu cat o astfel de probabilitate va fi mai depar-

tata de 1/2, cu atat va fi mai usor pentru

criptanalist sa atace sistemul, folosind relatia

respectiva.

57

Page 281: Criptografie 600

Daca o expresie liniara are loc cu probabilitate

pL pentru texte clare si texte criptate alese

aleator, vom nota tendinta relatiei respective

prin

εL = pL − 1/2

Cu cat magnitudinea tendintei |pL − 1/2| estemai mare, cu atat mai putine texte clare va

avea nevoie un atac ca sa reuseasca.

Remarca 1.

Daca pL = 1, atunci expresia liniara descrie

complet comportarea sistemului de criptare;

deci acesta nu va asigura nici o securitate.

Daca pL = 0, atunci ea reprezinta o relatie

afina ın sistemul de criptare, de asemenea in-

diciul unei slabiciuni catastrofice.

Cand operatia de adunare folosita este mod 2

(deci XOR), atunci o functie afina este com-

plementara unei functii liniare.

58

Page 282: Criptografie 600

La evaluarea proprietatilor neliniare ale unui S

- box, este posibil sa gasim aproximari liniare

ıntre seturi de biti de intrare si de iesire din S

- box.

Ulterior, este posibil sa concatenam astfel de

aproximari liniare ale diverselor S - boxuri,

astfel ıncat sa eliminam bitii intermediari (aflati

ın interiorul sistemului) si sa obtinem o expresie

liniara – cu tendinta semnificativa – ıntre seturi

de biti din textul clar si biti de intrare ın ultima

runda.

59

Page 283: Criptografie 600

Lema Piling-Up

Fie X1, X2 doua variabile aleatoare.

Relatia X1 ⊕ X2 = 0 este o expresie liniara,

echivalenta cu X1 = X2.

Similar, X1 ⊕ X2 = 1 este o expresie afina

echivalenta cu X1 6= X2.

Sa consideram o probabilitate definita

Pr[X1 = i] =

{p1, daca i = 01− p1 daca i = 1

si

Pr[X2 = i] =

{p2, daca i = 01− p2 daca i = 1

Daca cele doua variabile aleatoare sunt inde-pendente, atunci

Pr[X1 = i, X2 = j] =

p1p2, daca i = 0, j = 0p1(1− p2), daca i = 0, j = 1(1− p1)p2, daca i = 1, j = 0(1− p1)(1− p2), daca i = 1, j = 1

60

Page 284: Criptografie 600

Formulele pot fi simetrizate folosind variabila

tendinta:

Pr[Xi = 0] =1

2+ εi, P r[Xi = 1] =

1

2− εi

Lema 2. (Piling - up): Fie X1, X2, . . . Xn

variabile aleatoare independente si pentru

1 ≤ i1 < i2 < . . . < ik ≤ n, fie εi1,i2,...ik tendinta

variabilei aleatoare Xi1 ⊕Xi2 ⊕ . . .⊕Xik.

Atunci

εi1,i2,...ik = 2k−1k∏

j=1

εij

sau – echivalent:

Pr[X1 ⊕ . . .⊕Xk = 0] = 1/2 + 2k−1k∏

i=1

εi

61

Page 285: Criptografie 600

Corolarul 1.

1. Daca ∃j cu εij = 0 atunci εi1,i2,...,ik = 0.

2. Daca εij = ±1/2 (j = 1, . . . , k) atunci

εi1,i2,...,ik = ±1/2.

62

Page 286: Criptografie 600

Exemplul 4. Fie patru variabile aleatoare

independente X1, X2, X3, X4.

Fie Pr[X1 ⊕X2 = 0] = 1/2 + ε1,2

si Pr[X2 ⊕X3 = 0] = 1/2 + ε2,3.

Suma X1 ⊕X3 poate fi obtinuta adunand

X1 ⊕X2 cu X2 ⊕X3.

Deci

Pr[X1⊕X3 = 0] = Pr[(X1⊕X2)⊕(X2⊕X3) = 0].

Deci prin combinarea expresiilor liniare se vor

obtine expresii liniare noi.

Considerand ca variabilele aleatoare X1⊕X2 si

X2⊕X3 sunt independente, putem aplica lema

Piling - Up, pentru a determina

Pr[X1 ⊕X3 = 0] = 1/2 + 2ε1,2ε2,3

Deci ε1,3 = 2ε1,2ε2,3.

63

Page 287: Criptografie 600

Relatii de aproximare pentru S - boxuri

Folosim S - boxul 4 × 4 definit la criptanali-

za diferentiala, (a1, a2, a3, a4) reprezentarea ın

binar a intrarii si (b1, b2, b3, b4) reprezentarea

binara a iesirii din acest S - box.

Sa luam de exemplu expresia liniara

a2 ⊕ a3 ⊕ b1 ⊕ b3 ⊕ b4 = 0

sau – echivalent: a2 ⊕ a3 = b1 ⊕ b3 ⊕ b4.

Aplicand la intrare toate cele 24 = 16 valori

posibile si examinand valorile de iesire cores-

punzatoare, expresia este verificata pentru 12

din cele 16 cazuri.

Deci tendinta de probabilitate este

12/16− 1/2 = 1/4.

64

Page 288: Criptografie 600

(a1, a2, a3, a4) (b1, b2, b3, b4) a2 ⊕ a3 b1 ⊕ b3 ⊕ b4 a1 ⊕ a4 a3 ⊕ a4 b1 ⊕ b4(0,0,0,0) (1,1,1,0) 0 0 0 0 1(0,0,0,1) (0,1,0,0) 0 0 1 1 0(0,0,1,0) (1,1,0,1) 1 0 0 1 0(0,0,1,1) (0,0,0,1) 1 1 1 0 1(0,1,0,0) (0,0,1,0) 1 1 0 0 0(0,1,0,1) (1,1,1,1) 1 1 1 1 0(0,1,1, ) (1,0,1,1) 0 1 0 1 0(0,1,1,1) (1,0,0,0) 0 1 1 0 1(1,0,0,0) (0,0,1,1) 0 0 1 0 1(1,0,0,1) (1,0,1,0) 0 0 0 1 1(1,0,1,0) (0,1,1,0) 1 1 1 1 0(1,0,1,1) (1,1,0,0) 1 1 0 0 1(1,1,0,0) (0,1,0,1) 1 1 1 0 1(1,1,0,1) (1,0,0,1) 1 0 0 1 0(1,1,1,0) (0,0,0,0) 0 0 1 1 0(1,1,1,1) (0,1,1,1) 0 0 0 0 1

Tabela 5: Exemple de aproximari liniare ale unui S - box

In general se pot construi 28 = 256 expresii

liniare cu (a1, a2, a3, a4) si (b1, b2, b3, b4).

Pentru fiecare din ele se poate da o reprezenta-

re uniforma de tipul: 4⊕i=1

xi · ai

⊕ 4⊕

i=1

yi · bi

unde xi, yi ∈ {0,1}, (1 ≤ i ≤ 4) iar operatiile

folosite sunt AND (·) si XOR (⊕).

65

Page 289: Criptografie 600

Vectorii binari (x1, x2, x3, x4) – numiti sume deintrare si (y1, y2, y3, y4) (sume de iesire) vor ficodificati prin cifre hexazecimale.

Astfel, fiecare din cele 256 expresii liniare se vascrie ın mod unic ca o pereche de doua cifrehexazecimale.

a1 a2 a3 a4 b1 b2 b3 b40 0 0 0 1 1 1 00 0 0 1 0 1 0 00 0 1 0 1 1 0 10 0 1 1 0 0 0 10 1 0 0 0 0 1 00 1 0 1 1 1 1 10 1 1 0 1 0 1 10 1 1 1 1 0 0 01 0 0 0 0 0 1 11 0 0 1 1 0 1 01 0 1 0 0 1 1 01 0 1 1 1 1 0 01 1 0 0 0 1 0 11 1 0 1 1 0 0 11 1 1 0 0 0 0 01 1 1 1 0 1 1 1

66

Page 290: Criptografie 600

Exemplul 5.Expresia a1⊕a4⊕b2 va avea suma

de intrare (1,0,0,1) care este 9 ın hexazecimal,

iar suma de iesire este (0,1,0,0), care este 4

ın hexazecimal.

Deci perechea atasata variabilei este (9,4).

67

Page 291: Criptografie 600

Pentru o expresie cu suma de intrare

x = (x1, x2, x3, x4)

si suma de iesire

y = (y1, y2, y3, y4),

fie NL(x, y) numarul octetilor binari

(x1, x2, x3, x4, y1, y2, y3, y4)

cu 4⊕i=1

xi · ai

⊕ 4⊕

i=1

yi · bi

= 0

Tendinta unei astfel de expresii (alese aleator)

este

ε(x, y) =NL(x, y)− 8

16.

68

Page 292: Criptografie 600

Tabela de aproximari liniare da o enumerare

completa a tuturor tendintelor pentru S - boxul

folosit de sistemul nostru de criptare (nu s-a

efectuat si ımpartirea la 16):

0 1 2 3 4 5 6 7 8 9 A B C D E F0 +8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 −2 −2 0 0 −2 +6 +2 +2 0 0 +2 +2 0 02 0 0 −2 −2 0 0 −2 −2 0 0 +2 +2 0 0 −6 +23 0 0 0 0 0 0 0 0 +2 −6 −2 −2 +2 +2 −2 −24 0 +2 0 −2 −2 −4 −2 0 0 −2 0 +2 +2 −4 +2 05 0 −2 −2 0 −2 0 +4 +2 −2 0 −4 +2 0 −2 −2 06 0 +2 −2 +4 +2 0 0 +2 0 −2 +2 +4 −2 0 0 −27 0 −2 0 +2 +2 −4 +2 0 −2 0 +2 0 +4 +2 0 +28 0 0 0 0 0 0 0 0 −2 +2 +2 −2 +2 −2 −2 −69 0 0 −2 −2 0 0 −2 −2 −4 0 −2 +2 0 +4 +2 −2A 0 +4 −2 +2 −4 0 +2 −2 +2 +2 0 0 +2 +2 0 0B 0 +4 0 −4 +4 0 +4 0 0 0 0 0 0 0 0 0C 0 −2 +4 −2 −2 0 +2 0 +2 0 +2 +4 0 +2 0 −2D 0 +2 +2 0 −2 +4 0 +2 −4 −2 +2 0 +2 0 0 +2E 0 +2 +2 0 −2 −4 0 +2 −2 0 0 −2 −4 +2 −2 0F 0 −2 −4 −2 −2 0 +2 0 0 −2 +4 −2 −2 0 +2 0

Tabela 6: Tabela de aproximari liniare

69

Page 293: Criptografie 600

Proprietati:

• Probabilitatea ca pentru o intrare 0 sa se

obtina o anumita suma nevida de biti de

iesire este 1/2 (ıntr-un S - box bijectiv,

orice combinatie liniara de biti de iesire tre-

buie sa contina un numar egal de 0 si 1).

• Daca suma bitilor de iesire este 0, atunci

suma bitilor de intrare este 0 (o tendinta

+1/2 si o valoare +8 ın Tabela 6).

Deci prima linie din Tabela 6 este 0, cu

exceptia primului element.

Aceeasi proprietate o are si prima coloana.

• Suma elementelor pe o linie sau coloana

este ±8.

70

Page 294: Criptografie 600

Construirea aproximarilor liniare

Dupa ce au fost stabilite aproximari liniare

pentru S - boxurile unui SPN , se poate deter-

mina o aproximare liniara pentru tot sistemul

de criptare.

Aceasta se va realiza prin concatenarea

aproximarilor liniare ale S -boxurilor consecu-

tive.

Pe baza acestei relatii liniare se va putea

ataca sistemul, gasind un subset de biti din

cheia folosita ın ultima runda.

71

Page 295: Criptografie 600

Sa consideram urmatoarele aproximari liniare

pentru cutiile S12, S22, S32 si S34:

S12 : a1 ⊕ a3 ⊕ a4 = b2cu probabilitate 12/16 si tendinta +1/4;

S22 : a2 = b2 ⊕ b4cu probabilitate 4/16 si tendinta −1/4;

S32 : a2 = b2 ⊕ b4cu probabilitate 4/16 si tendinta −1/4;

S34 : a2 = b2 ⊕ b4cu probabilitate 4/16 si tendinta −1/4.

72

Page 296: Criptografie 600

- Ui(Vi) reprezinta blocul (de 16 biti) de intrare

(iesire) din S - boxuri la runda i,

- Ui,j(Vi,j) este al j-lea bit din blocul Ui(Vi)

(bitii sunt numerotati de la 1 la 16).

- Ki reprezinta sub-cheia folosita ın runda i

(exceptie: sub-cheia K5 se combina prin XOR

cu bitii de la iesirea din runda 4).

Deci U1 = P ⊕ K1 unde P = (P1, . . . , P16)

reprezinta textul clar (de 16 biti).

73

Page 297: Criptografie 600

Dupa aproximarea liniara de la prima runda:

V1,6 = U1,5 ⊕ U1,7 ⊕ U1,8 = (P5 ⊕K1,5)⊕ (P7 ⊕K1,7)⊕ (P8 ⊕K1,8) (2)

cu probabilitate 3/4.

Aproximarea din runda 2 da relatia

V2,6 ⊕ V2,8 = U2,6

cu probabilitate 1/4.

Deoarece U2,6 = V1,6 ⊕ K2,6, putem gasi oaproximare de forma

V2,6 ⊕ V2,8 = V1,6 ⊕K2,6

cu probabilitate 1/4.

Combinand aceasta relatie cu (2) (care are loccu probabilitate 3/4), se obtine

V2,6 ⊕ V2,8 ⊕ P5 ⊕ P7 ⊕ P8 ⊕K1,5 ⊕K1,7 ⊕K1,8 ⊕K2,6 = 0 (3)

cu probabilitate1/2 + 2(3/4− 1/2)(1/4− 1/2) = 3/8

(deci o tendinta −1/8) obtinuta prin aplicareaLemei Piling - up.

74

Page 298: Criptografie 600

Pentru runda 3:

V3,6 ⊕ V3,8 = U3,6

cu probabilitate 1/4 si

V3,14 ⊕ V3,16 = U3,14

tot cu probabilitate 1/4.

Deci U3,6 = V2,6⊕K3,6 si U3,14 = V2,8⊕K3,14.

Se aplica din nou Lema Piling - up:

V3,6 ⊕ V3,8 ⊕ V3,14 ⊕ V3,16 ⊕ V2,6 ⊕K3,6 ⊕ V2,8 ⊕K3,14 = 0 (4)

cu probabilitate 1/2 + 2(1/4 − 1/2)2 = 5/8

(deci, cu o tendinta +1/8).

75

Page 299: Criptografie 600

Combinam acum relatiile (3) si (4) pentru aincorpora toate cele patru aproximari ale S -boxurilor:

V3,6 ⊕ V3,8 ⊕ V3,14 ⊕ V3,16 ⊕ P5 ⊕ P7 ⊕ P8 ⊕K1,5 ⊕K1,7 ⊕K1,8 ⊕K2,6 ⊕

K3,6 ⊕K3,14 = 0.

Tinem cont ca

U4,6 = V3,6 ⊕K4,6,

U4,8 = V3,14 ⊕K4,8,

U4,14 = V3,8 ⊕K4,14,

U4,16 = V3,16 ⊕K4,16

si putem rescrie aceasta relatie sub formaU4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ P5 ⊕ P7 ⊕ P8 ⊕ σK = 0

unde

σK = K1,5⊕K1,7⊕K1,8⊕K2,6⊕K3,6⊕K3,14⊕K4,6⊕K4,8⊕K4,14⊕K4,16

Ea este verificata cu probabilitate1/2 + 23(3/4− 1/2)(1/4− 1/2)3 = 15/32

(deci o tendinta −1/32).

76

Page 300: Criptografie 600

σK este o valoare fixata (0 sau 1), dependenta

de cheia sistemului de criptare.

Deci relatia

U4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ P5 ⊕ P7 ⊕ P8 = 0 (5)

are loc cu probabilitate

15/32 sau (1− 15/32) = 17/32

(dupa cum σK = 0, respectiv 1).

Am obtinut deci o aproximare liniara a primelor

trei runde ale sistemului de criptare, cu o ten-

dinta 1/32, remarcabil de buna pentru constru-

irea unui atac.

77

Page 301: Criptografie 600

S41 S44S42 S43

S31 S34S32 S33

S21 S24S22 S23

S11 S14S12 S13

K1,5 K1,7 K1,8

K2,6

K3,6 K3,14

K4,6 K4,8 K4,14 K4,16

K5,5 K5,6 K5,7 K5,8 K5,13 ... K5,16

P5 P7 P8

?U4,6 U4,8 U4,14 U4,16

?

Figura 3: Exemplu de aproximare liniara

78

Page 302: Criptografie 600

Extragerea bitilor cheii

Dupa ce s-a aflat o aproximare liniara pentru

R − 1 runde dintr-un sistem de criptare cu R

runde, aproximare avand o tendinta semnifica-

tiv de mare, sistemul poate fi atacat cautand

biti din ultima sub-cheie.

Se numeste sub-cheie tinta setul de biti din

ultima sub-cheie, asociati S - boxurilor active

din ultima runda (S - boxuri influentate de bitii

utilizati ın aproximarea liniara gasita).

Pentru fiecare valoare posibila a sub-cheii tinta

este definit un contor (initializat cu zero).

79

Page 303: Criptografie 600

Procesul va simula decriptarea partiala data deultima runda a sistemului de criptare: pentrutoate valorile posibile ale sub-cheii tinta, bitiidin textul criptat sunt XOR-ati cu bitii din sub-cheia tinta si rezultatul este trecut ın sens in-vers prin S - boxurile corespunzatoare.

Procedura este aplicata tuturor perechilor(text clar, text criptat) folosite ın atac.

Daca aproximarea liniara este verificata pen-tru bitii din textul clar folosit si pentru rezul-tatul obtinut de procedura, contorul asociatsub-cheii respective este incrementat.

Sub-cheia tinta al carei contor difera cel maimult de jumatatea numarului de perechi folo-site, este cel mai probabil cea corecta.

Pentru o sub-cheie incorecta rezultata dintr-o alegere aleatoare, aproximarea asociata esteverificata ın general cu o probabilitate foarteapropiata de 50% (deci tendinta 0).

80

Page 304: Criptografie 600

Exemplul 6. Expresia liniara (5) afecteaza

intrarile ın S - boxurile S42 si S44.

Deci, pentru fiecare pereche (α, β) aleasa pen-

tru atac, vom ıncerca 28 = 256 valori ale sub-

cheii tinta

[K5,5, . . . , K5,8, K5,13, . . . , K5,16].

Pentru fiecare valoare incrementam contorul

respectiv ori de cate ori relatia (5) este veri-

ficata (valorile [U4,5, . . . , U4,8, U4,13, . . . , U4,16]

sunt determinate trecand datele ın sens invers

prin sub-cheia tinta si S - boxurile S24 si S44).

Contorul care difera cel mai mult de jumatate

din numarul de perechi (α, β) folosite ın atac

va indica sub-cheia tinta prezumtiv corecta.

81

Page 305: Criptografie 600

Valorile bitilor din sub-cheie folositi ın calculul

lui σK vor indica daca tendinta este pozitiva

sau negativa.

Cand σK = 0, aproximarea liniara (5) va servi

ca estimare cu probabilitate < 1/2, iar cand

σK = 1, relatia (5) va avea loc cu probabilitate

> 1/2.

K5,5 . . . K5,8,K5,13 . . . K5,16

|tendinta| K5,5 . . . K5,8,K5,13 . . . K5,16

|tendinta|1 C 0.0031 2 A 0.00441 D 0.0078 2 B 0.01861 E 0.0071 2 C 0.00941 F 0.0170 2 D 0.00532 0 0.0025 2 E 0.00622 1 0.0220 2 F 0.01332 2 0.0211 3 0 0.00272 3 0.0064 3 1 0.00502 4 0.0336 3 2 0.00752 5 0.0106 3 3 0.01622 6 0.0096 3 4 0.02182 7 0.0074 3 5 0.00522 8 0.0224 3 6 0.00562 9 0.0054 3 7 0.0048

Tabela 7. Rezultate experimentale pentru un atac liniar

Atacul foloseste 10000 perechi cunoscute

(text clar, text criptat).

82

Page 306: Criptografie 600

Tabela 7 prezinta doar partial rezultatele rela-

tive la contori (un tabel complet va avea 256

linii, cate una pentru fiecare valoare posibila a

sub-cheii tinta).

Cea mai mare tendinta apare pentru valoarea

[K5,5 . . . K5,8, K5,13 . . . K5,16] = [2,4],

rezultat care ramane valabil pentru toata tabe-

la cu 256 valori.

Valoarea 0.0336 gasita experimental este

foarte apropiata de estimarea 1/32 = 0.03125.

In tabel apar si alte valori destul de mari ale

tendintei (teoretic, ele ar trebui sa fie foarte

apropiate de zero).

Acestea rezulta – printre altele – din alegerea

aleatoare a perechilor de test, a proprietatilor

particulare ale S - boxurilor, a impreciziei

ipotezei de independenta.

83

Page 307: Criptografie 600

Criptanaliza liniara pentru DES

Cea mai buna aproximare liniara pentru un S -

box din DES este

a2 ⊕ b1 ⊕ b2 ⊕ b3 ⊕ b4 = 0

asociata lui S5.

Aceasta relatie are probabilitatea 12/64.

Daca se analizeaza componentele liniare ale

functiei f , va rezulta ca aceasta relatie con-

duce la aproximarea

a15 ⊕ f(α, K)7 ⊕ f(α, K)18 ⊕ f(α, K)24 ⊕ f(α, K)29 ⊕K22 = 0 (6)

cu probabilitatea 16/24.

Relatia (6) poate fi folosita cu succes pentru

un atac contra sistemului DES cu 3 runde.

84

Page 308: Criptografie 600

Pentru a ataca un DES complet (cu 16 runde)

sunt folosite aproximarile liniare:

a15 ⊕ f(X, K)7 ⊕ f(X, K)18 ⊕ f(X, K)24 ⊕ f(X, K)29 ⊕K22 = 0a27 ⊕ a28 ⊕ a30 ⊕ a31 ⊕ f(X, K)15 ⊕K42 ⊕K43 ⊕K45 ⊕K46 = 0a29 ⊕ f(X, K)15 ⊕K44 = 0a15 ⊕ f(X, K)7 ⊕ f(X, K)18 ⊕ f(X, K)24 ⊕K22 = 0a12 ⊕ a16 ⊕ f(X, K)7 ⊕ f(X, K)18 ⊕ f(X, K)24 ⊕K19 ⊕K23 = 0

Dupa estimarea lui Matsui, atacul original pro-

pus de el necesita 247 perechi (text clar, text

criptat) pentru a avea succes cu probabilitate

mare.

Ulterior,atacul este ımbunatatit si reduce acest

numar la 243 perechi.

Cercetari experimentale ulterioare sugereaza

ca sunt suficiente 241 perechi pentru ca atacul

ımbunatatit al lui Matsui sa dea rezultate.

85

Page 309: Criptografie 600

Comparare ıntre criptanaliza diferentiala si liniara

Similaritati:

1. Diferentialele caracteristice corespund

aproximarilor liniare.

Tabelele de distributie a diferentelor sunt

ınlocuite cu tabelele de aproximare liniara.

2. Regula de combinare a diferentialelor

caracteristice: ”substituie diferentele si ınmul-

teste probabilitatile” corespunde regulii de

combinare a aproximarilor liniare (Lema piling-

up): ”substituie elementele comune si ınmul-

teste tendintele”.

3. Algoritmii de cautare pentru cea mai

buna caracteristica sau cea mai buna aproxi-

mare liniara sunt ın esenta identici.

86

Page 310: Criptografie 600

Diferente:

1. Criptanaliza diferentiala lucreaza cu blo-

curi de biti, ın timp ce criptanaliza liniara lu-

creaza ın esenta cu un singur bit.

2. Tendinta unei aproximari liniare este un

numar cu semn.

Deci, fiind date doua aproximari cu aceleasi

structuri de intrare si iesire, aceiasi probabili-

tate, dar semne opuse, aproximarea rezultata

va avea tendinta zero (datorita faptului ca cele

doua aproximari se vor anula reciproc).

87

Page 311: Criptografie 600

Sisteme de criptare cu cheie publica

1

Page 312: Criptografie 600

Sistemele simetrice necesita o comunicare

prealabila a cheii ıntre Alice si Bob printr-un

canal sigur, ınainte de transmiterea mesajului

criptat.

Obiectivul sistemelor de criptare cu cheie

publica este acela de a face ”imposibil” de

obtinut cheia dK plecand de la eK.

Astfel, regula de criptare eK poate fi publicata

ıntr-un ”registru public” (de unde si numele

sistemelor).

Avantajul consta ın faptul ca Alice (sau oricare

alta persoana) poate trimite lui Bob un mesaj

criptat cu eK.

Bob este singura persoana capabila sa decrip-

teze textul, utilizand cheia sa secreta dK.

2

Page 313: Criptografie 600

Ideea de sistem de criptare cu cheie publica

apare ın 1976 ıntr-un articol scris de Diffie si

Hellman.

Se pare ca prima idee de cheie publica este

schitata ın ianuarie 1970 de catre britanicul

James Ellis – membru ın Communication-

Electronic Security Group – ın articolul The

possibility of non-secret encryption.

Informatia este facuta publica de catre British

Government Communications Headquarters

abia ın 1997.

3

Page 314: Criptografie 600

Securitatea sistemelor de criptare cu cheiepublica este bazata pe probleme NP complete.

• RSA: bazat pe dificultatea descompuneriiın factori primi a numerelor mari (de sutede cifre).

• El Gamal: bazat pe dificultatea calcululuilogaritmului discret ıntr-un corp finit.

• Merkle - Hellman: bazat pe problema{0,1} a rucsacului.

• Sistemul McEliece: bazat pe teoria al-gebrica a codurilor, decodificarea unui codliniar fiind o problema NP - completa.

• Curbe eliptice: Sisteme de criptare careısi desfasoara calculele pe multimeapunctelor unei curbe eliptice (ın locul unuiinel finit Zn).

4

Page 315: Criptografie 600

Functii neinversabile

Un sistem cu cheie publica nu este sigur ın mod

neconditionat; oricine – putand sa efectueze

criptari – are posibilitatea sa gaseasca anumite

puncte slabe care sa ıi permita sa si decripteze

mesajele.

Ideea de baza folosita este cea de

functie neinversabila.

Exemplul 1. Strazi cu sens unic dintr-un oras.

Este usor ca mergand pe astfel de strazi sa

ajungi de la punctul A la punctul B; dar uneori

este imposibil sa ajungi de la B la A.

In acest mod, criptarea este privita ca directia

A→ B; desi este foarte usor de parcurs drumul

ın aceasta directie, nu te poti ıntoarce ınapoi

spre A (adica sa decriptezi mesajul).

5

Page 316: Criptografie 600

Exemplul 2. Cartea de telefoane.

Cu ajutorul ei este usor de gasit numarul detelefon al unei anumite persoane.

In schimb, este extrem de greu - practic im-posibil - sa afli persoana care are un anumitnumar de telefon.

Pe baza unei astfel de carti se poate construiun sistem de criptare cu cheie publica.

Criptarea se face litera cu litera.

Pentru fiecare litera a textului clar se alege unnume care ıncepe cu acest caracter si numarulde telefon al persoanei respective va constituicriptarea.

Sistemul este homofonic; doua aparitii diferiteale aceleiasi litere vor fi codificate foarteprobabil cu numere diferite.

6

Page 317: Criptografie 600

Textul clar SOLIST se poate cripta:

S Simion Pavel 6394502O Olaru Stefan 7781594L Lambru Stelian 6300037I Ilie Romeo 3134971S Solovean Raluca 6281142T Tecuceanu Paul 3359962

Deci, textul criptat va fi639450 277815 946300 037313 497162 811423 359962.

Metoda este nedeterminista; din acelasi textclar se pot obtine multe texte criptate.

In schimb, orice text criptat conduce la un textclar unic.

Bob va avea la dispozitie pentru decriptareo carte ordonata crescator dupa numerele detelefon.

Aceasta ıi va permite sa decripteze mesajele cuun algoritm de complexitate O(log n).

7

Page 318: Criptografie 600

In general, o functie neinversabila f trebuie sa

verifice doua conditii:

• Fiind dat x, f(x) este usor de calculat;

• Calculul lui x din f(x) este imposibil.

Din punct de vedere strict matematic, nu se

cunosc astfel de functii.

A demonstra ca exista functii neinversabile este

echivalent cu a demonstra conjectura P 6= NP.

8

Page 319: Criptografie 600

Termenii folositi sunt relativi la complexitatea

calculatorie.

O problema este:

1. usoara – daca se poate rezolva cu un algo-

ritm cel mult liniar;

2. grea – daca se poate rezolva cu un algoritm

polinomial neliniar;

3. imposibila – daca este NP - completa.

9

Page 320: Criptografie 600

Exemplul 3. Sa consideram ”problema rucsa-cului”.

Ea consta dintr-un vector

A = (a1, a2, . . . , an)

cu elemente numere ıntregi, pozitive, distincte,si un numar ıntreg pozitiv k.

Trebuiesc aflati acei ai din A (daca exista) acaror suma este k.

De exemplu, fieA = (43,129,215,473,903,302,561,1165,696,1523)

si k = 3231.

Se determina

3231 = 129 + 473 + 903 + 561 + 1165

care este o astfel de solutie.

Pentru |A| foarte mare, problema rucsaculuieste NP - completa.

10

Page 321: Criptografie 600

Cu ajutorul lui A se poate defini o functie f

astfel:

Fie x ∈ [0,2n − 1]; x poate fi reprezentat ın

binar ca un cuvant de lungime n (completand

eventual ın fata cu 0 - uri).

Atunci

f(x) = A ·BTx

unde Bx este reprezentarea binara a lui x, scrisa

ca un vector coloana.

11

Page 322: Criptografie 600

Un sistem de criptare bazat pe problema

rucsacului.

Textul clar este codificat initial ın binar si

segmentat apoi ın blocuri de cate n biti.

Fiecare bloc rezultat este apoi criptat calcu-

land valoarea corespunzatoare a functiei f .

Pentru alfabetul latin sunt suficienti 5 biti pen-

tru codificarea binara a literelor si a spatiului.

− 00000 A − 00001 B − 00010C − 00010 D − 00011 E − 00101F − 00110 G − 00111 H − 01000I − 01001 J − 01010 K − 01011L − 01100 M − 01101 N − 01110O − 01111 P − 10000 Q − 10001R − 10010 S − 10011 T − 10100U − 10101 V − 10110 W − 10111X − 11000 Y − 11001 Z − 11010

12

Page 323: Criptografie 600

Text clar: FLOARE DE COLT.

In fiecare bloc intra doua caractere:

FL OA RE D E CO LT.

Codificand,se obtin sapte blocuri de cate

10 biti:

0011001100 0111100001 1001000101 0000000100

0000000101 0001101111 0110010100.

Folosind vectorul rucsac

A = (43,129,215,473,903,302,561,1165,696,1523)

se ajunge la textul criptat:

(2414,3243,3204,1165,1118,5321,1811).

13

Page 324: Criptografie 600

Privit ca un sistem clasic (cu cheie privata),

criptanalistul trebuie sa afle vectorul de baza

A si apoi sa rezolve problema rucsacului.

Daca el foloseste un atac cu text clar ales, ıl

va afla usor pe A: este suficient sa trimita n

texte clare cu cıte un singur 1 iar restul 0.

Problema apare ın momentul rezolvarii proble-

mei rucsacului.

Aici atat Bob cat si Oscar sunt pusi ın fata

aceleiasi probleme NP - complete.

Ori, practic, doar Oscar trebuie sa rezolve o

problema dificila, nu si Bob.

14

Page 325: Criptografie 600

Trapa secreta

Bob trebuie sa dispuna de o informatie secreta

care sa ıi permita sa transforme problema pu-

blica NP - completa, ıntr-o problema usoara.

Aceasta informatie este numita trapa secreta.

In primul exemplu, trapa secreta era cartea de

telefon ordonata dupa numerele de telefon.

15

Page 326: Criptografie 600

Exemplul 4. Sunt clase de probleme ale ruc-sacului usor de rezolvat; una din ele o formeazavectorii cu crestere mare.

Spunem ca vectorul rucsac A = (a1, a2, . . . , an)este super-crescator daca

∀ j ≥ 2, aj >j−1∑i=1

ai.

Pentru a rezolva problema rucsacului (A, k),este suficient sa parcurgem vectorul A de ladreapta spre stanga.

Cunoscand valoarea k, cercetam ıntai valoareade adevar a relatiei k ≥ an.

Daca raspunsul este FALSE, an nu poate apar-tine sumei pe care o cautam.

Daca se obtine TRUE, atunci an trebuie sa fieın suma, deoarece toate elementele ai ramasenu pot depasi ın suma pe k.

16

Page 327: Criptografie 600

Fie vectorul rucsac super-crescatorA = (1,3,5,11,21,44,87,175,349,701)

si vrem sa decodificam mesajul 278.

Numar Componenta lui A Bit rezultat278 701 0278 349 0278 175 1103 87 116 44 016 21 016 11 15 5 10 3 00 1 0

Se defineste

k1 =

{k daca an > kk − an daca an ≤ k

si repetam procedeul pentru k si a1.

In final se obtine secventa 00110 01100 careeste codificarea pentru FL.

17

Page 328: Criptografie 600

Daca se foloseste public o trapa secreta, orice

utilizator – inclusiv Oscar – poate decripta

mesajele, folosind un algoritm liniar.

Ori s-a presupus ca, pentru orice intrus, aflarea

mesajului clar trebuie sa se reduca la rezolvarea

unei probleme NP - complete.

18

Page 329: Criptografie 600

Exemplul 5. Pentru sistemul bazat pe proble-

ma rucsacului, Bob va proceda astfel:

Alege un numar m (m >m∑

i+1

ai) numit modul

si un numar t, (m, t) = 1 numit multiplicator.

Exista atunci un numar s astfel ca

m · s ≡ 1 (mod m).

Plecand de la vectorul super-crescator

A = (a1, a2, . . . , an)

Bob genereaza vectorul

B = (b1, b2, . . . , bn)

unde bi = t · ai (mod m).

Vectorul B este declarat public pentru criptare,

iar m, t (si s) formeaza trapa secreta a lui Bob.

19

Page 330: Criptografie 600

Pentru m = 1590 si t = 43, vectorul super-

crescator

A = (1,3,5,11,21,44,87,175,349,701)

devine

B = (43,129,215,473,903,302,561,1165,697,1523),

prezentat ın Exemplul 3.

In plus, s = t−1 = 37.

Pentru calculul inversului unui numar se poate

folosi algoritmul lui Euclid extins.

20

Page 331: Criptografie 600

Cel care doreste sa trimita lui Bob un mesaj

criptat va folosi vectorul rucsac B si va cripta

mesajul x ın

y = B ·BTx .

La receptie, Bob va calcula ıntai

z = s · y (mod m),

dupa care va decripta mesajul z folosind vec-

torul super-crescator A.

Se poate arata usor ca solutia este chiar x.

Astfel, de exemplu Alice poate cripta mesajul

FL ın 2414 (cf. Exemplului 3).

La primirea acestui numar, Bob va determina

ıntai

s · 2414 = 37 · 2414 (mod 1590) = 278.

S-a vazut ca decriptarea mesajului 278 cu vec-

torul A conduce la textul clar FL.21

Page 332: Criptografie 600

Principii generale de construire a unui sistem

de criptare cu cheie publica:

1. Se ıncepe cu o problema dificila P , prefe-

rabil NP - complea.

2. Se selecteaza o subproblema P1 a lui P ,

rezolvabila ın timp liniar.

3. Se aplica o transformare problemei P1 ast-

fel ıncat sa se obtina o problema P2 care sa

nu semene cu P1 dar sa fie foarte apropiata

de problema P .

4. Se face publica problema P2 si se descrie

algoritmul de criptare bazat pe aceasta.

Informatia referitoare la modul ın care se

obtine P1 din P2 formeaza trapa secreta.

22

Page 333: Criptografie 600

5 Se construiesc detaliile sistemului de crip-

tare, astfel ıncat principiile de lucru sa dife-

re esential pentru destinatar fata de

criptanalist.

Astfel, ın timp ce primul va folosi trapa se-

creta si va rezolva problema P1, al doilea

va trebui sa rezolve problema P2, imposi-

bila datorita asemanarii ei cu problema P .

La aceste principii generale de constructie se

adauga o serie de detalii legate de problema

NP - completa folosita ca baza de lucru.

23

Page 334: Criptografie 600

Securitatea sistemelor de criptare

cu cheie publica

In majoritatea sistemelor de criptare, aparatul

matematic folosit este bazat pe teoria numere-

lor, functii recursive, probabilitati si statistica.

Pe o scara mult mai restransa apar functiile

eliptice, teoria automatelor, calcul neconven-

tional (cuantic, molecular etc).

Sistemele de criptare cu cheie publica au un

avantaj major fata de sistemele clasice: nu este

necesara transmiterea ın prealabil a cheii.

24

Page 335: Criptografie 600

Un sistem de criptare cu cheie publica nu ofera

ınsa o securitate absoluta.

Oscar poate oricand sa dezvolte atacuri (pasive

sau active):

• Daca dispune de un text criptat y, el poate

cauta exhaustiv un text clar x astfel ca

eK(x) = y.

Singura aparare contra unui astfel de atac

consta ın gradul de complexitate al sis-

temului.

• Un criptanalist activ poate efectua cu suc-

ces un atac numit man-in-the-middle.

25

Page 336: Criptografie 600

Atacul man-in-the-middle

Alice si Bob doresc sa stabileasca un contact.

Ei fac publice cheile de criptare eA respectiv

eB.

Daca acest contact este nepersonalizat,

Oscar poate controla mesajele schimbate ıntre

cei doi:

Alice

Oscar

Bob

? - -

66

�6

-

?

(eA, eB)e1B e1

A

y1 = e1B(m) y = eB(m)

1. Oscar ”opacizeaza” cheile publice si trimite

lui Alice cheia e1B ca din partea lui Bob;

similar, substituie (pentru Bob) cheia eA

cu e1A.

26

Page 337: Criptografie 600

2 Fie m mesajul pe care Alice vrea sa ıl trimi-

ta lui Bob. Ea va cripta si expedia

y1 = e1B(m).

3 Oscar intercepteaza mesajul si afla

m = d1B(y1).

4 Oscar recripteaza y = eB(m) si trimite y

lui Bob.

Bineınteles, daca doreste, Oscar poate modi-

fica, interschimba sau ıntarzia mesajele inter-

ceptate.

27

Page 338: Criptografie 600

Pentru sistemele de criptare cu cheie publica

apare necesitatea autentificarii mesajului sau a

expeditorului, precum si aceea a confidentiali-

tatii.

Definitia 1. Confidentialitatea (conform ISO)

asigura accesul la informatie doar partilor au-

torizate de a avea acest acces.

Definitia 2. Autentificarea (gr. ”authentes”

- author) este procesul prin care un utilizator

ıncearca sa confirme unui destinatar ca mesajul

primit de acesta vine (sau nu vine) din partea

sa.

28

Page 339: Criptografie 600

Metodele prin care un expeditor uman se poate

autentifica sunt clasificate ın:

1. ”ceva ce utilizatorul este” (de exemplu am-

prente digitale, de retina, de voce, secventa

DNA, recunoasterea semnaturii, identifica-

tori biometrici).

2. ”ceva de utilizatorul are” (de exemplu card

ID, date de securitate soft aflate pe calcu-

lator sau telefon).

3. ”ceva ce utilizatorul stie” (de exemplu un

password, o parola, un numar de identifi-

care - PIN).

4. Orice combinatie ıntre metodele anterioare

(exemplu: un card bancar cu PIN asigura

o dubla autentificare).

29

Page 340: Criptografie 600

Termenul de integritate se refera la validitatea

datelor.

Definitia 3. Integritatea este siguranta ca

datele la care se refera un utilizator pot fi

accesate si eventual modificate numai de

cei autorizati sa o faca.

In general integritatea poate fi compromisa ın

doua moduri:

1. Prin alterare intentionata (de exemplu mo-

dificarea unui cont bancar, a unei adrese de

e-mail, a unui document de identitate);

2. In mod accidental (transmisii perturbate de

zgomote de canal, zgarierea harddiscului).

De recuperarea informatiei pierduta ın acest

mod se ocupa Teoria Codurilor detectoare si

corectoare de erori.30

Page 341: Criptografie 600

Sa presupunem ca Alice si Bob sunt doi uti-

lizatori cu posibile conflicte de interese.

Cand Alice trimite un mesaj lui Bob, ambele

parti trebuie sa se asigure ca:

• Mesajul nu este trimis de o terta persoana

care pretinde a fi Alice;

• Bob sa nu poata obliga pe Alice sa tina

cont de mesaje care nu-i apartin, iar Alice

sa nu poata repudia propriile mesaje.

Intr-o oarecare masura, cele doua conditii sunt

contradictorii: conform primei conditii, Bob

trebuie sa stie ceva despre modul de criptare

al lui Alice, care ıi va permite sa autentifice

mesajul, iar conform celei de-a doua conditii,

el nu trebuie sa stie prea mult.

31

Page 342: Criptografie 600

O modalitate frecvent utilizata pentru auten-

tificarea mesajelor este folosirea codurilor de

autentificare.

Exemplul 6.MAC-ul (Message Authentication

Code) definit ın cadrul sistemului de criptare

DES este o varianta prin care se poate asigura

atat autenticitatea cat si integritatea mesaju-

lui.

Daca se solicita si autentificarea partenerilor,

atunci se foloseste de obicei semnatura elec-

tronica.

32

Page 343: Criptografie 600

Exemplul 7. Alice vrea sa trimita mesajul m.

Daca se foloseste un sistem de criptare cu cheie

publica ın care functiile de criptare/decriptare

sunt comutative, iar

(eA, dA), (eB, dB)

sunt perechile (cheie publica, cheie privata) ale

celor doi, ei pot urma urmatorul protocol:

1. Alice trimite lui Bob y1 = eA(m);

2. Bob trimite lui Alice y = eB(y1);

3. Alice trimite lui Bob dA(y) = eB(m);

4. Bob calculeaza dB(eB(m)) = m.

Sunt verificate cele doua conditii de autentifi-

care si – ın plus – protocolul rezista unui atac

de tip man-in-the-middle.

33

Page 344: Criptografie 600

Avantaje ale sistemelor simetrice de criptare

1. Pot transmite volume mari de date.Exista implementari hard care pentru unelesisteme de criptare asigura rate de criptarede sute de mega-octeti pe secunda (sunt siimplementari soft cu rate de mega-octetipe secunda).

2. Cheile sunt relativ scurte.

3. Pot fi folosite drept baza de constructiepentru generatori de numere pseudoalea-toare, generatori de functii de dispersie,scheme de semnatura etc.

4. Prin compunere pot conduce la sisteme decriptare puternice.

5. Au o istorie bogata ın evenimente si expe-rienta.

34

Page 345: Criptografie 600

Dezavantaje ale sistemelor de criptare simetrice

1. Cheia trebuie sa ramana permament se-

creta ın (cel putin) doua locuri distincte.

2. Cu cat lungimea unui mesaj criptat este

mai mare, cu atat el este mai usor de spart.

3. In retele mari, o gestionare a cheilor devine

extrem de dificila.

4. Necesita un canal sigur de comunicare, cel

putin pentru transmiterea cheii.

Acest lucru devine dificil mai ales pentru

sistemele care necesita schimbari frecvente

ale cheilor de criptare/decriptare.

35

Page 346: Criptografie 600

Avantaje ale sistemelor de criptare cu cheie publica

1. Sistemul este ideal pentru transmitereainformatiei prin canale nesigure.

2. Sistemele cu cheie publica sunt simplu dedefinit si elegante matematic.

3. Doar cheia de decriptare trebuie tinuta se-creta, la un singura adresa (destinatar).

4. In functie de modul de utilizare, o perechede chei (publica, privata) poate fi pastratao perioada mai lunga de timp.

5. Conduc la aplicatii de mare ıntindere:semnaturi electronice, algoritmi de auten-tificare, componente de comert electronicetc.

36

Page 347: Criptografie 600

Dezavantaje ale sistemelor de criptare

cu cheie publica

1. Sunt semnificativ mai lente decat sistemele

simetrice.

2. Sunt necesare chei de lungimi mult mai

mari.

3. Nu se poate garanta securitatea absoluta

a nici unei scheme de criptare cu cheie pu-

blica.

4. Implementarea trebuie realizata cu foarte

mare grija.

Sisteme cu grad teoretic ridicat de securi-

tate pot fi sparte usor printr-o implemen-

tare neglijenta.

37

Page 348: Criptografie 600

Cele doua clase de sisteme de criptare dispun

de o serie de avantaje complementare.

Acest lucru sugereaza o utilizare combinata.

Exemplul 8. Multe sisteme de criptare ıncep

comunicarea transmitand – via un sistem cu

cheie publica – cheia unui sistem simetric.

In faza a doua, mesajele sunt criptate folosind

sistemul simetric de criptare.

Aceasta asigura o viteza mare de transmitere

si un spor de autenticitate a mesajelor.

38

Page 349: Criptografie 600

Algoritmul lui Euclid extins

Algoritmul lui Euclid constituie o modalitateeficace de determinare a celui mai mare divizorcomun a doua numere ıntregi pozitive.

El poate fi extins pentru a determina si in-versele elementelor dintr-un corp finit Zn.

Forma clasica a algoritmului Euclid:

Fie r0, r1 ∈ N∗.Se efectueaza secventa de ımpartiri succesive:

r0 = q1r1 + r2 0 < r2 < r1r1 = q2r2 + r3 0 < r3 < r2...rm−2 = qm−1rm−1 + rm 0 < rm < rm−1rm−1 = qmrm.

Deoarece

cmmdc(r0, r1) = . . . = cmmdc(rm−1, rm) = rm,

rezulta cmmdc(r0, r1) = rm.

39

Page 350: Criptografie 600

Fie sirul t0, t1, . . . , tm definit:

t0 = 0, t1 = 1

tj = tj−2 − qj−1tj−1 (mod r0), j ≥ 2 (2)

Teorema 1. Pentru 0 ≤ j ≤ m avem

rj ≡ tjr1 (mod r0)

unde rj si tj sunt definite mai sus.

Corolarul 1. Daca (r0, r1) = 1 atunci

tm = r−11 (mod r0).

40

Page 351: Criptografie 600

Algoritmul lui Euclid extins (pentru n > 1 si

b ∈ Z∗n va determina b−1 mod n - daca exista).

1. n0 ←− n, b0 ←− b, t0 ←− 0, t←− 1;

2. q ←−[

n0

b0

], r ←− n0 − q · b0;

3. while r > 0 do

3.1. temp←− t0 − q · t

3.2. if temp ≥ 0 then temp←− temp (mod n)

else temp←− n− ((−temp) (mod n))

3.3. n0 ←− b0, b0 ←− r, t0 ←− t, t←− temp;

3.4. q ←−[

n0

b0

], r ←− n0 − q · b0;

4. if b0 6= 1 then b nu are inversa mod n.

else b−1 (mod n) = t.

41

Page 352: Criptografie 600

Exemplul 9. Sa calculam 28−1 mod 75,

folosind algoritmul lui Euclid extins:

n0 b0 q r t0 t temp75 28 2 19 0 1 7328 19 1 9 1 73 319 9 2 1 73 3 679 1 9 0 3 67

Deci 28−1 mod 75 = 67.

42

Page 353: Criptografie 600

Teorema chineza a resturilor

Teorema 2. Se dau numerele p1, p2, . . . , pr

prime ıntre ele si fie n = p1p2 . . . pr.

Atunci sistemul de ecuatii

x ≡ ai (mod pi), 1 ≤ i ≤ r

are solutie comuna ın intervalul [0, n− 1].

Pentru fiecare i, cmmdc(pi, n/pi) = 1;deci exista numerele yi astfel ıncat

n

pi· yi ≡ 1 (mod pi).

De asemenea, pentru j 6= i, deoarecepj|cmmdc(n/pi), avem

n

pi· yi ≡ 0 (mod pj).

Solutia sistemului este

x =r∑

i=1

n

pi· yi · ai (mod n).

43

Page 354: Criptografie 600

Exemplul 10. Fie r = 3, p1 = 7, p2 = 11,

p3 = 13, deci n = 1001.

Notand mi =n

pi, avem

m1 = 143, m2 = 91 si m3 = 77.

Folosind algoritmul lui Euclid, se obtiney1 = 5, y2 = 4, y3 = 12.

Solutia generala este atunci

x = 715a1 + 364a2 + 924a3 (mod 1001)

De exemplu, pentru sistemul

x ≡ 5 (mod 7), x ≡ 3 (mod 11), x ≡ 10 (mod 13)

formula de sus da

x = 715 · 5 + 364 · 3 + 924 · 10 (mod 1001) =13907 (mod 1001) = 894.

Verificarea se realizeaza reducand x modulo7, 11 si 13.

44

Page 355: Criptografie 600

Sistemul de criptare RSA

1

Page 356: Criptografie 600

Descrierea sistemului

Sistemul de criptare RSA este prezentat ın

1977 de Ron Rivest, Adi Shamir si Len Adle-

man ın cadrul unui proiect de cercetare la MIT.

Dupa declasificarea ın 1997 a unor documente

din Marea Britanie, se pare ca matematicianul

Clifford Cocks a elaborat ın 1973 un sistem

echivalent, prezentat ıntr-un document intern

GCHQ (Government Communications Head-

quarters).

Este cel mai cunoscut si utilizat sistem de

criptare cu cheie publica.

Aceasta se datoreaza ın primul rand modalitatii

foarte simple de criptare si decriptare, care se

realizeaza cu aceleasi module de calcul (pro-

prietate ıntalnita la unele sisteme simetrice).

2

Page 357: Criptografie 600

Fie p, q numere prime impare distincte si

n = pq.

Indicatorul sau Euler este φ(n) = (p−1)(q−1).

Fie P = C= Zn,

K= {(n, p, q, a, b)| n = pq, ab ≡ 1 (mod φ(n))}

Pentru K = (n, p, q, a, b) se definesc

(∀x, y ∈ Zn):

eK(x) = xb (mod n)

si

dK(y) = ya (mod n)

Valorile n si b sunt publice, iar p, q si a sunt

secrete.

3

Page 358: Criptografie 600

Deoarece ab ≡ 1 (mod φ(n)), avem

ab = tφ(n) + 1

Atunci, pentru un x ∈ Z∗n = Zn \ {0}, putem

scrie (calcule ın Zn):

(xb)a ≡ xtφ(n)+1 ≡(xφ(n)

)tx ≡ 1tx ≡ x

Pentru x = 0 afirmatia este banala.

4

Page 359: Criptografie 600

Exemplul 1. Bob alege p = 101, q = 113.

Atunci n = 11413, φ(n) = 11200.

Deoarece 11200 = 26527, un numar b poate fiutilizat ca exponent de criptare daca si numaidaca nu este divizibil cu 2,5 sau 7.

Fie de exemplu b = 3533.

Atunci b−1 = 6597 (mod 11200).

Deci, exponentul de decriptare este a = 6597.

Bob face public n = 11413 si b = 3533.

Daca Alice doreste sa-i transmita lui Bobmesajul m = 9726, ea calculeaza

97263533 mod 11413 = 5761

si trimite prin canal textul criptat c = 5761.Cand Bob primeste acest numar, el determina

57616597 mod 11413 = 9726.5

Page 360: Criptografie 600

Securitatea sistemului de criptare RSA se

bazeaza pe ipoteza ca functia de criptare

eK(x) = xb mod n

este neinversabila din punct de vedere al

complexitatii.

Trapa secreta de care dispune Bob pentru

decriptare este descompunerea n = pq.

Deoarece Bob stie aceasta factorizare, el poate

calcula φ(n) = (p− 1)(q− 1) si apoi determina

exponentul de decriptare a folosind algoritmul

lui Euclid extins.

6

Page 361: Criptografie 600

Implementarea sistemului RSA

Pentru a realiza criptarea, Bob trebuie sa

parcurga urmatorii pasi:

1. Genereaza doua numere prime mari p, q.

2. Afla n = pq si φ(n) = (p− 1)(q − 1).

3. Alege aleator un numar b ∈ (1, φ(n)),

astfel ca cmmdc(b, φ(n)) = 1.

4. Calculeaza a = b−1 mod φ(n) folosind

algoritmul lui Euclid extins.

5. Face public n si b.

7

Page 362: Criptografie 600

Un atac consta ın ıncercarea de factorizare alui n.

Daca se realizeaza aceasta, este usor de de-terminat φ(n) = (p − 1)(q − 1) si de calculatexponentul de decriptare a plecand de la b.

Deci, pentru ca sistemul RSA sa fie sigur, estenecesar ca n sa fie suficient de mare pentru cafactorizarea sa sa fie imposibila.

Un numar n de maxim 256 biti poate fi facto-rizat de un PC obisnuit ın cateva ore.

Daca n are pana la 512 biti, el poate fi factor-izat folosind o retea de cateva sute de calcu-latoare (schema prezentata ın 1999).

Aproape toate implementarile actuale ale sis-temului folosesc chei de 1024− 2048 biti.

In 2003 a fost pusa sub semnul ıntrebarii se-curitatea modulelor de 1024 biti.

8

Page 363: Criptografie 600

Daca n ocupa k biti ın memorie

(k = [log2n] + 1), suma a doua numere de k

biti se face ın O(k), iar ınmultirea ın O(k2).

La fel si reducerea modulo n.

Deci, pentru x, y ∈ Zn, numarul xy (mod n) se

poate determina prin calcule de complexitate

O(k2).

Aceasta operatie este numita

multiplicare modulara.

9

Page 364: Criptografie 600

Complexitatea exponentierii modulare

xc mod n

Efectuarea de c− 1 multiplicari modulare esteproces foarte ineficient pentru c mare (algorit-mul devine de complexitate exponentiala).

Fie

c =s−1∑i=0

ci2i

descompunerea binara a lui c.(s ≤ k este numarul de biti din c, iar ci ∈ {0,1}).

Exponentiere rapida (doar prin ridicari la patratsi maxim s ınmultiri modulare):

z ←− 1;for i←− s− 1 downto 0 doz ←− z2 mod n;if ci = 1 then z ←− z · x mod n

Complexitatea algoritmului: O(k3).

10

Page 365: Criptografie 600

Exemplul 2. Calculul lui 97263533 mod 11413

se efectueaza ın numai 12 pasi; anume:

i ci z

11 1 12 · 9726 = 972610 1 97262 · 9726 = 26599 0 26592 = 56348 1 56342 · 9726 = 91677 1 91672 · 9726 = 49586 1 49582 · 9726 = 77835 0 77832 = 62984 0 62982 = 46293 1 46292 · 9726 = 101852 1 101852 · 9726 = 1051 0 1052 = 110250 1 110252 · 9726 = 5761

Deci textul clar 9726 este criptat de Alice ın

5761.

11

Page 366: Criptografie 600

Pentru aplicarea sistemului de criptare RSA,

trebuie generate ıntai numerele prime p, q.

Etapa a doua se efectueaza ın O((log2n)2).

Etapele 3 si 4 folosesc algoritmul lui Euclid

extins (calculul celui mai mare divizor comun

cmmdc(a, b) se poate realiza cu complexitatea

O((log2a)2)).

In general, un algoritm RSA este cam de 1000

ori mai lent decat DES pentru o implementare

harwdare, cam de 100 ori la o implementare

software.

12

Page 367: Criptografie 600

Teste de primalitate probabiliste

Pasul 1 solicita generarea aleatoare de numere

prime cu numar mare de cifre.

Practic, se realizeaza aleator numere, a caror

primalitate se testeaza, pana se ajunge la un

numar prim.

Pentru teste se folosesc algoritmi probabilisti,

al caror avantaj este rapiditatea (complexitate

log n) dar care pot afirma uneori primalitatea

unor numere care nu sunt prime.

Aceste erori se pot reduce la o marja accep-

tabila prin multiplicarea testelor.

13

Page 368: Criptografie 600

Problema generarii aleatoare este posibila din

urmatorul considerent.

Teorema rarefierii numerelor prime: sunt circa

n/log n numere prime mai mici decat n.

Astfel, pentru un modul de 512 biti, un numar

p de 256 biti are o probabilitate 1/logp ≈ 1/177

de a fi prim.

Deci se fac ın medie cam 177 generari de

numere p pentru a obtine un numar prim;

faptul ca se genereaza numai numere impare

reduce numarul de ıncercari la jumatate.

Rezulta ca este practic sa se construiasca nu-

mere mari, care sunt probabil prime, pe baza

carora sa se realizeze criptarea RSA.

14

Page 369: Criptografie 600

Definitia 1. O problema de decizie este o

problema care pune o ıntrebare al carui raspuns

este dicotomic (Da/Nu).

Un algoritm probabilist este un algoritm

care foloseste numere aleatoare.

Definitia 2. Un algoritm Monte - Carlo pozi-

tiv este un algoritm probabilist care rezolva o

problema de decizie ın care orice raspuns

pozitiv este corect, dar pentru care un raspuns

negativ poate fi incorect.

In mod similar se defineste algoritmul Monte -

Carlo negativ.

Un algoritm Monte - Carlo pozitiv are o proba-

bilitate de eroare ε daca pentru orice problema

al carei raspuns ar trebui sa fie pozitiv, algorit-

mul da un raspuns negativ cu probabilitate cel

mult ε.

15

Page 370: Criptografie 600

Problema de descompunere:

Fiind dat un numar ıntreg n, se poate el

descompune ın produs de alte numere

supraunitare ?

Vom prezenta doi algoritmi de tip Monte Carlo

pozitiv care rezolva aceasta problema de

decizie.

16

Page 371: Criptografie 600

Algoritmul Solovay - Strassen

Definitia 3. Fie p ≥ 3 numar prim si a ∈ Z∗p.a este rest (reziduu) patratic modulo p daca

ecuatia x2 ≡ a (mod p) are solutie ın Zp.

In caz contrar, un numar a 6= 0 nu este rest

patratic.

Exemplul 3. Resturile patratice modulo 11

sunt 1,3,4,5,9.

Aceasta deoarece ın Z11 avem

(±1)2 = 1, (±5)2 = 3, (±2)2 = 4, (±4)2 = 5, (±3)2 = 9.

17

Page 372: Criptografie 600

Problema resturilor patratice: a decide daca

un numar n dat este sau nu un rest patratic.

Un algoritm determinist pentru rezolvarea

acestei probleme se bazeaza pe

Teorema 1. (Criteriul lui Euler). Daca p ≥ 3

este prim, un numar a este rest patratic

modulo p daca si numai daca

ap−12 ≡ 1 (mod p)

Definitia 4.Daca p ≥ 3 este prim, pentru orice

numar a ≥ 0 se defineste simbolul Legendre

prin(a

p

)=

0 daca a ≡ 0 (mod p)1 daca a este rest patratic modulo p−1 daca a nu este rest patratic modulo p

18

Page 373: Criptografie 600

Teorema 2. Daca p este numar prim impar,

atunci

(a

p

)≡ a

p−12 (mod p)

Generalizare simbolul lui Legendre:

Definitia 5. Fie n = pe11 . . . p

ekk un numar impar

descompus ın factori primi.

Daca a ≥ 0 este un numar ıntreg, se defineste

simbolul Jacobi prin

(a

n

)=

k∏i=1

(a

pi

)ei

19

Page 374: Criptografie 600

Exemplul 4. Sa calculam simbolul Jacobi(6278

9975

)

9975 = 3 · 52 · 7 · 19.

(6278

9975

)=(6278

3

)(6278

5

)2 (6278

7

)(6278

19

)=

=(2

3

)(3

5

)2 (6

7

)(8

19

)=

= (−1)(−1)2(−1)(−1) = −1

20

Page 375: Criptografie 600

Fie n > 1 un numar impar.

Daca n este prim, atunci pentru orice a, avem(a

n

)≡ a

n−12 (mod n).

Invers, daca n nu este prim, este posibil ca

egalitatea de sus sa fie falsa.

Daca congruenta se verifica, spunem ca n este

numar Euler pseudo - prim pentru baza a.

De exemplu, 91 este pseudo-prim pentru baza

10 deoarece(10

91

)= −1 = 1045 (mod 91).

21

Page 376: Criptografie 600

Testul de primalitate Solovay - Strassen pentru

un numar impar n:

1. Se genereaza aleator un numar a ∈ Z∗n;

2. x←−(

a

n

);

3. if x = 0 then ”n nu este prim”

4. y ←− an−12 (mod n);

5. if x ≡ y (mod n) then ”n este prim”,

else ”n nu este prim”.

22

Page 377: Criptografie 600

Pentru evaluarea an−12 (mod n) se poate folosi

un algoritm de complexitate O((log n)3).

Pentru evaluarea simbolului Jacobi(

a

n

)(fara

factorizarea lui n) se folosesc lemele:

Lema 1. Fie n un ıntreg pozitiv impar. Atunci

1. Daca x ≡ y (mod n) atunci(

x

n

)=(

y

n

);

2.(2

n

)=

{1 daca n ≡ ±1 (mod 8)−1 daca n ≡ ±3 (mod 8)

3.(

x · yn

)=(

x

n

)·(

y

n

);

Lema 2. Fie m, n doua numere ıntregi pozitiveimpare. Atunci(

m

n

)=

−(

nm

)daca m ≡ n ≡ 3 (mod 4)(

nm

)altfel

23

Page 378: Criptografie 600

Exemplul 5. Calculul(7411

9283

):

(7411

9283

)= −

(9283

7411

)= −

(1872

7411

)=

= −(

2

7411

)4 ( 117

7411

)= −

(117

7411

)=

= −(7411

117

)= −

(40

117

)=

= −(

2

117

)3 ( 5

117

)=(

5

117

)=(117

5

)=

=(2

5

)= −1

Simbolul Jacobi(

mn

)se poate calcula folosind

cel mult O(log n) reduceri modulare, fiecare ın

timp O((log n)2).

24

Page 379: Criptografie 600

Numarul de baze a pentru care un numar n

neprim este pseudo - prim Euler, este cel mult

n/2.

Deci testul de primalitate Solovay - Strassen

este un algoritm Monte Carlo pozitiv pentru

problema de descompunere, cu probabilitate de

eroare 1/2.

25

Page 380: Criptografie 600

Algoritmul Miller - Rabin

Este cunoscut si sub numele de ”testul de tarepseudo - primalitate”.

1. Se descompune n− 1 = 2km, m impar;

2. Se alege aleator ıntregul a ∈ [2, n− 2];

3. b←− am (mod n)

4. if b ≡ 1 (mod n) then ”n prim”, Stop;

5. for i←− 0 to k − 1 doif b ≡ −1 (mod n) then ”n prim”, Stop;

else b←− b2 (mod n)

6 ”n neprim”, Stop

Algoritmul are complexitatea O((log n)3).

26

Page 381: Criptografie 600

Teorema 3. Algoritmul Miller - Rabin este un

algoritm Monte Carlo pozitiv pentru problema

de descompunere.

27

Page 382: Criptografie 600

In general testul Miller - Rabin este mai bun

decat Solovay - Strassen:

1. Solovay - Strassen este mai complex din

punct de vedere computational.

2. Implementarea lui Solovay - Strasen este

mai dificila din cauza calculului simbolului

Jacobi.

3. Probabilitatea de eroare pentru Solovay -

Strasen este 1/2; la Miller - Rabin ea se

reduce la 1/4.

4. Deoarece orice valoare a lui a pentru care

testul Miller - Rabin este gresit este un

numar Euler pseudo-prim, un test Miler -

Rabin nu este niciodata inferior unui test

Solovay - Strasen.

28

Page 383: Criptografie 600

Orice implementare a unui sistem RSA trebuie

ınsotita de un generator de numere prime mari.

Varianta Bruce Schneier:

1. Genereaza un numar aleator p de n biti.

2. Verifica daca primul si ultimul bit sunt 1.

3. Verifica daca p nu este divizibil cu numere

prime mici (3,5,7,11, . . .).

4. Aplica testul Miller - Rabin cu o valoare

aleatoare a. Daca p trece testul, se ia alta

valoare pentru a.

Pentru viteza, se iau valori mici pentru a.

Cinci teste sunt suficiente. Daca p esueaza

la unul din ele, algoritmul se reia.

29

Page 384: Criptografie 600

Securitatea sistemului RSA

RSA nu rezista la un atac de tipul man-in-the

middle.

De aceea, un sistem RSA este ınsotit perma-

nent de un certificat generat conform unui pro-

tocol PKI (Public Key Infrastructure) si –

bineınteles – de un generator de numere prime.

30

Page 385: Criptografie 600

Informatii despre p si q

Cunoasterea lui φ(n) este suficienta pentru

spargerea sistemului.

In acest caz, totul se reduce la rezolvarea

(ın N ×N) sistemului

{pq = n

(p− 1)(q − 1) = φ(n)

sau - dupa substitutie - a ecuatiei

X2 − (n− φ(n) + 1)X + n = 0

Deci, daca Oscar determina φ(n), el poate fac-

toriza n si sparge sistemul.

Cu alte cuvinte, calculul lui φ(n) nu este mai

simplu decat factorizarea lui n.

31

Page 386: Criptografie 600

Alta slabiciune consta ın alegerea unor numere

p, q prime apropiate unul de altul.

In acest caz (cu p > q), vom avea (p − q)/2

un numar foarte mic, iar (p + q)/2 un numar

foarte apropiat de√

n.

In plus,

(p + q)2

4− n =

(p− q)2

4,

deci membrul stang este patrat perfect.

Atunci, pentru factorizarea lui n se testeaza

toate numerele ıntregi x >√

n pana se gaseste

unul astfel ıncat x2 − n este patrat perfect;

fie acesta y2.

Atunci vom avea imediat p = x + y, q = x− y.

32

Page 387: Criptografie 600

Exemplul 6. Pentru n = 97343 se gaseste√

n = 311,998.

Apoi 3122 − n = 1, ceea ce conduce la

factorizarea p = 313, q = 311.

Deci, ın general este recomandabil ca cele doua

numere prime p si q sa difere prin numarul de

biti.

33

Page 388: Criptografie 600

Factorizarea modulului

stiind exponentul de decriptare

Daca exista un algoritm care calculeaza expo-

nentul de decriptare a, acesta poate fi utilizat

ca oracol ıntr-un algoritm probabilist care

descompune n.

Definitia 6. Fie ε (0 ≤ ε < 1). Un algoritm tip

Las Vegas este un algoritm probabilist care,

pentru orice aparitie a unei probleme, poate

oferi un raspuns - totdeauna corect - sau poate

esua si sa nu dea nici un raspuns, cu probabili-

tate ε.

Deci, daca avem un algoritm Las Vegas pentru

rezolvarea unei probleme, putem sa ıl apelam

de mai multe ori, pana se obtine un raspuns.

Probabilitatea ca el sa nu raspunda la m ten-

tative consecutive este εm.34

Page 389: Criptografie 600

Fie A un algoritm (ipotetic) care calculeaza

exponentul de decriptare a plecand de la expo-

nentul de criptare b.

Se poate defini un algoritm Las Vegas care

utilizeaza A ca oracol.

El este bazat pe studiul radacinilor patrate ale

unitatii modulo n, cand n = pq, p si q fiind

numere prime impare.

35

Page 390: Criptografie 600

In acest caz x2 ≡ 1 (mod p) are ca singure

solutii x ≡ ±1 (mod p).

La fel, x2 ≡ 1 (mod q).

Din Teorema chineza a resturilor rezulta ca

congruenta x2 ≡ 1 (mod n) este echivalenta

cu x2 ≡ 1 (mod p) si x2 ≡ 1 (mod q).

Deci sunt patru radacini patrate ale unitatii

modulo n.

Doua sunt solutiile triviale ±1 (mod n),

iar celelalte - numite netriviale - sunt opuse

modulo n.

Exemplul 7. Fie n = 403 = 13 · 31.

Cele patru radacini patrate ale lui 1 modulo

403 sunt 1,92,311 si 402.

36

Page 391: Criptografie 600

Sa presupunem ca x este o radacina patratanetriviala a lui 1 modulo n, deci o solutie aecuatiei x2 ≡ 1 (mod n).Avem

n|(x− 1)(x + 1)

Rezultacmmdc(x + 1, n) = p, cmmdc(x− 1, n) = q.

Algoritm:

1. Se genereaza aleator w ∈ Z∗n, w 6= 1;2. x←− cmmdc(w, n);3. if x > 1 then Stop (cu p = x sau q = x);4. a←− A(b);5. Se descompune ab− 1 = 2sr, r impar;6. v ←− wr (mod n);7. if v ≡ 1 (mod n) then Stop (esec);8. while v 6≡ 1 (mod n) do

8.1. v0 ←− v;8.2. v ←− v2 (mod n);

9. if v0 ≡ −1 (mod n) then Stop (esec);else x←− cmmdc(v0 + 1, n), Stop (p = x).

37

Page 392: Criptografie 600

Exemplul 8. Fie

n = 89855713, b = 34986517, a = 82330933

si sa consideram ca s-a tras aleator w = 5.

ab− 1 = 23 · 360059073378795.

La pasul 6 se obtine v = 85877701,

iar la pasul 8.2, v = 1.

La pasul 9 se va obtine atunci

cmmdc(85877702, n) = 9103

Al doilea factor al lui n este n/9103 = 9871.

Lema 3. Procedeul descris este un algoritm.

Se poate arata ca acest algoritm se termina cu

succes cu probabilitate 1/2.

38

Page 393: Criptografie 600

Atacul lui Wiener

Atac asupra sistemului de criptare RSA ın care

exponentul de decriptare a este mic.

Conditii de atac

3a < n1/4, q < p < 2q.

Din a · b ≡ 1 (mod φ(n)) rezulta ca exista un

ıntreg t astfel ca

a · b− t · φ(n) = 1.

Sau ∣∣∣∣∣ b

φ(n)−

t

a

∣∣∣∣∣ = 1

a · φ(n)

Folosind φ(n) = (p − 1)(q − 1) si n = pq > q2

se poate ajunge la evaluarea∣∣∣∣ bn − t

a

∣∣∣∣ <1

a · n1/4<

1

3 · a2.

39

Page 394: Criptografie 600

Rezulta ca valoarea fractiei t/a este foarteapropiata de valoarea lui b/n.

Din teoria fractiilor continue se stie ca oriceaproximare suficient de buna a lui b/n este unadin convergentele dezvoltarii ın fractiecontinua a lui b/n.Definitia 7. O fractie continua (finita) este unm-tuplu [q1, q2, . . . , qm] de numere naturale carereprezinta notarea expresiei

q1 +1

q2 + 1q3+...+ 1

qm

Fie a, b doua numere ıntregi pozitive prime ıntreele si (q1, q2, . . . , qm) secventa caturilor obtinuteprin aplicarea algoritmului lui Euclid.

Atuncia

b= [q1, q2, . . . , qm].

[q1, q2, . . . , qm] este dezvoltarea ın fractie con-tinua a lui a/b.

40

Page 395: Criptografie 600

Acum, pentru fiecare j (1 ≤ j ≤ m) definim

Cj = [q1, q2, . . . , qj] ca fiind a j-a convergenta

a lui [q1, q2, . . . , qm].

Fiecare Cj se poate scrie ca un numar rational

cj/dj, unde valorile cj si dj se definesc recursiv:

cj =

1 daca j = 0q1 daca j = 1qj · cj−1 + cj−2 daca j ≥ 2

dj =

0 daca j = 01 daca j = 1qj · dj−1 + dj−2 daca j ≥ 2

41

Page 396: Criptografie 600

Exemplul 9. Sa dezvoltam ın fractie continua

34/99.

Folosind algoritmul lui Euclid se obtine

[0,2,1,10,3],

care este notarea fractiei

34

99= 0 +

1

2 + 11+ 1

10+13

Convergentele sunt:

[0] = 0[0,2] = 1/2

[0,2,1] = 1/3[0,2,1,10] = 11/32

[0,2,1,10,3] = 34/99

42

Page 397: Criptografie 600

Teorema 4. Dacacmmdc(a, b) = cmmdc(c, d) = 1 si∣∣∣ab − c

d

∣∣∣ < 12·d2

atunci c/d este una din convergentele dezvolta-rii ın fractie continua a lui a/b.

In conditiile 3a < n1/4 si q < p < 2q, exista unalgoritm de factorizare a lui n:

1. Plecand de la n si b (publice), se afla dez-voltarea ın fractie continua a lui b/n (algo-ritmul lui Euclid).

2. Se parcurg pe rand convergentele acesteidezvoltari.Daca exista convergenta t/a care verifica

t|(a · b− 1), se calculeaza φ(n) =a · b− 1

t.

3. Cu n si φ(n) se afla p si q.

43

Page 398: Criptografie 600

Detalierea algoritmului lui Wiener:

Intrare: [q1, q2, . . . , qm] - dezvoltarea ın fractie

continua a lui b/n.

Algoritm:

1 c0 ←− 1, c1 ←− q1, d0 ←− 0, d1 ←− 1;

2. for j ←− 1 to m do

2.1. if cj|(dj · b− 1) then

2.1.1. m←− (dj · b− 1)/cj;

2.1.2. Fie p, q radacinile x2 − (n−m + 1)x + n = 0

2.1.3. if p, q ∈ Zn then return(p, q);

2.2. j ←− j + 1;

2.3. cj ←− qj · cj−1 + ck−2, dj ←− qj · dj−1 + dj−2;

3. return(”esec”);

44

Page 399: Criptografie 600

Exemplul 10. Fie

n = 160523347, b = 60728973.

Dezvoltarea ın fractie continua a lui b/n este

[0,2,1,1,1,4,12,102,1,1,2,3,2,2,36]

Primele convergente sunt: 0,1

2,1

3,2

5,3

8,14

37. . .

Primele cinci convergente nu verifica conditia

de divizibilitate.

Pentru 14/37 avem:

m =37 · 60728973− 1

14= 160498000

Din ecuatia x2 − 25348x + 160523347 = 0

se afla radacinile 12347 si 13001.

S-a gasit factorizarea

160523347 = 12347 · 13001

45

Page 400: Criptografie 600

Informatie partiala despre textul clar

Este posibil sa existe informatie ın textul clar

care ar putea trada sistemul RSA.

Stiind y = eK(x), vom considera doua exemple

de informatie partiala data de y despre x:

1. par(y) - da valoarea ultimului bit din scrie-

rea binara a lui x;

2. jum(y) - va da 0 daca x ∈ [0, n/2),

1 daca x ∈ [n/2, n− 1].

46

Page 401: Criptografie 600

Orice algoritm care poate calcula par(y) sau

jum(y) poate fi utilizat ca oracol pentru regasi-

rea textului clar x.

Altfel spus, a calcula una din aceste functii este

la fel de dificil cu a decripta tot textul y.

Cele doua functii sunt polinomial echivalente

deoarece

jum(y) = par(y · eK(2) mod n)

par(y) = jum(y · eK(2−1) mod n)

si eK(x1x2) = eK(x1)eK(x2).

47

Page 402: Criptografie 600

Se poate calcula x = dK(y) cu ajutorul unui

oracol care da valoarea jum(y):

1. k ←− [log2n];

2. for i = 0 to k do

2.1. yi ←− jum(y)

2.2. y ←− (y · eK(2)) mod n

3. jos←− 0;

4. sus←− n;

5. for i = 0 to k do

5.1. mijloc←− (jos + sus)/2;

5.2. if yi = 1 then jos←− mijloc

else sus←− mijloc

6. x←− [sus]

Practic, x este localizat printr-o cautare

binara realizata de pasul 5.

48

Page 403: Criptografie 600

Exemplul 11. Fie n = 1457, b = 779,si textul criptat y = 722.

Calculam eK(2) = 946.

Sa presupunem ca oracolul jum da urmatoareleraspunsuri (pasul 2.1):

i 0 1 2 3 4 5 6 7 8 9 10yi 1 0 1 0 1 1 1 1 1 0 0

Cautarea binara este realizata ın tabelul:i jos mijloc sus0 0,00 728,50 1457,001 728,50 1092,75 1457,002 728,50 910,62 1092,753 910,62 1001,69 1092,754 910,62 956,16 1001,695 956,16 978,92 1001,696 978,92 990,30 1001,697 990,30 996,00 1001,698 996,00 998,84 1001,699 998,84 1000,26 1001,69

10 998,84 999,55 1000,26998,84 999,55 999,55

Textul clar este deci x = [999,55] = 999.

49

Page 404: Criptografie 600

Algoritmi de descompunere ın factori primi

Sunt extrem de numeroase lucrarile care tra-

teaza descompunerea ın factori primi.

Vom face doar o trecere ın revista a celor mai

cunoscuti algoritmi de factorizare.

Cel mai simplu pare a fi ciurul lui Eratostene

care consta ın ıncercarea de ımparti numarul

n impar prin toate numerele ıntregi impare din

intervalul [3,√

n].

Pentru n < 1012 tehnica este destul de efi-

cienta.

50

Page 405: Criptografie 600

Metoda p− 1

Enuntata de Pollard ın 1974.

Sunt folosite trei variabile de intrare: numarul

n (impar) care trebuie descompus, o margine

B si un numar oarecare g ∈ [2, n− 1].

Intrare: n, B, g.

1. a←− g

2. for j = 2 to B do a←− aj mod n

3. d←− cmmdc(a− 1, n)

4. if d > 1 then ”d este factor al lui n”, Stop

else ”nu s-a gasit divizor al lui n”

51

Page 406: Criptografie 600

Exemplul 12. Fie n = 15770708441.

Aplicand metoda p− 1 cu B = 180, se gaseste

a = 11620221425, iar d = 135979.

Se ajunge la descompunerea finala

15770708441 = 135979 · 115979.

Descompunerea a reusit deoarece 135978 are

numai factori primi ”mici”:

135978 = 2 · 3 · 131 · 173.

Luand deci B ≥ 173 se obtine 135978|B!.

52

Page 407: Criptografie 600

Remarca 1. Conditia ca metoda sa functione-

ze este ca divizorii primi la puterile la care

apar ın descompunerea lui p − 1 sa fie mai

mici decat b.

Daca s-ar solicita ca doar divizorii primi sa

verifice aceasta conditie, rezultatul ar fi fals.

Astfel, sa consideram p = 17 si B = 3.

Atunci p− 1 = 24. Vom avea 2 < 3 dar 16 nu

este un divixor al lui 3 !!

Pentru valori relativ mici ale lui B algoritmul

este de complexitate (O(BlogB(log n)3)).

Metoda p − 1 nu este mai rapida decat ciurul

lui Eratostene.

Pentru a rezista la acest atac, se recomanda

folosirea numerelor prime tari.

53

Page 408: Criptografie 600

Definitia 8. Se numeste numar prim tare un

numar prim p care verifica conditiile:

1. p− 1 are un divizor prim mare r;

2. p + 1 are un divizor prim mare;

3. r − 1 are un divizor prim mare.

54

Page 409: Criptografie 600

Algoritmul lui Gordon de generare a numerelorprime tari:

1. Se genereaza aleator doua numere primemari s, t distincte.

2. Se alege un numar aleator i0.Se afla primul numar prim de forma2 · i · t + 1, unde i←− i0, i0 + 1, . . ..

Fie r = 2 · i · t + 1 acest numar prim.

3. p0 ←− 2 · (sr−2 (mod r)) · s− 1;

4. Se alege un numar aleator j0.Se afla primul numar prim de formap0 + 2 · j · r · s, unde j ←− j0, j0 + 1, . . ..Fie p = p0 + 2 · j · r · s acest numar prim.

5. return(p)

Numarul p generat de algoritmul Gordon esteun numar prim tare.

55

Page 410: Criptografie 600

Generarea unui numar prim tare se realizeaza

ın trei pasi:

- Cu un generator de numere aleatoare, se

genereaza numerele s, t, i0, j0;

- Se testeaza daca s si t sunt numere prime,

folosind algoritmul Miller - Rabin;

- In caz afirmativ, se aplica algoritmul lui

Gordon, bazat de asemenea pe algoritmul

Miller - Rabin.

De multe ori, pentru criptarea RSA este

suficient sa se foloseasca numere prime mari

p cu proprietatea cap− 1

2este de asemenea

numar prim.

56

Page 411: Criptografie 600

Exemplul 13. In practica este folosit frecvent

exponentul de criptare b = 3.

In acest caz ınsa, este necesar ca p− 1 si q− 1

sa nu fie divizibile cu 3.

Rezultatul este o criptare extrem de rapida,

deoarece se foloseste o singura ınmultire

modulara si o singura ridicare la patrat (tot

modulara).

De asemenea este utilizat des si exponentul de

criptare

b = 216 + 1 = 65537.

Acest numar are numai doi de 1 ın reprezen-

tarea binara, asa ca o criptare foloseste 16

ridicari la patrat modulare si o ınmultire mo-

dulara.

57

Page 412: Criptografie 600

Algoritmul lui Dixon si sita patratica

Daca se pot afla doua numere x, y cu

x 6≡ y (mod n) dar x2 ≡ y2 (mod n), atunci

cmmdc(x − y, n) este un divizor netrivial al lui

n.

Metoda utilizeaza o baza B de factori primi

”mici”.

Se cauta ıntai mai multe numere x pentru care

divizorii primi ai lui x2 mod n sunt ın B.

Se formeaza apoi produse cu aceste numere,

ın asa fel ıncat fiecare factor prim al patratului

produsului sa apara de un numar par de ori.

Aceasta conduce la o relatie x2 ≡ y2 (mod n)

care va da – eventual – o descompunere a lui

n.

58

Page 413: Criptografie 600

Exemplul 14. Fie n = 15770708441 si alegemmultimea

B= {2,3,5,7,11,13}.

Selectam

83409341562 ≡ 3 · 7 (mod n)120449429442 ≡ 2 · 7 · 13 (mod n)27737000112 ≡ 2 · 3 · 13 (mod n)

Produsul lor este(8340934156 · 12044942944 · 2773700011)2 ≡≡ (2 · 3 · 7 · 13)2 (mod n).

Reducand continutul parantezelor modulo n,se obtine

95034357852 ≡ 5462 (mod n).

Atuncicmmdc(9503435785− 546,15770708441) = 115759

da 115759 drept divizor al lui n.

59

Page 414: Criptografie 600

Fie B= {p1, p2, . . . , pB}.Consideram un numar C > B si presupunem ca

am gasit C relatii de forma

x2j ≡ p

α1j1 · pα2j

2 · . . . · pαBjB 1 ≤ j ≤ C

Pentru fiecare j se considera vectorul binar

αj = (α1j, . . . , αBj) ∈ ZB2 .

Daca se poate determina o submultime a

acestor vectori a caror suma modulo 2 sa fie

(0,0, . . . ,0), atunci patratul produsului elemen-

telor xj corespunzatoare va avea fiecare divizor

ın B de un numar par de ori.

60

Page 415: Criptografie 600

Exemplul 15. Revenind la Exemplul anterior,

cei trei vectori care se construiesc sunt

α1 = (0,1,0,1,0,0),

α2 = (1,0,0,1,0,1),

α3 = (1,1,0,0,0,1).

Se verifica imediat ca

α1 + α2 + α3 ≡ (0,0,0,0,0,0) (mod 2)

61

Page 416: Criptografie 600

Atac bazat pe proprietati multiplicative

ale criptarii RSA

Fie m1, m2 doua texte clare si c1 respectiv c2textele criptate corespunzatoare.

Vom avea

(m1m2)b ≡ mb

1mb2 ≡ c1c2 (mod n)

Atac cu text clar ales:

Oscar vrea sa decripteze c = mb (mod n),

mesaj trimis de Bob lui Alice.

El alege un numar aleator x ∈ Z∗n, calculeaza

c1 = c · xb (mod n) si solicita decriptarea lui.

Afla m1 = ca1 (mod n).

Deoarece

m1 ≡ ca1 ≡ ca(xb)a ≡ mx (mod n)

Oscar va afla imediat m = m1 · x−1 (mod n).

62

Page 417: Criptografie 600

Atac bazat pe un exponent mic de criptare

In general, exponenti mici de criptare asigurao securitate redusa pentru mesajele mici m:daca m < n1/b atunci textul clar poate fi dedusdin textul criptat c = mb calculand radacina deordin b a lui c.

Alice trimite acelasi text clar m la trei desti-natari diferiti, care au modulele ni, dar acelasiexponent de criptare b = 3.

Textele criptate vor fici = m3 (mod ni) i = 1,2,3.

Oscar le intercepteaza si rezolva sistemul

x ≡ ci (mod ni), i = 1,2,3

folosind teorema chineza a resturilor.Fie x ∈ [0, n1 · n2 · n3) solutia sistemului.

Deoarece m3 < n1·n2·n3, va rezulta ca x = m3.

Acum Oscar afla m extragand radacina deordinul 3 din solutia x.

63

Page 418: Criptografie 600

Folosirea unui modul comun de criptare decatre mai multi utilizatori permite de aseme-nea un atac.

Alice trimite acelasi mesaj m catre doi uti-lizatori care au cheile publice b1, b2 dar acelasimodul n.

Deci

c1 ≡ mb1 (mod n), c2 ≡ mb2 (mod n).

Vom presupune cmmdc(b1, b2) = 1.

Oscar foloseste algoritmul lui Euclid pentru adetermina numerele ıntregi r, s astfel ca

r · b1 + s · b2 = 1

Unul din numerele r sau s este negativ; sa pre-supunem ca este r).

Atunci Oscar obtine textul clar m folosind ega-litatea

(c−11 )−r · cs

2 ≡ m (mod n)

64

Page 419: Criptografie 600

Sistemul de criptare Rabin

Sistemul (propus ın 1979) este o varianta a sis-

temului RSA, cu o securitate de calcul echiva-

lenta.

Fie n = pq cu p, q numere prime distincte si

p ≡ 3 (mod 4), q ≡ 3 (mod 4).

P = C= Zn,

K= {(n, p, q, B) | 0 ≤ B ≤ n− 1}.

Pentru cheia K = (n, p, q, B) se definesc:

eK(x) = x(x + B) (mod n)

dK(y) =

√B2

4+ y −

B

2

65

Page 420: Criptografie 600

Exista patru texte clare distincte care se pot

cripta ın acelasi text.

Fie α una din cele patru radacini patrate mod

n ale unitatii, si x ∈ Zn.

Efectuam calculele (ın Zn):

eK

(x +

B

2

)−

B

2

)= α2

(x +

B

2

)2

−(

B

2

)2

= x2 + Bx = eK(x)

(ımpartirea la 2 si 4 s-a facut prin ınmultirea

ın Zn cu 2−1 respectiv 4−1).

Cele patru texte clare care se cifreaza ın eK(x)

sunt

x, −x−B, α(x + B/2)−B/2,

− α(x + B/2)−B/2.

In general, Bob nu are nici un mijloc de a dis-

tinge care din cele patru mesaje este cel corect,

daca nu dispune de informatii suplimentare.

66

Page 421: Criptografie 600

Bob primeste mesajul criptat y si ıncearca sa

sa determine x astfel ca x2 + Bx ≡ y (mod n).

Termenul de gradul 1 al acestei ecuatii se

elimina cu substitutia x1 = x + B/2.

Se ajunge la ecuatia

x21 ≡

B2

4+ y (mod n).

Notand membrul drept cu C, aceasta ecuatie

se scrie x21 ≡ C (mod n).

Deci decriptarea se reduce la extragerea

radacinilor patrate modulo n; operatie echiva-

lenta cu rezolvarea sistemului

x21 ≡ C (mod p) x2

1 ≡ C (mod q)

care, prin combinarea solutiilor fiecarei ecuatii

va da patru radacini patrate modulo n.

67

Page 422: Criptografie 600

Daca p ≡ 3 (mod 4), exista o formula simpla

pentru extragerea radacinilor patrate dintr-un

rest patratic C modulo p.

Avem (calcule modulo p):(±C(p+1)/4

)2≡ C(p+1)/2 ≡ C(p−1)/2C ≡ C

Cele patru radacini patratice sumt

±C(p+1)/4 (mod p), ±C(q+1)/4 (mod q).

Pe baza teoremei chineze a resturilor, ele dau

cele patru radacini patrate ale lui C.

In final se afla x = x1 − B/2, rezultat care da

formula de decriptare pentru sistemul Rabin.

Remarca 2. Nu se cunoaste un algoritm poli-

nomial determinist pentru aflarea radacinilor

patratice mod p pentru p ≡ 1 (mod 4); ın acest

caz exista doar algoritmi Las Vegas.

68

Page 423: Criptografie 600

Exemplul 16. Fie n = 77 = 7 · 11 si B = 9.

Functia de criptare esteeK(x) = x2 + 9x (mod 77)

iar cea de decriptaredK(y) =

√1 + y − 43 (mod 77).

Bob vrea sa decripteze textul y = 22.

El va trebui sa determine radacinile patrate alelui 23 modulo 7 si 11:

23(7+1)/4 ≡ 22 ≡ 4 (mod 7)

23(11+1)/4 ≡ 13 ≡ 1 (mod 11).

Folosind teorema chineza a resturilor, se obtinvalorile ±10, ±32.

Textele clare (calculate mod 77):10− 43 = 44, 67− 43 = 24,

32− 43 = 66, 45− 43 = 2.

Toate se cripteaza ın 22.

69

Page 424: Criptografie 600

Securitatea sistemului de criptare Rabin.

Sa presupunem ca exista un algoritm de de-criptare A; acesta poate fi utilizat ıntr-un al-goritm Las Vegas care descompune modulul n

cu probabilitate 1/2:

1. Se alege aleator r ∈ Zn;2. y ←− r2 −B2/4 mod n;3. x←− A(y);4. x1 ←− x + B/2;5. if x1 ≡ ±r (mod n) then Stop (esec)

else cmmdc(x1 + r, n) = p, Stop

Deoarece y = eK

(r −

B

2

), x se decripteaza la pasul 3

sub forma r −B/2.

La pasul 5 avem x21 ≡ r2 (mod n); deci x1 ≡ ±r (mod n)

sau x1 ≡ ±αr (mod n), unde α este o radacina netrivialamodulo n a unitatii.

In al doilea caz, n|(x1−r)(x1+r) si n nu divide nici unuldin cei doi factori.

Deci, calculul lui cmmdc(x1 + r, n) sau cmmdc(x1 − r, n)

va da p sau q, adica o descompunere a lui n.

70

Page 425: Criptografie 600

Sistemul de criptare El Gamal

1

Page 426: Criptografie 600

Descrierea algoritmului

Sistemul de criptare El Gamal decris ın 1985 de

Taher ElGamal, se bazeaza pe problema loga-

ritmului discret (PLD), care este urmatoarea:

Fie p numar prim si α, β ∈ Zp, β 6= 0.

Sa se determine a ∈ Zp−1 astfel ca

αa ≡ β (mod p).

Acest ıntreg a – daca exista – este unic

si se noteaza logαβ.

2

Page 427: Criptografie 600

Exemplul 1. Fie p = 11 si α = 6.

Toate elementele din Z∗11 pot fi exprimate ca

puteri ale lui α:

a 0 1 2 3 4 5 6 7 8 96a (mod 11) 1 6 3 7 9 10 5 8 4 2

Rezulta imediat tabelul logaritmilor ın baza 6:

β 1 2 3 4 5 6 7 8 9 10log6β 0 9 2 8 6 1 3 7 4 5

Pentru α = 3 ınsa nu vom avea totdeauna

solutie.

Deoarece

a 0 1 2 3 4 5 6 7 8 93a (mod 11) 1 3 9 5 4 1 3 9 5 4

valorile β ∈ {2,6,7,8,10} nu pot fi exprimate

ca logaritmi ın baza 3.

Altfel spus, ecuatia log3x = β nu are solutie ın

Z11 pentru aceste valori ale lui β.

3

Page 428: Criptografie 600

Daca se face o alegere convenabila a lui p, PLD

este NP - completa.

Pentru siguranta, p se alege de minim 512 biti,

iar p− 1 are cel putin un divizor prim ”mare”.

Pentru un astfel de modul p, spunem ca

problema logaritmului discret este dificila ın Zp.

Desi este foarte dificil de calculat un logaritm

discret, operatia inversa – de exponentiere –

este foarte simpla.

4

Page 429: Criptografie 600

Sistemul de criptare El Gamal:

Fie p numar prim pentru care PLD este dificila

ın Zp, si fie α ∈ Z∗p primitiv.

Definim P= Z∗p , C= Z∗p × Z∗p si

K= {(p, α, a, β) | β ≡ αa (mod p)}.

Valorile p, α, β sunt publice, iar a este secret.

Pentru K = (p, α, a, β) si k ∈ Zp−1 aleator

(secret) se defineste

eK(x, k) = (y1, y2)

unde y1 = αk (mod p), y2 = x · βk (mod p).

Pentru y1, y2 ∈ Z∗p se defineste

dK(y1, y2) = y2 · (ya1)−1 (mod p)

5

Page 430: Criptografie 600

Verificarea:

y2 · (ya1)−1 ≡ x · βk · (αka)−1 ≡ x · βk(βk)−1 ≡ x (mod p)

Sistemul este nedeterminist: criptarea depinde

de x si de o valoare aleatoare aleasa de Alice.

Exista deci mai multe texte criptate corespun-

zatoare unui anumit text clar.

6

Page 431: Criptografie 600

Exemplul 2. Fie p = 2579, α = 2, a = 765.

Prin calcul se obtine

β = 2765 (mod 2579) = 949.

Sa presupunem ca Alice vrea sa trimita mesajul

x = 1299.

Ea alege aleator k = 853 si calculeaza

y1 = 2853 = 435, apoi

y2 = 1299 · 949853 = 2396

(toate calculele se fac modulo 2579).

Cand Bob primeste mesajul criptat

y = (435,2396),

el va determina

x = 2396 · (435765)−1 = 1299 (mod 2579).

7

Page 432: Criptografie 600

Remarca 1.

1. Dezavantaj al sistemului El Gamal:se dubleaza lungimea textului criptat (compa-rativ cu lungimea textului clar).

2. Daca (y1, y2), (z1, z2) sunt textele criptateale mesajelor m1, m2 atunci (y1z1, y2z2) este untext criptat pentru m1m2.Similar poate fi dedusa o criptare pentru 2m1(sau 2m2).Acest lucru face sistemul El Gamal permeabilla un atac cu text clar ales.

3. Pentru criptarea a doua texte diferite tre-buie folosite valori diferite ale parametrului k.

Sa presupunem ca textele m1, m2 au fost crip-tate ın (y1, y2) respectiv (z1, z2) folosind acelasik.

Atunci y2/z2 = m1/m2 si cunoasterea unuia dinmesaje ın determina imediat pe celalalt.

8

Page 433: Criptografie 600

Calculul logaritmului discret

Fie p numar prim si α o radacina primitiva deordinul p− 1 a unitatii.

PLD se poate reformula astfel:

Fiind dat un β ∈ Z∗p, sa se determine expo-

nentul a ∈ Zp−1 astfel ca αa ≡ β (mod p).

Problema se poate rezolva printr-o cautare di-recta (se calculeaza puterile lui α) ın timp O(p)si folosind O(1) memorie.

Pe de-alta parte, daca se calculeaza anteriorıntr-o tabela toate valorile (a, αa mod p), afla-rea valorii cautate se poate face ın O(1), darcu un spatiu de complexitate O(p).

Toti algoritmii construiti pentru calculul loga-ritmului discret stabilesc un compromis spatiu- timp.

9

Page 434: Criptografie 600

Algoritmul Shanks

Fie m =⌈√

p− 1⌉.

1. Se construieste lista

L1 = {(j, αmj (mod p)) | 0 ≤ j ≤ m− 1};

2. Se construieste lista

L2 = {(i, βα−i (mod p)) | 0 ≤ i ≤ m− 1};

3. Se determina perechile

(j, y) ∈ L1, (i, y) ∈ L2.

4. Se defineste

logαβ = m · j + i (mod (p− 1))

10

Page 435: Criptografie 600

Prin alegerea perechilor (j, y) ∈ L1, (i, y) ∈ L2

vom avea

αmj = y = βα−i, deci αmj+i = β.

Invers, pentru orice β putem scrie

logαβ = m · j + i

cu 0 ≤ i, j ≤ m− 1.

Deci cautarea de la pasul 3 se termina tot-

deauna cu succes.

Implementarea algoritmului Shanks se poate

face ın timp O(m) si spatiu O(m).

11

Page 436: Criptografie 600

Exemplul 3. Daca p = 809, sa aflam log3525.

Avem deciα = 3, β = 525, m = d

√808e = 29,

iar α29 mod 809 = 99.

Lista L1 a perechilor (j,99j (mod 809)):(0,1) (1,99) (2,93) (3,308) (4,559)

(5,329) (6,211) (7,664) (8,207) (9,268)(10,644) (11,654) (12,26) (13,147) (14,800)(15,727) (16,781) (17,464) (18,632) (19,275)(20,528) (21,496) (22,564) (23,15) (24,676)(25,586) (26,575) (27,295) (28,81)

Lista L2 a cuplurilor (i,525 ·(3i)−1 (mod 809)):(0,525) (1,175) (2,328) (3,379) (4,396)(5,132) (6,44) (7,554) (8,724) (9,511)(10,440) (11,686) (12,768) (13,256) (14,355)(15,388) (16,399) (17,133) (18,314) (19,644)(20,754) (21,521) (22,713) (23,777) (24,259)(25,356) (26,658) (27,489) (28,163)

Parcurgand cele doua liste se gaseste(10,644) ∈ L1, (19,644) ∈ L2.

Deci log3525 = 29 · 10 + 19 = 309.

Se verifica usor ca 3309 ≡ 525 (mod 809).

12

Page 437: Criptografie 600

Algoritmul Pohlig - Hellman

Un rezultat complementar (matematic):

Lema 1. Fie x ∈ Zp un element primitiv.

Atunci

xm ≡ xn (mod p)⇐⇒ m ≡ n (mod (p− 1))

Pentru sistemul de criptare El Gamal:

fie descompunerea ın factori primi

p− 1 =k∏

i=1

qcii .

Daca s-ar putea calcula a (mod qcii ) pentru toti

i = 1, . . . , k, atunci – folosind Teorema chineza

a resturilor – s-ar putea determina

a mod (p− 1).

13

Page 438: Criptografie 600

Fie q numar prim astfel ca p − 1 ≡ 0 (mod qc)

si p− 1 6≡ 0 (mod qc+1).

Sa aratam cum se poate calcula atunci

x ≡ a (mod qc) pentru orice x, (0 ≤ x ≤ qc− 1).

Sa descompunem ıntai x ın baza q folosind

egalitatea

x =c−1∑i=0

aiqi (0 ≤ ai ≤ q − 1, 0 ≤ i ≤ c− 1)

Atunci, se poate scrie a = x + qc · s pentru un

anumit numar ıntreg pozitiv s.

14

Page 439: Criptografie 600

La primul pas trebuie calculat a0.

Observatie:

β(p−1)/q ≡ α(p−1)a0/q (mod p).

Se determina β(p−1)/q (mod p).

Daca β(p−1)/q ≡ 1 (mod p), atunci a0 = 0.

Altfel se calculeaza ın Zp γ = α(p−1)/q, γ2, . . .

pana se obtine un numar ıntreg pozitiv i pentru

care γi ≡ β(p−1)/q.

Atunci a0 = i.

Daca c = 1, algoritmul se termina;

altfel (c > 1), se cauta valoarea lui a1.

15

Page 440: Criptografie 600

Pentru aceasta se defineste

β1 = βα−a0

si se noteaza x1 = logαβ1 (mod qc).

Deoarece (evident) x1 =c−1∑i=1

aiqi, se va ajunge

la relatia β(p−1)/q2

1 ≡ α(p−1)a1/q (mod p).

Se calculeaza atunci β(p−1)/q2

1 (mod p) si se

cauta i astfel ca

γi ≡ β(p−1)/q2

1 (mod p).

Se ia a1 = i.

Daca c = 2, s-a terminat; ın caz contrar, se

mai efectueaza c− 2 pasi pentru determinarea

coeficientilor a2, . . . , ac−1.

16

Page 441: Criptografie 600

Formal, algoritmul Pohlig - Hellman este:

1. Se calculeaza

γi = α(p−1)i/q (mod p), 0 ≤ i ≤ q − 1;

2. β0 ←− β;

3. for j = 0 to c− 1 do

3.1 δ ←− β(p−1)/qj+1

j (mod p);

3.2. Se cauta i astfel ca δ = γi;

3.3. aj ←− i;

3.4. βj+1 ←− βjα−ajq

jmod p.

Algoritmul calculeaza a0, a1, . . . , ac−1

unde logαβ (mod qc) =c−1∑i=0

aiqi.

17

Page 442: Criptografie 600

Exemplul 4. Fie p = 29.

Avem n = p− 1 = 28 = 2271.

Alegem α = 2, β = 18 si vrem sa determinam

a = log2 18.

Pentru aceasta se va calcula

a (mod 4) si a (mod 7).

Sa ıncepem cu q = 2, c = 2.

Avem (calcule modulo 29):

γ0 = 1, γ1 = α28/2 = 214 = 28, deci

δ = β28/2 = 1814 = 28; rezulta a0 = 1.

β1 = β0 · α−1 = 9, β28/41 = 97 = 28.

Cum γ1 = 28, rezulta a1 = 1.

Avem deci a ≡ 3 (mod 4).

18

Page 443: Criptografie 600

Fie acum q = 7, c = 1.

Vom avea (modulo 29):

β28/7 = 184 = 25, γ1 = α28/7 = 24 = 16,

apoi γ2 = 24, γ3 = 7, γ4 = 25,

deci a0 = 4 si a ≡ 4 (mod 7).

Se obtine sistemul

a ≡ 3 (mod 4), a ≡ 4 (mod 7)

de unde – folosind teorema chineza a resturilor

– a ≡ 11 (mod 28).

Deci, log218 = 11 ın Z29.

19

Page 444: Criptografie 600

Algoritmul Pollard Rho

Fie p prim si α ∈ Zp un element de ordin n

(n < p).

Consideram Gα ⊆ Zp subgrupul ciclic generat

de α.

Ne punem problema calcularii lui logαβ, unde

β ∈ Gα este arbitrar.

Fie Zp = S1 ∪ S2 ∪ S3 o partitie a lui Zp ın trei

multimi de cardinale aproximativ egale;

definim functia

f : Gα × Zn × Zn −→ Gα × Zn × Zn

prin

f(x, a, b) =

(βx, a, b + 1) daca x ∈ S1(x2,2a,2b) daca x ∈ S2(αx, a + 1, b) daca x ∈ S3

20

Page 445: Criptografie 600

Pe baza acestei functii generam recursivtriplete (x, a, b) cu proprietatea x = αaβb.

Fie (1,0,0) tripletul initial.

(xi, ai, bi) =

{(1,0,0) daca i = 0f(xi−1, ai−1, bi−1) daca i ≥ 1

In faza a doua, se compara (x2i, a2i, b2i) si(xi, ai, bi) pana se gaseste un i cu x2i = xi.In acel moment,

αa2iβb2i = αaiβbi.

Notand c = logαβ, relatia poate fi rescrisa

αa2i+cb2i = αai+cbi.

Cum α are ordinul n, rezulta

a2i + cb2i ≡ ai + cbi (mod n)

sau

c(b2i − bi) ≡ ai − a2i (mod n).

Daca cmmdc(b2i − bi, n) = 1, atunci se poateobtine c:

c = (ai − a2i) · (b2i − bi)−1 (mod n)

21

Page 446: Criptografie 600

Exemplul 5. Fie p = 809 si α = 89; ordinul luiα ın Z∗809 este n = 101.

Evident β = 618 ∈ G89. Vom calcula log89618.

Sa presupunem ca alegem partitiaS1 = {x | x ∈ Z809, x ≡ 1 (mod 3)}S2 = {x | x ∈ Z809, x ≡ 0 (mod 3)}S3 = {x | x ∈ Z809, x ≡ 2 (mod 3)}

Pentru i ≥ 1 se obtin tripletele:i (xi, ai, bi) (x2i, a2i, b2i)1 (618,0,1) (76,0,2)2 (76,0,2) (113,0,4)3 (46,0,3) (488,1,5)4 (113,0,4) (605,4,10)5 (349,1,4) (422,5,11)6 (488,1,5) (683,7,11)7 (555,2,5) (451,8,12)8 (605,4,10) (344,9,13)9 (451,5,10) (112,11,13)

10 (422,5,11) (422,11,15)

Deci x10 = x20 = 422.

Se poate calcula atunci (ın Z∗809):

log89618 = (11−5) · (11−15)−1 (mod 101) = 6 ·25 (mod 101) = 49

22

Page 447: Criptografie 600

Algoritm Pollard Rho(Zp, n, α, β)

1 Se defineste partitia Zp = S1 ∪ S2 ∪ S3;

2. (x, a, b)←− f(1,0,0),

(x1, a1, b1)←− f(x, a, b)

3. while x 6= x1 do

3.1. (x, a, b)←− f(x, a, b);

3.2. (x1, a1, b1)←− f(x1, a1, b1),

(x1, a1, b1)←− f(x1, a1, b1);

4. if cmmdc(b1−b, n) > 1 then return(Esec)

else return((a−a1)·(b1−b)−1 (mod n))

procedure f(x, a, b)

1. if x ∈ S1 then f ←− (β · x, a, b + 1);

2. if x ∈ S2 then f ←− (x · x, 2 · a, 2 · b));3. if x ∈ S3 then f ←− (α · x, a + 1, b);

4. return(f).

end procedure

(toate calculele se fac modulo n).

23

Page 448: Criptografie 600

Metoda de calcul a indicelui

Seamana cu unul din cei mai buni algoritmi de

descompunere ın factori.

Se foloseste o baza de divizori B compusa din

B numere prime ”mici”.

I: Se construiesc C = B + 10 congruente mo-

dulo p de forma

αxj ≡ paij1 p

a2j2 . . . p

aBjB (mod p), (1 ≤ j ≤ C).

Cu aceste C ecuatii de necunoscute logαpi

(1 ≤ i ≤ B) se ıncearca aflarea unei solutii

unice modulo (p− 1).

In caz de reusita, primul pas este ıncheiat.

O metoda de aflare a celor C congruente: se

ia un x aleator, se determina αx (mod p) si se

verifica daca acesta are toti divizorii ın B.24

Page 449: Criptografie 600

II: Se determina logαβ cu un algoritm de tip

Las Vegas.

Se alege aleator un numar ıntreg s ∈ Z∗p−1 si se

determina γ = βαs (mod p).

Se ıncearca apoi descompunerea lui γ ın baza

B.

Daca acest lucru este posibil, se obtine o relatie

de forma

βαs ≡ pc11 p

c22 . . . p

cBB (mod p)

care poate fi transformata ın

logαβ+s ≡ c1logαp1+. . .+cBlogαpB (mod (p−1)).

Prin evaluarea membrului drept se poate de-

termina logαβ.

25

Page 450: Criptografie 600

Exemplul 6.Fie p = 10007 si α = 5 (primitiv).

Consideram baza de divizori B= {2,3,5,7}.

Cum log55 = 1, trebuie determinati doar trei

logaritmi din baza.

Trei numere aleatoare ”norocoase” pot fi

4063, 5136, 9865.

Pentru x = 4063 calculam

54063 (mod 10007) = 42 = 2 · 3 · 7,

care conduce la congruenta

log52 + log53 + log57 ≡ 4063 (mod 10006).

In mod similar se obtin

55136 (mod 10007) = 54 = 2 · 33,

59865 (mod 10007) = 189 = 33 · 7.

26

Page 451: Criptografie 600

Ele dau relatiile

log52 + 3log53 ≡ 5136 (mod 10006),

3log53 + log57 ≡ 9865 (mod 10006).

Rezolvarea acestui sistem de trei ecuatii ın

Z10006 conduce la solutia unica

log52 = 6578, log53 = 6190, log57 = 1301.

Sa presupunem ca se cauta log59451.

Daca se genereaza aleator numarul s = 7736,

avem

9451 · 57736 (mod 10007) = 8400 = 24315271.

Acesta se poate factoriza ın B. Deci

log59451 = 4log52+ log53+2log55+ log57−s =

4 · 6578 + 6190 + 2 · 1 + 1301 − 7736 = 6057

(calcule modulo 10006).

Verificare: 56057 ≡ 9451 (mod 10007).

27

Page 452: Criptografie 600

Securitatea PLD fata de informatii partiale

Un tip de atac care ıncearca sa determine va-loarea cel putin a unui bit din reprezentareabinara a logaritmilor discreti.

Se ıncearca aflarea lui Li(β): al i-lea bit (ınce-pand cu cel mai putin reprezentativ) din scrie-rea ın binar a lui logαβ peste Z∗p.Evident 1 ≤ i ≤ dlog2(p− 1)e.Lema 2. L1(β) poate fi calculat printr-un al-goritm de complexitate polinomiala.

Fie functia f : Z∗p ←− Z∗p definita

f(x) = x2 (mod p).

Notam RP (p) multimea resturilor patraticemodulo p:

RP (p) = {x | ∃y ∈ Z∗p , x ≡ y2 (mod p)}.

Avem card(RP (p)) = (p − 1)/2 (jumatate dinelementele lui Z∗p sunt resturi patratice).

28

Page 453: Criptografie 600

Fie α ∈ Zp primitiv. Deci αi ∈ RP (p) pentru i

par.

Cum (p − 1)/2 astfel de puteri sunt distincte,

rezulta

RP (p) ={α2i

∣∣∣∣ 0 ≤ i ≤p− 3

2

}.

Deci β este rest patratic daca si numai daca

logαβ este par, adica L1(β) = 0.

β este rest patratic daca si numai daca

βp−12 ≡ 1 (mod p)

fapt care poate fi testat cu un algoritm de com-

plexitate polinomiala.

Deci se poate da o formula pentru calculul lui

L1(β):

L1(β) =

{0 daca β(p−1)/2 ≡ 1 (mod p)1 altfel

29

Page 454: Criptografie 600

Lema 3. Daca p− 1 = 2s(2t + 1), atunci

1. Calculul lui Li(β) pentru 1 ≤ i ≤ s este usor.

2. Orice algoritm (sau oracol) care poate cal-

cula Ls+1(β) permite rezolvarea problemei

logaritmului discret ın Zp.

Lema 4. Daca p ≡ 3 (mod 4) si β 6= 0, atunci

L1(p− β) = 1− L1(β).

Fie acum β = αa pentru un exponent par a,

necunoscut.

Atunci

±β(p+1)/4 ≡ αa/2 (mod p)

Cum L2(β) = L1(αa/2), valoarea L2(β) poate

determina care din cele doua variante (cu +

sau −) este corecta.

30

Page 455: Criptografie 600

Acest lucru este folosit de urmatorul algoritm

care da valoarea logaritmului discret logαβ

(s-a presupus ca valoarea L2(β) se poate afla,

folosind de exemplu un oracol):

Algoritm aflare bit(p, α, β)

1. x0 ←− L1(β);

2. β ←− β/αx0 (mod p)

3. i←− 1;

4. while β 6= 1 do

4.1. xi ←− L2(β);

4.2. γ ←− β(p+1)/4 (mod p);

4.3. if L1(γ) = xi then β ←− γ

else β ←− p− γ;

4.4. β ←− β/αxi (mod p);

4.5. i←− i + 1;

5. return(xi−1, xi−2, . . . , x0).

In final, se obtine

logαβ =∑j≥0

xj · 2j.

31

Page 456: Criptografie 600

Exemplul 7. Fie p = 19, α = 2, β = 6.

Deoarece numerele sunt foarte mici, se pot de-termina usor valorile pentru L1 si L2:

x L1(x) L2(x) x L1(x) L2(x) x L1(x) L2(x)1 0 0 7 0 1 13 1 02 1 0 8 1 1 14 1 13 1 0 9 0 0 15 1 14 0 1 10 1 0 16 0 05 0 0 11 0 0 17 0 16 0 1 12 1 1 18 1 0

Pe baza acestor informatii se obtine:

x0 ←− 0, β ←− 6, i←− 1;

x1 ←− L2(6) = 1, γ ←− 5,L1(5) = 0 6= x1, β ←− 14, β ←− 7, i←− 2;

x2 ←− L2(7) = 1, γ ←− 11,L1(11) = 0 6= x2, β ←− 8, β ←− 4, i←− 3;

x3 ←− L2(4) = 1, γ ←− 17,L1(17) = 0 6= x3, β ←− 2, β ←− 1, i←− 4.

return(1,1,1,0).

Deci log26 = 11102 = 14.

32

Page 457: Criptografie 600

Generalizarea sistemului de criptare

El Gamal

Sistemul El Gamal se poate construi pentru

orice grup (ın loc de Z∗n) ın care problema loga-

ritmului (definita corespunzator) este dificila.

Fie (G, ◦) un grup finit. Problema logaritmului

discret se defineste ın G astfel:

Fie α ∈ G si H = {αi | i ≥ 0} subgrupul gene-

rat de α.

Daca β ∈ H, sa se determine un a (unic)

(0 ≤ a ≤ card(H)− 1) cu αa = β, unde

αa = α ◦ α ◦ . . . ◦ α︸ ︷︷ ︸a ori

33

Page 458: Criptografie 600

Definirea sistemului de criptare El Gamal ın

subgrupul H ın loc de Z∗n:

Fie (G, ◦) un grup si α ∈ G pentru care PLD ın

H = {αi | i ≥ 0} este dificila.

Fie P= G, C= G×G, K= {(G, α, a, β) | β = αa}.

Valorile α, β sunt publice iar a este secret.

Pentru K = (G, α, a, β) si un k ∈ Zcard(H) alea-

tor (secret), se defineste

eK(x, k) = (y1, y2) unde y1 = αk, y2 = x ◦ βk.

Pentru y = (y1, y2), decriptarea este

dK(y) = y2 ◦ (ya1)−1.

34

Page 459: Criptografie 600

Deoarece H este subgrup ciclic, orice versiunea problemei este echivalenta cu PLD ıntr-ungrup ciclic.

In schimb, se pare ca dificultatea problemei de-pinde mult de reprezentarea grupului utilizat.

De exemplu ın grupul aditiv Zn, problemaeste simpla; aici exponentierea αa este de faptınmultirea cu a modulo n.

Deci, PLD consta ın aflarea unui numar ıntrega astfel ca

aα ≡ β (mod n).

Daca se alege α astfel ca cmmdc(α, n) = 1 (αeste generator al grupului), α are un inversmultiplicativ modulo n, care se determina cualgoritmul lui Euclid extins.

Atunci,

a = logαβ = βα−1 (mod n)

35

Page 460: Criptografie 600

Reprezintarea PLD ın grupul multiplicativ Z∗pcu p prim.

Acesta este ciclic de ordin p − 1; deci izomorfcu grupul aditiv Zp−1.

Deoarece PLD se poate rezolva usor ıntr-ungrup aditiv, putem rezolva aceasta problemaın Z∗p reducand-o la Zp−1 ?

Stim ca exista un izomorfism φ : Z∗p −→ Zp−1,deci pentru care

φ(xy mod p) = (φ(x) + φ(y)) (mod (p− 1))

In particularφ(αa mod p) = aφ(α) (mod (p− 1)),

adica

β ≡ αa (mod p)⇐⇒ aφ(a) ≡ φ(β) (mod (p−1)).

Acum, determinarea lui a se realizeaza cu

logαβ = φ(β)(φ(α))−1 (mod (p− 1))

36

Page 461: Criptografie 600

Deci, daca se gaseste o metoda eficace pentru

calculul izomorfismului φ, se obtine un algoritm

eficace pentru calculul logaritmului discret ın

Z∗p.

Nu se cunoaste ınsa nici o metoda generala

de constructie a lui φ pentru un numar prim p

oarecare.

Desi se stie ca cele doua grupuri sunt izomorfe,

nu exista ınca un algoritm eficient pentru cons-

tructia explicita a unui izomorfism.

Aceasta metoda se poate aplica problemei

logaritmului discret ıntr-un grup finit arbitrar.

Implementarile au fost realizate ın general

pentru Zp, GF (2p) (unde PLD este dificila) sau

curbe eliptice.

37

Page 462: Criptografie 600

Sisteme de criptarebazate pe curbe eliptice

1

Page 463: Criptografie 600

In 1985, Victor Miller si Neal Koblitz propun– independent unul de altul – o criptografie ıncare baza de calcul sa fie multimea punctelorunei curbe eliptice.

• Asigura o eficienta sporita timp/spatiu aalgoritmilor.

”Criptografia pe curbe eliptice asigura osecuritate sporita, precum si performantesuperioare tehnicilor de criptare cu cheiepublica cunoscute pana acum.” (NSA)

Estimare NIST a marimii cheilor (ın biti)la un nivel echivalent de securitate:Sistem simetric RSA Sistem pe curbe eliptice

80 1024 160112 2048 224128 3072 256192 7680 384256 15360 521

• Ofera variante de implementare superioarepentru noi aparate matematice de calcul(exemplu: aplicatii biliniare).

2

Page 464: Criptografie 600

Aritmetica curbelor eliptice

Definitia 1. O curba eliptica E peste un corp

K este definita de ecuatia

(E) : y2+a1xy+a3y = x3+a2x2+a4x+a6(1)

a1, a2, a3, a4, a6 ∈ K si ∆ 6= 0, unde ∆ este

discriminantul lui E, definit prin

∆ = −d22d8 − 8d3

4 − 27d26 + 9d2d4d6, (2)

iar

d2 = a2

1 + 4a2,d4 = 2a4 + a1a3,

d6 = a23 + 4a6,

d8 = a21a6 + 4a2a6 − a1a3a4 + a2a2

3 − a4.

3

Page 465: Criptografie 600

Fie L o extensie a lui K; multimea punctelorcurbei E pe L este

E(L) = {(x, y) ∈ L×L | y2+a1xy+a3y−x3+a2x2+a4x+a6 = 0}∪{O}

unde O este ”punctul de la infinit”.

Elementele lui E(L) se numesc punctele L -

rationale ale curbei E.

In general se lucreaza cu un corp K = Zp, unde

p este un numar prim.

Prin extensie, vom numi curba eliptica peste Zp

multimea (x, y) ∈ Zp × Zp a solutiilor ecuatiei

y2+a1xy+a3y ≡ x3+a2x2+a4x+a6 (mod p)

si dintr-un punct la infinit O.

4

Page 466: Criptografie 600

1. p = 2. Doua subcazuri:

(a) Daca a1 6= 0, atunci curba E poate fi

adusa la forma

y2 + xy = x3 + ax + b (3)

unde a, b ∈ K.

Se numeste non-supersingulara,

cu ∆ = b.

(b) Daca a1 = 0, atunci ecuatia poate fi

adusa la forma

y2 + cy = x3 + ax + b (4)

unde a, b, c ∈ K.

Se numeste supersingulara,

cu ∆ = c4.

5

Page 467: Criptografie 600

2 p = 3. Doua subcazuri:

(a) Daca a21 6= −a2, atunci curba E poate fi

adusa la forma

y2 = x3 + ax2 + b (5)

cu a, b ∈ K. Este non-supersingulara,cu ∆ = −a3b.

(b) Daca a21 = −a2, atunci E se aduce la

forma

y2 = x3 + ax + b (6)

cu a, b ∈ K. Curba este supersingulara,cu ∆ = −a3.

3 Pentru p > 3, curba eliptica E poate fiadusa la forma

y2 = x3 + ax + b (7)

unde a, b ∈ K. Descriminantul este∆ = −16(4a3 + 27b2).

6

Page 468: Criptografie 600

Vom lucra cu definitia (7) a unei curbe eliptice

(corpuri de caracteristica p > 3).

O astfel de curba eliptica E se poate structura

ca un grup abelian finit.

Legea de compozitie (notata aditiv):

Fie P, Q ∈ E(L), P = (x1, y1), Q = (x2, y2).

Daca x2 = x1, y2 = −y1, atunci P + Q = O;

altfel, P + Q = (x3, y3) unde

x3 = λ2 − x1 − x2, y3 = λ(x1 − x3)− y1,

iar

λ =

y2−y1x2−x1

daca P 6= Q

3x21+a

2y1daca P = Q

Se mai defineste P +O= O+P = P, ∀P ∈ E.

Elementul neutru este O.7

Page 469: Criptografie 600

Reprezentare geometrica:

Fie P = (x1, y1) si Q = (x2, y2) doua puncte

distincte pe curba eliptica E.

Suma R = P + Q se defineste: linia PQ taie

curba ıntr-un al treilea punct.

R este simetricul acestui punct fata de axa xx′

(figura (a)).

P=(x1,y1)

Q=(x2,y2)

R=(x3,y3)

P=(x1,y1)

R=(x3,y3)

x

y y

x

(a) Adunarea P + Q = R(b) Dublarea: P + P = R

8

Page 470: Criptografie 600

Exemplul 1. Fie E : y2 = x3 + x + 5 peste

Z19.

Calculam punctele lui E:

∀x ∈ Z11 se calculeaza z = x3+x+5 (mod 19);

apoi se testeaza daca z este rest patratic.

In caz afirmativ, deoarece 19 ≡ 3 (mod 4),

radacinile patrate ale lui z sunt

± z(19+1)/4 (mod 19) = ±z5 (mod 19).

a 0 1 2 3 4 5 6 7 8 9a2 0 1 4 9 16 6 17 11 7 5

x x3 + x + 5 y x x3 + x + 5 y x x3 + x + 5 y0 5 9,10 1 7 8,11 2 15 −3 16 4,15 4 16 4,15 5 2 −6 18 − 7 13 − 8 12 −9 2 − 10 8 − 11 17 6,13

12 16 4,15 13 11 7,12 14 8 −15 13 − 16 13 − 17 14 −18 3 −

(toate calculele se realizeaza modulo 19).

9

Page 471: Criptografie 600

E admite deci 15 puncte; cum ordinul grupuluinu este numar prim, grupul nu este ciclic.

Alegem ca generator α = (0,9) (primitiv)

Calculam ”puterile” lui α (de fapt multiplii,grupul fiind aditiv).

Pentru 2α se calculeaza ıntai (modulo 19):

λ = (3 · 02 + 1)(2 · 9)−1 = 1 · 18−1 = 18.

Acum se pot determinax3 = 182 − 0− 0 = 361 ≡ 1 (mod 19),y3 = 18 · (0− 1)− 9 = −27 ≡ 11 (mod 19),

deci 2α = (1,11).α = (0,9) 2α = (1,11) 3α = (3,4)4α = (4,4) 5α = (13,12) 6α = (11,6)7α = (12,15) 8α = (12,4) 9α = (11,13)10α = (13,7) 11α = (4,15) 12α = (3,15)13α = (1,8) 14α = (0,10) 15α = O

De remarcat ca – de exemplu – (3,4) nu esteelement primitiv, avand ordinul 5.

10

Page 472: Criptografie 600

O curba eliptica definita pe Zp (p > 3 prim) are

aproximativ p puncte.

Teorema lui Hasse:

p + 1− 2√

p ≤ card(E(Zp)) ≤ p + 1 + 2√

p

Valoarea t = 2√

p se numeste urma lui E peste

Zq, iar intervalul [p+1− t, p+1+ t] este numit

interval Hasse.

Calculul efectiv al lui card(E(Zp)) este destul

de dificil. Practic, nu se cunoaste o formula

care sa dea valoarea card(E(Zp)); conjectura

Birch and Swinnerton-Dyer (una din cele sapte

probleme ale mileniului) trateaza acest subiect.

Exista un algoritm al lui Schoof de numarare

a punctelor unei curbe eliptice, de complexi-

tate O(log6p) (O(log9p) ın versiunea originala)

ınmultiri si inversiuni, si O(log3p) memorie.

11

Page 473: Criptografie 600

Fie p = qm.

Exista o curba eliptica E definita peste Zp, cu

card(E(Zp)) = p + 1− t

daca si numai daca este adevarata una din

conditiile:

• t 6≡ 0 (mod q) si t2 ≤ 4p.

• m este impar si

− t = 0, sau

− t2 = 2p si q = 2, sau

− t2 = 3p si q = 3.

• m este par si

− t2 = 4p, sau

− t2 = p si q 6≡ 1 (mod 3), sau

− t = 0 si q 6≡ 1 (mod 4).

12

Page 474: Criptografie 600

Teorema 1. (Teorema lui Ruck) Fie E o curba

eliptica peste Zp cu p > 3 numar prim.

Atunci exista doua numere ıntregi n1, n2 astfel

ca E(Zp) sa fie izomorfa cu Zn1 × Zn2, iar

n2|n1, n2|(p− 1).

De remarcat ca card(E(Zp)) = n1n2.

Daca n2 = 1, atunci E(Zp) este grup ciclic.

Daca n2 > 1, atunci E(Zp) are rangul 2.

Daca valoarea lui n2 este mica (n2 ≤ 4), E(Zp)

este aproape ciclic.

Cum n2 divide n1 si p−1, se asteapta ca E(Zp)

sa fie ciclic sau aproape ciclic pentru majori-

tatea curbelor eliptice peste Zp.

13

Page 475: Criptografie 600

Sisteme de criptare

construite pe curbe eliptice

Principalul avantaj al sistemelor construite pe

curbe eliptice: dimensiunea mica ale cheilor.

In general, se bazeaza pe problema logaritu-

muluin discret si sunt inspirate de sistemul de

criptare El Gamal.

14

Page 476: Criptografie 600

Exemplul 2. O criptare El Gamal pe curbaeliptica definita ın Exemplul anterior.

Fie α = (0,9) si a = 7.

Atunci β = 7α = (12,15)

eK(x, k) = (k · (0,9), x + k · (12,15))

unde x ∈ E, 0 ≤ k ≤ 14.

Pentru decriptare se foloseste operatia

dK(y1, y2) = y2 − 7y1

O criptare a mesajului x = (3,4); daca folosimk = 8, atunciy1 = 8 · (0,9) = (12,4), siy2 = (3,4) + 8 · (12,15) = (3,4) + (4,15) == 3α + 8 · 7α = 3α + 11α = 14α = (0,10)(calcule modulo 15).Deci y = ((12,4), (0,10)).

La receptie, Bob decripteaza mesajul astfel:x = (0,10)− 7 · (12,4) = 14α− 7 · 8α = 3α.

15

Page 477: Criptografie 600

Sistemul Menezes - Vanstone

Este o varianta a lui El Gamal, curba elipticafiind utilizata pentru ”mascare”.

Fie E o curba eliptica peste Zp (p > 3 prim)care contine un subgrup ciclic H ın care pro-blema logaritmului discret este dificila.

P= Z∗p × Z∗p , C= E × Z∗p × Z∗p siK= {(E, α, a, β)|α ∈ E, a ∈ Z∗p , β = aα}.

Valorile α, β sunt publice, iar a este secret.

Pentru K = (E, α, a, β), k ∈ Zcard(H) aleator(secret) si x = (x1, x2) ∈ P:

eK(x, k) = (y0, y1, y2),

unde y0 = k · α, (c1, c2) = k · β,yi = ci · xi (mod p), i = 1,2.

Pentru y = (y0, y1, y2):

dK(y) = (y1 · c−11 (mod p), y2 · c−1

2 (mod p)),

unde a · y0 = (c1, c2).

16

Page 478: Criptografie 600

Exemplul 3. Fie y2 = x3 + x + 5 peste Z19.

Criptarea Menezes - Vanstone cripteaza18×18 = 324 texte clare (fata de numai 15 ınsistemul El Gamal adaptat).

Sa luam α = (0,9) si a = 7.Deci β = 7α = (12,15).

Textul clar x = (x1, x2) = (5,11) criptat cuk = 4:

y0 = k · α = 4 · (2,7) = (4,4)sik · β = 4(12,15) = (1,8)

deci c1 = 1, c2 = 8.

Apoi se calculeaza (modulo 19):y1 = c1 · x1 = 1 · 5 = 5y2 = c2 · x2 = 8 · 11 = 12.Alice trimite deci lui Bob mesajul criptat

y = (y0, y1, y2) = ((4,4),5,12).

La receptie, se calculeaza(c1, c2) = a · y0 = 7 · (4,4) = 7 · 4α = (1,8),apoix = (y1 · c−1

1 (mod 19), y2 · c−12 (mod 19)) =

(5,11).

17

Page 479: Criptografie 600

Problema logaritmului discret

pe curbe eliptice

Principalele sisteme de criptare pe curbe elip-

tice folosesc problema logaritmului discret.

In cazul curbelor eliptice, ea se enunta ın felul

urmator:

Problema logaritmului discret pe curbe

eliptice (ECDLP):

Fiind data o curba eliptica E peste corpul Zp,

un punct P ∈ E(Zp) de ordin n si

Q ∈ < P > = {sP | 1 ≤ s ≤ n− 1}

sa se determine k astfel ıncat Q = kP .

Numarul k este numit logaritmul discret al lui

A ın baza P : k = logPQ.

18

Page 480: Criptografie 600

Atacul Pohlig - Hellman

Atacul prin forta bruta: se calculeaza R = kP

pentru k = 1,2,3, . . ., verificandu-se perma-

nent egalitatea R = Q.

Atunci cand egalitatea este verificata, s-a gasit

valoarea k = logPQ.

Timp de rulare: O(n), n - ordinul lui P .

Pohlig si Hellman au observat ca problema

logaritmului discret ıntr-un grup G are acelasi

ordin de dificultate ca si problema logaritmului

discret ın cel mai mare subgrup prim din G.

Concluzie: ın criptografia pe curbe eliptice,

se vor selecta curbe eliptice E cu proprietatea

card(E(Zp)) = n = h · s, unde s este un numar

prim mare, iar h este un numar foarte mic (de

obicei h = 1,2 sau 4).

In acest caz, ECDLP este dificila.

19

Page 481: Criptografie 600

Atacul Pohling - Hellman:

Fie n = pe11 p

e22 . . . per

r .

1. Se calculeaza ki = k (mod peii ) (1 ≤ i ≤ r).

2. Se rezolva sistemul de congruente

x ≡ ki (mod peii ) (1 ≤ i ≤ r).

Teorema chineza a resturilor asigura

existenta unei solutii unice

logPQ = k = x ∈ [0, n− 1]

20

Page 482: Criptografie 600

Determinarea fiecarui ki se poate reduce laaflarea exponentului ei ıntr-un subgrup ciclic< P > de ordin pi;pentru simplificare, vom nota pi cu p.

Reprezentarea lui ki ın baza p:

ki =ei−1∑j=0

zjpj

unde zj ∈ [0, p− 1].

Pentru determinarea lui z0:

• Se calculeaza P0 = (n/p)P, Q0 = (n/p)Q;

• Deoarece ordinul lui P0 este p, avem

Q0 =n

pQ = k

(n

pP

)= kP0 ≡ z0P0 (mod p)

Deci z0 = logP0Q0 poate fi obtinut rezolvand o

instanta ECDLP ın grupul ciclic < P >.

21

Page 483: Criptografie 600

La pasul urmator se determina

Q1 =

(n

p2

)(Q− z0P ):

Q1 =

(n

p2

)(Q− z0P ) =

n

p2 (k − z0)P =

= (k − z0)

(n

p2P

)= (z0 + z1p− z0)

(n

p2P

)=

= z1

(n

pP

)≡ z1P0 (mod p)

Valoarea z1 = logP0Q1 se poate obtine deci

rezolvand o instanta ECDLP ın < P >.

In general, daca z0, z1, . . . , zt−1 au fost calcu-late, atunci zt = logP0

Qt, unde

Qt =n

pt+1

(Q− z0P − z1pP − z2p

2P − . . .− zt−1pt−1P

).

22

Page 484: Criptografie 600

Atacul BSGS (Baby-Step/Giant-Step)

Consecinta a atacului Pohlig Hellman: se cauta

rezolvarea problemei logaritmului discret doar

ın grupuri ciclice de ordin prim.

Atacul BSGS este atacul Shanks adaptat pen-

tru curbe eliptice.

G =< P > un subgrup ciclic de ordin p (p prim)

al unui grup E(Zq) pe o curba eliptica.

Fiind dat Q ∈ G, problema cere aflarea unei

valori k (1 ≤ k < p) astfel ıncat Q = kP .

23

Page 485: Criptografie 600

Atacul BSGS:

Fie reprezentarea

k = k0 + k1b√

pcunde k0, k1 ∈ [0, b√pc).

1. Se calculeaza listaA = {(Pi, i) | Pi = iP, 0 ≤ i < b√pc}

2. Fie R = b√pcP . Se calculeaza listaB = {(Qj, j) | Qj = Q− jR, 0 ≤ j < b√pc}

Ambele liste sunt ordonate crescator dupaprima componenta.

3. Se cauta (Pi, i) ∈ A, (Qj, j) ∈ B astfel caPi = Qj.Daca asa ceva exista, atunci k0 = i, k1 = j.

Justificare: iP = Q− jb√pcP , deci(i + jb√pc)P = Q.

24

Page 486: Criptografie 600

Complexitatea spatiu si complexitatea timp a

unui atac BSGS sunt ambele egale cu O(b√pc).

Shoup arata ca atacul BSGS este cea mai rapi-

da metoda pentru rezolvarea problemei loga-

ritmului discret ıntr-un grup ”cutie neagra”

(un grup ”cutie neagra” este un grup ın care nu

se foloseste nici o structura pentru reprezenta-

rea elementelor sale).

25

Page 487: Criptografie 600

Atacul Pollard Rho

Se cauta doua perechi distincte (c1, d1),(c2, d2) de numere ıntregi din Zp astfel ıncat

c1P + d1Q = c2P + d2Q.

Rezulta (c1− c2)P = (d2− d1)Q = (d2− d1)kP ,deci

(c1 − c2) ≡ (d2 − d1)k (mod p),

si valoarea k = logPQ se obtine prin

k = (c1 − c2)(d2 − d1)−1 (mod p)

Se genereaza aleator doua valori c, d ∈ Zp si seretine ıntr-o tabela tripletul (c, d, cP + dQ).Procedeul se repeta pana se obtine a doua oaraun punct cP + dQ.

Conform paradoxului nasterilor, o astfel decoliziune se obtine dupa aproximativ√

πp/2 ≈ 1,2533√

piteratii.

Neajunsul atacului: necesitatea de stocare a√πp/2 triplete.

26

Page 488: Criptografie 600

Algoritmul Pollard Rho gaseste perechile

(c1, d1), (c2, d2)

cam ın acelasi timp ca si metoda de mai sus,

dar folosind o cantitate neglijabila de memorie.

Ideea este de a defini o functie recursiva

f :< P >−→< P >

astfel ıncat, ∀X ∈< P > si c, d ∈ Zp cu

X = cP + dQ, sunt usor de calculat X ′ = f(X)

si c′, d′ ∈ Zp cu X ′ = c′P + d′Q.

27

Page 489: Criptografie 600

Algoritmul Pollard Rho:

Intrare: P ∈ E(Zq), ord(P ) = p prim, Q ∈< P >.Iesire: k = logPQ.

1. Selecteaza numarul L al ramificatiilor.2. Selecteaza o functie de partitie

H :< P >−→ {1,2, . . . , L}

cu card(H−1(i)) ' p/L, (1 ≤ i ≤ L).

3. for j ←− 1 to L do

3.1. Selecteaza (aleator) aj, bj ∈ Zp.

3.2. Calculeaza Rj = ajP + bjQ.

4. Selecteaza (aleator) c′, d′ ∈ Zp

si calculeaza X ′ = c′P + d′Q.

5. X”←− X ′, c”←− c′, d”←− d′.

6. repeat

6.1. Calculeaza j = H(X ′).

X ′ ←− X ′+ Rj, c′ ←− c′+ aj, d′ ←− d′+ bj.

6.2. for i←− 1 to 2 do

6.2.1. Calculeaza j = H(X”).

6.2.2. X” ←− X” + Rj, c” ←− c” + aj, d” ←−d” + bj.

until X ′ = X”.

7. if d′ = d” then return(”esec”)

else return k = (c′ − c”)(d”− d′)−1 (mod p).

8. Stop

28

Page 490: Criptografie 600

Algoritmul Pollard Rho este un algoritm pro-

babilist de tip Las Vegas.

Probabilitatea de esec este neglijabila.

Exemplul 4. Sa consideram L = 32 si fie

{S1, S2, . . . , S32} o partitie a lui < P > defi-

nita astfel: daca X ∈< P > si ultimii ultimii 5

biti semnificativi ai primei coordonate a lui X

reprezinta numarul j, atunci H(X) = j + 1.

Multimile Sj = {X | H(X) = j} au acelasi

numar de elemente pentru orice j = 1, . . . ,32.

29

Page 491: Criptografie 600

Detaliere algoritmul Pollard Rho:

Fie aj, bj ∈ Zp si functia f :< P >−→< P >

definita

f(X) = X + ajP + bjQ unde j = H(X).

Daca X = cP + dQ, atunci

f(X) = X ′ = c′P +d′Q unde c′ = c+aj (mod p)

si d′ = d + bj (mod p).

Pentru un punct arbitrar X0 ∈< P > se poate

determina o secventa {Xi}i≥0 definita

Xi = f(Xi−1) pentru i ≥ 1.

Cum toate punctele sunt grupul finit < P >, la

un moment dat functia va cicla.

Deci exista un t minim pentru care Xt = Xt+s

cu s ≥ 1.

Valoarea t se numeste ”lungimea cozii”, iar s

– ”lungimea ciclului”.

30

Page 492: Criptografie 600

Algoritmul lui Floyd de aflare a doua puncte

Xi, Xj cu Xi = Xj si i 6= j, exploreaza perechile

de puncte de forma (Xi, X2i) pana gaseste un

indice i cu Xi = X2i.

Dupa calcularea unei perechi, perechea ante-

rioara de puncte poate fi eliminata; astfel me-

moria utilizata este de marime neglijabila.

Numarul n al perechilor calculate pana se obti-

ne egalitatea Xi = X2i verifica t ≤ n ≤ t + s.

Daca f este o functie aleatoare, atunci

n ' 1,0308√

p, deci numarul de operatii pe

grupul curbelor eliptice este 3√

p.

31

Page 493: Criptografie 600

Factorizari bazate pe curbe eliptice

Metoda p − 1 de factorizare a unui numar n

poate fi definita si pe multimea punctelor unei

curbe eliptice.

ECM (Elliptic Curve Method).

Se genereaza aleator doua numere a, b ∈ Zn, si

se construieste curba

Ea,b : y2 ≡ x3 + ax + b (mod n) (1)

Pe aceasta curba se efectueaza diverse calcule

modulo p (desi p nu se cunoaste), ”ascunse”

de calculele modulo n.

32

Page 494: Criptografie 600

Ordinul grupului Ea,b(Zp) este un numar din

intervalul [p + 1− 2√

p, p + 1 + 2√

p].

Daca acest ordin are divizorii primi (la puterile

cu care apar) mai mici decat marginea B sta-

bilita de metoda p − 1, putem aplica aceasta

metoda (adaptata la grupul definit pe E(Zn)),

cu o complexitate de O(B) operatii aritmetice.

Succesul ei corespunde deci probabilitatii ca

ordinul grupului Ea,b(Zp) sa aiba toti divizorii

primi mai mici decat B.

Aceasta probabilitate este u−u unde u =log p

log B.

33

Page 495: Criptografie 600

Exemplul 5. Factorizarea lui n = 44023.

Alegerea unui punct (initial) X pe curba (1).

Practic, ın loc de a alege a, b si apoi X, vom

genera ıntai a, X si ulterior b.

Fie a = 13 si X = (x, y) = (23482,9274).

Vom avea imediat

b = y2 − x3 − ax = 21375 (mod 44203)

Vom calcula

Xi = i!X = (xi, yi)

pentru i = 1,2, . . . pana se ajunge la un punct

Xi 6= O (ın Ea,b(Zn)), care este punctul de la

infinit ın Ea,b(Zp).

Aceste lucru se poate ıntampla la aparitia unei

operatii imposibile – de obicei ımpartirea la un

element neinversabil.34

Page 496: Criptografie 600

X1 = X = (23482,9274),

X2 = 2X1 = (18935,21838),

X3 = 3X2 = 2X2 + X2 = (15187,29168),

X4 = 4X3 = 2(2X3) = (10532,5412)

Se ajunge la X5 = 5X4 = 2(2X4) + X4.

Aici calculam ıntai 2X4 = (30373,40140), apoi

2(2X4) = (27556,42335).

In momentul cand vrem sa adunam acest punct

cu X4, ajungem la calculul valorii

λ =42335− 5412

27556− 10532(mod 44023)

care nu se poate efectua, deoarece 27556 −10532 = 17024 nu este inversabil modulo n.

Daca ıncercam sa calculam inversul folosind al-

goritmul lui Euclid extins, ajungem la

cmmdc(17024,44023) = 133,

care este un factor al lui n = 44023.35

Page 497: Criptografie 600

Alte sisteme de criptarecu cheie publica

1

Page 498: Criptografie 600

Sistemul de criptare Merkle - Hellman

Numim vector rucsac un tablou unidimensionalA = (a1, a2, . . . , an) (n ≥ 3) cu elemente nu-mere ıntregi pozitive distincte.

Aparitia problemei rucsacului: o pereche (A, x)cu A vector rucsac, x - numar ıntreg pozitiv.

O solutie a aparitiei problemei (A, x) este unvector B = (ai1, . . . , aik) de elemente din A

astfel ca x =k∑

j=1

aij.

Cea mai obisnuita abordare a problemei ruc-sacului este de a decide daca o anumita aparitie(A, x) a problemei rucsacului are solutie sau nu.

Varianta criptografica: obtinerea acestei solutiipentru (A, x), stiind ca ea exista.

Ambele probleme sunt NP - complete.

2

Page 499: Criptografie 600

Un vector rucsac este folosit pentru criptarea

unui bloc M de n biti; daca M este scris ca un

vector coloana binar, criptarea este

x = A ·M

Decriptarea revine la a determina M stiind x

sau – pentru varianta cu cheie publica – de a

afla M din A si x.

Exemplul 1. Fie n = 6 si vectorul rucsac

A = (3,41,5,1,21,10).

Atunci textul clar M1 = (1,1,0,0,1,0) este

criptat ın x1 = 65, iar M2 = (1,0,1,1,0,1)

ın x2 = 19.

Pentru vectorul A astfel definit, multimea tex-

telor criptate este inclusa ın intervalul [0,81].

3

Page 500: Criptografie 600

Pentru a putea fi utilizat ın criptare, un vector

rucsac A trebuie sa fie injectiv: pentru orice

x ∈ N , aparitia problemei rucsacului (A, x) are

cel mult o solutie.

Exemplul 2. Pentru vectorul rucsac

A = (14,28,56,82,90,132,197,284,341,455)

textul criptat x = 515 se poate obtine din trei

texte clare distincte:

(1,1,0,0,0,1,0,0,1,0),

(0,1,1,0,1,0,0,0,1,0),

(1,0,0,1,1,1,1,0,0,0).

4

Page 501: Criptografie 600

Sunt anumiti vectori rucsac A pentru care

toate aparitiile (A, x) sunt usor de rezolvat.

Vectorii cu crestere mare au aceasta

proprietate.

Definitia 1. Un vector rucsac

A = (a1, a2, . . . , an)

este crescator (super-crescator) daca

∀j ≥ 2, aj > aj−1 (respectiv aj >j−1∑i=1

ai).

Evident, orice vector super-crescator este

crescator.

5

Page 502: Criptografie 600

Pentru A = (a1, . . . , an) definim

max(A) = max{aj | 1 ≤ j ≤ n}.

Fie A un vector rucsac, m > max(A) si

t ∈ (0, m) astfel ca cmmdc(t, m) = 1.

Daca B = (b1, b2, . . . , bn) este un vector definit

prin

bi ≡ t · ai (mod m) (1 ≤ i ≤ n)

spunem ca B rezulta din A prin ınmultire

modulara ın raport cu perechea (m, t).

Conditia cmmdc(t, m) = 1 asigura existenta lui

u ∈ (1, m), astfel ca t · u ≡ 1 (mod m).

Are loc si proprietatea reciproca: vectorul ruc-

sac A rezulta din B prin ınmultire modulara ın

raport cu (m, u).

6

Page 503: Criptografie 600

Daca relatia m > max(A) este ınlocuita cu

conditia m >n∑

i=1

ai, spunem ca B rezulta din A

prin ınmultire modulara tare ın raport cu (m, t).

In acest caz, proprietatea inversa nu mai este

valabila deoarece m >n∑

i=1

bi nu mai este adeva-

rata totdeauna.

Se poate spune (evident) ca A rezulta din B

prin ınmultire modulara ın raport cu (m, u).

7

Page 504: Criptografie 600

Constructia sistemului de criptare rucsac:

1. Bob alege m, t cu cmmdc(m, t) = 1,

si vectorul super-crescator

A = (a1, . . . , an)

cu m >n∑

i=1

ai.

2. Determina vectorul rucsac B obtinut din A

prin inmultire modulara tare ın raport cu

(m, t).

3. Face public B si pastreaza drept cheie se-

creta elementele A, m, t si u ≡ t−1 (mod m).

8

Page 505: Criptografie 600

Pentru criptare, Alice procedeaza astfel:

1. Sparge mesajul ın blocuri de lungime n

(lungimea vectorului B).

Fie x un astfel de bloc.

2. Calculeaza y = x ·B si ıl trimite lui Bob.

In acest fel, un criptanalist va trebui sa rezolve

aparitia (B, y) a problemei rucsacului.

Bob va determina ıntai x ≡ u · y (mod m), dupa

care va rezolva aparitia (A, x).

9

Page 506: Criptografie 600

Exemplul 3. Fie n = 10 si vectorul super-

crescator

A = (103,107,211,430,863,1718,3449,6907,

13807,27610)

Alegem m = 55207 (mai mare decat suma

componentelor lui A) si t = 25236.

Deoarece cmmdc(t, m) = 1, se determina

u = t−1 = 1061.

Ca rezultat al ınmultirii modulare tari ın raport

cu (m, t) se obtine vectorul rucsac

B = (4579,50316,24924,30908,27110,

17953,32732,16553,22075,53620)

B este cheia publica de criptare, ın timp ce

(A, t, m, u) formeaza trapa secreta.

10

Page 507: Criptografie 600

Folosind cheia publica B, sa criptam mesajul

PELIN DE MAI.

El se ımparte ın perechi de cate doua litere,

care se codifica ın secvente binare de 10 biti.

PE 10000 00101 74.752LI 01100 01001 161.592N 01110 00000 106.148DE 00100 00101 95.097MA 01101 00001 155.970I 01001 00000 77.426

Pe ultima coloana sunt criptarile blocurilor de

pe prima coloana.

11

Page 508: Criptografie 600

Sa decriptam blocul 74.752 (celelalte blocurisunt tratate analog):

74752·1061 = 79311872 = 1436·55207+34620

Consideram aparitia problemei rucsacului

(A,34.620)

Solutia se obtine parcurgand vectorul A de ladreapta spre stanga:

Numar Componenta lui A Bit35.620 27.610 17.010 13.807 07.010 6.907 1

103 3.449 0103 1.718 0103 863 0103 430 0103 211 0103 107 0103 103 1

Citind ultima coloana din tabel, de jos ın sus,obtinem 10000 00101, care este codificarea bi-nara pentru perechea de litere PE.

12

Page 509: Criptografie 600

Sa procedam invers: criptam textul clar PE

folosind vectorul A.

Se obtine (evident) 34.620.

Aplicam ınmultirea modulara tare ın raport cu

(55.207,25.236):

34620 ·25236 = 873670320 = 15825 ·55207+

19545

Dar aparitia (B,19.545) nu are solutie; evident,

deoarece ın B, singurele numere mai mici decat

19.545 sunt 4.579,19.953 si 16.553, iar 19.545

nu se poate obtine din nici o combinatie a lor.

13

Page 510: Criptografie 600

Criptanaliza sistemului de criptare rucsac

Avem problema de criptanaliza: se stie un vec-

tor rucsac B = (b1, b2, . . . , bn) folosit drept

cheie publica de criptare.

Se stie de asemenea ca B este obtinut dintr-

un vector super-crescator A printr-o ınmultire

modulara tare ın raport cu un modul m si un

ınmultitor t.

Nu cunoastem A, m, t; vrem sa le aflam.

Daca determinam m si u = t−1, putem gasi

imediat vectorul super-crescator A si decripta

mesajele interceptate.

Calculul lui u plecand de la t (sau invers) se

bazeaza pe Algoritmul extins al lui Euclid.

14

Page 511: Criptografie 600

Atacul dezvoltat de Adi Shamir.

Algoritmul opereaza ın timp polinomial, gradul

polinomului de complexitate fiind determinat

de numarul si marimea componentelor vectoru-

lui B.

Prim scop: gasirea valorilor m si u.

Nu este necesara aflarea valorilor pe care le-a

definit Bob pentru sistemul de criptare.

Orice pereche (m, u) care, plecand de la vec-

torul B duce la un vector super-crescator A,

poate fi utilizata la decriptare.

Astfel de perechi se numesc ”perechi trapa”.

Exista cel putin o pereche trapa (deoarece sis-

temul de criptare rucsac se bazeaza pe o astfel

de constructie).

15

Page 512: Criptografie 600

Pentru aflarea unei perechi trapa se considera

graficul functiilor

fi(u) = biu (mod m)

pentru i = 1,2, . . . , n.

Este format din segmente de linii paralele,

rupte ın punctele u = p ·m/bi, p = 1,2, . . .

-

6

u

biu

m

m

16

Page 513: Criptografie 600

In particular, a1 ≡ b1u (mod m).

Pentru ca a1 este prima componenta ıntr-unvector super-crescator, iar m depaseste sumatuturor componentelor, elementul a1 trebuie safie foarte mic ın comparattie cu m.

Deci valoarea lui u trebuie sa fie suficient deaproape de un minim al grafului y = f1(u).

Similar, valoarea lui u din perechea trapa (m, u)trebuie sa fie destul de apropiata de un minimal grafului lui f2(u).

Dci doua minime ale lui f1(u) si f2(u) trebuiesa fie apropiate.

Putem proceda ın acest fel si pentru alte valori.

Faptul ca valoarea lui u este apropiata de unminim al fiecarei curbe fi(u) implica faptul caaceste minime sunt apropiate unul de altul.

17

Page 514: Criptografie 600

Vom considera temporar valoarea m = 1.

Algoritmul consta din doua parti: ın prima

etapa vom afla o multime de numere ıntregi

p cu proprietatea ca al p-lea punct de minim al

curbei f1(u) este punct de acumulare.

Pentru a evita generarea unui numar prea mare

de valori p, se fixeaza un parametru r care sa

indice numarul maxim de valori posibile per-

mise.

Daca prima parte a algoritmului genereaza mai

mult de r valori, el se va termina cu esec.

In etapa urmatoare vom explora pe rand punc-

tele de acumulare gasite anterior.

Unul din teste va reusi, deoarece valoarea lui u

folosita de Bob ın sistemul de criptare desem-

neaza un astfel de punct de acumulare.

18

Page 515: Criptografie 600

I. Coordonata u a celui de-al p-lea punct de

minim al curbei f1(u) este p/b1 (momentan

m = 1).

Conditia ca minimele curbelor f1(u) sif2(u) sa fie apropiate:

−e <p

b1−

q

b2< e, 1 ≤ p ≤ b1 − 1, 1 ≤ q ≤ b2 − 1

unde e este o valoare rezonabil de mica.

−δ < b2p− b1q < δ, 1 ≤ p ≤ b1− 1, 1 ≤ q ≤ b2− 1.

Consideram s astfel de puncte de minim si

scriem s−1 inegalitati de acest tip, pentru

b1, b2, . . . , bs.

Pentru δ <√

b1/2 probabilitatea ca algorit-

mul sa esueze este maxim (2/r)s−1.

Prima parte a algoritmului rezolva acest

sistem de inecuatii, afland toate valorile lui

p pentru care exista q, . . . astfel ıncat sa fie

satisfacute cele s− 1 inecuatii.

19

Page 516: Criptografie 600

II. Fie un p fixat arbitrar.

Se ordoneaza crescator toate punctele dediscontinuitate ale curbelor

fi(u) (1 ≤ i ≤ n) din

[p

b1,p + 1

b1

].

Fie xj, xj+1 doua puncte consecutive dediscontinuitate.

In intervalul [xj, xj+1] fiecare curba fi(u)este un segment reprezentat prinfi(u) = biu− c

ji , unde c

ji este o constanta.

Construim sistemul de inecuatii liniarexj ≤ u ≤ xj+1

n∑i=1

(biu− cji) < 1

(b1u− cj1) + . . . + (bi−1u− cj

i−1) < biu− cji , (2 ≤ i ≤ n)

Solutia este un subinterval (posibil vid) allui [xj, xj+1].

(m, u) formeaza o pereche trapa daca sinumai daca exista p si un j astfel ca u/msa apartina unui astfel de subinterval.

20

Page 517: Criptografie 600

Exemplul 4. Fie vectorul public B = (7,3,2).

Prima etapa: rezolvarea unui sistem de douainegalitati duble:

−δ < 3p− 7q < δ,−δ < 2p−7r < δ, (1 ≤ p ≤ 6, 1 ≤ q ≤ 2, r = 1)

Trecem la etapa a doua, considerand dreptcandidati pentru testare toate valorile lui p.

Impartim intervalul (0,1) ın subintervalele(0,

1

7

),

(1

7,2

7

),

(2

7,1

3

),

(1

3,3

7

),

(3

7,1

2

),

(1

2,4

7

),(

4

7,2

3

),

(2

3,5

7

),

(5

7,6

7

),

(6

7,1

).

In fiecare subinterval cele trei curbe sunt deforma fi(u) = biu− c

ji (i = 1,2,3, iar indicele j

indica intervalul).

Toate intervalele sunt deschise (nici un punctde discontinuitate nu corespunde unei perechitrapa).

21

Page 518: Criptografie 600

Pentru fiecare subinterval:(7u− i1) + (3u− i2) + (2u− i3) < 17u− i1 < 3u− i2(7u− i1) + (3u− i2) < 2u− i3

cu 0 ≤ i1 ≤ 6, 0 ≤ i2 ≤ 2, 0 ≤ i3 ≤ 1.

Sistemul se rescrie

12u < i, 4u < j, 8u < k

unde

i = 1+ i1+ i2+ i3, j = i1− i2, k = i1+ i2− i3.

(0, 1

7

) (17, 27

) (27, 13

) (13, 37

) (37, 12

) (12, 47

) (47, 23

) (23, 57

) (57, 67

) (67,1)

i1 0 1 2 2 3 3 4 4 5 6i2 0 0 0 1 1 1 1 2 2 2i3 0 0 0 0 0 1 1 1 1 1i 1 2 3 4 5 6 7 8 9 10j 0 1 2 1 2 2 3 2 3 4k 0 1 2 3 4 3 4 5 6 7

12u < i PT PT NU NU NU NU PT NU PT NU4u < j NU PT DA NU DA NU DA NU PT DA8u < k NU NU NU PT DA NU NU NU PT PT

Un interval contine perechi trapa daca si numai

daca pe coloana sa apar numai DA sau PT.

22

Page 519: Criptografie 600

Singurul interval valid este (5/7,6/7).

Alegem ın el numere rationale u/m care verifica

cele trei inecuatii.

Primul numar rational: 8/11; deci u = 8 si

m = 11.

Atunci relatia ai ≡ biu (mod 11) transforma

vectorul B = (7,3,2) ın vectorul cu crestere

mare A = (1,2,5).

Alte solutii pot fi de exemplu:

• (u, m) = (41,56): A = (7,11,26),

• (u, m) = (61,84): A = (7,15,38),

• (u, m) = (223,308): A = (25,35,138).

23

Page 520: Criptografie 600

Exemplul 5. Fie vectorul rucsac public

B = (43,129,215,473,903,302,561,1165,697,1523)

La prima etapa:

|129p−43q| ≤ δ, |215p−43r| ≤ δ, |473p−43s| ≤ δ

Pentru ca 43 = cmmdc(129,215,473), p = 1

este un candidat posibil.

Restrangem investigatia la intervalul(

143, 2

43

).

Considerand si puncte de discontinuitate ale

altor curbe ın acest interval, vom putea re-

strange subintervalul solutiilor la(

143, 36

1523

).

Cele 10 curbe sunt:

f1(u) = 43u− 1, f2(u) = 129u− 3,f3(u) = 215u− 5, f4(u) = 473u− 11,f5(u) = 903u− 21 f6(u) = 302u− 7,f7(u) = 561u− 13, f8(u) = 1165u− 27,f9(u) = 697u− 16, f10(u) = 1523u− 35.

24

Page 521: Criptografie 600

Inecuatia a doua:10∑

i=1

fi(u) < 1 sau

6011u− 139 < 1, cu solutia u < 140/6011.

Cum 140/6011 < 36/1523, intervalul solutiiloreste:

(143, 140

6011

).

Inecuatiile care dau conditia de super-crestere:129u− 3 > 43u− 1 u > 1/43215u− 5 > 172u− 4 u > 2/43473u− 11 > 387u− 9 u > 1/43903u− 21 > 860u− 20 u > 1/43302u− 7 > 1763u− 41 u < 34/1461561u− 13 > 2065u− 48 u < 35/15041165u− 27 > 2626u− 61 u < 34/1461697u− 16 > 3791u− 88 u < 72/30941523u− 35 > 4488u− 104 u < 69/2965

Cea mai mica margine superioara este72/3094 = 36/1547.

In final ramane intervalul(

143, 36

1547

).

Pentru 37/1590 se obtineA = (1,3,5,11,21,44,87,175,349,701).

Pentru 72/3095 se obtineA = (1,3,5,11,21,79,157,315,664,1331).

25

Page 522: Criptografie 600

Vectori rucsac cu densitate mare

Spargerea sistemului de criptare rucsac ın vari-

anta propusa de Merkle si Hellman, nu ınseam-

na rezolvarea problemei rucsacului, ci numai

exploatarea slabiciunii provenite din modul de

alegere a cheii secrete.

Ulterior au fost generate si alte constructii de

cripto-sisteme rucsac.

In varianta Merkle - Hellman, sistemul de crip-

tare rucsac se baza pe vectori cu densitate

mica, ın sensul ca elementele vectorului erau

foarte rare ın raport cu numarul lor.

Noul sistem propune o constructie bazata pe

vectori rucsac cu densitate mare.

26

Page 523: Criptografie 600

Fie p un numar prim si h ≥ 1.

Un element α este algebric de gradul h peste Zp

daca satisface o ecuatie polinomiala P (x) = 0

de gradul h si nici o ecuatie de grad mai mic

(P (x) este un polinom ireductibil peste Zp).

Considerand extensia GF (ph), elementele sale

pot fi reprezentate sub forma

x =h−1∑j=0

cjαj (0 ≤ cj ≤ p− 1)

Exemplul 6. Fie p = 3, h = 2 si α o radacinaa ecuatiei X2 −X − 1 = 0.Elementele corpului GF (32) pot fi exprimateın functie de α:

GF (32) = {0, 1, 2, α, α+1, α+2, 2α, 2α+1, 2α+2}.

27

Page 524: Criptografie 600

Similar aritmeticii modulare definite pe Zp,

putem folosi notiunea de logaritm discret si ın

extensiile Galois GF (ph).

Un element β este un generator al lui GF (ph)∗

daca ∀x ∈ GF (ph)∗ exista un ıntreg i ∈ [0, ph−1]

cu x = βi.

Deci i = logβx.

Exemplul 7. Pentru GF (32), radacina α a

ecuatiei X2 −X − 1 = 0 este un generator.

Logaritmii elementelor nenule din aceastaextensie sunt:

x 1 2 α α + 1 α + 2 2α 2α + 1 2α + 2logαx 8 4 1 2 7 5 3 6

Tot un generator al lui GF (32)∗ este si 2α+1.

Tabela de logaritmi ın aceasta baza estex 1 2 α α + 1 α + 2 2α 2α + 1 2α + 2

log2α+1x 8 4 3 6 5 7 1 2

28

Page 525: Criptografie 600

Fiind date numerele ıntregi pozitive n si h,exista un vector A = (a1, a2, . . . , an) cu ele-mente nenegative distincte, astfel ıncat toatesumele de exact h componente de elemente(nu neaparat distincte) din A, sunt diferite.

Un astfel de vector A este usor de construit,luand ai = hi−1 (1 ≤ i ≤ n).Constructia corespunde vectorilor rucsac cudensitate mica.

Pentru vectorii rucsac cu densitate mare:

Lema 1. Fie p un numar prim si h ≥ 2 un numar ıntreg.Atunci exista un vector rucsac A = (a1, a2, . . . , ap) caresatisface conditiile

1. 1 ≤ ai ≤ ph − 1, (1 ≤ i ≤ p),

2. Daca x, yi (1 ≤ i ≤ p) sunt numere ıntregi nenega-tive cu (x1, x2, . . . , xp) 6= (y1, y2, . . . , yp) iar

p∑i=1

xi =

p∑i=1

yi = h,

atunci

p∑i=1

aixi 6=p∑

i=1

aiyi.

29

Page 526: Criptografie 600

Concluzia lemei se poate ınlocui cu:

p∑i=1

aixi 6≡p∑

i=1

aiyi (mod ph − 1)

Sa construim un sistem de criptare rucsac.

Textul clar va contine cuvinte (blocuri) de p

biti, astfel ıncat ın fiecare bloc sunt exact h

biti egali cu 1.

In general, un text clar arbitrar nu poate fi

segmentat ın astfel de blocuri; totusi, se pot

defini codificari convenabile premergatoare ale

textului clar.

O astfel de codificare este asigurata de:

Lema 2. Fie n ≥ 3 si h < n. Atunci exista o

aplicatie injectiva a multimii secventelor binare

de lungime blog2Chnc ın multimea secventelor

binare de n biti ın care apar h de 1.

30

Page 527: Criptografie 600

Exemplul 8. Fie n = 5 si h = 2.

Atunci blog2C25c = 3; deci putem codifica

blocuri de 3 biti.

Corespondenta se realizeaza dupa tabelul:

0 0 0 −→ 0 0 0 1 10 0 1 −→ 0 0 1 0 10 1 0 −→ 0 0 1 1 00 1 1 −→ 0 1 0 0 11 0 0 −→ 0 1 0 1 01 0 1 −→ 0 1 1 0 01 1 0 −→ 1 0 0 0 11 1 1 −→ 1 0 0 1 0

Secventele 10100 si 11000 raman neutilizate.

31

Page 528: Criptografie 600

Sistemul de criptare:

• Se alege un numar prim p si fie h < p.

Se alege α algebric de gradul h peste Zp si

un generator g al lui GF (ph)∗.

• Se calculeaza A = (a1, a2 . . . , ap) definit

ai = logg(α + i− 1), (1 ≤ i ≤ p)

• Se construieste vectorul B = (b1, b2, . . . , bp)

prin bi = aπ(i) + d

unde π ∈ Sp este o permutare, iar

d ∈ [0, ph − 2] este o constanta arbitrara.

Cheia publica de criptare este B, p, h.

Trapa secreta consta din α, g, d, π.

32

Page 529: Criptografie 600

Fie C o secventa binara de lungime p ın caresuma elementelor este h.

Considerat sub forma unui vector coloana, Ceste criptat prin produsul scalar

e(C) = B · C (mod ph − 1)

Protocolul de decriptare urmat de Bob este:

1. Daca x este mesajul criptat, se determinay = x− h · d (mod ph − 1).

2. Se calculeaza gy ın GF (ph). Acesta esteun polinom ın α, de grad cel mult h− 1.α satisface o ecuatie de forma αh = r(α), under(X) ∈ Zq[X] este un polinom de grad cel multh− 1.3. Polinomul s(α) = αh + gy − r(α) se des-compune ın factori liniari peste Zp.Fie s(α) = (α+ i1−1)(α+ i2−1) . . . (α+ ih−1)aceasta descompunere.

4. Pozitia elementelor 1 din textul clar estedata de valorile

(π−1(i1), π−1(i2), . . . , π

−1(ih)).

33

Page 530: Criptografie 600

Exemplul 9. Vom ignora π si d.

Fie extensia GF (32) generata de 2α + 1, undeα verifica ecuatia X2 = X + 1.

Deoarece logaritmii elementelor α, α+1 si α+2sunt 3,6 si respectiv 5, se obtine cheia publicade criptare B = (3,6,5).In plus, p = 3 si h = 2.

Un text clar este compus cu vectori binari cu3 componente, cu suma componentelor 2.

Sa consideram vectorii (2,0,0) si (0,1,1).Ei sunt criptati ın numerele 6 respectiv 3 (cal-culele se efectueaza modulo ph − 1 = 8).

La decriptare, Bob:- calculeaza ıntai puterile (2α + 1)6 = α + 1 si(2α + 1)3 = α.- La ambele expresii, aduna α2−α−1, rezultandpolinoamele α2 si α2 − a = (α + 1)(α + 2).- Se deduc textele clare (2,0,0) si (0,1,1).

34

Page 531: Criptografie 600

Sistemul de criptare McEliece

Sistemul McEliece – propus ın 1978 – este

destul de apropiat de problema rucsacului.

El utilizeaza teoria codurilor liniare; ın general

decodificarea unui cod liniar binar corector de

erori este o problema NP - completa.

Pentru unele clase de coduri sunt construiti

algoritmi de decodificare polinomiali; o astfel

de clasa o formeaza codurile Goppa – baza

sistemului de criptare McEliece.

35

Page 532: Criptografie 600

Definitia 2. Fie k, n ∈ N (k ≤ n). Un (n, k) -

cod liniar binar este un subspatiu liniar C ⊆ Zn2

de dimensiune k.

O matrice generatoare a lui C este o matrice

binara k × n ale carei linii sunt o baza a lui C.

Pentru a ∈ Zn2 se defineste ponderea w(a) prin

numarul de elemente nenule din a.

Pentru a,b ∈ Zn2 , distanta Hamming este

d(a,b) = w(a− b).

Pentru un (n, k) - cod liniar binar C, distanta

minima este

dC = min{d(a,b)|a,b ∈ C, a 6= b}

Un (n, k, d) - cod este un (n, k) - cod de distan-

ta minima d.

36

Page 533: Criptografie 600

Rolul unui cod corector de erori este de a corijamodificari aleatoare care apar ın transmitereaunui set de date (binare) printr-un canal.

In linii mari, acesta functioneaza astfel: dacaa este un mesaj de informatie de k biti, Alice ılcodifica ıntr-un cuvant de n biti b = aG, undeG este matricea generatoare a codului.

Bob primeste r ∈ Zn2 (eventual r = b) si cauta

b1 ∈ C cu d(r,b1) minim posibil.

Va decodifica r ın b1 dupa care va calcula unmesaj de informatie a1 astfel ca b1 = a1G.

Cazul ideal este cand b1 = b, a1 = a.

Daca numarul de erori care apar nu depaseste(d − 1)/2, acest procedeu corecteaza efectiverorile.

Daca Bob cauta cuvantul - cod cel mai apropi-at comparand r pe rand cu fiecare element dinC, algoritmul va fi exponential.

37

Page 534: Criptografie 600

Majoritatea algoritmilor de decodificare folo-

sesc notiunea de sindrom:

Matricea de control a unui (n, k, d) - cod liniar

binar de matrice generatoare G este o ma-

trice H de dimensiune (n− k)×n ale carei linii

formeaza o baza a unui spatiu liniar ortogonal.

Evident, G ·HT = 0.

Pentru un cuvant r ∈ Zn2 , se numeste sindrom

secventa de n− k biti definita H · rT .

Teorema 1. a este un cuvant - cod daca si

numai daca H · aT = 0.

In plus, daca a ∈ C, e ∈ Zn2 si r = a + e, atunci

H · rT = H · eT .

38

Page 535: Criptografie 600

e poate fi considerat drept vectorul de eroricare au aparut ın transmiterea mesajului a.

Teorema anterioara afirma ca sindromul de-pinde doar de erori, nu si de cuvantul - codtransmis.

Metoda de decodificare bazata pe sindrom:- Se calculeaza ıntai s = H · rT .

- Daca s = 0, decodificarea lui r este tot r.Altfel, se ıncearca cuvintele de pondere 1.Pentru fiecare astfel de cuvant e se calculeazaH · eT .

- Daca s-a gasit un e cu H · eT = s, r se de-codifica ın r− e.

- In caz contrar se ıncearca vectorii de pondere2,3, . . . , [(d− 1)/2].

- Daca nu s-a gasit nici un cuvant e cuH ·eT = s, se deduce ca au aparut mai mult de[(d− 1)/2] erori ın cursul transmisiei.

39

Page 536: Criptografie 600

Algoritmul de criptare McElliece se bazeaza pe

aceasta idee.

Trapa secreta o constituie o clasa de coduri

pentru care exista algoritmi eficace de decodi-

ficare - codurile Goppa.

In plus, exista un numar mare de coduri Goppa

neechivalente, avand aceiasi parametri.

40

Page 537: Criptografie 600

Sistemul de criptare McElliece:

Fie: G matricea generatoare a unui (n, k, d) -

cod Goppa cu n = 2m, d = 2t+1, k = n−m·t,S – matrice inversabila binara k × k,

P – matrice de permutare n× n.

Fie P= Zk2, C= Zn

2 , K= {(G, S, P, G′) | G′ =

S ·G · P}.G′ este publica iar G, S, P sunt secrete.

Pentru K = (G, S, P, G′) se defineste

eK(a, e) = a ·G′ + e

e ∈ Zn2 este un cuvant aleator de pondere t.

Bob decripteaza un mesaj b ∈ Zn2 astfel:

1. Calculeaza b1 = b · P−1;

2. Decodifica b1 = a1 + e1 unde a1 ∈ C;

3. Calculeaza a0 ∈ Zk2 astfel ca a0 ·G = a1;

4. Calculeaza a = a0 · S−1.

41

Page 538: Criptografie 600

Corectitudinea algoritmului de decriptare:

b1 = b ·P−1 = (a ·G′+ e) ·P−1 = (a ·S ·G ·P +e) · P−1 = (a · S) ·G + e · P−1

si w(e · P−1) ≤ t.Deci algoritmul de decodificare al codului dematrice generatoare G poate decodifica corectpe b1 si obtine un mesaj sursa a0 = a · S.

La ultimul pas se afla mesajul initial

a = a0 · S−1.

Pentru o implementare practica a criptarii,McEliece propune m = 10, t = 50, deci un(1024,524,101) - cod Goppa.

Un text clar este o secventa de 524 biti, iar untext criptat este o secventa de 1024 biti.

Cheia publica este o matrice binara de dimen-siuni 524× 1024.

42

Page 539: Criptografie 600

Exemplul 10. Fie un (8,2,5) - cod Goppa

(n = 23, k = 2, d = 5).

El este generat de

G =

(0 0 1 1 1 1 1 11 1 0 0 1 0 1 1

)Sa presupunem ca Bob alege matricile

S =

(1 01 1

)cu S−1 =

(1 01 1

)

si

P =

0 1 0 0 0 0 0 00 0 0 1 0 0 0 00 0 0 0 0 0 1 01 0 0 0 0 0 0 00 0 1 0 0 0 0 00 0 0 0 0 1 0 00 0 0 0 1 0 0 00 0 0 0 0 0 0 1

cu P−1 =

0 0 0 1 0 0 0 01 0 0 0 0 0 0 00 0 0 0 1 0 0 00 1 0 0 0 0 0 00 0 0 0 0 0 1 00 0 0 0 0 1 0 00 0 1 0 0 0 0 00 0 0 0 0 0 0 1

Matricea publica generata este deci

G′ = S ·G · P =

(1 0 1 0 1 1 1 11 1 0 1 0 1 1 0

)

43

Page 540: Criptografie 600

Sa presupunem ca Alice vrea sa cripteze textulclar a = (0,1) folosind vectorul - eroaree = (0,0,1,0,0,1,0,0) de pondere 2.Textul criptat este

b = a ·G′ + e = (1,1,1,1,0,0,1,0).

Dupa receptionarea mesajului, Bob calculeazaıntai

b1 = b · P−1 = (1,1,1,1,1,0,0,0),

pe care ıl scrie sub forma a1 + e1 undea1 = (1,1,1,1,0,1,0,0) este un cuvant - cod,iar e1 = (0,0,0,0,1,1,0,0) 6= e (din cauzaınmultirii cu P−1).

Bob calculeaza apoi mesajul a0 = (1,1),singurul cu proprietatea a0 ·G = a1.

Ultimul pas este determinarea textului clar

a = S−1 · a0 = (0,1)

44

Page 541: Criptografie 600

Algoritmul McElliece s-a dovedit sigur.

1. Din informatia publica, Oscar ıncearca saafle matricea G sau o matrice G1 a unuicod Goppa echivalent.Nu se cunoaste nici un algoritm eficientpentru un astfel de demers.

2. Oscar ıncearca sa afle mesajul clar a directdin textul criptat b.El ia aleator k coloane din matricea G′.

Notand G′k,bk, ek restrictiile lui G′,b, e la

aceste k coloane, vom avea a·G′k = bk+ek.

Daca bk = 0 si G′k este nesingulara, atunci

a poate fi aflat rezolvand sistemul liniara ·G′

k = bk.

Probabilitatea ca cei k biti selectati sa nu facaparte din eroare (deci ek = 0) este Ck

n−t/Ckn,

neglijabila pentru valorile alese ale parametrilorn, k, t.

45

Page 542: Criptografie 600

Securitatea sistemului McElliece este mult

diminuata daca se foloseste alta clasa de coduri

liniare ın locul codurilor Goppa.

Totusi, ın ciuda securitatii sale si a vitezei rela-

tiv mari de criptare/decriptare sistemul nu este

folosit practic.

Cauza principala o constituie cheia sa excesiv

de mare.

De exemplu, pentru n = 1024, t = 38,

k ≥ 644, cheia are aproximativ 219 biti.

46

Page 543: Criptografie 600

Generatoride numere pseudo - aleatoare

1

Page 544: Criptografie 600

Numere aleatoare si numere pseudo-aleatoare

In general nu se poate vorbi de un singur numaraleator decat ıntr-un context statistic.Termenul corect este acela de sir de numerealeatoare.

Folosirea calculatorului reduce termenul de nu-mere aleatoare la un sir de biti generati aleator,grupati dupa o anumita regula.

Nu exista o modalitate mai scurta de a speci-fica sirul decat secventa ınsasi.

Definitia 1. Un generator de numere aleatoa-re, sau ”generator real aleator” (GA) este undispozitiv sau un algoritm care produce osecventa de numere independente si nepredicti-bile.

In majoritatea cazurilor, un GA genereazasecvente binare, care ulterior sunt convertite ınnumere ıntregi.

2

Page 545: Criptografie 600

In criptografie este esential ca un numar alea-

tor sa nu poata fi aflat.

Un numar perfect aleator este acela pe care

Oscar nu-l poate ghici decat prin forta bruta.

Multe atacuri se bazeaza pe exploatarea imper-

fectiunilor unor functii care genereaza numere

aleatoare.

O generare de numere pur aleatoare se rea-

lizeaza prin colectarea si procesarea de date

obtinute dintr-o sursa de entropie exterioara

calculatorului.

Surse de entropie: variatiile miscarii mouse-

ului; intervalul de timp dintre apasarea a doua

taste; surse radioactive sau bazate pe zgomote

din atmosfera.

3

Page 546: Criptografie 600

Proprietatea de a fi aleator a fost introdusa ın

domeniul tehnicii de calcul cu ajutorul genera-

torilor de numere pseudo-aleatoare.

Definitia 2. Fie m, k (0 < k < m) numere

ıntregi.

Un (k, m) generator de numere pseudo-alea-

toare este o aplicatie recursiva

f : Zk2 ←− Zm

2

calculabila ın timp polinomial.

In aplicatii, m = h(k) unde h este o functie

polinomiala.

4

Page 547: Criptografie 600

Un generator de numere pseudo-aleatoare tre-

buie:

• Sa fie simplu si rapid.

• Sa produca siruri de numere de lungime ar-

bitrara care sa nu contina repetitii.

In calculator nu se poate construi un gene-

rator cu perioada infinita. Generatorul tre-

buie sa aiba totusi o perioada de repetitie

cat mai mare.

• Sa produca numere independente unul de

altul (sau cu o corelare cat mai vaga).

• Sa genereze numere cu o repartitie uni-

forma ın spatiul valorilor.

5

Page 548: Criptografie 600

Generatori liniari congruentiali

Construit de Lehmer ın 1949. Este definit

xn+1 = axn + b (mod m)

Valorile a (multiplicatorul), b (incrementul) si

m (modulul) sunt constante.

Cheia de generare este valoarea initiala x0.

Cand b = 0, generatorul este multiplicativ.

Perioada maxima a unui generator liniar este

evident m.

Ea poate fi atinsa pentru anumite valori ale

perechii (a, b)

(de exemplu daca cmmdc(b, m) = 1).

6

Page 549: Criptografie 600

Un generator liniar congruential de perioada m

se numeste generator de perioada maximala.

Cativa generatori de perioada maximala.a b m a b m

105 1283 6075 1277 24749 117128211 1663 7875 2311 25367 120050421 1663 7875 3877 29573 139968430 2531 11979 8121 28411 134456171 11213 53125 9301 49297 233280141 28411 134456 2416 374441 1771875421 17117 81000 17221 107839 5103001093 18257 86436 84589 45989 217728

Avantaj: viteza mare de calcul.

7

Page 550: Criptografie 600

Criptanaliza a fost realizata de Jim Reeds ın

1977 si Joan Boyar ın 1982.

Ea a spart si generatorii patratici

xn+1 = (ax2n + bxn + c) (mod m)

si cubici

xn+1 = (ax3n + bx2

n + cxn + d) (mod m)

Alti cercetatori au extins metodele de atac

pentru spargerea oricarui generator polinomial

congruential.

Generatorii liniar congruentiali sunt folositi cu

predilectie ın aplicatii necriptografice; de exem-

plu, ın simulare ei asigura o comportare statis-

tica buna ın majoritatea testelor.

8

Page 551: Criptografie 600

Generatori Ranrot

Au fost definiti de Agner Fog ın 1997, initial

pentru algoritmi de tip Monte Carlo.

Se bazeaza pe generatori de numere Fibonacci,

cu deplasare ciclica pe biti.

Sunt cunoscute si studiate trei variante degeneratori Ranrot:

• Tip A: xn = ((xn−j + xn−k) (mod 2b))� r;

• Tip B:xn = ((xn−j � r1) + (xn−k � r2)) (mod 2b);

• Tip B3:xn = ((xn−i � r1)+(xn−j � r2)+(xn−k � r3)) (mod 2b);

• Tip W:zn = ((yn−j � r3) + (yn−k � r1)) (mod 2b/2),yn = ((zn−j � r4) + (zn−k � r2)) (mod 2b/2),xn = yn + zn · 2b/2.

9

Page 552: Criptografie 600

Conventii:

1. Toate numerele x sunt ıntregi binare pe b

biti;

2. 0 < i < j < k ≤ n numere ıntregi;

3. α� s este rotatia secventei α spre dreaptacu s pozitii;

4. 0 ≤ ri ≤ b − 1 pentru primele doua tipuri,0 ≤ bi ≤ b/2 pentru tipul W .

Valorile sunt calculate ıntr-un buffer Sn.Starea initiala este

S1 = (x1, x2, . . . , xk)iar trecerea de la o stare la alta se realizeazaprintr-o deplasare de forma

(xn−k, xn−k+1, . . . , xn−1)←− (xn−k+1, . . . , xn−1, xn)

10

Page 553: Criptografie 600

Fie p = cmmdc(j, k).

Daca p > 1, atunci sistemul se poate descom-

pune ın p sisteme independente.

Deci o prima conditie de performanta este

cmmdc(j, k) = 1.

Din acelasi motiv, la tipul W numarul k−j este

impar.

Pentru ca toate elementele din Sn sa ramana

interdependente, trebuie ca cel putin un r sa

fie nenul.

Prin experimente s-a gasit ca cele mai bune

valori pentru numarul de pozitii rotite este

aproximativb

2pentru tipul A,

b

3si

2b

3pentru

tipul B sib

4,

b

2,3b

4pentru tipul B3.

Lungimea maxima a unei perioade la un gen-

erator Ranrot este (2k − 1) · 2b−1.

11

Page 554: Criptografie 600

Nu se cunoaste un algoritm de obtinere de

generatori Ranrot de perioada maximala.

Cel mai mare generator analizat are 232 stari.

Exemplul 1. Un generator Ranrot de tipul A

cu j = 1, k = 4, b = 7, r = 4 are 24 cicluri de

perioade

1,5,9,11,14,21,129,6576,8854,16124,17689,

135756,310417,392239,488483,1126126,

1355840,1965955,4576377,7402465,

8393724,57549556,184256986.

12

Page 555: Criptografie 600

Importanta restrictiilor impuse diverselor tipuride generatori Ranrot:

Regula A B B3 Wcmmdc(j, k) =cmmdc(j, i) =

cmmdc(k, i) = 1*** *** *** ***

1 < i < j < k − 1 ** * * *k − j impar - - - ***un r 6= 0 *** *** *** **toti r 6= 0 *** ** * -r distincti - ** ** **

r > 1 *** ** * *cmmdc(r, b) = 1 * * * *cmmdc(b, k) = 1 * * * *

S-a notat cu:

− o regula fara importanta,

∗ - importanta minora,

∗∗ - nerespectarea ei duce la aparitia unor

cicluri de perioada mica,

∗ ∗ ∗ - regula importanta.

13

Page 556: Criptografie 600

Generatorii Ranrot sunt usor de spart, deoarece

starea initiala se poate deduce usor din k valori

consecutive ale lui x.

Daca ınsa parametrii nu se cunosc, generatorii

Ranrot pot fi folositi cu succes ın criptografie,

avand o securitate sporita.

Exista un sistem de criptare (Power Crypto)

bazat pe generatorul Ranrot de tip B3.

14

Page 557: Criptografie 600

Generatorul Blum - Blum - Shub

Cel mai simplu si – se pare – cel mai eficientgenerator de numere pseudo - aleatoare este:BBS (numit si generator rezidual patratic).

Definitia 3. Fie p, q doua numere prime. Daca

p ≡ 3 (mod 4), q ≡ 3 (mod 4)

atunci numarul n = pq se numeste ıntreg Blum.

Algoritmul BBS pe scurt:

Fie n = pq un ıntreg Blum, unde p, q sunt nu-mere prime pe k/2 biti.

Fie x0 un reziduu patratic modulo n.Se defineste secventa

xi+1 = x2i (mod n)

Daca zi = xi (mod 2) pentru 1 ≤ i ≤ m, atuncinumarul aleator generat este

f(x0) = z1z2 . . . zm.

15

Page 558: Criptografie 600

Bitii zi (1 ≤ i ≤ m) se pot calcula direct:

zi = x2i (mod (p−1)(q−1))0 (mod 2)

Exemplul 2. Fie p = 383, q = 503; deci

n = 192649.

Alegand x0 = 1013552 = 20749 (modn),

generatorul BBS va produce

110011100001001110

i 0 1 2 3 4 5xi 20749 143135 177671 97048 89992 174051zi − 1 1 0 0 1

i 6 7 8 9 10 11xi 80649 45663 69442 186894 177046 137922zi 1 1 0 0 0 0

i 12 13 14 15 16 17 18xi 123175 8630 114386 14863 133015 106065 45870zi 1 0 0 1 1 1 0

16

Page 559: Criptografie 600

Securitatea BBS se bazeaza pe dificultatea

factorizarii lui n.

Mai mult, fiind data o parte a secventei,

nu exista nici o modalitate de a prezice bitul

anterior sau cel ulterior secventei.

Algoritmul BBS este destul de lent, dar are

unele implementari mai rapide.

Astfel, daca n este lungimea lui xi, pot fi

pastrati ultimii blog2xic biti.

In acest moment BBS este considerat cel mai

bun generator de numere pseudo-aleatoare

pentru protocoale de generare si distributie a

cheii.

17

Page 560: Criptografie 600

Circuite liniare

Circuitele liniare (Shift Registers) sunt folosite

ın teoria codurilor detectoare si corectoare de

erori precum si ın unele sisteme de criptare

bloc.

Asigura viteza mare de calcul.

Un LFSR (Linear Feedback Shift Register)

este un circuit liniar format dintr-un registru

serial si o functie de ıntoarcere (feedback).

Daca registrul este compus din n flip-flopuri de

date (DF − F ), avem un n− LFSR.

Functie de ıntoarcere

bn bn−1 . . . b2 b1 -

????

6-

Functia de ıntoarcere este un XOR ıntre anu-

miti biti din registru.

18

Page 561: Criptografie 600

Exemplul 3. Sa consideram un 4− LFSR:

� ��- - - -

?��

6-

?

s s+

Sa presupunem ca initial cei patru biti

din registru sunt 1001.

La fiecare tact se obtine o noua configuratie:

0100, 0010, 0001, 1000, 1100, 1110, 1111, 0111,

1011, 0101, 1010, 1101, 0110, 0011

dupa care apare din nou 1001.

La iesire va apare secventa

1001000111101011

Este un generator de perioada 16.

19

Page 562: Criptografie 600

Un n − LFSR poate avea maxim 2n − 1 staridistincte.

Fie g(X) ∈ Z2[X], g(X) = 1+g1X + . . .+gnXn

polinomul asociat unui n− LFSR, unde gi = 1daca si numai daca bitul i participa la o adunaremodulo 2.In Exemplul 3: g(X) = 1 + X + X4.

Fie polinomul g(X) ∈ Z2[X], grad(g(X)) = nsi m cel mai mic numar astfel ca g(X)|Xm +1.Atunci secventa binara generata de unn− LFSR asociat lui g(X) are perioada m.

Daca g(X) este un polinom ireductibil pesteZ2, atunci m = 2n − 1 (maxim).

Lema 1. Un polinom g(X) ∈ Z2[X] este ire-ductibil daca si numai daca

1. Are un numar impar de termeni;

2. Cel putin un termen este de forma X2p+1.

20

Page 563: Criptografie 600

Generatorul Geffe

Combina ıntr-o forma neliniara trei LFSR:

LFSR1

LFSR3

LFSR2

EMUX

-

-

-

6

-

i0

i1

Daca a1, a2, a3 sunt iesirile din LFSR-uri,

iesirea din generatorul Geffe este

b = (a1 ∧ a2)⊕ (a1 ∧ a3)

Perioada generatorului este cel mai mic multi-

plu comun al perioadelor celor trei LFSR-uri.

Deci, daca cele trei polinoame care definesc

circuitele au grade prime ıntre ele, perioada

generatorului Geffe este produsul celor trei pe-

rioade.

21

Page 564: Criptografie 600

Din punct de vedere criptografic generatorulGeffe nu rezista unui atac prin corelare.

Iesirea din generator coincide cu iesirea dinLFSR2 cam 75% din timp.

Deci, daca definitiile polinomiale ale circuitelorsunt cunoscute se poate ghici valoarea initialadin LFSR2 si genera secventa sa de iesire.

Apoi se numara de cate ori iesirea din LFSR2

coincide cu iesirea din generator.

Statistic, daca nu s-a ghicit corect, cele douasecvente coincid cam 50%;daca s-a ghicit corect, ele coincid cam 75%.

Similar, iesirea generatorului coincide cu ceadin LFSR3 cam 75% din timp.

Cu aceste corelari secventa poate fi ghicitacomplet.

22

Page 565: Criptografie 600

Generatorul Geffe poate fi extins la 2k + 1

LFSR legati printr-un MUXk.

Acest lucru nu va mari ınsa securitatea

generatorului.

23

Page 566: Criptografie 600

Generatori ”Stop-and-Go”

1. Cel mai cunoscut este Beth - Piper:

LFSR3

LFSR2 ��

��

��

��

LFSR1

-6

-

6-

-

? --6

-

6--

-6

ss

CK

a1(t)a2(t)

a3(t)

b(t)

Acest generator controleaza ceasurile celor trei

circuite.

Ceasul de intrare ın LFSR2 este controlat de

iesirea din LFSR1. LFSR2 schimba starea la

momentul t numai daca iesirea din LFSR1 la

momentul t− 1 a fost 1.

Nu se cunosc studii asupra complexitatii aces-

tui generator.

El totusi nu a rezistat atacurilor prin corelare.

24

Page 567: Criptografie 600

2. Stop-and-Go alternativ

Foloseste trei LFSR de lungimi diferite:

LFSR3

LFSR2LFSR1

����

��

��

��

-

?-XX��e-

-

6-

6

-

-? -6

-

? -6

-

? -

-

6-

-

ss

s

CK

Cand iesirea din LFSR1 este 1 ea activeaza

LFSR2; ın caz contrar este activat LFSR3.

Acest generator are o perioada mare.

Exista un atac prin corelare asupra sa (mai

precis asupra LFSR1), dar acesta nu i-a slabit

substantial securitatea.

25

Page 568: Criptografie 600

3. Generator Gollmann

Extensie ”ın cascada” a mai multor circuite

LFSR, ceasul fiecarui LFSR fiind controlat de

circuitul anterior.

LFSR1

��

��

��

�� LFSR2

��

��

��

�� LFSR2

��

��

��

��

-6-

6-

6

- - -

? -6

-- -

? -6

?- 6-

?- 6-

?-- -

s ss

ss1

CK . . .

. . .

Daca la momentul t−1 iesirea din LFSRi este

1, atunci la momentul t este activat LFSRi+1.

Daca toate circuitele liniare au aceiasi lungime

n, complexitatea unui generator Gollmann cu

k LFSR-uri este n · (2n − 1)k−1.

26

Page 569: Criptografie 600

Generatorul Blum - Micali

Fie g un numar prim, p un numar prim impar

si x0 o valoare initiala.

Se genereaza numerele

xi+1 = gxi (mod p)

Iesirea din generator este 1 daca xi <p− 1

2si

0 altfel.

Securitatea acestui sistem se bazeaza pe

problema logaritmului discret.

Daca p este suficient de mare astfel ca

problema logaritmului discret sa fie dificila,

generatorul este considerat sigur.

27

Page 570: Criptografie 600

Generatorul RSA

Fie n = pq un modul obtinut prin produsul a

doua numere prime mari, un numar e astfel ca

cmmdc(e, (p − 1) · (q − 1)) = 1 si x0 o valoare

initiala (x0 < n).

Se defineste

xi+1 = xei (mod n)

Iesirea din generator este zi = xi (mod 2).

Securitatea generatorului se bazeaza pe difi-

cultatea spargerii sistemului RSA.

Daca n este suficient de mare, sistemul este

considerat sigur.

28

Page 571: Criptografie 600

Generatorul Mother-of-all

Este propus de George Marsaglia, fiind extremde rapid ın implementare pe limbaj de asam-blare.

Se aleg cinci numere ıntregi x0, x1, x2, x3, c

(nu toate nule), stocate pe 32 biti fiecare.Algoritmul este:

1. n←− 4;

2. while n ≤MAX do

(a) S ←− 2111111111 · xn−4 + 1492 · xn−3 + 1776 ·xn−2 + 5115 · xn−1 + c;

(b) xn ←− S (mod 232), c←−⌊

S

232

⌋;

(c) n←− n + 1;

Suma intermediara S este stocata pe 64 biti.

Valoarea MAX este stabilita ın functie delungimea secventei pseudo-aleatoare generate.

29

Page 572: Criptografie 600

Generatorul 1/P

Fie P un numar prim impar si b un generator

al lui Z∗P .

Secventa produsa de generatorul 1/P cu in-

trarea (b, P ) este sirul de cifre din reprezentarea

numerica a fractiei 1/P ın baza b.

Secventa obtinuta este periodica de perioada

P − 1 : 1/P = q1q2 . . . qP−1qP . . .

Exemplul 4. Fie b = 10 si P = 7.

Secventa produsa de 1/P cu intrarea (10,7)

este 142857142 . . ., deoarece

1/7 = 0,142857142 . . .

Evident, lungimea perioadei este P − 1 = 6.

30

Page 573: Criptografie 600

Desi generatorul 1/P are proprietati care ıl

situeaza printre generatorii performanti din

punct de vedere al distributiei datelor,

criptografic este slab.

Astfel, notand cu s numarul de cifre din

reprezentarea binara a lui P , se poate

demonstra:

- Daca se stie P si o secventa de caractere

din sir egala cu s, aceasta se poate extinde la

dreapta si la stanga.

- Daca se stiu orice 2s+1 elemente consecutive

din sir, se poate reconstitui valoarea lui P .

31

Page 574: Criptografie 600

Generatorul ANSI X9.17

ANSI X9.17 este standard FIPS folosit pen-tru generarea de chei pseudo-aleatoare si vec-tori de initializare (V I) din modurile de operareDES.

Foloseste sistemul de criptare 3DES.

Intrare:

- s: secventa aleatoare secreta de 64 biti;

- K: cheia de criptare pentru 3DES;

- m: numar ıntreg (lungimea secventei

generate).

Iesire: m secvente de cate 64 biti.

Algoritm:

1. I = eK(s);

2. for i←− 1 to m do

2.1. xi ←− eK(s⊕ I);

2.2. s←− eK(xi ⊕ I).

3. output(x1, x2, . . . , xm).

32

Page 575: Criptografie 600

Securitatea generatorilor de numere

pseudo-aleatoare

Proprietatea de aleatorism a secventelor se

masoara prin teste statistice.

Un generator de secvente pseudo-aleatoare

trece testele statistice daca se comporta

similar sau identic cu un generator real aleator.

Din punct de vedere criptografic, securitatea

generatorului depinde de eficienta computatio-

nala a algoritmului folosit, precum si de posi-

bilitatea ca un adversar – cunoscand secventa

pseudo-aleatoare rezultata – sa determine

parametrii secreti ai algoritmului.

Un sir poate fi bun din punct de vedere sta-

tistic, dar sa prezinte numeroase defecte de

securitate criptografica.

33

Page 576: Criptografie 600

Definitia 4.Un generator G este ”nediferentia-

bil (ın timp) polinomial” daca nu exista nici un

text statistic eficient care sa poata decide ca G

este diferit de un generator real aleator (GA).

Lema 2.Daca generatorul G este nediferentia-

bil polinomial, atunci nu exista nici un algoritm

de complexitate polinomiala (”eficient”) care

sa-l poata sparge.

34

Page 577: Criptografie 600

Exemplul 5. Pentru generatorul 1/P se poate

construi un test statistic care determina daca –

pentru un numar prim arbitrar de n cifre binare

– o secventa de 3n numere a fost extrasa din

1/P sau a fost generata aleator.

Astfel, pentru generarea lui P se utilizeaza

2n + 1 elemente (din cele 3n).

Apoi, folosind acest P se genereaza 3n cifre,

care se compara cu secventa data.

Daca cele doua secvente se potrivesc, atunci

(cu o probabilitate de cel putin 1− 12n−1)

sirul a fost produs de generatorul 1/P .

35

Page 578: Criptografie 600

Teste statistice

Pachete de teste utilizate ca standarde pentru

evaluarea securitatii generatorilor de numere

pseudo-aleatoare:

• DIEHARD (15 teste elaborate de George

Marsaglia)

• NIST (16 teste elaborate de Institutul de

Standarde din SUA).

Testele au o valoare direct proportionala cu

lungimea n a secventei testate.

In general ordinul de marime al lui n este ın

intervalul [103,107].

36

Page 579: Criptografie 600

Exemple de teste

• Verifica daca numarul de 0 si de 1 dinsecventa sunt aproximativ egale.

• Calculeaza si analizeaza frecventabigramelor, trigramelor etc.

• Determina frecventa de aparitie a bitului 1ın cadrul blocurilor de M caractere conse-cutive (M fixat).

• Analizeaza numarul de iteratii din sir(”iteratie” = o secventa neıntrerupta debiti identici).

• Calculeaza rangul submatricilor create dinsecventa ce este testata; scopul este de averifica independenta liniara a subsirurilorde lungime fixata. Acest test apare atat ınpachetul DIEHARD cat si ın NIST .

37

Page 580: Criptografie 600

• Determina numarul de aparitii ale unorsecvente tinta fixate.

• Calculeaza frecventa secventelor de oanumita lungime.

• Cerceteaza daca secventa poate fi compri-mata semnificativ fara pierderi de informa-tie; un sir care poate fi comprimat esteconsiderat nealeator.

• Calculeaza abaterea maxima de la 0 asumelor partiale ale secventei (ın care 0este ınlocuit cu −1), pentru a determinadaca suma cumulativa a unui subsir esteprea mare sau prea mica ın comparatie cucea corespunzatoare a unui sir aleator(unde aceste sume sunt apropiate de zero).Tot aici se urmareste de cate ori sumelepartiale au valoarea 0.

38

Page 581: Criptografie 600

Prelegerea 7

Sisteme de partajare a secretelor

1

Page 582: Criptografie 600

2 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

7.1 Sistemul confidential al lui Shamir

Intr-o banca, seiful trebuie deschis ın fiecare zi.Banca are trei directori, dar nu ıncredinteaza combinatia seifului nici

unuia din ei.Ea doreste sa dispuna de un sistem de acces prin care orice asociere de

doi directori sa poata deschide seiful, dar acest lucru sa fie imposibil pentruunul singur.

In Rusia, accesul la arma nucleara utilizeaza tot un sistem doi - din -trei.

Cele trei persoane sunt Presedintele tarii, Presedintele Parlamentului siMinistrul Apararii.

(Time Magazin 4 mai 1992)

Page 583: Criptografie 600

7.1. SISTEMUL CONFIDENTIAL AL LUI SHAMIR 3

Sistem de partajare a secretului numit sistem confidential(Threshold scheme ın engleza, a seuil ın franceza).

Definitia 7.1 Fie t, w doua numere ıntregi pozitive, t ≤ w. Un sistemconfidential (t, w) este o metoda de partajare a unei chei K ıntre mem-brii unei multimi P de w participanti, astfel ıncat orice asociere de t

participanti sa poata calcula K, lucru imposibil pentru asocieri de t − 1sau mai putini participanti.

Valoarea lui K este aleasa de un arbitru D.Se presupune ca D 6∈ P .

D va distribui ın secret componente ale cheii membrilor grupului P ,astfel ıncat nici un participant sa nu cunoasca componentele celorlalti sinici sa fie capabil ca din componenta sa sa poata recompune cheia K.

Ulterior, participantii unei submultimi B ⊆ P pot pune ın comun com-ponentele cheii cunoscute de ei (sau sa le dea unei autoritati ın care auıncredere) cu scopul de a determina K.

Ei trebuie sa poata reusi ın aceasta tentativa daca si numai daca

card(B) ≥ t

Page 584: Criptografie 600

4 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

P= {Pi | 1 ≤ i ≤ w}

multimea celor w participanti.K este spatiul tuturor cheilor posibile, iar S este spatiul componentelor

(toate componentele posibile ale cheii).Sistemul este creat de Shamir ın 1979.

Fie p (p ≥ w +1) un numar prim si K= Zp, S= Zp (cheile si componen-tele sunt numere din Zp).

Sistemul confidential al lui Shamir se bazeaza pe un polinom aleatora(X) de grad cel mult t− 1, ın care termenul liber este K.

Fiecare participant Pi afla un punct (xi, yi) de pe graficul acestui poli-nom.

1. (Initializare): D alege w elemente distincte x1, . . . , xw ∈ Zp

(xi publice), fiecare xi fiind comunicat lui Pi.

2. Sa presupunem ca D doreste sa repartizeze cheia K ∈ Zp. D va selectaaleator t− 1 elemente a1, . . . , at−1 ∈ Zp si construieste polinomul

a(X) = Kt−1∑j=1

ajXj (mod p).

3. D calculeaza yi = a(xi) si comunica aceasta valoare lui Pi (1 ≤ i ≤ w).

Page 585: Criptografie 600

7.1. SISTEMUL CONFIDENTIAL AL LUI SHAMIR 5

Fie o submultime {Pi1, . . . , Pit} de participanti care doresc sa reconsti-tuie cheia.

Ei stiu valorile xij si yij = a(xij) pentru 1 ≤ j ≤ t;a(X) ∈ Zq[X] este polinomul (secret) folosit de D.

Cum gradul lui este cel mult t− 1, putem scriea(X) = a0 + a1X + . . . + at−1X

t−1

unde a0 = K iar a0, . . . , at−1 ∈ Zq sunt necunoscute.Ele se afla rezolvand sistemul liniar de t ecuatii yij = a(xij).Daca ecuatiile sunt independente, solutia este unica, iar valoarea lui a0

este chiar cheia K.

Exemplul 7.1 Sa presupunem p = 17, t = 3, w = 5, iar xi = i, (1 ≤ i ≤5). Daca B = {P1, P3, P5} vor sa afle cheia aducand fiecare informatiile8, 10 si respectiv 11, ei vor scrie polinomul general a(X) = a0+a1X+a2X

2

si vor reduce problema la rezolvarea ın Z17 a sistemului liniara(1) = a0 + a1 + a2 = 8a(3) = a0 + 3a1 + 9a2 = 10a(5) = a0 + 5a1 + 8a2 = 11

Acesta admite solutia unica ın Z17 : a0 = 13, a1 = 10, a2 = 2.Deci valoarea cautata este K = 13.

Teorema 7.1 In sistemul confidential al lui Shamir, orice multime B det participanti poate reconstitui ın mod unic cheia K.

Page 586: Criptografie 600

6 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Ce se ıntampla daca un grup de t− 1 participanti ıncearca sa calculezecheia K ?

Daca procedeaza conform algoritmului anterior, vor obtine un sistem det− 1 ecuatii cu t necunoscute.

Fie y0 o valoare arbitrara a cheii K.Vom avea y0 = a0 = a(0), care formeaza a t - a ecuatie a sistemului.Acesta ofera de asemenea solutie unica.Deci, pentru orice valoare K ∈ Zp exista un polinom unic aK(X) ∈

Zp[X] care verifica toate conditiile:yij = aK(xij) (1 ≤ j ≤ t− 1), y0 = aK(0).

Rezulta ca orice valoare a lui K este consistenta cu componentele detinutede cei t− 1 participanti; asocierea lor nu ofera nici o informatie suplimen-tara pentru aflarea cheii.

Page 587: Criptografie 600

7.1. SISTEMUL CONFIDENTIAL AL LUI SHAMIR 7

Plecand de la alta reprezentare sub forma de polinoame de interpolareLagrance, se poate construi o varianta mai simpla a algoritmului Shamirpentru cazul w = t.

Ea functioneaza pentru K= Zm, S= Zm (m nu este obligatoriu numarprim si – chiar mai mult – este posibil ca m ≤ w). Noul algoritm este:

1. D alege aleator t− 1 elemente y1, . . . , yt−1 ∈ Zm;

2. D calculeaza yt = K −t−1∑i=1

yi (mod m);

3. Fiecare element yi este transmis ın secret lui Pi (1 ≤ i ≤ t).

Cei t participanti pot determina cheia K pe baza formulei

K =t∑

i=1yi (mod m).

Evident, t−1 participanti nu pot obtine cheia K. Chiar daca pun ın comuncomponentele lor, ei pot determina valoarea K−y, unde y este componentacelui care lipseste. Cum y este o valoare aleatoare din Zm, nu se va obtinenici o informatie suplimentara referitoare la cheie.

Acesta este deci un sistem confidential (t, t).

Page 588: Criptografie 600

8 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

7.2 Structura de acces si partaj a secretului general

Am studiat situatia cand orice asociere de t participanti din totalul de w

poate calcula cheia.Restrangem conditia, specificand ce submultimi de participanti pot avea

acces la cheie si pentru ce submultimi acest acces este interzis.

Fie Γ o multime de submultimi ale lui P , fiecare din ele reprezentand oasociatie autorizata sa calculeze cheia K.

Γ se numeste structura de acces, iar submultimile ei se numesc submultimiautorizate.

Fie K o multime de chei si S o multime de componente.Cand arbitrul D doreste sa repartizeze o cheie K ∈ K, el va distribui

cate o componenta fiecarui participant, urmand ca ulterior, o submultimede participanti sa ıncerce sa determine K punand ın comun componentelecunoscute de ei.

Definitia 7.2 Un sistem perfect de partajare a secretelor cu structura deacces Γ este un procedeu de partajare a secretului unei chei K peste omultime P de participanti, astfel ıncat:

1. Orice submultime autorizata B ⊆ P de participanti poate reconstituicheia din componentele cunoscute de ei;

2. Orice submultime neautorizata B ⊆ P de participanti nu poseda nicio informatie despre valoarea lui K.

Page 589: Criptografie 600

7.2. STRUCTURA DE ACCES SI PARTAJ A SECRETULUI GENERAL 9

Un sistem confidential (t, w) realizeaza structura de acces

Γ= {B ⊆ P | card(B) ≥ t}.

O asemenea structura de numeste structura confidentiala.

Sistemul confidential al lui Shamir este perfect si realizeaza o structuraconfidentiala.

Page 590: Criptografie 600

10 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Securitatea sistemelor de partajare a secretelor.

Fie B ∈ Γ si B ⊆ C ⊆ P.

Daca C cauta sa determine cheia K, ea va reusi lucrand numai cu B siignorand participantii din C \B.

Altfel spus, structura de acces satisface conditia de monotonie:Daca B ∈ Γ si B ⊆ C ⊆ P, atunci C ∈ Γ.

In continuare vom presupune ca orice structura de acces este monotona.

Un element B ∈ Γ este minimal daca ∀A ⊂ B =⇒ A 6∈ Γ.

Vom nota cu Γ0 multimea elementelor minimale din Γ.

Se observa ca aceasta multime caracterizeaza complet Γ:

Γ= {C ⊆ P | ∃B ∈ Γ0, B ⊆ C}.

Spunem ca Γ este ınchiderea lui Γ0 si notam prin Γ = Γ0.

Exemplul 7.2 Fie P= {P1, P2, P3, P4} si

Γ0= {{P1, P2, P4}, {P1, P3, P4}, {P2, P3}}.Vom avea

Γ= {{P1, P2, P4}, {P1, P3, P4}, {P2, P3}, {P1, P2, P3}, {P2, P3, P4}, {P1, P2, P3, P4}}.

Invers, fiind dat Γ, se vede imediat ca Γ0 este multimea partilor saleminimale.

In cazul structurilor confidentiale de acces, baza este multimea submultimilorformate cu t participanti.

Page 591: Criptografie 600

7.3. CONSTRUCTIA CIRCUITELOR MONOTONE 11

7.3 Constructia circuitelor monotone

Ideea apartine lui Benaloh si Leichter; ea consta ın construirea unui circuitcombinational care recunoaste structura de acces si genereaza un sistem departajare a secretului.

Un astfel de circuit este numit circuit monoton.

Fie C un circuit computational cu w intrari notate prin variabilelebooleene x1, . . . , xw (corespunzatoare celor w participanti P1, . . . , Pw) sio iesire booleana y = C(x1, . . . , xw).

Presupunem ca la constructia circuitului sunt folosite numai porti AND

si OR (fara porti NOT ).Un astfel de circuit este numit ”monoton” daca modificarea unei intrari

din 0 ın 1 nu va implica niciodata transformarea iesirii y din 1 ın 0.

Se noteaza

B(x1, . . . , xw) = {Pi | xi = 1}

multimea participantilor asociati ın multimea B.Presupunand ca circuitul C este monoton, vom avea

Γ(C)= {B(x1, . . . , xw) | C(x1, . . . , xw) = 1}.

Circuitul C fiind monoton, Γ(C) este o multime monotona de parti alelui P .

Page 592: Criptografie 600

12 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Fiind data o multime monotona Γ de parti ale lui P , se poate construiusor un circuit monoton C cu Γ(C)= Γ.

Exemplu de constructie:Fie Γ0 o baza a lui Γ. Vom construi formula booleana (ın forma normal

disjunctiva) ∨B∈Γ0

∧Pi∈B

Pi

Fiecare clauza din aceasta forma normala este legata printr-o poarta

AND, iar disjunctia finala corespunde unei porti OR.Numarul total de porti folosite este card(Γ0) + 1.

Page 593: Criptografie 600

7.3. CONSTRUCTIA CIRCUITELOR MONOTONE 13

Fie C un circuit monoton care recunoaste Γ.Algoritm care permite arbitrului D sa construiasca un sistem perfect de

partajare a secretului cu structura de acces Γ.Se foloseste sistemul confidential (t, t) prezentat anterior.Multimea cheilor este deci K= Zm.Algoritmul parcurge circuitul de la iesire spre intrare, marcand recursiv

cu xV ∈ K, fiecare arc V parcurs (ın sens invers).Initial, arcului care marcheaza iesirea y i se atribuie valoarea xout = K

a cheii.

1. xout ← K;

2. pentru orice poarta G din care iese un arc marcat x, iar arcele careintra sunt nemarcate, executa:

(a) Daca G este o poarta OR, atunci xV ← x pentru orice arc V careintra ın G;

(b) Daca G este o poarta AND si V1, . . . , Vt sunt arcele care intra ınG, atunci

i. Alege aleator xV,1, . . . , xV,t−1 ∈ Zm;

ii. Calculeaza xV,t = x−t−1∑i=1

xV,i (mod m);

iii. Marcheaza arcul Vi cu xV,i, (1 ≤ i ≤ t).

Page 594: Criptografie 600

14 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Exemplul 7.3 Pentru multimea din Exemplul 7.2, avemΓ0= {{P1, P2, P4}, {P1, P3, P4}, {P2, P3}}

Expresia booleana asocialta

(P1 ∧ P2 ∧ P4) ∨ (P1 ∧ P3 ∧ P4) ∨ (P2 ∧ P3).

Circuitul monoton asociat este (au fost marcate si arcele, conform algo-ritmului descris):

� �� ��� � � ��

?

? -?

?�??

u uuu? -

??

?�

? ?

?�

?

-

?

?�

?

-

?

x1 x2 x3 x4

K

K KK

a1 b1a2 c1 K−c1 b2K−a1−a2 K−b1−b2

Aici a1, a2, b1, b2, c1, c2 sunt numere alese aleator ın Zm. Fiecare participantprimeste drept componenta doua numere:

1. a1 si b1 pentru P1,2. a2 si c1 pentru P2,3. b2 si K − c1 pentru P3,4. K − a1 − a2 si K − b1 − b2 pentru P4.Fiecare submultime autorizata poate calcula valoarea lui K.Astfel, {P1, P2, P4} determina K = a1 +a2 +(K−a1−a2), submultimea

{P1, P3, P4} calculeaza K = b1 + b2 + (K − b1− b2), iar {P2, P3} va calculaK = c1 + (K − c1).

Page 595: Criptografie 600

7.3. CONSTRUCTIA CIRCUITELOR MONOTONE 15

Sa vedem ce se ıntampla cu multimile neautorizate.

Daca o multime B este neautorizata, orice submultime a sa va fi deasemenea neautorizata.

Definitia 7.3 O multime B ⊆ P este maximal neautorizata daca∀B1 ⊂ B =⇒ B1 ∈ Γ.

Este suficient deci de demonstrat ca multimile maximal neautorizate nupot afla cheia din informatiile pe care le detin.

Exemplul 7.4 Revenind la exemplul anterior, multimile maximal neau-torizate sunt

{P1, P2}, {P1, P3}, {P1, P4}, {P2, P4}, {P3, P4}.

In fiecare caz, pentru determinarea cheii K lipseste o informatie definitaaleator.

De exemplu, {P1, P2} detin informatiile a1, a2, b1 si c1.Pentru a reconstitui cheia K ar avea nevoie cel putin de numarul

K − a1 − a2, sau de K − c1.

Sisteme cu aceeasi structura de acces pot fi obtinute folosind si alte circuite.

Cand o multime autorizata B doreste aflarea cheii, ea trebuie sa stiecircuitul utilizat de arbitru pentru construirea sistemului si sa deduca deaici ce componente sunt necesare pentru parcurgerea arcelor respective.

Aceasta informatie trebuie sa fie publica.Numai valorile componentelor trebuie sa fie secrete.

Page 596: Criptografie 600

16 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

7.4 Rata de informatie

Fie P o multime de participanti si S spatiul tuturor componentelor posibileale cheii.

O distributie de componente este o functief : P−→ S

Ea codifica modalitatea de repartizare a informatiilor ıntre participanti.f(Pi) va fi componenta distribuita participantului Pi (1 ≤ i ≤ w).

Pentru fiecare K ∈ K, fie FK multimea tuturor distributiilor posibileale cheii K.

In general, FK este publica.

DefinimF=

⋃K∈KFK .

F este ansamblul complet al tuturor distributiilor posibile de chei.Rolul arbitrului va fi de a selecta aleator un element f ∈ FK si de a

distribui componentele ın conformitate cu aceasta alegere.

Pentru o submultime B ⊆ P (autorizata sau nu) de participanti, sedefineste S(B) = {f |B | f ∈ F}, unde functia

fB : B −→ S

este restrictia distributiei de parti f la submultimea B,definita prin fB(Pi) = f(Pi), ∀Pi ∈ B.

Deci S(B) este multimea tuturor distributiilor posibile ale componen-telor la elementele submultimii B.

Page 597: Criptografie 600

7.4. RATA DE INFORMATIE 17

Ne punem problema evaluarii performantelor sistemelor perfecte de par-tajare a secretelor construite anterior, pe baza structurilor de acces monotone.

In cazul unui sistem confidential (t, w), circuitul boolean construit pebaza expresiei ın forma normal disjunctiva are 1 + Ct

w porti.Fiecare participant primeste o componenta formata din Ct−1

w−1 numeredin Zm.

Aceasta partajare este foarte slaba comparativ cu sistemul confidentialal lui Shamir (t, w), care ofera acelasi rezultat folosind componente formatedintr-un singur numar.

Pentru masurarea performantelor sistemelor perfecte de partajare a se-cretelor, vom folosi un instrument numit rata de informatie.

Definitia 7.4 Fie un sistem perfect de partajare a secretelor cu structurade acces Γ. Rata de informatie a unui participant Pi este prin definitie

ρi =log2(card(X))

log2(card(S(Pi))).

S(Pi) ⊆ S este multimea componentelor posibile pe care le poate primiparticipantul Pi.

S-a notat cu X = K multimea cheilor posibile.Rata de informatie a sistemului este

ρ = min{ρi | 1 ≤ i ≤ w}.

Exemplul 7.5 Sistemul din Exemplul 7.3 are rata de informatie

ρ =log2m

log2m2 =1

2

Page 598: Criptografie 600

18 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

In general, daca se construieste un sistem de partajare a secretelorplecand de la un circuit monoton C, rata sa de informatie se obtine folosindurmatoarea teorema:

Teorema 7.2 Fie C un circuit boolean monoton. Exista atunci un sistemperfect de partajare a secretelor, cu structura de acces Γ(C), care admiteca rata de informatie

ρ = max1≤i≤w

{1

ri

}unde ri este numarul de arce de intrare ın circuit (pentru valorile xi).

Evident, este preferabila o rata de informatie cat mai mare. Valoarea eieste ınsa limitata superior:

Teorema 7.3 Pentru orice sistem perfect de partajare a secretelor cu struc-tura de acces Γ, rata de informatie verifica inegalitatea ρ ≤ 1.

Un sistem cu ρ = 1 va fi numit ideal.De exemplu, sistemul confidential al Shamir are ρ = 1, deci este un

sistem ideal.In schimb, rata de informatie pentru un sistem confidential (t, w) bazat

pe circuite monotone construite cu forma normal disjunctiva este1

Ct−1w−1

,

extrem de ineficienta daca 1 < t < w.

Page 599: Criptografie 600

7.5. SISTEMUL DE PARTAJARE AL LUI BRICKELL 19

7.5 Sistemul de partajare al lui Brickell

Sistemul este cunoscut si sub numele: constructia vectoriala a lui Brickell.

Fie Γ o structura de acces, p un numar prim, iar d ≥ 2 un numar ıntreg.Fie

π : P−→ Zdp

o functie cu proprietatea

(1, 0, . . . , 0) ∈ 〈π(Pi) | Pi ∈ B〉 ⇐⇒ B ∈ Γ. (A)

Altfel spus, vectorul (1, 0, . . . , 0) este o combinatie liniara de vectoridin multimea {π(Pi) | Pi ∈ B} daca si numai daca B este o submultimeautorizata.

Page 600: Criptografie 600

20 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Construim un sistem de partajare a secretelor cuK= S(Pi) = Zp (1 ≤ i ≤ w).

Pentru orice a = (a1, . . . , ad) ∈ Zdp . vom defini o functie de distributie

a componentelor fa : P−→ S prin fa(x) = a · π(x).

S-a notat cu ”·” produsul scalar a doi vectori.Algoritmul de partajare a secretelor Brickell:

1. (Initializare) D atribuie lui Pi vectorul π(Pi) ∈ Zdp (1 ≤ i ≤ w).

Acesti vectori sunt publici.

2. Pentru repartizarea cheii K ∈ Zp, arbitrul D alege aleator d − 1 ele-mente a2, . . . , ad ∈ Zp.

3. Folosind vectorul a = (K, a2, . . . , ad), arbitrul calculeaza componenta

yi = a · π(Pi) (1 ≤ i ≤ w), pe care o da lui Pi.

Vom avea rezultatul urmator:

Teorema 7.4 Daca π verifica proprietatea (A), multimea distributiilor decomponente FK ,

K ∈ K formeaza un sistem perfect de partajare a secretelor, cu structurade acces Γ.

Sistemul confidential (t, w) al lui Shamir este un caz particular al acesteiconstructii. Intr-adevar, fie d = t si π(Pi) = (1, xi, x

2i , . . . x

t−1i ), pentru

1 ≤ i ≤ w, unde xi este coordonata x data de Pi.Sistemul obtinut astfel este echivalent cu cel al lui Shamir.

Page 601: Criptografie 600

7.5. SISTEMUL DE PARTAJARE AL LUI BRICKELL 21

Un alt rezultat general se refera la structurile de acces care admit cabaza un ansamblu de perechi care definesc un graf multipartit complet.

Reamintim, un graf G = (V, E) este multipartit complet daca V sepoate partitiona ın submultimile V1, . . . , Vs astfel ıncat {x, y} ∈ E daca sinumai daca x ∈ Vi, y ∈ Vj cu i 6= j.

Multimile Vi se numesc componente. Daca card(Vi) = ni (1 ≤ i ≤ s),graful este notat Kn1,...,ns

. Graful multipartit complet K1,...,1 cu s compo-nente este de fapt un graf complet si se noteaza Ks.

Teorema 7.5 Fie G = (V, E) un graf multipartit complet. Atunci existaun sistem perfect de partajare a secretelor, ideal, cu structura de acces E

peste multimea V de participanti.

Page 602: Criptografie 600

22 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

Aplicam acest rezultat considerand structurile de acces posibile pentrupatru participanti.

Va fi suficient sa luam ın calcul numai structurile a caror baza nu sepoate partitiona ın doua multimi nevide.

O lista completa a structurilor de acces neizomorfe pentru 2, 3 sau 4participanti este(s-a notat cu ρ∗ valoarea maxima a ratei de informatiepentru structura respectiva):

Nr.crt w Submultimile lui G0 ρ∗ Rezultate

1. 2 P1P2 1 Confidential (2, 2)

2. 3 P1P2, P2P3 1 Γ0 ' K1,2

3. 3 P1P2, P2P3, P1P3 1 Confidential (2, 3)

4. 3 P1P2P3 1 Confidential (3, 3)

5. 4 P1P2, P2P3, P3P4 2/3

6. 4 P1P2, P1P3, P1P4 1 Γ0 ' K1,3

7. 4 P1P2, P1P4, P2P3, P3P4 1 Γ0 ' K2,2

8. 4 P1P2, P2P3, ; P2P4, P3P4 2/3

9. 4 P1P2, P1P3, P1P4, P2P3, P2P4 1 Γ0 ' K1,1,2

10. 4 P1P2, P1P3, P1P4, P2P3, P2P4, P3P4 1 Confidential (2, 4)

11. 4 P1P2P3, P1P4 1

12. 4 P1P3P4, P1P2, P2P3 2/3

13. 4 P1P3P4, P1P2, P2P3, P2P4 2/3

14. 4 P1P2P3, P1P2P4 1

15. 4 P1P2P3, P1P2P4, P3P4 1

16. 4 P1P2P3, P1P2P4, P1P3P4 1

17. 4 P1P2P3, P1P2P4, P1P3P4, P2P3P4 1 Confidential (3, 4)

18. 4 P1P2P3P4 1 Confidential (4, 4)

Se pot construi sisteme ideale pentru 10 din aceste 18 structuri de acces.

Page 603: Criptografie 600

7.6. CONSTRUCTIA PRIN DESCOMPUNERE 23

7.6 Constructia prin descompunere

Alta modalitate de construire a sistemelor de partajare a secretelor, remar-cabila prin performantele rezultatelor, care maximizeaza rata de informatie.

Definitia 7.5 Fie Γ o structura de acces cu baza Γ0 si K un set de chei.O K - descompunere ideala a lui Γ0 este un set {Γ1, . . . , Γn} cu proprieta-

tile

1. Γk⊆ Γ0 (1 ≤ k ≤ n);

2.n⋃

k=1Γk = Γ0;

3. ∀ k (1 ≤ k ≤ n) exista un sistem perfect de partajare a secretelor,ideal, cu multimea de chei K, peste multimea de participantiPk =

⋃B∈Γk

B.

Pentru o K - descompunere ideala a structurii de acces Γ se poate construiusor un sistem perfect de partajare a secretelor.

Teorema 7.6 Fie Γ o structura de acces cu baza Γ0, K un set de chei sio K - descompunere ideala {Γ1, . . . , Γn} a lui Γ.

Pentru fiecare participant Pi, fie Ri = card{k | Pi ∈ Pk}.Exista atunci un sistem perfect de partajare a secretelor cu structura de

acces Γ si rata de informatie ρ = 1/R, unde R = max1≤i≤w

{Ri}.

Page 604: Criptografie 600

24 PRELEGEREA 7. SISTEME DE PARTAJARE A SECRETELOR

O generalizare a acestui rezultat – pentru s K - descompuneri ideale sebazeaza pe teorema

Teorema 7.7 (Constructia prin descompunere): Fie Γ o structura de ac-ces de baza Γ0, s ≥ 1 un numar ıntreg, si K un set de chei.

Presupunem ca s-a construit o K - descompunere idealaDj = {Γj,1, . . . , Γj,nj

}a lui Γ0, si fie Pj,k multimea participantilor la structura de acces Γj,k.Pentru fiecare participant Pi definim

Ri =s∑

j=1card{k | Pi ∈ Pj,k}.

Exista atunci un sistem perfect de partajare a secretelor, cu structurade acces Γ, a carui rata de informatie este ρ = s/R, unde R = max

1≤i≤w(Ri).

Exemplul 7.6 Sa consideram structura de acces 5 din tabel, a carei bazanu este un graf multipartit complet.

Fie p un numar prim si sa consideram doua Zp - descompuneri:

D1 = {Γ1,1, Γ1,2} cuΓ1,1 = {{P1, P2}}Γ1,2 = {{P2, P3}, {P3, P4}}

si

D2 = {Γ2,1, Γ2,2} cuΓ2,1 = {{P1, P2}, {P2, P3}}Γ2,2 = {{P3, P4}}

Aceste descompuneri corespund lui K2 si K1,2, deci sunt descompuneriideale.

Ambele ofera o rata de informatie ρ = 1/2.Daca le vom combina conform Teoremei 7.7 cu s = 2, vom obtine o rata

de informatie maxima ρ = 2/3.

Page 605: Criptografie 600

7.6. CONSTRUCTIA PRIN DESCOMPUNERE 25

Luand ca baza Teorema 7.5, putem obtine efectiv un astfel de sistem.D alege aleator patru elemente b1,1, b1,2, b2,1, b2,2 ∈ Zp. Pentru o cheie(K1, K2) ∈ Z2

p , arbitrul va distribui componentele astfel:1. P1 primeste b1,1 si b2,1;2. P2 primeste b1,1 + K1, b1,2 si b2,1 + K2;3. P3 primeste b1,2 + K1, b2,1 si b2,2;4. P4 primeste b1,2 si b2,2 + K2.(toate calculele sunt efectuate ın Zp).

Exemplul 7.7 Fie structura de acces 8 si consideram K= Zp pentru unnumar prim p ≥ 3.

Vom utiliza doua K - descompuneri ideale

D1 = {Γ1,1, Γ1,2} cuΓ1,1 = {{P1, P2}}Γ1,2 = {{P2, P3}, {P2, P4}, {P3, P4}}

si

D2 = {Γ2,1, Γ2,2} cuΓ2,1 = {{P1, P2}, {P2, P3}, {P2, P4}}Γ2,2 = {{P3, P4}}

D1 corespunde lui K2 si K3, iar D2 – lui K2 si K1,3; deci ambele suntK - descompuneri. Aplicand Teorema 7.7 cu s = 2 se va obtine ρ = 2/3.

Similar exemplului precedent, o constructie efectiva se realizeaza astfel:D alege aleator (si independent) patru elemente b1,1, b1,2, b2,1, b2,2 ∈ Zp.

Pentru o cheie (K1, K2) ∈ Z2p , arbitrul va distribui componentele astfel:

1. P1 primeste b1,1 + K1 si b2,1 + K2;2. P2 primeste b1,1, b1,2 si b2,1;3. P3 primeste b1,2 + K1, b2,1 + K2 si b2,2;4. P4 primeste b1,2 + 2K1, b21 + K2 si b2,2 + K2.(toate calculele sunt efectuate ın Zp).