• Tidak ada hasil yang ditemukan

Simulasi Pencarian Kunci Privat dengan Algoritma Silver-Pohlig-Hellaman pada Algoritma Kriptografi Elgamal

N/A
N/A
Protected

Academic year: 2016

Membagikan "Simulasi Pencarian Kunci Privat dengan Algoritma Silver-Pohlig-Hellaman pada Algoritma Kriptografi Elgamal"

Copied!
104
0
0

Teks penuh

(1)

SIMULASI PENCARIAN KUNCI PRIVAT DENGAN ALGORITMA SILVER-POHLIG-HELLMAN PADA ALGORITMA

KRIPTOGRAFI ELGAMAL

DRAFT SKRIPSI

ARIFIN 101401024

PROGRAM STUDI S-1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(2)

SIMULASI PENCARIAN KUNCI PRIVAT DENGAN ALGORITMA

SILVER-POHLIG-HELLMAN PADA ALGORITMA

KRIPTOGRAFI ELGAMAL

DRAFT SKRIPSI

Diajukan untuk melengkapi tugas akhir dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

ARIFIN 101401024

PROGRAM STUDI S-1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul : SIMULASI PENCARIAN KUNCI PRIVAT

DENGAN ALGORITMA

SILVER-POHLIG-HELLMAN PADA ALGORITMA KRIPTOGRAFI ELGAMAL

Kategori : SKRIPSI

Nama : ARIFIN

Nomor Induk Mahasiswa : 101401024

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI (FASILKOM-TI)

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

M. Andri Budiman, ST, M.Comp.Sc, MEM Dr. Elviawaty Muisa Zamzami, ST, MT, MM

NIP.197510082008011011 NIP.197007162005012002

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

(4)

PERNYATAAN

SIMULASI PENCARIAN KUNCI PRIVAT DENGAN ALGORITMA

SILVER POHLIG HELLMAN PADA ALGORITMA

KRIPTOGRAFI ELGAMAL

SKRIPSI

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

Medan, April 2015

(5)

PENGHARGAAN

Segala puji dan syukur bagi Allah SWT, atas segala limpahan rahmat dan karunia-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara. Tidak lupa juga shalawat dan salam kepada tauladan umat Rasululloh Muhammad SAW.

Ucapan terima kasih penulis sampaikan kepada:

1. Ibu Dr. Elviawaty Muisa Zamzami, ST, MT, MM selaku dosen pembimbing I yang telah memberikan bimbingan, kritik, dan saran kepada penulis dalam menyelesaikan skripsi ini

2. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku dosen pembimbing II yang memberikan bimbingan, kritik, saran dan dukungan kepada penulis mulai dari tahap pengambilan judul skripsi hingga penulis menyelesaikan skripsi ini. 3. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi S1 Ilmu

Komputer Universitas Sumatera Utara, dosen pembanding I, dan dosen pembimbing akademik yang telah memberikan kritik dan saran guna memperbaiki kesalahan yang ada pada skripsi ini

4. Ibu Dian Rachmawati, S.Si, M.Kom selaku dosen pembanding II yang telah memberikan kritik dan saran guna memperbaiki kesalahan yang ada pada skripsi ini.

5. Bapak Prof.Dr.Muhammad Zarlis, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara

6. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

(6)

10. Rekan-rekan asisten laboratorium khususnya Eko Verdianto, Ramruddin, Al Mizfar, Angga, Agung, Cholik, Asrul, Nihe, Risky, Heru, Andhika, Mifta, Gina, Dina, Indri yang telah lama menemani penulis dalam menjalani aktivitas laboratorium.

11. Keluarga IKLC, dan UKMI Al-Khuwarizmi yang telah memberikan tempat bagi penulis untuk diterima dan selalu memberikan semangat dalam menjalani perkuliahan.

12. Adik-adik praktikkan khususnya Lala, Fikri, Azwar, Ikhsan, Ismail, Tari, Nurul, Bunga, Kh Nisa dan lainnya yang telah berbagi canda tawa kepada penulis semasa kegiatan praktikum.

Semoga Allah SWT melimpahkan berkah kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini. Penulis menyadari bahwa skripsi ini masih jauh dari sempurna untuk itu penulis menerima kritik dan saran yang membangun agar dapat menyempurnakan skripsi ini. Akhirnya, semoga skripsi ini bermanfaat bagi pribadi, keluarga, masyarakat, organisasi dan negara.

Medan, April 2015

(7)

ABSTRAK

Algoritma kriptografi ElGamal merupakan salah satu algoritma kriptografi asimetris yang menggunakan sepasang kunci, yaitu kunci publik yang digunakan dalam proses enkripsi pesan, dan kunci privat yang digunakan dalam proses dekripsi pesan. Kunci publik dapat diketahui oleh siapa saja yang ingin mengirimkan pesan secara terenkripsi kepada pemilik kunci, sedangkan kunci privat harus dirahasiakan sehingga pemilik kunci adalah satu-satunya orang yang dapat mendekripsi pesan yang telah terenkripsi. Keamanan algoritma kriptografi ElGamal didasarkan pada sulitnya memecahkan logaritma diskrit dalam sebuah grup perkalian yang besar. Algoritma Silver-Pohlig-Hellman merupakan salah satu algoritma yang digunakan untuk menyelesaikan permasalahan logaritma diskrit. Pada penelitian ini, penulis akan melakukan uji coba penggunaan algoritma Silver-Pohlig-Hellman dalam memecahkan kunci privat ElGamal berdasarkan kunci publik yang telah diketahui. Dalam penelitian ini, dilakukan pengujian pemecahan kunci privat terhadap kunci publik dengan panjang yang berbeda. Hasil dari pengujian menunjukkan bahwa semakin panjang kunci publik yang digunakan, maka akan semakin lama waktu yang dibutuhkan untuk memecahkan kunci privat menggunakan algoritma Silver-Pohlig-Hellman.

(8)

SIMULATION OF PRIVATE KEY SEARCHING USING SILVER-POHLIG-HELLMAN ALGORITHM ON ELGAMAL CRYPTOGRAPHY ALGORITHM

ABSTRACT

ElGamal cryptography algorithm is one of the asymmetric cryptographic algorithm which uses a pair of keys; public key used in the message encryption process and private key used in the message decryption process. The public key can be known by anyone who wants to send an encrypted message to the key owner, while the private key must be kept secret so that the key owner is the only person that can decrypt the message which has been encrypted. Security of ElGamal cryptography algorithm is based on the difficulty of solving the discrete logarithm in a large group multiplication. Silver-Pohlig-Hellman Algorithm is one of the algorithms used to solve the discrete logarithm problem. In this study, the authors will do the test of the use of Silver-Pohlig-Hellman algorithm in solving the ElGamal private key based on the known public key. In the test, used the private key solving data collection from the different public key length. The results of the test showed that the longer the public key used, the longer it takes to solve the private key using the Silver-Pohlig-Hellman algorithm.

(9)

DAFTAR ISI

PERSETUJUAN ... iii

PERNYATAAN ... iv

PENGHARGAAN ... v

ABSTRAK ... vii

ABSTRACT ... viii

DAFTAR ISI ... ix

DAFTAR TABEL ... xii

DAFTAR GAMBAR ... xiii

DAFTAR LAMPIRAN ... xv

BAB 1 ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Batasan Masalah ... 2

1.4 Tujuan Penelitian ... 2

1.5 Manfaat Penelitian ... 2

1.6 Metodologi Penelitian ... 3

1.7 Sistematika Penulisan ... 4

BAB 2 ... 5

2.1 Kriptografi ... 5

2.2 Sistem Kriptografi ... 5

2.3 Jenis Sistem Kriptografi Berdasarkan Kunci yang Digunakan ... 5

2.3.1 Sistem Kriptografi Kunci Simetris ... 6

2.3.2 Sistem Kriptografi Kunci Asimetris ... 6

2.4 Matematika untuk Sistem Kriptografi Asimetris ... 7

2.4.1 Greatest Common Divisor (GCD) dan Algoritma Euclid ... 8

2.4.2. Relatif Prima ... 8

2.4.3 Aritmatika Modular dan Kongruensi ... 8

(10)

2.4.5 Grup Perkalian ... 9

2.4.6 Bilangan Prima ... 9

2.4.7 Fermat‟s Little Theorem ... 9

2.4.8 Fungsi ϕ Euler ... 10

2.4.9 Akar Primitif ... 10

2.4.10. Algoritma Miller-Rabin ... 10

2.4.11 Discrete Log Problem ... 11

2.4.12 Chinese Remainder Theorem ... 11

2.5 Sistem Kriptografi ElGamal ... 11

2.5.1 Algoritma ElGamal ... 12

2.5.2 Contoh Penerapan Algoritma Kriptografi ElGamal ... 13

2.6 Kriptanalisis ... 14

2.7 Algoritma Silver-Pohlig-Hellman ... 15

2.8 Tinjauan Penelitian yang Relevan ... 18

