Implementasi Hybrid Cryptosystem dengan Algoritma One Time Pad dan Algoritma Rabin Cryptosystem dalam Pengamanan Data Teks

(1)

TIME PAD DAN ALGORITMA RABIN CRYPTOSYSTEM DALAM PENGAMANAN DATA TEKS

DRAFT SKRIPSI

ALFRID ISKANDAR RAMADHANY PANGGABEAN 101401005

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2015


(2)

TIME PAD DAN ALGORITMA RABIN CRYPTOSYSTEM DALAM PENGAMANAN DATA TEKS

SKRIPSI

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

ALFRID ISKANDAR RAMADHANY PANGGABEAN 101401005

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2015


(3)

PERSETUJUAN

Judul : IMPLEMENTASI HYBRID CRYPTOSYSTEM DENGAN ALGORITMA ONE TIME PAD DAN ALGORITMA RABIN CRYPTOSYSTEM DALAM PENGAMANAN DATA TEKS

Kategori : SKRIPSI

Nama : ALFRID ISKANDAR R PANGGABEAN

Nomor Induk Mahasiswa : 101401005

Program Studi : SARJANA(S1) ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI (Fasilkom-TI)

Diluluskan di Medan, Juli 2015

Komisi Pembimbing:

Dosen Pembimbing II Dosen Pembimbing I

Handrizal, S.Si, M.Comp.Sc Dr. Poltak Sihombing, M.Kom

NIP. NIP. 1962 0317 1991 0310 01

Diketahui/Disetujui oleh

Program Studi S1 IlmuKomputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 1962 0317 1991 0210 01


(4)

PERNYATAAN

IMPLEMENTASI HYBRID CRYPTOSYSTEM DENGAN ALGORITMA ONE TIME PAD DAN ALGORITMA RABIN CRYPTOSYSTEM DALAM

PENGAMANAN DATA TEKS. SKRIPSI

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

Medan, Juli 2015

Alfrid Iskandar R.Panggabean 1014010005


(5)

UCAPAN TERIMA KASIH

Alhamdulillah. Puji dan syukur kehadirat Allah SWT yang dengan 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.

Pada pengerjaan skripsi dengan judul ImplementasiHybrid Cryptosystem dengan algoritma One Time Pad dan algoritma Rabin Cryptosystem dalam Pengamanan Data Teks, penulis menyadari bahwa banyakpihak yang turut membantu, baik dari pihak keluarga, sahabat dan orang-orang terkasih yang memotivasi dalam pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:

Ucapan terima kasih penulis sampaikan kepada:

1. Bapak Prof. Drs. Subhilhar, M.A., Ph.D.selaku Plt. Rektor Universitas Sumatera Utara.

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

3. Bapak Dr. Poltak Sihombing, M.Kom. selaku Ketua Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara dan selaku Dosen Pembimbing I dan Dosen Pembimbing akademik yang telah memberikan bimbingan, dukungan dan saran dalam penyempurnaan skripsi ini.

4. Ibu Maya Silvi Lydia, B.Sc, M.Sc. selaku Sekretaris Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara dan selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam dalam penyempurnaan skripsi ini. 5. Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembimbing II yang telah

memberikan bimbingan dan dukungan kepada penulis.

6. Ibu Dian Rachmawati, S.Si., M.Kom. selaku Dosen Pembanding II yang telah memberikan kritik dan sarannya bagi dalam penyempurnaan skripsi ini.


(6)

7. Bapak M.Andri Budiman, S.T., M.Comp.Sc., M.E.M. yang telah meluangkan waktunya untuk mendengarkan keluh kesah dan memberikan motivasi kepada penulis.

8. Yang tercinta dan teristimewa, Ayahanda Parlindungan Panggabean dan Ibunda Nelmiati Lubis, serta Kakak, Abang dan Adikku tersayang Masitah Ermita Panggabean A.Md, Kemri Harahap, dan Neva Alfnita Panggabean yang selalu memberikan semangat buat penulis

9. Bou Tiurma Ida Panggabean dan Uda Dino Hasiolan Panggabean yang memberikan dukungan dan semangat buat penulis.

10. Seluruh tenaga pengajar dan pegawai pada Fakultas Ilmu Komputer dan Teknologi InformasiUSU, terkhususnya di Program Studi S-1 Ilmu Komputer. 11. Sahabat seperjuangan yang telah memberikan dukungan, bantuan dan semangat

yang luar biasa serta menjadi teman berbagi suka maupun duka terutama kepada Ramadan Hasibuan, Akmal Fakhrudin Kahar, Ardian Hasibuan dan Dedi Aditya Nugeroho.

12. Sahabat Macho yang sangat luar biasa memberikan semangat dan menjadi tempat berbagi suka dan duka yang senantiasa mengerjakan skripsi bersama terutama Hayatun Nufus, S. Kom, Aditya Prawira, S.Kom, Umri Erdiansyah, S.Kom, Reni Rahmadani, S.Kom, Novri Pramana, S.Kom, Dwi Rizki Ananda, S.Kom dan Ahmad Rasyidi, S.Kom.

13. Teman-teman yang saling mendukung, khususnya Aulia Akbar Harahap S.Kom, Suhaili Hamdi, Nurhennida br. Sitepu, S.Kom, Azizah Mei Sari, S.Kom dan seluruh teman-teman stambuk 2010

14. Adik-adik 2011 yang memberikan bantuan, dukungan dan semangat buat penulis dalam menulis skripsi terkhusus Agung Putu Yoga, Farid Akbar Siregar, Ahmad Rifai, Abidah Novita, Nurhayati Lubis, Ruth Meylina Manik, Edwin Ricardo Manik, Hari Rahman Nihe, dan Abdussubhi Afif .

15. Rekan-rekan pengurus IMILKOM (Ikatan Mahasiswa S1 Ilmu Komputer) Fasilkom-TI 2013-2014 yang telah memberikan banyak dukungan dan menjadi tempat saya menimba ilmu dan menambah pengalaman dalam berorganisasi serta menjadi suatu wadah yang sangat luar biasa untuk setiap mahasiswanya yang berbeda, karena kita friendly but different


(7)

16. Semua pihak yang terlibat langsung atau tidak langsung yang penulis tidak dapat tuliskan satu per satu.

Semoga Allah SWT melimpahkan berkahkepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.

Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, penulis mengharapkan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya..

Medan, Juli 2015


(8)

ABSTRAK

Semakin berkembangnya teknologi, keamanan suatu data sangat penting untuk dijaga. Ada beberapa cara dan teknik yang digunakan untuk menjaga kerahasian data, yaitu Kriptografi dimana pesan disamarkan menjadi sandi. Metode Hybrid adalah salah satu metode yang digunakan didalam Kriptografi. Dimana metode ini menggabungkan algoritma simetri dan algoritma asimetri untuk mengamankan pesan yang akan dikirim. Algoritma One Time Pad digunakan untuk mengamankan pesan data teks dan Algoritma Rabin untuk mengamankan kunci dari pesan yang telah dienkripsi. Pesan yang bisa diinput untuk enkripsi pesan berupa *.txt dan *.doc. Jumlah nilai karakter setelah dienkripsi akan semakin besar dan akan kembali seperti semula setelah didekripsi karena dirubah ke dalam bentuk ASCII. Penggunaan autodekripsi cukup membantu untuk menentukan hasil dekripsi yang benar dari keempat hasil dekripsi pada proses dekripsi algoritma Rabin. Namun, jika nilai plaintext yang benar bukan nilai terkecil dari keempat hasil dekripsi, maka penggunaan autodekripsi akan menghasilkan

plaintext yang keliru. Waktu rata-rata enkripsi selama 2,727 detik sedangkan waktu rata rata dekripsi selama 1,267 detik.

Kata kunci: Kriptografi, Hybrid, One Time Pad, Rabin, Cryptosystem, Keamanan Data.


(9)

IMPLEMENTATION OF HYBIRD CRYPTOSYSTEM WITH ONE TIME PAD AND RABIN CRYPTOSYSTEM IN SECURING TEXT DATA

ABSTRACT

The continued development of technology, the security of the data is very important to be maintained. There are several ways and techniques that are used to maintain the confidentiality of data, namely Cryptography where the message disguised as a password. Hybrid method is one of the methods used in cryptography. Where this method combines symmetric algorithms and asymmetric algorithms to secure messages to be sent. One Time Pad algorithm used for securing data message text and Rabin algorithm to secure key from a message that has been encrypted. Messages can be inputted for encrypting messages in the form of * .txt and * .doc. The number of characters after the encrypted value will be greater and will return to normal after decrypted because converted into ASCII form. Autodekripsi use enough help to determine the correct decryption result of the fourth decryption result at the decryption process Rabin algorithm. However, if the value is not correct plaintext smallest value of the four results of decryption, then use autodekripsi will produce erroneous plaintext. The average time encryption for 2.727 seconds, while the average time decryption for 1.267 seconds.

Kata kunci: Cryptography, Hybrid, One Time Pad, Rabin, Cryptosystem, Security of Data.


(10)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vii

Abstract viii

Daftar Isi ix

Daftar Tabel xii

Daftar Gambar xiii

Bab I Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 1.6 Metode Penelitian 1.7 Sistematika Penelitian

3 4 5

Bab II Tinjauan Pustaka 6

2.1 Kriptografi 2.1.1 Terminologi

2.1.2 Komponen Kriptografi

6 6 7

2.2 Tujuan Kriptografi 8

2.3 Jenis-Jenis Algoritma Kriptografi 9

2.3.1 Algoritma Simetri 9

2.3.2 Algoritma Asimetri 10

2.3.3 Algoritma Kunci Publik 11

2.4 Kode Vigenere 12

2.4.1 Angka 2.4.2 Huruf

2.5 Algoritma One Time Pad

2.6 Greatest Common Divisor (GCD) 2.7 Aritmatika Modulo

2.8 Relatif Prima

2.9 Persamaaan Diophantine Linier 2.10 Extended Euclidean

2.11 Bilangan Prima

2.12 Chinese Remainder Theorem 2.13 Algoritma Rabin

2.13.1 Pembangkit Kunci 2.13.2 Proses Enkripsi

12 13 14 16 17 17 17 18 18 18 19 22 22 22


(11)

2.13.3 Proses Dekripsi 2.14 Penelitian yang Relevan

23 23 25

Bab III Analisis Dan PerancanganSistem 26

3.1 Analisis Sistem 26

3.1.1 Analisis Masalah 26

3.1.2 Analisis Kebutuhan 27

3.1.2.1 Kebutuhan Fungsional Sistem 27 3.1.2.2 Kebutuhan Non-Fungsional Sistem 28

3.1.3 Analisis Proses 29

3.2 Pemodelan 29

3.2.1 Use Case Diagram 30

3.2.2 Sequence Diagram

3.2.3 Activity Diagram

