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 = 330mod 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 .
0 Comments