BAB 3 ... 19

3.1. Analisis Sistem ... 19

3.1.1. Analisis Masalah ... 19

3.1.2. Analisis Kebutuhan Sistem ... 20

3.1.3 Analisis Pemodelan Sistem... 21

3.2 Perancangan Sistem ... 30

3.2.1. Rancangan Perancangan Graphical User Interface. ... 30

3.2.2. Pseudocode ... 37

BAB 4 ... 45

4.1 Implementasi Sistem ... 45

4.1.1 Tab Bangkitkan Kunci ... 45

4.1.2 Tab Enkripsi... 46

4.1.3 Tab Dekripsi ... 47

4.1.4 Tab Hack ... 48

4.2. Pengujian Sistem ... 48

4.2.1 Pengujian Proses Pembangkitan Kunci ... 49

4.2.2 Pengujian Proses Enkripsi Pesan ... 50

4.2.3 Pengujian Proses Dekripsi Pesan ... 51

(11)

4.3 Perbandingan Panjang Digit Kunci dengan Lama Waktu Hack ... 55

4.3.1. Grafik Rata-rata Waktu Pemecahan Kunci terhadap Panjang Kunci p ... 58

BAB 5 ... 60

5.1 Kesimpulan ... 60

5.2 Saran ... 60

(12)

DAFTAR TABEL

Tabel 2.1 Kode ASCII dari plaintext ... 13

Tabel 2.2 Ciphertext 2, hasil enkripsi dari plaintext „mundur‟ ... 14

Tabel 2.3 Hasil dekripsi dari ciphertext ... 14

Tabel 4.1 Hasil enkripsi pesan „utara‟ ... 51

Tabel 4.2 Hasil dekripsi ciphertext ... 52

Tabel 4.3 Pengujian pemecahan kunci dengan panjang kunci 4 digit ... 55

Tabel 4.4 Pengujian pemecahan kunci dengan panjang kunci 6 digit ... 56

Tabel 4.5 Pengujian pemecahan kunci dengan panjang kunci 8 digit ... 56

Tabel 4.6 Pengujian pemecahan kunci dengan panjang kunci 10 digit ... 57

Tabel 4.7 Pengujian pemecahan kunci dengan panjang kunci 12 digit ... 57

(13)

DAFTAR GAMBAR

Gambar 2.1 Diagram sistem kriptografi kunci simetris ... 6

Gambar 2.2 Diagram sistem kriptografi kunci asimetris ... 7

Gambar 2.3 Diagram proses sistem kriptografi ElGamal ... 12

Gambar 3.1 Diagram Ishikawa Masalah Penelitian ... 19

Gambar 3.2 Model Sistem ... Error! Bookmark not defined. Gambar 3.3 Use case diagram. ... Error! Bookmark not defined. Gambar 3.4 Sequence diagram bangkitkan kunci ... Error! Bookmark not defined. Gambar 3.5 Sequence diagram Enkripsi Pesan ... Error! Bookmark not defined. Gambar 3.6 Sequence diagram Dekripsi Pesan ... Error! Bookmark not defined. Gambar 3.7 Sequence diagram Hack ... Error! Bookmark not defined. Gambar 3.8 Diagram Aktivitas Bangkitkan Kunci ... Error! Bookmark not defined. Gambar 3.9 Diagram Aktivitas Enkripsi Pesan ... Error! Bookmark not defined. Gambar 3.10 Diagram Aktivitas Dekripsi Ciphertext . Error! Bookmark not defined. Gambar 3.11 Diagram Aktivitas Pecahkan Kunci Privat ... Error! Bookmark not defined. Gambar 3.12 Rancangan Tampilan Tab Bangkitkan Kunci ... Error! Bookmark not defined. Gambar 3.13 Rancangan Tampilan Tab Enkripsi ... 34

Gambar 3.14 Rancangan Tampilan Tab Dekripsi ... 35

Gambar 3.15 Rancangan Tampilan Tab Hack ... 36

Gambar 4.1 Tab Generate Key ... 45

Gambar 4.2 Tab Enkripsi ... 46

Gambar 4.3 Tab Dekripsi ... 47

Gambar 4.4 Tab Hack ... 48

Gambar 4.5 Pengujian pembangkitan kunci ElGamal ... 49

Gambar 4.6 Pengujian enkripsi pesan ElGamal... 50

Gambar 4.7 Pengujian dekripsi pesan ElGamal... 52

Gambar 4.8 Pengujian hack kunci ElGamal ... 53

Gambar 4.9 Grafik Waktu Pembangkitan Kunci ... 58

(14)
(15)

DAFTAR LAMPIRAN

A. Listing Program A-1

(16)

ABSTRAK

Algoritma kriptografi ElGamal merupakan salah satu algoritma kriptografi asimetris yang menggunakan sepasang kunci, yaitu kunci publik yang digunakan dalam proses enkripsi pesan, dan kunci privat yang digunakan dalam proses dekripsi pesan. Kunci publik dapat diketahui oleh siapa saja yang ingin mengirimkan pesan secara terenkripsi kepada pemilik kunci, sedangkan kunci privat harus dirahasiakan sehingga pemilik kunci adalah satu-satunya orang yang dapat mendekripsi pesan yang telah terenkripsi. Keamanan algoritma kriptografi ElGamal didasarkan pada sulitnya memecahkan logaritma diskrit dalam sebuah grup perkalian yang besar. Algoritma Silver-Pohlig-Hellman merupakan salah satu algoritma yang digunakan untuk menyelesaikan permasalahan logaritma diskrit. Pada penelitian ini, penulis akan melakukan uji coba penggunaan algoritma Silver-Pohlig-Hellman dalam memecahkan kunci privat ElGamal berdasarkan kunci publik yang telah diketahui. Dalam penelitian ini, dilakukan pengujian pemecahan kunci privat terhadap kunci publik dengan panjang yang berbeda. Hasil dari pengujian menunjukkan bahwa semakin panjang kunci publik yang digunakan, maka akan semakin lama waktu yang dibutuhkan untuk memecahkan kunci privat menggunakan algoritma Silver-Pohlig-Hellman.

(17)

SIMULATION OF PRIVATE KEY SEARCHING USING SILVER-POHLIG-HELLMAN ALGORITHM ON ELGAMAL CRYPTOGRAPHY ALGORITHM

ABSTRACT

ElGamal cryptography algorithm is one of the asymmetric cryptographic algorithm which uses a pair of keys; public key used in the message encryption process and private key used in the message decryption process. The public key can be known by anyone who wants to send an encrypted message to the key owner, while the private key must be kept secret so that the key owner is the only person that can decrypt the message which has been encrypted. Security of ElGamal cryptography algorithm is based on the difficulty of solving the discrete logarithm in a large group multiplication. Silver-Pohlig-Hellman Algorithm is one of the algorithms used to solve the discrete logarithm problem. In this study, the authors will do the test of the use of Silver-Pohlig-Hellman algorithm in solving the ElGamal private key based on the known public key. In the test, used the private key solving data collection from the different public key length. The results of the test showed that the longer the public key used, the longer it takes to solve the private key using the Silver-Pohlig-Hellman algorithm.

(18)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Pada masa sekarang teknologi tidak hanya berfungsi sebagai sarana pertukaran informasi-informasi umum, namun juga berperan penting dalam berjalannya sebuah bisnis. Mulai dari penyimpanan data inventaris perusahaan yang bisa diakses dari semua cabang sampai pada transaksi-transaksi penting yang dipermudah dengan keberadaan teknologi.

Kerahasiaan dalam pengiriman data agar tidak jatuh ke tangan orang yang tidak berhak menjadi kebutuhan yang sangat penting. Pada bagian ini, kriptografi mengambil bagiannya dalam menyandikan pesan agar hanya dapat dibaca oleh pihak -pihak yang memiliki hak.

Ilmu Kriptologi dapat dikategorikan ke dalam dua cabang, yang pertama yaitu cabang yang mempelajari bagaimana caranya merahasiakan pesan, disebut dengan kriptografi. Dan cabang yang mempelajari teknik untuk memecahkan pesan yang telah dirahasiakan dengan kriptografi, disebut dengan kriptanalisis.

Sistem kriptografi saat ini dapat dikategorikan ke dalam dua jenis, yang pertama yaitu sistem kriptografi klasik dimana pengirim dan penerima pesan rahasia memiliki kunci yang sama sehingga kunci yang digunakan untuk menyandikan pesan sama dengan kunci yang digunakan untuk mengembalikan pesan ke bentuk semula. Jenis yang kedua adalah sistem kriptografi kunci publik, dimana kunci untuk menyandikan pesan dan kunci untuk mengembalikannya seperti semula berbeda.

(19)

Keamanan algoritma ElGamal didasarkan pada sulitnya memecahkan kunci privat dengan dasar permasalahan discrete log. Namun telah diketahui beberapa algoritma untuk memecahkan discrete log dari sebuah bilangan, diantaranya adalah Algoritma Silver-Pohlig-Hellman. Oleh sebab itu penulis ingin membuat implementasi algoritma Silver-Pohlig-Hellman dalam pencarian discrete log untuk pemecahan kunci privat ElGamal.