33 34 3.3 Flowchart Sistem

3.3.1 Flowchart Enkripsi Pesan 3.3.2 Flowchart Enkripsi Kunci 3.3.3 Flowchart Dekripsi Pesan

35 36 37 38 3.4 Pseudocode Sistem

3.4.1 Pseudocode Enkripsi Pesan 3.4.2 Pseudocode Enkripsi Kunci Pesan

39 39 39 3.4.3 Pseudocode Pembangkit Kunci

3.4.4 Pseudocode Dekripsi Kunci Pesan 3.4.5 Pseudocode Dekripsi Pesan

40 40 42 3.5 Perancangan Antarmuka

3.5.1 Form Utama dan Home 3.5.2 Form Pengirim

3.5.3 Form Penerima

3.5.4 Form PembangkitKunci

42 42 43 44 45

Bab IV Implementasi dan Pengujian Sistem 47

4.1 Implementasi Sistem 47

4.1.1 Tampilan Antarmuka Sistem 47

4.1.1.1 Form Utama dan Home 48

4.1.1.2 Form Pengirim 48

4.1.1.3 Form Penerima 49

4.1.1.4 Form Pembangkit Kunci 50

4.2 Pengujian Sistem 51

4.2.1 Skenario Pembangkitan Kunci 4.2.2 Skenario Enkripsi

4.2.3 Skenario Enkripsi Kunci Pesan 4.2.4 Skenario Dekripsi Kunci Pesan. 4.2.5 Skenario Dekripsi Pesan

4.2.6 Pengujian Enkripsi Pesan 4.2.7 Pengujian Dekripsi Pesan

51 53 54 55 58 59 60


(12)

Bab V Kesimpulan dan Saran 63

5.1 Kesimpulan 64

5.2 Saran 64


(13)

DAFTAR TABEL

Nomor Tabel

NamaTabel Halaman

2.1 2.2 3.1 3.2 3.3 4.1 4.2

4.3 4.4 4.5

Vigenere Angka Vigenere Ciphertext

Narrative Use Case Enkripsi Pesan Narrative Use Case Dekripsi Pesan Narrative Use Case Pembangkit Kunci SpesifikasiKebutuhanPerangka tKeras

Penyelesaian Extended Euclidean pada skenario dekripsi Kunci pesan.

Hasil Pengujian Enkripsi dengan Variasi Panjang Plaintext

Hasil Pengujian Dekripsi dengan Variasi Panjang Plaintext

PerbandinganWaktu Enkripsi dan Dekripsi Pesan

12 13 31 32 32 47 56

60 61 62


(14)

DAFTAR GAMBAR

Nomor Gambar

NamaGambar Halaman

2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12

Skema Proses Enkripsi dan Dekripsi Skema Kriptografi Simetris

Skema Kriptografi Asimetris Diagram Ishikawa

Use Case Diagram

Diagram Sequence untuk Bangkit Kunci Diagram Sequence untuk Enkripsi Diagram Sequence untuk Dekripsi Activity Diagram

Flowchart Enkripsi Pesan Flowchart Enkripsi Kunci Flowchart DekripsiPesan

Rancangan Tampilan Form Utama Rancangan Form Pengirim

Rancangan Form Penerima

Rancangan Form Pembangkit Kunci Antarmuka Form Utama

Antarmuka Form Pengirim Antarmuka Form Penerima

Antarmuka Form Pembangkit Kunci

Pengujian Sistem dengan Skenario Pembangkit Kunci Pengujian Skenario dengan Enkripsi

PengujianSkenario dengan Enkripsi Kunci Pesan Pengujian Skenario dengan Dekripsi Kunci Pesan Pengujian Skenario dengan Dekripsi Pesan Grafik Pengujian Enkripsi Pesan

Grafik Pengujian Enkripsi Pesan

Grafik Pererbandingan Enkripsi dan Dekripsi Pesan

7 10 10 27 30 33 33 34 35 36 37 38 42 43 44 46 47 48 49 51 52 53 54 55 58 60 61 62


(15)

DAFTAR LAMPIRAN

A.Listing Program 67


(16)

ABSTRAK

Semakin berkembangnya teknologi, keamanan suatu data sangat penting untuk dijaga. Ada beberapa cara dan teknik yang digunakan untuk menjaga kerahasian data, yaitu Kriptografi dimana pesan disamarkan menjadi sandi. Metode Hybrid adalah salah satu metode yang digunakan didalam Kriptografi. Dimana metode ini menggabungkan algoritma simetri dan algoritma asimetri untuk mengamankan pesan yang akan dikirim. Algoritma One Time Pad digunakan untuk mengamankan pesan data teks dan Algoritma Rabin untuk mengamankan kunci dari pesan yang telah dienkripsi. Pesan yang bisa diinput untuk enkripsi pesan berupa *.txt dan *.doc. Jumlah nilai karakter setelah dienkripsi akan semakin besar dan akan kembali seperti semula setelah didekripsi karena dirubah ke dalam bentuk ASCII. Penggunaan autodekripsi cukup membantu untuk menentukan hasil dekripsi yang benar dari keempat hasil dekripsi pada proses dekripsi algoritma Rabin. Namun, jika nilai plaintext yang benar bukan nilai terkecil dari keempat hasil dekripsi, maka penggunaan autodekripsi akan menghasilkan plaintext yang keliru. Waktu rata-rata enkripsi selama 2,727 detik sedangkan waktu rata rata dekripsi selama 1,267 detik.

Kata kunci: Kriptografi, Hybrid, One Time Pad, Rabin, Cryptosystem, Keamanan Data.


(17)

IMPLEMENTATION OF HYBIRD CRYPTOSYSTEM WITH ONE TIME PAD AND RABIN CRYPTOSYSTEM IN SECURING TEXT DATA

ABSTRACT

The continued development of technology, the security of the data is very important to be maintained. There are several ways and techniques that are used to maintain the confidentiality of data, namely Cryptography where the message disguised as a password. Hybrid method is one of the methods used in cryptography. Where this method combines symmetric algorithms and asymmetric algorithms to secure messages to be sent. One Time Pad algorithm used for securing data message text and Rabin algorithm to secure key from a message that has been encrypted. Messages can be inputted for encrypting messages in the form of * .txt and * .doc. The number of characters after the encrypted value will be greater and will return to normal after decrypted because converted into ASCII form. Autodekripsi use enough help to determine the correct decryption result of the fourth decryption result at the decryption process Rabin algorithm. However, if the value is not correct plaintext smallest value of the four results of decryption, then use autodekripsi will produce erroneous plaintext. The average time encryption for 2.727 seconds, while the average time decryption for 1.267 seconds.

Kata kunci: Cryptography, Hybrid, One Time Pad, Rabin, Cryptosystem, Security of Data.


(18)

Bab ini akan menjelaskan mengenai latar belakang penilitian judul skripsi

“Implementasi Hybrid Cryptosystem dengan menggunakan Algoritma One Time Pad

dan Algoritma Rabin Cryptosystem dalam Pengamanan data teks”. Rumusan masalah,

batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, tinjauan pustaka,dan sistematika penulisan skripsi.

1.1. Latar Belakang

Berkomunikasi satu sama lain merupakan salah satu sifat dasar manusia. Komunikasi berfungsi sebagai sarana untuk saling berinteraksi satu sama lain. Cara manusia berkomunikasi dari zaman dahulu sampai sekarang terus mengalami perkembangan. Salah satu sarana komunikasi adalah melalui tulisan. Tulisan berfungsi untuk menyampaikan pesan kepada pembacanya. Pesan tersebut dapat berisi suatu informasi yang bersifat rahasia didalamnya. Bila pesan dikirim secara langsung tanpa ada perantara dari sipengirim ke sipenerima maka keamanan keaslian atau keutuhan pesan tersebut dapat dijamin. Namun bila pesan itu dikirim dengan adanya perantara diantara pengirim dan penerima,maka ada kemungkinan pesan itu disadap oleh pihak-pihak yang tidak bertanggung jawab, dimana isi dari pesan tersebut bisa diketahui oleh pihak yang tidak berwenang dan mengalami perubahan sebelum sampai ke penerima.

Ada beberapa cara dan teknik yang digunakan untuk menjaga keamanan kerahasian dari sebuah pesan yang dikirim. Salah satunya adalah kriptografi dimana pesan disamarkan menjadi pesan tersandi. Algoritma kriptografi terbagi atas dua jenis algoritma yaitu algoritma simetri dan asimetri. Algoritma simetris adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi. Sebelum mengirim pesan, pengirim dan penerima pesan harus memiliki kunci yang sama untuk digunakan bersama, dan kunci itu harus lah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini sering disebut juga dengan algoritma kunci rahasia. Algoritma asimetris adalah algoritma dimana kunci yang digunakan untuk


(19)

proses enkripsi dan dekripsi tidak lah sama. Pada algoritma ini menggunakan kunci publik dan kunci privat.

One Time Pad adalah salah satu jenis dari algoritma simetris, One Time Pad

algoritma yang sempurna dan tidak dapat dipecahkan sehingga diberi gelar

Unbreakble Chiper(Munir,2006). Algoritma ini menggunakan satu kunci untuk satu pesan dan untuk pesan berikutnya dilakukan proses pengacakan. Tetapi algoritma ini memiliki kelemahan yaitu kunci yang digunakan harus benar benar acak dan panjang kunci harus sama dengan panjang pesan(Prameswara, 2012).

Rabin Public Key adalah salah satu dari algoritma asimetris yang memiliki kunci publik dan kunci privat.Fungsi dasar dari algoritma ini hampir sama dengan fungsi dasar dari algoritma RSA. Hanya saja komputasi dari algoritma Rabin lebih sederhana dari algoritma RSA. Karena kesederhanaan nya maka serangan untuk algoritma ini pun lebih banyak (Wandani, 2012).

Dengan melihat dua jenis algoritma diatas, dengan berdasarkan kelebihan dan kekurangan dari dua jenis algoritma tersebut maka penulis dengan ini melakukan

tekhnik Hybrid Cryptosystem dari kedua algoritma tersebut untuk pengamanan dan

penyandian pesan. Algoritma simetris berfungsi untuk mengenkripsikan pesan

plainteks menjadi pesan cipherteks sedangkan algoritma asimetris berfungsi untuk

mengenkripsikan plainkey menjadi cipherkey

Berdasarkan latar belakang yang telah penulis uraikan diatas, maka dilakukan

penelitian dengan judul “Implementasi Algoritma One Time Pad dengan Algoritma

Rabin Key dalam Pengamanan Data Teks”. 1.2. Rumusan Masalah

Berdasarkan latar belakang yang telah penulis uraikan, rumusan masalah yang ada

pada penelitian ini: ”Bagaimana teknik Hybrid Cryptosystem dengan algoritma One

