Rabin kriptosistema

Iš testwiki.
Pereiti į navigaciją Jump to search

Rabin kriptosistema yra viešo rakto kriptosistema. Ji buvo sukurta Michael O. Rabin.

Tai labai greita kriptosistema, kadangi šifravimui reikalauja vienos operacijos – kėlimo kvadratu moduliu n. Saugumas remiasi skaičiaus n skaidymo į du pirminius p,q, kad pq=n problemos sudėtingumu.

Raktų parinkimo algoritmas

A pasirenka du didelius pirminius skaičius p,q, pq ir sudaugina juos n=pq. A viešas raktas

Kv=<n>,

o privatus:

Kp=<p,q>

Šifravimas/dešifravimas

Tarkime, kad B nori perduoti A pranešimą m, m{0,1,,n1}. B turi A viešą raktą – n.

B užšifruoja m, tiesiog pakėlus jį kvadratu moduliu n:

cm2(modn)

A dešifruoja pranešimą, suradus c šaknys m1,m2,m3,m4 moduliu n. A nusprendžia, kuris iš mi, i=1,,4 yra pranešimas.

Kvadratinė šaknis moduliu

Apibrėžimas. Simboliu Zn žymėsime aibę skaičių {0,1,,n1}.

Apibrėžimas. Simboliu Zn* žymėsime aibę skaičių {aZn|DBD(a,n)=1}. Jeigu n – pirminis, tai Zn*={a | 1nn1}

Apibrėžimas. Tegu a – skaičius, o p – pirminis skaičius. Legendre simbolis (ap) apibrėžiamas taip:

(ap)={0:p|a1:aQp1:aQp¯

Čia Qp ir Qp¯ apibrėžtos taip:

Qp={a |xZp*, kad x2a(modp), aZp*}
Qp¯={a |neegzistuoja xZp*, kad x2a(modp), aZp*}

Bendras algoritmas kvadratinėm šaknims surasti:

ALGORITMAS SQR1
ĮVESTIS: a - skaičius, p - pirminis skaičius, 1ap1
IŠVESTIS: dvi šaknis skaičiaus a moduliu p, jeigu jos egzistuoja
 1. Jeigu (ap)=1 – šaknų nėra.
 2. Parinkti b, 1bp1, kad (bp)=1
 3. Užrašyti skaičių p1=2st, t – nelyginis.
 4. Apskaičiuoti a1(modp)
 5. cbt(modp), ra(t+1)/2(modp)
 6. Visiem i nuo 1 iki s1:
   6.1. d=(r2a1)2si1(modp)
   6.2. Jeigu, d1(modp), tada rrc(modp)
   6.3. cc2(modp)
 7. Sprendimas: (r,r)

Jeigu p3(mod4), tai naudojamas sekantis algoritmas:

ALGORITMAS SQR2
ĮVESTIS: a - skaičius, p - pirminis skaičius, 1ap1
IŠVESTIS: dvi šaknys skaičiaus a moduliu p, jeigu jos egzistuoja
 1. r=a(p+1)/4(modp)
 2. (r,r)

Taikymas šio algoritmo (SQR2) Rabin kriptosistemos atveju atrodo taip:

Jeigu p3(mod4) ir Jeigu q3(mod4), tada
 1. Surasti a ir b, kad ap+bq=1.
 2. r=a(p+1)/4(modp)
 3. s=a(q+1)/4(modq) 
 4. x=(aps+bqr)(modn)
 5. y=(apsbqr)(modn)
 6. Rezultatas: (x,x,y,y)

Pastaba: x ir y moduliu n.

Jeigu p – pirminis, tai skaičiaus a moduliu p šaknys surasime algoritmo SQR3 pagalba:

ALGORITMAS SQR3
ĮVESTIS: a - skaičius, p - pirminis skaičius, 1ap1
IŠVESTIS: dvi šaknys skaičiaus a moduliu p, jeigu jos egzistuoja
 1. Pasirenkame bZn, kad (b24ap)=1
 2. Tegu f yra polinomas x2bx+aZp[x]
 3. r=x(p+1)/2 mod f
 4. Rezultatas: (r,r)

Zp[x]Polinomų žiedas

Rabin kriptosistemos atveju algoritmas SQR3 panaudojamas taip:

ALGORITMAS SQR4
ĮVESTIS: a - skaičius, n=pq, p ir q pirminiai
IŠVESTIS: keturios šaknys skaičiaus a moduliu n, jeigu jos egzistuoja
 1. Naudojant SQR3, surandame skaičiaus a šaknys (r,r) moduliu p
 2. Naudojant SQR3, surandame skaičiaus a šaknys (s,s) moduliu q
 3. Surandame c ir d, kad cp+dq=1
 4. x(rdq+scp) mod n, y(rdqscp) mod n
 5. Rezultatas: (x,x,y,y), visi moduliu n

Literatūra

  • A. Menezes, P. van Oorschot, S. Vanstone, 1996, Handbook of Applied Cryptography

Kitos viešo rakto kriptosistemos