Berdasarkan latar belakang yang telah disebutkan, maka penulis akan mencoba membuat penelitian dengan judul “Simulasi Pencarian Kunci Privat dengan Algoritma Silver-Pohlig-Hellman pada Algoritma Kriptografi ElGamal”.

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah yang telah disebutkan, rumusan masalah yang akan dibahas dalam penelitian ini adalah bagaimana algoritma Silver-Pohlig-Hellman dapat memecahkan kunci privat ElGamal berdasarkan kunci publik yang telah diketahui.

1.3 Ruang Lingkup Penelitian

Ruang lingkup di dalam penelitian ini adalah sebagai berikut: 1. Ukuran panjang kunci publik adalah 4 sampai 16 digit.

2. Pembangkitan bilangan prima menggunakan algoritma Miller-Rabin. 3. Enkripsi dan dekripsi hanya dilakukan pada file text.

4. Bahasa pemrograman yang digunakan adalah Python.

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah membuat sebuah aplikasi yang dapat membangkitkan kunci, mengenkripsi pesan, mendekripsi pesan, dan menemukan kunci privat berdasarkan kunci publik ElGamal menggunakan algoritma Silver-Pohlig-Hellman.

1.5 Manfaat Penelitian

(20)

1.6 Metodologi Penelitian

Tahapan yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur

Pada tahap ini penulisan dimulai dengan studi kepustakaan yaitu proses pengumpulan bahan-bahan referensi baik dari buku-buku, artikel-artikel, maupun dari hasil penelitian mengenai sistem kriptografi ElGamal dan Algoritma Silver -Pohlig-Hellman.

2. Analisis dan Perancangan

Masalah akan dianalisis untuk dimodelkan secara konseptual dengan mengidentifikasi seluruh elemen yang dibutuhkan dan batasan masalah dalam mencapai tujuan. Kemudian perancangan sistem dilakukan dengan mendesain user interface, flowchart, dan UML sebagai gambaran sistem yang akan dibuat.

3. Implementasi

Pada tahap ini sistem akan dibangun dengan menggunakan bahasa pemrograman Python.

4. Pengujian Sistem

Sistem yang telah dibuat akan diuji dengan membangkitkan banyak kunci dengan panjang yang berbeda pada algoritma ElGamal lalu melihat ketepatan dan kecepatan sistem yang dibangun dalam memecahkan kunci privat menggunakan algoritma Silver-Pohlig-Hellman.

5. Dokumentasi

(21)

1.7 Sistematika Penulisan

Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama yaitu:

Bab 1 dijelaskan latar belakang judul skripsi “Simulasi Pencarian Kunci Privat dengan Algoritma Silver-Pohlig-Hellman pada Algoritma Kriptografi ElGamal”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penulisan.

Bab 2 diisi dengan penjelasan dari teori dasar matematika yang berhubungan dengan sistem kriptografi ElGamal dan Algoritma Silver-Pohlig-Hellman, kemudian dilanjutkan dengan penjelasan kriptografi ElGamal dan contoh penggunaannya beserta proses hacking kunci privat dengan algoritma Silver-Pohlig-Hellman.

Pada Bab 3 dibahas analisis terhadap masalah penelitian dan perancangan dari sistem yang akan dibangun. Analisis masalah akan dimodelkan dengan Flowchart dan UML, disertai dengan rancangan dari tampilan software yang akan dibangun.

Bab 4 berisi implementasi sistem yang telah dirancang pada Bab 3, kemudian dilakukan pengujian untuk melihat apakah sistem berjalan dengan semestinya atau tidak. Selanjutnya dilakukan pengumpulan dari data pengujian dengan panjang kunci privat yang berbeda.

(22)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Kriptografi adalah ilmu yang mempelajari bagaimana mengirim pesan secara rahasia sehingga hanya orang yang dituju saja yang dapat membaca pesan rahasia tersebut. Pesan asli disebut sebagai plaintext, dan pesan yang telah dirahasiakan disebut sebagai ciphertext. Proses dalam mengubah plaintext menjadi ciphertext disebut sebagai encryption (enkripsi). Proses sebaliknya, untuk mengembalikan ciphertext menjadi plaintext di sisi penerima pesan disebut sebagai decryption (dekripsi).

2.2 Sistem Kriptografi

Sistem kriptografi terdiri dari 5 bagian, yaitu (Sadikin, 2012):

a. Plaintext: pesan atau data dalam bentuk aslinya yang dapat terbaca. Plaintext adalah masukan bagi algoritma enkripsi.

b. Secret Key: secret key atau kunci rahasia juga merupakan masukan bagi algoritma enkripsi merupakan nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.

c. Ciphertext: ciphertext adalah keluaran algoritma enkripsi. Ciphertext dapat dianggap sebagai pesan dalam bentuk tersembunyi. Algoritma enkripsi yang baik akan menghasilkan ciphertext yang terlihat acak.

d. Algoritma Enkripsi: algoritma enkripsi memiliki 2 masukan teks asli dan kunci rahasia. Algoritma enkripsi melakukan transformasi terhadap teks asli sehingga menghasilkan ciphertext.

e. Algoritma Dekripsi: algoritma dekripsi memiliki 2 masukan yaitu ciphertext dan kunci rahasia. Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai algoritma enkripsi.

2.3 Jenis Sistem Kriptografi Berdasarkan Kunci yang Digunakan

(23)

2.3.1 Sistem Kriptografi Kunci Simetris

Sistem kriptografi kunci simetris menggunakan kunci yang sama untuk mengenkripsi plaintext dan mendekripsi ciphertext, Diagram sistem kriptografi kunci simetris dapat dilihat pada Gambar 2.1.

Gambar 2.1 Diagram Sistem Kriptografi Kunci Simetris Arti simbol:

: Data : Proses : Aliran

Pada Gambar 2.1 dapat dilihat bahwa kunci yang digunakan untuk mengenkripsi dan mendekripsi sama yaitu K. Sistem kriptografi ini aman selama kunci rahasia dipastikan hanya diketahui oleh kedua pihak yang saling berkirim pesan. Namun cara untuk mengirim kunci menjadi masalah lain yang sulit untuk diamankan terutama dalam jalur publik seperti internet.

2.3.2 Sistem Kriptografi Kunci Asimetris

(24)

kunci yang dapat mendekripsi ciphertext yang telah dienkripsi dengan kunci publik. Diagram sistem kriptografi asimetris dapat dilihat pada Gambar 2.2.

Gambar 2.2 Diagram Sistem Kriptografi Kunci Asimetris

Pada Gambar 2.2., kunci yang digunakan untuk mengenkripsi dan mendekripsi pesan berbeda, dimana Arifin menggunakan kunci X untuk mengenkripsi pesan menjadi ciphertext, lalu Eric sebagai penerima ciphertext akan mendekripsi pesan menggunakan kunci Y. Ciphertext tidak dapat dikembalikan menjadi plaintext jika Y tidak diketahui. Disini X disebut sebagai public key dan Y disebut sebagai private key. Public key harus didistribusikan kepada siapapun yang ingin mengirim pesan secara rahasia kepada pemilik kunci sedangkan private key harus tetap disimpan secara rahasia.

Sistem kriptografi ini memiliki keunggulan dimana pengiriman kunci bukan lagi menjadi masalah karena kunci publik tidak akan menjadi masalah jika diketahui oleh siapapun.

2.4 Matematika untuk Sistem Kriptografi Asimetris

(25)

2.4.1 Greatest Common Divisor (GCD) dan Algoritma Euclid

Jika a dan b adalah bilangan bulat, maka Greatest Common Divisor (GCD) dari a dan b adalah sebuah bilangan positif terbesar yang dapat membagi habis kedua bilangan tersebut.

Sebagai contoh, GCD dari 12 dan 18 adalah 6 karena 6 dapat membagi 12 dan 18 dan tidak ada bilangan yang lebih besar dari 6 yang dapat membagi 12 dan 18. Dapat ditulis:

GCD , =

Salah satu cara untuk mendapatkan GCD dari dua buah bilangan adalah dengan menggunakan Algoritma Euclid. Teorema Euclid menyatakan:

jika a = qb + r maka GCD(a,b) = GCD(b,r)

2.4.2. Relatif Prima

Dua buah bilangan a dan b dikatakan relatif prima jika GCD(a, b) = 1. Sebagai contoh 4 dan 7 adalah relatif prima karena GCD(4, 7) = 1.

2.4.3 Aritmatika Modular dan Kongruensi

Ketika masih kecil kita mempelajari „aritmatika jam‟ dimana angka berikutnya setelah 12 adalah 1 sehingga kita menuliskan (Hoffstein, 2008):

+ = dan − =