Time Pad dan Rabin dilakukan agar dapat menjamin keamanan pesan dan kunci yang akan dikirim dalam pengamanan data teks.


(20)

1) Penelitian ini hanya membahas teknik pengamanan data teks dengan algoritma

One Time Pad serta Algoritma Rabin Cryptosystem sebagai pengaman kunci.

2) Data yang di input berupa karakter dalam ASCII 8 bit dalam bentuk file doc*

dan txt*.

3) Panjang pesan maksimal yang dapat diinput sebanyak 32.691 karakter

4) Pengujian bilangan prima menggunakan Metode Fermat.

5) Penelitian ini tidak membahas pendistribusian kunci dan penyerangan data

1.4 TujuanPenelitian

Tujuan penelitian ini antara lain:

1) Menerapkan suatu sistem keamanan dengan algoritma One Time Pad pada

data teks dan file dengan algoritma Rabin sebagai pengaman kunci dari hasil

algoritma One Time Pad.

2) Membangun dan merancang suatu aplikasi yang dapat digunakan untuk

mengenkripsi dan mendekripsi data teks serta mengamankan kunci yang digunakan.

1.5 Manfaat Penelitian

1) Menambah pengetahuan penulis dalam melakukan proses enkripsi dan dekripsi

suatu pesan teks dengan menggunakan algoritma One Time Pad dan algoritma

Rabin.

2) Penelitian ini diharapkan dapat bermanfaat untuk meningkatkan keamanan

dokumen yang bersifat rahasia.

3) Sebagai bahan refrensi bagi peneliti lain yang ingin membahas topik yang

terkait dengan penelitian ini.

4) Membangun dan merancang aplikasi sistem keamanan dalam pengiriman data


(21)

1.6 Metodologi Penelitian

1) Studi Literatur

Pada tahap ini dilakukan peninjauan terhadap buku-buku, artikel-artikel, jurnal-jurnal maupun hasil penelitian terdahulu yang terkait dengan

algoritma One Time Pad, dan algoritma Rabin Cryptosystem.

2) Analisis dan Perancangan

Dengan adanya rumusan dan batasan masalah, permasalahan dan kebutuhan

dianalisis disertai pembuatan flowchart, pseudocode, diagram use case,

perancangan antarmuka dan perancangan dari aplikasi.

3) Implementasi

Dilakukan implementasi algoritma One Time Pad dikombinasikan dengan

Rabin Cryptosystem dengan pencarian sekuensial dalam bentuk aplikasi

sistem keamanan data pesan teks sesuai dengan analisis dan perancangan yang telah dilakukan sebelumnya.

4) Pengujian

Menguji apakah aplikasi yang telah dibuat berhasil berjalan sesuai dengan

keinginan dan melakukan perbaikkan jika masih terdapat error pada

aplikasi.

5) Dokumentasi

Selama penelitian berlangsung hingga penelitian berakhir dilakukan pendokumentasian dalam bentuk laporan penelitian (skripsi).


(22)

1.7 SistematikaPenulisan

Agar pembahasan lebih sistematis, maka tulisan inidibuat dalam lima bab, yaitu :

BAB 1 PENDAHULUAN

Bab ini akan menjelaskan mengenai latar belakang penilitian judul

skripsi “Implementasi Hybird Cryptosystem dengan menggunakan

Algoritma One Time Pad dan Algoritma Rabin Cryptosystem dalam

Pengamanan Data Teks”. Rumusan masalah, batasan masalah, tujuan

penelitian, manfaat penelitian, metode penelitian, tinjauan pustaka,dan sistematika penulisan skripsi.

BAB 2 LANDASAN TEORI

Berisi tentang pembahasan teori-teori tentang Kriptografi algoritma

One Time Pad dan Rabin Cryptosystem.

BAB 3 ANALISIS DAN PERANCANGAN

Berisi tentang uraian analisis mengenai proses kerja dari metode One

Time Pad dan Rabin Cryptosystem yang terdiri dari flowchart, pseudocode, Unified Modeling Language(UML) serta perancangan dari aplikasi.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Pada tahap ini dilakukan pembuatan sistem dan coding sesuai dengan

analisis dan perancangan.Kemudian melakukan pengujian sistem.

BAB 5 KESIMPULAN DAN SARAN

Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian dari bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam pengembangan selanjutnya.


(23)

Bab II ini berisi tentang pembahasan teori-teori tentang Kriptografi algoritma One Time Pad dan Rabin Cryptosystem

2.1. Kriptografi

Kata Cryptography berasal dari bahasa Yunani yang artinya secret writing. Kriptografi adalah suatu praktek dan ilmu dari teknik untuk komunikasi yang aman dimana adanya kehadiran dari pihak ketiga. Menurut Terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan akan dikirim dari suatu tempat ke tempat yang lain (Ariyus, 2008).

Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2010).

2.1.1 Terminologi

Ketika seorang pengirim ingin mengirimkan suatu pesan kepada si penerima. Dimana si pengirim ingin pesan yang disampaikannya tidak dapat dibaca oleh orang lain yang ingin melakukan penyadapan. Proses menyamarkan pesan sedemikian rupa untuk menyembunyikan substansinya disebut enkripsi. Sebuah pesan yang dienkripsi disebut ciphertext. Proses untuk mengubah ciphertext kembali ke plaintext adalah dekripsi. Pada standar ISO 7498-2 menggunakan istilah encipher untuk proses enkripsi dan decipher untuk proses dekripsi. Skema rangkaian proses enkripsi dan dekripsi ditunjukkan secara umum pada Gambar 2.1. (Schneier, 1996).

Seni dan ilmu untuk menjaga keamanan pesan disebut kriptografi dan pelakunya adalah kriptografer. Kriptanalis adalah yang melakukan kriptanalisis, yaitu seni dan ilmu untuk memecahkan pesan tersembunyi (ciphertext). Cabang matematika yang meliputi kriptografi dan kriptanalisis adalah kriptologi dan praktisinya disebut kriptologis (Schneier, 1996). Skema proses enkripsi dan dekripsi dapat dilihat pada


(24)

Gambar 2.1. Skema ProsesEnkripsi dan Dekripsi(Schneier, 1996)

2.1.2. Komponen Kriptografi

Dalam kriptografi terdapat beberapa istilah penting antara lain : 1) Pesan, Plainteks, dan Cipherteks

Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks (plaintext). Pesan dapat berupa data atau informasi yang dikirim atau yang disimpan dalam media penyimpanan. Pesan yang tersimpan bisa berbentuk teks, citra (image), suara/bunyi (audio) dan video. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain maka, pesan dapat disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut cipherteks (ciphertext).

2) Pengirim dan Penerima

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitasnya yang lain. Penerima (receiver) adalah entitas yang menerima pesan.Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya.

3) Enkripsi dan Dekripsi

Proses menyandikan pesan asli (plainteks) menjadi pesan tersandi (cipherteks) disebut enkripsi (encryption) sedangkan proses untuk mengembalikan pesan tersandi (cipherteks) menjadi plainteks semula dinamakan dekripsi (decryption).

4) Cipher dan Kunci

Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Keamanan algoritma kriptografi sering diukur dari banyaknya kerja (work) yang dibutuhkan untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Kunci (key) merupakan parameter yang digunakan untuk

Enkripsi Dekripsi


(25)

transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan.

5) Sistem Kriptografi

Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi.Sistem kriptografi (cryptosystem) terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci.

6) Penyadap (eavesdropper)

Penyadap merupakan orang yang mencoba menangkap pesan selama ditransmisikan.Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptogafi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks. Nama lain penyadap adalah enemy, adversary, intruder, interceptor, bad guy.

7) Kriptanalisis

Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis.Menurut (Schneier,1996) mengatakan bahwa kriptanalisis (crytanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis.

2.2. Tujuan Kriptografi

Kriptografi bertujuan untuk memberikan layanan keamanan(Paar & Pelzl, 2010)sebagai berikut:

1) Kerahasian (Confidentiality)

Informasi dirahasiakan dari semua pihak yang tidak berwenang.

2) Keutuhan Data (Integrity)

Pesan tidak berubah dalam proses pengiriman hingga pesan diterima oleh penerima.


(26)

3) Autentikasi (Anthentication)

Kepastian terhadap identitas setiap entitas yang terlibat dan keaslian sumber data.

4) Nirpenyangkalan(Nonrepudiation)

Setiap entitas yang berkomunikasi tidak dapat menolak atau menyangkal atas data yang telah dikirim atau diterima.

.

2.3. Jenis-Jenis Algoritma Kriptografi

Algoritma Kriptografi dibagi tiga berdasarkan kunci yang dipakai, yaitu algoritma simetri (menggunakan satu kunci untuk proses enkripsi dan dekripsi), algoritma asimetri (menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi), dan fungsi hash (Sadikin, 2012).

Karakteristik kriptografi dibagi dua berdasarkan tipe operasi yang dipakai untuk enkripsi dan dekripsi (teknik substitusi dan teknik permutasi) serta berdasarkan tipe pengolahan pesan (block cipher dan stream cipher)(Ariyus, 2008).

2.3.1 Algoritma Simetris

Algoritma simetris adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya (Wandani, 2012). Algoritma simetris sering juga disebut sebagai algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci. Bila mengirim pesan dengan algoritma ini, si penerima pesan harus diberitahu kunci dari pesan tersebut agar bisa mendekripsikan pesan yang dikirim. Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci.

Jika kunci tersebut diketahui oleh orang lain maka orang tersebut dapat melakukan enkripsi dan dekripsi pada pesan (Sadikin, 2012). Yang termasuk algoritma kunci simetris adalah OTP, DES, RC2, RC4, RC5, IDEA, Twofish, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi dan lain-lainnya.Skema kriptografi simetris dapat dilihat pada Gambar 2.2.


(27)

Gambar2.2. Skema Kriptografi Simetris (Fauzana, 2013)

2.3.2 Algoritma Asimetris

Algoritma asimetris disebut juga dengan kriptografi kunci publik karena algortima ini memiliki kunci yang berbeda untuk enkripsi dan dekripsi, dimana enkripsi menggunakan public key dan untuk dekripsinya menggunakan private key. Public key dan private key harus saling berpasangan secara matematis. Dengan memberikan public key, pembuat kunci berhak memberikan dan mendapatkan public key agar pesan aman dan hanya bisa dibaca oleh si pembuat kunci. Dalam kriptografi kunci asimetri, hampir semua algoritma kriptografinya menggunakan konsep kunci publik, seperti Rivest-Shamir-Adleman (RSA), El-Gamal, Rabin dan sebagainya (Harahap, 2014). Kecuali algoritma Pohlig˗Hellman karena kunci enkripsi maupun kunci dekripsinya bersifat rahasia. Skema kriptografi asimetris dapat dilihat pada Gambar 2.3.

Kunci Kunci

Publik Rahasia

