Perancangan Aplikasi Rsa Dengan Pembangkit Bilangan Prima Lehmann Dan Pembangkit Bilangan Acak Berbasis Rsa

(1)

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

UNIVERSITAS SUMATERA UTARA

2014


(2)

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


(3)

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,

Prof. Dr. Opim Salim Sitompul NIP. 19610817 198701 1001


(4)

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

Dini Rahayu 071402002


(5)

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,

Anandia Zelvina, S.TI, Maria Melisa Sinuraya, S.TI, Eunike Johanna Sitorus, S.TI, Nurul Dwi Rahma Putri, S.TI, dan Tika Y, S.TI atas bantuan, masukan, motivasi, hiburan dan kerjasamanya. Juga buat teman SMA Yunika Silvia Barus atas bantuan dan motivasinya. Semangat teman-teman, semoga kita mencapai impian yang diharapkan.


(6)

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.

Akhir kata penulis mengharapkan semoga skripsi ini dapat bermanfaat dan membantu semua pihak yang memerlukannya.


(7)

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.


(8)

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.


(9)

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


(10)

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

3.5.9 Rancangan Tampilan Kalkulator 50 3.5.10 Rancangan Tampilan Menu About 51


(11)

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


(12)

DAFTAR TABEL

Halaman

Tabel 2.1 Tabel Konversi Karakter ke dalam Kode ASCII 21 Tabel 2.2 Penelitian Terdahulu berkaitan dengan RSA dan algoritma Lehman 27


(13)

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


(14)

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.


(15)

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.


(16)

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 merupakan bagian dari kriptografi asimetris yang dijabarkan pertama sekali oleh tiga orang alumni dari Massachusetts Institute of Technology yaitu Ron Rivest, Adi Shamir dan Len Adleman pada tahun 1977. Huruf RSA tersebut berasal dari inisial nama mereka yaitu Rivest, Shamir dan Adleman. Algoritma RSA adalah algoritma yang menggunakan enkripsi kuncipublik.


(17)

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.


(18)

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

Pada tahap ini dilakukan analisis dengan menggunakan algoritma RSA dan algoritma Lehmann pada perancangan aplikasi RSA.


(19)

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

Pada bab ini merupakan pendahuluan yang berisi latar belakang, rumusan masalah, tujuan penelitian, batasan masalah, manfaat penelitian, metodologi penelitian, dan sistematika penulisan skripsi.


(20)

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 ini berisikan kesimpulan dari seluruh isi laporan skripsi.


(21)

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


(22)

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

Tipe teks merupakan tipe dasar yang sudah sangat dikenal dalam kehidupan sehari – hari. Tipe teks terdiri dari tipe karakter (char) dan tipe string. Tipe karakter (char)


(23)

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

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. Pengiriman tentu menginginkan pesan dapat dikirim secara aman, yaitu pengirim yakin bahwa


(24)

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

Dan kedua fungsi ini memenuhi (C) = P

Dk (Ek Keterangan:

(P)) = P

P = Plainteks


(25)

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 sejarah kriptografi dapat ditemukan di dalam buku David Khan yang berjudul The


(26)

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

Scytale merupakan pita panjang dari daun papyrus ditambah sebatang silinder. Pesan ditulis horizontal (baris per baris). Bila pesan dilepaskan, maka huruf-huruf di dalamnya telah tersusun membentuk pesan rahasia. Untuk membaca pesan, penerima melilitkan kembali silinder yang diameternya sama dengan diameter silinder pengirim. Namun, pada tiga puluh tahun terakhir ini, kriptografi tidak hanya dimonopoli oleh pihak militer saja. Hal yang sama juga dilakukan oleh individu – individu yang menginginkan pesan dan komunikasi mereka tidak diketahui oleh pihak lain,dan setiap individu berhak mengamankan informasi keluarganya, pekerjaan, bisnis dan lain – lain. Apalagi zaman sekarang ini, persaingan yang begitu tingggi menyebabkan mereka rela mengeluarkan sekian dolar hanya untuk menjaga privasi mereka (Ariyus, 2005).


(27)

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 force attack dan analytical attack (Fithria, 2007).


(28)

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. i = bit LSB (Least Significant Bit) dari xi.


(29)

5. Barisan bit acak adalah z1, z2, z3,....

