PENGAMANAN FILE TEKS DENGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK RABIN DAN ALGORITMA STEGANOGRAFI FIRST OF FILE DAN END OF FILE SKRIPSI

dokumen-dokumen yang mirip
BAB 2 TINJAUAN TEORETIS

IMPLEMENTASI SISTEM KEAMANAN DATA DENGAN MENGGUNAKAN TEKNIK STEGANOGRAFI END OF FILE (EOF) DAN RABIN PUBLIC KEY CRYPTOSYSTEM SKRIPSI

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN Latar Belakang

IMPLEMENTASI ALGORITMA KRIPTOGRAFI HILL CIPHER DAN KOMPRESI DATA MENGGUNAKAN ALGORITMA LEVENSTEIN DALAM PENGAMANAN FILE TEKS SKRIPSI

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 1 PENDAHULUAN Latar belakang

PENGAMANAN FILE CITRA DENGAN SKEMA HYBRID CRYPTOSYSTEM MENGGUNAKAN ALGORITMA RSA-CRT DAN ALGORITMA AFFINE CIPHER SKRIPSI AGUM GUMELAR

BAB 2 LANDASAN TEORI. 2.1 Kriptografi

BAB 2 LANDASAN TEORI. Berikut ini akan dijelaskan pengertian, tujuan dan jenis kriptografi.

BAB II TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI ALGORITMA KRIPTOGRAFI MASSEY OMURA DENGAN TEKNIK STEGANOGRAFI KOMBINASI END OF FILE (EOF) DAN FIRST OF FILE (FOF) UNTUK KEAMANAN DATA

Bab 2: Kriptografi. Landasan Matematika. Fungsi

IMPLEMENTASI PENGAMANAN FILE TEXT DENGAN ALGORITMA KRIPTOGRAFI KNAPSACK DAN ALGORITMA STEGANOGRAFI FOF (First of File)

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

IMPLEMENTASI ALGORITMA AFFINE CIPHER DAN ALGORITMA ADVANCED ENCRYPTION STANDARD (AES) PADA APLIKASI SHORT MESSAGE SERVICE (SMS) BERBASIS ANDROID

PENYANDIAN DATA TEKS DENGAN ALGORITMA ELGAMAL DAN ALGORITMA KOMPRESI DATA DENGAN ALGORITMA ELIAS GAMMA CODE SKRIPSI WIWIN AGUSTINI LUBIS

IMPLEMENTASI KRIPTOGRAFI ALGORITMA ELGAMAL DENGAN STEGANOGRAFI TEKNIK LEAST SIGNIFICANT BIT (LSB) BERDASARKAN PENYISIPAN MENGGUNAKAN FUNGSI LINIER

BAB II LANDASAN TEORI

Simulasi Pengamanan File Teks Menggunakan Algoritma Massey-Omura 1 Muhammad Reza, 1 Muhammad Andri Budiman, 1 Dedy Arisandi

BAB 2 LANDASAN TEORI. Universitas Sumatera Utara

IMPLEMENTASI MODIFIKASI SISTEM KRIPTOGRAFI RSA DAN ELLIPTIC CURVE DIGITAL SIGNATURE ALGORITHM (ECDSA) SKRIPSI ANDRUS

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

ANALISIS DAN PERANCANGAN SISTEM KRIPTOGRAFI SIMETRIS TRIPLE DES DAN KRIPTOGRAFI ASIMETRIS RSA SKRIPSI BENY

BAB 2 LANDASAN TEORI. 2.1 Kriptografi Berikut ini akan dijelaskan sejarah, pengertian, tujuan, dan jenis kriptografi.

IMPLEMENTASI STEGANOGRAFI HOPPING SPREAD SPECTRUM KE DALAM FILE VIDEO SKRIPSI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

BAB II LANDASAN TEORI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

IMPLEMENTASI KRIPTOGRAFI DAN STEGANOGRAFI MENGGUNAKAN ALGORITMA RSA DAN METODE LSB

BAB 2 LANDASAN TEORI

Penerapan Metode End Of File Pada Steganografi Citra Gambar dengan Memanfaatkan Algoritma Affine Cipher sebagai Keamanan Pesan

TMA RSAA DAN ER R AHUAN ALAM. Universitas Sumatera Utara

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

ENKRIPSI AFFINE CIPHER UNTUK STEGANOGRAFI PADA ANIMASI CITRA GIF

IMPLEMENTASI KOMBINASI ALGORITMA NTRUENCRYPT DAN STEGANOGRAFI END OF FILE PADA PENGAMANAN DATA TEKS SKRIPSI YANSEN BOSTON SIMATUPANG

PERBANDINGAN TEKNIK STEGANOGRAFI DENGAN METODE FIRST-OF-FILE, END-OF-FILE DAN KOMBINASI FIRST-OF- FILE DAN END-OF-FILE PADA FILE BITMAP SKRIPSI

SKRIPSI BILQIS

IMPLEMENTASI ALGORITMA KUNCI PUBLIK LUC DAN ALGORITMA KOMPRESI GOLDBACH CODES UNTUK PERANCANGAN APLIKASI PENGAMANAN DAN KOMPRESI FILE PDF SKRIPSI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB III PERANCANGAN SISTEM

BAB II LANDASAN TEORI. yang mendasari pembahasan pada bab-bab berikutnya. Beberapa definisi yang

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

ANALISIS DAN PERBANDINGAN PENGGUNAAN METODE PEMBANGKITAN BILANGAN PRIMA FERMAT DAN LUCAS-LEHMER DALAM KRIPTOGRAFI ELGAMAL SKRIPSI

Universitas Sumatera Utara


IMPLEMENTASI KOMBINASI ALGORITMA KRIPTOGRAFI MODIFIKASI PLAYFAIR CIPHER DAN TEKNIK STEGANOGRAFI BEGIN OF FILE PADA PENGAMANAN PESAN TEKS SKRIPSI

IMPLEMENTASI ALGORITMA BLOWFISH PADA APLIKASI ENKRIPSI DAN DEKRIPSI CITRA BERBASIS WINDOWS SKRIPSI AHDA ANDI KURNIA

IMPLEMENTASI PENYEMBUNYIAN DAN PENYANDIAN PESAN PADA CITRA MENGGUNAKAN ALGORITMA AFFINE CIPHER DAN METODE LEAST SIGNIFICANT BIT

SKRIPSI ANNISSA FADILLA

BAB I PENDAHULUAN. melalui ringkasan pemahaman penyusun terhadap persoalan yang dibahas. Hal-hal

PENGAMANAN TEKS DENGAN HYBRID CRYPTOSYSTEM ALGORITMA MULTI-POWER RSA DAN ALGORITMA BLOWFISH SKRIPSI MAHADI PUTRA

PENGGUNAAN ALGORITMA KRIPTOGRAFI POHLIG HELLMAN DALAM MENGAMANKAN DATA

BAB II LANDASAN TEORI

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB II TINJAUAN PUSTAKA

BAB I PENDAHULUAN Latar Belakang

IMPLEMENTASI KOMBINASI ALGORITMA COLUMNAR TRANSPOSITION CIPHER DAN DATA ENCRYPTION STANDARD PADA APLIKASI ENKRIPSI DAN DEKRIPSI TEKS BERBASIS ANDROID

BAB I PENDAHULUAN. diperhatikan, yaitu : kerahasiaan, integritas data, autentikasi dan non repudiasi.

BAB 2 LANDASAN TEORI Keamanan Informasi

BAB 1 PENDAHULUAN Latar Belakang Masalah

PERBANDINGAN ALGORITMA TERNARY COMMA CODE (TCC) DAN LEVENSTEIN CODE DALAM KOMPRESI FILE TEXT SKRIPSI ZULAIHA YULANDARI

BAB III ANALISIS DAN PERANCANGAN

BAB II LANDASAN TEORI

KRIPTOGRAFI KUNCI PUBLIK ALGORITMA ELGAMAL DENGAN METODE THE SIEVE OF ERATOSTHENES UNTUK PEMBANGKITAN BILANGAN PRIMA SKRIPSI SYAUVIKA LUBIS

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Aplikasi Teori Bilangan dalam Algoritma Kriptografi

IMPLEMENTASI ALGORITMA HUFFMAN CODING DAN METODE LEAST SIGNIFICANT BIT(LSB) UNTUK PENYEMBUNYIAN CITRA BMP KE CITRA BMP JOHAN SURYA

Studi dan Implementasi Sistem Kriptografi Rabin

IMPLEMENTASI KRIPTOGRAFI DAN STEGANOGRAFI DENGAN MENGGUNAKAN ALGORITMA RSA DAN MEMAKAI METODE LSB

IMPLEMENTASI SISTEM KEAMANAN DATA MENGGUNAKAN STEGANOGRAFI TEKNIK PEMETAAN TITIK HITAM DENGAN PENCARIAN SEKUENSIAL DAN RABIN CRYPTOSYSTEM

BAB 2 TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

KEAMANAN DATA DENGAN MENGGUNAKAN ALGORITMA RIVEST CODE 4 (RC4) DAN STEGANOGRAFI PADA CITRA DIGITAL

BAB II TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB 2 LANDASAN TEORI. 2.1 Kriptografi Definisi Kriptografi

BAB I PENDAHULUAN. mempunyai makna. Dalam kriptografi dikenal dua penyandian, yakni enkripsi

BAB 1 PENDAHULUAN. dalam bahasa sandi (ciphertext) disebut sebagai enkripsi (encryption). Sedangkan

PERANCANGAN APLIKASI PAILLIER CRYPTOSYSTEM UNTUK MENGAMANKAN DATA FILE SKRIPSI NOVY

IMPLEMENTASI ALGORITMA RC4 DAN METODE MODIFIED LSB UNTUK PENGAMANAN TEXT FILE SKRIPSI FEBRI ARO GEA

IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL DALAM PENGAMANAN FILE TEKS SKRIPSI SYABRUL MAJID

ALGORITMA ELGAMAL DALAM PENGAMANAN PESAN RAHASIA

BAB II DASAR TEORI. membahas tentang penerapan skema tanda tangan Schnorr pada pembuatan tanda

BAB II TINJAUAN PUSTAKA

SKRIPSI DIRA FAHRENDY SEMBIRING

IMPLEMENTASI DIGITAL SIGNATURE DENGAN ALGORITMA RSA DAN LEHMANN PRIME GENERATOR PADA PESAN TEKS SKRIPSI MIRNAWATI

IMPLEMENTASI STEGANOGRAPHY NATURE OF WHITESPACE (SNOW) BERBASIS WEB MENGGUNAKAN METODE WHITESPACE SKRIPSI POPPY TANIA

Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu

BAB I PENDAHULUAN. 1.1 Latar Belakang

PERANAN ARITMETIKA MODULO DAN BILANGAN PRIMA PADA ALGORITMA KRIPTOGRAFI RSA (Rivest-Shamir-Adleman)

Transkripsi:

PENGAMANAN FILE TEKS DENGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK RABIN DAN ALGORITMA STEGANOGRAFI FIRST OF FILE DAN END OF FILE SKRIPSI MORIGIA SIMANJUNTAK 131401001 PROGRAM STUDI S-1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2017

PENGAMANAN FILE TEKS DENGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK RABIN DAN ALGORITMA STEGANOGRAFI FIRST OF FILE DAN END OF FILE SKRIPSI Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer MORIGIA SIMANJUNTAK 131401001 PROGRAM STUDI S-1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2017

PERSETUJUAN Judul :PENGAMANAN FILE TEKS DENGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK RABIN DAN ALGORITMA STEGANOGRAFI FIRST OF FILE DAN END OF FILE Kategori : SKRIPSI Nama : MORIGIA SIMANJUNTAK Nomor Induk Mahasiswa : 131401001 Program Studi : SARJANA (S1) ILMU KOMPUTER Fakultas :ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA Komisi Pembimbing: Pembimbing 2 Pembimbing 1 Amer Sharif, S.Si, M.Kom Dr. Poltak Sihombing, M. Kom NIP. - NIP. 196203171991031001 Diketahui/disetujui oleh Program Studi S1 Ilmu Komputer Ketua, Dr. Poltak Sihombing, M. Kom NIP. 196203171991031001 i

PERNYATAAN PENGAMANAN FILE TEKS DENGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK RABIN DAN ALGORITMA STEGANOGRAFI FIRST OF FILE DAN END OF FILE SKRIPSI Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya. Medan, September 2017 Morigia Simanjuntak 131401001 ii

UCAPAN TERIMA KASIH Puji dan syukur kehadirat Tuhan Yang Maha Esa atas segala limpahan rahmat dan karunia-nya, sehingga Penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer. Penulis ingin menyampaikan rasa hormat dan terima kasih yang sebesar-besarnya kepada: 1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum selaku Rektor Universitas Sumatera Utara. 2. Ibu Dr. Elviawaty Muisa Zamzami, ST, MT, MM, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi. 3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer dan juga selaku Dosen Pembimbing I penulis yang telah memotivasi dan senantiasa memberikan bimbingan, saran dan dukungan kepada penulis dalam pengerjaan skripsi ini. 4. Bapak Amer Sharif, S.Si, M.Kom selaku Dosen Pembimbing II penulis yang telah memberikan bimbingan, saran, masukan dan dukungan kepada penulis dalam pengerjaan skripsi ini. 5. Seluruh dosen dan pegawai Program Studi S1 Ilmu Komputer Fasilkom-TI USU. 6. Ayahanda T. Simanjuntak (Alm) dan Ibunda Alfrida, S.Pd yang telah menjadi sumber motivasi, pendukung, penyemangat, dan inspirasi terbesar bagi penulis dalam menyelesaikan skripsi, serta kakanda Firdaus Doloksaribu, Epril Yenni Simanjuntak, Alto Belly Simanjuntak, Farid Akbar Siregar S.Kom yang senatiasa memberikan dukungan dan doa untuk penulis. 7. Teman dekat penulis Rudi Hendy Handoko Sitorus, S.M yang telah menjadi penyemangat terbesar bagi penulis dalam menyelesaikan skripsi. 8. Sahabat-sahabat terbaik Yayang Novita Sari, Sanita Hutajulu, Bellina Alfonsina Zilliwu, Tio Bella Audina, S.P, dan Diana Tarigan, S.S yang selalu memberikan dukungan dan semangat kepada penulis dalam menyelesaikan skripsi serta teman seperjuangan Suci Budiani Hasibuan, Alyiza Dwi Ningtyas, S.Kom, Rudy Chandra, S.Kom, kelompok belajar RSA (Ribak Sude iii

Algorithm) Irma Simbolon, Agum Gumelar, S.Kom, Brando Hernandes, S.Kom, Yoga Aditya S.Kom dan teman-teman angkatan 2013 yang juga senantiasa menjadi pengingat dan motivasi penulis. 9. Keluarga IMILKOM, KMKI dan Paguyuban Karya Salemba Empat USU yang telah memberikan inspirasi serta dukungan kepada penulis. 10. Beasiswa Yayasan Karya Salemba Empat yang telah memberikan dukungan finansial berupa beasiswa selama masa perkulihan. 11. Donatur Beasiswa Indofood Sukses Makmur,Tbk yang telah memberikan pelatihan pelatihan kepemimpinan kepada penulis dan juga telah memberikan kebutuhan finansial selama mengikuti pelatihan. 12. Dan semua pihak yang telah membantu dan tidak dapat disebutkan satu per satu. Semoga semua kebaikan, bantuan, perhatian, serta dukungan yang telah diberikan kepada penulis mendapatkan berkah yang melimpah dari Tuhan Yang Maha Esa. Medan, 10 September 2017 Penulis iv

ABSTRAK Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Semakin meningkatnya perkembangan komunikasi secara tulisan membuat semakin pentingnya aspek keamanan dan kerahasiaan data. Kriptografi merupakan ilmu atau seni untuk menjaga keamanan data dengan cara mengacak data atau pesan. Sedangkan steganografi adalah ilmu menyembunyikan pesan atau data ke dalam suatu media. Konsep kriptografi dan steganografi dapat dikombinakasikan sehingga menghasilkan sistem keamanan pesan atau data yang lebih baik. Untuk meningkatkan keamanan pesan, maka penelitian ini menggunakan Algoritma Kriptografi Rabin dan Algoritma Steganografi First Of File dan End Of File. Tahap pertama yaitu dengan membangkitkan bilangan prima menggunakan metode Fermat s Little Theorem dan melakukan pencarian bilangan relatif prima menggunakan algoritma Euclidean GCD. Implementasi sistem menggunakan bahasa pemrograman C# dengan IDE SharpDevelop. Selanjutnya pesan teks yang berformat (*.txt, *.doc, *.docx) di enkripsi dan menghasilkan ciphertext yang kemudian akan disembunyikan pada citra berformat *.jpeg dengan teknik steganografi kombinasi metode First Of File dan End Of File. Hasil penelitian menunjukkan bahwa proses enkripsi relatif lebih cepat dibandingkan dengan proses dekripsi pada algoritma kriptografi kunci publik Rabin dan untuk pengujian embedding pada steganografi First Of File dan End Of File memerlukan waktu proses embedding cover image rata-rata 6,016816 detik dan proses extraction stego image rata-rata 0,05624 detik. Ukuran pixel citra yang digunakan mempengaruhi hasil stego image. Semakin besar ukuran pixel citra, akan semakin halus garis hitam yang tampak pada stego image tersebut. Kata Kunci: Kriptografi, Steganografi, File Teks, Rabin, First Of File dan End Of File, Fermat s Little Theorem. v

TEXT FILE SECURITY WITH CRYPTOGRAPHY KEY PUBLIC RABIN ALGORITHM AND STEGANOGRAPHY ALGORITHM FIRST OF FILE AND END OF FILE ABSTRACT In communicating there are several forms ranging from using writing or oral. The increasing development of written communication makes the importance of data security and secrecy aspects. Cryptography is the science or art to maintain data security by randomizing data or messages. While steganography is the science of hiding messages or data into a medium. The concept of cryptography and steganography can be combined so as to produce a better message or data security system. To improve message security, this research uses Rabin Cryptography Algorithm and Steganography Algorithm First Of File and End Of File. The first stage is to generate primes using the Fermat's Little Theorem method and perform a search of relatively prime numbers using the Euclidean GCD algorithm. Implementation of the system using C# programming language with the SharpDevelop IDE. Furthermore, text messages formatted (*.txt, *.doc, *.docx) are encrypted and generate ciphertext which will then be hidden in the *.jpeg format image with steganographic technique combination of First Of File and End Of File method. The results show that the encryption process is relatively faster compared to the decryption process in Rabin's public key cryptography algorithm and for embedding testing on steganography First Of File and End Of File requires 6.016816 seconds embedding cover image process and extraction stego image process average 0.05624 seconds. The image pixel size used affects the stego image results. The larger the pixel image size, the smoother the black line that looks at the stego image. Keywords: Cryptography, Steganography, Text File, Rabin, First Of File and End Of File, Fermat s Little Theorem. vi

DAFTAR ISI Halaman Persetujuan... i Pernyataan... ii Perhargaan... iv Abstrak... v Abstract... vi Daftar Isi... vii Daftar Tabel... ix Daftar Gambar... x Daftar Lampiran... xii Bab 1 Pendahuluan 1.1. Latar Belakang... 1 1.2. Rumusan Masalah... 2 1.3. Batasan Masalah... 2 1.4. Tujuan Penelitian... 3 1.5. Manfaat Penelitian... 3 1.6. Penelitian Sebelumnya... 3 1.7. Metode Penelitian... 4 1.8.Sistematika Penulisan... 5 Bab 2 Landasan Teori 2.1. Kriptografi... 7 2.1.1 Terminologi dan Konsep Kriptografi... 7 2.1.2. Istilah dalam Kriptografi... 8 2.1.3. Tujuan Kriptografi... 9 2.1.4. Jenis-jenis Algoritma Kriptografi... 10 2.1.4.1 Algoritma Simetris... 10 2.1.4.2 Algoritma Asimetris... 11 2.2. Landasan Matematika Kriptografi... 12 2.2.1. Bilangan Prima... 10 2.2.2. Relatif Prima... 11 2.2.3. Greatest Common Divisor... 15 2.2.4. Aritmatika Modulo... 16 2.2.5. Inversi Modulo... 18 2.2.6. Fermat s little Theorem... 19 2.2.7. Algoritma Kunci Publik Rabin... 22 2.2.7.1. Proses Pembangkitan Kunci... 22 2.2.7.2. Proses Enkripsi Algoritma Rabin... 23 2.2.7.3. Proses Dekripsi Algoritma Rabin... 23 2.3. Steganografi... 24 2.3.1. Teknik Steganografi FOF dan EOF... 26 2.3.1.1. Proses Penyisipan FOF dan EOF... 26 2.3.1.2. Proses Ektraksi FOF dan EOF... 26 2.3.2. Arsitektur Umum Kriptografi dan Steganografi... 28 Bab 3 Analisis dan Perancangan 3.1. Analisis Sistem... 29 3.1.1. Analisis Masalah... 29 3.1.2. Analisis Kebutuhan... 30 3.1.2.1. Kebutuhan Fungsional... 30 vii