Gambar 2.3. Kriptografi Asimetris (Wandani, 2012). Algoritma

Enkripsi

Algoritma Dekripsi

Kunci Rahasia

Teks Asli Ciphertext Teks Asli

Enkripsi Dekripsi


(28)

2.3.3 Algoritma Kunci Publik

Algoritma kunci publik termasuk juga kedalam algoritma asimetris, dan cara kerja dari algoritma ini hampir sama dengan gembok. Misalnya terdapat sebuah pesan di dalam peti lalu peti tersebut dikunci dengan gembok dan gembok ini dapat dimiliki oleh semua orang (gembok bekerja seperti public key). Peti terkunci tersebut kemudian dikirim ke tujuan atau penerima yang memiliki kunci untuk membuka gembok. Penerima dapat membuka gembok tersebut apabila sipenerima memiliki pasangan kunci dari gembok tersebut. Kunci yang dipegang oleh penerima bekerja seperti private key (Sadikin, 2012).

Algoritma kriptografi kunci publik memiliki dua kunci yang berbeda untuk proses enkripsi dan dekripsi. Untuk melakukan proses enkripsi kunci publik(KPublik) bersifat tidak rahasia sehingga dapat didistribusikan melalui saluran tidak aman. Sedangkan untuk kunci dekripsi disebut juga kunci privat � ���� bersifat rahasia dan harus dijaga kerahasiaannya oleh pemegang kunci. Berikut ini adalah algoritma sistem kriptografi kunci publik (Sadikin, 2012).

• Sebelum A melakukan enkripsi, B membangkitkan sepasang kunci yaitu kunci privat dan kunci publik milik B dengan memanggil fungsi PembangkitKunci().

(KPublik, KPrivat) PembangkitKunci()

B memublikasikan kunci publik (KPublik) dan menjaga kerahasiaan kunci privat (KPrivat).

• A melakukan enkripsi sebuah teks asli (P) dengan kunci publik B (KPublik) menghasilkan sebuah teks sandi (C) dengan memanggil fungsi enkripsi (E).

CE(KPublik, P)

A mengirim teks sandi (C) ke B melalui saluran tidak aman.

• B mendekripsi teks sandi (C) dengan kunci privat B (KPrivat) untuk mendapatkan teks asli (P) dengan fungsi dekripsi (D).


(29)

B mendapatkan P jika teks sandi (C) dienkripsi dengan kunci publik B yang sesuai.

Jadi dalam kriptografi kunci publik, kunci publik dapat disebar-luaskan kepada umum dan sebaiknya disebar luaskan. Sebaliknya, kunci privat harus dirahasiakan oleh pemiliknya. Perlu untuk diingat, biasanya algoritma tidak dirahasiakan, bahkan enkripsi yang mengandalkan kerahasiaan algoritma dianggap sesuatu yang tidak baik (Kromodimoeljo, 2010). Hal ini sesuai dengan prinsip Kerckhoff yaitu semua algoritma kriptografi harus publik, hanya kunci yang rahasia (Munir, 2006).

2.4. Kode Vigenere

Kode Vigenere termasuk kode abjad-majemuk (polyalphabetic substitution cipher). Dipublikasikan oleh diplomat Perancis, Blaise de Vigenere pada Abad 16, tahun 1586. Pada teknik subsitisusi Vigenere setiap teks-kode bisa memiliki banyak kemungkinan teks-asli. Teknik dari substitusi Vigenere bias dilakukan dengan dua cara, yaitu angka dan huruf (Ariyus, 2008).

2.4.1. Angka

Teknik subsitusi Vigenere dengan menggunakan angka dilakukan dengan menukarkan huruf dengan angka, hampir sama dengan kode geser. Daftar Vigenere Angka dapat dilihat pada Tabel 2.1.

Tabel 2.1. Vigenere Angka (Ariyus, 2008)

A B C D E F G H I J K L M N

0 1 2 3 4 5 6 7 8 9 10 11 12 13

O P Q R S T U V W X Y Z


(30)

Kunci dengan 6 huruf jika ditukar dengan angka akan menjadi K=(2,8,15,7,4,17), dan teks-aslinya “This is Cryptosystem is Not Secure”. Contoh Viginere Ciphertext dapat dilihat padada Tabel 2.2.

Tabel 2.2. Vigenere CipherText (Ariyus, 2008)

T H I S C R Y P T O S Y S T

19 7 8 18 2 17 24 15 19 14 18 24 18 19

2 8 15 7 4 17 2 8 15 7 4 17 2 8

21 15 23 25 6 8 0 23 8 21 22 15 20 1

E M I S N O T S E C U R E

4 12 8 18 13 14 19 18 4 2 20 17 4

15 7 4 17 2 8 15 7 4 17 2 8 15

19 19 12 9 15 22 8 25 8 19 22 25 19

Teks-asli : This cryptosystem is not secure

Kunci : (2,8,15,7,4,17)

Teks-Kode : VPXZGIAXIVWPUBTTMJPWIZITWZT

Untuk melakukan dekripsi juga dapat menggunakan kunci yang sama dengan modulo 26.

2.4.2. Huruf

Ide dasarnya adalah dengan menggunakan kode Kaisar, tetapi jumlah pergeseran hurufnya berbeda-beda untuk setiap periode beberapa huruf tertentu.Untuk mengenkripsi pesan dengan kode Vigenere digunakan tabula recta (disebut juga bujursangkar Vigenere.Tabula Recta digunakan untuk memperoleh teks-kode dengan


(31)

menggunakan kunci yang sudah ditentukan.Jika panjang kunci lebih pendek daripada panjang teks-asli maka penggunaan kunci diulang. Secara matematis enkripsi dengan kode Vigenere bias dinyatakan sebagai berikut:

E(pi)=V(pi , k(I mod m)) Dengan :

Pi = huruf ke- I dalam teks asli

Kn = huruf ke-n dalam kunci

m = panjang kunci, dan

V(x,y) = huruf yang tersimpan pada baris x dan kolom y pada tabula recta.

Contoh kode Vigenere adalah sebagai berikut:

Teks-asli : “KEAMANAN DATA MENGGUNAKAN CIPHER

VIGINERE”

Kunci : “KRIPTOGRAFI”

Dengan menggunakan algoritma kode Vigenere maka akan didapat teks-kode sebagai berikut :

UVIBTBGE DFBK WVVVZCTRKFV FZOTGSXHE HQZYMP (Ariyus, 2008).

2.5. Algoritma One Time Pad

Algoritma ini ditemukan pada tahun 1917 oleh Mayor Joseph Mauborgne dan Gilbert Vernam. Cipher ini termasuk ke dalam kelompok algoritma kriptografi simetri (Prameswara, 2013). One Time Pad berisi deretan karakter kunci yang dibangkitkan secara acak dan setiap kunci hanya bisa dipakai sekali pakai.

Pemilihan kunci harus secara acak agar tidak bisa diproduksi ulang dan membuat lawan tidak mudah memecahkannya(Ariyus, 2008).Panjang stream karakter kunci sama dengan panjang pesan. One Time Pad (pad = kertas bloknot) berisi barisan karakter-karakter kunci yang dibangkitkan secara acak. Satu pad hanya digunakan sekali (one time) saja untuk mengenkripsi pesan, setelah itu pad yang telah digunakan dihancurkan. Panjang kunci One Time Pad – panjang teks asli sehingga tidak ada


(32)

Aturan enkripsi yang digunakan persis sama seperti pada kode Vigenere. Bila diketahui teks –asli: “ONETIMEPAD”

Dengan kunci: “TBFRGFARM” Diasumsikan A= 0, B = 1, . . . , Z=25.

Maka akan didapat teks-kode : “IPKLPSFHGQ” yang mana diperoleh sebagai berikut: (O + T ) mod 26 = I

(N + B ) mod 26 = P (E + F ) mod 26 = K ( T + R ) mod 26 = L ( I + G ) mod 26 = P ( M + F ) mod 26 = S ( E + A ) mod 26 = F ( P + R ) mod 26 = H ( A + F ) mod 26 = G ( D + M ) mod 26 = Q

Sistem One Time Pad tidak dapat dipecahkan karena beberapa alasan:

1) Barisan kunci acak + teks asli yang tidak acak = teks kode yang seluruhnya acak.

2) Mendekripsi teks kode dengan beberapa kunci berbeda dapat menghasilkan teks asli yang bermakna sehingga kriptanalis tidak punya cara untuk menentukan teks asli mana yang benar.

Algoritma ini memiliki beberapa kelemahan.Yaitu kunci yang dipakai haruslah benar-benar acak. Menggunakan pseudorandom generator tidak dihitung, karena algoritma ini memiliki bagian yang tidak acak. Panjang kunci juga harus sama dengan panjang pesan, sehingga hanya cocok untuk pesan berukuran kecil. Selain itu, karena kunci dibangkitkan secara acak, maka ‘tidak mungkin’ pengirim dan penerima membangkitkan kunci yang sama secara simultan. Dan karena kerahasiaan kunci harus dijamin, maka perlu ada perlindungan selama pengiriman kunci.Oleh karena itu, algoritma ini hanya dapat digunakan jika tersedia saluran komunikasi kedua yang cukup aman untuk mengirim kunci (Prameswara, 2013)


(33)

2.6. Greatest Common Divisor (GCD)

Faktor persekutuan terbesar adalah elemen terbesar pada himpunan divisor dua bilangan integer. Dua bilangan dapat saja memiliki beberapa elemen divisor yang sama namun hanya satu yang terbesar (Sadikin, 2012). Misalnya, divisor 15 = { 1, 3, 5, 15 } dan divisor45 = { 1, 3, 5, 9, 15, 45 }, maka himpunan divisor kedua bilangan tersebut ialah { 1, 3, 5, 15 } dan yang terbesar ialah 15. Dengan kata lain, faktor persekutuan terbesar 15 dan 45 dapat dinotasikan sebagai GCD(15, 45) = 15 (Fauzana, 2013).

Dalam notasi matematika, faktor persekutuan terbesar d dari dua bilangan integer a dan b, di mana keduanya tidak sama dengan nol, didefinisikan sebagai berikut (Welschenbach, 2005):

d = GCD(a,b) jika d> 0, maka d | a, d | b ... (2.1) (d | a dibaca d habis membagi a) dan jika terdapat bilangan d’,

di manad’ | a dan d’ | b, maka d’ | d ... (2.2) Sebagai contoh, telah diketahui GCD(15, 45) = 15. Pembuktian dari persamaan (2.1) dapat dilihat dari 15/15 = 1 dan 45/15 = 3. Hal ini dikarenakan 15 merupakan salah satu divisor dari 15 dan 45.

Berikut ini beberapa aturan yang berlaku dalam faktor persekutuan terbesar(Welschenbach, 2005).

