Algoritma Elgamal

(Dialihkan dari Algoritme Elgamal)

Algoritme Elgamal merupakan salah satu algoritma kriptografi kunci publik yang dibuat oleh Taher ElGamal pada tahun 1984. Algoritme ini pada umumnya digunakan untuk digital signature, tetapi kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. ElGamal digunakan dalam perangkat lunak sekuriti yang dikembangkan oleh GNU, program PGP, dan pada sistem sekuriti lainnya. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit.

Algoritme Elgamal tidak dipatenkan. Tetapi, algoritma ini didasarkan pada algoritma Diffie – Hellman, sehingga hak paten algoritma Diffie – Hellman juga mencakup algoritma ElGamal. Karena hak paten algoritma Diffie – Hellman berakhir pada bulan April 1997, maka algoritma ElGamal dapat diimplementasikan untuk aplikasi komersial.

Pembentukan kunci

sunting

Skema ElGamal memerlukan sepasang kunci yang dibangkitkan dengan memilih sebuah bilangan prima p dan dua buah bilangan random g dan x. Nilai g dan x lebih kecil dari p yang memenuhi persamaan: y = gx mod p

Dari persamaan tersebut y, g dan p merupakan kunci publik dan x adalah kunci rahasia.

Proses Enkripsi

sunting

Proses enkripsi merupakan proses mengubah pesan asli (plaintext) menjadi pesan rahasia (ciphertext). Pada proses ini digunakan kunci publik (p, g, y). Langkah-langkah dalam mengenkripsi pesan adalah sebagai berikut:

Potong plaintext menjadi blok-blok m1, m2, …, nilai setiap blok di dalam selang [0, p – 1].

Ubah nilai blok pesan ke dalam nilai ASCII.Pilih bilangan acak k, dengan syarat 1 ≤ k ≤ p – 2.

Setiap blok m dienkripsi dengan rumus sebagai berikut:

gamma (γ) = gk mod p. (1)

delta (δ) = ykm mod p. (2)

Susun ciphertext dengan urutan γ1,δ1, γ2,δ2,…,γn,δn. Pasangan γ dan δ adalah cipherteks untuk blok pesan m. Hasil yang didapat dari proses enkripsi berupa pesan rahasia (ciphertext).

Proses dekripsi

sunting

Proses dekripsi merupakan proses mengubah pesanrahasia (ciphertext) menjadi pesan asli (plaintext). Padaproses ini digunakan kunci pribadi (x, p).

Langkah-langkah dalam mendekripsi pesan adalah sebagai berikut:

Penentuan nilai gamma dan delta. Nilai gamma (γ) diperoleh dari ciphertext dengan urutan ganjil sedangkan delta (δ) dengan urutan genap.

Hitung plaintext m dengan persamaan rumus berikut:

m = δ. γ(p-1-x) mod p (3)

Ubah nilai m yang didapat kedalam nilai ASCII.

Susun plaintext dengan urutan m1,m2,…,mn.

Referensi

sunting

Templat:Cryptography navbox