"Datu aizsardzība un kriptogrāfija."
Pasniedzējs  prof. R.-M. Freivalds

11. lekcija

Protokols "Monētas mešana pa telefonu"

Darbojas divas personas: Alise un Bobs, kas viena otrai neuzticas. Mērķis "mest monētu", lai noskaidrotu "uzvarētāju", tā, lai abiem būtu vienādas izredzes uzvarēt un nevienam no dalībniekiem nebūtu iespējas krāpties.

Protokola realizācija:

Solis 1
A izvēlas divus lielus pirmskaitļus p un q un paziņo to reizinājumu n=p*q.

Solis 2
B izvēlas gadījuma skaitli u no intervāla (1 .. n/2) un paziņo z=u2(mod n).

Solis 3
A izrēķina ± x un ± y , t.i. visas 4 kvadrātsaknes no z. Tas ir iespējams, jo A zin, ka   n=p*q.    Ar x' apzīmē mazāko no x (mod n), un (-x)(mod n). Līdzīgi ar y' apzīmē mazāko no y (mod n), (-y) (mod n). Pievērsiet uzmanību tam , ka u=x' vai u=y'.

Solis 4
A zin, vai u=x'   vai u=y'. Precīzāk, A atrod mazāko skaitli i, tādu, ka i-ais bits skaitlim x' atšķiras no i-tā bita skaitlim y' un dod vienu no paziņojumiem: "i-tais bits skaitlim u ir 0" vai "i-ais bits skaitlim u ir 1"

Solis 5
B pasaka A, vai uzminēts pareizi.

Solis6
B pasaka A skaitli u.

Solis7
A pasaka skaitļa n reizinātājus p un q.


Piemērs:

Solis1:
A izvēlas divus lielus pirmskaitļus p un q un paziņo to reizinājumu n=p*q.

p=37
q=97
n=3589

Solis2:
B izvēlas gadījuma skaitli u no intervāla (1 .. n/2) un paziņo z=u2(mod n).

u=1780
z=17802(mod 3589)=2902

 

Solis3:  
A izrēķina ± x un ± y , t.i. visas 4 kvadrātsaknes no z. Tas ir iespējams, jo A zin, ka   n=p*q.    Ar x' apzīmē mazāko no x (mod n), un (-x)(mod n). Līdzīgi ar y' apzīmē mazāko no y (mod n), (-y) (mod n). Pievērsiet uzmanību, ka u=x' vai u=y'.

A saņem z=2902 (mod 3589), tā kā A zin ka 3589=37*97, tad var risināt sistēmu:

{ u2=2902 mod(37)
w2=2902 mod(97)
{ u2=16 mod(37)
w2=89 mod(97)

u1=4 mod(37) un u2=33 mod(37)

Rēķinam w1 un w2 pēc devītajā lekcijā aprakstītā varbūtiskā algoritma:

1.
u2=89(mod 97)
p=97   p-1=96=2e*q=25*3
(n/p)=-1
n=5
z=nq (mod p)
z=53 (mod 97)=28

2.
y=28
r=5
x=a(q-1)/2 (mod p)
x=89
b=a*x2 (mod p)=89*892(mod 97)=70
x=a*x(mod p)= 89*89(mod 97)=64

3.
(b2)mkongr.gif (49 bytes)1(mod 97)
m=1 kongr.gif (49 bytes) 50
m=2 kongr.gif (49 bytes) 73
m=3 kongr.gif (49 bytes) 96
No tā redzam ka mazākais m ir 4

4.
t=(y2)R-m-1
t=(282)5-4-1=28
y=282 (mod p) = 8
r=u  x=64*28(mod 97) = 46  b=70*8=75

3.
(752)m kongr.gif (49 bytes)1(mod p)
m=1kongr.gif (49 bytes) 96
m=2kongr.gif (49 bytes) 1 - der.

4.
t=(82)4-2-1 =64
y=642(mod 97) = 22
r=m
r=2
x=x*t=46*64(mod 97)=34
b=b*y=75*22(mod 97)=1

3.
? bkongr.gif (49 bytes)1(mod 97)
Jā 1kongr.gif (49 bytes)1(mod 97)

No tā ir iegūts x =34
Tātad w1kongr.gif (49 bytes)34 un w2kongr.gif (49 bytes)-w1kongr.gif (49 bytes)63

Meklē ± x un ± y formā   (A*37+B*97) (mod 97*37).
Pirmajai saknei rēķina:
A*37kongr.gif (49 bytes)34 (mod 97) un B*97kongr.gif (49 bytes)4 (mod37)

B*97kongr.gif (49 bytes)4(mod 37)
meklē tādu s, lai 97*skongr.gif (49 bytes)1(mod 37)
Pēc Fermā teorēmas skongr.gif (49 bytes)9735 (mod 37), jeb skongr.gif (49 bytes)2335 (mod 37)
231=23 (mod 37)
232=11 (mod 37)
234=10 (mod 37)
238=26 (mod 37)
2316=10 (mod 37)
2332=26 (mod 37)
skongr.gif (49 bytes)2335(mod37)kongr.gif (49 bytes)26*11*23 (mod 37)kongr.gif (49 bytes)29

Bkongr.gif (49 bytes)4*29 (mod 37)=5

[Turpinājums nākamajā lekcijā]