3.1.2.2. Kebutuhan Non Fungsional... 31 3.1.3. General Arsitektur Sistem... 32 3.2. Pemodelan Sistem... 33 3.2.1. Use Case Diagram... 33 3.2.2. Activity Diagram... 32 3.2.2.1. Activity Diagram Proses Pembangkit Kunci... 33 3.2.2.2 Activity Diagram Proses Enkripsi Rabin... 33 3.2.2.3 Activity Diagram Proses Penyisipan FOF dan EOF... 34 3.2.2.4 Activity Diagram Proses Ektraksi FOF dan EOF... 35 3.2.2.5 Activity Diagram Proses Dekripsi Rabin... 35 3.2.2.6 Sequence Diagram... 36 3.2.4 Flowchart... 37 3.2.4.1 Flowchart Gambaran Umum Sistem... 37 3.2.4.2 Flowchart Pembangkitan Kunci... 37 3.2.4.3 Flowchart Enkripsi Rabin... 38 3.2.4.4 Flowchart Dekripsi Rabin... 39 3.2.4.5 Flowchart Penyisipan FOF dan EOF... 39 3.2.4.6 Flowchart Ektraksi FOF dan EOF... 40 3.3. Perancangan Antarmuka (Interface)... 43 3.3.1 Rancangan Halaman Utama... 43 3.3.2 Halaman Pembangkitan Kunci... 44 3.3.3 Halaman Proses Enkripsi Rabin... 45 3.3.4 Halaman Proses Penyisipan FOF dan EOF... 46 3.3.5 Halaman Proses Ektraksi FOF dan EOF... 46 3.3.6 Halaman Proses Dekripsi Rabin... 46 3.3.7 Halaman Help... 48 Bab 4 Implementasi Dan Pengujian Sistem 4.1. Implementasi Sistem... 49 4.1.1. Menu Home... 49 4.1.2. Menu Generate Key... 50 4.1.3. Menu Rabin Public Key... 52 4.1.3.1 Submenu Encryption... 50 4.1.3.2 Submenu Decryption... 51 4.1.4. Menu FOF dan EOF... 52 4.1.4.1 Submenu Embedding... 50 4.1.4.2 Submenu Extraction... 51 4.1.4. Menu Help... 52 4.2 Pengujian Sistem... 52 4.2.1 Pengujian Generate Key... 53 4.2.2. Pengujian proses Encryption... 56 4.2.3. Pengujian proses Embedding... 59 4.2.4. Pengujian proses Extraction... 61 4.2.5. Pengujian proses Decryption... 62 4.3 Pengujian Sistem... 52 4.3.1 Hasil Pengujian Encryption.... 64 4.3.2 Hasil Pengujian Embedding.... 64 4.3.3 Hasil Pengujian Extraction.... 64 4.3.4 Hasil Pengujian Decryption.... 64 viii

Bab 5. Kesimpulan dan Saran 5.1. Kesimpulan... 71 5.2. Saran... 72 Daftar Pustaka... 73 ix

DAFTAR TABEL Halaman Tabel 2.1 Tabel Kode Elias Delta... 11 Tabel 2.2 String yang Belum Dikompresi... 12 Tabel 2.3 String yang Sudah Dikompresi Dengan Elias Delta Code... 13 Tabel 2.4 Formulasi Persoalan Logaritma Diskrit... 18 Tabel 2.5 Penyelesaian contoh soal modulo eksponensial... 19 Tabel 2.6 Perhitungan α 2 mod 271 dan α 135 mod 27121... 21 Tabel 3.1 Keterangan Gambar Rancangan Interface Halaman Home... 44 Tabel 3.2 Keterangan Gambar Rancangan Interface Halaman Key Generator... 45 Tabel 3.3Keterangan Gambar Rancangan Interface Halaman Sender... 46 Tabel 3.4 Keterangan Gambar Rancangan Interface Halaman Recipient... 47 Tabel 3.5 Keterangan Gambar Rancangan Interface Halaman Help... 48 Tabel 4.1 Hasil Uji Coba untuk 5 kali pengujian... 69 Tabel 4.2 Hasil Uji Coba Berdasarkan Waktu... 70 x

DAFTAR GAMBAR Halaman Gambar 2.1 Ilustrasi Kompresi Lossless... 8 Gambar 2.2. Ilustrasi Kompresi Lossy... 8 Gambar 2.3 Plainteks berupa Teks dan Cipherteksnya... 16 Gambar 2.4 Skema Kriptografi Simetri... 17 Gambar 2.5 Skema Kriptografi Asimetri... 17 Gambar 2.6 Sistem Kriptografi dengan Algoritma ElGamal... 22 Gambar 2.7 Matriks Citra Digital... 24 Gambar 2.8 Perbandingan gambar dengan ukuran piksel berbeda... 25 Gambar 2.9 Contoh Citra Biner... 26 Gambar 2.10 Perbandingan gradasi warna berdasarkan ukuran bit... 26 Gambar 2.11 Contoh Citra Grayscale... 27 Gambar 2.12 Contoh penyimpanan citra warna dalam memori... 27 Gambar 2.13 Contoh Citra Warna... 28 Gambar 2.1 Ilustrasi Kompresi Lossless... 8 Gambar 2.2. Ilustrasi Kompresi Lossy... 8 Gambar 2.3 Plainteks berupa Teks dan Cipherteksnya... 16 Gambar 2.4 Skema Kriptografi Simetri... 17 Gambar 2.5 Skema Kriptografi Asimetri... 17 Gambar 2.6 Sistem Kriptografi dengan Algoritma ElGamal... 22 Gambar 2.7 Matriks Citra Digital... 24 Gambar 2.8 Perbandingan gambar dengan ukuran piksel berbeda... 25 Gambar 2.9 Contoh Citra Biner... 26 Gambar 2.10 Perbandingan gradasi warna berdasarkan ukuran bit... 26 Gambar 2.11 Contoh Citra Grayscale... 27 Gambar 2.12 Contoh penyimpanan citra warna dalam memori... 27 Gambar 2.13 Contoh Citra Warna... 28 Gambar 3.1 Diagram Ishikawa Masalah Penelitian.... 29 Gambar 3.2. Use-Case Diagram Pada Sistem... 32 Gambar 3.3 Activity Diagram Proses Pembangkitan Kunci... 33 Gambar 3.4 Activity Diagram Proses Kompresi Elias Delta Code... 34 Gambar 3.5 Activity Diagram Proses Enkripsi ElGamal... 35 Gambar 3.6 Activity Diagram Proses Dekripsi Pesan... 36 Gambar 3.7 Activity Diagram Proses Dekompresi Elias Delta Code... 36 Gambar 3.8 Sequence diagram sistem... 36 Gambar 3.9 Flowchart Alur proses pembangkit kunci... 37 Gambar 3.10 Flowchart Alur proses kompresi Elias Delta Code... 38 Gambar 3.11 Flowchart Alur proses Enkripsi ElGamal... 39 Gambar 3.12 Flowchart Alur proses Dekripsi ElGamal... 40 Gambar 3.13 Flowchart Sistem... 41 Gambar 3.14 Rancangan Interface Halaman Home... 43 Gambar 3.15 Rancangan Interface Halaman Key Generator... 44 Gambar 3.16 Rancangan Interface Halaman Sender... 45 Gambar 3.17 Rancangan Interface Halaman Recipient... 47 Gambar 3.18 Rancangan Interface Halaman Help... 48 Gambar 4.1 Menu Home... 49 Gambar 4.2. Submenu Key Generator... 50 Gambar 4.3 Submenu Sender... 51 xi

Gambar 4.4 Submenu Recipient... 51 Gambar 4.5 Menu Help... 52 Gambar 4.6 Citra yang akan diuji... 52 Gambar 4.7 Hasil nilai kunci publik dan kunci privat... 53 Gambar 4.8 Save File Dialog untuk menyimpan kunci publik... 55 Gambar 4.9 Save File Dialog untuk menyimpan kunci privat... 56 Gambar 4.10 Open File Dialog input file citra... 56 Gambar 4.11 Tampilan sistem menampilkan citra terpilih... 57 Gambar 4.12 Hasil konversi gambar RGB menjadi Grayscale... 57 Gambar 4.13 Message Box informasi proses kompresi berhasil... 58 Gambar 4.14 Hasil dari proses kompresi... 58 Gambar 4.15. Open File Dialog input file kunci publik... 59 Gambar 4.16 Tampilkan nilai kunci publik... 60 Gambar 4.17 Message Box informasi proses enkripsi berhasil... 60 Gambar 4.18 Save File Dialog hasil kompresi dan enkripsi citra... 60 Gambar 4.19. Open File Dialog input file citra... 61 Gambar 4.20 Open File Dialog input kunci prvat... 61 Gambar 4.21 Tampilan nilai kunci publik... 62 Gambar 4.22 Message Dialog informasi proses dekripsi berhasil... 62 Gambar 4.23. Message Dialog informasi proses dekompresi berhasil... 62 Gambar 4.24 Tampilan citra asli... 63 Gambar 4.25 Save File Dialog untuk menyimpan citra asli... 63 Gambar 4.26 Hasil Uji Coba ke-1... 64 Gambar 4.27 Hasil Uji Coba ke-2... 65 Gambar 4.28 Hasil Uji Coba ke-3... 66 Gambar 4.29. Hasil Uji Coba ke-4... 67 Gambar 4.30 Hasil Uji Coba ke-5... 68 Gambar 4.31 Grafik perbandingan hasil pengujian antara ukuran file citra asli, hasil kompresi/dekripsi, hasil enkripsi, dan hasil dekompresi...69 Gambar 4.32 Grafik perbandingan hasil pengujian waktu pada proses kompresi, enkripsi, dekripsi, dan dekompresi... 70 xii

DAFTAR LAMPIRAN Halaman Lampiran 1 Listing Program A-1... A-1 Lampiran 2 Curriculum Vitae B-1... B-1 xiii

BAB 1 PENDAHULUAN 1.1 Latar Belakang Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak informasi rashasia yang dapat disampaikan melalui tulisan. Jika tulisan atau pesan disampaikan secara langsung dari pengirim kepada penerima pada saat itu juga tanpa melalui perantara apapun, maka hal tersebut dapat menjamin keamanan, dan kerahasiaan dari pesan tersebut. Namun, jika tulisan atau pesan harus dikirim melalui perantara dan memerlukan waktu dalam proses pengirimannya, maka terdapat kemungkinan bahwa pesan akan mengalami penyadapan sehingga rahasia pada pesan dapat diketahui oleh pihak yang tidak berwenang atau kemungkinan pesan yang dikirim mengalami perubahan sebelum sampai ke tujuan. Terdapat beberapa cara dan teknik tertentu untuk menjaga keamanan pesan yang bersifat rahasia / tersembunyi, salah satunya dengan menggunakan kriptografi yang berfungsi untuk menyamarkan pesan menjadi bentuk pesan tersandi. Kriptografi adalah ilmu dan seni untuk menjaga kerahasian pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya (Munir, 2006). Pengamanan pesan file teks dapat menggunakan kriptografi kunci asimetris dan simetris, namun yang digunakan dalam penelitian ini adalah kunci asimetris. Kriptografi kunci asimetris terdiri dari dua kunci, yaitu kunci publik dan kunci privat. Dalam kriptografi kunci asimetris, kunci publik berfungsi untuk mengenkripsi suatu pesan dan kunci privat berfungsi untuk mendekripsi suatu pesan. Sehingga tingkat keamanan suatu pesan lebih baik dibandingkan menggunakan kriptografi kunci simetris yang hanya memiliki satu kunci privat saja. Terdapat berbagai macam metode kriptografi kunci asimetris yang telah digunakan. Salah satunya adalah algoritma Rabin Public Key. Algoritma Rabin Public Key diperkenalkan oleh Michael O. Rabin pada tahun 1979. Algoritma Rabin akan melakukan enkripsi dan dekripsi, pesan asli disebut plaintext dan pesan yang sudah diamankan disebut ciphertext. Proses pengubahan plaintext menjadi ciphertext disebut enkripsi. Sebaliknya, proses pengubahan ciphertext menjadi plaintext disebut dekripsi. Sebuah ciphertext dapat dikirim secara langsung kepada penerima pesan, namun hal 1

ini dapat memancing kecurigaan dari pihak ketiga karena bentuk ciphertext yang biasanya terlihat seperti pesan tersandi yang membuat kecurigaan memungkinkan memiliki pesan tersembunyi didalamnya. Oleh sebab itu, dilakukan penyembunyian ciphertext kedalam suatu media sebelum dilakukan pengiriman data untuk meningkatkan keamanan dari pesan rahasia yang akan dikirim. Penyembunyian data atau pesan rahasia dengan suatu cara tertentu disebut steganografi. Steganografi adalah teknik menyembunyikan data rahasia di dalam media digital sehingga keberadaan data rahasia tersebut tidak diketahui oleh orang (Munir, 2006). Steganografi juga memiliki banyak algoritma yang dapat dipakai. Saat ini, telah ada beberapa metode steganografi yang umum digunakan. Salah satunya adalah metode First of File (FOF) dan End of File (EOF). Pada metode First of File ini, pesan disisipkan pada awal nilai file sedangkan End of File, pesan akan disisipkan pada akhir nilai file. Metode FOF tidak jauh berbeda dengan metode EOF. Kelebihan dari kedua metode ini adalah data yang disisipkan tidak terbatas jumlahnya serta tidak mengubah kualitas citra. Kekurangannya adalah ukuran dimensi file citra lebih besar dari semula dan citra stego hasil penyisipan pesan memiliki gradasi warna hitam pada bagian atas atau bawah citra stego (Aditya, et al. 2010). Berdasarkan latar belakang yang telah diuraikan di atas, maka penulis memberi judul penelitian ini dengan nama Pengamanan File Teks dengan Algoritma Kriptografi Kunci Publik Rabin dan Algoritma Steganografi First Of File dan End Of File. 1.2 Rumusan Masalah Berdasarkan latar belakang di atas, maka rumusan masalah yang akan dibahas pada penelitian ini adalah belum terjaminnya keamanan pesan saat proses enkripsi menggunakan algoritma Kriptografi Kunci Publik Rabin sehingga pesan akan disisipkan ke dalam suatu file gambar berformat jpeg dengan menggunakan algoritma Steganografi First Of File dan End Of File. 1.3 Batasan Masalah Agar tulisan ini tidak menyimpang dari ruang lingkup pembahasan diperlukan batasan masalah sebagai berikut : 2

1. Pesan terlebih dahulu dienkripsi mengunakan algoritma kunci publik rabin kemudian pesan disisipkan kedalam suatu file gambar dengan menggunakan algoritma steganografi First Of File dan End Of File. 2. Format file yang digunakan adalah.txt,.doc,.docx. 3. Bahasa yang digunakan adalah bahasa pemrograman C#. 4. Karakter yang digunakan pada data yang akan di input adalah menggunakan printable ASCII (dengan kode karakter 32-126) 8 bit. 5. Pembangkitan bilangan prima menggunakan Fermat s Little Theorem dengan panjang kunci berkisar sekitar 1 sampai 999. 6. Sistem hanya melakukan enkripsi dan dekripsi data dan kunci pada file teks, namun tidak melakukan enkripsi dan dekripsi data maupun kunci terhadap komponen lain seperti tabel atau gambar yang terdapat di dalam file teks. 7. Media untuk menyimpan pesan adalah citra dengan format (*.jpeg). 1.4 Tujuan Penelitian Tujuan dari penyusunan tugas akhir ini adalah mengimplementasikan kombinasi algoritma kriptografi kunci publik Rabin dan algoritma steganografi First of File dan End Of File dalam pengamanan file teks dan menerapkan sebuah aplikasi untuk mengamankan dan merahasiakan data file teks yang telah disisipkan ke dalam sebuah citra dengan format.jpeg. 1.5 Manfaat Penelitian 1. Memperoleh satu aplikasi yang dapat mengamankan file teks dengan mengkombinasikan algoritma kriptografi kunci publik Rabin dan algoritma steganografi First of File dan End Of File. 2. Memudahkan para pengguna dalam menyembunyikan pesan rahasia sehingga tidak bisa diketahui oleh orang yang tidak berhak/berwenang. 1.6 Penelitian Sebelumnya Berikut ini beberapa penelitian yang terkait dengan algoritma Rabin dan Algoritma First Of File dan End Of File : 3

1. Henny Wandani (2012) dalam skripsi yang berjudul Implementasi Sistem Keamanan Data Dengan Menggunakan Teknik Steganografi End Of File (Eof) Dan Rabin Public Key Cryptosystem. Dalam skripsi ini, dapat disimpulkan bahwa, sistem ini menggabungkan algoritma kriptografi Rabin Public Key dan teknik steganografi End of File untuk menjaga keamanan dan kerahasiaan suatu data rahasia dan pada metode End of File, data yang telah dienkripsi akan disisipkan pada nilai akhir file gambar, sehingga akan menambah ukuran file dan terdapat penambahan garis-garis pada bagian bawah file gambar tersebut. 2. Nadya Soraya Hardiyana (2013) dalam skripsi yang berjudul Implementasi Algoritma Kriptografi Massey Omura dengan Teknik Steganografi Kombinasi Endf Of File (EOF) dan First Of File(FOF) Untuk Keamanan Data. Dalam skripsi ini, dapat disimpulkan bahwa, Penggunaan metode kombinasi End Of File dan First Of File untuk proses embedding dilakukan dengan cara menyisipkan baris matriks baru pada matriks pixel citra secara horizontal dan berseling dari baris pertama (First Of File) dan baris akhir (End Of File). Sehingga menghasilkan seperti garis hitam pada bagian atas dan bawah citra bitmap. 1.7 Metode Penelitian Penelitian ini menerapkan beberapa metode penelitian sebagai berikut: 1. Studi Literatur Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data yang diperlukan untuk penulisan skripsi ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, situs internet yang berkaitan dengan penelitian ini. 2. Pengumpulan dan Analisis Data Pada tahap ini dilakukan pengumpulan dan analisa data yang berhubungan dengan penelitian ini seperti fungsi enkripsi/dekripsi Rabin dan Steganografi. 3. Perancangan Sistem Pada tahap ini masalah akan dianalisis untuk mengetahui apa saja hal yang dibutuhkan dalam penelitian ini, dan kemudian sistem dirancang dengan membuat gambaran sistem menggunakan flowchart, Use case Scenario, sequence diagram, dan user interface. 4

4. Implementasi Sistem Pada tahap ini perancangan diimplementasikan dengan menggunakan bahasa C#. 5. Pengujian Sistem Pada tahap ini prototipe sistem yang telah diimplementasikan dilakukan pengujian dengan file teks yang berekstensi.txt,.doc,.docx. 6. Dokumentasi Sistem Melakukan pembuatan dokumentasi sistem mulai dari tahap awal hingga pengujian sistem, untuk selanjutnya dibuat dalam bentuk laporan penelitian (skripsi). 1.8 Sistematika Penulisan Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut : BAB 1. PENDAHULUAN Bab ini akan menjelaskan mengenai latar belakang masalah yang dibahas dalam skripsi ini, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, penelitian sebelumnya, metode penelitian, dan sistematika penulisan skripsi. BAB 2. LANDASAN TEORI Pada bab ini berisi penjelasan singkat mengenai sistem kriptografi, teori-teori dasar yang digunakan dalam algoritma kriptografi Rabin, sistem kriptografi Rabin, dan algoritma steganografi First Of File dan End Of File. BAB 3. ANALISIS DAN PERANCANGAN SISTEM Pada bab ini berisi penjelasan tentang analisis masalah yang dibangun dalam sistem dan menganalisis tentang hal hal yang dibutuhkan dalam membangun sistem ini, kemudian dilanjutkan dengan tahapan perancangan sistem yang berupa perancangan interface sistem. BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM Pada bab ini berisi tentang implementasi sistem yang berdasarkan tahapan perancangan dengan menggunakan bahasa pemrograman C#. Kemudian dilanjutkan 5

dengan tahapan pengujian sistem untuk menguji apakah sistem sudah berjalan sesuai dengan perancangan. BAB 5 : KESIMPULAN DAN SARAN Bab ini merupakan bab penutup yang menguraikan mengenai kesimpulan yang penulis ambil dari pembahasan pada bab-bab sebelumnya dan saran sebagai masukan terhadap permasalahan yang muncul yang diharapkan dapat bermanfaat bagi pemecahan masalah tersebut. 6

BAB 2 LANDASAN TEORI 2.1 Kriptografi Kata Cryptography berasal dari bahasa Yunani yang terdiri dari dua kata yaitu kryptos yang berarti rahasia dan graphein yang berarti tulisan (Mollin,2007). Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2010). 2.1.1. Terminologi dan Konsep Kriptografi Dalam pertukaran informasi, pengirim (sender) melakukan pengiriman sebuah pesan asli ke penerima (recepient) dengan harapan pesan asli tersebut dapat sampai ke tangan sang penerima dengan aman dan kerahasiaan pesan tersebut terjaga. Pesan memiliki nama lain yaitu plainteks (plaintext) atau teks-jelas (cleartext). Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut cipherteks (ciphertext) atau kriptogram (cryptogram). Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca. Proses menjadikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering (standard nama menurut ISO 7498-2) (Munir, 2006). Skema kriptografi dapat dilihat pada gambar 2.1. Kunci Privat,K Kunci Privat,K Plainteks,P Enkripsi E K (P)=C Cipherteks,C Dekripsi D K (C)=P Plainteks,P Gambar 2.1 Skema proses enkripsi dan dekripsi (Munir, 2006) 7

