Anda di halaman 1dari 81

DAFTAR ISI

Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi Daftar Tabel Daftar Gambar Daftar Lampiran Bab 1 Pendahuluan 1.1 Latar Belakang 1.2 Perumusan Masalah 1.3 Tujuan dan Manfaat 1.4 Manfaat Penelitian 1.5 Batasan Masalah 1.6 Metodologi Penelitian 1.7 Sistematika Penulisan Bab 2 Tinjauan Pustaka 2.1 Pengenalan Kriptografi 2.1.1 Definisi 2.1.2 Terminologi 2.2 Sistem Kriptografi 2.2.1 Kriptografi Kunci Simetri 2.2.2 Kriptografi Kunci Asimetri 2.3 Kriptografi Kurva Eliptik 2.3.1 Pengenalan 2.3.2 Sistem Kriptografi Kurva Eliptik 2.3.3 Field 2.3.4 Group 2.4 Bilangan Prima 2.4.1 Metode Pengujian Bilangan Prima Rabin-Miller 2.4.2 Implementasi Pembangkit Bilangan Prima 2.5 Algoritma ElGamal Bab 3 Analisis dan Perancangan 3.1 Analisis Sistem 3.1.1 Analisis Kriptografi Kurva Eliptik 3.1.2 Analisis Algoritma ElGamal 3.1.3 Analisis Metode Pembangkit Bilangan Prima Rabin-Miller 3.2 Perancangan Sistem 3.3 Perancangan DFD (Data Flow Diagram)

Halaman ii iii iv vi vii viii x xi xii 1 1 2 2 3 3 3 4 6 6 6 7 13 13 14 17 17 19 22 24 24 25 26 27 28 28 29 33 37 38 41

3.3.1 DFD Level 0 3.3.2 DFD Level 1 3.4 Perancangan User Interface 3.4.1 Tampilan Menu Utama 3.4.2 Tampilan Menu Proses Pembentukan Kunci 3.4.3 Tampilan Menu Proses Enkripsi 3.4.4 Tampilan Menu Proses Dekripsi 3.4.5 Tampilan Menu About Bab 4 Implementasi dan Pengujian 4.1 Implementasi Sistem 4.1.1 Spesifikasi Kebutuhan Perangkat Keras 4.1.2 Spesifikasi Kebutuhan Perangkat Lunak 4.2 Hasil Implementasi dan Pengujian 4.2.1 Hasil Enkripsi 4.2.2 Hasil Dekripsi 4.3 Tampilan Sistem 4.3.1 Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem 4.3.2 Tampilan Form Pembentukan Kunci pada Aplikasi ElGamal Elliptic Curve Cryptosystem 4.3.3 Tampilan Form Enkripsi pada Aplikasi Elgamal Elliptic Curve Cryptosystem 4.3.4 Tampilan Form Dekripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem 4.3.5 Tampilan Form About pada Aplikasi ElGamal Elliptic Curve Cryptosystem Bab 5 Kesimpulan dan Saran 5.1 Kesimpulan 5.2 Saran Daftar Pustaka

42 42 43 43 44 45 46 47 48 48 48 49 49 49 51 52 53 53 55 61 65 66 66 66 68

DAFTAR TABEL

Nomor Tabel 3.1 3.2 3.3 4.1 4.2 4.3

Nama Tabel Nilai Quadratic Residue Modulo 17 (QR17) Nilai Elemen E17 (1,1) Konversi Karakter ke Kode ASCII Spesifikasi Kebutuhan Perangkat Keras untuk Implementasi Hasil Enkripsi Hasil Dekripsi

Halaman 30 31 35 48 50 51

DAFTAR GAMBAR Nomor Gambar 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 Nama Gambar Plainteks berupa Teks dan Cipherteksnya Plainteks berupa Gambar dan Cipherteksnya Enkripsi Data Tertentu di dalam Arsip Basis Data (a) Skema Enkripsi dan Dekripsi (b) Contoh Ilustrasi Enkripsi dan Dekripsi Skema Kriptografi Simetri Skema Kriptografi Asimetri Sebuah Surat yang Dibubuhi Tanda Tangan Digital Contoh Kurva Eliptik untuk Persamaan y2 = x3 x Contoh Kurva Eliptik untuk Persamaan y2 = x3 + x + 1 Tahapan Proses Enkripsi ElGamal Kriptografi Kurva Eliptik Tahapan Proses Dekripsi ElGamal Kriptografi Kurva Eliptik Flowchart Pembentukan Kunci Kriptografi Kurva Eliptik Flowchart Enkripsi Kriptografi Kurva Eliptik ElGamal Flowchart Dekripsi Kriptografi Kurva Eliptik ElGamal DFD Level 0 DFD Level 1 Proses Enkripsi dan Dekripsi Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Menu Proses Pembentukan Kunci Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Menu Proses Enkripsi Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Menu Proses Dekripsi Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Form Mengenai Aplikasi Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Form Pembentukan Kunci Aplikasi ElGamal Elliptic Curve Cryptosystem Tampilan Form Pembentukan Kunci Setelah Semua Data Dimasukkan Tampilan Form Enkripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem Langkah 1 pada Proses Enkripsi Langkah 2 pada Proses Enkripsi Langkah 3 pada Proses Enkripsi Langkah 4 pada Proses Enkripsi Langkah 5 pada Proses Enkripsi Langkah 6 pada Proses Enkripsi Tampilan Awal Form Dekripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem Langkah 1 dari Proses Dekripsi Langkah 2 dari Proses Dekripsi Langkah 3 dari Proses Dekripsi Langkah 4 dari Proses Dekripsi
Tampilan Form About pada Aplikasi ElGamal Elliptic Curve Cryptosystem

Halaman 8 9 10 12 14 15 16 18 18 34 36 39 40 41 42 42 43 44 45 46 47 53 54 55 56 57 58 58 59 60 60 61 62 63 64 64 65

DAFTAR LAMPIRAN

Halaman A. Listing Program A-1

BAB I PENDAHULUAN

1.1

Latar Belakang

Keamanan merupakan aspek yang sangat penting dalam berkomunikasi, kerahasiaan data atau informasi harus dapat dijaga dari pihak pihak yang tidak berwenang sehingga data atau informasi tersebut dapat terkirim kepada penerima yang semestinya. Sejak zaman dahulu, manusia telah banyak menciptakan cara untuk menjaga keamanan dan keutuhan pesan yang dikirim pada pihak yang berhak menerimanya, salah satunya adalah dengan menggunakan penyandian. Penyandian sendiri adalah proses enkripsi dan deskripsi terhadap pesan yang akan dikirimkan. Ada berbagai cara untuk melakukan penyandian dan sudah ada sejak dulu, ada yang menggunakan besar diameter kayu sebagai kunci, sebuah pita lantas ditulis dan digulung pada kayu tersebut dan terciptalah sebuah metode untuk menyandikan pesan dengan menggunakan kayu sebagai kuncinya. Semakin berkembangnya peradaban membuat cara (algoritma) yang digunakan semakin berkembang. Salah satunya adalah kriptografi kurva eliptik yang dicetuskan oleh Neal Koblitz dan Victor S. Miller pada tahun 1985. Kriptografi kurva eliptik mendasarkan keamanannya pada permasalahan matematis kurva eliptik yang berbeda dengan persamalahan matematis logaritma diskrit dan pemfaktoran bilangan bulat biasa karena tidak ada algoritma waktu subeksponensial yang diketahui untuk memecahkan permasalahan matematis logaritma diskrit kurva eliptik (Elliptic Curve Discrete Logarithm Problem). Karena alasan tersebutlah maka algoritma kriptografi kurva eliptik mempunyai keuntungan jika dibandingkan dengan algoritma kunci publik lainnya yaitu dalam hal ukuran panjang kunci yang lebih pendek tetapi memiliki tingkat keamanan yang sama.

Elliptic Curve Discrete Logarithm Problem (ECDLP) pada implementasinya mempunyai tiga buah protokol yaitu Elliptic Curve Digital Signature Algorithm (ECDSA), Elliptic Curve Diffie-Hellman (ECDH) dan Elliptic Curve ElGamal (ECElGamal)[8]. Untuk skripsi ini akan digunakan salah satu dari tiga protokol tersebut yaitu kriptografi kurva eliptik elgamal (ElGamal ECC), yang menggunakan algoritma ElGamal sebagai algoritma untuk proses enkripsi dan kriptografi kurva eliptik sebagai proses menghasilkan kunci publik, selain itu untuk pembangkit bilangan primanya akan digunakan metode Rabin-Miller.

1.2

Perumusan Masalah

Salah satu hal yang menyebabkan kriptografi kurva eliptik kurang populer adalah karena kerumitannya dan banyaknya operasi matematis yang berhubungan dengan titik-titik pada kurva eliptik oleh karena itu perlu dikaji bagaimana menyederhanakan kriptografi kurva eliptik ini sehingga dapat mudah digunakan dan dipelajari. Selain itu hal lain yang menyebabkan kriptografi kurva eliptik kurang populer adalah lamanya proses enkripsi dekripsi sehinggga perlu dilakukan analisis performansi waktu proses.

1.3

Tujuan dan Manfaat

Tujuan dari penelitian ini adalah membuat sebuah aplikasi keamanan yang mengimpelementasikan kriptografi kurva eliptik.

1.4

Manfaat Penelitian

Manfaat dari penelitian ini adalah: 1. Dapat menambah pengetahuan tentang kriptografi kurva eliptik 2. Dapat mengetahui tingkat keamanan dan efektifitas kriptografi kurva eliptik

1.5

Batasan Masalah

Berikut adalah masalah masalah yang akan dibatasi dalam pengerjaan skripsi ini: 1. Kriptografi kurva eliptik yang digunakan hanya menggunakan medan berhingga (finite field) Fp, algoritma yang digunakan untuk proses enkripsi adalah ElGamal dan pembangkit bilangan prima akan menggunakan metode Rabin Miller. 2. Bahasa pemrograman yang digunakan adalah Microsoft Visual Basic. 3. Informasi yang dienkripsi hanya berupa file teks. 4. Kurva eliptik 2 = 3 + + ( ) yang digunakan dibatasi hanya 1 ( ) menggunakan nilai a = 1 dan b = 1 sehingga kurva nya menjadi 2 = 3 + + Rabin-Miller dibatasi hanya sebesar dua digit.

5. Bilangan prima yang dibangkitkan dengan metode pembangkitan bilangan prima

1.6

Metodologi Penelitian

Dalam penelitian ini, tahapan-tahapan yang akan dilalui adalah sebagai berikut: a. Studi Literatur Metode ini dilaksanakan dengan melakukan studi kepustakaan yang relevan serta buku-buku maupun artikel-artikel atau e-book dan juga jurnal internasional yang didapatkan melalui internet.

b. Analisis Pada tahap ini digunakan untuk mengolah data yang ada dan kemudian melakukan analisis terhadap hasil studi literatur yang diperoleh sehingga menjadi suatu informasi. c. Perancangan Perangkat Lunak Pada tahap ini, digunakan seluruh hasil analisa terhadap studi literatur yang dilakukan untuk merancang perangkat lunak yang akan dihasilkan. Dalam tahapan ini juga dilakukan perancangan model antarmuka serta proses kerja sistem untuk memudahkan dalam proses implementasi. d. Implementasi dan Pengujian Sistem Pada tahap ini dilakukan implementasi perangkat lunak yang sudah dibangun dan dilakukan pengujian pada perangkat lunak untuk mengetahui seberapa besar tingkat keamanan, lama enkripsi dan integritas data. 1.7 Sistematika Penulisan

Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama, sebagai berikut: BAB 1: PENDAHULUAN Bab ini merupakan penjelasan mengenai latar belakang pemilihan topik penelitian Implementasi Kriptografi Kurva Eliptik dengan Algoritma ElGamal dan Metode Pembangkitan Bilangan Prima Rabin-Miller, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian serta sistematika penulisan. BAB 2: TINJAUAN PUSTAKA Bab ini akan menjelaskan teori-teori yang berkaitan dengan kriptografi kurva eliptik, operasi perhitungan pada titik, algoritma kriptografi ElGamal, serta metode pembentukan bilangan prima Rabin Miller.

BAB 3: ANALISIS DAN PERANCANGAN SISTEM Bab ini akan menjabarkan tentang analisis kebutuhan untuk menghasilkan suatu rancang bangun yang pada tahap selanjutnya diimplementasikan dengan bahasa pemrograman. BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM Bab ini berisikan sejumlah informasi yang berkaitan dengan implementasi sistem hasil perancangan serta analisis kinerja sistem berdasarkan data yang diperoleh. BAB 5: KESIMPULAN DAN SARAN Bab ini akan memuat kesimpulan secara umum dari uraian pada bab - bab sebelumnya, serta saran yang berguna untuk pengembangan lebih lanjut pada masa yang akan datang.

BAB II TINJAUAN PUSTAKA


2.1 2.1.1 Pengenalan Kriptografi Definisi

Jika seseorang bertukar pesan (misalnya surat) dengan orang lain, maka orang tersebut tentu ingin pesan yang dikirim sampai ke pihak yang dituju dengan aman. Pengertian aman di sini sangat luas. Aman bisa berarti bahwa selama pengiriman pesan, pesan tersebut tidak dibaca oleh orang yang tidak berhak. Sebab, mungkin saja pesan yang dikirim berisi sesuatu yang rahasia sehingga jika pesan rahasia dibaca oleh pihak lawan atau pihak yang tidak berkepentingan, maka bocorlah kerahasiaan pesan yang dikirim. Ini adalah masalah keamanan pesan yang dinamakan kerahasiaan (confidentiality atau privacy). [4] Aman bisa juga berarti bahwa pesan yang dikirim sampai dengan utuh ke tangan penerima, artinya isi pesan tidak diubah atau dimanipulasi selama pengiriman oleh pihak ketiga. Di sisi penerima pesan, tentu ingin memastikan bahwa pesan yang diterima adalah pesan yang masih asli, bukan pesan yang sudah ditambah-tambah atau dikurangi. Ini adalah masalah keamanan pesan yang disebut integritas data (data integrity). Selain itu, penerima yakin bahwa pesan tersebut memang benar berasal dari pengirim yang sebenarnya, bukan dari orang lain yang menyamar seperti si pengirim, dan pengirim pun yakin bahwa orang yang dikirimi pesan adalah orang yang sesungguhnya. Ini adalah masalah keamanan pesan yang dinamakan otentikasi (authentication).[4] Sebagai seorang penerima pesan, tentu ingin memastikan kelak pengirim pesan tidak membantah pernah mengirim pesan. Ini adalah masalah keamanan yang disebut penyangkalan (repudiation). Zaman sekarang, banyak orang yang membantah telah mengirim atau menerima pesan. Padahal penerima yakin bahwa memang menerima

