Kriptografi Kunci Publik Algoritma Elgamal Dengan Metode The Sieve Of Eratosthenes Untuk Pembangkitan Bilangan Prima

(1)

SKRIPSI

SYAUVIKA LUBIS

061401001

PROGRAM STUDI S-1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2012


(2)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

SYAUVIKA LUBIS 061401001

PROGRAM STUDI S-1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

PERSETUJUAN

Judul : KRIPTOGRAFI KUNCI PUBLIK ALGORITMA

ELGAMAL DENGAN METODE THE SIEVE OF ERATOSTHENES UNTUK PEMBANGKITAN BILANGAN PRIMA

Kategori : SKRIPSI

Nama : SYAUVIKA LUBIS

Nomor Induk Mahasiswa : 061401001

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Maya Silvi Lydia, B. Sc, MSc M. Andri Budiman, S.T, M.CompSc, MEM NIP. 197401272002122001 NIP. 197510082008011001

Diketahui/ Disetujui oleh

Departemen Ilmu Komputer FMIPA USU Ketua,

Dr. Poltak Sihombing, M. Kom NIP. 196203171991021001


(4)

PERNYATAAN

KRIPTOGRAFI KUNCI PUBLIK ALGORITMA ELGAMAL DENGAN METODE THE SIEVE OF ERATOSTHENES

UNTUK PEMBANGKITAN BILANGAN PRIMA SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan,

Syauvika Lubis 061401001


(5)

PENGHARGAAN

Alhamdulillahirrabbil’alamin. Puji dan syukur penulis panjatkan kepada Allah SWT atas limpahan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan tugas akhir ini sebagai salah satu syarat untuk menyelesaikan studi pada S1 Ilmu Komputer FMIPA USU. Shalawat dan salam kepada Rasulullah Muhammad SAW.

Pada kesempatan ini penulis ingin menyampaikan terima kasih kepada pihak-pihak yang telah bersedia membantu dalam proses pembuatan tugas akhir ini hingga selesai. Dengan tulus penulis mengucapkan terima kasih kepada:

1. Bapak M. Andri Budiman, S.T, M.CompSc, MEM dan Ibu Maya Silvi Lydia, B. Sc, MSc selaku dosen pembimbing yang telah bersedia meluangkan waktu, tenaga, dan pikiran untuk penulis demi terselesaikannya tugas akhir ini.

2. Bapak Dr. Poltak Sihombing, M. Kom selaku dosen pembanding I dan Ketua Program Studi S1 Ilmu Komputer Fakultas MIPA Universitas Sumatera Utara, serta Ibu Dian Rachmawati, S. Si, M. Kom selaku dosen pembanding II dan Kepala Lab. Studio Tugas Akhir yang telah memberikan kritik dan saran untuk perbaikan skripsi ini.

3. Dekan dan Pembantu Dekan Fakultas MIPA Universitas Sumatera Utara. 4. Seluruh Dosen Program Studi S1 Ilmu Komputer Fakultas MIPA Universitas

Sumatera Utara yang telah memberikan ilmu yang bermanfaat kepada penulis selama kuliah.

5. Semua pegawai Studi S1 Ilmu Komputer.

6. Teman-teman kuliah, terutama Siti Rezeki, Faurina, Suharsono, Putri, dan Amelia yang membantu memberikan motivasi dan saran.

7. Adik-adik tersayang, Syaravina dan Sofyanda yang membantu memberikan semangat.

8. Dan yang teristimewa Ibunda Syafrida Rahmi dan Ayahanda Satria Muda Lubis yang selalu mendukung moril dan materil, serta berdořa untuk kebaikan diri penulis.

Akhirnya, penulis hanya dapat memanjatkan dořa, semoga Allah SWT membalas kebaikan semuanya.


(6)

ABSTRAK

Pada penelitian untuk tugas akhir ini dibangun sistem kriptografi kunci publik berdasarkan algoritma ElGamal yang berguna mengamankan pesan user tanpa perlu mengalami kesulitan dalam mendistribusikan kunci karena kunci untuk dekripsi (kunci privat) berbeda dengan kunci untuk enkripsi (kunci publik) sehingga kunci enkripsi dapat didistribusikan kepada publik tanpa harus mengungkapkan kunci dekripsi, berbeda dengan kriptografi kunci simetri yang kunci dekripsi dan enkripsinya sama. Selain algoritma ElGamal, penelitian ini juga menerapkan pembangkit bilangan prima metode The Sieve of Eratosthenes pada sistem karena proses pembangkitan kunci algoritma ElGamal melibatkan bilangan prima. Dengan diterapkannya metode The Sieve of Eratosthenes pada sistem, proses pembangkitan kunci dimulai dengan input bilangan integer N untuk membangkitkan deretan bilangan prima antara 2 dan N menggunakan The Sieve of Eratosthenes, kemudian pasangan kunci publik dan kunci privat algoritma ElGamal dibangkitkan berdasarkan deretan tersebut. Sistem diwujudkan dalam bentuk sebuah aplikasi komputer yang dibangun menggunakan bahasa pemrograman Java dan NetBeans IDE. Pengujian pada aplikasi membuktikan sistem dapat menjalankan fungsi-fungsinya sesuai dengan rancangan, yaitu enkripsi pada aplikasi ini dapat mengubah plainteks ke bentuk cipherteks kemudian mengembalikannya ke bentuk plainteks semula melalui proses dekripsi, serta mampu menghasilkan pasangan kunci untuk digunakan pada proses enkripsi dan dekripsi dengan syarat kunci publik p lebih besar dari plainteks.

Kata Kunci : Kriptografi Kunci Publik, ElGamal, Pembangkit Kunci, Enkripsi, Dekripsi, The Sieve of Eratosthenes


(7)

ELGAMAL PUBLIC KEY CRYPTOSYSTEM USING THE SIEVE OF ERATOSTHENES

TO GENERATE PRIME NUMBERS

ABSTRACT

This work is to built a public key cryptosystem based on the ElGamal algorithm which is useful for securing user messages without having difficulty in key distribution since it uses a different key for decryption (private key) and encryption (public key). Thus the encryption key can be distributed to public without having to disclose the decryption key, in contrast to symmetric key cryptography which uses the same key for encryption and decryption. Not only ElGamal algorithm, this research applies The Sieve of Eratosthenes method as a prime numbers generator on the system because the ElGamal key generation algorithm involves prime numbers. With the implementation of the Sieve of Eratosthenes method on the system, key generation process starts with an integer input N to generate a set of primes between 2 and N using the Sieve of Eratosthenes, then the public and private key pair's of ElGamal algorithm will be generated based on the set. System embodied in the form of a software is built using the Java programming language and NetBeans IDE. Tests on the software prove the system can carry out its functions in accordance with the design, that is encryption on this software can convert a plaintext into ciphertext form then convert it back to its original plaintext form through a decryption process and is able to generate key pairs for use in the process of encryption and decryption with terms the public key p is greater than the plaintext.

Key Words : Public Key Cryptography, ElGamal, Key Generator, Encryption, Decryption, The Sieve of Eratosthenes


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1Latar Belakang Masalah 1

1.2Rumusan Masalah 2

1.3Batasan Masalah 3

1.4Tujuan Penelitian 3

1.5Manfaat Penelitian 3

1.6Metode Penelitian 4

1.7Sistematika Penulisan 4

Bab 2 Landasan Teori 6

2.1 Kriptografi 6

2.1.1 Tujuan Kriptografi 7

2.1.2 Sejarah Kriptografi 7

2.2 Kriptografi Kunci Publik 10

2.2.1 Konsep Kriptografi Kunci Publik 11

2.2.2 Aplikasi Penggunaan Kriptografi Kunci Publik 14

2.3 Algoritma ElGamal 14

2.3.1 Bilangan Prima 15

2.3.2 The Sieve of Eratosthenes 16

2.3.3 Relatif Prima 18

2.3.4 Fungsi Totient Euler  19

2.3.5 Akar Primitif (Primitive Root) dari Bilangan Prima p 19

2.3.6 Perpangkatan Modulo 20

2.4 NetBeans IDE 21

Bab 3 Analisis dan Perancangan Sistem 23

3.1 Analisis Sistem 23

3.1.1 Pembangkit Bilangan Prima 24

3.1.1.1 The Sieve of Eratosthenes 25

3.1.2 Algoritma Kriptografi Kunci Publik ElGamal 26 3.1.2.1 Proses Pembangkitan Kunci Algoritma ElGamal 26


(9)

3.1.2.2 Proses Enkripsi Algoritma ElGamal 27

3.1.2.3 Proses Dekripsi Algoritma ElGamal 27

3.2 Perancangan Aplikasi 31

3.2.1 Perancangan Antar Muka 32

3.2.2 Flowchart 35

3.2.2.1 Flowchart Pembangkit Kunci 35

3.2.2.2 Flowchart The Sieve of Eratosthenes 36

3.2.2.3 Flowchart Enkripsi 38

3.2.2.4 Flowchart Dekripsi 39

Bab 4 Implementasi dan Pengujian 40

4.1 Tampilan Antar Muka 40

4.1.1 Jendela Menu Utama 40

4.1.2 Jendela Pembangkit Kunci 41

4.1.3 Jendela Enkripsi 42

4.1.4 Jendela Dekripsi 43

4.2 Pengujian 44

Bab 5 Kesimpulan dan Saran 50

5.1 Kesimpulan 50

5.2 Saran 51

Daftar Pustaka 52


(10)

DAFTAR TABEL

Halaman 2.1 Komputasi running time pembangkit bilangan prima

metode standar pada komputer 3.2 GHz sistem operasi

Linux 17

2.2 Komputasi running time pembangkit bilangan prima metode The Sieve of Eratosthenes pada komputer 3.2

GHz sistem operasi Linux 17

2.3 Prosedur Pembangkit Bilangan Prima Metode Standar 17 2.4 Prosedur Pembangkit Bilangan Prima Metode The Sieve

of Eratosthenes 18

3.1 Tabel Bilangan Prima di antara Bilangan 1-350 28 4.1 Tabel Hasil Pengujian Aplikasi KriptoElGamal 44


(11)

DAFTAR GAMBAR

Halaman

2.1 Skema Kriptografi Nirsimetri 12

3.1 Tampilan Rancangan Jendela Menu Utama 32

3.2 Tampilan Rancangan Jendela Pebangkit Kunci 33

3.3 Tampilan Rancangan Jendela Enkripsi 34

3.4 Tampilan Rancangan Jendela Dekripsi 35

3.5 Flowchart Prosedur Pembangkit Kunci 36

3.6 Flowchart Prosedur Pembangkit Bilangan Prima The Sieve of

Eratosthenes 37

3.7 Flowchart Prosedur Enkripsi 38

