Sunteți pe pagina 1din 7

Introducere

În timp ce criptologia modernă are o istorie lungă care datează de la 800


d.Hr., criptarea asimetrică este doar o descoperire foarte recentă începând cu
mijlocul anilor 70.
Anterior, fiecare algoritm de criptare simetrică avea problema fundamentală
a distribuției cheilor secrete. Două părți au trebuit să găsească o modalitate de a
partaja o cheie secretă printr-un canal nesigur înainte de a putea schimba cu succes
mesaje private.
Abia în 1977 (un an după ce Whitfield Diffie și Martin Hellman au introdus
algoritmul de schimb cheie Diffie-Hellman), trei oameni de știință, Ron Rivest,
Adi Shamir și Leonard Adleman, au reușit să inventeze primul algoritm de criptare
asimetrică cunoscut public pe nume RSA. Pe atunci GCHQ, o agenție de informații
din Marea Britanie a dezvoltat în mod independent primul algoritm de chei publice
în 1973 și 1974, dar acest lucru a fost păstrat secret până la mijlocul anilor 80.
Astăzi RSA este algoritmul de criptare asimetrică standard de facto și este
utilizat în multe domenii precum TLS / SSL, SSH, semnături digitale și PGP. [1]

1
1. Algoritmul RSA
1.1 Funcționarea
RSA este un algoritm de criptare pe blocuri. Aceasta înseamnă că atât textul clar
cât și cel cifrat sunt numere între 0 și n-1, cu un n ales. Un mesaj de dimensiune
mai mare decât  logn este împărțit în segmente de lungime corespunzătoare,
numite blocuri, care sunt cifrate rând pe rând. De asemenea, ca algoritm
criptografic cu chei publice, funcționează pe baza unei perechi de chei legate
matematic între ele: o cheie publică, cunoscută de toată lumea, și una secretă,
cunoscută doar de deținătorul acesteia.
1.2 Generarea cheilor

Perechea de chei se generează după următorii pași:

1. Se generează două numere prime, de preferat mari, p și q;


2. Se calculează n=pq și ϕ ϕ=( p−1 ) ( q−1)
3. Se alege un întreg aleator e, 1 1< e< ϕ astfel încât cmmdc (e, φ) = 1. Perechea
(n, e) este cheia publică.
4. Folosind algoritmul lui Euclid extins, se calculează întregul d, unicul cu
proprietatea că deι de ≡ 1modϕ . (n, d) constituie cheia secretă.
Decizia cu privire la care dintre e și d este cheia publică și care este cea
secretă este, din punct de vedere matematic, arbitrară, oricare dintre cele două
numere poate juca oricare dintre roluri. În practică însă, pentru a mări viteza de
criptare, și întrucât dintre cele două numere e este cel ales arbitrar, e este cheia
publică iar valoarea sa este aleasă un număr mic, de regulă 3, 17 sau 65537 (216+1).
Aceasta conduce la un număr minim de înmulțiri, deci la o performanță sporită,
deoarece toate aceste numere au doar două cifre 1 în reprezentarea lor binară.
1.3 Criptarea și decriptarea

Presupunând că mesajul clar este sub forma unui număr m, mai mic decât n,
atunci mesajul cifrat, notat cu c este

2
c=me (mod n)
unde e este cheia publică a destinatarului mesajului. Pentru a decripta
mesajul, destinatarul își folosește cheia sa secretă d, care are proprietatea foarte
importantă că:
de ≡ 1 modϕ.

Astfel, mesajul clar este recuperat calculând:


m=cd (mod n)
Oricine poate cripta mesaje cu cheia publică a destinatarului, dar numai
acesta din urmă poate decripta, deoarece trebuie să folosească cheia sa secretă.
Algoritmul poate fi folosit și pentru semnătura electronică, folosind cheile
invers. Dacă o entitate criptează un mesaj (sau mai degrabă un hash al acestuia) cu
cheia sa secretă și atașează rezultatul mesajului său, atunci oricine poate verifica,
decriptând cu cheia publică a semnatarului și comparând rezultatul cu mesajul clar
(sau cu hash-ul acestuia), că într-adevăr acea entitate este autorul mesajului.
1.4 Dezavantajele algoritmului RSA
• algoritmi falsi cu cheie publică. Utilizatorul nu ar trebui să-și facă griji dacă
există scurgeri de cheie publică, dar trebuie să ia în considerare pe cineva să-și ia
locul altuia prin falsificarea cheii publice false publicate, deci ar trebui să fie
posibil să publice pe scară largă cheia dreaptă pentru public pentru a preveni
falsificarea
• Complexitatea creării cheilor. Datorită algoritmului RSA este limitată de
eficiența și eficiența generarii primelor este relativ scăzută, deci este dificil de
obținut un secret o singură dată (Internet Data Center, 2011)
• Securitatea trebuie dovedită. Securitatea RSA depinde de dificultatea de a
factoriza un număr mare, dar este echivalent cu factoringul care nu a fost dovedit
teoretic, deoarece nu există o dovadă a RSA fisurată care va avea nevoie de
factorizare. Dacă există un algoritm poate descompune rapid un număr mare, deci
securitatea algoritmului RSA ar fi amenințată. În plus, capacitatea de calcul a
computerului de a îmbunătăți continuu, costul computerului de a reduce,

3
tehnologia paralelă a computerului de a dezvolta, apoi să atace algoritmul RSA va
avea o capacitate de creștere imensă
• Incetinirea vitezei. Algoritmul de criptare și decriptare RSA are nevoie de mult
calcul, iar viteza este lentă, comparativ cu algoritmul criptografic simetric de mii
de ori mai lent. Odată cu dezvoltarea unui număr mare de tehnici de
descompunere, lungimea cheii ar crește pentru a asigura siguranța, deci calculul va
fi mai mare. [3]
Implementarea algoritmului RSA folosind structuri hardware reconfigurabile
Un circuit FPGA (Field Programmable Gate Array) este un circuit integrat
care aparţine unei familii de dispozitive programabile numite PLD –
Programmable Logic Devices. Introduse in 1985 de Xilinx, acestea au cunoscut un
succes deosebit atât la nivel comercial, cat si la nivel academic, prin existenţa a
numeroase studii, cărţi si conferinţe dedicate in totalitate acestor arhitecturi. Cei
mai populari producători de circuite FPGA sunt Xilinx şi Altera. Aceşti doi
producători împart mai mult de 70% din cota de piaţă a circuitelor FPGA. Un
circuit FPGA este alcătuit dintr-un număr mare de celule logice de bază numite
blocuri logice configurabile (CLB- Configurable Logic Blocks). Aceste celule
logice sunt distribuite pe toată suprafaţa cipului. Fiecare celulă este înconjurată de
interconexiuni programabile, ansamblul acestor interconexiuni poartă numele de
matrice de conexiuni programabile. Întreg ansamblul de celule şi interconexiuni se
află într-un inel format de blocurile de intrare / ieşire (IOB – Input/Output Blocks).
Blocurile CLB furnizează elementele funcţionale şi realizează structura logică
proiectată. Blocurile IOB furnizează interfaţa între semnalele interne şi exteriorul
circuitului (legătura realizată fizic prin intermediul pinilor). FPGA-urile sunt
utilizate pentru calcul reconfigurabil atunci când obiectivul principal este obţinerea
unei performanţe ridicate la un cost rezonabil prin implementare hardware a
algoritmilor. Principalul avantaj al FPGA este reconfigurabilitatea lor, putând fi
utilizate pentru diferite scopuri în diferite stadii ale procesului de calcul şi pot fi,
cel puţin parţial, reprogramate la run-time. În afară de criptografie, aplicaţii ale
circuitelor FPGA se regăsesc în domenii precum procesarea de semnale digitale,
4
sisteme în timp real, realizarea de prototipuri rapide pentru circuite ASIC,
procesoare de reţea, grafică pe calculator, robotică, aplicaţii embedded,etc. În
general, FPGAurile tind să fie o alegere excelentă atunci când se doreşte
implementarea unor algoritmi care pot beneficia de paralelismul mare oferit de
arhitectura FPGA. Utilizarea FPGA pentru aplicaţii criptografice este extrem de
atractivă pentru o varietate de motive, dar, în acelaşi timp, există multe aspecte
deschise legate de securitatea generală a circuitelor FPGA. Alegerea platformei de
implementare a unui sistem digital este determinată de mai multe criterii şi depinde
în mare măsură de zona de aplicare. În aplicaţii criptografice există multe criterii
care sunt unice pentru contextul de securitate în care sunt utilizate. În plus faţă de
aspectele legate de algoritm, de viteza sistemului şi de costuri - care sunt prezente
în cele mai multe alte domenii de aplicare – se adaugă cele cripto-specific:
securitatea fizică (de exemplu, împotriva recuperării cheilor şi modificării
algoritmului), flexibilitatea (în ceea ce priveşte parametrii algoritmului, cheile,
chiar algoritmul în sine), consumul de energie (utilizarea absolută şi prevenirea
atacurilor prin analiză de putere) şi alte scurgeri side chanel. Avantajele
implementărilor software includ utilizarea relativ simplă a mediilor de dezvoltare,
posibilitatea de îmbunătăţire rapidă a implementării, portabilitatea, costurile de
dezvoltare reduse, preţurile unitare mici şi flexibilitatea. Pe de altă parte, o
implementare software oferă o viteză moderată, consum mare de putere comparativ
cu hardware-ul personalizat, securitatea fizică limitată, în special în ceea ce
priveşte depozitarea cheilor. Implementările hardware asigură un preţ mai redus pe
unitate, ating viteze mari şi pot avea disipări reduse de energie. În plus,
implementările hardware ale algoritmilor criptografici sunt mai sigure deoarece
acestea nu pot fi la fel de uşor de citit sau modificat de un atacator extern ca
implementările software.

