Implementasi Algoritma Kriptografi Massey Omura Dengan Teknik Steganografi Kombinasi End Of File (EOF) Dan First Of File (FOF) Untuk Keamanan Data
IMPLEMENTASI ALGORITMA KRIPTOGRAFI MASSEY OMURA DENGAN TEKNIK STEGANOGRAFI KOMBINASI
END OF FILE (EOF) DAN FIRST OF FILE (FOF) UNTUK KEAMANAN DATA
SKRIPSI
NADYA SORAYA HARDIYANA 091401077
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(2)
IMPLEMENTASI ALGORITMA KRIPTOGRAFI MASSEY OMURA DENGAN TEKNIK STEGANOGRAFI KOMBINASI
END OF FILE (EOF) DAN FIRST OF FILE (FOF) UNTUK KEAMANAN DATA
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
NADYA SORAYA HARDIYANA 091401077
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2013
(3)
PERSETUJUAN
Judul : IMPLEMENTASI ALGORITMA KRIPTOGRAFI
MASSEY OMURA DENGAN TEKNIK
STEGANOGRAFI KOMBINASI END OF FILE (EOF) DAN FIRST OF FILE (FOF) UNTUK KEAMANAN DATA
Kategori : SKRIPSI
Nama : NADYA SORAYA HARDIYANA
Nomor Induk Mahasiswa : 091401077
Program Studi : SARJANA (S1) ILMU KOMPUTER Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, 17 Desember 2013 Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Herriyance, ST. M.Kom Maya Silvi Lydia, B.Sc, M.Sc NIP.198010242010121002 NIP. 197401272002122001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP.196203171991031001
(4)
PERNYATAAN
IMPLEMENTASI ALGORITMA KRIPTOGRAFI MASSEY OMURA DENGAN TEKNIK STEGANOGRAFI KOMBINASI
END OF FILE (EOF) DAN FIRST OF FILE (FOF) UNTUK KEAMANAN DATA
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 17 Desember 2013
Nadya Soraya Hardiyana 091401077
(5)
PENGHARGAAN
Puji dan syukur kehadirat Allah SWT, yang hanya dengan rahmat dan izin-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada:
1. Bapak Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc(CTM), Sp.A(K) selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan Dosen Pembanding.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi S1Ilmu Komputer Universitas Sumatera Utara dan Dosen Pembimbing serta Dosen Pembimbing Akademik.
5. Bapak Herriyance, ST, M.Kom selaku Dosen Pembimbing yang telah membimbing dan memberikan kritik serta sarannya dalam penyempurnaan skripsi ini.
6. Ibu Dian Rachmawati S.Kom, M.Kom selaku Dosen Pembanding yang telah memberikan kritik dan sarannya dalam penyempurnaan skripsi ini.
7. Bapak M. Andri Budiman, ST, M.CompSc, MEM selaku Dosen S-1 Ilmu Komputer yang telah berkenan membimbing dan memberikan kritik serta saran kepada penulis.
8. Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, seluruh tenaga pengajar dan pegawai di Program Studi S1Ilmu Komputer Fasilkom-TI Universitas Sumatera Utara.
9. Ayahanda H. Suhardi dan Ibunda Mursiah Nasution, serta kakak-kakak tersayang Ade Rahmi Fadilah, Dewi Kurnia, Rika Mahardika, Bella Almeida Fuaddhilah, Abangda Muhammad Hidayat Wibowo yang selalu memberikan kasih sayang, do’a serta dukungannya kepada penulis.
10. Keponakan tersayang Tsabitah, Khalisah, Erol, Naumi, Athallah, Nazwa, Syifa, dan Putra yang selalu mendukung dan menghibur selama proses penyelesaian skripsi ini.
(6)
11. Abangda Muhammad Ridho Nasution, S.Kom yang selalu memberikan semangat, do’a dan perhatiannya kepada penulis.
12. Rekan-rekan S-1 Ilmu Komputer Stambuk 2009, khususnya Pocut Rizky Azhari, Fithri Rizqi Khairani Nasution, Dewi Ayu Pratami, Lidya Andiny Nasution, Nurul Khairina, dan Ismail Fata Lubis yang selalu memberikan do’a, semangat, bantuan, kritik dan saran kepada penulis selama proses penyelesaian skripsi ini.
Semoga Allah SWT melimpahkan berkah kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.
Medan, 17 Desember 2013
(7)
ABSTRAK
Kemudahan yang dihasilkan dari perkembangan teknologi saat ini, ternyata menimbulkan masalah lain dalam keamanan pesan, seperti jalur pendistribusian kunci yang menjadi tidak aman. Keamanan pesan dapat dilakukan melalui kriptografi yaitu dengan cara mengacak pesan, sedangkan melalui steganografi dengan cara menyembunyikan pesan. Konsep kriptografi dan steganografi dapat dikombinasikan sehingga menghasilkan sistem keamanan pesan yang lebih baik. Dalam penelitian ini digunakan algoritma kriptografi Massey-Omura yang merupakan pengembangan dari Three-Pass Ptotocol yaitu suatu kerangka kerja yang memungkinkan tidak ada proses distribusi kunci sehingga dapat mengurangi terjadinya kebocoran pesan. Tahap pertama yaitu dengan membangkitan bilangan prima menggunakan metode Fermat’s Little Theorem dan melakukan pencarian bilangan relatif prima menggunakan algoritma Euclidean GCD. Selanjutnya pesan teks yang berformat *.txt di enkripsi dan menghasilkan ciphertext yang kemudian akan disembunyikan pada citra bitmap berformat *.bmp dengan teknik steganografi kombinasi metode End Of File dan First 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.
Kata Kunci: Kriptografi, Three-Pass Protocol, Massey-Omura, Fermat’s Little Theorem, Euclidean GCD, Steganografi, End Of File, First Of File.
(8)
IMPLEMENTATION OF MASSEY OMURA’S CRYPTOGRAPHY ALGORITHM WITH STEGANOGRAPHY TECHNIQUE COMBINATION OF “END OF FILE” AND “FIRST OF FILE”
FOR DATA SECURITY
ABSTRACT
Ease resultant from developments of current’s technology actually causes other problems in security of message like key distribution channels which become unsafe. security message can be done through a cryptography by randomizing message, while through a steganography by hiding message. Concepts of cryptography and steganography can be combined to produce a better message security system. In this research is used Massey Omura algorithm which is the development of Three Pass Protocol namely framework which allow there is no process of key distribution so as to reduce the occurrence of message leaks. The first stage is generating primes using a method of Fermat’s Little Theorem and searching relatively prime number using Euclidean GCD. Furthermore the text message in format *.txt will encrypted and produce a ciphertext which will be hidden in the bitmap image in format *.bmp by steganography technique combination of End Of File and First Of File with inserting a message at the beginning and end of matrix pixel of image. The process of hiding message(embedding) in cover image produced stego image and through process of extracting to get the hidden message (ciphertext) which will decrypted and getting the plaintext.
Keyword: Cryptography, Three-Pass Protocol, Massey-Omura, Fermat’s Little Theorem, Euclidean GCD, Steganography, End Of File, First Of File.
(9)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel xi
Daftar Gambar xii
Daftar Lampiran xiv
Bab I Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 3
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 4
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Bab II Landasan Teori
2.1 Kriptografi 6
2.1.1 Definisi Kriptografi 6
2.1.2 Enkripsi dan Dekripsi 6
2.1.3 Sejarah Kriptografi 7
2.1.4 Jenis Algoritma Kriptografi 8
2.1.5 Tujuan Kriptografi 9
2.2 Three Pass Protocol 10
2.3 Aritmatika Modulo 11
2.4 Greatest Common Divisor (GCD) 11
2.5 Algoritma Euclidean 12
2.6 Relatif Prima 12
2.7 Inversi Modulo 13
2.8 Fermat Little’s Theorem 13
2.9 Algoritma Massey Omura 14
2.10 Steganografi 15
2.10.1 Definisi Steganografi 15 2.10.2 Sejarah Steganografi 17 2.10.3 Teknik Steganografi Kombinasi End Of File dan First Of File 18
2.11 Citra Bitmap 18
(10)
Bab III Analisis dan Perancangan
3.1 Analisis Sistem 21
3.1.1 Analisis Masalah 21
3.1.2 Analisis Persyaratan 22
3.1.2.1 Analisis Fungsional 22 3.1.2.2 Analisis Nonfungsional 23 3.1.3 Pemodelan Persyaratan Sistem dengan Use Case 23 3.1.3.1 Spesifikasi Use Case 25
3.1.4 Pseudocode 38
3.1.4.1 Pseudocode Proses Generate Prime 38 3.1.4.2 Pseudocode Proses Fermat 38 3.1.4.3 Pseudocode Proses Euclidean GCD 39 3.1.4.4 Pseudocode Proses Generate Key 39
3.1.4.5 Pseudocode Proses Enkripsi 40 3.1.4.6 Pseudocode Proses Embedding 41
3.1.4.7 Pseudocode Proses Extracting 43 3.1.4.8 Pseudocode Proses Dekripsi 45
3.1.5 Flowchart Sistem 45
3.1.5.1 Flowchart Prime Generator 46 3.1.5.2 Flowchart Key Generator (Sender) 47 3.1.5.3 Flowchart Encryption1 (Sender) 48 3.1.5.4 Flowchart Embedding1 (Sender) 49 3.1.5.5 Flowchart Extracting1(Recipient) 50 3.1.5.6 Flowchart Encryption2 (Recipient) 50 3.1.5.7 Flowchart Embedding2 (Recipient) 51 3.1.5.8 Flowchart Extracting2 (Sender) 52 3.1.5.9 Flowchart Decryption1 (Sender) 53 3.1.5.10 Flowchart Embedding3 (Sender) 54 3.1.5.11 Flowchart Extracting3 (Recipient) 54 3.1.5.12 Flowchart Decryption2 (Recipient) 55
3.2 Perancangan Sistem 56
3.2.1 Home 56
3.2.2 About 57
3.2.3 Help 57
3.2.4 Encryption1 58
3.2.5 Encrypion2 60
3.2.6 Decryption1 61
3.2.7 Decryption2 63
3.3 Tahapan Sistem 65
3.3.1 Tahapan Sistem Algoritma Kriptografi Massey Omura 65 3.3.2 Tahapan Sistem Teknik Steganografi Kombinasi End Of File 69 dan First Of File
Bab IV Implementasi dan Pengujian
4.1 Implementasi Sistem 73
4.1.1 Form home_application 73
4.1.2 Form About 74
4.1.3 Form Help 74
(11)
4.1.5 Form Encryption2(Recipient) 76 4.1.6 Form Decryption1(Sender) 76 4.1.7 Form Decryption2(Recipient) 77
4.2 Pengujian Sistem 78
4.2.1 Pengujian Proses Encryption1 78
4.2.2 Pengujian Proses Encryption2 84
4.2.3 Pengujian Proses Decryption1 88
4.2.4 Pengujian Proses Decryption2 90
4.2.5 Hasil Pengujian Proses Embedding dan Extracting 94 Bab V Kesimpulan dan Saran
5.1 Kesimpulan 96
5.2 Saran 97
(12)
DAFTAR TABEL
Nomor
Tabel Nama Tabel Halaman
2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 4.1 4.2 4.3 4.4 4.5 4.6
Proses Perhitungan Invers Modulo
Spesifikasi Use Case untuk Prime Generator Spesifikasi Use Case untuk Key Generator A Spesifikasi Use Case untuk Encryption1 Spesifikasi Use Case untuk Embedding1 Spesifikasi Use Case untuk Extracting1 Spesifikasi Use Case untuk Key Generator B Spesifikasi Use Case untuk Encryption2 Spesifikasi Use Case untuk Embedding2 Spesifikasi Use Case untuk Extracting2 Spesifikasi Use Case untuk Decryption1 Spesifikasi Use Case untuk Embedding3 Spesifikasi Use Case untuk Extracting3 Spesifikasi Use Case untuk Decryption2 Kode ASCII
Perhitungan nilai dA Perhitungan nilai dB
Matriks Citra Bewarna 4 x 6 pixel
Matriks Citra yang Disisipi Pesan dengan Metode End Of File Matriks Citra yang Disisipi Pesan dengan Metode First Of File Matriks Citra yang Disisipi Pesan dengan Kombinasi Metode End Of File dan First Of File
Hasil Enkripsi Ciphertext1 untuk Plaintext ‘NADYA’ Hasil Ciphertext2 dari proses Encryption2
Hasil Ciphertext3 dari proses Decryption1
Hasil Nilai Plaintext Awal dari Proses Decryption2
Hasil Pengujian Proses Embedding dan Extracting Berdasarkan Implementasi Sistem
Hasil Pengujian Proses Embedding dan Extracting dengan Beberapa Ukuran 13 25 26 27 28 29 30 31 32 33 34 35 36 37 65 67 68 70 70 71 72 80 86 88 91 94 95
(13)
DAFTAR GAMBAR
Nomor
Gambar Nama Gambar Halaman
2.1 2.2 (a) 2.2 (b) 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34
Proses Enkripsi Dekripsi Sebuah Scytale
Pesan Ditulis Secara Horizontal Baris per Baris Skema Kriptografi Simetri
Skema Kriptografi Asimetri Skema Three Pass Protocol
Skema Prosedur Pengiriman Pesan Alice-Bob Model Dasar Embedding pada Steganografi Contoh Citra Bitmap
Diagram Ishikawa Analisis Masalah Use Case Diagram Sistem
Activity Diagram untuk Prime Generator Activity Diagram untuk Key Generator A Activity Diagram untuk Encryption1 Activity Diagram untuk Embedding1 Activity Diagram untuk Extracting1 Activity Diagram untuk Key Generator B Activity Diagram untuk Encryption2 Activity Diagram untuk Embedding2 Activity Diagram untuk Extracting2 Activity Diagram untuk Decryption1 Activity Diagram untuk Embedding3 Activity Diagram untuk Extracting3 Activity Diagram untuk Decryption2 Flowchart Keseluruhan Sistem Flowchart Prime Generator Flowchart Key Generator A Flowchart untuk Encryption1 Flowchart Embedding1 Flowchart Extracting1 Flowchart Encryption2 Flowchart Embedding2 Flowchart Extracting2 Flowchart Decryption1 Flowchart Embedding3 Flowchart Extracting3 Flowchart Decryption2
Perancangan Form home_application Perancangan Form about
Perancangan Form help
Perancangan Form encryption1 Perancangan Form encryption2 Perancangan Form decryption1
7 8 8 9 9 10 15 16 18 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 45 46 47 48 49 50 50 51 52 53 54 54 55 56 57 57 58 60 62
(14)
3.35 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27
Perancangan Form decryption2 Tampilan Form home_application Tampilan Form about
Tampilan Form help
Tampilan Form encryption1 Tampilan Form encryption2 Tampilan Form decryption1 Tampilan Form decryption2 Hasil Proses Generate Prime Hasil Proses Generate Key (Sender) Pop-up Windows Open Text
Hasil Plaintext yang dipilih Hasil Ciphertext1
Pop-up Windows Open Image Hasil Pemilihan Cover Image1
Hasil Embedding1 dan Message box Informasi “Embedding Succeed”
Pop-up Windows Save Stego Image Message Box “Stego Image Saved”
Message Box Informasi “No Hidden Message” Hasil Proses Extract1
Hasil Generate Key (Recipient) dan Encryption2 Hasil Embedding2
Hasil Extracting2 dan Decryption1 Hasil Embedding3
Hasil Extracting3 Hasl Decryption2
Pop-up Windows Save File Message Box Warning informasi “Message is over limit of image pixel”
64 73 74 75 75 76 77 78 78 79 79 80 81 81 82 83 83 84 85 85 86 87 89 90 91 92 92 93
(15)
DAFTAR LAMPIRAN
Halaman
A. Listing Program 100
(16)
ABSTRAK
Kemudahan yang dihasilkan dari perkembangan teknologi saat ini, ternyata menimbulkan masalah lain dalam keamanan pesan, seperti jalur pendistribusian kunci yang menjadi tidak aman. Keamanan pesan dapat dilakukan melalui kriptografi yaitu dengan cara mengacak pesan, sedangkan melalui steganografi dengan cara menyembunyikan pesan. Konsep kriptografi dan steganografi dapat dikombinasikan sehingga menghasilkan sistem keamanan pesan yang lebih baik. Dalam penelitian ini digunakan algoritma kriptografi Massey-Omura yang merupakan pengembangan dari Three-Pass Ptotocol yaitu suatu kerangka kerja yang memungkinkan tidak ada proses distribusi kunci sehingga dapat mengurangi terjadinya kebocoran pesan. Tahap pertama yaitu dengan membangkitan bilangan prima menggunakan metode Fermat’s Little Theorem dan melakukan pencarian bilangan relatif prima menggunakan algoritma Euclidean GCD. Selanjutnya pesan teks yang berformat *.txt di enkripsi dan menghasilkan ciphertext yang kemudian akan disembunyikan pada citra bitmap berformat *.bmp dengan teknik steganografi kombinasi metode End Of File dan First 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.
Kata Kunci: Kriptografi, Three-Pass Protocol, Massey-Omura, Fermat’s Little Theorem, Euclidean GCD, Steganografi, End Of File, First Of File.
(17)
IMPLEMENTATION OF MASSEY OMURA’S CRYPTOGRAPHY ALGORITHM WITH STEGANOGRAPHY TECHNIQUE COMBINATION OF “END OF FILE” AND “FIRST OF FILE”
FOR DATA SECURITY
ABSTRACT
Ease resultant from developments of current’s technology actually causes other problems in security of message like key distribution channels which become unsafe. security message can be done through a cryptography by randomizing message, while through a steganography by hiding message. Concepts of cryptography and steganography can be combined to produce a better message security system. In this research is used Massey Omura algorithm which is the development of Three Pass Protocol namely framework which allow there is no process of key distribution so as to reduce the occurrence of message leaks. The first stage is generating primes using a method of Fermat’s Little Theorem and searching relatively prime number using Euclidean GCD. Furthermore the text message in format *.txt will encrypted and produce a ciphertext which will be hidden in the bitmap image in format *.bmp by steganography technique combination of End Of File and First Of File with inserting a message at the beginning and end of matrix pixel of image. The process of hiding message(embedding) in cover image produced stego image and through process of extracting to get the hidden message (ciphertext) which will decrypted and getting the plaintext.
Keyword: Cryptography, Three-Pass Protocol, Massey-Omura, Fermat’s Little Theorem, Euclidean GCD, Steganography, End Of File, First Of File.
(18)
BAB 1
PENDAHULUAN
1.1. Latar belakang
Seiring berkembangnya zaman, diikuti juga dengan perkembangan teknologi sampai saat ini, sebagian besar masyarakat melakukan pertukaran atau saling membagi informasi dengan mudah. Seperti informasi penting suatu perusahaan ataupun individu yang menuntut keamanan atau kerahasiaan sehingga informasi tersebut tidak diketahui pihak luar. Untuk itu, dikembangkanlah ilmu yang mempelajari tentang pengamanan informasi tersebut yang dikenal dengan Kriptografi.
Menurut terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika dikirim dari suatu tempat ke tempat lain[9]. Konsep umum kriptografi yaitu enkripsi dan dekripsi. Dimana enkripsi adalah proses mengubah plaintext (informasi) menjadi ciphertext (pesan dalam bentuk rahasia). Sedangkan dekripsi adalah proses mengembalikan ciphertext pada proses enkripsi menjadi plaintext semula. Kriptografi memiliki berbagai macam algoritma, salah satunya adalah algoritma Massey Omura. Pada algoritma Massey Omura sekuritas terletak pada kesulitan logaritma diskrit dan algoritma ini merupakan pengembangan dari Three Pass Protocol, yaitu melakukan suatu kerangka kerja yang memungkinkan satu pihak untuk aman mengirim pesan ke pihak kedua tanpa perlu untuk bertukar atau mendistribusikan kunci enkripsi. Penelitian terdahulu oleh Muhammad Reza dilakukan proses enkripsi-dekripsi pesan menggunakan Massey Omura menggunakan metode The Sieve Of Eratosthenes untuk membantu membangkitkan bilangan prima, algoritma Euclidean GCD untuk mencari dua buah bilangan bulat yang relatif prima dan untuk proses enkripsi menggunakan algoritma Modulo Exponential yang berfungsi menghitung nilai perpangkatan modulo bilangan besar serta algoritma Modulo Invers untuk proses dekripsi[5].
(19)
Pengetahuan dibidang kriptografi semakin berkembang, dan menimbulkan pihak-pihak yang berusaha mengganggu sistem keamanan kriptografi. Seperti yang diketahui, kriptografi melakukan pengamanan dengan mengacak pesan agar pihak luar tidak mengerti pesan tersebut, namun pihak luar kemudian memiliki cara untuk mengganggu sistem keamanan yaitu dengan merusak pesan sehingga pesan tersebut tidak sampai secara utuh. Maka untuk mengatasi keadaan ini, digunakan teknik steganografi.
Steganografi secara khusus adalah suatu ilmu, teknik dan seni bagaimana menyembunyikan data rahasia didalam sebuah media digital sehingga keberadaan data rahasia tersebut tidak diketahui oleh orang lain[6]. Proses Steganografi yaitu melakukan penyembunyian data (embedding) pada suatu media, kemudian melalui proses ekstraksi (extracting), dapat menampilkan data asli yang disembunyikan. Steganografi juga memiliki berbagai teknik penyembunyian, salah satunya adalah Teknik End Of file (EOF). Telah dilakukan penelitian oleh Krisnawati yang mengimplementasikan teknik steganografi Least Significant Bit (LSB) dan End Of file (EOF) untuk menyisipkan teks ke dalam citra grayscale. Metode LSB bekerja dengan mengganti bit terakhir kode biner citra dengan kode biner pesan, sedangkan metode EOF bekerja dengan dengan menambahkan teks sebagai nilai derajat keabuan citra pada akhir citra. Kelebihan metode LSB adalah ukuran citra yang mengandung pesan tidak berubah sedangkan metode EOF mempunyai kelebihan dapat menyisipkan pesan dalam jumlah yang tidak terbatas[4].
Walaupun steganografi sering dikaitkan dengan kriptografi, sebenarnya kedua ilmu ini memiliki metode yang berbeda. Kriptografi mengacak pesan asli menjadi tidak dimengerti dan menimbulkan kecurigaan, sedangkan steganografi melakukan penyembunyian pesan di dalam file sehingga tidak diketahui.
Berdasarkan latar belakang yang telah diuraikan, maka penulis melakukan penelitian dengan judul “Implementasi Algoritma Kriptografi Massey Omura dengan Teknik Steganografi Kombinasi End Of file (EOF) dan First Of File (FOF) untuk Keamanan Data”.
(20)
1.2 Rumusan Masalah
Berdasarkan latar belakang diatas, maka yang menjadi rumusan masalah adalah bagaimana penerapan algoritma kriptografi Massey Omura dengan teknik steganografi kombinasi End Of file dan First Of File dalam pengamanan pesan.
1.3 Batasan Masalah
Batasan masalah dalam penelitian adalah sebagai berikut :
1. File citra yang digunakan untuk menyisipkan pesan adalah file bitmap dengan format *.bmp dan maksimal ukuran citra 2592 x 1944 pixel.
2. File yang disisipkan adalah pesan teks dengan format *.txt atau pesan teks yang diinputkan langsung oleh user serta panjang teks terbatas hanya sampai ukuran ( (2592 x 3 x 2) – 2 ).
3. Metode yang digunakan untuk membantu membangkitkan bilangan prima adalah metode Fermat’s Little Theorem.
4. Algoritma yang digunakan untuk mencari dua buah bilangan bulat yang relatif prima adalah Euclidean GCD.
5. Karakter yang digunakan berdasarkan tabel ASCII 256.
6. Bahasa pemrograman yang digunakan adalah Microsoft Visual Studio 2010 (C#).
1.4 Tujuan Penelitian
Tujuan dari penelitian ini adalah memperoleh aplikasi yang menerapkan algoritma kriptografi Massey Omura dengan teknik steganografi kombinasi End Of file dan First Of File dalam mengamankan pesan.
(21)
1.5 Manfaat penelitian
Manfaat dari penelitian ini adalah, melalui implementasi algoritma kriptografi Massey Omura dengan teknik steganografi kombinasi End Of file dan First Of File, maka pesan rahasia yang di distribusikan akan terjaga keamananya.
1.6 Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah:
1. Studi Literatur
Pada tahap ini dilakukan pencarian dan pengumpulan referensi yang berhubungan dengan algoritma Massey-Omura dan teknik steganografi kombinasi End Of file serta First Of File. Baik dalam bentuk buku ataupun e-book, jurnal, dan makalah yang di dapat dari internet.
2. Analisis dan Perancangan Sistem
Pada tahap ini dilakukan perancangan flowchart, interface dan perancangan sistem yang menggunakan algoritma Massey-Omura dan teknik steganografi kombinasi End Of file serta First Of File sesuai dengan tujuan dan batasan masalah.
3. Implementasi Sistem
Pada tahap ini akan dibuat sistem dengan melakukan pengkodean (coding) pada bahasa pemrograman Microsoft Visual Studio (C#) untuk implementasi algoritma Massey-Omura dan teknik steganografi kombinasi End Of file serta First Of File.
4. Pengujian Sistem
Pada tahap ini dilakukan pengujian terhadap sistem yang telah dibangun untuk mengetahui kesalahan ataupun kekurangan di dalam sistem berdasarkan keberhasilan proses enkripsi-dekripsi dan keberhasilan proses penyisipan dan ekstraksi.
5. Dokumentasi
Pada tahap ini dilakukan penyusunan laporan dari hasil analisis dan perancangan sistem dalam format penulisan penelitian.
(22)
1.7 Sistematika Penulisan
Untuk membuat penulisan lebih terstruktur, maka penulisan ini dibagi menjadi lima bab, yaitu sebagai berikut :
BAB 1 : PENDAHULUAN
Pada bab ini berisi penjelasan mengenai latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Pada bab ini berisi penjelasan mengenai teori yang berhubungan dengan penelitian, diantaranya yaitu teori kriptografi, algoritma Massey-Omura, teori steganografi, metode End Of file dan First Of File dan teori lainnya yang berkaitan.
BAB 3 : ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini berisi penjelasan mengenai analisis masalah dan segala hal yang berkaitan dengan sistem yang dibangun, serta menjelaskan cara kerja sistem, kemudian dilanjutkan dengan perancangan antarmuka sistem.
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini berisi penjelasan mengenai implementasi sistem dengan menggunakan bahasa pemrograman Microsoft Visual Studio 2010 (C#) berdasarkan tahapan perancangan sistem, kemudian dilakukan pengujian sistem untuk mengetahui keberhasilan dan kesesuaian sistem dengan perancangan yang dilakukan sebelumnya.
BAB 5 : KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan yang diperoleh dalam penelitian dan saran yang diberikan untuk pengembangan lebih lanjut.
(23)
BAB 2
LANDASAN TEORI
2.1 Kriptografi
2.1.1 Definisi Kriptografi
Kriptografi berasal dari bahasa Yunani, crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan)[10].
Beberapa definisi Kriptografi yaitu, Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and science of keeping message secure). Sebagai pembanding, terdapat juga definisi kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi[12].
Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi[11].
2.1.2 Enkripsi dan Dekripsi
Enkripsi (encryption) adalah proses yang dilakukan untuk mengamankan sebuah pesan (disebut plaintext) menjadi pesan yang tersembunyi (disebut ciphertext). Ciphertext adalah pesan yang sudah tidak dapat dibaca dengan mudah.
(24)
Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut dekripsi (decryption)[14].
Enkripsi, dekripsi dan kunci tersebut diatas merupakan dasar penting dari algoritma kriptografi. Algoritma kriptografi disebut juga cipher yaitu fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Konsep matematis yang mendasari algoritma kriptografi dapat dimisalkan P menyatakan plainteks dan C menyatakan chiperteks, maka fungsi enkripsi E memetakan P ke C,
E(P) = C ………. (2.1)
Dan fungsi dekripsi D memetakan C ke P,
D(C) = P ………. (2.2)
Pada Gambar 2.1 menjelaskan lebih lengkap tentang proses enkripsi-dekripsi dalam kriptografi.
Gambar 2.1 Proses Enkripsi Dekripsi[12]
2.1.3 Sejarah Kriptografi
Kriptografi mempunyai sejarah yang panjang, sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana[12].
Sejarah kriptografi klasik mencatat penggunaan cipher transposisi oleh tentara Sparta di Yunani permulaan tahun 400 SM. Mereka menggunakan alat yang bernama scytale (Gambar 2.2a). Scytale terdiri dari sebuah kertas panjang dan daun papyrus yang dililitkan pada sebuah silinder dari diameter tertentu. Pesan ditulis secara
Enkripsi
Plainteks Dekripsi
Cipherteks
Plainteks
(25)
horizontal, baris per baris (Gambar 2.2b). Bila pita dilepaskan, maka huruf-huruf di dalamnya menjadi tersusun acak membentuk pesan rahasia. Untuk membaca pesan, penerima pesan harus melilitkan kembali kertas tersebut ke silinder yang sama[12].
(a) (b)
Gambar 2.2.(a) Sebuah scytale;
(b) Pesan ditulis secara horizontal, baris per baris[12]
2.1.4 Jenis Algoritma Kriptografi
Algoritma kriptografi berdasarkan jenis kunci yang digunakan dapat dibedakan menjadi dua jenis, yaitu sebagai berikut[6] :
1. Algoritma Simetris
Dalam algoritma simetris, kunci yang digunakan untuk proses enkripsi dan dekripsi sama (Gambar 2.3). Istilah lain dari kriptografi ini adalah kriptografi kunci privat (private-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si penerima dan pengirim pesan telah terlebih dahulu bertukar kunci sebelum pesan dikirim. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya. Semua kriptografi klasik menggunakan sistem kunci simetri ini, dan ada beberapa algoritma kriptografi modern yang juga menggunakan sistem kunci simetri seperti DES (Data Encryption Stamdard), Triple-DES, dan One Time Pad.
(26)
Gambar 2.3Skema kriptografi simetri [12]
2. Algoritma Asimetri
Berbeda dengan algoritma kunci simetris, kriptografi algoritma asimetris mempunyai dua kunci yang berbeda pada proses enkripsi dan dekripsinya (Gambar 2.4). Nama lain dari algoritma ini adalah kriptografi kunci publik (public key cryptography). Kunci enkripsi pada kriptografi ini tidak bersifat rahasia (publik), sedangkan kunci untuk dekripsi bersifat rahasia (privat). Algoritma kriptografi yang asimetris seperti algoritma RSA, ElGamal, Massey-Omura dll.
Gambar 2.4 Skema Kriptografi Asimetri [12]
2.1.5 Tujuan Kriptografi
Adapun empat tujuan mendasar dari kriptografi adalah[12]:
1. Confidentiality, adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2. Data integrity, adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman.
3. Authentication, adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication or entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication).
(27)
4. Non-repudiation, adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.2 Three-Pass Protocol
Dalam kriptografi, Three-Pass Protocol dalam pengiriman pesan merupakan suatu kerangka kerja yang memungkinkan satu pihak untuk aman mengirim pesan ke pihak kedua tanpa perlu untuk bertukar atau mendistribusikan kunci enkripsi. Disebut dengan Three-Pass Protocol karena pengirim dan penerima pesan melakukan pertukaran sebanyak tiga tahap untuk mengenkripsi pesan tersebut. Three-Pass Protocol pertama kali dikembangkan oleh Adi Shamir pada sekitar tahun 1980. Konsep dasar Three-Pass Protocol adalah bahwa masing-masing pihak memiliki kunci enkripsi pribadi dan sebuah kunci dekripsi pribadi. Kedua belah pihak menggunakan kunci mereka masing-masing untuk mengenkripsi pesan dan kemudian untuk mendekripsi pesan[5].
Gambar 2.5 Skema Three-Pass Protocol
Cara kerja skema Three-Pass Protocol [5]:
1. Pengirim (Alice) memilih sebuah kunci sandi pribadi s dan kunci dekripsi t. Pengirim pesan mengenkripsi pesan m dengan kunci s dan mengirimkan pesan terenkripsi E(s, m) untuk penerima (Bob) .
2. Penerima memilih sebuah kunci pribadi r dan kunci dekripsi q dan mengenkripsi pesan pertama E(s,m) dengan kunci r lalu, mengirimkan kembali kunci enkripsi ganda E(r, E(s,m)) kepada pengirim (Alice) .
(28)
3. Pengirim (Alice) mendekripsi pesan kedua dengan kunci t. Karena dari sifat komutatif dimana D(t, E(r, E(s,m))) = E(r,m) merupakan pesan yang dienkripsi dengan hanya menggunakan private key penerima (Bob). Lalu pengirim mengirimkan pesan tersebut kepada penerima (Bob) dan di dekripsi dengan D(q, E(r,m)) = m yaitu sebagai pesan asli.
2.3 Aritmatika Modulo
Aritmatika modulo sangat berperan dalam kriptografi karena banyak digunakan dalam algoritma enkripsi, baik untuk enkripsi simetris maupun untuk public key cryptography.[11]
Misalkan a adalah bilangan bulat dan m adalah bilangan bulat > 0. Operasi a mod m memberikan sisa jika a dibagi dengan m. Bilangan m disebut modulo, dan hasil aritmatika modulo m terletak di dalam himpunan {0,1,2,…,m-1}. Sehingga dinotasikan [12] :
a mod m = r sedemikian sehingga a = mq + r, dengan 0 ≤ r < m. Contoh:
23 mod 5 = 3 (23 = 5 x 4 + 3)
2.4 Greatest Common Divisor (GCD)
Greatest Common Divisor (GCD) disebut juga Pembagi Bersama Terbesar (PBB). Misalkan a dan b adalah dua buah bilangan bulat tidak nol. Maka GCD dari a dan b adalah bilangan bulat terbesar d sedemikian sehingga d | a dan d | b. Dalam hal ini kita nyatakan bahwa GCD(a,b) = d [12].
Contoh :
Faktor pembagi 45: 1,3,5,9,15,45 Faktor pembagi 36: 1,2,3,4,9,12,18,36
Faktor pembagi bersama dari 45 dan 36 adalah 1,3,9 Sehingga GCD(45,36) = 9
(29)
2.5 Algoritma Euclidean
Algoritma Euclidean adalah algoritma untuk mencari Pembagi Bersama Terbesar (PBB atau GCD) dari dua buah bilangan bulat. Euclid, penemu algoritma Euclidean, adalah seorang matematikawan Yunani yang menuliskan algoritmanya tersebut dalam bukunya yang terkenal, Element [12].
Diberikan dua buah bilangan bulat tak-negatif m dan n ( m ≥ n ). Algoritma Euclidean berikut mencari pembagi bersama terbesar dari m dan n[12].
Algoritma Euclidean[12]:
1. Jika n = 0 maka m adalah PBB (m,n); stop. Kalau tidak (yaitu n ≠0) lanjutkan ke langkah 2. 2. Bagilah m dengan n dan misalkan r adalah sisanya
3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah 1.
Contoh:
Misalkan m = 88 , n = 36 dan dipenuhi syarat ( m ≥ n ), maka PBB(88,36) dihitung dengan cara sebagai berikut:
88 mod 36 = 16 36 mod 16 = 4
16 mod 4 = 0 (STOP)
Sisa pembagian terakhir sebelum 0 adalah 4, maka PBB (88,36) = 4
2.6 Relatif Prima
Dua buah bilangan bulat a dan b dikatakan relatif prima jika GCD(a,b) = 1. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga[12]
ma + nb = 1 ………. (2.3)
Contoh:
20 dan 3 relatif prima karena GCD(20,3) = 1, dengan m = 2 dan n = -13. Maka dapat ditulis 2 x 20 + (-13) x 3 = 1
(30)
2.7 Inversi Modulo
Jika a dan m relatif prima dan m > 1, maka dapat diketahui inversi dari a modulo m. Inversi dari a (mod m), disebut juga inversi perkalian, adalah bilangan bulat �−1 sedemikian sehingga[12].
��−1 ≡ 1 (mod �) ………. (2.4)
Contoh :
Berapa inversi modulo dari 5 (mod 12) ? Diketahui m = 5 , n = 12
Tabel 2.1 Proses Perhitungan Invers Modulo
�−1 �−1 x �(����)
1 1 x 5 (mod 12) = 5 2 2 x 5 (mod 12) = 10 3 3 x 5 (mod 12) = 3 4 4 x 5 (mod 12) = 8 5 5 x 5 (mod 12) = 1
Maka invers modulo dari 5 (mod 12) adalah �−1= 5
2.8 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 [3].
Secara formal, Fermat’s Little Theorem ini dapat ditulis[3]:
Misalkan a suatu bilangan bulat positif dan p suatu bilangan prima, maka Untuk ��� (�,�) = 1, berlaku
(31)
Contoh, kalkulasikan 258 (mod 19). Karena 19 adalah bilangan prima dan 2 tidak dapat dibagi 19, maka teorema ini dapat digunakan untuk mengkalkulasi
218≡ 219−1 (mod 19) ≡ 1 (mod 19) Jadi
258 = (218)3 x (24)≡ 13 x 24≡ 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[11].
2.9 Algoritma Massey-Omura
Massey-Omura Cryptosystem adalah salah satu cryptosystem kunci publik yang berdasarkan pada logaritma diskrit. Diusulkan oleh James Massey dan Jim K. Omura pada tahun 1982 sebagai pengembangan atas Three Pass Protocol oleh Shamir pada tahun 1980, dimana pengirim dan penerima tidak bertukar kunci namun protocol ini memerlukan pengirim dan penerima yang memiliki dua kunci untuk mengenkripsi dan mendekripsi pesan[16].
Berikut cara kerja dari Algoritma Massey-Omura[5]:
a. Semua pengguna telah mensepakati sebuah bilangan prima p berdasarkan Fermat’s Little Theorem.
b. Setiap pengguna secara rahasia memilih acak bilangan bulat e antara 0 hingga p–1 berdasarkan GCD (e, p–1) = 1, dan menghitung
d =�−1 mod (p–1) ………. (2.6) dengan menggunakan algoritma Euclidean GCD.
c. Alice ingin mengirim pesan M yang aman untuk Bob, kemudian mereka ikuti prosedur berikut :
1. Alice menambahkan kunci �� pada pesan M sehingga Alice mengirimkan pesan ��� kepada Bob.
(32)
Alice Bob
Bob
Bob Alice
Alice
2. Pada saat menerima pesan, Bob menambahkan kunci lagi yaitu �� sehingga mengirimkan pesan ����� kembali ke Alice (perhatikan bahwa saat ini, Bob tidak bisa membaca pesan Alice M).
3. Setelah menerima pesan dari Bob, Alice melakukan dekripsi dengan memakai �� sehingga didapat ������� = ��� kemudian dikirim kembali kepada Bob.
4. Bob menerima ��� dan melakukan dekripsi pesan sehingga didapat
����� = M, dan terbukalah pesan asli Alice yaitu M.
Gambar 2.6 Skema Prosedur Pengiriman Pesan Alice-Bob [5]
Keterangan:
M = Pesan yang akan dikirimkan
�� = Kunci enkripsi Alice
�� = Kunci enkripsi Bob
�� = Kunci dekripsi Alice
�� = Kunci dekripsi Bob
2.10 Steganografi
2.10.1 Definisi Steganografi
Kata steganografi berasal dari bahasa Yunani steganos, yang artinya tersembunyi atau terselubung, dan graphein artinya menulis. Steganografi adalah seni dan ilmu menulis atau menyembunyikan pesan tersembunyi dengan suatu cara sehingga selain si pengirim dan si penerima, tidak ada seorangpun yang mengetahui atau menyadari bahwa ada suatu pesan rahasia. Kini, istilah steganografi termasuk penyembunyian
(33)
data digital dalam file komputer. Tujuan dari steganografi adalah merahasiakan atau menyembunyikan keberadaan dari sebuah pesan tersembunyi atau sebuah informasi[1].
Steganografi sering berkaitan dengan kriptografi. Namun terdapat perbedaan mendasar antara steganografi dengan kriptografi terletak pada proses penyembunyian data dan hasil akhir dari proses tersebut. Kriptografi melakukan proses pengacakan data asli sehingga dihasilkan data terenkripsi yang benar-benar acak dan berbeda dengan aslinya. Sementara itu steganografi menyembunyikan data dalam data lain dengan cara menumpanginya tanpa mengubah data yang ditumpanginya tersebut sehingga tampilan data tetap terlihat sama[10].
Gambar 2.7 Model dasar embedding pada steganografi [6]
Keterangan:
�� = fungsi steganografi “embedding” ��−1 = fungsi steganografi “extracting”
Sampul(cover) = cover data sebagai media untuk penyisipan pesan Isi pesan = pesan yang akan disisipkan
Key = parameter ��
media stego = cover data dengan pesan yang telah disisipkan
Proses embedding atau sering disebut penyembunyian pesan ini, dilakukan dengan cara menciptakan suatu proses stego medium dengan cara menggantikan atau menyisipkan bit-bit dari sampul media dengan bit-bit dari pesan yang disembunyikan[6]. Sedangkan proses yang digunakan untuk menampilkan pesan rahasia yang ada dalam image disebut (extracting).
(34)
Kriteria yang harus diperhatikan dalam penyembunyian pesan adalah[12]:
a. Imperceptibility
Keberadaan pesan rahasia tidak dapat dipersepsi oleh inderawi. Misalnya jika covertext berupa citra, maka penyisipan pesan membuat citra stegotext sukar dibedakan oleh mata dengan citra covertext-nya. Jika covertext berupa audio, maka indera telinga tidak dapat mendeteksi perubahan pada audio stegotext-nya.
b. Fidelity
Mutu media penampung tidak berubah banyak akibat penyisipan. Perubahan tersebut tidak dapat dipersepsi oleh inderawi. Misalnya jika covertext berupa citra, maka penyisipan pesan membuat citra stegotext sukar dibedakan oleh mata dengan citra covertext-nya. Jika covertext berupa audio, maka audio stegotext tidak rusak dan indera telinga tidak dapat mendeteksi perubahan tersebut.
c. Recovery
Pesan yang disembunyikan harus dapat diungkap kembali (reveal). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu pesan rahasia di dalam stegotext harus dapat diambil kembali untuk digunakan lebih lanjut.
2.10.2 Sejarah Steganografi
Steganografi sudah dikenal oleh bangsa Yunani sejak lama. Herodatus, seorang penguasa Yunani, mengirimkan pesan rahasia menggunakan kepala budak atau prajurit sebagai medai. Caranya, rambut budak dibotaki, lalu pesan rahasia ditulis pada kulit kepala budak. Setelah rambut budak tumbuh cukup banyal (yang berarti menutupi pesan rahasia), budak tersebut dikirim ketempat tujuan untuk membawa pesan rahasia dikepalanya. Di tempat penerima kepala budak dibotaki kembali untuk membaca pesan yang tersembunyi dibalik rambutnya. Pesan tersebut berisi peringatan tentang invasi dari Bangsa Persia[12].
(35)
2.10.3 Teknik Steganografi Kombinasi End Of File dan First 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[9]. Untuk mengenal data yang disisipkan pada akhir file, diperlukan suatu tanda pengenal atau simbol pada awal dan akhir data yang akan disisipkan[8]. Dengan metode ini pesan yang disisipkan jumlahnya tak terbatas. Akan tetapi efek sampingnya adalah ukuran file menjadi lebih besar dari ukuran semula[4]. Sedangkan untuk teknik FOF atau First Of File merupakan kebalikannya, yaitu data atau pesan rahasia ditambahkan pada awal file.
2.11 Citra Bitmap
Citra bitmap sering disebut juga dengan citra raster. Dipresentasikan dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau sistem bilangan lain[15]. File bitmap merupakan format file citra yang tidak mengalami proses kompresi sehingga kualitas gambar yang dihasilkan baik daripada file citra dengan format lain.
Gambar 2.8 Contoh Citra Bitmap
Pada file bitmap, nilai intensitas pixel dalam citra dipetakan ke dalam sejumlah bit tertentu yang umumnya panjang setiap pixel adalah 8 bit. Delapan bit ini merepresentasikan nilai intensitas pixel. Dengan demikian ada sebanyak 28 = 256 derajat keabuan, mulai dari 0 sampai 255. Nilai intensitas citra pada data bitmap terdiri dari bilangan biner. Untuk citra true color jumlah bit per pixel sebanyak 24 bit
(36)
yang terdiri dari nilai red, green dan blue (RGB). Untuk mendapatkan nilai RGB setiap pixel dilakukan dengan membaca nilai pixel dan mengkonversikan dari nilai biner ke nilai desimal[8].
Terdapat beberapa format dari citra bitmap, salah satunya format .bmp merupakan format penyimpanan standar tanpa kompresi yang umum dapat digunakan untuk menyimpan citra biner hingga citra warna yang dikembangkan oleh Microsoft[13].
2.12 Penelitian Terdahulu
Berikut ini beberapa penelitian yang terkait dengan algoritma Massey- Omura dan teknik steganografi End Of File :
1. Penelitian yang dilakukan oleh Muhammad Reza, Muhammad Andri Budiman, dan Dedy Arisandi yaitu membangun sistem untuk mengenkripsi dan mendekripsi pesan teks menggunakan algoritma Massey-Omura. Dimana Algoritma Massey-Omura ini juga membutuhkan metode The Sieve of Eratosthenes untuk membantu membangkitkan bilangan prima, algoritma Euclidean GCD untuk mencari dua buah bilangan bulat yang relatif prima dan untuk proses enkripsi menggunakan algoritma Modulo Exponential yang berfungsi menghitung nilai perpangkatan modulo bilangan besar serta algoritma Modulo Invers untuk proses dekripsi[5].
2. Penelitian oleh Krisnawati membahas bagaimana menyisipkan teks ke dalam citra grayscale dengan menggunakan dua metode yaitu metode Least Significant Bit (LSB) dan metode End Of File (EOF). Alasan digunakannya citra grayscale adalah karena citra ini bentuk digital yang lebih sederhana dibandingkan dengan citra RGB. Dalam penelitiannya, diperoleh bahwa, kelebihan metode LSB adalah ukuran citra yang mengandung pesan tidak berubah, sedangkan kekurangannya adalah kapasitas pesan yang akan disisipkan terbatas. Sebaliknya metode EOF
(37)
mempunyai kelebihan dapat menyisipkan pesan dalam jumlah yang tidak terbatas, sedangkan kekurangannya adalah kapasitas file citra akan bertambah[4].
3. Penelitian yang dilakukan oleh Henny Wandani, mengimplementasikan Teknik steganografi End Of file dengan algoritma Rabin Public Key. Dilakukan proses enkripsi data atau pesan rahasia yang berupa data teks angka dengan jumlah maksimum yang dimasukkan adalah 24 digit angka, kemudian hasil enkripsi (ciphertext) akan disembunyikan ke dalam suatu file gambar yang berformat bitmap dengan ukuran minimum 25 x 25. Selanjutnya, dilakukan proses ekstraksi dan dekripsi ciphertext, sehingga diperoleh kembali plaintext yang berupa data teks angka[8].
4. Penelitian yang dilakukan oleh Arfiyah membandingkan Teknik Steganografi First Of File, End Of File, dan kombinasi keduanya . Untuk teknik kombinasi End Of File dan First Of File dilakukan secara vertikal sehingga proses nilai desimal pesan disisipkan pada bagian atas dan bawah pixel matriks citra RGB[2].
(38)
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem merupakan fase awal untuk pengembangan sistem. Tahap ini mempelajari sebuah sistem dengan menguraikan komponen-komponen di dalamnya dan bagaimana semuanya berinteraksi sehingga sistem yang dibangun dapat mencapai tujuan yang diharapkan.
3.1.1 Analisis Masalah
Perkembangan komunikasi data yang semakin pesat mendorong para pelaku dibidangnya berusaha untuk menemukan cara yang aman untuk mengirimkan suatu pesan. Salah satunya adalah dengan teknik kriptografi yang menyandikan pesan sebagai kode aneh yang membuat pihak luar penasaran dan berusaha untuk mengetahui kode tersebut[4].
Sehingga untuk meningkatkan pengamanan pesan, di lakukanlah penggabungan kriptografi dengan steganografi. Algoritma kriptografi yang digunakan adalah algoritma Massey-Omura dengan teknik steganografi yang mengkombinasikan metode End Of File dan First Of File.
Dalam analisis masalah, dapat digambarkan lebih jelas melalui Diagram Ishikawa (fishbone Diagram) yang dapat dilihat pada Gambar 3.1.
(39)
Algoritma Kriptografi
Algoritma Kriptografi
Methods
Methods
People
People
Pengamanan Pesan
Pengamanan Pesan Kekhawatiran akan
pembobolan pesan
Proses enkripsi dan dekripsi dilakukan dengan
Algoritma Massey omura yang tidak ada pendistribusian kunci
Sudah banyak algoritma kriptografi
yang tidak aman
Teknik Steganografi
Teknik Steganografi
Hanya menggunakan satu teknik untuk menyembunyikan
pesan
Proses embedding dan extracting dilakukan dengan
Teknik Steganografi dikombinasikan antara End
Of File dan First Of File
Gambar 3.1 Diagram Ishikawa Analisis Masalah
3.1.2 Analisis Persyaratan
Analisis persyaratan merupakan tahap yang penting, yaitu menentukan persyaratan dari sistem seperti kebutuhan dari pengguna. Analisis persyaratan terbagi dua, yaitu analisis fungsional dan analisis nonfungsional
3.1.2.1Analisis Fungsional
Analisis fungsional dilakukan untuk dapat mendeskripsikan tentang aktivitas dan layanan apa saja yang harus disediakan oleh sebuah sistem. Berikut adalah aktivitas yang dapat dilakukan oleh sistem.
1. File citra yang digunakan untuk menyisipkan pesan adalah file bitmap dengan Format *.bmp dan maksimal ukuran citra 2592 x 1944 pixel.
2. File pesan yang akan dienkripsi adalah pesan teks dengan format *.txt dan terbatas hanya sampai ( (2592 x 3 x 2) – 2 ).
3. Metode yang digunakan untuk membantu membangkitkan bilangan prima adalah metode Fermat’s Little Theorem.
4. Algoritma yang digunakan untuk mencari dua buah bilangan bulat yang relatif prima adalah Euclidean GCD.
5. Karakter yang digunakan berdasarkan tabel ASCII 256.
(40)
3.1.2.2 Analisis Nonfungsional
Analisis nonfungsional dilakukan untuk dapat mendeskripsikan mengenai fitur, karakteristik dan batasan lainnya yang menentukan kepuasan pengguna terhadap sistem.
1. Performa
Sistem yang dibangun harus dapat menunjukkan hasil dari Enkripsi-Embedding dan Dekripsi-Extracting.
2. Mudah dipelajari dan digunakan
Sistem yang akan dibangun harus memiliki tampilan yang user friendly dan juga memiliki respon yang baik dalam proses penggunaannya.
3. Hemat biaya
Sistem yang dibangun bebas digunakan dan tidak membutuhkan perangkat lain. 4. Dokumentasi
Sistem yang dibangun dapat menyimpan pesan dari hasil enkripsi sesuai algoritma kriptografi serta dapat menyimpan citra hasil penyisipan sesuai metode steganografi. 5. Manajemen kualitas
Sistem yang dibangun akan memiliki kualitas yang baik. 6. Kontrol
Sistem yang dibangun akan menampilkan kotak pesan error untuk setiap input yang tidak sesuai dengan sistem.
(41)
3.1.3 Pemodelan Persyaratan Sistem Dengan Use Case
Pada dasarnya use case adalah urutan langkah-langkah yang saling terkait untuk satu tujuan. Sedangkan use case diagram adalah suatu diagram yang menggambarkan interaksi antara sistem dengan pengguna. Pemodelan use case merupakan pemodelan yang baik untuk menentukan, mendokumentasikan dan memahami persyaratan fungsional.
Use case diawali oleh pengguna yang disebut Actor yang menginisiasi kegiatan sistem yaitu sebuah use case. Yang berperan sebagai Actor dalam sistem ini terdiri dari pengirim pesan (Sender) dan penerima pesan (Recipient). Proses yang dilakukan Sender yaitu Prime Generator, Key GeneratorA, Encryption1, Embedding1, Extracting2, Decryption1, Embedding3. Sedangkan Recipient melakukan proses Extracting1, Key GeneratorB, Encryption2, Embedding2, Extracting3, Decryption2.
Use Case diagram sistem ini dapat dilihat pada Gambar 3.2
System
Prime Generator Key Generator
A Encryption 1 Embedding 1
Extracting 1
Encryption 2 Embedding 2 Extracting 2
Decryption 1 Embedding 3
Extracting 3 Decryption 2 Key Generator
B
(42)
Gambar 3.2 Use Case Diagram Sistem 3.1.3.1Spesifikasi Use Case
Spesifikasi Use Case Prime Generator dapat dilihat pada Tabel 3.1
Tabel 3.1 Spesifikasi Use Case Prime Generator
Name Prime Generator
Actors Sender
Trigger Sender memilih menu Start
Preconditions Sender mengeksekusi tombol Generate Postconditions Sender mendapatkan nilai bilangan prima p Success Scenario 1. Sender memilih menu Start
2. Sistem menampilkan halaman Encryption 1 3. Sender mengeksekusi tombol Generate
4. Sistem membangkitkan bilangan prima p dan menampilkan nilai bilangan prima p
5. Sender dapat melihat nilai bilangan prima p
Alternative Flows Sender dapat mengeksekusi tombol Generate kembali jika sistem menampilkan nilai bilangan prima p yang tidak diinginkan
Activity Diagram untuk Prime Generator dapat dilihat pada Gambar 3.3
Sender
System
Memilih menu Start
Mengeksekusi tombol Generate
Melihat nilai bilangan prima P
Menampilkan halaman Encryption1
Membangkitkan bilangan prima p Dan menampilkan nilai p
(43)
Gambar 3.3 Activity Diagram untuk Prime Generator
Spesifikasi Use Case Key Generator A dapat dilihat pada Tabel 3.2
Tabel 3.2 Spesifikasi Use Case untuk Key Generator A
Name Key Generator
Actors Sender
Trigger Sender memiliki bilangan prima p Preconditions Sender mengeksekusi tombol Generate
Postconditions Sender mendapatkan nilai kunci Enkripsi eA dan nilai kunci Dekripsi dA
Success Scenario 1. Sender memiliki bilangan prima p yang sesuai 2. Sender mengeksekusi tombol Generate
3. Sistem membangkitkan kunci enkripsi eA dan kunci dekripsi dA dan menampilkannya
4. Sender dapat melihat nilai eA dan dA Alternative Flows -
Activity Diagram untuk Key Generator A yang dapat dilihat pada Gambar 3.4
Sender
System
Memiliki bilangan P
Mengeksekusi tombol Generate Membangkitkan kunci enkripsi eA dan kunci dekripsi dA
Menampilkan eA dan dA Melihat nilai eA dan dA
(44)
Spesifikasi Use Case Encryption1 dapat dilihat pada Tabel 3.3
Tabel 3.3 Spesifikasi Use Case untuk Encryption1
Name Encryption1
Actors Sender
Trigger Sender mendapatkan nilai kunci enkripsi eA dan nilai kunci dekripsi dA
Preconditions Sender telah memilih Plaintext yang akan di enkripsi dari direktori atau input langsung
Postconditions Sender dapat melihat Ciphertext1 hasil Encryption1
Success Scenario 1. Sender mendapatkan nilai kunci enkripsi eA dan nilai kunci dekripsi dA
2. Sender memilih Plaintext yang ingin di enkripsi dari direktori atau input langsung
3. Sender mengeksekusi tombol Encypt1
4. Sistem melakukan proses Encyption1 terhadap Plaintext 5. Sender dapat melihat Ciphertext1 hasil Encyption1 Alternative Flows -
Activity Diagram untuk Encryption1 yang dapat dilihat pada Gambar 3.5
Sender System
Memiliki nilai eA dan dA
Memilih/input langsung Plaintext Menampilkan Plaintext
Mengeksekusi tombol encrypt1
Melakukan proses enkripsi
Menampilkan Ciphertext1 Melihat hasil Ciphertext1
(45)
Gambar 3.5 Activity Diagram untuk Encryption1
Spesifikasi Use Case Embedding1 dapat dilihat pada Tabel 3.4
Tabel 3.4 Spesifikasi Use Case untuk Embedding1
Name Embedding1
Actors Sender
Trigger Sender memiliki Ciphertext1 yang akan di Embed
Preconditions Sender telah memilih Cover Image1 sebagai media penampung Ciphertext1
Postconditions Sender mendapatkan Stego Image1
Success Scenario 1. Sender memiliki Ciphertext1 yang akan di Embed
2. Sender mengeksekusi tombol Open Cover Image1 dan memilih Image
3. Sistem menampilkan Cover Image1 yang dipilih 4. Sender mengeksekusi tombol Embed1
5. Sistem melakukan proses Embedding1 dan menampilkan hasil StegoImage1
6. Sender dapat melihat StegoImage1dari hasil Embedding1 dan mengeksekusi tombol Save Stego Image1
7. Sistem menyimpan hasil Stego Image1 Alternative Flows -
Berikut adalah Activity Diagram untuk Embedding1
Sender System
Memiliki Ciphertext1
Mengeksekusi tombol Open Cover Image1
Memilih Image Menampilkan Cover Image1 yang dipilih
Mengeksekusi tombol Embed1
Melakukan proses Embedding1
Menampilkan Stego Image1 Melihat Stego Image1
Menyimpan Stego Image1 Mengeksekusi tombol Save Stego Image1
(46)
Gambar 3.6 Activity Diagram untuk Embedding1
Spesifikasi Use Case Extracting1 dapat dilihat pada Tabel 3.5
Tabel 3.5 Spesifikasi Use Case untuk Extracting1
Name Extracting1
Actors Recipient
Trigger Recipient menerima Stego Image1
Preconditions Recipient membuka Stego Image1 yang telah dikirim Sender Postconditions Recipient dapat melihat Chipertext1 hasil Extracting1 Success Scenario 1. Recipient mengeksekusi tombol Open Stego Image1 dan
memilih Image
2. Sistem menampilkan Stego Image1 yang dipilih 3. Recipient mengeksekusi tombol Extract1
4. Sistem melakukan Extracting1 dan menampilkan Ciphertext1 5. Recipient dapat melihat Ciphertext1
Alternative Flows -
Activity Diagram untuk Extracting1 dapat dilihat pada Gambar 3.7
Recipient
System
Mengeksekusi tombol Open Stego Image1
Memilih Image Menampilkan Stego Image1 yang dipilih
Mengeksekusi tombol Extract1
Melakukan proses Extracting1
Menampilkan Ciphertext1 Melihat Ciphertext1
(47)
Gambar 3.7 Activity Diagram untuk Extracting1
Spesifikasi Use Case Key Generator B dapat dilihat pada Tabel 3.6
Tabel 3.6 Spesifikasi Use Case untuk Key Generator B
Name Key Generator B
Actors Recipient
Trigger Recipient memiliki Ciphertext1 yang ingin di enkrip Preconditions Recipient mengeksekusi tombol Generate
Postconditions Recipient mendapatkan nilai kunci Enkripsi eB dan nilai kunci Dekripsi dB
Success Scenario 1. Recipient memiliki Ciphertext1 yang ingin di enkrip 2. Recipient mengeksekusi tombol Generate
3. Sistem membangkitkan kunci Enkripsi eB dan kunci Dekripsi dB kemudian menampilkannya
4. Recipient dapat melihat nilai eA dan dA Alternative Flows -
Activity Diagram untuk Key Generator B dapat dilihat pada Gambar 3.8
Recipient
System
Memiliki Ciphertext1
Mengeksekusi tombol Generate Membangkitkan kunci enkripsi eB dan kunci dekripsi dB
Menampilkan eB dan dB Melihat nilai eB dan dB
(48)
Spesifikasi Use Case Encryption2 dapat dilihat pada Tabel 3.7
Tabel 3.7 Spesifikasi Use Case untuk Encryption2
Name Encryption2
Actors Recipient
Trigger Recipient memiliki Ciphertext1 dan mendapatkan nilai kunci enkripsi eB dan nilai kunci dekripsi dB
Preconditions Recipient mengeksekusi tombol Encrypt2
Postconditions Recipient dapat melihat Ciphertext2 hasil Encryption2
Success Scenario 1. Recipient telah memiliki Ciphertext1 dan mendapatkan nilai kunci enkripsi eB dan nilai kunci dekripsi dB
2. Recipient mengeksekusi tombol Encrypt2
3. Sistem melakukan proses Encyption2 terhadap Ciphertext1 dan menampilkan Ciphertext2
4. Recipient dapat melihat Ciphertext2 hasil Encyption2 Alternative Flows -
Activity Diagram untuk Encryption2 dapat dilihat pada Gambar 3.9
Recipient
System
Memiliki Ciphertext1 dan kunci eB dan dB
Mengeksekusi tombol encrypt2 Melakukan Encryption2
Menampilkan Ciphertext2 Melihat hasil Ciphertext2
(49)
Gambar 3.9 Activity Diagram untuk Encryption2
Spesifikasi Use Case Embedding2 dapat dilihat pada Tabel 3.8
Tabel 3.8 Spesifikasi Use Case untuk Embedding2
Name Embedding2
Actors Recipient
Trigger Recipient memiliki Ciphertext2 yang akan di Embed
Preconditions Recipient telah memilih Cover Image2 sebagai media penampung Ciphertext2
Postconditions Recipient mendapatkan Stego Image2
Success Scenario 1. Recipient memiliki Ciphertext1 yang akan di Embed 2. Recipient mengeksekusi tombol Open Cover Image2 dan memilih Image
3. Sistem menampilkan Cover Image2 yang dipilih 4. Recipient mengeksekusi tombol Embed2
5. Sistem melakukan proses Embedding2 dan menampilkan hasil StegoImage2
6. Recipient dapat melihat StegoImage2 yang merupakan hasil dari Embedding2 dan mengeksekusi tombol Save Stego Image2 7. Sistem menyimpan hasil Stego Image2
Alternative Flows -
Activity Diagram untuk Embedding2 dapat dilihat pada Gambar 3.10
Recipient System
Memiliki Ciphertext2
Mengeksekusi tombol Open Cover Image2
Memilih Image Menampilkan Yang dipilihCover Image2
Mengeksekusi tombol embed2
Melakukan proses Embedding2
Menampilkan Stego Image2 Melihat Stego Image1
Menyimpan Stego Image2 Mengeksekusi tombol Save Stego Image2
(50)
Gambar 3.10 Activity Diagram untuk Embedding2
Spesifikasi Use Case Extracting2 dapat dilihat pada Tabel 3.9
Tabel 3.9 Spesifikasi Use Case untuk Extracting2
Name Extracting2
Actors Sender
Trigger Sender menerima Stego Image2
Preconditions Sender membuka Stego Image2 yang telah dikirim Recipient Postconditions Sender dapat melihat Chipertext2 hasil Extracting2
Success Scenario 1. Sender mengeksekusi tombol Open Stego Image2 dan memilih Image
2. Sistem menampilkan Stego Image2 yang dipilih 3. Sender mengeksekusi tombol Extract2
4. Sistem melakukan Extracting2 dan menampilkan Ciphertext2 5. Sender dapat melihat Ciphertext2
Alternative Flows -
Activity Diagram untuk Extracting2 dapat dilihat pada Gambar 3.11
Sender
System
Mengeksekusi tombol Open Stego Image2
Memilih Image Menampilkan Stego Image2 yang dipilih
Mengeksekusi tombol extract2
Melakukan proses Extracting2
Menampilkan Ciphertext2 Melihat Ciphertext2
(51)
Gambar 3.11 Activity Diagram untuk Extracting2
Spesifikasi Use Case Decryption2 dapat dilihat pada Tabel 3.10
Tabel 3.10 Spesifikasi Use Case untuk Decryption1
Name Decryption1
Actors Sender
Trigger Sender memiliki Ciphertext2
Preconditions Sender mengeksekusi tombol Decrypt1
Postconditions Sender dapat melihat Ciphertext3 hasil Encryption2 Success Scenario 1. Sender memiliki Ciphertext2
2. Sender mengeksekusi tombol Decrypt1
3. Sistem melakukan proses Decryption1 dan menampilkan Ciphertext3
4. Sender dapat melihat Ciphertext3 hasil dari proses Encyption1 Alternative Flows -
Activity Diagram untuk Decryption1dapat dilihat pada Gambar 3.12
Sender
System
Memiliki Ciphertext2
Mengeksekusi tombol decrypt1 Melakukan Decryption1
Menampilkan Ciphertext3 Melihat Ciphertext3
Gambar 3.12 Activity Diagram untuk Decryption1
(52)
Spesifikasi Use Case Embedding3 dapat dilihat pada Tabel 3.11
Tabel 3.11 Spesifikasi Use Case untuk Embedding3
Name Embedding3
Actors Sender
Trigger Sender memiliki Ciphertext3 yang akan di Embed
Preconditions Sender telah memilih Cover Image3 sebagai media penampung Ciphertext3
Postconditions Sender mendapatkan Stego Image3
Success Scenario 1. Sender memiliki Ciphertext3 yang akan di Embed
2. Sender mengeksekusi tombol Open Cover Image3 dan memilih Image
3. Sistem menampilkan Cover Image3 yang dipilih 4. Sender mengeksekusi tombol Embed3
5. Sistem melakukan proses Embedding3 dan menampilkan hasil StegoImage3
6. Sender dapat melihat StegoImage3 yang merupakan hasil dari Embedding3 dan mengeksekusi tombol Save Stego Image3 7. Sistem menyimpan hasil Stego Image3
Alternative Flows -
Activity Diagram untuk Embedding3 dapat dilihat pada Gambar 3.13
Sender System
Memiliki Ciphertext3
Mengeksekusi tombol Open Cover Image3
Memilih Image Menampilkan Cover Image3 Yang dipilih
Mengeksekusi tombol embed3
Melakukan proses Embedding3
Menampilkan Stego Image3 Melihat Stego Image3
Menyimpan Stego Image3 Mengeksekusi tombol Save Stego Image3
(53)
Gambar 3.13 Activity Diagram untuk Embedding3
Spesifikasi Use Case Extracting3 dapat dilihat pada Tabel 3.12
Tabel 3.12 Spesifikasi Use Case untuk Extracting3
Name Extracting3
Actors Recipient
Trigger Recipient menerima Stego Image3
Preconditions Recipient membuka Stego Image3 yang telah dikirim Sender Postconditions Recipient dapat melihat Chipertext3 hasil Extracting3 Success Scenario 1. Recipient mengeksekusi tombol Open Stego Image3 dan
memilih Image
2. Sistem menampilkan Stego Image3 yang dipilih 3. Recipient mengeksekusi tombol Extract3
4. Sistem melakukan Extracting3 dan menampilkan Ciphertext3 5. Recipient dapat melihat Ciphertext3
Alternative Flows -
Activity Diagram untuk Extracting3 dapat dilihat pada Gambar 3.14
Recipient
System
Mengeksekusi tombol Open Stego Image3
Memilih Image Menampilkan Stego Image3
Yang dipilih
Mengeksekusi tombol extract3
Melakukan proses Extracting3
Menampilkan Ciphertext3 Melihat Ciphertext3
(54)
Gambar 3.14 Activity Diagram untuk Extracting3
Spesifikasi Use Case Decryption2 dapat dilihat pada Tabel 3.13
Tabel 3.13 Tabel Spesifikasi Use Case untuk Decryption2
Name Decryption2
Actors Recipient
Trigger Recipient memiliki Ciphertext3
Preconditions Recipient mengeksekusi tombol Decrypt2
Postconditions Recipient dapat melihat Ciphertext3 hasil Encryption2 Success Scenario 1. Recipient memiliki Ciphertext3
2. Recipient mengeksekusi tombol Decrypt2
3. Sistem melakukan proses Decryption2 dan menampilkan Plaintext
4. Recipient dapat melihat Plaintext awal hasil dari proses Encyption2 dan mengeksekusi tombol Save Plaintext 5. Sistem menyimpan Plaintext
Alternative Flows -
Activity Diagram untuk Decryption2 dapat dilihat pada Gambar 3.15
Recipient
System
Memiliki Ciphertext3
Mengeksekusi tombol decrypt2
Melakukan Decryption2
Menampilkan Plaintext awal Melihat Plaintext awal
Mengeksekusi tombol Save Palintext
(55)
Gambar 3.15 Activity Diagram untuk Decryption2 3.1.4 Pseudocode
Pseudocode adalah kode atau bentuk penulisan algoritma dengan struktur pemrograman yang sederhana dan dapat dimengerti manusia sehingga memudahkan dalam memahami suatu algoritma.
3.1.4.1Pseudocode Proses Generate Prime
Berikut adalah Pseudocode untuk proses Generate Prime
ulang:
Random rndp = new Random()
p ← rndp.Next(257, 1000)
if (Fermat(p))
prima.Text ← Convert.ToString(p)
else
goto ulang end if
Proses Generate Prime dilakukan dengan cara melakukan random nilai bilangan prima p mulai dari 257 hingga 1000 dan selanjutnya nilai p yang dirandom diperiksa sesuai proses Fermat. Jika nilai p sesuai dengan proses Fermat maka nilai p akan didapatkan.
3.1.4.2Pseudocode Proses Fermat
Berikut adalah Pseudocode Proses Fermat
BigInteger a = 0;
for (int i = 0; i <= p.ToString().Length; i++) Random rnda = new Random();
a = rnda.Next(2, (int)p);
if (!(BigInteger.ModPow(a, p - 1, p).IsOne)) return false
end if end for return true
(56)
Proses Fermat dilakukan untuk mencari bilangan prima yang akan digunakan untuk membangkitkan nilai kunci. Bilangan prima didapatkan dengan melakukan random nilai bilangan bulat a dengan bilangan prima p dalam rentang 1 < �< � dan selanjutnya mengikuti Fermat Little’s Theorem yaitu ��−1 ≡(����).
3.1.4.3Pseudocode Proses Euclidean GCD
Berikut adalah Pseudocode untuk proses Euclidean GCD
BigInteger r ← m % n
if (r = 0) return n
return cariGCD(n, r)
Pada proses Euclidean GCD digunakan pada saaat mencari nilai kunci enkripsi. Untuk memeriksa apakah nilai kunci enkripsi relatif prima dengan p-1 dimana p adalah bilangan prima.
3.1.4.4Pseudocode Proses Generate Key
Berikut adalah Pseudocode untuk proses Generate Key
ulange:
Random rnde = new Random()
e ← rnde.Next(2, (int)p - 1)
if (cariGCD(e, p) = 1)
nilaie.Text ← Convert.ToString(e)
BigInteger hasil = 0; d = 0;
while (hasil != 1) dA++
hasil ← ((d * e) % (p - 1));
if (d > 100000) goto ulange
end if
nilaid.Text ← d.ToString()
else
goto ulange end if
(57)
Pada proses Generate Key dilakukan random nilai kunci enkripsi e dalam rentang 1 < � < � −1 dan dilakukan pengecekan berdasarkan algoritma Euclidean GCD. Jika sesuai, maka didapatkan nilai e yang selanjutnya digunakan untuk mencari nilai kunci dekripsi dengan cara melakukan modulo invers terhadap kunci e atau
��� ≡1 (���� −1). Selanjutnya nilai d dibatasi sampai nilai 100000 untuk mengurangi proses yang terlalu lama pada generate key. Jika nilai d yang didapatkan lebih besar dari 100000 maka akan mengulangi proses random nilai kunci enkripsi.
3.1.4.5Pseudocode Proses Enkripsi
Berikut adalah Pseudocode untuk proses Enkripsi
string plaintext = plain.Text
cipher1enkrip1.Text = "" string pA = ""
foreach (char c in plaintext)
pA += System.Convert.ToInt32(c).ToString() + " " end foreach
string[] temp = pA.Split(' ')
Cipher ← new BigInteger[temp.Length]
for (int i = 0; i < Cipher.Length - 1; i++)
Cipher[i] ← BigInteger.Pow(BigInteger.Parse(temp[i]),
(int)eA) % (int)p
cipher1enkrip1.Text += Cipher[i].ToString() + " "
end for
SCipher ← new int[(temp.Length * 2) - 2]
string mb = "" string cip
for (int i = 0, j = 0; i < Cipher.Length - 1; i++, j+=2)
cip ← Cipher[i].ToString()
if (cip.Length = 1)
cip ← "000" + cip
else if (cip.Length = 2)
cip ← "00" + cip
else if (cip.Length = 3)
cip ← "0" + cip
SCipher[j] ← Convert.ToInt32(cip.Substring(0, 2))
SCipher[j + 1]←Convert.ToInt32(cip.Substring(2,2))
mb += SCipher[j].ToString() + " " +
SCipher[j +1].ToString() + " "
(58)
Proses enkripsi dilakukan setelah memiliki nilai bilangan prima dan nilai kunci enkripsi melalui perhitungan � =������ dengan M adalah nilai karakter berdasarkan Tabel ASCII. Kemudian setelah didapatkan nilai C (Ciphertext) dalam bentuk angka, dilakukan pengecekan jumlah digit angka yang dihasilkan per karakter. Jika kurang dari 4 digit, maka akan ditambah digitnya sampai memenuhi syarat 4 digit. Kemudian dilakukan pemisahan (split) setiap 2 digit untuk mendapatkan nilai pesan yang akan disisip pada citra.
3.1.4.6Peseudocode Proses Embedding
Berikut adalah Pseudocode untuk proses Embedding
int limit ← plain.TextLength
Bitmap image ← new Bitmap(pictureBox1.Image)
int x ← image.Width
int y ← image.Height
if ((x * 3) - 2 < limit)
MessageBox.Show("Message is over limit of image
pixel\r\nPlease choose another image,", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
else
Bitmap output ← new Bitmap(image.Width, 1)
Bitmap output2 ← new Bitmap(image.Width, 1)
for (int i = 0; i < 1; i++)
for (int j = 0; j < x; j++)
output.SetPixel(j, i, Color.FromArgb(255, 0, 0, 0))
output2.SetPixel(j, i, Color.FromArgb(255, 0, 0, 0))
end for end for
int x1 = 0, x2 = 0, index = 0, count = 0 for (int i = 0; i < y; i++)
for (int j = 0; j < x * 2; j++)
if (index = SCipher.Length) goto habis
if (count % 2 = 0)
if (index + 2 = SCipher.Length)
(59)
output.SetPixel(x1, i,Color.FromArgb (255, (int)SCipher[index], (int)SCipher[index + 1], 0))
index += 2 x1++
count++
else if (index + 1 = SCipher.Length)
output.SetPixel(x1, i, Color.FromArgb (255, (int)SCipher[index], 0, 0))
index++ x1++ count++ else
output.SetPixel(x1, i, Color.FromArgb (255, (int)SCipher[index], (int)SCipher[index + 1],
(int)SCipher[index + 2]))
index += 3 x1++ count++ end if end if else
if (index + 2 = SCipher.Length)
output2.SetPixel(x2, i,Color.FromArgb (255, (int)SCipher[index],
(int)SCipher[index + 1], 0))
index += 2 x2++
count++
else if (index + 1 = SCipher.Length)
output2.SetPixel(x2, i,Color.FromArgb (255, (int)SCipher[index], 0, 0))
index++ x2++ count++ else output2.SetPixel(x2, i,Color.FromArgb (255, (int)SCipher[index],
(int)SCipher[index + 1], (int)SCipher[index + 2]))
index += 3 x2++ count++ end if end for end for end if habis:
(1)
using (Graphics graphics = Graphics.FromImage(outputImage)) {
graphics.DrawImage(output, new Rectangle(new Point(), output.Size),
new Rectangle(new Point(), output.Size), GraphicsUnit.Pixel);
graphics.DrawImage(image, new Rectangle(new Point(0, output.Height + 1), image.Size), new Rectangle(new Point(), image.Size), GraphicsUnit.Pixel);
graphics.DrawImage(output2, new Rectangle
(new Point(0, image.Height + 1), output2.Size), new Rectangle(new Point(), output2.Size),
GraphicsUnit.Pixel); }
pictureBox2.Image = outputImage; sw.Stop();
label12.Text = "Waktu Embed :\r\n " + sw.Elapsed; DialogResult dialog = MessageBox.Show("Embedding succeed\rplease save stego image", "Info",
MessageBoxButtons.OK, MessageBoxIcon.Information); SaveSI3.Enabled = true;
} }
private void SaveSI3_Click_1(object sender, EventArgs e) {
SaveFileDialog saveDialogDekrip1 = new SaveFileDialog(); saveDialogDekrip1.Title = "Save Stego Image";
saveDialogDekrip1.Filter = "Image Files(*.bmp)|*.bmp"; if (DialogResult.OK == saveDialogDekrip1.ShowDialog()) {
pictureBox2.Image.Save(saveDialogDekrip1.FileName, ImageFormat.Bmp);
{
MessageBox.Show("Stego Image Saved", "Info", MessageBoxButtons.OK,MessageBoxIcon.Information); }
} }
private void next3_Click(object sender, EventArgs e) {
this.Hide();
Form7 fr7 = new Form7(); fr7.ShowDialog();
} } }
(2)
Kode Program Form decryption2 :
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms; using System.IO;
using System.Drawing.Imaging; using System.Numerics;
using System.Diagnostics; namespace kriptostegano {
public partial class Form7 : Form {
Bitmap newBitmap; Image gambar; public Form7() {
InitializeComponent(); }
private void homeToolStripMenuItem_Click(object sender, EventArgs e) {
this.Hide();
Form1 fr1 = new Form1(); fr1.ShowDialog();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e) {
this.Hide();
Form2 fr2 = new Form2(); fr2.ShowDialog();
}
private void helpToolStripMenuItem_Click(object sender, EventArgs e) {
this.Hide();
Form3 fr3 = new Form3(); fr3.ShowDialog();
}
private void startToolStripMenuItem_Click(object sender, EventArgs e) {
this.Hide();
Form4 fr4 = new Form4(); fr4.ShowDialog();
}
(3)
{
DialogResult dialog = MessageBox.Show("Are you sure to exit this application?", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialog == DialogResult.Yes) {
Application.Exit(); }
}
private void Form7_Load(object sender, EventArgs e) {
GroupBox grup = Application.OpenForms["Form4"]. Controls["groupBox1"] as GroupBox;
TextBox nilaiP = grup.Controls["prima"] as TextBox; prima3.Text = nilaiP.Text;
GroupBox grup2 = Application.OpenForms["Form5"]. Controls["groupBox3"] as GroupBox;
GroupBox grup3 = grup2.Controls["groupBox2"] as GroupBox; TextBox dB = grup3.Controls["nilaidB"] as TextBox;
textBox3.Text = dB.Text;
btnExtract3.Enabled = false; btnDecrypt2.Enabled = false; saveplainawal.Enabled = false; }
private void opnSI3_Click_1(object sender, EventArgs e) {
OpenFileDialog openDialogDekrip2 = new OpenFileDialog(); openDialogDekrip2.Title = "Open Stego Image";
openDialogDekrip2.Filter = "Image Files(*.bmp)|*.bmp"; DialogResult dr = openDialogDekrip2.ShowDialog(); if (dr == DialogResult.OK)
{
gambar = Image.FromFile(openDialogDekrip2.FileName); newBitmap = new Bitmap(openDialogDekrip2.FileName); pictureBox3.Image = gambar;
btnExtract3.Enabled = true; }
}
private void btnExtract3_Click(object sender, EventArgs e) {
Stopwatch sw = new Stopwatch(); sw.Start();
Bitmap image = new Bitmap(pictureBox3.Image); int x = image.Width;
int y = image.Height; string px = "";
int r, g, b;
string strR, strG, strB; for (int i = 0; i < x; i++) {
(4)
for (int j = 0; j < y; j++) {
if (j == 0 || j == y - 1) {
r = image.GetPixel(i, j).R; if (r.ToString().Length == 1) strR = "0" + r;
else
strR = r.ToString(); g = image.GetPixel(i, j).G; if (g.ToString().Length == 1) strG = "0" + g;
else
strG = g.ToString(); b = image.GetPixel(i, j).B; if (b.ToString().Length == 1) strB = "0" + b;
else
strB = b.ToString();
px += strR + " " + strG + " " + strB + " "; }
} }
int count = 1;
for (int i = 0; i < px.Length; i++) {
if (px[i] == ' ') {
if (count % 2 != 0)
px = px.Remove(i, 1); count++;
} }
int index = px.IndexOf(" 0000 0000"); if (index < 0)
{
DialogResult dialognohidden = MessageBox.Show("no hidden message\rplease input another image", "Info", MessageBoxButtons.OK, MessageBoxIcon.Warning);
} else {
px = px.Substring(0, index); string[] temp = px.Split(' '); px = "";
for (int i = 0; i < temp.Length; i++) {
px += Convert.ToInt32(temp[i]) + " "; }
cipher3dekrip2.Text = px; sw.Stop();
label1.Text = "Waktu Extract :\r\n " + sw.Elapsed; DialogResult dialogextract =
MessageBox.Show("Extracting succeed\rplease input p and dB", "Info", MessageBoxButtons.OK,
MessageBoxIcon.Information); btnDecrypt2.Enabled = true; }
(5)
private void btnDecrypt2_Click(object sender, EventArgs e) {
BigInteger dB = BigInteger.Parse(textBox3.Text); string tes = cipher3dekrip2.Text;
string[] temp = tes.Split(' ');
BigInteger[] Cipher = new BigInteger[temp.Length]; string ascii;
for (int i = 0; i < Cipher.Length - 1; i++) {
Cipher[i] = BigInteger.Pow(BigInteger.Parse(temp[i]), (int)Convert.ToInt32(textBox3.Text)) %
(int)Convert.ToInt32(prima3.Text);
ascii =char.ConvertFromUtf32(Convert.ToInt32 (Cipher[i].ToString()));
plainawal.Text += ascii; { saveplainawal.Enabled = true;
} }
MessageBox.Show("Decryption succeed", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void saveplainawal_Click(object sender, EventArgs e) {
SaveFileDialog saveFileDekrip2 = new SaveFileDialog(); saveFileDekrip2.Title = "Save text Files";
saveFileDekrip2.Filter = "txt files (*.txt)|*.txt"; if (saveFileDekrip2.ShowDialog() == DialogResult.OK) {
using (Stream s = File.Open(saveFileDekrip2.FileName, FileMode.CreateNew))
using (StreamWriter sw = new StreamWriter(s)) {
sw.Write(plainawal.Text);
MessageBox.Show("plaintext saved", "Info",
MessageBoxButtons.OK,MessageBoxIcon.Information);
} }
} } }
(6)