Implementasi Kombinasi Rivest Shamir Adleman (Rsa) Dan Elgamal Dalam Penyandian Citra Bitmap
CITRA BITMAP
SKRIPSI
AHMAD IHSAN
081401058
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
(2)
IMPLEMENTASI KOMBINASI RIVEST SHAMIR ADLEMAN (RSA) DAN ELGAMAL DALAM PENYANDIAN
CITRA BITMAP
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
AHMAD IHSAN 081401058
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2015
(3)
PERSETUJUAN
Judul : IMPLEMENTASI KOMBINASI RIVEST SHAMIR
ADLEMAN (RSA) DAN ELGAMAL DALAM PENYANDIAN CITRA BITMAP
Kategori : SKRIPSI
Nama : AHMAD IHSAN
Nomor Induk Mahasiswa : 081401058
Program Studi : S1 ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Siti Dara Fadilla, S.Si, M.T Drs. Marihat Situmorang, M.Kom NIP. 197705162005012001 NIP. 196312141989031001
Diketahui/disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
(4)
PERNYATAAN
IMPLEMENTASI KOMBINASI RIVEST SHAMIR ADLEMAN (RSA) DAN ELGAMAL DALAM PENYANDIAN CITRA BITMAP
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 12 Januari 2015
Ahmad Ihsan NIM. 081401058
(5)
PENGHARGAAN
Alhamdulillahirabbil’alamin, penulis mengucapkan puji syukur yang tiada hentinya kehadirat Allah SWT atas limpahan rahmat dan karunia-Nya serta segala nikmat iman, islam, pikiran dan pemahaman terhadap ilmu pengetahuan sehingga penulis dapat menyelesaikan skripsi ini dengan baik. Shalawat dan salam penulis ucapkan kepada Rasulullah Muhammad SAW beserta para sahabat dan keluarganya yang telah menjadi tauladan bagi penulis dalam menjalani kehidupan.
Pada kesempatan kali ini penulis ingin mengucapkan terima kasih kepada semua pihak yang telah membantu penulis selama pengerjaan skripsi ini, antara lain kepada :
1. Dr. Poltak Sihombing, M.Kom selaku Ketua Departemen Ilmu Komputer, Fakultas Ilmu komputer dan Teknologi Informasi, Universitas Sumatera Utara.
2. Drs. Marihat Situmorang, M.Kom selaku pembimbing I atas arahan, bimbingan dan nasehatnya kepada penulis dalam menyelesaikan skripsi ini. Serta Siti Dara Fadilla, S.Si, M.T selaku pembimbing II yang telah banyak memberikan arahan, bimbingan, nasehat dan motivasi kepada penulis selama penulisan skripsi ini..
3. Dr. Poltak Sihombing, M.Kom sebagai dosen penguji I dan Ade Candra, S.T, M.Kom selaku dosen penguji II atas masukan, saran dan nasehatnya kepada penulis dalam menyelesaikan skripsi ini.
4. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
5. Seluruh dosen Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara yang telah membimbing dan mencurahkan ilmunya selama masa perkuliahan.
6. Seluruh pegawai administrasi Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara yang telah membantu penulis dalam pengurusan administrasi selama perkuliahan, seminar dan sidang meja hijau.
7. Kedua orang tua tercinta, Ayahanda Pitoyo dan Ibunda Supartini atas segala kasih dan sayang, nasehat, doa, dan dukungan serta kepercayaan yang telah diberikan kepada penulis selama kuliah dan menyelesaiakan skripsi ini.
(6)
8. Abangda Tony Zatmiko, Rony Gustam Kalvarisi dan Kakanda saya Dewi Try Agustina atas segala nasehat, dukungan, doa dan teladan yang diberikan kepada penulis untuk dapat menyelesaikan skripsi ini.
9. Saudari Daini, atas kesetiaan, kebersamaan, semangat, doa, dukungan, dan keceriaan serta motivasi yang diberikan kepada penulis.
10. Teman-teman sejawat Ferdy Harahap, Hanafi, Rahmat Dani, Nurman Hidayat, M.Reza Alvi, Reycho Surahman Sinaga, Irfan Antoni Siregar, Saria Mahdi Ginting, Arion Immanuel Sitorus, Andronikus Simarmata atas dukungan, kebersamaan dan motivasi yang diberikan kepada penulis.
11. Keluarga besar S1 Ilmu Komputer, khususnya angkatan 2008 yang telah banyak memberi dukungan, masukan dan kerjasama yang baik.
12. Teman-teman parkir Ilkom Bang Rizal, Bang Nuzul, Bozes atas semua motivasi dan kebersamaan serta keceriaan untuk menghilangkan kejenuhan diri penulis.
13. Semua pihak yang terlibat langsung ataupun tidak langsung dalam membantu penyelesaian skripsi ini yang tidak dapat penulis ucapkan satu persatu.
Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan, karena kesempurnaan hanyalah milik Allah semata. Oleh karena itu penulis menerima kritik dan saran dari semua pihak yang bersifat membangun dan menyempurnakan skripsi ini. Penulis berharap semoga skripsi ini bermanfaat bagi penulis sendiri pada khususnya dan pembaca pada umumnya.
Medan, 12 Januari 2015
(7)
ABSTRAK
Pertukaran informasi baik pesan berupa teks, citra dan video semakin mudah dan popular untuk dilakukan. Hal ini tidak mengurangi adanya resiko pencurian dan pembajakan pesan. Perlu dilakukan pengamanan pesan citra dengan menggunakan kriptografi sebelum data tersebut dikirim, dua diantaranya adalah algoritma kunci public Rivest-Shamir-Adleman (RSA) dan El-Gamal. Algoritma RSA dan El-Gamal menggunakan bilangan prima untuk mengenkripsi isi pesan. Bilangan prima dibangkitkan dengan menggunakan metode bilangan mersenne. Dalam penelitian ini, pengecekan terhadap keprimaan suatu bilangan menggunakan Lucas Lehmer Primality Test. Sistem yang dihasilkan dapat menjaga melakukan enkripsi dan dekripsi terhadap pesan citra menggunakan algoritma RSA dan El-Gamal.
Kata Kunci : BMP, El-Gamal, Lucas Lehmer Primality Test, Mersenne, Rivest-Shamir-Adleman (RSA)
(8)
ABSTRACT
Exchanging information such as text, image, and video is becoming popular and easy to do nowadays. This doesn't mean there is no risk in stealing or hijacking the information. It's necessary to secure the image messages using cryptography before sending, two among them are Rivest-Shamir-Adleman and El-Gamal public key algorithm . Those algorithm use prime numbers to encrypt the content. Prime number is generated using Mersenne number method. In this case, writer tries to check the prime number using Lucas Lehmer primality test. The resulting system can encrypt and decrypt the image message using RSA and El-Gamal algorithm.
Keywords : BMP, El-Gamal, Lucas Lehmer Primality Test, Mersenne, Rivest-Shamir-Adleman (RSA)
(9)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel xi
Daftar Gambar xii
Bab 1 Pendahuluan
1.1 Latar Belakang Masalah 1
1.2 Rumusan Masalah 3
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 4
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Bab 2 Tinjauan Pustaka
2.1 Kriptografi 6
2.2 Algoritma RSA 9
2.3.Algoritma ElGamal 12
2.4 Pengertian Citra 14
2.4.1 Pengertian Citra Analog 14
2.4.2 Pengertian Citra Digital 15
2.5 Jenis Citra 15
2.5.1 Citra Biner 16
2.5.2 Citra Grayscale 16
2.5.3 Citra Warna (16 Bit) 17
(10)
2.6 Format File Citra Bitmap (.Bmp) 18
2.7 Mode Warna 19
2.7.1 Mode Warna RGB (Red, Green, Blue) 20
2.7.2 Mode Warna CMYK (Cyan, Magenta Yellow Black) 21 2.7.3 Mode Warna HSI (Hue, Saturation, Intensity) 22
2.8 Kedalaman Bit 22
Bab 3 Analisis Dan Perancangan Sistem 23
3.1 Analisis Sistem 23
3.1.1 Analisis Masalah 23
3.1.2 Pemodelan Perangkat Lunak 24
3.1.2.1 Use Case Diagram 25
3.1.2.2 Squence Diagram 28
3.1.3 Analisis Proses Sistem 29
3.1.3.1 Analisis Lucas Lehmer Primality Test 30
3.1.3.2 Analisis Algoritma RSA 33
3.1.3.3 Analisis Algoritma ElGamal 36
3.2 Perancangan Sistem 38
3.2.1 Pembangkit Kunci Algoritma RSA dan ElGamal 39
3.2.2 Enkripsi Citra 39
3.2.3 Dekripsi Citra 40
3.2.4 Perancangan Flowchart 41
3.2.4.1 Flowchart Pembangkit Kunci Lucas Lehmer 42 3.2.4.2 Flowchart Pembangkit Kunci RSA 43 3.2.4.3 Flowchart Pembangkit Kunci Dekripsi RSA 44 3.2.4.4 Flowchart Pembangkit Kunci Enkripsi RSA 45 3.2.4.5 Flowchart Pembangkit Kunci ElGamal 46 3.2.4.6 Flowchart Proses Enkripsi ElGamal 47 3.2.4.7 Flowchart Proses Dekripsi ElGamal 48
3.2.5 Perancangan Tampilan 49
3.2.5.1 Perancangan Form Utama 49
3.2.5.2 Perancangan Form Pembangkit Kunci RSA 50 3.2.5.3 Perancangan Form Pemabngkit Kunci ElGamal 51
(11)
Bab 4 Implementasi Dan Pengujian Sistem 52
4.1 Implementasi 52
4.1.1 Proses Pengambilan Nilai RGB Pada Pixel 52 4.1.2 Proses Enkripsi Nilai RGB Citra Asli 54 4.1.3 Proses Dekripsi Nilai RGB Citra Ter-Enkripsi 56
4.2 Pengujian Sistem 57
4.2.1 Proses Pengenkripsian Citra Bitmap RSA dan ElGamal 57 4.2.2 Proses Pendekripsian Citra Bipmap RSA dan ElGamal 63
Bab 5 Kesimpulan dan Saran 67
5.1 Kesimpulan 67
5.2 Saran 68
Daftar Pustaka 69
(12)
DAFTAR TABEL
Halaman
Tabel 2.1 Hubungan Antara Bit pixel dengan Jumlah Warna Pada Bitmap 19 Tabel 2.2 Hubungan Antara Kedalaman warna dan Resolusi Warna 22
Tabel 3.1 Spesifikasi Use Case Enkripsi 26
(13)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Diagram Proses Enkripsi dan Dekripsi Algoritma Simetris 8 Gambar 2.2 Diagram Proses Enkripsi dan Dekripsi Algoritma Asimetris 8 Gambar 2.3 Koordinat Citra Digital 14
Gambar 2.4 Citra Biner 16
Gambar 2.5 Citra Grayscale 16
Gambar 2.6 Deret Warna 16 Bit 17
Gambar 2.7 Kedalaman Warna 16 Bit High Color 17
Gambar 2.8 Citra Warna 24 Bit 18
Gambar 2.9 Warna RGB 21
Gambar 2.10 Warna CMYK 21
Gambar 2.11 Warna Hue 22
Gambar 3.1 Diagram Ishikawa untuk Analisis Permasalahan Sistem 24
Gambar 3.2 Use Case Perancang Sistem 25
Gambar 3.3 Activity Diagram Enkripsi 26
Gambar 3.4 Activity Diagram Dekripsi 27
Gambar 3.5 Squence Diagram Enkripsi Citra Digital 29 Gambar 3.6 Squence Diagram Dekripsi Citra Digital 29 Gambar 3.7 Rancangan Pembangkit Kunci Algoritma RSA dan ElGamal 39
Gambar 3.8 Proses Enkripsi Citra 40
Gambar 3.9 Proses Dekripsi Citra 40
Gambar 3.10 Flowchart Pembangkit Kunci Lucas Lehmer 42
Gambar 3.11 Flowchart Pembangkit Kunci RSA 43
Gambar 3.12 Flowchart Pembangkit Dekripsi RSA 44
Gambar 3.13 Flowchart Pembangkit Kunci Enkripsi RSA 45
Gambar 3,14 Flowchart Pembangkit Kunci ElGamal 46
Gambar 3.15 Flowchart Proses Enkripsi ElGamal 47
Gambar 3.16 Flowchart Proses Dekripsi ElGamal 48
Gambar 3.17 Rancangan Form Utama 49
(14)
Gambar 3.19 Rancangan Form Pembangkit Kunci ElGamal 51
Gambar 4.1 Citra 24Bit 1024 x 768 Pixel 52
Gambar 4.2 Matriks RGB Citra 53
Gambar 4.3 Tampilan Form Proses Enkripsi Citra 57
Gambar 4.4 Input Citra 58
Gambar 4.5 Generate RSA Key 59
Gambar 4.6 Pasangan Kunci 59
Gambar 4.7 Enkripsi Dekripsi Awal 60
Gambar 4.8 Generate ElGamal 60
Gambar 4.9 Pasangan Kunci ElGamal 61
Gambar 4.10 Proses Generate Key Selesai 61
Gambar 4.11 Konfirmasi Proses Enkripsi RSA 62
Gambar 4.12 Proses Enkripsi Algoritma RSA 62
Gambar 4.13 Konfirmasi Proses Enkripsi ElGamal 63
Gambar 4.14 Proses Enkripsi Selesai 63
Gambar 4.15 Aplikasi Enkripsi Dekripsi Citra Bitmap 64 Gambar 4.16 Menu “Dekripsi” Setelah Input Citra 64 Gambar 4.17 Private Key Dekripsi Algoritma RSA dan ElGamal 65
Gambar 4.18 Proses Dekripsi Algoritma RSA 65
(15)
ABSTRAK
Pertukaran informasi baik pesan berupa teks, citra dan video semakin mudah dan popular untuk dilakukan. Hal ini tidak mengurangi adanya resiko pencurian dan pembajakan pesan. Perlu dilakukan pengamanan pesan citra dengan menggunakan kriptografi sebelum data tersebut dikirim, dua diantaranya adalah algoritma kunci public Rivest-Shamir-Adleman (RSA) dan El-Gamal. Algoritma RSA dan El-Gamal menggunakan bilangan prima untuk mengenkripsi isi pesan. Bilangan prima dibangkitkan dengan menggunakan metode bilangan mersenne. Dalam penelitian ini, pengecekan terhadap keprimaan suatu bilangan menggunakan Lucas Lehmer Primality Test. Sistem yang dihasilkan dapat menjaga melakukan enkripsi dan dekripsi terhadap pesan citra menggunakan algoritma RSA dan El-Gamal.
Kata Kunci : BMP, El-Gamal, Lucas Lehmer Primality Test, Mersenne, Rivest-Shamir-Adleman (RSA)
(16)
ABSTRACT
Exchanging information such as text, image, and video is becoming popular and easy to do nowadays. This doesn't mean there is no risk in stealing or hijacking the information. It's necessary to secure the image messages using cryptography before sending, two among them are Rivest-Shamir-Adleman and El-Gamal public key algorithm . Those algorithm use prime numbers to encrypt the content. Prime number is generated using Mersenne number method. In this case, writer tries to check the prime number using Lucas Lehmer primality test. The resulting system can encrypt and decrypt the image message using RSA and El-Gamal algorithm.
Keywords : BMP, El-Gamal, Lucas Lehmer Primality Test, Mersenne, Rivest-Shamir-Adleman (RSA)
(17)
BAB 1
PENDAHULUAN
1.1Latar Belakang Masalah
Dalam kehidupan rutinitas sehari-hari, interaksi sosial merupakan peristiwa yang tidak dapat dihindari. Komunikasi sesama merupakan salah satu kebutuhan dalam menjalani
hidup bersosial. Pada perkembangan zaman saat ini, tehnik dan metode yang telah ditemukan dalam penyampaian pesan ataupun berkomunikasi terhadap sesama sudah semakin beragam, salah satunya yaitu dengan berkirim pesan digital melalui berbagai media. Namun, hal tersebut masih belum menjamin bahwa pesan yang telah dikirim berstatus aman dan terhindar dari campur tangan pihak ketiga sebelum sampai ke tujuan, terlebih lagi jika pesan yang ingin disampaikan tersebut bersifat penting dan rahasia.
Ilmu yang mempelajari tentang cara-cara pengamanan data dikenal dengan istilah kriptografi. Penggunaan tehnik kriptografi telah ada sejak jaman Romawi kuno, Julius Caesar menggunakan tehnik kriptografi yang dijuluki Caesar cipher untuk mengirim pesan secara rahasia, meskipun tehnik yang digunakannya masih sangat sederhana. Begitu pula sewaktu perang dunia kedua, pihak sekutu berhasil memecahkan kode mesin kriptografi Jerman yang bernama Enigma. Keberhasilan yang sangat membantu pihak sekutu dalam memenangkan perang. Sejarah kriptografi penuh dengan intrik (muslihat) dan banyak orang melihat kriptografi sebagai sesuatu yang penuh dengan misteri.
Kebutuhan terhadap kriptografi pada saat ini terhitung semakin meningkat. Kriptografi memungkinkan kita untuk menyimpan informasi sensitif atau
(18)
mengirimkannya melalui jaringan yang tidak aman (seperti Internet) sehingga tidak dapat dibaca oleh siapa pun kecuali penerima yang dimaksud. Pada proses pengiriman data terdapat beberapa hal yang harus diperhatikan, yaitu : kerahasiaan, integritas data, autentikasi dan non repudiasi. Mengingat bahwa keamanan dalam pengiriman pesan masih belum begitu terjamin, maka dibutuhkan suatu proses pengamanan pesan berupa penyandian data sebelum dilakukan proses pengiriman. Seperti halnya pesan teks, pengamanan pesan citra dapat dilakukan dengan berbagai tehnik, salah satunya yang akan kita bahas dalam penelitian ini yaitu menggunakan tehnik kriptografi pada citra digital.
Kriptografi adalah ilmu yang mempelajari tentang bagaimana menjaga kerahasiaan suatu pesan, agar isi pesan yang disampaikan tersebut aman sampai ke penerima pesan (Ariyus, D. 2008). Langkah-langkah dalam kriptografi disebut algoritma kriptografi. Berdasarkan dari kunci yang digunakan algoritma kriptografi dapat dibagi menjadi tiga, Algoritma Simetri, Algoritma Assimetri, dan Hash Function. Dimana Algoritma Simetri menggunakan satu kunci untuk proses enkripsi dan dekripsinya. Sedangkan Algoritma Assimetri menggunakan dua kunci berbeda untuk proses enkripsi dan dekripsinya, yaitu kunci umum (public key) yang digunakan untuk proses enkripsi (perubahan data plain teks menjadi chipper text) yang sifatnya tidak rahasia, dan kunci pribadi (private key) yang digunakan untuk proses dekripsi (pengembalian data chipper text menjadi plain text) yang sifatnya rahasia dan masing-masing pihak memiliki kunci pribadi yang berbeda.
Penggunaan kunci pribadi dapat digunakan untuk autentikasi (pengenalan identitas pengirim) dan non repudiasi (pencegahan penyangkalan pengiriman data) karena dalam proses dekripsi dapat diketahui siapa pihak pengirim dengan melihat kunci pribadi yang dipakai.
Dalam proses penyandian, penyandian yang biasa dipakai adalah Rivest Shamir Adleman (RSA) Coding, dimana RSA Coding merupakan proses penyandian kunci asimetris (asymmetric key). Begitu juga dengan algoritma kriptografi ElGamal yang merupakan salah satu algoritma kriptografi kunci asimetris yang menggunakan sepasang kunci yang berbeda, satu kunci enkripsi dan satu kunci dekripsi.
(19)
Mencermati hal diatas penulis ingin melakukan penelitian yang berjudul
“Implementasi Kombinasi Rivest Shamir Adleman (RSA) dan ElGamal dalam Penyandian Citra Bitmap” Penulis akan membahas teknik Kriptografi dengan menggunakan algoritma RSA yang kemudian dikombinasikan dengan algoritama ElGamal pada file citra bitmap.
1.2Rumusan Masalah
Berdasarkan latar belakang, maka yang menjadi rumusan masalah pada penelitian ini adalah bagaimana mengimplementasikan kombinasi algoritma Rivest Shamir Adleman (RSA) dan algoritma ElGamal dalam proses pengenkripsian dan pendekripsian pesan citra bitmap.
1.3Batasan Masalah
Batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini adalah:
1. Penelitian ini membahas bagaimana memperoleh citra hasil penyandian algoritma RSA dan ElGamal.
2. Pesan yang akan disandikan adalah file Citra dengan Format *.bmp 3. Bahasa pemrograman yang akan digunakan yaitu Visualbasic.net
4. Bilangan prima yang digunakan hanya meliputi bilangan prima Lucas Lehmer.
1.4Tujuan Penelitian
Tujuan utama dari skripsi ini adalah: Mengetahui proses pengenkripsian dan pendekripsian file citra bitmap menggunakan kombinasi RSA dan ElGamal untuk menjaga keamanan dan kerahasiaan serta keaslian dari data tersebut.
(20)
1.5Manfaat Penelitian
Dari penelitian ini diharapkan:
1. Menambah literatur dan rujukan dalam bidang ilmu enkripsi dekripsi mengenai pengamanan terhadap data file citra menggunakan kombinasi algoritma Rivest Shamir Adleman (RSA) dan algoritma ElGamal.
2. Memperoleh aplikasi yang berguna bagi semua orang untuk memberikan rasa aman dengan pengamanan data secara ganda dalam melakukan pertukaran informasi digital.
1.6Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini: 1. Studi Literatur
Penulisan tugas akhir ini diawali dengan melakukan pembelajaran literatur pada sejumlah buku, artikel, paper, jurnal, makalah, maupun situs internet mengenai ataupun berhubungan dengan kriptografi menggunakan algoritma Rivest Shamir Adleman (RSA) dan algoritma ElGamal terhadap file citra bitmap.
2. Analisis dan Perancangan Sistem
Pada tahap ini akan dilaksanakan analisis terhadap kriptografi algoritma Rivest Shamir Adleman (RSA) dan algoritma ElGamal serta mengenai file citra digital bitmap yang kemudian akan dilanjutkan tahap perancangan antarmuka dan perancangan sistem penyandian citra bitmap dengan menggunakan algoritma-algoritma tersebut.
3. Implementasi Sistem
Pada tahap ini akan dilaksanakan pengkodean ( coding ). 4. Pengujian Sistem
Dalam tahap ini dilakukan pengujian terhadap sistem yang telah dibangun, seperti melakukan ujicoba proses enkripsi dan dekripsi file citra digital.
5. Dokumentasi
Dalam tahapan ini dilakukan penyusunan laporan dari hasil analisis dan perancangan sistem dalam format penulisan penelitian.
(21)
1.7Sistematika Penulisan
Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama, sebagai berikut :
BAB 1: PENDAHULUAN
Bab ini merupakan penjelasan mengenai latar belakang pemilihan topik penelitian
“Implementasi Kombinasi Algoritma Rivest Shamir Adleman (RSA) dan ElGamal
dalam Penyandian Citra Bitmap”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian serta sistematika penulisan.
BAB 2: TINJAUAN PUSTAKA
Bab ini berisi teori-teori yang berkaitan dengan penelitian yang dilakukan penulis. Teori-teori tersebut antara lain : algoritma kriptografi (khususnya RSA dan ElGamal), dan citra bitmap.
BAB 3: ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisis dan perancangan sistem dengan menggunakan flowchart atau diagram alir dan perancangan interface atau antarmuka sistem untuk menghasilkan suatu rancang bangun yang pada tahap selanjutnya diimplementasikan dengan bahasa pemrograman.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini berisikan pembahasan yang berkaitan dengan implementasi perangkat lunak yang telah dirancang berdasarkan data yang diperoleh. Kinerja sistem dilihat dari keberhasilan enkripsi-dekripsi.
BAB 5: KESIMPULAN DAN SARAN
Bab ini akan memuat kesimpulan secara umum dari uraian pada bab-bab sebelumnya, serta saran untuk pengembangan lebih lanjut dari penelitian ini.
(22)
BAB 2
TINJAUAN PUSTAKA
2.1Kriptografi
Kriptografi ( cryptography ) berasal dari Bahasa Yunani yaitu “cryptos” yang artinya
“secret” (rahasia) dan “graphein” yang artinya “writing” (menulis). Jadi kriptografi
berarti “secret writing” (tulisan rahasia). Kriptografi adalah ilmu dan seni untuk
menjaga kerahasiaan pesan dengan cara menyandikan ke dalam bentuk yang tidak dapat dimengerti maknanya. Kriptografi mempunyai sejarah yang sangat menarik dan panjang. Kriptografi sudah digunakan lebih dari 4000 tahun yang lalu, diperkenalkan oleh orang-orang mesir lewat hieroglyph. (Mollin, Richard A.2007)
Keamanan data merupakan suatu hal yang dibutuhkan semua orang, supaya data yang dikirim aman dari gangguan orang yang tidak bertanggungjawab yang dapat membahayakan keamanan pesan pada saat proses pengiriman data. Untuk mengamankan data tersebut kita menggunakan teknik kriptografi seperti yang sudah dijelaskan diatas. Ada beberapa komponen kriptografi dasar, seperti: (Ariyus, D. 2008)
1. Enkripsi
Enkripsi merupakan cara pengamanan data yang dikirimkan sehingga terjaga kerahasiaannya. Pesan asli disebut plaintext (teks biasa), yang diubah menjadi kode-kode tidak dimengerti. Enkripsi bisa diartikan dengan chiper atau kode .
(23)
2. Dekripsi
Merupakan kebalikan dari Enkripsi. Pesan yang telah di Enkripsi dikembalikan kebentuk aslinya dan algoritma yang digunakan untuk dekripsi tentu saja berbeda dengan proses Enkripsi.
3. Kunci
Ada dua penerapan kunci pada pengamanan kriptografi yaitu, kunci umum (public key) dan kunci pribadi (private key).
4. Ciphertext
Ciphertext adalah bentuk penyandian dari proses Enkripsi dan pesan pada teks-kode ini tidak dapat dibaca karena berupa karakter-karakter yang tidak mempunyai ejaan atau makna tertentu.
5. Plaintext
Plaintext sering disebut dengan cleartex, Adalah teks asli yang memiliki makna yang akan dikirim kepada penerima. Teks asli inilah yang akan diproses dengan algoritma kriptografi menjadi ciphertext (teks-kode).
6. Pesan
Pesan adalah sesuatu informasi yang akan disampaikan atau dikirim kepada penerima dan pesan merupakan sesuatu yang sering dirahasiakan. Pesan dapat berupa data atau informasi yang di kirim baik itu melalui kurir, saluran komunikasi data, dan sebagainya atau yang disimpan didalam media perekaman seperti kertas, storage dan sebagainya.
7. Cryptanalysis
Cryptanalysis bisa diartikan sebagai analisi kode atau suatu ilmu untuk mendapatkan pesan teks asli atau Plaintext tanpa harus mengetahui kunci yang sah secara wajar. Proses ini disebut juga dengan breaking code. Analisis dilakukan dengan menemukan kelemahan dari algoritma yang dilakukan oleh kriptografi dan akhirnya dapat menemukan kunci atau teks aslinya dari sebuah proses Enkripsi dengan algoritma tersebut.
(24)
Algoritma kriptografi berdasarkan jenis kunci yang digunakan dapat dibedakan menjadi dua jenis yaitu:
a. Algoritma Simetris
Algoritma simetri sering disebut dengan algoritma klasik, karena memakai kunci yang sama untuk proses enkripsi dan dekripsi. Algoritma ini sudah ada sejak 4000 tahun yang lalu.
Karena kunci yang digunakan untuk proses enkripsi dan dekripsi sama, sehingga sering disebut juga one key/ private key/ single key, seperti Twofish, One Time Pad. (Mollin, Richard A.2007)
Gambar 2.1 Diagram proses enkripsi dan dekripsi algoritma simetris
b. Algoritma Asimetris
Algoritma Asimetri sering juga disebut dengan kunci publik. Dimana kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi, seperti algoritma RSA, ElGamal, dll. Kunci-kunci tersebut berhubungan satu sama lain: (Mollin, Richard A.2007)
Gambar 2.2 Diagram proses enkripsi dan dekripsi algoritma asimetris
Plainteks Cipherteks Plainteks
enkripsi dekripsi
Kunci enkripsi (K) Kunci dekripsi (K)
Plainteks
Kunci Public (K1) Kunci Privat (K2) Cipherteks
(25)
2.2 Algoritma RSA
Dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat, algoritma yang paling populer adalah algoritma RSA. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu: Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang baik, maka selama itu pula keamanan algoritma RSA tetap terjamin. (Munir, R. 2007)
Besaran-besaran yang digunakan pada algoritma RSA:
1. p dan q bilangan prima (rahasia)
2. r = p q (tidak rahasia)
3. n = (p – 1)(q – 1) (rahasia) 4. e (kunci enkripsi/kunci publik) (tidak rahasia) 5. d (kunci dekripsi/kunci privat) (rahasia)
6. x (plainteks) (rahasia)
7. y (cipherteks) (tidak rahasia)
a. Prosedur Membuat Pasangan Kunci
1. Pemilihan dua buah bilangan prima sembarang, p dan q.
2. Penghitungan r = p q. Sebaiknya p q, sebab jika p = q maka r = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari r.
3. Penghitungan n = (p – 1)(q – 1).
4. Pemiilihan kunci publik e, yang relatif prima terhadap n.
5. Pembangkitan kunci rahasia menggunakan persamaan d e = 1 + kn , sehingga d dapat dihitung dengan:
e kn
(26)
Keterangan : d : kunci dekripsi (rahasia)
e : kunci enkripsi (tidak rahasia) yang relatif prima terhadap n n : hasil perhitungan dari (p-1)(q-1)
k : dengan mencoba nilai 1,2,3,... sehingga nilai d bulat
Akan terdapat bilangan bulat k yang menyebabkan memberikan bilangan bulat d. Dengan catatan e dan d dapat dipertukarkan urutan pembangkitannya. Jika langkah 4
diganti dengan “Pemilihan kunci rahasia d, yang …”, maka pada langkah 5 kita
menghitung kunci publik dengan rumus yang sama.
Contoh : Misalkan p = 47 dan q = 71 (keduanya prima). Selanjutnya, hitung nilai r = p q = 3337 dan n = (p – 1)(q – 1) = 3220
Pemilihan kunci publik e = 79, karena 79 relatif prima dengan 3220. e dan r dapat dipublikasikan ke umum. Selanjutnya penghitungan kunci dekripsi d seperti yang dituliskan pada langkah instruksi 5 dengan menggunakan persamaan (1),
79 3220) (
1
k
d
Keterangan : d : kunci dekripsi (rahasia)
e : kunci enkripsi (tidak rahasia) diperoleh 79 n : hasil perhitungan dari (p-1)(q-1) diperoleh 3220 k : dengan mencoba nilai 1,2,3,... sehingga nilai d bulat
Dengan mencoba nilai k = 25 diperoleh nilai d yang bulat adalah 1019. Ini adalah kunci dekripsi yang harus dirahasiakan.
b. Proses Enkripsi
Plainteks disusun menjadi blok-blok x1, x2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai r – 1. Setiap blok xi dienkripsi
(27)
yi = xi e mod r ………(2)
Keterangan: yi : blok cipherteks r : hasil perkalian p dan q
xi : blok plainteks
e : kunci enkripsi (tidak rahasia) yang relatif prima terhadap n
c. Proses Dekripsi
Setiap blok cipherteks yi didekripsi kembali menjadi blok xi dengan rumus
xi = yid mod r ………(3)
Keterangan: yi : blok cipherteks
xi : blok plainteks
d : kunci dekripsi (rahasia) r : hasil perkalian p dan q
Contoh : Misalkan plainteks yang akan dienkripsikan adalah x = HARI INI atau dalam sistem desimal (pengkodean ASCII) = 7265827332737873
Kemudian x dipecah menjadi enam blok yang berukuran 3 digit: x1 = 726 x3 = 733 x5 = 787 x2 = 582 x4 = 273 x6 = 003
Nilai-nilai xi ini masih terletak di dalam rentang 0 sampai 3337 – 1 (agar transformasi
menjadi satu-ke-satu).
Kemudian blok-blok plainteks dienkripsikan dengan rumus yi = xi e mod r , sebagai
berikut:
72679 mod 3337 = 215 = y1 27379 mod 3337 = 933 = y4 58279 mod 3337 = 776 = y2 78779 mod 3337 = 1731 = y5 73379 mod 3337 = 1743 = y3 00379 mod 3337 = 158 = y6
(28)
Dekripsi dilakukan dengan menggunakan kunci rahasia d = 1019
Apabila blok-blok cipherteks didekripsikan akan bernilai sebagai berikut: 2151019 mod 3337 = 726 = x1
7761019 mod 3337 = 582 = x2 17431019 mod 3337 = 733 = x3
…
Blok plainteks yang lain dikembalikan dengan cara yang serupa. Akhirnya kita memperoleh kembali plainteks semula x = 7265827332737873
Kemudian diubah dalam karakter ASCII adalah x = HARI INI.
2.3 Algoritma ElGamal
Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma Elgamal juga adalah algoritma kriptografi kunci-publik. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit. (Munir, R. 2006)
Besaran-besaran yang digunakan dalam algoritma ElGamal yaitu:
1. p bilangan prima (tidak rahasia)
2. Bilangan acak, g ( g < p) (tidak rahasia) 3. Bilangan acak, x (x < p) (kunci privat) (rahasia) 4. y = gx mod p (kunci publik) (tidak rahasia)
5. m (plainteks) (rahasia)
6. a dan b (cipherteks) (tidak rahasia)
a. Prosedur Membuat Pasangan Kunci
1. Pemilihan sembarang bilangan prima p.
2. Pemilihan dua buah bilangan acak g dan x, dengan syarat g < p dan x < p. 3. Penghitungan y = gx mod p……… (4)
(29)
b. Proses Enkripsi
Plainteks disusun menjadi blok-blok m1, m2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1. Dilanjutkan dengan pemilihan bilangan acak k, yang dalam hal ini 0 k p – 1, sedemikian sehingga k relatif prima dengan p – 1. Setiap blok m dienkripsi dengan rumus:
a = gk mod p ………….. (5) dan b = ykm mod p…………..(6) Keterangan: a : cipherteks pertama
b : cipherteks kedua
p : bilangan prima yang telah ditentukan g : bilangan acak lebih kecil dari p
k : bilangan acak yang memenuhi 0 k p – 1 y : kunci publik hasil dari gx mod p
m : blok-blok plainteks
Pasangan a dan b adalah cipherteks untuk blok pesan m. Dengan begitu ukuran cipherteks dua kali ukuran plainteksnya.
c. Proses Dekripsi
Untuk mendekripsi a dan b digunakan kunci rahasia, x, dan plainteks m diperoleh kembali dengan persamaan
(ax)-1 = ap-1-x mod p………….. (7) dan m = b/ax mod p………….. (8) Keterangan: a : cipherteks pertama , x : kunci privat (x < p)
b : cipherteks kedua , m : blok-blok plainteks p : bilangan prima yang telah ditentukan
(30)
2.4 Pengertian Citra
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital. (Sutoyo. T. 2009)
Gambar koordinat citra digital dapat dilihat pada Gambar 2.3
Gambar 2.3 Koordinat Citra Digital
2.4.1 Pengertian Citra Analog
Citra analog adalah citra yang bersifat kontinu, seperti gambar pada monitor televisi, foto sinar X, foto yang tercetak di kertas foto, lukisan, pemandangan alam, hasil CT scan, gambar-gambar yang terekam pada pita kaset, dan lain sebagainya. Citra analog tidak dapat direpresentasikan dalam komputer sehingga tidak bisa diproses di komputer secara langsung. Oleh sebab itu, agar citra ini dapat diproses di komputer, proses konversi analog ke digital harus dilakukan terlebih dahulu. Citra analog dihasilkan dari alat-alat analog, seperti video kamera analog, seperti video kamera analog, kamera foto analog, WebCam, CT scan, sensor rontgen untuk foto thorax,
(31)
sensor gelombang pendek pada sistem radar, sensor ultrasound pada sistem USG, dan lain sebagainya. (Sutoyo. T. 2009)
Hampir semua kejadian alam boleh diwakili sebagai perwakilan analog seperti bunyi, cahaya, air, elektrik, angin dan sebagainya. Jadi citra analog adalah citra yang terdiri dari sinyal–sinyal frekuensi elektromagnetis yang belum dibedakan sehingga pada umumnya tidak dapat ditentukan ukurannya. (Putra, D. 2010)
2.4.2 Pengertian Citra Digital
Secara umum, pengolahan citra digital menunjuk pada pemrosesan gambar dua dimensi menggunakan komputer. Citra digital merupakan sebuah larik yang berisi nilai-nilai real maupun komplek yang direpresentasikan dengan deretan bit tertentu. (Putra, D. 2010)
Citra digital adalah citra yang dinyatakan secara diskrit (tidak kontinu), baik untuk posisi koordinatnya maupun warnanya. Dengan demikian, citra digital dapat digambarkan sebagai suatu matriks, dimana indeks baris dan indeks kolom dari matriks menyatakan posisi suatu titik di dalam citra dan harga dari elemen matriks menyatakan warna citra pada titik tersebut. Dalam citra digital yang dinyatakan sebagai susunan matriks seperti ini, elemen–elemen matriks tadi disebut juga dengan istilah piksel yang berasal dari kata picture element (pixel).(Basuki, A. 2005)
Citra digital adalah citra yang terdiri dari sinyal–sinyal frekuensi elektromagnetis yang sudah disampling sehingga dapat ditentukan ukuran titik gambar yang pada umumnya disebut piksel. Untuk menyatakan citra secara matematis, dapat didefinisikan fungsi f(x,y) di mana x dan y menyatakan suatu posisi dalam koordinat dua dimensi dan harga f pada titik (x,y) adalah harga yang menunjukkan warna citra pada titik tersebut. (Sutoyo. T. 2009)
2.5 Jenis Citra
Nilai suatu piksel memiliki nilai dalam rentang tertentu, dari nilai minimum sampai nilai maksimum. Jangkauan yang digunakan berbeda-beda tergantung jenis warnanya.
(32)
Namun secara umum jangkauannya adalah 0-255. Citra dengan penggambaran seperti ini digolongkan ke dalam citra integer. (Putra, D. 2010)
2.5.1 Citra Biner
Citra biner adalah citra digital yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih, sering juga disebut citra black and white atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap piksel dari citra biner (Putra, D. 2010). Citra biner sering kali muncul sebagai hasil dari proses pengolahan seperti segmentasi, pengembangan, ataupun morfologi.
Gambar 2.4 Citra Biner (Basuki, A. 2005)
2.5.2 Citra Grayscale
Citra grayscale merupakan citra digital yang hanya memiliki satu nilai kanal pada setiap pikselnya, dengan kata lain nilai RED = GREEN = BLUE. Nilai tersebut digunakan untuk menunjukkan nilai intensitas. Warna yang dimiliki adalah warna dari hitam, keabuan dan putih. Tingkat keabuan disini merupakan warna abu dengan berbagai tingkatan dari hitam hingga mendekati putih. Citra grayscale memiliki kedalaman warna 8 bit (256 kombinasi warna keabuan).(Putra, D. 2010)
(33)
Gambar 2.5 Citra Grayscale 2.5.3 Citra Warna (16 Bit)
Citra warna 16 bit (biasanya disebut citra highcolor) dengan setiap pixelnya diwakili dengan 2 byte memory (16 bit).
Warna 16 bit memiliki 65.356 warna. Dalam formasi bitnya, nilai merah dan biru mengambil tempat di 5 bit di kanan dan kiri. Komponen hijau memiliki 5 bit ditambah 1 bit ekstra. Pemilihan komponen hijau dengan deret 6 bit dikarenakan penglihatan manusia lebih sensitive terhadap warna hijau. (Putra, D. 2010)
Gambar 2.6 Deret Warna 16 Bit (Putra, D. 2010)
Gambar 2.7 Kedalaman Warna 16 bit High Color (Prasetyo, E. 2012)
2.5.4 Citra Warna (24 Bit)
Bit- 15 Bit- 14 Bit- 13 Bit- 12 Bit- 11 Bit- 10 Bit- 9 Bit- 8 Bit- 7 Bit- 6 Bit- 5 Bit- 4 Bit- 3 Bit- 2 Bit- 1 Bit- 0 R R R R R G G G G G G B B B B B
(34)
Setiap pixel dari citra warna 24 bit diwakili dengan 24 bit sehingga total 16.777.216 variasi warna. Variasi ini sudah lebih dari cukup untuk memvisualisasikan seluruh warna yang dapat dilihat penglihatan manusia. Penglihatan manusia dipercaya hanya dapat membedakan hingga 10 juta warna saja.
Setiap poin informasi pixel (RGB) disimpan ke dalam 1 byte data. 8 bit pertama menyimpan nilai biru, kemudian diikuti dengan nilai hijau pada 8 bit kedua dan pada 8 bit terakhir merupakan warna merah. (Putra, D. 2010)
Gambar 2.8 Citra Warna 24 Bit
2.6 Format File Citra Bitmap (.bmp)
Format file citra standar yang digunakan saat ini terdiri dari beberapa jenis. Format-format ini digunakan dalam menyimpan citra dalam sebuah file. Setiap Format-format memiliki karakteristik masing-masing. (Putra, D. 2010)
Setiap program pengolahan citra biasanya memiliki format citra tersendiri. Format dan metode dari suatu citra yang baik juga sangat bergantung pada jenis citranya. Setiap format file citra memiliki kelebihan dan kekurangan masing – masing dalam hal citra yang disimpan. Citra tertentu dapat disimpan dengan baik (dalam arti ukuran file lebih kecil dan kualitas gambar tidak berubah) pada format file citra tertentu, apabila disimpan pada format lain kadang kala dapat menyebabkan ukuran file menjadi lebih besar dari aslinya dan kualitas citra dapat menurun oleh karena itu, untuk menyimpan suatu citra harus diperhatikan citra dan format file citra apa yang sesuai.
(35)
Format .bmp adalah format penyimpanan standar tanpa kompresi yang umum dapat digunakan untuk menyimpan citra biner hingga citra warna. Format ini terdiri dari beberapa jenis yang setiap jenisnya ditentukan dengan jumlah bit yang digunakan untuk menyimpan sebuah nilai piksel. (Putra, D. 2010)
Pada format bitmap, citra disimpan sebagai suatu matriks di mana masing – masing elemennya digunakan untuk menyimpan informasi warna untuk setiap pixel. Jumlah warna yang dapat disimpan ditentukan dengan satuan bit-per-pixel. Semakin besar ukuran bit-per-pixel dari suatu bitmap, semakin banyak pula jumlah warna yang dapat disimpan. Format bitmap ini cocok digunakan untuk menyimpan citra digital yang memiliki banyak variasi dalam bentuknya maupun warnanya, seperti foto dan lukisan. (Putra, D. 2010)
Karakteristik lain dari bitmap yang juga penting adalah jumlah warna yang dapat disimpan dalam bitmap tersebut. Ini ditentukan oleh banyaknya bit yang digunakan untuk menyimpan setiap titik dari bitmap yang menggunakan satuan bpp (bit per pixel). Dalam Windows dikenal bitmap dengan 1, 4, 8, 16, dan 24 bit per piksel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah sebanyak 2n, dimana n adalah banyaknya bit yang digunakan untuk menyimpan satu titik dari bitmap. (Sutoyo. T. 2009)
Berikut ini tabel yang menunjukkan hubungan antara banyaknya bit per piksel dengan jumlah warna maksimum yang dapat disimpan dalam bitmap, dapat dilihat pada Tabel 1.
Tabel 2.1 Hubungan Antara Bit Per Piksel dengan Jumlah Warna Pada Bitmap No Jumlah bit per piksel (n) Jumlah warna
1 1 2
2 4 16
3 8 256
4 16 65536
(36)
2.7 Mode Warna
Dua mode warna yang banyak digunakan dalam dunia komputer adalah mode warna RGB yang diterapkan pada tabung display seperti pada monitor dan televisi/video dan CMYK yang digunakan pada kebanyakan mesin pencetak dokumen (printer). Untuk menampilkan sebuah citra pada layar monitor diperlukan lebih dari sekedar informasi tentang letak dari piksel-piksel pembentuk citra. Untuk memperoleh gambar yang tepat dibutuhkan juga informasi tentang warna yang dipakai untuk menggambarkan sebuah citra digital.
2.7.1 Mode Warna RGB (Red, Green, Blue)
RGB adalah suatu model warna yang terdiri atas 3 buah warna: merah (Red), hijau (Green), dan biru (Blue), yang ditambahkan dengan berbagai cara untuk menghasilkan bermacam-macam warna. Kegunaan utama model warna RGB adalah untuk menampilkan citra / gambar dalam perangkat elektronik, seperti televisi dan komputer, walaupun juga telah digunakan dalam fotografi biasa. Sebelum era elektronik, model warna RGB telah memiliki landasan yang kuat berdasarkan pemahaman manusia terhadap teori trikromatik.
Model warna ini merupakan model warna yang paling sering dipakai. Contoh alat yang memakai mode warna ini yaitu TV, kamera, komputer, dan kamera digital. Kelebihan model warna ini adalah gambar mudah disalin / dipindah ke alat lain tanpa harus di-convert ke mode warna lain, karena cukup banyak peralatan yang memakai mode warna ini. Kelemahannya adalah tidak bisa dicetak sempurna dengan printer, karena printer menggunakan mode warna CMYK, sehingga harus diubah terlebih dahulu. RGB merupakan model warna aditif, yaitu ketiga berkas cahaya yang ditambahkan bersama-sama, dengan menambahkan panjang gelombang, untuk membuat spektrum warna akhir.
Mode warna RGB menghasilkan warna menggunakan kombinasi dari tiga warna primer merah, hijau, biru. RGB adalah model warna penambahan, yang berarti bahwa warna primer dikombinasikan pada jumlah tertentu untuk menghasilkan warna yang diinginkan. RGB dimulai dengan warna hitam dan menambahkan merah, hijau,
(37)
biru terang untuk membuat putih. Kuning diproduksi dengan mencampurkan merah, hijau, warna cyan dengan mencampurkan hijau dan biru, warna magenta dari kombinasi merah dan biru. Monitor komputer dan televisi memakai RGB. (Sutoyo. T. 2009)
Gambar 2.9 Warna RGB (Sutoyo. T. 2009)
2.7.2 Mode Warna CMYK (Cyan, Magenta, Yellow, Black)
CMYK (Cyan Magenta Yellow Black) adalah model warna yang biasanya digunakan di percetakan (Printer, Sablon, dll). Tinta process cyan, process magenta, process yellow, process black dicampurkan dengan komposisi tertentu dan tepat serta akurat sehingga menghasilkan warna cetak yang tepat seperti yang diinginkan pada background putih dengan media kertas maupun lainnya. Bahkan bila suatu saat diperlukan, warna ini dengan mudah bisa dibentuk kembali.
Model ini, baik sebagian ataupun keseluruhan, biasanya ditimpakan dalam gambar dengan warna latar putih (warna ini dipilih, dikarenakan dia dapat menyerap panjang struktur cahaya tertentu). Model seperti ini sering dikenal dengan nama subtractive, karena warna-warnanya mengurangi warna terang dari warna putih.
(38)
Gambar 2.10 Warna CMYK (Sutoyo. T. 2009)
2.7.3 Mode Warna HSI (Hue, Saturation, Intensity)
Model warna HSI (Hue, Saturation, Intensity) merupakan model warna yang paling sesuai dengan manusia. Pada model ini warna dibagi menjadi 3 yaitu corak (hue) kejenuhan (saturasi) dan kecerahan (Intensitas). Corak (hue) dapat diaplikasikan untuk membedakan objek dengan latar belakang. Kecerahan (intensitas) merupakan nilai abu-abu dari piksel, yaitu rata-rata dari RGB.
Gambar 2.11 Warna Hue (Prasetyo, E. 2012)
2.8 Kedalaman Bit
(39)
piksel citra pada sebuah frame. Kedalaman bit biasanya dinyatakan dalam satuan bit/piksel. Semakin banyak jumlah bit yang digunakan untuk merepresentasikan sebuah citra, maka semakin baik kualitas citra tersebut.
Tabel 2.2 Hubungan Antara Kedalaman Warna Dan Resolusi Warna Kedalaman Warna Resolusi Warna
1 bit 2 warna 2 bit 4 warna 4 bit 16 warna 8 bit 256 warna 16 bit 65.536 warna 24 bit 16.777.216 warna 32 bit 4.294.967.296 warna
(40)
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Sebelum dilakukan tahap perancangan sebuah sistem, analisis sistem yang akan dibangun perlu dilakukan. Fase-fase awal pengembangan system dijabarkan secara kolektif melalui analisis sistem. Analisis sistem pada dasarnya merupakan tahapan yang ditujukan untuk menciptakan pemahaman yang menyeluruh terhadap sistem sehingga diperoleh gambaran tentang kebutuhan, cara kerja, dan alur data yang akan dikerjakan sistem. Tahapan ini merupakan tahapan yang sangat penting karena kesalahan di dalam tahapan ini akan menyebabkan kesalahan pada tahapan selanjutnya. Sistem yang dirancang akan lebih baik dan memudahkan pengembang sistem dalam perbaikan apabila pada kemudian hari ditemukan kesalahan atau kekurangan. Hal ini diharapkan akan mempermudah tahapan proses implementasi sistem.
3.1.1 Analisis Masalah
Pada penelitian ini dilakukan proses kriptografi dengan menggunakan Kombinasi Rivest Shamir Adleman (RSA) dan ElGamal dalam Penyandian Citra Bitmap untuk menjamin bahwa pesan yang telah dikirim berstatus aman dan terhindar dari campur tangan pihak ketiga sebelum sampai ke tujuan.
Masalah dalam sistem ini adalah bagaimana agar sistem yang dibangun dapat membantu pengguna sistem dalam mengamanan data khususnya pada citra digital.
(41)
Dalam sistem ini teradapat dua pengguna yaitu pengirim (peng-enkripsi) dan penerima (pen-dekripsi) dimana keduanya memiliki peran sesuai kebutuhan.
Yang menjadi masalah utama penelitian ini adalah bagaimana mengirim pesan yang berstatus aman dan terhindar dari campur tangan pihak ketiga sebelum sampai ke tujuan, terlebih lagi jika pesan yang ingin disampaikan tersebut bersifat penting dan rahasia.
IMPLEMENTASI KRIPTOGRAFI PADA CITRA MENGGUNAKAN
ALGORITMA RSA DAN ELGAMAL
MACHINES PROSES USER
MATERIAL
DAPAT DIGUNAKAN SEMUA ORANG
TIDAK MEMBERI PENGAMANAN MUDAH DIPALSUKAN
MUDAH DICURI
BERSIFAT PUBLIK BERSIFAT TIDAK RAHASIA
MERASA KHAWATIR MENGINGINKAN JAMINAN
TAKUT DATA DICURI DIGUNAKAN SEMUA ORANG
USER FRIENDLY KURANG PENGAMANAN
TIDAK DIAMANKAN
Gambar 3.1 Diagram Ishikawa untuk analisis permasalahan sistem
3.1.2 Pemodelan perangkat lunak
Perangkat lunak yang dirancang dalam sistem ini menggunakan bahasa pemrograman Visual Basic. Perancangan aplikasi ini dibuat berdasarkan metode algoritma RSA dan ElGamal yang disajikan oleh penulis. Program yang dirancang berdasarkan langkah demi langkah untuk menyelesaikan tehnik kriptografi.
Terdapat dua proses dominan yang berlaku dalam sistem ini yaitu enkripsi dan dekripsi. Pada proses enkripsi, data berupa file citra inputan akan disamarkan menggunakan metode kriptografi algoritma RSA dan ElGamal yang menghasilkan citra baru tersamar dan sulit diidentifikasi. Setelah itu akan dilakukan proses dekripsi yaitu mengembalikan data file citra tersebut menjadi citra awal sebelum disamarkan.
(42)
3.1.2.1 Use case diagram
Use case diagram adalah diagram pemodelan setiap aspek dan kegiatan di dalam sistem. Sebuah use case diagram dapat menggambarkan semua kegiatan di dalam satu sistem yang berjalan, selain itu use case juga menggambarkan semua actor yang melakukan aktivitas di dalam sistem. Berikut adalah gambar dari rancangan use case diagram.
ENKRIPSI
DEKRIPSI
Generate Key
Input Key User 1
sender
User 2 receiver
System
Gambar 3.2 Use Case perancangan sistem
Terlihat pada gambar use case diagram di atas bahwa terdapat dua actor atau pengguna yaitu user1 sebagai sender (pengirim) dan user2 sebagai receiver (penerima). User1 memiliki peranan dalam melakukan proses enkripsi dan juga dekripsi yang akan melakukan pengiriman data atau informasi kepada user2. User2 hanya memiliki satu peranan yaitu melakukan proses dekripsi untuk memperoleh informasi asli dari data atau pesan yang diterima. Untuk lebih jelas kegiatan sistem dapat dilihat pada keterangan activity diagram berikut.
A. Activity diagram untuk use case enkripsi
Activity diagram untuk use case enkripsi dapat dilihat pada gambar 3.3 pada halaman berikut.
(43)
User System
menginput citra bitmap
meng-generate RSA dan ElGamal key
menampilkan citra inputan
menampilkan pasangan kunci RSA dan ElGamal
Memulai proses Mengambil nilai RGB per pixel
Enkripsi nilai RGB algoritma RSA dan ElGamal
System memulai proses enkripsi ElGamal
System menampilkan hasil
Gambar 3.3 Activity diagram enkripsi
Berikut ini adalah tabel spesifikasi use case diagram pada proses enkripsi :
Tabel 3.1 Spesifikasi Use Case Enkripsi
Name Enkripsi
Actors User1
Description Use case ini mendeskripsikan proses enkripsi
Preconditions User menggunakan aplikasi kriptografi
Post Conditions User dapat melihat hasil enkripsi
Success Scenario
Kegiatan User Respon System
1. User menginput citra bitmap
1. System menampilkan citra inputan
2. User meng-generate RSA key
2. System menampilkan pasangan kunci RSA 3. User meng-generate
ElGamal key
3. System menampilkan pasangan kunci ElGamal 4. User meng-klik button
proses
4. System memulai proses enkripsi RSA
5. User mengkonfirmasi proses ElGamal
5. System memulai proses enkripsi ElGamal
6. System menampilkan hasil
(44)
B. Activity diagram untuk use case dekripsi
Activity diagram untuk use case dekripsi dapat dilihat pada gambar 3.4 berikut.
User System
menginput citra ter-enkripsi
memilih chekbox dekripsi
menampilkan citra inputan
mengubah tampilan input kunci
menginput kunci dekripsi ElGamal dan RSA
meng-klik button proses mengambil nilai RGB per pixel
memulai proses dekripsi ElGalam dan RSA
menampilkan hasil
(45)
Spesifikasi use case dekripsi dapat dilihat pada tabel berikut.
Tabel 3.2 Spesifikasi Use Case Dekripsi
Name Dekripsi
Actors User1 dan User2
Description Use case ini mendeskripsikan proses dekripsi
Preconditions User menggunakan aplikasi kriptografi
Post Conditions User dapat melihat hasil dekripsi
Success Scenario
Kegiatan User Respon System
1. User menginput citra ter-enkripsi
1. System menampilkan citra inputan
2. User memilih chekbox dekripsi
2. System mengubah tampilan input kunci 3. User menginput kunci
dekripsi ElGamal dan RSA
4. User meng-klik button
proses
3. System memulai proses dekripsi ElGamal 5. User mengkonfirmasi
proses RSA
4. System memulai proses dekripsi ElGamal
5. System menampilkan
hasil
3.1.2.2Sequence diagram
Berikut adalah perancangan sequence diagram yang digunakan untuk memprediksi bagaimana rancangan sistem akan berjalan sesuai konten button yang ada pada sistem. Perancangan sequence diagram untuk proses enkripsi dan dekripsi kombinasi algoritma RSA dan ElGamal dapat dilihat pada halaman berikut.
(46)
Enkripsi Citra Input File Citra Bangkitkan Kunci RSA Bangkitkan Kunci Elgamal Baca Nilai Pixel Enkripsi Nilai Citra Simpan Citra Hasil Tampilkan Citra Hasil
Input File Citra *.bmp
File Citra
Kunci Public dan Private RSA
Kunci Public dan Private Elgamal
Baca Nilai Pixel RGB
Enkripsi Menggunakan Elgamal RSA dan Elgamal
Hasil
Gambar 3.5 Sequence Diagram enkripsi citra digital
Enkripsi Citra Input File Citra Masukkan Kunci PrivateRSA Masukkan Kunci PrivateElgamal Baca Nilai Pixel Dekripsi Simpan Citra Hasil Tampilkan Citra Hasil
Input File Citra *.bmp
File Citra
Private RSA
Private Elgamal
Baca Nilai Pixel RGB
Dekripsi Menggunakan Elgamal RSA dan Elgamal
Hasil
Gambar 3.6 Sequence Diagram dekripsi citra digital
3.1.3 Analisis proses sistem
Berikut akan diberikan penjelasan singkat mengenai analisis proses sistem yang digunakan. Dalam proses penyandian menggunakan algoritma Rivest Shamir Adleman (RSA) dan juga algoritma ElGamal, digunakan sepasang kunci yang berbeda, satu kunci enkripsi dan satu kunci dekripsi. Dalam proses pembangkitan pasangan kunci enkripsi dan dekripsi, digunakan bilangan prima. Untuk itu dalam hal ini dibutuhkan algoritma pembangkit bilangan prima. Pembangkit bilangan prima yang digunakan
(47)
dalam sistem ini yaitu lucas lehmer primality test. Berikut adalah uraian dari masing-masing algoritma secara singkat.
3.1.3.1 Analisis Lucas Lehmer Primality Test
Di dalam kriptografi, bilangan prima memiliki peranan yang sangat penting. Beberapa algoritma kriptografi, seperti RSA, menggantungkan kekuatannya pada sulitnya faktorisasi bilangan besar. Oleh karena itu, penggunaan bilangan prima yang besar menjadi sangat penting. Sebenarnya ada banyak cara untuk mengetahui suatu bilangan itu prima atau bukan, dan salah satu yang bisa digunakan adalah Lucas-Lehmer primality test.
Metode ini pertama kali ditemukan oleh dua orang ilmuan yaitu Francois Edouard Lucas Anatole berkebangsaan Perancis dan Derrick Henry Lehmer berkebangsaan Amerika Serikat.
Lucas Lehmer Primality Test bekerja dengan memanfaatkan bilangan Mersenne. Rumus bilangan Mersenne yaitu Mp = 2p – 1……… (9). Rumus ini ditemukan oleh Marin Mersenne seorang berkebangsaan Perancis yang hidup antara tahun 1588-1648. Untuk memperoleh bilangan Mersenne (Mp) adalah prima, maka p juga haruslah sebuah bilangan prima. Akan tetapi Mp belum tentu prima meskipun p adalah prima. Bilangan Mersenne biasanya digunakan untuk mencari bilangan prima yang sangat besar. (Mollin, Richard A. 2005)
Berikut ini merupakan langkah-langkah untuk mengetahui keprimaan suatu bilangan dengan Lucas-Lehmer primality test.
1. Masukkan bilangan Mersenne Mp = 2p–1 dimana p ≥ 3
2. Hitung Sj = S2j-1– 2 mod Mp ………..(10), dengan S1= 4 untuk j = 2,3,…,n-1 3. Jika Sp-1 = 0 mod Mp maka dapat disimpulkan bahwa Mp bilangan prima dan
(48)
Lucas-Lehmer prime generator memiliki algoritma sebagai berikut:
1. Tentukan nilai awal s := 4;
2. Untuk i from 3 to p do s := s2– 2 mod Mp;
3. Jika s = 0, return prime; otherwise return composite[4].
Untuk pseducode Lucas-Lehmer prime generator adalah sebagai berikut:
// Determine if M p = 2
p
− 1 is prime Lucas–Lehmer(p)
var s = 4 var M = 2p − 1 repeat p − 2 times:
s = ((s × s) − 2) mod M
if s = 0 return PRIME else return COMPOSITE
Berikut ini contoh pengujian bilangan prima dengan mengunakan metode Lucas-Lehmer:
p = 5, Mp = (25-1) → M
P= 31
s
1 = (4
2
- 2) mod 31 = 14 mod 31 = 14
s2 = (142- 2) mod 31 = 194 mod 31 = 8 s3 = (82- 2) mod 31 = 62 mod 31 = 0
Jadi, angka p = 5 merupakan bilangan prima dan M
P = 2 1
p
= 31 merupakan bilangan prima yang memenuhi syarat metode pembangkit bilangan prima Lucas-Lehmer.
p = 13, M
P = (2
13
-1) = 8191
dari 3 hingga 13, maka lakukan: s
n = s 2
– 2 mod Mp s
1 = (4
2
(49)
s
2 = (14
2
- 2) mod 8191 = 194 mod 8191 = 194
s
3 = (194
2
- 2) mod 8191 = 37634 mod 8191 = 4870
s
4 = (4870
2
- 2) mod 8191 = 23716898 mod 8191 = 3953
s
5 = (3953
2
- 2) mod 8191 = 15626207 mod 8191 = 5970
s
6 = (5970
2
- 2) mod 8191 = 35640898 mod 8191 = 1857
s
7 = (1857
2
- 2) mod 8191 = 3448447 mod 8191 = 36
s
8 = (36
2
- 2) mod 8191 = 1294 mod 8191 = 1294
s
9 = (1294
2
- 2) mod 8191 = 1674434 mod 8191 = 3470
s
10 = (3470
2
- 2) mod 8191 = 12040898 mod 8191 = 128
s
11 = (128
2
- 2) mod 8191 = 16382 mod 8191 = 0
Jadi, angka p = 13 merupakan bilangan prima dan M
P = 2 1
p
= 8191 merupakan bilangan prima yang memenuhi syarat metode pembangkit bilangan prima Lucas-Lehmer.
p = 17, M
P = (2
17
-1) = 131071
dari 3 hingga 17, maka lakukan: s
n = s 2
– 2 mod Mp s
1 = (4
2
- 2) mod 131071 = 14 mod 131071 = 14
s
2 = (14
2
- 2) mod 131071 = 194 mod 131071 = 194
s
3 = (194
2
- 2) mod 131071 = 37634 mod 131071 = 37634
s
4 = (37634
2
- 2) mod 131071 = 1416317954 mod 131071 = 95799
s
5 = (95799
2
- 2) mod 131071 = 9177448399 mod 131071 = 119121
s
6 = (119121
2
(50)
s
7 = (66179
2
- 2) mod 131071 = 4379660039 mod 131071 = 53645
s
8 = (53645
2
- 2) mod 131071 = 2877786023 mod 131071 = 122218
s
9 = (122218
2
- 2) mod 131071 = 14937239522 mod 131071 = 126220
s
10 = (126220
2
- 2) mod 131071 = 15931488398 mod 131071 = 70490
s
11 = (70490
2
- 2) mod 131071 = 4968840098 mod 131071 = 69559
s
12 = (69559
2
- 2) mod 131071 = 4838454479 mod 131071 = 99585
s
13 = (99585
2
- 2) mod 131071 = 9917172223 mod 131071 = 78221
s
14 = (78221
2
- 2) mod 131071 = 6118524839 mod 131071 = 130559
s
15 = (130559
2
- 2) mod 131071 = 17045652479 mod 131071 = 0
Jadi, angka p = 17 merupakan bilangan prima dan M
P = 2 1
p
= 131071 merupakan bilangan prima yang memenuhi syarat syarat metode pembangkit bilangan prima Lucas-Lehmer.
3.1.3.2 Analisis Algoritma RSA
Algoritma RSA merupakan algoritma yang cocok dalam proses Enkripsi dan Dekripsi untuk pencitraan gambar dan paling maju dalam bidang kriptografi yang menerapkan konsep public key. Algoritma ini pertama kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman dari Massachusetts Institute of Technology (MIT). Nama RSA sendiri adalah singkatan dari nama belakang mereka bertiga.
Algoritma RSA dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983 di Amerika Serikat, dan paten tersebut berlaku hingga 21 September 2000.
Pada algoritma RSA terdapat 3 proses utama yaitu key generation (pembangkitan kunci), enkripsi, dan dekripsi. Proses key generation dilakukan untuk mendapatkan pasangan kunci, yaitu public key dan private key. Setelah didapatkan
(51)
pasangan kunci tersebut digunakan dalam proses enkripsi dan dekripsi. Kunci public digunakan dalam untuk proses enkripsi, sedangkan kunci private digunakan untuk proses dekripsi.
Adapun Langkah-langkah dalam memproses Algoritma RSA, yaitu
1. Proses pembangkit kunci dapat dilakukan dengan cara :
1. Pemilihan dua buah bilangan prima sembarang, p dan q.
2. Penghitungan n = p q. Sebaiknya p q, sebab jika p = q maka r = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari r.
3. Penghitungan φ(n) = (p – 1)(q – 1).
4. Pemiilihan kunci publik e, yang relatif prima terhadap n.
5. Pembangkitan kunci rahasia menggunakan persamaan d e = 1 + kn , sehingga d dapat dihitung dengan:
e kn
d 1 (1)
Keterangan : d : kunci dekripsi (rahasia)
e : kunci enkripsi (tidak rahasia) yang relatif prima terhadap n n : hasil perhitungan dari (p-1)(q-1)
k : dengan mencoba nilai 1,2,3,... sehingga nilai d bulat
2. Proses Enkripsi dapat dilakukan dengan :
Plainteks disusun menjadi blok-blok x1, x2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai r – 1. Setiap blok xi
dienkripsi menjadi blok yi dengan rumus pada halaman berikut.
(52)
Keterangan: yi : blok cipherteks
xi : blok plainteks
e : kunci enkripsi (tidak rahasia) yang relatif prima terhadap n n : hasil perkalian p dan q
3. Proses Dekripsi dapat dilakukan dengan :
Setiap blok cipherteks yi didekripsi kembali menjadi blok xi dengan rumus
xi = yid mod n
Keterangan: yi : blok cipherteks
xi : blok plainteks
d : kunci dekripsi (rahasia) n : hasil perkalian p dan q
Pembangkit Kunci RSA
Misalkan pilih bilangan prima p = 13 dan q = 17. Selanjutnya cari kunci public (e dan n) dan kunci private (d dan n)
Hitung :
n = p * q = 17 * 19 = 323
Ф(n)= (p – 1)(q – 1) = 288. kunci publik e = 89,
karena GCD(89,323) = 1 maka 89 relatif prima dengan 323.
Hitung kunci private : d = 1+ (k * 288)
Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperoleh nilai d yang bulat adalah 233. Ini adalah kunci privat untuk mendekripsi pesan.
(53)
Enkripsi RSA
Misalkan nilai pixel(x,y) adalah R = 212, G = 242 dan B = 3. Nilai-nilai tersebut selanjutnya kita enkripsi menggunakan algoritma RSA.
CR = Re mod n = 21289 mod 323 = 127 CG =24289 mod 323 = 72
CG =389 mod 323 = 184
Dekripsi RSA
Misalkan nilai pixel(x,y) dari proses dekripsi Elgamal adalah R = 127, G = 72 dan B = 184. Nilai-nilai tersebut selanjutnya kita enkripsi menggunakan algoritma RSA.
R = CRe mod n = 127233 mod 323 = 212 G=72233 mod 323 = 242
B=184233 mod 323 = 3
3.1.3.3Analisis Algoritma ElGamal
Algoritma Elgamal juga adalah algoritma kriptografi kunci-publik. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit.
Besaran-besaran yang digunakan dalam algoritma ElGamal yaitu:
1. p bilangan prima (tidak rahasia)
2. Bilangan acak, g ( g < p) (tidak rahasia) 3. Bilangan acak, x (x < p) (kunci privat) (rahasia) 4. y = gx mod p (kunci publik) (tidak rahasia)
5. m (plainteks) (rahasia)
(54)
Langkah-langkah yang dilakukan dalam algotritma ElGamal: 1. Pemilihan sembarang bilangan prima p.
2. Pemilihan dua buah bilangan acak g dan x, dengan syarat g < p dan x < p. 3. Penghitungan y = gx mod p.
4. Dengan kunci publik y, kunci rahasia x. Nilai g dan p tidak dirahasiakan.
Plainteks disusun menjadi blok-blok m1, m2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1. Dilanjutkan dengan pemilihan bilangan acak k, yang dalam hal ini 0 k p – 1, sedemikian sehingga k relatif prima dengan p – 1. Setiap blok m dienkripsi dengan rumus:
a = gk mod p , dan b = ykm mod p
Keterangan:
a : cipherteks pertama b : cipherteks kedua p : bilangan prima yang telah ditentukan m : blok-blok plainteks g : bilangan acak lebih kecil dari p y : kunci publik ( gx mod p) k : bilangan acak yang memenuhi 0 k p – 1
Pembangkit Kunci Elgamal
Misalkan pilih bilangan prima p = 521. Selanjutnya hitung nilai g, x dan y. g = 429 (bilangan random antara 1 sampai p-1)
x = 25 (bilangan random antara 1 sampai p-1; x ≠ g) y = gx mod p = 42925 mod 521 = 278
Enkripsi Elgamal
Misalkan nilai pixel(x,y) dari proses enkripsi RSA adalah R = 127, G = 72 dan B = 184. Nilai-nilai tersebut selanjutnya kita enkripsi menggunakan algoritma RSA.
k = 34 (bilangan random antara 1 sampai p-2)
(55)
C2R = (yk * CR) mod p = (27834 * 127) mod 521 = 457 C1G = 42934 mod 521 = 275
C2G = (27834 * 72) mod 521 = 456 C1B = 42934 mod 521 = 275 C2B =(27834 * 184) mod 521 = 297
Dekripsi Elgamal
Misalkan nilai pixel(x,y) dari proses enkripsi Elgamal adalah C1R = C1G = C1B = 457, C2R = 456, C2G = 297 dan C2B = 70. Nilai-nilai tersebut selanjutnya kita enkripsi menggunakan algoritma RSA.
aR = C1Rp-1-x aG = C1Gp-1-x aB = C1Bp-1-x
CR = (C2R * aR) mod p = (457 * 275521-1-25) mod 521 = 127 CG =(456 * 275521-1-25) mod 521 = 72
CB =(297 * 275521-1-25) mod 521 = 184
3.2 Perancangan Sistem
Perancangan sistem merupakan suatu tahapan yang sangat penting dalam pembangunan sistem perangkat lunak. Berdasarkan hasil analisis proses dalam sistem diperoleh gambaran fungsional yang akan diterapkan pada sistem. Berdasarkan gambaran ini dibangun suatu model rancangan antarmuka yang akan diimplementasikan menggunakan bahasa pemrograman Visual Basic. Tahapan ini memberikan gambaran dasar dari sistem yang dibangun dan menentukan langkah selanjutnya yang akan dilakukan pada tahap implementasi.
(56)
3.2.1 Pembangkit Kunci Algoritma RSA dan Elgamal
Sebelum melakukan proses enkrisi ataupun dekripsi pada aplikasi ini terlebih dahulu dilakukan proses pembangkit kunci untuk kedua algoritma yaitu algoritma RSA dan Elgamal. Pembangkit kunci digunakan untuk mempermudah pengguna untuk mendapatkan kunci yang sesuai dengan dibutuhkan algoritma tanpa harus melakukan perhitungan untuk mendapatkan kunci yang dibutuhkan.
Gambar 3.7 Rancangan Pembangkit Kunci Algoritma RSA dan Elgamal
3.2.2 Enkripsi Citra
Proses Enkripsi dilakukan secara bertahap dimulai dengan melakukan enkripsi dengan algoritma RSA dan dilanjutkan dengan enkripsi dengan algoritma Elgamal. Tahapan dalam proses enkripsi ini dilakukan untuk mendapatkan hasil enkripsi citra yang sesuai dan nantinya dapat dilakukan proses dekripsi pada citra terenkripsi.
PEMBANGKIT BILANGAN PRIMA
PASANGAN KUNCI RSA
PEMBANGKIT BILANGAN PRIMA
PASANGAN KUNCI ELGAMAL
(57)
Gambar 3.8 Proses Enkripsi Citra
3.2.3 Dekripsi Citra
Proses Dekripsi dilakukan untuk memperoleh citra asli dari citra terenkripsi. Untuk mendapatkan citra hasil yang sesuai pengguna harus memasukkan citra terenkripsi dan kunci yang tepat.
Gambar 3.9 Proses Dekripsi Citra CITRA
ENKRIPSI
RSA
CITRA
PUBLIC KEY TERENKRIPSI CITRA RSA CITRA TERENKRIPSI RSA ENKRIPSI ELGAMAL CITRA
PUBLIC KEY TERENKRIPSI CITRA
ELGAMAL CITR A ASLI ENKRIPSI RSA CITRA PRIVATE KEY CITRA TERENKRIPSI RSA CITRA TERENKRIPSI ELGAMAL DEKRIPSI ELGAMAL CITRA PRIVATE KEY CITRA TERENKRIPSI RSA
(58)
3.2.4 Perancangan Flowchart
Flowchart atau bagan alir adalah bagan (chart) yang menunjukkan alir (flow) di dalam program atau prosedur sistem secara logika. Bagan alir (flowchart) digunakan terutama untuk alat bantu komunikasi dan untuk dokumentasi.
Sistem flowchart dapat didefinisikan sebagai bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urut-urutan dari prosedur-prosedur yang ada di dalam sistem. Bagan alir sistem menunjukkan apa yang dikerjakan di sistem.
Flowchart merupakan langkah awal dalam pembuatan program. Dengan adanya flowchart, urutan proses kegiatan menjadi lebih jelas. Jika ada penambahan proses maka dapat dilakukan dengan lebih mudah. Setelah flowchart selesai disusun, selanjutnya pemrogram (programmer) menerjemahkannya ke bentuk program dengan bahasa pemrograman.
Adapun Flowchart yang akan dibangun oleh Penulis sesuai dengan judul besar skripsi yaitu Implementasi Kombinasi Rhivest Shamir Adleman (RSA) Dan ElGamal Dalam Penyandian Citra Bitmap.
(59)
3.2.4.1Flowchart Pembangkit Kunci Lucas Lehmer
Mulai
p; bilangan prima
i = 1
if p = 2
s = 0 Ya
s = 4 Tidak
n = 2p - 1
i <= p
s = (s2– 2) mod n Ya
s = 0
Tidak
Tidak
Is_prime Ya
Is_composit
Selesai
(60)
3.2.4.2Flowchart Pembangkit Kunci RSA
(61)
3.2.4.3Flowchart Proses Enkripsi RSA
Mulai
Citra_Asli
Max i = lebar(Citra_Asli) Max j = panjang(Citra_Asli)
i = 0
If i < Max i
If j < Max j
R = Citra_Asli(i,j).Red G = Citra_Asli(i,j).Green
B = Citra_Asli(i,j).Blue Ya
ER = Re mod n EG = Ge mod n EB = Be mod n Tidak
Tidak j = 0
Ya
Citra Terenkripsi
Selesai
Citra_Hasil.Red(i, j) = ER Citra_Hasil.Green(i, j) = EG
Citra_Hasil.Blue(i, j) = EB
(62)
3.2.4.4Flowchart Proses Dekripsi RSA
Mulai
Citra_Enkripsi
Max i = lebar(Citra_Enkripsi) Max j = panjang(Citra_Enkripsi)
i = 0
If i < Max i
If j < Max j
ER = Citra_Enkripsi(i,j).Red EG = Citra_Enkripsi(i,j).Green
EB = Citra_Enkripsi(i,j).Blue Ya
R = ERd mod n G = EGd mod n B = EBd mod n Tidak
Tidak j = 0
Ya
Citra Asli
Selesai Citra_Asli.Red(i, j) = R Citra_Asli.Green(i, j) = G
Citra_Asli.Blue(i, j) = B
(63)
3.2.4.5 Flowchart Pembangkit Kunci ElGamal
Mulai
p ; bilangan prima
g = random(2, p-1)
x = random(2, p-1)
x = g
Tidak
y = gx mod p
Ya
y, g, x, p
Selesai
(64)
3.2.4.6Flowchart Proses Enkripsi ElGamal
Gambar 3.15 Flowchart Proses Enkripsi ElGamal
Mulai
Citra_Asli
Max i = lebar(Citra_Asli) Max j = panjang(Citra_Asli)
i = 0
If i < Max i
If j < Max j
R = Citra_Asli(i,j).Red G = Citra_Asli(i,j).Green
B = Citra_Asli(i,j).Blue Ya
ER1 = gk mod p EG1 = gk mod p EB1 = gk mod p ER2 = yk*Rmod p EG2 = yk*Gmod p EB2 = yk*Be mod p Tidak
Tidak j = 0
Ya
Citra Terenkripsi
Selesai
Citra_Hasil.Red(i, j) = ER Citra_Hasil.Green(i, j) = EG
Citra_Hasil.Blue(i, j) = EB
j++ i++
(1)
For i As Integer = 0 To img.Width - 1 Dim rc, gc, bc As Byte
Dim er1, er2, eg1, eg2, eb1, eb2 As Integer
Dim er11, er12, er21, er22, eg11, eg12, eg21, eg22, eb11, eb12, eb21, eb22 As Byte
Dim b16 As String
rc = img.GetPixel(i, j).R gc = img.GetPixel(i, j).G bc = img.GetPixel(i, j).B
er1 = BigInteger.ModPow(g, k, p)
er2 = BigInteger.Multiply(yk, rc) Mod p eg1 = BigInteger.ModPow(g, k, p)
eg2 = BigInteger.Multiply(yk, gc) Mod p eb1 = BigInteger.ModPow(g, k, p)
eb2 = BigInteger.Multiply(yk, bc) Mod p
b16 = Convert.ToString(er1, 2).PadLeft(16, "0"c) er11 = Convert.ToByte(Mid(b16, 1, 8), 2)
er12 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(er2, 2).PadLeft(16, "0"c) er21 = Convert.ToByte(Mid(b16, 1, 8), 2)
er22 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eg1, 2).PadLeft(16, "0"c) eg11 = Convert.ToByte(Mid(b16, 1, 8), 2)
eg12 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eg2, 2).PadLeft(16, "0"c) eg21 = Convert.ToByte(Mid(b16, 1, 8), 2)
eg22 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eb1, 2).PadLeft(16, "0"c) eb11 = Convert.ToByte(Mid(b16, 1, 8), 2)
eb12 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eb2, 2).PadLeft(16, "0"c) eb21 = Convert.ToByte(Mid(b16, 1, 8), 2)
eb22 = Convert.ToByte(Mid(b16, 9, 8), 2) If er11 > 255 Or eg11 > 255 Or eb11 > 255 Then MsgBox("Nilai RGB 1 Melebihi Nilai Maksimum") Return result
ElseIf er12 > 255 Or eg12 > 255 Or eb12 > 255 Then MsgBox("Nilai RGB 2 Melebihi Nilai Maksimum") Return result
ElseIf er21 > 255 Or eg21 > 255 Or eb21 > 255 Then MsgBox("Nilai RGB 3 Melebihi Nilai Maksimum") Return result
ElseIf er22 > 255 Or eg22 > 255 Or eb22 > 255 Then MsgBox("Nilai RGB 4 Melebihi Nilai Maksimum") Return result
End If
result.SetPixel(i1, j1, Color.FromArgb(er11, eg11, eb11)) result.SetPixel(i2, j1, Color.FromArgb(er21, eg21, eb21)) result.SetPixel(i1, j2, Color.FromArgb(er12, eg12, eb12)) result.SetPixel(i2, j2, Color.FromArgb(er22, eg22, eb22)) mainForm.ProgressBar.Value = mainForm.ProgressBar.Value + 1 mainForm.persenLbl.Text = Format((mainForm.ProgressBar.Value / mainForm.ProgressBar.Maximum) * 100, "0.00") & " %"
mainForm.persenLbl.Refresh() i1 = i1 + 2
i2 = i2 + 2 Next i
j1 = j1 + 2 j2 = j2 + 2
(2)
mainForm.targetPB.Refresh() Next j
Return result End Function
Public Function decryptElgamal(ByVal img As Bitmap, ByVal x As Integer, ByVal p As Integer) As Bitmap
Dim result As New Bitmap(img.Width \ 2, img.Height \ 2) mainForm.targetPB.Image = result
Dim i1, i2, j1, j2 As Integer j1 = 0
j2 = 1
For j As Integer = 0 To (img.Height \ 2) - 1 i1 = 0
i2 = 1
For i As Integer = 0 To (img.Width \ 2) - 1 Dim rc, gc, bc As Integer
Dim er1, er2, eg1, eg2, eb1, eb2 As BigInteger
Dim er11, er12, er21, er22, eg11, eg12, eg21, eg22, eb11, eb12, eb21, eb22 As Byte
Dim rx, gx, bx As BigInteger Dim b16a, b16b As String er11 = img.GetPixel(i1, j1).R er12 = img.GetPixel(i1, j2).R er21 = img.GetPixel(i2, j1).R er22 = img.GetPixel(i2, j2).R eg11 = img.GetPixel(i1, j1).G eg12 = img.GetPixel(i1, j2).G eg21 = img.GetPixel(i2, j1).G eg22 = img.GetPixel(i2, j2).G eb11 = img.GetPixel(i1, j1).B eb12 = img.GetPixel(i1, j2).B eb21 = img.GetPixel(i2, j1).B eb22 = img.GetPixel(i2, j2).B
b16a = Convert.ToString(er11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er12, 2).PadLeft(8, "0"c) er1 = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(er21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er22, 2).PadLeft(8, "0"c) er2 = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eg11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg12, 2).PadLeft(8, "0"c) eg1 = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eg21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg22, 2).PadLeft(8, "0"c) eg2 = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eb11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb12, 2).PadLeft(8, "0"c) eb1 = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eb21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb22, 2).PadLeft(8, "0"c) eb2 = Convert.ToInt16(b16a & b16b, 2)
rx = BigInteger.Pow(er1, p - 1 - x) gx = BigInteger.Pow(eg1, p - 1 - x) bx = BigInteger.Pow(eb1, p - 1 - x)
(3)
rc = er2 * rx Mod p gc = eg2 * gx Mod p bc = eb2 * bx Mod p
If rc > 255 Or gc > 255 Or bc > 255 Then
MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & rc & " G = " & gc & " B = " & bc)
Return result End If
result.SetPixel(i, j, Color.FromArgb(rc, gc, bc))
mainForm.ProgressBar.Value = mainForm.ProgressBar.Value + 1 mainForm.persenLbl.Text = Format((mainForm.ProgressBar.Value / mainForm.ProgressBar.Maximum) * 100, "0.00") & " %"
mainForm.persenLbl.Refresh() i1 = i1 + 2
i2 = i2 + 2 Next i
j1 = j1 + 2 j2 = j2 + 2
mainForm.targetPB.Image = result mainForm.targetPB.Refresh() Next j
Return result End Function End Module
RSA.vb
Imports System.Numerics Module RSA
Public Function encryptRSA(ByVal img As Bitmap, ByVal e As Integer, ByVal n As Integer) As Bitmap
Dim result As New Bitmap(img.Width, img.Height * 2) mainForm.targetPB.Image = result
Dim j1 As Integer = 0 Dim j2 As Integer = 1
For j As Integer = 0 To img.Height - 1 For i As Integer = 0 To img.Width - 1
Dim r, g, b, er1, er2, eg1, eg2, eb1, eb2 As Byte Dim er, eg, eb As Integer
Dim b16 As String
r = img.GetPixel(i, j).R g = img.GetPixel(i, j).G b = img.GetPixel(i, j).B
er = BigInteger.ModPow(r, e, n) eg = BigInteger.ModPow(g, e, n) eb = BigInteger.ModPow(b, e, n)
b16 = Convert.ToString(er, 2).PadLeft(16, "0"c) er1 = Convert.ToByte(Mid(b16, 1, 8), 2)
er2 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eg, 2).PadLeft(16, "0"c) eg1 = Convert.ToByte(Mid(b16, 1, 8), 2)
(4)
eg2 = Convert.ToByte(Mid(b16, 9, 8), 2)
b16 = Convert.ToString(eb, 2).PadLeft(16, "0"c) eb1 = Convert.ToByte(Mid(b16, 1, 8), 2)
eb2 = Convert.ToByte(Mid(b16, 9, 8), 2) If er1 > 255 Or eg1 > 255 Or eb1 > 255 Then
MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & er1 & " G = " & eg1 & " B = " & eb1)
Return result
ElseIf er2 > 255 Or eg2 > 255 Or eb2 > 255 Then
MsgBox("Nilai RGB 2 Melebihi Nilai Maksimum : R = " & er2 & " G = " & eg2 & " B = " & eb2)
Return result End If
result.SetPixel(i, j1, Color.FromArgb(er1, eg1, eb1)) result.SetPixel(i, j2, Color.FromArgb(er2, eg2, eb2)) mainForm.ProgressBar.Value = mainForm.ProgressBar.Value + 1 mainForm.persenLbl.Text = Format((mainForm.ProgressBar.Value / mainForm.ProgressBar.Maximum) * 100, "0.00") & " %"
mainForm.persenLbl.Refresh() Next i
j1 = j1 + 2 j2 = j2 + 2
mainForm.targetPB.Image = result mainForm.targetPB.Refresh() Next j
Return result End Function
Public Function decryptRSA(ByVal img As Bitmap, ByVal d As Integer, ByVal n As Integer) As Bitmap
Dim result As New Bitmap(img.Width, img.Height \ 2) mainForm.targetPB.Image = result
Dim j1 As Integer = 0 Dim j2 As Integer = 1
For j As Integer = 0 To (img.Height \ 2) - 1 For i As Integer = 0 To (img.Width) - 1 Dim er1, eg1, eb1, er2, eg2, eb2 As Byte Dim dr, dg, db, er, eg, eb As Integer Dim b16a, b16b As String
er1 = img.GetPixel(i, j1).R er2 = img.GetPixel(i, j2).R eg1 = img.GetPixel(i, j1).G eg2 = img.GetPixel(i, j2).G eb1 = img.GetPixel(i, j1).B eb2 = img.GetPixel(i, j2).B
b16a = Convert.ToString(er1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er2, 2).PadLeft(8, "0"c) er = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eg1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg2, 2).PadLeft(8, "0"c) eg = Convert.ToInt16(b16a & b16b, 2)
b16a = Convert.ToString(eb1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb2, 2).PadLeft(8, "0"c) eb = Convert.ToInt16(b16a & b16b, 2)
dr = BigInteger.ModPow(er, d, n) dg = BigInteger.ModPow(eg, d, n) db = BigInteger.ModPow(eb, d, n)
(5)
If dr > 255 Or dg > 255 Or db > 255 Then
MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & dr & " G = " & dg & " B = " & db)
Return result End If
result.SetPixel(i, j, Color.FromArgb(dr, dg, db))
mainForm.ProgressBar.Value = mainForm.ProgressBar.Value + 1 mainForm.persenLbl.Text = Format((mainForm.ProgressBar.Value / mainForm.ProgressBar.Maximum) * 100, "0.00") & " %"
mainForm.persenLbl.Refresh() Next i
j1 = j1 + 2 j2 = j2 + 2
mainForm.targetPB.Image = result mainForm.targetPB.Refresh() Next j
Return result End Function End Module
(6)