2.1.2. Istilah dalam Kriptografi Dalam kriptografi, terdapat beberapa istilah penting yang perlu diketahui maknanya, antara lain sebagai berikut (Munir, 2006): 1. Pesan, Plaintext, dan Ciphertext Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan tersebut adalah plainteks (plaintext). Pesan dapat berupa data atau informasi yang dikirim maupun disimpan dalam media penyimpanan. Pesan yang tersimpan dapat berupa teks, citra (image), suara/bunyi (audio), dan video. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk yang lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut ciphertex) atau kriptogram. 2. Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas yang lainnya. Penerima (recepient) adalah entitas yang menerima pesan. Entitas yang dimaksud dapat berupa orang, mesin komputer, kartu kredit, dan sebagainya. 3. Enkripsi dan Dekripsi Proses yang menyandikan pesan asli (plaintext) menjadi pesan tersandi (ciphertext) disebut enkripsi (encryption). Sedangkan proses yang mengembalikan ciphertext menjadi plaintext semula dinamakan dekripsi (decryption). 4. Cipher dan Kunci Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Di dalam kriptografi, algoritma sudah tidak lagi dirahasiakan, tetapi kuncinya yang harus terjaga kerahasiaannya. Kunci merupakan parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci dapat berupa string ataupun deretan angka. Misalkan P menyatakan plaintext, dan C menyatakan ciphertext, maka fungsi enkripsi E memetakan P ke C, dan menggunakan kunci K, maka fungsi enkripsi dan dekripsi ditulis sebagai berikut: 29

( ) Dan fungsi dekripsi D memetakan C ke P ditulis sebagai berikut: ( ) Karena proses dekripsi mengembalikan pesan yang terenkripsi tersebut menjadi kembali ke pesan semula, maka kesamaan berikut adalah benar, ( ( )) Keamanan algoritma kriptografi sering diukur dari banyaknya kerja yang dibutuhkan untuk memecahkan ciphertext menjadi plaintext tanpa mengetahui kunci apa yang digunakan. 5. Sistem Kriptografi Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) adalah kumpulan yang terdiri dari algoritma kriptografi, semua plaintext dan ciphertext yang mungkin, dan kunci. 6. Penyadap Penyadap merupakan orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan ciphertext. Nama lain penyadap yaitu: enemy, adversary, intruder, interceptor, bad guy. 7. Kriptanalisis Kriptografi berkembang sedemikian rupa, sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalisis) adalah ilmu dan seni untuk memecahkan ciphertext menjadi plaintext tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. 2.1.3. Tujuan Kriptografi Tujuan kriptografi adalah (Munir, 2006): 1. Kerahasiaan (Confidentiality) Kerahasiaan adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi ciphertext. 30

2. Integritas Data (Data Integrity) Integritas data adalah layanan yang menjamin bahwa pesan masih asli atau belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubtitusian data lain kedalam pesan yang sebenarnya. 3. Otentikasi (authentication) Otentikasi adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran komunikasi juga harus diotentikasi asalnya. Otentikasi sumber pesan secara tersirat juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi berarti sumber pesan sudah tidak benar. Oleh karena itu, layanan integritas data selalu dikombinasikan dengan layanan otentikasi sumber pesan. 4. Nirpenyangkalan (Non-repudiation) Nirpenyangkalan adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman, atau penerima pesan menyangkal telah menerima pesan. 2.1.4. Jenis-jenis Algoritma Kriptografi 2.1.4.1 Algoritma Simetris Algoritma Simetris adalah algoritma yang menggunakan kunci yang sama pada proses enkripsi dan dekripsinya. Aplikasi kriptografi simetri yang utama yaitu melindungi kerahasiaan data yang disimpan pada media yang tidak aman. Kelemahan dari sistem ini, baik pengirim maupun penerima pesan adalah harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara yang aman untuk memberitahukan kuncinya kepada penerima pesan (Munir, 2006). 31

Skema kriptografi simetris disebut juga sebagai skema atau algoritma kunci simetris (symmetric-key), kunci rahasia (secret-key), dan single-key (Paar et al., 2010). Skema kriptografi simetri dapat dilihat pada gambar 2.2. Gambar 2.2. Skema Kriptografi Simetris (Munir, 2006) Kunci enkripsi sama dengan kunci dekripsi, yaitu K. Algoritma yang termasuk dalam algoritma simetri adalah DES (Data Encryption Standard), Blowfish, Twofish, Triple-DES, IDEA, Serpent, RC4,RC4+, Hill Cipher, Affine Cipher, OTP, AES (Advanced Encryption Standard), dsb. 2.1.4.2 Algoritma Asimetris Algoritma Asimetris adalah algoritma kriptografi yang menggunakan kunci yang berbeda pada proses enkripsi dan dekripsinya. Pada proses enkripsi menggunakan kunci publik (kunci tersebut tidak dirahasiakan dan dapat diketahui siapapun), sedangkan pada proses dekripsi menggunakan kunci privat (kunci bersifat rahasia dan hanya dapat diketahui oleh penerima pesan). Pada kriptografi jenis ini, setiap orang yang berkomunikasi harus memiliki sepasang kunci, yakni kunci privat dan kunci publik. Pengirim mengenkripsi pesan dengan menggunakan kunci publik si penerima pesan (recepient). Hanya penerima pesan yang dapat mendekripsikan pesan tersebut karena hanya ia yang mengetahui kunci privatnya sendiri (Munir, 2006). Skema kriptografi asimetri dapat dilihat pada gambar 2.3. 32

Gambar 2.3. Skema Kriptografi Asimetris (Munir, 2006). Kunci enkripsi berbeda dengan kunci dekripsi. Kunci enkripsi bersifat publik (tidak rahasia), sedangkan kunci dekripsi bersifat privat (rahasia). Algoritma yang termasuk dalam algoritma asimetri adalah RSA, RSA-CRT, Elgamal, DSA, dsb. Sistem kriptografi public-key (asimetris) memiliki kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri. Kontribusi yang paling penting yaitu tanda-tangan digital pada pesan agar memberikan aspek keamanan otentikasi, integritas data, dan nirpenyangkalan. Tanda-tangan digital merupakan nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan. Pengirim pesan mengenkripsikan pesan (yang sudah diringkas) dengan kunci privatnya, hasil enkripsi inilah yang dinamakan tanda-tangan digital. Tanda-tangan digital dilekatkan pada pesan asli. Penerima pesan memverifikasi tanda-tangan digital dengan menggunakan kunci publik (Munir, 2006). 2.2 Landasan Matematika Kriptografi Landasan matematika kriptografi yang akan digunakan dalam sistem adalah sebagai berikut: 2.2.1 Bilangan Prima Bilangan bulat positif ( ) disebut bilangan prima jika pembaginya hanya 1 dan. Contoh: 23 adalah bilangan prima karena ia hanya habis dibagi oleh 1 dan 23. Karena bilangan prima harus lebih besar dari 1, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5, 7, 11, 13,... Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap. Bilangan selain prima disebut bilangan komposit (composite). Contoh: 20 adalah bilangan komposit karena 20 dapat dibagi oleh 2, 4, 5, dan 10, selain 1 dan 20 sendiri. (Munir, 2006). 2.2.2 Relatif Prima 33

Dua buah bilangan (misal: d ) dikatakan relatif prima jika gcd dari kedua bilangan tersebut yang dinotasikan dengan ( ) bernilai 1. Contoh: Apakah bilangan dan adalah relatif prima: 1. dan 2. dan Penyelesaiannya dapat dilihat pada Tabel 2.1 dan Tabel 2.2. 1. Untuk dan Tabel 2.1. Penyelesaian contoh soal relatif prima(1) mod 8 9 8 9 8 1 8 1 0 Jadi, 8 dan 9 dikatakan relatif prima, karena ( ). 2. Untuk dan Tabel 2.2. Penyelesaian contoh soal relatif prima(2) mod 12 15 12 15 12 3 12 3 0 3 0 Jadi, 12 dan 15 tidak dikatakan relatif prima, karena ( ) 2.2.3 Greatest Common Divisor (GCD) Greatest Common Divisor (GCD) dari bilangan bulat dan, dinotasikan ( ), adalah bilangan bulat terbesar yang membagi kedua bilangan dan. Kemungkinan lain, dikatakan bahwa ( ) adalah bilangan, sehingga jika d dan d, maka 34

d. Jika ( ), dapat dikatakan bahwa dan adalah relatif prima. Diperluas gagasan dari Greatest Common Divisor (GCD) untuk sepasang bilangan bulat dengan mengikuti dua aturan: ( ) ( ) ( ) ( ), yang menangani nilai negatif. Contoh: 1. Temukan d( ) Jawab: Dilihat pada aturan pertama bahwa ( ) ( ), Jadi hasil dari ( ). 2. Temukan ( ) Jawab: Penyelesaiannya dapat dilihat pada Tabel 2.3 Tabel 2.3. Penyelesaian contoh soal ( ) A B R = A mod B 2024 748 528 748 528 220 528 220 88 220 88 44 88 44 0 44 0 Jadi, hasil dari ( ). 3. Temukan ( ) Jawab: Dilihat dari aturan kedua bahwa ( ) ( ), Maka ( ) ( ) ( ) Penyelesaiannya dapat dilihat pada Tabel 2.4 Tabel 2.4. Penyelesaian contoh soal ( ) A B R = A mod B 12 78 12 78 12 6 12 6 0 35

6 0 Jadi, hasil dari ( ). Sebuah GCD ada jika pada bagian terakhir dari bilangan bulat dan. Dengan catatan bahwa GCD adalah bilangan positif. (seringnya disetujukan, bagaimanapun, bahwa ( ) ). Jika ( ) maka dapat dikatakan bahwa dan tidak memiliki pembagi yang umum atau disebut juga sebagai bilangan relatif prima (Ruohonen, 2014). 2.2.4 Aritmatika Modulo Biarkan m merupakan sebuah bilangan bulat (integer). Dikatakan bahwa bilangan bulat dan adalah modulo kongruen m jika terdapat perbedaan dibagi oleh m. Dituliskan: (mod m) Untuk mengindikasikan bahwa dan adalah bilangan modulo kongruen m. Bilangan m dikatakan sebagai modulus. (Hoffstein, 2008) 2.2.5 Inversi Modulo Dikatakan bahwa seperti ( ). (Galbraith, 2012). Dan d. Perkalian invers dari bilangan bulat mod o adalah bilangan bilangan bulat seperti (mod ). Jika adalah sedikit positif seperti invers, maka disebut juga sedikit perkalian invers dari bilangan bulat mod o, dinyatakan dengan. (Mollin, 2008). Contoh: Berapa inversi modulo dari 9 (mod 13) Penyelesaiannya dapat dilihat pada Tabel 2.5 Tabel 2.5. Penyelesaian contoh soal inversi modulo (mod ) 1 (mod ) 2 (mod ) 3 (mod ) 36

Iterasi berhenti ketika hasilnya yaitu:. (mod ), maka pada contoh soal ini didapatkan 2.2.6 Fermat s Little Theorem Pierre De Fermat lahir di Beaumont-de-Lomagne, Tarn-et-Garonne, Prancis. Ia memberikan banyak sekali kontribusi pada ilmu teori bilangan. Salah satu teoremanya yang terkenal adalah Fermat s Little Theorem. Teorema ini pertama kali dinyatakannya pada sebuah surat untuk temannya, Frencle de Bessy, pada tanggal 18 Oktober 1640. Secara formal, Fermat s Little Theorem ini dapat ditulis: Misalkan a suatu bilangan bulat positif dan p suatu bilangan prima, maka Untuk G (, ) = 1, berlaku 1 1 (mod ) Contoh, kalkulasikan 2 58 (mod 19). Karena 19 adalah bilangan prima dan 2 tidak dapat dibagi 19, maka teorema ini dapat digunakan untuk mengkalkulasi 2 18 2 19-1 (mod 19) 1 (mod 19) Jadi 2 58 = (2 18 ) 3 x (2 4 ) 1 3 x 2 4 16 (mod 19) Meskipun dapat digunakan untuk mempermudah kalkulasi, dalam kriptografi, peran terpenting dari Fermat's little theorem adalah sebagai dasar dari berbagai teknik enkripsi asimetris. 2.2.7 Algoritma Kunci Publik Rabin Algoritma Rabin Public Key pertama kali diperkenalkan pada tahun 1979 oleh Michael O. Rabin. Algoritma Rabin Public Key adalah salah satu algoritma kriptografi asimetris yang menggunakan kunci publik dan kunci privat. Algoritma Rabin Public Key merupakan varian algoritma Rivest Shamir Adleman (RSA). Fungsi dasar algoritmanya mirip dengan fungsi dasar dari algoritma RSA. Hanya saja 37

komputasinya lebih sederhana dibandingkan algoritma RSA. Karena kesederhaan komputasinya inilah maka serangan terhadap algoritma ini pun lebih banyak, antara lain : a. Chosen-Ciphertext Attack Penyerang menentukan ciphertext untuk didekripsikan, sehingga mengetahui bentuk plaintext hasil dekripsi. b. Chosen-Plaintext Attack Kriptanalis dapat menentukan plaintext untuk dienkripsikan, yaitu plaintext - plaintext yang lebih mengarahkan ke penemuan kunci. Adapun proses enkripsi dan dekripsi pada algoritma Rabin Public Key, yaitu : 2.2.7.1 Proses Pembangkitan Kunci Tahapan - tahapan yang dapat dilakukan dalam proses pembangkitan kunci pada algoritma Rabin Public Key adalah : 1. Pilih 2 (dua) buah bilangan prima besar sembarang yang saling berbeda p dan q, dimana p q 3 (mod 4). Atau dengan kata lain jika p dan q di modulo 4 akan menghasilkan 3 (Wandani, 2012). Contoh : p = 11 dan q = 23 2. Hitung nilai n yang merupakan kunci publik dengan rumus sebagai berikut: n = p * q dengan p dan q adalah kunci privat. Contoh : n = p * q = 11 * 23 n = 253 Proses Enkripsi Algoritma Rabin 2.2.7.2 Proses Enkripsi Algoritma Rabin Proses enkripsi pada algoritma Rabin Public Key menggunakan kunci publik n. Berikut langkah-langkah proses enkripsi menggunakan algoritma Rabin Public Key yang telah dimodifikasi : 38

3. Ubah nilai plaintext m menjadi nilai biner, kemudian nilai biner plaintext m digabungkan dengan nilai biner plaintext m itu sendiri (redundant information) atau dengan kata lain plaintext digandakan. Penggabungan ini bertujuan untuk dapat menentukan plaintext yang sebenarnya dari keempat hasil dekripsi yang diperoleh. Contoh : m = 8, nilai binernya adalah 1000. Maka nilai m [m m] = 10001000. 4. Ubah hasil penggandaan nilai biner plaintext menjadi nilai desimalnya. Contoh : m [m m] = 10001000, nilai desimalnya adalah 136. Maka nilai m = 136. 5. Hitung nilai ciphertext c dengan menggunakan rumus : c = m 2 mod n dengan c adalah ciphertext, n adalah kunci publik, dan m adalah nilai desimal dari hasil penggandaan nilai biner plaintext. Contoh : m = 136 dan n =253, maka c adalah : c = m 2 mod n = 136 2 mod 253 c = 27 Maka, plaintext = 8 dienkripsi dengan nilai c = 27. Untuk kombinasi plaintext dan kunci yang merupakan angka kelipatan 11 akan diperoleh ciphertext yang juga merupakan angka kelipatan 11. Hal ini menyebabkan kriptanalis dapat mengetahui bentuk plaintext yang sebenarnya atau dengan kata lain algoritma Rabin Public Key tidak aman untuk serangan chosen-ciphertext attack. Tabel 2.6 akan menunjukkan hasil enkripsi angka kelipatan 11 dengan rentang angka 11-99 dan kunci publik yang digunakan adalah 77. 39

Tabel 2.6 Hasil Enkripsi Angka Kelipatan 11 dengan Kunci Publik 77 Plaintext Ciphertext 11 11 22 11 33 44 44 44 55 11 66 11 77 0 88 11 99 44 2.2.7.2 Proses Dekripsi Algoritma Rabin Ada beberapa tahapan yang dilakukan dalam mendekripsi suatu pesan menggunakan algoritma Rabin Public Key. Berikut langkah langkah proses dekripsi dengan menggunakan algoritma ini yang telah dimodifikasi : 6. Tentukan nilai Yp dan Yq yang merupakan pembagi GCD (Greatest Common Divisor) dari p dan q dengan menggunakan Algoritma Extended Euclidean. Karena GCD bilangan prima adalah 1, maka dapat ditulis sebagai berikut Yp*p + Yq * q = 1 Contoh : Yp*p + Yq * q = 1 11 Yp + 23 Yq = 1 Hasil Bagi Sisa Bagi Subsitusi Penggabungan - 11-11 = 11*1 + 23*0-23 - 23 = 11*0 + 23*1 0 11 11=(11*1+23*0) (11*0 + 23*1)*0 11 = 11*1 +23*0 2 1 1 = (11*0 + 23*1) (11*1 + 23*0)*2 1 = 11*(-2) + 23*1 40

11 0 Karena sisa bagi mencapai 0, maka proses berakhir Hasil akhir yang diperoleh adalah 1 = 11*(-2) + 23*1, sehingga didapat nilai x = -2 dan y = 1. 7. Hitunglah nilai akar kuadrat dari ciphertext terhadap p dan q dengan rumus: m [ ] mod m [ ] mod dengan m p adalah akar kuadrat dari ciphertext terhadap p dan m q adalah akar kuadrat dari ciphertext terhadap q. Contoh : m [ ] mod [ ] mod m mod m [ ] mod [ ] mod mod m Maka, didapatlah mp =4 dan mq = 2 8. Hitung nilai r, s, t dan u dengan menggunakan Chinese Remainder Theorem. r = (Yp*p* mq + Yq * q* mp ) mod n s = (Yp*p* mq - Yq * q* mp ) mod n 41

t = ( -Yp*p* mq + Yq * q* mp ) mod n u = ( -Yp*p* mq - Yq * q* mp ) mod n... Contoh : r = (Yp*p* mq + Yq * q* mp ) mod n = ((-2)*11*2 + 1*23*4) mod 253 = 48 s = (Yp*p* mq - Yq * q* mp ) mod n = ((-2)*11*2-1*23*4) mod 253 = 117 t = ( -Yp*p* mq + Yq * q* mp ) mod n = (2*11*2 + 1*23*4) mod 253 = 136 u = ( -Yp*p* mq - Yq * q* mp ) mod n = (2*11*2-1*23*4) mod 253 = 205 9. Tambahkan r,s,t,u dengan kongruen nilai desimal hasil penggandaan plaintext k yang dikalikan dengan kunci publik n. R = (k*n)+r S = (k*n)+s T = (k*n)+t U = (k*n)+u Contoh : R = (k*n) + r = (0*253) + 48 R = 48 S = (k*n) + s = (0*253) + 117 S = 117 42

T = (k*n) + t = (0*253) + 136 T = 136 U = (k*n) + u = (0*253) + 205 U = 205 10. Ubahlah nilai desimal R,S,T,U ke dalam bentuk biner. Kemudian nilai biner R,S,T,U dibagi menjadi 2 (dua) bagian. Bandingkan kedua bagian tersebut. Jika kedua bagian tersebut menghasilkan bentuk biner yang sama, maka didapatlah hasil dekripsi ciphertext c dengan mengubah bentuk biner salah satu bagian yang telah dibagi menjadi 2(dua) bagian yang sama. Contoh : R = 48, nilai binernya adalah 110000. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 110 dan 000. Karena tidak menghasilkan bentuk biner yang sama, maka R bukan pesan rahasia yang sebenarnya. S = 117, nilai binernya adalah 1110101. Panjang nilai biner yang dihasilkan adalah ganjil, sehingga sudah dapat dipastikan S bukan pesan rahasia yang sebenarnya. T = 136, nilai binernya adalah 10001000. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 1000 dan 1000. Karena menghasilkan bentuk biner yang sama, maka T adalah pesan rahasia yang sebenarnya. U = 205, nilai binernya adalah 11001101. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 1100 dan 1101. Karena tidak menghasilkan bentuk biner yang sama, maka U bukan pesan rahasia yang sebenarnya. 43

Maka, didapatlah dekripsi dari ciphertext c=27 adalah 48, 117, 136, 205 dengan 136 menghasilkan bentuk biner yang sama jika dibagi menjadi 2 (dua) bagian, yaitu 1000 dan 1000. Dan jika diubah menjadi nilai desimal akan menghasilkan nilai plaintext yang sebenarnya yaitu 8 (Wandani, 2012). 2.3. Steganografi Steganografi adalah jenis komunikasi tersembunyi yang secara harfiah berarti tulisan tersembunyi (Kipper, 2004). Steganografi berasal dari Bahasa Yunani, yaitu steganos yang artinya tulisan tersembunyi (covered writing) (Munir, 2006). Pesan tersebut bersifat terbuka, sering dilihat semua orang, tetapi tidak terdeteksi karena keberadaan makna pesan tersebut rahasia. Deskripsi lain yang populer untuk steganografi adalah tersembunyi di depan mata (hidden in plain sight) (Kipper, 2004). Salah satu perbedaan steganografi dengan kriptografi adalah di mana pesan pada kriptografi bersifat acak, tidak dapat dibaca dan keberadaan akan pesan rahasia sering diketahui. Sedangkan steganografi menyembunyikan pesan dalam pesan lain (media) dan pesan atau media tersebut terlihat seperti normal (Kipper, 2004). Steganografi adalah ilmu menyembunyikan teks pada media lain yang telah ada sehingga teks yang tersembunyi menyatu dengan media tersebut. Media tempat penyembunyian pesan tersembunyi dapat berupa media teks, gambar, audio, atau video. Steganografi yang kuat memiliki sifat media yang telah tertanam teks tersembunyi dan sulit dibedakan dengan media asli namun teks tersembunyi tetap dapat diekstrasi (Sadikin, 2012). Terdapat beberapa istilah yang berkaitan dengan steganografi antara lain. 1. Hiddentext atau hidden object merupakan informasi yang akan disembunyikan. 2. Covertext atau cover object, merupakan media penampung pesan. 3. Stegotext atau stego object, media yang sudah disisipkan pesan. 4. Stegokey, merupakan kunci untuk menyisipkan pesan atau membaca pesan. Penyisipan pesan ke dalam media cover object dinamakan embedding, sedangkan pemisahan pesan dari stego object dinamakan extraction. Kedua proses ini memerlukan kunci (stegokey) agar hanya pihak yang berhak saja yang dapat 44

