Analisi Dan Perancangan Aplikasi Pesan Rahasia Menggunakan Algoritma One Time PAD (OTP)Dengan Pembangkit Bilangan Acak Linear Congurential Generator (LCG)

(1)

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

UNIVERSITAS SUMATERA UTARA

MEDAN

2012


(2)

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 UNIVERSITAS SUMATERA UTARA

MEDAN 2012


(3)

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 : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA

UTARA Diluluskan di

Medan, 22 Mei 2012 Komisi Pembimbing :

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


(4)

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


(5)

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


(6)

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)


(7)

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).


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.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


(9)

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


(10)

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


(11)

DAFTAR GAMBAR

No. Gambar

Judul Halaman

2.1 2.2 2.3 2.4 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

Proses - proses kriptografi Kunci simetris

Penggunaan kunci asimetris Skema Dasar PRNG

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

6 9 10 16 25 26 26 27 27 30 33 34 37 38 39 41 43 45 46 47 47


(12)

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


(13)

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)


(14)

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).


(15)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Teknologi informasi berkembang semakin pesat dan mempengaruhi hampir seluruh aspek kehidupan manusia. Perkembangan tersebut secara langsung maupun tidak langsung mempengaruhi sistem perdagangan, transaksi, bisnis, perbankan, industri dan pemerintahan. Tentunya tingkat keamanan yang tinggi juga semakin diperlukan untuk menghindari penyadapan informasi yang mungkin saja terjadi. Terutama di era internet ini, semua informasi dikirim dengan bebas melalui suatu jaringan dengan tingkat keamanan yang relatif rendah. Untuk itulah peranan teknologi keamanan informasi benar-benar dibutuhkan. Salah satu cara yang bisa digunakan adalah menyandikan (mengenkripsi) informasi atau data rahasia yang akan dikirim, sehingga walaupun pihak yang tidak berkepentingan dapat membaca informasi tersebut, pihak tersebut tetap sulit bahkan tidak dapat memahami isi informasi tersebut.

Pengenkripsian yang dilakukan dengan menggunakan algoritma One Time Pad yang lebih menjamin kerahasiaan data dalam pengenkripsiannya karena algoritma One Time Pad merupakan algoritma sederhana dan unbreakable yang sampai saat ini dinyatakan aman karena masih belum ada serangan kriptanalis yang benar-benar dapat mematahkan algoritma ini. Hal ini dikarenakan algoritma One Time Pad memiliki barisan kunci acak yang ditambahkan ke pesan plaintext yang tidak acak menghasilkan ciphertext yang seluruhnya acak. Beberapa barisan kunci yang digunakan untuk mendekripsi ciphertext mungkin menghasilkan plaintext yang mempunyai makna, sehingga kriptanalis tidak punya cara untuk menentukan plaintext mana yang benar. Hal ini didukung oleh beberapa penelitian terdahulu. [3] menyimpulkan bahwa prinsip enkripsi pada algoritma ini adalah dengan


(16)

mengombinasikan masing-masing karakter pada plaintext dengan satu karakter pada kunci. Oleh karena itu, panjang kunci setidaknya harus sama dengan panjang plaintext.

Kunci yang digunakan pada metode ini haruslah kunci yang benar-benar acak sehingga keamanan data didalamnya dapat terjamin kerahasiaannya sesuai dengan tujuan dari kriptografi tentang kerahasiaan data. Hal ini didukung oleh penelitian sebelumnya. [5] menyimpulkan bahwa generator key yang digunakan pada metode ini menghasilan key yang acak, agar tidak terdapat pengulangan karakter pada key hasil generate. Oleh karena itu, untuk membangkitkan kunci pada algoritma One Time Pad digunakanlah metode pembangkit bilangan acak Linear Congruential Generator (LCG).

1.2 Perumusan Masalah

Berdasarkan latar belakang masalah diatas, maka yang menjadi rumusan masalah skripsi ini adalah sebagai berikut:

1. Bagaimana mengimplementasikan algoritma One Time Pad dalam mengenkripsi dan mendekripsi pesan rahasia.

2. Bagaimana proses pembangkitan bilangan acak pada metode Linear Congruential Generator (LCG).

1.3 Batasan Masalah

Batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini adalah:

1. Proses penyandian hanya dilakukan pada pesan dalam format teks (berupa inputan teks secara langsung dan file dalam format *.txt).


(17)

2. Pesan (plaintext) dalam bentuk karakter ASCII (American Standard Code for Information Interchange) 8 bit, dengan ukuran file bebas dan panjang teks maksimal 1024 karakter.

3. Ciphertext yang ditampilkan hanya berupa kode ASCII saja.

4. Aplikasi dibuat dengan menggunakan bahasa pemrograman Matlab 7.5.0 .

1.4 Tujuan Penelitian

Penelitian ini bertujuan untuk menerapkan suatu sistem keamanan dan kerahasiaan data dengan menggunakan algoritma kriptografi One Time Pad (OTP) dan Linear Congruential Generator (LCG) sebagai pembangkit kunci.

1.5 Manfaat Penelitian

Manfaat dari penelitian ini adalah menghasilkan aplikasi yang dapat mengenkripsi dan mendekripsi pesan teks tersebut agar informasinya dapat diperoleh oleh penerima yang kerahasiaannya masih terjaga.

1.6 Metode Penelitian

Tahapan yang dilakukan dalam penelitian ini adalah:

1. Studi Literatur.

Melakukan studi kepustakaan, dengan mengumpulkan dan mempelajari bahan- bahan referensi yang berhubungan dengan skripsi ini, baik dari text book maupun internet.


(18)

2. Perancangan Sistem.

Perancangan yang dimaksud adalah membuat flowchart dengan algoritma kriptografi One Time Pad dan metode pembangkit bilangan acak pada Linear Congruential Generator (LCG), diagram Use Case serta rancangan interface.

3. Implementasi Sistem.

Perancangan sistem meliputi proses penginputan pesan, proses pembangkit kunci secara acak, proses enkripsi dan proses dekripsi serta implementasinya dalam bentuk kode program (coding)dengan menggunakan bahasa pemrograman Matlab 7.5.0.

4. Pengujian Sistem.

Pengujian dilakukan terhadap program yang telah dibuat yang dimulai dengan proses penginputan pesan, proses pembangkit kunci secara acak, proses enkripsi dan proses dekripsi .

5. Dokumentasi Sistem.

Penyusunan laporan Tugas Akhir lengkap dengan analisis yang didapatkan.

1.7 Sistematika Penulisan

Penulisan skripsi ini dibagi menjadi lima bab, yaitu sebagai berikut:

BAB 1 Pendahuluan

Pada bab ini dibahas latar belakang pemilihan judul, rumusan masalah, batasan masalah, tujuan penelitian, metode penelitian dan sistematika penulisan.

BAB 2 Landasan Teori

Bagian ini berisi teori-teori dasar kriptografi, proses pembangkitan bilangan acak dengan metode Linear Congruential Generator (LCG), proses enkripsi dan dekripsi pada algoritma kriptografi One Time Pad (OTP).


(19)

BAB 3 Analisis dan Perancangan Sistem

Pada bab ini dibahas analisis kriptografi OTP dengan pembangkit bilangan acak LCG, serta rancangan struktur program dengan flowchart dan diagram Use Case serta desain interface.

BAB 4 Implementasi dan Pengujian

Bab ini berisi tentang implementasi sistem dan melakukan pengujian terhadap sistem.

Bab 5 Penutup

Bab terakhir ini memuat kesimpulan dan saran untuk kesempurnaan pengembangan lebih lanjut.


(20)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Kriptografi berasal dari bahasa Yunani, yakni kata kriptos dan graphia. Kriptos berarti secret (rahasia) dan graphia berarti writing (tulisan). Kriptografi merupakan seni dan ilmu untuk menjaga keamanan data dengan metode tertentu, dan pelakunya disebut cryptographer. Kriptografi disebut sebagai ilmu karena didalamnya terdapat metode (rumusan) yang digunakan, dan dikatakan sebagai seni karena karena dalam membuat suatu teknik kriptografi itu sendiri merupakan ciri tersendiri dari si pembuat dan memerlukan teknik khusus dalam mendisainnya [8]. Sedangkan cryptanalysis adalah suatu ilmu dan seni memecahkan ciphertext menjadi plaintext tanpa melalui cara yang seharusnya dan orang yang melakukannya disebut cryptanalyst.

enkripsi

dekripsi

Gambar 2.1 Proses - proses kriptografi

Menurut Request for Comments (RFC), kriptografi merupakan ilmu matematika yang berhubungan dengan transformasi data untuk membuat artinya tidak dapat dipahami (untuk menyembunyikan maknanya), mencegahnya dari perubahan tanpa izin, atau mencegahnya dari penggunaan yang tidak sah. Jika transformasinya dapat dikembalikan, kriptografi juga bisa diartikan sebagai proses mengubah kembali