pesan dari orang tersebut. Jika pengirim membantah telah mengirim pesan, maka perlu dibuktikan ketidakbenaran penyangkalan tersebut (non-repudiation).[4] Keempat masalah keamanan yang disebutkan di atas, yaitu kerahasiaan, integritas data, otentikasi dan penyangkalan dapat diselesaikan dengan menggunakan kriptografi. Kriptografi tidak hanya menyediakan alat untuk keamanan pesan, tetapi juga sekumpulan teknik yang berguna.[9] Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptos artinya secret (rahasia), sedangkan graphein artinya writing (tulisan). Jadi, kriptografi berarti secret writing (tulisan rahasia)[5]. Ada beberapa definisi kriptografi yang telah dikemukakan di dalam berbagai literatur, seperti: 1. Bruce Schneier di dalam bukunya Applied Cryptography menyatakan bahwa: Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and science of keeping messages secure).[2] 2. Menezes, Alfred J., Paul C. van Oorschot dan Scott A. Vanstone dalam buku mereka Handbook of Applied Cryptography menyatakan bahwa: Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data serta otentikasi.

2.1.2

Terminologi Di dalam kriptografi, akan sering ditemukan berbagai istilah atau terminologi.

Beberapa istilah yang penting untuk diketahui diberikan di bawah ini.

1. Plainteks dan Cipherteks. Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext) atau teks-jelas (cleartext). Pesan dapat berupa data atau informasi yang dikirim (melalui kurir, saluran telekomunikasi) atau yang disimpan di dalam media perekaman (kertas,

storage). Pesan yang tersimpan tidak hanya berupa teks, tetapi juga dapat berbentuk citra (image), suara/bunyi (audio) dan video atau berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut cipherteks (ciphertext) atau kriptogram (cryptogram). Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang dierima bisa dibaca. Gambar 2.1 dan 2.2 memperlihatkan contoh dari dua buah plainteks, masing-masing berupa teks dan gambar, serta cipherteks yang berkoresponden. [9]

(a) Plainteks

(b) Cipherteks

(sumber: Munir, Rinaldi. 2006) Gambar 2.1 Plainteks berupa Teks dan Cipherteksnya

(a) Plainteks

(b) Cipherteks

(sumber: Munir, Rinaldi. 2006) Gambar 2.2 Plainteks berupa Gambar dan Cipherteksnya

2. Pengirim dan penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya. Jadi, orang bisa bertukar pesan dengan orang lainnya (contoh: Alice berkomunikasi dengan Bob), sedangkan di dalam jaringan komputer, mesin (komputer) berkomunikasi dengan mesin (contoh: mesin ATM berkomunikasi dengan komputer server di bank). Pengirim tentu menginginkan pesan dapat dikirim secara aman, yaitu ia yakin bahwa pihak lain tidak dapat membaca isi pesan yang dikirim. Solusinya adalah dengan cara menyandikan pesan menjadi cipherteks. [9] 3. Enkripsi dan dekripsi Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering. Sedangkan, proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering. Enkripsi dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun pada pesan tersimpan. Istilah encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi dokumen yang disimpan di dalam storage. Contoh encryption of data in motion adalah pengiriman nomor PIN dari mesin ATM ke komputer server di kantor bank pusat. Contoh encryption of data at-rest adalah enkripsi file basis data di dalam hard disk. Gambar 2.3 memperlihatkan enkripsi file basis data, di mana enkripsi hanya dilakukan terhadap field-field tertentu saja (Nama, Tinggi dan Berat). [9]

(sumber: Munir, Rinaldi. 2006) Gambar 2.3 Enkripsi Data tertentu di dalam Arsip Basisdata 4. Cipher dan kunci Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering dan deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk enciphering dan deciphering. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yaitu himpunan yang berisi elemen-elemen plainteks dan himpunan yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen antara kedua himpunan tersebut. Misalkan P menyatakan plainteks dan C menyatakan cipherteks, maka fungsi enkripsi E memetakan P ke C, E(P) = C Dan fungsi dekripsi D memetakan C ke P,

D(C) = P Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka kesamaan berikut harus benar, D(E(P))= P [9] Keamanan algoritma kriptografi sering diukur dari banyaknya kerja (work) yang dibutuhkan untuk memecahkan cipherteks menjadi plainteksnya tanpa mengetahui kunci yang digunakan. Kerja ini dapat diekivalenkan dengan waktu, memori, uang, dan lain-lain. Semakin banyak kerja yang diperlukan, yang berarti juga semakin lama waktu yang dibutuhkan, maka semakin kuat algoritma kriptografi tersebut, yang berarti semakin aman digunakan untuk menyandikan pesan. Jika keamanan kriptografi ditentukan dengan menjaga kerahasiaan

algoritmanya, maka algoritma kriptografinya dinamakan algoritma restricted. Algoritma restricted mempunyai sejarah tersendiri di dalam kriptografi. Algoritma restricted biasanya digunakan oleh sekelompok orang untuk bertukar pesan satu sama lain. Mereka membuat suatu algoritma enkripsi yang hanya diketahui oleh anggota kelompok itu saja. Tetapi, algoritma restricted tidak cocok lagi saat ini, sebab setiap kali ada anggota kelompok keluar, maka algoritma kriptografi harus diganti lagi. Kriptografi modern mengatasi masalah di atas dengan penggunaan kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan. Dengan menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai EK(P) = C dan DK(C) = P dan kedua fungsi ini memenuhi DK(EK(P)) = P Gambar 2.4(a) berikut memperlihatkan skema enkripsi dan dekripsi dengan menggunakan kunci, sedangkan Gambar 2.4(b) mengilustrasikan enkripsi dan dekripsi terhadap sebuah pesan. [9]

(sumber: Munir, Rinaldi. 2006) Gambar 2.4(a) Skema Enkripsi dan Dekripsi, (b) Contoh Ilustrasi Enkripsi dan Dekripsi Pesan

2.2

Sistem Kriptografi

Kriptogafi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) adalah kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci. Di dalam sistem kriptografi, cipher hanyalah salah satu komponen saja. [9] Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan menjadi kriptografi kunci-simetri (symmetric-key cryptography) dan kriptografi kunci-asimetri (asymmetric-key cryptography). [7]

2.2.1

Kriptografi Kunci Simetri

Pada sistem kriptografi kunci-simetri, kunci untuk enkripsi sama dengan kunci untuk dekripsi, oleh karena itulah dinamakan kriptografi simetri. Istilah lain untuk kriptografi kunci-simetri adalah kriptografi kunci privat (private-key cryptography), kriptografi kunci rahasia (secret-key cryptography). Sistem kriptografi kunci-simetri

(atau disingkat menjadi kriptografi simetri saja), mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Kriptografi simetri merupakan satu-satunya jenis kriptografi yang dikenal dalam catatan sejarah hingga pada tahun 1976. Beberapa algoritma kriptografi modern yang termasuk ke dalam sistem kriptografi simetri, diantaranya adalah Data Encryption Standard (DES), Blowfish, Twofish, Triple-DES, International Data Encryption Standard (IDEA), Serpent, dan yang terbaru adalah Advanced Encryption Standard (AES). [9] Secara umum, cipher yang termasuk ke dalam kriptografi simetri beroperasi dalam mode blok (block cipher), yaitu setiap kali enkripsi/dekripsi dilakukan terhadap satu blok data (yang berukuran tertentu), atau beroperasi dalam mode aliran (stream cipher), yaitu setiap kali enkripsi/dekrisi dilakukan terhadap satu bit atau satu byte data. Aplikasi kriptografi sismetri yang utama adalah melindungi kerahasiaan data yang dikirim melalui saluran tidak aman dan melindungi kerahasiaan data yang disimpan pada media yang tidak aman. Kelemahan dari sistem ini adalah baik pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara yang aman untuk memberitahukan kunci kepada penerima pesan. Gambaran skema kriptografi simetri dapat dilihat pada gambar 2.5:

(sumber: Munir, Rinaldi. 2006) Gambar 2.5 Skema Kriptografi Simetri 2.2.2 Kriptografi Kunci Asimetri

Jika kunci enkripsi tidak sama dengan kunci untuk dekripsi, maka kriptografinya dinamakan sistem kriptografi asimetri. Nama lainnya adalah kriptografi kunci-publik (public-key cryptography), sebab kunci untuk enkripsi tidak rahasia dan dapat

diketahui oleh siapapun (diumumkan ke publik), sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan (karena itu rahasia). Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci, yaitu kunci privat dan kunci publik. Pengirim mengenkripsi pesan dengan menggunakan kunci publik. Hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci privatnya sendiri. Gambaran dari skema kriptografi asimetri ini dapat dilihat pada gambar 2.6:

(sumber: Munir, Rinaldi. 2006) Gambar 2.6 Skema Kriptografi Asimetri Contoh algoritma kriptografi kunci-publik diantaranya RSA, Elgamal, DSA, NTRU dan sebagainya. [9] Kriptografi kunci-publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Setiap orang dapat memasukkan surat ke dalam kotak surat tersebut, tetapi hanya pemilik kotak yang dapat membuka kotak dan membaca surat di dalamnya karena ia yang memiliki kunci. Keuntungan sistem ini ada dua. Pertama, tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada sistem kriptografi simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim pesan. Saluran untuk mengirim pesan umumnya tidak aman. Kedua, 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-simetris dimana jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi. Contoh penggunaan, misalkan jaringan komputer

menghubungkan kompuer karyawan di kantor cabang dengna komputer manajer di kantor pusat. Seluruh kepala cabang diberitahukan bahwa kalalu mereka mengirim laporan ke manajer di kantor pusat, mereka harus mengenkripsi laporan tersebut dengan kunci publik manajer (kunci publik manajer diumumkan kepada seluruh kepala cabang). Untuk mengembalikan laporan tersandi ke laporan semula, hanya manajer yang dapat melakukan dekripsi, karena hanya dialah yang memegang kunci privat. Selama proses transmisi cipherteks dari kantor cabang ke kantor pusat melalui saluran komunikasi, mungkin saja data yang dikirim disadap oleh pihak ketiga, namun pihak ketiga ini tidak dapat mengembalikan cipherteks ke plainteksnya karena tidak mengetahui kunci untuk dekripsi. Meski berusia relatif muda (sejak 1976), kriptografi kunci-publik mempunyai kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri. Kontribusi yang paling penting adalah tanda-tangan digital pada pesan untuk memberikan aspek keamanan otentikasi, integritas data dan nirpenyangkalan. Tanda-tangan digital adalah nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan. Pengirim pesan mengenkripsi pesan (yang sudah diringkas) dengan kunci privatnya, hasil enkripsi inilah yang dinamakan tanda-tangan digital. Tanda tangan digital dilekatkan (embed) pada pesan asli. Penerima pesan memverifikasi tanda-tangan digital dengan menggunakan kunci publik. Gambar 2.7 memperlihatkan sebuah surat elektronik yang di bagian bawah sudah dibubuhi tanda-tangan digital (di antara BEGIN dan END SIGNATURE). [9]

(sumber: Munir, Rinaldi. 2006) Gambar 2.7 Sebuah Surat yang Dibubuhi Tanda-Tangan Digital

2.3 2.3.1

Kriptografi Kurva Eliptik Pengenalan

The Elliptic Curce Cryptosystem (ECC) diperkenalkan pada tahun 1985 oleh Neal Koblitz dan Victor Miller dari Universitas Washington. Kurva eliptik mempunyai masalah logaritma yang terpisah sehingga sulit untuk dipecahkan. Kriptografi kurva eliptik termasuk sistem kriptografi kunci publik yang mendasarkan keamanannya pada permasalahan matematis kurva eliptik. Tidak seperti permasalahan matematis logaritma diskrit/ Discrete Logarithm Problem (DLP) dan pemfaktoran bilangan bulat/ Integer Factorization Problem (IFP), tidak ada algoritma waktu sub-eksponensial yang diketahui untuk memecahkan permasalahan matematis algoritma diskrit kurva eliptik/ Elliptic Curve Discrete Logarithm Problem (ECDLP). Oleh karena alasan tersebut algoritma kriptografi kurva eliptik mempunyai keuntungan bila dibandingkan algoritma kriptografi kunci publik lainnya, yaitu dalam hal ukuran kunci yang lebih pendek tetapi tingkat keamanan yang sama.[8] Kurva eliptik juga digunakan pada beberapa algoritma pemfaktoran integer yang juga memiliki aplikasi dalam kriptografi, seperti Lenstra Elliptic Curve Factorization. Algoritma kunci publik didasarkan pada variasi perhitungan matematis yang terbilang sangat sulit dipecahkan tanpa pengetahuan tertentu mengenai bagaimana perhitungan tersebut dibuat. Pembuat algoritma menyimpan kunci rahasia dan menyebarkan kunci publiknya. Algoritma kunci publik digunakan untuk mengenkripsi pesan dimana hanya pembuat algoritma yang dapat memecahkannya. Sistem kunci publik awal, seperti algoritma RSA, menggunakan dua bilangan prima yang sangat besar. Pengguna memilih dua bilangan prima acak yang besar sebagai kunci rahasianya dan mempublikasikan hasil perhitungannya sebagai kunci publik. Pemfaktoran bilangan bilangan besar yang sangat sulit dapat menjaga kerahasiaan kunci rahasia itu dari orang lain.[1] Persoalan lain menyangkut perhitungan aljabar ab = c, dimana a dan c diketahui. Perhitungan semacam itu menyangkut bilangan kompleks atau real yang dapat dengan mudah dipecahkan menggunakan algoritma. Tetapi dalam kumpulan bilangan terbatas yang besar, menemukan solusi untuk perhitungan semacam itu sangat sulit dan dikenal sebagai discrete logarithm problem. Kurva eliptik dapat ditulis dengan perhitungan matematis sebagai berikut [10]:

y2 = x3 + ax + b

Contoh kurva eliptik dapat dilihat pada gambar 2.8 dan gambar 2.9.

Gambar 2.8 Contoh Kurva Eliptik Untuk Persamaan y2 = x3 x

Gambar 2.9 Contoh Kurva Eliptik Untuk Persamaan y2 = x3 + x + 1