Sebagai contoh, untuk menemukan bialangan acak berbasis RSA, yaitu:

Misal p = 11 dan q = 5 N = p.q = 11.5 =55 E(3, or)

S = 3 X0 x

= 3 i = xi - 1e = 33 x

mod 55 = 27 2= 273

x

mod 55 = 48 3= 483

x

mod 55 =42 4= 423

karena x

mod 55 = 3 4 = x1 z

berarti dilakukan pengulangan setelah 3 kali i

z

mod 2

1 z

= 27 mod 2 = 1 2 =

z

48 mod 2 = 0 3

z

= 3 mod 2 = 1 4

karena z

= 27 mod 2 = 1 4 = z1

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 :

{ Masukan: p (yang akan diuji keprimaannya)Keluaran: p adalah prima atau tidak prima }

(a) Bangkitkan bilangan acak a yang lebih kecil dari p. (b) Hitung a(p – 1)/2

(c) Jika a

mod p. (p – 1)/2


(30)

(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


(31)

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


(32)

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

d = 19

mod ϕ (n)

-1

d = 19

mod 60

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

= 100

mod n

19

C = 40

mod 60

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


(33)

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

1 = C d

mod n = C

1 d

= 40

mod n

19

P

mod 60

1

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)

Pembagi bersama terbesar atau disingkat PBB (Greatest Common Divisor atau GCD) digunakan dalam rancangan algoritma Pohlig-Hellman pada saat penentuan kunci


(34)

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


(35)

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

Hasil

1

�=1 + 1 . 120

7

17,2857142857

2

�=1 + 2 .120

7

34,4205714286

Mulai dari Nilai GCD(120, e)

e = 2 120 mod 2 = 0 GCD(2, 120) = 2 e = 3 120 mod = 0

GCD(3, 120) = 3 e = 4 120 mod 4 = 0

GCD(4, 120) = 4 e = 5 120 mod 5 = 0

GCD(5, 120) = 5 e = 6 120 mod 6 = 0

GCD(6, 120) = 6

e = 7

120 mod 7 = 6 7 mod 6 = 1 6 mod 1 = 0 GCD(7, 120) = 1


(36)

3

=1 + 3 . 120 7

51,5714285714

4 =1 + 4 . 720

7

68,7148571485

5

�=1 + 5 . 120

7

85,8571428571

6

=1 + 6. 120

7

103

Jadi, nilai dari kunci dekripsi (d) yang diperoleh adalah 103

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

Bilang an

Karakter Bilang an

Karakter Bilang an

Karakter Bilang an

Karakter

000 NUL (Null char \0)

033 ! (exclamation

mark)

066 B 099 c

001 SOH (Start of Header)

034 " (double

quote)

067 C 100 d

002 STX (Start of Text)

035 # (number sign)

068 D 101 e

003 ETX (End of Text)


(37)

004 EOT (End of Transmission)

037 % (percent) 070 F 103 g 005 ENQ (Enquiry) 038 &

(ampersand)

071 G 104 h

006 ACK

(Acknowledgm ent)

039 ' (single quote)

072 H 105 i

007 BEL (Bell \a) 040 ( (left/opening

parenthesis)

073 I 106 j

008 BS (Backspace \b)

041 ) (right/closing

parenthesis)

074 J 107 k

009 HT (Horizontal Tab \t)

042 * (asterisk)

075 K 108 l

010 LF (Line Feed \n)

043 + (plus) 076 L 109 m 011 VT (Vertical

Tab \v)

044 , (comma)

077 M 110 n

012 FF (Form Feed \f)

045 - (minus or

dash)

078 N 111 o

013 CR (Carriage Return \r)

046 . (dot)

079 O 112 p

014 SO (Shift Out) 047 / (forward

slash)

080 P 113 q

015 SI (Shift In) 048 0 081 Q 114 r 016 DLE (Data

Link Escape)

049 1 082 R 115 s

017 DC1 (XON) (Device Control 1)

050 2 083 S 116 t

018 DC2 (Device Control 2)

051 3 084 T 117 u

019 DC3 (XOFF) (Device Control 3)

052 4 085 U 118 v

020 DC4 (Device Control 4)

053 5 086 V 119 w

021 NAK (Negative Acknowledgem ent)