3.8 Flowchart Prosedur Dekripsi 39

4.1 Jendela Menu Utama Aplikasi KriptoElGamal 41

4.2 Jendela Pembangkit Kunci Aplikasi KriptoElGamal 41

4.3 Jendela Enkripsi Aplikasi KriptoElGamal 42

4.4 Jendela Dekripsi Aplikasi KriptoElGamal 43

4.5 Tampilan Output Pembangkitan Kunci 47

4.6 Tampilan Output Enkripsi 48


(12)

ABSTRAK

Pada penelitian untuk tugas akhir ini dibangun sistem kriptografi kunci publik berdasarkan algoritma ElGamal yang berguna mengamankan pesan user tanpa perlu mengalami kesulitan dalam mendistribusikan kunci karena kunci untuk dekripsi (kunci privat) berbeda dengan kunci untuk enkripsi (kunci publik) sehingga kunci enkripsi dapat didistribusikan kepada publik tanpa harus mengungkapkan kunci dekripsi, berbeda dengan kriptografi kunci simetri yang kunci dekripsi dan enkripsinya sama. Selain algoritma ElGamal, penelitian ini juga menerapkan pembangkit bilangan prima metode The Sieve of Eratosthenes pada sistem karena proses pembangkitan kunci algoritma ElGamal melibatkan bilangan prima. Dengan diterapkannya metode The Sieve of Eratosthenes pada sistem, proses pembangkitan kunci dimulai dengan input bilangan integer N untuk membangkitkan deretan bilangan prima antara 2 dan N menggunakan The Sieve of Eratosthenes, kemudian pasangan kunci publik dan kunci privat algoritma ElGamal dibangkitkan berdasarkan deretan tersebut. Sistem diwujudkan dalam bentuk sebuah aplikasi komputer yang dibangun menggunakan bahasa pemrograman Java dan NetBeans IDE. Pengujian pada aplikasi membuktikan sistem dapat menjalankan fungsi-fungsinya sesuai dengan rancangan, yaitu enkripsi pada aplikasi ini dapat mengubah plainteks ke bentuk cipherteks kemudian mengembalikannya ke bentuk plainteks semula melalui proses dekripsi, serta mampu menghasilkan pasangan kunci untuk digunakan pada proses enkripsi dan dekripsi dengan syarat kunci publik p lebih besar dari plainteks.

Kata Kunci : Kriptografi Kunci Publik, ElGamal, Pembangkit Kunci, Enkripsi, Dekripsi, The Sieve of Eratosthenes


(13)

ELGAMAL PUBLIC KEY CRYPTOSYSTEM USING THE SIEVE OF ERATOSTHENES

TO GENERATE PRIME NUMBERS

ABSTRACT

This work is to built a public key cryptosystem based on the ElGamal algorithm which is useful for securing user messages without having difficulty in key distribution since it uses a different key for decryption (private key) and encryption (public key). Thus the encryption key can be distributed to public without having to disclose the decryption key, in contrast to symmetric key cryptography which uses the same key for encryption and decryption. Not only ElGamal algorithm, this research applies The Sieve of Eratosthenes method as a prime numbers generator on the system because the ElGamal key generation algorithm involves prime numbers. With the implementation of the Sieve of Eratosthenes method on the system, key generation process starts with an integer input N to generate a set of primes between 2 and N using the Sieve of Eratosthenes, then the public and private key pair's of ElGamal algorithm will be generated based on the set. System embodied in the form of a software is built using the Java programming language and NetBeans IDE. Tests on the software prove the system can carry out its functions in accordance with the design, that is encryption on this software can convert a plaintext into ciphertext form then convert it back to its original plaintext form through a decryption process and is able to generate key pairs for use in the process of encryption and decryption with terms the public key p is greater than the plaintext.

Key Words : Public Key Cryptography, ElGamal, Key Generator, Encryption, Decryption, The Sieve of Eratosthenes


(14)

BAB I

PENDAHULUAN

1.1Latar Belakang Masalah

Keamanan media penyimpanan dan komunikasi data merupakan hal yang penting, tidak hanya bagi militer dan pemerintahan, namun dalam dunia bisnis dan bagi setiap pribadi, pastinya memiliki informasi yang bersifat penting dan rahasia. Karena itulah banyak pihak yang tidak diinginkan berusaha mencuri atau melakukan manipulasi terhadap informasi rahasia tersebut. Di sinilah peran kriptografi, sebagai ilmu yang mempelajari bagaimana mengamankan informasi yang bersifat rahasia dan penting dari pihak yang tidak berwenang untuk mengetahuinya.

Kriptografi modern mengenal dua jenis algoritma, yaitu algoritma kriptografi nirsimetri dan algoritma kriptografi kunci simetri. Berbeda dengan algoritma kriptografi kunci simetri yang hanya menggunakan sebuah kunci untuk melakukan enkripsi dan dekripsi, algoritma kriptografi kunci nirsimetri memiliki dua kunci, yaitu kunci privat yang berguna untuk dekripsi yang hanya diketahui oleh penerima pesan dan kunci publik yang berguna untuk enkripsi yang diumumkan kepada publik, karena ini pula kriptografi kunci nirsimetri disebut juga kriptografi kunci publik.

Cara kerja kriptorafi kunci publik ini memberikan dua kelebihan yaitu tidak perlu mencari saluran komunikasi yang aman untuk mendistribusikan kunci publik, dan untuk berkomunikasi secara rahasia kepada banyak orang tidak memerlukan kunci rahasia sebanyak jumlah orang tersebut cukup dengan kunci publik dan kunci privat.

ElGamal merupakan sebuah algoritma kriptografi nirsimetri, yang dibuat oleh Taher ElGamal pada tahun 1984 berdasarkan algoritma pertukaran kunci


(15)

Deffie-Hellman. Tidak seperti kriptografi kunci simetri yang kekuatannya terletak pada panjang kuncinya, algoritma ElGamal sebagai algoritma kriptografi kunci publik memiliki kekuatan yang terletak pada sulitnya memecahkan masalah matematis logaritma diskrit.

Algoritma ElGamal menggunakan sembarang bilangan prima untuk membangkitkan pasangan kuncinya, metode The Sieve of Eratosthenes, yang merupakan algoritma sederhana untuk membangkitan bilangan prima, dapat digunakan sebagai pembangkitnya. Metode The Sieve of Eratosthenes membangkitkan bilangan prima dari satu sampai dengan bilangan maksimum yang ditentukan dengan cara mengeliminasi bilangan yang diketahui memiliki faktor bilangan prima selain dirinya sendiri. Metode ini ditemukan oleh Eratosthenes seorang matematikawan Yunani kuno.

Berdasarkan uraian di atas, penulis memilih tugas akhir dengan judul ŖKriptografi Kunci Publik Algoritma ElGamal dengan Metode The Sieve of Eratosthenes untuk Pembangkitan Bilangan Primaŗ yang akan membahas bagaimana kinerja algoritma ElGamal dan The Sieve of Eratosthenes untuk pembangkitan bilangan prima dalam proses enkripsi dan dekripsi pesan.

1.2Rumusan Masalah

Berdasarkan latar belakang, masalah yang dibahas dalam penelitian ini, yaitu:

1. Bagaimana merancang aplikasi kriptografi kunci publik dengan algoritma ElGamal dan

2. Bagaimana menerapkan metode The Sieve of Eratosthenes sebagai pembangkit bilangan prima pada aplikasi kriptografi kunci publik algoritma ElGamal.


(16)

1.3Batasan Masalah

Agar tidak meluasnya pembahasan, maka ruang lingkup penelitian ini dibatasi pada 1. Algoritma kriptografi kunci publik yang diterapkan adalah algoritma ElGamal. 2. Pembangkit bilangan prima digunakan metode The Sieve of Eratosthenes yang

bersifat deterministik.

3. Rancangan aplikasi ini hanya dapat mengenkripsi dan mendekripsi data berupa tulisan yang diinputkan melalui user interface yang disediakan, tidak berupa gambar atau suara.

4. Penelitian ini menggunakan bahasa pemrograman Java dan NetBeans IDE 7.0.1.

1.4Tujuan Penelitian

Tujuan penelitian ini adalah

1. Menghasilkan aplikasi kriptografi kunci publik algoritma ElGamal yang menggunakan metode The Sieve of Eratosthenes untuk pembangkitan bilangan prima.

2. Menghasilkan penelitian yang dapat menambah wawasan bagi siapapun yang tertarik dengan materi kriptografi kunci publik ElGamal dan Algoritma The Sieve of Eratosthenes.

1.5Manfaat Penelitian

Penelitian ini diharapkan dapat menghasilkan aplikasi kriptografi kunci publik algoritma ElGamal dengan metode The Sieve of Eratosthenes untuk pembangkit bilangan prima yang dapat berguna untuk mengamankan pesan user.


(17)

1.6Metode Penelitian

Tahapan yang diambil dalam penelitian ini yaitu: 1. Studi kepustakaan.

Mempelajari literatur mengenai kriptografi kunci publik, algoritma ElGamal, metode the sieve of eratosthenes dan teori-teori pendukung lainnya.

2. Analisis dan Perancangan Sistem

Pada tahap ini dilakukan analisis kebutuhan sistem dan fungsi-funsi yang ada pada sistem, hasil analisis akan menjadi dasar untuk merancang sistem yang akan dibangun. Hasil analisis berupa Flowchart dan user interface.

3. Implementasi dan Pengujian Sistem.

Pada tahap ini sistem dibangun berdasarkan hasil rancangan pada tahap sebelumnya menjadi sebuah aplikasi. Kemudian dilakukan pengujian terhadap aplikasi untuk dapat memastikan fungsi-fungsi aplikasi telah berjalan dengan baik sesuai rancangan.

4. Dokumentasi dan Penulisan Skripsi

Pada tahap ini dilakukan penulisan skripsi sebagai dokumentasi terhadap penelitian yang telah dilakukan.

1.7Sistematika Penulisan

Sistematika penulisan tugas akhir ini terdiri dari lima bab, masing-masing bab diuraikan sebagai berikut:

BAB 1 PENDAHULUAN

Menjelaskan Latar Belakang Masalah, Rumusan Masalah, Batasan Masalah, Tujuan Penelitian, Manfaat Penelitian, Metode Penelitian dan Sistematika Penulisan.


(18)

BAB 2 LANDASAN TEORI

Berisi penjelasan mengenai kriptografi kunci publik, algoritma ElGamal, dan metode the sieve of eratosthenes.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Membahas analisa dan perancangan aplikasi kriptografi kunci publik algoritma ElGamal dengan Metode The Sieve of Eratosthenes untuk pembangkit bilangan prima.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Berisi implementasi sistem berupa aplikasi yang telah dibangun berdasarkan rancangan pada tahap perancangan dan pengujian tarhadap aplikasi untuk menemukan kesalahan.