Kumpulan titik pada kurva dapat membentuk kumpulan abelian (dengan titik pada tak terhingga sebagai elemen identitas). Jika nilai x dan y dipilih dari daerah terbatas yang besar, solusi akan membentuk suatu kumpulan abelian terbatas. Permasalahan logaritma diskrit pada kumpulan kurva eliptik tersebut dipercaya lebih sulit dibandingkan permasalahan yang sama (perkalian bilangan tidak nol) dalam daerah terbatas. Selain itu, kunci dalam algoritma kriptografi kurva eliptik dapat dipilih yang lebih pendek untuk keamanan yang cukup tinggi. Sebagai salah satu sistem kripto kunci publik, belum ada pembuktian matematis untuk tingkat kesulitan Elliptic Curve Cryptosystem yang telah dipublikasikan sampai tahun 2006.[1] Elliptic Curve Cryptosystem mempunyai panjang kunci 160 bit yang dipercaya mempunyai tingkat keamanan yang setara dengan RSA 1024 bit. Elliptic Curve Cryptosystem

menggunakan parameter yang lebih kecil dibandingkan sistem algoritma konvensional. Elliptic Curve Cryptosystem sendiri sudah dipelajari selama bertahun tahun. Kurva eliptik menghasilkan bilangan prima Zp atau menghasilkan batasan GF (2n), merupakan sesuatu yang menarik sebab digunakan untuk menyediakan suatu cara membangun algoritma kriptografi. Elliptic Curve Cryptosystem mempunyai potensi untuk menyediakan kunci umum sistem kripto yang lebih cepat dengan ukuran kunci yang lebih kecil.[1]

2.3.2

Sistem Kriptografi Kurva Eliptik


Kurva eliptik yang digunakan dalam kriptografi didefinisikan dengan menggunakan

dua tipe daerah terbatas : daerah karakteristik ganjil (Fp, dimana p > 3 adalah bilangan prima yang besar) dan daerah karakteristik dua (F2m). Karena perbedaan itu menjadi tidak begitu penting, kedua daerah terbatas tersebut dapat ditunjukkan sebagai Fq, dimana q = p atau q = 2m. Elemen dari Fp adalah integer (0 < ) di mana elemen tersebut dapat dikombinasikan menggunakan modul aritmetik. Untuk F2m sedikit lebih kompleks : salah satu mengandung

representasi yang berbeda dari elemen daerah sebagai bit string untuk pilihan polinomial f(x) biner yang irreducible yang derajat m.

Bidang terbatas (finite field) atau yang biasa disebut dengan Galois Field (GF) adalah bidang yang hanya memiliki elemen bilangan yang terbatas. Derajat (order) dari bidang terbatas adalah banyaknya elemen yang ada dalam bidang. Jika q adalah pangkat prima (prime order), maka hanya ada satu bidang terbatas dengan derajat q. Bidang tersebut dilambangkan dengan Fq atau GF(q). Banyak cara untuk merepresentasikan elemen dari Fq, jika q = pm, dimana p adalah bilangan prima dan m adalah bilangan integer positif, maka p disebut sebagai karakteristik dari Fq dan m disebut sebagai derajat perluasan (extension degree) dari Fq. Bidang terbatas yang digunakan dalam kriptografi adalah q = p, dimana p adalah bilangan prima ganjil, yang dilambangkan dengan Fp (odd prime), dan q = 2m, dimana m adalah integer lebih besar dari satu, yang dilambangkan dengan F2m (characteristic two or even).[2] Bidang terbatas Fp merupakan sebuah bidang yang beranggotakan bilangan integer (0, 1, , p-1) dan p merupakan bilangan prima. Setiap perhitungan dikalkulasikan dengan modulo p agar hasilnya tetap berada dalam daerah Fp. Operasi yang berlaku dalam bidang terbatas Fp adalah :[2]

1. Penjumlahan (addition), jika a, b Fp, dimana a + b = r, dimana r adalah sisa pembagian a penjumlahan modulo p (mod p). 2. Perkalian (multiplication), jika a,b Fp, maka a * b = s, dimana s adalah sisa pembagian a modulo p (mod p). * b dengan bilangan prima p, 0 1. Perkalian seperti ini disebut perkalian + b dengan bilangan prima p, 0 1. Penjumlahan seperti ini disebut

Bidang terbatas F2m biasa disebut dengan bidang terbatas biner (biner finite field), dapat dipandang sebagai ruang vector dimensi m pada F2. Karena itu ada himpunan yang beranggotakan m elemen {0, 1, , 1} di dalam F2m sedemikian rupa sehingga setiap a F2m dapat ditulis secara unik ke dalam bentuk :[2] a = a00 + a11 + + am-11 + am , untuk ai {0,1}

Salah satu cara untuk merepresentasikan elemen elemen pada F2m adalah dengan representasi basis polinomial. Pada representasi basis polynomial elemen pada F2m merupakan polinomial dengan derajat lebih kecil dari m, dengan koefisien bilangan 0 atau 1.[2] {am-1xm-1+ + a2x2+ a1x1+ a0x0 | ai : 0,1}
2 3 = 1 +

2 3 = 1 + 1 +

digambarkan diatas dimana a, b . disebut bilangan prima jika dan hanya jika p > 3 yang merupakan kelompok ganjil. Kurva eliptik (EC) dapat diubah menjadi kelompok abelian dengan semua titik dari EC, yang meliputi ketidak-terbatasan O dibawah kondisi 4a3+27b2 0 (mod p), jika (x1,y1) dan Q(x2,y2) ada pada kurva eliptik. Titik yang ketiga R adalah P + Q = (x3,y3). Titik yang ketiga dari R bisa digambarkan sebagai berikut : Pertama digambarkan sebuah garis yang melewati P dan Q. cari persimpangan titik R pada kurva eliptik dan kemudian temukan titik

Persamaan kurva eliptik menggunakan rumus 2 = 3 + + yang

1 + 3 1 3

2 1

pemantulan dari R berkenaan dengan X-axis, yang merupakan penjumlahan dari P dan Q.[2] Salah satu ECC yang terkenal adalah Elliptic Curve Direcrete Logarithm Problem (ECDLP) yang dinyatakan sebagai berikut : Diambil suatu bilangan prima p dan tentukan persamaan kurva eliptik, kemudian xp menyatakan titik P yang ditambahkan dengan dirinya sendiri sebanyak x kali, dan bila Q merupakan kelipatan P maka Q = xP untuk suatu x. Keamanan dari ECDLP diperoleh dari sulitnya mendapatkan x bila P dan Q diketahui, apalagi nilai P dan Q cukup besar. Kompleksitas algoritma untuk mencarinya dengan eksponensial dan diperlukan logaritma diskrit.[2] Contoh : Diketahui p = 17, dipilih a = 1 dan b = 5 dan menggunakan persamaan sebelumnya dengan Z17 menjadi 2 = 3 + + 5 (mod 17). Karenanya penyamaan yang diberikan kurva eliptik:[1]
hasil perhitungan di bawah ini : 2 1 2 9 2 1 2 = 3 8 3 = 2 1 5 + = (3,1) + (8,10) 1. P = (3,1) dan Q(8,10) dua titik pada kurva eliptik. Kemudian P + Q = R(x3,y3) merupakan

Karena 9 x 51 (mod 17) = 9 x 7 (mod 17) = 12. Ini menghasilkan x3= (122-3-8)(mod 17) =14

Maka P + Q = R(14,3)

9 3 = 1 + (3 14) = 1 + 12 (11) = 133 ( 17) = 3 5

2. P = (3,1) kemudian 2P = P + P = (x3,y3). Perhitungannya seperti di bawah ini :


2 31 27 + 1 2 + 6 = 142 6 = 190( 17) = 3 3 = 21 = 2 21 2

2 = (3,1) + (3,1)

dan

Maka 2P = (3,16)

3 = 1 +

2 31 + (1 3 ) = 1 + 14(3 3) = 1( 17) = 16 21

2.3.3

Field Field adalah kumpulan dari elemen, X dan Y, yang terdapat dalam fungsi.

Beberapa contoh dari field adalah bilangan real, bilangan kompleks, bilangan rasional dan bilangan integer modulo bilangan prima. Contoh yang terakhir ini merupakan salah satu contoh finite field. Persyaratan dari sebuah field adalah penjumlahan dan perkalian biasa, ditambah eksistensi dari inversi penjumlahan dan perkalian, kecuali 0 yang tidak mempunyai inversi perkalian. Dengan perkataan lain, sebuah field mempunyai penjumlahan, pengurangan, perkalian dan pembagian. Operasi-operasi ini selalu menghasilkan sebuah hasil yang terdapat di dalam field tersebut dengan pengecualian pembagian dengan bilangan nol yang tidak terdefinisi.[1] Bilangan kompleks dapat didefinisikan sebagai b.i + a dengan aturan reduksi t2 + 1 = 0. Untuk melakukan perkalian bilangan kompleks, kita dapat menganggap t sebagai unknown (tak dikenal), mengumpulkan bilangan pangkat dari t dan menerapkan aturan reduksi untuk menyederhanakan hasilnya. Konstruksi ini berlaku untuk aturan reduksi lainnya yang mengandung bilangan pangkat lebih besar dari t. Koefisien dari bilangan pangkat dari t boleh berasal dari semua field, tetapi bila kita mengambil integer modulo p sebagai field-nya, kita mendapatkan sebuah finite field dengan pm elemen, dimana m adalah derajat dari aturan reduksi. Tidak semua aturan reduksi berlaku, kita harus menggunakan polinomial yang tidak dapat direduksi lagi (irreducible polynomial). [1] Sebagai catatan, ketika mengalikan elemen dari field sebenarnya dua aturan reduksi bekerja secara simultan, yaitu aturan untuk mereduksi koefisien modulo p dan aturan untuk mereduksi pangkat besar dari t. Konstruksi ini bekerja untuk semua p dan m, selama p adalah bilangan prima. Faktanya, setiap finite field dapat dikonstruksikan dengan cara ini. Fakta ini sebenarnya direferensikan kepada Galois field dengan pm elemen, dengan menggunakan notasi GF(pm). Bilangan prima p merupakan karakteristik dari field.[1]

Representasi field menentukan bit-pattern mana yang akan digunakan untuk merepresentasikan bermacam-macam elemen field. Representasi dipilih untuk membuat operasi aritmatika field menjadi efisien.[1] 2.3.4 Group

Group merupakan kumpulan dari field. Terdapat tiga buah group utama yang sangat disukai oleh para ahli kriptografi yaitu :[1] 1. Group perkalian dari field bilangan prima : GF(p). 2. Group perkalian dari finite field dari karakteristik 2 : GF(2n). 3. Elliptic Curve Group pada finite field F : EC(F). Jika p adalah modulus dan bilangan prima, maka kompleksitas untuk mencari logaritma diskrit pada GF(p) pada dasarnya sama dengan memfaktorisasi sebuah integer n, dimana n adalah pemangkatan dari dua buah bilangan prima yang hampir sama panjang.[1] 2.4 Bilangan Prima

Bilangan prima adalah bilangan integer yang lebih besar dari satu yang memiliki faktor bilangan satu dan bilangan itu sendiri. Dalam proses pembangkitan bilangan prima, sering dihadapkan dengan beberapa masalah berikut ini :[8][9] 1. Berapa banyak bilangan prima yang tersedia ? Cukupkah untuk memberikan keamanan bagi kriptografi ? Ahli matematika telah menemukan bahwa jumlah bilangan prima yang tersedia pada bilangan 512 bit adalah sekitar 10151. 2. Mungkinkah dua orang atau lebih mendapatkan dua bilangan prima yang sama? Bila terdapat satu milyar (109) orang yang masing-masing berusaha mendapatkan 1000 bilangan prima, maka diperlukan hanya 1012 bilangan prima yang berbeda untuk memenuhinya. Bandingkan 1012 bilangan prima yang diperlukan dengan 10151 bilangan prima yang tersedia. Bayangkan pula bila disediakan bilangan 1024 bit, maka akan tersedia bilangan prima sekitar 10305. Angka ini diperoleh dari jumlah bilangan prima yang kurang dari n adalah sekitar n / (ln n). 3. Dapatkah seseorang membuat database yang dapat menyimpan seluruh bilangan prima dari 2 hingga kurang dari 21024 ? Dapat, tapi juga mustahil. Bila mempunyai

harddisk yang berkapasitas 1035 word (untuk mempermudah perhitungan, dianggap setiap word sanggup menyimpan satu bilangan prima), maka akan diperlukan sekitar 10270 harddisk untuk menyimpan seluruh bilangan prima yang kurang dari 21024. Selain itu, pemfaktoran bilangan prima juga tidak mudah. Bila mencari faktor prima sedemikian sulit, bagaimana dapat membangkitkan bilangan prima dengan mudah ? Triknya adalah pertanyaan ya / tidak. Apakah ini bilangan prima ? Menjawab pertanyaan ini lebih mudah daripada menjawab pertanyaan yang lebih kompleks seperti berapa faktor prima dari n ?[8][9] Cara yang salah untuk mendapatkan bilangan prima adalah dengan membangkitkan bilangan acak dan kemudian mencoba memfaktorkannya. Cara yang benar adalah membangkitkan bilangan acak dan kemudian mencoba apakah merupakan bilangan prima. Terdapat beberapa metode tes peluang prima, tes menentukan apakah suatu bilangan termasuk bilangan prima atau bukan dengan tingkat keyakinan tertentu. Jadi kita tidak yakin seratus persen bahwa bilangan yang kita tes adalah betul-betul bilangan prima. [8][9]

2.4.1

Metode Pengujian Bilangan Prima Rabin-Miller

Metode untuk tes peluang prima yang paling sering digunakan adalah metode RabinMiller. Algoritma ini dirancang oleh Michael Rabin dengan berdasarkan beberapa ide dari Gary Miller. Algoritma pengetesan ini adalah seperti berikut :[8][9] 1. Pilih bilangan acak p untuk dites. 2. Hitung b, dimana b adalah banyaknya (p 1) dibagi 2 (yaitu, b adalah pangkat terbesar dari 2, sedemikian sehingga 2b merupakan faktor dari p 1). 3. Kemudian hitung m, sedemikian sehingga p = 1 + 2b.m 4. Pilih bilangan acak a sedemikian sehingga a lebih kecil daripada p. 5. Set j = 0 dan set z = am mod p. 6. Jika z = 1 atau jika z = p 1, maka p lolos tes dan mungkin bilangan prima. 7. Jika j > 0 dan z = 1, maka p bukan bilangan prima.

