Svi kriptosustavi koji je u svojoj originalnoj definiciji
koriste grupu
*,
kao što je npr. ElGamalov, mogu se vrlo
lako modificirati tako da koriste grupu
E(
).
No, doslovno prevođenje ElGamalovog kriptosustava u
eliptičke krivulje ima nekoliko nedostataka. Prvi je da
prije šifriranja moramo elemente otvorenog teksta prebaciti
u točke na eliptičkoj krivulji. Za to ne postoji zadovoljavajući
deterministički, već samo vjerojatnosni algoritam, koji koristi
činjenicu da kvadrati u konačnom polju predstavljaju 50% svih
elemenata. Nadalje, šifrat jednog elementa otvorenog teksta
se kod ove varijante
ElGamalovog kriptosustava sastoji od
uređenog para točaka na eliptičkoj krivulji. To znači da
prilikom šifriranja poruka postane otprilike 4 puta duža.
Navest ćemo jednu varijantu ElGamalovog kriptosustava koja koristi eliptičke krivulje. Zove se Menezes - Vanstoneov kriptosustav (Menezes-Vanstone ECC). U njemu se eliptičke krivulje koriste samo za "maskiranje", dok su otvoreni tekstovi i šifrati proizvoljni uređeni parovi elemenata iz polja (a ne nužno parovi koji odgovaraju točkama na eliptičkoj krivulji). Kod ovog kriptosustava, šifrirana poruka je 2 puta duža od originalne poruke.
Menezes-Vanstoneov kriptosustav: Neka je E eliptička krivulja nad ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() Za K = (E, ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() eK(x, k) = (y0, y1, y2), gdje je y0 = [k]![]() ![]() Za šifrat y = (y0, y1, y2) definiramo dK(y) = (y1(c1)-1 mod p, y2(c2)-1 mod p), gdje je [a] y0 = (c1, c2). |
Primjer: Neka je E eliptička krivulja nad
13
zadana jednadžbom
y2 = x3 + 4x + 4.
Grupa E(
Pretpostavimo da Alice želi poslati poruku (x1,
x2) = (12,7) Bobu, čiji je tajni ključ
a = 2, a javni ključ
= a
= [2] (1,3) = (12,8). Pretpostavimo da je Alice izabrala
tajni broj k = 5. Tada ona računa:
(c1,c2) = [k]
= [5] (12,8) =
(10,11),
y0 = [k]
= [5] (1,3) = (10,2),
y1 = c1x1 =
120 = 3 mod 13,
y2 = c2x2 =
77 = 12 mod 13.
Nakon primitka šifrata Bob računa:
[a] y0 = [2] (10,2) = (10,11) =
(c1,c2),
(3
10-1 mod 13,
12
11-1
mod 13) = (12,7) = (x1,x2).
Web stranica seminara | Andrej Dujella - osobna stranica |