Algoritma ELGAMAL



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 .











About Me