BAB 5 KESIMPULAN DAN SARAN

Menjelaskan kesimpulan dan saran sehubungan dengan perancangan aplikasi kriptografi punci publik algoritma ElGamal dengan metode The Sieve of Eratosthenes untuk pembangkitan bilangan prima.


(19)

BAB II

LANDASAN TEORI

2.1Kriptografi

Kriptografi adalah kata yang berasal dari bahasa Yunani, yaitu Ŗcryptosŗ artinya Ŗsecretŗ (rahasia) dan Ŗgrapheinŗ yang artinya Ŗwritingŗ (tulisan). Jadi, kata kriptografi dapat diartikan sebagai Ŗsecret writingŗ atau tulisan rahasia [6].

Menurut Menezes [4] kriptografi adalah studi tentang teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan (confidentiality), integritas data (data integrity), otentikasi entitas (entity authentication), dan otentikasi asal data (data origin authentication).

Menurut Kurniawan [3] seni dan ilmu untuk menjaga kerahasian pesan disebut kriptografi. Kata Ŗgraphyŗ di dalam Ŗcryptographyŗ itu sendiri sudah menyiratkan sebuah seni [6].

Ahli kriptografi disebut sebagai cryptographer. Cryptanalyst merupakan orang yang melakukan cryptanalisis, yaitu seni dan ilmu untuk memcahkan ciphertext menjadi plaintext tanpa melalui cara yang seharusnya (dekripsi) [3].

Menurut Munir [6] dalam terminologi kriptografi yang dimaksud dengan pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain dari pesan adalah plaintext. Pesan tidak hanya berupa teks, namun juga gambar, suara, ataupun video. Agar pesan tidak dimengerti oleh pihak yang tidak diinginkan maka pesan disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan tersandi disebut ciphertext.


(20)

Menurut Stallings [11] proses menyandikan plaintext ke bentuk ciphertext disebut enkripsi, sedangkan proses mengembalikan ciphertext ke plaintext yang semula disebut dekripsi.

Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering dan deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi [6].

2.1.1 Tujuan Kriptografi

Tujuan kriptografi adalah mengamankan pesan, keamanan yang dimaksud adalah sebagai berikut [4] [11].

1. Kerahasiaan (confidentiality), adalah layanan yang menjaga kerahasiaan pesan, memberikan perlindungan dari pihak-pihak yang tidak berhak mengetahuinya. 2. Integritas data (data integrity), perlindungan yang menjamin pesan tetap utuh

dan asli dari upaya manipulasi data secara tidak sah seperti penghapusan, penyisipan, dan pendistribusian data lain ke dalam data asli.

3. Otentikasi (authentication), merupakan layanan untuk mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication).

4. Nirpeyangkalan (non-repudiation), sebuah layanan untuk mencegah terjadinya penyangkalan oleh pihak-pihak yang telah melakukan komunikasi, sehingga pengirim tidak dapat menyangkal pernah mengirim pesan dan penerima tidak dapat menyangkal telah menerima pesan.

2.1.2 Sejarah Kriptografi

Kriptografi mungkin dapat dikatakan dimulai sekitar 2000 SM oleh bangsa Mesir, dimana hieroglyph digunakan untuk menghias makam para raja dan penguasa Mesir. Hieroglyph yang isinya adalah cerita tentang kehidupan raja dan tindakan besar yang dilakukannya sengaja dibuat dalam bentuk cryptic (tersandi), tapi bukan dengan maksud untuk menyembunyikan tulisannya namun untuk membuat tulisan tersebut


(21)

terkesan lebih agung dan penting. Seiring waktu tulisan ini semakin lama semakin rumit dan orang-orang kehilangan minat menguraikannya [2].

Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Secara umum algoritma kriptografi klasik dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma subtitusi (subtitution cipher). Cipher transposisi mengubah susunan huruf-huruf di dalam pesan, sedangkan cipher subtitusi mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf lain. Sejarah kriptografi klasik mencatat penggunaan cipher transposisi oleh tentara Sparta di Yunani pada permulaan 400 SM [6]. Mereka menggunakan sistem kriptografi dalam bentuk sepotong papyrus atau perkamen dibungkus dengan batang kayu yang disebut Scytale cipher untuk berkirim pesan rahasia diantara pasukan militer [2]. Sedangkan algoritma substitusi yang paling awal dan paling sederhana adalah Caesar cipher [6], sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi yaitu huruf-huruf alfabet disubstitusi dengan huruf-huruf yang lain pada alfabet yang sama, metode ini dikenal sebagai Caesar cipher [2].

Kriptografi umum digunakan oleh kalangan militer seperti pada Perang Dunia ke II, pemerintah Nazi Jerman membuat mesin enkripsi bernama enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma cipher ini berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebgai faktor yang memperpendek perang dunia ke-2 [6].

Kriptografi modern dipicu oleh perkembangan peralatan komputer digital. Dengan komputer digital, cipher yang lebih kompleks menjadi sangat mungkin untuk dapat dihasilkan [6]. Perkembangan sistem komputer dan komunikasi di tahun 1960 membawa permintaan untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamaman. Dimulai dengan kerja Feistel di IBM pada awal 1970 dan hasilnya pada 1977 dengan diadopsinya U.S. Federal Information Standard


(22)

untuk enkripsi informasi yang tidak bersifat rahasia, yaitu DES, Data Encryption Standard, merupakan mekanisme kriptografi yang paling dikenal dalam sejarah [4].

Kriptografi modern menggunkan kunci yang merupakan parameter yang digunakan untuk transformasi enkripsi dan dekripsi. Kriptografi modern terbagi atas dua jenis, yaitu :

1. Kriptografi kunci simetri, yang kunci enkripsi dan dekripsinya sama, contohya DES, IDEA,dan AES.

2. Kriptografi kunci publik, yang kunci enkripsi dan dekripsinya berbeda, contohnya RSA, DSA, dan ElGamal.

Kriptografi simetri merupakan satu-satunya jenis kriptografi yang dikenal dalam catatan sejarah hingga tahun 1976. Semua algoritma kriptografi klasik termasuk ke dalam sistem kriptografi simetri [6].

Penemuan konsep kriptografi kunci pubik merupakan hal revolusioner dalam sejarah kriptografi dipublikasikan pertama kali pada tahun 1976 oleh Whitfield Diffie dan Martin Hellman, dua orang ilmuwan dari Stanford University melalui makalah pertamanya di jurnal IEEE yang berjudul ŖNew Directions in Cryptographyŗ [4] [10] [6]. Makalah mereka membahas distribusi kunci rahasia pada saluran komunikasi publik (yang tidak aman) dengan metode pertukaran kunci Diffie-Hellman [6].

Namun sebenarnya penemu kriptografi kunci publik adalah James H. Ellis, Clifford Cocks, dan Malcolm Williamson yang berkerja untuk markas komunikasi pemerintah Inggris, GCHQ [10] pada awal tahun 1970 [6]. Mereka menemukan mekanisme pertukaran kunci, yang kemudian dikenal dengan nama algoritma pertukaran kunci Diffie- Hellman. Sayangnya algoritma mereka tersebut dirahasiakan dan tidak pernah dipublikasikan hingga tahun 1997 [6].

Pada tahun 1977, generalisasi dari ide Cocks ditemukan kembali oleh tiga orang ilmuwan dari MIT, yaitu Rivest, Shamir, Adleman [6]. Algoritma enkripsi yang mereka buat dikenal dengan RSA merupakan algoritma yang berdasarkan sulitnya memecahkan masalah memfaktorkan bilangan intger yang sangat besar [4].


(23)

Akhirnya, sejak tahun 1976 berbagai algoritma enkripsi, tanda tangan digital, pertukaran kunci, dan teknik lain dikembangkan dalam bidang kriptografi kunci-publik, misalnya algoritma ElGamal untuk enkripsi dan tanda tangan digital dan algoritma DSA untuk tanda tangan digital. Pada tahun 1980 Neal Koblitz memperkenalkan eliptic-curve cryptography sebagai keluaran baru yang analog dengan algoritma kriptografi kunci-publik. Hingga saat ini kriptografi kunci-publik terus berkembang pesat seiring dengan aplikasinya yang begitu luas [6].

2.2Kriptografi Kunci-Publik

Sampai tahun 1976, hanya ada kriptografi kunci-simetri. Karena kriptografi simetri menggunakan kunci yang sama untuk enkripsi dan dekripsi, maka hal ini mengimplikasikan dua pihak yang saling berkomunikasi dan mempercayai. Kedua pihak harus menjaga kerahasiaan kunci. Satu masalah kritis di dalam sistem kriptografi kunci-simetri adalah cara mendistribusikan kunci. Oleh karena itu kunci harus dikirim melalui saluran yang benar-benar aman, umumnya jalur ini lambat dan mahal [6]. Teknik kriptografi kunci publik awalnya ditemukan untuk memecahkan permasalahan distibusi kunci dan menyediakan otentikasi [10].

Masalah ini dipecahkan oleh Diffie dan Hellman yang mengusulkan konsep kriptografi nirsimetri (asymmetric cryptography) yaitu kunci berbeda untuk enkripsi dan dekripsi. Kunci enkripsi dapat diumumkan kepada publik sehingga dapat diketahui oleh siapapun, sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan (rahasia), oleh karena itulah teknik kriptografi ini disebut juga dengan kriptografi kunci publik. Hal ini memungkinkan pengguna berkomunikasi secara aman tanpa perlu berbagi kunci rahasia [6].

Keuntungan kriptografi kunci publik dibandingkan dengan kriptografi kunci simetri, antara lain :

1. Tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada kriptografi kunci-simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim


(24)

pesan. Perhatikan bahwa saluran untuk mengirim pesan umumnya tidak aman [6].

2. Jumlah kunci dapat ditekan. Untuk berkomunikasi secara rahasia dengan banyak orang tidak perlu kunci rahasia sebanyak jumlah orang tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para koresponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan kriptografi kunci-simetri dimana jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang berkorespondensi [6].

3. Tidak perlunya pihak-pihak yang terlibat komunikasi untuk saling mengenal sebelumnya. Siapapun dapat mengirim pesan yang dienkripsi dengan kunci publik tersebut, tetapi hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci privatnya sendiri [10].

4. Keuntungan lainnya dari kriptografi kunci publik adalah penggunaan digital signatures yang mengizinkan pengguna untuk menandai secara digital data seperti pemesanan elektronik atau transfer uang. Teknologi inilah yang menyebabkan teknologi e-commerce dan komunitas digital mungkin untuk dilakukan [10].

