Home » Ilmu Komputer » Algoritma Elgamal: Pengertian, Proses dan Contohnya

Algoritma Elgamal: Pengertian, Proses dan Contohnya

by Rini Rahmawati
by Rini Rahmawati

Algoritma ElGamal menyediakan mekanisme enkripsi dan dekripsi yang aman untuk komunikasi melalui kanal yang tidak aman. Ia berdasarkan pada masalah matematika yang rumit dan sulit untuk dipecahkan, seperti masalah faktorisasi dan logaritma diskret.

Dalam algoritma ElGamal, pengirim pesan menggunakan kunci publik penerima untuk mengenkripsi pesan asli. Enkripsi dilakukan dengan memanipulasi teks asli menggunakan operasi matematika. Pesan terenkripsi kemudian dikirim melalui kanal yang tidak aman kepada penerima.

Algoritma ElGamal tetap menjadi pilihan yang populer untuk mengamankan komunikasi online dan digunakan dalam berbagai aplikasi, seperti pengamanan pesan elektronik dan protokol pertukaran kunci. Dalam artikel ini, kita akan menjelajahi lebih lanjut tentang kinerja, kekuatan, dan penggunaan algoritma ElGamal dalam konteks keamanan informasi.

Pengertian Algoritma Elgamal

Algoritma ElGamal adalah salah satu algoritma kriptografi kunci publik yang digunakan untuk enkripsi dan dekripsi pesan. Algoritma ini dinamai sesuai dengan penemunya, yaitu Taher ElGamal. Tujuan utama dari algoritma ini adalah untuk menjaga keamanan dalam komunikasi elektronik di mana pesan dikirim melalui kanal yang tidak aman.

Algoritma ElGamal berdasarkan pada matematika teori bilangan, terutama pada masalah logaritma diskret. Algoritma ini menggunakan konsep kunci publik dan kunci privat, di mana kunci publik digunakan untuk mengenkripsi pesan, sementara kunci privat digunakan untuk mendekripsinya.

Proses enkripsi dalam algoritma ElGamal melibatkan penggunaan operasi matematika yang kompleks. Pengirim pesan menggunakan kunci publik penerima untuk mengubah pesan asli menjadi bentuk terenkripsi. Pesan terenkripsi kemudian dikirimkan melalui kanal yang tidak aman kepada penerima.

Penerima pesan menggunakan kunci privatnya untuk mendekripsi pesan yang diterima. Proses dekripsi melibatkan operasi matematika yang melibatkan masalah logaritma diskret. Hanya penerima yang memiliki kunci privat yang dapat mendekripsi pesan tersebut dan mengembalikannya ke bentuk aslinya.

Algoritma ElGamal memiliki keunggulan dalam keamanan, karena sulit bagi penyerang untuk memecahkan masalah logaritma diskret yang mendasari algoritma ini. Namun, algoritma ini memiliki kelemahan dalam hal kecepatan komputasi yang relatif lambat, terutama ketika dibandingkan dengan algoritma kunci simetrisa seperti AES.

Proses Pembentukan Kunci

Proses pembentukan kunci dalam algoritma ElGamal melibatkan beberapa langkah yang penting. Berikut adalah penjelasan tentang proses pembentukan kunci dalam algoritma ElGamal:

1. Pilih Bilangan Prima

Langkah pertama dalam pembentukan kunci adalah memilih bilangan prima yang cukup besar. Bilangan prima ini akan menjadi bagian dari parameter kunci publik yang digunakan dalam algoritma. Pemilihan bilangan prima yang besar penting untuk menjaga keamanan algoritma.

2. Pilih Generator

Setelah memilih bilangan prima, langkah selanjutnya adalah memilih generator. Generator adalah bilangan yang dipilih secara acak dan memenuhi beberapa persyaratan matematis tertentu. Generator digunakan untuk menghasilkan kunci publik dan kunci privat.

3. Pilih Kunci Privat

Kunci privat adalah bilangan rahasia yang hanya diketahui oleh pemilik kunci. Kunci privat ini dipilih secara acak dari rentang bilangan 1 hingga (p – 1), di mana p adalah bilangan prima yang telah dipilih sebelumnya.