8. Set j = j + 1. Bila j < b dan z p 1, set z = z2 mod p dan kembali ke tahap 4. Jika z = p 1, maka p lolos tes dan mungkin prima. 9. Jika j = b dan z p 1, maka p bukan bilangan prima.

2.4.2

Implementasi Pembangkit Bilangan Prima

Dalam dunia nyata, implementasi pembangkitan bilangan prima dapat berlangsung dengan sangat cepat. Salah satu implementasinya adalah sebagai berikut:[8][9] 1. Bangkitkan bilangan acak p sepanjang n bit. 2. Set bit Most Significant Bit (MSB) dan Least Significant Bit (LSB) nya ke 1. Atau set bit paling kiri dan kanannya ke bit satu. Pengesetan bit MSB menjamin panjang bit bilangan prima yang dihasilkan sesuai dengan yang diinginkan. Pengesetan bit LSB menjamin agar bilangan acak adalah bilangan ganjil, karena bilangan prima pasti harus bilangan ganjil. 3. Periksa apakah p tidak dapat dibagi bilangan prima kecil : 2,3,5,7,11, dan seterusnya hingga bilangan prima tertinggi yang lebih kecil dari 256. Pemeriksaan ini akan mengurangi 80 % peluang bahwa bilangan yang dipilih bukan bilangan prima. Artinya bila bilangan yang dipilih tidak dapat dibagi bilangan prima kecil di atas, peluang bilangan yang dipilih merupakan bilangan prima adalah 80 %. Lakukan tes Rabin Miller untuk beberapa nilai a. Bila p lolos tes untuk satu nilai a, bangkitkan nilai a lainnya. Pilih nilai a yang kecil agar perhitungan lebih cepat. Lakukan tes dengan minimal 5 macam nilai a. Bila p gagal tes, bangkitkan p lainnya dan ulangi langkah (2) 2.5 Algoritma ElGamal

Algoritma ElGamal diusulkan oleh Taher ElGamal pada tahun 1984. Keamanan dari algoritma ini didasarkan pada kesulitan memecahkan masalah logaritma diskrit yang terdapat dalam grup. Logaritma ini sendiri disebut logaritma diskrit karena nilainya berhingga dan bergantung pada bilangan prima yang digunakan. Karena bilangan prima yang digunakan adalah bilangan prima yang besar, maka sangat sulit atau

bahkan tidak mungkin menurunkan kunci privat dari kunci public walaupun diserang dengan menggunakan sumber daya komputer yang besar.[3] Berikut ini algoritma ElGamal yang diilustrasikan dua orang pengguna yaitu Adi dan Budi:[3]
1. Diberikan p sebuah bilangan prima untuk Fp dan yang merupakan anggota Fp. 2. Setiap pengguna memilih sebuah kunci rahasia a yang merupakan bilangan integer untuk 0a (p 2). 3. Setiap pengguna menghitung kunci publik =a(mod p) yang nilainya akan dikirim. 4. Misalkan Adi akan mengirim pesan x Fp, maka dia harus memilih sebuah bilangan k persamaan: secara acak, yaitu k F*p-1 dan mengirimkan pesan terenkripsi ke Budi dengan ( y1,y2 ) ( kmod p, xkmod p) y2( y1aJ)-1mod p aJ merupakan kunci rahasia Budi.

5. Untuk melakukan dekripsi, Budi menghitung:

BAB III ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem Analisis dan perancangan merupakan salah satu tahap dari pembuatan sebuah sistem. Tahapan tahapan tersebut saling berhubungan satu dengan yang lain dan membentuk sebuah siklus. Dari semua tahap tersebut, tahap analisis merupakan tahapan yang paling penting, karena pada tahapan ini lah awal dari semua tahapan yang lain, kesalahan pada tahap ini akan menyebabkan kesalahan yang berkelanjutan dan berdampak sistemik pada tahapan selanjutnya. Proses analisis dalam pembuatan sebuah sistem merupakan sebuah prosedur yang harus dilakukan untuk pemeriksaan masalah dan pemecahan masalah yang timbul dalam sistem yang baru. Tahapan perancangan merupakan tahapan setelah analisis. Perancangan merupakan perumusan kebutuhan kebutuhan fungsional dan persiapan untuk mengimpelementasikan dan menggambarkan sistem yang akan dibuat. Perancangan sendiri dapat berupa penggambaran, perencanaan dan pembuatan sketsa atau pengaturan dari beberapa elemen yang berbeda dan saling terpisah sehingga dapat bergabung ke dalam satu kesatuan yang utuh dan berfungsi. Tahapan perancangan sistem mempunyai dua buah tujuan, yaitu untuk memenuhi kebutuhan seorang pengguna serta memberikan gambaran jelas dan lengkap kepada si pembuat program (programmer) dan pengguna. Enkripsi dalam kriptografi adalah proses dimana informasi/ data yang hendak dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai informasi awal karena telah diubah terlebih dahulu dengan menggunakan algoritma tertentu. Dekripsi

sendiri merupakan kebalikan dari proses enkripsi, yaitu proses mengubah kembali bentuk yang tersamar tadi kembali menjadi informasi awal. Pembangkit bilangan prima bertujuan untuk mendapatkan bilangan secara acak sehingga dapat digunakan sebagai kunci dalam proses enkripsi dengan algoritma tertentu. Ada banyak metode pembangkit bilangan prima, namun yang akan dibahas adalah metode Rabin-Miller.

3.1.1 Analisis Kriptografi Kurva Eliptik Kriptografi kurva eliptik merupakan metode kriptografi yang menggunakan titik titik pada kurva eliptik sebagai kunci untuk melakukan proses enkripsi dan dekripsi. Kekuatan dari kriptografi ini adalah banyaknya titik yang terdapat pada sebuah kurva dan sulitnya mengetahui kurva yang digunakan. Kriptografi kurva eliptik menggunakan dua kunci yaitu kunci publik dan kunci privat. Kunci publik pada kriptografi kurva eliptik adalah sebuah titik pada kurva yang kita pilih sendiri, sedangkan kunci privatnya adalah angka yang bersifat acak. Kunci publik diperoleh dengan melakukan operasi perkalian antara kunci privat dengan titik P yang kita pilih dari kurva. Adapun proses pembentukan kurva dan pembentukan kunci pada kriptografi kuva eliptik adalah sebagai berikut: 1. Menentukan bilangan prima (p) dengan syarat p > 3 untuk Fp Bilangan prima yang akan digunakan pada tahap ini adalah bilangan prima yang akan dihasilkan dari pembangkit bilangan acak Rabin-Miller. Adapun apabila kita ingin menguji apakah suatu bilangan merupakan bilangan prima atau tidak, maka dapat diuji dengan cara berikut ini: Misalnya diambil bilangan prima 17, kemudian diambil nilai n = 2 kemudian dihitung Greatest Common Divisor (GCD) atau pembagi bersama terbesar dari 17 adalah (13,2) = 1

maka 17 adalah bilangan prima karena tidak habis dibagi, sehingga didapat p = 17.

1 1( ) = 2171 = 65536 1 ( 17)

2. Menentukan bentuk persamaan kurva eliptik Persamaan umum untuk kurva eliptik adalah dimana nilai a, b dibuat secara acak untuk koefisiennya. Pada sistem ini, sebagai salah satu batasan masalah, maka ditetapkan bahwa nilai a = 1 dan b = 1 sedangkan p kita gunakan 17, sehingga persaman kurva eliptik menjadi: Sehingga: 43 + 27 2 0 ( ) 4. 13 + 27. 12 ( 17) = 31 (mod 17) = 14 0 2 = 3 + + 1 ( 17) 2 = 3 + + ( )

Maka persamaan 2 = 3 + + 1 ( 17) merupakan persamaan kurva eliptik. 3. Menentukan titik titik pada kurva Setelah kurva eliptik didapatkan, maka kita perlu menentukan titik titik pada kurva. Dari titik titik yang telah ditentukan tersebut, kemudian pilih salah satu secara acak . Misalnya pada contoh di atas, bilangan prima p = 17, selanjutnya kita cari elemen elemen grup eliptik 17 atas , dengan = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}. quadratic residue modulo 17 (17 ). 0 1 2 3 4 5 Namun sebelum

menentukan elemen elemen 17 (1, 1), terlebih dahulu kita perlu mencari Tabel 3.1 Nilai Quadratic Residue Modulo 17 ( ) 2 ( 17) 02 ( 17) 12 ( 17) 22 ( 17) 32 ( 17) 42 ( 17) 52 ( 17) 17 0 1 4 9 16 8

6 7 8 9 10 11 12 13 14 15 16

Berdasarkan Tabel 3.1 di atas, maka himpunan quadratic residue modulo 17 adalah 17 = {0, 1, 2, 4, 8, 9, 13, 15, 16}. Kemudian menentukan elemen grup eliptik 17 (1, 1) yang merupakan penyelesaian dari persamaan 2 = 3 + + 1 ( 17), untuk 17 dan 2 17 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 = 3 + + 1 ( 17) 1 3 11 14 1 12 2 11 11 8 8 0 7 1 5 8 16 Tabel 3.2 Nilai Elemen (, )

62 ( 17) 72 ( 17) 82 ( 17) 92 ( 17) 102 ( 17) 112 ( 17) 122 ( 17) 132 ( 17) 142 ( 17) 152 ( 17) 162 ( 17)

2 15 13 13 15 2 8 16 9 4 1

2 17 Ya Bukan Bukan Bukan Ya Bukan Ya Bukan Bukan Ya Ya Ya Bukan Ya Bukan Ya Ya

(, ) 17 (1, 1) (0, 1) dan (0, 16) (4, 1) dan (4, 16) (6, 6) dan (6, 11) (9, 5) dan (9, 12) (10, 5) dan (10, 12) (11, 0) (13, 1) dan (13, 16) (15, 5) dan (15, 12) (16, 4)

Berdasarkan tabel 3.2, maka misalnya untuk nilai x = 0, diperoleh 2 = 0.0.0 + 1.0 + 1 ( 17) = 1. Sehingga bila kita cek nilai 1 yang didapat di tabel 3.1 maka ada dua nilai 17 yang memenuhi yaitu 1 dan 16 maka titik (x, y) nya adalah (0, 1) dan (0, 16). Cara yang sama diulang terus sehingga

didapatkan elemen elemen grup eliptik modulo 17 atas 17 yaitu 17 (1,1) = { (0, 1), (0, 16), (4, 1), (4, 16), (6, 6), (6, 11), (9, 5), (9, 12), (10, 5), (10, 12), (11, 0), (13, 1), (13, 16), (15, 5), (15, 12), (16, 4), 0 }.

Jumlah titik pada kurva adalah 17 titik selain dari titik infinity (0). Setelah itu kita pilih sebuah titik yang akan dijadikan kunci publik, misalnya kita pilih titik P = (15, 12). 4. Membuat kunci privat 1 dan kunci privat 2 Kunci privat 1 dan 2 ditentukan dengan nilai acak dimana nilai kunci tersebut harus merupakan elemen dari {2, 3, p -1} dalam . Misalnya kita pilih kunci privat 1 = 6 dan kunci privat 2 = 9. 5. Menghitung kunci publik 1 dan kunci publik 2 Kunci publik dihitung oleh masing masing pengguna dengan melakukan operasi perkalian titik antara titik P dengan kunci rahasia masing masing. Misalnya pada pengguna 1, kunci privat 1 = 6 dan titik P = (15, 12) maka: 1 = 1 = 6 (15, 12)