2.2.1 Konsep Kriptografi Kunci-Publik

Seperti telah dijelaskan pada bagian awal, pada kriptografi kunci-publik, setiap pengguna memiliki sepasang kunci, satu kunci untuk enkripsi diumumkan kepada publik - oleh karena itu tidak rahasia Ŕ sehingga dinamakan kunci publik (public-key), disimbolkan dengan e dan satu kunci untuk dekripsi bersifat rahasia Ŕ sehingga dinamakan kunci privat (private-key), disimbolkan dengan d. Karena kunci enkripsi tidak sama dengan kunci dekripsi itulah maka kriptografi kunci publik disebut juga kriptografi nirsimetri [6].

Misalkan E adalah fungsi enkripsi dan D adalah funsi dekripsi. Misalkan (e, d) adalah pasangan kunci untuk enkripsi dan dekripsi sedemikian sehingga


(25)

untuk suatu plainteks m dan cipherteks c. Kedua persamaan ini menyiratkana bahwa dengan mengetahui e dan c, maka secara komputasi hampir tidak mungkin menemukan m. Asumsi lainnya, dengan mengetahui e, secara komputasi hampir tidak mungkin menurunkan d. digambarkan sebagai fungsi pintu-kolong (trapdoor) satu-arah dengan d adalah informasi trapdoor yang diperlukan untuk menghitung fungsi inversinya, D, yang dalam hal ini membuat proses dekripsi dapat dilakukan [6]. Dinamakan fungsi satu arah trapdoor karena fungsi ini secara efektif benar-benar merupakam fungsi satu arah kecuali kunci trapdoor tersebut diketahui [10].

Gambar 2.1 Skema Kriptografi Nirsimetri

Kriptografi kunci publik dapat berkerja dikarenakan dua kuncinya dihubungkan secara matematis sedemikian rupa sehingga mengetahui kunci publik tidak memberikan informasi apapun tentang kunci privat-nya. Namun dengan mengetahui kunci privat, informasi yang dienkripsi dengan kunci publik dapat diketahui [10].

Sistem kriptografi kunci publik yang aman memiliki dua karakteristik sebagai berikut [6]:

1. Komputasi untuk enkripsi/dekripsi pesan mudah dilakukan.

2. Secara komputasi hampir tidak mungkin (infeasible) menurunkan kunci privat, d, bila diketahui kunci publik, e, pasangannya.

Dua karakteristik di atas dapat dianalogikan dengan dua masalah matematika berikut yang sering menjadi dasar pembangkitan sepasang kunci pada kriptografi kunci publik [6]:

Enkripsi

Dekripsi Kunci publik, e Kunci privat, d

Chiperteks, c


(26)

1. Perkalian vs pemfaktoran. Mengalikan dua buah bilangan prima, , mudah, tetapi memfaktorkan n menjadi faktor-faktor primanya lebih sulit.

Contoh : (perkalian, mudah)

(pemfaktoran, sulit)

Diberikan bilangan bulat n, faktorkan n menjadi faktor primanya Contoh :

Semakin besar n, semakin sulit memfaktorkan (butuh waktu sangat lama). Algoritma yang menggunkan prinsip ini: RSA.

2. Perpangkatan vs logaritmik dikrit. Melakukan perpangkatan modulo,

, mudah, tetapi menemukan x dari lebih sulit. Semakin besar a,b, dan n semakin sulit memfaktorkan (butuh waktu yang lama).

Contoh : (perpangkatan modulo, mudah)

Carilah x dari (logaritmik diskrit, sulit) Sistem kriptografi yang dibangun berdasarkan masalah logaritma diskrit antara lain ElGamal dan DSA .

Tidak seperti kriptografi kunci-simetri yang didasarkan pada substitusi dan permutasi, kriptografi kunci-publik didasarkan pada fungsi matematika. Jika kekuatan kriptografi kunci-simetri terletak pada panjang kuncinya yang membutuhkan usaha sangat besar untuk menemukan kunci, maka kriptografi kunci-publik kekuatannya terletak pada sulitnya memcahkan masalah matematis seperti pemfaktoran dan logaritma diskrit [6].

Kriptografi kunci-publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki dua pintu dengan fungsi masing-masing, yaitu satu pintu hanya dapat memasukkan surat dan satu pintu lagi khusus untuk mengambil surat. Setiap orang dapat memasukkan surat ke dalam kotak surat tersebut melalui pintu untuk memasukkan surat, tetapi hanya pemilik kotak surat yang dapat membuka pintu


(27)

khusus untuk mengambil surat dan membaca surat di dalamnya karena ia yang memiliki kuncinya.

2.2.2. Aplikasi Penggunaan Kriptografi Kunci Publik

Aplikasi penggunaan kriptografi kunci publik dapat diklasifikasikan ke dalam tiga kategori [11], yaitu:

1. Enkripsi, dekripsi. Enkripsi pesan dengan kunci publik penerima pesan. 2. Tanda tangan digital (Digital Signature), pengirim menandai (Ŗsign”) pesan dangan kunci privatnya. Tanda tangan dilakukan dengan menggunakan algoritma kriptografi pada pesan atau pada blok kecil data yang merupakan fungsi pesan.

3. Pertukaran kunci (key exchange), kedua belah pihak berkerja sama untuk bertukar kunci sesi. Terdapat beberapa pendekatan yang mungkin dilakukan, yaitu melibatkan kunci privat salah satu pihak atau keduanya.

2.3Algoritma ElGamal

Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. ElGamal digunakan didalam perangkat lunak sekuriti yang digunakan oleh GNU, program PGP, dan pada sistem sekuriti lainnya [6].

Sistem kriptografi ElGamal dibangun berdasarkan masalah logaritma diskrit. Keamanan algoritma ini terletak pada sulitnya menghitung logaritma diskrit [12]. Masalah logaritma diskrit: jika p adalah bilangan prima dan g dan y adalah sembarang bilangan bulat. Carilah x sedemikian sehingga . Melakukan perpangkatan modulo, , mudah, tetapi menemukan x dari

lebih sulit. Semakin besar a,b, dan n semakin sulit memfaktorkan (butuh waktu yang lama) [6].


(28)

Carilah x dari (logaritmik diskrit, sulit) Berikut ini merupakan algoritma kunci publik ElGamal [4] [12].

5. Pasangan kunci dibangkitkan oleh penerima pesan. i. Pilih sembarang bilangan prima p.

ii. Pilih bilangan bulat acak a, syarat 2 ≤ ap-1

iii. Tentukan α, dimana α primitive root modulo p, dengan ketentuan α p dan α ≠ a. Primitive root dari sebuah bilangan prima p adalah sebuah bilangan asli g yang mana orde modulo dari g (mod p) adalah p-1 [10].

iv. Hitung

v. Kunci publik (y, α, p) disebarkan dan kunci privat (a) disimpan

6. Enkripsi oleh pengirim.

i. Menerima kunci publik (y, α, p)

ii. Mempersiapkan plainteks (m), representasikan plainteks dalam rentang 0…p-1.

iii. Memilih bilangan asli acak sebagai kunci sesi b, syarat b ≤ p-1 iv. Cipherteks pertama,

v. Cipherteks kedua,

vi. Cipherteks (c1, c2) dikirim kepada penerima. 7. Dekripsi oleh penerima.

i. Terima Cipherteks (c1, c2)

ii. Hitung ( )

iii. Dekripsi chiperteks menjadi plainteks, ( )

2.3.1 Bilangan Prima

Bilangan prima adalah bilangan asli yang tidak dapat dibagi tanpa sisa oleh bilangan asli lain kecuali satu dan bilngan itu sendiri [5]. Menurut Stallings [11], bilangan bulat positif p ( ) disebut bilangan prima jika pembaginya hanya 1 dan p. Contohnya bilangan 23 adalah prima karena ia hanya habis dibagi oleh 1 dan 23. Karena bilangan


(29)

prima harus lebih besar daripada 1, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5, 7, 11, 13, …. Seluruh bilangan prima adalah bilangan ganjil kecuali 2 yang merupakan bilangan genap [6].

Pembangkitan bilangan prima dibutuhkan untuk hampir semua algoritma kunci publik [10]. Seperti yang telah dijabarkan pada bagian sebelumnya dalam kriptografi kunci publik algoritma ElGamal menggunakan bilangan prima sebagai salah satu nilai parameternya, oleh karena itu dibutuhkan suatu metode pembangkitan bilangan prima. Beberapa algoritma-algoritma yang dapat digunakan untuk membangkitkan bilangan prima antara lain algoritma probabilistik seperti Lehman dan Rabin-Miller atau algoritma deterministik seperti Sieve of Eratosthenes. Bedanya algoritma deterministik menghasilkan bilangan yang pasti merupakan prima sedangkan algoritma probabilistik dapat menghsailkan pseudoprimes (prima semu) [11].

2.3.2 The Sieve of Eratosthenes

Metode The Sieve of Eratosthenes merupakan sebuah algoritma deterministik sederhana untuk membangkitan bilangan prima yang ditemukan oleh Eratosthenes seorang matematikawan Yunani kuno [5]. Metode The Sieve of Eratosthenes membangkitkan bilangan prima yang ada di antara bilangan satu sampai dengan batas bilangan maksimum yang ditentukan dengan cara membuat daftar semua bilangan asli dari satu sampai batas kemudian mengeliminasi bilangan komposit hingga tersisa hanya bilangan prima. Bilangan komposit adalah bilangan asli yang lebih besar dari satu dan bukan bilangan prima, memiliki pembagi selain satu dan bilangan itu sendiri. Disebut The Sieve of Eratosthenes, sieve (saringan) karena bukannya membangun objek yang diinginkan, yaitu bilangan prima, tetapi menyaringnya dari yang bukan prima [5].

Menurut Möhring dan Oellrich [5], komputasi running time dari pembangkit bilangan prima dengan metode The Sieve of Eratosthenes pada komputer 3.2 GHz dengan sistem operasi Linux lebih cepat dibandingkan komputasi menggunakan metode standar untuk membangkitkan bilangan prima pada komputer yang sama.


(30)

Tabel 2.1 Komputasi Running Time Pembangkit Bilangan Prima Metode Standar pada Komputer 3.2 GHz Sistem Operasi Linux [5]

n 103 104 105 106

Time 0.00 s 0.20 s 19.4 s 1934.4 s

Tabel 2.2 Komputasi Running Time Pembangkit Bilangan Prima Metode The Sieve of Eratosthenes pada Komputer 3.2 GHz Sistem Operasi Linux [5]

n 106 107 108 109

Time 0.02 s 0.43 s 5.4 s 66.5 s

Adapun prosedur dari metode standar pembangkitan bilangan prima yang diutarakan oleh Möhring dan Oellrich adalah sebagai berikut.