ini masuk akal karena 7 jam setelah jam 8 adalah jam 3. Yang kita lakukan sebenarnya adalah menghitung 8 + 7 = 15 kemudian menguranginya 12 sehingga menghasilkan 3. Dan dengan cara yang sama 5 jam sebelum jam 2 adalah jam 9 dengan menghitung 2 – 5 = -3 kemudian menambahkannya dengan 12.

Konsep ini disebut sebagai dengan teori kongruensi. Kita katakan a dan b kongruen m jika selisih a – b dapat dibagi dengan m. Ditulis sebagai berikut:

mod

(26)

+ mod dan − mod

2.4.4 Inversi Modulo

Jika dua buah bilangan a dan m relatif prima, maka dapat dipastikan terdapat sebuah bilangan b yang memenuhi:

. mod

pada kongruensi diatas, b disebut sebagai invers modulo dari a modulo m.

2.4.5 Grup Perkalian

Sebuah grup perkalian (G, ×) dengan G merupakan himpunan simbol dan × adalah sebuah operator perkalian yang memenuhi kondisi (Sadikin, 2012):

1. ∀ , ∈ ∶ × ∈ (Closure)

2. ∀ , , ∈ ∶ × × = × × (Asosiatif)

3. ∃ yang unik ∈ ∶ ∀ ∈ ∶ × = × = Elemen e disebut sebagai elemen identitas.

4. ∀ ∈ : ∃ − ∈ : × − = − × = (Invers) 2.4.6 Bilangan Prima

Bilangan prima adalah sebuah bilangan yang hanya dapat dibagi habis oleh 1 dan bilangan itu sendiri. Bilangan yang dapat dibagi habis oleh selain 1 dan bilangan itu sendiri disebut sebagai bilangan komposit. Semua bilangan positif integer n dapat dituliskan sebagai hasil product dari bilangan prima seperti berikut:

= � �

��� = ∏ � � =

2.4.7 Fermat’s Little Theorem

Teori fermat merupakan fondasi dari banyak pengetesan bilangan prima (Riesel, 2012). Jika p merupakan sebuah bilangan prima dan GCD(a, p) = 1, maka

(27)

dan sebaliknya jika n adalah sebuah bilangan komposit dan GCD(a, p) = 1, maka

�− 2.4.8 Fungsi ϕ Euler

Fungsi ϕ Euler atau yang disebut juga fungsi totien euler, dilambangkan dengan ϕ(n) adalah banyaknya bilangan m yang relatif prima terhadap n dimana m < n (Mollin, 2007). Sebagai contoh jika p adalah bilangan prima, maka untuk semua ∈ � dengan

< pasti relatif prima terhadap p, maka ϕ(p) = p – 1.

Sebagai contoh beberapa hasil fungsi ϕ(n) adalah (Sadikin, 2012): 1. ϕ(1) = 0

2. ϕ(p) = p – 1 jika p adalah bilangan prima. Sebab semua elemen merupakan prima relatif dengan p.

3. ϕ(m × n) = ϕ(m) × ϕ(n) jika m merupakan prima relatif dengan n. 4. ϕ( ) = − − dengan p adalah bilangan prima.

2.4.9 Akar Primitif

Jika p adalah bilangan prima, maka terdapat sebuah elemen � ∈ �∗ yang jika dipangkatkan dengan setiap elemen di dalam (Hoffstein, 2008), misalkan:

�∗= , �, � , � , … , ��− .

elemen dengan properti ini disebut dengan akar primitif dari atau generator dari . Elemen tersebut merupakan elemen dari memiliki order p – 1.

2.4.10. Algoritma Miller-Rabin

Algoritma Miller-Rabin merupakan algoritma probabilistik yang menguji keprimaan sebuah bilangan yang diberikan berdasarkan pada Fermat’s LittleTheorem. Algoritma Miller-Rabin menghitung deret berikut secara berulang : ⋯

(28)

2.4.11 Discrete Log Problem

Jika g merupakan akar primitif dari dan h merupakan sebuah elemen yang tidak nol pada . Discrete Log Problem merupakan sebuah masalah dalam menemukan x yang memenuhi persamaan berikut (Hoffstein, 2008):

�� ℎ mod

Pada persamaan diatas, x disebut sebagai logaritma diskrit dari h untuk basis g dan ditulis sebagai log� ℎ .

2.4.12 Chinese Remainder Theorem

Chinese Remainder Theorem (CRT) diformulasikan sebagai penyelesaian permasalahan kongruen dengan modulus yang berbeda. Secara formal CRT menyelesaikan sistem persamaan kongruen berikut ini:

mod mod

. . .

mod

dengan nilai , , … , dan , , … , diketahui, dan x adalah bilangan yang perlu ditemukan.

Berikut adalah algoritma untuk menemukan x: a. Hitung = × × … ×

b. Hitung = , = , … , =

c. Temukan invers modulo untuk setiap − , − , … , − terhadap , , … , d. Temukan x dengan menghitung

= × × − + ⋯ + × ×

2.5 Sistem Kriptografi ElGamal

(29)

Gambar 2.3 Diagram Proses Sistem Kriptografi ElGamal

Sistem kriptografi ElGamal bekerja pada sebuah grup perkalian ( ,×) yang pada grup itu persoalan logaritmik diskrit sulit untuk dipecahkan. Grup perkalian G dapat berupa grup perkalian siklik dengan α adalah akar primitif pada Zp dengan p merupakan bilangan prima. (Sadikin, 2012)

2.5.1 Algoritma ElGamal

Algoritma kriptografi ElGamal adalah sebagai berikut: a. Pembangkit kunci ElGamal

1. Pilih bilangan prima p yang cukup besar sebagai basis grup perkalian ( ∗,×) 2. Pilih α sebagai akar primitif pada grup ( ∗,×)

3. Pilih d yang memenuhi 1 ≤ dp – 2 4. Hitung β = mod p

5. Kunci publik : (p, α, β) 6. Kunci privat : d

Setelah kunci publik dan kunci privat didapatkan, kunci publik akan didistribusikan kepada siapapun yang perlu untuk mengirimkan pesan secara rahasia (dienkripsi), sedangkan kunci privat dijaga kerahasiaannya untuk mendekripsi pesan yang telah dienkripsi dengan kunci publik.

b. Enkripsi Pesan

Orang yang menerima kunci publik dapat mengirimkan pesan secara rahasia kepada pemberi kunci, dengan langkah sebagai berikut:

(30)

2. Output : � , � ∈

3. r ∗ {r dipilih secara acak} 4. � = �mod p

5. � = P × �mod p c. Dekripsi Pesan

Setelah ciphertext diterima, maka pemegang kunci privat dapat mendekripsi pesan dengan cara sebagai berikut:

1. Input : ��� = d, , � ∈ ∗ 2. Output : P

3. � = � × � − mod

2.5.2 Contoh Penerapan Algoritma Kriptografi ElGamal

Berikut ini adalah contoh penerapan dari algoritma kriptografi ElGamal, Misalkan Adit memiliki kunci ElGamal sebagai berikut:

Kunci publik : α = 345, β = 223, p = 379, Kunci privat : d = 43

Kemudian Adit mendistribusikan kunci publik kepada siapa saja yang mau mengirim pesan kepadanya. Arifin yang juga mendapatkan kunci publik key milik Adit akan mengenkripsi pesan menggunakan kunci publik yang diketahui sebagai berikut: Plaintext : mundur

Kode ascii dari plaintext adalah:

Tabel 2.1 Kode ASCII dari Plaintext

Huruf Kode Ascii

m 109

u 117

n 110

d 100

u 117

r 114

Berikut tahap-tahap yang akan dilakukan oleh Arifin untuk mengenkripsi pesan: 1. Memilih nilai r secara acak, didapati

(31)

2. Menghitung nilai C1 = � mod , sehingga didapati C1 = 10

3. Untuk setiap huruf dalam plaintext, dilakukan pengubahan nilai � = P × �mod , sehingga didapati:

Tabel 2.2 Ciphertext 2, Hasil Enkripsi dari Plaintext‘mundur’

Huruf P = P× mod p

m 109 257

u 117 255

n 110 162

d 100 354

u 117 255

r 114 161

Setelah pesan terenkripsi, Arifin mengirim ciphertext 1 dan ciphertext 2 kepada Adit. Lalu Adit akan mendekripsi ciphertext tersebut kembali menjadi plaintext menggunakan kunci privat sebagai berikut:

Tabel 2.3 Hasil Dekripsi dari Ciphertext

Ciphertext P=[ × ( )] Plaintext

255 109 m

162 117 u

354 110 n

255 100 d

161 117 u

255 114 r

2.6 Kriptanalisis

(32)

Di dalam penelitian ini, penulis mengetahui algoritma kriptografi apa yang digunakan dan kunci publik yang telah didistribusikan. Dari itu diketahui bahwa ada algoritma yang dapat digunakan untuk memecahkan kunci privat. Sehingga teknik yang akan digunakan adalah membuat sebuah ciphertext dari kunci publik yang diketahui, lalu mencoba memecahkan kunci privatnya berdasarkan kunci publik dan ciphertext yang telah dibuat.