054 6 087 W 120 x

022 SYN (Synchronous Idle)

055 7 088 X 121 y

023 ETB (End of Trans. Block)

056 8 089 Y 122 z

024 CAN (Cancel) 057 9 090 Z 123 { (left/openi

ng brace) 025 EM (End of

Medium)

058 : (colon)

091 [ (left/openi

ng bracket)

124 | (vertical


(38)

Dari tabel ASCII diperoleh hasil sebagai berikut.

P1 =72 P2 =69 P3 =76 P4 =80 P5 =33 P6

P

=33

7 =33 P8 =65 P9 =71 P10 =117 P11 =108 P12

P = 112

13 =71 P14 =117 P15 =108 P16 =112

3. Setiap hasil yang diperoleh akan dienkripsi menjadi blok Ci

C

dengan rumus i = Pie mod n

Pada tahap ini pengirim memberikan kunci ke pada penerima yaitu e = 7 dan nilai n =143. Pengirim melakukan enkripsi setiap blok pesan sebagai berikut:

026 SUB (Substitute)

059 ; (semi-colon)

092 \ (back slash)

125 } (right/closi

ng brace) 027 ESC (Escape) 060 <

(less than)

093 ] (right/closi

ng bracket)

126 ~ (tilde)

028 FS (File Separator)

061 = (equal sign)

094 ^ (caret/circ

umflex)

127 DEL (delete) 029 GS (Group

Separator)

062 > (greater than)

095 _ (underscor

e) 030 RS (Request

to Send)

(Record

Separator)

063 ? (questionmark

)

096 `

031 US (Unit Separator)

064 @ (AT symbol)

097 a 032 SP (Space) 065 A 098 b


(39)

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

ciphertextyang diterima didekripsikan sebagai berikut: mod n.


(40)

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

4 108

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


(41)

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 Visual Basic 6.0 dapat digunakan untuk menyusun dan membuat program aplikasi pada sistem operasi windows. Program aplikasi dapat berupa program database, program grafis dan lain sebagainya. Didalam Visual Basic 6.0 terdapat komponen - komponen yang sangat membantu dalam pembuatan programaplikasi. Dalam pembuatan program aplikasi pada Visual Basic 6.0 dapat didukung oleh software seperti Microsoft Access, Microsoft Exel, Seagate Crystal Report, dan lain


(42)

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 iniadalah

pengembangantinggikinerjaRSA

. Montgomery

mengimplementasikanRSAdeng anukuranumum

seperti1.024bit, 1.536bit, dan 2048bit. Hasilmenunjukkanbah wadesain yang tepat danantarmukaditerapkan dengan baik.


(43)

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.


(44)

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

N = p.q = 11.5 =55 E(3, or)

S =3 X0 x

= 3

i = xi - 1e = 33 x

mod 55 = 27 2= 273

x

mod 55 = 48 3= 483

x

mod 55 =42 4= 423

karena x

mod 55 = 3 4 = x1

z

berarti dilakukan pengulangan setelah 3 kali i

z

mod 2

1 z

= 27 mod 2 = 1 2 =

z

48 mod 2 = 0

3 z

= 3 mod 2 = 1

4 karena z

= 27 mod 2 = 1 4 = z1

jadi baris acak yang dihasilkan

maka pengulangan dilakukan setelah 3 kali

1011 0110 1101 1011 0101 dan seterusnya, kemudian dikonversikan ke bilangan desimal


(45)

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

2. L = 311-1/2 = 3

mod 11 5

= 243 mod 11 mod 11

= 1 mungkin prima 3. a = 2

L = 25

= 32 mod 11 mod 11

= 10-11

= -1 yakin

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

2. Hitung simbol Legendre �

� = L = a (p-1)/2

3. Bila L ≠ 1 dan L ≠ -1 maka p bukan bilangan prima mod p


(46)

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)

e = 2 120 mod 2 = 0 GCD(2, 120) = 2 e = 3 120 mod = 0

GCD(3, 120) = 3 e = 4 120 mod 4 = 0

GCD(4, 120) = 4 e = 5 120 mod 5 = 0

GCD(5, 120) = 5 e = 6 120 mod 6 = 0

GCD(6, 120) = 6

e = 7

120 mod 7 = 6 7 mod 6 = 1 6 mod 1 = 0 GCD(7, 120) = 1


(47)

Nilai k Persamaan

� =1+k .φ(n) e

Hasil

1

�=1 + 1 . 120

7

17,2857142857

2

=1 + 2 .120

7

34,4205714286

3

=1 + 3 . 120 7

51,5714285714

4

�=1 + 4 . 720

7

68,7148571485

5

�=1 + 5 . 120

7

85,8571428571 6

�=1 + 6. 120

7

103

Jadi, nilai dari kunci dekripsi (d) yang diperoleh adalah 103

3.1.2 Enkripsi

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}


(48)

P1 =72 P2 =69 P3 =76 P4 =80 P5 =33 P6

P

=33

7 =33 P8 =65 P9 =71 P10 =117 P11 =108 P12

P = 112

13 =71 P14 =117 P15 =108 P16

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:

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.


(49)

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


(50)

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

Use Case Diagrammenggambarkan suatu urutan interaksi antara satu atau lebih aktor dan sistem. Use case mempresentasikan sebuah interaksi antar user sebagai aktor dengan sistem. Seseorang atau sebuah aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan


(51)

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


(52)

Gambar 3.1 Use Case Diagram

3.3 General Arsitektur

General arsitektur merupakan alur – alur kerja pada sistem yang akan dibuat. Pada aplikasi ini yang akan dilakukan pertama oleh sistem adalah mencari bilangan acak dengan menggunakan CSPRNG berbasis RSA setelah mendapatkan bilangan acak, bialnagan tersebut diuji apakah dia prima atau tidak dengan menggunakan Algoritma Lehmann. Jika bilangan itu prima maka akan menjadi nilai p dan bila bilangan itu bukan prima maka program akan menggulang mencari bilangan acak lagi dan setelah itu diuji lagi prima.


(53)

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

i. 1, z2, z3,....


(54)

(55)

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

1 atau –1 (mod p), maka peluang p bukan prima adalah 50%.


(56)

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) * (q-1). Fungsi totienteuler dari suatu bilangan menyatakan jumlah bilangan bulat positif yang lebih kecil dari n dan prima terhadap n.


(57)

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 .

Semua langkah-langkah pada proses pembangkitan kunci tersebut dapat digambarkan pada diagram alir dibawah ini.


(58)

(59)

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.


(60)

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.


(61)

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

Pada rancangan menu Proses terdapat dua pilihan, yaitu Cari Bilangan Prima dan Pembentukan Kunci. Rancangan tampilan menu Proses ini masih sama seperti pada tampilan utama sistem. Gambar rancangan menu Proses ini dapat dilihat pada gambar 3.9 :


(62)

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


(63)

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

Rancangan tampilan ini masih sama seperti tampilan utama. Pada menu transaksi hanya terdapat satu pilihan menu, yaitu Enkripsi dan Dekripsi. Tetapi jika pengguna sudah masuk pada tampilan ini, maka akan terbagi menjadi dua box yaitu box Enkripsi dan box Dekripsi. Box ini juga saling berhubungan. Karena jika pengguna tidak mengunakan box Enkripsi terlebih dahulu, maka sistem juga tidak akan memunculkan box Dekripsi. Rancangan tampilan menu transaksi ini dapat dilihat padagambar 3.12.


(64)

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


(65)

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

Rancangan tampilan ini sama halnya dengan rancangan pada tampilan utama sistem. Pada menu Tool diberikan dua pilihan submenu, yaitu Kalkulato dan Windows Explorer. Rancangan tampilan menu Tool ini dapat dilat pada gambar 3.15


(66)

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

Rancangan tampilan ini sama seperti pada tampilan utama sistem. Pada menu About diberikan dua puliah menu, yaitu About Program dan About Programmer. Rancangan tampilan menu About dapat dilihat pada gambar 3.17


(67)

(68)

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


(69)

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

Pada menu proses cari bilangan prima ini pengguna dapat mengetahui angka-angka yang merupakan bilangan prima. Pengguna dapat menentukan angka mulai dari angka yang diinginkan. Proses pembangkit kunci pada sistem ini menggunakan bilangan prima yang besar. Maka menu proses cari bilangan prima ini akan membatu user dalam mencari bilangan prima tersebut. Tampilan cari bilangan prima ini dapat dilihat pada gambar berikut :


(70)

Gambar 4.2 Tampilan Menu Proses cari bilangan prima

4.2.3 Tampilan Menu Proses Pembentukan Kunci

Pada tampilan ini, akn dijelaskan tahapan-tahapan pada pembentukan kunci. Tahapan-tahapan tersebut dijelaskan secara singkat. Pada tampilan ini pengguna juga dapat mencoba dan melihat langsung proses pembentukan kunci. Pengguna dapat menentukan sendiri nilai yang diinginkan, lalu sistem akan bekerja dan memperlihatkan proses pembentukan kunci tersebut. Tam[pilan ini dapat dilihat pada gambar 4.3


(71)

Gambar 4.3 Tampilan menu proses pembangkitan kunci

4.2.4 Tampilan Proses Enkripsi

Pada tampilan ini, user dapat meenguji sistem. Pada proses enkripsi ini sistem akan bekerja merubah plaintext yang dimasukkan oleh user menjadi chipertext. Nilai yang ada pada tampilan ini sudah ditentukan oleh sistem, sehingga user tidak dapat mengubahnya lagi. User harus menjalankan proses enkripsi jika ingin berlanjut ke proses dekripsi. Hal ini dikarenakan proses enkripsi dan dekripsi pada sistem ini saling berhubungan. Tampilan proses enkripsi ini dapat dilihat pada gambar berikut.


(72)

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


(73)

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.


(1)

If Val(Text54) = 1 Then Text100 = Val(Text1) Text200 = Val(Text2) Text300 = 1

End If

If Val(Text54.Text) <> 0 Then Text29.Text = Val(Text28) Text30.Text = Val(Text54)

Text55.Text = Val(Text29) Mod Val(Text30) End If

If Val(Text55) = 1 Then Text100 = Val(Text1) Text200 = Val(Text2) Text300 = 1

End If

If Val(Text55.Text) <> 0 Then Text31.Text = Val(Text30) Text32.Text = Val(Text55)

Text56.Text = Val(Text31) Mod Val(Text32) End If

If Val(Text56) = 1 Then Text100 = Val(Text1) Text200 = Val(Text2) Text300 = 1

End If

If Val(Text56.Text) <> 0 Then Text33.Text = Val(Text32) Text34.Text = Val(Text56)

Text57.Text = Val(Text33) Mod Val(Text34) End If

If Val(Text57) = 1 Then Text100 = Val(Text1) Text200 = Val(Text2) Text300 = 1

End If End Sub Sub Clear() Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = ""


(2)

Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Text11.Text = "" Text12.Text = "" Text13.Text = "" Text14.Text = "" Text15.Text = "" Text16.Text = "" Text17.Text = "" Text18.Text = "" Text19.Text = "" Text20.Text = "" Text21.Text = "" Text22.Text = "" Text23.Text = "" Text24.Text = "" Text25.Text = "" Text26.Text = "" Text27.Text = "" Text28.Text = "" Text29.Text = "" Text30.Text = "" Text31.Text = "" Text32.Text = "" Text33.Text = "" Text34.Text = "" Text41.Text = "" Text42.Text = "" Text43.Text = "" Text44.Text = "" Text45.Text = "" Text46.Text = "" Text47.Text = "" Text48.Text = "" Text49.Text = "" Text50.Text = "" Text51.Text = "" Text52.Text = "" Text53.Text = "" Text54.Text = "" Text55.Text = "" Text56.Text = "" Text57.Text = "" Text100.Text = "" Text200.Text = ""


(3)

Text300.Text = "" txt_nilai_e.Text = "" End Sub

Private Sub txt_kunci_p_Change() txt_nilai_n.Text = 0

txt_totient.Text = 0 txt_nilai_e.Text = 0 txt_nilai_d.Text = 0 txt_chiper1.Text = "" pb_kunci_q.SetFocus End Sub

Private Sub txt_kunci_q_Change() txt_nilai_n.Text = 0

txt_totient.Text = 0 txt_nilai_e.Text = 0 txt_nilai_d.Text = 0 txt_chiper1.Text = "" pb_hitung_n.SetFocus End Sub

Private Sub txt_nilai_n_Change() txt_totient.Text = 0

txt_nilai_e.Text = 0 txt_nilai_d.Text = 0 txt_chiper1.Text = "" pb_hitung_totient.SetFocus End Sub

Private Sub txt_totient_Change() Clear

Text100.Text = Val(txt_totient.Text) Text1.Text = Val(txt_totient.Text) Text2.Text = 2

Text61.Text = 1 Text62.Text = 1 Text63.Text = 0 Text64.Text = 0 txt_nilai_e.Text = 0 txt_nilai_d.Text = 0 txt_chiper1.Text = "" pb_kunci_e.SetFocus End Sub

Private Sub txt_nilai_e_Change() Text63.Text = Val(Text100) Text64.Text = Val(txt_nilai_e) txt_nilai_d.Text = 0


(4)

txt_chiper1.Text = "" pb_kunci_d.SetFocus End Sub

Private Sub txt_nilai_d_Change() txt_chiper1.Text = ""

txt_plain1.SetFocus End Sub

Private Sub txt_plain1_Change() txt_chiper1.Text = ""

End Sub

Private Sub Timer1_Timer() If HP = 0 Then

lbl_header.Visible = True HP = 1

Else

lbl_header.Visible = False HP = 0

End If End Sub

Private Sub Timer2_Timer() n = n + 1

Me.lbl_group.Caption = Left(Pemberitahuan, n) If n > Len(Pemberitahuan) Then n = 0

End Sub

Private Sub Timer3_Timer() If HP = 0 Then

l1.ForeColor = vbBlue l2.ForeColor = vbRed HP = 1

Else

l1.ForeColor = vbRed l2.ForeColor = vbBlue HP = 0

End If End Sub

Private Sub pb_keluar_Click() Unload Me

End Sub

Public Sub HanyaAngka(ByRef KeyAscii As Integer)

If ((KeyAscii < 48 And KeyAscii <> 8) Or KeyAscii > 57) Then KeyAscii = 0


(5)

End Sub

Private Sub txt_kunci_p_KeyPress(KeyAscii As Integer) HanyaAngka KeyAscii

End Sub

Private Sub txt_kunci_q_KeyPress(KeyAscii As Integer) HanyaAngka KeyAscii

End Sub

Form Dekripsi Dim PH As Integer Dim HP As Integer Dim Pemberitahuan Dim n As Byte

Private Sub Form_Load()

Pemberitahuan = " Untuk melakukan proses dekripsi pesan, terlebih dahulu masukkan nilai-nilai kunci untuk proses dekripsi, dan selanjutnya klick button proses jika chipertextnya sudah dientry.! "

End Sub

Private Sub lbl_header_Click() End Sub

Private Sub pb_dekripsi_Click() If txt_nilai_d2.Text = 0 Then

MsgBox "Nilai kunci (d) = 0" & vbCrLf & _

"Tentukan nilai kunci (d) untuk dapat melakukan proses dekripsi!", vbExclamation, "Nilai Kosong!"

txt_nilai_d2.SetFocus Exit Sub

End If

If nilai_n.Text = 0 Then

MsgBox "Nilai N = 0" & vbCrLf & _

"Tentukan nilai N untuk dapat melakukan proses dekripsi!", vbExclamation, "Nilai Kosong!"

nilai_n.SetFocus Exit Sub

End If

If txt_nilai_d2.Text > 0 Then txt_plain2.Text = txt_simpan.Text End If


(6)

txt_plain2.Text = txt_simpan.Text End If

End Sub

Private Sub pb_hapus_Click() txt_chiper2.Text = ""

txt_nilai_d2.Text = 0 txt_plain2.Text = "" nilai_n.Text = 0 End Sub

Private Sub pb_keluar_Click() Unload Me

End Sub

Private Sub Timer1_Timer() If HP = 0 Then

lbl_header.Visible = True HP = 1

Else

lbl_header.Visible = False HP = 0

End If End Sub

Private Sub Timer2_Timer() n = n + 1

Me.lbl_group.Caption = Left(Pemberitahuan, n) If n > Len(Pemberitahuan) Then n = 0

End Sub

Private Sub Timer3_Timer() If HP = 0 Then

l1.ForeColor = vbBlue l2.ForeColor = vbRed HP = 1

Else

l1.ForeColor = vbRed l2.ForeColor = vbBlue HP = 0

End If End Sub