melakukan penyisipan dan pemisahan pesan. Untuk lebih jelasnya tentang proses steganografi dapat dilihat pada Gambar 2.4. Penampung Pesan Penampung Pesan Hasil Pesan Rahasia Penyisipan Pesan Pemisahan Pesan Pesan Kunci Kunci Gambar 2.4 Proses Penyisipan dan Ekstraksi Pesan (Munir, 2016) Proses steganografi sedikit atau banyak akan mengubah kualitas dari media tersebut. Untuk hasil steganografi dapat dikatakan baik cukup dengan memenuhi 3 (tiga) kriteria, yaitu : a. Imperceptibility Keberadaan pesan tidak diketahui oleh indera manusia. b. Fidelity Kualitas dari media penampung tidak berubah banyak setelah dilakukan proses penyisipan sehingga orang akan sulit mengetahui bahwa sebenarnya didalamnya terdapat pesan. c. Recovery Pesan yang disisipkan harus dapat diungkapkan kembali, karena tujuan dari steganografi adalah hanya untuk menyembunyikan data. 2.3.1 Teknik Steganografi First Of File dan End Of File Teknik EOF atau End Of File merupakan salah satu teknik yang digunakan dalam steganografi. Teknik ini digunakan dengan cara menambahkan data atau pesan rahasia pada akhir file citra. Untuk mengenal data yang disisipkan pada akhir file, diperlukan 45

suatu tanda pengenal atau simbol pada awal dan akhir data yang akan disisipkan. Dengan metode ini pesan yang disisipkan jumlahnya tak terbatas. Akan tetapi efek sampingnya adalah ukuran file menjadi lebih besar dari ukuran semula. Sedangkan untuk teknik FOF atau First Of File merupakan kebalikannya, yaitu data atau pesan rahasia ditambahkan pada awal file. Proses embedding atau penyisipan pesan menggunakan metode First of File dan End of File adalah sebagai berikut : 1. Inputkan ciphertext yang akan disisipkan. 2. Inputkan citra yang akan menjadi media penyisipan ciphertext (cover image). 3. Baca nilai setiap pixel citra. 4. Tambahkan ciphertext sebagai nilai awal dan nilai akhir pixel citra dengan diberi karakter penanda sebagai penanda akhir ciphertext. 5. Petakan menjadi citra baru. Berikut contoh penyembunyian pesan dengan teknik steganografi : 2.3.1.1 Contoh Penyisipan Pesan dengan First Of File dan End Of File Pada sebuah citra 4x6 pixel disisipkan adalah angka 8. Misalkan terdapat suatu citra sebagai contoh RGB 4x6 yang memiliki nilai setiap pixel seperti pada Tabel 2.7 Tabel 2.7 Matriks Citra Bewarna 4 x 6 pixel, (Hardiyana, 2013) R=48 R=49 R=67 R=77 R=93 R=114 G=91 G=90 G=103 G=108 G=119 G=130 B=125 B=120 B=129 B=129 B=136 B=143 R=52 R=42 R=48 R=61 R=80 R=97 G=89 G=79 G=82 G=93 G=111 G=120 B=118 B=106 B=107 B=116 B=132 B=134 46

R=58 R=49 R=46 R=50 R=54 R=75 G=86 G=77 G=78 G=86 G=98 G=111 B=107 B=98 B=101 B=110 B=125 B=133 R=69 R=60 R=62 R=56 R=52 R=73 G=65 G=87 G=91 G=87 G=89 G=102 B=32 B=106 B=109 B=107 B=108 B=116 Kode biner pesan disisipkan dengan cara menambah baris baru setelah baris terakhir matriks citra. Kemudian kode biner pesan disisipkan pada penambahan baris matriks citra tersebut secara horizontal berurutan dari pixel warna Red, Green, Blue. Sehingga matriks citra setelah disisipi dapat dijelaskan pada Tabel 2.8. Angka bewarna merah adalah pesan yang disisipi pada matriks citra. Tabel 2.8 Matriks Citra yang Disisipikan Ciphertext (Hardiyana, 2013) R=8 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 R=48 R=49 R=67 R=77 R=93 R=114 G=91 G=90 G=103 G=108 G=119 G=130 B=125 B=120 B=129 B=129 B=136 B=143 R=52 R=42 R=48 R=61 R=80 R=97 G=89 G=79 G=82 G=93 G=111 G=120 B=118 B=106 B=107 B=116 B=132 B=134 47

R=58 R=49 R=46 R=50 R=54 R=75 G=86 G=77 G=78 G=86 G=98 G=111 B=107 B=98 B=101 B=110 B=125 B=133 R=69 R=60 R=62 R=56 R=52 R=73 G=96 G=87 G=91 G=87 G=89 G=102 B=115 B=106 B=109 B=107 B=108 B=116 R=0 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 Matriks di atas akan dipetakan kembali dalam bentuk citra RGB dan citra ini disebut stego image. 2.3.1.2 Proses extraction atau pengambilan ciphertext dari media menggunakan metode First of File dan End of File adalah sebagai berikut : 1. Inputkan citra yang telah disisipkan ciphertext (stego image). 2. Baca nilai pixel stego image yang terdapat pada baris awal dan terakhir matriks pixel citra. 3. Ambil ciphertext yang terdapat pada stego image, yaitu nilai pixel awal yang terdapat pada baris terakhir matriks pixel citra sampai nilai desimal karakter penanda. Berikut contoh pengambilan ciphertext menggunakan metode First of File dan End of File : Terdapat suatu citra RGB 4x6 yang telah disisipkan ciphertext (stego image), angka bewarna merah adalah pesan yang telah disisipi pada matriks citra. Nilai setiap pixel file citra RGB tersebut dapat dilihat pada Tabel 2.9. Tabel 2.9 Matriks Citra yang Disisipikan Ciphertext (Hardiyana, 2013) R=8 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 48

R=48 R=49 R=67 R=77 R=93 R=114 G=91 G=90 G=103 G=108 G=119 G=130 B=125 B=120 B=129 B=129 B=136 B=143 R=52 R=42 R=48 R=61 R=80 R=97 G=89 G=79 G=82 G=93 G=111 G=120 B=118 B=106 B=107 B=116 B=132 B=134 R=58 R=49 R=46 R=50 R=54 R=75 G=86 G=77 G=78 G=86 G=98 G=111 B=107 B=98 B=101 B=110 B=125 B=133 R=69 R=60 R=62 R=56 R=52 R=73 G=96 G=87 G=91 G=87 G=89 G=102 B=115 B=106 B=109 B=107 B=108 B=116 R=0 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 Kemudian dibaca nilai pixel stego image yang terdapat pada baris awal dan terakhir matriks pixel citra untuk dimasukkan di setiap pixel R, G dan B, dengan nilai awal dalam keadaan warna hitam atau pixel 0, pembaccan stego image seperti pada Gambar 2.10. Tabel 2.10 Awal Matriks Pixel Citra R=8 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 Tabel 2.11 Akhir Matriks Pixel Citra R=0 R=0 R=0 R=0 R=0 R=0 G=0 G=0 G=0 G=0 G=0 G=0 B=0 B=0 B=0 B=0 B=0 B=0 49

Untuk proses Extracting, maka dilakukan dengan cara mengambil nilai pixel pada matriks citra dimulai dari pixel pertama pada baris pertama matriks (R-G-B), kemudian menuju pixel pertama pada baris terakhir matriks (R-G-B) selanjutnya berulang seperti ini ke pixel kedua sampai dengan menemukan nilai karakter pesan. Setelah itu didapatkan nilai ciphertext yaitu 8. 50

BAB 3 ANALISIS DAN PERANCANGAN 3.1 Analisis Sistem Sebuah sistem yang baik tentu harus dibangun dengan perancangan yang baik pula. Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem yang utuh ke dalam bagian-bagian komponen. Hal ini bertujuan untuk mempelajari apakah komponen-komponen tersebut bekerja dan berinteraksi sesuai dengan tujuan mereka. Ada tiga fase analisis sistem yaitu analisis masalah, analisis kebutuhan dan analisis proses. Analisis masalah bertujuan untuk mengidentifikasi penyebab masalah serta memahami kelayakan masalah. Analisis kebutuhan bertujuan untuk mengidentifikasi dan menjelaskan fungsi-fungsi yang disediakan oleh sistem baik kebutuhan fungsional dan non-fungsional. Analisis proses bertujuan untuk mengetahui alur suatu sistem dan tools yang digunakan untuk merancang sebuah sistem. 3.1.1 Analisis Masalah Analisis masalah adalah proses identifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem dapat berjalan sesuai dengan tujuan dibuatnya sistem. Permasalahan yang dibahas pada penelitian ini adalah belum terjaminnya keamanan pesan saat proses enkripsi menggunakan algoritma Kriptografi Kunci Publik Rabin sehingga pesan akan disisipkan ke dalam suatu file gambar berformat jpeg dengan menggunakan algoritma Steganografi First Of File dan End Of File. File teks yang digunakan dalam penelitian ini adalah file berekstensi *.txt, *.doc dan *.docx. Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa merupakan suatu alat visual untuk mengidentifikasi, mengeksplorasi, dan secara diagram menggambarkan semua penyebab yang berhubungan dengan suatu permasalahan. Diagram ini menunjukkan sebuah akibat dari permasalahan dengan berbagai penyebabnya (Whitten et al, 2004). Diagram Ishikawa proses perancangan sistem ini dapat dilihat pada Gambar 3.1. 51

Manusia Material Ancaman manipulasi data dari pihak yang tidak berkepentingan Sulit menjaga kerahasiaan data Pihak ketiga memiliki kecurigaan dan ingin tahu Sulit menemukan metode yang tepat untuk mengamankan & menyisipkan file kedalam citra. Terdapat efek garis berwarna hitam Kriptografi masih mencurigakan Citra berubah dan terlihat mencurigakan Kunci dapat di ketahui pihak ketiga Data yang bersifat rahasia Belum ada aplikasi yang menggabungkan kriptografi dan steganografi Software tidak bekerja dengan baik Dibutuhkannya sistem pengamanan file teks dengan penggabungan kriptografi dan steganografi Metode Mesin Gambar 3.1. Diagram Ishikawa Masalah Penelitian Berdasarkan Gambar 3.1. bentuk segiempat paling kanan merupakan bagian yang menunjukkan masalah utama penelitian. Sedangkan empat buah segiempat lainnya adalah kategori masalah. Garis horizontal yang mengarah ke kategori masalah adalah sebab dari masalah utama. 3.1.2 Analisis Kebutuhan Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya. 3.1.2.1 Kebutuhan Fungsional Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut: 1. Pembangkit kunci. 49

Kunci dibangkitkan dengan pembangkit bilangan prima yaitu dengan Fermat s little Theorem. 2. Enkripsi Pesan Dengan memiliki kunci enkripsi, sistem dapat melakukan enkripsi pesan menjadi ciphertext. Pesan yang dapat diinputkan oleh sistem yaitu jenis format *.txt, *.doc, dan *.docx. 3. Embedding Pesan (Penyisipan) Pesan rahasia disembunyikan ke dalam citra berformat jpeg yang dipilih oleh pengguna. Pesan rahasia dapat berupa pesan asli langsung atau ciphertext. 4. Ekstraksi Pesan Dengan memilih citra berformat jpeg yang memiliki pesan rahasia di dalamnya, pengguna dapat memperoleh pesan rahasia berupa plaintext atau ciphertext. 5. Dekripsi Pesan Sistem dapat mengubah pesan yang tersandi (ciphertext) menjadi pesan asli (plaintext) atau mengembalikan pesan tersandi ke bentuk semula. 3.1.2.2 Kebutuhan Non Fungsional Kebutuhan fungsional mencakup beberapa karakteristik berikut: 1. Performa Sistem yang akan dibangun dapat menunjukkan hasil dari fungsi kriptografi dan steganografi yang dilakukan oleh sistem. 2. Efisiensi Sistem yang akan dibangun harus sesederhana mungkin agar tidak menyulitkan pengguna. 3. Ekonomis Sistem yang akan dibangun harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak. 4. Dokumentasi Sistem atau perangkat lunak yang akan dibangun memiliki panduan penggunaan. 5. Manajemen kualitas 50

Perangkat lunak yang dibangun harus memiliki kualitas yang baik yaitu proses pembangkitan kunci yang cepat dan proses kriptografi dan steganografi yang akurat. 6. Kontrol Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai. 3.1.3 Arsitektur Umum Kriptografi Dan Steganografi Arsitektur umum antara kriptografi dan steganografi citra digital ditunjukkan pada Gambar 3.2. Citra Digital (original) Pesan (Plaintext) Proses Enkripsi (Rabin) Pesan (Ciphertext) Proses Penyisipan Pesan (Metode FOF dan EOF ) Citra Digital (Hasil/Stego image) Citra Digital Pesan (Plaintext) Proses Dekripsi (Rabin) Pesan (Ciphertext) Proses ekstraksi Pesan (Metode FOF dan EOF) Gambar 3.2. Arsitektur Umum Proses Pada gambar 3.2. dapat dilihat proses kombinasi kriptografi dan steganografi. Pesan teks (plaintext) yang akan disisipkan ke dalam citra digital terlebih dahulu dienkripsi dengan menggunakan algoritma Rabin. Selanjutnya hasil enkripsi (ciphertext) disisipkan ke dalam sebuah citra digital melalui proses penyisipan dengan menggunakan Metode First of File dan End Of File. Hasil penyisipan berupa citra hasil (stego image), dimana di dalam stego image ini telah terdapat pesan yang telah disisipkan sebelumnya. Ekstraksi pesan dilakukan dengan menggunakan metode yang sama saat proses penyisipan. Hasilnya adalah diperoleh pesan yang telah disisipkan sebelumnya (ciphertext). Selanjutnya pesan (ciphertext) tersebut akan didekripsi dengan menggunakan Algoritma Rabin sehingga menghasilkan pesan awal (plaintext). 51

3.2. Pemodelan Sistem Pemodelan pada sistem dilakukan untuk memberikan petujuk dan pendeskripsian mengenai gambaran dari kebutuhan sistem yang akan dibangun, yaitu dengan melakukan pemodelan berbasis skenario menggunakan UML untuk mendesain dan merancang sistem. UML (Unified Modeling Language) adalah bahasa yang digunakan untuk memberikan penjelasan mengenai komponen-komponen untuk membangun sistem dan interaksi antar komponen sistem. Beberapa model UML yang digunakan dalam penelitian ini yakni antara lain: use case diagram, activity diagram, dan sequence diagram. 3.2.1. Use Case Diagram Use case diagram adalah gambaran skenario yang menunjukkan bagaimana interaksi pada sistem yang sedang dijalankan oleh pengguna/actor. Actor pada model use case diagram berperan dalam melakukan komunikasi dengan sistem. Hubungan antara actor dengan use case dihubungkan dengan garis lurus. Sedangkan hubungan antara satu use case yang digunakan untuk meredundasi use case yang lain dihubungkan dengan garis putus-putus dengan keterangan include. Sedangkan keterangan extend digunakan sebagai perluasan satu use case dengan use case yang lainnya jika kondisi telah terpenuhi (Whitten, 2007). Use case diagram sistem pada aplikasi yang dirancang dapat dilihat pada Gambar 3.3. 52

Gambar 3.3. Use Case Diagram Pada Sistem Dilihat dari diagram use case pada Gambar 3.3. menjelaskan bahwa actor pada penelitian ini diidentifikasikan sebagai pengirim dan penerima pesan. Pada use case pembangkitan kunci dilakukan oleh penerima pesan, pada use case encryption dan embedding dilakukan oleh pengirim pesan, dan pada use case extraction dan decryption dilakukan oleh penerima pesan. Use-case narrative merupakan penjelasan dari setiap use-case yang ada pada diagram use-case. Tabel 3.1. sampai Tabel 3.5. berikut ini adalah use-case narrative dari diagram use-case pada Gambar 3.1. 53

Tabel 3.1. Deskripsi Use Case Generate Key Nama Generate Key Aktor Deskripsi Pengguna Sistem (Berperan sebagai Penerima) Use case ini mendeskripsikan form Generate Key sebagai form yang menunjukkan proses pembangkitan kunci dan pembangkit bilangan prima acak dengan metode Fermat s Little Theorem. Alur Utama - Actor memilih menu generate key - Menekan tombol Generate untuk mendapatkan kunci publik dan kunci privat. - Memilih tombol Save Public Key dan Save Private Key untuk menyimpan kunci. Prakondisi - Pasca Kondisi Sistem menampilkan hasil kunci yang telah dibangkitkan dan di simpan di media penyimpanan. Kunci yang didapatkan yaitu kunci publik dan kunci privat. Tabel 3.2. Deskripsi Use Case Enkripsi Rabin Nama Enkripsi File Teks Aktor Deskripsi Pengirim Use case ini mendeskripsikan form Encryption sebagai form yang menunjukkan proses enkripsi pesan (plaintext) dan kunci publik untuk mengamankan isi pesan. Alur Utama - Pengirim memilih file teks yang akan dienkripsi dan kunci publik. - Sistem melakukan proses enkripsi dan menampilkan hasil Tabel 3.2. Deskripsi enkripsi Use Case (ciphertext) Enkripsi Rabin (lanjutan) Prakondisi Sistem menerima kunci publik pada proses sebelumnya untuk dienkripsi 54

Pasca Kondisi Pengirim menyimpan hasil enkripsi (ciphertext) Tabel 3.3. Deskripsi Use Case Embedding Nama Embedding Cover Image Aktor Deskripsi Pengirim Use case ini mendeskripsikan form Embedding sebagai form yang menunjukkan proses penyisipan pesan ke dalam citra untuk mengamankan isi pesan. Alur Utama - Pengirim memilih cover image yang akan disisip dan masukkan ciphertext. - Sistem melakukan proses embedding dan menampilkan hasil embedding (Stego Image). Prakondisi Sistem menerima hasil enkripsi pada proses sebelumnya untuk embedding. Pasca Kondisi Pengirim menyimpan hasil embedding (Stego Image). Tabel 3.4. Deskripsi Use Case Extraction Nama Extraction Stego Image Aktor Penerima Deskripsi Use case ini mendeskripsikan form Extraction sebagai form yang menunjukkan proses ektraksi pesan dari dalam stego image oleh penerima. Stego image akan menghasilkan ciphertext yang sudah disisip ke dalam cover image sebelumnya. Tabel 3.4. Deskripsi Use Case Extraction (lanjutan) Alur Utama - Penerima memasukkan stego image yang akan di ektraksi. - Sistem melakukan proses extraction dan menampilkan hasil extraction (Ciphertext). Prakondisi Sistem menerima hasil embedding stego image pada proses sebelumnya untuk di extraction. 55

Pasca Kondisi Pengirim menyimpan hasil extraction (Ciphertext). Tabel 3.5. Deskripsi Use Case Dekripsi Rabin Nama Dekripsi File Teks Aktor Deskripsi Penerima Use case ini mendeskripsikan form Decryption sebagai form yang menunjukkan proses dekripsi pesan (ciphertext) dan kunci privat. Alur Utama - Pengirim memilih file teks yang akan didekripsi dan memasukkan kunci privat. - Sistem melakukan proses dekripsi dan menampilkan hasil dekripsi (plaintext) Prakondisi Sistem menerima file ciphertext dan kunci dari pengirim. Pasca Kondisi Sistem menyimpan hasil dekripsi (plaintext). 3.2.2. Activity Diagram Activity diagram adalah diagram aktivitas yang mendeskripsikan proses kerja dalam sebuah sistem yang sedang berjalan. Dalam diagram aktivitas ini dijelaskan proses kerja dari sistem pembangkitan kunci, enkripsi, penyisipan, ektraksi, dan dekripsi yang dilakukan oleh pengguna. 56

3.2.2.1 Activity Diagram Proses Pembangkit Kunci Gambar 3.4. Activity Diagram Proses Pembangkitan Kunci Berdasarkan Gambar 3.4. untuk melakukan proses pembangkit kunci hal pertama yang dilakukan adalah mengklik tombol bangkitkan kunci, dimana untuk nilai bilangan prima, p dan q sudah ditentukan sendiri oleh sistem. Setelah selesai proses bangkitkan kunci maka user menyimpan kunci publik dan privat yang nantinya akan digunakan untuk proses enkripsi. Berdasarkan Gambar 3.5. untuk melakukan enkripsi hal yang pertama dilakukan adalah input file (plaintext) dan kunci publik yang telah disimpan, sistem akan menampilkan isi file dan isi kunci publik yang akan digunakan dalam proses enkripsi. Setelah penginputan file dan kunci selesai, proses enkripsi dapat dilakukan dan menghasilkan ciphertext lalu simpan hasil ciphertext untuk proses embedding. 57

3.2.2.2 Activity Diagram Proses Enkripsi Rabin Gambar 3.5. Activity Diagram Proses Enkripsi Rabin 3.2.2.3 Activity Diagram Proses Penyisipan First Of File dan End Of File Gambar 3.6. Activity Diagram Proses Embedding Berdasarkan gambar 3.6. untuk melakukan embedding, hal pertama yang dilakukan adalah input file image, setelah itu masukkan ciphertext hasil enkripsi, selanjutnya 58

