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
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
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,
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
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
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.
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.
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
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
DAFTAR GAMBAR
Proses - proses kriptografi
Kunci simetris
Penggunaan kunci asimetris
Skema Dasar PRNG
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
4.4
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)
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.
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.
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]
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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)
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
Tidak
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
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
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
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)
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
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
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
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.
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
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
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
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
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
ENKRIPSI dan DEKRIPSI dari KEYBOARD
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
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
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 :
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 :
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
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 :
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 :
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 :
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.