1. GCD(a,b) = GCD(b,a) ... (2.3) 2. GCD(a,0) = |a| ... (2.4) 3. GCD(a,b,c) = GCD(a, GCD(b,c))... (2.5) 4. GCD(a,b) = GCD(-a,b) ... (2.6)

2.7. Aritmatika Modulo


(34)

adibagi dengan bilangan integer yang lebih besar dari nol(b> 0), maka akan menghasilkan sisa bagi r (remainder) dengan hasil bagi s (quotient). Sehingga dapat dinotasikan sebagai berikut (Lipschutz & Lipson, 2007).

amod m = r sedemikian sehingga a = mq + r, dengan 0 ≤ r < m………..(2.7)

Contoh :

23 mod 8 = 7, dimana 23 = (8*2) + 7

Jika a negatif, maka bagi |a| dengan b mendapatkan sisa bagi r’ (Munir, 2006). Sehingga didapatkan:

a mod b = br’, dimana r’ ≠ 0 dan a< 0……….(2.8) Sebagai contoh, jika |-41| mod 9 = 5, maka -41 mod 9 = 9 – 5 = 4.

Cormen, at al. (2009) menuliskan di dalam bukunya, untuk setiap bilangan bulat a dan setiap bilangan bulat positif b, nilai a mod b adalah sisa (residu) dari hasil bagi a / b: a mod b = a b (a/b), dimana 0 ≤a mod b<a……….(2.9)

Contohnya adalah 23 mod 4 = 23 – 4(23/4) = 23 – 4(5) = 23 – 20 = 3.

2.8. Relatif Prima

Bilangan bulat positif i (i> 1) disebut bilangan prima jika pembaginya 1 dan i (Cormen, at al. 2009).Seluruh bilangan prima adalah ganjil kecuali 2. Cara sederhana untuk menguji apakah i merupakan bilangan prima atau komposit adalah dengan membagi i dengan sejumlah bilangan prima, mulai dari 2 hingga bilangan prima yang lebih kecil atau sama dengan akar kuadrat dari i (2 ≤x≤ ). Jika i habis dibagi dengan salah satu dari bilangan prima tersebut, maka i adalah bilangan komposit dan jika tidak, maka i adalah prima (Munir, 2006).

Terdapat metode lain yang dapat digunakan untuk menguji keprimaan suatu bilangan bulat, beberapa diantaranya adalah Teori Fermat (dibaca “Fair-ma”) (Munir, 2006) dan Miller-Rabin.

Dua bilangan bulat a dan b dikatakan relatif prima jika GCD(a,b) = 1. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga


(35)

Bilangan-bilangan a1, a2, a3, …, an adalah relatif prima berpasangan (pairwise relatively prime) jika GCD(a1, a2, a3, …, an) = 1 (Cormen, et al. 2012). Contoh bilangan yang relatif prima adalah 11 dan 23.

2.9. Persamaan Diophantine linier

Jika terdapat bilangan bulat a, b, c, x, y dalam bentuk persamaan: ax + by = c,

dengan nilai a,b dan c yang diketahui, maka persamaan ini disebut sebagai persamaan Diophantine Linier (Mollin, 2008).

Jika nilai c pada persamaan Diophantine linier berikut ini, ax + by = c,

adalah merupakan nilai faktor persekutuan terbesar dari a dan b atau dengan kata lain c = GCD(a,b), maka persamaan tersebut disebut sebagai persamaan Diophantine linier dengan identitas Bézout (Rosen, 2012).

2.10. Extended Euclidean

Algoritma Euclid dapat dikembangkan (disebut dengan algoritma Extended Euclid) agar dapat menemukan dua integer x dan y yang unik selain nilai GCD(a,b) sehingga memenuhi relasi yang ditunjukkan oleh persamaan (2.11) (Lipschutz & Lipson, 2007).

a × x + b × y = GCD(a,b)………..(2.11)

2.11. Bilangan Prima

Bilangan prima adalah bilangan bulat positif a, dimana a ≥ 2 hanya dapat dibagi dengan 1 dan bilangan itu sendiri.Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap. Contoh bilangan prima adalah 2, 3, 5, 7, 11, 13, 17, ….

Ada dua jenis algoritma pengujian bilangan prima, yaitu bersifat deterministik dan (pasti) dan yang bersifat probabilistik(Sadikin, 2012).

Untuk menguji apakah n merupakan bilangan prima atau bukan, kita cukup membagi n dengan sejumlah bilangan prima, dengan syarat bilangan prima ≤ √n. Jika


(36)

n habis dibagi dengan salah satu dari bilangan prima tersebut, maka n bukan bilangan prima, tetapi jika n tidak habis dibagi oleh semua bilangan prima tersebut, maka n adalah bilangan prima(Wandani, 2012).

Metode lain yang bisa digunakan untuk melakukan pengujian bilangan prima adalah Teorema Fermat. Berikut pernyataan dari Teorema Fermat:

Jika p adalah sebuah bilangan prima dan a adalah bilangan integer positif yang tidak habis dibagi p maka(Sadikin, 2012):

� − 1 mod p...(2.12)

Kelemahan dari teorema fermat ini yaitu terdapat bilangan bulat yang bukan disebut bilangan prima semu (pseudoprimes). Bilangan bulat a yang menyebabkan ap–1 ≡ 1 (mod p), dimana p adalah bilangan prima semu disebut dengan bilangan Carmichael atau Fermat’s liar. Akan tetapi, bilangan prima semu relatif jarang ditemukan(Schneier, 1996).

Apakah p = 23 adalah bilangan prima?

1. Pilihlah sembarang bilangan bulat positif a dengan syarat 1<a<p.

2. Hitung� − mod p sebanyak dua kali untuk menghindari ditemukan bilangan prima semu. Jika salah satu hasil perhitungan tidak sama dengan 1, maka bilangan bulat p bukan bilangan prima.

322 mod 23 = 1 622 mod 23 = 1

Karena� − mod p ≠ 1, maka bilangan bulat p = 23 merupakan kemungkinan bilangan prima.

2.12. Chinese Remainder Theorem

Chinese Remainder Theorem (CRT) ditemukan oleh seorang matematikawan Cina bernama Sun-Tsu (juga disebut Sun Tse) sekitar 100 A.D (anno domini) atau 100 M (Stallings, 2011).Chinese Remainder Theorem (teorema sisa Cina), dinamai setelah masalah peninggalan Cina yang melibatkan sistem persamaan atau kekongruenan linear, menyatakan bahwa ketika modulus dari sistem kekongruenan linear yang


(37)

berpasangan relatif prima, ada solusi unik dari sistem modulo produk dari modulus. Berikut ini adalah pertanyaan atau teka-teki Sun-Tsu (Rosen, 2012).

“Ada beberapa hal yang bilangannnya tidak diketahui. Bila dibagi dengan 3, sisanya adalah 2, ketika dibagi oleh 5, sisanya adalah 3, dan ketika dibagi 7, sisanya adalah 2 Berapakah bilangan itu?”

Teka-teki tersebut dapat dituliskan sebagai berikut. Apa solusi dari sistem kekongruenan berikut ini:

x≡ 2 (mod 3) x≡ 3 (mod 5) x≡ 2 (mod 7)

Sebelum menyelesaikan teka-teki tersebut, berikut ini adalah teorema sisa Cina (Chinese Remainder Theorem) (Rosen, 2012).

Misalkan m1, m2, …,mn adalah bilangan bulat positif yang relatif prima berpasangan (pairwise relatively prime) yang lebih besar dari 1 dan a1, a2, …, an merupakan bilangan bulat sembarang. Maka sistem kekongruenan linear

xa1 (mod m1), xa2 (mod m2), xan (mod mn)

memiliki sebuah solusi unik modulo m = m1m2…mn. (Terdapat solusi x dengan 0 ≤x<m, dan semua solusi lainnya adalah kongruen modulo m untuk solusi ini).

Solusi dari penyelesaian teka-teki Sun-Tsu tersebut adalah sebagai berikut (Wandani, 2012).

Hitung hasil perkalian dari keseluruhan modulus. M = m1m2…mn

M = 3 × 5 × 7 = 105

1) Buat himpunan penyelesaian untuk masing-masing persamaan dari bilangan terkecil hingga hasil perkalian modulus (M).

x1 = {2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104}

x2 = {3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 73, 78, 83, 88, 93, 98, 103}


(38)

2) X merupakan irisan dari keseluruhan himpunan penyelesaian tersebut. X = x1 ∩ x2 ∩ … ∩ xn

X = x1 ∩ x2 ∩ x3 = 23

3) Agar tercapai seluruh bilangan yang memenuhi x, maka dihitung kelipatan persekutuan terkecil (Least Common Multiple) dari ketiga modulus (interval yang memenuhi x).

Berikut ini merupakan rumus untuk mencari LCM dari dua bilangan bulat positif (Rosen, 2012).

ab = GCD(a,b) . LCM(a, b)……….(2.13)

Dari persamaan 2.13 di atas dapat disimpulkan:

GCD(3,5,7) = 1 dan LCM(3,5,7) = 105………..(2.14)

Sehingga x memenuhi akan bilangan dalam interval 105 dimulai dari 23, yaitu x = 23 ± (k × 105). Atau interval ini dapat dituliskan:

x X ± (k × LCM(m1,m2, …,mn))

Cara yang dapat digunakan untuk menyelesaikan teka-teki Sun-Tsu menurut Rosen (2012) adalah sebagai berikut.

1. Hitung hasil perkalian dari keseluruhan modulus. M = m1m2…mn

M = 3 × 5 × 7 = 105

2. Hitung hasil bagi dari M dengan tiap-tiap modulus. Mn = M/mn

M1 = 105/3 = 35

M2 = 105/5 = 21 M3 = 105/7 = 15

3. Hitung invers modulo (yn) dari (Mn mod mn). Maka diperoleh:


(39)

4. Diperoleh solusi x dari teka-teki dengan menghitung rumus berikut ini. xa1M1y1 + a2M2y2 + … + anMnyn………(2.15) xa1M1y1 + a2M2y2 + a3M3y3 ≡ (2.35.2) + (3.21.1) + (2.15.1) x≡ 233 ≡ 23 (mod 105).

2.13. Algoritma Rabin

Algoritma Rabin Public Key adalah salah satu algoritma kriptografi asimetris yang menggunakan kunci publik dan kunci privat. Algoritma ini pertama kali diperkenal kan oleh Michael O. Rabin pada tahun 1979. Fungsi dasar dari algoritma ini hampir sama dengan algoritmaRivest Shamir Adleman(RSA). Hanya saja komputasinya lebih sederhana dibandingkan dengan RSA. Inilah yang membuat serangan terhadap algoritma ini menjadi lebih banyak, antara lain:

1) Chosen Ciphertext Attack

Penyerang menentukan ciphertext untuk didekripsikan, sehingga mengetahui bentuk plaintext hasil dekripsi.