proses embedding dilakukan dan menghasilkan stego image, simpan stego image untuk proses ektraksi. 3.2.2.4 Activity Diagram Proses Ektraksi First Of File dan End Of File Gambar 3.7. Proses Extraction Berdasarkan gambar 3.7 untuk melakukan proses ektraksi hal pertama yang dilakukan adalah pilih menu ektraksi, tekan tombol browse lalu input stego image, setelah itu proses ektraksi dilakukan dan menghasilkan ciphertext, simpan ciphertext untuk proses dekripsi. 59

3.2.2.5 Activity Diagram Proses Dekripsi Rabin Gambar 3.8. Activity Diagram Proses Decryption Berdasarkan gambar 3.8. untuk melakukan dekrispi, hal yang pertama dilakukan adalah input file ciphertext, setelah itu input kunci privat yang telah disimpan. Sistem akan menampilkan nilai kunci privat. Selanjutnya dekripsi ciphertext, berikutnya sistem akan menampilkan hasil plaintext lalu simpan hasil dekripsi. 3.2.2.6 Sequence Diagram Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi. Diagram ini mengilustrasikan bagaimana pesan dikirim dan diterima diantara objek. Sequence Diagram untuk sistem yang dirancang pada penelitian ini dapat dilihat pada Gambar 3.9. 60

Gambar 3.9. Sequence diagram sistem 3.2.4 Flowchart Flowchart merupakan suatu bagan yang menggambarkan urutan suatu proses secara rinci menggunakan simbol-simbol tertentu dan menggambarkan hubungan antara satu proses dengan proses lainnya dengan menggunakan tanda panah. 3.2.4.1 Flowchart Gambaran Umum Sistem Flowchart merupakan diagram alir kegiatan sistem yang memperlihatkan penggambaran mengenai langkah-langkah terstruktur terhadap penyelesaian dalam suatu permasalahan, serta memberikan kemudahan dalam melakukan proses pengecekan pada bagian sistem yang dibangun. Diagram alir pada flowchart digambarkan dalam sebuah simbol, setiap simbol memberikan gambaran proses tertentu (Whitten, 2007). Terdapat 5 (lima) proses utama yang terjadi pada sistem ini, yaitu proses pembangkitan kunci, proses enkripsi, proses penyisipan pesan (embedding), proses ekstraksi pesan (extraction) dan proses dekripsi. Keseluruhan proses tersebut dapat dilihat pada flowchart gambaran umum sistem pada Gambar 3.10. 61

Gambar 3.10. Gambaran Umum Sistem (Wandani, 2012) Berdasarkan gambar 3.10. untuk gambaran umum sistem, tahap pertama yaitu dengan membangkitkan bilangan prima menggunakan metode Fermat s Little Theorem dan melakukan pencarian bilangan relatif prima menggunakan algoritma Euclidean GCD. Sistem dibangun dengan menggunakan bahasa pemrograman C# dengan IDE SharpDevelop. Selanjutnya pesan teks yang berformat (*.txt, *.doc, *.docx) di enkripsi dan menghasilkan ciphertext yang kemudian akan disembunyikan pada citra berformat *.jpeg dengan teknik steganografi kombinasi metode First Of File dan End Of File yaitu dengan menyisipkan pesan pada baris awal dan akhir dari matriks pixel suatu citra. Proses penyembunyian pesan (embedding) pada cover image menghasilkan stego image yang selanjutnya akan melalui proses extracting untuk mendapatkan pesan yang tersembunyi (ciphertext) dan kemudian akan di dekripsi sehingga mendapatkan plaintext semula. 62

3.2.4.2 Flowchart Pembangkitan Kunci Pembangkitan kunci dilakukan dengan mengacak bilangan dan kemudian dicek apakah bilangan tersebut merupakan bilangan prima dengan Algoritma Fermat s little Theorem. Flowchart pembangkitan kunci dapat dilihat pada Gambar 3.11. Gambar 3.11. Flowchart Alur proses pembangkit kunci Berdasarkan Gambar 3.11. untuk melakukan proses pembangkit kunci hal pertama yang dilakukan adalah mengklik tombol bangkitkan kunci, dimana untuk nilai bilangan prima, p dan q sudah ditentukan sendiri oleh sistem. Setelah selesai proses bangkitkan kunci maka user menyimpan kunci publik dan privat yang nantinya akan digunakan untuk proses enkripsi. Berdasarkan Gambar 3.12. untuk melakukan enkripsi hal yang pertama dilakukan adalah input file (plaintext) dan kunci publik yang telah disimpan, sistem akan menampilkan isi file dan isi kunci publik yang akan digunakan dalam proses enkripsi. Setelah penginputan file dan kunci selesai, proses enkripsi dapat dilakukan dan menghasilkan ciphertext lalu simpan hasil ciphertext untuk proses embedding. 63

3.2.4.3 Flowchart Proses Enkripsi pada Algoritma Rabin Public Key Flowchart proses enkripsi menggunakan algoritma Rabin Public Key dapat dilihat pada Gambar 3.12. Gambar 3.12. Flowchart Enkripsi (Wandani, 2012) Berdasarkan Gambar 3.13. untuk melakukan dekripsi hal yang pertama dilakukan adalah masukkan nilai yp dan yq, input ciphertext dan hitung nilai akar kuadrat nya dan hitung juga nilai R,S,T,U. Ubahlah nilai desimal R,S,T,U ke dalam bentuk biner. Kemudian nilai biner R,S,T,U dibagi menjadi 2 (dua) bagian. Bandingkan kedua bagian tersebut. Jika kedua bagian tersebut menghasilkan bentuk biner yang sama, maka didapatlah hasil dekripsi ciphertext c dengan mengubah bentuk biner salah satu bagian yang telah dibagi menjadi 2(dua) bagian yang sama. 64

3.2.4.4 Flowchart Proses Dekripsi pada Algoritma Rabin Public Key Flowchart proses dekripsi pada algoritma Rabin dapat dilihat pada Gambar 3.13. Mulai Masukkan kunci privat p dan q Masukkan ciphertext yang akan didekripsi Cari nilai Yp dan Yq dengan menggunakan algoritma Extended Euclidean mp = (c^((p+1)/4)) mod p mq = (c^((q+1)/4)) mod q r = (Yp*p*mq + Yq*q*mp) mod n s = (Yp*p*mq - Yq*q*mp) mod n t = (-Yp*p*mq + Yq*q*mp) mod n u = (-Yp*p*mq - Yq*q*mp) mod n R = (k*n)+r S = (k*n)+s T = (k*n)+t U = (k*n)+u Ubah nilai R,S,T,U kedalam bentuk biner Nilai biner R,S,T,U dibagi menjadi 2 bagian. Kedua bagian nilai biner R sama? Tidak Ya Ubah salah satu bagian nilai Kedua bagian nilai Tidak biner R yang telah dibagi 2 (dua) kedalam bentuk desimal biner S sama? Ya Ubah salah satu bagian nilai Kedua bagian nilai Tidak biner S yang telah dibagi 2 (dua) kedalam bentuk desimal biner T sama? Ubah salah satu bagian nilai biner T yang telah dibagi 2 (dua) kedalam bentuk desimal Ya Kedua bagian nilai Tidak biner U sama? Ya Ubah salah satu bagian nilai biner U yang telah dibagi 2 (dua) kedalam bentuk desimal Plaintext Selesai Gambar 3.13. Flowchart Dekripsi Algoritma Rabin Public Key (Wandani, 2012) 3.2.4.5 Flowchart Proses Embedding First Of File dan End Of File 65

Pada proses embedding, hal pertama yang dilakukan adalah input file image, setelah itu masukkan ciphertext hasil enkripsi, selanjutnya proses embedding dilakukan dan menghasilkan stego image, simpan stego image untuk proses ektraksi. Adapun flowchart dari proses dekripsi dapat dilihat pada Gambar 3.14. Mulai Pilih File citra yang akan menjadi media penyisipan pesan Masukkan Pesan yang akan disisip Baca nilai setiap pxel ke citra Proses First Of File dan End-of-File (EOF) Petakan sebagai File citra baru Stego image Simpan Stego image Stego.bmp Selesai Gambar 3.14. Flowchart Proses Embedding Berdasarkan Gambar 3.14. untuk melakukan embedding hal pertama yang dilakukan adalah pilih cover image masukkan ciphertext, proses embedding dapat dilakukan dan menghasilkan stego image lalu simpan hasil stego image untuk proses ektraksi. 66

3.2.4.6 Flowchart Proses Extraction First Of File dan End Of File Proses ektraksi hal pertama yang dilakukan adalah input stego image, setelah itu proses ektraksi dilakukan dan menghasilkan ciphertext, simpan ciphertext untuk proses dekripsi.pengambilan ciphertext dari media file citra dengan menggunakan metode First Of File dan End of File. Adapun flowchart dari proses dekripsi dapat dilihat pada Gambar 3.15. Mulai Inputkan stego image Baca nilai pixel stego image yang terdapat pada baris awal dan terakhir matriks pixel citra. Ambil ciphertext yang terdapat pada stego image, yaitu nilai pixel awal yang terdapat pada baris pertama matriks, dan nilai pixel awal pada baris terakhir matriks. Ciphertext Selesai Gambar 3.15. Flowchart Proses Extraction Berdasarkan gambar 3.15. untuk melakukan proses ektraksi hal pertama yang dilakukan adalah input stego image, baca nilai pixelnya, ambil ciphertext yang terdapat pada stego image setelah itu proses ektraksi dilakukan dan menghasilkan ciphertext, simpan ciphertext untuk proses dekripsi. 3.3. Perancangan Antarmuka (Interface) Perancangan Antarmuka (Interface) merupakan sarana interaksi antara pengguna dan sistem. Hal ini berfungsi untuk memudahkan pengguna dalam melakukan proses sistem. 67

3.3.1. Rancangan Halaman Utama (Home) Halaman Home merupakan halaman yang pertama kali ditampilkan saat sistem dijalankan. Pada halaman Home terdapat beberapa menu untuk mengakses halaman lain. Rancangan halaman Home dapat dilihat pada Gambar 3.16. Gambar 3.16. Rancangan Interface Halaman Home Pada Gambar 3.16. ditunjukkan tampilan rancangan dari halaman Home. Pada halaman ini terdapat menu yang terdiri dari Generate Key, Rabin Public Key, FOF dan EOF, dan Help. Pada halaman Home juga terdapat informasi judul, logo fakultas, nama, NIM dan program studi pembuat sistem. Keterangan dari Gambar 3.14 dapat dilihat pada Tabel 3.6. Tabel 3.6. Interface Halaman Home No Keterangan 1 Menu Home untuk menampilkan halaman utama dari sistem 2 Menu Generate Key untuk pembangkitan kunci yang dibutuhkan dalam proses enkripsi Tabel dan 3.6. dekripsi Interface Halaman Home (lanjutan) 3 Menu Rabin Public Key untuk memiliki 2 submenu yaitu: - Submenu Encryption untuk proses mengubah plaintext menjadi 68

ciphertext - Submenu Decryption untuk proses mengembalikan ciphertext menjadi plaintext 4 Menu FOF dan EOF untuk memiliki 2 submenu yaitu: - Submenu Embedding untuk proses mengubah citra asli menjadi stego image - Submenu Extraction untuk proses mengembalikan stego image menjadi ciphertext 5 Menu Help untuk menampilkan halaman petunjuk penggunaan sistem 6 Label untuk menampilkan judul sistem 7 Label untuk menampilkan nama dan nim pembuat sistem 8 Picturebox untuk menampilkan logo USU 9 Label untuk menampilkan program studi dan fakultas pembuat sistem 3.3.2 Halaman Pembangkit Kunci (Generate Key) Halaman Generate Key merupakan halaman yang tampil saat pengguna memilih submenu Generate Key. Pada halaman ini pengguna dapat membangkitkan kunci yang akan digunakan pada proses enkripsi dan dekripsi. Rancangan halaman Generate Key dapat dilihat pada Gambar 3.17. 69

Gambar 3.17. Rancangan Interface Halaman Generate Key Tabel 3.7. Keterangan Gambar Rancangan Interface Halaman Generate Key No Keterangan 1 Groupbox yang berisi field-field untuk proses pembangkitan kunci 2 Textbox untuk menampilkan nilai p 3 Textbox untuk menampilkan nilai q 4 Textbox untuk menampilkan nilai n 5 Button untuk proses pembangkitan kunci 6 Button untuk menyimpan kunci publik 7 Button untuk menyimpan kunci privat 3.3.3 Halaman Enkripsi (Encryption) Halaman Enkripsi merupakan halaman yang tampil saat pengguna memilih submenu Enkripsi. Pada halaman ini pengguna dapat melakukan proses Enkripsi berkas. Rancangan halaman enkripsi dapat dilihat pada Gambar 3.18. 70

Gambar 3.18. Rancangan Interface Halaman Enkripsi Tabel 3.8. Keterangan Gambar Rancangan Interface Halaman Enkripsi No Keterangan 1 Groupbox yang berisi field-field untuk proses plaintext 2 Groupbox yang berisi field-field untuk proses ciphertext 3 Richtexbox untuk menampilkan hasil nilai dari plaintext 4 Richtexbox untuk menampilkan hasil nilai dari ciphertext 5 Textbox untuk menampilkan direktori file teks 6 Button untuk membuka file teks 7 Textbox untuk menampilkan panjang plaintext 8 Textbox untuk menampilkan kunci publik 9 Button untuk membuka file kunci publik 10 Button untuk melakukan proses enkripsi kunci 11 Textbox untuk menampilkan panjang ciphertext 12 Button untuk menyimpan hasil ciphertext 71

3.3.4 Halaman Penyisipan (Embedding) Halaman Embedding merupakan halaman yang tampil saat pengguna memilih submenu Embedding. Pada halaman ini pengguna dapat melakukan proses penyisipan pesan rahasia ke dalam suatu media dapat dilihat pada Gambar 3.19. Gambar 3.19. Rancangan Interface Halaman Embedding Tabel 3.9. Keterangan Gambar Rancangan Interface Halaman Embedding No Keterangan 1 Picturebox untuk menampilkan citra asli 2 Textbox untuk menampilkan direktori file image 3 Button untuk membuka direktori file image 4 Textbox untuk menampilkan resolusi citra 5 Textbox untuk menampilkan ciphertext 6 Button untuk membuka direktori ciphertext 7 Richtexbox untuk menampilkan isi ciphertext 8 Button untuk melakukan embedding 9 Groupbox yang berisi field-field untuk proses embedding 10 Picturebox untuk menampilkan hasil stego image 11 Textbox untuk menampilkan resolusi citra setelah di embedding 12 Button untuk menyimpan hasil stego image 3.3.5 Halaman Ektraksi (Extraction) 72

Halaman Extraction merupakan proses pengambilan pesan rahasia dari stego image. Adapun rancangan antarmuka dari halaman Extraction dapat dilihat pada Gambar 3.20. Gambar 3.20. Interface Halaman Extraction Tabel 3.10. Keterangan Gambar Rancangan Interface Halaman Extraction No Keterangan 1 Picturebox untuk menampilkan stego image 2 Textbox untuk menampilkan direktori file image 3 Button untuk membuka direktori file image 4 Textbox untuk menampilkan resolusi citra 5 Button untuk melakukan proses ektraksi 6 Groupbox yang berisi field-field untuk hasil ektraksi 7 Richtexbox untuk menampilkan hasil ektraksi 8 Textbox untuk menampilkan resolusi citra setelah di embedding 9 Button untuk menyimpan hasil stego image 73

3.3.6 Halaman Dekripsi (Decryption) Halaman Dekripsi merupakan halaman yang tampil saat pengguna memilih submenu Dekripsi. Pada halaman ini pengguna dapat melakukan proses Dekripsi ciphertext. Rancangan halaman dekripsi dapat dilihat pada Gambar 3.21. Gambar 3.21. Interface Halaman Dekripsi Tabel 3.11. Keterangan Interface Halaman Dekripsi No Keterangan 1 Groupbox yang berisi field-field untuk proses ciphertext 2 Richtexbox untuk menampilkan hasil isi dari ciphertext 3 Textbox untuk menampilkan direktori file teks 4 Button untuk membuka file teks 5 Textbox untuk menampilkan panjang plaintext 6 Textbox untuk menampilkan kunci private p 7 Textbox untuk menampilkan kunci private q 8 Textbox untuk menampilkan direktori file teks 9 Tabel Button 3.11. untuk Keterangan melakukan proses Interface dekripsi Halaman Dekripsi (lanjutan) 10 Groupbox yang berisi field-field untuk proses ciphertext 74

11 Richtexbox untuk menampilkan hasil isi dari plaintext 12 Textbox untuk menampilkan panjang ciphertext 13 Button untuk menyimpan hasil akhir plaintext 3.3.7 Halaman Help Halaman Help merupakan halaman yang ditampilkan oleh sistem jika pengguna sistem memilih menu Help. Adapun rancangan antarmuka dari halaman Help dapat dilihat pada Gambar 3.22. Gambar 3.22. Interface Halaman Help Pada Gambar 3.22. ditunjukkan rancangan antarmuka dari halaman Help. Halaman Help berisi petunjuk penggunaan sistem yang dirancang. Keterangan dari Gambar 3.22. dapat dilihat pada Tabel 3.12. Tabel 3.12. Keterangan Gambar Rancangan Interface Halaman Help No Keterangan 1 Label yang berisi petunjuk penggunaan 2 Label menampilkan prosedur penggunaan sistem 75

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1 Implementasi Sistem Implementasi sistem merupakan proses penerapan dari hasil analisis dan perancangan sistem ke dalam sebuah bahasa pemrograman. Implementasi sistem pada penelitian ini dibangun menggunakan bahasa pemrogaman C#. Proses implementasi yang dirancang pada sistem ini dibagi menjadi 5 menu, yaitu : menu Home, menu Generate Key, menu Rabin Public Key, menu FOF dan EOF dan menu Help. 4.1.1. Menu Home Home merupakan halaman utama, artinya merupakan halaman yang pertama kali muncul ketika sistem dijalankan. Menu Home menampilkan judul sistem, nama pembuat sistem, logo dan informasi universitas. Tampilan halaman Home dapat dilihat pada gambar 4.1. Gambar 4.1. Menu Home 76

4.1.2. Menu Generate Key Pada menu Generate Key, user dapat membangkitkan bilangan prima, p, q dan n. Kunci p dan q tersebut akan disimpan sebagai kunci publik dan hasil n sebagai kunci privat yang akan digunakan untuk proses enkripsi dan dekripsi. Tampilan dari submenu Generate Key dapat dilihat pada Gambar 4.2. Gambar 4.2. Submenu Generate Key 4.1.3. Menu Rabin Public Key Menu Rabin Public Key memilki 2 submenu didalamnya, yaitu Encryption dan Decryption. 4.1.3.1 Submenu Encryption Pada submenu Encryption, dilakukan proses penyandian pesan oleh pengirim pesan. User harus memasukkan pesan asli (plaintext) dan kunci publik yang sudah dihasilkan pada menu Generate Key sehingga akan dihasilkan pesan tersandi (ciphertext). Tampilan dari submenu Encryption dapat dilihat pada Gambar 4.3.

Gambar 4.3. Submenu Encryption 4.1.3.2 Submenu Decryption Submenu Decryption dilakukan proses pendekripsian pesan tersandi oleh penerima pesan. User harus memasukkan pesan tersandi (ciphertext) dan kunci privat yang sudah dihasilkan pada menu Generate Key sehingga akan didapatkan kembali pesan asli(plaintext). Tampilan dari submenu Decryption dapat dilihat pada Gambar 4.4. Gambar 4.4. Submenu Decryption 95

4.1.4. Menu Steganografi First Of File dan End Of File (FOF dan EOF) Menu First Of File dan End Of File (FOF dan EOF) memilki 2 submenu didalamnya, yaitu Embedding dan Extraction. 4.1.4.1 Submenu Embedding Submenu Embedding merupakan proses penyisipan pesan tersandi ke dalam objek berupa citra yang dilakukan oleh pengirim. User akan memilih dan memasukkan citra asli dan ciphertext untuk selanjutnya dilakukan penyisipan sehingga menghasilkan stego image. Stego image yang dihasilkan ini yang akan dikirim ke penerima untuk selanjutnya dilakukan ektraksi dan dekripsi pesan oleh penerima. Tampilan dari submenu Embedding dapat dilihat pada Gambar 4.5. Gambar 4.5. Submenu Embedding 96

4.1.4.2 Submenu Extraction Submenu Extraction merupakan proses ekstraksi pesan dari dalam stego image oleh penerima. Stego image akan menghasilkan pesan tersandi yang sudah disisip ke dalam citra asli sebelumnya. Tampilan dari submenu Extractiont dapat dilihat pada Gambar 4.6. Gambar 4.6. Submenu Extraction 4.1.4.3. Menu Help Pada menu Help menampilkan informasi mengenai langkah-langkah penggunaan sistem ini sehingga memudahkan pengguna sistem. Tampilan dari submenu Help dapat dilihat pada Gambar 4.7. 97

Gambar 4.7. Menu Help 4.2 Pengujian Sistem Pada tahap ini akan dilakukan pengujian keberhasilan sistem dalam menjalankan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. 4.2.1 Pengujian proses generate key Sebelum dilakukan pengujian proses pembangkitan kunci, pengguna harus mengakses halaman menu Generate Key. Pengujian proses pembangkitan kunci dimulai dari dieksekusinya tombol Generate pada halaman menu Generate Key yang akan menghasilkan kunci publik n dan kunci privat p dan q. Berikut langkah-langkah untuk melakukan proses pembangkit kunci. 1. Menekan tombol Generate Key untuk mendapatkan hasil n dari nilai p dan q. Hasil pembangkit kunci dapat dilihat pada Gambar 4.8. 98

