4.lekcija kursā

 

“Datu aizsardzība un kriptogrāfija”

 

 

Lineāras kongruences.

 

Iepriekšējā lekcijā pārliecinājāmies, ka var atrast tādu x, a * x =1 (mod p); Tagad ķersimies klāt pie mazliet grūtāka uzdevuma: 17 * x =32 (mod 53)
 
 Lai tādu atrisinātu, rīkosimies sekojoši: 17 * y * x =32 * y (mod 53)
 
Atrod y, ka 32 * y =1 (mod 53)
Atrod x, ka 17 * y * x =1 (mod 53)
 
 32 * y =1 (mod 53), Pēc P. Fermā mazas teorēmas
y = 3251
321= 32
322= 17
324= 172= 24
328= 242= 46
3216= 462= 49
3232= 492= 16
| y =3251=3232+16+2+1= 16 * 49 * 17 * 32 =5
| y = 5
|
| 17 * y = 85 =32
| 32 * x =1 (mod 53)
| x = 5
|
Bet ko varētu darīt, ja 17 * x =32 * (mod 53 * 37) ? 
Mūs varētu interesēt Eilera funkcijas rēķināšana: 
 
S(53 * 37) = ?
 
|| Izsvītro visus tos skaitļus, kas nav savstarpēji pirmskaitļi ar 37. Palikušo vienību
|| summa arī ir Eilera funkcijas rezultāts.
 
1 2 3 4 5 … 36 37 38 … 52 53 54 … 1961
 
Ko svītrosim? Apskatīsim arī vispārīgo uzdevumu :
 
S(p * q) = ?
 
Izsvītrosim visus 37 daudzkārtņus;
Izsvītrosim visus 53 daudzkārtņus;
 
1961 ir 37 un 53 kopīgais daudzkārtnis.
 S(p * q) = p * q – q – p + 1 = (p-1) * (q-1) // p * q – kopējais vienību (skaiļu) skaits
 
T. _ Ja p ir pirmskaitlis, a >= 1 (Naturāls skaitlis), tad S(pa) = (pa-1) * (p-1)
 
T. _ Ja p un q ir dažādi pirmskaitļi, a, b – patvaļīgi naturāli skaitļi, tad
S(pa * pb) = S(pa) * S(qb)
 
T. Ja m = p1a1 * p2a2 * … * psas ir kanonisks izvirzījums pirmskaitļu
reizinājumā, tad S(m) = p1a1-1 * p2a2-1 * … * psas-1 * (p1-1) * (p2-1) *…* (ps-1)

 

RSA

(algoritms) 

Kriptogrāfijas sistēma – RSA;
Autori: Rivest, Shamir, Adleman
 
Pašlaik šī ir pati populārākā kriptogrāfijas sistēma pasaulē.
Kā piemēru varētu minēt: Viesnīcas pasūtīšanu izmantojot Internet.
 
 
Ideja:
 
Ņem divus dažādus pirmskaitļus p, q
 
Apzīmē: n = p * q un S(n) = (p-1)*(q-1)
 
Izvēlas: lielu gadījumskaitli d > 1, tādu, ka (d, S(n)) = 1 un izrēķina tādu e
(1<e<S(n)), ka e * d =1 (mod S(n))
 
Ja šifrējamais teksts ir W, tad nošifrētais teksts ir : 
c = W^e (mod n)
 
Lai legālais saņēmējs to atšifrētu, pietiek izrēķināt :
W = c^d (mod n)
 
Kas šeit ir/nav slepens ?
Teksts italic stilā(zils) - nav slepens.
Teksts bold stilā(sarkans) - ir slepens !!!
 
Piemērs:
p = 37 n = 37 * 101 = 3737
q = 101 S(n) = 36 * 100 = 3600
 
izvēlas d = 7
7 * e = 1 (mod 3600)
||Tā kā 3600 nav pirmskaitlis, tad e = 7S(3600)-1 = ?
 
3600 = 24 * 32 * 52
 
Pēc T.
S(3600) = 23 * 3 * 5 * 1 * 2 * 4 = 24 * 5 * 8 = 960
7959 = ?
71= 7
72= 49
74= 492= 2401
78= 24012= 1201
716= 12012= 2401
732= 24012= 1201
764= 12012= 2401
7128= 24012= 1201
7256= 12012= 2401
7512= 24012= 1201
| 7959 =1201 * 2401 * 1201 * 1201 * 2401 * 1201 *
| * 2401 * 49 * 7 =1 * 201 * 1 * 1 * 49 * 7 =1543
|
|
|
| e =1543
|
| d = 7
|
|
|
7959 = 7512+256+128+32+16+8+4+2+1
 
Tagad ņemam W = 3 (šifrējamais teksts), tad
 
c = 31543 (mod 3737) = ?
31= 3
32= 9
34= 81
38= 2824
316= 28242= 218
332= 2182= 2680
364= 26802= 3623
3128= 36232= 1785
3256= 17852= 2301
3512= 23012= 3009
31024= 30092= 3067
| 31543 =31024+512+4+2+1 =3067 * 3009 * 81 * 9 * 3 =
| =733
|
| Šifrs: c =733
|
|
|
|
|
|
|
|
|
Savukārt atšifrēt c var sekojoši :
W = 7337 (mod 3737)
7331= 733
7332= 2898
7334= 2898 2= 1365

 

7337 =733 * 2898 * 1365 =3
 
 W = 3
 
Ziniet, tas iznāca !!! J