(21)

data yang terenkripsi menjadi bentuk yang dapat dipahami. Artinya, kriptografi dapat diartikan sebagai proses untuk melindungi data dalam arti yang luas [11].

Dalam kamus bahasa Inggris Oxford diberikan pengertian kriptografi sebagai berikut :

“Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini.”

Jadi, secara umum dapat diartikan sebagai seni menulis atau memecahkan cipher [16].

Algoritma kriptografi selalu terdiri dari dua bagian yaitu fungsi enkripsi dan dekripsi. Bila keamanan algoritma tergantung pada kerahasiaan algoritma bekerja, maka algoritma tersebut dikatakan algoritma terbatas (terbatas kemampuannya) [7]. Algoritma terbatas mempunyai sejarah yang menarik, namun tidak cukup baik untuk digunakan saat ini. Sebagian besar pengguna (yang tidak dalam satu grup) tidak dapat menggunakannya bersama-sama, sehingga setiap kali seorang pengguna meninggalkan grupnya, pemakai lain dalam grup tersebut harus mengganti algoritma agar tidak diketahui kelompok lain. Dan bila salah satu anggota tanpa sengaja menampakkan algoritma keluar grupnya, grup tersebut harus mengganti algoritmanya.

2.2 Komponen Kriptografi

Pada dasarnya, kriptografi terdiri dari beberapa komponen sebagai berikut [1] :

1. Algoritma, merupakan himpunan aturan matematis yang digunakan dalam enkripsi dan dekripsi.

2. Enkripsi, adalah transformasi data ke dalam bentuk yang tidak dapat terbaca tanpa sebuah kunci tertentu.


(22)

3. Dekripsi, merupakan kebalikan dari enkripsi, yaitu transformasi data terenkripsi kembali ke bentuknya semula.

4. Kunci, digunakan pada saat melakukan enkripsi dan dekripsi. Pada kriptografi modern, keamanan enkripsi tergantung pada kunci, dan tidak tergantung kepada algoritmanya apakah dilihat orang lain atau tidak.

5. Pesan asli (Plaintext), disebut juga dengan clear-text, merupakan teks asli yang akan diproses menggunakan algoritma kriptografi tertentu untuk menjadi ciphertext.

6. Ciphertext, merupakan pesan yang telah melalui proses enkripsi yang merupakan himpunan karakter acak.

7. Kriptologi, merupakan studi tentang kriptografi dan kriptanalisis.

8. Kriptanalisis (Cryptanalysist), merupakan aksi memecahkan mekanisme kriptografi dengan cara menganalisisnya untuk menemukan kelemahan dari suatu algoritma kriptografi sehingga akhirnya dapat ditemukan kunci atau teks asli.

9. Kriptosistem, adalah perangkat keras atau implementasi perangkat lunak kriptografi yang diperlukan dalam mentransformasi sebuah pesan asli menjadi ciphertext dan juga sebaliknya.

2.3 Kunci Simetris dan Asimetris

2.3.1 Kunci Simetris

Ini adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis.


(23)

Siapapun yang memiliki kunci tersebut termasuk pihak-pihak yang tidak diinginkan dapat membuat dan membongkar rahasia ciphertext. Problem yang paling jelas disini terkadang bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana menyampaikan kunci simetris tersebut kepada pihak yang diinginkan. Contoh algoritma kunci simetris adalah DES (Data Encryption Standard), 2, RC-4, RC-5, RC-6, TwoFish, Rijndael, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), dan lainnya .

Gambar 2.2 Kunci simetris (Sumber : Herianto, 1999)

Kelebihan kunci simetris:

a. Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma asimetris. b. Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem

real-time

Kelemahan kunci simetris:

a. Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.

b. Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key distribution problem” .

2.3.2 Kunci Asimetris

Pada pertengahan tahun 70-an Whitfield Diffie dan Martin Hellman menemukan teknik enkripsi asimetris yang merevolusi dunia kriptografi. Kunci asimetris adalah pasangan kunci-kunci kriptografi yang salah satunya dipergunakan untuk proses


(24)

enkripsi dan yang satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsikan suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia tertentu dalam hal ini kunci privat untuk melakukan pembongkaran terhadap sandi yang dikirim untuknya.

Dengan cara seperti ini, jika Alice mengirim pesan untuk Bob, Alice dapat merasa yakin bahwa pesan tersebut hanya dapat dibaca oleh Bob, karena hanya Bob yang bisa melakukan dekripsi dengan kunci privatnya. Tentunya Alice harus memiliki kunci publik Bob untuk melakukan enkripsi. Alice bisa mendapatkannya dari Bob, ataupun dari pihak ketiga seperti Eva.

Gambar 2.3 Penggunaan kunci asimetris (Sumber : Herianto, 1999)

Teknik enkripsi asimetris ini jauh lebih lambat ketimbang enkripsi dengan kunci simetris. Oleh karena itu, biasanya bukanlah pesan itu sendiri yang disandikan dengan kunci asimetris, namun hanya kunci simetrislah yang disandikan dengan kunci asimetris. Sedangkan pesannya dikirim setelah disandikan dengan kunci simetris tadi. Contoh algoritma yang menggunakan kunci asimetris adalah RSA (merupakan singkatan penemunya yakni Rivest, Shamir dan Adleman), Digital Signature Algorithm (DSA), Diffie-Hellman, Kriptografi Quantum, ElGamal, dan lainnya.

Contoh penggunaan, misalkan jaringan komputer menghubungkan komputer karyawan di kantor cabang dengan komputer manejer di kantor pusat. Seluruh kepala cabang diberitahu bahwa kalau mereka mengirim laporan ke manejer di kantor pusat, mereka harus mengenkripsi laporan tersebut dengan kunci publik manajer (kunci publik manajer diumumkan kepada seluruh kepala cabang). Untuk mengembalikan laporan tersandi ke laporan semula, hanya manajer yang dapat melakukan dekripsi, karena hanya dialah yang memegang kunci privat. Selama proses transmisi ciphertext dari kantor cabang ke kantor pusat melalui saluran komunikasi mungkin saja data


(25)

yang dikirim disadap oleh pihak ketiga, namun pihak ketiga ini tidak dapat mengembalikan ciphertext ke plaintext-nya karena ia tidak mengetahui kunci untuk dekripsi.

Kelebihan kunci asimetris:

a. Masalah keamanan pada distribusi kunci dapat lebih baik

b. Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit, maksudnya untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci (disebut public-key) bagi para koresponden untuk mengenkripsi pesan, dan private-key untuk mendekripsi pesan.

Kelemahan kunci asimetris:

a. Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris

b. Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang dibandingkan dengan algoritma simetris.

2.4 Block Cipher dan Stream Cipher

Jika kita melihat berdasarkan ukuran serta format data yang akan diproses, maka algoritma kriptografi dapat dibagi menjadi dua bagian yang utama yaitu:

a. Block Cipher, algoritma kriptografi ini bekerja pada suatu data yang berbentuk blok/kelompok data dengan panjang data tertentu (dalam beberapa byte), jadi dalam sekali proses enkripsi atau dekripsi data yang masuk mempunyai ukuran yang sama. Untuk algoritma komputer modern, ukuran blok dasarnya adalah 64 bit atau 128 bit, cukup besar untuk menghindari analisis pemecahan kode dan cukup kecil agar dapat bekerja dengan cepat. Sebelum pemakaian komputer, algoritma biasanya beroperasi pada plaintext, satu karakter per satu operasi. Dapat dikatakan bahwa ini seperti algoritma aliran (stream) yang beroperasi pada aliran karakter.


(26)

b. Stream cipher, algoritma yang dalam operasinya bekerja dalam suatu pesan berupa bit tunggal atau terkadang dalam suatu byte, jadi format data berupa aliran dari bit untuk kemudian mengalami proses enkripsi dan dekripsi.

Stream cipher adalah sebuah algoritma enkripsi simetris di mana output yang dihasilkan ciphertext bit per bit atau byte per byte dari sebuah input plaintext [15]. Yang paling banyak digunakan adalah RC4.

2.5 Tujuan Kriptografi

Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi, yaitu:

1. Kerahasiaan (Confidentiality), adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun, kecuali yang memiliki kunci rahasia atau otoritas untuk membuka informasi yang telah disandikan.

2. Integritas Data (Message Integrity), berhubungan dengan penjagaan (perlindungan data) dari upaya-upaya pengubahan data secara tidak sah. Untuk dapat menjaga integritas data, suatu sistem harus memiliki kemampuan untuk mendeteksi pemanipulasian data yang dilakukan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pendistribusian data lain ke dalam data yang asli.