4. Hitung Kunci Publik

Kunci publik dihasilkan dari kunci privat dan generator yang telah dipilih sebelumnya. Kunci publik adalah hasil dari operasi matematika yang melibatkan eksponensiasi modulo. Dalam langkah ini, kunci publik dihitung dengan rumus sebagai berikut: kunci publik = (generator^kunci privat) mod p.

Setelah proses pembentukan kunci selesai, pemilik kunci akan memiliki pasangan kunci publik dan kunci privat. Kunci publik dapat digunakan untuk mengenkripsi pesan, sedangkan kunci privat digunakan untuk mendekripsi pesan yang telah terenkripsi. Penting untuk menjaga kunci privat dengan aman, karena kebocoran kunci privat dapat mengorbankan keamanan sistem enkripsi.

Proses Enkripsi

Proses enkripsi dalam algoritma ElGamal melibatkan beberapa langkah yang penting. Berikut adalah penjelasan perpoin secara panjang tentang proses enkripsi dalam algoritma ElGamal:

1. Konversi Pesan ke Angka

Langkah pertama dalam proses enkripsi adalah mengonversi pesan yang akan dikirim ke dalam bentuk angka. Setiap karakter dalam pesan dikaitkan dengan nilai numerik yang sesuai, misalnya dengan menggunakan kode ASCII.

2. Pilih Bilangan Acak

Selanjutnya, dalam proses enkripsi, perlu dipilih sebuah bilangan acak yang disebut sebagai “bilangan pemrosesan acak” atau “randomness value” (r). Bilangan ini harus dipilih secara acak dalam rentang bilangan 1 hingga (p – 1), di mana p adalah bilangan prima yang digunakan dalam algoritma.

3. Hitung Nilai Pertama

Nilai pertama (a) dalam proses enkripsi dihitung dengan melakukan operasi eksponensiasi pada generator yang telah ditentukan sebelumnya. Nilai pertama (a) dihitung dengan rumus sebagai berikut: a = (generator^bilangan acak) mod p.

4. Hitung Nilai Kunci Sesi

Langkah selanjutnya adalah menghitung nilai kunci sesi (K) dengan melakukan operasi eksponensiasi pada kunci publik penerima. Nilai kunci sesi (K) dihitung dengan rumus sebagai berikut: K = (kunci publik penerima^bilangan acak) mod p.

5. Hitung Nilai Chiperteks

Nilai chiperteks (c) dalam proses enkripsi dihitung dengan mengalikan nilai kunci sesi (K) dengan nilai numerik yang mewakili pesan. Nilai chiperteks (c) dihitung dengan rumus sebagai berikut: c = (K * nilai pesan) mod p.

Setelah proses enkripsi selesai, hasil akhirnya adalah nilai chiperteks (c), yang merupakan representasi terenkripsi dari pesan asli. Nilai chiperteks ini kemudian dapat dikirim melalui kanal yang tidak aman kepada penerima.

Penerima kemudian akan menggunakan kunci privatnya untuk mendekripsi pesan. Proses dekripsi melibatkan operasi matematika yang melibatkan masalah logaritma diskret, yang hanya dapat berhasil dilakukan oleh penerima yang memiliki kunci privat yang sesuai.

Proses enkripsi dalam algoritma ElGamal mengandalkan kompleksitas matematika untuk memberikan keamanan yang tinggi. Dalam algoritma ini, meskipun penyerang dapat mengamati pesan terenkripsi dan nilai chiperteks, sulit bagi mereka untuk memperoleh informasi tentang pesan asli atau kunci privat yang digunakan.

Proses Deskripsi

Proses dekripsi dalam algoritma ElGamal melibatkan beberapa langkah yang penting. Berikut adalah penjelasan tentang proses dekripsi dalam algoritma ElGamal:

1. Terima Nilai Chiperteks

Langkah pertama dalam proses dekripsi adalah menerima nilai chiperteks (c) yang telah dikirimkan oleh pengirim. Nilai chiperteks ini berisi pesan yang telah terenkripsi menggunakan algoritma ElGamal.

2. Hitung Nilai Kunci Sesi

