Sunteți pe pagina 1din 8

Utilitatea lemei chinezesti a

resturilor
Este utilizata in scopul cresterii operatiilor private in
cadrul procesului de semnare electronica. Dar acest
lucru indica vulnerabilitati si este unul dintre motivele
pentru care in Normele tehnice i metodologice din
13 decembrie 2001 pentru aplicarea Legii nr.
455/2001
privind
semntura
electronic se
specifica, in cadrul art. 39, faptul ca "este interzisa
utilizarea teoremei chinezesti a resturilor."

Semnarea mesajelor
Sa presupunem ca Alice foloseste cheia publica a
lui Bob pentru a-i trimite un mesaj criptat.In mesaj
ea poate afirma ca este Alice, dar Bob nu are cum
sa verifice ca mesajul chiar este de la Alice din
moment ce oricine poate folosi cheia publica a lui
Bob pentru a trimite mesaje criptate.Pentru
verificarea originii mesajului, RSA-ul se poate folosi
si pentru semnarea mesajului.

Sa luam cazul in care Alice doreste sa-i trimita lui


Bob un mesaj semnat.Ea poate folosi cheia sa
privata si trebuie sa urmeze pasii urmatori:
Genereaza o
mesajului M

valoare

hash

(amprenta)

Ridica valoarea hash la puterea d (modulo n)


(d este exponentul de descifrare, iar n = p x
q ) exact ca atunci cand decripteaza un mesaj:
d

s = H ( M ) mod n
Ataseaza rezultatul s la mesaj.
Bob primeste mesajul semnat si foloseste acelasi
algoritm hash dar foloseste cheia publica a lui
Alice.
Ridica semnatura s la puterea e (modulo n) (la
fel ca in cazul criptarii unui mesaj) si compara
valoarea hash rezultata cu valoarea hash a
e

mesajului: H ( M ) =s mod n
Daca valorile sunt la fel atunci el stie ca autorul
mesajului a fost in posesia cheii private detinuta
de Alice si ca mesajul nu este un fals.
In cazurile practice valoarea lui e este un numar relativ
mic, rezultand o valoare mare a lui d.Aceste diferente
intre exponenti face ca timpii de rulare sa fie diferiti
intre operatiile private(descifrare/semnare) si cele
publice(cifrare/verificare semnatura).

Pentru eficientizarea calculelor, mai multe librarii


criptografice (precum OpenSSL, Java sau .NET) folosesc
urmatoarea optimizare pentru decriptare si semnare
bazata pe CRT, insa acest lucru induce vulnerabilitati in
mediul de implementare.
Astfel, daca p>q, urmatoarele valori sunt precalculate si
stocate ca parte a cheii private.

dP = (

e mod n

dQ = (

e mod n

qInv =
Aceste

) mod (p 1),

q1

) mod (q 1),

mod p.
valori

permit

exponentierea m =

c d ( mod pq )

destinatarului

sa

faca

intr-un mod mai eficient.

In faza de calcul se executa:


m1 =

c dP ( mod p ) ,

m2 =

c dQ ( mod q ) ,

h = qInv(m1 m2) (mod p),


m = m2 + hq.
Cheia privata stocata va fi (p,q,dP,dQ,qInv).
Acest mod de lucru este superior ca viteza(de 4 ori
mai rapida) unei exponentieri clasice (prin ridicare
la
patrat)
chiar
daca
se
fac
doua
exponentieri.Motivul este acela ca cele doua
operatii folosesc exponenti si moduli mai mici.

Dezavantaje:
- Trebuie sa stim valorile lui p si q.
- Incalca principiul pe care se bazeaza problema
factorizarii?
- Folosit doar la operatii cu chei private

Exemplu:
Sa se descifreze, utilizand CRT, mesajul cifrat c=8363,
pentru cazul p=137, q=131, n=pq=17947, e=3,
d=11787
In faza de precalcul avem:
dP

1
= ( e mod n ) mod ( p 1 ) = 91,

dQ

1
= ( e mod n ) mod ( q 1 ) = 87,

q Inv

q1 mod p

= 114.

Calculam:
m1 =

c dP mod p

= 102,

m2 =

c dQ mod q

= 120,

h=

q Inv

(m1 m2) mod p = 3,

m = m2 + hq = 513.

Atacuri in mediul de implementare (RSA)


Atacurile in mediul de implementare
presupun o serie de masuratori hardware
asupra modului criptografic.
Este atacata implementarea RSA si nu
algoritmul propriu-zis.

Atacuri prin masurarea timpului de


executie
Prin masurarea timpului necesar
efectuarii unor operatii asupra cheii
private, atacatorul poate determina
factorul RSA (in special asupra
algoritmului RSA ce foloseste pentru
semnatura lema chinezesca a resturilor
CRT), precum si o serie de alte sisteme
criptografice cum ar fi algoritmul de
semnatura digitala DSS.

Exponentierea este o operatie foarte


costisitoare.
Exploatarea diferentelor de timp
reflectate in diferentele in bitii cheii
private.
Atacuri prin inducere de erori
Erorile induse pot dezvalui cheia
secreta.

Prevenirea atacurilor de sincronizare:


Cea mai buna solutie este RSA Blinding.
Pentru a decripta C se genereaza aleator
r si
Y =r e C ( mod N )

Decripteaza Y si inmulteste cu r1 (mod


N):
d

r1 Y d=r 1 ( r e C ) =r 1 r Cd =C d ( mod N )

Cum r este aleator, nu putem obtine


informatii despre timpi sau input.
Atacuri prin inducerea erorilor
o Erori induse => recuperare cheie secreta
o CRT conduce la atacuri de acest gen
o O singura eroare => factorizarea
modulului
o Un pericol real pentru smartcarduri si
pentru alte sisteme la care atacatorul are
acces.
Consideram CRT pentru semnarea mesajului
M
Fie

Mp

Fie

xp

dp

= M (mod p) si
=

M dp

(mod p) si

= d (mod (p-1)) si

Mq
xq
dq

= M (mod q)
=

M dq

(mod q)

= d (mod (q-1))

Semnarea se face astfel:


S=

Md

(mod N) = a

xp

+b

a=1 (mod p) si a=0 (mod q)

xq

(mod N)

b=0 (mod p) si b=1 (mod q)

Modul de atac:
Atacatorul forteaza aparitia unei erori
Sa presupunem ca se calculeaza x ' in
loc de x , dar x este calculat
corect.Apare o eroare in calculul M sau
x
.
Semnatura este S = a x + b x ' (mod
N)
Stim ca eroarea s-a propagat deoarece (
q

S'
e

(mod N) M

S = a x + b x ' (mod N)
a = 1 (mod p) and a = 0 (mod q)
b = 0 (mod p) and b = 1 (mod q)
Atunci S (mod p) = x = (M (mod p))
p

d (mod (p1))

Se poate arata ca (
(
(

S'
e
S'
e

S'
e

= M (mod p), adica

- M = k pentru un k
M (mod q) si atunci (

este multiplu al lui q


Prin urmare, gcd(N, (

S'
e

S'
e

M nu

-M) indica un

factor netrivial pentru N, mai exact


factorul p.
Concluzii:

- O singura eroare poate influenta buna


functionare a unui sistem.
- Chiar daca probabilitatea erorii este
mica, avantajele sunt de partea
atacatorului.
- Atacurile cu ajutorul defectiunilor
(erorilor) hardware pot distruge si
unele implementari RSA in care nu s-a
folosit CRT.