= (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (13, 16) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (9, 5) + (15, 12) + (15, 12) + (15, 12) = (9, 12) + (15, 12) + (15, 12) = (4, 16) + (15, 12) = (10, 5) Jadi kunci publik 1 adalah (10, 5) Sedangkan pada pengguna 2, kunci privat 2 = 9 dan titik P = (15, 12) maka: 2 = 2 = 9 * (15, 12) = (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (13, 16) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12)

= (10, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (9, 5) + (15, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (9, 12) + (15, 12) + (15, 12) + (15, 12) + (15, 12) = (10, 5) + (15, 12) + (15, 12) + (15, 12) = (13, 1) + (15, 12) + (15, 12) = (15, 5) + (15, 12) = (4, 12) Jadi kunci publik 2 adalah (4, 12).

3.1.2 Analisis Algoritma ElGamal Pada umumnya algoritma ElGamal biasanya digunakan untuk tanda tangan digital, namun seiring dengan perkembangan jaman, algoritma ElGamal juga dikembangkan sehingga bisa digunakan untuk proses enkripsi dan dekripsi file. ElGamal kemudian digunakan dalam berbagai perangkat lunak keamanan, kekuatan dari algoritma ElGamal ini terletak pada kesulitan untuk menghitung logaritma diskrit. Algoritma ElGamal terdiri dari tiga proses, proses pembangkitan kunci, proses enkripsi dan proses dekripsi. Proses pembangkitan kunci dilakukan untuk memperoleh kunci public yang kemudian akan digunakan pada proses enkripsi, hasil dari proses enkripsi kemudian akan di dekripsi. Selain dari kekuatannya, algoritma ini mempunyai kelemahan, yaitu cipherteks yang dihasilkan bisa mempunyai panjang sampai dua kali lipat dari plainteksnya. Akan tetapi kelebihan lain dari algoritma ini adalah apabila kita mengenkripsi plainteks yang sama berulang ulang, ternyata akan didapatkan cipherteks yang berbeda beda untuk setiap kali enkripsi. Adapun proses enkripsi dan dekripsi kriptografi kurva eliptik dengan algoritma ElGamal adalah sebagai berikut: 1. Proses Enkripsi ElGamal pada Kriptografi Kurva Eliptik Tahapan tahapan dalam melakukan proses enkripsi ElGamal adalah:

Pilih private1_gen Hitung key1_gen dengan Kunci Publik 2 Ambil absis key1_gen (xkey1_gen)

Hitung cipherteks (C1, C2, C3, .) Gambar 3.1 Tahapan Proses Enkripsi ElGamal Kriptografi Kurva Eliptik Keterangan diagram: 1. Sebagai langkah awal, pengguna memilih sebuah angka acak yang akan dijadikan kunci rahasia bangkitan (private1_gen) yang akan disimbolkan dengan k. Nilai k dapat dipilih dalam interval k = {2, 3, p -1} dalam 17 . Kita misalkan kunci rahasia bangkitan yang kita pilih adalah 1. 2. Pengguna kemudian menghitung kunci rahasia bersama bangkitan (key1_gen) dengan cara: Key1_gen = private1_gen * kunci publik 2 = 1 * (4, 12) = (4, 12) 3. Selanjutnya pengguna mengambil nilai absis dari key1_gen di atas. Karena nilai key1_gen adalah (4, 12) maka absisnya adalah 4, jadi xkey1_gen = 4. 4. Setelah semua langkah di atas selesai, pengguna sudah bisa mengenkripsi pesan dengan menggunakan ketentuan: C1 = k * P C2 = m xkey1_gen (pesan yang akan dienkripsi di XOR kan dengan xkey1_gen)

Maka hasil yang didapat adalah C1 berupat titik, sedangkan C2, C3 dan seterusnya berupa bilangan integer yang akan dikirim kepada pengguna 2. Sebagai contoh misalnya pengguna 1 ingin mengirim pesan

KRIPTOGRAFI kepada pengguna 2, maka pesan tersebut harus dikonversi terlebih dahulu dalam kode ASCII. Tabel 3.3 Konversi Karakter ke Kode ASCII CHAR K R I P T O G R A F I ASCII (dec) 75 82 73 80 84 79 71 82 65 70 73

Maka proses enkripsi dan cipherteks yang akan dihasilkan adalah: C1 = k * P = 1 * (15, 12) = (15, 12) C2 = m1 2 = 75 4 = 79 C3 = m2 2 = 82 4 = 86 C4 = m3 2 = 73 4 = 77 C5 = m4 2 = 80 4 = 84 C6 = m5 2 = 84 4 = 80 C7 = m6 2 = 79 4 = 75 C8 = m7 2 = 71 4 = 67 C9 = m8 2 = 82 4 = 86 C10= m9 2 = 65 4 = 69 Hasil enkripsinya adalah: C11= m10 2 = 70 4 = 66 C12= m11 2 = 73 4 = 77 15 12 79 86 77 84 80 75 67 86 69 66 77

2. Proses Dekripsi ElGamal pada Kriptografi Kurva Eliptik Tahapan tahapan dalam melakukan dekripsi ElGamal pada kriptografi kurva eliptik adalah:

Ambil (C1, C2, C3, ) Hitung key2_gen dengan Kunci Privat 2 Ambil absis key2_gen (xkey2_gen)

Hitung plainteks (m) Gambar 3.2 Tahapan Proses Dekripsi ElGamal Kriptografi Kurva Eliptik Keterangan diagram: 1. Proses dekripsi oleh pengguna 2 dilakukan dengan mengambil nilai C1 dari cipherteks (C1, C2, C3, ). Misalnya kita menggunakan cipherteks pada proses di atas, yaitu: 15 12 79 86 77 84 80 75 67 86 69 66 77 maka nilai C1 adalah (15, 12), C2 adalah 79, C3 adalah 86 dan seterusnya. 2. Pengguna 2 kemudian menghitung kunci rahasia bersama bangkitan (key2_gen) dengan menggunakan kunci privat 2 miliknya: Key2_gen = kunci privat 2 * C1 = 9 * (15, 12) = (4, 12) 3. Kemudian pengguna 2 mengambil nilai absis x dari key2_gen di atas. Karena nilai key2_gen adalah (4, 12) maka absisnya adalah 4, jadi xkey2_gen adalah 4 4. Selanjutnya pengguna 2 mendekripsi cipherteks (sandi) m menjadi plainteks dengan ketentuan:

M1 = C2 xkey2_gen = 79 4 = 75 = K M2 = C3 xkey2_gen = 86 4 = 82 = R M3 = C4 xkey2_gen = 77 4 = 73 = I M4 = C5 xkey2_gen = 84 4 = 80 = P M5 = C6 xkey2_gen = 80 4 = 84 = T

M6 = C7 xkey2_gen = 75 4 = 79 = O M7 = C8 xkey2_gen = 67 4 = 71 = G M8 = C9 xkey2_gen = 86 4 = 82 = R M9 = C10 xkey2_gen = 69 4 = 65 = A M11= C12 xkey2_gen = 77 4 = 73 = I M10= C11 xkey2_gen = 66 4 = 70 = F dari hasil dekripsi tersebut, maka didapatlah plaintek yang semula yaitu KRIPTOGRAFI 3.1.3 Analisis Metode Pembangkit Bilangan Prima Rabin-Miller Metode pembangkitan bilangan prima Rabin-Miller merupakan salah satu metode pembangkitan dan pengujian bilangan prima yang paling sering digunakan. Metode ini dirancang oleh Michael Rabin dengan berdasarkan dari beberapa ide oleh Gary Miller. Metode pengujiannya adalah sebagai berikut: 1. Pilih sebuah bilangan acak p untuk diuji 2. Hitunglah b, dimana b adalah banyaknya (p 1) dibagi 2 (dimana b adalah pangkat terbesar dari 2, sedemikian sehingga 2b merupakan faktor dari p 1) 3. Kemudian hitunglah m, sedemikian sehingga p = 1 + 2b. m 4. Pilihlah sebuah bilangan acak a sedemikian sehingga a lebih kecil daripada p 5. Tentukanlah j = 0 dan z = am mod p 6. Jika z = 1 atau jika z = p 1, maka p lulus dari pengujian dan mungkin merupakan bilangan prima 7. Jika j > 0 dan z = 1, maka p bukanlah bilangan prima 8. Tentukan j = j + 1. Bila j < b dan z p 1, tentukan z = z2 mod p dan kembali ke poin 4. Jika z = p 1, maka p lulus dari pengujian dan mungkin prima 9. Jika j = b dan z p 1, maka p bukan bilangan prima

Sebagai contoh misalnya kita pilih sebuah bilangan p = 37, maka p 1 = 37 1 = 36. Setelah itu kita pilih b = 2, karena 22 = 4 merupakan bilangan 2n terbesar yang dapat membagi 36. 37 = 1 + 22.m atau 36 = 4.m sehingga m = 9. Pilih sebuah bilangan a, misalkan a = 3. j = 0, z = 39 mod 37 = 36. Jika z = 1 atau z = 36 maka p lulus dari pengujian dan merupakan bilangan prima. 3.2 Perancangan Flowchart Perancangan sistem dibuat untuk dapat mengetahui gambaran umum dari sistem yang akan dibuat secara umum. Flowchart adalah metode untuk menggambarkan tahap tahap penyelesaian suatu masalah beserta proses mengalirnya data dengan simbol simbol tertentu yang mudah dipahami. Tujuan utama dari flowchart adalah untuk menyederhanakan rangkaian proses proses yang terjadi pada sistem agar mudah dipahami oleh pengguna. Oleh karena itu juga maka desain dari sebuah flowchart harus ringkas, jelas dan padat. Diagram di bawah ini akan menerangkan proses yang terjadi pada aplikasi ElGamal Elliptic Curve Crytosystem.

Flowchart Proses Pembentukan Kunci Kriptografi Kurva Eliptik


Mulai

Input bilangan prima

Tidak

Bilangan prima valid

Ya

Hitung nilai Quadratic Residue

Cari elemen Ep

Pilih nilai titik P

Tentukan kunci rahasia1 dan kunci rahasia2

Hitung nilai kunci publik

Output kunci publik dan kunci privat

Selesai

Gambar 3.3 Flowchart Pembentukan Kunci Kriptografi Kurva Eliptik

Flowchart Proses Enkripsi Kriptografi Kurva Eliptik dengan Algoritma ElGamal


Mulai

Input kunci publik

Input pesan

Pilih nilai k

Hitung key1_gen

Ambil nilai x dari key1_gen

Hitung nilai C1 dan C2

Output cipher C1 dan C2

Selesai

Gambar 3.4 Flowchart Enkripsi Kriptografi Kurva Eliptik ElGamal

Flowchart Proses Dekripsi Kriptografi Kurva Eliptik dengan Algoritma ElGamal


Mulai

Input kunci privat

Input cipher

Hitung key2_gen

Ambil nilai x dari key2_gen

Hitung pesan asli

Output pesan asli

Selesai

Gambar 3.5 Flowchart Dekripsi Kriptografi Kurva Eliptik ElGamal

3.3 Perancangan Data Flow Diagram (DFD) Data Flow Diagram (DFD) adalah suatu diagram yang menggunakan notasi notasi tertentu untuk menggambarkan arus data dari suatu sistem untuk memahami proses yang terjadi secara logis, terstruktur, dan jelas. DFD juga merupakan alat bantu untuk menggambarkan atau menjelaskan sistem yang sedang berjalan.

3.3.1 DFD Level 0


Hasil Perhitungan

Gambar 3.6 DFD Level 0


Nilai Input

User

Pesan

0
Kriptografi Kurva Eliptik dengan Algoritma El Gamal

Cipher Pesan Asli

Kunci Privat
Kunci Publik

3.3.2 DFD Level 1


Hasil Perhitungan

Hasil Perhitungan

1.0
Kunci Publik

Nilai Input

Proses Pembentukan Kunci

User

Kunci Privat

Hasil Perhitungan

2.0
Cipher

3.0
Proses Dekripsi

Pesan

Proses Enkripsi

Cipher
Pesan Asli

Gambar 3.7 DFD Level 1 Proses Enkripsi dan Dekripsi

3.4 Perancangan User Interface User interface dirancang sebagai bentuk komunikasi antara pengguna dengan komputer, dan juga sebagai bentuk interaksi antara pengguna dengan komputer menggunakan tampilan yang ada di layar komputer. Hal ini sangat penting karena sangat mempengaruhi komunikasi dengan komputer, oleh karena itu desain user interface haruslah seefektif dan seminimal mungkin. Efektif artinya tampilan tersebut siap digunakan dan hasilnya sesuai dengan kebutuhan sedangkan minimal artinya penggunaan tombol tombol, gambar dan tulisan tulisan yang tidak perlu dan bisa membingungkan pengguna harus dihindarkan. 3.4.1 Tampilan Menu Utama Berikut ini adalah rancangan tampilan awal dari Aplikasi ElGamal Elliptic Curve Cryptosystem

LOGO FASILKOMTI
1

APLIKASI ELGAMAL ELLIPTIC CURVE CRYPTOSYSTEM DENGAN METODE PEMBANGKIT BILANGAN PRIMA RABIN-MILLER
2

Pembentukan Kunci
3

Proses Enkripsi
4

Proses Dekripsi
5 6

Gambar 3.8 Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem

Keterangan gambar 3.8 adalah sebagai berikut: 1. Nomor 1 adalah logo dari Fasilkomti USU 2. Nomor 2 adalah label dari nama aplikasi 3. Nomor 3 adalah label shortcut untuk menuju ke form pembuatan kunci 4. Nomor 4 adalah label shortcut untuk menuju ke form proses enkripsi 5. Nomor 5 adalah label shortcut untuk menuju ke form proses dekripsi 6. Nomor 6 adalah label shortcut untuk menuju ke form mengenai aplikasi 3.4.2 Tampilan Menu Proses Pembentukan Kunci APLIKASI ELGAMAL ELLIPTIC CURVE CRYPTOSYSTEM DENGAN METODE PEMBANGKIT BILANGAN PRIMA RABIN-MILLER

LOGO FASILKOMTI

Bilangan prima p Hitung nilai elemen

acak prima

validasi prima

hitung

Pilih titik P Tentukan Kunci Privat Kunci Rahasia 1 Kunci Rahasia 2


acak

3 Perhitungan Kunci Publik


hitung

4
simpan semua data input dan tutup form

Gambar 3.9 Tampilan Menu Proses Pembentukan Kunci Aplikasi ElGamal Elliptic Curve Cryptosystem Keterangan gambar 3.9 adalah sebagai berikut: 1. Nomor 1 adalah field dan tombol untuk mengeluarkan bilangan prima secara acak ataupun memvalidasi bilangan prima yang kita masukkan dengan menggunakan metode pembangkitan bilangan prima Rabin-Miller

2. Nomor 2 adalah field dan tombol untuk menghitung elemen elemen titik yang terdapat pada kurva eliptik dengan bilangan prima yang telah kita pilih sebelumnya 3. Nomor 3 adalah dropdown field untuk memilih titik mana dari elemen elemen yang telah kita hitung untuk digunakan sebagai titik P pada proses pembentukan kunci 4. Nomor 4 adalah field dan tombol untuk memasukkan ataupun menghitung secara acak sebuah angka untuk dijadikan sebagai kunci rahasia antara pengguna 1 dan pengguna 2 5. Nomor 5 adalah field dan tombol untuk menghitung kunci publik yang didapatkan dari kunci rahasia dan titik P, detil perhitungan akan ditunjukkan dalam field di bawahnya 6. Nomor 6 adalah tombol untuk menyimpan parameter yang diperlukan seperti nilai p, kunci rahasia, kunci publik dan titik P pada memori sementara untuk kemudian digunakan pada proses enkripsi dan dekripsi 3.4.3 Tampilan Menu Proses Enkripsi APLIKASI ELGAMAL ELLIPTIC CURVE CRYPTOSYSTEM DENGAN METODE PEMBANGKIT BILANGAN PRIMA RABIN-MILLER

LOGO FASILKOMTI

1 3

Proses

Buka File Teks 5


4

Gambar 3.10 Tampilan Menu Proses Enkripsi Aplikasi ElGamal Elliptic Curve Cryptosystem

Keterangan gambar 3.10 adalah sebagai berikut: 1. Nomor 1 merupakan field yang akan menuliskan langkah langkah yang diperlukan untuk melakukan proses enkripsi secara jelas agar pengguna dapat memahami proses enkripsi pada kriptografi kurva eliptik ElGamal 2. Nomor 2 merupakan field yang akan menuliskan detil proses perhitungan untuk enkripsi plainteks menjadi cipherteks 3. Nomor 3 merupakan field yang akan menunjukkan plainteks apa yang terdapat pada file teks yang kita masukkan 4. Nomor 4 merupakan tombol yang akan menjalankan proses enkripsi plainteks menjadi cipherteks 5. Nomor 5 merupakan shortcut untuk membuka window pemilihan file teks untuk dimasukkan ke dalam aplikasi 6. Nomor 6 merupakan tombol navigasi 2 arah untuk melanjutkan langkah langkah proses enkripsi 3.4.4 Tampilan Menu Proses Dekripsi APLIKASI ELGAMAL ELLIPTIC CURVE CRYPTOSYSTEM DENGAN METODE PEMBANGKIT BILANGAN PRIMA RABIN MILLER

LOGO FASILKOMTI

1 3

4 2

Proses

Daftar Nilai Variabel yang digunakan: KP1 = KP2 = P= p=

Gambar 3.11 Tampilan Menu Proses Dekripsi Aplikasi ElGamal Elliptic Curve Cryptosystem

Keterangan gambar 3.11 adalah sebagai berikut: 1. Nomor 1 merupakan field yang akan menuliskan langkah langkah yang diperlukan untuk melakukan proses dekripsi secara jelas agar pengguna dapat memahami proses dekripsi pada kriptografi kurva eliptik ElGamal 2. Nomor 2 merupakan field yang akan menuliskan detil proses perhitungan untuk dekripsi cipherteks menjadi plainteks 3. Nomor 3 merupakan field yang akan menunjukkan cipherteks yang tersimpan secara otomatis dari proses enkripsi sebelumnya 4. Nomor 4 merupakan tombol yang akan menjalankan proses dekripsi cipherteks menjadi plainteks 5. Nomor 5 merupakan tombol navigasi 2 arah untuk melanjutkan langkah langkah proses dekripsi 3.4.5 Tampilan Menu About
Mengenai Aplikasi

Gambar 3.12 Tampilan Form Mengenai Aplikasi

BAB IV IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem Setelah tahap analisis dan perancangan selesai dilakukan, maka tahap selanjutnya dan merupakan tahap yang terakhir dimana setelah implementasi maka akan dilakukan pengujian terhadap sistem. Apabila analisis dan perancangan sebelumnya telah dilakukan dengan baik, maka hasilnya akan sangat membantu kita dalam proses implementasi untuk mendapatkan sistem yang sesuai dengan yang kita inginkan. Dari proses implementasi ini juga kita bisa mengetahui apakah sistem yang kita buat memuaskan atau tidak.

4.1.1 Spesifikasi Kebutuhan Perangkat Keras Untuk membangun aplikasi ElGamal Elliptic Curve Cryptosystem dengan Metode Pembangkitan Bilangan Prima Rabin Miller ini digunakan perangkat keras dengan spesifikasi sebagai berikut Tabel 4.1 Spesifikasi Kebutuhan Perangkat Keras untuk Implementasi Spesifikasi Komputer Implementasi CPU RAM Monitor : AMD X2 Dual Core 1.20 GHz : 4 Giga Byte : 10

Hard Disk : 500 Giga Byte Sistem Operasi Windows 7 Ultimate

Berdasarkan proses implementasi dan pengujian yang dilakukan, perangkat keras tersebut memenuhi persyaratan dan tidak ditemukan kendala saat menjalankan aplikasi ElGamal Elliptic Curve Cryptosystem.

4.1.2 Spesifikasi Kebutuhan Perangkat Lunak Implementasi aplikasi ElGamal Elliptic Curve Cryptosystem menggunakan Microsoft Visual Studio 2010 sebagai editor dan menggunakan bahasa pemrograman visual basic. Microsoft Visual Studio dipilih karena kompatibilitas dan kemudahan penggunaanya.

4.2 Hasil Implementasi dan Pengujian 4.2.1 Hasil Enkripsi Pada proses enkripsi dengan menggunakan kriptografi kurva eliptik dan algoritma ElGamal, metode pembangkitan bilangan prima rabin miller digunakan untuk membangkitkan bilangan prima sebagai nilai p. Nilai p kemudian akan digunakan untuk menghitung kunci publik yang berperan dalam proses enkripsi. Berikut ini adalah beberapa hasil enkripsi kriptografi kurva eliptik dengan algoritma ElGamal dan metode pembangkit bilangan prima rabin miler: Proses enkripsi akan dilakukan sebanyak 5 kali dengan menggunakan kalimat kalimat di bawah ini: 1. KRIPTOGRAFI 2. KRIPTOGRAFI ADALAH SENI MENYANDIKAN & MENYEMBUNYIKAN PESAN 3. Kriptografi pertama kali dipergunakan pada tahun 400 SM di Yunani 4. Proses kriptografi diawali dengan mengubah data dalam bentuk plainteks (tulisan atau pesan awal yang dapat dibaca) menjadi cipherteks (tulisan atau pesan akhir yang sulit dimengerti)

5. KrIpToGrAfI KuRvA ElIpTiK TeRmAsUk Ke DaLaM SiStEm KrIpToGrAfI KuNcI PuBlIk YaNg MeNdAsArKaN KeAmAnAnNyA PaDa PeRmAsAlAhAn MaTeMaTiS KuRvA ElIpTiK DaN KeSuLiTaN UnTuK MeNgHiTuNg PeRsOaLan LoGaRiTmA DiSkRiY 1234567890!@#$%^&*()_+ Tabel 4.2 Hasil Enkripsi No. 1 2 Plainteks TES 1.txt TES 2.txt Nilai p 41 97
34, 15 24, 47

Titik P

23 15

KR 1

19 45

KR 2

3 21 80 73 82 75 79 84 92 73 90 93 82 95 66 93 68 95 70 66 89 81 68 87 80 95 54 87 82 87 90 87 94 54 69 83 88 95 54 91 83 88 79 87 88 82 95 93 87 88 54 48 54 91 83 88 79 83 91 84 67 88 79 95 93 87 88 54 70 83 69 87 88 22 13 93 100 127 102 98 121 113 100 119 112 127 54 102 115 100 98 119 123 119 54 125 119 122 127 54 114 127 102 115 100 113 99 120 119 125 119 120 54 102 119 114 119 54 98 119 126 99 120 54 34 38 38 54 69 91 54 114 127 54 79 99 120 119 120 127 19 21 82 112 109 113 103 113 34 105 112 107 114 118 109 101 112 99 100 107 34 102 107 99 117 99 110 107 34 102 103 108 101 99 108 34 111 103 108 101 119 96 99 106 34 102 99 118 99 34 102 99 110 99 111 34 96 103 108 118 119 105 34 114 110 99 107 108 118 103 105 113 34 42 118 119 110 107 113 99 108 34 99 118 99 119 34 114 103 113 99 108 34 99 117 99 110 34 123 99 108 101 34 102 99 114 99 118 34 102 107 96 99 97 99 43 34 111 103 108 104 99 102 107 34 97 107 114 106 103 112 118 103 105 113 34 42 118 119 110 107 113 99 108 34 99 118 99 119 34 114 103 113 99 108 34 99 105 106 107 112 34 123 99 108 101 34 113 119 110 107 118 34 102 107 111 103 108 101 103 112 118 107 43 13 16 70 127 68 125 89 98 74 127 76 107 68 45 70 120 95 123 76 45 72 97 68 125 89 100 70 45 89 104 95 96 76 126 88 102 45 70 104 45 73 108 65 108 64 45 94 100 94 121 72 96 45 70

Cipherteks

TES 3.txt

22, 76

23,74

71

14

TES 4. txt

37

19, 21

19

15

TES 5.txt

23

13, 7

17

127 68 125 89 98 74 127 76 107 68 45 70 120 67 110 68 45 93 120 79 97 68 102 45 84 108 67 106 45 64 104 67 105 76 126 76 127 70 108 67 45 70 104 76 96 76 99 76 99 67 116 76 45 93 108 73 108 45 93 104 95 96 76 126 76 97 76 101 76 99 45 64 108 89 104 64 108 89 100 94 45 70 120 95 123 76 45 72 97 68 125 89 100 70 45 73 108 67 45 70 104 94 120 65 100 89 108 67 45 88 99 89 120 70 45 64 104 67 106 69 100 89 120 67 106 45 93 104 95 126 66 108 65 108 99 45 65 98 74 108 95 100 89 96 76 45 73 100 94 102 95 100 84 45 60 63 62 57 56 59 58 53 52 61 44 77 46 41 40 83 43 39 37 36 82 38

Berdasarkan hasil enkripsi yang telah dilakukan seperti pada tabel 4.1, didapatkan bahwa aplikasi ElGamal elliptic curve cryptosystem tidak menemui kendala yang berarti saat mengenkripsi suatu file teks baik dengan huruf besar maupun huruf kecil, aplikasi juga tidak terkendala dengan panjang teks dan tetap dapat dieksekusi dengan cepat.

4.2.2 Hasil Dekripsi Pada proses dekripsi, data hasil enkripsi langsung dimasukkan secara otomatis untuk menghindari kesalahan saat proses memasukkan data. Berikut adalah hasil dari dekripsi cipherteks dari proses enkripsi sebelumnya Tabel 4.3 Hasil Dekripsi No. 1 2
3 21 80 73 82 75 79 84 92 73 90 93 82 95 66 93 68 95 70 66 89 81 68 87 80 95 54 87 82 87 90 87 94 54 69 83 88 95 54 91 83 88 79 87 88 82 95 93 87 88 54 48 54 91 83 88 79 83 91 84 67 88 79 95 93 87 88 54 70 83 69 87 88 22 13 93 100 127 102 98 121 113 100 119 112 127 54 102 115 100 98 119 123 119 54 125 119 122 127 54 114 127 102 115 100 113 99 120 119 125 119 120 54 102 119 114 119 54 98 119 126 99 120 54 34 38 38 54 69 91 54

Cipherteks

KRIPTOGRAFI KRIPTOGRAFI ADALAH SENI MENYANDIKAN & MENYEMBUNYIKAN PESAN Kriptografi pertama kali dipergunakan pada tahun 400 SM di Yunani

Plainteks

114 127 54 79 99 120 119 120 127 19 21 82 112 109 113 103 113 34 105 112 107 114 118 109 101 112 99 100 107 34 102 107 99 117 99 110 107 34 102 103 108 101 99 108 34 111 103 108 101 119 96 99 106 34 102 99 118 99 34 102 99 110 99 111 34 96 103 108 118 119 105 34 114 110 99 107 108 118 103 105 113 34 42 118 119 110 107 113 99 108 34 99 118 99 119 34 114 103 113 99 108 34 99 117 99 110 34 123 99 108 101 34 102 99 114 99 118 34 102 107 96 99 97 99 43 34 111 103 108 104 99 102 107 34 97 107 114 106 103 112 118 103 105 113 34 42 118 119 110 107 113 99 108 34 99 118 99 119 34 114 103 113 99 108 34 99 105 106 107 112 34 123 99 108 101 34 113 119 110 107 118 34 102 107 111 103 108 101 103 112 118 107 43 13 16 70 127 68 125 89 98 74 127 76 107 68 45 70 120 95 123 76 45 72 97 68 125 89 100 70 45 89 104 95 96 76 126 88 102 45 70 104 45 73 108 65 108 64 45 94 100 94 121 72 96 45 70 127 68 125 89 98 74 127 76 107 68 45 70 120 67 110 68 45 93 120 79 97 68 102 45 84 108 67 106 45 64 104 67 105 76 126 76 127 70 108 67 45 70 104 76 96 76 99 76 99 67 116 76 45 93 108 73 108 45 93 104 95 96 76 126 76 97 76 101 76 99 45 64 108 89 104 64 108 89 100 94 45 70 120 95 123 76 45 72 97 68 125 89 100 70 45 73 108 67 45 70 104 94 120 65 100 89 108 67 45 88 99 89 120 70 45 64 104 67 106 69 100 89 120 67 106 45 93 104 95 126 66 108 65 108 99 45 65 98 74 108 95 100 89 96 76 45 73 100 94 102 95 100 84 45 60 63 62 57 56 59 58 53 52 61 44 77 46 41 40 83 43 39 37 36 82 38

Proses kriptografi diawali dengan mengubah data dalam bentuk plainteks (tulisan atau pesan awal yang dapat dibaca) menjadi cipherteks (tulisan atau pesan akhir yang sulit dimengerti)

KrIpToGrAfI KuRvA ElIpTiK TeRmAsUk Ke DaLaM SiStEm KrIpToGrAfI KuNcI PuBlIk YaNg MeNdAsArKaN KeAmAnAnNyA PaDa PeRmAsAlAhAn MaTeMaTiS KuRvA ElIpTiK DaN KeSuLiTaN UnTuK MeNgHiTuNg PeRsOaLan LoGaRiTmA DiSkRiY 1234567890!@#$%^&*()_+

Dari hasil dekripsi di atas, didapatkan bahwa proses enkripsi dan dekripsi berjalan dengan sempurna untuk semua jenis file teks pengujian, proses perhitungan juga berhasil disederhanakan dan waktu proses berhasil dipersingkat.

4.3 Tampilan Sistem Berikut ini adalah tampilan dan penjelasan dari form form yang terdapat pada aplikasi ElGamal Elliptic Curve Cryptosystem.

4.3.1 Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem Pada saat aplikasi ElGamal Elliptic Curve Cryptosystem pertama kali dijalankan, maka tampilan awal yang terlihat adalah seperti pada gambar berikut:

Gambar 4.1 Tampilan Awal Aplikasi ElGamal Elliptic Curve Cryptosystem Pada halaman awal aplikasi ini hanya menampilkan logo Fasilkomti USU, nama aplikasi dan nama penulis, di tampilan awal ini juga hanya terdapat empat buah shortcut untuk menuju ke form pembentukan kunci, enkripsi, dekripsi dan about.

4.3.2 Tampilan Form Pembentukan Kunci pada Aplikasi ElGamal Elliptic Curve Cryptosystem Pada tampilan ini menampilkan proses pembentukan kunci, meliputi pembentukan bilangan prima acak dan validasi bilangan prima menggunakan metode rabin miller,

pembentukan kunci rahasia dan juga kunci publik serta detil proses perhitungannya seperti terlihat pada gambar 4.2 berikut:

Gambar 4.2 Tampilan Form Pembentukan Kunci Aplikasi ElGamal Elliptic Curve Cryptosystem Pada halaman ini, pengguna bisa memasukkan sendiri sebuah bilangan prima untuk kemudian divalidasi dengan metode rabin miller ataupun menghasilkan bilangan prima acak secara otomatis dengan menekan tombol acak prima. Setelah bilangan prima p dihasilkan, pengguna kemudian menghitung elemen elemen titik yang terdapat pada kurva dengan menekan tombol hitung, detil proses perhitungan akan ditampilkan pada textarea di sebelahnya. Di halaman ini juga pengguna bisa memilih titik mana dari elemen elemen titik yang telah dihitung untuk dipakai sebagai titik P dengan menekan tombol dropdown yang terdapat di samping label Pilih Titik P. Setelah proses itu selesai, pengguna kemudian menentukan kunci rahasia 1 dan 2, bisa dimasukkan sendiri ataupun menekan tombol acak untuk menghasilkan bilangan acak secara otomatis.

Terakhir, pengguna tinggal menentukan kunci publik yang akan digunakan dengan menekan tombol hitung, detil proses perhitungan dan kunci publik yang dihasilkan akan langsung tampak secara otomatis pada textarea di sebelahnya, pengguna selanjutnya bisa langsung menyimpan semua data input dengan menekan tombol Simpan Semua Data Input dan Tutup Form di bawah.

Gambar 4.3 Tampilan Form Pembentukan Kunci Setelah Semua Data Dimasukkan

4.3.3 Tampilan Form Enkripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem Pada tampilan ini, menampilkan proses enkripsi dan detil langkah langkah perhitungan untuk proses enkripsi, seperti ditampilkan pada gambar berikut:

Gambar 4.4 Tampilan Form Enkripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem Karena data input sebelumnya sudah tersimpan secara otomatis, maka nilai tersebut akan langsung tampak secara otomatis di bawah label Daftar Nilai Kunci yang Digunakan. Pengguna selanjutnya tinggal memasukkan file teks yang ingin dienkripsi dengan menekan tombol Buka File Teks dimana isi dari teks yang akan dienkripsi akan langsung tampak pada textarea di atasnya. Kemudian pengguna tinggal menekan tombol Proses dan bisa melihat detil proses perhitungannya pada tombol panah navigasi 2 arah di bawahnya.

Gambar 4.5 Langkah 1 pada Proses Enkripsi Pada langkah 1, aplikasi akan mengkonversikan setiap karakter pada pesan kita menjadi ascii code sebelum dienkripsi. Proses enkripsi tersebut akan ditampilkan pada teks area di sebelah kanan seperti tampak pada gambar, sedangkan plainteks yang sebenarnya akan tampak di teks area sebelah kiri atas. Pada halaman ini juga akan tampak daftar nilai kunci yang digunakan yaitu KP1 dan KP2, titik yang digunakan untuk membangkitkan kunci yaitu P dan bilangan prima acak yang dihasilkan oleh pembangkit bilangan prima Rabin-Miller yaitu p. Setelah itu kita dapat melanjutkan proses enkripsi dengan menekan tombol pada tombol navigasi dua arah di sebelah kanan bawah.

Gambar 4.6 Langkah 2 pada Proses Enkripsi Pada langkah berikutnya, sistem akan memilih sebuah nilai acak k dimana nilai tersebut akan digunakan dalam enkripsi dengan algoritma ElGamal. Nilai k ini sendiri dihasilkan secara acak tanpa batasan tertentu, namun disini penulis membatasinya hanya sampai angka puluhan untuk mempersingkat proses komputasi. Proses kemudian dilanjutkan dengan menekan tombol panah kanan.

Gambar 4.7 Langkah 3 pada Proses Enkripsi

Pada langkah ini dilakukan perhitungan nilai key1_gen yang dihasilkan melalui persamaan Euclidean. Untuk memudahkan pemahaman maka seluruh detil proses perhitungan bisa dilihat di teks area sebelah kanan. Hasil akhir dari proses ini adalah sebuah koordinat bangkitan tertentu (x, y) yang disebut sebagai key1_gen. Proses kemudian dilanjutkan dengan menekan tombol panah.

Gambar 4.8 Langkah 4 pada Proses Enkripsi Pada langkah ini, sistem hanya akan mengambl nilai absis x dari key1_gen yang dihasilkan pada langkah sebelumnya. Nilai absis tersebut kemudian disebut xkey1_gen. Proses kemudian dilanjutkan dengan menekan tombol panah.

Gambar 4.9 Langkah 5 pada Proses Enkripsi Pada langkah ini, sistem menghitung cipher1 atau disebut C1, yaitu bagian awal dari cipherteks yang mengandung kunci rahasia yang berguna untuk proses dekripsi. detil proses perhitungan C1 ini juga ditampilkan pada teksarea sebelah kiri. Proses kemudian dilanjutkan dengan menekan tombol panah.

Gambar 4.10 Langkah 6 pada Proses Enkripsi

Langkah keenam ini sekaligus merupakan langkah terakhir, sistem kemudian menghitung nilai cipher2 atau C2 yaitu merupakan keseluruhan cipherteks yang sudah disandikan. Seluruh detil perhitungan C2 ini juga ditampilkan pada teksarea di sebelah kiri. Hasil dari proses ini adalah kumpulan angka angka acak yang berbeda satu sama lainnya. Pada langkah ini proses enkripsi sudah selesai dijalankan. Pengguna kemudian bisa menekan tombol x di sebelah kanan atas untuk menutup halaman proses enkripsi. Seluruh data hasil enkripsi akan langsung tersimpan secara otomatis. 4.3.4 Tampilan Form Dekripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem Pada form dekripsi ini, akan ditampilkan proses mendekripsikan cipherteks yang didapat dari proses sebelumnya kembali menjadi plainteks semula seperti terlihat pada gambar berikut:

Gambar 4.11 Tampilan Awal Form Dekripsi pada Aplikasi ElGamal Elliptic Curve Cryptosystem

Seperti yang terlihat pada gambar, cipherteks yang akan didekripsi langsung tampak secara otomatis pada textarea di sudut kanan atas, selanjutnya pengguna tinggal menekan tombol dekripsi untuk mengembalikan cipherteks tersebut ke plainteks semula

Gambar 4.12 Langkah 1 dari Proses Dekripsi Pada langkah pertama dari proses dekripsi ini, sistem akan langsung memisahkan C1 dan C2 dari keseluruhan cipherteks yang dihasilkan, C1 sendiri adalah dua angka pertama pada cipherteks yang dihasilkan. C1 mengandung nilai rahasia yang berguna untuk melakukan proses dekripsi. Hasil dari proses ini adalah kumpulan angka angka dari cipherteks yang sudah dipisahkan. Proses kemudian dilanjutkan dengan menekan tombol panah di sebelah kanan bawah.

Gambar 4.13 Langkah 2 dari Proses Dekripsi Sama seperti pada proses enkripsi yang membutuhkan nilai key1_gen, proses dekripsi juga membutuhkan nilai tertentu yaitu key2_gen. Pada proses dekripsi ini, sistem akan menghitung nilai key2_gen. Detil proses perhitungan akan ditampilkan pada teksarea di sebelah kiri. Hasil dari proses ini adalah sebuah nilai bangkitan tertentu yang disebut key2_gen. Pengguna kemudian bisa melanjutkan proses dengan menekan tombol panah di sebelah kanan bawah.

Gambar 4.14 Langkah 3 dari Proses Dekripsi Pada langkah ini, sistem akan mengambil nilai absis x dari key2_gen atau kemudian disebut xkey2_gen. Detil proses perhitungan akan ditampilkan pada teksarea di sebelah kiri. Hasil dari proses ini adalah nilai xkey2_gen yang akan digunakan pada proses dekripsi. Proses kemudian dilanjutkan dengan menekan tombol panah di sebelah kanan bawah.

Gambar 4.15 Langkah 4 dari Proses Dekripsi

Langkah pada proses dekripsi jauh lebih singkat daripada langkah langkah pada proses enkripsi. Pada langkah ini, sistem akan melakukan perhitungan XOR kembali antara nilai nilai C2 yang telah kita pisahkan sebelumnya dengan nilai xkey2_gen yang juga dihasilkan pada proses sebelumnya. Detil perhitungan akan ditampilkan pada teksarea di sebelah kiri. Hasil dari proses ini adalah plainteks yang kembali seperti semula. 4.3.5 Tampilan Form About pada Aplikasi ElGamal Elliptic Curve Cryptosystem Form about pada aplikasi ini merupakan form pemberitahuan yang menuliskan tujuan pembuatan aplikasi dan juga sebagai pemanis pada aplikasi.

Gambar 4.16 Tampilan Form About pada Aplikasi ElGamal Elliptic Curve Cryptosystem Form ini hanya menampilkan keterangan sederhana tentang aplikasi serta hubungannya dengan tugas akhir penulis. Untuk menutup form, pengguna tinggal menekan tombol OK yang terdapat di sebelah kanan bawah.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan Setelah melakukan studi literatur, analisis dan perancangan sistem serta implementasi dan pengujian sistem, diperoleh kesimpulan sebagai berikut: 1. Kriptografi kurva eliptik dengan algoritma ElGamal dan metode pembangkit bilangan prima Rabin Miller dapat diimplementasikan dengan baik dan dalam prosesnya berhasil disajikan secara sederhana sehingga dapat membantu pemahaman mengenai kriptografi kurva eliptik 2. Proses enkripsi pada kriptografi kurva eliptik dengan algoritma ElGamal dan metode pembangkit bilangan prima Rabin Miller dapat diproses dengan baik. 3. Dengan adanya pembatasan nilai a dan b menjadi 1 serta jumlah digit pada bilangan prima hasil bangkitan dari pembangkit bilangan prima Rabin-Miller sebanyak 2 digit, proses pembangkitan kunci, enkripsi dan dekripsi dapat dilakukan dengan cepat.

5.2 Saran Saran-saran yang relevan untuk pengembangan sistem maupun penelitian di masa yang akan datang sebagai berikut. 1. Dalam penelitian kali ini, data yang dienkripsi adalah dalam bentuk file teks, untuk ke depannya diharapkan data yang dienkripsi bisa dalam bentuk lain seperti .doc, .avi, .mp4, .jpg ataupun bentuk lainnya.

2. Dalam

penelitian

ini,

kurva

eliptik

yang

digunakan

dibatasi

menjadi

2 = 3 + + 1 ( ) , diharapkan pada penelitian selanjutnya nilai a dan b tidak lagi dibatasi dan bisa ditentukan oleh pengguna. 3. Bahasa pemrograman yang digunakan dalam penelitian ini adalah visual basic, diharapkan pada penelitian selanjutnya bisa digunakan bahasa pemrograman lain seperti java maupun python.

DAFTAR PUSTAKA

[1]

Indriani, Susi. 2011. Kriptografi Kurva Eliptik dengan Proses Pertukaran Kunci Diffie-Hellman. Skripsi. Medan, Indonesia : Universitas Sumatera Utara.

[2]

Schneier, B. 1997. Applied Cryptography, 2nd Edition. New York: John-Willey & Sons.

[3]

Massandy, Danang Tri. 2009. Algoritma Elgamal Dalam Pengamanan Pesan Rahasia. Bandung : Institut Teknologi Bandung

[4]

Forouzan, A Behrouz. 2008. Cryptography and Network Security. Singapore: Mc Graw-Hill Education (Asia).

[5] [6]

Smart, Nigel. 2004. Cryptography An Introduction. University of Bristol. Yusri. 2004. Implementasi Kriptografi Kurva Eliptik pada Pengiriman SMS Melalui Telepon Selular dengan Teknologi J2ME. Skripsi. Jakarta, Indonesia : Universitas Indonesia.

[7]

Hellmut, Knelb dan Hans, Delfs. 2002. Introduction to Cryptography. Berlin : Springer-Verlag Berlin Heidelberg.

[8]

Garefalakis,Theodoulos. Primality Testing, Integer Factorization, and Discrete Logarithms. 2000. Toronto:Department of ComputerScience, University of Toronto. Rinaldi Munir, 2006, Kriptografi, Informatika Bandung. William Stallings, 1999, Cryptography and Network Security : Principle and Practice, Second Edition, Prentice Hall.

[9] [10]

LAMPIRAN A : LISTING PROGRAM file: frmMain.vb

Public Class frmMain Private Sub lnkSetup_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkSetup.LinkClicked frmPSetup.ShowDialog() End Sub Private Sub lblLogOut_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Me.Close() End Sub Private Sub lblX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Close() End Sub Private Sub frmMainA_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed Me.Dispose() End Sub Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) End Sub Private Sub LinkLabel2_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) End Sub Private Sub LinkLabel3_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) End Sub Private Sub LinkLabel4_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) End Sub Private Sub LinkLabel5_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) End Sub Private Sub LinkLabel14_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel14.LinkClicked frmPEncrypt.ShowDialog() End Sub Private Sub LinkLabel15_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel15.LinkClicked frmPDecrypt.ShowDialog() End Sub Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click End Sub Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub Private Sub LinkLabel6_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel6.LinkClicked frmMengenai.ShowDialog() End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub End Class

