Extras din proiect
Ce sunt atacurile în mediul de implementare al
algoritmilor criptografici?
Criptografia clasică presupune că într-un scenariu de atac, atacatorul tratează criptosistemul ca
pe un sistem de tip black-box în care importante sunt doar intrările și ieșirile, dar în realitate,
acesta este mult mai puternic. Ca un exemplu, un atacator poate să observe, pe lângă intrările și
ieșirile sistemului, și execuția algoritmilor și să colecteze informații adiționale, precum timpul de
execuție și consumul de energie.
Ideea principală din spatele atacurilor în mediul de implementare al algoritmilor este deducerea
informațiilor secrete din informațiile adiționale obținute. În continuare vor fi prezentate câteva
astfel de atacuri, precum și câteva măsuri posibile de protecție și eficiența acestora.
Tipuri de atacuri
Atacuri bazate pe măsurarea timpilor de execuție ai algoritmilor
Aceste tipuri de atacuri sunt primele atacuri în mediul de implementare al algoritmilor
criptografici documentate. Cu ajutorul acestora, un atacator poate determina anumiți biți ai
datelor secrete în funcție de timpul în care sunt returnate date relativ similare, manipulate de
atacator. În continuare vom prezenta un atac asupra unei rutine simple de verificare a unei
parole.
Atac asupra verificării unei parole
Presupunem că avem un fișier protejat de o parolă de 8 octeți , astfel încât un atacator care
dorește să spargă acea parolă printr-un atac de tip brute-force va trebui să încerce 256 8 = 2 64
combinații. De asemenea, presupunem că avem următorul algoritm pentru verificarea parolei, în
care P’ este reprezentat de parola introdusă de utilizator, iar P de parola corectă, iar algoritmul
returnează true dacă parola introdusă este validă și false în caz contrar:
Input: P’= (P’[0],...,P’[7]) (and P = (P[0],...,P[7]))
Output: ‘true’ or ‘false’
1: for j = 0 to 7 do
2: if (P’[ j] != P[ j]) then return ‘false’
3: end for
4: return ‘true’
Această implementare este nesigură împotriva unui atacator care măsoară timpii necesari
algoritmului pentru a returna true sau false deoarece verificarea unei parole valide durează mai
mult deoarece în cazul unei parole greșite rutina returnează false imediat ce doi octeți sunt
diferiți. Bazându-se pe acest lucru, un atacator poate utiliza următorul atac:
1. Pentru atacatorul încearcă 256 de parole P’ 0 ≤ n ≤ 255 (n) =(n,0,0,0,0,0,0,0) și măsoară
timpii de rulare corespunzători t[n].
2. Calculează timpul maxim de rulare:
3. Odată ce a fost aflat P[0], se reiterează cu P’ (n) = (P[0],n,0,0,0,0,0,0) și așa mai departe
până se descoperă întreaga parolă.
Acest tip de atac este foarte eficient, necesitând cel mult apeluri la rutina de
verificare pentru a descoperi întreaga parolă.
Pentru a preveni acest tip de atac, o posibilă soluție imediată ar fi adăugarea unei întârzieri
aleatoare înainte de a returna valoarea de adevăr, dar acest lucru nu va putea împiedica un astfel
de atac, deoarece tot ce va trebui atacatorul să facă este propunerea setului de 256 de combinații
de la pasul 1 de un număr x de ori și măsurarea mediei timpilor de rulare. Atacul se va desfășura
exact ca înainte, singurul lucru care va crește fiind numărul de încercări de un număr x de ori.
Preview document
Conținut arhivă zip
- Atacuri in mediul de implementare asupra algoritmilor criptografici.pdf