2.7 Algoritma Silver-Pohlig-Hellman

Algoritma Silver-Pohlig-Hellman (SPH) adalah sebuah algoritma untuk menghitung logaritma diskrit dari sebuah grup perkalian. Cara kerja algoritma Silver-Pohlig -Hellman dijabarkan sebagai berikut:

a. Diketahui α adalah generator ∗, β ∗ , dan kita memiliki faktorisasi berikut:

− = ∏ � =

∈ N

dimana adalah distinct primes. Cara untuk menghitung mod adalah dengan menghitung e modulo untuk j = 1, 2, … , r, lalu gunakan Chinese Remainder Theorem.

b. Untuk menghitung setiap nilai e modulo kita harus menentukan e dengan basis :

= ∑ −

=

untuk menghitung , kita lakukan hal berikut. b.1 Set =

b.2Temukan dengan cara sebagai berikut:

Hitunglah �− � untuk setiap k = 0, 1, …, sampai kita dapati:

�− � �−

(33)

Pada kondisi diatas, k =

b.3 Hitunglah untuk i = 1, 2, …, − seperti berikut. Tentukan :

= − ∑−= �

Hitunglah nilai �− � mod untuk setiap k = 0, 1, …, sampai kita dapati:

�− �+ �−� mod

Setelah k didapatkan, isi nilai ←

c. Temukan e dengan menggunakan Chinese Remainder Theorem .

Di bawah ini contoh dari penggunaan algoritma Silver-Pohlig-Hellman dalam memecahkan kunci privat ElGamal, Berdasarkan contoh pada penerapan kriptografi ElGamal, diketahui bahwa p = 379, α = 345 dan = = . Kita ingin mencari kunci privat = log . Pada perhitungan dibawah, semua persamaan berikut diasumsikan sebagai modulo 379.

Kita dapati − = = . . = Untuk = :

�− � = =

k 0 1

�− � 1 =

Disini kita dapati = . Maka kita dapati representasi basis 2 dari

log adalah:

∑ − =

= . mod

Untuk = :

(34)

k 0 1

�− � 1

i 0 1 2

223 339 255

�− �+

1 2 1

Disini kita dapati = , = , = . Maka kita dapati representasi basis 3

dari log adalah:

∑ − =

= . + . + . mod

Untuk = :

�− � =

k 0 1

�− � 1

Disini kita dapati = . Maka kita dapati representasi basis 7 dari

log adalah:

∑ −

=

= . mod

Lalu kita akan mencari nilai e dengan menggunakan Chinese Remainder Theorem untuk setiap nilai pada basis . Dan kita dapati bahwa e = 43, jika nilai e disubstitusikan pada persamaan awal, maka:

mod

(35)

2.8 Tinjauan Penelitian yang Relevan

Berikut adalah penelitian yang membahas seputar algoritma kriptografi ElGamal: a. Andrian. Y. (2013) membuat penelitian yang berfokus pada penggunaan elemen

primitif dan elemen non-primitif pada kunci publik ElGamal. Hasil penelitian menunjukkan bahwa Elemen primitif maupun elemen non-primitif tidak mempengaruhi proses enkripsi, proses dekripsi, dan besarnya file hasil enkripsi. b. Asmar. N. D. (2008) membentuk sebuah sistem yang mengamankan data dan

informasi dengan menggunakan Algoritma ElGamal. Hasil penelitian mengungkapkan bahwa Algoritma kriptografi asimetris seperti ElGamal sangat baik digunakan untuk mengatasi masalah distribusi kunci.

(36)

BAB 3

ANALISIS DAN PERANCANGAN

3.1. Analisis Sistem

Analisis sistem bertujuan untuk memecah sistem ke dalam komponen-komponen subsistem yang lebih kecil untuk mengetahui hubungan setiap komponen tersebut dalam mencapai tujuan. (Whitten, 2007)

3.1.1. Analisis Masalah

Masalah yang diangkat dalam penulisan skripsi ini adalah pembuatan sistem kriptografi untuk merahasiakan pesan menggunakan algoritma ElGamal, dan pemecahan kunci privat menggunakan algoritma Silver-Pohlig-Hellman. Secara umum masalah dalam penelitian dapat dilihat pada Gambar 3.1 yang dirancang dalam bentuk Diagram Ishikawa.

Gambar 3.1 Diagram Ishikawa Masalah Penelitian

(37)

tidak hanya diketahui oleh pengirim pesan, namun juga pihak lain yang mencoba untuk mengetahui pesan yang akan dikirimkan dengan cara mencoba membongkar kunci privat dengan modal kunci publik yang tersedia menggunakan algoritma Silver-Pohlig-Hellman. Oleh karena itu sistem ini akan melakukan proses hacking pada kunci publik yang diketahui untuk menemukan kunci privat yang dirahasiakan. Setelah kunci privat berhasil diketahui, pesan terenkripsi akan didekripsi kembali ke bentuk awal.

3.1.2. Analisis Requirement

Analisis requirement meliputi analisis functional requirement dan non fuctional requirement. Functional requirement mendeskripsikan fungsi-fungsi yang harus

dilakukan oleh sebuah sistem untuk mencapai tujuan. Sedangkan non functional requirement mendeskripsikan fitur lain seperti karakteristik, batasan sistem, performa,

dokumentasi dan yang lainnya agar sistem berjalan sukses. a. Analisis functional requirement

Untuk dapat melakukan pencarian kunci privat menggunakan algoritma Silver-Pohlig-Hellman pada algoritma kriptografi ElGamal, functional requirement yang harus dipenuhi adalah perangkat lunak dapat:

1. Membangkitkan kunci mulai dari 4-digit sampai 16-digit bilangan prima. 2. Membaca masukan berupa file text sebagai kunci, plaintext dan ciphertext. 3. Melakukan enkripsi plaintext dengan kunci publik yang diberikan.

4. Memecahkan kunci privat berdasarkan kunci publik yang diberikan.

5. Mendekripsi ciphertext menjadi plaintext berdasarkan kunci privat yang diberikan.

6. Menyimpan Kunci, Plaintext dan ciphertext ke dalam file teks.

7. Menghitung berapa lama waktu yang dibutuhkan untuk pembangkitan kunci dan pemecahan kunci privat.

b. Analisis non functional requirement

Nonfunctional requirement yang harus dipenuhi oleh sistem adalah sebagai berikut:

(38)

2. Antarmuka sistem dapat dimengerti dan digunakan dengan mudah oleh pengguna.

3. Sistem yang dibangun memiliki panduan penggunaan. 3.1.3 Analisis Pemodelan Perangkat Lunak

Pemodelan sistem bertujuan untuk menampilkan kebutuhan dari sebuah perangkat lunak. Salah satu jenis pemodelan kebutuhan sistem adalah model berbasis skenario, model ini menggambarkan spesifikasi kebutuhan perangkat lunak dari berbagai sudut pandang aktor di dalam perangkat lunak (Pressman, 2010). Perangkat lunak yang akan dibangun di dalam penelitian ini dimodelkan dengan diagram Use Case.

Use case mendeskripsikan suatu skenario penggunaan yang bersifat spesifik

dalam bahasa yang jelas dari sudut pandang aktor dengan sistem (Pressman, 2010). Aktor yang berinteraksi dengan sistem ini yaitu: pemilik kunci, pengenkripsi pesan, dan kriptanalis. Use case diagram yang menggambarkan interaksi aktor dengan sistem disajikan pada Gambar 3.2.

(39)

Spesifikasi untuk use case Bangkitkan Kunci disajikan pada Tabel 3.1 Tabel 3.1 Spesifikasi Use Case Bangkitkan kunci.

Use Case Bangkitkan Kunci

Aktor Utama Pemilik Kunci

Sasaran Konteks Membangkitkan kunci publik dan kunci privat yang nantinya akan digunakan untuk mengenkripsi dan mendekripsi pesan menggunakan algoritma kriptografi elgamal.

Prakondisi .

Pemicu Pengguna meng-klik tombol „Generate!‟

Skenario penggunaan perangkat lunak 1. Pengguna memilih panjang kunci yang ingin dibangkitkan antara 4 sampai 16 digit.

2. Pengguna menekan tombol „Generate‟ 3. Perangkat lunak membangkitkan kunci

publik dan kunci privat, lalu menampilkannya pada kolom „Kunci Publik‟ dan „Kunci Privat‟.

4. Jika pengguna mau meng-eksport kunci yang telah dibangkitkan, maka pengguna akan menekan tombol „Eksport‟ pada bagian kunci publik dan kunci privat.

Prioritas Penting.

Diagram aktivitas

(40)
(41)

Spesifikasi untuk use case Enkripsi Pesan disajikan pada Tabel 3.2. Tabel 3.2 Spesifikasi Use Case Enkripsi Pesan

Use Case Enkripsi Pesan

Aktor Utama Pengirim Pesan

