ANALISIS DAN PERANCANGAN APLIKASI PESAN RAHASIA MENGGUNAKAN ALGORITMA ONE TIME PAD (OTP) DENGAN PEMBANGKIT BILANGAN ACAK LINEAR CONGRUENTIAL GENERATOR (LCG) SKRIPSI BILQIS 081401072 PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM MEDAN 2012
ANALISIS DAN PERANCANGAN APLIKASI PESAN RAHASIA MENGGUNAKAN ALGORITMA ONE TIME PAD (OTP) DENGAN PEMBANGKIT BILANGAN ACAK LINEAR CONGRUENTIAL GENERATOR (LCG) SKRIPSI Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer BILQIS 081401072 PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM MEDAN 2012
PERSETUJUAN Judul : ANALISIS DAN PERANCANGAN APLIKASI PESAN RAHASIA MENGGUNAKAN ALGORITMA ONE TIME PAD (OTP) DENGAN PEMBANGKIT BILANGAN ACAK LINEAR CONGRUENTIAL GENERATOR (LCG) Kategori : SKRIPSI Nama : BILQIS Nomor Induk Mahasiswa : 081401072 Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen Fakultas Komisi Pembimbing : : ILMU KOMPUTER : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA Diluluskan di Medan, 22 Mei 2012 Pembimbing 2 Pembimbing 1 M. Andri Budiman, S.T, M.Comp. Sc Dian Rachmawati, S.Si, M.Kom NIP. 197510082008011001 NIP. 198307232009122004 Diketahui/Disetujui oleh Program Studi S1 Ilmu Komputer Ketua, Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
PERNYATAAN ANALISIS DAN PERANCANGAN APLIKASI PESAN RAHASIA MENGGUNAKAN ALGORITMA ONE TIME PAD (OTP) DENGAN PEMBANGKIT BILANGAN ACAK LINEAR CONGRUENTIAL GENERATOR (LCG) SKRIPSI Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya. Medan, 22 Mei 2011 Bilqis 081401072
PENGHARGAAN Alhamdulillah, puji syukur penulis sampaikan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-nya serta segala sesuatunya sehingga dapat menyelesaikan penyusunan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Ilmu Komputer Universitas Sumatera Utara. Shalawat dan salam penulis persembahkan kepada Nabi Besar Muhammad SAW. Pada kesempatan ini penulis juga ingin memberikan ucapan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu penulis mulai dari awal pembuatan skripsi sampai selesainya skripsi ini, antara lain kepada: 1. Ibu Dian Rachmawati, S.Si, M.Kom sebagai Dosen Pembimbing I dan Bapak M. Andri Budiman, S.T, M.Comp.Sc sebagai Dosen Pembimbing II yang telah memberikan bimbingan, saran dan masukan untuk menyempurnakan kajian ini. 2. Dosen Penguji Ibu Maya Silvi Lydia, B.Sc, M.Sc dan Bapak Amer Sharif, S.Si, M.Kom atas saran dan kritikan yang sangat berguna bagi penulis. 3. Ketua dan Sekretaris Program Studi S1 Ilmu Komputer, Bapak Dr. Poltak Sihombing, M.Kom dan Ibu Maya Silvi Lydia, B.Sc, M.Sc. 4. Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara. 5. Seluruh dosen serta pegawai di Program Studi S1 Ilmu Komputer FMIPA USU. 6. Kepada kedua orangtua dan keluarga yang telah memberikan dukungan dan motivasi, ayahanda M.Ilyas Arafat dan ibunda Fatma yang selalu sabar dalam mendidik dan selalu mendoakan penulis. 7. Kepada teman-teman penulis di Program S-1 Ilmu Komputer USU Medan yang telah banyak membantu memberikan dukungan penulis selama ini. Penulis menyadari bahwa skripsi ini jauh dari kesempurnaan, oleh karena itu penulis menerima kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini sehingga dapat bermanfaat bagi kita semua. Medan, 22 Mei 2012 Penulis
ABSTRAK Meningkatnya penggunaan teknologi informasi yang menggunakan komputer sebagai medianya, maka keamanan data (pesan) menjadi aspek yang sangat penting dalam sistem teknologi informasi. Salah satu metode yang digunakan untuk menjaga keamanan data tersebut adalah algoritma kriptografi One Time Pad (OTP). OTP dipilih karena merupakan algoritma sederhana dan belum dapat terpecahkan. Kunci yang digunakan pada algoritma ini haruslah kunci yang benar-benar acak sehingga kerahasiaan pesan didalamnya dapat terjamin, maka digunakanlah metode pembangkit bilangan acak Linear Congruential Generator (LCG). Sistem ini dikembangkan dengan menggunakan bahasa pemrograman Matlab 7.5.0. Hasil dari pembahasan ini adalah menghasilkan sebuah aplikasi yang dapat digunakan untuk mengenkripsi dan mendekripsi plaintext menggunakan algoritma OTP dan LCG sebagai pembangkit kunci. Kata Kunci : Kriptografi, One Time Pad (OTP), Pembangkit Bilangan Acak, Linear Congruential Generator (LCG)
ANALYSIS AND DESIGN APPLICATION OF SECRET MESSAGE USING ONE TIME PAD (OTP) ALGORITHM WITH RANDOM NUMBER GENERATOR OF LINEAR CONGRUENTIAL GENERATOR (LCG) ABSTRACT Because of the increasing usage of information technology that uses computers as medium, then the security data (message) is important aspect in information technology system. One method used to protect data is One Time Pad (OTP) algorithm of cryptography. The OTP is chosen because it is a simple and unbreakable algorithm. Since the key that is used in this algorithm must be truly random so that confidentiality of the data (message) can be assured, so Linear Congruential Generator (LCG) is used as the method of random generator number. The system is implemented by using the program language of Matlab 7.5.0. The result of this study is an application that can be used to encrypt and decrypt a plaintext using OTP algorithm and LCG as key generator. Keywords : Cryptography, One Time Pad (OTP), Random Numbers Generator, Linear Congruential Generator (LCG).
DAFTAR ISI Halaman Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi Daftar Tabel Daftar Gambar ii iii iv v vi vii ix x Bab 1 Pendahuluan 1 1.1 Latar Belakang 1 1.2 Perumusan Masalah 2 1.3 Batasan Masalah 2 1.4 Tujuan Penelitian 3 1.5 Manfaat Penelitian 3 1.6 Metode Penelitian 3 1.7 Sistematika Penulisan 4 Bab 2 Landasan Teori 6 2.1 Kriptografi 6 2.2 Komponen Kriptografi 7 2.3 Kunci Simetris dan Asimetris 8 2.3.1 Kunci Simetris 8 2.3.2 Kunci Asimetris 9 2.4 Blok Cipher dan Stream Cipher 11 2.5 Tujuan Kriptografi 12 2.6 Keamanan Algoritma Kriptografi 13 2.7 Pembangkit Bilangan Acak 13 2.8 Pembangkit Bilangan Acak Semu 14 2.9 Linear Congruential Generator (LCG) 16 2.10 One Time Pad (OTP) 18 2.10.1 Proses Enkripsi dan Dekripsi 19 Bab 3 Analisis dan Perancangan Sistem 21 3.1 Analisis Algoritma One Time Pad 21 3.2 Analisis Algoritma Linear Congruential Generator 25 3.3 Desain Sistem 28 3.4 Algoritma dan Flowchart Sistem 28 3.4.1 Algoritma dan Flowchart Proses Enkripsi dan dekripsi dari File Teks 31 3.4.2 Algoritma dan Flowchart Proses Pembangkitan Kunci 33
3.4.3 Algoritma dan Flowchart Proses Enkripsi dan dekripsi dari Keyboard 35 3.5 Diagram Use Case 37 3.6 Perancangan Antarmuka 39 3.6.1 Tampilan Menu Utama 39 3.6.2 Tampilan Enkripsi dan Dekripsi dari File 40 3.6.3 Tampilan Enkripsi dan Dekripsi dari Keyboard 42 3.6.4 Tampilan Bantuan 44 Bab 4 Implementasi dan Pengujian 46 4.1 Implementasi 46 4.2 Pengujian 53 Bab 5 Penutup 58 5.1 Kesimpulan 58 5.2 Saran 59 Daftar Pustaka 60 Lampiran A : Kode Program A-1
DAFTAR TABEL No. Tabel Judul Halaman 2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Hasil pembangkitan bilangan acak dengan metode LCG Proses Enkripsi dengan Kunci yang Sama dengan Plaintext Proses Enkripsi dengan Sebuah Kunci Berdasarkan Jumlah Karakter Plaintext yang Berulang Proses Enkripsi dengan Kunci Berdasarkan Sebuah Kata dari Plaintext Proses Enkripsi dengan Konsep Autokey Proses Enkripsi dengan OTP dan LCG Proses Enkripsi dengan OTP dan LCG Proses Enkripsi dengan OTP dan LCG Spesifikasi Use Case Kriptografi 18 21 22 22 23 23 24 24 38
DAFTAR GAMBAR No. Gambar 2.1 2.2 2.3 2.4 Proses - proses kriptografi Kunci simetris Penggunaan kunci asimetris Skema Dasar PRNG Judul Halaman 6 9 10 16 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 3.14 4.1 4.2 4.3 Grafik dengan nilai Xo = 30, a=19, b=17, dan m=11 Grafik dengan Xo = 30, a=5, b=31, dan m=11 Grafik dengan Xo = 30, a=13, b=7, dan m=11 Grafik dengan Xo = 30, a=13, b=10, dan m=11 Grafik dengan Xo = 30, a=3, b=23, dan m=11 Flowchart Sistem Flowchart Proses Enkripsi dan Dekripsi dari File Teks Flowchart Proses Pembangkitan Kunci Flowchart Proses Enkripsi dan Dekripsi dari Keyboard Diagram Use Case Sistem RancanganTampilan Awal Rancangan Tampilan Enkripsi dan Dekripsi dari File Rancangan Tampilan Enkripsi dan Dekripsi dari Keyboard RancanganTampilan Bantuan Tampilan Menu Utama Tampilan Menu Enkripsi dan Dekripsi dari File Tampilan Memilih File Teks 25 26 26 27 27 30 33 34 37 38 39 41 43 45 46 47 47
4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 Tampilan Isi File Teks dan Properties Tampilan Pembangkitan Kunci Tampilan Ciphertext (Kode ASCII) Hasil Enkripsi Tampilan Plaintext Semula Hasil Dekripsi Tampilan Pesan Error untuk Mempersingkat Plaintext Tampilan Pesan Error untuk Inputan Numerik Tampilan Menu Enkripsi dan Dekripsi dari Keyboard Tampilan Menu Bantuan Tampilan Pesan Pilihan Keluar dari Sistem Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (1) Tampilan Kunci yang Telah Dibangkitkan dan Disimpan dalam random key.txt Tampilan Ciphertext yang Disimpan dalam ciphertext.txt Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (2) Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (3) Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (4) 48 49 49 50 50 51 51 52 52 53 54 54 55 56 57