2) Chosen – Plaintext Attack

Kriptanalis dapat menentukan plaintext untuk dienkripsikan, yaitu plaintext - plaintext yang lebih mengarahkan ke penemuan kunci(Wandani, 2012).

2.13.1. Pembangkit Kunci

Langkah yang pertama yang harus dilakukan didalam algoritma Rabin Public Key adalah pembangkitan kunci.

Berikut ini algoritma untuk proses pembangkitan kunci pada algoritma Rabin Public Key(Schneier, 1996).

• Pilih dua bilangan prima, p dan q, dimana keduanya kongruen terhadap 3 mod 4. Atau dengan kata lain, jika p dan q dimodulokan 4 akan menghasilkan 3.

pq≡ 3 (mod 4)...(2.17) Misalkan p = 11 dan q = 23. Kedua bilangan ini (p dan q) merupakan private key. • Hitung nilai n yang merupakan public key dengan rumus perkalian antara p dan q (Rădulescu, 2008).

n = pq, n∈...(2.18) n = 11 × 23 = 253.


(40)

Dimana: n=kunci publik pq=kunci rahasia

Simpan dan rahasiakan nilai p dan q, sedangkan nilai n dapat disebarkan seluas-luasnya.

2.13.2 . Proses Enkripsi

Proses enkripsi pada algoritma Rabin Public Key menggunakan kunci publik n. Untuk melakukan enkripsi pesan (P), P harus lebih kecil dari n. Berikut adalah rumus untuk melakukan enkripsi pada algoritma Rabin Public Key (Schneier, 1996).

C = P2mod n...(2.19) Dimana:

C=ciphertext P=plaintext n=kunci publik

Berikut ini adalah contoh dan algoritma dalam melakukan enkripsi pesan (Rădulescu, 2008).

 Terima kunci publik, n = 253.

 Ekspresikan pesan P= “A” = 65 (kode ASCII) sebagai bilangan, P∈ dan P<n.

 Hitung C = 652 mod 253 = 177 dengan rumus C= � mod n

 Kirim C= 177 = “±” ke pemilik kunci publik. 2.13.3. Proses Dekripsi

Proses dekripsi pada algoritma Rabin Public Key menggunakan kunci privat p dan q. Selama penerima pesan mengetahui p dan q, penerima pesan dapat menyelesaikan dua kekongruenan menggunakan Chinese Remainder Theorem (Schneier, 1996). Pada dekripsi, masalah yang dihadapi adalah menghitung (Galbraith, 2012). Berikut ini adalah contoh dan algoritma dekrispi pada algoritma Rabin PublicKey yang dapat menyelesaikan permasalahan tersebut (Wandani, 2012).


(41)

1. Tentukan nilai Yp dan Yq yang merupakan pembagi GCD (Greatest Common Divisor) dari p dan q dengan menggunakan Algoritma Extended Euclidean. Karena GCD bilangan prima adalah 1, maka dapat ditulis sebagai berikut

Yp*p + Yq * q = 1...(2.20) 2. Hitunglah nilai akar kuadrat dari ciphertext terhadap p dan q dengan rumus:

� = c ( +

4 mod p...(2.21)

� = c +

4 mod q...(2.22)

denganmp adalah akar kuadrat dari ciphertext terhadap p dan mq adalah akar kuadrat dari ciphertext terhadap q.

3. Hitung nilai r, s, t dan u dengan menggunakan Chinese Remainder Theorem, dengan persamaan berikut :

r = (Yp*p* + Yq * q* ) mod n...(2.23) s = (Yp*p* - Yq * q* ) mod n...(2.24) t = ( -Yp*p* + Yq * q* ) mod n ...(2.25) u = ( -Yp*p* - Yq * q* ) mod n...(2.26)

4. Tambahkan r,s,t,udengan kongruen nilai desimal hasil penggandaan plainteks k yang dikalikan dengan kunci publik n.

R = (k*n)+r ...(2.27) S = (k*n)+s ...(2.28) T = (k*n)+t ...(2.29) U = (k*n)+u...(2.30)

5. Ubahlah nilai desimal R,S,T,Uke dalam bentuk biner. Kemudian nilai biner R,S,T,Udibagi menjadi 2 (dua) bagian. Bandingkan kedua bagian tersebut. Jika kedua bagian tersebut menghasilkan bentuk biner yang sama, maka didapatlah hasil dekripsi ciphertext c dengan mengubah bentuk biner salah satu bagian yang telah dibagi menjadi 2(dua) bagian yang sama.


(42)

2.14. Penelitian yang Relevan

1. Firman Saragih(2008), membuat penelitian yang berjudul Penggunaan Kriptografi One Time Pad (Algoritma Vernam) dalam Pengamanan Informasi. Hasil penelitian yang diperoleh adalah One-time pad merupakan algoritma pengenkripsian datadan informasi yang relative sederhana dan mudah digunakan namun cukup aman dalam menjamin kerahasiaan informasi atau data yang ingin dikirimkan oleh pengirim pesan kepada penerima pesan tanpa dapat diketahui oleh pihak lain(Saragih, 2008).

2. Henny Wandani(20012), membuat penelitian yang berjudul Implementasi Sistem Keamanan Data dengan Menggunakan Tekhnik Steganografi End of File (EOF) dan Rabin Public Key Cryptosystem, dimana penelitian ini menggabungkan algoritma kriptografi Rabin Public Key dengan tekhnik Steganografi dalam pengamanan data dan kerahasian sebuah data rahasia dengan algoritma Rabin sebagai pembangkit kunci(Wandani, 2012).

3. Gustaf Prameswara(2012), membuat penelitian yang berjudul Implementasi Algoritma One Time Padpada data teks dan Knapsack pada kunci. Penelitian ini membahas tentang bagaimana algoritma One Time Pad mengenkripsikan dan mendekripsikan pesan dan Knapsack sebagai pengaman kunci dalam pengiriman pesan (Prameswara,2012).


(43)

Berisi tentang uraian analisis mengenai proses kerja dari metode One Time Pad dan Rabin Cryptosystem yang terdiri dari flowchart, pseudocode, Unified Modeling Language (UML)serta perancangan dari aplikasi.

3.1 Analisis Sistem

Analisis Sistem adalah perancangan sebuah sistem untuk menganalisis kebutuhan dari sistem yang telah dirancang sehingga sistem dapat lebih baik dan dapat dikembangkan di masa yang akan datang. Ada tiga fase di dalam analisis sistem yaitu analisis masalah, analisis kebutuhan dan analisis proses. Analisis masalah adalah bagaimana mengidentifikasi masalah dan menemukan penyebab dari masalah tersebut serta memahami kelayakan masalah. Analisis kebutuhan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem. Sedangkan analisis

proses untuk memodelkan tingkah laku sistem.

3.1.1 Analisis Masalah

Saat ini keamanan dalam pengiriman pesan rahasia sangatlah rentan oleh pihak ketiga yang ingin mengetahui isi dari pesan tersebut. Masalah utama didalam penelitian ini

adalah bagaimana teknik Hybridcryptosystem digunakan dalam pengamanan data teks.

Masalah-masalah pada penelitian ini diidentifikasikan dengan menggunakan

diagram Ishikawa. Diagram Ishikawa atau yang sering dikenal dengan Cause and

Effect Diagram adalah diagram yang digunakan untuk memahami dan

mengidentifikasi serta menggambarkan beberapa masalah yang terjadi pada sistem dan akibat yang ditimbulkan oleh masalah.

Permasalahan pada penelitian ini secara umum dapat ditunjukkan pada diagram Ishikawa. Gambar 3.1.


(44)

Menggabungkan Algoritma Simetris Dan Asimetris untuk Mengamankan

Data Teks. Mesin Material Manusia Metode Kriptografi Simetri Kriptografi Asimetri Pengirim dan Penerima Pihak Ketiga Memiliki rasa curiga dan

Ingin tahu

Data yang dikirim aman Proses Komputasi

Yang relatif lama Jalur Pengiriman

Tidak Aman

Kunci dapat diketahui Pihak Ketiga Lemahnya Pengamanan Kunci

Gambar 3.1 Diagram Ishikawa

Pada gambar 3.1, dapat disimpulkan bahwa permasalahannya adalah muncul rasa curiga atau ingin tahu dari pihak ketiga terhadap kerahasian sebuah pesan yang

disebabkan faktor perubahan ciphertext dan penggunaan menggunakan satu kunci

yang tidak aman dalam mengirimkan pesan kepada orang lain.

Solusi yang dapat ditawarkan adalah dengan mengunci ciphertext dengan kunci

kriptografi simetri serta mengunci cipherkey dengan kriptografi asimetri dalam

pengiriman pesan. Dengan cara melakukan teknik Hybridcryptosystem dengan

Algortima One Time Pad dan Algoritma Rabin.

3.1.2 Analisis Kebutuhan

Didalam analisis kebutuhan ini terdapat dua kebutuhan yaitu kebutuhan fungsional

dan kebutuhan non fungsional.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan fungsional adalah menjelaskan proses-proses aktifitas yang dapat dilakukan oleh sistem dalam melakukan pelayanan yang dilakukan sistem dan kebutuhan yang harus dipenuhi oleh sistem, yaitu:


(45)

1. Fungsi Pembangkit Kunci

Pengguna pada fungsi ini berperan sebagai penerima pesan. Pembangkitan kunci dapat dilakukan dengan input langsung atau pun dibangkitkan secara acak untuk memudahkan proses enkripsi dan dekripsi.

2. Fungsi Enkripsi

Pengguna dapat melakukan proses enkripsi pesan dari plaintext menjadi

ciphertext dengan memiliki kunci enkripsi berupa input langsung ataupun dengan memilih berkas yang tersimpan dalam format *.txt atau *.doc.

3. Fungsi Dekripsi

Dapat melakukan proses dekripsi dengan memiliki kunci dekripsi dan ciphertext yang sesuai dan pengguna dapat melakukan proses dekripsi menjadi plaintext.

4. Fungsi Penguncian Kunci Pesan

Dalam fungsi ini, pengguna dapat melakukan enkripsi kunci pesan dengan kunci publik yang sudah dibangkitkan dengan mengubahnya kedalam bentuk cipherkey.

3.1.2.2 Kebutuhan Non-Fungsional

Kebutuhan non-fungsional adalah mendeskripsikan fitur, karakteristik dan batasan lainnya seperti performa, penggunaan, model penyimpanan data, dokumentasi, kontrol, dan ekonomi. Terdapat beberapa hal yang menjadi syarat kebutuhan non-fungsional antara lain:

1. Performa

Aplikasi yang dibangun dapat menampilkan dan menyimpan hasil dari fungsi kriptografi yang dilakukan oleh sistem.

2. Mudah dipelajari dan digunakan

Aplikasi yang dibangun harus sederhana dan user friendly agar mudah


(46)

3. Model Penyimpanan Data

Data pesan teks yang dihasilkan baik berupa ciphertext maupun plaintext

disimpan pada alamat file khusus dalam bentuk *.txt dan *.doc.

4. Dokumentasi

Aplikasi yang akan dibangun memiliki panduan penggunaan aplikasi.

5. Kontrol

Aplikasi yang akan dibangun memiliki pesan error jika pengguna tidak

memasukkan data input tidak lengkap atau salah.

6. Ekonomi

Aplikasi yang dibangun tidak membutuhkan biaya dan perangkat tambahan. 3.1.3 Analisis Proses

Pada penelitian ini Aplikasi yang dibangun menggunakan algoritma One Time Pad

untuk melakukan proses enkripsi dan dekripsi pesan dan algoritma Rabin Cryptosystem dalam melakukan proses enkripsi dan dekripsi kunci pesan. Data pesan yang diolah adalah berbentuk teks berformat *.txt dan *.doc.

Pada algoritma Rabin Cryptosystem untuk membangkitkan kunci digunakan

Theorema Fermat untuk menemukan suatu bilangan prima atau menguji keprimaan suatu bilangan.

Pada proses dekripsi algoritma Rabin digunakan algoritma Chinese Remainder

Theorem dan dalam menentukan hasil dekripsi dari empat kemungkinan hasil

dilakukan secara otomatis (autodecrypt), yaitu dengan memilih nilai yang paling

kecil. Hal ini berdasarkan pengalaman dalam melakukan dekripsi dari nilai 1 hingga

255 (mencakup karakter dalam ASCII 8 bit) dengan kunci publik yang sama (n) dan

lebih besar dari 255 (n > 255), nilai hasil dekripsi yang benar biasanya adalah nilai yang paling kecil.

3.2 Pemodelan

Pemodelan sistem dilakukan untuk menunjukkan dan mendeskripsikan gambaran dari sistem yang akan dibangun. Pada penelitian ini dilakukan pemodelan dengan menggunakan UML untuk mendesain serta merancang sistem.UML adalah bahasa yang digunakan untuk memberikan penjelasan mengenai komponen-komponen untuk


(47)

membangun sistem dan interaksi antar komponen sistem. Model UML yang

digunakan dalam penelitian ini antara lain adalah use case diagram, activity diagram

serta sequance diagram.

3.2.1 Use-Case Diagram

Use-case Diagram adalah gambaran skenario penggunaan aplikasi sistem tentang

bagaimana cara sistem bekerja dengan pengguna. Use-case Diagram membutuhkan

identifikasi siapakah pengguna yang akan menggunakan sistem tersebut. Pengguna

tersebut dinamakan actor. Actor berperan untuk melakukan komunikasi dengan sistem

dimana actor bekerja diluar dari sistem itu sendiri. Hubungan antar actor dengan

use-case dihubungkan dengan garis lurus. Sedangkan hubungan dimana satu use-case

digunakan untuk meredudansi use-case lainnya digunakan garis putus-putus dengan

keterangan include. Untuk extend digunakan untuk mensimplifikasi satu use-case

dengan use-case lainnya.

Gambar 3.2 Diagram Use-Case

Pada gambar 3.2 terdapat dua actor yang mempunyai peran masing-masing yaitu

pengirim dan penerima.Pengirim mengenkripsikan pesan terlebih dahulu dengan


(48)

menjadi cipherkey. Kemudian penerima menentukan kunci terlebih dahulu untuk dikirim ke sipengirim dengan membangkitkan kunci terlebih dahulu dengan algoritma Rabin. Penerima mengirimkan kunci publik ke sipengirim untuk mengunci kunci pesan dan sipenerima mengdekripsikan terlebih dahulu kunci pesan untuk mengetahui

kunci pesan lalu mengedekripsikan pesan dari ciphertext menjadi plaintext.

Berikut ini merupakan tabel narrative use-case yang dapat dilihat pada tabel 3.1

Tabel 3.1 Narrative Use-Case Enkripsi Pesan

Use-case Name Enkripsi Pesan Design Scope Sistem (black box) Goal Level User-goal

Stakeholder and Interest

Pengirim(Pengguna): dapat mengenkripsikan pesan dan kunci pesan untuk menjaga keamanan pesan.

Precondition Penggirim(Pengguna) memiliki file teks plaintext .*txt atau *.doc atau dapat memasukkan pesan secara langsung dan kunci publik.

Minimal Guarantee Sistem akan memberikan pesan error ketika enkripsi pesan gagal.

Success Guarantee Sistem akan memberikan pesan enkripsi telah sukses.

Trigger Pengguna menekan tombol enkripsi pesan.

Main Success Scenario

1. Pengirim menginputkan plaintext yang akan dienkripsi 2. Pengirim memasukkan kunci dan menekan tombol enkripsi.

3. Sistem akan melakukan enkripsi pesan.

4. Pengirim melakukan proses enkripsi kunci pesan dengan kunci publik.

5. Sistem akan melakukan enkripsi kunci pesan.

6. Sistem akan memberikan pesan bahwa enkripsi pesan dan kunci pesan telah sukses.

Extensions 2. Kunci enkripsi tidak lengkap atau kosong.

2a. Sistem akan memberikan pesan kepada pengirim untuk dilakukan cek ulang kembali input-an yang telah diberikan.

Berikut ini merupakan tabel narrative use-case yang dapat dilihat pada tabel 3.2


(49)

Tabel 3.2 Narrative Use-Case Dekripsi Pesan

Use-case Name Dekripsi Pesan

Design Scope Sistem (black box)

Goal Level User-goal Stakeholder and

Interest

Penerima dapat mendekripsikan kembali cipherkey dan

ciphertext ke dalam bentuk plaintext.

Precondition Penerima memiliki file teks ciphertext

Minimal Guarantee Sistem akan memberikan pesan error ketika dekripsi pesan gagal.

Success Guarantee Sistem akan memberikan pesan dekripsi telah sukses dan

menyimpannya pada alamat yang telah ditentukan.

Trigger Pengguna dapat menekan tombol Dekripsi File.

Main Succes Scenario 1. Penggirim memiliki kunci privat Rabin

2. Penggirim mengdenkripsikan kunci Pesan dengan Kunci Privat.

3. Penggirim mengdenkripsikan ciphertext yang akan didekripsi.

4. Sistem akan melakukan dekripsi pesan.

5. Sistem akan memberikan pesan bahwa dekripsi telah sukses.

6. Sistem akan menampilkan plaintext

Berikut ini merupakan tabel narrative use-case yang dapat dilihat pada tabel 3.3

yang menjelaskan Narrative Use-Case Bangkitkan Kunci.

Tabel 3.3 Narrative Use-Case Bangkitkan Kunci

Use-Case Name Bangkitkan Kunci Secara Acak

Design Scope Sistem (black box)

Goal Level User-goal

Stakeholders and Interest Pengirim (Pengguna): Ingin menentukan atau

membangkitkan kunci secara acak karena sulit secara manual.

Precondition -

Minimal Guarantee -

Success Guarantee Sistem menampilkan kunci yang sudah memenuhi syarat.

Trigger Pengguna menekan tombol bangkitkan kunci.


(50)

3.2.2 Sequence Diagram

Sequence Diagram berfungsi untuk menggambarkan rangkaian pesan yang akan

dikirim antara object yang ada serta interaksi yang terjadi antar object. Berikut Sequence Diagram dari sistem yang dirancang dapat dilihat pada gambar 3.3.

Gambar 3.3 Diagram Sequence untuk Bangkitkan Kunci


(51)

Gambar 3.5. Diagram Sequence untuk Dekripsi

3.2.3 Activity Diagram

Pada Activity Diagram menggambarkan berbagai alur aktivitas yang ada di dalam

sistem yang sedang dirancang dan bagaimana masing-masing alur yang ada berawal

serta berakhir. Activity Diagram juga bertujuan untuk membantu bagaima40na

memahami proses dan menggambarkan setiap interaksi yang ada antara beberapa use


(52)

Gambar 3.6. Activity Diagram

3.3 Flowchart Sistem

Flowchart merupakan diagram alir dari bagan-bagan tertentu yang memiliki arus penggambaran mengenai langkah-langkah penyelesaian suatu permasalahan. Selain

itu, flowchart juga memiliki fungsi memudahkan proses pengecekan terhadap sistem


(53)

3.3.1 Flowchart Enkripsi Pesan dengan Algoritma One Time Pad

Berikut adalah flowchart enkripsi pesan dari sistem yang dibangun dapat dilihat pada gambar 3.7


(54)

3.3.2. Flowchart Enkripsi Kunci dengan Algoritma Rabin

Berikut adalah flowchart enkripsi kunci pesan dari sistem yang dibangun dapat dilihat pada gambar 3.8


(55)

3.3.3. Flowchart Dekripsi Pesan dan Kunci Pesan

Berikut adalah flowchart dekripsi pesan dari sistem yang dibangun dapat dilihat pada gambar 3.9


(56)

3.4. Pseudocode Sistem

Pseudocode merupakan pendeskripsian dari algoritma pemrograman komputer yang ada dimana menggunakan struktur sederhana dari bahasa pemrograman yang

digunakan dan dapat dimengerti. Berikut merupakana pseudocode dari sistem yang

dibangun.

3.4.1. Psuedocode Enkripsi Pesan ENKRIPSI PESAN DENGAN OTP

For i= 0 to (Panjang kunci-1)

Cipherteks= (plainteks + key)

Berikut ini merupakan penjelasan dari pseudocode di atas. Pseudocode,dimana pseudocode ini adalah proses enkripsi dari OTP. Perulangan sebanyak panjang karakter untuk menghasilkan cipherteks nya dengan menggunakan nilai plainteks+kunci.

3.4.2. Psuedocode Enkripsi Kunci Pesan ENKRIPSI KUNCI PESAN DENGAN RABIN 1. function enkripsi(P,n):

2. if(P< n):

3. C = pow(P,2,n)

4. return C

5. return False

1. function enkripsiPesan(P, n):

2. C = list


(57)

4. C.append(enkripsi(ord(P[i]), n))

5. if C[i] == False: break

6. return C

Berikut ini merupakan penjelasan dari pseudocode diatas dimana fungsi enkripsi dari rabin dengan parameter p dan n.jika p harus lebih kecil dari n dimana untuk cipherteks nya yaitu dengan p^2 mod n untuk nilai cipherteksnya jika benar. Jika salah maka dia akan kembali ke fungsi enkripsi.

3.4.3. PsuedocodePembangkit Kunci

Pseudocode dari pembangkit kunci untuk algoritma Rabin terdiri dari dua bagian, yaitu fungsi cek Kunci (p, q) dan bangkitkan Kunci sebagai berikut.

CEK KUNCI

1.function cekKunci(p,q):

2.if(p mod 4 == 3) and TheoremFermat (p) and (q mod 4 == 3) and TheoremFermat(q)

and (p ≠q) and (length(str(p*q)) ≤ 8):

3.return True 4.return False

BANGKIT KUNCI

1.function bangkitkanKunci(): 2.syarat_tdk_terpenuhi = True 3.while syarat_tdk_terpenuhi: 4.p = random(3,9999)

3.4.4. PseudocodeDekripsi Kunci Pesan


(58)

1.function autodekripsi(C, p, q): 2.mp = pow(C, (p+1)/4, p)

3.mq = pow(C, (q+1)/4, q) 4.x, y, n = CRT(mp,mq,p,q) 5.P1 = (x + y) mod n

6.P2 = (x – y) mod n

7.P3 = (-x + y) mod n

8.P4 = (-x – y) mod n

9.return min(P1, P2, P3, P4)

1.function dekripsi(C, p, q):

2. Psn = []

3. for i = 0 to length(C)-1:

4. Psn.append(chr(autodekripsi(C[i],p,q)))

5. return join(Psn)

Pada algoritma Rabin, terdapat empat hasil dekripsi dan penerima pesan harus menentukan pesan yang benar. Terdapat beberapa cara yang dapat dilakukan untuk dapat menentukan hasil dekripsi yang benar, seperti menggandakan pesan atau menggandakan nilai bit dari pesan sebelum dienkripsi dan hasil yang memiliki nilai yang berulang merupakan kemungkinan hasil dekripsi yang benar.

Jika pesan yang dienkripsi jumlahnya sedikit, maka penerima pesan relatif mudah dalam menentukan hasil dekripsi. Namun jika pesan yang dienkripsi jumlahnya banyak, maka akan timbul kesulitan bagi penerima pesan dalam menentukan hasil dekripsi. Penulis sudah mencoba melakukan enkripsi (menggunakan kunci publik yang lebih besar dari 255) dan dekripsi untuk nilai yang mencakup karakter pada ASCII 8 bit (1 sampai dengan 255) dan memberikan pengalaman bahwa hasil dekripsi yang benar biasanya adalah nilai yang paling kecil dari keempat hasil dekripsi. Berdasarkan pengalaman tersebut, penulis melakukan modifikasi dalam proses dekripsi pada penelitian ini yaitu dengan melakukan proses autodekripsi (penerima pesan tidak direpotkan dalam menentukan nilai dekripsi yang dianggap benar).


(59)

3.4.5. PseudocodeDekripsi Pesan Dekripsi Pesan

For i= 0 to(panjangkunci-1)

Plaintext=(ciphertext – key)

Berikut ini merupakan penjelasan dari pseudocode di atas, dimana pseudocode ini adalah proses enkripsi dari OTP. Perulangan sebanyak panjang karakter untuk menghasilkan plainteksnya dengan rumus ciphertext- kunci.

3.5. Perancangan Antarmuka (Interface)

Perancangan antarmuka adalah desain awal dari tampilan sistem yang akan sistem

dibangun. Antarmuka harus dirancang dengan memperhatikan faktor pengguna

sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk

digunakan oleh pengguna. Sistem yang dibangun terdiri dari form utama dan home,

pengirim, dan penerima.

3.5.1 Form Utama dan Home

Form Utama dan Home adalah tampilan awal dari sistem ini dijalankan. Tampilan ini

menampilkan Form Home, Pengirim, dan penerima. Gambar 3.10 menunjukkan


(60)

Keterangan:

Label yang menunjukkan nama dari judul aplikasi penilitian. Gambar yang menampilkan logo instansi penulis.

Label yang menunjukkan nama dan NIM penulis.

1.5.2 Form Pengirim

Pada halaman form pengirim ini, pengguna dapat melakukan proses enkripsi pesan

dan kunci pesan yang akan dikirim ke penerima.Gambar 3.11 menunjukkan tampilan sementara dari form pengirim.

Gambar 3.11 Rancangan Form Pengirim Keterangan:

1) Pengguna dapat memilih berkas dari file yang berformat *.txt dan *.doc yang