3. Autentifikasi (Authentication), berhubungan dengan identifikasi, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan harus diautentikasi keasliannya, isi datanya, waktu pengirimannya dan lain sebagainya.

4. Nirpenyangkalan (Non-repudiation), merupakan usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat, juga sebaliknya.


(27)

2.6 Keamanan Algoritma Kriptografi

Sebuah algoritma kriptografi dikatakan aman (computationally secure) bila ia memenuhi tiga kriteria berikut [8] :

1. Persamaan matematis yang menggambarkan operasi algoritma kriptografi sangat kompleks sehingga algoritma tidak mungkin dipecahkan secara analitik.

2. Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam ciphertext tersebut.

3. Waktu yang diperlukan untuk memecahkan ciphertext melampaui lamanya waktu informasi tersebut harus dijaga kerahasiaannya.

2.7 Pembangkit Bilangan Acak

Pembangkit Bilangan Acak atau Random Number Generator (RNG) adalah suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random). RNG ini tidak dapat diterapkan dalam prakteknya. Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu. Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya. Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu atau Pseudo Random Number Generator (PRNG ).


(28)

2.8 Pembangkit Bilangan Acak Semu

Pembangkit Bilangan Acak Semu atau Pseudo Random Number Generator (PRNG) merupakan suatu algoritma yang menghasilkan suatu urutan nilai dimana elemen-elemennya bergantung pada setiap nilai yang dihasilkan. Output dari PRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak. Hal ini didukung oleh penelitian sebelumnya. [12] menyimpulkan dari beberapa algoritma untuk membangkitkan bilangan acak semu, tidak ada yang benar-benar dapat menghasilkan bilangan acak secara sempurna dalam arti benar-benar acak dan tanpa ada perulangan selama pembangkit yang digunakan adalah komputer yang memiliki sifat deterministik dan bilangan yang benar-benar acak hanya dapat dihasilkan oleh perangkat keras (hardware).

Menurut [14], pembangkit bilangan acak yang cocok untuk kriptografi dinamakan Cryptographically Secure Pseudorandom Number Generator (CSPRNG). Persyaratan CSPRNG adalah :

1. Terlihat acak. Artinya mampu melewati uji statistik keacakan .

2. Tidak dapat diprediksi. Perhitungan secara komputasional tidak dapat mempengaruhi prediksi bilangan acak selanjutnya yang telah diberikan

algoritma secara menyeluruh ataupun dari dibangkitkan dari mesin (komputer).

3. Tidak mampu diproduksi kembali. Jika pembangkit bilangan acak mampu dibangkitkan dua kali dengan input yang sama akan memperoleh hasil acak yang berbeda satu dengan lainnya.

Meskipun demikian, pada dasarnya bilangan acak yang diperoleh bukanlah bilangan acak yang sesungguhnya, maka supaya lebih menyerupai bilangan acak, [4] mengatakan beberapa syarat penting yang harus dipenuhi oleh bilangan acak adalah seperti berikut ini :


(29)

1. Dapat diulang. Sekumpulan (barisan) bilangan yang sama harus bisa diperoleh (diulang) dengan menggunakan seed yang sama, hal ini kadang-kadang

diperlukan untuk pemeriksaan dan penelusuran program (debugging).

2. Keacakan. Barisan bilangan harus memenuhi syarat keacakan secara seragam (uniform) yang dapat diuji melalui uji statistika.

3. Periode panjang. Karena pada dasarnya bilangan acak itu merupakan barisan berulang dengan berbagai periode, maka periode pengulangan harus sangat besar atau lama melebihi banyaknya bilangan acak yang diperlukan.

Tidak peka seed. Sekalipun barisan bilangannya bergantung pada seed tetapi sifat keacakan dan periodisasi sedapat mungkin tidak bergantung pada seed-nya.

Secara umum, sebuah PRNG didefinisikan sebagai algoritma kriptografi yang digunakan untuk menghasilkan bilangan secara acak. Pengertian acak sendiri adalah bilangan yang dihasilkan dalam setiap waktu tidaklah sama. Sebuah PRNG memiliki sebuah kondisi awal K yang rahasia. Saat digunakan, PRNG harus membangkitkan output acak yang tidak dapat diidentifikasi oleh kriptanalis yang tidak tahu dan tidak dapat menebak kondisi awal K. Dalam hal ini, PRNG memiliki kesamaan dengan cipher aliran. Akan tetapi, sebuah PRNG harus mampu mengubah kondisi awalnya dengan memproses input sehingga tidak dapat diprediksi oleh kriptanalis. Umumnya PRNG memiliki kondisi awal yang tidak sengaja dapat ditebak oleh kriptanalis dan harus mengalami banyak proses sebelum kondisinya rahasia dan aman. Patut dipahami bahwa sebuah input untuk PRNG memiliki informasi rahasia yang tidak diketahui oleh kriptanalis. Input-input ini umumnya diperoleh dari proses-proses fisik, interaksi user dengan mesin, atau proses eksternal lain yang sulit diprediksi. Dalam desain dan implementasi harus dapat dipastikan bahwa input-input ini memiliki cukup jaminan keamanan dan kerahasiaan.

Kebanyakan algoritma dari PRNG ditujukan untuk menghasilkan suatu sampel yang secara seragam terdistribusi. PRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metode kriptografi. Tingkat kerumitan dari PRNG ini


(30)

menentukan tingkat keamanan dari metode kriptografi. Semakin rumit PRNG yang digunakan maka semakin tinggi tingkat keamanan dari metoda kriptografi [7].

.

Bilangan acak semu

Input seed rahasia

Gambar 2.4 Skema Dasar PRNG

Semua deretan bilangan acak yang dibangkitkan dari rumus matematika, serumit apapun, dianggap sebagai deret acak semu, karena dapat diulang pembangkitannya. Sementara itu, banyak produk software yang dinyatakan sebagai produk yang aman karena menggunakan bilangan acak semacam OTP (One Time Pad). Namun karena OTP ini dibangkitkan dari bilangan acak semu, maka keamanan yang diperoleh juga semu. Pembangkit bilangan acak yang sering diimplementasikan adalah Linier Congruential Generator (LCG) dan Linear Feedback Shift Register (LFSR).

2.9 Linear Congruential Generator (LCG)

Linear Congruential Generator (LCG) mewakili salah satu algoritma pseudo random number yang tertua dan paling populer. Algoritma ini diciptakan oleh D. H. Lehmer pada tahun 1951. Teori dari algoritma ini mudah dipahami dan dapat diimplementasikan secara cepat. Hal ini didukung oleh penelitian sebelumnya. [10] menyimpulkan hasil analisis yang diperoleh bahwa dari segi kecepatan LCG membutuhkan waktu yang paling pendek dalam menghasilkan bilangan acak dibandingkan dengan metode lain. Keuntungan dari LCG adalah operasinya yang sangat cepat. LCG dapat didefinisikan dengan rumusan berikut :

�� = (a.��−� + b) mod m (2.1)


(31)

Dimana :

�� = bilangan acak ke-n dari deretnya

��−1 = bilangan acak sebelumnya

a = faktor pengali b = increment

m = modulus (batas maksimum bilangan acak) (a, b, dan m semuanya konstanta LCG)

Penentuan nilai awal �0 atau ��−1dan konstanta (a, b, dan m) akan menentukan kualitas bilangan acak yang dihasilkan. Bilangan acak yang baik (pada umumnya) apabila terjadinya perulangan atau munculnya bilangan acak yang sama, dapat terjadi setelah sekian banyak pembangkitan bilangan acak (semakin banyak akan semakin baik) serta tidak bisa diprediksi kapan terjadi perulangannya.

Periode dari LCG umumnya adalah sebesar nilai m. Masalah pada LCG adalah lower order bit yang digenerasi mempunyai periode yang lebih pendek dari deretan secara keseluruhan jika m di-set menjadi pangkat 2. Tanpa desain yang benar, dengan m yang sangat besar, bisa jadi periode bilangan acak yang dihasilkan tidak akan maksimal, bahkan mungkin jauh lebih pendek daripada periode maksimalnya. Kunci pembangkit adalah X0 yang disebut umpan (seed). LCG mempunyai periode tidak lebih besar dari m. Jika a, b, dan m dipilih secara tepat (misalnya b seharusnya relatif prima terhadap m dan b < m ), maka LCG akan mempunyai periode maksimal, yaitu m – 1.

Sebagai contoh : Untuk membangkitkan bilangan acak sebanyak 10 kali dengan a=13, b=7, m=11, dan �0= 2. Dengan menggunakan rumus pada metode LCG di atas, akan diperoleh hasil sesuai tabel dibawah ini.


(32)