5
Fig. 1 Capsula modulului criptografic
Folosind noţiunile teoretice şi algoritmii descrişi în capitolele anterioare, s-a
realizat implementarea folosind limbajul VHDL (Verilog Hardware Description
Language) a unui modul de criptare şi decriptare a unui mesaj folosind algoritmul
RSA. S-au studiat implementări anterioare (Perovic, 2012, Wang1997, Zutter,
2009) care prezintă arhitecturi ale algoritmului RSA care doresc utilizarea eficientă
a structurilor reconfigurabile (Iana, 2011), utilizarea unui algoritm eficientizat
pentru exponenţiere modulară (Khalil Hani, 2000) sau implementarea unei
arhitecturi seriale a algoritmului RSA(Mazzeo, 2003). Acest modul are ca intrări
exponentul cu lungimea de 1024 de biţi, modulul cu lungimea de 1024 de biţi şi
mesajul cu lungimea de 1024 de biţi. Modulul returnează la ieşire mesajul criptat
sau decriptat (Fig. 1). Operaţia exponenţială modulară: a=be mod n necesară atât în
procesul de criptare cât şi în procesul de decriptare al algoritmului RSA este
calculată folosind algoritmul de exponenţiere prin ridicări la pătrat şi înmulţiri
modulare (Algoritmul 1 prezentat în capitolul anterior).

6
Fig. 2 Schema bloc a implementării algoritmului RSA
Pentru calculul operaţiilor de înmulţire modulară s-a implementat algoritmul
Montgomery prezentat în capitolul anterior (Algoritmul 4). Au fost implementate
de asemenea circuite multiplicatoare şi sumatoare.

S-ar putea să vă placă și