File: frmSetup.vb

Public Class frmPSetup Private Sub btnAcakPrima_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcakPrima.Click Dim nDigit As Byte Dim nTemp As Double Do '1. Pilih bilangan prima p Randomize() nDigit = 2 nP = RabinMiller(nDigit)

'2. Tentukan persamaan kurva elips 'Rumus yang digunakan 4a^3 + 27b^2 (mod p) <> 0 nTemp = (4 * 1 ^ 3 + 27 * 1 ^ 2) Mod nP Loop Until nTemp <> 0 txtP.Text = nP End Sub Private Sub btnValid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValid.Click If IsVALID() Then MsgBox("Nilai p VALID !", MsgBoxStyle.Information) txtP.Text = nP End If End Sub Function IsVALID() As Boolean If CDbl(0 & txtP.Text) = 0 Then MsgBox("Nilai p tidak boleh sama dengan nol !", MsgBoxStyle.Critical) Return False ElseIf IsRabinMiller(CDbl(0 & txtP.Text), 5) = False Then MsgBox("Nilai p yang dimasukkan bukan bilangan prima !", MsgBoxStyle.Critical) Return False Else Return True End If End Function Private Sub txtP_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtP.KeyPress If Asc(e.KeyChar) <> 8 And (Asc(e.KeyChar) < Asc("0") Or Asc(e.KeyChar) > Asc("9")) Then e.KeyChar = "" End If End Sub Private Sub rtb1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles rtb1.KeyPress e.KeyChar = "" End Sub Private Sub btnHitung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHitung.Click Dim cTemp() As String