Tabel 2.1 Hasil pembangkitan bilangan acak dengan metode LCG

n ��−1 a b �.��−1+� m �� = (�.��−1+�) mod m

1 2 13 7 33 11 0

2 0 13 7 7 11 7

3 7 13 7 98 11 10

4 10 13 7 137 11 5

5 5 13 7 72 11 6

6 6 13 7 85 11 8

7 8 13 7 111 11 1

8 1 13 7 20 11 9

9 9 13 7 124 11 3

10 3 13 7 46 11 2

2.10 One Time Pad (OTP)

One Time Pad (OTP) ditemukan pada tahun 1917 oleh G. Vernam dan Major Joseph Mauborgne. OTP sering disebut “Vernam Cipher”. OTP merupakan algoritma yang relatif gampang untuk dipelajari dan sudah dinyatakan oleh para ahli kriptografi sebagai “perfect encryption algorithm”. [3] sebelumnya pernah melakukan penelitian tentang penggunaan algoritma OTP untuk sistem pengamanan access database server.

Cipher yang tidak dapat dipecahkan dikatakan memiliki tingkat kerahasiaan yang sempurna (perfect secrecy). Satu-satunya algoritma kriptografi sempurna, aman dan tidak dapat dipecahkan adalah One Time Pad [8].

Sistem cipher One Time Pad ini tidak dapat dipecahkan karena barisan kunci acak yang ditambahkan ke pesan plaintext yang tidak acak menghasilkan ciphertext yang seluruhnya acak serta panjang kunci harus sama dengan panjang plaintext. Beberapa barisan kunci yang digunakan untuk mendekripsi ciphertext mungkin menghasilkan pesan-pesan plaintext yang mempunyai makna, sehingga kriptanalis tidak punya cara untuk menentukan plaintext mana yang benar. Meskipun One Time


(33)

Pad merupakan cipher yang sempurna aman, namun faktanya ia tidak digunakan secara universal dalam aplikasi kriptografi sebagai satu-satunya sistem cipher yang tidak dapat dipecahkan ( hanya sedikit sistem komunikasi yang menggunakan OTP). Malahan orang masih tetap menggunakan sistem cipher yang dapat dipecahkan. Alasannya adalah dari segi kepraktisan, yaitu karena panjang kunci harus sama dengan panjang pesan, maka One Time Pad hanya cocok untuk pesan berukuran kecil.

2.10.1 Proses Enkripsi dan Dekripsi

Prinsip enkripsi pada algoritma ini adalah dengan mengkombinasikan masing-masing karakter pada plaintext dengan satu karakter pada kunci. Oleh karena itu, panjang kunci harus sama dengan panjang plaintext. Enkripsi dapat dinyatakan sebagai penjumlahan modulo 256 (menggunakan kode ASCII 8 bit) dari satu karakter plaintext dengan satu karakter kunci OTP :

ci = (pi + ki) mod 256 (2.2)

Dalam hal ini, pi adalah plaintext ke-i, ki adalah kunci ke-i, dan ci adalah huruf ciphertext ke-i. Panjang kunci sama dengan panjang plaintext, sehingga tidak ada kebutuhan mengulang penggunaan kunci selama proses enkripsi. Setelah pengirim mengenkripsikan pesan dengan kunci, ia menghancurkan kunci tersebut. Penerimaan pesan menggunakan kunci yang sama untuk mendekripsikan karakter-karakter ciphertext menjadi karakter-karakter plaintext dengan persamaan :

pi = (ci - ki) mod 256 (2.3)

Sebagai contoh : Sebuah huruf plaintext ‘B’ akan dienkripsi dengan menggunakan kunci ‘I’ (kunci ini masih dipilih sembarang, karena belum menggunakan metode pembangkit bilangan acak, untuk sistem yang akan dibuat selanjutnya, kunci yang terpilih sudah menggunakan metode LCG seperti yang sudah


(34)

dibahas pada subbab sebelumnya), maka akan menghasilkan sebuah huruf ciphertext sebagai berikut:

Plaintext : B (66) Kunci : I (73) Plaintext + kunci : 139 Plaintext + kunci mod 256 : 139 ( ‹ )

Untuk mendekripsikannya, akan diproses sebaliknya, yaitu :

Ciphertext : ‹ (139) Kunci : I (73) Ciphertext - kunci : 66 Ciphertext - kunci mod 256 : 66 (B)


(35)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Algoritma One Time Pad

One Time Pad (OTP) merupakan algoritma klasik yang tidak dapat dipecahkan. Hal itu dikarenakan panjang kunci enkripsi memiliki panjang sama dengan jumlah karakter yang akan dienkripsikan. One Time Pad memiliki kelemahan panjang kunci yang terlalu panjang, tetapi selain kelemahan hal itu juga merupakan kelebihannya. Kelemahan dari One Time Pad ini menyebabkan sulit untuk didistribusikan. Oleh karena itu, untuk mendistribusikan kuncinya harus melalui jalur yang berbeda dari pengiriman pesan yang akan dienkripsi.

Dibawah ini ada beberapa hasil analisis algoritma OTP dengan beberapa variasi kunci :

1. Kunci yang dipilih sama dengan plaintext yang akan dienkripsikan

Tabel 3.1 Proses Enkripsi dengan Kunci yang Sama dengan Plaintext Plaintext(p) Ascii Kunci (k) Ascii Cipher = (p+k) mod 256

O 79 O 79 158

N 78 N 78 156

E 69 E 69 138

32 32 64

T 84 T 84 168

I 73 I 73 146

M 77 M 77 154

E 69 E 69 138

32 32 64

P 80 P 80 160

A 65 A 65 130


(36)

2. Kunci yang dipilih berdasarkan jumlah frekuensi karakter terbanyak dari plaintext

Tabel 3.2 Proses Enkripsi dengan Sebuah Kunci Berdasarkan Jumlah Karakter Plaintext yang Berulang

Plaintext(p) Ascii Kunci (k) Ascii Cipher = (p+k) mod 256

O 79 E 69 148

N 78 E 69 147

E 69 E 69 138

32 E 69 101

T 84 E 69 153

I 73 E 69 142

M 77 E 69 146

E 69 E 69 138

32 E 69 101

P 80 E 69 149

A 65 E 69 134

D 68 E 69 137

Dari tabel di atas, saat One Time Pad (OTP) menggunakan sebuah kunci yang sama untuk setiap karakter plaintext-nya, maka saat inilah OTP sama dengan Caesar Cipher.

3. Kunci yang dipilih berdasarkan potongan sebuah kata dari plaintext

Tabel 3.3 Proses Enkripsi dengan Kunci Berdasarkan Sebuah Kata dari Plaintext

Plaintext(p) Ascii Kunci (k) Ascii Cipher = (p+k) mod 256

O 79 T 84 163

N 78 I 73 151

E 69 M 77 146

32 E 69 101

T 84 T 84 168

I 73 I 73 146

M 77 M 77 154

E 69 E 69 138

32 T 84 116

P 80 I 73 153

A 65 M 77 142


(37)

4. Kunci dipilih berdasarkan konsep autokey, yaitu kunci pertama dipilih sembarang, lalu kunci berikutnya merupakan sebagian dari plaintext

Tabel 3.4 Proses Enkripsi dengan Konsep Autokey Plaintext(p) Ascii Kunci (k) Ascii Cipher = (p+k) mod 256

O 79 B 66 145

N 78 O 79 157

E 69 N 78 147

32 E 69 101

T 84 32 116

I 73 T 84 157

M 77 I 73 150

E 69 M 77 146

32 E 69 101

P 80 32 112

A 65 P 80 145

D 68 A 65 133

5. Kunci yang dipilih berdasarkan hasil pembangkitan dari metode LCG, dengan Xo=21, a=6, b=33, m=147

Tabel 3.5 Proses Enkripsi dengan OTP dan LCG Plaintext(p) Ascii Kunci(Ascii) Cipher = (p+k) mod 256

O 79 12 91

N 78 105 183

E 69 75 144

32 42 74

T 84 138 222

I 73 126 199

M 77 54 131

E 69 63 132

32 117 149

P 80 0 80

A 65 33 98


(38)

6. Kunci yang dipilih berdasarkan hasil pembangkitan dari metode LCG, dengan Xo=1 a=32 b=71 m=147

Tabel 3.6 Proses Enkripsi dengan OTP dan LCG Plaintext(p) Ascii Kunci(Ascii) Cipher = (p+k) mod 256

O 79 103 182

N 78 133 211

E 69 64 133

32 61 93

T 84 112 196

I 73 127 200

M 77 19 96

E 69 91 160

32 43 75

P 80 124 204

A 65 70 135

D 68 106 174