Sasaran Konteks Mengenkripsi pesan asli (plaintext) ke dalam ciphertext menggunakan kunci publik yang

diperoleh dari pemilik kunci dan menampilkannya di kolom „Ciphertext‟.

Prakondisi Pengguna memiliki kunci publik dan pesan yang akan dienkripsi.

Pemicu Pengguna meng-klik tombol „Enkripsi‟.

Skenario penggunaan perangkat lunak 1. Pengguna menginput kunci publik dengan cara meng-import atau mengetikkan secara manual ke kolom „Kunci Publik‟.

2. Pengguna menginput pesan ke kolom „Pesan‟ dengan cara meng-import atau mengetikkan secara manual.

3. Pengguna meng-klik tombol „Enkripsi‟ 4. Perangkat lunak mengenkripsi pesan ke

dalam ciphertext dan menampilkannya pada kolom „Ciphertext‟

5. Jika pengguna mau meng-eksport ciphertext yang telah didapat, maka pengguna akan menekan tombol „Eksport‟.

Prioritas Menengah, akan diimplementasikan setelah

fungsi „Bangkitkan Kunci‟ diimplementasikan.

Diagram aktivitas

(42)
(43)

Spesifikasi untuk use case Dekripsi Pesan disajikan pada Tabel 3.3. Tabel 3.3 Spesifikasi Use Case Dekripsi Pesan

Use Case Dekripsi Pesan

Aktor Utama Pemilik Kunci

Sasaran Konteks Mendekripsi ciphertext kembali menjadi pesan asli (plaintext) menggunakan kunci privat yang dimiliki oleh pemilik kunci dan menampilkannya di kolom „Plaintext‟.

Prakondisi Pengguna memiliki kunci privat untuk

ciphertext yang akan didekripsi.

Pemicu Pengguna meng-klik tombol „Dekripsi‟.

Skenario penggunaan perangkat lunak 1. Pengguna menginput kunci privat dengan cara meng-import atau mengetikkan secara manual ke kolom „Kunci Privat‟.

2. Pengguna menginput ciphertext ke kolom „Ciphertext dengan cara meng -import atau mengetikkan secara manual. 3. Pengguna meng-klik tombol „Dekripsi‟. 4. Perangkat lunak mendekripsi ciphertext

kembali menjadi plaintext dan menampilkannya pada kolom „Plaintext‟ 5. Jika pengirim pesan mau meng-eksport

plaintext yang telah didapat, maka pengirim pesan akan menekan tombol „Eksport‟.

Prioritas Menengah, akan diimplementasikan setelah

fungsi „Bangkitkan Kunci‟, dan „Enkripsi‟ diimplementasikan.

Diagram aktivitas

(44)
(45)

Spesifikasi untuk use case Pecahkan Kunci Privat disajikan pada Tabel 3.4. Tabel 3.4 Spesifikasi Use Case Pecahkan Kunci Privat

Use Case Pecahkan Kunci Privat

Aktor Utama Kriptanalis

Sasaran Konteks Menemukan kunci privat dari kunci publik yang telah diketahui.

Prakondisi Pengguna memiliki kunci publik.

Pemicu Pengguna meng-klik tombol „Hack‟.

Skenario penggunaan perangkat lunak 1. Pengguna menginput kunci publik dengan cara meng-import atau mengetikkan secara manual ke kolom „Kunci Publik‟.

2. Pengguna mencoba menemukan kunci privat dengan meng-klik tombol „Hack‟. 3. Perangkat lunak mencoba menemukan

kunci privat berdasarkan kunci publik yang diberikan.

4. Setelah kunci privat ditemukan, perangkat lunak akan menampilkannya pada kolom „Kunci Privat‟ dan menampilkan waktu yang dibutuhkan untuk pemecahan kunci pada label „Waktu pemecahan kunci‟.

5. Jika pengguna mau meng-eksport kunci privat yang telah ditemukan, maka pengguna akan menekan tombol „Eksport‟.

Prioritas Menengah, akan diimplementasikan setelah

fungsi „Bangkitkan Kunci‟ diimplementasikan.

Diagram aktivitas

(46)
(47)

3.2 Perancangan Perangkat Lunak

Perancangan sistem merupakan spesifikasi dari solution berbasis komputer secara detail, disebut juga dengan physical design. Perancangan sistem menekankan pada implementasi sistem secara teknis (Whitten, 2007).

Berawal dari saat spesifikasi kebutuhan perangkat lunak telah dianalisis dan dimodelkan, perancangan perangkat lunak merupakan tindakan rekayasa perangkat lunak yang terakhir di dalam aktivitas pemodelan dan kemudian merupakan landasan yang sangat penting bagi aktivitas konstruksi (penulisan kode) perangkat lunak (Pressman, 2010).

Perangkat lunak akan dibangun dengan bahasa pemrograman Python menggunakan library Tkinter sebagai Graphical User Interface-nya. Berikut ini akan dijelaskan rancangan dan pseudocode dari perangkat lunak yang akan dibuat.

3.2.1. Sequence Diagram.

(48)

a. Sequence diagram bangkitkan kunci

Sequence diagram dari proses enkripsi pesan ditunjukkan pada Gambar 3.7

Gambar 3.7 Sequence diagram bangkitkan kunci b. Sequence diagram Enkripsi Pesan

Sequence diagram dari proses enkripsi pesan ditunjukkan pada Gambar 3.8.

(49)

c. Sequence diagram Dekripsi Pesan

Sequence diagram dari proses dekripsi ciphertext ditunjukkan pada Gambar 3.9.

Gambar 3.9 Sequence diagram Dekripsi Pesan d. Sequence diagram Hack

Sequence diagram dari proses hack ditunjukkan pada Gambar 3.10.

(50)

3.2.2. Perancangan Antarmuka Perangkat Lunak.

Perangkat lunak akan memiliki empat bagian utama yaitu pembangkitan kunci, enkripsi, dekripsi, dan hack kunci privat. Berikut ini adalah rancangan antarmuka dari perangkat lunak yang akan dibangun.

a. Tab Bangkitkan Kunci

Rancangan antarmuka perangkat lunak pada tab Bangkitkan kunci disajikan pada Gambar 3.11.

Gambar 3. 11 Rancangan Tampilan Tab Bangkitkan Kunci

Tab ini digunakan ketika user ingin membangkitkan kunci ElGamal, elemen-elemen

yang terdapat di dalamnya yaitu:

1. Combobox pemilihan panjang kunci digunakan untuk memilih bilangan prima yang digunakan dalam kunci yang akan dibangkitkan.

2. Button „Generate!‟ digunakan untuk membangkitkan kunci ElGamal.

3. Textbox „p‟, „a‟, dan „b‟ digunakan untuk menampilkan hasil kunci publik yang telah dibangkitkan.

1 2

3

4

5

(51)

4. Button „Export‟ pada panel kunci publik digunakan untuk menyimpan kunci publik yang telah didapat ke dalam sebuah file.

5. Textbox „p‟ dan „d‟ digunakan untuk menampilkan hasil kunci privat yang telah dibangkitkan.

6. Button „Export‟ pada panel kunci privat digunakan untuk menyimpan kunci privat yang telah didapat ke dalam sebuah file.

7. Label waktu pembangkitan kunci akan digunakan untuk menampilkan lama pembangkitan kunci.

b. Tab Enkripsi

Rancangan antarmuka perangkat lunak pada tab enkripsi disajikan pada Gambar 3.12.

Gambar 3.12 Rancangan Tampilan Tab Enkripsi

Tab ini digunakan ketika user ingin mengenkripsi pesan, elemen-elemen yang terdapat di dalamnya yaitu:

1. Button Import digunakan untuk mengimpor kunci publik dari sebuah file. 1

2

3 4

5

6

(52)

2. Textbox „p‟, „a‟, dan „b‟ digunakan untuk menampilkan kunci publik yang telah diimpor atau diketikkan oleh user.

3. Text Area pesan digunakan untuk memasukkan pesan / Plaintext yang akan dienkripsi.

4. Button Import’ digunakan untuk mengimpor pesan dari file.

5. Button „Enkripsi‟ digunakan untuk mengenkripsi pesan yang telah diimpor atau diketikkan.

6. Text Area Ciphertext‟ digunakan untuk menampilkan Ciphertext hasil enkripsi.

7. Button Export’ digunakan untuk mengekspor ciphertext ke dalam sebuah file. c. Tab Dekripsi

Rancangan antarmuka perangkat lunak pada tab Dekripsi disajikan pada Gambar 3.13.

Gambar 3.13 Rancangan Tampilan Tab Dekripsi

Tab ini digunakan ketika user ingin mengenkripsi pesan, elemen-elemen yang terdapat di dalamnya yaitu:

1

2

3

4

5

6

(53)

1. Button Import digunakan untuk mengimpor kunci privat dari sebuah file. 2. Textbox „p‟ dan „d‟ digunakan untuk menampilkan kunci privat yang telah

diimpor atau diketikkan oleh user.