Gambar 4.8. Hasil nilai kunci publik dan kunci privat Pembuktian dari pembangkit kunci yang dilakukan oleh sistem seperti terlihat pada Gambar 4.6, dapat diuji dengan perhitungan secara manual. Dapat dilihat hasil dari bilangan pada sebuah sistem, yaitu: 83, 727. Maka lakukan perhitungan untuk menguji apakah bilangan yang diambil sesuai dengan rumus seharusnya. 1. Pengujian Bilangan Prima Menguji bilangan p = 83 dan q = 727, apakah termasuk bilangan prima dengan menggunakan Little Fermat Theorem. a. Tentukan bilangan bulat positif a secara semabarang yang memenuhi syarat 1<a<p. Dalam penelitian ini nilai yang digunakan untuk a = 2 b. Jika hasil perhitungan tidak sama dengan 1, dapat dikatakan p bukan bilangan prima, sebagai berikut: - Untuk p = 83 2 83-1 mod 83 2 82 mod 83 4835703278458516698824704 mod 83 1 99

- Untuk q = 727 2 727-1 mod 727 2 726 mod 727 3,5300174483852718711863860527558e+218 mod 727 1 Karena hasil perhitungan baik p dan q sama dengan 1 sesuai dengan bunyi teori Little Fermat Theorem, maka dapat disimpulkan 83 dan 727 adalah bilangan prima. 2. Tekan tombol Simpan Kunci Publik untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file kunci publik (*.publickey) yang akan digunakan dalam proses enkripsi. Form Save File Dialog dapat dilihat pada Gambar 4.9. Gambar 4.9. Save File Dialog untuk menyimpan kunci publik 3. Tekan tombol Simpan Kunci Privat untuk membuka Save File Dialog dan tentukan direktori untuk menyimpan file kunci privat (*.privatekey) yang akan digunakan dalam proses dekripsi. Form Save File Dialog dapat dilihat pada Gambar 4.10. 100

Gambar 4.10. Save File Dialog untuk menyimpan kunci private 4.2.2. Pengujian Proses Encryption Setelah memilih submenu encryption maka akan dilakukan proses enkripsi. Berikut langkah langkah untuk melakukan proses enkripsi pesan. 1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih file teks (.doc,.docx,.txt) yang akan dienkripsi. Form Open File Dialog dapat dilihat pada Gambar 4.11. Gambar 4.11. Membuka Open File Dialog input file teks. 101

2. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih file yang berisi kunci publik yang akan dienkripsi. Form Open File Dialog Public Key dapat dilihat pada Gambar 4.12. Gambar 4.12. Open File Dialog input Public Key Kemudian sistem akan menampilkan plaintext dan public key tersebut. Tampilan isi plaintext dan public key yang telah terpilih akan tampil pada sistem seperti pada Gambar 4.13. Gambar 4.13. Plaintext dan public key terpilih 102

3. Tekan tombol Encrypt untuk melakukan proses enkripsi dan kemudian menampilkan hasil ciphertext berhasil dienkripsi seperti terlihat dari Gambar 4.14. Gambar 4.14. Hasil ciphertext Untuk menguji hasil perhitungan manual dari proses enkripsi sesuai dengan Gambar 4.14 adalah sebagai berikut : - Ubah nilai plaintext m menjadi nilai biner, kemudian nilai biner plaintext m digabungkan dengan nilai biner plaintext m itu sendiri (redundant information) atau dengan kata lain plaintext digandakan. Penggabungan ini bertujuan untuk dapat menentukan plaintext yang sebenarnya dari keempat hasil dekripsi yang diperoleh. Pembuktian : m = B, Ubah ke dalam ASCII menjadi 66 jadi nilai binernya adalah 1000010. Maka nilai m [m m] = 10000101000010. - Ubah hasil penggandaan nilai biner plaintext menjadi nilai desimalnya. Pembuktian : m [m m] = 10000101000010, nilai desimalnya adalah 8514. Maka nilai m = 8514. - Hitung nilai ciphertext c dengan menggunakan rumus : c = m 2 mod n 103

dengan c adalah ciphertext, n adalah kunci publik, dan m adalah nilai desimal dari hasil penggandaan nilai biner plaintext. Pembuktian : m = 8514 dan n =60341, maka c adalah : c = m 2 mod n = 8514 2 mod 60341 = 72488196 mod 60341 c = 18655 Maka, plaintext = B dienkripsi dengan nilai c = 018655 Jika dibandingkan hasil perhitungan manual dengan hasil dari sistem, terdapat perbedaan nilai. Hal ini dikarenakan pada proses embedding selanjutnya pesan yang disisip ke dalam pixel dipecah menjadi 2 sehingga diperlukan jumlah genap. 2 pixel untuk R, 2 pixel untuk G dan 2 pixel lagi untuk B. Dalam penelitian ini jumlah bit pesan yang harus disisip harus 6 bit. Sehingga jika ditemukan hasil ciphertext dibawah 6 bit dilakukan penambahan bit 0 di sebelah kiri ciphertext. Maka dapat disimpulkan bahwa proses enkripsi dari sistem menghasilkan nilai yang benar hanya saja pada sistem terdapat penambahan bit 0 jika ciphertext yang dihasilkan dibawah 6 bit. 4. Tekan tombol Save untuk menyimpan hasil enkripsi. Form Save File Dialog akan muncul seperti terlihat pada Gambar 4.15. Gambar 4.15. Save File Dialog hasil enkripsi 104

4.2.3. Pengujian proses Embedding Setelah memilih Submenu Embedding maka akan dilakukan proses Embedding citra. Berikut langkah langkah untuk melakukan proses Embedding. 1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih berkas (*jpeg). Kemudian sistem akan menampilkan direktori dari gambar yang terpilih seperti terlihat pada Gambar 4.16. Gambar 4.16. Open File Dialog input citra 2. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih ciphertext. Kemudian sistem akan menampilkan direktori dari berkas yang terpilih seperti terlihat pada Gambar 4.17. Gambar 4.17. Open File Dialog input ciphertext 105

Kemudian sistem akan menampilkan citra dan isi dari ciphertext tersebut. Tampilan citra dan isi ciphertext yang telah terpilih akan tampil pada sistem seperti pada Gambar 4.18. Gambar 4.18. Cover Image dan isi dari ciphertext 3. Tekan tombol Embedding untuk melakukan proses enkripsi dan kemudian akan muncul hasil stego image yang berhasil disispkan seperti terlihat dari Gambar 4.19. Gambar 4.19. Hasil stego image 106

Kemudian untuk image resolution setelah di embed akan menjadi lebih besar dikarenakan pada steganografi FOF dan EOF menambahkan 2 pixel, 1 pixel untuk penyisipan di atas dan 1 lagi untuk di sisipkan dibawah citra. Untuk mengetahuinya hasil penyisipan stego image di setiap pixelnya dapat dilihat pada sistem seperti pada Gambar 4.20. Gambar 4.20. Pixel pada stego image Untuk menguji hasil perhitungan manual dari proses embedding sesuai dengan Gambar 4.21 adalah sebagai berikut : - Pada sebuah citra 3x3 pixel disisipkan adalah huruf B. Kalau di enkripsi menghasilkan ciphertext 018655 Gambar 4.21. RGB Pixel 3 X 3 Terdapat suatu citra asli RGB 3x3 yang memiliki nilai setiap pixel seperti pada Tabel 4.1 Tabel 4.1. Matriks Citra Bewarna 3 x 3 pixel R = 1 R = 0 R = 2 G = 20 G = 19 G = 19 B = 0 B = 0 B = 1 R = 0 R = 0 R = 1 G = 19 G = 18 G = 18 B = 0 B = 0 B = 0 R = 1 R = 0 R = 1 G = 20 G = 18 G = 18 B = 1 B = 0 B = 0 107

Kode biner pesan disisipkan dengan cara menambah baris baru setelah baris terakhir matriks citra. Kemudian kode biner pesan disisipkan pada penambahan baris matriks citra tersebut secara horizontal berurutan dari pixel warna Red, Green, Blue. Sehingga matriks citra setelah disisipi dapat dijelaskan pada Tabel 4.2. Angka bewarna merah adalah pesan yang disisipi pada matriks citra. Tabel 4.2. Matriks Citra yang Disisipikan Ciphertext R = 1 G = 86 B = 55 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 R = 1 G = 20 B = 0 R = 0 G = 19 B = 0 R = 2 G = 19 B = 1 R = 0 G = 19 B = 0 R = 0 G = 18 B = 0 R = 1 G = 18 B = 0 R = 1 G = 20 B = 1 R = 0 G = 18 B = 0 R = 1 G = 18 B = 0 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 Matriks di atas akan dipetakan kembali dalam bentuk citra RGB dan citra ini disebut stego image. 5. Tekan tombol Save untuk menyimpan hasil embedding. Form Save File Dialog akan muncul seperti terlihat pada Gambar 4.22. 108

Gambar 4.22. Save File Dialog hasil embedding 4.2.2. Pengujian Proses Extraction Setelah memilih submenu extraction maka akan dilakukan proses ekstraksi. Berikut langkah langkah untuk melakukan proses ektraksi pesan. 1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih berkas hasil embedding (*jpeg). Kemudian sistem akan menampilkan direktori dari gambar yang terpilih seperti terlihat pada Gambar 4.23. Gambar 4.23. Open File Dialog stego image 109

Kemudian sistem akan menampilkan stego image tersebut. Tampilan citra yang telah terpilih akan tampil pada sistem seperti pada Gambar 4.24. Gambar 4.24. Stego Image yang terpilih 2. Tekan tombol Extraction untuk melakukan proses ektraksi dan kemudian menampilkan Extraction Result sebagai informasi berkas berhasil diektraksi seperti terlihat dari Gambar 4.25. Gambar 4.25. Hasil Ektraksi 110

Untuk menguji hasil perhitungan manual dari proses embedding sesuai dengan Gambar 4.14 adalah sebagai berikut : - Terdapat suatu citra RGB 3x3 yang telah disisipkan ciphertext (stego image), angka bewarna merah adalah pesan yang telah disisipi pada matriks citra. Nilai setiap pixel file citra RGB tersebut dapat dilihat pada Tabel 4.3. Tabel 4.3. Matriks Citra yang Disisipikan Ciphertext R = 1 G = 86 B = 55 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 R = 1 G = 20 B = 0 R = 0 G = 19 B = 0 R = 2 G = 19 B = 1 R = 0 G = 19 B = 0 R = 0 G = 18 B = 0 R = 1 G = 18 B = 0 R = 1 G = 20 B = 1 R = 0 G = 18 B = 0 R = 1 G = 18 B = 0 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 R = 0 G = 0 B = 0 Kemudian dibaca nilai pixel stego image yang terdapat pada baris awal dan terakhir matriks pixel citra seperti pada Tabel 4.4 dan 4.5. Tabel 4.4. Baris Awal Matriks Pixel Citra R=1 R=0 R=0 G=86 G=0 G=0 B=55 B=0 B=0 111

Tabel 4.5. Baris Terakhir Matriks Pixel Citra R=0 R=0 R=0 G=0 G=0 G=0 B=0 B=0 B=0 Untuk proses Extracting, maka dilakukan dengan cara mengambil nilai pixel pada matriks citra dimulai dari pixel pertama pada baris pertama matriks (R-G-B), kemudian menuju pixel pertama pada baris terakhir matriks (R-G-B) selanjutnya berulang seperti ini ke pixel kedua sampai dengan menemukan nilai karakter pesan. Setelah itu didapatkan nilai ciphertext yaitu 18655. 3. Tekan tombol Save untuk menyimpan hasil ektraksi. Form Save File Dialog akan muncul seperti terlihat pada Gambar 4.26. Gambar 4.26. Save File Dialog hasil Ektraksi 112

4.2.3. Pengujian proses Decryption Setelah memilih submenu Decryption maka akan dilakukan proses dekripsi. Berikut langkah langkah untuk melakukan proses dekompresi pesan. 1. Tekan tombol Browse, untuk membuka Open File Dialog dan pilih berkas (*.ciphertext). Kemudian sistem akan menampilkan direktori dari berkas yang terpilih seperti terlihat pada Gambar 4.27. Gambar 4.27. Open File Dialog input file citra 2. Tekan tombol Browse, dan akan muncul Open File Dialog dan pilih berkas teks (*.privatekey). Form Open File Dialog dapat dilihat pada Gambar 4.28. Gambar 4.28. Open File Dialog input kunci private 113

Kemudian sistem akan menampilkan plaintext dan public key tersebut. Tampilan isi plaintext dan public key yang telah terpilih akan tampil pada sistem seperti pada Gambar 4.29. Gambar 4.29. Ciphertext dan private key terpilih 3. Tekan tombol Decrypt untuk melakukan proses dekripsi untuk mengembalikan berkas seperti sebelum dienkripsi dan kemudian menampilkan hasil plaintext berhasil didekripsi seperti terlihat dari Gambar 4.30. Gambar 4.30. Hasil plaintext 114

Untuk menguji hasil perhitungan manual dari proses dekripsi sesuai dengan Gambar 4.14 adalah sebagai berikut : - Tentukan nilai Yp dan Yq yang merupakan pembagi GCD (Greatest Common Divisor) dari p dan q dengan menggunakan Algoritma Extended Euclidean. Karena GCD bilangan prima adalah 1, maka dapat ditulis sebagai berikut. Yp * p + Yq * q = 1 Pembuktian : Gambar 4.31. Hasil yp dan yq Hasil akhir yang diperoleh adalah (-254) * 83 + 29 * 727 = 1, sehingga didapat nilai yp = -254 dan yq = 29. - Hitunglah nilai akar kuadrat dari ciphertext terhadap p dan q dengan rumus: m [ ] mod m [ ] mod dengan m p adalah akar kuadrat dari ciphertext terhadap p dan m q adalah akar kuadrat dari ciphertext terhadap q. Pembuktian : m [ ] mod [ ] mod 115

m mod m [ ] mod [ ] mod mod m Maka, didapatlah mp =48 dan mq = 210 - Hitung nilai r, s, t dan u dengan menggunakan Chinese Remainder Theorem. r = (Yp*p* mq + Yq * q* mp ) mod n s = (Yp*p* mq - Yq * q* mp ) mod n t = ( -Yp*p* mq + Yq * q* mp ) mod n u = ( -Yp*p* mq - Yq * q* mp ) mod n Pembuktian : r = (Yp*p* mq + Yq * q* mp ) mod n = ((-254)*83*210 + 29*727*48) mod 6034 = 24201 s = (Yp*p* mq - Yq * q* mp ) mod n = ((-254)*83*210-29*727*48) mod 6034 = 51827 t = ( -Yp*p* mq + Yq * q* mp ) mod n = (254*83*210 + 29*727*48) mod 6034 = 8514 u = ( -Yp*p* mq - Yq * q* mp ) mod n = (254*83*210-29*727*48) mod 6034 = 36140 116

- Ubahlah nilai desimal R,S,T,U ke dalam bentuk biner. Kemudian nilai biner R,S,T,U dibagi menjadi 2 (dua) bagian. Bandingkan kedua bagian tersebut. Jika kedua bagian tersebut menghasilkan bentuk biner yang sama, maka didapatlah hasil dekripsi ciphertext c dengan mengubah bentuk biner salah satu bagian yang telah dibagi menjadi 2(dua) bagian yang sama. Pembuktian : R = 24201, nilai binernya adalah 101111010001001. Panjang nilai biner yang dihasilkan adalah ganjil, sehingga sudah dapat dipastikan R bukan pesan rahasia yang sebenarnya. S = 51827, nilai binernya adalah 1100101001110011. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 11001010 dan 01110011. Karena tidak menghasilkan bentuk biner yang sama, maka S bukan pesan rahasia yang sebenarnya. T = 8514, nilai binernya adalah 10000101000010. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 1000010 dan 1000010. Karena menghasilkan bentuk biner yang sama, maka T adalah pesan rahasia yang sebenarnya. U = 36140, nilai binernya adalah 1000110100101100. Jika nilai binernya dibagi menjadi 2 (dua) bagian, maka akan menghasilkan nilai biner 10001101 dan 00101100. Karena tidak menghasilkan bentuk biner yang sama, maka U bukan pesan rahasia yang sebenarnya. Maka, didapatlah dekripsi dari ciphertext c=18655 adalah 24201, 51827, 8514, 36140 dengan 8514 menghasilkan bentuk biner yang sama jika dibagi menjadi 2 (dua) bagian, yaitu 1000010 dan 1000010. Dan jika diubah menjadi nilai desimal akan menghasilkan nilai plaintext yang sebenarnya yaitu 66, kalau di ubah kedalam bentuk ASCII yaitu B. 4. Tekan tombol Save untuk menyimpan hasil dekripsi. Form Save File Dialog akan muncul seperti terlihat pada Gambar 4.32. 117

Gambar 4.32. Save File Dialog hasil Dekripsi Kemudian file dekripsi yang dapat di simpan dan isi plaintext nya kembali hanya file.txt dan.doc saja. Apabila menyimpan dalam format.docx, file dapat di dekripsi namun sistem.docx masih belum bisa membaca isi pesan yang telah di dekripsi. Kegagalan proses dekripsi pada sistem seperti pada Gambar 4.33 dan Gambar 4.34. Gambar 4.33. File Dekripsi yang tidak dapat dibuka 118

4.3 Hasil Pengujian Sistem 4.3.1 Pengujian Enkripsi Pesan Pengujian ini dilakukan untuk mengetahui pengaruh panjang plaintext terhadap lama proses enkripsi pesan dengan menggunakan panjang kunci yang sama dalam proses enkripsi dengan berbagai format file yaitu : *.txt, *.doc, *.docx. Tabel 4.6. Pengujian enkripsi dengan variasi panjang plaintext Isi File Teks Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak info Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak informasi rashasia yang dapat disampaikan melalui tulisan. Jika tulisan atau pesan disampaikan secara la Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak informasi rashasia yang dapat disampaikan melalui tulisan. Jika tulisan atau pesan disampaikan secara langsung dari pengirim kepada penerima pada saat itu juga tanpa melalui perantara apapun, maka hal ter Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak informasi rashasia yang dapat disampaikan melalui tulisan. Jika tulisan atau pesan disampaikan secara langsung dari pengirim kepada penerima pada saat itu juga tanpa melalui perantara apapun, maka hal tersebut dapat menjamin keamanan, dan kerahasiaan dari pesan tersebut. Namun, jika tulisan atau pesan h Dalam berkomunikasi ada beberapa bentuk mulai dari menggunakan tulisan maupun lisan. Ada banyak informasi rashasia yang dapat disampaikan melalui tulisan. Jika tulisan atau pesan disampaikan secara langsung dari pengirim kepada penerima pada saat itu juga tanpa melalui perantara apapun, maka hal tersebut dapat menjamin keamanan, dan kerahasiaan Panjang Plaintext 100 200 300 400 500 119

Tabel 4.6. Pengujian enkripsi dengan variasi panjang plaintext (lanjutan) dari pesan tersebut. Namun, jika tulisan atau pesan harus dikirim melalui perantara dan memerlukan waktu dalam proses pengirimannya, maka terdapat kemung Tabel 4.7 Pengujian enkripsi dengan panjang plaintext Panjang Plaintext Waktu(detik) Berbagai Format File *txt *doc *docx 100 0,0482306 0,0488511 0,0764377 200 0,1504988 0,1199863 0,116145 300 0,2794881 0,2575491 0,2612916 400 0,3946549 0,3875296 0,3971815 500 0,5818577 0,5891632 0,5853256 Berdasarkan tabel 4.6. dan 4.7. dapat dilihat dari grafik gambar 4.35 yaitu lama waktu dalam melakukan proses enkripsi pesan dengan 5 contoh panjang plaintext yang berbeda. Proses Enkripsi 0,7 0,6 Waktu(detik) 0,5 0,4 0,3 0,2 0,1 *txt *doc *docx 0 100 200 300 400 500 Panjang Plaintext (Karakter) Gambar 4.34. Perbandingan proses enkripsi 120

4.3.2 Pengujian Embedding Citra Pengujian ini dilakukan untuk mengetahui pengaruh resolusi pixel yang berbeda-beda terhadap lama proses embedding citra dengan menggunakan panjang kunci yang tetap dan ciphertext yang sama dengan format file yang sama yaitu : *.txt. Tabel 4.8. Pengujian embedding dengan resolusi pixel Cover Image Stego Image Panjang Plaintext Waktu(detik) 100 0,08965687 Resolusi Pixel 200 x 133 Resolusi Pixel 200 x 135 100 0,9793056 Resolusi Pixel 300 x 200 Resolusi Pixel 300 x 202 100 5,1619448 Resolusi Pixel 600 x 450 Resolusi Pixel 600 x 452 121

Tabel 4.8. Pengujian embedding dengan resolusi pixel (lanjutan) 100 11,5152577 Resolusi Pixel 900 x 675 Resolusi Pixel 900 x 677 100 12,3379145 Resolusi Pixel 1024 x 765 Resolusi Pixel 1024 x 767 Rata -Rata 6,016816 Berdasarkan tabel 4.8. dapat dilihat dari grafik gambar 4.35. yaitu lama waktu dalam melakukan proses embedding citra dengan berbagai resolusi citra yang berbeda. Proses Embedding 6 Waktu(detik) 5 4 3 2 1 0 200 x 133 300 x 200 600 x 450 Resolusi Pixel Cover Image Gambar 4.35. Perbandingan proses embedding cover image 122