7. Kunci yang dipilih berdasarkan hasil pembangkitan dari metode LCG, dengan Xo=50, a=2, b=2, m=147

Tabel 3.7 Proses Enkripsi dengan OTP dan LCG Plaintext(p) Ascii Kunci(Ascii) Cipher = (p+k) mod 256

O 79 102 181

N 78 59 137

E 69 120 189

32 95 127

T 84 45 129

I 73 92 165

M 77 39 116

E 69 80 149

32 15 47

P 80 32 112

A 65 66 131

D 68 134 202

Dari beberapa tabel diatas, dapat dilihat bahwa pengenkripsian dengan algoritma One Time Pad dan pembangkit kunci Linear Congruential Generator


(39)

menghasilkan ciphertext yang lebih acak, dalam arti lebih sedikit frekuensi perulangannya..

3.2 Analisis Algoritma Linear Congruential Generator (LCG)

Linear Congruential Generator membutuhkan empat buah konstanta yaitu Xn-1 atau bisa juga sebagai Xo(seed), a, b, dan m. Dalam sistem ini, keempat konstanta tersebut harus diinputkan oleh user. Penentuan keempat konstanta tersebut akan menentukan kualitas bilangan acak yang dihasilkan.

Di bawah ini, ada beberapa buah contoh hasil analisis yang penulis lakukan dengan beberapa buah kombinasi keempat konstanta LCG :

1. Grafik dengan nilai Xo = 30, a=19, b=3, dan m=11

Gambar 3.1 Grafik dengan nilai Xo = 30, a=19, b=3, dan m=11

Grafik di atas menunjukkan hasil pembangkitan kunci dengan menggunakan metode LCG. Nilai 1, 0, 3, 5, 10, 6, 7, 4, 2, 8 dan 1 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke sebelas.

1 2 3 4 5 6 7 8 9 10 11

Series1 1 0 3 5 10 6 7 4 2 8 1

0 5 10 15

A

x

is

T

it

le


(40)

2. Grafik dengan nilai Xo = 30, a=5, b=31, dan m=11

Gambar 3.2 Grafik dengan Xo = 30, a=5, b=31, dan m=11

Grafik di atas menunjukkan hasil pembangkitan kunci dengan menggunakan metode LCG. Nilai 5, 1, 3, 2, 8, 5, 1, 3, 2, 8, 5 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke enam.

3. Grafik dengan nilai Xo = 30, a=13, b=7, dan m=11

Gambar 3.3 Grafik dengan Xo = 30, a=13, b=7, dan m=11

Grafik di atas menunjukkan hasil pembangkitan kunci dengan menggunakan metode LCG. Nilai 1, 9, 3, 2, 0, 7, 10, 5, 6, 8, 1 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke sebelas.

1 2 3 4 5 6 7 8 9 10 11

Series1 5 1 3 2 8 5 1 3 2 8 5

0 2 4 6 8 10

Xn

Grafik LCG

1 2 3 4 5 6 7 8 9 10 11

Series1 1 9 3 2 0 7 10 5 6 8 1

0 2 4 6 8 10 12

Xn


(41)

4. Grafik dengan nilai Xo = 30, a=13, b=10, dan m=11

Gambar 3.4 Grafik dengan Xo = 30, a=13, b=10, dan m=11

Grafik di atas menunjukkan hasil pembangkitan kunci dengan menggunakan metode LCG. Nilai 4, 7, 2, 3, 5, 9, 6 0, 10, 8, 4 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke sebelas.

5. Grafik dengan nilai Xo = 30, a=3, b=23, dan m=11

Gambar 3.5 Grafik dengan Xo = 30, a=3, b=23, dan m=11

Grafik di atas menunjukkan hasil pembangkitan kunci dengan menggunakan metode LCG. Nilai 3, 10, 9, 6, 8, 3, 10, 9, 6, 8, 3 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke enam.

Pada bab sebelumnya sudah disinggung bahwa LCG mempunyai periode tidak lebih besar dari m. Jika a, b, dan m dipilih secara tepat (misalnya b seharusnya relatif prima terhadap m dan b < m), maka LCG akan mempunyai periode maksimal, yaitu

1 2 3 4 5 6 7 8 9 10 11

Series1 4 7 2 3 5 9 6 0 10 8 4

0 2 4 6 8 10 12

Xn

Grafik LCG

1 2 3 4 5 6 7 8 9 10 11

Series1 3 10 9 6 8 3 10 9 6 8 3

0 2 4 6 8 10 12

Xn


(42)

m – 1. Dari grafik di atas, dapat kita buktikan pernyataan tersebut. Pada gambar 3.1 sama halnya pada gambar 3.3 dan gambar 3.4, terlihat kombinasi secara tepat antara a, b, dan m, sehingga LCG mempunyai periode maksimal (m-1), dimana dengan m = 11, perulangan terjadi pada n=11. Sedangkan pada gambar 3.2 dan 3.5, kombinasi a, b, dan m sangat buruk, sehingga terjadi perulangan saat n = 6 dengan m = 11, sehingga tidak memenuhi syarat untuk menghasilkan LCG yang memiliki periode maksimal.

3.3 Desain Sistem

Proses perancangan yang akan digunakan pada sistem ini merupakan proses perancangan yang berorientasi pada prosedural, untuk itu dibuatlah algoritma dan flowchart dan perancangan tampilan. Aplikasi ini dirancang suatu sistem yang memproses karakter ASCII (American Standard Code for Information Interchange) 256 karakter.

3.4 Algoritma dan Flowchart Sistem

Prosedur ini merupakan gambaran sistem secara keseluruhan. Sistem ini terdiri ada tiga proses utama, yaitu proses enkripsi, proses pembangkitan kunci secara acak, dan proses dekripsi. Di bawah ini akan digambarkan flowchart dari sistem secara garis besar :

1. Start

2. Masuk pada tampilan utama sistem

3. Ada empat buah pilihan, pilih salah satu diantaranya

4. Untuk pilihan keluar, setelah di-klik akan muncul pilihan apakah mau keluar atau tidak, jika iya maka akan keluar dari sistem, jika tidak akan tetap pada tampilan utama dari sistem.

5. Untuk pilihan enkripsi dari file, setelah di-klik akan muncul form untuk meng-import file teks, lalu akan ada proses pembangkitan kunci dan proses enkripsi serta dekripsi dari file teks.


(43)

6. Untuk tampilan enkripsi dari keyboard, setelah di-klik akan muncul form untuk menginputkan plaintext, lalu ada proses pembangkitan kunci dan proses enkripsi serta dekripsi dari keyboard.

7. Untuk pilihan bantuan, jika di-klik akan muncul form bantuan yang menjelaskan secara singkat tahap-tahap pada sistem ini


(44)

Tidak

Tidak Tidak Tidak

Ya Ya Ya

Ya

Gambar 3.6 Flowchart Sistem

Enkripsi dan dekripsi file Finish Start Pilihan Enkripsi dan dekripsi dari keyboard Bangkitkan kunci Enkripsi dan dekripsi dari file teks Bantuan Keluar Bangkitkan kunci Enkripsi dan dekripsi dari keyboard Importfile,

tampilkan isi file Input plaintext Tampilkan form

browse plaintext

Tampilkan dan simpan sebagai

ciphertext

Tampilkan plaintext

Tampilkan from input plaintext

Tampilkan dan simpan sebagai ciphertext Tampilkan plaintext Tampilkan form bantuan

Dekripsi ciphertext

Dekripsi ciphertext


(45)

3.4.1 Algoritma dan Flowchart Proses Enkripsi dan Dekripsi dari File Teks

Prosedur ini digunakan untuk melakukan proses enkripsi dan dekripsi. Pada tahap ini juga akan dipanggil beberapa prosedur pendukung yang telah dijelaskan sebelumnya. Di bawah ini akan dijelaskan prosesnya secara lebih rinci :

1. Start

2. Pilih tombol browse untuk mengambil file teks yang akan dienkripsikan 3. Hitung panjang plaintext

4. Jika panjang plaintext lebih dari 1024 karakter, akan ditampilkan pesan error, dan isi file harus dipersingkat, jika tidak lanjut ke tahap berikutnya

5. Konversi plaintext ke dalam kode ASCII 6. Bangkitkan kunci

7. Hitung ciphertext, Ci = (Pi + Ki

adalah kunci ke-i, dan Ci adalah ciphertext ke-i

) mod 256 ; dimana Pi adalah plaintext ke-i, Ki

8. Tampilkan ciphertext yang berupa kode ASCII 9. Simpan ciphertext

10. Untuk mendekripsikannya, lalu hitung plaintext,Pi = (Ci - Ki 11. Ubah plaintext ke karakter semula dan tampilkan

) mod 256

12. Finish


(46)

Ya

Tidak

