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
yudhi.andrian@gmail.com

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

Dokumen yang terkait

Dokumen baru