Penerima menggunakan kunci privatnya untuk menghitung kembali nilai kunci sesi (K) yang digunakan dalam proses enkripsi. Proses ini melibatkan operasi matematika yang melibatkan masalah logaritma diskret. Nilai kunci sesi (K) dihitung dengan rumus sebagai berikut: K = (nilai chiperteks^kunci privat) mod p.

3. Hitung Nilai Kunci Balik

Setelah mendapatkan nilai kunci sesi (K), langkah selanjutnya adalah menghitung nilai kunci balik (K^(-1)). Nilai kunci balik ini dihitung dengan menggunakan algoritma inversi modulo. Tujuannya adalah untuk mendapatkan nilai invers dari nilai kunci sesi (K) terhadap modulus p.

4. Hitung Nilai Asli

Nilai asli atau pesan asli (nilai pesan) dapat ditemukan dengan mengalikan nilai chiperteks (c) dengan nilai kunci balik (K^(-1)). Nilai asli dihitung dengan rumus sebagai berikut: nilai pesan = (c * nilai kunci balik) mod p.

Setelah proses dekripsi selesai, nilai pesan yang ditemukan adalah representasi asli dari pesan yang dikirim oleh pengirim. Nilai ini merupakan pesan yang telah didekripsi menggunakan kunci privat yang hanya diketahui oleh penerima.

Proses dekripsi dalam algoritma ElGamal menggunakan kompleksitas matematika dan mengandalkan kesulitan dalam memecahkan masalah logaritma diskret untuk memberikan keamanan. Dalam algoritma ini, hanya penerima yang memiliki kunci privat yang sesuai yang dapat berhasil mendekripsi pesan yang telah terenkripsi menggunakan algoritma ElGamal.

Contoh

Berikut ini adalah contoh proses enkripsi dan dekripsi menggunakan algoritma ElGamal:

Contoh Enkripsi

Pemilihan parameter: Pilih sebuah bilangan prima p = 23 dan sebuah generator g = 5.

Pembentukan kunci:

Penerima (Bob) memilih kunci privatnya: kunci privat Bob = 7.

Penerima (Bob) menghitung kunci publiknya: kunci publik Bob = (5^7) mod 23 = 10.

Pengirim (Alice) ingin mengirim pesan “HELLO” kepada Bob.

Alice mengonversi pesan menjadi nilai numerik berdasarkan tabel ASCII: “HELLO” menjadi 72 69 76 76 79.

Untuk setiap karakter pesan, Alice melakukan langkah-langkah enkripsi sebagai berikut:

Pilih sebuah bilangan acak r = 3.

Hitung nilai pertama (a): a = (5^3) mod 23 = 10.

Hitung nilai kunci sesi (K): K = (10^7) mod 23 = 15.

Hitung nilai chiperteks (c): c = (15 * 72) mod 23 = 2.

Lakukan langkah yang sama untuk karakter lainnya dalam pesan.

Hasil enkripsi: Nilai chiperteks yang dikirimkan oleh Alice ke Bob adalah 2 20 18 18 17.

Contoh Dekripsi

Penerima (Bob) menerima nilai chiperteks dari Alice: 2 20 18 18 17.

Bob menggunakan kunci privatnya untuk melakukan dekripsi:

Bob menghitung kembali nilai kunci sesi (K) dengan menggunakan kunci privatnya: K = (2^7) mod 23 = 15.

Bob mencari invers dari nilai kunci sesi (K) terhadap modulus p = 23: K^(-1) = 15^(-1) mod 23 = 7.

Bob menghitung nilai asli (nilai pesan) dengan mengalikan nilai chiperteks dengan nilai kunci balik: 2 * 7 mod 23 = 14.

Bob melakukan langkah yang sama untuk nilai chiperteks lainnya.

Hasil dekripsi: Setelah melakukan proses dekripsi, Bob mendapatkan nilai asli pesan dari Alice, yaitu “HELLO” dengan menggunakan kunci privatnya.

Dengan demikian, proses enkripsi dan dekripsi dalam algoritma ElGamal memungkinkan pengirim (Alice) mengenkripsi pesan asli dan penerima (Bob) untuk mendekripsinya menggunakan kunci privat yang hanya diketahui oleh Bob.

You may also like