A Browse file teks

Tentukan panjang plaintext, plaintext = konversi ke

kode ASCII

Bangkitkan kunci

Ci = (Pi + Ki) mod 256 Start

If length (plain) >

1024 Tampilkan isi file

Tampilkan pesan error

Tampilkan nilai ASCII, lalu simpan sebagai


(47)

Gambar 3.7 Flowchart Proses Enkripsi dan Dekripsi dari File Teks

3.4.2 Algoritma dan Flowchart Proses Pembangkitan Kunci

Prosedur ini digunakan untuk melakukan proses pembangkitan kunci dengan metode Linear Congruential Generator (LCG). Proses ini dilakukan setelah user menginputkan plaintext, dan akan dipanggil kembali saat mau mendekripsikan ciphertext. Di bawah ini akan dijelaskan prosesnya secara lebih rinci :

1. Start

2. Inputkan nilai Xo (seed), a, b, m yang merupakan konstanta LCG 3. Hitung, total(1) = mod (a*Xo+b, m)

4. For i= 2: length (plain), jadi kunci akan dibangkitkan sepanjang plaintext, sehingga panjang kunci sama dengan panjang plaintext yang merupakan ciri khas dari algoritma OTP

5. Hitung, total = mod (a*total (i-1) +b, m) A

Pi = (Ci - Ki) mod 256

Konversi plaintext ke karakter semula

Finish Tampilkan plaintext


(48)

6. Selanjutnya, kunci yang diperoleh dimodulokan lagi dengan 256 untuk konversi ke ASCII

7. Tampilkan kunci acak dan tampilkan juga grafik keacakannya 8. Finish

Gambar 3.8 Flowchart Proses Pembangkitan Kunci

Start

Input Xo, a,b, dan m

For i = 2: length (plain) total(1) = mod (a*Xo+b, m)

total (i) = mod (a*total ( i-1) +b, m)

Finish Tampilkan hasil pembangkitan kunci dan grafik keacakan


(49)

3.4.3 Algoritma dan Flowchart Proses Enkripsi dan Dekripsi dari keyboard

Prosedur ini digunakan untuk melakukan proses enkripsi dan dekripsi. Pada tahap ini juga akan dipanggil beberapa prosedur pendukung yang telah dijelaskan sebelumnya. Di bawah ini akan dijelaskan prosesnya secara lebih rinci :

1. Start

2. Inputkan plaintext yang ingin dienkripsikan pada tempat yang telah disediakan

3. Hitung panjang plaintext

4. Jika panjang plaintext lebih dari 1024 karakter, akan ditampilkan pesan error, dan isi file harus dipersingkat, jika tidak lanjut ke tahap berikutnya 5. Konversi plaintext ke dalam kode ASCII

6. Bangkitkan kunci

7. Hitung ciphertext, Ci = (Pi + Ki

8. Tampilkan ciphertext yang berupa kode ASCII

) mod 256 ; dimana Pi adalah plaintext ke-i, Ki adalah kunci ke-ke-i, dan Ci adalah ciphertext ke-i

9. Simpan ciphertext

10.Untuk mendekripsikannya, hitung plaintext, Pi = (Ci - Ki 11.Ubah plaintext ke karakter semula dan tampilkan

) mod 256


(50)

Ya

Tidak

A Input plaintext

Bangkitkan kunci

Ci = (Pi + Ki) mod 256 Start

If length (plain) >

1024

Tentukan panjang plaintext, plaintext = konversi ke kode ASCII

Tampilkan pesan error

Tampilkan nilai ASCII, lalu simpan sebagai


(51)

Gambar 3.9 Flowchart Proses Enkripsi dan Dekripsi dari Keyboard

3.5 Diagram Use Case

Diagram Use Case adalah diagram yang menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem tersebut berinteraksi dengan dunia luar dan menjelaskan sistem secara fungsional yang terlihat user. Diagram use case menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Di bawah ini adalah diagram use case dari sistem yang telah dibuat.

A

Pi = (Ci - Ki) mod 256

Konversi plaintext ke karakter semula

Finish Tampilkan plaintext


(52)

Input plaintext

Input konstanta LCG

Bangkitkan kunci acak

Informasi detail dari plaintext

Enkripsi plaintext

Dekripsi ciphertext

Simpan kunci acak

Simpan ciphertext

<< include >>

User << include >>

<< include >> << include >>

<< extend >> << extend >>

Gambar 3.10 Diagram Use Case Sistem

Tabel 3.8 Spesifikasi Use Case Kriptografi

Nama Analisis dan perancangan aplikasi pesan rahasia menggunakan algoritma One Time Pad (OTP) dengan pembangkit bilangan acak Linear Congruential

Generator (LCG).

Actor User ( pengguna)

Dekripsi singkat Sistem akan mengenkripsi dan membangkitkan kunci serta mendekripsi pesan yang diinputkan user.

Pre Condition Sistem menyediakan form untuk menginputkan pesan (plaintext) dan menginputkan konstanta LCG sebagai pembangkit kunci acak.

Post Condition Sistem menampilkan hasil dari pembangkitan kunci acak, dan ciphertext hasil enkripsi, serta plaintext semula hasil dari dekripsi.


(53)

3.6 Perancangan Antarmuka

Untuk perancangan antarmuka pemakai (user interface) akan dirancang kedalam 4 halaman tampilan, yang terdiri dari menu utama yang menampilkan beberapa tombol, tombol untuk mengenkripsi dan mendekripsikan file teks yang berisikan sebuah form, tombol untuk mengenkripsi dan mendekripsikan plaintext langsung yang diinputkan dari keyboard yang berisikan sebuah form, dan tombol bantuan yang akan menampilkan form yang menjelaskan cara kerja sistem (program), dan yang terakhir tombol keluar untuk keluar dari program.

3.6.1 Tampilan Menu Utama

Pada tampilan menu utama, ada terdapat empat buah tombol, tombol pertama enkripsi dan dekripsi dari file, jika tombol ini diklik, maka proses akan dilanjutkan ke tampilan file encryption. Tombol kedua enkripsi dan dekripsi dari keyboard, jika tombol ini diklik, maka proses akan dilanjutkan ke tampilan encryption. Tombol ketiga bantuan, jika diklik akan muncul tampilan help. Tombol yang terakhir adalah pilihan untuk keluar dari sistem.

Gambar 3.11 RancanganTampilan Awal

1

ANALISIS DAN PERANCANGAN APLIKASI PESAN RAHASIA MENGGUNAKAN ALGORITMA ONE TIME PAD (OTP) DENGAN

PEMBANGKIT BILANGAN ACAK LINEAR CONGRUENTIAL

GENERATOR (LCG)

7 oleh : BILQIS 081401072 2 MENU UTAMA

3 ENKRIPSI & DEKRIPSI dari FILE 4 ENKRIPSI & DEKRIPSI dari KEYBOARD

5BANTUAN


(54)

Pada gambar di atas terdapat beberapa komponen-komponen visual yang akan dijelaskan sebagai berikut :

1. Terdiri atas tiga buah komponen Static Text yang disusun sedemikian rupa sebagai judul program.

2. Terdiri atas sebuah komponen Static Text dengan nama ‘MENU UTAMA’.

3. Terdiri atas sebuah Push Button dengan nama ‘ENKRIPSI & DEKRIPSI dari FILE’ .

4. Terdiri atas sebuah Push Button dengan nama ‘ENKRIPSI & DEKRIPSI dari KEYBOARD’ .

5. Terdiri atas sebuah Push Button dengan nama ‘BANTUAN’ . 6. Terdiri atas sebuah Push Button dengan nama ‘KELUAR’ . 7. Terdiri atas sebuah Static Text untuk menampilkan nama penulis.

3.6.2 Tampilan Enkripsi dan Dekripsi dari File

Pada halaman ini (file encryption), tombol browse diklik untuk memilih file teks yang akan dienkripsikan, selanjutnya tombol properties diklik, lalu tombol kunci. Kemudian, ada empat buah konstanta yang harus diinputkan oleh user untuk memproses kunci secara acak, selanjutnya klik tombol bangkitkan kunci, simpan, lalu enkripsi. Karakter yang telah terenkripsi beserta kode ASCII akan ditampilkan. Selanjutnya klik simpan ciphertext dan klik dekripsi, plaintext semula akan ditampilkan. Pada tombol kembali, jika diklik akan kembali ke tampilan menu utama, sedangkan pada tombol lanjut akan masuk ke tampilan enkripsi dan dekripsi dari keyboard.


(55)

Gambar 3.12 Rancangan Tampilan Enkripsi dan Dekripsi dari File Pada gambar di atas terdapat beberapa komponen-komponen visual yang akan dijelaskan sebagai berikut :

