27 Mei 2013

Algoritma ElGamal


Pendahuluan
Secara umum, kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan berita (Bruce Schneier - Applied Cryptography). Secara etimologi, kriptografi berasal dari gabungan dua kata dalam bahasa yunani, yaitu "kriptos" dan "graphia". Kata “kriptos” digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata “graphia” berarti tulisan.
Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya.
Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext). Ciphertext inilah yang kemudian dikirimkan oleh pengirim kepada penerima. Setelah sampai ke penerima, ciphertext tersebut ditransformasikan kembali ke dalam bentuk plaintext.
Dalam dunia kriptografi, pesan disebut plaintext atau cleartext. Proses untuk menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian sebuah ciphertext ke plaintext disebut deskripsi.
Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi:
  • Kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik. Pada algoritma ini, kunci yang digunakan untuk enkripsi dan deskripsi sama. Pengirim dan penerima pesan harus menentukan suatu kunci tertentu untuk saling berkomunikasi. Keamananan algoritma simetris tergantung pada kunci.
  • Kunci-asimetris/asymetric-keySkema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private-key. Dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Keuntungan algoritma model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para korensponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Latar Belakang

Sampai akhir tahun 1970, hanya ada sistem kriptografi kunci-simetri. Satu masalah besar dalam sistem kriptografi: bagaimana mengirimkan kunci rahasia kepada penerima? Mengirim kunci rahasia pada saluran publik (telepon, internet, pos) sangat tidak aman. Oleh karena itu, kunci harus dikirim melalui saluran kedua yang benar-benar aman. Saluran kedua tersebut umumnya lambat dan mahal. Ide kriptografi kunci-nirsimetri (asymmetric-key cryptography) muncul pada tahun 1976. Makalah pertama perihal kriptografi kunci-publik ditulis oleh Diffie-Hellman (ilmuwan dari Stanford University) di IEEE. Judul makalahnya “New Directions in Cryptography”. Namun pada saat itu belum ditemukan algoritma kriptografi kunci-nirsimetri yang sesungguhnya.

Pembahasan
Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Pada mulanya algoritma ini digunakan untuk tanda tangan digital atau digital signature. Kemudian dimodifikasi sehingga dapat digunakan untuk enkripsi dan dekripsi. Keamanan algoritma ini terletak pada sulitnya menghitung algoritma diskrit.

Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok plaintext dan menghasilkan blok-blok ciphertext yang kemudian dilakukan proses deskripsi, dan hasilnya digabungkan kembali menjadi pesan yang utuh dan dapat dimengerti.

Properti yang digunakan algoritma ElGamal:
a.    bilangan prima, p                             (publik)
b.    bilangan acak, g (g < p)                   (publik)
c.     bilangan acak, x (x < p)                  (privat)
d.    y = gx mod p                                    (publik)
e.    m (plaintext)                                    (privat)
f.      a dan b (chipertext)                       (publik)

Algoritma pembangkitan kunci:
a.    pilih sembarang bilangan prima p (p dapat dishare diantara anggota kelompok)
b.    pilih dua buah bilangan acak, g dan x, dengan syarat g < p dan 1 ≤ x ≤ p-2
c.     hitung y = gx mod p
d.    kunci publik adalah y, kunci rahasia adalah x. Nilai g dan p tidak dirahasiakan dan dapat diumumkan kepada anggota kelompok.

Enkripsi menggunakan ElGamal :
·    Plaintext disusun menjadi blok-blok m1, m2, ..., sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai p-1
·    Pilih bilangan acak k, yang dalam hal ini 0 ≤ k ≤ p-1, sedemikian sehingga k relatif prima dengan p-1
·    Setiap blok m dienkripsi dengan rumus
a = gk mod p
b = ykm mod p
Pasangan a dan b adalah ciphertext untuk blok pesan m. Jadi, ukuran ciphertext dua kali ukuran plaintextnya.

Dekripsi menggunakan ElGamal:
·      Gunakan kunci privat x untuk menghitung (ax)-1 = ap-1-x mod p
·      Hitung plaintext m dengan persamaan:
m = b / ax mod p = b(ax)-1 mod p


Contoh Penggunaan
a.    Pembangkit kunci (oleh Alice)
misal p = 2357, g = 2, dan x = 1751
hitung :
y = gx mod p
y = 21751 mod 2357
y = 1185
hasil :
kunci publik : y = 1185, g = 2, p = 2357
kunci privat : x = 1751, p = 2357

b.   Enkripsi (oleh Bob)
misal pesan m = 2035 (nilai m berada diantara 0 sampai 2357-1)
Bob memilih bilangan acak k = 1520 (nilai k berada diantara 0 sampai 2357-1)
Bob menghitung :
a = gk mod p
a = 21520 mod 2357
a = 1430
b = ykm mod p
b = 11851520 . 2035 mod 2357
b = 697
Jadi, ciphertext yang dihasilkan adalah (1430, 697).
Bob mengirim ciphertext ini ke Alice.

c.     Dekripsi (oleh Alice)
1/ax = (ax)-1 = ap-1-x mod p = 1430605 mod 2357 = 872
m = b / ax mod p
m = 697 . 872 mod 2357 = 2035


Tidak ada komentar:

Posting Komentar