ELGAMAL
Algoritma
ELGAMAL dibuat oleh Taher ELGamal pada tahun 1984, awalnya digunakan hanya
untuk tanda tangan digital tapi kemudian dapat dimofifikasi untuk proses enkripsi dan dekripsi.
Besaran-besaran yang digunakan:
1. Bilangan prima p (tdk rahasia)
2. Bilangan acak g (g<p) (tdk
rahasia)
3. Bilangan acak x (x<p) (rahasia,
kunci privat)
4. y= gx mod p (tdk rahasia, kunci publik)
5. m (plainteks) (rahasia)
6. a dan b (cipherteks) (tdk rahasia)
Algoritma Pembangkitan Pasangan Kunci
1. Pilih sembarang bilangan prima
p
2. Pilih dua buah bilangan acak
g dan x dengan syarat g < p dan
1<=x<=p-2
3. Hitung y = gx mod
p
Hasilnya
adalah
Kunci publik =tripel (y,g,p)
Kunci privat = pasangan (x,p)
Algoritma
Enkripsi
1. Susun plainteks menjadi
blok-blok m1, m2,... sedemikian rupa sehingga setiap blok merepresentasikan nilai di selang
[0,p-1]
2. Pilih bilangan acak k dimana
1<=k<=p-2
3. Setiap blok m dienkripsi
dengan rumus
a=gk mod p
dan b=yk m mod p
Algoritma Dekripsi
1. Gunakan kunci privat x untuk
mendekripsi a dan b menjadi plainteks m dengan persamaan m=b/ax mod p
(ax)-1=ap-1-x mod p
Contoh:
Vero ingin membangkitkan pasangan kuncinya. Vero
memilih p=53, g=3 dan x=30
Hitung y = gx mod p = 330
mod 53 = 25
Kunci publik=(25,3,53) dan kunci privat
(30,53)
Proses enkripsi
Budi
ingin mengirim plainteks m = 25 ke vero ( nilai m masih berada di selang
[0,p-1]
Budi memilih bilangan
acak k = 45 ( nilai k masih berada di selang[1<=k<=p-2]
Budi menghitung: a=gk mod p dan b=yk m mod p
a=345 mod 53
= 19
b=2545 25 mod
53 = 44
Jadi cipherteks yg dihasilkan (19,44)
Budi mengirim cipherteks (19,44) ke vero
Proses Dekripsi
(ax)-1=ap-1-x
mod p = 1953-1-30 mod 53 =1922 mod 53 = 9
m=b/ax mod p = 44 .9 mod 53 = 396 mod 53 = 25
Jadi plainteks yg
didekripsi 25, sama dengan plainteks yg dikirim oleh budi .
Emoticon