3. Button Import’ digunakan untuk mengimpor Ciphertext dari file. 4. Text Area Ciphertext‟ digunakan untuk menampilkan Ciphertext.

5. Button „Dekripsi‟ digunakan untuk mendekripsi pesan yang telah diimpor atau diketikkan.

6. Text Area Plaintext digunakan untuk menampilkan pesan asli/ Plaintext hasil dekripsi.

7. Button Export‟ digunakan untuk menyimpan pesan asli ke dalam sebuah file. d. Tab Hack Key

Rancangan antarmuka perangkat lunak pada tab Hack disajikan pada Gambar 3.14.

Gambar 3.14 Rancangan Tampilan Tab Hack

Tab ini digunakan ketika user ingin menemukan kunci privat berdasarkan kunci publik yang diketahui, elemen-elemen yang terdapat di dalamnya yaitu:

1. Button ‘Import’ digunakan untuk mengimpor kunci publik dari sebuah file.

1 2

3

4 5

(54)

2. Textbox „p‟, „a‟ dan „b‟ digunakan untuk menginputkan kunci publik atau menampilkan kunci publik yang diimport.

3. Button ‘Hack’ digunakan untuk menemukan kunci privat dari kunci publik yang telah diketahui menggunakan algoritma Silver-Pohlig-Hellman.

4. Textbox ‘p‟ dan „d‟ digunakan untuk menampilkan kunci privat yang telah ditemukan.

5. Button ‘Export’ digunakan untuk mengekspor kunci privat yang telah didapat ke dalam sebuah file.

6. Label panjang kunci dan label waktu pemecahan kunci digunakan untuk menampilkan panjang kunci dan lama waktu pemecahan kunci privat.

3.2.3. Pseudocode

Pseudocode adalah urutan langkah-langkah algoritma yang disajikan dalam bentuk

mirip seperti kode pemrograman untuk mempermudah pemahaman terhadap prinsip sebuah algoritma. Berikut ini akan dideskripsikan pseudocode yang akan digunakan di dalam perangkat lunak.

Notasi Algoritmik untuk menuliskan fungsi adalah (Munir, 2001):

function NAMA_FUNGSI (input daftar parameter formal) → tipe hasil

{ spesifikasi fungsi, menjelaskan apa yang dilakukan dan dikembalikan

oleh fungsi }

DEKLARASI

{ Semua nama yang dipakai di dalam algoritma fungsi dideklrasikan di

sini. Nama yang didefinisikan di dalam DEKLARASI lokal hanya dikenal

dan dipakai di dalam fungsi ini saja }

DESKRIPSI

{ badan fungsi, berisi instruksi-instruksi untuk menghasilkan

nilai yang akan dikembalikan oleh fungsi }

return hasil { pengembalian nilai yang dihasilkan fungsi }

a. Pseudocode pembangkitan kunci ElGamal

(55)

function GENERATE_KEY(input panjangKunci: integer) → array of integer

DEKLARASI

p : integer { bilangan prima }

a : integer { primitive root }

b : integer { bilangan acak }

d : integer { hasil perhitungan modulo exponensial }

function PRIME(input p: integer ) → integer

{ mengembalikan bilangan prima dengan panjang p }

function PRIM_ROOT(input p: integer ) → integer

{ mengembalikan primitive root dari p }

function RANDOM(input x1, x2: integer ) → integer

{ mengembalikan nilai bilangan acak antara x1 dan x2 }

function MOD_EXP( a, b, n : integer } → integer

{ mengembalikan nilai a pangkat b mod n }

DESKRIPSI

p  PRIME(panjangKunci)

a  PRIM_ROOT(p)

d  RANDOM(1, p-2) {bilangan acak antara 1 and p-2}

b  MOD_EXP(a, d, p)

publickey  {p, a, b}

privatekey  d

return [publicKey, privateKey]

Dalam pencarian bilangan prima pada kunci publik p dilakukan dengan membangkitkan bilangan acak dan melakukan pengecekan keprimaan bilangan tersebut menggunakan algoritma Miller-Rabin, berikut adalah pseudocode Algoritma Miller-Rabin dalam pengecekan apakah sebuah bilangan merupakan prima atau tidak.

function RABIN_MILLER_TEST(input n: integer) → boolean

DEKLARASI

certainty : integer { jumlah iterasi pengetesan }

randomNumber : integer { bilangan acak }

(56)

{ mengembalikan nilai bilangan acak antara x1 dan x2 }

function MOD_EXP( a, b, n : integer } → integer

{ mengembalikan nilai a pangkat b mod n }

DESKRIPSI

nmin1  n-1

xmin1  n-1

s  0

while((xmin1 mod 2 = 0) and (xmin1 > 0)):

xmin1  xmin1 / 2

s  s + 1

d  nmin1 / power(2, s)

certainty  length(n)

i  0

while(i < certainty)

nmin2  n - 2

if(nmin2 < 2)

nmin2  2

{ bilangan acak antara 2 dan nmin 2 }

randomNumber  RANDOM(2, nmin2)

x  MOD_EXP(randomNumber, d, n)

if((x = 1) or (x = n-1))

i  i + 1

next step

j  0

while (j < s - 1)

x  MODEXP(x, 2, n)

if(x = 1)

return false if(x = nmin1)

j  j + 1

next step j  j + 1

(57)

Untuk membangkitkan kunci publik a, dilakukan pencarian akar primitif dari p yang telah ditemukan, berikut adalah pseudocode pencarian akar primitif dari p.

function PRIM_ROOT(input p: integer) → integer

DEKLARASI

p : integer { bilangan prima }

s : integer { bilangan prima – 1 }

testlist : list of integer { deret bilangan yang akan ditest } primitiveRoot : integer { primitive root yang akan dikembalikan }

function FIND_DISTINCT_FACTOR(input s: integer ) → array of

integer

{ mengembalikan deret faktorisasi bilangan prima yang berbeda dari

s }

function MOD_EXP( a, b, n : integer } → integer

{ mengembalikan nilai a pangkat b mod n }

DESKRIPSI

s  prime – 1

distinctPrimes = FIND_DISTINCT_FACTOR(s)

p  distinctPrimes[“p”]

power  distinctPrimes["power"]

(58)

b. Pseudocode algoritma enkripsi ElGamal

Berikut pseudocode yang digunakan dalam enkripsi pesan ElGamal:

function ENKRIPSI(input plainText: string, publicKey : array of

integer) → string

C1  MOD_EXP(publickey[a], r, publicKey[p])

pengali  MOD_EXP(publickey[b], r, publicKey[p])

foreach character in plaintext

c. Pseudocode algoritma dekripsi ElGamal

Berikut adalah pseudocode dari algoritma dekripsi ciphertext ElGamal

function elgamalDecrypt(privKey: array of integer, cipherText:

string) → string

DEKLARASI

cipherText : string

(59)

C2 : string

invMod  INVERS_MOD(ciphertext[C1], publicKey[p])

foreach character in ciphertext[C2]

charCode  ASCII(character)

charCode  charCode * invMod mod publicKey[p]

plainTextChar  NUMTOCHAR(charcode)

plainText  plainText + plainTextChar

return plainText

d. Pseudocode algoritma Silver-Pohlig-Hellman untuk pencarian kunci privat ElGamal

function sphDiscreteLog(base, B, prime : integer) → integer

DEKLARASI

distinctPrimes : array of integer 2 dimension pj : array of integer

aj : array of integer b : array of integer

function FIND_DISTINCT_FACTOR(input s: integer ) → array of

integer

{ mengembalikan deret faktorisasi bilangan prima yang berbeda dari

s }

distinctPrimes  FIND_DISTINCT_FACTOR(prime - 1)

(60)

if (i = 0)

ejm.append(pow(item, aj[j]))

x  CRT(ej, ejm)

x  x mod LCM(ejm)

return x

Pada tahap akhir algoritma Silver-Pohlig-Hellman, digunakan Chinese Remainder Theorem untuk mencari nilai akhir. Berikut adalah pseudocode dari

(61)

function INVERS_MOD( a, b, p : integer } → char

{ mengembalikan inversi modulo dari a mod p }

DESKRIPSI

M  1

for i in range(1, length(m))

M  M * m[i-1]

listM  int[]

for i in range(1, length(m))

listM[i-1]  M / m[i-1]

listInvM  int[]

for i in range(1, count(listM))

listInvM[i-1]  inversMod(listM[i - 1], m[i - 1])

x  0

for i in range(1, count(a))

x  x + a[i-1] * listM[i-1] * listInvM[i-1]

(62)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem

Sistem dibangun dengan bahasa pemrograman python dengan Tkinter sebagai library untuk menyajikan Graphical User Interface terhadap user. Terdapat empat tab utama yaitu tab Bangkitkan Kunci, Enkripsi, Dekripsi, dan Hack yang bekerja sesuai dengan nama tab masing-masing.

4.1.1 Tab Bangkitkan Kunci

Tab ini digunakan untuk membangkitkan kunci ElGamal, tampilan dari tab

