CITRA BITMAP
SKRIPSI
AHMAD IHSAN
081401058
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
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
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,
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
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.
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
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.
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.
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
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
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
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
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
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
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.
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.
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.
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.
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
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
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 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
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
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
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
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
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
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)
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
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
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
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
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)
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)
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
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.
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.
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
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
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.
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.
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.
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
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
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
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
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
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
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
if s = 0 return PRIME else return COMPOSITE
Berikut ini contoh pengujian bilangan prima dengan mengunakan metode Lucas-Lehmer:
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
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
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.
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.
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)
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)
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)
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
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
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.
PUBLIC KEY TERENKRIPSI CITRA RSA
PUBLIC KEY TERENKRIPSI CITRA
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.
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
3.2.4.2Flowchart Pembangkit Kunci RSA
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
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
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
3.2.4.6Flowchart Proses Enkripsi ElGamal
Gambar 3.15 Flowchart Proses Enkripsi ElGamal
3.2.4.7Flowchart Proses Dekripsi ElGamal
3.2.5 Perancangan Tampilan
Tujuan dari perancangan sistem adalah untuk memenuhi kebutuhan user mengenai gambaran yang jelas tentang perancangan sistem yang akan dibuat serta diimplementasikan.
Untuk mulai membangun suatu program yang akan dibangun, maka penulis terlebih dahulu merencanakan alur kerja berdasarkan kebutuhan user yang akan menggunakan aplikasi Enkrpisi dan Dekripsi Citra. Pada aplikasi ini akan dirancang form-form yang akan dipakai dalam aplikasi Enkripsi dan Dekripsi Citra, form yang akan dirancang adalah Form Tampilan utama, form Pembangkit Kunci RSA serta form pembangkit kunci ElGamal
3.2.5.1Perancangan Form Utama
Form ini menampilkan tampilan awal pada saat user membuka aplikasi Enkripsi Dekripsi Citra yang berisikan button open, button browse, public key, private key, button generate dan button proses.
Gambar 3.17 Rancangan form Utama
X _
Enkripsi Citra 32 Bit Menggunakan Algoritma RSA dan Elgamal
Public Key Private Key Public Key Private Key
RSA Key Elgamal Key
Enkripsi Dekripsi
Proses Generate
Generate
BROWSE OPEN
3.2.5.2Perancangan form Pembangkit Kunci RSA
Pada form pembangkit kunci RSA dibawah ini berisikan kolom batas nilai yang berfungsi untuk menginput nilai yang akan ditentukan pada saat akan melakukan proses Enkripsi dan Dekripsi RSA. Botton Generate Prime berfungsi untuk melakukan melakukan proses. Button kunci public dan kunci private berfungsi untuk menampilkan nilai yang telah diperoleh pada saat proses Enkripsi dan Dekripsi
Gambar 3.18 Rancangan form Pembangkit Kunci RSA
X _
Generate RSA Key
Batas Nilai Generate
Prime
Pasangan Kunci Enkripsi
Pasangan Kunci Dekripsi
Kunci Public
3.2.5.3Perancangan form Pembangkit Kunci Elgamal
Pada form pembangkit kunci ElGamal berisikan generate prime, generate key dan nilai g,x,y yang akan diperoleh setelah menginput nilai p.
Gambar 3.19 Rancangan form Pembangkit Kunci ElGamal
X _
Batas Nilai Generate Prime
p
Generate Key g
x
y
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem
Dalam tahap ini akan dilakukan pembahasan terhadap sistem yang telah dibangun bagaimana proses enskripsi dan dekripsi file citra digital dengan menggunakan kombinas algoritma RSA dan algoritma ElGamal yang telah dirancang akan berjalan. Berikut adalah pembahasan proses implementasinya.
4.1.1 Pengambilan nilai RGB pada pixel
Proses enkripsi file citra digital diawali dengan pengambilan nilai RGB pada masing-masing pixel yang terdapat pada file citra tersebut. Sebagai contoh dalam pembahasan ini akan ditunjukkan pada citra warna berdimensi 1024 x 768 pixel bagaimana proses ini berlangsung:
Dari contoh gambar 4.1 akan diperoleh nilai RGB dari setiap pixelnya. Misalkan dari gambar tersebut diambil bagian gambar yang diberi tanda lingkaran merah dan dapat diilustrasikan nilai setiap pixelnya sebagai berikut.
R=127 R=13 R=223 R=12 R=123 R=155 R=223 R=199
Pengambilan nilai RGB dilakukan pada setiap pixel citra secara keseluruhan dan masing-masing nilainya akan dienkripsikan menggunakan kombinasi algoritma yang akan diterapkan dalam sistem.
4.1.2 Proses enkripsi nilai RGB citra asli
Pada tahap ini akan dilakukan proses enkripsi terhadap nilai RGB tiap-tiap pixel menggunakan algoritma RSA. Dalam proses ini akan diambil permisalan nilai RGB pixel pada koordinat (x,y). Berikut penguraiannya:
a. Algoritma RSA
1. Pembangkitan pasangan kunci :
Pada tahapan pembangkitan pasangan kunci RSA, langkah awal yang dilakukan yaitu menentukan dua buah bilangan prima acak. Bilangan prima yang digunakan dalam system ini hanya meliputi bilangan prima Lucas Lehmer dengan memanfaatkan bilangan Mersenne.
System akan menampilkan pilihan daftar bilangan prima yang merupakan bilangan prima Lucas Lehmer. Dapat dimisalkan bilangan prima yang diambil adalah p = 13 dan q = 17. Dilanjutkan dengan pencarian kunci public (nilai n dan e) dan kunci privat (nilai n dan d) melalui proses perhitungan sebagai berikut.
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.
2. Proses enkripsi nilai RGB
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
b. Algoritma ElGamal
1. Pembangkitan pasangan kunci
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
2. proses enkripsi nilai RGB
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 ElGamal.
k = 34 (bilangan random antara 1 sampai p-2) C1R = gk mod p = 42934 mod 521 = 275
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