PERANCANGAN APLIKASI RSA DENGAN BILANGAN PRIMA
LEHMANN
DAN PEMBANGKIT BILANGAN ACAK
BERBASIS RSA
SKRIPSI
DINI RAHAYU
071402002
PROGRAM STUDI TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI
PERANCANGAN APLIKASI RSA DENGAN BILANGAN PRIMA
LEHMANN
DAN PEMBANGKIT BILANGAN ACAK
BERBASIS RSA
SKRIPSI
Diajukanuntuk melengkapi tugas dan memenuhi syarat memperoleh
ijazah Sarjana Teknologi Informasi
DINI RAHAYU
071402002
PROGRAM STUDI TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGIINFORMASI
UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : PERANCANGAN APLIKASI RSA DENGAN
PEMBANGKIT BILANGAN PRIMA LEHMANN DAN PEMBANGKIT BILANGAN ACAK BERBASIS RSA
Kategori : SKRIPSI
Nama : DINI RAHAYU
Nomor Induk Mahasiswa : 071402002
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI
Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (Fasilkom-TI) UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Syahriol Sitorus, S.Si,M.Si M. Anggia Muchtar, ST, MM.IT
NIP. NIP.
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
PERNYATAAN
PERANCANGAN APLIKASI RSA DENGAN BILANGAN PRIMA LEHMANN
DAN PEMBANGKIT BILANGAN ACAK BERBASIS RSA
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 29 Januari 2014
PENGHARGAAN
Alhamdulilah, puji dan syukur penulis panjatkan kehadirat Allah SWT, serta shalawat dan salam kepada junjungan kita nabi Muhammad SAW, karena atas berkah, rahmat dan hidayahnya penulis dapat menyelesaikan penyusunan skripsi ini. Ucapan terima kasih yang tidak terhingga kepada Allah SWT yang selalu membimbing dan mengajarkan saya akan pentingnya kesabaran dan tanggung jawab selama penyusunan skripsi ini.
Dalam penulisan skripsi ini penulis banyak mendapatkan bantuan serta dorongan dari pihak lain. Dalam kesempatan ini dengan segala kerendahan hati, penulis mengucapkan terima kasih kepada:
1. Kedua orang tua penulis, yaitu Ayahanda Suhardi yang selalu memberikan doa, dukungan moril dan materi kepada penulis serta Ibunda Ronisah Sihotang yang terus menerus mengasihi, membimbing dan terus mendukung penulis di dalam doa beliau sehingga dapat menyelesaikan skripsi ini. Kepada Siti Hardinisah, Ilham Yahya, Ade Agung Pawiro, Nur Ayifa dan Shofi Aulia Rahma selaku adik penulis yang selalu membantu dan mendukung penulis juga kepada abang Muhammad Iqbal, Pakde Sadikin, Paklek Sukardi dan Bu Atik yang telah mendukung penulis serta kepada Kim Jeonghoon dan Lee Sungmin oppa atas bantuan motivasi, hiburan dan dukunganya. Dan seluruh keluarga besar atas perhatian dan dukungannya kepada penulis.
2. Ketua program studi Teknologi Informasi, Bapak Prof. Opim Sitompul, M.Sc dan Sekteraris Program Studi Teknologi Informasi Bapak Drs. Sawaluddin, M.IT, Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen pada Program Studi Teknologi Informasi dan pegawai Teknologi Informasi Ibu Delima Harahap, Ibu Dra. Bamelia, Kak Maya Sofhia, S.Kom, Kak Nasratul Ummi, Amd, dan Bang Faisal Hamid.
3. Bapak M. Anggia Muchtar, ST, MM.IT, dan Bapak Syahriol Sitorus, S.Si,M.Si
selaku dosen pembimbing penulis yang telah meluangkan waktu, tenaga dan pikiran untuk menyelesaikan skripsi ini.
4. Bapak M. Andri Budiman, S.T, M.Comp, Sc.M.E.M dan Bapak Syahril Efendi,
S.Si, M.IT selaku dosen pembanding yang telah banyak mamberikan petunjuk, saran dan kritik dalam menyelesaikan skripsi ini.
5. Teman-teman mahasiswa Teknologi Informasi Anna Kesuma Daulay, S.TI,
Dalam penyusunan skripsi ini penulis menyadari bahwa masih banyak kekurangan, untuk itu penulis mengharapkan saran dan kritik yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini.
ABSTRAK
Keamanan dan kerahasiaan pesan adalah aspek yang sangat penting dalam pertukaran informasi. Tulisan ini akan menawarkan sebuah proses penyandian pesan dengan menggunakan RSA- Lehmann - CSPRNG yang dapat menambah keamanan pesan. Dalam perancangan tulisan ini yang menjadi data masukan adalah file berupa teks. Algoritma RSA akan diterapkan pada suatu perangkat lunak yang dirancang dan dibuat mengunakan bahasa pemrograman Visual Basic Basic 6.0 sebagai sarana untuk meningkatkan keamanan pengiriman pesan.
RSA APPLICATION DESIGN WITH LEHMANN PRIMES AND
RSA-BASED RANDOM NUMBER GENERATOR
ABTRACT
Securityandconfidentiality ofthe messageisa veryimportantaspectin the exchangeof information. This paperwillofferaprocess ofencodinga messageusing theRSA
-Lehmann-CSPRNGwhichcanincreasethe security ofthe message. Inthis paperthe input data designisin the form ofa textfile. RSA algorithmwill be appliedonasoftware designedandcreatedusingthe VisualBasicprogramming languageBasic 6.0as a meanstoincreasemessaging security.
DAFTAR ISI
Halaman
Persetujuan i
Pernyataan ii
Penghargaan iii
Abstrak iv
Abstract v
Daftar Isi vi
Daftar Tabel ix
Daftar Gambar x
BAB 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 4
BAB 2 Landasan Teori 6
2.1 Pengertian File Teks 6
2.2 Kriptografi 8
2.2.1 Pengertian Kriptografi 8
2.2.2 Sejarah Kriptogafi 10
2.2.3Tujuan Kriptografi 12
2.2.4 Serangan Terhadap Kriptografi 12
2.3 CSPRNG berbasis RSA 13
2.4 Algoritma Lehmann 14
2.5.1 Proses Algoritma RSA 15 2.5.2 Contoh Kasus Algoritma RSA 16
2.6 Perhitungan Matematis 18
2.6.1Bilangan Prima 18
2.6.2 Greatest Common Divisor 18
2.6.3 Fungsi Totient Euler 18
2.6.4 Proses Pembangkit Kunci 19 2.6.5 Proses Enkripsi Pesan 21 2.6.6 Proses Dekripsi Pesan 24
2.7 Visual Studio 6.0 26
2.8 Penelitian Terdahulu 27
BAB 3 Analisis Dan Pemodelan Perangkat Lunak 28 3.1 Analisis Sistem Enkripsi dan Dekripsi dengan Algoritma RSA 28
3.1.1 Pembangkitan Kunci 28
3.1.1.1 CSPRNG berbasis RSA 28 3.1.1.2 Algoritma Lehmann 30
3.1.2 Enkripsi 32
3.1.3Dekripsi 34
3.2 Pemodelan Use Case 36
3.3 General Arsitektur 37
3.4Perancangan Alir Data 38
3.5 Perancangan Antarmuka 45
3.5.1 Rancangan Tampilan Utama 45
3.5.2 Rancangan menu Proses 45
3.5.3 Rancangan Tampilan Proses Cari Bilangan Prima 46 3.5.4 Rancangan Tampilan Proses Pembentukan Kunci 47 3.5.5 Rancangan Tampilan Menu Transaksi 47 3.5.6 Rancangan Tampilan Proses Enkripsi 48 3.5.7 Rancangan Tampilan Proses Dekripsi 49
3.5.8 Rancangan Tampilan Menu Tool 50
BAB 4 Implementasi dan Pengujian 52
4.1 Lingkungan Implementasi 52
4.2 Tampilan Antarmuka (Interface) Aplikasi 53
BAB 5 Kesimpulan Dan Saran 58
5.1 Kesimpulan 58
5.2 Saran 58
Daftar Pustaka 60
DAFTAR TABEL
Halaman
DAFTAR GAMBAR
Halaman
Gambar 2.1 Perbandingan Plainteks dan Cipherteks 10
Gambar 2.2 Scytale 11
Gambar 3.1 Diagram Use Case 37
Gambar 3.2 General Arsitektur 38
Gambar 3.3 Diagram Alir Mencari Bilangan Acak 39
Gambar 3.4 Diagram Alir Metode Uji Prima 40
Gambar 3.5 Diagram Alir Pembangkitan Kunci 42
Gambar 3.6 Diagram Alir Proses Enkripsi 43
Gambar 3.7 Diagram Alir Proses Dekripsi 44
Gambar 3.8 Rancangan Tampilan Utama 45
Gambar 3.9 Rancangan Menu Proses 46
Gambar 3.10 Rancangan Tampilan Proses Cari Bilangan Prima 46 Gambar 3.11 Rancangan Tampilan Proses Pembentukan Kunci 47 Gambar 3.12 Rancangan Tampilan Proses Transaksi 48 Gambar 3.13 Rancangan Tampilan Proses Enkripsi 49 Gambar 3. 14 Rancangan Tampilan proses Dekripsi 49
Gambar 3.15 Rancangan Tampilan Menu Tool 50
Gambar 3.16 Rancangan Tampilan Kalkulator 51
Gambar 3.17 Rancangan Tampilan Menu About 51
Gambar 4.1 Tampilan Utama 53
Gambar 4.2 Tampilan Menu Proses cari bilangan prima 54 Gambar 4.3 Tampilan menu proses pembangkitan kunci 55
Gambar 4.4 Tampilan Proses Enkripsi 56
Gambar 4.5 Tampilan proses Dekripsi 56
Gambar 4.6 Tampilan menu tools Kalkulator 57
ABSTRAK
Keamanan dan kerahasiaan pesan adalah aspek yang sangat penting dalam pertukaran informasi. Tulisan ini akan menawarkan sebuah proses penyandian pesan dengan menggunakan RSA- Lehmann - CSPRNG yang dapat menambah keamanan pesan. Dalam perancangan tulisan ini yang menjadi data masukan adalah file berupa teks. Algoritma RSA akan diterapkan pada suatu perangkat lunak yang dirancang dan dibuat mengunakan bahasa pemrograman Visual Basic Basic 6.0 sebagai sarana untuk meningkatkan keamanan pengiriman pesan.
RSA APPLICATION DESIGN WITH LEHMANN PRIMES AND
RSA-BASED RANDOM NUMBER GENERATOR
ABTRACT
Securityandconfidentiality ofthe messageisa veryimportantaspectin the exchangeof information. This paperwillofferaprocess ofencodinga messageusing theRSA
-Lehmann-CSPRNGwhichcanincreasethe security ofthe message. Inthis paperthe input data designisin the form ofa textfile. RSA algorithmwill be appliedonasoftware designedandcreatedusingthe VisualBasicprogramming languageBasic 6.0as a meanstoincreasemessaging security.
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
Didalam pertukaran atau pengiriman informasi permasalahan yang sangat penting adalah keamanan dan kerahasiaan pesan, data atau informasi seperti dalam informasi perbankan, pesan rahasia, data rahasia perkantoran atau pertukaran data lainnya. Hal ini sangat penting supaya pesan, data atau informasi tersebut tidak jatuhkepada pihak yang tidak berkepentingan untuk mengetahuinya (Bishop, 2010).Salah satu cara yang dapat dilakukan untuk mengamankan pesan adalah menggunakan algoritma kriptografi.Kriptografi berasal dari bahasa Yunani yang terdiri dari kata crypto dangraphia. Crypto berarti rahasia dan graphia berarti tulisan. Kriptografi merupakan ilmu dan seni untuk menjaga keamanan pesan ketika dikirim dari sebuah sumber informasi ke suatu tujuan pengiriman informasi (Ariyus, 2008).
Berdasarkan penggunaan kuncinya algoritma kriptografi dikelompokkan atas dua bagian besar yaitu algoritma simetris dan algoritma asimetris. Algoritma simetris menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi. Beberapa contoh algoritma simetris antara lain Data Encryption Standard (DES), International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), dan sebagainya). Algoritma asimetri menggunakan kunci yang
berbeda untuk enkripsi dan dekripsi. Beberapa contoh algoritma asimetris antara lain Digital Signature Algorithm (DSA), RSA, Diffie-Hellman, Kriptografi Quantum dan sebagainya (Ariyus, 2008).
Algoritma RSA mempunyai dua kunci yang berbeda yaitu kunci publik (untuk enkripsi) dan kunci privat (untuk deskripsi). Algoritma RSA banyak digunakan dan dipercaya dalam mengamankan data atau informasi menggunakan kunci dengan bilangan yang cukup besar. Algoritma tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983(Stallings, 2005). Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Sejauh ini belum ditemukan algoritma yang lebih baik dari RSA.
Dengan melakukan pembangkitan dua bilangan prima, algoritma RSA membutuhkan waktu yang cukup banyak dalam melakukan prosesnya. Namun algoritma RSA lebih banyak dikembangkan karena konsep yang cukup rumit untuk ditembus.
Dalam penulisan skripsi ini menggunakan pembangkit kunci bilangan prima algoritma Lehman dan untuk mencari bilangan acak menggunakan CSPRNG berbasis
RSA.
1.2 Rumusan Masalah
Berdasarkan uraian latar belakang yang telah diuraikan penulis diatas, rumusan maslah dari penulisan skripsi ini adalah sebagai berikut :
1. Bagaimana proses penyandian pesan dengan menggunakan algoritma RSA. 2. Bagaimana proses penentuan bilangan prima dengan algoritma Lehman.
3. Bagaimana mengimplementasikan algoritma RSA dan algoritma Lehman dalam sebuah perangkat lunak sehingga dapat menjaga keamanan pesan.
1.3 Batasan Masalah
Agar tulisan ini tidak menyimpang dari ruang lingkup pembahasan dan fous pada hal-hal, diperlukan batasan masalah sebagai berikut :
1. Perancangan aplikasi RSA melakukan proses enskripsi dan deskripsi 2. Data yang dienkripsikan berupa teks dengan karakter ASCII.
1.4 Tujuan Penelitian
Tujuan dari penulisan skripsi ini untuk merancang sebuah aplikasi perangkat lunak yang dapat menyandikan pesan dengan tingkat keamanan yang lebih baik didasarkan pada penggunaan kedua algoritma yang telah dipaparkan sebelumnya.
1.5 Manfaat Penelitian
Manfaat penelitian ini adalah :
1. Agar dapat mengetahui proses pembangkit bilangan prima.
2. Membuat perlindungan terhadap pesan ketika pesan tersebut kita kirim ke
pihak lain sehingga nantinya pesan yang akan kita kirim tidak diketahui oleh pihak – pihak lainnya.
3. Menambah ilmu pengetahuan serta menjadi bahan referensi dan perbandingan untuk penelitian yang berkaitan dengan konsep RSA dan algoritma Lehman.
1.6 Metodologi Penelitian
Metodologi penelitian yang digunakan dalam pembuatan skripsi ini adalah :
1. Studi Literatur
Dilakukan studi literatur yang digunakan dengan mengumpulkan bahan referensi mengenai konsep RSA, pembangkit bilangan acak berbasis RSA, pembangkit bilangan prima Lehman dan pembangkit bilancang acak berbasis RSA.
2. Analisa Permasalahan
3. Pengumpulan Data
Pada tahap ini dikumpulkan data berupa jurnal, artikel, makalah, buku dan beberapa bahan referensi lainnya yang mendukung pada penulisan skripsi ini.
4. Perancangan sistem
Pada tahap ini dilakukan perancangan antarmuka untuk mendukung pembuatan aplikasi RSA.
5. Implementasi Sistem
Dilakukan proses implementasi pengkodean program menggunakan bahasa pemrograman yang telah dipilih yang sesuai dengan analisis dan perancangan
yang sudah dilakukan.
6. Pengujian
Pada tahap ini dilakukan pengujian terhadap sistem untuk menemukan kesalahah agar sesuai dengan yang diharapkan.
7. Dokumentasi dan Penyusunan Laporan
Mengumpulkan semua dokumen-dokumen baik tertulis, gambar maupun video yang berhubungan dengan penulisan skripsi ini.
1.7 Sistematika Penulisan
Sistematika penulisan skripsi ini dibagi menjadi lima bab yaitu :
BAB I Pendahuluan
BAB II Landasan Teori
Pada bab ini membahas beberapa teori-teori penunjang yang akan mendukung pembahasan pada bab
selanjutnya.
BAB III Analisis dan Perancangan Perangkat Lunak
Pada bab ini membahas mengenai analisis permasalahan dalam pembuatan perangkat lunak serta menjelaskan tentang rancangan struktur program serta merancang interface dari perangkat lunak yang akan dibuat.
BAB IV Implementasi dan Testing Perangkat Lunak
Pada bab ini membahas implementasi dari perangkat lunak yang akan dibuat. Berisikan gambaran antarmuka
dari perangkat lunak yang akan dibuat. Selain itu, juga dilakukan pengujian untuk melihat perangkat lunak yang dibuat berhasil dijalankan atau tidak serta untuk menemukan kesalahan (error).
BAB V Kesimpulan dan Saran
BAB 2
LANDASAN TEORI
2.1 Pengertian File Teks
File teks merupakan suatu file yang berisi informasi – informasi dalam bentuk teks. Data yang berasal dari dokumen pengolahan kata, angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan contoh yang termasuk dalam masukan data teks yang terdiri dari karakter, angka dan tanda baca.
Input dan output data teks dipresentasikan sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer. Ada tiga jenis set karakter umum yang dapat
digunakan untuk input dan output pada komputer, yaitu ASCII, EBCDIC, dan
Unicode. ASCII (American Code for Information Interchange) adalah suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode, tetapi ASCII bersifat universal. Kode ASCII 8 bit memiliki komposisi bilangan biner yang dimulai dari 00000000 sehingga 11111111. Total kombinasi yang dihasilkan adalah 256, dimulai dari kode 0 hingga 255 yang terdapat dalam sistem bilangan desimal. EBCDIC (Extended Binary Codec Decimal Interchange Code) merupakan salah satu set karakter yang diciptakan oleh komputer merk IBM. EBCDIC terdiri dari 256 karakter yang masing – masing karakternya berukuran 8 bit. Adanya keterbatasan pada kode ASCII dan EBCDIC, maka dibuat standar kode internasional baru yang merupakan kode 16 bit yang disebut Unicode. Unicodemerupakan suatu standar industri yang dirancang untuk mengizinkan teks dan simbol dari semua tulisan di dunia agar dapat ditampilkan dan dimanipulasi secara konsisten oleh komputer (Sudewa, 2003).
2.1.1 Format Teks
1. Teks sederhana (plain text)
Pada teks sederhana ini, jenis format yang sering digunakan adalah format data teks (*.txt).
2. Teks terformat (formatted text)
Merupakan teks terformat dan mengandung styles. Format data dokumen Microsoft Word (*.docx) merupakan contoh format teks jenis.
Contoh format data teks diatas beserta perangkat lunak yang biasa digunakan diantaranya adalah:
1. Format data teks (*.txt)
Format data teks adalah format teks yang dapat digunakan untuk menyimpan huruf, angka, karakter kontrol atau simbol – simbol lain.Format ini biasa
digunakan dalam tulisan seperti titik, koma, tanda petik dan sebagainya. Berbeda dengan jenis teks terformat yang satu huruf tersebut seperti font,
ukuran, tebal atau tidak dan sebagainya. Kelebihan format data teks ini adalah ukuran datanya yang kecil, yangdikarenakan tiadanya fitur untuk memformat tampilan teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad.
2. Format data dokumen (*.docx)
Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling banyak digunakan dalam menulis laporan, makalah dan sebagainya. Docx merupakan jenis teks terformat yang tidak hanya dapat mengatur tampilan teks seperti styles (font, ukuran huruf dan sebagainya), namun juga dapat menyisipkan gambar.
3. Hyper Text Markup Language (*.htm atau *.html)
Merupakan format teks standard untuk tampilan dokumen web. 4. Rich Text Format (*.rtf)
Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai macam platform, seperti Windows, Linux, Mac OS dan sebagainya.
2.1.2 Tipe teks
terdiri atas satu huruf, angka, tanda baca, atau karakter khusus seperti “a”, “1”, “*” dan sebagainya. Tipe string terdiri atas nol atau lebih karakter seperti “algoritma”, “teks” dan sebagainya.
2.2 Kriptografi
2.2.1 Pengertian Kripografi
Kriptografi berasal dari bahasa yunani yaitu kripto dan graphia. Kripto berarti secret
(rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu
tempat ke tempat yang lain. Dalam perkembangannya, kriptografi juga digunakan untuk mengidentifikasi pengiriman pesan dan tanda tangan digital dan keaslian pesan
dengan sidik jari digital (Ariyus, 2005).
Di dalam kriptografi sering ditemukan berbagai istilah yang penting untuk diketahui yaitu (Munir, 2006):
1. Pesan, Plainteks dan cipherteks
Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks. Pesan dapat berupa data atau informasi yang dikirim atau dapat disimpan didalam media perekam. Pesan yang tersimpan tidak hanya berupa teks, tetapi juga dapat berbentuk citra, suara / bunyi, dan video. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut cipherteks. Cipherteks
harusdapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca.
2. Pengirim dan Penerima
pihak lain tidak dapat membaca isipesan yang dikirim. Solusinya adalah dengan cara menyandikan pesan menjadi cipherteks.
3. Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi atau
enciphering. Sedangkan proses mengembalikan cipherteks menjadi plainteks
dinamakan dekripsi atau deciphering. 4. Cipher dan Kunci
Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering dan
deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk
enciphering dan deciphering. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yang berisi elemen –
elemen plainteks dan himpunan yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen – elemen antara kedua himpunan
tersebut. Misalkan P menyatakan plainteks dan C menyatakan Cipherteks, maka fungsi enkripsi E memetakan P ke C,
E(P) = C
Dan fungsi dekripsi D memetakan C ke P, D(C) = P
Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka kesamaan berikut harus benar
D(E(P)) = P
Kriptografi mengatasi masalah diatas dengan menggunakan kunci. Dalam hal ini algoritma tidak lagi dirahasiakan tetapi kunci harus dijaga kerahasiaannya. Kunci adalah parameter yang digunakan untuk transformasi enciphering dan
deciphering. Kunci biasanya berupa string atau sederetan bilangan. Dengan menggunakan kunci k, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai: Ek(P) = C dan Dk
K = Kunci Ek
D
= Proses Enkripsi
k
Gambar 2.1 adalah skema enkripsi dan dekripsi dengan menggunakan kunci. = Proses Dekripsi
Gambar 2.1 Skema enkripsi dan dekripsi menggunakan kunci
5. Sistem Kriptografi
Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi adalah kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci. Di dalam sistem kriptografi, cipher hanyalah salah satu komponen saja.
6. Penyadap
Penyadap adalah orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak – banyaknya mengenai sistem kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks.
7. Kriptanalisis dan Kriptologi
Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis adalah ilmu seni untuk
memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelaku kriptanalisis disebut kriptanalis. Kriptologi adalah studi mengenai kriptografi dan kriptanalis. Pelaku kriptologi disebut kriptografer.
2.2.2 Sejarah kriptografi
Kriptografi mempunyai sejarah yang panjang. Informasi yang lengkap mengenai
Codebreakers. Secara historis ada empat kelompok yang berkontribusi terhadap perkembangan kriptografi yaitu kalangan militer, kalangan diplomatik, penulis buku harian, dan pecinta (lovers) (Munir, 2006).
Kriptografi sudah digunakan dan diperkenalkan oleh bangsa Mesir pada 4000 tahun yang lalu berupahieroglyph untuk mengirim pesan ke pasukan militer yang berada di lapangan. Sehingga, pesan tersebut tidak bisa terbaca oleh pihak musuh maupun kurir pembawa pesan tersebut tertangkap oleh musuh.Jenis tulisan ini bukanlah bentuk standar untuk menulis sebuah pesan. Hieroglyph diturunkan dari bahasa Yunani hieroglyphica yang berarti ukiran rahasia. Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Spartan dalam bentuk sepotong papirus atau perkamen dibungkus dengan batang kayu. Sistem ini disebut Scytale (Ariyus, 2008).
Gambar 2.2Scytale
2.2.3 Tujuan Kriptografi
Dari paparan awal dapat dirangkumkan bahwa kriptografi bertujuan untuk memberi layanan keamanan sebagai berikut: (Munir, 2006)
1. Kerahasiaan (confidentiality)
Adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak – pihak yang tidak berhak. Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi cipherteks. Misalnya pesan “bahaya” disandikan menjadi “44220273490202729512027”. Istilah lain yang senada dengan confidentiality adalah secrecy dan privacy.
2. Integritas data (data integrity)
Adalah layanan yang menjamin bahwa pesan masih asli / utuh atau belum pernah dimanipulasi selama pengiriman. Dengan kata lain, aspek keamanan ini
dapat diungkapkan sebagai pertanyaan “Apakah pesan yang diterima masih asli atau tidak mengalami perubahan (modifikasi) ?”
3. Otentikasi (authentication)
Adalah layanan yang berhubungan dengan identifikasi baik mengidentifikasi kebenaran pihak – pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan. 4. Nirpenyangkalan (non - repudation)
Adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.2.4 Serangan Terhadap Kriptografi
Serangan (attack) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis untuk menemukan kunci atau plainteks dari chiperteks dari sistem kriptografi. Kriptanalis akan berusaha untuk menemukan plainteks dari chiperteks tanpa memiliki akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang digunakan dalam menemukan kunci, serangan dibagi menjadi exhaustive atau brute
Exhaustive atau brute force attack merupakan serangan untuk mendapatkan
plainteks dari chiperteks dengan mencoba satu persatu seluruh kombinasi atau kemungkinan kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plainteksdan chiperteksyang bersesuaian yang digunakan untuk mencari pola dari proses enkripsimaupun dekripsidari algoritma kriptografi yang digunakan.
Analytical attack merupakan serangan untuk mendapatkan plainteksdari chiperteksdengan menganalisa kelemahan algoritma kriptografi untuk mengurangi kemungkinan kunci yang tidak mungkin digunakan, sehingga kriptanalis tidak mencoba semua kemugkinan kunci. Dalam hal ini kriptanalis juga harus tahu jenis algoritma kriptografi yang digunakan oleh pengirim pesan. Analisis yang digunakan dengan menggunakan pendekatan matematik dan statistik untuk mendapatkan kunci
yang digunakan dalam sistem kriptografi tersebut.
2.3 CSPRNG Berbasis RSA
Pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak dapat diperdiksi oleh pihak lawan yang cocok untuk kriptografi: pembangkit tersebut dinamakan cryptographically secure pseudorandom generator (CSPRNG). Perancanangan CSPRNG dapat dibagi kedalam beberapa kelompok. Dalam hal ini kita menggunakan perancangan CSPRNG berbasis teori bilangan. Contoh dua CSPRNG
yang berdasarkan teori bilangan adalah Blum Blum Shut dan modifikasi RSA (Munir, 2006). Dalam penulisan CSPRNG yang digunakan adalah CSPRNG berbasis RSA. Algoritma pembangkit bilangan acak berbasis RSA adalah sebagai berikut:
1. Pilih 2 bilangan prima rahasia, p dan q, dan bilangan bulat e yang relatif prima dengan (p-1)(q-1).
2. Kalikan keduanya menjadi n = pq
3. Pilih bilangan acak lain, s, sebagai x0
4. Barisan bit acak dihasilkan dengan melakukan itersai berikut sepanjang yang diinginkan:
yang dalam hal ini 2 ≤ s ≤ n.
a. Hitung xi = xi - 1e mod n dengan x0 b. Z
= s.
5. Barisan bit acak adalah z1, z2, z3,....
Sebagai contoh, untuk menemukan bialangan acak berbasis RSA, yaitu:
Misal p = 11 dan q = 5
berarti dilakukan pengulangan setelah 3 kali
i
jadi baris acak yang dihasilkan
maka pengulangan dilakukan setelah 3 kali
1011 0110 1101 1011 0101 dan seterusnya, kemudian dikonversikan ke bilangan desimal
11 6 13 11 5
2.4 Algoritma Lehmann
Tes yang paling sederhana adalah menggunakan algoritma Lehmann. Cara kerja algoritma Lehmann adalah sebagai berikut :
(d) Jika a(p – 1)/2≡ 1 atau –1 (mod p), maka peluang p bukan prima adalah 50%.
Ulangi pengujian dengan algoritma Lehmann di atas sebanyak t kali (dengan nilai a yang berbeda). Jika hasil perhitungan langkah (b) sama dengan 1 atau –1, tetapi tidak selalu sama dengan 1, maka peluang p adalah prima mempunyai kesalahan tidak lebih dari 1/2t. Pengujian menggunakan algoritma Lehmann dianjurkan diulangi sebanyak lima kali dengan nilai a yang berbeda. Jika hasil perhitungan langkah ke-dua sama dengan 1 atau (-1), maka peluang p adalah prima mempunyai kesalahan tidak lebih dari lima puluh persen. Bilangan acak yang digunakan pada algoritma Lehmann dapat dipilih nilai yang kecil agar perhitungan lebih cepat. Algoritma Lehmann menentukan keprimaan suatu bilangan dengan cara yang sangat sederhana dan masih sangat diragukan kevalidannya. Selain algoritma Lehmann, metode lain yang banyak digunakan adalah Rabin-Miller (Schneier, 1996).
2.5 Algoritma Kriptografi RSA
Algoritma kriptografi RSA ditemukan oleh tiga orang yang kemudian nama-nama mereka disingkat menjadi RSA. Ketiga penemu itu adalah Ron Riverst, Adi Shamir, dan Leonard Adleman. RSA dibuat di MIT pada tahun 1977 dan dipatenkan oleh MIT (Massachussets Institute of Technology) pada tahun 1983. Sejak 21 September tahun 2000, paten tersebut berakhir, sehingga saat ini semua orang dapat menggunakannya dengan bebas (Brian, 2000). RSA merupakan algoritma yang mudah untuk diimplementasikan dan dimengerti.
Algoritma RSA adalah sebuah algoritma pada enkripsi kunci publik. RSA merupakan algoritma pertama yang cocok digunakan untuk digital signature karena kehandalannya dalam proses enkripsi. Hal ini menjadikan algoritma yang lebih banyak dikembangkan dalam bidang kriptografi public key.
2.5.1 Proses Algoritma RSA
Proses atau cara kerja dari algoritma RSA dapat dilihat sebagai berikut:
1. Menentukan dua bilangan prima p ≠ q secara acak dan terpisah untuk tiap-tiap p
menggunakan metode CSPRNG berbasis RSA dan algoritma Lehman. Sifat dari kedua bilangan ini adalah rahasia. Ini berarti hanya pihak pengirim dan penerima saja yang mengetahuinya.
2. Melakukan perhitungan n = p*q. (n merupakan hasil perkalian dari p dikalikan dengan q)
3. Melakukan perhitungan nilai totient φ (n)= (p-1)(q-1).
4. Menentukan nilai kunci enkripsi e dengan syarat bahwa nilangan tersebut merupakan bilangan bulat (integer) 1 <e <φ(n) dimana nilai GCD (φ(n), e)=1. 5. Menghitung kunci enkripsi yang dilakukan dengan perhitungan kunci dekripsi
dengan rumus d ≡ e -1
6. Setelah mendapatkan kunci-kunci tersebut maka dapat dilakukan proses enkripsi maupun proses dekripsi.
mod φ(n).
7. Rumus untuk melakukan proses enkripsi adalah C = M e
8. Rumus untuk melakukan proses dekripsi adalah P = C
mod n
d
mod n
2.5.2 Contoh Kasus Algoritma RSA
Algoritma RSA disimulasikan dalam sebuah simulasi pengiriman pesan yang dilakukan antara Alice dan Bob. Alice mengizinkan Bob untuk mengirimkan sebuah pesan pribadi (private message). Dalam algoritma RSA multiple-key, Alice dan Bob akan melakukan langkah-langkah pada sebagai berikut :
1. Alice (penerima) dan Bob (pengirim) menyepakati dua buah bilangan prima sebagai kunci privat dari pesan yang akan dikirimkan. Misalkan kunci tersebut adalah bernilai p=11 dan q=7.
2. Setelah disepakati kedua bilangan prima tersebut kemudian digunakan untuk menghitung nilai totient dengan rumus n =p*q, sehingga didapat nilai:
n = (11)*(7)= 77
3. Langkah selanjutnya adalah menghitung nilai totient dengan rumus ϕ(n) =(p–
1)(q-1), sehingga didapat nilai: (n) = (11-1)*(7-1))= 60.
Nilai n dan nilai totient akan digunakan dalam perhitungan nilai kunci enkripsi. 4. Dari nilai totient yang didapat, maka Bob dapat menghitung nilai kunci enkripsi
nilai e relatif prima dengan ϕ(n). Hal ini dapat dihitung dengan menghitung GCD (ϕ(n),e)=1. Dalam perhitungan didapati:
GCD (60, e) = 1 , 1<e<60
e = 19
Didapat nilai e yang memungkinkan dan disepakati oleh keduanya adalah e = 19. Dengan nilai kunci enkripsi ini makan selanjutnya dapat dilakukan proses enkripsi.
5. Kunci dekripsi juga langsung ditetapkan oleh kedua belah pihak dengan syarat
rumusan d= e-1
d = e
mod ϕ (n). Dari nilai e yang didapat sebelumnya maka dapat dihitung nilai d dengan langkah sebagai berikut :
-1
Kunci dekripsi digunakan untuk mengembalikan nilai ciphertext ke dalam bentuk plaintext.
6. Proses enkripsi merupakan proses dimana pesan yang sebelumnya berupa plaintext yang dikodekan menjadi ciphertext. Terlebih dahulu Bob akan membuat pesan rahasia berupa teks. Dalam kasus ini pesan yang akan
digunakan adalah kode 100. Dari rumus perhitungan enkripsi C = me
Pesan yang akan dikirim M = 100
mod n,
maka dapat dihitung kode ciphertext dari setiap pesan tersebut sebagai berikut:
Nilai dari setiap Plaintext P
1
C= M
= 100, maka nilai ciphertext dari setiap pesan
dengan perhitungan :
e
7. Setelah mendapatkan semua kode ciphertext maka dapat dirangkai seluruh kode yang menghasilkan ciphertext sebesar 40. Pesan inilah yang akan dikirimkan kepada Alice, sehingga pihak lain tidak akan mengetahui makna pesan
8. Alice dapat mendapatkan pesan sebenarnya dengan melakukan proses dekripsi.
Dari rumus perhitungan dekripsi P = Cd
C = 40
mod n, maka dapat dihitung kode
plaintext dari setiap chipertext tersebut sebagai berikut:
Nilai dari setiap Plaintext :
P
Setelah mendapatkan semua plaintext terhitung maka dapat dirangkai seluruh kode dan menghasilkan plaintext adalah 40
= 40
9. Dari contoh didapat bahwa Alice dapat membuka kembali pesan yang sudah dienkripsi dengan melakukan proses dekripsi.
2.6 Perhitungan Matematis
Terdapat beberapa perhitungan matematis dalam proses pembangkitan kunci untuk menentukan nilai Totient n. Teori bilangan yang digunakan dalam melakukan proses penyandian yang digunakan adalahGreatest Common Divisor (GCD).
2.6.1. Bilangan Prima
Sifat pembagian pada bilangan bulat melahirkan konsep-konsep bilangan prima dan aritmetika modulo. Dan salah satu konsep bilangan bulat yang digunakan dalam penghitungan komputer adalah bilangan prima. Dengan ditemukannya bilangan prima, teori bilangan berkembang semakin jauh dan lebih mendalam. Banyak dalil dan sifat dikembangkan berdasarkan bilangan prima. Sebagian besar algoritma kunci-publik menggunakan bilangan prima sebagai salah satu nilai parameternya. Bilangan prima yang disarankan berkuran besar sehingga penggunaan tipe data bilangan bulat yang besar mutlak diperlukan.
2.6.2Greatest Common Divisor (GCD)
tambahan (multiple-key). Kunci tambahan bersyarat harus merupakan anggota dari bilangan ganjil yang mana GCD antara bilangan ganjil tersebut dengan nilai totient yang didapat harus bernilai 1. Dalam notasi dapat dituliskan ��∈���,
Ke∈���(��,�)=1.
Greatest Common Divisor atau GCD dari bilangan suatu xdan yadalah bilangan bulat terbesar d sedemikian sehingga d | xdan d | y. Dalam hal ini kita nyatakan bahwa GCD (x,y) = d. Misalkan dalam menentukan GCD (5,2) = 1. Didapati bahwa nilai x adalah 5 dan nilai y adalah 2.
2.6.3 Fungsi Totient Eulerφ
Fungsi Totient eulerφ atau biasa disebut dengan fungsi euler digunakan pada algoritma RSA dalam mendefinisikan φ(n) untuk n ≥ 1 yang menyatakan jumlah bilangan bulat positif <n yang relatif prima dengan n (Munir, 2006). Dua bilangan bulat x dan y dikatakan relatif prima jika gcd(x,y) = 1 (pembagi bersama terbesar dari x dan y adalah 1).
Jika n = pq (p dan q bilangan prima)
maka φ(n)= φ(p) φ(q)= (p-1)(q-1)
Sebagai contoh:
φ(15) = φ(3) φ(5) = 2x4 = 8 buah bilangan bulat yang relatif prima terhadap 15, yaitu 1,2,4,7,8,11,13,14.
2.6.4 Proses Pembangkitan Kunci
Proses pembangkitan kunci pada algoritma RSA dilakukan dengan tahapan – tahapan sebagai berikut:
1. Nilai p dan q yang diperoleh dari perhitungan bilangan acak CSPRNG berbasis RSA dan telah melalui proses uji prima dengan algoritma Lehmann.
Sifat dari kedua bilangan ini adalah rahasia. Ini berarti hanya pihak pengirim dan penerima saja yang mengetahuinya. Misalnya:
Nilai p = 11, q = 13
3. Hitung φ(n) = (p-1)(q-1), sehingga nilai φ(n) = (11-1)(13-1) adalah 120 4. Pembangkitan kunci ekripsi e dimana erelatif prima terhadap φ(n).
Nilai GCD(φ(n), e) harus bernilai 1. Untuk menentukan nilai kunci publik
(e) yang relatif prima terhadap φ(n) dapat ditunjukkan pada perhitungan dibawah ini.
Jadi, nilai dari kunci publik (e) yang diperoleh adalah 7.
5. Hitung kunci dekripsi (d) dengan menggunakan persamaan � = 1+k .φ(n) e
Nilai k dapat dihitung dengan mencoba nilai-nilai = 1,2,3,4...sehingga diperoleh nilai d bilangan bulat.
Nilai k Persamaan
� =1+k .φ(n)
Mulai dari Nilai GCD(120, e)
3 �
2.6.5 Proses Enkripsi Pesan
Dalam proses penyandian pesan menggunakan algoritma RSA dapat dianalogikan seperti pengiriman pesan yang dilakukan oleh si pengirim pesan kepada si penerima pesan. Jika si pengirim akan mengirimkan pesan, maka akan terjadi beberapa proses, yaitu:
1. Penentuan kunci enkripsi (e) dan modulus (n) dari pesan dengan terlebih
dahulu melakukan proses pembangkitan kunci sehingga mendapatkan nilai e = 7 dan nilai n = 143.
2. Input plaintext yang akan disandikan. Contohnya: HELP!!! GlupGlup.
Plaintext yang telah di- input akan diubah sesuai tabel ASCII di bawah ini:
Tabel 2.1 Tabel Konversi Karakter ke dalam Kode ASCII
004 EOT (End of
Dari tabel ASCII diperoleh hasil sebagai berikut.
3. Setiap hasil yang diperoleh akan dienkripsi menjadi blok Ci
C
dengan rumus
i = Pie mod n
P
Cipherteks
i Ci = Pie mod n
72 19
69 108
76 54
80 141
33 110
33 110
33 110
65 65
71 124
108 4
117 39
112 18
71 124
108 4
117 39
112 18
4. Jadi, hasil dari enkripsi atau cipherteks yang akan dikirimkan ke penerima adalah 19-108-54-141-110-110-110-65-124-4-39-18-124-4-39-18.
2.6.6 Proses Dekripsi Pesan
Pada saat penerima menerima pesan berupa ciphertext, maka diperlukan proses dekripsi agar dapat memahami pesan yang dimaksud.
1. Setiap blok ciphertext didekripsi kembali menjadi blok Pi dengan rumus
Pi= Cid
Dekripsi dilakukan dengan menggunakan kunci d = 103, kemudian blok-blok
C
2. Semua hasil cipherteks yang diperoleh pada proses dekripsi akan diubah kembali menjadi plainteks dengan mencocokkan karakter yang ada pada tabel ASCII.
117 u
112 p
71 G
108 l
117 u
112 p
3. Jadi bentuk plainteks yang diperoleh adalah HELP!!! GlupGlup.
2.7 Visual Basic 6.0
Visual Basic adalah salah satu bahasa pemrograman komputer. Bahasa pemrograman adalah perintah yang dimengerti oleh komputer untuk melakukan tugas-tugas tertentu. Bahasa pemrograman Visual Basic, yang dikembangkan oleh Microsoft sejak tahun 1991, merupakan pengembangan dari pendahulunya yaitu bahasa pemrograman BASIC (Beginner’s All-purpose Symbolic Instruction Code) yang dikembangkan pada era 1950-an. Visual Basic merupakan salah satu Development Tool yaitu alat bantu untuk membuat berbagai macam program komputer, khususnya yang menggunakan sistem operasi Windows. Visual Basic merupakan salah satu bahasa pemrograman komputer yang mendukung object (Object Oriented Programming = OOP).
Aplikasi adalah suatu unit perangkat lunak yang dibuat untuk melayani kebutuhan akan beberapa aktivitas. Aplikasi akan menggunakan sistem operasi (OS) komputer dan aplikasi lainnya yang mendukung Apl. Istilah ini mulai perlahan masuk
ke dalam istilah Teknologi Informasi semenjak tahun 1993. Secara historis, aplikasi adalah software yang dikembangkan oleh sebuah perusahaan. Bahasa pemrograman
sebagainya. Untuk dapat menyusun dan membuat suatu program aplikasi dari VB 6.0, tentunya harus mengetahui fasilitas – fasilitas yang disediakan agar proses penyusunan dan pembuatan program tersebut berjalan dengan baik.
2.8 Penelitian Terdahulu
Penelitian terdahulu yang berkaitan dengan perancangan aplikasi RSA dengan pengembangan algoritma Lehman dapat dilihat pada table 2.2
Tabel 2.2 Penelitian Terdahulu berkaitan dengan RSA dan algoritma Lehman
No Peneliti / Tahun Judul Keterangan
1 Kamal Mahmudi, 2010
Sifat Prima Terhadap Fungsionalitas Algoritma RSA
Melihat bagaimana algoritma RSA diturunkan, dapat disimpulkan pada dasarnya bilangan prima tidak mutlak harus digunakan, namun penggunaan bilangan prima jauh
sangat mempermudah pembangkitan kunci untuk
algoritma RSA.
2 Anand &Praven, 2012
Implementation of RSA Algorithm on FPGA
Tujuanutama dariproyek
seperti1.024bit, 1.536bit, dan 2048bit. Hasilmenunjukkanbah wadesain yang tepat
BAB 3
ANALISIS DAN PEMODELAN PERANGKAT LUNAK
3.1Analisis Sistem Enkripsi dan Dekripsi dengan Algoritma RSA
Algoritma RSA merupakan salah satu algoritma kunci publik. Prinsip kerja algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar yang menjadi faktor-faktor prima. Pemaktoran dilakukan untuk mendapatkan kunci privat. Selama bilangan tersebut tidak dapat difaktorkan selama itu pula keamanan algoritma RSA
terjamin. Dalam algoritma RSA, ada tiga proses yang harus dilakukan yaitu: peroses pembangkitan kunci, proses enkripsi dan proses dekripsi.
3.1.1 Pembangkitan Kunci
Dalam proses pembangkitan kunci yang menjadi masalah utamanya adalah bagaimana menghasilkan kunci yang tidak dapat diprediksi. Ada berbagai metode yang dapat digunakan untuk menghasilkan sebuah bilangan prima yang besar. Pembangkitan kunci pada sistem ini menggunakan dua algoritma, yaitu CSPRNG berbasis RSA dan Algoritma lehmann.
3.1.1.1 CSPRNG Berbasis RSA
Pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak dapat diperdiksi oleh pihak lawan yang cocok untuk kriptografi: pembangkit tersebut dinamakan cryptographically secure pseudorandom generator (CSPRNG). Perancanangan CSPRNG dapat dibagi kedalam beberapa kelompok. Dalam hal ini kita menggunakan perancangan CSPRNG berbasis teori bilangan. Contoh dua CSPRNG
yang berdasarkan teori bilangan adalah Blum Blum Shut dan modifikasi RSA (Munir,2006). Dalam penulisan CSPRNG yang digunakan adalah CSPRNG berbasis RSA.
6. Pilih 2 bilangan prima rahasia, p dan q, dan bilangan bulat e yang relatif prima dengan (p-1)(q-1).
7. Kalikan keduanya menjadi n = pq 8. Pilih bilangan acak lain, s, sebagai x0
9. Barisan bit acak dihasilkan dengan melakukan itersai berikut sepanjang yang diinginkan:
yang dalam hal ini 2 ≤ s ≤ n.
c. Hitung xi = xi - 1e mod n dengan x0 d. Z
= s.
i = bit LSB (Least Significant Bit) dari x 10.Barisan bit acak adalah z
i. 1, z2, z3,....
Sebagai contoh untuk menemukan bilangan acak berbasis RSA, yaitu: Misal p = 11 dan q = 5
berarti dilakukan pengulangan setelah 3 kali
i
jadi baris acak yang dihasilkan
maka pengulangan dilakukan setelah 3 kali
1011 0110 1101 1011 0101 dan seterusnya, kemudian dikonversikan ke bilangan desimal
3.1.1.2 Algoritma Lehman
Salah satu metode yang dapat digunakan adalah dengan metode Lehmann. Algoritma penentuan bilangan prima yang digunakan adalah sebagai berikut :
Dari hasil bilangan acak p = 11
Apakah 11 adalah bilangan prima? 1. a = 3
Jadi 11 adalah bilangan prima dan secara otomatis maka 11 menjadi nilai p. hal yang sama juga dilakukan untuk mencari nilai q.
Dari proses ini kita akan mendapatkan pembangkit kuncinya yang akan digunakan dalam proses enkripsi dan deskripsi. Algoritmanya pembangkitan kuncinya adalah sebagai berikut :
1. Pilih p dan q, dimana p dan q adalah bilangan prima dan nilai p dan q tidak sama.
2. Hitung n = p.q
3. Hitung φ(n) = (p-1)(q-1)
4. Pilih integer e, dimana gcd (φ(n), e) = 1; 1 < e <φ(n) 1. Ambil sembarang 1 < a < p
5. Hitung d, dimana d =1+k .φ(n)
e dengan nilai k merupakan bilangan bulat positif yang menghasilkan nilai dyang merupakan bilangan bulat positif.
1. Nilai p dan q yang diperoleh dari perhitungan bilangan acak CSPRNG berbasis RSA dan telah melalui proses uji prima dengan algoritma Lehmann. Sifat dari kedua bilangan ini adalah rahasia. Ini berarti hanya pihak pengirim dan penerima saja yang mengetahuinya. Misalnya:
Nilai p = 11, q = 13
2. Hitungn = p.q, sehingga nilai n = 11 x 13 adalah 143
3. Hitung φ(n) = (p-1)(q-1), sehingga nilai φ(n) = (11-1)(13-1) adalah 120 4. Pembangkitan kunci ekripsi e dimana erelatif prima terhadap φ(n).
Nilai GCD(φ(n), e) harus bernilai 1. Untuk menentukan nilai kunci publik (e) yang relatif prima terhadap φ(n) dapat ditunjukkan pada perhitungan
dibawah ini.
Jadi, nilai dari kunci publik (e) yang diperoleh adalah 7.
5. Hitung kunci dekripsi (d) dengan menggunakan persamaan � =1+k .φ(n) e
Nilai k dapat dihitung dengan mencoba nilai-nilai = 1,2,3,4...sehingga diperoleh nilai d bilangan bulat.
Mulai dari Nilai GCD(120, e)
Nilai k Persamaan
Proses enkripsi merupakan proses untuk mengubah plainteks menjadi cipherteks. Algoritma proses enkripsi adalah sebagai berikut:
1. Penentuan kunci enkripsi (e) dan modulus (n) dari pesan dengan terlebih dahulu melakukan proses pembangkitan kunci sehingga mendapatkan nilai e = 7 dan nilai n = 143.
2. Input plaintext yang akan disandikan. Contohnya: HELP!!! GlupGlup. (menggunakan tabel AACII).
Dari tabel ASCII diperoleh hasil sebagai berikut. Pesan teks = P
Kunci Publik = {e, n}
P1 =72 P2 =69 P3 =76 P4 =80 P5 =33 P6
3. Setiap hasil yang diperoleh akan dienkripsi menjadi blok C =112
i
C
dengan rumus i = Pie
Pada tahap ini pengirim memberikan kunci ke pada penerima yaitu e = 7 dan nilai n =143. Pengirim melakukan enkripsi setiap blok pesan sebagai berikut:
3.1.3 Dekripsi
Proses dekripsi merupakan proses untuk mengubah cipherteks menjadi plainteks. Proses dekripsi dapat dilakukan dengan menggunakan kunci yang telah diperoleh.Algoritma proses dekripsi adalah sebagai berikut:
Cipherteks = C
Enkripsi : P= Cdmod n
1. Setiap blok ciphertext didekripsi kembali menjadi blok Pi dengan rumus
Pi= Cid
Dekripsi dilakukan dengan menggunakan kunci d = 103, kemudian blok-blok
ciphertextyang diterima didekripsikan sebagai berikut: mod n.
C
Plaintext
i Pi = Cid mod n
19 72
108 69
54 76
141 80
110 33
110 33
110 33
65 65
124 71
4 108
39 117
18 112
124 71
39 117
18 112
2. Semua hasil cipherteks yang diperoleh pada proses dekripsi akan diubah kembali menjadi plainteks dengan mencocokkan karakter yang ada pada tabel
ASCII.
Bilangan Karakter Sesuai ASCII
72 H
69 E
76 L
80 P
33 !
33 !
33 !
65 spasi
71 G
108 l
117 u
112 p
71 G
108 l
117 u
112 p
3. Jadi bentuk plainteks yang diperoleh adalah HELP!!! GlupGlup.
3.2 Pemodelan Use Case Diagram
pekerjaan-pekerjaan tertentu. Pembuatan model use case bertujuan untuk mengidentifikasi fungsionalitas perangkat lunak secara arsitektural.
Defenisi dan deskripsi masing – masing Use Case adalah sebagai berikut: 1. Inisialisasi pesan teks
Merupakan tahap awal yang dilakukan agar sistem dapat melakukan proses enkripsi dan dekripsi.
2. Pembangkitan kunci
Merupakan tahap untuk memperoleh kunci acak. 3. Enkripsi pesan
Sistem mengubah pesan teks menjadi cipherteks. 4. Dekripsi pesan
Mengembalikan cipherteks ke dalam plainteks sehingga pesan tersebut dapat dibaca dan dipahami.
5. Buka pesan
Untuk melihat pesan yang ada
Gambar 3.1 Use Case Diagram
3.3 General Arsitektur
Gambar 3.2 General Arsitektur
3.4 Perancangan Alir Data
Rancangan diagram alir merupakan rancangan alur proses yang ada dalam program simulasi. Diagram alir ini akan menjelaskan mengenai proses pembangkitan kunci, proses enkripsi dan proses dekripsi dalam program simulasi.
a. Diagram alir mencari bilangan acak. Pada diagram alir mencari bilangan acak akan digambarkan proses penentuan bilangan acak. Adapun diagram alir metode mencari bilangan acak ini menggunakan metode CSPRNG berbasis
RSA. Adapun langkah – langkah mencari bilangan acak yang akan dilakukan adalah sebagai berikut:
1. Pilih 2 bilangan prima rahasia, p dan q, dan bilangan bulat e yang relatif prima dengan (p-1)(q-1).
2. Kalikan keduanya menjadi n = pq 3. Pilih bilangan acak lain, s, sebagai x0
4. Barisan bit acak dihasilkan dengan melakukan itersai berikut sepanjang yang diinginkan:
yang dalam hal ini 2 ≤ s ≤ n.
e. Hitung xi = xi - 1e mod n dengan x0 f. Z
= s. i = bit LSB (Least Significant Bit) dari x Barisan bit acak adalah z
Gambar 3.3 Diagram Alir Mencari Bilangan Acak
b. Diagram alir uji prima. Pada diagram alir uji prima akan digambarkan proses penentuan bilangan yang merupakan bilangan prima.Adapun diagram alir metode uji prima dengan menggunakan Algoritma Lehman. Adapun langkah-langkah uji prima yang akan dilakukan adalah sebagai berikut:
1. Bangkitkan bilangan acak a yang lebih kecil dari p.
2. Hitung a(p – 1)/2
3. Jika a
mod p. (p – 1)/2
4. Jika a
≡/ 1 atau –1 (mod p), maka p tidak prima. (p – 1)/2≡
Gambar 3.4 Diagram Alir Metode Uji Prima
c. Diagram Alir Pembangkitan Kunci. Pada diagram alir pembangkitan kunci akan digambarkan proses pembuatan kunci publik dan kunci privat berdasarkan bilangan prima yang besar. Proses pembangkitan kunci mempunyai langkah-langkah sebagai berikut:
1. Mencari dua buah bilangan prima yang besar, yang acak dan berbeda p dan q, yang berukuran sama.
2. Menghitung nilai n = p * q dan nilai totient euler(φ(n)) = (p-1) *
3. Memilih bilangan bulat acak e dengan 1< e <φ(n), sehingga
gcd(e,φ(n)) = 1. Greatest common divisor (gcd) dari dua buah
bilangan tidak lain bilangan terbesar yang dapat membagi e dan φ(n)
untuk menghasilkan nilai 1.
4. Bangkitkan kunci privat d dengan menggunakan persamaan � = 1+k .φ(n)
e .
d. Diagram Alir Enkripsi. Pada diagram alir enkripsi akan digambarkan bagaimana pesan diubah menjadi cipherteks dengan menggunakan kunci publik (e dan n). Proses enkripsi dilakukan dengan mengubah plainteks sesuai dengan desimal ASCII. Potong plainteks per digit menjadi beberapa kelompok blok (dilambangkan dengan Pi). Konversikan masing-masing blok-blok ke dalam persamaan Ci = Piemod n.
e. Diagram Alir Dekripsi. Dalam diagram ini akan ditunjukkan proses dekripsi pesan dalam bentuk cipherteks menjadi plainteks semula. Proses dekripsi pesan dilakukan dengan menggunakan kunci privat (d dan n). Konversikan setiap blok cipherteks yang ada ke dalam persamaan Pi = Cid mod n dan setiap hasil yang diperoleh akan diubah menjadi karakter yang sesuai pada tabel ASCII sehingga diperoleh plainteks semula.
3.5 Perancangan Antar Muka
3.5.1 Rancangan Tampilan Utama
Tampilan ini merupakan tampilan awal dari sistem dan didesign sebagus mungkin untuk menarik minat pengguna. Didalam tampilan ini terdapat bererapa menu seperti menu teori yang terberisikan tentang pemahaman algoritma RSA dan lehman. Terdapat juga menu proses untuk mencari bilangan prima dan proses pembentukan kunci, menu transaksi untuk proses enkripsi dan deskripsi. Selain juga terdapat tampilan menu about sistem dan menu keluar jika pengguna tidak menggunakannya. Rancangan tampilan utama dari sistem dapat dilihat pada gambar 3.8.
Gambar 3.8Rancangan Tampilan Utama
3.5.2 Rancangan Tampilan Menu Proses
Gambar 3.9 Rancangan Menu Proses
3.5.3 Rancangan Tampilan Proses Cari Bilangan Prima
Menu Proses Cari Bilangan Prima adalah menu yang dirancang agar pengguna dapat mencari bilangna prima yang benar. Pada menu ini disediakan textbox untuk mencari bilangan prima mulai dari angka yang diinginkan user. Diberikan juga tombol cari jika pengguna sudah menentukan angka. Lalu angka yang merupakan bilangan prima akan diperlihatkan oleh sisem. Pada tampilan ini terdapat juga tombol keluar agar user dapat keluar dari tampilan ini. Rancangan tampilan ini dapat dilihat pada gambar 3.10
3.5.3 Rancangan Tampilan Proses Pembentukan Kunci
Tampilan ini dirancang agar pengguna dapat mengetahui proses pembentukan kunci Enkripsi dan Dekripsi. Pada tampilan ini akan dibahas rumus-rumus yang digunakan untuk proses pembentukan kunci. Tampilan ini dapat digunakan jika pengguna ingin mengetahui langsung proses pembentukan kunci dengan cara memasukkan angka pada textbox yang disediakan. Disediakan juga tombol proses agar sistem bekerja secara otomatis menentukan angka pada texbox yang lain. Diberikan pula tombol hapus juka user ingin mengganti angka yang telah dimasukkan pada texbox awal. Tombol keluar juga diberikan pada tampilan ini untuk memudahkan pengguna keluar dari tampilan ini. Rancangan tampilan proses pembentukan kunci ini dapat dilihat pada gambar 3.11 :
Gambar 3.11 Rancangan Tampilan Proses Pembentukan Kunci
3.5.4 Rancangan Tampilan Menu Transaksi
Gambar 3.12Rancangan Tampilan Proses Transaksi
3.5.5 Rancangan Tampilan Proses Enkripsi
Pada rancangan tampilan menu proses Enkripsi ini terdapat kotak Algoritma yang berisi tentang langkah-langkah untuk memproses kunci Enkripsi. Lalu ada kotak Pembentukan yang berisi Nilai P dan Q, Nilai n, Totient n, Kunci Enkripsi dan Dekripsi. Nilai ini sudah ditentukan oleh sistem, jadi pengguna hanya wajib mengisi text pada kotak plaintext. Jika sudah, maka pengguna harus menekan tombol proses agar sistem bekerja menentukan chipertext. Diberikan juga tombol Hapus untuk membersihkan tampilan kembali seperti awal. Terdapat juga tombol Keluar untuk keluar otomatis dari tampilan ini. Lalu pengguna harus menekan tombol kirim agar sitem masuk ke proses Dekripsi. Rancangan tampilan sistem ini dapat dilihat pada gambar 3.13
3.5.6 Rancangan Tampilan Proses Dekripsi
Pada rancangan tampilan proses Dekripsi terdapat kotak Kunci Proses yang berisi Nilai d dan Nilai N. Chipertext pada proses Dekripsi sudah ditentukan dari proses Enkripsi sebelumnya. Pada rancangan ini disediakan tombol Proses yang akan digunakan user untuk menguji sistem. Plaintext yang muncul harus sesuai pada plaintext pada proses Enkripsi. Terdapat juga tombol Hapus untuk membersikan box agar kembali seperti tampilan awal. Disediakan juga tombol Keluar agar pengguna dengan mudah keluar dari tampilan ini. Rancangan tampilan proses dekripsi ini dapat dilihat pada gambar 3.14
Gambar 3.14 Rancangan Tampilan proses Dekripsi
3.5.7 Rancangan Tampilan Menu Tool
Gambar 3.15 Rancangan Tampilan Menu Tool
3.5.8 Rancangan Tampilan Kalkulator
Rancangan Kalkulator di sitem ini sama halnya pada Kalkulator yang terdapat di komputer. Semua tombol dan fungsinya masih sama. Menu kalkulator ini dibuat untuk memudahkan pengguna yang ingin menggunakannya. Sehingga pengguna tidak perlu keluar dari sistem jika ingin menggunakan kalkulator. Rancangan tampilan kalkulator pada sistem ini dapat diliahat pada gambar 3.16 :
Gambar 3.16 Rancangan Tampilan Kalkulator
3.5.9 Rancangan Tampilan Menu About
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1 Lingkungan Implementasi
Lingkungan implementasi merupakan lingkungan perangkat lunak yang digunakan untuk membangun dan mengoperasikan perangkat lunak. Pada bagian ini semua analisis dan perancangan akan direpresentasikan ke dalam bentuk perangkat lunak yang dapat menunjang aktivitas pengguna dalam kehidupan sehari-hari.
Spesifikasi perangkat keras yang digunakan adalah:
1. Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz, ~2.5GHz 2. RAM 2.00 GB
3. Harddisk 500 GB
4. Dispaly Intel(R) HD Graphics Family 799 MB 5. Monitor 14’’
6. Mouse
7. Keyboard
Spesifikasi perangkat lunak yang digunakan adalah: 1. Windows 7 Home Basic
4.2Tampilan Antarmuka (Interface) Aplikasi
4.2.1 Tampilan Utama
Tampilan utama pada sistem ini terdiri dari enam menu, yaitu menu Teori, Proses, Transaksi, Tool, About dan Keluar. Tampilan ini dibuat semenarik mungkin. Pada tampilan ini diberikan aksesoris jam yang berjalan sesuai waktu ketika sistem dijalankan. Diberikan juga lambang fakultas agar sistem ini terlihat lebih menarik. Tampilan Utama sistem ini dapat dilihat padagambar 4.1 :
Gambar 4.1 Tampilan Utama
4.2.2 Tampilan Menu Proses Cari Bilangan Prima
Gambar 4.2 Tampilan Menu Proses cari bilangan prima
4.2.3 Tampilan Menu Proses Pembentukan Kunci
Gambar 4.3 Tampilan menu proses pembangkitan kunci
4.2.4 Tampilan Proses Enkripsi
Gambar 4.4 Tampilan Proses Enkripsi
4.2.5 Tampilan Proses Dekripsi
Nilai yang terdapat pada tampilan ini merupakan nilai yang sudah ditentukan oleh
sistem. Sedangkan chipertextnya adalah chipertext yang dikirim dari proses enkripsi sebelumnya. Pada Proses Dekripsi ini akan menguji kebenaran sistem, apakah plaintext yang keluar sesuai dengan plaintext pada proses enkripsi. Gambar tampilan proses dekripsi ini dapat dilihat pada gambar 4.5
4.2.6 Tampilan Kalkulator
Tombol dan fungsi yang ada pada kalkulator di sistem ini sama seperti kalkulator yang ada pada komputer. Tampilan ini dibuat untuk memudahkan user yang membutuhkan kalkulator. Sehingga user tidak perlu keluar dari sistem untuk menggunakan kalkulator. Gambar tampilan ini dapat dilihat oada gambar berikut :
Gambar 4.6 Tampilan menu tools Kalkulator
4.2.7 Tampilan Windows Explorer
Tampilan ini hanya sebagai fasilitas untuk pengguna yang ingin langsung masuk ke windows explorer tanpa harus keluar dari sistem. Sehingga pengguna yang belum akan keluar dari sistem tidak perlu membuka sistem beberapa kali. Pengguna cukup memilih menu ini dan sistem akan menghubungkan ke windows explorer. Tampilan ini dapat dilihat pada gambar 4.7.
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari hasil analisis dan perancangan perangkat lunak yang telah dilakukan dapat diambil kesimpulan bahwa perangkat lunak yang dibuat sudah mampu memberikan keamanan pada pesan dengan baik didasarkan pada penggunaan algoritma yang telah dipaparkan. Kunci privat yang dibangkitkan selalu berubah-ubah nilainya walau terkadang nilai kunci publik yang dihasilkan nilainya sama. Dalam pembangkitan bilangan acak menggunakan algoritma
CSPRNG berbasis RSA sudah berjalan dengan baik. Pembuatan aplikasi simulasi kriptografi berbasis algoritma RSA ini dapat membuktikan bahwa algoritma kriptografi RSA dapat diimplementasikan dengan menggunakan fungsi-fungsi khusus yang tersedia dalam bahasa pemrograman Visual Basic 6.0. Aplikasi ini dibuat komunikatif sehingga diharapkan dapat memberi pemahaman mendalam mengenai langkah-langkah algoritma RSA.
5.2 Saran
DAFTAR PUSTAKA
Ariyus, D. 2005. Computer Security. Yogyakarta : Andi.
Ariyus, D. 2008 Pengantar Ilmu Kriptografi Teori Analisis dan Implementasi. Penerbit Andi, Yogyakarta.
Bishop, M. 2010 Introduction to Computer Security, Pearson Education. Inc Brian, F. 2000. RSA Releases Patent Early. InfoWord. 22: hal. 27.
Fithria, N. 2007. Jenis–Jenis Serangan Terhadap Kriptografi. Makalah. Bandung: Institut Teknologi Bandung.
Munir, R. 2006. Kriptografi. Edisi ke-1. Bandung: Informatika.
Schneier, B. 1996 Aplied Cryptography-2nd, John Wiley & Sons, New York
Stallings, W. 2005 Cryptography and Network Security Principles and Practices, 4thEdition, Prentice Hall.
LAMPIRAN A: LISTING PROGRAM
LAMPIRAN A: LISTING PROGRAM
FORM MENU UTAMA
Dim Ymouse, Xmouse, dy(30), dx(30), Da(30), Mo(30)
Dim Split1, Day1, Year1, Todaysdate, h, m, D, S, Face, Speed, n, scrll Dim Dsplit, HandHeight, Handwidth, HandX, HandY, Step, currStep
Dim Test, ClockHeight, ClockWidth, ClockFromMouseY, ClockFromMouseX Dim Fcol, Mcol, Scol, Hcol, Dcol
Private Type FL T(30) As Long Le(30) As Long End Type Dim FL As FL Private Type HL T(30) As Long Le(30) As Long End Type Dim HL As HL Private Type SL T(30) As Long Le(30) As Long End Type Dim SL As SL Private Type ML T(30) As Long Le(30) As Long End Type Dim ML As ML Private Type DL T(30) As Long Le(30) As Long End Type Dim DL As DL Const PI = 3.1415
Private Declare Function GetActiveWindow Lib "user32" () As Long
Const SW_SHOWNORMAL = 1
Private Sub Sub_Menu_Cari_Bilangan_Prima_Click() Form_Bilangan_Prima.Show vbModal
End Sub
Private Sub Sub_Menu_Pembentukan_Kunci_Click() Form_Pembentukan_Kunci.Show vbModal
End Sub
Private Sub Sub_Menu_Proses_Enkripsi_Click() Form_Enkripsi.Show vbModal
End Sub
Private Sub Timer1_Timer()
dy(0) = dy(0) + (Ymouse - dy(0)) * Speed
secs = Second(Now) sec = -1.57 + PI * secs / 30 Mins = Minute(Now)
Next i
currStep = currStep - Step P
End Sub
Private Function SP(ByVal ST As String, ByVal Nu As Integer, Optional K As Byte = 1) As String .FontBold = False
.ForeColor = Dcol For i = 0 To Len(D) - 1 .CurrentY = DL.T(i) .CurrentX = DL.Le(i) Print SP(D, i)
Next i
.ForeColor = Fcol For i = 0 To n - 1 .CurrentY = FL.T(i) .CurrentX = FL.Le(i)
If (i = 18 Or i = 20 Or i = 22) Then