Bangkitkan Kunci dapat dilihat pada Gambar 4.1.

(63)

Untuk membangkitkan kunci ElGamal, user akan memilih panjang digit bilangan prima yang diinginkan melalui dropdown list panjang kunci yang telah disediakan, kemudian menekan tombol „Generate!‟, dan kunci ElGamal akan ditampilkan pada text box dibawahnya. Setelah kunci dibangkitkan, user dapat menyimpan kunci publik

dan kunci privat tersebut ke dalam sebuah file dengan menekan tombol „Export‟. 4.1.2 Tab Enkripsi

Tab ini digunakan untuk mengenkripsi pesan dengan menggunakan kunci publik

ElGamal yang telah diketahui, tampilan dari tab Enkripsi dapat dilihat pada Gambar 4.2.

Gambar 4.2 Tab Enkripsi

Untuk mengenkripsi pesan, user akan menginput kunci publik dengan cara import dari file dengan menekan tombol „Import‟ atau mengetikkannya secara manual. Pesan

(64)

dalam Text Area Ciphertext. User dapat menyimpan Ciphertext ke dalam file dengan menekan tombol „Eksport‟.

4.1.3 Tab Dekripsi

Tab ini digunakan untuk mengenkripsi pesan dengan menggunakan kunci privat

ElGamal yang telah diketahui, tampilan dari tab Dekripsi dapat dilihat pada Gambar 4.3.

Gambar 4.3 Tab Dekripsi

Untuk mengenkripsi ciphertext, user akan menginput kunci privat dengan cara import dari file dengan menekan tombol „Import‟ atau mengetikkannya secara manual. Ciphertext yang akan didekripsi akan di-import dari file dengan menekan tombol import. Untuk mendekripsi ciphertext, user tinggal menekan tombol „Dekripsi‟, lalu Plaintext hasil dekripsi akan ditampilkan di dalam Text Area Plaintext. User dapat

(65)

4.1.4 Tab Hack

Tab ini digunakan untuk memecahkan kunci privat berdasarkan kunci publik yang

diketahui.

Gambar 4.4 Tab Hack

Untuk mencari kunci privat, user akan menginput kunci publik dengan cara import dari file dengan menekan tombol „Import‟ atau mengetikkannya secara manual. Lalu user tinggal menekan tombol „Hack!‟, lalu program akan menampilkan hasil

pemecahan kunci pada Text area d. 4.2. Pengujian Perangkat Lunak

(66)

4.2.1 Pengujian Proses Pembangkitan Kunci

Untuk melakukan pembangkitan kunci, user harus mengakses tab Bangkitkan kunci, menentukan panjang digit kunci yang diinginkan lalu menekan tombol „Generate!‟. Hasil proses pembangkitan kunci dapat dilihat pada Gambar 4.5.

Gambar 4.5 Pengujian Pembangkitan Kunci ElGamal Pembangkitan kunci ElGamal dilakukan dalam empat tahap, yaitu:

a. Memilih bilangan prima p. Pada hasil pengujian diatas, p yang didapat dari hasil pengecekan dengan algoritma Miller-Rabin adalah p = 4871.

b. Memilih α sebagai akar primitif pada grup perkalian ∗. Pada hasil pengujian diatas, didapati bahwa α = 11.

c. Memilih d sebagai bilangan acak dengan syarat − . Pada hasil pengujian diatas, d yang dipilih adalah d = 2034.

d. Memilih β sebagai hasil perhitungan = . Pada hasil pengujian diatas, didapati bahwa β = 3124.

(67)

- Kunci publik : p = 4871, α = 11, β = 3124. - Kunci privat : d = 2034

Setelah kunci didapat, user dapat menyimpan kunci tersebut ke dalam file dengan menekan tombol „Export‟ pada panel kunci publik dan kunci privat.

4.2.2 Pengujian Proses Enkripsi Pesan

Untuk melakukan enkripsi pesan menjadi ciphertext, user akan memasukkan kunci publik yang telah diketahui dan pesan yang akan dienkripsi baik dengan mengimportnya dari file maupun dengan mengetikkannya secara manual. Hasil proses enkripsi dapat dilihat pada Gambar 4.6.

(68)

Enkripsi ElGamal dilakukan dalam dua tahap yaitu:

a. Memilih bilangan acak r sebagai ciphertext 1, pada implementasi sistem, r yang dipilih akan disisipkan pada akhir ciphertext dengan pembatas berupa karakter underscore („_‟). Dari hasil pengujian diatas, dipilih r = 958.

b. Menentukan kode angka P dari setiap karakter pesan, lalu mengubahnya menjadi angka yang baru dengan menghitung � = P × �mod . Pada pengujian diatas pesan yang akan dienkripsi adalah „utara‟. Hasil enkripsi dapat dilihat pada Tabel 4.1:

Tabel 4.1 Hasil Enkripsi Pesan ‘utara’ Huruf P = P× mod p

u 117 1290

t 116 30

a 97 445

r 114 2381

a 97 445

Hasil enkripsi dari setiap karakter diatas digabung menjadi satu susunan string yang akan dipisahkan dengan huruf „d‟ lalu ditampilkan pada Text area ciphertext, sehingga ciphertext yang didapat adalah: “1290d30d445d2381d445d_958”.

Setelah ciphertext didapat, user dapat menyimpannya ke dalam file dengan menekan tombol „Eksport‟.

4.2.3 Pengujian Proses Dekripsi Pesan

Proses dekripsi pesan hanya dapat dilakukan oleh orang yang memiliki kunci privat yang cocok dengan ciphertext yang didapat, pada sistem ini kita mengetahui bahwa kunci privat dari ciphertext yang telah didapat diatas adalah d = 2034. Disini akan diuji apakah hasil dari dekripsi ciphertext sama dengan plaintext awal yang ditulis. User yang akan melakukan dekripsi harus memasukkan kunci privat dan ciphertext

(69)

Gambar 4.7 Pengujian Dekripsi Pesan ElGamal

Proses dekripsi dilakukan dengan cara menghitung kembali kode angka di dalam ciphertext menjadi kode angka plaintext dengan rumus � = � × � − mod . Setelah itu angka yang didapat dikembalikan ke dalam huruf. Hasil dekripsi dapat dilihat pada Tabel 4.2.

Tabel 4.2 Hasil Dekripsi Ciphertext

Ciphertext = [ × − ] Plaintext

1290 117 u

30 116 t

445 97 a

2381 114 r

445 97 a

(70)

4.2.4 Pengujian Proses Hacking Kunci Privat.

Hacking dilakukan untuk mendapatkan kunci privat dari kunci publik yang telah

diketahui dengan menggunakan algoritma Silver-Pohlig-Hellman. Untuk melakukan hacking, user terlebih dahulu memilih tab Hack, lalu memasukkan kunci publik

dengan cara mengimport dari file, atau mengetikkannya secara manual, lalu menekan tombol „Hack!‟. Pengujian ini dilakukan untuk melihat apakah kunci privat yang didapat dari hasil hacking sama dengan kunci privat yang telah diketahui. Hasil proses hack untuk dapat dilihat pada Gambar 4.8.

Gambar 4.8 Pengujian Hack Kunci ElGamal

Gambar

Tabel 2.1 Kode ASCII dari Plaintext
Tabel 2.3 Hasil Dekripsi dari Ciphertext
Gambar 3.2 Use case diagram.
Gambar 3.3. Diagram Aktivitas Bangkitkan Kunci
+7

Referensi

Dokumen terkait

semua kegiatan atau program yang telah direncanakan tersebut adalah ada... keterkaitan dan saling menunjang antara program satu dengan program

Begitu pula dengan hasil penelitian yang dilakukan oleh Zeinabadi dan Salehi (2011) yang menunjukkan bahwa keadilan organisasi memiliki pengaruh terhadap

Dari hasil pengujian hipotesis yang diajukan ternyata hasil belajar siswa dengan menggunakan Model Pembelajaran Think Pair Share lebih baik dibandingkan dengan

Penelitian ini bermanfaat untuk mencari obat yang yang lebih efektif dalam mengurangi nyeri tenggorok dan suara serak akibat dari pemasangan pipa nafas selama operasi.. Adapun

Tabel 5 menunjukkan bahwa setelah diberikan penyuluhan tentang deteksi dini kanker payudara, pada kelompok kontrol tidak ada yang memiliki perilaku yang menurun ( negative

3 Tahun adalah kesatuan masyarakat hukum adat di Provinsi Bali yang mempunyai satu kesatuan tradisi dan tata krama pergaulan hidup masyarakat umat Hindu secara turun-temurun

Penelitian ini telah mengukur tekanan darah pada penderita hipertensi di PSTW unit Abiyoso tahun 2012 yang diadakan pada kelompok eksperimen yang diberikan jus tomat selama 7

Korelasi antara antara pH tanah, C-organik tanah, dan N-total tanah dengan respirasi tanah akibat pemberian kombinasi biomassa azolla dan pupuk urea