Dim cElemen As String Dim nTemp As Double Dim nElemenTitik() As Points cboP.Items.Clear() '3. Tentukan QR Dim nTitik(nP - 1) As Points rtb1.Text = "Hitung nilai Quadratic Residue" & vbCrLf For i = 0 To nP - 1 nTitik(i).x = i nTitik(i).y = (i ^ 2) Mod nP rtb1.Text &= "x = " & i & " --> y = x^2 mod p" & vbCrLf & _ "x = " & i & " --> y = " & i & "^2 mod " & nP & vbCrLf & _ "x = " & i & " --> y = " & nTitik(i).y & vbCrLf & vbCrLf Next '4. Mencari elemen Ep --> y^2 = x^3 + x + 1 ReDim nElemenTitik(0) For i = 0 To nP - 1 nTemp = (i ^ 3 + i + 1) Mod nP cElemen = ElementQR(nTemp, nTitik, nP) rtb1.Text &= "i = " & i & " --> (" & i & "^3 + " & i & " + 1) mod " & nP & vbCrLf "i = " & i & " --> " & nTemp & vbCrLf & _ "Elemen = " & cElemen & vbCrLf & vbCrLf If cElemen = "" Then 'Bukan elemen Else 'Merupakan elemen --> simpan titik cTemp = Split(cElemen, ",") rtb1.Text &= "Titik yang diperoleh = " & vbCrLf For j = 0 To cTemp.GetUpperBound(0) ReDim Preserve nElemenTitik(nElemenTitik.GetUpperBound(0) + 1) nElemenTitik(nElemenTitik.GetUpperBound(0)).x = i nElemenTitik(nElemenTitik.GetUpperBound(0)).y = CDbl(0 & cTemp(j)) cboP.Items.Add(nElemenTitik(nElemenTitik.GetUpperBound(0)).x & "," & nElemenTitik(nElemenTitik.GetUpperBound(0)).y) rtb1.Text &= "(" & nElemenTitik(nElemenTitik.GetUpperBound(0)).x & "," & nElemenTitik(nElemenTitik.GetUpperBound(0)).y & ") ; " Next End If Next End Sub Private Sub txtKR1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtKR1.KeyPress If Asc(e.KeyChar) <> 8 And (Asc(e.KeyChar) < Asc("0") Or Asc(e.KeyChar) > Asc("9")) Then e.KeyChar = "" End If End Sub Private Sub txtKR2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtKR2.KeyPress If Asc(e.KeyChar) <> 8 And (Asc(e.KeyChar) < Asc("0") Or Asc(e.KeyChar) > Asc("9")) Then e.KeyChar = "" End If End Sub Private Sub btnAcak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcak.Click '6. Tentukan KR1 dan KR2 Randomize() nKR1 = Int(Rnd() * (nP - 2)) + 2 nKR2 = Int(Rnd() * (nP - 2)) + 2 txtKR1.Text = nKR1

