Documente Academic
Documente Profesional
Documente Cultură
Martie 2020
Criptosistemul Rabin
Alegerea cheilor
Fiecare utilizator A:
alege două numere prime mari, p şi q, de aproximativ aceeaşi
mărime
calculează n = pq
Ke = n (public), Kd = (p, q) (secret)
Criptosistemul Rabin
Algoritm de criptare
B obţine cheia de criptare a lui A, n
reprezintă mesajul in clar ca un număr intreg
m ∈ {0, 1, . . . , n − 1}
calculează c = m2 (mod n)
trimite c
Criptosistemul Rabin
Algoritm de decriptare
A primeşte mesajul c.
A aplică algoritmi de determinare a rădăcinii pătrate a lui c
modulo n (funcţionarea lor depinde de cunoaşterea factorilor p
şi q).
A determină 4 solutii, una dintre ele fiind m.
Algoritm de determinare a rădăcinii pătrate modulo n = pq,
când p ≡ q ≡ 3 (mod 4).
Se determină (folosind algoritmul lui Euclid) u, v ∈ Z astfel
ı̂ncât up + vq = 1.
r := c (p+1)/4 (mod p).
s := c (q+1)/4 (mod q).
x := ups + vqr (mod n), y := ups − vqr (mod n).
Cele 4 rădăcini pătrate a lui c modulo n sunt
x, −x, y , −y (mod n).
Criptosistemul Rabin
Exemplu
p = 7, q = 11.
Cheia publică: n = 77.
Cheia secretă: (7, 11).
Criptare: m = 20 c = m2 (mod n) = 400 (mod 77) = 15.
Decriptare: Cu algoritmul de mai sus se obţine
Exemplu
p = 277, q = 331.
Cheia publică: n = 91687.
Cheia secretă: (277, 331).
Criptare: Presupunem că este necesar ca ultimii 6 biţi ai mesajelor
ı̂n clar trebuie să fie repetaţi. Avem de criptat şi trimis mesajul
m = 1001111001 m = 1001111001111001 = 40569
c = 405692 (mod 91687) = 62111.
Decriptare: m ∈ {69654, 22033, 40569, 51118}
m1 = 10001000000010110, m2 = 101011000010001,
m3 = 1001111001111001, m4 = 1100011110101110
din care numai m3 = 1001111001111001 verifică regula de
redundanţă.
Logaritmul discret
Funcţie cu sens unic: ridicarea la putere intr-un corp finit cu multe
elemente.
In R: y = b x ⇐⇒ x = logb y .
Intr-un corp finit:
b x se calculează relativ uşor
dat fiind y , cum se calculează x astfel incât y = b x ?
problema logaritmului discret.
Definiţie
Dacă G este un grup finit, b ∈ G , y ∈ G care este o putere a lui b,
numim logaritm discret al lui y in baza b orice număr intreg x ce
verifică b x = y .
Exemplu
G = Z∗19 , b = 2. Logaritmul discret al lui 7 in baza 2 este 6.
Criptosistemul Diffie–Hellman
Precautii:
p−1
p trebuie să fie un număr prim perfect, i.e. 2 este
deasemenea prim
β trebuie să fie un generator al lui Z∗p
folosirea unor semnături digitale, pentru a evita ca unul din
parteneri să fie un inamic
Whitfield Diffie, Martin Hellman 1976
Criptosistemul El Gamal
Algoritm de criptare:
B vrea să trimită mesajul m lui A.
B obţine cheia de criptare a lui A, Ke = (p, g , α)
alege k la intâmplare
trimite (u = g k , v = m · αk ) (mod p)
αk (= g aA k ) = masca, g k =cheia măştii
Algoritm de decriptare:
A primeşte (u, v )
ridică u la puterea p − 1 − aA şi obţine
w = u p−1−aA = u −aA (mod p)
calculează m = v · w (mod p)
Criptosistemul El Gamal
Exemplu
Generarea cheilor: A alege numărul prim p = 2357 şi generatorul
g = 2 ∈ Z∗2357 .
A alege aA = 1751 şi calculează
Exemplu
Criptare: B vrea să-i trimită lui A mesajul m = 2035. B alege
k = 1520 şi calculează
Propoziţie
Dacă a ∈ Z∗p , atunci
aed = a (mod p)
Criptosistemul Massey-Omura
Transmitrea mesajelor:
B vrea să trimită mesajul P lui A.
B trimite lui A mesajul C1 := P eB .
A primeşte C1 , calculează şi trimite lui B C2 := C1eA (mod p).
B primeşte C2 , calculează şi trimite lui B C3 := C2dB (mod p).
A primeşte C3 , calculează C3dA (mod p) şi obţine P.
1 11 21 31 41 51 2 11 22 31 42 51 4 13 22 31 44 53
3 13 23 33 43 53 3 14 23 34 43 54 5 14 23 36 45 54
5 15 25 35 45 55 6 15 26 35 46 55 6 15 28 37 46 55
7 17 27 37 47 57 7 18 27 38 47 58 7 20 29 38 47 60
9 19 29 39 49 59 10 19 30 39 50 59 12 21 30 39 52 *
8 13 26 31 44 57 16 21 26 31 52 57 32 37 42 47 52 57
9 14 27 40 45 58 17 22 27 48 53 58 33 38 43 48 53 58
10 15 28 41 46 59 18 23 28 49 54 59 34 39 44 49 54 59
11 24 29 42 47 60 19 24 29 50 55 60 35 40 45 50 55 60
12 25 30 43 56 * 20 25 30 51 56 * 36 41 46 51 56 *
Problema rucsacului (“knapsack problem”)
Considerăm un număr natural V > 0 şi o mulţime finită de numere
naturale pozitive
{v0 , v1 , . . . , vk−1 } .
Problemă: Determinaţi o submulţime I ⊆ {0, 1, 2, . . . , k − 1}
astfel incât X
V = vi .
i∈I
1 w := V , j := k − 1, εk−1 = . . . = ε0 = 0
2 Dacă vj > w scrie j := j − 1
Dacă j ≥ 0 mergi la 2
Dacă j < 0 scrie Problema nu are soluţie; exit.
Dacă vj ≤ w scrie εj := 1, w := w − vj , j := j − 1
Dacă w = 0 scrie εk−1 εk−2 . . . ε0 ; exit.
Dacă w > 0
- Dacă j ≥ 0 mergi la 2
- Dacă j < 0 scrie Problema nu are soluţie; exit.
Criptosistemul Merkle-Hellman (1978)
Unitatea de mesaj: bloc de k biţi = intreg m scris in baza 2, cu k
biţi
Exemplu: o literă din alfabetul latin = număr in baza 2 intre 0 şi
11001 = 25, k = 5.
Alegerea cheilor:
Fiecare utilizator A alege un şir de numere naturale
{v0A , v1A , . . . , vk−1
A }, supercrescător.
Algoritm de criptare:
B vrea să trimită mesajul m = (εk−1 εk−2 . . . ε0 )2 lui A.
B calculează
k−1
X
c := f (m) = εi wiA
i=0
B transmite c.
Criptosistemul Merkle-Hellman (1978)
Algoritm de decriptare:
A primeşte c şi calculează
V := bA · c (mod mA )
Avem
k−1
X k−1
X
V = εi bA wiA ≡ εi viA (mod mA )
i=0 i=0
Pk−1
Observăm că V < mA , i=0 viA < mA , deci congruenţa de
mai sus este chiar egalitate.
A aplică algoritmul anterior pentru a determina
εk−1 , εk−2 , . . . , ε0 şi recuperează mesajul m.