Tabel 2.3 Prosedur Pembangkit Bilangan Prima Metode Standar [5]

Sedangkan prosedur dari metode The Sieve of Eratosthenes yang digunakan oleh Mohring dan Oellrich sehingga menghasilkan komputasi seperti pada tabel 3.2 adalah sebagai berikut.


(31)

Tabel 2.4 Prosedur Pembangkit Bilangan Prima Metode The Sieve of Eratosthenes [5]

Algoritma The Sieve of Eratosthenes adalah sebagai berikut. 1. Buat daftar bilangan dari 2..n

2. Tandai bilangan pertama dari daftar sebagai bilngan prima pertama, yaitu p = 2.

3. Eliminasi semua kelipatan p yang lebih kecil dari n (untuk 2 eliminasi 4, 6, 8,…), menghitung kelipatan p dimulai dari p2.

4. Tandai bilangan terkecil yang belum dieliminasi dari daftar namun lebih besar dari p sebagai prima selanjutnya, ulangi langkah 3.

5. Sampai tidak ada lagi bilangan yang bisa ditandai sebagai prima karena semua bilangan yang tersisa tidak tereliminasi dari daftar sudah ditandai sebagai prima.

2.3.3 Relatif Prima

Menurut Munir [6], dua buah bilangan bulat a dan b dikatakan relatif prima jika pembagi berasama terbesarnya PBB(a, b) = 1. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga

Sebagai contoh 4 dan 13 relatif prima sebab PBB(4, 13) = 1. Begitupula dengan 2 dan 5 relatif prima karena PBB(2, 13) = 1. Namun 2 dan 4 tidak relatif prima karena PBB(2, 4) = 2  1.


(32)

2.3.4 Fungsi Totient Euler

Fungsi Totient Euler  mendefinisikan (n) untuk n  1 yang menyatakan jumlah bilangan bulat positif < n yang relatif prima dengan n [6]. Sebagai contoh bilangan 8, bilangan bulat positif lebih kecil dari 8 adalah 1...7, diantara bilangan tersebut yang relatif prima dengan 8 adalah 1, 3, 5, dan 7 maka, (8) = 4.

Jika n prima, maka setiap bilangan bulat yang lebih kecil dari n relatif prima terhadap n. Dengan kata lain, (n) = n Ŕ 1 hanya jika n prima [6]. Contoh bilangan prima 11, bilangan yang lebih kecil dari 11 adalah 1…10 dan semua bilangan ini relatif prima terhadap 11, maka (11) = 10.

Jika n = pq adalah bilangan komposit dengan p dan q prima, maka (n) = (p)

(q) = (p-1) (q-1) [6].

Jika p bilangan prima dan k > 0, maka (pk) = pkŔ pk-1 = pk-1 (p-1) [6].

(Euler’s Generalization of Fermat Theorem). Jika PBB(a, n) = 1, maka a(n) mod n = 1 (atau a(n) 1 (mod n)) [6].

2.3.5 Akar Primitif (Primitive Root) dari Bilangan Prima p

Jika r dan n adalah bilangan bulat yang relatif prima dengan n > 0. Dan jika

(n) adalah m eksponen positif paling akhir sehingga rm 1 (mod n), maka r disebut akar primitif modulo n [11].

Secara umum, dapat dikatakan bahwa eksponen tertinggi yang mungkin untuk dimilki sebuah bilangan (mod n) adalah (n). Jika sebuah bilangan merupakan bagian dari urutan ini, maka bilangan tersebut disebut sebagai akar primitif dari n. Pentingnya gagasan ini adalah jika a adalah akar primitif dari n, maka orde-nya

a, a2, ..., a(n)

adalah (mod n) yang berbeda dan semuanya relatif prima dengan n. Secara khusus, untuk p bilangan prima, jika a adalah akar primitif dari p, maka


(33)

a, a2, ..., ap1

adalah (mod p) yang berbeda [11]. Untuk bilangan prima 19, akar primitif-nya adalah 2, 3, 10, 13, 14, dan 15.

Tidak semua bilangan bulat memiliki akar primitif. Bahkan, bilangan bulat dengan akar primitif adalah hanya dari bentuk 2, 4, pα, dan 2pα, dimana p adalah prima ganjil setiap dan α adalah bilangan bulat positif [11].

2.3.6 Perpangkatan Modulo

Perhitungan perpangkatan modulo ini sangat penting dalam algoritma kriptografi ElGamal karena perhitungan ini digunakan pada proses pembangkitan kunci, enkripsi maupun dekripsi.

Berikut ini merupakan pemahaman aritmatika modulo menurut Munir [6], misalkan a adalah bilangan bulat dan m adalah bilangan bulat > 0. Operasi (dibaca a modulo m) memberikan sisa jika a dibagi dengan m. Bilangan m disebut modulus atau modulo, dan hasil aritmatika modulo m terletak di dalam himpunan {0, 1, 2, …, m-1}. Notasi: sedemikian sehingga , dengan 0 ≤ r m.

Perhitungan perpangkatan modulo, misalnya menghitung persamaan

. Untuk memperjelas perhitungannnya berikut ini merupakan contoh perhitungan modulo.

Berdasarkan persamaan aritmatika modulo :

perhitungan perpangkatan modulo dapat dilakukakan seperti contoh berikut.

( )


(34)

Perhitungan ini disebut metode divive conquer atau disebut juga metode addition chainning karena hasil perkalian antara langsung dirangkai dengan operasi modulo [6].

2.4NetBeans IDE

NetBeans IDE adalah sebuah lingkungan pengembangan - sebuah kakas untuk pemrograman, menulis, mengompilasi, mencari kesalahan dan menyebarkan program. Bahasa pemrograman yang didukung oleh NetBeans antara lain Java, JavaScript, PHP, Python (tidak lagi didukung setelah NetBeans 7), Groovy, C, C++, Scala, Clojure, dan lain-lain. Netbeans IDE ditulis dalam Java dan dapat berjalan pada Windows, Mac OS, Linux, Solaris, dan platform lainnya didukung JVM yang sesuai. NetBeans merupakan produk open source dan bebas (free) untuk penggunaan komersial dan non komersial. NetBeans IDE 7.0 dirilis April 2011, pada tanggal 1 agustus 2011, tim NetBeans merilis NetBeans IDE 7.0.1 yang mendukung Java SE 7 platform [7].

Awalnya NetBeans adalah Java IDE yang dikembangkan sebagai projek mahasiswa dibawah bimbingan Faculty of Mathematics and Physics di Charles University di Prague, Republik Czech pada 1996 dengan nama Xelfi. Pada tahun 1997 Roman Staněk membentuk perusahaan dan menghasilkan versi komersial dari NetBeans IDE sampai akhirnya dibeli oleh Sun Microsystems pada 1999. Setahun kemudian pada bulan juni Sun menjadikan NetBeans IDE sebagai projek open source. Sejak itu komunitas NetBeans terus berkembang kemudian pada 2010, Sun dan NetBeans menjadi milik Oracle [7].

Berikut ini merupakan kelebihan dan kekurangan NetBeans dibandingkan Java IDE lain seperti Eclipse dan JCreator.

1. NetBeans memiliki fitur GUI builder dan profiler yang terintegrasi, built-in pada NetBeans itu sendiri sedangkan pada Eclipse diperlukan mengunduh plug-in [8], dan JCreator tidak memiliki fitur tersebut.

2. NetBeans dan Eclipse dapat dipakai lintas platform namun tidak dengan JCreator yang hanya bisa di jalankan pada Windows [1].


(35)

3. NetBeans dan Eclipse open source dan gratis sedangkan JCreator berbayar. 4. NetBeans dibangun dengan bahasa Java sehingga ukuran file-nya lebih besar


(36)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

Tahap analisis dan perancangan sistem berguna untuk menentukan kebutuhan sistem dan menyesuaikan dengan kebutuhan pengguna sehingga memudahkan proses pembuatan sistem.

3.1 Analisis Sistem

Analisis sistem dilakukan dengan menentukan tujuan pembangunan sistem, memahami cara kerja, dan fungsi-fungsi sistem. Sistem yang akan dibangun ini merupakan sistem kriptografi kunci publik, tujuan pembangunan sistem adalah untuk keamanan data, yaitu mengamankan pesan (plainteks) milik pengguna dari pihak-pihak yang tidak diinginkan dengan mengubahnya ke bentuk yang sama sekali berbeda dengan pesan aslinya (cipherteks) melalui proses enkripsi.

Algoritma kriptografi yang digunakan pada sistem adalah algoritma ElGamal, selain itu sistem juga menerapkan metode The Sieve of Eratosthenes untuk pembangkit bilangan prima. Algoritma kriptografi kunci publik ElGamal terbagi atas tiga aktivitas, yaitu :

1. Pembangkitan kunci

Aktivitas pembangkitan kunci dilakukan oleh penerima pesan. Kunci yang dibangkitkan terdiri dari :

a. Kunci p merupkan sembarang bilangan prima, dalam penelitian ini digunakan metode The Sieve of Eratosthenes untuk membangkitkan bilangan prima.


(37)

c. Kunci α merupakan salah satu akar primitif (primitive root) dari bilangan prima p , α ≠ p dan α ≠ a. Sebagaimana yang telah disebutkan pada bab yang sebelumnya, primitive root dari sebuah bilangan prima p adalah sebuah bilangan asli g yang mana orde modulo dari g (mod p) adalah p-1 [10].

d. Kunci y dengan persamaan .

Sehingga keluaran dari aktivitas pembangkitan kunci ini adalah tiga kunci publik (p, α, y) yang akan dibagikan kepada para calon pengirim pesan dan satu kunci privat (a) yang hanya diketahui oleh penerima pesan.

2. Enkripsi

Aktivitas enkripsi dilakukan oleh pengirim pesan dengan masukkan berupa tiga kunci publik (p, α, y) milik penerima pesan dan pesan asli plainteks (m) yang akan dikirimkan. Enkripsi dilakukan dengan menghitung cipherteks pertama dan cipherteks kedua . Hasil keluarannya berupa cipherteks (c1, c2) dikirimkan kepada penerima pesan.

3. Dekripsi

Dekripsi dilakukan oleh penerima pesan dengan masukkan cipherteks (c1, c2), kunci privat (a), dan kunci publik (p) miliknya. Apabila cipherteks dan kunci yang dimasukkan benar maka akan diperoleh keluaran berupa plainteks yang sama dengan pesan aslinya.

Berdasarkan pembahasan di atas, sistem yang akan dibangun memiliki tiga fungsi mengikuti aktivitas yang dimiliki algoritma ElGamal, yaitu pembangkit kunci, enkripsi, dan dekripsi. Di dalam fungsi ini terdapat proses-proses pendukung seperti pembangkit bilangan prima metode The Sieve of Eratosthenes, perhitungan modulo, dan proses pengujian apakah sebuah bilangan merupakan akar primitif dari kunci p.

