Analisis Penggunaan Elemen Primitif Dan
ANALISIS PENGGUNAAN ELEMEN PRIMITIF DAN NON PRIMITIF
PADA ALGORITMA ELGAMAL
Yudhi Andrian1
1
1
Teknik Informatika, STMIK Potensi Utama
STMIK Potensi Utama, Jl. K.L. Yos Sudarso Km 6,5 No. 3A Medan
1
[email protected]
Abstrak
Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi.
Proses pembentukan kunci kriptografi ElGamal terdiri dari pembentukan kunci privat (rahasia) dan
pembentukan kunci public (umum). Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk
membentuk grup Zp* dan elemen primitif sebagai dasar pembentuk kunci public sedangkan sembarang bilangan
acak digunakan sebagai pembentuk kunci privat. pada penelitian sebelumnya digunakan elemen primitif pada
proses pembentukan kunci namun tidak dijelaskan alasan mengapa harus menggunakan elemen primitif.
Penelitian ini mencoba menganalisa pengguaan elemen primitif dan elemen non primitif pada pembentukan
kunci algoritma elgamal . Analisa dilakukan dengan menentukan sebuah bilangan prima tetap, dengan bilangan
prima tersebut ditentukan beberapa elemen primitif. Proses selanjutnya dilakukan pembentukan kunci public dan
kunci privat berdasarkan bilangan prima dan elemen primitif yang sudah ada. Langkah selanjutnya adalah
melakukan proses enkripsi dan dekripsi terhadap sebuah file dengan memvariasikan elemen primitif, elemen non
primitif, memvariasikan kapasitas file dan memvariasikan nilai bilangan prima yang digunakan . Dari hasil
analisa dapat disimpulkan bahwa proses enkripsi dan dekripsi dapat dilakukan dengan baik dengan pembentukan
kunci yang menggunakan elemen primitif ataupun elemen non primitif, Elemen primitif ataupun elemen non
primitif tidak mempengaruhi proses enkripsi dan proses dekripsi, besar kecilnya elemen primitif maupun elemen
non primitif yang digunakan tidak mempengaruhi besarnya file hasil enkripsi, dengan bilangan prima 3 digit,
selisih antara file asli dengan file hasil enkripsi mencapai 500 % lebih, semakin besar bilangan prima yang
digunakan dalam pembentukan kunci, maka kapasitas file hasil enkripsi juga akan semakin besar.
Kata kunci : Kriptografi, Enkripsi, Dekripsi, Elgamal, elemen primitif.
1.
Pendahuluan
Algoritma ElGamal adalah algoritma yang
sistem pengamanannya didasarkan pada masalah
Logaritma Diskrit. Algoritma ElGamal terdiri dari
tiga proses, yaitu proses pembentukan kunci, proses
enkripsi dan proses dekripsi.
Proses pembentukan kunci kriptografi ElGamal
terdiri dari pembentukan kunci privat (rahasia) dan
pembentukan kunci public (umum). Pada proses ini
dibutuhkan sebuah bilangan prima p yang digunakan
untuk membentuk grup Zp* dan elemen primitif
(primitive root) sebagai dasar pembentuk kunci
public (umum) sedangkan sembarang bilangan acak
a {0, 1,…, p-2) digunakan sebagai pembentuk
kunci privat (rahasia). [3]
Dalam penelitian sebelumnya, Mukhammad
Ifanto melakukan penelitian metode enkripsi dan
dekripsi menggunakan algoritma elgamal, dimana
pada penelitian ini proses pembentukan kunci
menggunakan bilangan prima aman besar dan
elemen primitif. [3]
Danang Tri Massandy menggunakan algoritma
elgamal dalam pengamanan pesan rahasia. [2]. Eko
aribowo membuat aplikasi pengamanan dokumen
office dengan algoritma kunci asimetris elgamal. [1].
M. Taufiq Tamam, et. Al menerapkan kriptografi
elgamal untuk mengamankan file citra. [4].
Agustinus widyartono menggunakan algoritma
elgamal untuk enkripsi data menggunakan GNUPG.
[5].
Dari penelitian sebelumnya, [1-5] sebagian
menggunakan elemen primitif pada proses
pembentukan kunci dan sebagian yang lain tidak
menjelaskan penggunaan elemen primitif dalam
pembentukan kuncinya.
Berdasarkan uraian di atas, penelitian ini
mencoba menganalisa pengguaan elemen primitif
dan elemen non primitif pada pembentukan kunci
algoritma elgamal.
2.
Penentuan elemen primitif dan Non Primitif
Teorema:
“Suatu elemen yang membangun Zp * disebut
elemen primitif (primitive root) mod p.”
“Bila α2 mod p ≠ 1 dan αq mod p ≠ 1. Jika keduanya
dipenuhi, maka α adalah elemen primitif dari Zp *.”
[3].
Input : bilangan prima p ≥ 5 dan α Zp *
Output : elemen primitif atau bukan elemen
primitive
Langkah
:
1) Hitung q =
2) Hitung 2 (mod p) dan q (mod p)
3) Jika 2 (mod p) = 1 maka output :
elemen non primitif
4) Jika q (mod p) = 1 maka output :
elemen non primitif
5) output : element primitif
3.
Proses pembentukan kunci
Proses pertama adalah pembentukan kunci
yang terdiri dari kunci private (rahasia) dan kunci
public (umum). Pada proses ini dibutuhkan sebuah
bilangan prima p yang digunakan untuk membentuk
grup Zp*, elemen primitif α dan sembarang a ϵ
{1,..., p - 2}. Kunci publik algoritma ElGamal
berupa pasangan 3 bilangan, yaitu (p, α, β), dengan �
= αa ��� � Sedangkan kunci rahasianya adalah
bilangan a tersebut. Karena pada algoritma ElGamal
menggunakan bilangan bulat dalam proses
perhitungannya, maka pesan harus dikonversi ke
dalam suatu bilangan bulat.
Untuk mengubah pesan menjadi bilangan bulat,
digunakan kode ASCII (American Standard for
Information Interchange). Kode ASCII merupakan
representasi numerik dari karakter-karakter yang
digunakan pada komputer, serta mempunyai nilai
minimal 0 dan maksimal 255. Kode ASCII
berkorespondensi 1-1 dengan karakter pesan.
Algoritma membangkitkan Pasangan Kunci :
1. Pilih sembarang bilangan prima p besar dan
elemen primitif (Primitive Root) grup Zp*
dari bilangan bulat mod p
2. Pilih bilangan bulat acak a, dengan syarat 1 ≤ a
≤ p – 2.
3. Hitung � = αa mod p.
(1)
4. Publikasikan nilai p, α dan β , serta rahasiakan
a.
Hasil algoritma ini adalah kunci publik : triple
(�, α, p) dan kunci privat : pasangan (a, p). Pihak
yang membuat kunci publik dan kunci rahasia
adalah pengirim, sedangkan pihak penerima hanya
mengetahui kunci publik yang diberikan oleh
pengirim, dan kunci publik tersebut digunakan untuk
mengenkripsi pesan.
4.
Proses Enkripsi
Pada
proses
ini
pesan
dienkripsi
menggunakan kunci publik (�, α, p) dan
sembarang bilangan acak rahasia k є {1, ..., p-2}.
Misalkan m adalah pesan yang akan dikirim.
Selanjutnya, m diubah ke dalam blok-blok
karakter dan setiap karakter dikonversikan ke
dalam kode ASCII, sehingga diperoleh plainteks
m1, m2, ...,mn dengan mi є {1, 2,..., p-1}, i = 1, 2,...,
n. Untuk nilai ASCII pemisah “;” digunakan untuk
menandai akhir dari suatu teks.
Proses enkripsi pada algoritma ElGamal
dilakukan dengan menghitung :
� = �� ��� � dan (2)
� = ��.� ��� �
(3)
dengan k є {1, ..., p-2}acak rahasia. Bilangan
acak k ditentukan oleh pihak pengirim dan harus
dirahasiakan,
jadi
hanya
pengirim
yang
mengetahuinya. Sedangkan nilai k hanya digunakan
saat melakukan enkripsi dan tidak perlu disimpan.
Diperoleh cipherteks (�, �). Algoritma enkripsi
pesan :
1. Susun plainteks menjadi blok-blok, m1, m2, …,
sedemikian
sehingga
setiap
blok
merepresentasikan nilai di dalam rentang 0
sampai p – 1 (dengan mengubah nilai m menjadi
kode ASCII).
2. Pilih bilangan acak k, yang dalam hal ini 0 < k < p
– 1, sedemikian sehingga k relatif prima dengan
p – 1.
3. Setiap blok m dienkripsi dengan rumus :
� = αk mod p dan
� = βk m mod p.
Pasangan � dan � adalah cipherteks untuk
blok pesan m.
5.
Proses Dekripsi
Setelah menerima cipherteks (�, ), proses
selanjutnya
adalah
mendekripsi
cipherteks
menggunakan kunci publik p dan kunci rahasia a.
Dapat ditunjukkan bahwa plainteks m dapat
diperoleh dari cipherteks menggunakan kunci
rahasia a.
Diberikan (p, α, β) sebagai kunci publik dan a
sebagai kunci rahasia pada algoritma ElGamal. Jika
diberikan cipherteks (�, ), maka untuk mendekripsi
γ dan digunakan kunci rahasia a, dan plainteks m
diperoleh kembali dengan persamaan :
� = �.(�α)–1 ��� �
(4)
m = �/�a mod p.
(5)
Karena Zp* merupakan grup siklik yang
mempunyai order p -1 dan a є {1,..., p - 2}, maka
(��)−1 = �−� = ��−1−� ��� �.
Algoritma Dekripsi pesan :
1. Untuk i dari 1 sampai n :
Hitung ��−1−� mod p
Hitung mi = �. (��)-1 mod p
4. Diperoleh plainteks m1 m2 , ,..., mn.
5. Konversikan masing-masing bilangan m1, m2,...,
mn ke dalam karakter sesuai dengan kode ASCIInya, kemudian hasilnya digabungkan kembali.
6.
Analisa Hasil
Analisa dilakukan dengan menentukan sebuah
bilangan prima tetap, dengan bilangan prima
tersebut ditentukan beberapa elemen primitif. Proses
selanjutnya dilakukan pembentukan kunci public
dan kunci privat berdasarkan bilangan prima dan
elemen primitif yang sudah ada. Langkah
selanjutnya adalah melakukan proses enkripsi dan
dekripsi terhadap sebuah file dengan memvariasikan
elemen primitif.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan nilai
bilangan prima tetap p=719, kapasitas file 227 Byte
dengan variasi nilai elemen primitif.
Tabel 1. Variasi elemen primitif
No
nilai
Tabel 2. Variasi elemen non primitif
No
nilai
1
716
Hasil
Enkripsi
(Byte)
1750
1523
571
2
650
1736
227
1509
565
3
600
1726
227
1499
560
4
520
1735
227
1508
564
5
432
1735
227
1508
564
6
370
1729
227
1502
562
7
234
1751
227
1524
571
8
140
1731
227
1504
563
9
100
1728
227
1501
561
10
10
1733
227
1506
563
1508
564
α
Hasil
Dekripsi
(Byte)
227
Selisih
(Byte)
Selisih
(%)
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif file berhasil
dienkripsi dan didekripsi dengan baik. Besar
kecilnya elemen non primitif yang digunakan tidak
mempengaruhi besarnya file hasil enkripsi. Selisih
kapasitas file asli dengan file hasil enkripsi mencapai
564 %.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan nilai
bilangan prima tetap p=719, kapasitas file dan nilai
elemen primitif bervariasi.
1
717
Hasil
Enkripsi
(Byte)
1748
2
649
1736
227
1509
565
3
601
1755
227
1528
573
ukuran
File
(Byte)
4
519
1733
227
1506
563
32
5
431
1745
227
1518
569
431
246
32
214
569
11
249
32
217
578
α
Hasil
Dekripsi
(Byte)
227
Selisih
(Byte)
Selisih
(%)
1521
570
primitif
Nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
717
250
32
218
581
6
371
1749
227
1522
570
7
237
1754
227
1527
573
Tabel 3.
Variasi kapasitas file dan
Selisih rata-rata
227
216
576
717
1748
227
1521
570
1745
227
1518
569
1735
227
1508
564
1515
568
8
141
1748
227
1521
570
9
97
1737
227
1510
565
431
10
11
1735
227
1508
564
11
Selisih Rata-rata
1517
Selisih rata-rata
568
400
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitif file berhasil dienkripsi
dan didekripsi dengan baik. Besar kecilnya elemen
primitif yang digunakan tidak mempengaruhi
besarnya file hasil enkripsi. Selisih kapasitas file asli
dengan file hasil enkripsi mencapai 568 %.
Langkah berikutnya melakukan pengujian yang
sama untuk elemen non primitif. Berikut tabel hasil
pengujian enkripsi dan dekripsi file text untuk
elemen non primitif dengan nilai bilangan prima
tetap p=719, kapasitas file 227 Byte dengan variasi
nilai elemen non primitif.
700
717
3072
400
2672
568
431
3081
400
2681
570
11
3084
400
2684
571
Selisih rata-rata
2679
570
717
5407
700
4707
572
431
5386
700
4686
569
5379
700
4679
568
Selisih rata-rata
4690
570
11
1000
elemen
717
7692
1000
6692
569
431
7713
1000
6713
571
11
7715
1000
6715
572
Selisih rata-rata
6706
571
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitive, file dengan
kapasitas berbeda tetap berhasil dienkripsi dan
didekripsi dengan baik. Variasi kapasitas file tidak
mempengaruhi selisih kapasitas file asli dengan file
hasil enkripsi.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen non primitif dengan
nilai bilangan prima tetap p=719, kapasitas file dan
nilai elemen non primitif bervariasi.
Tabel 4.
primitif
Nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
32
716
242
32
210
556
432
248
32
216
575
10
242
32
210
556
Selisih rata-rata
212
563
716
1750
227
1523
571
432
1735
227
1508
564
10
1733
227
1506
563
1512
566
Selisih rata-rata
400
700
716
3089
400
2689
572
432
3041
400
2641
560
10
3058
400
2658
565
Selisih rata-rata
2662
566
1721
227
1494
558
2
263
5
1623
227
1396
515
3
347
5
1701
227
1474
549
4
467
5
1711
227
1484
554
5
503
5
1704
227
1477
551
6
587
5
1717
227
1490
556
7
719
11
1735
227
1508
564
8
839
11
1757
227
1530
574
9
983
5
1764
227
1537
577
10
1019
6
1764
227
1537
577
1492
558
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitif dan nilai bilangan
prima p yag bervariasi, proses enkripsi dan dekripsi
dapat dilakukan dengan baik. Dari tabel di atas dapat
dilihat pula bahwa semakin besar nilai bilangan
prima p, maka nilai selisih antara file asli dengan file
hasil enkripsi semakin besar.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen non primitif dengan
kapasitas file tetap 227 Byte dan nilai bilangan prima
bervariasi.
Tabel 6. Variasi bilangan prima untuk elemen non
primitif
No
Nilai
P
nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
1
107
6
1360
263
6
1573
227
1133
399
227
1346
493
716
5415
700
4715
574
432
5361
700
4661
566
3
347
6
1650
227
1423
527
10
5311
700
4611
559
4
467
6
1721
227
1494
558
4662
566
5
503
6
1697
227
1470
548
716
7694
1000
6694
569
6
587
6
1727
227
1500
561
432
7628
1000
6628
563
7
719
10
1733
227
1506
563
10
7663
1000
6663
566
8
839
10
1736
227
1509
565
566
9
983
6
1759
227
1532
575
10
1019
7
1786
227
1559
587
1447
538
Selisih rata-rata
6661
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif, file dengan
kapasitas berbeda tetap berhasil dienkripsi dan
didekripsi dengan baik. Variasi kapasitas file tidak
mempengaruhi selisih kapasitas file asli dengan file
hasil enkripsi.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan
kapasitas file tetap 227 Byte dan nilai bilangan prima
bervariasi.
Tabel 5.
primitif
No
5
2
Selisih rata-rata
1000
107
Variasi kapasitas file dan elemen non
ukuran
File
(Byte)
227
1
Nilai
P
Variasi bilangan prima untuk elemen
nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif dan nilai bilangan
prima p yag bervariasi, proses enkripsi dan dekripsi
dapat dilakukan dengan baik. Dari tabel di atas dapat
dilihat pula bahwa semakin besar nilai bilangan
prima p, maka nilai selisih antara file asli dengan file
hasil enkripsi semakin besar.
7.
Kesimpulan
Dari hasil analisa dapat disimpulkan beberapa
hal sebagai berikut:
1.
2.
3.
4.
5.
Proses enkripsi dan dekripsi dapat dilakukan
dengan baik dengan pembentukan kunci yang
menggunakan elemen primitif ataupun
elemen non primitif.
Elemen primitif ataupun elemen non primitif
tidak mempengaruhi proses enkripsi dan
proses dekripsi.
Besar kecilnya elemen primitif maupun
elemen non primitif yang digunakan tidak
mempengaruhi besarnya file hasil enkripsi.
Pada algoritma elgamal, dengan bilangan
prima 3 digit, selisih antara file asli dengan
file hasil enkripsi mencapai 500 % lebih.
Semakin besar bilangan prima yang
digunakan dalam pembentukan kunci, maka
kapasitas file hasil enkripsi juga akan
semakin besar.
Daftar Pustaka:
[1]
[2]
[3]
[4]
[5]
Aribowo. Eko, Aplikasi Pengamanan Data
Office dengan Algoritma Kriptografi kunci
Asimetris Elgamal, INFORMATIKA Vol 2,
No.2, Juli 2008
DT Massandi, Algoritma Elgamal Dalam
Pengamanan Pesan Rahasia, informatika,
2009
Ifanto. M, Metode Enkripsi Dan Dekripsi
Dengan Menggunakan
Algoritma Elgamal, IF2091, 2009
M. Taufiq, Dwiono. Wakhyu, Hartanto. Tri,
Penerapan Algoritma Kriptografi ElGamal
untuk Pengaman File Citra, EECCIS Vol.
IV, No. 1, Juni 2010
Widyartono. Agustinus, Algoritma Elgamal
Untuk Enkripsi Data
Menggunakan Gnupg, TEKNOLOGI DAN
INFORMATIKA (TEKNOMATIKA), Vol.1,
No.1 Januari 2011
PADA ALGORITMA ELGAMAL
Yudhi Andrian1
1
1
Teknik Informatika, STMIK Potensi Utama
STMIK Potensi Utama, Jl. K.L. Yos Sudarso Km 6,5 No. 3A Medan
1
[email protected]
Abstrak
Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi.
Proses pembentukan kunci kriptografi ElGamal terdiri dari pembentukan kunci privat (rahasia) dan
pembentukan kunci public (umum). Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk
membentuk grup Zp* dan elemen primitif sebagai dasar pembentuk kunci public sedangkan sembarang bilangan
acak digunakan sebagai pembentuk kunci privat. pada penelitian sebelumnya digunakan elemen primitif pada
proses pembentukan kunci namun tidak dijelaskan alasan mengapa harus menggunakan elemen primitif.
Penelitian ini mencoba menganalisa pengguaan elemen primitif dan elemen non primitif pada pembentukan
kunci algoritma elgamal . Analisa dilakukan dengan menentukan sebuah bilangan prima tetap, dengan bilangan
prima tersebut ditentukan beberapa elemen primitif. Proses selanjutnya dilakukan pembentukan kunci public dan
kunci privat berdasarkan bilangan prima dan elemen primitif yang sudah ada. Langkah selanjutnya adalah
melakukan proses enkripsi dan dekripsi terhadap sebuah file dengan memvariasikan elemen primitif, elemen non
primitif, memvariasikan kapasitas file dan memvariasikan nilai bilangan prima yang digunakan . Dari hasil
analisa dapat disimpulkan bahwa proses enkripsi dan dekripsi dapat dilakukan dengan baik dengan pembentukan
kunci yang menggunakan elemen primitif ataupun elemen non primitif, Elemen primitif ataupun elemen non
primitif tidak mempengaruhi proses enkripsi dan proses dekripsi, besar kecilnya elemen primitif maupun elemen
non primitif yang digunakan tidak mempengaruhi besarnya file hasil enkripsi, dengan bilangan prima 3 digit,
selisih antara file asli dengan file hasil enkripsi mencapai 500 % lebih, semakin besar bilangan prima yang
digunakan dalam pembentukan kunci, maka kapasitas file hasil enkripsi juga akan semakin besar.
Kata kunci : Kriptografi, Enkripsi, Dekripsi, Elgamal, elemen primitif.
1.
Pendahuluan
Algoritma ElGamal adalah algoritma yang
sistem pengamanannya didasarkan pada masalah
Logaritma Diskrit. Algoritma ElGamal terdiri dari
tiga proses, yaitu proses pembentukan kunci, proses
enkripsi dan proses dekripsi.
Proses pembentukan kunci kriptografi ElGamal
terdiri dari pembentukan kunci privat (rahasia) dan
pembentukan kunci public (umum). Pada proses ini
dibutuhkan sebuah bilangan prima p yang digunakan
untuk membentuk grup Zp* dan elemen primitif
(primitive root) sebagai dasar pembentuk kunci
public (umum) sedangkan sembarang bilangan acak
a {0, 1,…, p-2) digunakan sebagai pembentuk
kunci privat (rahasia). [3]
Dalam penelitian sebelumnya, Mukhammad
Ifanto melakukan penelitian metode enkripsi dan
dekripsi menggunakan algoritma elgamal, dimana
pada penelitian ini proses pembentukan kunci
menggunakan bilangan prima aman besar dan
elemen primitif. [3]
Danang Tri Massandy menggunakan algoritma
elgamal dalam pengamanan pesan rahasia. [2]. Eko
aribowo membuat aplikasi pengamanan dokumen
office dengan algoritma kunci asimetris elgamal. [1].
M. Taufiq Tamam, et. Al menerapkan kriptografi
elgamal untuk mengamankan file citra. [4].
Agustinus widyartono menggunakan algoritma
elgamal untuk enkripsi data menggunakan GNUPG.
[5].
Dari penelitian sebelumnya, [1-5] sebagian
menggunakan elemen primitif pada proses
pembentukan kunci dan sebagian yang lain tidak
menjelaskan penggunaan elemen primitif dalam
pembentukan kuncinya.
Berdasarkan uraian di atas, penelitian ini
mencoba menganalisa pengguaan elemen primitif
dan elemen non primitif pada pembentukan kunci
algoritma elgamal.
2.
Penentuan elemen primitif dan Non Primitif
Teorema:
“Suatu elemen yang membangun Zp * disebut
elemen primitif (primitive root) mod p.”
“Bila α2 mod p ≠ 1 dan αq mod p ≠ 1. Jika keduanya
dipenuhi, maka α adalah elemen primitif dari Zp *.”
[3].
Input : bilangan prima p ≥ 5 dan α Zp *
Output : elemen primitif atau bukan elemen
primitive
Langkah
:
1) Hitung q =
2) Hitung 2 (mod p) dan q (mod p)
3) Jika 2 (mod p) = 1 maka output :
elemen non primitif
4) Jika q (mod p) = 1 maka output :
elemen non primitif
5) output : element primitif
3.
Proses pembentukan kunci
Proses pertama adalah pembentukan kunci
yang terdiri dari kunci private (rahasia) dan kunci
public (umum). Pada proses ini dibutuhkan sebuah
bilangan prima p yang digunakan untuk membentuk
grup Zp*, elemen primitif α dan sembarang a ϵ
{1,..., p - 2}. Kunci publik algoritma ElGamal
berupa pasangan 3 bilangan, yaitu (p, α, β), dengan �
= αa ��� � Sedangkan kunci rahasianya adalah
bilangan a tersebut. Karena pada algoritma ElGamal
menggunakan bilangan bulat dalam proses
perhitungannya, maka pesan harus dikonversi ke
dalam suatu bilangan bulat.
Untuk mengubah pesan menjadi bilangan bulat,
digunakan kode ASCII (American Standard for
Information Interchange). Kode ASCII merupakan
representasi numerik dari karakter-karakter yang
digunakan pada komputer, serta mempunyai nilai
minimal 0 dan maksimal 255. Kode ASCII
berkorespondensi 1-1 dengan karakter pesan.
Algoritma membangkitkan Pasangan Kunci :
1. Pilih sembarang bilangan prima p besar dan
elemen primitif (Primitive Root) grup Zp*
dari bilangan bulat mod p
2. Pilih bilangan bulat acak a, dengan syarat 1 ≤ a
≤ p – 2.
3. Hitung � = αa mod p.
(1)
4. Publikasikan nilai p, α dan β , serta rahasiakan
a.
Hasil algoritma ini adalah kunci publik : triple
(�, α, p) dan kunci privat : pasangan (a, p). Pihak
yang membuat kunci publik dan kunci rahasia
adalah pengirim, sedangkan pihak penerima hanya
mengetahui kunci publik yang diberikan oleh
pengirim, dan kunci publik tersebut digunakan untuk
mengenkripsi pesan.
4.
Proses Enkripsi
Pada
proses
ini
pesan
dienkripsi
menggunakan kunci publik (�, α, p) dan
sembarang bilangan acak rahasia k є {1, ..., p-2}.
Misalkan m adalah pesan yang akan dikirim.
Selanjutnya, m diubah ke dalam blok-blok
karakter dan setiap karakter dikonversikan ke
dalam kode ASCII, sehingga diperoleh plainteks
m1, m2, ...,mn dengan mi є {1, 2,..., p-1}, i = 1, 2,...,
n. Untuk nilai ASCII pemisah “;” digunakan untuk
menandai akhir dari suatu teks.
Proses enkripsi pada algoritma ElGamal
dilakukan dengan menghitung :
� = �� ��� � dan (2)
� = ��.� ��� �
(3)
dengan k є {1, ..., p-2}acak rahasia. Bilangan
acak k ditentukan oleh pihak pengirim dan harus
dirahasiakan,
jadi
hanya
pengirim
yang
mengetahuinya. Sedangkan nilai k hanya digunakan
saat melakukan enkripsi dan tidak perlu disimpan.
Diperoleh cipherteks (�, �). Algoritma enkripsi
pesan :
1. Susun plainteks menjadi blok-blok, m1, m2, …,
sedemikian
sehingga
setiap
blok
merepresentasikan nilai di dalam rentang 0
sampai p – 1 (dengan mengubah nilai m menjadi
kode ASCII).
2. Pilih bilangan acak k, yang dalam hal ini 0 < k < p
– 1, sedemikian sehingga k relatif prima dengan
p – 1.
3. Setiap blok m dienkripsi dengan rumus :
� = αk mod p dan
� = βk m mod p.
Pasangan � dan � adalah cipherteks untuk
blok pesan m.
5.
Proses Dekripsi
Setelah menerima cipherteks (�, ), proses
selanjutnya
adalah
mendekripsi
cipherteks
menggunakan kunci publik p dan kunci rahasia a.
Dapat ditunjukkan bahwa plainteks m dapat
diperoleh dari cipherteks menggunakan kunci
rahasia a.
Diberikan (p, α, β) sebagai kunci publik dan a
sebagai kunci rahasia pada algoritma ElGamal. Jika
diberikan cipherteks (�, ), maka untuk mendekripsi
γ dan digunakan kunci rahasia a, dan plainteks m
diperoleh kembali dengan persamaan :
� = �.(�α)–1 ��� �
(4)
m = �/�a mod p.
(5)
Karena Zp* merupakan grup siklik yang
mempunyai order p -1 dan a є {1,..., p - 2}, maka
(��)−1 = �−� = ��−1−� ��� �.
Algoritma Dekripsi pesan :
1. Untuk i dari 1 sampai n :
Hitung ��−1−� mod p
Hitung mi = �. (��)-1 mod p
4. Diperoleh plainteks m1 m2 , ,..., mn.
5. Konversikan masing-masing bilangan m1, m2,...,
mn ke dalam karakter sesuai dengan kode ASCIInya, kemudian hasilnya digabungkan kembali.
6.
Analisa Hasil
Analisa dilakukan dengan menentukan sebuah
bilangan prima tetap, dengan bilangan prima
tersebut ditentukan beberapa elemen primitif. Proses
selanjutnya dilakukan pembentukan kunci public
dan kunci privat berdasarkan bilangan prima dan
elemen primitif yang sudah ada. Langkah
selanjutnya adalah melakukan proses enkripsi dan
dekripsi terhadap sebuah file dengan memvariasikan
elemen primitif.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan nilai
bilangan prima tetap p=719, kapasitas file 227 Byte
dengan variasi nilai elemen primitif.
Tabel 1. Variasi elemen primitif
No
nilai
Tabel 2. Variasi elemen non primitif
No
nilai
1
716
Hasil
Enkripsi
(Byte)
1750
1523
571
2
650
1736
227
1509
565
3
600
1726
227
1499
560
4
520
1735
227
1508
564
5
432
1735
227
1508
564
6
370
1729
227
1502
562
7
234
1751
227
1524
571
8
140
1731
227
1504
563
9
100
1728
227
1501
561
10
10
1733
227
1506
563
1508
564
α
Hasil
Dekripsi
(Byte)
227
Selisih
(Byte)
Selisih
(%)
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif file berhasil
dienkripsi dan didekripsi dengan baik. Besar
kecilnya elemen non primitif yang digunakan tidak
mempengaruhi besarnya file hasil enkripsi. Selisih
kapasitas file asli dengan file hasil enkripsi mencapai
564 %.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan nilai
bilangan prima tetap p=719, kapasitas file dan nilai
elemen primitif bervariasi.
1
717
Hasil
Enkripsi
(Byte)
1748
2
649
1736
227
1509
565
3
601
1755
227
1528
573
ukuran
File
(Byte)
4
519
1733
227
1506
563
32
5
431
1745
227
1518
569
431
246
32
214
569
11
249
32
217
578
α
Hasil
Dekripsi
(Byte)
227
Selisih
(Byte)
Selisih
(%)
1521
570
primitif
Nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
717
250
32
218
581
6
371
1749
227
1522
570
7
237
1754
227
1527
573
Tabel 3.
Variasi kapasitas file dan
Selisih rata-rata
227
216
576
717
1748
227
1521
570
1745
227
1518
569
1735
227
1508
564
1515
568
8
141
1748
227
1521
570
9
97
1737
227
1510
565
431
10
11
1735
227
1508
564
11
Selisih Rata-rata
1517
Selisih rata-rata
568
400
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitif file berhasil dienkripsi
dan didekripsi dengan baik. Besar kecilnya elemen
primitif yang digunakan tidak mempengaruhi
besarnya file hasil enkripsi. Selisih kapasitas file asli
dengan file hasil enkripsi mencapai 568 %.
Langkah berikutnya melakukan pengujian yang
sama untuk elemen non primitif. Berikut tabel hasil
pengujian enkripsi dan dekripsi file text untuk
elemen non primitif dengan nilai bilangan prima
tetap p=719, kapasitas file 227 Byte dengan variasi
nilai elemen non primitif.
700
717
3072
400
2672
568
431
3081
400
2681
570
11
3084
400
2684
571
Selisih rata-rata
2679
570
717
5407
700
4707
572
431
5386
700
4686
569
5379
700
4679
568
Selisih rata-rata
4690
570
11
1000
elemen
717
7692
1000
6692
569
431
7713
1000
6713
571
11
7715
1000
6715
572
Selisih rata-rata
6706
571
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitive, file dengan
kapasitas berbeda tetap berhasil dienkripsi dan
didekripsi dengan baik. Variasi kapasitas file tidak
mempengaruhi selisih kapasitas file asli dengan file
hasil enkripsi.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen non primitif dengan
nilai bilangan prima tetap p=719, kapasitas file dan
nilai elemen non primitif bervariasi.
Tabel 4.
primitif
Nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
32
716
242
32
210
556
432
248
32
216
575
10
242
32
210
556
Selisih rata-rata
212
563
716
1750
227
1523
571
432
1735
227
1508
564
10
1733
227
1506
563
1512
566
Selisih rata-rata
400
700
716
3089
400
2689
572
432
3041
400
2641
560
10
3058
400
2658
565
Selisih rata-rata
2662
566
1721
227
1494
558
2
263
5
1623
227
1396
515
3
347
5
1701
227
1474
549
4
467
5
1711
227
1484
554
5
503
5
1704
227
1477
551
6
587
5
1717
227
1490
556
7
719
11
1735
227
1508
564
8
839
11
1757
227
1530
574
9
983
5
1764
227
1537
577
10
1019
6
1764
227
1537
577
1492
558
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen primitif dan nilai bilangan
prima p yag bervariasi, proses enkripsi dan dekripsi
dapat dilakukan dengan baik. Dari tabel di atas dapat
dilihat pula bahwa semakin besar nilai bilangan
prima p, maka nilai selisih antara file asli dengan file
hasil enkripsi semakin besar.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen non primitif dengan
kapasitas file tetap 227 Byte dan nilai bilangan prima
bervariasi.
Tabel 6. Variasi bilangan prima untuk elemen non
primitif
No
Nilai
P
nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
1
107
6
1360
263
6
1573
227
1133
399
227
1346
493
716
5415
700
4715
574
432
5361
700
4661
566
3
347
6
1650
227
1423
527
10
5311
700
4611
559
4
467
6
1721
227
1494
558
4662
566
5
503
6
1697
227
1470
548
716
7694
1000
6694
569
6
587
6
1727
227
1500
561
432
7628
1000
6628
563
7
719
10
1733
227
1506
563
10
7663
1000
6663
566
8
839
10
1736
227
1509
565
566
9
983
6
1759
227
1532
575
10
1019
7
1786
227
1559
587
1447
538
Selisih rata-rata
6661
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif, file dengan
kapasitas berbeda tetap berhasil dienkripsi dan
didekripsi dengan baik. Variasi kapasitas file tidak
mempengaruhi selisih kapasitas file asli dengan file
hasil enkripsi.
Berikut tabel hasil pengujian enkripsi dan
dekripsi file text untuk elemen primitif dengan
kapasitas file tetap 227 Byte dan nilai bilangan prima
bervariasi.
Tabel 5.
primitif
No
5
2
Selisih rata-rata
1000
107
Variasi kapasitas file dan elemen non
ukuran
File
(Byte)
227
1
Nilai
P
Variasi bilangan prima untuk elemen
nilai
α
Hasil
Enkripsi
(Byte)
Hasil
Dekripsi
(Byte)
Selisih
(Byte)
Selisih
(%)
Selisih Rata-rata
Dari tabel di atas dapat dilihat bahwa dengan
menggunakan elemen non primitif dan nilai bilangan
prima p yag bervariasi, proses enkripsi dan dekripsi
dapat dilakukan dengan baik. Dari tabel di atas dapat
dilihat pula bahwa semakin besar nilai bilangan
prima p, maka nilai selisih antara file asli dengan file
hasil enkripsi semakin besar.
7.
Kesimpulan
Dari hasil analisa dapat disimpulkan beberapa
hal sebagai berikut:
1.
2.
3.
4.
5.
Proses enkripsi dan dekripsi dapat dilakukan
dengan baik dengan pembentukan kunci yang
menggunakan elemen primitif ataupun
elemen non primitif.
Elemen primitif ataupun elemen non primitif
tidak mempengaruhi proses enkripsi dan
proses dekripsi.
Besar kecilnya elemen primitif maupun
elemen non primitif yang digunakan tidak
mempengaruhi besarnya file hasil enkripsi.
Pada algoritma elgamal, dengan bilangan
prima 3 digit, selisih antara file asli dengan
file hasil enkripsi mencapai 500 % lebih.
Semakin besar bilangan prima yang
digunakan dalam pembentukan kunci, maka
kapasitas file hasil enkripsi juga akan
semakin besar.
Daftar Pustaka:
[1]
[2]
[3]
[4]
[5]
Aribowo. Eko, Aplikasi Pengamanan Data
Office dengan Algoritma Kriptografi kunci
Asimetris Elgamal, INFORMATIKA Vol 2,
No.2, Juli 2008
DT Massandi, Algoritma Elgamal Dalam
Pengamanan Pesan Rahasia, informatika,
2009
Ifanto. M, Metode Enkripsi Dan Dekripsi
Dengan Menggunakan
Algoritma Elgamal, IF2091, 2009
M. Taufiq, Dwiono. Wakhyu, Hartanto. Tri,
Penerapan Algoritma Kriptografi ElGamal
untuk Pengaman File Citra, EECCIS Vol.
IV, No. 1, Juni 2010
Widyartono. Agustinus, Algoritma Elgamal
Untuk Enkripsi Data
Menggunakan Gnupg, TEKNOLOGI DAN
INFORMATIKA (TEKNOMATIKA), Vol.1,
No.1 Januari 2011