Documente Academic
Documente Profesional
Documente Cultură
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
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ϕ.
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.