Escolar Documentos
Profissional Documentos
Cultura Documentos
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/308791446
CITATIONS READS
0 762
1 author:
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Adrian Constantin Atanasiu on 03 October 2016.
Vol. 1
(Criptografie)
Adrian Atanasiu
Prefata
Criptografia este stiinta comunicarii informatiei sub o forma securizata. Istoria ei
este veche si fascinanta. Mesaje ascunse sunt descoperite n Biblie; Herodot mentioneaza
o serie de procedee de steganografie folosite de vechii greci; Cezar foloseste un sistem
de criptare care i poarta numele; decriptarea telegramei Zimmermann a dus la intrarea
Statelor Unite n conflictul din 1914-1918. Si n fine cine nu a auzit de celebra masina
de criptat Enigma ?
Societatea actuala, cu un volum de date care se multiplica rapid, a dat noi valente si a
creat noi oportunitati de dezvoltare a criptografiei. Utilizarea Internetului a sporit si mai
mult importanta asigurarii securitatii informatiei, dar si a autentificarii ei. Acum dome-
niul si-a largit competentele si s-a extins atat de mult ncat a fost necesara redefinirea
sa. Criptografia a devenit numai un capitol a ceea ce se numeste astazi Securitatea
informatiei. Alte capitole care merita fi mentionate sunt: protocoale de semnatura elec-
tronica, comert electronic (Digital Business), infrastructura cu chei publice(PKI), arhi-
tectura de securitate a sistemelor de calcul (hard si soft), securitatea retelelor, securitatea
fluxului informational, securitatea bazelor de date, standarde si protocoale de gestiune
a cheilor, 0 - knowledge, partajarea secretelor, criptografie vizuala, watermarking, crip-
tografie nestandard (cuantum si moleculara), standarde de testare si certificare, protocoale
criptografice n medii juridice. Si zona de interes nu este nici pe departe epuizata. Unele
subiecte se dezvolta rapid si genereaza la randul lor domenii noi. De exemplu, retelele
wireless sau smart-cardurile necesita abordari separate, datorita interesului tot mai mare
pe care l ridica n societatea actuala. Deci, asa cum n anii 60 Knuth avea n vedere o
prezentare a artei programarii calculatoarelor, asa ar fi interesant de construit o enciclo-
pedie a artei securitatii informatiei. O enciclopedie care se mbogateste zilnic.
Lucrarea de baza este un suport de curs predat la Facultatea de Matematica si Infor-
matica a Universitatii Bucuresti. Mult timp acest curs a fost optional; dupa trecerea la
sistemul Bologna, s-a luat n considerare importanta domeniului si interesul permanent al
studentilor, astfel ncat studiul criptografiei a fost trecut n curicula generala. Materia are
n vedere atat o prezentare structurata istoric, cat si o abordare preponderent teoretica,
capabila sa asigure baza fundamentala de cunostinte absolventilor care ulterior vor lucra
n domeniul securitatii informatiei.
Dupa prezentarea sistemelor simple de criptare (monoa-lfabetice, polia-lfabetice, me-
4
Sisteme de criptare
Definitia 1.1. Criptografia este studiul metodelor matematice legate de securitatea infor-
matiei, capabile sa asigure confidentialitatea, autentificarea si non-repudierea mesajelor,
precum si integritatea datelor vehiculate ([?]).
5
6 CAPITOLUL 1. SISTEME DE CRIPTARE
Expeditor - Destinatar
6
Criptanalist
In toate aceste scenarii nu exista personaje pozitive sau negative. Orice serviciu de
criptare/decriptare are si o sectie de criptanaliza. Se pot da numeroase exemple din
istorie care sa arate rolul pozitiv al lui Oscar n anumite situatii. In general, ntr-un
1
Cuvantul inventat n 1658 de fizicianul englez Thomas Browne este format din cuvintele grecesti
cryptos ascuns si grafie scriere.
2
Canalul de comunicatie poate suferi si perturbari de ordin fizic: zgomote, stergeri, demodulari etc;
studiul detectarii si corectarii erorilor de de transmitere a informatiei constituie tema altui domeniu al
securitatii informatiei, numit Teoria Codurilor.
1.1. CARACTERISTICILE UNUI SISTEM DE CRIPTARE 7
Pentru ca un sistem de criptare sa fie considerat bun, trebuie ndeplinite trei criterii
(enuntate de Francis Bacon n sec. XV II):
Aceasta ultima conditie este utilizata astazi doar de unele subdomenii al criptografiei,
cum ar fi steganografie sau watermarking.
In termeni de complexitate, prin usor se ntelege folosirea unui algoritm polinomial
de grad mic preferabil algoritm liniar; o problema se considera imposibila daca pentru
rezolvarea ei nu se cunosc decat algoritmi de complexitate exponentiala.
Exemplul 1.1. Unul din primele sisteme de criptare cunoscute este sistemul de criptare
Cezar. Conform istoricului Suetoniu, el a fost folosit de Cezar n corespondenta sa.
Sa consideram alfabetul latin scris, n ordine
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fie k un numar ntreg din intervalul [0, 25]. El se va numi cheie de criptare. Re-
scriem 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):
ABCDEFGHIJKLMNOPQRSTUVWXYZ
CDEFGHIJKLMNOPQRSTUVWXYZAB
3
Aceasta este prima din cele cinci probleme ale mileniului, pentru rezolvarea carora se acorda premii
de cate un milion dolari.
1.1. CARACTERISTICILE UNUI SISTEM DE CRIPTARE 9
Daca Alice are un text clar pe care vrea sa-l cripteze cu sistemul Cezar, ea va proceda
astfel:
Sa presupunem ca mesajul care trebuie criptat este NIMIC NOU. Alice va aseza sub
fiecare litera a acestui text, litera aflata pe linia a doua din tabelul de sus, astfel:
NIMICNOU
PKOKEPQW
Textul criptat obtinut este P KOKEP QW (din motive suplimentare de securitate,
spatiile dintre cuvinte se ignora de obicei).
La primirea textului, Bob care stie ca este vorba de sistemul de criptare Cezar
va proceda astfel: el cunoaste (fiind destinatar legal) cheia de criptare ek . Cheia sa de
decriptare este dk = e26k . Pe baza ei Bob va putea construi cele doua linii ale tabelului,
dupa care va proceda ca Alice: scrie textul criptat pe prima linie, iar pe a doua linie
determina literele corespunzatoare, conform tabelului.
In cazul k = 2, Bob va folosi drept cheie numarul e262 = e24 , iar tabelul (litera 24
corespunde lui Y) este
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YZABCDEFGHIJKLMNOPQRSTUVWX
Literele P KOKEP QW determina pe a doua linie textul N IM ICN OU .
Sa rescriem sistemul Cezar n termenii Definitiei ??. Deoarece textele clare si cele
criptate folosesc alfabetul latin, vom efectua n prima etapa o operatie de codificare:
asociem literelor numere ntregi din intervalul [0, 25]:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
In acest fel putem opera matematic pe un inel finit foarte simplu: Z26 . Vom avea
P = C = K= Z26 . Pentru un K K ales arbitrar (si m P, C) ,
eK (m) = m + K (mod 26)
si
dK () = K (mod 26)
La nivel conceptual, exista doua tehnici de constructie a sistemelor de criptare, definite
de Claude Shannon n 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. De exemplu, n cazul secventelor binare, putem complementa unele
subsecvente folosind anumite formule predefinite.
10 CAPITOLUL 1. SISTEME DE CRIPTARE
Difuzie: Aceasta tehnica disipeaza redondanta specifica textului clar prin gene-
ralizarea ei la tot textul criptat. 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 cantitati apreciabile de
text criptat.
O rafinare a conceptelor de confuzie si difuzie conduce la ideea de secret perfect (perfect
secrecy). Un sistem de criptare are proprietatea de secret perfect daca din textul criptat,
Oscar nu poate obtine nici o informatie referitoare la textul clar.
Aceasta idee poate fi formulata matematic astfel:
Definitia 1.3. Un sistem de criptare este perfect secret daca
P r[x|y] = P r[x]
pentru orice x P, y C.
Altfel spus, probabilitatea aposteriori ca textul clar x sa fie criptat n textul receptionat
y este identica cu probabilitatea apriori ca textul clar sa fie x.
Urmatoarea teorema caracterizeaza proprietatea de secret perfect pentru majoritatea
sistemelor de criptare simetrice:
Teorema 1.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).
Demonstratia acestei teoreme poate fi gasita detaliat n [?].
Definitia 1.5. Un atac este un algoritm eficient care pentru un sistem de criptare
fixat gaseste elemente protejate care pot fi determinate (mult mai) rapid decat au fost
specificate de autori.
4
Acesta este unul din cele sase principii enuntate de Kerckfoffs pentru domeniul militar. Pentru detalii,
se poate utiliza wikipedia.org/wiki/Kerckhoffsprinciple.
12 CAPITOLUL 1. SISTEME DE CRIPTARE
In general, un criptanalist este pus n fata urmatoarelor situatii, care i solicita strategii
diverse de urmat:
1. Stie numai textul criptat w; n acest caz atacurile sunt direct legate de lungimea
textului.
Cel mai simplu atac n acest caz consta n parcurgerea tuturor cheilor posibile si
verificarea textului criptat, pana se gaseste cheia corecta. Este atacul prin forta
bruta si el reuseste totdeauna, pentru ca exista ntotdeauna o cheie n K, care a fost
folosita la criptare.
Un atac prin forta bruta poate fi modelat foarte simplu sub forma unui oracol, care
pentru orice cheie K K, raspunde daca este corecta sau nu.
Oracol
6
Da/Nu k
?
Atac - Cheie
Principala ntrebare care se pune n aceasta situatie este: daca ncercam sa ghicim
una din n chei posibile, care este numarul mediu de ncercari pana gasim cheia ?
Teorema 1.2. Pentru a ghici o cheie din n variante posibile sunt necesare n medie
(n + 1)/2 ncercari.
1 1 1 1 n(n + 1) 1 n+1
1 + 2 . . . + (n 1) + n = =
n n n n 2 n 2
Deci, n cazul cand numarul cheilor posibile este mic (n Exemplul ?? sunt numai
26 chei), 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 2n1 ncercari (daca nu exista nici
o informatie suplimentara). O extindere a lungimii cheii la n + 1 biti dubleaza deci
spatiul de cautare. In momentul de fata, tehnica de calcul ofera atacuri prin forta
bruta eficiente pentru cheile de lungimi mai mici de 128 biti; asa ca majoritatea
sistemelor de criptare actuale folosesc n general chei de 1024 biti sau chiar mai
mult5 .
Atacul prin forta bruta poate fi mbunatatit semnificativ cu alte informatii legate
de sistem, 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.
2. 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 1.2. La sistemul de criptare Cezar, o singura pereche (a, eK (a)), dezva-
luie imediat cheia si implicit duce la decriptare.
Exemplul 1.3. Aceasta a fost situatia n care s-a aflat orientalistul francez Jean
Francois Champollion, cand a descifrat hieroglifele folosind piatra de la Rosetta (vezi
[?]).
3. Oscar cunoaste criptarea unor texte clare selectate de el; este atacul cu text clar
ales, luat n considerare de majoritatea studiilor de criptanaliza. Aceasta situatie
este adesea superioara celei din cazul precedent; sa exemplificam acest lucru.
Exemplul 1.4. Fie sistemul de criptare Hill, creat n 1929 de Lester Hill.
Definim un numar ntreg fixat d (d 2). Se construiesc multimile
5
Exceptii fac sistemele de criptare simetrice si cele bazate pe curbe eliptice, datorita conceptelor
teoretice speciale pe baza carora sunt construite.
14 CAPITOLUL 1. SISTEME DE CRIPTARE
!
5 17
Pentru a putea afla aceasta matrice, Oscar trebuie sa afle inversa lui A = .
0 2
Cum det(A) = 10 si cmmdc(10, 26) > 1, rezulta ca 101 (mod 26) nu exista; deci A
nu este inversabila.
Sa presupunem acum ca Oscar lucreaza n ipoteza (3); alege un text clar a carui
matrice este inversabila si i afla criptarea.
1.3. EXERCITII 15
!
1 17
Fie BRAD acest text clar, a carui matrice asociata este A = .
0 3
!
11 10
Oscar solicita criptarea lui BRAD si primeste LKGP , de matrice B = .
6 15
Deci el dispune de perechea (BRAD, LKGP ).
!
1 3
Oscar determina ntai A1 = . Apoi, din ecuatia A M = B, va gasi
0 9
solutia ! ! !
1 1 3 11 10 3 3
M =A B = =
0 9 6 15 2 5
1.3 Exercitii
1.1. Textul clar NUMAR este criptat n Orice vant nu bate seara. Sa se descrie sistemul
de criptare folosit.
1.2. Folosind atacul prin forta bruta, decriptati mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
1.3. Sa presupunem ca Cezar trimite un mesaj criptat unuia din generalii sai, iar acest
mesaj este format dintr-o singura litera. Ce puteti spune despre securitatea mesajului ?
1.4. Fie p un numar prim. Aratati ca numarul matricilor 2 2 inversabile peste Zp este
(p2 1)(p2 p).
1.5. Cate matrici 2 2 sunt inversabile peste Zn pentru n = 6, 9, 26 ?
1.6. Sa se cripteze textul clar INAINTE SI LA DREAPTA folosind sistemul de xriptare
Hill cu matricea
17 17 5 11 2 19
M = 21 18 21
sau M = 5 23 25
2 2 19 20 7 1
16 CAPITOLUL 1. SISTEME DE CRIPTARE
In general, sistemele de criptare clasice se numesc si sisteme simetrice. Motivul este acela
ca Alice si Bob detin aceeasi informatie relativa la sistemul de criptare folosit. In plus,
odata cu aflarea cheii de criptare eK , cheia de decriptare dK se obtine imediat, fiind functia
inversa.
Sistemele de criptare simetrice se mpart n doua clase mari: cifruri de permutare si
cifruri de substitutie.
Exemplul 2.2. Un sistem celebru de criptare cu permutari este sistemul Richelieu (pre-
zentat si n literatura de Jules Verne, n romanul Mathias Sandorf). Dam un exemplu de
utilizare a unui astfel de sistem.
Fie cartonul 6 6, n care zonele hasurate constituie gauri.
17
18 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE
Asezand acum peste text, raman vizibile caracterele F MPTNIL (primul caracter a fost
un spatiu si l-am marcat cu pentru a-l face vizibil).
La a treia rotire a cartonului se obtine similar textul ICSUEETOA, iar la a patra
EEUAOURO
Deci textul criptat este
MNS TA AN F MPTNILICSUEETOAEEUAOURO
Operatia de decriptare se realizeaza similar.
Sa dam o definitie matematica acestei clase de sisteme de criptare.
Definitia 2.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
0 0 1
adica LF O.
Pentru textul clar se vor folosi caracterele de pe primul rand, iar pentru criptare
caracterele corespondente de pe randul al doilea. Astfel, STUDENT se cripteaza n
QSUTOJS, ARGINT n MPCEJS etc.
Sistemul Cezar cu cheie rezista mai bine la atacul cu forta bruta, numarul cheilor fiind
acum apropiat de card(S26 ) = 26!.
si poate fi aplicat folosind diverse semne drept coordonate (cifre, puncte, figuri, batai
de toba etc). A fost utilizat de asemenea n cadrul altor sisteme de criptare, cum ar fi
sistemul nihilist, cifrul ADFGVX (utilizat de armata germana n primul razboi mondial)
sau sistemul Bifid, inventat de Dellastell n 1901 (pentru detalii, se vedea [?]).
A: B: C: J. K. L. S T U
D: E: F : M. N. O. V W X
G: H: I: P. Q. R. Y Z
Liniile care ncadreaza fiecare caracter (inclusiv spatiul), mpreuna cu punctele (doua, unul
sau zero) indica substitutia caracterului respectiv. Astfel, textul clar DUPA DOUAZECI
DE ANI se cripteaza n
: . : : . : : : : : : : . :
Litera Frecventa
A 13, 04 % Litera Frecventa
I 12, 89 % L 4, 58 %
E 11, 75 % O 3, 85 %
R 7, 39 % D 3, 68 %
T 6, 62 % M 3, 33 %
N 6, 44 % P 2, 91 %
U 6, 44 % F 1, 50 %
S 5, 50 % V 1, 26%
C 5, 47 %
(restul caracterelor au o n mod normal o frecventa de aparitie sub 1 %).
Exemplul 2.6. Sa consideram ca 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 gkl gq gcxk fkpkcq sp gepbcgb
In prima etapa, vom numara de cate ori apare n text fiecare caracter. se obtine tabelul
Caracter c k x b s q g p m l e p a v b n o f z
Frecventa 39 38 27 25 23 20 19 18 18 11 9 8 7 7 2 2 2 2 2
Deci caracterele cele mai frecvente sunt c si k. Pe de-alta parte, cele mai frecvente
caractere din limba romana sunt A, I si E (textul nu este suficient de mare pentru a putea
face o distinctie neta). In mod cert, A {c, k}. Sunt patru optiuni posibile, din care trei
se elimina rapid. Ramane de abordat c A, k E.
Vom nota cu litere mari caracterele din textul clar; prin nlocuirea lui c cu A, a lui k
cu E, textul devine
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
Cuvantul ExA de pe primul rand are caracterul 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. Facem
substitutia si se obtine textul
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
24 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE
4
Datele statistice pentru toate tabelele inclusiv limba romana sunt din anul 1994.
2.2. CIFRURI DE SUBSTITUTIE 25
Exista o situatie ipotetica n care criptanaliza unui sistem monoalfabetic este imposibila:
atunci cand P= V si nu dispunem de nici o alta informatie (decat eventual sistemul de
criptare). Acest caz corespunde nsa unei codificari; adevarata criptare a avut loc atunci
cand mesajele inteligibile au fost translatate n cuvinte din V .
Sistemul homofonic
Sistemul de criptare homofonic este un sistem intermediar ntre sistemele mono si cele
polialfabetice. Principalul lui scop este de a evita atacul prin frecventa de aparitie a
caracterelor. Se pare ca a fost utilizat prima oara n 1401 de catre ducele de Mantua.
Fiecarui caracter a P i se asociaza o multime H(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 un element ales aleator din H(a). Pentru
decriptarea lui y C se cauta o multime H(a) astfel ca y H(a).
Exemplul 2.7. Sa consideram P= {a, b} si H(a) = {001, 010}, H(b) = {000, 011, 101,
111}. Pentru criptarea textului ab se poate folosi oricare 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.
S Y D W Z
R I P U L
H C A X F
T N O G E
B K M J V
Acest tabel va forma atat cheia de criptare cat si cea de decriptare.
Regulile de criptare/decriptare sunt:
Textul clar este separat n blocuri de cate doua caractere (ignorand spatiile). Condi-
tia este ca nici un bloc sa nu contina aceiasi litera, iar textul sa fie de lungime para.
Aceste deziderate se realizeaza usor modificand putin textul clar (se introduce o
litera de frecventa mica ntre cele doua litere egale, respectiv ca ultim caracter).
Fiecare bloc se cripteaza astfel: daca cele doua litere nu sunt plasate n tabel pe
aceeasi linie sau aceeasi coloana (de exemplu A si E), se cerceteaza colturile drep-
tunghiului determinat de cele doua litere (n cazul nostru A, F, O, E). Perechea AE
este criptata n F O. Ordinea este determinata de ordinea liniilor pe care se afla
literele din textul clar. Astfel, EA se cripteaza n OF , SF n ZB etc.
Daca cele doua litere se gasesc pe aceeasi linie (coloana), se merge ciclic cu o pozitie
la dreapta (respectiv jos). Deci CA se cripteaza n AX, W X n U G, CA n AX
etc.
De exemplu, textul clar AFARA PLOUA se cripteaza n XHHPPDPEPX. Se observa ca
cele patru aparitii ale caracterului A au fost criptate cu X, H, P si din nou X.
O permutare ciclica a liniilor si coloanelor tabloului nu modifica criptarea. De exemplu,
patratul
P U L R I
A X F H C
O G E T N
M J V B K
D W Z S Y
obtinut prin deplasarea cu doua pozitii spre stanga si o pozitie n sus, este echivalent cu
cel initial (ambele asigura aceiasi cheie de criptare).
Regulile de baza pot fi modificate sau completate dupa necesitati. Astfel, se poate
adauga din loc n loc cate o litera falsa (cu frecventa foarte redusa, cum ar fi X, Y ) care
sa modifice textul criptat. Patratul 5 5 poate fi nlocuit cu un dreptunghi 4 6 sau
3 8, cu schimbarile corespunzatoare n alegerea literelor care se elimina.
Pentru a pastra cheia n siguranta, se recomanda 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 literelor alfabetului, scrise n ordinea aparitiei lor5 .
5
In definitia initiala a sistemului, Wheatstone pleca de la cuvantul Holmes.
2.2. CIFRURI DE SUBSTITUTIE 27
R O M A N E S C
B D F G H I J L
P T U V W X Y Z
2. Textul clar se scrie pe doua randuri (completand eventual ultimul rand cu un ca-
racter de frecventa mica). Fiecare coloana va furniza o pereche de doua litere.
3. Intr-o pereche de litere (X, Y ), X este un element din primul careu, iar Y un
element din al doilea careu.
5. Se considera perechea (U, Z) si se reia pasul (4), obtinandu-se n final textul criptat
(P, Q).
R O M A N P R E D O
E S C B D M I N A T
F G H I J B C F G H
L P Q T U J L Q S U
V W X Y Z V W X Y Z
D O A R O V O R B A
S A I T I S P U N Q
Sistemul Playfair dublu asigura o securitate sporita comparativ cu cel simplu. Mo-
tivul: sunt folosite doua careuri (n loc de unul), plus un parametru suplimentar (lungimea
textului clar).
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
+
Definim P = C= Z26 , K= Z26 .
O cheie K K este un cuvant avand codificarea numerica k0 k1 . . . kp1 .
Fie a = a0 a1 . . . an codificarea textului clar care trebuie transmis. Textul criptat va fi
eK (a) = x = x0 x1 . . . xn , unde
xi = ai + ki (mod p) (mod 26) ()
adica folosind un sistem Cezar (k0 fiind o valoare fixata din Z26 ). In mod similar si
celelalte linii.
Deci, daca s-ar cunoaste lungimea p a cheii, problema s-ar reduce la criptanaliza a p
texte criptate cu Cezar sistem de criptare monoalfabetic.
Sunt cunoscute doua metode pentru aflarea lungimii cheii: testul lui Kasiski si indexul
de coincidente.
Prima metoda consta n studiul textului criptat si aflarea de perechi de segmente de
cel putin 3 caractere (aceasta lungime este propusa de Kasiski) identice. Pentru fiecare
astfel de pereche, se determina distanta dintre segmente.
Dupa ce s-au gasit mai multe astfel de distante, valoarea lui p va fi cel mai mare divizor
comun al lor (sau eventual un divizor al acestuia).
Exemplul 2.11. 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
Textul este destul de scurt (146 litere) si nu se mai stie nici un text trimis anterior.
Folosind metoda Kasiski, Oscar gaseste secventa QLN CJ care apare pe randul al doilea.
Distanta dintre cele doua aparitii este 27. De asemenea, apar doua cuvinte foarte asema-
natoare: AQLN si AOLN , avand ntre ele distanta 57.
Deci putem banui ca avem de-a face cu un cuvant cheie de lungime cmmdc(27, 57) = 3.
Rescriem textul pe coloane, fiecare coloana avand 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 G S S W G C O S C W S P R W W W G
V E G G W R K V R K T D L J R V E K Z E R L J K V K J G D K W L Z V Z C I V Y V E T
L 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 T R A R A N P Z C E E M A M E U
In limba romana, primele litere ca frecventa sunt AE 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 (maxima n cazul unui text lung). Pentru linia 3,
alegerea este simpla: ea este chiar A E I (16 aparitii din 49 posibile), deci o deplasare
0 n sistemul de criptare Cezar.
2.2. CIFRURI DE SUBSTITUTIE 31
A doua metoda de aflare a lungimii cheii de criptare ntr-un sistem Vigenere se bazeaza
pe un concept definit n 1920 de Wolfe Friedman: indexul de coincidente ([?]).
Definitia 2.2. Daca x = x1 x2 . . . xn este o secventa de n caractere alfabetice, se numeste
index de coincidente al lui x probabilitatea ca doua caractere din x, alese aleator, sa fie
identice. Aceasta valoare se noteaza Ic (x).
Sa notam cu fi frecventa de aparitie n x a caracterului literal codificat i (0 i 25).
Doua litere din x pot fi alese n Cn2 moduri. Din acestea, sunt Cf2i moduri ca ambele sa
aiba aceiasi codificare i (0 i 25). Putem atunci sa deducem formula
25 25
Cf2i
X X
fi (fi 1)
i=0 i=0
Ic (x) = =
Cn2 n(n 1)
Sa presupunem ca x este un text n limba romana. Din tabelul frecventelor de aparitie ale
literelor, notand pi probabilitatea de aparitie a caracterului codificat cu i (0 i 25),
valoarea pe care o putem estima pentru indexul de coincidente este
25
p2i = 0, 0788
X
Ic (x)
i=0
Motivatie: Probabilitatea ca doua elemente aleatoare sa fie ambele egale cu caracterul de
cod i este p2i (0 i 25). Afirmatia este valabila pentru orice criptare cu un sistem
monoalfabetic.
Sa presupunem acum ca am aranjat textul criptat x = x0 x1 . . . xn1 ntr-o matrice cu
p linii si dn/pe coloane (unde p este un numar ntreg pozitiv arbitrar), astfel
x 0 = x0 xp x2p . . .
x 1 = x1 xp+1 x2p+1 . . .
..
.
xp1 = xp1 x2p1 x3p1 ...
32 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE
Daca p este chiar lungimea cheii, atunci fiecare valoare Ic (xi ) trebuie sa fie apropiata de
0, 0788. In caz contrar, sirul xi va arata mult mai aleator, fiind obtinut prin amestecul
unei secvente de caractere criptate cu chei diferite. Pentru o secventa complet aleatoare,
valoarea indexului de coincidente este
2
1 1
Ic 26 = = 0, 0384
26 26
Valorile 0, 0788 si 0, 0384 vor constitui punctele de extrem pe care le poate lua Ic . Vom lua
deci diverse valori pentru p, pana vom gasi una care sa se apropie cat mai mult de 0, 788 si
nu de 0, 384. Aceea poate fi considerata cu suficienta siguranta drept lungimea cheii.
In etapa a doua, vom ncerca sa aflam efectiv cheia K = k0 k1 . . . kp1 .
Daca notam n1 = bn/pc lungimea secventei xi , atunci distributia de probabilitate ale
celor 26 litere n xi este
f0 f1 f25
, ,...,
n1 n1 n1
Secventa xi a fost obtinuta printr-o criptare Cezar cu o deplasare ki . Deci, situatia ideala
este cand distributia de probabilitate a deplasarii
fki fki +1 (mod 26) fk +25 (mod 26)
, ,..., i
n1 n1 n1
este cat mai apropiata de distributia de probabilitate p0 , p1 , . . . , p25 a limbii romane.
Fie un ntreg m (0 m 25); definim expresia
25
X pi fi+m
Fm =
i=0 n1
25
p2i = 0, 0788.
X
Daca m = kj (0 j p 1), ne putem astepta ca Fm
i=0
Daca m 6= kj , atunci Fm va fi semnificativ mai mic decat aceasta valoare. Deci, dupa
cel mult 25 ncercari, se poate afla deplasarea kj si deci a j-a litera din cheie.
2.3. EXERCITII 33
2.3 Exercitii
2.1. Folosind atacul prin forta bruta, decriptati mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
2.2. O cheie K este auto-cheie daca dK = eK . Gasiti toate auto-cheile sistemului de
criptare Cezar.
2.3. Demonstrati ca ntr-un cifru de permutare, este o auto-cheie daca si numai daca
TKLCP OCTLE TSSZC XCMEB CVKMK CCSBX KGQBA CGQPE MBKCQ FKGSP
SSBEB SBQPQ ACSGQ PEMGQ BLCOK CAQLB CQGKM BXCLQ GKCTX SFKCA
CBCBV KVKME LQAKP BXXCO CPBKL KOKCB QPQAC SSPBK LKM
2.12. O varianta a sistemului AUTOCLAVE este utilizarea textului criptat (n loc de text
clar) dupa prima aplicare a cheii. La care din cele doua variante de AUTOCLAVE este
criptanaliza mai usoara ?
2.13. Cate chei are un sistem de criptare afin n care card(V ) = 30, 100 sau 1225 ?
2.14. Fie K = (5, 21) o cheie ntr-un sistem de criptare afin peste Z29 .
(a) Exprimati functia de decriptare sub forma dK (y) = ay + b unde a, b Z29 ;
(b) Aratati ca eK (dK (x)) = x, x Z29 .
2.15. Fie K = (a, b) o cheie ntr-un sistem afin peste Zn . Demonstrati afirmatia:
K este auto-cheie daca si numai daca a1 a (mod n) si b (a + 1) 0 (mod n).
Aflati toate auto-cheile dintr-un sistem afin peste Z15 .
Sa presupunem ca n = pq unde p si q sunt numere prime distincte. Aratati ca numarul
auto-cheilor din sistemul afin peste Zn este n + p + q + 1.
2.16. Fiind dat unn numar ntreg n (n 1), sa se arate ca multimea tuturor functiilor de
criptare Vigenere (definite pentru toate cheile de lungime fixata n) formeaza o structura
algebrica de grup.
Sistemele de criptare pot fi aduse la un grad mai mare de complexitate si securitate daca
se folosesc mijloace mecanice de criptare. Astfel de mecanisme special construite vor usura
pe de-o parte operatiile de criptare/decriptare, iar pe de-alta parte vor fi capabile sa
creeze un numar mult mai mare de chei posibile.
1
Skitala a fost mentionata prima oara de poetul grec Archilochus (sec. VII .H). Desi apare ulterior
si n alte texte, abia la mijlocul secolului III .H. Apollonius din Rhodos specifica limpede utilizarea lui
ca mijloc de criptare. De remarcat ca pentru perioada respectiva, sistemele de criptare folosite de greci
erau de tip steganografic. O descriere a modului de operare este data apoi de Plutarh (50-120 A.D.).
35
36 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE
________________________
| | V | I | N | O | M |
|__| A | I | N | E | L |__
| A | I | N | T | A | |
| L | N | I | R | E | |
|___|___|___|___|___|__|
Dupa derularea de pe skitala, 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.
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
i, n + i, 2n + i, 3n + i, . . . (i = 1, 2, . . . , n)
care ulterior se concateneaza. Exista o valoare a lui n pentru care textul astfel format este
inteligibil.
1 2 3 4 5 6 7 8 9 10
1 A A A A A A A A A A
2 R R P N V S P E I I
3 I O S I O O U S R H
4 E S Y M T R H U E E
5 K U L O Y P I P S T
6 O V U C L M S B L O
7 B I K U E U E L B M
8 C J B L B B N C C U
9 U L R T C D R D D C
10 D B C Y D Y Y H F D
11 J V D B G E D I N F
12 T C T F F C B J Y G
13 L G F G K V F F T J
14 N K G S N H G O G P
15 P N O H H F V G H Q
16 W P N J U K J K J B
17 Q Q E D P L K M K N
18 M T H E Q Q M N M V
19 S H M K R I T Q P W
20 V E Q P S J O R Q X
21 X D V Q W N L V V L
22 Z Y W V X G W W W Y
23 G W X X M T Q Y O K
24 H X Z R I W X X U R
25 Y Z I Z J X Z T X S
26 F M J W Z Z C Z Z Z
Cu ajutorul lui, textul clar TREI CULORI construit pe una din liniile generatoare ale
cilindrului va genera urmatoarele linii (oricare din ele putand fi folosit drept text criptat):
38 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE
T R E I C U L O R I
L O H M D B W G E H
N S M O G D Q K S E
P U Q C F Y X M L T
W V V U K E Z N B O
Q I W L N C C Q C M
M J X T H V A R D U
S L Z Y U H P V F C
V B I B P F U W N D
X F J F Q K H Y Y F
Z C A G R L I X T G
G G P S S Q S T G J
H K S H W I E Z H P
Y N Y J X J N A J Q
F P L D M N R E K B
A Q U E I G Y S M N
R T K K J T D U P V
I H B P Z W B P Q W
E E R Q A X F B V X
K D C V V Z G L W L
O Y D X O A V C O Y
B W T R T S J D U K
C X F Z Y O K H X R
U Z G W L R M I Z S
D M O A E P T J A Z
J A N N B M O F I A
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 mondial.
3.3.1 Enigma
Poate cea mai celebra masina de criptat a fost masina germana Enigma. Sub acest nume
se afla o varietate larga de modele de masini de criptat electro-mecanice, care asigura o
criptare polialfabetica de tip Vigenere sau Beaufort.
3.3. MASINI DE CRIPTAT 39
Matematic, Enigma cripteaza fiecare litera dupa o procedura care poate fi exprimata prin
produs de permutari. Sa presupunem ca avem o masina Enigma cu 3 discuri si fie 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 = P DM SU S 1 M 1 D1 P 1
Dupa fiecare apasare a unei taste, discurile se rotesc schimband transformarea. De exem-
plu, daca discul din dreapta se roteste cu i pozitii, atunci transformarea devine i Di ,
where este permutarea ciclica stanga a vectorului (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 poate fi descrisa astfel:
17.576. Cum cele 3 discuri pot fi permutate n 6 moduri, numarul variantelor se ridica la
6 17.576 = 105.456.
Pentru fiecare din acestea, o tabela de conexiuni cu 13 perechi de litere conectate
ridica numarul variantelor la 150.738.274.937.250.
La acestea se adauga si modul de pozitionare al inelului de caractere la mecanismul
discurilor, care mai ridica ordinul de marime al variantelor cu aproximativ 105 . Aceste
estimari arata ca Enigma era cea mai sigura masina de criptat a momentului respectiv.
Sa detaliem functionarea unei masini Enigma (din punct de vedere matematic):
Fiecare disc poate fi reprezentat ca un set de permmutari 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
pozitiile accesibile ale discurilor).
Pentru simplificare, vom ignora rolul tabelei de conexiuni.
Vom nota cu substitutia reflectorului (reprezentata ca un set de permutari ntre
perechi de caractere.
Sa urmarim pe un exemplu un traseu care pleaca de la semnalul de intrare (un caracter
din textul clar), trece prin cele trei discuri si reflector si da ca rezultat caracterul criptat
(a se vedea figura).
Reflector
Disc 3 Disc 2 Disc 1
0
b- Tabela de
e- Text
6 Q >
H
HH conexiuni
>
Q HH 0 criptat
c0- a
Q j -
QQ
s a0
c HH
Y
a aHH
HH
Y
HH
Text clar
d H b
=
+
e = d .
Dupa criptarea unui caracter, cele trei discuri sunt resetate dupa regula:
r1 := r1 + 1 (mod 26); daca noua valoare r1 = 0 atunci r2 := r2 + 1 (mod 26); daca
noua valoare r2 = 0, atunci r3 := r3 + 1 (mod 26).
Pentru exemplificare, sa criptam litera K (al carei cod numeric este 10).
a = 10;
b = [a + r1 (mod 26)]1 = [10 + 22 (mod 26)]1 = 61 = 10;
c = [b + r2 (mod 26)]2 = [10 + 7 (mod 26)]2 = 172 = 22;
d = [c + r3 (mod 26)]3 = [22 + 12 (mod 26)]3 = 83 = 21.
Trecerea prin reflector da e = d = 21 = 23.
Acum se parcurg cele trei discuri n sens invers:
1 1
c0 = e3 r3 (mod 26) = 233 12 (mod 26) = 18 12 (mod 26) = 6;
1 1
b0 = (c0 )2 r2 (mod 26) = 62 7 (mod 26) = 4 7 (mod 26) = 23;
1 1
a0 = (b0 )1 r1 (mod 26) = 231 22 (mod 26) = 4 22 (mod 26) = 8.
Deci criptarea caracterului K este I (litera corespunzatoare codului 8).
Setarile pentru criptarea urmatorului caracter sunt r1 := 23, r2 = 7, r3 = 12.
Detalii despre modul de constructie al masinii de criptat Enigma se pot gasi n [?], [?] si
mai ales din punct de vedere al criptanalizei n [?].
3.3. MASINI DE CRIPTAT 43
3.3.2 C 36 (M 209 C)
Masina C 36 este conceputa de inginerul suedez Boris Hagelin, la solicitarea armatei
americane 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 0 30. Ea ncepe sa fie produsa
dupa cateva modificari 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.
Nu au fost specificate masuri speciale de securitate; C 36 nu a fost realizata pentru
a fi criptografic sigura, ea fiind destinata zonelor militare tactice, unde era nevoie doar de
o siguranta de cateva ore fata de o eventuala criptanaliza.
Vom da o prezentare matematica a principiilor sale de constructie; pentru alte detalii,
a se vedea [?] si [?].
Definitia 3.1. Se numeste matrice lug o matrice binara M627 n care fiecare din cele 27
coloane contine cel mult doi de 1.
Exemplul 3.4. ([?]). Toate exemplificarile referitoare la M 209 vor fi facute pentru
matricea
0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
M = 0 0
1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0
h 10 17 16 9 9 9 7 0 0 0 0 12 0
x 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 22
W W A O P E U I V F H D W
h 0 18 7 0 0 18 7 9 9 19 14 9
x 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 8
V P G G R F R R E Y A I
Deci textul criptat este
WWAOPEUIVFHDWVPGGRFRREYAI
Matricea lug si configuratia de nceput formeaza cheia pentru masina C 36. De
fapt, masina nsasi este o realizare fizica a acestui sistem: ea opereaza conform cu o cheie
stabilita anterior prin fixarea unor roti dintate si a unui disc (pentru detalii vezi [?]).
Observatia 3.1. Ecuatia de decriptare este identica 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 pentru decriptare.
4
In aplicatiile practice, spatiul se nlocuieste uneori cu o litera de frecventa redusa.
3.4. EXERCITII 45
Deoarece liniile din configuratia de nceput au lungimi numere prime ntre ele, vectorii
generati ncep sa se repete sigur dupa 171921232526 = 101.405.850 pasi; deci cuvantul
cheie poate fi considerat mai lung decat orice text clar. Sunt nsa cazuri cand aceasta
perioada poate fi mai scurta. De exemplu, daca configuratia de nceput contine numai 1,
se va genera un singur vector, deci perioada este 1. De asemenea se obtin perioade scurte
pentru matrici lug cu foarte putini 1 sau configuratii de nceput n care raportul dintre
numarul de 0 si 1 este disproportionat.
Nu exista o conditie matematica pentru existenta a exact 6 linii n configuratia de
nceput. Acest numar a fost ales ca un compromis ntre securitatea criptografica si
usurinta de a cripta. In general perioada creste cu numarul de linii.
Masina de criptat M 209 avea si ea o serie 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 necesitatilor si a fost folosita de
armata americana pana dupa razboiul din Coreea (1953 1956).
Ulterior, Hagelin a elaborat un model mbunatatit: masina C 52. Aceasta avea o
perioada de 2.756.205.443; discurile puteau si scoase si reinserate n alta ordine; exista un
disc al carui alfabet putea fi permutat.
C 52 a facut parte din ultima generatie de masini de criptat clasice, noua tehnologie
(cea a computerelor) permitand dezvoltarea altor mecanisme cu o putere de calcul mult
mai mare.
3.4 Exercitii
3.1. Sa se cripteze, folosind sistemul skitala pe 6 randuri, primul vers din Iliada:
CANTA ZEITA MANIA CE-APRINSE PE-AHIL PELEIANUL
3.3. Se da matricea
46 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE
0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1
0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0
0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0
1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0
0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1
Nu se cunoaste matricea lug, dar din textul criptat
CSDZ RGGV P SLA BCBU P T EU SHDO HBN O CDT O Y BM S
N U KD GAAY W ZRS W P V
s-au putut decripta primele 20 caractere:
CU M QIT IQAST ERN IQASAQV EIQST A
Sa se decripteze restul textului.
3.5. Utilizand discurile, reflectorul si setarile initiale din Exemplul ??, sa se cripteze
textul clar
MASINA DE CRIPTARE.
3.6. Utilizand discurile, reflectorul si setarile initiale din Exemplul ??, sa se decripteze
textul
YDDMYU.
Capitolul 4
x = x1 x2 x3 . . .
Sistemele de criptare de acest tip se numesc sisteme de criptare bloc (block cyphers).
Alta maniera utilizata este aceea a sistemelor de criptare fluide (stream cyphers).
Definitia 4.1. Fie M= (P, C, K, E, D) un sistem de criptare. O secventa de simboluri
k1 k2 k3 . . . K+ se numeste cheie fluida.
Definitia 4.2. M= (P, C, K, E, D) este un sistem fluid de criptare daca cifreaza un text
clar
x = x1 x2 x3 . . .
n
y = y1 y2 y3 . . . = ek1 (x1 )ek2 (x2 )ek3 (x3 ) . . .
unde
k = k1 k2 k3 . . .
este o cheie fluida din K+ .
Problema principala este de a genera o cheie de criptare fluida (teoretic infinit).
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.
47
48 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE
yi = xi ki (i 1).
Daca cheia fluida este aleasa aleator si nu mai este folosita ulterior, sistemul de
criptare Vernam se numeste one - time pad.
Un sistem de criptare one-time pad este teoretic imposibil de spart1 (deci asigura un
secret perfect). Intr-adevar, fiind dat un text criptat cu un astfel de sistem, Oscar nu
are nici o informatie privind cheia fluida sau textul clar. Dificultatea consta nsa atat n
lungimea cheii (egala cu cea a textului clar), cat si n modalitatea de transmitere a ei ntre
Alice si Bob.
Pentru sistemul Vernam exista o modalitate de atac cunoscuta sub numele de crip-
tanaliza diferentiala (notiunea va fi prezentata detaliat n Capitolul 6). Anume:
Daca y1 y2 . . . yn si y 01 y 02 . . . y 0n sunt doua texte criptate cu aceiasi chee fluida k1 k2 . . . kn ,
atunci
yi = xi ki , y 0i = x0i ki (1 i n)
deci yi y 0i = xi x0i , si cheia nu mai este necesara, ci doar informatia privind lungimea
sa; redundanta ultimei relatii va permite criptanaliza.
Sistemele de criptare fluide sunt clasificate n sisteme sincrone si auto-sincronizabile.
Definitia 4.3. Un sistem de criptare fluid sincron este o structura (P, C, K, L, E, D),
unde:
P, C, K sunt multimi finite nevide ale caror elemente se numesc texte clare, texte
criptate si respectiv chei;
L este o multime finita nevida numita alfabet de chei;
g : K L+ este un generator de chei fluide: pentru
k K, g(k) = k1 k2 k3 . . . 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, dk (ek (x)) = x
Exemplul 4.2. Sistemul de criptare Vigenere poate fi definit ca un sistem de criptare
fluid sincron. Fie m lungimea cuvantului cheie din sistemul Vigenere. Definim
P = C = L =Z26 , K =(Z26 )m ,
ez (x) = x + z (mod 26), dz (y) = y z (mod 26)
In anii 0 90 comunicarea ntre Moscova si Washington era securizata n acest mod, transportul cheii
1
unde q0 este starea initiala care poate fi determinata din cheia K, este functia de
tranzitie a starilor, g este functia care produce cheia fluida zi , iar h este functia de iesire
care produce textul criptat yi pe baza textului clar xi si a cheii fluide zi .
- qi - qi
qi+1 6 qi+1 6
xi yi
? ?
?
?
6 - g - h - yi g - h1 - xi
K
6 zi
K 6 -
6 zi
Observatia 4.1.
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 deci va fi detectat la receptie. De asemenea, el
poate face modificari n textul criptat si sa observe cum vor afecta ele textul clar.
Rezulta ca un text criptat cu un sistem fluid sincron necesita mecanisme separate
de autentificare si de garantare a integritatii datelor.
50 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE
Definitia 4.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).
K - Generator zi- ? - y
i K - Generator zi- ? - x
i
chei fluide chei fluide
Definitia 4.5. Un sistem de criptare fluid este auto-sincronizabil (sau asincron) daca
functia de generare a cheii fluide depinde de un numar fixat de caractere criptate anterior.
unde q0 = (yt , yt+1 , . . . , y1 ) este starea initiala (cunoscuta), K este cheia, g este functia
de generare a cheii fluide, iar h este functia de iesire care cripteaza textul clar xi . Cele mai
cunoscute sisteme auto-sincronizabile sunt registrii liniari cu feedback (LF SR), utilizati la
generarea secventelor de numere pseudo-aleatoare (n criptografie) si la generarea codurilor
ciclice (n teoria codurilor). Mai multe informatii despre LF SR pot fi gasite n Capitolul
12.
2. Propagarea limitata a erorii: Daca starea unui sistem fluid auto-sincronizabil de-
pinde de s caractere anterioare, atunci modificarea (eventual stergerea sau nse-
rarea) unui caracter din textul criptat poate duce la decriptarea incorecta a maxim
s caractere; dupa aceea decriptarea redevine corecta.
3. Difuzia textelor clare: Deoarece fiecare caracter din textul clar influenteaza ntregul
text criptat care urmeaza, eventualele proprietati statistice ale textului clar sunt
dispersate prin textul criptat. Deci, din acest punct de vedere, sistemele de criptare
auto-sincronizabile sunt mai rezistente decat cele sincronizabile, la atacurile bazate
pe redondanta textului clar.
4. Rezistenta la criptanaliza activa: Din proprietatile de mai sus rezulta ca este destul
de dificil de depistat un atac venit din partea unui adversar activ (care poate modi-
fica, nsera sau sterge caractere) auto-sincronizarea readucand decriptarea n faza
normala. De aceea sunt necesare mecanisme suplimentare pentru a asigura auten-
tificarea si integritatea datelor.
52 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE
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.
2. a. X0 i;
b. for j 1 to 15 do Xj 00000000;
c. for j 16 to 79 do Xj ((Xj3 Xj8 Xj14 Xj16 ) << 1);
d. (M0 , M1 , M2 , M3 , M4 ) (H0 , H1 , H2 , H3 , H4 ) where a = 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 );
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. (H0 , H1 , H2 , H3 , H4 ) (H0 + M0 , H1 + M1 , H2 + M2 , H3 + M3 , H4 + M4 );
3
Algoritmul SEAL 1.0 este bazat pe functia de dispersie SHA, iar SEAL 2.0 pe functia SHA 1.
54 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE
Intrare: a cheia secreta (160 biti), n [0, 232 ) ntreg, L - lungimea solicitata
pentru cheia fluida.
Iesire: cheia fluida y, |y| = L0 , unde L0 este primul multiplu de 128 din [L, ).
3. l 0, y (sirul vid);
4. repeat
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 ;
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 55
Observatia 4.2. ([?]) 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 < 2 , se pot obtine astfel chei fluide de lungimi pana la 251 , pastrand
32
L = 219 .
4.2.2 RC4
Sistemul RC4 (Rivest Code #4) a fost creat n 1987 de Ron Rivest pentru societatea RSA
Data Security Inc (astazi RSA Security). Destinat scopurilor comerciale, el a fost secret,
fiind accesibil numai dupa semnarea unui protocol de confidentialitate. In septembrie
1994 nsa, un anonim publica codul sau sursa pe o lista de discutii, dupa care RC4 se
raspandeste rapid, starnind o serie de polemici referitor la drepturile intelectuale. Se
considera ca astazi exista mai multe implementari ilegale.
RC4 este un sistem aditiv fluid de criptare.
Printre sistemele care folosesc RC4 se pot aminti SQL (Oracle), Lotus Notes, AOCE
(Apple Computer), WEP WPA CipherSaber Secure Sockets Layer (optional) sau Secure
Shell (optional)4 RC4 este utilizat pentru criptarea fisierelor n protocoale cum ar fi RSA
SecurPC sau n standarde de comunicatii (WEP, WPA pentru carduri, 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.
La acest sistem, pentru generarea cheii fluide se foloseste o stare interna (secreta)
formata din doua componente:
Continuturile S[i] si S[j] (unde i, j sunt date de cei doi pointeri) se aduna modulo 256,
iar octetul K de la adresa S[i] + S[j] este introdus n cheia fluida. In plus cei doi octeti
sunt interschimbati.
Procedeul este reluat atat timp cat este nevoie. La fiecare reluare, starea celor doi
pointeri se modifica (i este incrementat cu 1 iar j este incrementat cu S[i]). In acest fel,
fiecare locatie din S box este modificata cel putin odata la 256 iteratii.
Formal:
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]
Implementarea sistemului RC4 este foarte simpla: se lucreaza cu octeti si sunt necesari
256 octeti pentru S box, n octeti de memorie pentru cheie, plus trei variabile ntregi
i, j, k. Operatiile folosite sunt XOR si AN D (sau pe unele platforme simpla adunare
pe biti, fara transport).
Securitatea RC4
Conform cu Bruce Schneier ([?]), sistemul are circa 256! 2562 = 21700 stari posibile; el
este rezistent la criptanaliza diferentiala si liniara, iar ciclurile sunt mai mari de 10.100.
Totusi, securitatea RC4 este slaba din mai multe puncte de vedere si criptografii nu
recomanda sistemul pentru aplicatiile actuale.
Cheia fluida generata are o usoara preferinta pentru anumite secvente de octeti.
Aceasta a permis construirea unui atac (Fluhrer si McGrew), care separa cheia fluida
dintr-o secventa aleatoare de maxim 1 GB.
In 2001, Fluhrer, Mantin si Shamir descopera ca din toate cheile RC4 posibile, primii
octeti de iesire nu sunt aleatori, oferind informatii importante despre cheie.
La majoritatea sistemelor de criptare, o masura de securitate necesara este alegerea
unui numar aleator nou6 care sa fie folosit pentru criptarea fiecarui mesaj. In acest fel,
criptarea de doua ori a aceluiasi mesaj va genera texte diferite.
O solutie sigura (care functioneaza pentru orice sistem de criptare) este de a folosi o
cheie pe termen lung din care, prin amestec cu un nonce (dupa un algoritm prestabilit), se
obtine cheia necesara unei criptari. Multe aplicatii nsa care folosesc RC4 fac o simpla
concatenare a cheii cu nonce. Aceasta slabiciune este exploatata de Fluhrer, Mantin si
Shamir pentru a sparge ulterior sistemul de criptare W EP (wired equivalent privacy)
folosit pe retelele fara fir 802.11.
Ulterior implementarile sistemului RC4 s-au aparat eliminand primii octeti (uzual
1024) din cheia fluida, nainte de a o folosi.
6
h-+?
?+?
- h -+?
h -
+h
?
6
h
6 ?
-+
? -
6
h-+?
?+?
- h h
-+? -
Automatul A5/1
Pentru a decide ce registri se deplaseaza la un tact, se folosesc trei biti de tact (cei
notati ). La fiecare tact se determina valoarea majoritara 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 (similar sistemului
one-time-pad).
Exemplul 4.4. Sa presupunem ca cei trei registri sunt (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
Sa urmarim comportarea automatului cativa tacti:
1. Tact 1: Iesire: y 0 1 1 = 0.
Bit majoritar: 0. Se deplaseaza R2 si R3 . Noua stare este:
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 este:
R1 = 1101 0111 0101 0010 110,
R2 = 1011 0000 1011 0110 0111 11,
R3 = 1000 1011 0110 0101 0100 100
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 59
3. Tact 3: Iesire: y 1 1 1 = 1.
Bit majoritar: 0. Se deplaseaza R1 si R3 . Noua stare este:
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. Se deplaseaza toti registrii. Noua stare este:
R1 = 0101 1101 0100 1011 011,
R2 = 0110 0001 0110 1100 1111 11,
R3 = 0010 1101 1001 0101 0010 000
2. for i 0 to 63 do
3. for i 0 to 21 do
4. for i 0 to 99 do
Functioneaza un tact automatul A5/1, cu ignorarea iesirii.
60 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE
4.3 Exercitii
4.1. Presupunem ca definim o cheie fluida ntr-un sistem sincronizabil n felul urmator:
Fie K K, L un alfabet al cheilor si o multime finita de stari. Se defineste o stare
initiala q0 . Apoi, pentru i 1, se defineste recursiv
qi = f (qi1 , K)
unde f : K . De asemenea, i 1, elementul zi din cheia fluida este definit
prin
zi = g(qi , K)
unde g : K L.
Aratati ca orice cheie fluida rezultata n acest mod are o perioada de lungime maxim
card().
4.2. Criptati mesajul 10110101 folosind automatul A5/1 din Exemplul ?? (considerand
starea initiala cea dinaintea Tactului 1).
S D
s
fn
?
?
XX
XX
XX
XX
z
XX ?
? ?
L R
61
62 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
Sa presupunem ca avem o functie f : {0, 1}n {0, 1}n aproape aleatoare (care da
impresia ca cei n biti din imaginea lui f sunt alesi fara nici o regula). Algoritmul de
criptare va opera cu blocuri de 2n biti, pe care i mparte n doua jumatati, sub forma
(S, D). Imaginea criptata a unui bloc printr-o retea Feistel este tot un bloc de 2n biti:
(L, R), unde L = D si R = S f (D).
Aceasta transformare este bijectiva: din perechea (L, R) se poate regasi (S, D) prin
D = L, S = R f (L).
De remarcat ca functia f nu este obligatoriu inversabila. De cele mai multe ori ea se
compune din operatii simple care sunt executate rapid de calculator.
Exemple de astfel de operatii folosite:
Permutari de biti (adesea implementate sub forma unor tabele de permutare, numite
P box).
Functii simple neliniare (implementate sub forma unor tabele de substitutie, numite
S box).
deja l testa. Dupa dezbateri publice, DES a fost adoptat oficial la 17 ianuarie 1977 ca
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
(ntamplator ?) cu durata sa oficiala de utilizare pe teritoriul SU A.
Li = Ri1
Ri = Li1 f (Ri1 , Ki )
3. Blocului R16 L16 i se aplica inversa permutarii initiale pentru a obtine textul
criptat = IP 1 (R16 L16 ).
Observatia 5.1. Sistemul de ecuatii care definesc criptarea la fiecare runda poate fi in-
versat imediat, pentru a obtine ecuatiile rundelor de decriptare. Acestea sunt:
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. Etapele de calcul ale functiei
sunt:
S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
66 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
S8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
2. Pentru i = 1, 2, . . . , 16 se calculeaza
Ci = LSi (Ci1 )
Di = LSi (Di1 )
si Ki = P C2 (Ci Di ).
LSi este o rotatie circulara la stanga cu una sau doua pozitii, n functie de valoarea
lui i: o pozitie daca i = 1, 2, 9, 16, altfel rotirea este de doua pozitii.
P C2 elimina bitii 9, 18, 22, 25, 35, 38, 43, 54 si rearanjeaza ceilalti biti sub forma:
5.1. SISTEMUL DE CRIPTARE DES 67
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Exemplul 5.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
= 4E6F 772069732074 68652074696D6520 666F 7220616C6C20
= 3F A40E8A984D4815 6A271787AB8883F 9 893D51EC4B563B53
Definitia 5.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 chei semi-slabe, date de tabelele urmatoare:
Posibilitatea ca printr-o alegere aleatoare a cheii sa se obtina o cheie slaba sau semi-slaba
este deci 252 . Multi utilizatori solicita un test pentru depistarea cheilor slabe, test care
nu afecteaza semnificativ timpul de criptare.
68 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
De remarcat ca 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 = K 16 , K2 = K 15
etc.
3. La modificarea unui bit din operand, un S box provoaca modificarea cel putin a
doi biti din rezultat;
Alte doua proprietati au fost mentionate ca fiind consecinte ale criteriilor de constructie:
6. Pentru orice cutie S, daca un bit din operand este mentinut constant si se urmarste
un bit al rezultatului, numarul de valori care produc 0 este apropiat de numarul
de valori care produc 1. Intr-adevar, daca bitul fixat este unul din cei doi biti care
determina linia cutiei S, exista conform criteriului 1. 16 valori care produc 0 si
16 valori care produc 1; pentru ceilalti biti, aceasta nu este adevarat, dar numarul
de valori care produc 0 (sau 1) este cuprins totdeauna ntre 13 si 19.
5.1. SISTEMUL DE CRIPTARE DES 69
Modul ECB (Electronic Codebook Mode) corespunde metodei descrise anterior: 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)
procedeul conducand la textul criptat y = 1 2 . . .
In modul CBC (Cypher Block Chaining Mode), fiecare bloc de text criptat i este
combinat printr-un XOR cu textul clar urmator i+1 , nainte de criptarea acestuia.
Operatia decurge conform schemei:
1 2 Decriptare 1 - 2 -
- +j - +j
? -...
?
V I = 0 ? ?
6 6 dK dK
? ?
eK eK - +j ?- +j ?
? ?
...
V I = 0 -
? ? ? ?
Criptare 1 - -
2 1 2
Functia de decriptare
i = i1 dK (i ) (i 1)
nu mai este recursiva. De aceea, decriptarea se poate efectua mai rapid (comparativ
cu operatia de criptare), printr-un proces de calcul paralel.
70 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
i = eK (i1 ), (i 1)
i = i i , (i 1)
i = i i (i 1)
5.1.7 Parole U N IX
O aplicatie interesanta a sistemului de criptare DES este algoritmul de criptare al paro-
lelor din sistemul U N IX 1 , algoritm numit UNIX crypt.
w
56
? -
? ? ? 88
0 0
0 - DES -
DES - ... -
DES
- -
64 64 64 64 64
/etc/passwrd
6 6 6 6
- 12
12
6
-
Salt
1
Sistem dezvoltat de compania Bell Laboratories.
72 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
Versiunea criptata a unei parole este stocata ntr-o baza de date /etc/passwrd (a
carei confidentialitate nu este obligatoriu asigurata). Atunci cand un utilizator da parola,
sistemul o cripteaza si o compara cu varianta din baza de date. Modul de criptare este
format din urmatoarele etape:
1. Parola este trunchiata la primele opt caractere 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 sisteme 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 criptata pana la 88 biti.
Sistemul U N IX ofera pentru criptare un pachet de 12 biti numit Salt generat de
sistemul 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 implementari ale sistemului DES externe
sistemului U N IX.
c = DESk3 (DESk1
2
(DESk1 (m))),
unde:
m este un bloc de text clar (64 biti),
c este blocul de text criptat rezultat,
k1 , k2 , k3 sunt chei DES (de 56 biti),
DESk : criptarea DES cu cheia k,
DESk1 : decriptarea DES cu cheia k.
Introducerea la pasul 2 a decriptarii nu afecteaza securitatea algoritmului. Avantajul
consta n utilizarea pentru 3DES a unei implementari DES (astfel, cele doua sisteme pot
inter-opera).
5.1. SISTEMUL DE CRIPTARE DES 73
Uneori dar destul de rar se foloseste pentru Triplu DES o criptare n lant de trei
criptari DES (numita si DES eee):
Criptarea n trei pasi (ede sau eee) este esentiala pentru protejarea contra unui atac
de tipul meet-in-the-middle. In cazul unei duble criptari, acest atac este destul de eficient.
Intr-adevar, sa consideram un sistem de criptare bloc unde marimea cheii este n. O
criptare dubla cu doua chei diferite va folosi de fapt o cheie de lungime 2n. Pentru un
text clar dat m, sa presupunem ca putem stoca eK (m), pentru toate cheile K posibile.
Fie x un text criptat dupa formula x = 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 determinate de perechea (m, x), chei care pot fi gasite n aproximativ
O(2n ) pasi.
Daca numarul cheilor care pot fi stocate este de ordinul 2p < 2n , algoritmul poate fi
modificat pentru a afla toate cheile posibile, n circa O(22np ) pasi.
Cheia pentru Triplu DES 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). Acest mod este nsa sensibil
la anumite atacuri cu text clar ales, propuse de Merkle si Hellman (1981) si mai tarziu
de Van Oorschot si Wiener (1991).
Sistemul de criptare 3DES nu este nca spart, dar utilizarea sa este ngreunata din
cauza vitezei 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.
DES X
DES X (sau mai simplu DESX) este o varianta a sistemului de criptare DES,
dezvoltata pentru a rezista mai bine unui atac prin forta bruta.
Dupa cum am vazut, sistemul DES opereaza cu o cheie de 56 biti; deci sunt numai
256 chei posibile, unele din acestea fiind chei slabe. Pentru a evita un atac direct, in 1984
Rivest propune cresterea marimii cheii K fara a modifica substantial algoritmul.
74 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
IDEA
Prima aparitie a sistemului IDEA are loc n 1990, sub denumirea P ES (Proposed En-
cryption Standard). Deoarece n acelasi an, Biham si Shamir publica sistemul de atac
al DES-ului prin criptanaliza diferentiala, n 1991 autorii (Xuejia Lai si James Massey)
modifica sistemul de criptare pentru a rezista acestui gen de atac. Noul sistem este numit
IP ES (Improved Proposed Encryption Standard), nume care n 1992 se schimba n IDEA
(International Data Encryption Standard Algorithm).
In opinia lui Bruce Schneider, n 1996 IDEA constituia cel mai sigur sistem de criptare
utilizabil fara restrictii. Este o componenta a sistemului de securitate prin posta elec-
tronica P GP , unde asigura criptarea datelor.
Sistemul este foarte asemanator cu DES. Astfel, el este un sistem simetric care
opereaza cu blocuri de texte clare de 64 biti, folosind o cheie de 128 biti.
Textul clar de 64 biti este despartit n 4 sublocuri X1 , X2 , X3 , X4 , de cate 16 biti
fiecare. Aceste patru componente formeaza intrarea la prima runda a algoritmului. In
total sunt 8 runde, care folosesc operatiile de adunare, nmultire (modulo 216 ) si XOR;
toate pe 16 biti. De asemenea sunt implicate si 16 subchei a cate 16 biti fiecare. Intre
runde, subblocurile 2 si 3 sunt schimbate ntre ele. Dupa runda 8, cele patru subblocuri
sunt combinate cu 4 subchei, formand iesirea.
O runda contine 14 operatii, anume:
Rezultatele pasilor 11 14 formeaza iesirea dintr-o runda; cele patru subblocuri (dupa ce
subblocurile 2 si 3 sunt interschimbate) formeaza intrarea n runda urmatoare.
Dupa ultima runda, are loc o transformare finala:
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.
Prelucrarea subcheilor se face dupa urmatorul algoritm:
1. Cheia de 128 biti este desfacuta n 8 subchei 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.
Comparativ cu DES, IDEA prezinta unele avantaje. Astfel, implementarile realizate
permit o viteza dubla de criptare n IDEA fata de DES.
Lungimea cheii (128) biti, asigura o securitate sporita la atacurile prin forta bruta:
pentru a gasi cheia prin ncercari, ar fi necesare cam 2127 teste; deci cu un chip care
testeaza un miliard de chei pe secunda, ar trebui cam 1013 ani o perioada mai lunga
decat varsta Pamantului.
Autorii au afirmat (fara sa demonstreze) ca IDEA rezista atacurilor prin criptanaliza
diferentiala. Un studiu al subcheilor a aratat ca exista unele chei slabe, care permit spar-
gerea sistemului de criptare ntr-un timp mai scurt. O asigurare contra alegerii (aleatoare)
a acestor chei slabe ar fi completarea algoritmului de generare a subcheilor prin operarea
fiecarei subchei generate printr-un XOR cu 0x0D, unde x este o cifra hexazecimala
aleasa aleator.
5.2.1 Mars
Sistemul M ARS este propus de firma IBM , autorii sai fiind un grup condus de Don
Coppersmith. Cateva detalii de constructie:
Algoritmul este format din trei componente, fiecare din ele asigurand protectie pen-
tru anumite tipuri de atac.
2
Acestia sunt (n ordine alfabetica) CAST 256, CRY P T ON, DEAL, DF C, E2, F ROG, HP C,
LOKI97, M AGEN T A, M ARS, RC6, Rijndael, SAF ER+, Serpent, T wof ish.
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 77
La intrare textul clar este spart n grupuri de 128 biti (4 cuvinte de cate 32 biti).
Prima si a treia parte a algoritmului amesteca acesti biti folosind o cheie de dimen-
siune variabila (ntre 128 si 448 biti) si un S box de 512 elemente. Componenta
din mijloc este formata din 16 runde si foloseste n plus o o functie de expandare E.
Operatiile folosite sunt: adunari, scaderi, XOR-uri, rotatii (fixe sau dependente de
date) si nmultiri; toate calculele se fac modulo 32. Constructia S boxului s-a
facut pe baza unui algoritm public, plecand de la o serie de conditii initiale clare.
D[0], D[1], D[2], D[3] cuvinte (de 32 biti), initializate cu textul clar; n final aici
va fi blocul de text criptat; se noteaza D[i : j] octetul j din D[i] (j = 0, 1, 2, 3).
S[] S box de 512 cuvinte; S0[] va contine primele 256 elemente, iar S1[]
ultimele 256 cuvinte.
3
Fie a1 a2 a3 a4 un cuvant pe 4 octeti, unde ai este un numar ntreg din intervalul [0, 255].
1. In arhitectura big-endian (o statie SPARK de exemplu), un cuvant reprezinta ntregul a1 224 +
a2 216 + a3 28 + a4 .
2. In arhitctura little-endian (cum este familia Intel 80xxx) un cuvant reprezinta ntregul a4 224 +
a3 216 + a2 28 + a1 .
78 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
Expandarea cheii:
Aceasta procedura expandeaza o cheie k[0, . . . , n 1] de n cuvinte (4 n 14) ntr-o
cheie K de 40 cuvinte, folosind un vector temporar T de 15 cuvinte si un vector fixat Z
de 4 cuvinte.
1. Z A4A8D57B 5B5D193B C8A8309B 73F 9A978;
2. T [0, . . . , n 1] k[0, . . . , n 1], T [n] n, T [n + 1, . . . , 14] 0;
3. for j 0 to 3 do
3.1. for i 0 to 14 do
T [i] T [i] ((T [(i 7) mod 15] T [(i 2) mod 15] <<< 3) (4 i + j);
3.2. for m 1 to 4 to
for i 0 to 14 do
T [i] (T [i] + S[cei mai mici noua biti dinT [(i 10) mod 15]]) <<< 9;
3.3. for i 0 to 9 do K[10 j + i] T [4 i mod 15];
4. for i 5, 7, . . . , 33, 35 do
4.1. j cei mai din dreapta doi biti din K[i];
4.2. w K[i] cu cei mai din dreapta doi biti setati pe 1;
4.3. for p 2 to 30 do
if (w[p 1] = w[p] = w[p + 1]) (w[p] e ntr-o secventa de 10 biti consecutivi egali)
then M [p] 1;
4.4. r cei mai din dreapta cinci biti din K[i 1];
4.5. X (Z[j] <<< r);
4.6. K[i] w (X M ).
5. output(K[]).
Cele 512 cuvinte ale S boxului au fost generate n asa fel ncat sa verifice conditiile:
- Nu are valorile 00000000 si F F F F F F F F ;
- Orice doua valori difera prin cel putin 4 biti;
- Nu exista doua valori a, b astfel ca a = b sau a = b;
- Diferentele de scadere sau XOR ntre orice doua valori sunt maxime.
Pentru alte detalii privind securitatea sistemului M ARS (algoritmul de decriptare,
moduri de implementare, componentele S boxului etc), a se vedea [?].
5.2.2 RC6
Sistemul de criptare RC6 este o versiune a lui RC5, elaborata de laboratoarele RSA
(sub coordonarea lui Ron Rivest) cu scopul de a ndeplini criteriile AES. Este un sistem
simplu, fara atacuri practice cunoscute (sunt elaborate doar cateva atacuri teoretice),
complet parametrizat: versiunea generala este RC6w/r/b unde marimea cuvintelor este
w, numarul de runde este r, iar b este marimea (n octeti) a cheii de criptare. Versiunea
pentru AES are w = 32, r = 20.
+, , (toate modulo 2w ),
a <<< b (rotirea lui a spre stanga cu un numar de pozitii dat cei mai putin semni-
ficativi log2 w biti din b),
Algoritmul de criptare:
Intrare:
- Textul clar stocat n cuvintele A, B, C, D;
- Numarul r de runde;
- Cheia S[0, . . . 2r + 3];
Iesire: Textul criptat stocat n A, B, C, D.
Algoritm:
1. B B + S[0];
2. D D + S[1];
3. for i 1 to r do
3.1. t (B (2 B + 1)) <<< log2 w;
3.2. u (D (2 D + 1)) <<< log2 w;
3.3 A ((A t) <<< u) + S[2i];
3.3 C ((C u) <<< t) + S[2i + 1];
3.4. (A, B, C, D) (B, C, D, A);
4. A A + S[2r + 2];
5. C C + S[2r + 3].
Detalii privind securitatea si modalitati de implementare pot fi gasite n [?].
Algoritmul de diversificare a cheii S este identic cu cel de la RC5. In [?] acesta este
prezentat mpreuna cu un cod pentru RC5, scris n C + +.
Cheia initiala are b octeti (0 b 255) si este stocata ntr-un tablou L cu c = db/4e
cuvinte (completand ultimul cuvant cu 0 daca este necesar).
In prima faza tabloul S este initializat folosind un generator liniar congruential4 :
1. S[0] P ;
2. for i 1 to 2(r + 1) 1 do S[i] (S[i 1] + Q) mod 232
P = B7E15163 si Q = 9E3779B9 sunt constante bazate pe reprezentarea binara a
lui e si .
3. i 0, j 0;
4. A 0, B 0;
5. for s 1 to 3 max{c, 2(r + 1)} do
5.1. S[i] (S[i] + A + B) <<< 3, A S[i];
5.2. L[i] (L[i] + A + B) <<< (A + B), B L[i];
5.3. i (i + 1) (mod 2(r + 1));
5.4. j (j + 1) mod c
5.2.3 Serpent
Sistemul de criptare Serpent a fost propus de Ross Anderson (Universitatea Cambridge),
Eli Biham (Institutul Tehnion, Haifa) si Lars Knudsen (Universitea Bergen). El cripteaza
texte clare de 128 biti n blocuri de aceeasi lungime, n 32 runde, folosind 33 chei de
criptare de runda, de lungime 128 biti 5 . Ea se extinde la 256 biti punand n fata 1 pentru
primul bit, apoi 0 pentru ceilalti biti atat cat este necesar.
Algoritmul de criptare cuprinde 3 pasi:
Intrare: P (textul clar)
Iesire: C (Textul criptat)
Algoritm:
Transformarea liniara L:
Blocul de 128 biti dintr-o runda este spart n patru cuvinte (X0 , X1 , X2 , X3 ) = Si (Bi Ki ).
Se aplica apoi urmatorii pasi:
unde <<< nseamna rotire spre stanga, iar << este deplasare spre stanga.
In ultima runda, transformarea L este nlocuita cu B32 S7 (B31 K31 ) K32 .
5.2.4 Twofish
Sistemul Twofish este propus de un colectiv condus de Bruce Schneier, fiind unul din
putinele sisteme free (implementarea este disponibila la adresa [?]).
Algoritmul cripteaza blocuri de 128 biti, folosind o cheie de lungime variabila.
Algoritmul de criptare:
Intrare: P = p0 p1 . . . p15 un bloc de text clar de 128 biti (pi - octeti)
Iesire: C - bloc text criptat, de 128 biti.
Algoritm:
1. P se sparge n patru cuvinte P0 , P1 , P2 , P3 dupa sistemul little-endian:
3
p4i+j 28j ,
X
Pi (0 j 3)
j=0
2. R0,i Pi Ki , (0 i 3)
3. for r 0 to 15 do
3.1. (Fr,0 , Fr,1 ) F (Rr,0 , Rr,1 , r);
3.2. Rr+1,0 (Rr,2 Fr,0 ) >>> 1;
3.3. Rr+1,1 (Rr,3 <<< 1) Fr,1 ;
3.4. Rr+1,2 Rr,0
3.5. Rr+1,3 Rr,1
4. Ci R16,(i+2) mod 4 Ki+4 , (0 i 3)
Cb i c
$ %
5. ci 8(i mod 4) mod 28 , (0 i 15)
4
2
(cele patru cuvinte din textul criptat sunt scrise ca o secventa de 16 octeti n sistemul
little-endian: C = c0 c1 . . . c15 ).
De remarcat ca operatia de la pasul 2 este numita whitening si a fost introdusa n mod
independent de Merkle pentru Khuf u/Khaf re, respectiv Rivest pentru DES X.
Functia F
F (R0 , R1 , r) este o functie ternara care ntoarce doua valori (F0 , F1 ). Varianta propusa
este bazata la randul ei pe o alta functie g.
1. T0 g(R0 ) 2. T1 g(R1 <<< 8)
3. F0 (T0 + T1 + K2r+8 ) mod 232 4. F1 (T0 + 2 T1 + K2r+9 ) mod 232
1. xi bX/28i c mod 28 (0 i 3)
(cuvantul de intrare X este spart n patru octeti)
2. yi si [xi ], (0 i 3)
(octetii sunt trecuti prin patru S boxuri dependente de cheie)
z0 01 EF 5B 5B y0
z 5B EF EF 01
y1
3. 1
z2 EF 5B 01 EF y2
z3 EF 01 EF 5B y3
3
zi 28i .
X
4. Z (Z este valoarea rezultata).
i=0
Diversificarea cheii
Sistemul Twofish este definit pentru chei de lungime N unde standardul este N = 128, 192
sau 256. Se pot folosi nsa chei de orice lungime mai mica de 256; daca se da o astfel de
cheie, ea este extinsa prin completare cu 0 la cea mai apropiata lungime standard.
Din cheia M a utilizatorului, prin diversificare se obtin 40 cuvinte K0 , K1 , . . . , K39 si
patru S-cutii folosite la functia g.
Fie k N/64. Cheia M consta din 8k octeti m0 , m1 , . . . , m8k1 . Se calculeaza
vectorii Me , Mo , S astfel:
3
m4i+j 28j ,
X
1. Mi (0 j 2k 1)
j=0
2. Me (M0 , M2 , . . . , M2k2 ), Mo = (M1 , M3 , . . . , M2k1 );
3
si,j 28j ,
X
3. S = (Sk1 , Sk2 , . . . , S0 ) unde Si (0 i k 1)
j=0
g(X) = h(X, S)
Vom reprezenta starea unui bloc sub forma unui tablou cu 4 linii si Nb coloane, ale
carui elemente sunt octeti; deci valoarea lui Nb se determina usor: 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 fiind lungimea cheii).
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 k0,0 k0,1 k0,2 k0,3
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 k1,0 k1,1 k1,2 k1,3
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3
Uneori, aceste blocuri se reprezinta grupate sub forma unui vector n care fiecare
element este coloana unei stari (deci, avand o lungime de 4 octeti). In functie de marimea
N a blocului de criptare (respectiv K a cheii), un astfel de vector are 4, 6 sau 8 cuvinte.
Octetii unui cuvant se noteaza cu a, b, c si respectiv d; astfel, octetul 0 este a, octetul 1
este b s.a.m.d.
Intrarea si iesirea din sistemul AES sunt definite sub forma unor vectori avand drept
componente octeti, numerotati de la 0 la 4Nb 1. Un vector de intrare/iesire are deci
16, 24 sau respectiv 32 componente, numerotate 0 . . . 15, 0 . . . 23 sau 0 . . . 31.
Similar, cheia de criptare este definita ca un vector de 16, 24 sau 32 octeti, numerotati
de la 0 la 4Nk 1 (unde Nk = 128, 192 si respectiv 256).
Octetii care formeaza intrarea n sistem (textul clar, daca se foloseste modul de criptare
ECB) completeaza pe coloane un tablou ca n Exemplul ??, numit starea initiala. Similar
se procedeaza cu cheia de criptare.
Procedeul este identic la sfarsit, cand se obtine blocul criptat prin liniarizarea pe
coloane a starii finale rezultate dupa criptare.
7
Rijndael a castigat obtinand 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.
5.3. SISTEMUL DE CRIPTARE AES 87
Relatiile dintre indexul n al unui element (octet) din reprezentarea liniara si coordo-
natele (i, j) ale aceluiasi octet din reprezentarea matriciala sunt
i = n (mod 4); j = bn/4c; n = i + 4 j.
In plus, i este indicele octetului n cadrul unui cuvant care contine acel octet, iar j
este indicele cuvantului n cadrul blocului care l contine.
Criptarea se realizeaza n Nr runde, unde Nr depinde de Nb si Nk . Valorile lui Nr sunt
date n tabelul:
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
Fiecare runda are la intrare o stare si foloseste o cheie de runda. Cu exceptia rundei finale,
o runda este formata din patru transformari, notate pe scurt:
ByteSub(Stare);
ShiftRow(Stare);
MixColumn(Stare);
AddRoundKey(Stare, Cheie).
ShiftRow(Stare): La acest pas, liniile starii sunt permutate ciclic spre stanga. Numa-
rul de octeti cu care se face ciclarea sunt: 0 pentru linia 0, Ci pentru linia i (1
i 3). Valorile Ci depind de lungimea Nb a blocului si sunt date de tabelul
Nb C1 C2 C3
4 1 2 3
6 1 2 3
8 1 3 4
b0 02 03 01 01 a0
b1 01 02 03 01 a1
=
b2 01 01 02 03 a2
b3 03 01 01 02 a3
5.3. SISTEMUL DE CRIPTARE AES 89
Operatia inversa este similara: fiecare coloana este transformata prin nmultire cu
polinomul invers lui c(X) modulo X 4 + 1. Acesta este
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 k0,0 k0,1 k0,2 k0,3 k0,4 k0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 k k1,1 k1,2 k1,3 k1,4 k1,5
1,0 =
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3 k2,4 k2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3 k3,4 k3,5
b0,0 b0,1 b0,2 b0,3 b0,4 b0,5
b1,0 b1,1 b1,2 b1,3 b1,4 b1,5
b2,0 b2,1 b2,2 b2,3 b2,4 b2,5
b3,0 b3,1 b3,2 b3,3 b3,4 b3,5
2. Nr 1 runde;
3. O runda finala.
Numarul total al bitilor din toate cheile de runda este Nb (Nr + 1).
90 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
Cheia de runda se obtine luand primii Nb octeti din Cheia Expandata, care nu au
fost folositi pentru alte chei.
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; celelalte cuvinte se obtin recursiv din
cuvintele definite anterior. Functia de extindere a cheii depinde de valoarea lui Nk ; exista
o versiune pentru Nk 6 si o alta pentru Nk > 6.
Pentru Nk 6 avem:
KeyExpansion(byte Key[4 Nk ] word W [Nb (Nr + 1)])
{
f or (i = 0; i < Nk ; i + +)
W [i] = (Key[4 i], Key[4 i + 1], Key[4 i + 2], Key[4 i + 3]);
f or (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;
}
}
In acest algoritm (scris n C + +), SubByte(W ) este o functie care ntoarce un cuvant
n care fiecare octet este rezultatul aplicarii S boxului definit la transformarea ByteSub
fiecarui octet din cuvantul de intrare. RotByte(w) ntoarce un cuvant n care octetii sunt
rotiti ciclic la stanga (pentru intrarea (a, b, c, d) iesirea este (b, c, d, a)).
Esenta algoritmului este urmatoarea: primele Nk cuvinte sunt completate cu cheia de
criptare. In continuare, fiecare cuvant W [i] este egal cu W [i 1] W [i Nk ]. Pentru
cuvintele care sunt pe pozitii multipli de Nk , nainte de aceasta operatie, lui W [i 1] i se
aplica o permutare ciclica spre stanga a octetilor, urmata de aplicarea unui S box. In
plus, rezultatul este XOR - at nca odata, cu o constanta de runda.
Pentru Nk > 6, algoritmul este:
KeyExpansion(byte Key[4 Nk ] word W [Nb (Nr + 1)])
{
f or (i = 0; i < Nk ; i + +)
W [i] = (Key[4 i], Key[4 i + 1], Key[4 i + 2], Key[4 i + 3]);
f or (i = Nk ; i < Nb (Nr + 1); i + +)
{
5.4. EXERCITII 91
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;
}
}
La aceasta schema apare conditia suplimentara: daca i 4 este multiplu de Nk , pro-
cedura SubByte este aplicata lui W [i 1] nainte de XOR.
Constantele de runda sunt independente de Nk si sunt definite prin
Rcon[i] = (RC[i], 0 000 , 0 000 , 0 000 )
unde RC[i] = i1 unde este un element generator al lui GF (28 ).
5.4 Exercitii
5.1. Sa se arate ca procesul de decriptare folosind DES se realizeaza folosind tot sistemul
de criptare, dar inversand ordinea de aplicare a subcheilor.
5.2. Sa notam DES(, K) textul criptat cu cheia K. Daca = DES(, K) si 0 =
DES(c(), c(K)), unde c(i1 i2 . . . in ) = in in1 . . . i1 , sa se arate ca 0 = c().
5.3. Sa presupunem ca cheia (de 56 biti) a unui algoritm DES este
11011001 01111101 01100101 00010011 01010110 01100110 00110100
Determinati cheia K1 pentru prima runda.
5.4. Presupunem ca R1 = 10011100011010111101001010100011 Gasiti primii 4 biti din
R2 , daca subcheia pentru runda a doua este
K2 = 011101010111001011100101010001010010001101010110.
5.5. Se poate defini un cod de autentificare al mesajului (M AC) utilizand un mod CF B
sau CBC. Fiind data o secventa de blocuri 1 , 2 , . . . , m de texte clare, se defineste valoa-
rea initiala IV = 1 . Criptarea lui 2 , . . . , n cu cheia K n modul CF B da 1 , . . . , n1
(sunt numai n 1 blocuri de text criptat). Se defineste M AC ca fiind eK (n1 ). Sa se
arate ca el coincide cu rezultatul M AC prezentat anterior, folosind modul CBC.
92 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE
5.9. In urma aplicarii transformarii ByteSub din algoritmul AES s-a obtinut octetul
10010111. Ce octet a intrat n transformarea ByteSub ?
5.12. Fie b un octet si b = b + 11111111 (complementul lui b). Pentru o cheie fixata, daca
AES cripteaza b n g, va cripta el b n g ?
Capitolul 6
93
94 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC
1. 1 R()
2. for j 1 to t do
2.1. if i cu j = X(i, t) then
2.1.1. calculeaza X(i, t j) = g tj (X(i, 0))
2.1.2. if = eX(i,tj) () then K X(i, t j), ST OP
2.2. j+1 g(j )
Lema 6.1. Pentru un sistem de criptare bloc, o dubla criptare poate fi atacata folosind
O(2n ) operatii si O(2n ) spatiu de memorie, unde n este lungimea cheii.
Demonstratie: Fie (, ) o pereche (text clar, text criptat) obtinuta pe baza schemei de
mai sus.
In esenta, criptanaliza diferentiala este un atac cu text clar ales: Oscar alege perechi
de intrari (0 , 00 ), care verifica o anumita diferenta , stiind ca pentru aceasta valoare
, exista o diferentiala (, ).
Cel mai important pas consta n construirea unei diferentiale (, ), folosind bitii
textului 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.
Deci, o prima problema consta n construirea de diferentiale caracteristice. Pentru
aceasta vom examina si exploata diverse particularitati ale S - boxurilor.
Practic, vom considera toate diferentele de intrare si iesire din fiecare S-box, deter-
minand 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 din-
tre doua intrari n runda urmatoare, vom determina o diferentiala ntre doua texte clare si
intrarile a doua texte n ultima runda. In final, bitii ultimei sub-chei vor dispare (deoarece
sunt folositi n ambele texte si prin diferentiere cu operatia XOR se anuleaza reciproc).
a1 a2 a3 a4
? ? ? ?
4 4 S-box
? ? ? ?
b1 b2 b3 b4
Figura 1: Modelul unui 4 4 S - box
Intrare 0 1 2 3 4 5 6 7 8 9 A B C D E F
Iesire E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
4. Toate valorile din tabel sunt numere pozitive pare; motivul este acela ca o pereche
de valori de intrare/iesire (0 , 00 ) are aceeasi diferenta ca si perechea (00 , 0 ).
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 aratate n Observatia ??, un astfel de S - box ideal nu
este posibil.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
XOR cu sub-cheia K1
XOR cu sub-cheia K2
XOR cu sub-cheia K3
XOR cu sub-cheia K4
runda 4
S41 S42 S43 S44
XOR cu sub-cheia K5
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). Folosind Tabela 2, obtinem diferenta de iesire
Altfel spus,
S12 : = B16 = 1011 = = 216 = 0010 cu probabilitate 8/16 = 1/2.
Urmarind acum permutarea de la sfarsitul primei runde, gasim mesajul de intrare n
S - boxurile celei de-a doua runde:
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.
Am obtinut deci iesirea
cu probabilitate 3/8.
In a treia runda sunt active doua S - boxuri: S32 si S33 :
S32 : = 216 = 0010 = = 516 = 0101 cu probabilitate 6/16 = 3/8,
S33 : = 216 = 0010 = = 516 = 0101 cu probabilitate 6/16 = 3/8.
Deci, iesirea din S - boxurile din runda a treia este
Cu alte cuvinte,
si
V3 = [0000 0101 0101 0000] = U4 = [0000 0110 0000 0110]
Rezulta
Decriptarea este obtinuta pentru toate perechile de mesaje criptate care corespund
perechilor de texte clare avand diferenta de intrare fixata .
Figura 3 traseaza modalitatea de decriptare pentru diferentiala caracteristica detaliata
n sectiunea precedenta.
? ? ? ?
U4,5 ,...,U4,8 U4,13 ,...U4,16
S41 S42 S43 S44
Pentru fiecare sub-cheie posibila, ai carei biti sunt influentati de diferentele nenule
din diferentiale, definim cate un counter. Acesti counteri sunt incrementati atunci cand
intrarea n ultima runda coincide cu valoarea prevazuta de diferentiala caracteristica.
In final, sub-cheia cu valoare maxima a counterului atasat va fi considerata drept cea
corecta; restul bitilor din sub-cheie vor fi gasiti cu o cautare prin forta bruta.
In exemplul din Figura 2, diferentiala caracteristica a influentat S - boxurile S42 si S44
din ultima runda; deci pentru orice pereche de mesaje criptate ncercam toate cele
256 variante pentru [K5,5 . . . K5,8 , K5,13 . . . K5,16 ], si de cate ori diferenta la intrarea n
ultima runda determinata de decriptare este
Definitia 6.2. Pentru orice Bj 0 Z26 se noteaza (Bj 0 ) multimea perechilor (Bj , Bj )
care prin XOR dau B 0j .
Observatia 6.2.
Pentru fiecare pereche din (Bj 0 ) vom calcula XOR-ul de iesire al lui Sj si construim
o tabela de distributii ale valorilor obtinute (sunt 64 iesiri pe un spatiu de 24 = 16 valori
posibile). Pe aceasta tabela se va baza atacul de criptanaliza diferentiala.
106 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC
Pentru fiecare pereche din (110100) vom calcula 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.
Efectuand acest calcul pentru toate cele 64 perechi din (110100), vom obtine distribu-
tia urmatoare a XOR-urilor de iesire pentru S1 :
Pentru fiecare din cele 8 S - boxuri exista 64 XOR-uri de intrare posibile; deci n total
vor fi 512 date de distribuit, lucru usor de realizat cu un calculator.
Reamintim ca intrarea ntr-un S - box la runda i este B = E J, unde E = E(Ri1 )
este rezultatul expandarii lui Ri1 , iar J = Ki este un subsir reordonat al cheii K. XOR-ul
de intrare (al celor 8 S - boxuri) este deci
B B = (E J) (E J) = E E .
B = B1 B2 B3 B4 B5 B6 B7 B8 , E = E1 E2 E3 E4 E5 E6 E7 E8 , J = J1 J2 J3 J4 J5 J6 J7 J8
(s-au luat toate XOR-urile lui Ej cu elemente din INj (Ej 0 , Cj 0 )).
Din aceste consideratii rezulta imediat teorema:
Cum se poate remarca, exista exact Nj (Ej 0 , Cj 0 ) secvente de 6 biti n testj (Ej , Ej , Cj 0 );
valoarea corecta Jj este una din acestea.
108 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC
C 0 = C C = P 1 (R3 0 L0 0 ).
Acesta este XOR-ul de iesire din cele opt S - boxuri, dupa a treia runda.
R2 = L3 si R2 = L3 sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L3 ), E = E(L3 )
folosind functia de expansiune E. Aceste valori sunt intrarile n S - boxuri la runda a
treia. Se cunosc deci E, E , C 0 la a treia runda si se poate trece asa cum am vazut la
constructia multimilor test1 , test2 , . . . , test8 de valori posibile pentru J1 , J2 , . . . , J8 .
Un algoritm pentru aceasta metoda este formalizat mai jos. Atacul foloseste mai multe
triplete E, E , C 0 . Se utilizeaza opt tabele de valori si se determina 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.
Intrare: L0 R0 , L0 R0 , L3 R3 , L3 R3 cu R0 = R0 .
1. C 0 P 1 (R3 0 L0 0 )
2. E E(L3 ), E E(L3 )
3. for j := 1 to 8 do testj (Ej , Ej , Cj ).
6.5. CRIPTANALIZA LINIARA 109
Daca o expresie de tip (1) are loc cu probabilitate pL pentru texte clare si texte criptate
alese aleator, vom nota tendinta1 relatiei respective prin L = pL 1/2.
Cu cat magnitudinea tendintei |pL 1/2| este mai mare, cu atat mai putine texte clare
va avea nevoie un atac ca sa reuseasca.
Observatia 6.3. Daca pL = 1, atunci expresia liniara (1) reprezinta n totalitate com-
portarea sistemului de criptare; deci acesta nu va asigura nici o securitate.
Daca pL = 0, atunci (1) reprezinta o relatie afina n sistemul de criptare, de asemenea
indiciul unei slabiciuni catastrofice.
Daca operatia de adunare folosita este mod 2 (deci XOR), atunci o functie afina este
complementara unei functii liniare. Atat aproximarile liniare cat si cele afine, indicate de
pL > 1/2 respectiv pL < 1/2, sunt folosite n egala masura de criptanaliza liniara.
In mod natural apare ntrebarea:
Cum pot fi gasite expresii statistic liniare (deci utilizabile n criptanal-
iza liniara) ?
Evident, problema se pune relativ la componenta neliniara a sistemelor de criptare, deci
relativ la S - boxuri. Cand evaluam proprietatile 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 de criptare) si sa obtinem o
expresie liniara cu tendinta semnificativa ntre seturi de biti din textul clar si biti de
intrare n ultima runda.
1
n engleza bias.
6.5. CRIPTANALIZA LINIARA 111
P r[Xi1 . . .
Xip Xip+1 = 0] =
p p p+1
1 1 1 1 1
+ 2p1 p1
ip+1 = + 2p
Y Y Y
ij + ip+1 + 2 ij ij .
2 j=1 2 2 j=1 2 2 j=1
Corolarul 6.1. Fie i1 ,i2 ,...,ik tendinta variabilei aleatoare Xi1 . . . Xik .
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
(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
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 +8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 2 2 0 0 2 +6 +2 +2 0 0 +2 +2 0 0
2 0 0 2 2 0 0 2 2 0 0 +2 +2 0 0 6 +2
3 0 0 0 0 0 0 0 0 +2 6 2 2 +2 +2 2 2
4 0 +2 0 2 2 4 2 0 0 2 0 +2 +2 4 +2 0
5 0 2 2 0 2 0 +4 +2 2 0 4 +2 0 2 2 0
6 0 +2 2 +4 +2 0 0 +2 0 2 +2 +4 2 0 0 2
7 0 2 0 +2 +2 4 +2 0 2 0 +2 0 +4 +2 0 +2
8 0 0 0 0 0 0 0 0 2 +2 +2 2 +2 2 2 6
9 0 0 2 2 0 0 2 2 4 0 2 +2 0 +4 +2 2
A 0 +4 2 +2 4 0 +2 2 +2 +2 0 0 +2 +2 0 0
B 0 +4 0 4 +4 0 +4 0 0 0 0 0 0 0 0 0
C 0 2 +4 2 2 0 +2 0 +2 0 +2 +4 0 +2 0 2
D 0 +2 +2 0 2 +4 0 +2 4 2 +2 0 +2 0 0 +2
E 0 +2 +2 0 2 4 0 +2 2 0 0 2 4 +2 2 0
F 0 2 4 2 2 0 +2 0 0 2 +4 2 2 0 +2 0
Tabela 7: Tabela de aproximari liniare
Exemplul 6.6. Tendinta relatiei liniare a3 a4 = b1 b4 (intrare hex 3 si iesire hex 9) este
6/16 = 3/8; deci probabilitatea ca aceasta relatie liniara sa aiba loc este 1/2 3/8 =
1/8.
Din constructia de mai sus se pot obtine imediat cateva proprietati:
Probabilitatea ca pentru o intrare 0 sa obtinem o anumita suma nevida de biti de
iesire este 1/2 (deoarece pentru un S - box bijectiv, orice combinatie liniara de biti
de iesire trebuie sa contina un numar egal de 0 si 1).
Daca suma bitilor de iesire este 0, atunci suma bitilor de intrare este 0; deci o
tendinta +1/2 si o valoare +8 n Tabela 7. In consecinta, prima linie din Tabela 7
este 0, cu exceptia primului element. Aceeasi proprietate o are si prima coloana.
Suma elementelor pe o linie sau coloana este 8 (usor de verificat).
criptare bloc. Aceasta se va realiza prin concatenarea aproximarilor liniare ale S -boxurilor
consecutive.
Dupa ce s-a obtinut o aproximare liniara bazata pe biti din textul clar si biti care intra
n ultima runda a criptarii, vom putea ataca sistemul gasind un sebset de biti din cheia
folosita n ultima runda.
Ca si la criptanaliza diferentiala, vom ilustra acest procedeu printr-un exemplu.
Sa consideram conform Figurii 4 aproximari liniare pentru S12 , S22 , S32 si S34 .
Anume:
S12 : a1 a3 a4 = b2 cu probabilitate 12/16 si tendinta +1/4;
S22 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4;
S32 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4;
S34 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4.
Reamintim, Ui (Vi ) va reprezenta un bloc de 16 biti care formeaza intrarea (iesirea)
din S - boxuri la runda i, iar Ui,j (Vi,j ) va representa al j-lea bit din blocul Ui (Vi ) (bitii
sunt numerotati de la 1 la 16).
Similar, Ki va reprezenta sub-cheia care se combina prin XOR cu bitii de intrare n
runda i (o exceptie: sub-cheia K5 se combina prin XOR cu bitii de iesire din runda 4).
Deci U1 = P K1 unde P = (P1 , . . . , P16 ) reprezinta textul clar (de 16 biti). Folosind
aproximarea liniara de la prima runda, avem
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 va da relatia
cu probabilitate 1/4. Deoarece U2,6 = V1,6 K2,6 , putem gasi o aproximare de forma
cu probabilitate 1/4.
Combinand aceasta relatie cu (2) (care are loc cu probabilitate 3/4), se obtine
V2,6 V2,8 P5 P7 P8 K1,5 K1,7 K1,8 K2,6 = 0 (3)
cu probabilitate 1/2 + 2(3/4 1/2)(1/4 1/2) = 3/8 (deci o tendinta 1/8) obtinuta
prin aplicarea Lemei ??.
P5 P7 P 8
K2,6
K3,6 K3,14
? ?
U4,6 U4,8 U4,14 U4,16
S41 S42 S43 S44
Sub-cheia tinta al carei contor difera cel mai mult de jumatatea numarului de perechi
de texte folosite, este cel mai probabil cea corecta. Aceasta rezulta din faptul ca pentru
sub-cheia tinta respectiva, tendinta este maxima. Daca valoarea acestui contor este mai
mare sau mai mica decat 1/2 depinde de faptul daca aproximarea folosita este o relatie
liniara sau afina (lucru care depinde la randul sau de valorile necunoscute ale bitilor
sub-cheii folositi implicit n aproximare).
Pentru o sub-cheie incorecta rezultata dintr-o alegere aleatoare, aproximarea asociata
este verificata n general cu o probabilitate foarte apropiata de 1/2.
Exemplul 6.7. ([?]). Expresia liniara (5) afecteaza intrarile n S - boxurile S42 si S44
din ultima runda. Deci, pentru fiecare pereche (text clar, text criptat) ales pentru atac,
vom ncerca toate cele 28 = 256 valori ale sub-cheii tinta [K5,5 , . . . , K5,8 , K5,13 , . . . , K5,16 ].
Pentru fiecare valoare a sub-cheii tinta vom incrementa contorul respectiv ori de cate
ori relatia (5) este verificata (valorile [U4,5 , . . . , U4,8 , U4,13 , . . . , U4,16 ] sunt determinate tre-
cand 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 (text clar, text
criptat) folosite n atac va indica sub-cheia tinta prezumtiv corecta. 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|
1C 0.0031 2A 0.0044
1D 0.0078 2B 0.0186
1E 0.0071 2C 0.0094
1F 0.0170 2D 0.0053
20 0.0025 2E 0.0062
21 0.0220 2F 0.0133
22 0.0211 30 0.0027
23 0.0064 31 0.0050
24 0.0336 32 0.0075
25 0.0106 33 0.0162
26 0.0096 34 0.0218
27 0.0074 35 0.0052
28 0.0224 36 0.0056
29 0.0054 37 0.0048
Tabela 8. Rezultate experimentale pentru un atac liniar
In [?] este simulat un atac folosind 10000 perechi cunoscute (text clar, text crip-
tat) si urmand procedura de criptare pentru valorile sub-cheii partiale [K5,5 , . . . , K5,8 ] =
0010 (hex 2) respectiv [K5,13 , . . . , K5,16 ] = 0100 (hex 4). Contorul care difera cel mai mult
6.5. CRIPTANALIZA LINIARA 119
de valoarea 5000 corespunde asa cum este de asteptat valorii sub-cheii tinta [2, 4] hex,
confirmand ca atacul a gasit corect bitii respectivi ai cheii.
Tabela 8 prezinta doar partial rezultatele relative la contori (un tabel complet va avea
256 linii, cate una pentru fiecare valoare posibila a sub-cheii tinta ). Valorile din tabel
indica magnitudinea tendintei, conform formulei |tendinta| = |cont 5000|/10000, unde
cont corespunde contorului asociat valorii respective date sub-cheii tinta.
Dupa cum se vede, cea mai mare tendinta apare pentru valoarea
[K5,5 . . . K5,8 , K5,13 . . . K5,16 ] = [2, 4],
rezultat care ramane valabil pentru toata tabela cu 256 valori.
Valoarea 0.0336 gasita experimental este foarte apropiata de valoarea estimata 1/32 =
0.03125. De remarcat ca n tabel apar si alte valori destul de mari ale tendintei (desi
teoretic, ele ar trebui sa fie foarte apropiate de zero). Ele rezulta printre altele din
alegerea aleatoare a perechilor de test, a proprietatilor particulare ale S - boxurilor, a
impreciziei ipotezei de independenta (ceruta de Lema ??).
a2 b 1 b 2 b 3 b 4 = 0
.H .L
K1
+k
?
f
? ?
X2
+k K2
?
f
? ?
X2
+k
?
f K3
?
?
.H .L
.L15 (.H7 X27 ) (.H18 X218 ) (.H24 X224 ) (.H29 X229 ) K122 = 0
X2 = .H f (.L, K3),
X.L15 = .L
si
X.H 15 = .H f (X.L15 , K16) = .H f (.L, K16)
Inlocuind n (8), putem verifica daca aproximarea respectiva are loc pentru o sub-cheie
K16 data, verificand pur si simplu egalitatea
15
.H[7, 18, 24] .L[12, 16] .L[7, 18, 24, 29] .H15 f (.L, K16)15 = 0
Singura componenta care nu este data de o pereche (text clar, text criptat) folosita n
atac, este bitul f (.L, K16)15 . Acest bit este afectat de un singur S - box al lui f , deci
sunt necesari numai 6 biti din K16 pentru a verifica egalitatea (8) (remintim, S - boxurile
DES folosesc intrari de 6 biti).
Putem obtine n acest fel 6 biti din cheie. Restul bitilor se vor obtine folosind eventual
un atac prin forta bruta.
In [?] Matsui foloseste simetria rundelor DES pentru a gasi alta aproximare liniara
similara cu (7), avand aceeasi tendinta. Pe baza ei se pot gasi alti 6 biti din cheie. Deci, n
total pot fi descoperiti 12 biti din cheie. In [?], Matsui mbunatateste algoritmul, folosind
122 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC
o aproximare pentru un DES pe 14 runde, obtinand n final 26 biti din sub-cheia K16
(care are n total 48 biti).
Dupa estimarea lui Matsui, atacul originar necesita 247 perechi (text clar, text criptat)
pentru a avea succes cu probabilitate mare, iar atacul mbunatatit 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.
Algoritmii de cautare pentru cea mai buna caracteristica sau cea mai buna aproxi-
mare liniara sunt n esenta identici.
Cele mai importante distinctii ntre cele doua metode de atac sunt:
Tendinta unei aproximari liniare este un numar cu semn. Deci, fiind date doua
aproximari cu aceleasi structuri de intrare si iesire, aceiasi probabilitate, dar semne
opuse, aproximarea rezultata va avea tendinta zero (datorita faptului ca cele doua
aproximari se vor anula reciproc).
6.7 Exercitii
6.1. Fie S - boxul S : {0, 1}3 {0, 1}3 definit prin tabela
x 0 1 2 3 4 5 6 7
S (x) 0 2 3 4 5 6 7 1
Se dau doua mesaje s1 , s2 {0, 1}3 . Sa se afle cheia k {0, 1}3 stiind ca
s1 k = 5, s2 k = 3, S (s1 ) S (s2 ) = 2.
6.7. EXERCITII 123
6.4. Pentru fiecare din cele opt S - boxuri DES calculati tendinta variabilei aleatoare
X2 Y1 Y2 Y3 Y4 .
1. Aratati ca a doua linie din S4 poate fi obtinuta din prima linie folosind operatia
2. Aratati ca orice linie din S4 poate fi transformata n orice alta linie printr-o operatie
similara.
1. NL (0, 0) = 2m ;
6.9. Fie un sistem de criptare P = C = K care asigura un secret perfect; deci, din
eK () = eK1 () rezulta K = K1 . Notam P= Y = {1 , 2 , . . . , N }. Fie un bloc de text
clar fixat. Definim functia g : Y Y prin g() = e (). Definim un graf orientat
avand ca noduri multimea Y si ca arce (i , g(i )) (1 i N ).
1. 0 ;
2. f lag T rue;
3. while g() 6= 0 do
3.1. if j = j and f lag then
3.1.1. g 1 (j )
3.1.2. f lag F alse
else
3.1.3. g();
3.2. K = .
4. Dati un algoritm care construieste o multime Z n timp O(N T ), fara a folosi tablouri
de marine N .
Capitolul 7
125
126 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA
Sistemul Merkle - Hellman: primul sistem definit cu cheie publica, bazat pe problema
{0, 1} a rucsacului.
Sistemul McEliece: este bazat pe teoria algebrica a codurilor, decodificarea unui cod
liniar fiind de asemenea o problema N P - completa.
Exemplul 7.1. Ne putem imagina usor strazile cu sens unic dintr-un oras. Astfel, este
usor ca mergand pe astfel de strazi sa ajungi de la punctul A la punctul B, dar 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).
Exemplul 7.2. Sa consideram cartea de telefon a unui oras mare2 ; cu ajutorul ei este
foarte usor sa gasim numarul de telefon al unei anumite persoane. In schimb, este extrem
de greu - practic imposibil - sa afli persoana care are un anumit numar de telefon. Te
afli n situatia parcurgerii secventiale a (cel putin) unui volum gros, ceea ce conduce la o
crestere exagerata a timpului.
Aceasta da o sugestie de constructie a unui sistem de criptare cu cheie publica. Cripta-
rea se face independent de context, litera cu litera. Pentru fiecare litera a textului clar se
alege un nume care ncepe cu acest caracter si numarul de telefon al persoanei respective
va constitui criptarea. Sistemul este homofonic; doua aparitii diferite ale aceleiasi litere
vor fi codificate foarte probabil cu numere diferite.
De exemplu, textul clar SOLIST se poate cripta astfel:
2
O carte de telefon expirata va duce la cresterea dificultatii decriptarii ilegale.
7.2. FUNCTII NEINVERSABILE 127
De remarcat ca, din punct de vedere strict matematic, nu se cunosc astfel de functii. A
demonstra ca exista functii neinversabile este echivalent cu a demonstra relatia P =
6 N P,
conjectura care sta la baza ntregii teorii criptografice (a se vedea [?], [?]). De aceea,
termenii folositi sunt relativi la complexitatea calculatorie. Astfel, o problema este:
Ce se ntampla nsa daca A are cateva sute de componente ? In acest caz se cunoaste
faptul ca problema rucsacului este N P - completa.
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 (com-
pletand eventual n fata cu 0 - uri). f (x) va fi numarul obtinut din A prin nsumarea
tuturor numerelor ai aflate pe pozitiile marcate cu 1 n reprezentarea binara a lui x.
Formal,
f (x) = A BxT
unde Bx este reprezentarea binara a lui x, scrisa ca un vector coloana.
Sa definim acum un sistem de criptare bazat pe problema rucsacului. Textul clar
este codificat initial n binar si segmentat apoi n blocuri de cate n biti (eventual ultimul
bloc este completat la sfarsit cu zerouri). Fiecare bloc rezultat este apoi criptat calculand
valoarea corespunzatoare a functiei f .
Pentru alfabetul latin sunt suficienti 5 biti pentru codificarea binara a literelor si a
spatiului. Mai exact, daca asociem literelor A - Z reprezentarile binare ale numerelor
1 26, vom avea:
Daca el foloseste un atac cu text clar ales, l va afla usor pe A: este suficient sa trimita
n texte clare cu cte un singur 1 iar restul 0. Problema apare n momentul rezolvarii
problemei rucsacului; aici atat Bob cat si Oscar sunt pusi n fata acelaiasi probleme N P
- complete. Ori, practic, doar Oscar trebuie sa rezolve o problema dificila, nu si Bob.
O alta problema ridicata de acest sistem de criptare: este obligatoriu ca un text criptat
sa determine n mod unic un text clar. Aceasta nseamna ca nu trebuie sa existe doua
submultimi ale lui A care sa aiba aceeasi suma. Astfel, daca se ia A = (17, 103, 50, 81, 33),
textul criptat (131, 33, 100, 234, 33) poate fi decriptat n doua moduri: SAUNA si FAUNA.
Exemplul 7.4. Sunt clase de probleme ale rucsacului usor de rezolvat; una din ele o
formeaza vectorii cu crestere mare.
Spunem ca vectorul rucsac A = (a1 , a2 , . . . , an ) este super-crescator daca
j1
X
j 2, aj > ai .
i=1
In acest caz, pentru a rezolva problema rucsacului este suficient sa parcurgem vectorul
A de la dreapta spre stanga. Cunoscand valoarea k, cercetam ntai valoarea de adevar
a relatiei k an . Daca raspunsul este FALSE, an nu poate apartine sumei pe care o
cautam. Daca nsa se obtine TRUE, an trebuie sa fie n suma, deoarece toate elementele
ai ramase nu pot depasi n suma pe k.
Vom defini
(
k daca an > k
k1 =
k an daca an k
si repetam procedeul pentru k1 si an1 . Algoritmul se va opri la valoarea a1 .
Sa presupunem ca avem vectorul rucsac super-crescator
Putem trasa acum cateva principii generale de construire a unui sistem de criptare cu
cheie publica ([?]):
In functie de aceste principii generale, apar n detalii de constructie multe alte probleme
pe care constructorii sistemelor de criptare trebuie sa le rezolve.
Daca un text criptat y este interceptat de criptanalist, acesta 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 sistemului.
132 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA
y1 = e1B (m) - ?
y = eB (m) -
? Oscar
1. Oscar opacizeaza printr-un mijloc oarecare aceste chei, si trimite lui Alice
cheia e1B ca din partea lui Bob; substituie similar pentru Bob cheia eA cu
e1A .
2. Fie m mesajul pe care Alice vrea sa l trimita lui Bob. Ea va cripta si va trimite
y1 = e1B (m).
3. Oscar intercepteaza mesajul (reamintim, toate canalele sunt nesigure) si afla
m = d1B (y1 ).
4. Oscar recripteaza y = eB (m) si trimite y lui Bob.
Binenteles, daca doreste, Oscar poate modifica, interschimba sau ntarzia mesajele
interceptate.
Din aceasta cauza, n toate sistemele de criptare cu cheie publica apare necesitatea
autentificarii mesajului sau a expeditorului, precum si aceea a confidentialitatii.
Definitia 7.1. Confidentialitatea4 asigura accesul la informatie doar partilor autorizate
de a avea acest acces.
Definitia 7.2. Autentificarea5 este procesul prin care un calculator (program de calculator
sau alt utilizator) ncearca sa confirme unui destinatar ca mesajul primit de acesta vine
(sau nu vine) din partea sa.
Metodele prin care se poate autentifica un expeditor uman, sunt clasificate n:
1. ceva ce utilizatorul este (de exemplu amprente digitale, de retina, de voce, secventa
DNA, recunoasterea semnaturii, identificatori biometrici).
2. ceva de utilizatorul are (de exemplu card ID, date de securitate soft aflate pe
calculator sau telefon).
4
conform International Standards Organization (ISO).
5
de la grecescul authentes autor.
7.4. SECURITATEA SISTEMELOR DE CRIPTARE CU CHEIE PU-BLICA 133
4. Orice combinatie ntre metodele anterioare (de exemplu un card bancar cu PIN
asigura o dubla autentificare).
Alt termen frecvent utilizat este cel de integritate. El se refera la validitatea datelor.
Definitia 7.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.
1. Prin alterare intentionata (de exemplu modificarea unui cont bancar, a unei adrese
de e-mail, a unui document de identitate);
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.
O modalitate frecvent utilizata pentru autentificarea mesajelor este folosirea codurilor de
autentificare.
Exemplul 7.7. Sa presupunem ca Alice vrea sa trimita lui Bob 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 parteneri, 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 si afla mesajul.
Se observa ca sunt verificate cele doua conditii de autentificare si n plus protocolul
rezista unui atac de tip man-in-the-middle.
Daca dorim sa folosim un singur contact, Alice poate trimite mesajul y = eB (dA (m)).
La receptie, Bob va folosi propria sa cheie pentru decriptare, impreuna cu cheia publica a
lui Alice. Metoda merge si pentru sisteme de criptare necomutative.
4. Implementarea trebuie realizata cu foarte mare grija. Sisteme cu grad teoretic ridi-
cat de securitate pot fi sparte usor printr-o implementare neglijenta.
Dupa cum se observa, cele doua clase de sisteme de criptare dispun de o serie de avantaje
complementare. Acest lucru face ca ele sa fie folosite combinat.
Exemplul 7.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 mult mai mare de transmitere si
un spor de autenticitate a mesajelor.
7.6 Exercitii
7.1. Justificati modul n care un sistem de criptare simetric asigura conditiile de confiden-
tialitate, autentificare si integritate.
7.3. Fie f (x) si g(x) doua functii neinversabile. Dati un argument auristic pentru a
arata ca nici una din functiile f (x) + g(x), f (x) g(x), f (g(x)) nu este n mod obligatoriu
neinversabila.
136 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA
7.4. Alice si Bob aleg public un nunar prim p. Dupa aceea, fiecare alege si pastreaza
secret cate doua numere (eA , dA ) respectiv (eB , dB ) astfel ca eX dX 1 (mod p 1).
Daca Alice doreste sa transmita lui Bob mesajul m, se va urma protocolul:
137
138 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA
criptare daca si numai daca nu este divizibil cu 2, 5 sau 7 (deci Bob poate sa nu factorizeze
(n); este suficient sa verifice daca cmmdc((n), b) = 1 folosind algoritmul lui Euclid).
Fie de exemplu b = 3533. Avem atunci b1 = 6597 (mod 11200).
Deci, exponentul (secret) de decriptare este a = 6597.
Bob face public n = 11413 si b = 3533.
Daca Alice doreste sa-i transmita lui Bob mesajul m = 9726, ea calculeaza
si trimite prin canal textul criptat c = 5761. Cand Bob primeste acest numar, el determina
Tabelul 8.1:
5. Face public n si b.
Deci, pentru ca sistemul RSA sa fie sigur, este necesar ca n sa fie suficient de mare
pentru ca factorizarea sa sa fie imposibila (din punct de vedere al complexitatii). Algorit-
mii de factorizare actuali pot descompune rapid numere de pana la 200 cifre zecimale. Se
recomanda de aceea pentru siguranta sa se lucreze cu numere prime p si q de cel putin
300 cifre fiecare, deci n va avea peste 500 cifre. Aproape toate implementarile actuale ale
sistemului folosesc chei de 1024 2048 biti2 .
Cu intentia ca vom reveni asupra problemelor legate de numere prime mari, sa studiem
ntai operatiile necesare pentru criptare si decriptare. Orice astfel de calcul se bazeaza
pe o exponentiere modulo n. Cum n este foarte mare, vom utiliza aritmetica numerelor
mari pentru lucrul n Zn , timpul de calcul necesar fiind direct proportional cu numarul
de biti ai lui n.
Daca n ocupa k biti n memorie (deci k = [log2 n] + 1), prin metode de calcul uzuale
se ajunge la concluzia ca suma a doua numere de k biti se face n O(k), iar nmultirea n
O(k 2 ). La fel si reducerea modulo n. Deci, pentru x, y Zn , numarul xy mod n se poate
determina prin calcule de complexitate O(k 2 ). Vom numi aceasta operatie multiplicare
modulara.
Sa cercetam acum exponentierea modulara xc mod n. O modalitate de calcul consta n
efectuarea de c1 multiplicari modulare proces foarte ineficient pentru c mare, deoarece
algoritmul devine de complexitate exponentiala.
Exista nsa un algoritm de exponentiere rapida, care realizeaza xc mod n cu complexi-
tate O(k 3 ) (deci polinomial). Acesta utilizeaza descompunerea binara a lui c,
s1
ci 2i
X
c=
i=0
z 1;
for i s 1 downto 0 do
z z 2 (mod n);
if ci = 1 then z z x (mod n)
Exemplul 8.2. Sa reluam datele din Exemplul ??. Calculul lui 97263533 mod 11413 se
efectueaza cu algoritmul de sus n numai 12 pasi; anume:
2
Un numar n de maxim 256 biti poate fi factorizat de un PC obisnuit n cateva ore, folosind un soft
free. Daca n are pana la 512 biti, el poate fi factorizat folosind o retea de cateva sute de calculatoare,
conform unei scheme prezentate n 1999. In 2003 a fost pusa sub semnul ntrebarii securitatea modulelor
de 1024 biti.
140 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA
i ci z
2
11 1 1 9726 = 9726
10 1 97262 9726 = 2659
9 0 26592 = 5634
8 1 56342 9726 = 9167
7 1 91672 9726 = 4958
6 1 49582 9726 = 7783
5 0 77832 = 6298
4 0 62982 = 4629
3 1 46292 9726 = 10185
2 1 101852 9726 = 105
1 0 1052 = 11025
0 1 110252 9726 = 5761
Deci textul clar 9726 este criptat de Alice n 5761.
Pentru aplicarea sistemului de criptare RSA, trebuie generate ntai numerele prime
p, q despre care vom discuta n sectiunea urmatoare. Etapa a doua (din Tabelul ??)
se efectueaza evident n O((log2 n)2 ). Etapele 3 si 4 folosesc algoritmul lui Euclid extins.
Ca rezultat general, calculul celui mai mare divizor comun dintre a si b (cmmdc(a, b)) cu
a > b se poate realiza cu complexitatea O((log2 a)2 ).
In general, un algoritm RSA este cam de 1000 ori mai lent decat DES pentru o
implementare harwdare si cam de 100 ori la o implementare software. In [?] se dau cateva
tabele cu astfel de valori comparative, la nivelul anului 1995.
Definitia 8.4. Daca p 3 este prim, pentru orice numar a 0 se defineste simbolul
Legendre prin
! 0 daca a 0 (mod p)
a
= 1 daca a este rest patratic modulo p
p
1
daca a nu este rest patratic modulo p
Teorema ?? asigura ca a(p1)/2 1 (mod p) daca si numai daca a este rest patratic
modulo p. Daca a este multiplu de p, evident a(p1)/2 0 (mod p). In sfarsit, daca a nu
este rest patratic modulo p, avem a(p1)/2 1 (mod p) deoarece ap1 1, a(p1)/2 6
1 (mod p) si 1 este singura radacina patrata diferita de 1 modulo p. Este deci adevarata
teorema urmatoare:
Definitia 8.5. Fie n = pe11 . . . pekk un numar impar descompus n factori primi. Daca
a 0 este un numar ntreg, se defineste simbolul Jacobi prin
k
!ei
a a
Y
=
n i=1 pi
6278
Exemplul 8.4. Sa calculam simbolul Jacobi . Descompunerea n factori primi a
9975
2
lui 9975 este 9975 = 3 5 7 19. Avem atunci
6278 2 6278
2
6278 6278 6278 2 3 6 8
= = =
9975 3 5 7 19 3 5 7 19
2
= (1)(1) (1)(1) = 1
n1
Pentru evaluarea a (mod n) se poate folosi un algoritm
2 de complexitate O((log n)3 ).
a
Problema este cum putem evalua simbolul Jacobi x fara a factoriza pe n (altfel
n
ne nvartim ntr-un cerc vicios !!).
Acest lucru se poate realiza folosind cateva proprietati. Anume:
xy x y
3. = ;
n n n
Lema 8.2. Fie m, n doua numere ntregi pozitive impare. Atunci
n
m
daca m 3 (mod 4), n 3 (mod 4)
= m
n n
m
altfel
O analiza sumara arata ca se poate calcula simbolul Jacobi m n
folosind cel mult
2
O(log n) reduceri modulare, fiecare n timp O((log n) ). Deci complexitatea poate fi
estimata la O((log n)3 )3 .
Se poate arata ca numarul de baze a pentru care un numar neprim n este pseudo -
prim Euler, este cel mult n/2. Aceasta duce la concluzia ca testul de primalitate Solovay
- Strassen este un algoritm Monte Carlo pozitiv pentru problema de descompunere, cu
probabilitate de eroare 1/2.
Un studiu referitor la complexitatea aplicarii acestui test de primalitate si a proba-
bilitatii de eroare se poate gasi n [?].
3. b am (mod n)
5. for i 0 to k 1 do
5.1. if b 1 (mod n) then n este prim, Stop,
else b b2 (mod n)
Teorema 8.3. Algoritmul Miller - Rabin este un algoritm Monte Carlo pozitiv pentru
problema de descompunere.
k k1
Deoarece n este prim, teorema lui Fermat da a2 m 1 (mod n). Deci a2 m este o
radacina patrata a lui 1 modulo n.
Din faptul ca n este prim, singurele radacini patrate ale lui 1 sunt 1. Aceasta
afirmatie se poate arata astfel:
x este radacina patrata a lui 1 modulo n daca si numai daca n|(x 1)(x + 1). Cum n
este prim, avem n|(x 1) (deci x 1 (mod n)) sau n|(x + 1) (adica x 1 (mod n)).
k1 k1
Cum prin ipoteza a2 m 6 1 (mod n), avem a2 m 1 (mod n).
k2
Atunci a2 m trebuie sa fie radacina patrata a lui 1, diferita de 1, deci
k2
a2 m 1 (mod n).
Procedand iterativ, se ajunge la am 1 (mod n), ceea ce contrazice faptul ca algorit-
mul nu s-a oprit la Pasul 4.
Daca n este un numar impar neprim, atunci maxim 1/4 din numerele a Zn conduc
la un rezultat fals. In [?] se apreciaza ca numarul maxim de astfel de valori este (n)/4,
pentru n 6= 9.
De exemplu, pentru n = 91 (neprim), multimea valorilor a pentru care algoritmul
da raspuns incorect este {9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69, 74, 75, 79, 81, 82}. Pentru
n = 105 orice valoare a lui a conduce la un rezultat corect.
Deci, algoritmul Miller-Rabin este un algoritm Monte-Carlo pozitiv de probabilitate
= 1/4.
In general se considera ca testul Miller - Rabin este mai bun decat Solovay - Strassen.
Cateva motive:
2. Implementarea lui Solovay - Strassen este mai dificila din cauza calculului simbolului
Jacobi.
4. Deoarece orice valoare a lui a pentru care testul Miller - Rabin este gresit este
un numar Euler pseudo-prim (vezi Exercitiul ??), un test Miler - Rabin nu este
niciodata inferior unui test Solovay - Strassen.
3. Se verifica daca p nu este divizibil cu numere prime mici (3, 5, 7, 11, . . .)4 .
4. Se aplica testul Miller - Rabin cu o valoare aleatoare a. Daca p trece testul, se
ia alta valoare pentru a. Cinci teste sunt suficiente. Pentru viteza, se recomanda
sa se ia valori mici pentru a. Daca p esueaza la unul din cele cinci teste, se reia
algoritmul.
Se apreciaza ca utilizarea pasului 3, cu o testare a tuturor numerelor prime pana la 256
elimina aproape 80% din cazurile nefavorabile.
Exemplul 8.6. Pentru n = 97343 se gaseste n = 311, 998. Apoi 3122 n = 1, ceea ce
conduce la factorizarea p = 313, q = 311.
Definitia 8.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 probabilitate .
Observatia 8.1. Un algoritm Las Vegas poate sa nu dea raspuns; dar daca da acest
raspuns este sigur corect. Algoritmii Monte Carlo n schimb dau totdeauna raspuns, desi
acesta uneori este incorect.
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 tentative consecutive este m .
Sa consideram un algoritm ipotetic A care calculeaza exponentul de decriptare a
plecand de la exponentul de criptare b. Se poate descrie atunci 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.
In acest caz x2 1 (mod p) are ca singure solutii x 1 (mod p). La fel, x2
1 (mod q) are solutiile x 1 (mod q).
Din Teorema chineza a resturilor (a se vedea Anexa 2) rezulta ca congruenta x2
1 (mod n) este echivalenta cu x2 1 (mod p) si x2 1 (mod q).
Vom avea deci patru radacini patrate ale unitatii modulo n, care pot fi calculate cu
Teorema chineza a resturilor. Doua sunt solutiile triviale 1 (mod n), iar celelalte
numite netriviale sunt opuse modulo n.
Exemplul 8.7. Fie n = 403 = 13 31. Cele patru radacini patrate ale lui 1 modulo 403
sunt 1, 92, 311 si 402.
5
program care raspunde numai cu Da/Nu la o ntrebare - tip a utilizatorului
148 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA
Deci, daca n are j biti, atunci atacul va fi eficient pentru orice sistem de criptare RSA n
care a are mai putin de j/4 1 biti, iar p si q au valori suficient de apropiate6 .
Din conditia a b 1 (mod (n)) rezulta ca exista un numar ntreg t astfel ca
a b t (n) = 1.
Rezulta ca valoarea fractiei t/a este foarte apropiata de valoarea lui b/n. Din teoria
fractiilor continue se stie ca orice aproximare suficient de buna a lui b/n este una din
convergentele dezvoltarii n fractie continua a lui b/n. Sa descriem acest procedeu.
Definitia 8.7. O fractie continua (finita) este un m-tuplu [q1 , q2 , . . . , qm ] de numere natu-
rale care reprezinta notarea expresiei
1
q1 + 1
q2 + q3 +...+ q1
m
6
Bob poate fi tentat sa aleaga astfel de parametri, pentru cresterea vitezei de decriptare; reamintim,
RSA este un sistem relativ lent.
150 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA
Fie a, b doua numere ntregi pozitive prime ntre ele si (q1 , q2 , . . . , qm ) secventa caturilor
a
obtinute prin aplicarea algoritmului lui Euclid. Se verifica usor ca = [q1 , q2 , . . . , qm ].
b
Vom spune ca [q1 , q2 , . . . , qm ] este dezvoltarea n fractie continua a lui a/b.
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 pot defini recursiv astfel:
1 daca j = 0
0 daca j = 0
cj = q 1 daca j = 1 dj = 1 daca j = 1
qj cj1 + cj2 daca j 2 qj dj1 + dj2 daca j 2
Exemplul 8.9. Sa dezvoltam numarul rational 34/99 n fractie continua. Folosind algo-
ritmul lui Euclid se obtine [0, 2, 1, 10, 3], care este notarea fractiei
34 1
=0+
99 2 + 1+ 1 1
10+ 1
3
1 1 2 3 14
Primele convergente sunt: 0, , , , , ...
2 3 5 8 37
Primele cinci convergente nu verifica conditia de divizibilitate. Pentru 14/37 avem
nsa:
37 60728973 1
m= = 160498000.
14
Rezolvand ecuatia x2 25348x + 160523347 = 0 obtinem radacinile 12347 si 13001. Deci
avem factorizarea
160523347 = 12347 13001
Vom arata ([?]) ca orice algoritm care poate calcula par(y) sau jum(y) poate fi utilizat ca
oracol pentru regasirea textului clar x. Altfel spus, a calcula una din aceste functii este
la fel de dificil cu a decripta tot textul y.
Faptul ca cele doua functii sunt polinomial echivalente rezulta din
1. k [log2 n];
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]
Exemplul 8.11. Fie n = 1457, b = 779, iar textul criptat este y = 722. Calculam
eK (2) = 946. Sa presupunem ca oracolul jum din pasul 2.1. da urmatoarele raspunsuri:
i 0 1 2 3 4 5 6 7 8 9 10
yi 1 0 1 0 1 1 1 1 1 0 0
Cautarea binara este realizata n tabelul:
8.4. SECURITATEA SISTEMULUI RSA 153
Metoda p 1
Un algoritm simplu care se poate aplica uneori si la numere mari este metoda p 1
enuntata de Pollard n 1974. In esenta, el foloseste trei variabile de intrare: numarul
n (impar) care trebuie descompus, o margine B si un numar oarecare g [2, n 1].
Descrierea algoritmului este:
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
deoarece p|n. Cum g p1 1 (mod p), conform teoremei lui Fermat (n afara de cazul
cand p|g) si cum (p 1)|B!, se obtine a 1 (mod p).
Deci, la pasul 3 se ajunge la p|(a 1) si p|n, de unde rezulta p|d = cmmdc(a 1, n).
Numarul d este un divizor netrivial al lui n (n afara de cazul a = 1 la pasul 3).
Avand un divizor netrivial d, procesul se poate itera.
Definitia 8.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.
Exista diversi algoritmi pentru generarea numerelor prime tari. Pentru exemplificare
am ales algoritmul lui Gordon:
Teorema 8.5. Numarul p generat de algoritmul Gordon este un numar prim tare.
8.4. SECURITATEA SISTEMULUI RSA 155
Exemplul 8.14. Fie n = 15770708441 si alegem multimea B= {2, 3, 5, 7, 11, 13}. Se-
lectam
83409341562 3 7 (mod n)
120449429442 2 7 13 (mod n)
27737000112 2 3 13 (mod n)
Daca se ia produsul acestor trei congruente, se ajunge la
j = (1j , . . . , Bj ) Z2B .
Daca se poate determina o submultime, formata din astfel de vectori, a caror suma modulo
2 sa fie (0, 0, . . . , 0), atunci patratul produsului elementelor xj corespunzatoare va avea n
B toti divizorii reprezentati de un numar par de ori.
Exemplul 8.15. Revenind la Exemplul ??, 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).
Aceasta proprietate de homomorfism a criptarii poate oferi unui adversar activ posibili-
tatea unui atac cu text clar ales.
Sa presupunem ca Oscar vrea sa decripteze mesajul c = mb (mod n) trimis de Bob lui
Alice, iar Alice are amabilitatea sa i decripteze lui Oscar orice text criptat primit (nafara
de c, bineinteles).
Atunci Oscar va alege un numar aleator x Zn , va calcula c1 = c xb (mod n) si va
solicita decriptarea lui. Alice va decripta pentru el m1 = ca1 (mod n). Deoarece
m1 ca1 ca (xb )a mx (mod n)
Oscar va afla imediat m = m1 x1 (mod n).
Acest tip de atac este prevenit de obicei impunand anumite structuri speciale asupra
textelor clare.
Atacuri ciclice
Fie c = mb (mod n) un text criptat si k un ntreg pozitiv astfel ca
k
cb c (mod n)
(un astfel de k exista totdeauna, deoarece criptarea RSA este de fapt o permutare n
spatiul Zn al textelor clare). Rezulta ca
k1
cb m (mod n)
i
Aceasta observatie conduce la un atac ciclic: Oscar calculeaza cb (mod n) pentru
k
i = 1, 2, . . . pana gaseste un k astfel ca cb c (mod n). Atunci va decripta c n
k1
cb m (mod n).
Un atac ciclic generalizat consta n aflarea celui mai mic ntreg pozitiv k astfel ca
k
cmmdc(cb c, n) > 1. Vom avea implicatia
k k
cb c (mod p), cb 6 c (mod q) = k=p
si similar
k k
cb 6 c (mod p), cb c (mod q) = k=q
In ambele cazuri s-a obtinut factorizarea lui n.
Pe de-alta parte, daca
k k k
cb c (mod p), cb c (mod q) = k = n si cb c (mod n)
k1
In acest caz s-a reusit decriptarea m = cb (mod n).
Folosirea unor numere prime tari asigura o protectie suficienta pentru acest gen de
atac.
Exista patru texte clare distincte care se pot cripta n acelasi text. Sa detaliem aceasta
afirmatie:
Fie una din cele patru radacini patrate modulo n ale unitatii, si x Zn . Efectuam
calculele
B 2
2
B B B
2
eK x + = x+ = x2 + Bx = eK (x)
2 2 2 2
(calculele s-au realizat n Zn , iar mpartirea la 2 si 4 s-a facut prin nmultirea n Zn cu
21 respectiv 41 ).
Cele patru texte clare care se cifreaza n eK (x) sunt
x, x B, (x + B/2) B/2 si (x + B/2) B/2,
unde este o radacina patrata netriviala modulo n a unitatii.
Verificarea este imediata.
In general, daca nu dispune de informatii suplimentare, Bob nu are nici un mijloc de
a distinge care din cele patru mesaje este cel corect.
Sa vedem cum se realizeaza decriptarea. Bob primeste mesajul criptat y si ncearca
sa sa determine x astfel ca x2 + Bx y (mod n).
Aceasta este o ecuatie de gradul doi n x. Termenul de gradul 1 se poate elimina
folosind substitutia x1 = x + B/2 (sau echivalent x = x1 B/2).
Se ajunge la ecuatia
B2
x21 + y (mod n).
4
Notand membrul drept cu C, aceasta ecuatie se scrie x21 C (mod n). Deci decriptarea
se reduce la extragerea radacinilor patrate modulo n; operatie echivalenta cu rezolvarea
sistemului
x21 C (mod p) x21 C (mod q)
care, prin combinarea solutiilor fiecarei ecuatii va da patru radacini patrate modulo n.
Intr-o criptare corecta, C este totdeauna un rest patratic modulo p si q. Daca p
3 (mod 4), exista o formula simpla pentru extragerea radacinilor patrate dintr-un rest
patratic C modulo p. Avem (calculele se fac modulo p):
2
C (p+1)/4 C (p+1)/2 C (p1)/2 C C
Acestea, prin combinare folosind teorema chineza a resturilor, dau cele patru radacini
patrate ale lui C.
160 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA
Utilizand teorema chineza a resturilor, se obtin radacinile patrate ale lui 23 modulo 77:
11 2 a + 7 8 b (mod 77)
unde a = 4, b = 1. Calculand, se obtin valorile 10, 32. Cele patru texte clare
posibile (calculate modulo 77) vor fi deci:
1. Se alege aleator r Zn ;
2. y r2 B 2 /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 sau q, Stop
B
Sa observam ntai ca y = eK r , deci la pasul 3 se decripteaza x sub forma r B/2.
2
Cum la pasul 5. avem x21 r2 (mod n), rezulta x1 r (mod n) sau x1 r (mod n),
unde este o radacina netriviala modulo n a unitatii.
8.6. EXERCITII 161
In al doilea caz, n|(x1 r)(x1 + r) si n nu divide nici unul din 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.
Sa calculam probabilitatea de succes a algoritmului ([?]), din n 1 extrageri posibile
ale lui r. Pentru doua resturi nenule r1 , r2 , se defineste
Aceasta este evident o relatie de echivalenta. Toate clasele de echivalenta din Zn au cate
patru elemente, fiecare clasa fiind de forma [r] = {r, r}. In algoritmul anterior, doua
valori dintr-o clasa de echivalenta conduc la acelasi y.
Sa consideram un x1 calculat plecand de la valoarea x returnata de oracolul A pentru
un y dat. x1 este un element din [r]. Daca x1 = r, algoritmul esueaza; daca x1 = r, el
reuseste sa descompuna n. Cum r este aleator, cele patru posibilitati sunt echi-probabile,
deci algoritmul da reusita n 50% din cazuri.
8.6 Exercitii
8.1. Demonstrati lemele ?? si ??.
8.2. Fie p, q numere prime impare distincte si n = pq. Definim
(p 1)(q 1)
(n) =
cmmdc(p 1, q 1)
Folosim un sistem de criptare RSA n care s-a facut modificarea a b 1 (mod (n)).
(a) Demonstrati ca operatiile de criptare si decriptare sunt operatii inverse si n acest
sistem.
(b) Daca p = 37, q = 79 si b = 7, calculati valoarea exponentului a atat n acest
sistem cat si n sistemul RSA normal.
8.3. O modalitate curenta de a mari viteza de decriptare foloseste teorema chineza a
resturilor. Sa presupunem ca n = pq si dK (y) = y a (mod n). Definim dp = d (mod (p
1)), dq = d (mod (q 1)) si Mp = q 1 (mod p), Mq = p1 (mod q).
Vom considera algoritmul
1. xp y dp (mod p);
2. xq y dq (mod q);
3. x Mp q xp + Mq p xq (mod n);
4. return(x).
8.4. Pentru n = 837, 851 1189 aflati numarul de baze b pentru care numarul n este Euler
pseudo-prim.
8.5. Scrieti un program pentru calculul simbolului Jacobi, folosind Lemele ?? si ??. Sin-
gura operatie de factorizare permisa este mpartirea la 2. Valori de test:
610 20964 1234567
, ,
987 1987 11111111
8.6. Sa se arate ca orice numar a pentru care testul Miller - Rabin da rezultat fals este un
numar Euler pseudo-prim. Reciproca este adevarata daca si numai daca n 3 (mod 4).
8.8. Folosind metoda p 1 si diverse margini B, factorizati 262063 si 9420457. Cat este
B pentru fiecare caz ?
a (mod p).
1 2 3 4 5 6 7 8 9 10
log6 0 9 2 8 6 1 3 7 4 5
valorile {2, 6, 7, 8, 10} nu pot fi exprimate ca logaritmi n baza 3. Altfel spus, ecuatia
log3 x = nu are solutie n Z11 pentru aceste valori ale lui .
1
Implementari ale sistemului sunt continute n softuri pentru GNU Privacy Guard si PGP pentru a
lista doar cele mai cunoscute aplicatii.
163
164 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL
eK (x, k) = (y1 , y2 )
Observatia 9.2.
1. Un dezavantaj al sistemului El Gamal consta n dublarea lungimii textului criptat
(comparativ cu lungimea textului clar).
2. Daca (y1 , y2 ), (z1 , z2 ) sunt textele criptate ale mesajelor m1 , m2 atunci se poate
deduce imediat un text criptat pentru m1 m2 : (y1 z1 , y2 z2 ). Similar poate fi dedusa o
criptare pentru 2m1 (sau 2m2 ). Acest lucru face sistemul El Gamal permeabil la un atac
cu text clar ales.
3. Indicatia ca pentru criptarea a doua texte diferite sa se foloseasca valori diferite ale
parametrului k este esentiala: astfel, sa prsupunem ca mesajele m1 , m2 au fost criptate n
(y1 , y2 ) respectiv (z1 , z2 ) folosind acelasi k. Atunci y2 /z2 = m1 /m2 si cunoasterea unuia
din mesaje l determina imediat pe celalalt.
Evident aceasta problema se poate rezolva printr-o cautare directa (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), aflarea valorii cautate se poate face n O(1), dar
cu un spatiu de complexitate O(p).
Toti algoritmii construiti pentru calculul logaritmului discret folosesc un compromis
spatiu - timp.
(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 (eventual simultan) cele doua liste se gaseste (10, 644) L1 , (19, 644) L2 .
Se poate scrie deci
log3 525 = 29 10 + 19 = 309.
Se verifica usor ca 3309 525 (mod 809).
Daca s-ar putea calcula a (mod qici ) pentru toti i = 1, . . . , k, atunci folosind Teorema
chineza a resturilor s-ar putea determina a mod (p 1).
Fie q un numar prim astfel ca p 1 0 (mod q c ) si p 1 6 0 (mod q c+1 ). Sa aratam
cum se poate calcula atunci x a (mod q c ) pentru orice x, (0 x q c 1).
Sa descompunem ntai x n baza q folosind egalitatea
c1
ai q i ,
X
x= (0 ai q 1).
i=0
Putem acum sa ncepem calculul lui (p1)/q (mod p). Daca (p1)/q 1 (mod p),
atunci a0 = 0. Altfel se calculeaza n Zp = (p1)/q , 2 , . . . pana se obtine un numar
ntreg pozitiv i pentru care i (p1)/q . Atunci a0 = i.
Daca c = 1, algoritmul se termina; altfel, (c > 1), se cauta valoarea lui a1 . Pentru
aceasta se defineste
1 = a0
si se noteaza x1 = log 1 (mod q c ).
c1
(p1)/q 2
ai q i , se va ajunge la relatia 1
X
Deoarece (evident) x1 = (p1)a1 /q (mod p).
i=1
(p1)/q 2
Se calculeaza atunci 1 (mod p) si se cauta i astfel ca
(p1)/q 2
i 1 (mod p).
Se ia a1 = i.
Daca c = 2, s-a terminat; n caz contrar, se mai efectueaza c 2 pasi pentru deter-
minarea coeficientilor a2 , . . . , ac1 .
168 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL
c1
ai q i .
X
Algoritmul calculeaza a0 , a1 , . . . , ac1 unde log (mod q c ) =
i=0
f : G Zn Zn G Zn Zn
definita prin
(x, a, b + 1) daca x S1
f (x, a, b) = (x2 , 2a, 2b) daca x S2
x S3
(x, a + 1, b) daca
Pe baza acestei functii vom genera recursiv triplete (x, a, b) cu proprietatea x = a b .
9.2. CALCULUL LOGARITMULUI DISCRET 169
In etapa a doua, se compara tripletele (x2i , a2i , b2i ) si (xi , ai , bi ) pana se gaseste o valoare
a lui i pentru care x2i = xi . In acel moment,
a2i b2i = ai bi .
sau
c(b2i bi ) ai a2i (mod n).
Daca cmmdc(b2i bi , n) = 1, atunci se poate obtine c:
Cum L2 () = L1 (a/2 ), valoarea L2 () poate determina care din cele doua variante (cu +
sau ) este corecta. Acest lucru este folosit de urmatorul algoritm care da valoarea loga-
ritmului discret log (s-a presupus ca valoarea L2 () se poate afla, folosind de exemplu
un oracol):
In final, se obtine
xj 2j .
X
log =
j0
Exemplul 9.7. Fie p = 19, = 2, = 6. Deoarece numerele sunt foarte mici, se pot
determina usor valorile pentru L1 si L2 ; ele sunt cele din tabelul
dK (y) = y2 (y1a )1 .
Astfel n grupul aditiv Zn , problema este simpla; aici exponentierea a este de fapt
nmultirea cu a modulo n. Deci, P LD consta n aflarea unui numar ntreg a astfel ca
a (mod n).
9.5 Exercitii
9.1. Implementati algoritmul Shanks pentru aflarea logaritmului discret. Aplicatii pentru
aflarea log106 12375 n Z24691 si log6 248388 n Z458009 .
9.2. Numarul p = 458009 este prim si = 2 are ordinul 57251 n Zp . Folosind algoritmul
Pollard Rho, calculati log2 56851 n Zp .
Luati valoarea initiala x0 = 1 si partitia din Exemplul ??.
176 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL
9.3. Fie p un numar prim impar si k un numar pozitiv. Grupul multiplicativ Zpk are
ordinul pk1 (p 1) si este ciclic. Un generator al acestui grup este numit element
primitiv modulo pk .
(a) Daca este un element primitiv modulo p, aratati ca cel putin unul din numerele
, + p este element primitiv modulo p2 .
(b) Descrieti cum se poate poate verifica eficient ca 3 este o radacina primitiva modulo
29 si modulo 292 . Aratati ntai ca daca este o radacina primitiva modulo p si modulo
p2 , atunci ea este radacina primitiva modulo pj pentru orice j ntreg.
(c) Gasiti un ntreg care este radacina primitiva modulo 29 dar nu este radacina
primitiva modulo 292 .
(d) Folositi algoritmul Pohlig - Hellman pentru a calcula log3 3344 n Z24389 .
9.4. Sa implementam sistemul de criptare El Gamal n GF (33 ). Polinomul x3 + 2x2 + 1
este ireductibil peste Z3 [x] si deci GF (33 ) = Z[ x]/(x3 + 2x2 + 1). Asociem cele 26 litere
ale alfabetului cu cele 26 elemente nenule ale corpului (ordonate lexicografic):
A 1 B 2 C x
D x+1 E x+2 F 2x
G 2x + 1 H 2x + 2 I x2
J x2 + 1 K x2 + 2 L x2 + x
M x2 + x + 1 N x2 + x + 2 O x2 + 2x
P x2 + 2x + 1 Q x2 + 2x + 2 R 2x2
S 2x2 + 1 T 2x2 + 2 U 2x2 + x
V 2x2 + x + 1 W 2x2 + x + 2 X 2x2 + 2x
Y 2x2 + 2x + 1 Z 2x2 + 2x + 2
Sa presupunem ca Bob foloseste = x si p = 11 ntr-un sistem de criptare El Gamal.
Apoi alege = x + 2. Decriptati mesajul
(K, H) (P, X) (N, K) (H, R) (T, F ) (V, Y ) (E, H) ((F, A) (T, W ) (J, D) (U, J)
Toate sistemele de criptare prezentate pana n acest moment se bazeaza pe operatii efec-
tuate ntr-un inel multiplicativ Zn ; securitatea lor s-a redus n general la probleme mate-
matice N P - complete.
In 1985, Victor Miller si Neal Koblitz propun independent unul de altul o crip-
tografie n care baza de calcul sa fie multimea punctelor unei curbe eliptice. Se pare ca
sunt doua motive pentru care aceasta modalitate este exploatata cu tot mai mult succes:
Vom aborda n acest capitol o scurta prezentare a curbelor eliptice, precum si a princi-
palelor directii de studiu referitoare la ECC (Elliptic Curve Cryptography).
177
178 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE
Daca L este o extensie oarecare a lui K, atunci multimea punctelor curbei E pe L este
E(L) = {(x, y) L L | y 2 + a1 xy + a3 y x3 + a2 x2 + a4 x + a6 = 0}
[
{O}
(a) Daca a1 6= 0, atunci curba eliptica E poate fi adusa (prin schimbari de variabile)
la forma
y 2 + xy = x3 + ax + b (3)
unde a, b K. O asemenea curba se numeste non-supersingulara, iar discri-
minantul ei este = b.
1
Elementul O este introdus pentru a satisface forma proiectiva a ecuatiei (1) si pentru a permite
construirea unei structuri algebrice convenabile pe E(L).
10.1. ARITMETICA CURBELOR ELIPTICE 179
3. Pentru p > 3, curba eliptica E poate fi adusa (prin schimbari de variabile) la forma
y 2 = x3 + ax + b (7)
x3 = 2 x1 x2 , y3 = (x1 x3 ) y1 ,
iar
y2 y1 daca P 6= Q
x2 x1
= 2
3x1 +a daca P = Q
2y1
P =(x1 ,y1 )
Q=(x2 ,y2 ) x
x
P =(x1 ,y1 )
Daca P si Q coincid, atunci tangenta n P va taia din nou curba eliptica E. R este
simetricul acestui nou punct fata de axa xx0 (figura (b)).
a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
a2 0 1 4 9 16 6 17 11 7 5 5 7 11 17 6 16 9 4 1
x x3 + x + 5 y x x3 + x + 5 y x x3 + x + 5 y
0 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
10.1. ARITMETICA CURBELOR ELIPTICE 181
Curba eliptica E admite deci 15 puncte; cum ordinul grupului nu este numar prim,
grupul nu este ciclic. Vom alege un element primitiv drept generator. Fie acesta =
(0, 9). Calculam puterile lui (de fapt multiplii, grupul fiind aditiv). Pentru 2 se
calculeaza ntai (modulo 19):
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).
O informatie utila referitoare la structura de grup a lui E(Zp ) este data de teorema
urmatoare:
Teorema 10.2. (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
dK (y1 , y2 ) = y2 7y1
Sa presupunem ca Alice vrea sa cripteze mesajul x = (3, 4) (care este un punct din
E); daca ea alege aleator valoarea k = 8, va calcula
y1 = 8 (0, 9) = (12, 4), si
y2 = (3, 4) + 8 (12, 15) = (3, 4) + (4, 15) = 3 + 8 7 = 3 + 11 = 14 = (0, 10)
(coeficientii se calculeaza modulo 15).
Deci y = ((12, 4), (0, 10)). Dupa receptie, Bob decripteaza mesajul astfel:
x = (0, 10) 7 (12, 4) = 14 7 8 = 3.
Fie E o curba eliptica peste Zp (p > 3 prim) care contine un subgrup ciclic H n
care problema logaritmului discret este dificila.
Alegem P= Zp Zp , C= E Zp Zp si
K= {(E, , a, ) | E, a Zp , = a }.
Valorile , sunt publice, iar a este secret.
Pentru K = (E, , a, ), k Zcard(H) ales aleator (secret) si x = (x1 , x2 ) P,
definim
eK (x, k) = (y0 , y1 , y2 ),
unde y0 = k , (c1 , c2 ) = k , yi = ci xi (mod p), i = 1, 2.
Pentru un text criptat y = (y0 , y1 , y2 ) se defineste
dK (y) = (y1 c1 1
1 (mod p), y2 c2 (mod p)),
unde a y0 = (c1 , c2 ).
deci c1 = 1, c2 = 8.
184 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE
y1 = c1 x1 = 1 5 = 5 si y2 = c2 x2 = 8 11 = 12.
Alice trimite deci lui Bob mesajul criptat y = (y0 , y1 , y2 ) = ((4, 4), 5, 12).
Dupa receptie, Bob calculeaza (c1 , c2 ) = a y0 = 7 (4, 4) = 7 4 = 13 = (1, 8),
apoi
x = (y1 c1 1 1 1
1 (mod 19), y2 c2 (mod 19)) = (5 1 , 12 8 ) = (5, 12 12) = (5, 11).
Teorema chineza a resturilor asigura existenta unei solutii unice k = x [0, n 1].
Sa aratam ca determinarea fiecarui ki se poate reduce la aflarea exponentului ei ntr-un
subgrup ciclic [P ] de ordin pi ; pentru simplificare, vom nota pi cu p.
i 1
eX
Sa reprezentam ki n baza p; vom avea ki = zj pj , unde zj [0, p 1].
j=0
Pentru determinarea lui z0 :
Consideram reprezentarea
k = k0 + k1 b pc
unde k0 , k1 [0, b pc).
1. Se calculeaza lista A = {(Pi , i) | Pi = iP, 0 i < b pc} (faza Baby -
Step).
2. Fie R = b pcP . Se calculeaza lista B = {(Qj , j) | Qj = Q jR, 0 j <
b pc} (faza Giant - Step).
Cele doua liste sunt ordonate crescator dupa prima componenta.
Justificare: Avem iP = Q jb pcP , deci (i + jb pc)P = Q.
Dupa cum se stie, complexitatea spatiu si complexitatea timp a unui astfel de atac
sunt ambele egale cu O(b pc). Shoup ([?]) arata ca atacul BSGS este cea mai rapida
metoda pentru rezolvarea problemei logaritmului discret ntr-un grup cutie neagra3 .
c1 P + d1 Q = c2 P + d2 Q.
q
Neajunsul acestui atac consta n necesitatea de stocare a p/2 triplete.
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 similara celei
din sectiunea 9.2.3 este de a defini o functie recursiva f : [P ] [P ] astfel ncat, fiind
dat X [P ] si c, d Zp cu X = cP + dQ, sunt usor de calculat X 0 = f (X) si c0 , d0 Zp
cu X 0 = c0 P + d0 Q.
In plus, f ar trebui sa aiba caracteristicile unei functii aleatoare.
Algoritmul Pollard Rho este:
Intrare: P E(Zq ), ord(P ) = p numar prim, si Q [P ].
Iesire: k = logP Q.
1. Selecteaza numarul L al ramificatiilor (n 9.2.3 s-a definit apriori L = 3).
2. Selecteaza o functie de partitie H : [P ] {1, 2, . . . , L} cu proprietatea
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 = aj P + bj Q.
4. Selecteaza (aleator) c0 , d0 Zp si calculeaza X 0 = c0 P + d0 Q.
5. X X 0 , c c0 , d d0 .
6. repeat
6.1. Calculeaza j = H(X 0 ).
X 0 X 0 + Rj , c0 c0 + aj (mod p), d0 d0 + bj (mod p).
6.2. for i 1 to 2 do
6.2.1. Calculeaza j = H(X).
X X+Rj , c c+aj (mod p), d d+bj (mod p).
until X 0 = X.
7. if d0 = d then return(esec)
else return k = (c0 c)(d d0 )1 (mod p).
8. Stop
Dupa cum se observa, algoritmul Pollard Rho este un algoritm probabilist de tip Las
Vegas. Probabilitatea de esec este neglijabila.
Prima problema care apare este alegerea unui punct (initial) X pe curba (8). Aceasta
alegere nu este simpla, deoarece trebuie sa rezolvam o ecuatie algebrica modulo un numar
n a carui factorizare nu se cunoaste. Pentru a evita aceasta dificultate, n loc de a alege
a, b si apoi X, vom genera ntai a, X si ulterior b.
Sa alegem a = 13 si X = (x, y) = (23482, 9274). Vom avea imediat
Conform metodei p1, 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. Elementele neinversabile din Zn conduc, prin calcularea unui cel mai mare
divizor comun, la un factor al lui n (deci la factorizare).
Determinarea lui X1 este usoara: X1 = X = (23482, 9274). Urmeaza:
X2 = 2X1 = (18935, 21838),
X3 = 3X2 = 2X2 + X2 = (15187, 29168),
X4 = 4X3 = 2(2X3 ) = (10532, 5412)
si ajungem 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
= (mod 44023)
27556 10532
care nu se poate efectua, deoarece 27556 10532 = 17024 nu este inversabil modulo n.
Atunci cand ncercam sa calculam inversul folosind algoritmul lui Euclid extins, ajungem
la cmmdc(17024, 44023) = 133, care este un factor al lui n = 44023.
10.5 Exercitii
10.1. Sa se verifice propietatile de grup ale operatiei aditive definite pe E(L).
10.2. Fie E curba eliptica y 2 = x3 + x + 28 peste Z71 .
1. Determinati numarul de puncte din E(Z71 );
3. Care este ordinul maxim al unui element din E(Z71 ) ? Gasiti un astfel de element.
10.3. Fie E curba eliptica y 2 = x3 + x + 13 definita pe Z31 . Se poate arata ca E(Z31 ) are
34 puncte si ca (9, 10) este de ordinul 34 n E. Sistemul de criptare Mezenes - Vanstome
definit pe E admite ca spatiu al textelor clare Z34 Z34 . Fie a = 25 exponentul secret al
lui Bob.
190 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE
1. Calculati = a ;
((4, 9), 28, 7)((19, 28), 9, 13)((5, 22), 20, 17)((25, 16), 12, 27)
3. Daca presupunem ca fiecare text clar reprezinta doua caractere alfabetice, convertiti
acest text clar n engleza (s-a folosit corespondenta A 1, . . . , Z 26).
10.6. Fie E o curba eliptica definita peste Zp unde p > 3 este un numar prim. Sa
presupunem ca n = card(E) este prim si fie P E, P 6= O.
(a) Aratati ca logP (P ) = n 1.
(b) Dati un algoritm de calcul pentru n de complexitate O(p1/4 ) folosind teorema lui
Hasse si algoritmul BSGS.
10.7. Fie curba eliptica y 2 = x3 + 9x + 17. Un generator al lui E(Z23 ) este P = (16, 5).
Sa se calculeze logaritmul punctului Q = (4, 5).
10.8. O reprezentare binara (an1 , an2 , . . . , a0 ) a numarului ntreg a este n forma ne-
adiacenta (forma N AF ) daca nu exista doua valori consecutive nenule.
(a) Dati un algoritm de reprezentare a numerelor ntregi n forma N AF . Aplicati
acest algoritm pentru numerele 87, 112, 2047.
(b) Folosind reprezentarea N AF a lui 87, calculati 87P , unde P = (2, 6) este un punct
pe curba eliptica y 2 = x3 + x + 26 definita peste Z27 .
Capitolul 11
x=AC
191
192 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
Exemplul 11.1. Fie n = 6 si vectorul rucsac A = (3, 41, 5, 1, 21, 10). Atunci textul clar
C1 = (1, 1, 0, 0, 1, 0) este criptat n x1 = 65, iar C2 = (1, 0, 1, 1, 0, 1) n x2 = 19. Pentru
vectorul A astfel definit, multimea textelor criptate este inclusa n intervalul [0, 81].
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 11.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).
Sunt anumiti vectori A pentru care toate aparitiile (A, x) sunt usor de rezolvat. Am
vazut ca vectorii cu crestere mare au aceasta proprietate.
bi t ai (mod m) (1 i n)
spunem ca B rezulta din A prin nmultire modulara n raport cu perechea (m, t).
Dupa cum stim, conditia cmmdc(t, m) = 1 asigura existenta unui element u (1, m)
(obtinut prin algoritmul lui Euclid extins), astfel ca t u 1 (mod m).
Deci va avea loc si proprietatea reciproca: vectorul rucsac A rezulta din B prin
nmultire modulara n raport cu (m, u)1 .
n
X
Daca relatia m > max(A) este nlocuita cu conditia m > ai , spunem ca B rezulta
i=1
din A prin nmultire modulara tare n raport cu (m, t). In acest caz nu va mai rezulta
n
X
valabilitatea proprietatii inverse, deoarece inegalitatea m > bi nu mai este adevarata
i=1
totdeauna. Se poate spune nsa, evident, ca A rezulta din B prin nmultire modulara n
raport cu (m, u).
1
Evident, m > max(B), pentru ca bi < m pentru orice i = 1, . . . , n.
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 193
1. Problema rucsacului (A, x) este rezolvabila n timp liniar. Daca solutia exista, ea
este unica.
3. Daca exista o solutie pentru (B, y), atunci ea este egala cu solutia aparitiei (A, x).
x u y = u B DT = u (t A) DT A DT (mod m)
194 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
Citind ultima coloana din tabel, de jos n sus, obtinem 10000 00101, care este codificarea
binara pentru perechea de litere P E.
Sa ncercam sa procedam invers: sa criptam textul clar P E folosind vectorul A. Se
obtine, evident, 34.620. Aplicam nmultirea modulara tare n raport cu (55.207, 25.236) si
avem
34620 25236 = 873670320 = 15825 55207 + 19545
Dar aparitia (B, 19.545) nu are solutie, lucru evident pentru ca, 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.
6bi u
- u
m
I. Coordonata u a celui de-al p-lea punct de minim al curbei f1 (u) este p/b1 (reamintim,
momentan m = 1). Deci conditia ca minimele curbelor f1 (u) si f2 (u) sa fie apropiate
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 197
este
p q
e < < e, 1 p b1 1, 1 q b2 1
b1 b2
unde e este o valoare rezonabil de mica. Inmultind aceasta relatie cu b1 b2 se obtine
< b2 p b1 q < , 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 ,q
. . . , bs . Relativ la o valoare estimativa a lui , Shamir arata ca daca
se alege < b1 /2, atunci probabilitatea ca algoritmul sa esueze este mai mica de
(2/r)s1 .
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.
II. Fie p un punct de minim fixat arbitrar. Toate punctele de discontinuitate ale curbe-
p p+1
lor fi (u) (1 i n) aflate n intervalul , sunt ordonate crescator. Con-
b1 b1
sideram xj , xj+1 doua puncte consecutive de discontinuitate. Atunci n intervalul
[xj , xj+1 ] fiecare curba fi (u) este un segment reprezentat prin fi (u) = bi u cji , unde
cji este o constanta care depinde de valorile lui i, j si p.
Construim sistemul de inecuatii liniare
xj u xj+1
Xn
(bi u cji ) < 1
i=1
(b u cj ) + . . . + (b cji1 ) < bi u cji ,
i1 u (2 i n)
1 1
Solutia acestui sistem este un subinterval (posibil vid) al lui [xj , xj+1 ].
O conditie necesara si suficienta ca doua numere u, m sa formeze o pereche trapa
este sa existe un p si un j astfel ca u/m sa apartina unui astfel de subinterval.
Intr-adevar, n sistemul de sus, a doua inecuatie asigura un m mai mare decat suma
componentelor, iar ultimele n 1 inecuatii reprezinta conditia de super-crestere.
Deci etapa a doua face o cautare exhaustiva printre perechile (p, j), unde p este dat
de prima etapa a algoritmului, iar j este un index al listei ordonate de puncte de
discontinuitate din intervalul dat de p. Cautarea se face pana la aflarea unui interval
nevid (solutie care exista totdeauna). La un astfel de interval corespunde cel putin
o pereche trapa.
Exemplul 11.5. Sa presupunem ca vectorul public este B = (7, 3, 2) (exemplul este
extrem de simplu, dar va permite detalierea algoritmului).
Prima etapa a algoritmului solicita rezolvarea unui sistem de doua inegalitati duble:
< 3p 7q < , < 2p 7r < , (1 p 6, 1 q 2, r = 1).
198 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
q q
Valoarea recomandata pentru este b1 /2 = 7/2 = 1, 87. Aceasta alegere nu da nsa
nici o solutie pentru p (de fapt, pe exemple mici, orice rezultat asimptotic poate fi eronat).
Vom trece la etapa a doua, considerand drept candidati pentru testare toate valorile lui p.
Deci mpartim intervalul (0, 1) n subintervalele
1 1 2 2 1 1 3 3 1 1 4 4 2 2 5 5 6 6
0, , , , , , , , , , , , , , , , , , ,1 .
7 7 7 7 3 3 7 7 2 2 7 7 3 3 7 7 7 7
In fiecare din aceste subintervale, cele trei curbe sunt de forma fi (u) = bi u cji (i =
1, 2, 3, iar indicele j indica intervalul). Toate intervalele sunt deschise, pentru ca nici un
punct de discontinuitate nu va corespunde unei perechi trapa.
Pentru fiecare subinterval consideram inecuatiile
(7u i1 ) + (3u i2 ) + (2u i3 ) < 1
7u i1 < 3u i2
(7u i1 ) + (3u i2 ) < 2u i3
(u, m) = (41, 56) care transforma B n vectorul super-crescator A = (7, 11, 26),
(u, m) = (61, 84) care conduce la vectorul super-crescator A = (7, 15, 38),
(u, m) = (223, 308) care conduce la vectorul super-crescator A = (25, 35, 138).
Exemplul 11.6. Sa consideram vectorul rucsac public
B = (43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523)
Este mult prea
dificil
sa scriem lista completa a punctelor de discontinuitate din toate
p p+1
intervalele 43 , 43 ; de exemplu, numai functia f10 (u) (pentru p = 1253) are 35 puncte
de discontinuitate. Totusi, B contine destul de multe slabiciuni criptografice pentru a
permite scurtarea algoritmului de atac.
Inegalitatile din prima etapa pot fi scrise sub forma
|129p 43q| , |215p 43r| , |473p 43s|
Pentru ca 129, 215 si 473 sunt multipli de 43, rezulta ca p = 1 este un candidat posi-
1 2
bil. Nu mai cautam alte valori pentru p si restrangem investigatia la intervalul 43 , 43 .
Considerand si puncte de discontinuitate
ale
altor curbe n acest interval, vom putea res-
1 36
trange subintervalul solutiilor la 43 , 1523 . Cele 10 curbe sunt definite aici sub forma
segmentelor de dreapta de ecuatii
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.
10
X
Inecuatia a doua (care se refera la marimea modulului) este fi (u) < 1 sau
i=1
6011u 139 < 1, care duce la solutia u < 140/6011. Pentru ca 140/6011 < 36/1523,
1 140
gasim un nou interval mai restrans al solutiilor: 43 , 6011 .
Listam inecuatiile care exprima conditia de super-crestere, mpreuna cu solutiile lor:
129u 3 > 43u 1 u > 1/43
215u 5 > 172u 4 u > 2/43
473u 11 > 387u 9 u > 1/43
903u 21 > 860u 20 u > 1/43
302u 7 > 1763u 41 u < 34/1461
561u 13 > 2065u 48 u < 35/1504
1165u 27 > 2626u 61 u < 34/1461
697u 16 > 3791u 88 u < 72/3094
1523u 35 > 4488u 104 u < 69/2965
Cea mai mica margine superioara
dintre toate aceste solutii este 72/3094 = 36/1547.
1 36
In final se obtine intervalul 43 , 1547 . Alegand numarul 37/1590 din acest interval se
obtine vectorul super-crescator A din Exemplul 7.4., Capitolul 7. Pentru numarul 72/3095
se obtine vectorul super-crescator A = (1, 3, 5, 11, 21, 79, 157, 315, 664, 1331).
200 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
GF (32 ) = {0, 1, 2, , + 1, + 2, 2, 2 + 1, 2 + 2}
x 1 2 + 1 + 2 2 2 + 1 2 + 2
log x 8 4 1 2 7 5 3 6
Tot un generator al lui GF (32 ) \ {0} este si 2 + 1. Tabela de logaritmi n aceasta baza
este
x 1 2 + 1 + 2 2 2 + 1 2 + 2
log2+1 x 8 4 3 6 5 7 1 2
Lema 11.2. Fie p un numar prim si h un numar ntreg, (h 2). Atunci exista un vector
rucsac A = (a1 , a2 , . . . , ap ) care satisface conditiile
1. 1 ai ph 1, (1 i p),
p
X p
X
atunci ai xi 6= ai y i .
i=1 i=1
ai = logg ( + i 1), (1 i p)
Conditia (1) este evident satisfacuta. Pentru a arata si (2), sa presupunem prin absurd
p
X p
X
ca exista numerele xi , yi (1 i p) care verifica ipoteza, dar ai x i = ai yi . Deci
i=1 i=1
Pp Pp
ai xi ai yi
g i=1 =g i=1
sau
( + 0)x1 . . . ( + p 1)xp = ( + 0)y1 . . . ( + p 1)yp .
Tinand cont si de ipoteza, aceasta expresie este un polinom n de grad cel mult h 1,
ceea ce contrazice faptul ca este algebric de gradul h.
Demonstratia ramane valabila si pentru p = q n , q numar prim. De asemenea, se poate
nlocui concluzia Lemei ?? cu un rezultat mai tare:
p p
(mod ph 1)
X X
ai xi 6 ai y i
i=1 i=1
Lema 11.3. Fie n 3 si h < n. Atunci exista o aplicatie injectiva a multimii secventelor
binare de lungime blog2 Cnh c n multimea secventelor binare de n biti n care apar h de 1.
Demonstratie. Sa consideram secventele binare de lungime blog2 Cnh c ca reprezentari bina-
re de numere a.
- Ordonam crescator secventele binare de lungime n avand h de 1.
- Stabilim o corespundenta ntre secventa binara asociata numarului a si al (a + 1) -
lea bloc binar astfel ordonat.
Aplicatia definita de aceasta corespondenta este injectiva; n plus, deoarece Cnh < 2n ,
nu sunt epuizate toate secventele binare.
Exemplul 11.9. Fie n = 5 si h = 2. Atunci blog2 C52 c = 3; deci putem codifica blocuri
de 3 biti. Corespondenta se realizeaza dupa tabelul:
0 0 0 0 0 0 1 1
0 0 1 0 0 1 0 1
0 1 0 0 0 1 1 0
0 1 1 0 1 0 0 1
1 0 0 0 1 0 1 0
1 0 1 0 1 1 0 0
1 1 0 1 0 0 0 1
1 1 1 1 0 0 1 0
Secventele 10100 si 11000 raman neutilizate.
Sa descriem acum sistemul de criptare:
Daca x este mesajul criptat, n prima faza se determina y = xhd (mod ph 1).
Definitia 11.2. Fie k, n N (k n). Un (n, k) - cod liniar binar este un subspatiu liniar
C Z2n de dimensiune k.
O matrice generatoare a lui C este o matrice binara k n ale carei linii formeaza o
baza a lui C.
Pentru a Z2n se defineste ponderea w(a) = numarul de elemente nenule din a.
Pentru a, b Z2n a = (a1 , . . . , an ), b = (b1 , . . . , bn ), se defineste distanta Hamming
prin 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}
Rolul unui cod corector de erori este de a corija modificari aleatoare care apar n
transmiterea unui set de date (binare) printr-un canal. In linii mari, acesta functioneaza
astfel: daca a este un mesaj de informatie de k biti, Alice l codifica ntr-un cuvant de n
biti b = aG, unde G este matricea generatoare a codului.
Bob primeste un mesaj r Z2n (eventual r = b) si cauta un cuvant b1 C cu d(r, b1 )
minim posibil. Va decodifica r n b1 dupa care va calcula un mesaj de informatie a1 astfel
ca b1 = a1 G. Cazul ideal este acela cand b1 = b, a1 = a (adica erorile au fost acoperite
corect). Se cunoaste ca, daca numarul de erori care apar nu depaseste (d 1)/2, acest
procedeu corecteaza efectiv erorile.
Daca Bob cauta cuvantul - cod cel mai apropiat comparand r pe rand cu fiecare element
din C, cum sunt 2k astfel de cuvinte, algoritmul va fi exponential, deci nefunctional.
Majoritatea algoritmilor de decodificare se bazeaza pe notiunea de sindrom, definit
astfel:
Matricea de control a unui (n, k, d) - cod liniar binar de matrice generatoare G este o
matrice H de dimensiune (n k) n ale carei linii formeaza o baza a unui spatiu liniar
ortogonal. Evident, G H T = 0.
Pentru un cuvant r Z2n , se numeste sindrom secventa de n k biti definita H rT .
eK (a, e) = a G0 + e
De remarcat ca sistemul McElliece este primul sistem de criptare cu cheie publica care
a folosit alegerea unei valori aleatoare n procesul de criptare, idee reluata de ulterior de
sistemul El Gamal.
206 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
Sa presupunem ca Alice vrea sa cripteze textul clar a = (0, 1) folosind vectorul - eroare
e = (0, 0, 1, 0, 0, 1, 0, 0) (ales aleator) de pondere 2. Textul criptat este
b = a G0 + e = (1, 1, 1, 1, 0, 0, 1, 0).
2
O analiza a securitatii recomanda parametrii n = 1024, t = 38, k 644.
11.3. EXERCITII 207
Algoritmul McElliece s-a dovedit sigur. Acest lucru rezulta din analiza celor doua
tipuri de atac posibile:
1. Din informatia publica, Oscar ncearca sa afle matricea G sau o matrice G1 a unui
cod Goppa echivalent (avand aceeasi parametri). Nu se cunoaste nici un algoritm
eficient pentru un astfel de demers.
2. Oscar ncearca sa afle mesajul clar a direct din textul criptat b. El ia aleator k
coloane din matricea publica G0 . Notand G0k , bk , ek restrictiile lui G0 , b respectiv e
la aceste k coloane, vom avea a G0k = bk + ek . Daca bk = 0 si G0k este nesingulara,
atunci a poate fi aflat rezolvand sistemul liniar a G0k = bk . Probabilitatea ca cei
k
k biti selectati sa nu faca parte din eroare (deci ek = 0) este Cnt /Cnk , neglijabila
pentru valorile alese ale parametrior n, k, t.
Interesant, dar aceasta securitate este mult diminuata daca se foloseste alta clasa de coduri
liniare n locul codurilor Goppa.
Totusi, n ciuda securitatii sale si a vitezei relativ mari de criptare/decriptare sistemul
McElliece 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.
11.3 Exercitii
11.1. Folosind vectorul rucsac public B = (228, 325, 346, 485, 556, 525) criptati textul clar
CASA DE P IAT RA.
2. Decriptati mesajul (113, 689, 379, 350, 346, 697, 355, 355).
11.3. Folosind vectorul rucsac public B = (102, 238, 3400, 284, 1044, 2122, 425) criptati
textul clar F RU N ZA DE ST EJAR.
208 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA
2. Decriptati mesajul (1753, 2122, 5624, 1566, 1809, 3450, 2360, 1049, 0).
11.5. Plecand de la criptanaliza vectorului rucsac din din Exemplul ??, sa se construiasca
vectorul super-crescator corespunzator valorii 720/30949.
11.7. Folosind parametrii din Exemplul ?? criptati mesajele x = (1, 1) si y = (1, 0).
Capitolul 12
Definitia 12.1. Un generator de numere aleatoare, sau generator real aleator (GA)
este un dispozitiv sau un algoritm care produce o secventa de numere independente si
nepredictibile (care nu ofera informatii asupra valorilor ulterioare).
209
210 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Sa produca numere independente unul de altul (sau cu o corelare cat mai vaga).
xn = f (xn1 ), x0 oarecare,
ncercat diverse variante, cum ar fi adunarea transportului la bitul cel mai putin semni-
ficativ (n loc de cel mai semnificativ) operatie care mbunatateste lungimea perioadei,
dar nu si caracterul aleator. Varianta considerata a fost aceea de deplasare ciclica a bitilor
sumei rezultate. In plus, pentru ca toate elementele din S sa ramana interdependente,
trebuie ca cel putin un r sa fie nenul. Din experimente a rezultat ca cele mai bune valori
b b 2b
pentru numarul de pozitii rotite este aproape de pentru tipul A, aproape de si
2 3 3
b b 3b
pentru tipul B si aproape de , , pentru tipul B3.
4 2 4
Lungimea maxima a unei perioade la un generator Ranrot este (2k 1) 2b1 .
Nu se cunoaste nca un algoritm de obtinere de generatori Ranrot de perioada maxi-
mala; cei cunoscuti au fost gasiti prin testari. Cel mai mare generator analizat are 232
stari.
Exemplul 12.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.
Importanta restrictiilor impuse diverselor tipuri de generatori Ranrot este listata n
Tabelul 2.
Regula A B B3 W
cmmdc(j, k) = cmmdc(j, i) = cmmdc(k, i) = 1 *** *** *** ***
1<i<j <k1 ** * * *
k j impar - - - ***
un r 6= 0 *** *** *** **
toti r 6= 0 *** ** * -
r distincti - ** ** **
r>1 *** ** * *
cmmdc(r, b) = 1 * * * *
cmmdc(b, k) = 1 * * * *
Tabelul 2
S-a notat cu: o regula fara importanta, - importanta minora, - nerespectarea ei
duce la aparitia unor cicluri de perioada mica, - regula importanta.
Si acesti generatori 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.
Exemplul 12.2. Sa consideram o varianta de generator Ranrot:
xn = ((xn1 r1 ) + (xn2 r2 ) + . . . + (xnk rk ) + h) (mod 2b )
unde h este un numar ntreg arbitrar din [0, 2b ]. Pentru fiecare r sunt bk valori posibile.
Astfel, pentru k = 17, b = 32 numarul de variante distincte este 1, 6 1035
Exista un sistem de criptare (Power Crypto) bazat pe generatorul Ranrot de tip B3.
214 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE
f (x0 ) = z1 z2 . . . zm .
- bn bn1 ... b2 b1 -
6
? ? ? ?
Functie de ntoarcere
Functia de ntoarcere este o adunare modulo 2 (XOR) a anumitor biti din registru; uneori
ea este numita configuratie Fibonacci (vezi generatoarele Ranrot).
Exemplul 12.4. Sa consideram un 4 LF SR dat de schema:
- s - - - s -
6
?
+
?
Functia de ntoarcere este formata dintr-un singur XOR ntre primul si ultimul bit. Sa
presupunem ca initial cei patru biti din registru sunt 1001. La fiecare tact se va obtine o
noua configuratie, anume:
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. Acest circuit asigura un generator de
perioada 16.
Un n LF SR poate avea maxim 2n 1 stari distincte (starea 00 . . . 0 este exclusa
deoarece ea formeaza un ciclu de lungime 1, neinteresant pentru generarea de numere
pseudo-aleatoare).
Fie g(X) Z2 [X], g(X) = 1 + g1 X + . . . + gn X n polinomul asociat unui n LF SR,
unde gi = 1 daca si numai daca bitul i participa la o adunare modulo 2. Astfel, n
Exemplul ?? polinomul este g(X) = 1 + X + X 4 .
1
Termenul din engleza este Shift Register.
216 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Sa consideram un polinom g(X) Z2 [X], grad(g(X)) = n si fie m cel mai mic numar
astfel ca g(X)|X m + 1. Atunci secventa binara generata de un n LF SR asociat lui g(X)
are perioada m (este o m - secventa).
Daca g(X) este un polinom ireductibil peste Z2 , atunci m = 2n 1, iar aceasta este
valoarea maxima posibila (egaleaza numarul de stari distincte posibile din n LF SR).
Toate detaliile teoretice care justifica aceste afirmatii se gasesc n [?].
Lema 12.1. Un polinom g(X) Z2 [X] este ireductibil daca si numai daca
1. Are un numar impar de termeni;
LF SR2 - i0
EM U X -
LF SR3 - i1
6
LF SR1 -
b = (a1 a2 ) (a1 a3 )
Perioada generatorului este cel mai mic multiplu comun al perioadelor celor trei
LF SR-uri. Deci, daca cele trei polinoame care definesc circuitele au grade prime ntre
ele, perioada generatorului Geffe este produsul celor trei perioade.
Din punct de vedere criptografic generatorul nu rezista unui atac prin corelare. Iesirea
din generator coincide cu iesirea din LF SR2 cam 75% din timp. Deci, daca definitiile
polinomiale ale circuitelor sunt cunoscute se poate ghici valoarea initiala din LF SR2 si
genera secventa sa de iesire. Apoi se numara de cate ori iesirea din LF SR2 coincide cu
iesirea din generator. Statistic, daca nu s-a ghicit corect, cele doua secvente coincid cam
50%; daca s-a ghicit corect, ele coincid cam 75%.
Similar, iesirea generatorului coincide cu cea din LF SR3 cam 75% din timp.
Cu aceste corelari secventa poate fi ghicita complet. Intr-un articol din 1991, Zeng s.a.
([?]) arata ca daca polinoamele ireductibile au cate trei termeni iar cel mai mare LF SR
este de lungime n, atunci o secventa de 37n biti la iesirea din generator este suficienta
pentru determinarea starilor interne din cele trei circuite LF SR.
Generatorul Geffe poate fi extins la 2k + 1 LF SR legati printr-un M U Xk . Acest lucru
nu va mari nsa securitatea generatorului.
LF SR2 a2 (t)
-
LF SR1 a1 (t)
-
-6 ? -
6
-
-
- b(t)
6
s
6
-
LF SR3 a3 (t)
-
CK s -6
Acest generator controleaza ceasurile celor trei circuite. Astfel, ceasul de intrare n
LF SR2 este controlat de iesirea din LF SR1 ; n acest fel, LF SR2 si schimba starea
la momentul t numai daca iesirea din LF SR1 a fost 1 la momentul t 1.
Nu se cunosc studii asupra complexitatii acestui generator. El totusi nu a rezistat
atacurilor corelate ([?]).
LF SR2 -
LF SR1 s
-
-
- ? -6 ? -
6 -
-
e
6
?XX
- - 6
s -
LF SR3
-
-
CK s - ? -6
Cand iesirea din LF SR1 este 1 ea activeaza LF SR2 ; n caz contrar este activat
LF SR3 . Iesirea din generator este un XOR dintre cele doua iesiri.
Acest generator are o perioada mare. Exista un atac prin corelare asupra sa (mai
precis asupra LF SR1 ), dar acesta nu i-a slabit substantial securitatea.
Generator Gollmann: Este o legare seriala n cascada a mai multor circuite LF SR,
ceasul fiecarui LF SR fiind controlat de circuitul anterior.
1
- -
s
6 6
-...
?
- -
? -
?
LF SR1 s LF SR2 LF SR2
- -
- - - - - -
-
6
s s s
6
...
? -6 ? -6
CK 6 -
Daca la momentul t 1 iesirea din LF SRi este 1, atunci la momentul t este activat
LF SRi+1 . Iesirea din generator este iesirea din ultimul LF SR. Daca toate circuitele
liniare au aceiasi lungime n, complexitatea unui generator Gollmann cu k LF SR-uri
este n (2n 1)k1 .
1. n 4;
2. while n M AX do
Desi generatorul 1/P are o serie de proprietati care l situeaza printre generatorii
performanti din punct de vedere al distributiei datelor, criptografic este slab.
220 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Astfel, notand cu s numarul de cifre din reprezentarea binara a lui P , se pot demonstra
urmatoarele rezultate ([?]):
- 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 .
Determina numarul de aparitii ale unor secvente tinta fixate, pentru a detecta gene-
ratorii care produc prea multe aparitii ale unor sabloane neperiodice.
12.7 Exercitii
12.1. Se da generatorul liniar congruential
Pentru ce valori ale perechii (a, b) Z15 Z15 acest generator are perioada maxima ?
Dupa cum se stie, algoritmul lui Euclid constituie o modalitate eficace de determinare a
celui mai mare divizor comun a doua numere ntregi pozitive. El poate fi extins pentru a
determina si inversele elementelor dintr-un corp finit Zn .
Sa reamintim ntai algoritmul lui Euclid (forma clasica):
Fie r0 , r1 N .
Se efectueaza secventa de mpartiri succesive:
r0 = q1 r1 + r2 0 < r2 < r1
r1 = q2 r2 + r3 0 < r3 < r2
..
. (1)
rm2 = qm1 rm1 + rm 0 < rm < rm1
rm1 = qm rm .
Deoarece cmmdc(r0 , r1 ) = cmmdc(r1 , r2 ) = . . . = cmmdc(rm1 , rm ) = rm , rezulta ca
cel mai mare divizor comun dintre r0 si r1 este rm .
Sa definim acum sirul t0 , t1 , . . . , tm astfel:
t0 = 0, t1 = 1
tj = tj2 qj1 tj1 (mod r0 ), j 2 (2)
223
224 ANEXA 1. ALGORITMUL LUI EUCLID EXTINS
Exemplul 1.1. Sa calculam 281 mod 75, folosind algoritmului lui Euclid extins. Vom
avea pe rand:
n 0 b0 q r t0 t temp
75 28 2 19 0 1 73
28 19 1 9 1 73 3
19 9 2 1 73 3 67
9 1 9 0 3 67
Demonstratie. Pentru fiecare i, cmmdc(pi , n/pi ) = 1; deci exista numerele yi astfel ncat
n
yi 1 (mod pi ).
pi
n
De asemenea, pentru j 6= i, deoarece pj |cmmdc(n/pi ), avem yi 0 (mod pj ).
pi
Alegem
r
X n
x= yi ai (mod n).
i=1 pi
225
226 ANEXA 2. TEOREMA CHINEZA A RESTURILOR
2.1 Exercitii
2.1. Folositi algoritmul lui Euclid extins pentru a calcula inversele
[1] Anderson R. s.a. - Serpent: A proposal for the Advanced Encryption Standard,
http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf
[2] Atanasiu A. - Teoria codurilor corectoare de erori, Editura Univ. Bucuresti, 2001;
[4] Blum L., Blum M., Shub M. - Comparision of two pseudo-random number generators,
Advanced in Cryptology, CRYPTO 82
[5] D. Bayer, S. Haber, W. Stornetta; Improving the efficiency and reliability of digital
time-stamping. Sequences II, Methods in Communication, Security and Computer
Science, Springer Verlag (1993), 329-334.
[6] Biham E., Shamir A. - Differential Cryptanalysis of DES - like Cryptosystems, Jour-
nal of Cryptology, vol. 4, 1 (1991), pp. 3-72.
[7] Biham E., Shamir A. - Differential Cryptanalysis of the Data Encryption Standard,
Springer-Verlag, 1993.
[8] Biham E., Shamir A. - Differential Cryptanalysis of the Full 16-Round DES, Pro-
ceedings of Crypto92, LNCS 740, Springer-Verlag.
[10] Biryukov A., Shamir A., Wagner D. - Real Time Cryptanalysis of A5/1 on a PC,
Fast Software Encryption - FSE 2000, pp 118.
[11] Bruen A., Forcinito M - Cryptography, Information Theory, and Error - Correction,
Wiley Interscience 2005.
227
228 BIBLIOGRAFIE
[16] Damgard I.B. - A design principle for hash functions, Lecture Notes in Computer
Science, 435 (1990), 516-427.
[17] Diffie D.W., Hellman M.E. - New Directions in Cryptography, IEEE Transactions on
Information Theory, IT-22, 6 (1976), pp. 644-654
[18] Diffie D.W., Hellman M.E. - Multiuser cryptographic techniques, AFIPS Conference
Proceedings, 45(1976), 109 112
[19] L Ecuyer P. - Random Numbers for Simulation, Comm ACM 33, 10(1990), 742-749,
774.
[20] Enge A. - Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999
[21] El Gamal T. - A public key cryptosystem and a signature scheme based on discrete
algorithms, IEEE Transactions on Information Theory, 31 (1985), 469-472
[23] Gibson J. - Discrete logarithm hash function that is collision free and one way. IEEE
Proceedings-E, 138 (1991), 407-410.
[25] van Heyst E., Petersen T.P. - How to make efficient fail-stop signatures, Lecture
Notes in Computer Science, 658(1993), 366 377
[26] Junod P. - On the complexity of Matsuis attack, in SAC 01: Revised Papers from the
8th Annual International Workshop on Selected Areas in Cryptography, pp 199211,
London, UK, 2001. Springer-Verlag.
[27] Kahn D. - The Codebreakers, MacMillan Publishing Co, New York, 1967
[28] Kelly T. - The myth of the skytale, Cryptologia, Iulie 1998, pp. 244 - 260.
[31] Lenstra, H.W. - Factoring Integers with Eiipltic Curves, Annals of Mathematics, vol.
126, pp. 649-673, 1987.
[32] Matsui M, Yamagishi A. - A new method for known plaintext attack of FEAL cipher.
Advances in Cryptology - EUROCRYPT 1992.
[33] Matsui M. - Linear Cryptanalysis Method for DES Cipher, Advances in Cryptology
- EUROCRYPT 93, LNCS 765, Springer-Verlag, pp. 386-397, 1994.
[34] Matsui M. - The first experimental cryptanalysis of the Data Encryption Standard, in
Y.G. Desmedt, editor, Advances in Cryptology - Crypto 4, LNCS 839, SpringerVerlag
(1994), 1- 11.
[35] Matsui M. - New Structure of Block Ciphers with Provable Security against Differen-
tial and Linear Cryptalaysis, Fast Software Encryption, LNCS 1039, Springer-Verlag,
1996, pp. 205-218.
[36] Merkle R. C., Hellman M. - Hiding Information and Signatures in Trapdoor Knap-
sacks, IEEE Trans. IT 24(5), Sept 1978, pp. 525530.
[37] Merkle R.C. - A fast software one-way functions and DES, Lecture Notes in Com-
puter Science, 435 (1990), 428-446
[38] Menezes A., Oorschot P., Vanstome S. - Handbook of Applied Cryptography, CRC
Press 1996.
[39] Preneel B., Govaerts R., Vandewalle J. - Hash functions based on block ciphers: a
syntetic approach; Lecture Notes in Computer Science, 773 (1994), 368-378
[41] Rivest R.L. - The MD4 message digest algorithm; Lecture Notes in Computer Sci-
ence, 537, (1991), 303-311
[42] Rivest R., Shamir A., Adleman A. - A Method for Obtaining Digital Signatures and
Public-Key Cryptosystems, Communications of the ACM, Vol. 21 (2), 1978, pages
120126.
[44] Salmon, D. - Data Privacy and Security, Springer Professional Computing, 2003
[48] Shamir, A. - A polynomial time Algorithm for breaking the basic Merkle - Hellman
cryptosystem,
http://dsns.csie.nctu.edu.tw/research/crypto/HTML/PDF/C82/279.PDF
[49] Shoup, V. - Lower bounds for discrete logarithm and related problems, Advanced in
Cryptology, EUROCRYPT 97, Springer - Verlag LNCS 1233, pp. 313-328, 1997.
[50] Selmer E.S. - Linear Recurrence over Finite Field, Univ. of Bergen, Norway, 1966;
[51] Sibley E.H. - Random Number Generators: Good Ones are Hard to Find, Comm
ACM 31, 10(1988), 1192-1201.
[52] Smid M.E., Branstad, D.K. - Response to comments on the N IST proposed digital
signature standard, Lecture Notes in Computer Science, 740(1993), 76 88
[53] Stinton D., Cryptography, Theory and Practice, Chapman& Hall/CRC, 2002
[54] Wiener M.J. - Cryptanalysis of short RSA secret exponents, IEEE Trans on Informa-
tion Theory, 36 (1990), 553-558
[56] Zeng K.G., Yang C.H., Wei D.Y., Rao T.R.N.- Pseudorandom Bit Generators in
Stream Cipher Cryptography, IEEE Computer, 24 (1991), 8.17.
[57] Secure hash Standard; National Bureau of Standards, FIPS Publications 180, 1993
[62] http://www.answers.com/topic/vigen-re-cipher
Cuprins
Prefata 3
Bibliografie 227
Cuprins 232