1. Terdiri atas sebuah komponen Static Text sebagai judul.

2. Terdiri atas sebuah Edit Text untuk menampilkan nama file yang akan dienkripsi.

3. Terdiri atas sebuah Edit Text untuk menampilkan isi file. 4. Terdiri atas sebuah Push Button dengan nama ‘Browse’. 5. Terdiri atas sebuah Push Button dengan nama ‘Properties’. 6. Terdiri atas sebuah Push Button dengan nama ‘Kunci’.

7. Terdiri atas sebuah Edit Text untuk menampilkan panjang karakter dari file. 8. Terdiri atas sebuah Edit Text untuk menampilkan kode ASCII dari karakter

yang sudah dikonversi. 1

ENKRIPSI dan DEKRIPSI dari FILE TEKS

2 Nama file 3 Isi file 13 Kunci yang dibang kitkan 7 Length 8 Kode ASCII 4 Browse 5 Properti 6 Kunci 9 xo 10 a 11 b 12 m 15 Bangkit kankunci 16 Simpa n kunci 17 Enkri psi 18 Ula ngi 14 Grafik keacakan 19 Karakter ciphertext 20 Kode ASCII 23 Plaintext semula 21 Simpan ciphertext 22 Dekripsi 24


(56)

9. Terdiri atas sebuah Edit Text untuk menginputkan nilai Xo. 10.Terdiri atas sebuah Edit Text untuk menginputkan nilai a. 11.Terdiri atas sebuah Edit Text untuk menginputkan nilai b. 12.Terdiri atas sebuah Edit Text untuk menginputkan nilai m.

13.Terdiri atas sebuah Edit Text untuk menampilkan hasil dari pembangkitan kunci.

14.Terdiri atas sebuah Axes untuk menampilkan grafik keacakan. 15.Terdiri atas sebuah Push Button dengan nama ‘Bangkitkan kunci’. 16.Terdiri atas sebuah Push Button dengan nama ‘Simpan kunci’. 17.Terdiri atas sebuah Push Button dengan nama ‘Enkripsi’. 18.Terdiri atas sebuah Push Button dengan nama ‘Ulangi’.

19.Terdiri atas sebuah Edit Text untuk menampilkan karakter ciphertext. 20.Terdiri atas sebuah Edit Text untuk menampilkan kode ASCII ciphertext. 21.Terdiri atas sebuah Push Button dengan nama ‘Simpan ciphertext’. 22.Terdiri atas sebuah Push Button dengan nama ‘Dekripsi’.

23.Terdiri atas sebuah Edit Text untuk menampilkan karakter plaintext semula.

24.Terdiri atas sebuah Push Button dengan nama ‘Kembali’. 25.Terdiri atas sebuah Push Button dengan nama ‘Lanjut’.

3.6.3 Tampilan Enkripsi dan Dekripsi dari Keyboard

Pada halaman ini (encryption), plaintext diisi secara langsung melalui keyboard, selanjutnya tombol properties diklik, lalu tombol kunci. Kemudian, ada empat buah konstanta yang harus diinputkan oleh user untuk memproses kunci secara acak, selanjutnya klik tombol bangkitkan kunci, simpan, lalu enkripsi. Karakter yang telah terenkripsi beserta kode ASCII akan ditampilkan. Selanjutnya klik simpan ciphertext dan klik dekripsi, plaintext semula akan ditampilkan. Pada tombol kembali, jika diklik akan kembali ke tampilan menu utama, sedangkan pada tombol lanjut akan masuk ke tampilan enkripsi dan dekripsi dari keyboard.


(57)

Gambar 3.13 Rancangan Tampilan Enkripsi dan Dekripsi dari Keyboard

Pada gambar di atas terdapat beberapa komponen-komponen visual yang akan dijelaskan sebagai berikut :

1. Terdiri atas sebuah komponen Static Text sebagai judul.

2. Terdiri atas sebuah Edit Text untuk menginputkan plaintext yang akan dienkripsi.

3. Terdiri atas sebuah Push Button dengan nama ‘Properties’. 4. Terdiri atas sebuah Push Button dengan nama ‘Kunci’.

5. Terdiri atas sebuah Edit Text untuk menampilkan panjang karakter dari plaintext yang diinputkan sebelumnya.

6. Terdiri atas sebuah Edit Text untuk menampilkan kode ASCII dari karakter yang sudah dikonversi.

8 a 9 b 10 m 1

ENKRIPSI dan DEKRIPSI dari KEYBOARD

2 Isi file 11 Kunci yang dibang kitkan 5 Length 6 Kode ASCII 3 Properties 4 Kunci 7 xo 13 Bangkit kan kunci 14 Simpa n kunci 15 Enkri psi 16 Ulan gi 12 Grafik keacakan 17 Karakter ciphertext 18 Kode ASCII 21 Plaintext semula 19 Simpan ciphertext 20 Dekripsi 22

Kembali 23Lanjut 8 a 9 b 10 m


(58)

7. Terdiri atas sebuah Edit Text untuk menginputkan nilai Xo. 8. Terdiri atas sebuah Edit Text untuk menginputkan nilai a. 9. Terdiri atas sebuah Edit Text untuk menginputkan nilai b. 10.Terdiri atas sebuah Edit Text untuk menginputkan nilai m.

11.Terdiri atas sebuah Edit Text untuk menampilkan hasil dari pembangkitan kunci.

12.Terdiri atas sebuah Axes untuk menampilkan grafik keacakan. 13.Terdiri atas sebuah Push Button dengan nama ‘Bangkitkan kunci’. 14.Terdiri atas sebuah Push Button dengan nama ‘Simpan kunci’. 15.Terdiri atas sebuah Push Button dengan nama ‘Enkripsi’. 16.Terdiri atas sebuah Push Button dengan nama ‘Ulangi’.

17.Terdiri atas sebuah Edit Text untuk menampilkan karakter ciphertext. 18.Terdiri atas sebuah Edit Text untuk menampilkan kode ASCII ciphertext. 19.Terdiri atas sebuah Push Button dengan nama ‘Simpan ciphertext’. 20.Terdiri atas sebuah Push Button dengan nama ‘Dekripsi’.

21.Terdiri atas sebuah Edit Text untuk menampilkan karakter plaintext semula.

22.Terdiri atas sebuah Push Button dengan nama ‘Kembali’. 23.Terdiri atas sebuah Push Button dengan nama ‘Lanjut’.

3.6.4 Tampilan Bantuan

Pada halaman ini (help), berisikan penjelasan singkat tentang mekanisme system pengenkripsian dan pendekripsian pesan. Terdapat sebuah tombol kembali, jika diklik akan kembali ke tampilan menu utama.


(59)

Gambar 3.14 RancanganTampilan Bantuan

Pada gambar di atas terdapat beberapa komponen-komponen visual yang akan dijelaskan sebagai berikut :

1. Terdiri atas sebuah komponen Panel dengan judul ‘Bantuan’. 2. Terdiri atas sebuah Edit Text untuk menjelaskan proses dari sistem. 3. Terdiri atas sebuah Edit Text untuk menjelaskan proses dari sistem. 4. Terdiri atas sebuah Push Button dengan nama ‘Kembali’.

1

Bantuan

2

Penjelasan singkat

3

Penjelasan singkat

4 Kembali


(60)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Setelah perancangan sistem kriptografi dibuat, selanjutnya masuk ke pada tahap implementasi atau pengkodean ke dalam bentuk program komputer. Implementasi dilakukan dengan menggunakan bahasa pemrograman Matlab 7.5.0.

Pada perancangan perangkat lunak diberi judul ”Analisis dan Perancangan Aplikasi Pesan Rahasia Menggunakan Algoritma One Time Pad (OTP) dengan Pembangkit Bilangan Acak Linear Congruential Generator (LCG)”. Ketika program dijalankan, maka akan ditampilkan interface seperti di bawah ini :


(61)

Terdapat empat buah tombol, jika tombol pertama diklik yaitu tombol Enkripsi dan Dekripsi dari File akan muncul tampulan seperti di bawah ini :

Gambar 4.2 Tampilan Menu Enkripsi dan Dekripsi dari File

Selanjutnya, klik tombol browse, lalu, pilih file yang akan dienkripsi, akan muncul tampilan seperti ini :


(62)

Lalu klik open kemudian pada program akan muncul nama file pada tempat yang sudah disediakan, kemudian klik tombol properties, maka akan muncul tampilan seperti ini :

Gambar 4.4 Tampilan Isi File Teks dan Properties

Dalam proses pengetikan plaintext maupun isi dari file teks, harus dipastikan bahwa plaintext diketik tanpa menggunakan tombol enter pada keyboard karena program tidak dapat menentukan dengan benar jumlah karakter dari plaintext, dimana panjang karakter akan menentukan panjang kunci untuk mengenkripsi dan dekripsi. Begitu juga pada file *.txt, harus dimodifikasi agar isinya hanya satu baris ke kanan tanpa menggunakan tombol enter untuk baris baru.