telah disimpan dengan menekan tombol Import. Setelah berkas dipilih maka


(1)

}

return bufferS; }

public string runPythonDekripsi(string strIntC){ string hasil;

string hasil2;

int kunciP = int.Parse(kp.Text); int kunciQ = int.Parse(kq.Text);

ProcessStartInfo p = new ProcessStartInfo(); p.FileName = "c:\\Python33\\python.exe"; p.RedirectStandardOutput = true;

p.UseShellExecute = false; // make sure we can read the output from stdout

p.Arguments = "c:\\skrip\\gate.py "+ "dek " + kunciP + " " + kunciQ + " " + "\"" + strIntC + "\" 'x'"; // start the python program with two parameters

try{

using(Process exeProc = Process.Start(p)){ StreamReader s =

exeProc.StandardOutput;

String output = s.ReadToEnd(); string r = output; // get the parameter

hasil = r.ToString();

string[] parts = hasil.Split(' '); string elapsedTime =

parts[parts.Length - 2];

hasil2 = hasil.Remove((hasil.Length - elapsedTime.Length), elapsedTime.Length);

hasil2 = hasil2.Remove(hasil2.Length-1,1);

hasil2 =

hasil2.Remove(hasil2.Length-1,1); // menghilangkan spasi di akhir kalimat

kotp.Text = hasil2.ToString(); int pjgPesanAsli = hasil2.Length;

MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedTime + " detik)", "Informasi",

MessageBoxButtons.OK, MessageBoxIcon.Information); }


(2)

catch{

//throw;

strIntC = ctotp.Text.ToString();

p.FileName = "c:\\Python33\\python.exe"; p.RedirectStandardOutput = true;

p.UseShellExecute = false; // make sure we can read the output from stdout

p.Arguments = "c:\\skrip\\gate.py "+ "dek2 " + kunciP + " " + kunciQ + " " + "\"" + strIntC + "\" 'x'"; // start the python program with two parameters

try{

using(Process exeProc = Process.Start(p)){

StreamReader s = exeProc.StandardOutput;

String output = s.ReadToEnd(); string r = output; // get the parameter

hasil = r.ToString();

string[] parts = hasil.Split(' ');

string elapsedTime = parts[parts.Length - 2];

hasil2 = hasil.Remove((hasil.Length - elapsedTime.Length), elapsedTime.Length);

hasil2 = hasil2.Remove(hasil2.Length-1,1);

hasil2 =

hasil2.Remove(hasil2.Length-1,1); // menghilangkan spasi di akhir kalimat

kotp.Text = hasil2; int pjgPesanAsli = hasil2.Length;

MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedTime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);

} }

catch{

//throw;


(3)

p.FileName = "c:\\Python33\\python.exe";

p.RedirectStandardOutput = true; p.UseShellExecute = false; // make sure we can read the output from stdout

p.Arguments = "c:\\skrip\\gate.py "+ "dek2 " + kunciP + " " + kunciQ + " " + "\"" + strIntC + "\" 'x'"; // start the python program with two parameters

try{

using(Process exeProc = Process.Start(p)){

StreamReader s = exeProc.StandardOutput;

String output = s.ReadToEnd();

string r = output; // get the parameter

hasil = r.ToString(); string[] parts = hasil.Split(' ');

string elapsedTime = parts[parts.Length - 2];

hasil2 = hasil.Remove((hasil.Length - elapsedTime.Length), elapsedTime.Length);

hasil2 = hasil2.Remove(hasil2.Length-1,1);

hasil2 =

hasil2.Remove(hasil2.Length-1,1); // menghilangkan spasi di akhir kalimat

kotp.Text = hasil2; int pjgPesanAsli = hasil2.Length;

MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedTime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);

} }

catch{


(4)

MessageBox.Show("Kesalahan melakukan dekripsi.", "Kesalahan", MessageBoxButtons.OK,

MessageBoxIcon.Error);

hasil2 = ""; }

} }

return hasil2; }

2.6.

Perogram dekripsi pesan

void Button2dekripsiClick(object sender, EventArgs e) {

if(string.IsNullOrWhiteSpace(textBox1cipher.Text) | string.IsNullOrWhiteSpace(textBox1cipherkey.Text)){

MessageBox.Show("Kunci OTP dan Pesan Cipher tidak boleh kosong.", "Kesalahan Dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error);}

else{

//ambil cipher

string cipher=textBox1cipher.Text; //panjang cipher

int panjang= textBox1cipher.Text.Length; //ambil kunci

string kunci = kotp.Text; string pesan="";

DateTime waktuawal = DateTime.Now; //algoritma otp

for(int i=0; i<panjang;i++){

pesan += (char)(cipher[i]-kunci[i]); //MessageBox.Show(pesan.ToString()); }

MessageBox.Show("panjang : "+panjang.ToString()); MessageBox.Show("tes");

DateTime waktuakhir = DateTime.Now;

/*MessageBox.Show("Time : " + elapsed.Hours.ToString("00") + ":" +elapsed.Minutes.ToString("00") + ":" +

elapsed.Seconds.ToString("00") + "." +elapsed.Milliseconds.ToString("000"));*/

pesanbox.Text=pesan;

TimeSpan selisihwaktu = waktuakhir.Subtract(waktuawal); MessageBox.Show("Time : "

+selisihwaktu.Hours.ToString()+"

:"+selisihwaktu.Minutes.ToString()+" : " + selisihwaktu.Seconds.ToString()+" : " +selisihwaktu.Milliseconds.ToString());}


(5)

CURRICULUM VITAE

Nama

: Alfrid Iskandar Ramadhany Panggabean

Alamat Sekarang

: Jln. Umar Said No.1C Binjai

Alamat Orang Tua

: Jln. Umar Said No.1C Binjai

Telp/ Hp

: 087768644343

Email

: Alfridiskandar@yahoo.com

Riwayat Pendidikan

2010

2014

: S-1 Ilmu Komputer Universitas Sumatera Utara, Medan

2007

2010

: SMA Negeri 1, Binjai

2004

2007

: SMP Negeri 2, Binjai

1998

2004

: SD 020261, Binjai

Keahlian

Bahasa

: Indonesia, Inggris

Bahasa Pemrograman : C#.NET, Python.

Database

: Microsoft Access.

Design

: Photoshop, Corel Draw, Ilustrator

Pengalaman Organisasi

[2008

2009] OSIS SMA Negeri 1 Binjai

[2007

2009] Paskibraka SMA Negeri 1 Binjai

[2012

2013] Anggota Kemahasiswaan IMILKOM 2012 - 2013


(6)

Pengalaman Kepanitiaan

[2010]

Anggota D

okumentasi Seminar Teknologi Informasi “ The

Development Of Modern Operating

System Technology”

[2012]

Ketua Bidang Dana dan Usaha PORSENI IMILKOM 2012