4.3.3 Pengujian Extraction Stego Image Pengujian ini dilakukan untuk mengetahui pengaruh resolusi pixel yang berbeda-beda terhadap lama proses ektraksi stego image. Hasil Stego image menambahkan 2 pixel, 1 pixel untuk pixel yang di atas dan 1 pixel lagi untuk pixel yang di bawah. Tabel 4.9. Pengujian Ektraksi dengan resolusi pixel Stego Image Panjang Ciphertext Extraction Waktu(detik) Dengan Format File.txt 700 0,0364831 Resolusi Pixel 200 x 135 1400 0,0646555 Resolusi Pixel 300 x 202 123

2100 0,0541244 Resolusi Pixel 600 x 452 2800 0,0834731 Resolusi Pixel 900 x 677 3500 0,0424625 Resolusi Pixel 1024 x 765 Rata -Rata 0,05624 124

Berdasarkan tabel 4.9. dapat dilihat dari grafik gambar 4.36 yaitu lama waktu dalam melakukan proses ekstraksi stego image dengan berbagai resolusi citra yang berbeda. Grafik Pengujian Proses Ektraksi 0,07 0,06 Waktu(detik) 0,05 0,04 0,03 0,02 Stego Image 0,01 0 200 x 135 300 x 202 600 x 452 900 x 677 1024 x 767 Resolusi Pixel Gambar 4.36. Grafik perbandingan proses extraction stego image 4.3.4 Pengujian Dekripsi Pesan Pengujian ini dilakukan untuk mengetahui pengaruh panjang Ciphertext terhadap lama proses dekripsi pesan dengan menggunakan panjang kunci yang tetap dalam proses dekripsi dengan berbagai format file yaitu : *.txt, *.doc, *.docx. Berdasarkan hasil pengujian Gambar 4.34. dapat disimpulkan bahwa proses enkripsi akan semakin lama jika plaintext semakin panjang karakternya. Berdasarkan hasil pengujian Gambar 4.35. dapat disimpulkan bahwa lama proses penyisipan akan berbanding lurus dengan ukuran resolusi (pixel). Semakin besar ukuran pixel citra, akan semakin halus garis hitam yang tampak pada stego image tersebut. Berdasarkan hasil pengujian Gambar 4.36. dapat disimpulkan bahwa proses penyisipan lebih lama dibandingkan dengan lama proses ekstraksi. 125

Tabel 4.10. Pengujian Dekripsi dengan variasi panjang ciphertext Panjang Isi Ciphertext Ciphertext 013209 050615 043968 050615 034605 042189 037196 015608 004292 026272 055384 034605 011374 058524 030385 026272 050615 013598 030385 042189 050615 049863 050615 042189 037196 015608 037196 015608 004292 050615 025185 050615 042189 037196 015608 058524 056186 011374 026272 042189 034605 011374 043968 050615 030385 042189 049863 050615 004292 030385 042189 034605 015608 058524 046944 046944 011374 058524 050615 026272 050615 058524 042189 056186 011374 043968 030385 013598 050615 058524 042189 034605 050615 011374 025185 011374 058524 042189 043968 030385 013598 050615 058524 009632 042189 010960 049863 050615 042189 037196 050615 058524 044264 050615 026272 042189 030385 058524 014635 055384 013209 050615 043968 050615 034605 042189 037196 015608 004292 026272 055384 034605 011374 058524 030385 026272 050615 013598 030385 042189 050615 049863 050615 042189 037196 015608 037196 015608 004292 050615 025185 050615 042189 037196 015608 058524 056186 011374 026272 042189 034605 011374 043968 050615 030385 042189 049863 050615 004292 030385 042189 034605 015608 058524 046944 046944 011374 058524 050615 026272 050615 058524 042189 056186 011374 043968 030385 013598 050615 058524 042189 034605 050615 011374 025185 011374 058524 042189 043968 030385 013598 050615 058524 009632 042189 010960 049863 050615 042189 037196 050615 058524 044264 050615 026272 042189 030385 058524 014635 055384 004292 034605 050615 013598 030385 042189 004292 050615 013598 052194 050615 013598 030385 050615 042189 044264 050615 058524 046944 042189 049863 050615 025185 050615 056186 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 034605 015608 043968 050615 043968 011374 030385 042189 056186 011374 043968 030385 013598 050615 058524 009632 042189 011206 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 013598 015608 057059 050615 004292 050615 042189 043968 050615 700 1400 013209 050615 043968 050615 034605 042189 037196 015608 004292 026272 055384 034605 011374 058524 030385 026272 050615 013598 030385 042189 050615 049863 050615 042189 037196 015608 037196 015608 004292 050615 025185 050615 042189 037196 015608 058524 056186 011374 026272 042189 034605 011374 043968 050615 030385 042189 049863 050615 004292 030385 042189 034605 015608 058524 046944 046944 011374 058524 050615 026272 050615 058524 042189 056186 011374 043968 030385 013598 050615 058524 042189 034605 050615 011374 025185 011374 058524 042189 043968 030385 013598 050615 058524 009632 042189 010960 049863 050615 042189 037196 050615 058524 044264 050615 026272 042189 030385 058524 014635 055384 004292 034605 050615 013598 030385 042189 004292 050615 013598 052194 050615 013598 030385 050615 042189 044264 050615 058524 046944 042189 049863 050615 025185 050615 056186 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 034605 015608 043968 050615 043968 011374 030385 042189 056186 011374 043968 030385 013598 050615 058524 009632 042189 011206 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 013598 015608 057059 050615 004292 050615 042189 043968 050615 058524 046944 013598 011374 058524 046944 042189 049863 050615 004292 030385 042189 025185 015608 058524 046944 030385 004292 030385 034605 042189 026272 015608 025185 050615 049863 050615 042189 025185 015608 058524 015608 004292 030385 034605 050615 042189 025185 050615 049863 050615 042189 013598 050615 050615 056186 042189 030385 056186 011374 042189 041858 011374 046944 050615 042189 056186 050615 058524 025185 050615 042189 034605 015608 043968 050615 043968 011374 030385 042189 025185 015608 004292 050615 058524 056186 050615 004292 050615 042189 050615 025185 050615 025185 011374 058524 033565 042189 034605 050615 026272 050615 042189 052194 050615 043968 042189 056186 015608 004292 2100 013209 050615 043968 050615 034605 042189 037196 015608 004292 026272 055384 034605 011374 058524 030385 026272 050615 013598 030385 042189 050615 049863 050615 042189 037196 015608 037196 015608 004292 050615 025185 050615 042189 037196 015608 058524 056186 011374 026272 042189 034605 011374 043968 050615 030385 042189 049863 050615 004292 030385 042189 034605 015608 058524 046944 046944 011374 058524 050615 026272 050615 058524 042189 056186 011374 043968 030385 013598 050615 058524 042189 034605 050615 011374 025185 011374 058524 042189 043968 030385 013598 050615 058524 009632 042189 010960 049863 050615 042189 037196 050615 058524 044264 050615 026272 042189 030385 058524 014635 055384 004292 034605 050615 013598 030385 042189 004292 050615 013598 052194 050615 013598 030385 050615 042189 044264 050615 058524 046944 042189 049863 050615 025185 050615 056186 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 034605 015608 043968 050615 043968 011374 030385 042189 056186 011374 043968 030385 013598 050615 058524 009632 042189 011206 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 013598 015608 057059 050615 2800 126

Tabel 4.10. Pengujian Dekripsi dengan variasi panjang ciphertext (lanjutan) 004292 050615 042189 043968 050615 058524 046944 013598 011374 058524 046944 042189 049863 050615 004292 030385 042189 025185 015608 058524 046944 030385 004292 030385 034605 042189 026272 015608 025185 050615 049863 050615 042189 025185 015608 058524 015608 004292 030385 034605 050615 042189 025185 050615 049863 050615 042189 013598 050615 050615 056186 042189 030385 056186 011374 042189 041858 011374 046944 050615 042189 056186 050615 058524 025185 050615 042189 034605 015608 043968 050615 043968 011374 030385 042189 025185 015608 004292 050615 058524 056186 050615 004292 050615 042189 050615 025185 050615 025185 011374 058524 033565 042189 034605 050615 026272 050615 042189 052194 050615 043968 042189 056186 015608 004292 013598 015608 037196 011374 056186 042189 049863 050615 025185 050615 056186 042189 034605 015608 058524 041858 050615 034605 030385 058524 042189 026272 015608 050615 034605 050615 058524 050615 058524 033565 042189 049863 050615 058524 042189 026272 015608 004292 050615 052194 050615 013598 030385 050615 050615 058524 042189 049863 050615 004292 030385 042189 025185 015608 013598 050615 058524 042189 056186 015608 004292 013598 015608 037196 011374 056186 009632 042189 051987 050615 034605 011374 058524 033565 042189 041858 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 052194 013209 050615 043968 050615 034605 042189 037196 015608 004292 026272 055384 034605 011374 058524 030385 026272 050615 013598 030385 042189 050615 049863 050615 042189 037196 015608 037196 015608 004292 050615 025185 050615 042189 037196 015608 058524 056186 011374 026272 042189 034605 011374 043968 050615 030385 042189 049863 050615 004292 030385 042189 034605 015608 058524 046944 046944 011374 058524 050615 026272 050615 058524 042189 056186 011374 043968 030385 013598 050615 058524 042189 034605 050615 011374 025185 011374 058524 042189 043968 030385 013598 050615 058524 009632 042189 010960 049863 050615 042189 037196 050615 058524 044264 050615 026272 042189 030385 058524 014635 055384 004292 034605 050615 013598 030385 042189 004292 050615 013598 052194 050615 013598 030385 050615 042189 044264 050615 058524 046944 042189 049863 050615 025185 050615 056186 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 034605 015608 043968 050615 043968 011374 030385 042189 056186 011374 043968 030385 013598 050615 058524 009632 042189 011206 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 049863 030385 013598 050615 034605 025185 050615 030385 026272 050615 058524 042189 013598 015608 057059 050615 004292 050615 042189 043968 050615 058524 046944 013598 011374 058524 046944 042189 049863 050615 004292 030385 042189 025185 015608 058524 046944 030385 004292 030385 034605 042189 026272 015608 025185 050615 049863 050615 042189 025185 015608 058524 015608 004292 030385 034605 050615 042189 025185 050615 049863 050615 042189 013598 050615 050615 056186 042189 030385 056186 011374 042189 041858 011374 046944 050615 042189 056186 050615 058524 025185 050615 042189 034605 015608 043968 050615 043968 011374 030385 042189 025185 015608 004292 050615 058524 056186 050615 004292 050615 042189 050615 025185 050615 025185 011374 058524 033565 042189 034605 050615 026272 050615 042189 052194 050615 043968 042189 056186 015608 004292 013598 015608 037196 011374 056186 042189 049863 050615 025185 050615 056186 042189 034605 015608 058524 041858 050615 034605 030385 058524 042189 026272 015608 050615 034605 050615 058524 050615 058524 033565 042189 049863 050615 058524 042189 026272 015608 004292 050615 052194 050615 013598 030385 050615 050615 058524 042189 049863 050615 004292 030385 042189 025185 015608 013598 050615 058524 042189 056186 015608 004292 013598 015608 037196 011374 056186 009632 042189 051987 050615 034605 011374 058524 033565 042189 041858 030385 026272 050615 042189 056186 011374 043968 030385 013598 050615 058524 042189 050615 056186 050615 011374 042189 025185 015608 013598 050615 058524 042189 052194 050615 004292 011374 013598 042189 049863 030385 026272 030385 004292 030385 034605 042189 034605 015608 043968 050615 043968 011374 030385 042189 025185 015608 004292 050615 058524 056186 050615 004292 050615 042189 049863 050615 058524 042189 034605 015608 034605 015608 004292 043968 011374 026272 050615 058524 042189 021596 050615 026272 056186 011374 042189 049863 050615 043968 050615 034605 042189 025185 004292 055384 013598 015608 013598 042189 025185 015608 058524 046944 030385 004292 030385 034605 050615 058524 058524 044264 050615 033565 042189 034605 050615 026272 050615 042189 056186 015608 004292 049863 050615 025185 050615 056186 042189 026272 015608 034605 011374 058524 046944 3500 Berdasarkan tabel 4.10. dapat dilihat dari grafik gambar 4.37. yaitu lama waktu dalam melakukan proses dekripsi pesan dengan 5 contoh panjang ciphertext yang berbeda. 127

Grafik Pengujian Proses Dekripsi 0,3 0,25 Waktu(detik) 0,2 0,15 0,1 0,05 *txt *doc *docx 0 700 1400 2100 2800 3500 Panjang Ciphertext (Karakter) Gambar 4.37. Grafik perbandingan proses dekripsi pesan Berdasarkan hasil pengujian Gambar 4.37. dapat disimpulkan bahwa proses dekripsi akan semakin lama jika ciphertext semakin panjang (berbanding lurus dengan lama proses enkripsi). Selain itu, proses dekripsi juga lebih lama dibandingkan dengan proses enkripsi pada pengujian tersebut. Lalu, proses enkripsi relatif lebih cepat dibandingkan dengan proses dekripsi pada algoritma kriptografi kunci publik Rabin dan untuk pengujian embedding pada steganografi First Of File dan End Of File memerlukan waktu proses embedding cover image rata-rata 6,016816 detik dan proses extraction stego image rata-rata 0,05624 detik. Ukuran pixel citra yang digunakan mempengaruhi hasil stego image. Semakin besar ukuran pixel citra, akan semakin halus garis hitam yang tampak pada stego image tersebut. 128

BAB 5 KESIMPULAN DAN SARAN 5.1. Kesimpulan Setelah melakukan studi literatur, analisis, perancangan implementasi dan pengujian sistem untuk pengamanan file teks menggunakan algoritma kriptografi kunci publik Rabin dan algoritma steganografi First Of File dan End of File maka diperoleh kesimpulan sebagai berikut: 1. Proses Embedding dalam metode First Of File dan End Of File dilakukan dengan cara menyisipkan baris matriks baru pada matriks pixel citra secara horizontal dan berseling dari baris pertama dan baris akhir. Sehingga menghasilkan seperti garis hitam pada bagian atas dan bawah citra jpeg. 2. Pengamanan file teks dengan menggunakan kunci publik rabin dan algoritma steganografi First Of File dan End Of File berhasil dilakukan untuk proses pembangkitan kunci, enkripsi, dekripsi dan ektraksi, meskipun pada proses ektraksi citra asli tidak dapat dikembalikan, hanya plaintext yang dapat diekstraksi. 3. Dekripsi dilakukan dengan mengubah hasil ciphertext menjadi biner dan apabila dibagi menjadi dua bentuk binernya sama, maka akan menghasilkan plaintext yang sebenarnya, namun pada saat menyimpan hasil dekripsi dengan format (*.txt, *.doc, *.docx) hasil file.docx tidak dapat di buka hanya *.txt, dan *.doc saja yang bisa di buka isi pesannya. 4. Pada sistem ini, file rahasia akan dienkripsi, kemudian hasil enkripsi yang berupa ciphertext akan disembunyikan ke dalam suatu file gambar berformat jpeg sehingga tidak akan muncul kecurigaan pihak lain dan keamanan dan kerahasiaan pesan terjaga. 5. Panjang plaintext yang digunakan berpengaruh terhadap lamanya waktu proses enkripsi dan dekripsi. Semakin panjang isi plaintext nya, akan semakin lama proses enkripsi dan dekripsi pesan. 6. Proses embedding pada steganografi First Of File dan End Of File memerlukan waktu proses embedding cover image rata-rata 6,016816 detik dan proses extraction stego image rata-rata 0,05624 detik. 129

7. Ukuran pixel citra yang digunakan berpengaruh terhadap lamanya waktu proses embedding dan extracting. Semakin besar ukuran pixel citra, maka akan semakin lama proses penyisipan dan ekstraksinya. 8. Ukuran pixel citra yang digunakan mempengaruhi hasil stego image. Semakin besar ukuran pixel citra, akan semakin halus garis hitam yang tampak pada stego image tersebut. 9. Proses enkripsi relatif lebih cepat dibandingkan dengan proses dekripsi pada algoritma kriptografi kunci publik Rabin dan proses ekstraksi gambar relatif lebih cepat dibandingkan dengan proses penyisipan pada steganografi First Of File dan End Of File. 5.2 Saran Adapun saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut: 1. Algoritma kriptografi dan teknik steganografi yang digunakan pada sistem ini dapat dikembangkan dengan algoritma kriptografi dan teknik steganografi yang lebih baik untuk meningkatkan keamanan data. 2. Sistem ini dapat dikembangkan dengan menambah pilihan file data yang akan di enkripsi seperti data gambar, suara dan video. 3. Untuk penelitian selanjutnya, sebaiknya menggunakan teknik steganografi yang tidak menimbulkan penambahan garis-garis pada bagian atas dan bawah gambar, seperti mengkombinasikan metode End of File (EOF) dan Least Significant Bit (LSB). 4. Perlunya perbaikan pada proses ekstraksi agar dapat mengembalikan stego image ke citra asli. 5. Pada proses dekripsi perlunya perbaikan untuk membalikkan isi pesan dan dapat dibaca isi file.docx, agar 3 file dengan format (*.txt, *.doc, *.docx) dapat di dekripsi dengan baik. 70

DAFTAR PUSTAKA Aditya, Y., Pratama, A. & Nurlifa, A. 2010.Studi Pustaka Untuk Steganografi Dengan Beberapa Metode. Universitas Islam Indonesia: Vol.1 Ariyus, Dony, 2008, Pengantar Ilmu Kriptografi Teori,Analisis, dan Implementasi. Yogyakarta : C.V. Andi Offset, STMIK AMIKOM Yogyakarta. Elia, M., Piva, M., & Schipani, D. (2011). The Rabin cryptosystem revisited. arxiv preprint arxiv:1108.5935. Galbraith, S. D. 2012. Mathematics of Public Key Cryptography. Cambridge University Press: Cambridge. Hardiyana, S, N. 2014. Implementasi Algoritma Kriptografi Massey Omura dengan Teknik Steganografi Kombinasi Endf Of File (EOF) dan First Of File(FOF) Untuk Keamanan Data. Skripsi.. Harahap, A., A. 2014. Implementasi Pengamanan Data Menggunakan Steganografi Pemetaan Titik Hitam dengan Teknik Pencarian Berurutan dan Rabin Cryptosystem. Skripsi.. Kipper, G. 2004. Investigator's Guide to Steganography. AUERBACH PUBLICATIONS A CRC Press Company: Boca Raton, Florida. Kromodimoeljo, S. 2010. Teori dan Aplikasi Kriptografi. SPK IT Consulting: Jakarta. Kurniawan, Y. 2004. Kriptografi Keamanan Internet dan Jaringan Komunikasi. Bandung: Informatika. Mollin, R.A. 2007. An Introduction to Cryptography 2nd Ed. Taylor & Francis Group, LLC. United State of America. Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika.. Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan dan Implementasinya dalam Bahasa Java. Andi: Yogyakarta. Sutoyo,T., Mulyanto,Edy, dkk, 2009, Teori Pengolahan Citra Digital. Yogyakarta: C.V.Andi Offset, STMIK AMIKOM Yogyakarta Vijayakumar. Soniya, 2011, Image Steganography Based On Polynomial Functions, Journal of Global Research in Computer Science, Volume 2, No. 3, March. 71

Wandany, H. 2012. Implementasi sistem keamanan data dengan menggunakan teknik steganografi end of file (EOF) dan Rabin public key cryptosystem. Skripsi.. Whitten, J.L., Bentley, L.D. 2007. System Analysis and Design Methods Seventh Edition. New York: McGraw-Hill.

LISTING PROGRAM Form1.cs using System; using System.Drawing; using System.Windows.Forms; using System.Numerics; using System.IO; namespace Pengamanan_File_Text /// <summary> /// Description of Form1. /// </summary> public partial class GenerateKey : Form Random r = new Random(); int p,q,n; public GenerateKey() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void TableLayoutPanel1Paint(object sender, PaintEventArgs e) void GroupBox2Enter(object sender, EventArgs e) void Label4Click(object sender, EventArgs e) void Button4Click(object sender, EventArgs e)

void HomeToolStripMenuItemClick(object sender, EventArgs e) MainForm frmchild = new MainForm(); frmchild.show(); this.hide(); void GenerateKeyToolStripMenuItemClick(object sender, EventArgs e) GenerateKey frmchild = new GenerateKey(); frmchild.show(); this.hide(); void deccryptiontoolstripmenuitemclick(object sender, EventArgs e)//enkripsi decryption frmchild = new decryption(); frmchild.show(); this.hide(); void DecryptionToolStripMenuItemClick(object sender, EventArgs e)//enkripsi encryption frmchild = new encryption(); frmchild.show(); this.hide(); void HelpToolStripMenuItemClick(object sender, EventArgs e) help frmchild = new help(); frmchild.show(); this.hide(); public int PseudoPrime(int n)//fermat BigInteger modularexponentiation = BigInteger.ModPow(2,n-1, n); if (modularexponentiation == 1) return n; else return PseudoPrime(r.Next(1,99));