Selanjutnya, klik tombol kunci untuk menginputkan empat buah konstanta sebagai syarat untuk membangkitkan kunci pada metode LCG, lalu setelah diinputkan keempat konstanta tersebut, klik tombol bangkitkan kunci, lalu setelah itu akan ada tanda peringatan untuk mengecek hasil pembangkitan kunci, perhatikan kunci, jika perulangan terjadi secara terus menerus, silahkan tekan tombol ‘ulangi’, lebih jelasnya perhatikan gambar dibawah ini :


(63)

Gambar 4.5 Tampilan Pembangkitan Kunci

Selanjutnya, klik tombol simpan dan simpanlah dengan nama file yang diinginkan, lalu klik tombol enkripsi, setelah itu tampilan akan menjadi seperti dibawah ini :


(64)

Setelah itu, untuk kembali melihat pesan semula, klik tombol simpan ciphertext, lalu klik tombol dekripsi, maka akan muncul tampilan seperti ini :

Gambar 4.7 Tampilan Plaintext Semula Hasil Dekripsi

Jika pesan yang diinputkan melebihi 1024 buah karakter, maka akan muncul tampilan seperti dibawah ini :


(65)

Pada saat penginputan empat buah konstanta, jika input yang dimasukkan bukan merupakan bilangan, akan muncul pesan error seperti tampilan dibawah :

Gambar 4.9 Tampilan Pesan Error untuk Inputan Numerik

Selanjutnya, Pada gambar 4.7 jika klik tombol lanjut,maka tampilan dengan proses yang sama akan muncul seperti gambar di bawah ini :


(66)

Jika klik tombol lanjut, maka akan muncul tampilan bantuan seperti gambar di bawah ini :

Gambar 4.11 Tampilan Menu Bantuan

Jika klik tombol kembali, maka program akan kembali pada tampilan menu utama seperti tampilan dibawah, jika klik tombol keluar.


(67)

Jika klik tombol ya, maka user akan keluar dari sistem, jika klik tombol tidak, maka akan tetap berada pada halaman utama.

4.2 Pengujian

Penulis hanya menguji pada menu untuk mengenkripsi dan mendekripsi pesan yang diinputkan langsung dari keyboard. Pada menu utama, terdapat empat buah tombol, untuk mengenkripsi pesan dari file teks, klik tombol kedua yaitu tombol Enkripsi dan Dekripsi dari Keyboard, maka akan muncul tampulan seperti di bawah ini :

1. Enkripsi plaintext dengan metode LCG (Xo=2, a=6, b= 2731, dan m=32531), dimana nilai b dan m dibangkitkan oleh sistem.

Gambar 4.13 Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (1)

Gambar 4.13 di atas menampilkan keacakan dari pembangkitan kunci. Terlihat grafik yang sangat acak dimana pada elemen pertama kunci yang dihasilkan 183, elemen yang kedua 245, elemen yang ketiga 48, dan seterusnya. Dan dapat diperhatikan juga dengan ciphertext yang dihasilkan juga cukup acak.


(68)

Di bawah ini adalah tampilan kunci acak dan ciphertext yang telah disimpan user sebelumnya :

Gambar 4.14 Tampilan Kunci yang Telah Dibangkitkan dan Disimpan dalam random key.txt

Gambar 4.15 Tampilan Ciphertext yang Disimpan dalam ciphertext.txt

2. Enkripsi plaintext dengan metode LCG (Xo=1, a=2, b= 43, dan m=76613), dimana semua konstanta LCG diinputkan oleh user.


(69)

Gambar 4.16 Tampilan Menu Enkripsi dan Dekripsi dari Keyboard (2)

Gambar 4.16 di atas menampilkan keacakan dari pembangkitan kunci. Dapat dilihat bahwa pada proses pembangkitan kunci ada beberapa buah kunci yang berulang secara berturut, ini diakibatkan karena kunci dimodulasikan dengan nilai 256 untuk mengkonversi ke kode ASCII . Meskipun hasilnya terjadi perulangan beberapa kali, kunci ini tetap bisa digunakan untuk mengenkripsi karena perulangan nilainya tidak berulang secara keseluruhan.

3. Enkripsi plaintext dengan metode LCG (Xo=12, a=3, b= 2, dan m=121), dimana semua konstanta LCG diinputkan oleh user.


(1)

% hObject handle to inputkeyboard (see GCBO)

% eventdata reserved - to be defined in a_ed future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of inputkeyboard as text

% str2double(get(hObject,'String')) returns contents of inputkeyboard as a_ed double

% --- Executes during object creation, after setting all properties. function inputkeyboard_CreateFcn(hObject, eventdata, handles)

% hObject handle to inputkeyboard (see GCBO)

% eventdata reserved - to be defined in a_ed future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a_ed white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function isi_Callback(hObject, eventdata, handles)

% hObject handle to isi (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of isi as text

% str2double(get(hObject,'String')) returns contents of isi as a double

% --- Executes during object creation, after setting all properties. function isi_CreateFcn(hObject, eventdata, handles)

% hObject handle to isi (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function dekrip_Callback(hObject, eventdata, handles)

% hObject handle to dekrip (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of dekrip as text % str2double(get(hObject,'String')) returns contents of dekrip as a double

% --- Executes during object creation, after setting all properties. function dekrip_CreateFcn(hObject, eventdata, handles)

% hObject handle to dekrip (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called


(2)

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function as_cipher_Callback(hObject, eventdata, handles)

% hObject handle to as_cipher (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of as_cipher as text % str2double(get(hObject,'String')) returns contents of

as_cipher as a double

% --- Executes during object creation, after setting all properties. function as_cipher_CreateFcn(hObject, eventdata, handles)

% hObject handle to as_cipher (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on button press in pushbutton19.

function pushbutton19_Callback(hObject, eventdata, handles) b=1; m=1;

if b == m while isprime(b)==0

b=randint(1,1,[50,6000]); %range b 50-6000

end

while isprime(m)==0

m=randint(1,1,[500,60000]); %range m 500-60000

end else

return end

set(handles.b_ed,'String',b); set(handles.m_ed,'String',m);

% hObject handle to pushbutton19 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

4.

Tampilan bantuan (help.m)

function varargout = help(varargin)

% HELP M-file for help.fig

% HELP, by itself, creates a new HELP or raises the existing % singleton*.

%

% H = HELP returns the handle to a new HELP or the handle to % the existing singleton*.

%


(3)

% function named CALLBACK in HELP.M with the given input arguments.

%

% HELP('Property','Value',...) creates a new HELP or raises the % existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before help_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application

% stop. All inputs are passed to help_OpeningFcn via varargin. %

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help help % Last Modified by GUIDE v2.5 21-Mar-2012 12:54:02

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @help_OpeningFcn, ...

'gui_OutputFcn', @help_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before help is made visible.

function help_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn. % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to help (see VARARGIN) % Choose default command line output for help

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes help wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = help_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure


(4)

% --- Executes on button press in enkrip.

function enkrip_Callback(hObject, eventdata, handles)

%enk=handles.enk;

%set(handles.edit1,'String',enk);

% hObject handle to enkrip (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of enkrip % --- Executes on button press in dekrip.

function dekrip_Callback(hObject, eventdata, handles)

% hObject handle to dekrip (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of dekrip

function edit1_Callback(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit2_Callback(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double

% --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');


(5)

% --- Executes on button press in enkr.

function enkr_Callback(hObject, eventdata, handles)

% hObject handle to enkr (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of enkr

% --- Executes on button press in dekr.

function dekr_Callback(hObject, eventdata, handles)

% hObject handle to dekr (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of dekr

% ---

function Untitled_1_Callback(hObject, eventdata, handles)

% hObject handle to Untitled_1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function edit4_Callback(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double

% --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on button press in back.

function back_Callback(hObject, eventdata, handles) menu_utama

% hObject handle to back (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)


(6)

CURRICULUM VITAE

Nama

: Bilqis

Alamat Sekarang

: Jalan Gajah no. 39

Alamat Orang Tua

: Jalan Gajah no. 39

Telp/Hp

: 085261090422

Email

:

Riwayat Pendidikan

SD N 060805 Medan dari Tahun 1996 s/d Tahun 2002

SMP N 13 Medan dari Tahun 2002 s/d Tahun 2005

SMU N 8 Medan dari Tahun 2005 s/d Tahun 2008

Universitas Sumatera Utara Medan dari Tahun 2008 s/d Tahun 2012

Keahlian / Kursus yang diikuti

Bahasa Inggris