& _

txtKR2.Text = nKR2 End Sub Function IsValid1() As Boolean If CDbl(0 & txtKR1.Text) = 0 Then MsgBox("Nilai kunci rahasia 1 masih kosong !", MsgBoxStyle.Critical) Return False ElseIf CDbl(0 & txtKR2.Text) = 0 Then MsgBox("Nilai kunci rahasia 2 masih kosong !", MsgBoxStyle.Critical) Return False Else Return True End If End Function Function IsValidValue() As Boolean If IsVALID() And IsValid1() Then If cboP.Text = "" Then MsgBox("Titik P belum dipilih !", MsgBoxStyle.Critical) Return False Else Return True End If End If End Function Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click Dim cTemp() As String If IsValidValue() Then nP = CDbl(0 & txtP.Text) cTemp = Split(cboP.Text, ",") PBesar.x = CDbl(0 & cTemp(0)) PBesar.y = CDbl(0 & cTemp(1)) nKR1 = CDbl(0 & txtKR1.Text) nKR2 = CDbl(0 & txtKR2.Text) '7. Hitung nilai KP1 dan KP2 KP1 = MulPoint(PBesar, nKR1, nP, 1) KP2 = MulPoint(PBesar, nKR2, nP, 1) Me.Close() End If End Sub Private Sub btnHitung1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHitung1.Click Dim cTemp() As String If IsVALID() And IsValid1() Then Else Exit Sub End If nP = CDbl(0 & txtP.Text) nKR1 = CDbl(0 & txtKR1.Text) nKR2 = CDbl(0 & txtKR2.Text) cTemp = Split(cboP.Text, ",") PBesar.x = CDbl(0 & cTemp(0)) PBesar.y = CDbl(0 & cTemp(1)) '7. Hitung nilai KP1 dan KP2 KP1 = MulPoint(PBesar, nKR1, nP, 1) rtbKPublik.Text = "KP1 = KR1 * P" & vbCrLf & _ " = " & nKR1 & " * (" & PBesar.x & "," & PBesar.y & ")" & vbCrLf " = (" & KP1.x & "," & KP1.y & ")" & vbCrLf & vbCrLf & _ "Detail perhitungan :" & vbCrLf & _ "----------------------" & vbCrLf & cHitungan

& _

& _

KP2 = MulPoint(PBesar, nKR2, nP, 1) rtbKPublik.Text &= vbCrLf & vbCrLf & _ "KP2 = KR2 * P" & vbCrLf & _ " = " & nKR2 & " * (" & PBesar.x & "," & PBesar.y & ")" & vbCrLf " = (" & KP2.x & "," & KP2.y & ")" & vbCrLf & vbCrLf & _ "Detail perhitungan :" & vbCrLf & _ "----------------------" & vbCrLf & cHitungan

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click Me.Close() End Sub Private Sub frmPSetup_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed Me.Dispose() End Sub Private Sub frmPSetup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub txtP_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtP.TextChanged End Sub End Class

File: frmEncrypt.vb

Public Class frmPEncrypt Structure TProses Dim Ket As String Dim Hitung As String End Structure Dim Langkah(6) As TProses Dim nHal As Byte Private Sub lnkBukaFileTeks_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkBukaFileTeks.LinkClicked On Error GoTo errLoad With Open1 .InitialDirectory = My.Application.Info.DirectoryPath .FileName = "" If .ShowDialog() = Windows.Forms.DialogResult.OK Then rtbPesan.LoadFile(.FileName, RichTextBoxStreamType.RichText) 'RichTextBoxStreamType.PlainText) End If End With Exit Sub errLoad: rtbPesan.LoadFile(Open1.FileName, RichTextBoxStreamType.PlainText) End Sub

Private Sub btnLanjut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLanjut.Click Dim i As Double Dim cHasil As String = "" Dim nM(rtbPesan.Text.Length) As Integer Dim k As Integer Dim key1_gen As Points Dim nX As Integer Dim C1 As Points Dim Nilai As Double

If rtbPesan.Text.Trim = "" Then MsgBox("Pesan masih kosong !", MsgBoxStyle.Critical) Exit Sub End If btnLanjut.Enabled = False '1. Konversi setiap karakter pesan menjadi ASCII Code Langkah(1).Ket = "Konversikan setiap karakter pesan menjadi ASCII Code" Langkah(1).Hitung = "" For i = 1 To rtbPesan.Text.Length nM(i) = Asc(Mid(rtbPesan.Text, i, 1)) Langkah(1).Hitung &= "M(" & i & ") = '" & Mid(rtbPesan.Text, i, 1) & "' = " & nM(i) & vbCrLf Next '2. Pilih nilai k Langkah(2).Ket = "Pilih nilai k secara acak" Do Randomize() k = Int(Rnd() * (nP - 1)) Loop Until FGCD(k, nP - 1) = 1 Langkah(2).Hitung = "k = " & k '3. Hitung key1_gen Langkah(3).Ket = "Hitung nilai key1_gen" key1_gen = MulPoint(KP2, k, nP, 1) Langkah(3).Hitung = "key1_gen = k * KP2" & vbCrLf & _ "key1_gen = " & k & " * (" & KP2.x & "," & KP2.y & ")" & vbCrLf & "key1_gen = (" & key1_gen.x & "," & key1_gen.y & ")" & vbCrLf & "Detail perhitungan : " & vbCrLf & _ cHitungan

vbCrLf & _

'4. Ambil nilai x dari key1_gen Langkah(4).Ket = "Ambil nilai koordinat x dari key1_gen" nX = key1_gen.x Langkah(4).Hitung = "key1_gen = (" & key1_gen.x & "," & key1_gen.y & ") --> x = " & nX '5. Hitung nilai C1 Langkah(5).Ket = "Hitung nilai C1" C1 = MulPoint(PBesar, k, nP, 1) Langkah(5).Hitung = "C1 = k * P" & vbCrLf & _ "C1 = " & k & " * (" & PBesar.x & "," & PBesar.y & ")" & vbCrLf & "C1 = (" & C1.x & "," & C1.y & ")" cHasil = C1.x & " " & C1.y '6. Hitung nilai C2 Langkah(6).Ket = "Hitung nilai C2" Dim C2(rtbPesan.Text.Length) As Double Langkah(6).Hitung = "" For i = 1 To rtbPesan.Text.Length Nilai = nM(i) Xor nX cHasil &= " " & Nilai Langkah(6).Hitung &= "C2 = M(i) xor x" & vbCrLf & _ "C2 = " & nM(i) & " xor " & nX & ")" & vbCrLf & _ "C2 = " & Nilai & vbCrLf & vbCrLf

Next Langkah(6).Hitung &= "Cipher yang diperoleh = " & cHasil cCipher = cHasil End Sub

Private Sub rtbPesan_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtbPesan.TextChanged btnLanjut.Enabled = True End Sub

Private Sub frmPEncrypt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lblVar.Text = "KP1 = " & KP1.x & "," & KP1.y & vbCrLf & _ "KP2 = " & KP2.x & "," & KP2.y & vbCrLf & _ "P = " & PBesar.x & "," & PBesar.y & vbCrLf & _ "p = " & nP End Sub Private Sub picBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBack.Click nHal = nHal - 1 If nHal <= 1 Then picBack.Enabled picNext.Enabled Else picBack.Enabled picNext.Enabled End If = False = True = True = True

lblNo.Text = "Langkah " & nHal & " dari 6" lblLangkah.Text = "Langkah " & nHal lblKet.Text = Langkah(nHal).Ket rtb1.Text = Langkah(nHal).Hitung End Sub Private Sub picNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picNext.Click nHal = nHal + 1 If nHal >= 6 Then picBack.Enabled picNext.Enabled Else picBack.Enabled picNext.Enabled End If = True = False = True = True

lblNo.Text = "Langkah " & nHal & " dari 6" lblLangkah.Text = "Langkah " & nHal lblKet.Text = Langkah(nHal).Ket rtb1.Text = Langkah(nHal).Hitung End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click Me.Close() End Sub Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click End Sub Private Sub rtb1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtb1.TextChanged End Sub End Class

File: frmDecrypt.vb

Public Class frmPDecrypt Structure TProses Dim Ket As String Dim Hitung As String End Structure Dim Langkah(6) As TProses Dim nHal As Byte

Private Sub frmPDecrypt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lblVar.Text = "KP1 = " & KP1.x & "," & KP1.y & vbCrLf & _ "KP2 = " & KP2.x & "," & KP2.y & vbCrLf & _ "P = " & PBesar.x & "," & PBesar.y & vbCrLf & _ "p = " & nP rtbCipher.Text = cCipher End Sub Private Sub btnLanjut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLanjut.Click Dim i As Double Dim cTemp() As String Dim cKarakter As String = "" Dim C1 As Points Dim C2() As Double Dim key2_gen As Points Dim nX As Integer Dim Nilai As Integer btnLanjut.Enabled = False '1. Ambil nilai C1 dan C2 Langkah(1).Ket = "Ambil nilai C1 dan C2" ReDim C2(0) cTemp = Split(rtbCipher.Text, " ") Langkah(1).Hitung = "" For i = 0 To cTemp.GetUpperBound(0) If i = 0 Then C1.x = CDbl(0 & cTemp(0)) ElseIf i = 1 Then C1.y = CDbl(0 & cTemp(1)) Langkah(1).Hitung &= "C1 = (" & C1.x & "," & C1.y & ")" & vbCrLf Else ReDim Preserve C2(C2.GetUpperBound(0) + 1) C2(C2.GetUpperBound(0)) = CDbl(0 & cTemp(i)) Langkah(1).Hitung &= "C2 = " & C2(C2.GetUpperBound(0)) & vbCrLf End If Next '2. Hitung nilai key2_gen Langkah(2).Ket = "Hitung nilai key2_gen" key2_gen = MulPoint(C1, nKR2, nP, 1) Langkah(2).Hitung &= "key2_gen = KR2 * C1" & vbCrLf & _ "key2_gen = " & nKR2 & " * (" & C1.x & "," & C1.y & ")" & vbCrLf "key2_gen = (" & key2_gen.x & "," & key2_gen.y & ")" '3. Ambil nilai absis Langkah(3).Ket = "Ambil nilai absis dari key2_gen" nX = key2_gen.x Langkah(3).Hitung = "(" & key2_gen.x & "," & key2_gen.y & ") --> x = " & key2_gen.x '4. Hitung pesan asli cKarakter = "" Langkah(4).Ket = "Hitung pesan asli" For i = 1 To C2.GetUpperBound(0) Nilai = C2(i) Xor nX cKarakter &= Chr(Nilai) Langkah(4).Hitung &= "Karakter ke-" & i & " = " & C2(i) & " xor " & nX & " = " & Nilai & " = '" & Chr(Nilai) & "'" & vbCrLf Next Langkah(4).Hitung &= "Pesan yang diperoleh :" & vbCrLf & _ cKarakter End Sub Private Sub picBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBack.Click nHal = nHal - 1

& _

If nHal <= 1 Then picBack.Enabled picNext.Enabled Else picBack.Enabled picNext.Enabled End If

= False = True = True = True

lblNo.Text = "Langkah " & nHal & " dari 4" lblLangkah.Text = "Langkah " & nHal lblKet.Text = Langkah(nHal).Ket rtb1.Text = Langkah(nHal).Hitung End Sub Private Sub picNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picNext.Click nHal = nHal + 1 If nHal >= 4 Then picBack.Enabled picNext.Enabled Else picBack.Enabled picNext.Enabled End If = True = False = True = True

lblNo.Text = "Langkah " & nHal & " dari 4" lblLangkah.Text = "Langkah " & nHal lblKet.Text = Langkah(nHal).Ket rtb1.Text = Langkah(nHal).Hitung End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click Me.Close() End Sub Private Sub rtbCipher_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles rtbCipher.KeyPress e.KeyChar = "" End Sub Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label7.Click End Sub End Class

File: frmMengenai.vb

Public Class frmMengenai Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End Class

CURRICULUM VITAE

Nama Alamat Sekarang Alamat Orang Tua Telp/ HP Email Riwayat Pendidikan

: Eko Putra : Jl. Merjan No. 25 Medan : Jl. Merjan No. 25 Medan : 085270090898 : ekoputra.08@gmail.com

SD Wage Rudolf Supratman 1 SMP Wage Rudolf Supratman 1 SMA Wage Rudolf Supratman 1

dari Tahun 1996 s/d Tahun 2002 dari Tahun 2002 s/d Tahun 2004 dari Tahun 2005 s/d Tahun 2008

Mahasiswa S1 Ilmu Komputer USU dari Tahun 2008 s/d Tahun 2013 Keahlian/ Kursus yang diikuti: 1. Bahasa Inggris 2. Bahasa Mandarin