3.1.1 Pembangkit Bilangan Prima

Bardasarkan pembahasan sebelumnya diketahui bahwa kunci publik p pada algoritma kriptografi ElGamal adalah bilangan prima dan kunci-kunci yang lainnya ditentukan


(38)

berdasarkan nilai kunci p oleh karena itu, sebelum aktivitas pembangkitan kunci dilakukan pembangkitan bilangan prima terlebih dahulu.

3.1.1.1The Sieve of Eratosthenes

Dalam penelitian ini, algoritma pembangkit bilangan prima yang digunakan adalah The Sieve of Eratosthenes. Berikut ini merupakan langkah-langkah pembangkitan bilangan prima metode The Sieve of Eratosthenes.

1. Inisialisasi integer 2…N.

2. Tandai bilangan terkecil dari daftar 2…N sebagai prima pertama, p1 = 2. 3. Eliminasi semua bilangan kelipatan p1dari daftar 2…N dimulai dari p12 = 22

= 4 yaitu (4, 6, 8,…).

4. Tandai bilangan integer terkecil berikutnya dari daftar 2…N yang belum tereliminasi sebagai bilangan prima selanjutnya, pi+1.

5. Eliminasi semua bilangan kelipatan pi+1dari daftar 2…N dimulai dari pi+12. 6. Ulangai angkah e dan g sampai pi+12 > N, maka integer dari daftar 2…N yang

tersisa adalah prima.

Untuk mempermudah pemahaman langkah-langkah di atas, berikut ini merupakan contoh pembangkitan bilangan prima metode The Sieve of Eratosthenes jika nilai batas atas N = 30.

1. Inisialisasi integer 2…N yaitu 2…30.

2. Tandai bilangan terkecil dari 2…30 sebagai prima pertama, p1 = 2.

3. Eliminasi semua bilangan kelipatan p1dari daftar 2…30 dimulai dari p12 = 22

= 4 yaitu (4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30), maka daftar integer yang belum tereliminasi (2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29).

4. Tandai bilangan integer terkecil berikutnya dari daftar 2…N yang belum tereliminasi sebagai prima selanjutnya, pi+1 = p2 = 3.

5. Eliminasi semua bilangan kelipatan pi+1 = p2 = 3 dari daftar 2…N dimulai

dari p22 = 32 = 9 yaitu (9, 12, 15, 18, 21, 24, 27, 30), maka daftar integer


(39)

6. Tandai bilangan integer terkecil berikutnya dari daftar 2…N yang belum tereliminasi sebagai prima selanjutnya, pi+1 = p3 = 5.

7. Eliminasi semua bilangan kelipatan pi+1 = p2 = 5 dari daftar 2…N dimulai

dari p22 = 52 = 25 yaitu (25, 30), maka daftar integer yang belum tereliminasi

(2, 3, 5, 7, 11, 13, 17, 19, 23, 29).

8. Bilangan integer terkecil berikutnya dari daftar 2…N yang belum tereliminasi sebagai prima selanjutnya adalah pi+1 = p4 = 7 namun 72 > N,

sehingga dapat dipastikan bilangan yang tersisa dari daftar integer yang belum tereliminasi yaitu (2, 3, 5, 7, 11, 13, 17, 19, 23, 29) adalah bilangan prima.

3.1.2 Algoritma Kriptografi Kunci Publik ElGamal

Algoritma kriptografi kunci publik ElGamal terdiri dari pembangkitan kunci oleh penerima pesan, enkripsi pesan oleh pengirim pesan, dan dekripsi pesan oleh penerima pesan.

3.1.2.1Proses Pembangkitan Kunci Algoritma ElGamal

Berikut ini merupakan langkah-langkah pembangkitan kunci algoritma kriptografi elgamal.

1. Pilih bilangan prima untuk digunakan sebagai kunci p. Plainteks direpresentasikan sebagai bilangan dalam rentang 0…p-1 maka, kunci p harus lebih besar dari pada plainteks. Untuk merepresentasikan plainteks ke bentuk bilangan digunakan kode ASCII yang berada dalam rentang 0…255 sehingga p harus lebih besar dari 255. Dalam penelitian ini bilangan prima dipilih berdasarkan daftar prima yang telah dibangkitkan melalui proses pembangkitan bilangan prima metode The Sieve of Eratosthenes.

2. Tentukan kunci a dengan syarat a merupakan bilangan bulat dan 2 ≤ a p-1. 3. Kunci publik α harus merupakan primitive root dari kunci publik p, berikut

ini merupakan cara pembangkitan kunci publik α.

a. Pilih kunci publik α dari sembarang bilangan bulat dengan syarat α ≤ p-1dan α ≠ a.


(40)

b. Kemudian diuji apakah α primitive root dari p, jika α ternyata bukan primitive root dari p kembali ke langkah sebelumnya. Jika α terbukti primitive root dari p lanjutkan ke langkah no.4.

4. Hitung kunci y dengan persamaan .

5. Hasil pembangkitan kunci berupa kunci publik (p, α, y) disebarkan dan kunci privat (a) disimpan.

3.1.2.2Proses Enkripsi Algoritma ElGamal

Berikut ini merupakan langkah-langkah enkripsi algoritma kriptografi elgamal oleh pengirim pesan.

1. Siapkan kunci publik (p, α, y) milik penerima pesan. 2. Tentukan plainteks m yang akan dienkripsi.

3. Untuk setiap karakter pada plainteks diubah menjadi bilangan bulat, langkah ini dilakukan melalui pengkodean ASCII.

4. Untuk setiap bilangan plainteks dienkripsi dengan langkah sebagai berikut. a. Tentukan sembarang kunci sesi (b), dengan syarat b merupakan

sebuah bilangan asli dan b p-1. Perlu diperhatikan bahwa penggunaan nilai b acak menghasilkan variasi cipherteks yang berbeda-beda meskipun nilai p, α, y dan m sama.

b. Hitung cipherteks pertama

. c. Hitung cipherteks kedua

.

5. Maka setiap karakter akan menghasilkan pasangan cipherteks (c1, c2) sebanyak jumlah karakter dalam plainteks.

3.1.2.3Proses Dekripsi Algoritma ElGamal

Berikut ini merupakan langkah-langkah melakukan dekripsi oleh penerima pesan menggunakan algoritma kriptografi Elgamal.

1. Siapkan cipherteks yang akan didekripsi, kunci privat a dan kunci publik p. 2. Untuk setiap blok cipherteks yang terdiri dari = (c1,c2).


(41)

a. Hitung

b. Dekripsi chiperteks menjadi plainteks,

3. Maka diperoleh plainteks yang masih dalam bentuk bilangan kode ASCII m = ( ,…, ), k = banyaknya blok cipherteks. Untuk setiap plainteks plainteks , i =1…k, diubah kembali menjadi karakter biasa berdasarkan pengkodean ASCII.

4. Sehingga diperoleh plainteks (m) yang jika kunci dan cipherteks benar, plainteks hasil dekripsi sama dengan pesan aslinya.

Untuk mempermudah pemahaman langkah-langkah algoritma di atas berikut ini merupkan contoh rangkaian aktivitas kriptografi algoritma ElGamal meliputi pembangkitan kunci, enkripsi, dan dekripsi.

1. Aktivitas dimulai dengan pembangkitan kunci oleh penerima pesan.

2. Pembangkitan kunci diawali dengan menentukan sembarang bilangan bulat positif N sebagai batas atas bilangan prima yang dibangkitkan menggunakan metode The Sieve of Eratosthenes. Misalnya N = 350, sehingga diperoleh daftar bilangan prima yang dibangkitkan melealui metode The Sieve of Eratosthenes sebagai berikut.

Tabel 3.1 Tabel Bilangan Prima di antara Bilangan 1-350

2 3 5 7 11 13 17 19 23 29

31 37 41 43 47 53 59 61 67 73

79 83 89 97 101 103 107 109 113 127

131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349

Terdapat 71 bilangan prima. Pembangkitan bilangan prima ini diperlukan karena kunci publik p algoritma ElGamal adalah bilangan prima.


(42)

3. Kemudian dipilih sembarang bilangan prima dari daftar bilangan prima yang dihasilkan pada proses sebelumnya (tabel 3.1) sebagai kunci publik p, misalnya p = 317.

4. Pilih kunci privat a dari sembarang bilangan bulat dengan syarat berada dalam rentang 2 ≤ a p-1, misalnya a = 7.

5. Pilih kunci publik α dari sembarang bilangan bulat dengan syarat α ≤ p-1dan α ≠ a, misalnya α = 166.

6. Kemudian diuji apakah α = 166 primitive root dari p = 317, jika α ternyata bukan primitive root dari p kembali ke langakah no.5. Jika α terbukti primitive root dari p lanjutkan ke langkah no.7. Dalam kasus ini, 166 adalah primitive root dari 317.

7. Hitung kunci publik y dengan persamaan . y = 1667 mod 317

= 3473414526672256 mod 317 y = 202

8. Hasil pembangkitan kunci berupa kunci publik (p = 317, α = 166, y = 202) dikirimkan kepada pengirim pesan dan kunci privat (a = 7) disimpan oleh penerima pesan.

9. Pengirim pesan menerima kunci publik (p = 317, α = 166, y = 202) dan menggunakannya untuk mengenkripsi pesan plainteks (m), misalnya m = ŖIlmuŗ.

10.Enkripsi pesan yang dilakukan oleh pengirim pesan diawali dengan mepersiapkan plainteks yang akan dienkripsi, dalam kasus ini plainteks m = ŖIlmuŗ. Kemudian setiap karakter pada plainteks di ubah menjadi bilangan melalui pengkodean ASCII.

m1 = I  73 m2= l  108 m3 = m  109 m4 = u  117

11.Ekripsi pesan untuk menghasilkan cipherteks, diawali dengan menentukan secara acak kunci sesi b kemudian menghitung persamaan dan untuk setiap karakter plainteks mi dengan i = (1…4).


(43)

Untuk m1= 73, cipherteks1 = (196, 311) b. Tentukan kunci sesi b = 5,

Untuk m2= 108, cipherteks2 = (5, 228) c. Tentukan kunci sesi b = 8,

Untuk m3= 109, cipherteks3 = (247, 159) d. Tentukan kunci sesi b = 7,

Untuk m4= 117, cipherteks4 = (202, 207)

12.Maka cipherteks yang dihasilkan dari plainteks m = ŖIlmuŗ dengan kunci publik (p = 317, α = 166, y = 202) adalah (196, 311) (5, 228) (247, 159) (202, 207). Cipherteks ini kemudian dikirim kepada penerima pesan.