void Button1Click(object sender, EventArgs e) cari : p = PseudoPrime(r.Next(1,999)); q = PseudoPrime(r.Next(1,999)); n = p*q; if (p!= q && q % 4 == 3 && p % 4 == 3 && n > 32896 && n < 1000000) textbox1.text = p.tostring(); textbox2.text = q.tostring(); textbox3.text = n.tostring(); else goto cari; private void button4_click(object sender, EventArgs e) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "key Files( *.publickey) *.publickey"; simpan.filename = "*.publickey"; if (simpan.showdialog() == DialogResult.OK) string filename = simpan.filename.substring(0, simpan.filename.length - 9) + "publickey"; FileStream fstream = new FileStream(filename, FileMode.Create); StreamWriter sw = new StreamWriter(fstream); SeekOrigin seekorigin = new SeekOrigin(); sw.basestream.seek(0, seekorigin); sw.writeline(textbox3.text); sw.flush(); sw.close(); MessageBox.Show("kunci berhasil disimpan"); private void button3_click(object sender, EventArgs e) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "key Files( *.privatekey) *.privatekey"; simpan.filename = "*.privatekey"; if (simpan.showdialog() == DialogResult.OK)

string filename = simpan.filename.substring(0, simpan.filename.length - 10) + "privatekey"; FileStream fstream = new FileStream(filename, FileMode.Create); StreamWriter sw = new StreamWriter(fstream); SeekOrigin seekorigin = new SeekOrigin(); sw.basestream.seek(0, seekorigin); sw.writeline(textbox1.text); sw.writeline(textbox2.text); sw.flush(); sw.close(); MessageBox.Show("kunci berhasil disimpan"); encryption.cs using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; using System.IO; using System.Diagnostics; namespace Pengamanan_File_Text /// <summary> /// Description of encryption. /// </summary> public partial class encryption : Form public string pilih; public encryption() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void GroupBox1Enter(object sender, EventArgs e)

void RSAPublicKeyToolStripMenuItemClick(object sender, EventArgs e) void HomeToolStripMenuItemClick(object sender, EventArgs e) MainForm frmchild = new MainForm(); frmchild.show(); this.hide(); void GenerateKeyToolStripMenuItemClick(object sender, EventArgs e) GenerateKey frmchild = new GenerateKey(); frmchild.show(); this.hide(); void EncryptionToolStripMenuItemClick(object sender, EventArgs e) encryption frmchild = new encryption(); frmchild.show(); this.hide(); void DecryptionToolStripMenuItemClick(object sender, EventArgs e) decryption frmchild = new decryption(); frmchild.show(); this.hide(); void EmbeddingToolStripMenuItemClick(object sender, EventArgs e) Embedding frmchild = new Embedding(); frmchild.show(); this.hide(); void ExtractionToolStripMenuItemClick(object sender, EventArgs e) Extraction frmchild = new Extraction(); frmchild.show(); this.hide(); private void Button1Click(object sender, EventArgs e)

richtextbox1.text=null; try OpenFileDialog openfiledialogencryp = new OpenFileDialog(); openfiledialogencryp.initialdirectory= @"C:\Users\Morigia\Documents"; openfiledialogencryp.title="browse File"; openfiledialogencryp.checkfileexists=true; openfiledialogencryp.checkpathexists=true; openfiledialogencryp.defaultext="txt"; openfiledialogencryp.filter="text Files (*.txt) *.txt text file (*.docx) *.docx text file (*.doc) *.doc"; openfiledialogencryp.filterindex=2; openfiledialogencryp.restoredirectory=true; openfiledialogencryp.showreadonly=true; if (openfiledialogencryp.showdialog() == DialogResult.OK) textbox1.text= openfiledialogencryp.filename; pilih= openfiledialogencryp.filename.substring(openfiledialogencryp.filename.length-3,3); if (pilih=="ocx" pilih=="doc") textbox1.text= Path.GetFullPath(openFileDialogEncryp.FileName); string doc = openfiledialogencryp.filename.substring(0,openfiledialogencryp.filename.length); Microsoft.Office.Interop.Word.Application docword = new Microsoft.Office.Interop.Word.ApplicationClass(); object misval = System.Reflection.Missing.Value; object path= doc; object Readonly = false; Microsoft.Office.Interop.Word.Document word = docword.documents.open(ref path, ref misval, ref Readonly,ref misval, ref misval, ref m isval, ref misval, ref misval, ref misval,ref misval, ref misval, ref misval,ref misval, ref m isval, ref misval, ref misval); word.activewindow.selection.wholestory(); word.activewindow.selection.copy(); IDataObject data = Clipboard.GetDataObject(); richtextbox1.text=data.getdata(dataformats.text).tostring(); word.close(ref misval, ref misval, ref misval); if (pilih=="txt") string s = File.ReadAllText(openFileDialogEncryp.FileName);

richtextbox1.text=s; catch (Exception ex) MessageBox.Show(ex.ToString()); textbox3.text = richtextbox1.text.length.tostring(); void HelpToolStripMenuItemClick(object sender, EventArgs e) help frmchild = new help(); frmchild.show(); this.hide(); void Button2Click(object sender, EventArgs e) Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); string plainteks = richtextbox1.text; int n = Convert.ToInt32(textBox4.Text); int temp; string temps; for (int i = 0; i < plainteks.length; i++) temp = rabin.encrypt(plainteks[i],n); temps = temp.tostring(); while (temps.length!= 6) temps = "0" + temps; richtextbox2.text += temps + " "; textbox6.text = richtextbox2.text.length.tostring(); stopwatch.stop(); MessageBox.Show("Waktu = " + ((Double)(stopwatch.Elapsed.TotalMilliseconds / 1000)).ToString() + " detik", "Encryption", MessageBoxButtons.OK); private void button4_click(object sender, EventArgs e) string tipe; OpenFileDialog dialog = new OpenFileDialog();

dialog.filter = "Public Key Files( *.publickey) *.publickey"; dialog.title = "Open File : "; dialog.restoredirectory = true; if (dialog.showdialog() == DialogResult.OK) tipe = dialog.filename.substring(dialog.filename.length - 9, 9); if (tipe == "publickey") string[] lines = File.ReadAllLines(dialog.FileName); textbox4.text = lines[0]; private void button3_click(object sender, EventArgs e) SaveFileDialog simpann = new SaveFileDialog(); simpann.filter = "Text Files( *.CipherText) *.CipherText"; simpann.filename = "*.CipherText"; if (simpann.showdialog() == DialogResult.OK) string filename = simpann.filename.substring(0, simpann.filename.length - 10) + "CipherText"; FileStream fstreamm = new FileStream(filename, FileMode.Create); StreamWriter sww = new StreamWriter(fstreamm); SeekOrigin seekorigin = new SeekOrigin(); sww.basestream.seek(0, seekorigin); sww.writeline(richtextbox2.text); sww.flush(); sww.close(); MessageBox.Show("Cipher Text berhasil disimpan"); void TextBox6TextChanged(object sender, EventArgs e) embedding.cs using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms;

using System.IO; namespace Pengamanan_File_Text /// <summary> /// Description of Embedding. /// </summary> public partial class Embedding : Form public string pilih; public Embedding() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void PictureBox2Click(object sender, EventArgs e) void HomeToolStripMenuItemClick(object sender, EventArgs e) MainForm frmchild = new MainForm(); frmchild.show(); this.hide(); void GenerateKeyToolStripMenuItemClick(object sender, EventArgs e) GenerateKey frmchild = new GenerateKey(); frmchild.show(); this.hide(); void EncryptionToolStripMenuItemClick(object sender, EventArgs e) encryption frmchild = new encryption(); frmchild.show(); this.hide();

void DecryptionToolStripMenuItemClick(object sender, EventArgs e) decryption frmchild = new decryption(); frmchild.show(); this.hide(); void EmbeddingToolStripMenuItemClick(object sender, EventArgs e) Embedding frmchild = new Embedding(); frmchild.show(); this.hide(); void ExtractionToolStripMenuItemClick(object sender, EventArgs e) Extraction frmchild = new Extraction(); frmchild.show(); this.hide(); void HelpToolStripMenuItemClick(object sender, EventArgs e) help frmchild = new help(); frmchild.show(); this.hide(); void Button2Click(object sender, EventArgs e) string tipe; OpenFileDialog dialog = new OpenFileDialog(); dialog.filter = "CipherText Files( *.CipherText) *.CipherText"; dialog.title = "Open File : "; dialog.restoredirectory = true; if (dialog.showdialog() == DialogResult.OK) tipe = dialog.filename.substring(dialog.filename.length - 10, 10); if (tipe == "CipherText") string[] lines = File.ReadAllLines(dialog.FileName); richtextbox1.text = lines[0];

void Button1Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); // membuat obejek OpenFileDialog dengan nama ofd ofd.initialdirectory = @"D:\"; // menentukan direktori awal saat browse file ofd.title = "Browse Image File"; //set title pada window browse file ofd.checkfileexists = true; // set pengecekan file harus ada atau valid ofd.defaultext = "jpeg"; // set tipe file default ofd.filter = "image files *.jpg;*.png"; // filter untuk menentukan file apa saja yang boleh dipilih ofd.filterindex = 0; // menentukan filter index, index dimulai dari nol ofd.restoredirectory = true; // menentukan nilai restorasi direktori ofd.readonlychecked = true; // set nilai bahwa file hanya akan dibaca atau read ofd.showreadonly = true; // set nilai untuk menampilkan file if (ofd.showdialog() == DialogResult.OK) // jika sudah, tampilkan gambar dalam picturebox dengan mode Stretch(disesuaikan dengan picturebox) picturebox1.image = new Bitmap(ofd.FileName); picturebox1.sizemode = PictureBoxSizeMode.StretchImage; textbox1.text = ofd.filename; textbox4.text = picturebox1.image.width.tostring() + " x " + picturebox1.image.height.tostring(); void Button3Click(object sender, EventArgs e) Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); string[] cipher; cipher = richtextbox1.text.split(' '); Bitmap hasil = eoflof.embed( (Bitmap)pictureBox1.Image, cipher ); picturebox2.image = hasil; textbox5.text = picturebox2.image.width.tostring() + " x " + picturebox2.image.height.tostring(); stopwatch.stop(); MessageBox.Show("Waktu = " + ((Double)(stopwatch.Elapsed.TotalMilliseconds / 1000)).ToString() + " detik", "Embedding", MessageBoxButtons.OK); void Button4Click(object sender, EventArgs e)

mp); SaveFileDialog save = new SaveFileDialog(); save.filter = "Image Files(*.jpeg) *.jpeg"; if (save.showdialog() == DialogResult.OK) picturebox2.image.save(save.filename, System.Drawing.Imaging.ImageFormat.B MessageBox.Show("Gambar tersimpan"); extraction.cs using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; using System.IO; namespace Pengamanan_File_Text /// <summary> /// Description of Extraction. /// </summary> public partial class Extraction : Form public Extraction() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // void HomeToolStripMenuItemClick(object sender, EventArgs e) MainForm frmchild = new MainForm(); frmchild.show(); this.hide(); void GenerateKeyToolStripMenuItemClick(object sender, EventArgs e)

GenerateKey frmchild = new GenerateKey(); frmchild.show(); this.hide(); void EncryptionToolStripMenuItemClick(object sender, EventArgs e) encryption frmchild = new encryption(); frmchild.show(); this.hide(); void DecryptionToolStripMenuItemClick(object sender, EventArgs e) decryption frmchild = new decryption(); frmchild.show(); this.hide(); void EmbeddingToolStripMenuItemClick(object sender, EventArgs e) Embedding frmchild = new Embedding(); frmchild.show(); this.hide(); void ExtractionToolStripMenuItemClick(object sender, EventArgs e) Extraction frmchild = new Extraction(); frmchild.show(); this.hide(); void MenuStrip1ItemClicked(object sender, ToolStripItemClickedEventArgs e) void HelpToolStripMenuItemClick(object sender, EventArgs e) help frmchild = new help(); frmchild.show(); this.hide(); void Button1Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); // membuat obejek OpenFileDialog

dengan nama ofd ofd.initialdirectory = @"D:\"; // menentukan direktori awal saat browse file ofd.title = "Browse Image File"; //set title pada window browse file ofd.checkfileexists = true; // set pengecekan file harus ada atau valid ofd.defaultext = "jpeg"; // set tipe file default ofd.filter = "image files *.jpeg;*.png"; // filter untuk menentukan file apa saja yang boleh dipilih ofd.filterindex = 0; // menentukan filter index, index dimulai dari nol ofd.restoredirectory = true; // menentukan nilai restorasi direktori ofd.readonlychecked = true; // set nilai bahwa file hanya akan dibaca atau read ofd.showreadonly = true; // set nilai untuk menampilkan file if (ofd.showdialog() == DialogResult.OK) // jika sudah, tampilkan gambar dalam picturebox dengan mode Stretch(disesuaikan dengan picturebox) picturebox1.image = new Bitmap(ofd.FileName); picturebox1.sizemode = PictureBoxSizeMode.StretchImage; textbox1.text = ofd.filename; textbox4.text = picturebox1.image.width.tostring() + " x " + picturebox1.image.height.tostring(); void Button3Click(object sender, EventArgs e) Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); string pesan; pesan = eoflof.extract((bitmap)picturebox1.image); textbox3.text = pesan.length.tostring(); richtextbox1.text = pesan; stopwatch.stop(); MessageBox.Show("Waktu = " + ((Double)(stopwatch.Elapsed.TotalMilliseconds / 1000)).ToString() + " detik", "Extraction", MessageBoxButtons.OK); private void button2_click(object sender, EventArgs e) SaveFileDialog simpann = new SaveFileDialog(); simpann.filter = "Text Files( *.CipherText) *.CipherText"; simpann.filename = "*.CipherText"; if (simpann.showdialog() == DialogResult.OK) string filename = simpann.filename.substring(0, simpann.filename.length - 10) + "CipherText"; FileStream fstreamm = new FileStream(filename, FileMode.Create);

StreamWriter sww = new StreamWriter(fstreamm); SeekOrigin seekorigin = new SeekOrigin(); sww.basestream.seek(0, seekorigin); sww.writeline(richtextbox1.text); sww.flush(); sww.close(); MessageBox.Show("Cipher Text berhasil disimpan"); void TextBox3TextChanged(object sender, EventArgs e) decryption.cs using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; using Microsoft.Office.Interop.Word; using System.IO; namespace Pengamanan_File_Text /// <summary> /// Description of decryption. /// </summary> public partial class decryption : Form ApplicationClass app; Document doc; public decryption() // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. //

void HomeToolStripMenuItemClick(object sender, EventArgs e) MainForm frmchild = new MainForm(); frmchild.show(); this.hide(); void GenerateKeyToolStripMenuItemClick(object sender, EventArgs e) GenerateKey frmchild = new GenerateKey(); frmchild.show(); this.hide(); void EncryptionToolStripMenuItemClick(object sender, EventArgs e) encryption frmchild = new encryption(); frmchild.show(); this.hide(); void DecryptionToolStripMenuItemClick(object sender, EventArgs e) decryption frmchild = new decryption(); frmchild.show(); this.hide(); void EmbeddingToolStripMenuItemClick(object sender, EventArgs e) Embedding frmchild = new Embedding(); frmchild.show(); this.hide(); void ExtractionToolStripMenuItemClick(object sender, EventArgs e) Extraction frmchild = new Extraction(); frmchild.show(); this.hide();

void HelpToolStripMenuItemClick(object sender, EventArgs e) help frmchild = new help(); frmchild.show(); this.hide(); string pilih,pilih2; void Button1Click(object sender, EventArgs e) richtextbox1.text=null; try OpenFileDialog openfiledialogencryp = new OpenFileDialog(); openfiledialogencryp.initialdirectory= @"C:\Users\Morigia\Documents"; openfiledialogencryp.title="browse File"; openfiledialogencryp.checkfileexists=true; openfiledialogencryp.checkpathexists=true; openfiledialogencryp.defaultext="ciphertext"; openfiledialogencryp.filter="ciphertext Files( *.CipherText) *.CipherText"; openfiledialogencryp.filterindex=2; openfiledialogencryp.restoredirectory=true; openfiledialogencryp.showreadonly=true; if (openfiledialogencryp.showdialog() == DialogResult.OK) textbox1.text= openfiledialogencryp.filename; pilih= openfiledialogencryp.filename.substring(openfiledialogencryp.filename.length-3,3); pilih2= openfiledialogencryp.filename.substring(openfiledialogencryp.filename.length- 10,10); if (pilih=="ocx") textbox1.text= Path.GetFullPath(openFileDialogEncryp.FileName); string doc = openfiledialogencryp.filename.substring(0,openfiledialogencryp.filename.length); Microsoft.Office.Interop.Word.Application docword = new Microsoft.Office.Interop.Word.ApplicationClass(); object misval = System.Reflection.Missing.Value; object path= doc; object Readonly = false;

Microsoft.Office.Interop.Word.Document word = docword.documents.open(ref path, ref misval, ref Readonly,ref misval, ref misval, ref m isval, ref misval, ref misval, ref misval,ref misval, ref misval, ref misval,ref misval, ref m isval, ref misval, ref misval); word.activewindow.selection.wholestory(); word.activewindow.selection.copy(); IDataObject data = Clipboard.GetDataObject(); richtextbox1.text=data.getdata(dataformats.text).tostring(); word.close(ref misval, ref misval, ref misval); if (pilih2=="ciphertext") string[] lines = File.ReadAllLines(openFileDialogEncryp.FileName); richtextbox1.text = lines[0]; catch (Exception ex) MessageBox.Show(ex.ToString()); textbox3.text = richtextbox1.text.length.tostring(); void Button2Click(object sender, EventArgs e) Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); int p = Convert.ToInt32(textBox4.Text); int q = Convert.ToInt32(textBox2.Text); string temps; string[] cipher; cipher = richtextbox1.text.split(' '); for (int i = 0; i < cipher.length - 1; i++) temps = cipher[i]; richtextbox2.text += Convert.ToChar(rabin.decrypt(Convert.ToInt32(temps),p,q)); textbox6.text = richtextbox2.text.length.tostring(); stopwatch.stop(); MessageBox.Show("Waktu = " + ((Double)(stopwatch.Elapsed.TotalMilliseconds / 1000)).ToString() + " detik", "Decryption", MessageBoxButtons.OK); private void button4_click(object sender, EventArgs e) string tipe;

OpenFileDialog dialog = new OpenFileDialog(); dialog.filter = "Public Key Files( *.privatekey) *.privatekey"; dialog.title = "Open File : "; dialog.restoredirectory = true; if (dialog.showdialog() == DialogResult.OK) tipe = dialog.filename.substring(dialog.filename.length - 10, 10); if (tipe == "privatekey") string[] lines = File.ReadAllLines(dialog.FileName); textbox4.text = lines[0]; textbox2.text = lines[1]; private void button3_click(object sender, EventArgs e) SaveFileDialog simpann = new SaveFileDialog(); simpann.overwriteprompt = true; simpann.defaultext= "txt"; simpann.filter = "Text Files (*.txt) *.txt text file (*.docx) *.docx text file (*.doc) *.doc"; simpann.filename = ""; if (simpann.showdialog() == DialogResult.OK) string filename = simpann.filename.substring(0, simpann.filename.length) ;//berpengat if (filename.equals("*.doc") filename.equals("*.docx")) object filenamee = simpann.filename; doc = app.documents.add(); doc.content.text = richtextbox2.text; doc.saveas2(ref filenamee); doc.close(); else var sww = new StreamWriter(simpann.FileName); sww.writeline(richtextbox2.text); sww.close(); MessageBox.Show("Plain Text berhasil disimpan"); void DekripsiFormClosing (object sender,formclosingeventargs e)

doc = null; app.quit(); if (e.closereason == CloseReason.UserClosing) Environment.Exit(0); void DecryptionLoad(object sender, EventArgs e) void RichTextBox1TextChanged(object sender, EventArgs e)

DAFTAR RIWAYAT HIDUP CURRICULUM VITAE I. DATA PRIBADI / Personal Identification Nama Lengkap : Morigia Simanjuntak Tempat/ : Tangkahan Durian/ 04 Oktober 1995 Tgl. Lahir Jenis Kelamin : Perempuan Agama : Kristen Protestan Kebangsaan : Indonesia Alamat : Jalan Besitang Tangkahan Durian, Pangkalan Berandan Telepon : 081370565658 Email : morigiasimanjuntak@gmail.com II. III. IV. KEMAMPUAN / Capabilities Bahasa Bahasa Pemrograman Database Lainnya : Bahasa Indonesia, Bahasa Inggris : C#, C++, PHP : MySQL : HTML, Ms. Office PENDIDIKAN FORMAL / Formal Education [ 2013 2017 ] S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi [ 2010 2013 ] SMA Negeri 1 Pangkalan Berandan [ 2007 2010 ] SMP Negeri 3 Babalan [ 2001 2007 ] SD Negeri 4 Tangkahan Durian PENDIDIKAN NON-FORMAL / Informal Education [ 2011 2012 ] Kursus Komputer di Quickly, P.Berandan [ 2010 2011 ] Kursus Bahasa Inggris di Inter Media, P.Berandan V. PELATIHAN DAN SEMINAR / Trainings & Workshop 1) Peserta Workshop Bank Indonesia Goes To Campus Bersama NET., Universitas Sumatera Utara [2016] 2) Peserta Seminar Nasional Literasi Informasi (SENARAI) Fasilkom-TI Universitas Sumatera Utara [2014] 3) Peserta Seminar What Will You Be? IMILKOM [2013] XIII. LAINNYA / Others 1) Penerima Beasiswa KSE ( Karya Salemba Empat) USU [2014 2017] 2) Penerima Beasiswa BISMA (Beasiswa Indofood Sukses Makmur Tbk) USU [2016-2017] (CV Updated on September, 17th, 2017)