13.Penerima pesan menerima cipherteks = (196, 311) (5, 228) (247, 159) (202, 207) yang kemudian didekripsi menggunakan kunci p = 317 dan kunci privat a = 7.

14.Dekripsi untuk setiap blok cipherteks (ci1, ci2) i = (1…4) dengan persamaan

dan a.


(44)

b.

c.

d.

15.Diperoleh plainteks m = (73, 108, 109, 117) yang masih dalam bentuk ASCII, kemudian setiap bilangan plainteks diubah ke bentuk karakter.

73  I 108  l 109  m 117  u

16.Plainteks yang diterima oleh penerima pesan adalah ŖIlmuŗ, sesuai dengan pesan asli sebelum proses enkripsi oleh pengirim pesan.

3.2Perancangan Aplikasi

Perancangan sistem dilakukan setelah menganalisis sistem dengan memahami cara kerja sistem, algoritma-algoritma yang terlibat, dan fungsi sistem. Perancangan bertujuan menentukan output yang ingin dicapai oleh perangkat lunak yang akan dibangun dan merumuskan langkah-langkah yang harus dilakukan agar perangkat lunak dapat menghasilkan output yang diharapkan.


(45)

3.2.1 Perancangan Antarmuka

Antarmuka pada sistem ini dirancang memiliki tampilan yang sederhana sehingga mudah bagi pengguna untuk menggunakannya.

1. Jendela Menu Utama

Jendela menu utama merupakan tampilan yang pertama kali muncul ketika program dijalankan.

Gambar 3.1 Tampilan Rancangan Jendela Menu Utama

Dapat dilihat pada gambar 3.6 pengguna diberikan pilihan menu, yaitu berupa tombol ŖPembangkit Kunciŗ, ŖEnkripsiŗ, dan ŖDekripsiŗ. Tombol menu yang dipilih akan menampilkan jendela selanjutnya yang berkaitan dengan fungsi menu yang dipilih. Output dari proses menu apapun yang dipilih pengguna nantinya juga akan ditampilkan pada jendela ini di bagian ŖOutput :ŗ.

2. Jendela Pembangkit Kunci

Apabila pengguna memilih menu ŖPembangkit Kunciŗ, maka jendela ini akan ditampilkan.

Menu Utama

Pembangkit Kunci

Enkripsi

Dekripsi


(46)

Gambar 3.2 Tampilan Rancangan Jendela Pembangkit Kunci

Dapat dilihat pada gambar 3.7 pengguna akan diminta memberikan input N, kemudian jika tombol ŖBangkitkan Kunciŗ diklik, maka proses membangkitkan kunci berdasarkan input N dari pengguna akan dilaksanakan. Hasilnya berupa pasangan kunci publik dan privat ditampilkan pada jendela menu utama pada bagian ŖOutput :ŗ.

3. Jendela Enkripsi

Jendela ini ditampilkan jika pengguna memilih menu ŖEnkripsiŗ pada jendela menu utama. Tombol ŖEnkripsiŗ pada jendela ini akan menjalankan proses enkripsi berdasarkan input kunci publik dan plainteks yang dimasukkan oleh pengguna. Hasil dari proses enkripsi berupa cipherteks yang akan ditampilkan pada jendela menu utama pada bagian ŖOutput :ŗ.

Pembangkit Kunci

Input N :


(47)

Gambar 3.3 Tampilan Rancangan Jendela Enkripsi 4. Jendela Dekripsi

Jendela dekripsi muncul jika pengguna memilih menu ŖDekripsiŗ pada jendela menu utama. Pada jendela ini pengguna diminta untuk memasukkan Kunci privat a, kunci p, dan cipherteks. Jika tombol ŖDekripsiŗ pada jendela ini dipilih maka akan dilakukan proses dekripsi berdasarkan input tersebut yang outputnya dapat dilihat pada jendela utama pada kotak ŖOutput :ŗ

Enkripsi

Input Kunci:

Enkripsi Kunci p:

Kunci alpha:

Kunci y:


(48)

Gambar 3.4 Tampilan Rancangan Jendela Dekripsi

3.2.2 Flowchart

Berdasarkan aktivitas algoritma yang telah diuraikan sebelumnya pada tahap analisis, sistem dirancang terdiri dari tiga prosedur utama, yaitu prosedur pembangkit kunci, prosedur enkripsi, dan prosedur dekripsi. Dan prosedur pendukung yaitu prosedur pembangkit bilangan prima metode The Sieve of Eratosthenes. Rancangan proses kerja prosedur-prosedur tersebut secara garis besar dapat diilustrasikan malalui flowchart berikut ini.

3.2.2.1Flowchart Pembangkit Kunci

Pembangkitan kunci diawali dengan masukan N sebagai batas maksimum nilai bilangan yang dapat dibangkitkan untuk membangkitkan bilangan prima menggunakan The Sieve of Eratosthenes. Bilangan-bilangan prima yang dihasilkan melalui proses pembangkitan bilangan prima kemudian digunakan untuk memilih kunci p yang merupakan bilangan prima. Kemudian nilai kunci p akan menentukan nilai kunci a, α dan y. Gambar 3.5 berikut ini merupakan flowchart prosedur pembangkit kunci.

Dekripsi

Input Kunci:

Dekripsi Kunci a:

Kunci p:


(49)

Gambar 3.5 Flowchart Prosedur Pembangkit Kunci

3.2.2.2FlowchartThe Sieve of Eratosthenes

Prosedur pembangkit prima The Sieve of Eratothenes membangkitkan sederetan bilangan prima diantara 1 sampai bilangan batas N yang di input pengguna, kemudian deretan bilangan prima ini digunkan untuk membangkitkan kunci p.

Akhir Mulai

N

Kunci Publik (p, α,

y)

p = random (prima) prima

Pembangkit Bilangan Prima

The Sieve of Eratosthenes

a= random (2…p-1)

α = random(2…p-1)

akar_primit if = = true

cekα akar primitif p

ya tidak


(50)

Gambar 3.6 Flowchart ProsedurPembangkit Bilangan Prima

The Sieve of Eratosthenes

ya

ya

ya Mulai

Akhir N

i = 2

prima

i*i ≤

prima [i*j] = false j ++

prima [2…N] = true

prima[i ] ==

j = i

i*j ≤

i ++ tidak

tidak


(51)

3.2.2.3Flowchart Enkripsi

Prosedur enkripsi akan membagi plainteks ke dalam blok-blok yang setiap blok plainteks berisi satu karakter plainteks, kemudian setiap karakter ini diubah ke dalam bentuk bilangan bulat melalui pengkodean ASCII dan dihitung cipherteksnya.

Gambar 3.7 Flowchart Prosedur Enkripsi

tidak

Mulai

Akhir

Kunci Publik (p , α, y),

plainteks

c [i] [0]= αb mod p c [i] [1] = m[i] yb mod p

cipherteks

m [i] = ASCII(plainteks[i]) b= random(1…p-2) n = length(plainteks)

i = 0

i < n

i++ ya


(52)

3.2.2.4Flowchart Dekripsi

Pada prosedur dekripsi dilakukan perhitungan untuk memperoleh kembali plainteks (pesan asli) dengan menggunakan input cipherteks, kunci privat a dan kunci publik p milik penerima pesan.

Gambar 3.8 Flowchart Prosedur Dekripsi Mulai

Akhir cipherteks Kunci privat (a) Kunci publik (p)

(αb) -a = ( c[i][0] ) p-1-a mod p

plainteks

m [i] = (αb) Ŕa c[i][1] mod p

i++

c [n][0..1] = cipherteks i = 0

i < n

plainteks += m[i] ya


(53)

BAB IV

IMPLEMENTASI DAN PENGUJIAN SISTEM

Setelah tahap perancangan, sistem diimplementasikan dalam bentuk aplikasi komputer. Aplikasi komputer yang dibangun sebagai pendukung skripsi ini dinamai KriptoElGamal dibuat dengan NetBeans IDE 7.0.1 menggunakan bahasa pemorograman Java. Aplikasi ini dapat berjalan pada komputer dengan sistem operasi Windows Vista 32 bit, prosessor Intel Core2 Duo 2GHz yang sudah diinstal Java Virtual Machine.

4.1. Tampilan Antarmuka

Berdasarkan desain antarmuka pada tahap perancangan, aplikasi komputer pendukung skripsi ini memiliki tampilan antarmuka (interface) yang sengaja dibuat sederhana agar pengguna dapat memanfaatkan fungsi pembangkit kunci, enkripsi, dan dekripsi yang tersedia pada aplikasi ini dengan mudah.

4.1.1. Jendela Menu Utama

Tampilan yang pertama kali dilihat oleh pengguna ketika menjalankan aplikasi ini adalah tampilan jendela Menu Utama yang berisi pilihan menu berupa tombol - tombol yang dinamai sesuai dengan fungsi yang disediakan oleh aplikasi. Tombol GeneratorKunci akan membawa pengguna kepada jendela Pembangkit Kunci, tombol Enkripsi membawa pengguna ke jendela Enkripsi, dan tombol Dekripsi akan membawa pengguna ke jendela Dekripsi. Berikut ini merupakan tampilan jendela Menu Utama dari aplikasi ini.


(54)

Gambar 4.1 Jendela Menu Utama Aplikasi KriptoElGamal

4.1.2. Jendela Pembangkit Kunci

Jendela Pembangkit Kunci fungsinya membangkitkan kunci untuk pengguna, seperti yang terlihat pada gambar 4.2, pengguna diminta memasukkan input bilangan N yang merupakan batas atas dari nilai kunci yang akan dibangkitkan. Jadi, nilai bilangan kunci nantinya tidak akan melebihi nilai input N. Tombol BangkitkanKunci pada jendela Pembangkit Kunci akan menjalankan proses pembangkitan kunci sesuai dengan algoritma The Sieve of Eratosthenes dan algoritma kriptografi ElGamal sebagaimana telah dijelaskan pada tahap perancangan sistem.


(55)

Apabila proses pembangkitan kunci berhasil, setelah pengguna menekan tombol PembangkitKunci maka jendela pembangkit kunci akan tertutup dan pengguna akan kembali ke jendela Menu Utama untuk melihat output dari proses pembangkitan kunci pada kotak Output. Proses ini menghasilkan tiga kunci publik yang terdiri dari kunci p, kunci alpha, dan kunci y serta sebuah kunci privat a. Sedangkan tombol Batal akan membawa pengguna kembali kepada jendela Menu Utama tanpa melakukan proses pembangkitan kunci.

4.1.3. Jendela Enkripsi

Pada jendela Enkripsi pengguna diminta menginputkan pesan yang ingin dienkripsi (plainteks) dan kunci publik milik penerima pesan yang dituju oleh pengguna. Berikut ini merupakan tampilan jendela Enkripsi.

Gambar 4.3 Jendela Enkripsi Aplikasi KriptoElGamal

Apabila tombol EnkripsiPesan ditekan setelah semua permintaan input terisi, aplikasi akan menjalankan proses enkripsi, menutup jendela Enkripsi, dan menampilkan cipherteks hasil proses enkripsi tersebut pada kotak Output di jendela


(56)

Menu Utama. Sedangkan jika tombol Batal pada jendela ini yang dipilih maka jendela Enkripsi akan tertutup tanpa menjalankan proses enkripsi.

4.1.4. Jendela Dekripsi

Pada jendela ini pengguna diminta menginputkan pesan terenkripsi (cipherteks) yang diterima oleh pengguna berserta kunci privat a dan kunci publik p milik pengguna sebagaimana yang ditunjukkan pada gambar 4.4.

Gambar 4.4 Jendela Dekripsi Aplikasi KriptoElGamal

Setelah semua permintaan input terisi ketika tombol DekripsiPesan ditekan aplikasi akan menjalankan proses dekripsi, menutup jendela Dekripsi, dan menampilkan plainteks hasil proses dekripsi tersebut pada kotak Output di jendela Menu Utama. Sedangkan tombol Batal pada jendela ini jika dipilih akan menutup jendela Dekripsi tanpa menjalankan proses dekripsi. Apabila pesan cipherteks dienkripsi menggunakan kunci yang salah atau berbeda maka pesan plainteks yang dihasilkan tidak akan sama dengan yang aslinya.


(57)

4.2. Pengujian

Pengujian dilakukan untuk mengetahui apakah aplikasi telah berjalan sesuai dengan rancangan sehingga dapat berfungsi sebagaimana mestinya sebelum sampai ke tangan pengguna. Maka, sesuai dengan rancangan, aplikasi ini harus dapat menghasilkan kunci publik yang bisa digunakan untuk mengenkripsi pesan sehingga pesan menjadi tersembunyi dan aman dibalik cipherteks yang sama sekali berbeda dengan pesan aslinya, serta melalui dekripsi menggunakan kunci privat pasangannya mampu mengembalikan pesan cipherteks tersebut ke bentuk pesan aslinya sehingga informasi pada pesan tersebut tetap utuh. Begitupula dengan fungsi enkripsi dan dekripsi yang terdapat pada aplikasi ini, apabila diberi input kunci yang tepat, fungsi enkripsi harus dapat menyembunyikan pesan dengan benar, tidak hanya tersembunyi tetapi juga harus dapat dikembalikan secara utuh ke pesan aslinya melalui fungsi dekripsi. Aplikasi ini juga harus dapat menghasilkan bilangan prima sesuai dengan metode The Sieve of Eratosthenes untuk digunakan sebagai kunci p.

Pengujian dilakukan dengan cara mencoba menggunakan fungsi Pembangkit Kunci, Enkripsi dan Dekripsi yang ada pada aplikasi KriptoElGamal. Tabel 4.1 berikut ini merupakan tabel hasil pengujian aplikasi KriptoElGamal, terdiri dari kolom Pembangkit Kunci, kolom Enkripsi dan kolom Dekripsi sesuai dengan fungsi yang ada pada aplikasi, dan setiap kolom tersebut terbagi lagi menjadi kolom input dan output.

Tabel 4.1 Tabel Hasil Pengujian Aplikasi KriptoElGamal

No. Pembangkit Kunci Enkripsi Dekripsi

Input Output Input Output Input Output

1. N =

543 Kunci Publik p = 397 alpha = 223 y = 299 Kunci Privat a = 37

Plainteks = Ilkom

Kunci Publik p = 397 alpha = 223 y = 299

Cipherteks = 347,317 344,125 115,335 231,174 185,243 Cipherteks = 347,317 344,125 115,335 231,174 185,243 Kunci privat a = 37

Kunci publik p = 397

Plainteks = Ilkom


(1)

dekripsiAtDisposal(); dispose();

} private void

dekripsiBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

try {

kunciDekripsi[0] = Integer.parseInt(kunciA.getText()); kunciDekripsi[1] = Integer.parseInt(kunciP.getText());

pesanCipher = cipherteks.getText(); dispose();

}

catch (java.lang.Exception e) {

jLabel1.setText("kunci hanya untuk bilangan"); }

} /**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/ plaf.html

*/ try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);


(2)

90

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

Dekripsi dialog = new Dekripsi(new javax.swing.JFrame(), true);

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override public void

windowClosing(java.awt.event.WindowEvent e) { System.exit(0);

} });

dialog.setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton batalBtn;

private javax.swing.JTextArea cipherteks; private javax.swing.JButton dekripsiBtn; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField kunciA;

private javax.swing.JTextField kunciP;

// End of variables declaration }


(3)

DEC SYMBOL DESCRYPTION

0 NUL Null char

1 SCH Start of Heading

2 STX Start of Text

3 ETX End of Text

4 EOT End of Transmission

5 ENQ Enquiry

6 ACK Acknowledgement

7 BEL Bell

8 BS Back Space

9 HT Horizontal Tab

10 LF Line Feed

11 VT Vertical Tab

12 FF Form Feed

13 CR Carriage Return

14 SO Shift Out / X-On

15 SI Shift In / X-Off

16 DLE Data Line Escape

17 DC1 Device Control 1 (oft. XON)

18 DC2 Device Control 2

19 DC3 Device Control 3 (XOFF)

20 DC4 Device Control 4

21 NAK Negativa Acknowledgement

22 SYN Synchronous Idle

23 ETB End of Transmit Block

24 CAN Cancel

25 EM End of Medium

26 SUB Substitute

27 ESC Escape

28 FS File Separator

29 GS Group Separator

30 RS Record Separator

31 US Unit Separator

32 Space

33 ! Exclamation mark

34 Ŗ Double quotes (or speech marks)

35 # Number

36 $ Dollar

37 % Procenttecken

38 & Ampersand

39 Ř Single quote

40 ( Open parenthesis (or open bracket)

41 ) Close parenthesis (or close bracket)

42 * Asterisk

43 + Plus


(4)

92

45 - Hyphen

46 . Period, dot or full stop

47 / Slash or divide

48 0 Zero

49 1 One

50 2 Two

51 3 Three

52 4 Four

53 5 Five

54 6 Six

55 7 Seven

56 8 Eight

57 9 Nine

58 : Colon

59 ; Semicolon

60 < Less than (or open angled bracket)

61 = Equals

62 > Greater than (or close angeled bracket)

63 ? Question mark

64 @ At symbol

65 A Uppercase A

66 B Uppercase B

67 C Uppercase C

68 D Uppercase D

69 E Uppercase E

70 F Uppercase F

71 G Uppercase G

72 H Uppercase H

73 I Uppercase I

74 J Uppercase J

75 K Uppercase K

76 L Uppercase L

77 M Uppercase M

78 N Uppercase N

79 O Uppercase O

80 P Uppercase P

81 Q Uppercase Q

82 R Uppercase R

83 S Uppercase S

84 T Uppercase T

85 U Uppercase U

86 V Uppercase V

87 W Uppercase W

88 X Uppercase X

89 Y Uppercase Y

90 Z Uppercase Z

91 [ Openeing bracket

92 \ Backslash

93 ] Closing bracket

94 ^ Caret Ŕ circumflex

95 _ Underscore


(5)

97 a Lowercase a

98 b Lowercase b

99 c Lowercase c

100 d Lowercase d

101 e Lowercase e

102 f Lowercase f

103 g Lowercase g

104 h Lowercase h

105 i Lowercase i

106 j Lowercase j

107 k Lowercase k

108 l Lowercase l

109 m Lowercase m

110 n Lowercase n

111 o Lowercase o

112 p Lowercase p

113 q Lowercase q

114 r Lowercase r

115 s Lowercase s

116 t Lowercase t

117 u Lowercase u

118 v Lowercase v

119 w Lowercase w

120 x Lowercase x

121 y Lowercase y

122 z Lowercase z

123 { Opening brace

124 | Vertical bar

125 } Closing brace

126 ~ Equivalency sign Ŕ tilde

127 Delete

128 € Euro sign

129

130 ‚ Single low-9 quotation mark

131 ƒ Latin small letter f with hook

132 „ Double low-9 quotation mark

133 … Horizontal ellipsis

134 † Dagger

135 ‡ Double dagger

136 ˆ Modified letter circumflex accent

137 ‰ Per mille sign

138 Š Latin capital letter S with caron

139 ‹ Single left-pointing angle quotation

140 ΠLatin capital ligature OE

141

142 Ţ Latin capital letter Z with caron

143 144

145 Ř Left single quotation mark

146 Ř Right single quotation mark

147 Ŗ Left double quotation mark


(6)

94

149 • Bullet

150 Ŕ En dash

151 ŕ Em dash

152 ˜ Small tilde

153 ™ Trade mark sign

154 š Latin small letter S with caron

155 › Single right-pointing angle quotation mark

156 œ Latin small ligature oe

157

158 ţ Latin small letter z with caron

159 Ÿ Latin capital letter Y with diaeresis

160 Non-breaking space

161 ¡ Inverted Exclamation mark

162 ¢ Cent sign

163 £ Pound sign

164 ¤ Currency sign

165 ¥ Yen sign

166 ¦ Pipe, Broken vertical bar

167 § Section sign

168 ¨ Spacing Diaeresis Ŕ umlaut

169 © Copyright sign

170 ª Feminine ordinanl indicator

171 « Left double angle quotes

172 ¬ Not sign

173 - Soft hyphen

174 ® Registered trade mark sign

175 ¯ Spacing macron Ŕ overline

176 ° Degree sign

177 ± Plus-or-minus sign

178 ² Superscript two Ŕ squared

179 ³ Superscript three - cubed

180 ´ Acute accent Ŕ spacing acute

181 µ Micro sign

182 ¶ Pilcrow sign Ŕ paragraph sign

183 · Middle dot Ŕ Georgian comma

184 ¸ Spacing cedilla

185 ¹ Superscript one

186 º Masculine ordinal indicator

187 » Right double angle quotes

188 ¼ Fraction one quarter

189 ½ Fraction one half

190 ¾ Fraction three quarter

191 ¿ Inverted question mark

192 À Latin capital letter A with grave

193 Á Latin capital letter A with acute

194 Â Latin capital letter A with circumflex

195 Ã Latin capital letter A with tilde

196 Ä Latin capital letter A with diaeresis

197 Å Latin capital letter A wih ring above

198 Æ Latin capital letter with AE

199 Ç Latin capital letter C with cedilla