Implementasi Kriptografi Algoritma Elgamal Dengan Steganografi Teknik Least Significant Bit (LSB) Berdasarkan Penyisipan Menggunakan Fungsi Linier
IMPLEMENTASI KRIPTOGRAFI ALGORITMA ELGAMAL DENGAN STEGANOGRAFI TEKNIK LEAST SIGNIFICANT BIT (LSB)
BERDASARKAN PENYISIPAN MENGGUNAKAN FUNGSI LINIER
DRAFT SKRIPSI
LIDYA ANDINY NASUTION 091401083
PROGRAM STUDI S- 1 I LMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNI VERSI TAS SUMATERA UTARA
(2)
IMPLEMENTASI KRIPTOGRAFI ALGORITMA ELGAMAL DENGAN STEGANOGRAFI TEKNIK LEAST SIGNIFICANT BIT (LSB) BERDASARKAN
PENYISIPAN MENGGUNAKAN FUNGSI LINIER SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
LIDYA ANDINY NASUTION 091401083
PROGRAM STUDI S- 1 I LMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNI VERSI TAS SUMATERA UTARA
(3)
PERSETUJUAN
Judul : IMPLEMENTASI KRIPTOGRAFI ALGORITMA
ELGAMAL DENGAN STEGANOGRAFI TEKNIK
LEAST SIGNIFICANT BIT (LSB) BERDASARKAN
PENYISIPAN MENGGUNAKAN FUNGSI LINIER
Kategori : SKRIPSI
Nama : LIDYA ANDINY NASUTION
Nomor Induk Mahasiswa : 091401083
Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
Diluluskan di Medan, Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Rachmawati, S.Si, M.Kom Drs. Partano Siagian,M.Sc NIP. 198307232009122004 NIP. 195112271980031001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001
(4)
PERNYATAAN
IMPLEMENTASI ALGORITMA KRIPTOGRAFI ELGAMAL DENGAN TEKNIK STEGANOGRAFI LEAST SIGNIFICANT BIT (LSB) BERDASARKANPENYISIPAN
MENGGUNAKAN FUNGSI LINIER
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, November 2013
Lidya Andiny Nasution 091401083
(5)
PENGHARGAAN
Dengan mengucapkan puji dan syukur kehadirat Allah SWT atas segala rahmat, hidayah serta karunianya sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer pada Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.
Penulis ingin menyampaikan rasa hormat dan terima kasih yang sebesar– besarnya kepada :
1. Bapak Prof. Dr. dr. Syahril Pasaribu, DTM&H, Msc(CTM), Sp.A(K) selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. 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 Pembanding I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
4. Ibu Maya Silvi Lydia, B.Sc., M.Sc selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.
5. Bapak Drs. Partano Siagian,M.Sc yang telah memberikan bimbingan, saran, dan masukan kepada penulis dalam pengerjaan skripsi ini.
6. Ibu Dian Rachmawati,S.Si,M.Kom selaku Dosen Pembimbing II yang dengan sabar telah memberikan bimbingan, saran, dan masukan kepada penulis dalam pengerjaan skripsi ini.
7. Bapak Syahriol Sitorus,S.Si,MIT selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
8. Ayahanda M. Yusuf Nasution dan Ibunda Fatimah Dalimunthe yang selalu memberikan doa dan dukungan serta kasih sayang kepada penulis yang terus memberikan dukungan dan dorongan bagi penulis untuk menyelesaikan skripsi ini. 9. Abangda Nandar Afriza atas semangat, dukungan, perhatian dan pengertian
terhadap penulis selama proses penyelesaian skripsi ini.
10. Teman-teman terdekat, terutama Nadya Soraya Hardiyana, Fithri Rizqi Khairani Nst, Pocut Rizky, dan Dewi Ayu Pratami atas semangat dan dorongannya sehingga penulis dapat menyelesaikan skripsi ini. Dan juga untuk Ismail Fata Lubis, Dessy Winda sari Manurung, dan teman-teman seangkatan 2009 lainnya yang telah membantu penulis dalam menyelesaikan skripsi ini.
(6)
11. Dan semua pihak yang telah banyak membantu yang tidak bisa disebutkan satu-persatu.
Semoga semua kebaikan, bantuan, perhatian, serta dukungan yang telah diberikan kepada penulis mendapatkan pahala yang melimpah dari Allah SWT.
Medan, November 2013
(7)
ABSTRAK
Kerahasiaan pesan atau data yang dimiliki oleh seseorang merupakan suatu hal yang penting. Pengamanan kerahasian pesan dapat menggunakan pengamanan pesan seperti kriptografi dan steganografi. Pada penelitian ini digunakan algoritma kriptografi ElGamal dan teknik Steganografi Least Significant Bit (LSB).
Algoritma ElGamal menggunakan fermat’s little theorem untuk pengecekan
bilangan prima yang digunakan. Teknik steganografi least significant bit (LSB)
menggunakan fungsi linier untuk menentukan letak pixel yang akan disisipkan pesan rahasia. Proses dari sistem ini adalah pesan rahasia berformat *.txt atau input langsung dari sistem dan kunci publik dan private yang diinput langsung
dari sistem, kemudian kunci publik y dihitung dengan menggunakan kunci publik p, g dan k serta kunci private x yang digunakan pada proses enkripsi untuk menghasilkan ciphertext. Ciphertext digunakan sebagai pesan yang akan
disisipkan (embedding) dengan menggunakan teknik least significant bit (LSB)
berdasarkan fungsi linier ke dalam coverimage berformat *.bmp dan
menghasilkan stegoimage. Kemudian stegoimage diekstraksi dan mengeluarkan
pesan rahasia (ciphertext) yang disisip pada citra. Pesan rahasia yang diperoleh
dari proses ektraksi didekripsi untuk mendapatkan pesan asli dari pesan rahasia dengan menggunakan kunci publik p dan kunci private x. Pada proses pengujian
enkripsi menggunakan teks dengan panjang karakter 115, 8 dan 6 menghasilkan jumlah ciphertext dua kali lebih besar dari plaintext yaitu 230, 16 dan 12,
sedangkan pada proses embedding digunakan citra berukuran 2,14 MB, 81,2 KB dan 2,82 MB menghasilkan citra yang berukuran lebih besar yaitu 2,86 MB, 1,47 MB dan 30,4 MB.
Katakunci : Kriptografi, ElGamal, Steganografi, Least Significant Bit, Fermat’s Little Theorem, Fungsi Linier.
(8)
ABSTRACT
Confidentiality of messages or data is owned by a person is an important thing. Safeguarding of confidentiality of the message can use a security message like Cryptography and steganography. This research used ElGamal algorithms for cryptographic and Least Significant Bit (LSB) techniques for Steganography. ElGamal algorithm use fermat's little theorem for checking prime numbers are used. Techniques least significant bit (LSB) of Steganography using a linear function to determine the location of the pixel to be inserted the secret message. The process of this system is the secret message format *.txt or input directly from the system and the public and private keys that are input directly from the system, then the public key y is computed using the public key p, g, k and private key x used in encryption process to produce ciphertext. Ciphertext is used as the message will be inserted (embedding) using the technique of least significant bit (LSB) based on a linear function into coverimage format *. bmp and produces stegoimage. Secret message obtained from the extraction process is decrypted to get the original message of the secret message using the public key p and private key x. In the process of testing the encryption using the text with character length 115, 8 and 6 produce amount of ciphertext two times bigger than the plaintext that is 230, 16 and 12, while in the process of embedding used image size of 2.14 MB, 81.2 KB and 2.82 MB produce much larger image size is 2.86 MB, 1.47 MB and 30.4 MB.
Keyword: Cryptography, ElGamal, Steganography, Least Significant Bit, Fermat’s Little Theorem, Liniear Function.
(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 1 Pendahuluan
1.1Latar Belakang 1
1.2Rumusan Masalah 2
1.3Batasan Masalah 2
1.4Tujuan Penelitian 3
1.5Manfaat Penelitian 3
1.6Metode Penelitian 3
1.7Sistematika Penulisan 4
Bab 2 Landasan Teori 2.1 Kriptografi 6 2.2 Enkripsi dan Dekripsi 7 2.3 Tujuan Kriptografi 7 2.4 Jenis Algoritma Kriptografi Berdasarkan Jenis Kunci 8 2.4.1 Algoritma Simetris 8
2.4.2 Algoritma Asimetris 9
2.4.3 Algoritma ElGamal 9
2.5 Bilangan Prima 11
2.6 Aritmatika Modulo 12 2.7 Fermat’s Little Theorem 12
2.8 Citra Digital 13 2.8.1 Bitmap 13
2.8.2 PNG 14
2.8.3 JPEG 14
2.9 Steganografi 15
2.10Least Significant Bit 17
(10)
Bab 3 Analisis dan Perancangan Sistem
3.1 Analisis Sistem 19
3.1.1 Analisis Masalah 19
3.1.2 Analisis Kebutuhan 19
3.1.3 Analisis Proses 21
3.2 Pemodelan Sistem 31
3.2.1. Use Case Diagram 31
3.2.2 ActivityDiagram 41
3.2.3 SequenceDiagram 42
3.3 Pseudocode 44
3.3.1 Pseudocode Enkripsi 44
3.3.2 Pseudocode Dekripsi 45
3.3.3 PsedocodeEmbedding 45
3.3.4 PseudocodeExtraction 46
3.4 Flowchart 47
3.4.1 Flowchart Gambaran Umum Sistem 47
3.4.2 Flowchart Proses Enkripsi pada Algoritma ElGamal 48
3.4.3 Flowchart Proses Dekripsi pada Algoritma ElGamal 49
3.4.4 Flowchart Proses Embedding pada Metode LeastSignificant
Bit (LSB) dengan Fungsi Linier 50
3.4.5 Flowchart Proses Extraction pada Metode LeastSignificant
Bit (LSB) dengan Fungsi Linier 51
3.5 Perancangan Antar Muka (Interface) 52
3.5.1 Halaman Utama (Home) 53
3.5.2 Halaman Encryption – Embedding 54
3.5.3 Halaman Extraction – Decryption 56
3.5.4 Halaman About 58
3.5.5 Halaman Help 58
Bab 4 Implementasi dan Pengujian
4.1Implementasi 60
4.1.1 Halaman Utama (Home) 60
4.1.2 Halaman Encryption – Embedding 61
4.1.3 Halaman Extraction – Decryption 63
4.1.4 Halaman About 65
4.1.5 Halaman Help 66
4.2 Pengujian Sistem 66
4.2.1 Pengujian Proses Enkripsi (Encryption) 66
4.2.2 Pengujian Proses Penyisipan (Embedding) 69
4.2.3 Pengujian Proses Ekstraksi (Extraction) 71
4.2.4 Pengujian Proses Dekripsi (Decryption) 73
4.2.5 Hasil Pengujian Proses Enkripsi (Encryption) 74
4.2.6 Hasil Pengujian Proses Penyisipan (Embedding) 76
4.2.7 Hasil Pengujian Proses Ekstraksi (Extraction) 77
(11)
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 82
5.2. Saran 82
(12)
DAFTAR TABEL
Nomor
Tabel Nama Tabel Halaman
2.1 2.2 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 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14
Tabelcontoh dari Hiddentext, Coverimage dan Stegoimage
Proses Penyisipan Least Significant Bit (LSB)
Biner Ciphertext
Biner Pixel Penyisipan Pesan Pengubahan Biner Pixel
Desimal Ciphertext
Spesifikasi UseCaseEncryption - Embedding
Spesifikasi UseCaseInput Kunci Kriptografi
Spesifikasi UseCaseInputPlaintext
Spesifikasi UseCaseEncryption
Spesifikasi UseCaseInput Kunci Steganografi
Spesifikasi UseCaseInputCoverimage
Spesifikasi UseCaseEmbedding
Spesifikasi UseCaseSaveStegoimage
Spesifikasi UseCaseExtraction – Decryption
Spesifikasi UseCaseInput Kunci Steganografi
Spesifikasi UseCaseInputStegoimage
Spesifikasi UseCaseExtraction
Spesifikasi UseCase Input Kunci Kriptografi
Spesifikasi UseCaseDecryption
Spesifikasi UseCaseSave
Pengujian Proses Encryption tezt 2.txt
Pengujian Proses Encryption nama.txt
Pengujian Proses Encryption komA.txt
Pengujian Proses Embedding 1000x750.bmp
Pengujian Proses Embedding image2.bmp
Pengujian Proses Embedding IMG_4881.bmp
Pengujian Proses Extraction pengujian1000x750.bmp
Pengujian Proses Extraction penguimage2.bmp
Pengujian Proses Extraction hasilnya2.bmp
Pengujian Proses Decryption tezt 2.txt
Pengujian Proses Decryption nama.txt
Pengujian Proses Decryption komA.txt
Perbandingan Panjang Teks Plaintext dan Ciphertext
Perbanndingan Ukuran Citra Coverimage dan Stegoimage
16 17 25 26 27 29 30 32 33 33 34 34 35 36 36 37 37 38 38 39 40 40 74 75 75 76 76 77 78 78 79 80 80 81 81 81
(13)
DAFTAR GAMBAR
Nomor
Gambar Nama Gambar Halaman
2.1 2.2 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 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 (a) 4.9 (b) 4.9 4.10 4.11 4.12 4.13 4.14 4.15
Proses Umum Kriptografi Skema Kriptografi Simetris
Skema Kriptografi Asimetris
Sistem Kriptografi Algoritma ElGamal Contoh File Citra Bitmap
Contoh File Citra PNG
Contoh File Citra JPEG
Diagram Penyisipan dan Ekstraksi Pesan
Diagram Ishikawa
Use Case Diagram Sistem
Activity Diagram Proses Encryption-Embedding Activity Diagram Proses Extraction-Decryption
Sequence Diagram Proses Encryption-Embedding
Sequence Diagram Proses Encryption-Embedding
Flowchart Gambaran Umum Sistem
Flowchart Proses Enkripsi pada Algoritma ElGamal Flowchart Proses Dekripsi pada Algoritma ElGamal
Flowchart Proses Embedding pada Metode Least Significant Bit (LSB) dengan Fungsi Linier
Flowchart Proses Extraction pada Metode LeastSignificantBit
(LSB) dengan Fungsi Linier
Interface Halaman Utama
InterfaceMenuEncryption-Embedding InterfaceMenuExtraction-Decryption
InterfaceMenuAbout
InterfaceMenuHelp
InterfaceForm Halaman Utama (Home)
Submenu Halaman Utama (Home)
Halaman Encryption-Embedding
Halaman Extraction-Decryption
Halaman MenuAbout
Halaman MenuHelp
Hasil Pemilihan FileText Pada Proses Enkripsi
MessageBoxInvalidPrimeNumber Bukan Prima;
Message Box Invalid Prime Number Harus Lebih Besar dari
255
MessageBoxInvalidRandomNumberg
MessageBoxInvalidRandomNumberx
MessageBoxInvalidRandomNumberk
Tampilan Hasil Proses Enkripsi
Hasil Pemilihan Citra Sebagai Coverimage
Tampilan Hasil Proses Penyisipan (Embedding)
MessageBox Tidak Bisa Dilakukan Penyisipan Gambar
7 8 9 10 13 14 15 16 19 31 41 42 43 44 48 49 50 51 52 53 54 56 58 59 60 61 62 64 65 66 67 67 67 68 68 68 69 70 71 71
(14)
4.16 4.17 4.18 4.19
Tampilan Hasil Pemilihan Stegoimage
Tampilan Hasil Proses Ekstraksi (Extraction)
Message Box yang Menyatakan Nilai m dan b Tidak Sama
dengan Proses Penyisipan (Embedding)
Tampilan Hasil Proses Dekripsi (Decryption)
72 73 73 74
(15)
DAFTAR LAMPIRAN
Halaman A. Listing Program A-1
(16)
ABSTRAK
Kerahasiaan pesan atau data yang dimiliki oleh seseorang merupakan suatu hal yang penting. Pengamanan kerahasian pesan dapat menggunakan pengamanan pesan seperti kriptografi dan steganografi. Pada penelitian ini digunakan algoritma kriptografi ElGamal dan teknik Steganografi Least Significant Bit (LSB).
Algoritma ElGamal menggunakan fermat’s little theorem untuk pengecekan
bilangan prima yang digunakan. Teknik steganografi least significant bit (LSB)
menggunakan fungsi linier untuk menentukan letak pixel yang akan disisipkan pesan rahasia. Proses dari sistem ini adalah pesan rahasia berformat *.txt atau input langsung dari sistem dan kunci publik dan private yang diinput langsung
dari sistem, kemudian kunci publik y dihitung dengan menggunakan kunci publik p, g dan k serta kunci private x yang digunakan pada proses enkripsi untuk menghasilkan ciphertext. Ciphertext digunakan sebagai pesan yang akan
disisipkan (embedding) dengan menggunakan teknik least significant bit (LSB)
berdasarkan fungsi linier ke dalam coverimage berformat *.bmp dan
menghasilkan stegoimage. Kemudian stegoimage diekstraksi dan mengeluarkan
pesan rahasia (ciphertext) yang disisip pada citra. Pesan rahasia yang diperoleh
dari proses ektraksi didekripsi untuk mendapatkan pesan asli dari pesan rahasia dengan menggunakan kunci publik p dan kunci private x. Pada proses pengujian
enkripsi menggunakan teks dengan panjang karakter 115, 8 dan 6 menghasilkan jumlah ciphertext dua kali lebih besar dari plaintext yaitu 230, 16 dan 12,
sedangkan pada proses embedding digunakan citra berukuran 2,14 MB, 81,2 KB dan 2,82 MB menghasilkan citra yang berukuran lebih besar yaitu 2,86 MB, 1,47 MB dan 30,4 MB.
Katakunci : Kriptografi, ElGamal, Steganografi, Least Significant Bit, Fermat’s Little Theorem, Fungsi Linier.
(17)
ABSTRACT
Confidentiality of messages or data is owned by a person is an important thing. Safeguarding of confidentiality of the message can use a security message like Cryptography and steganography. This research used ElGamal algorithms for cryptographic and Least Significant Bit (LSB) techniques for Steganography. ElGamal algorithm use fermat's little theorem for checking prime numbers are used. Techniques least significant bit (LSB) of Steganography using a linear function to determine the location of the pixel to be inserted the secret message. The process of this system is the secret message format *.txt or input directly from the system and the public and private keys that are input directly from the system, then the public key y is computed using the public key p, g, k and private key x used in encryption process to produce ciphertext. Ciphertext is used as the message will be inserted (embedding) using the technique of least significant bit (LSB) based on a linear function into coverimage format *. bmp and produces stegoimage. Secret message obtained from the extraction process is decrypted to get the original message of the secret message using the public key p and private key x. In the process of testing the encryption using the text with character length 115, 8 and 6 produce amount of ciphertext two times bigger than the plaintext that is 230, 16 and 12, while in the process of embedding used image size of 2.14 MB, 81.2 KB and 2.82 MB produce much larger image size is 2.86 MB, 1.47 MB and 30.4 MB.
Keyword: Cryptography, ElGamal, Steganography, Least Significant Bit, Fermat’s Little Theorem, Liniear Function.
(18)
BAB 1 PENDAHULUAN
1. Latar Belakang
Kerahasiaan pesan atau data yang dimiliki oleh seseorang merupakan hal penting dalam pengiriman pesan agar pesan tersebut hanya dapat diberikan oleh orang tertentu saja yang dapat mengakses informasi tersebut. Untuk menjaga kerahasiaan pesan diperlukan pengamanan data atau dikenal sebagai kriptografi.
Kriptografi merupakan ilmu yang mempelajari cara pengamanan data dengan tujuan mencegah dari orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya. Salah satu algoritma kriptografi adalah algoritma ElGamal. Algoritma ElGamal termasuk dalam kriptografi modern yang menggunakan plainteks, cipherteks dan kunci untuk melakukan proses enkripsi
dan dekripsi dalam pengamanan data.
Dengan berkembangnya kriptografi, ada pihak-pihak yang dapat merusak algoritma kriptografi itu sendiri. Untuk mengatasi masalah ini dapat dilakukan penggabungan pengaman pesan dengan menggunakan kriptografi dan steganografi. Steganografi merupakan seni dan ilmu menyembunyikan pesan tersembunyi dengan cara menyisipkan pesan ke dalam sebuah gambar dengan tujuan tidak ada seorang pun yang mengetahui atau menyadari bahwa ada suatu pesan rahasia selain pengirim dan penerima pesan. Ada beberapa teknik steganografi salah satuya least significant bit
(LSB).
Steganografi dengan teknik Least Significant Bit (LSB) menggunakan cara
penyisipan pada bit rendah atau bit yang paling kanan pada data pixel yang menyusun file tersebut pada akhir file. Pada teknik LSB dapat dimodifikasi menggun
(19)
akan teknik penyisipan sesuai fungsi linier, dengan fungsi linier menjadi acuan untuk menentukan lokasi penyisipan pesan pada gambar.
Kelebihan dari algoritma ElGamal adalah terletak pada keamanannya yaitu sulitnya perhitungan logaritma ketika bilangan yang dipilih adalah bilangan prima yang besar sehingga algoritma ElGamal mempunyai kekurangan yaitu membutuhkan resource yang besar dan processor yang mampu melakukan perhitungan besar.
Kelebihan dari teknik least significant bit (LSB) yaitu menghasilkan ukuran
citra yang tidak jauh berubah dari ukuran semula tetapi teknik least significant bit
(LSB) memiliki kekurangan yaitu terbatasnya penyisipan pesan atau data yang sesuai dengan ukuran citra.
Dengan melihat kelebihan dan kekurangan dari algoritma ElGamal dan teknik
least significant bit (LSB), penulis menggabungkan keduanya untuk mengamankan
pesan atau data sehingga tingkat keamanan dan kerahasian data menjadi lebih baik. Berdasarkan latar belakang yang telah diuraikan diatas, maka penulis membuat judul penelitian “Implementasi Kombinasi Kriptografi Algoritma ElGamal dengan Steganografi Teknik Least Significant Bit (LSB) berdasarkan Penyisipan
Menggunakan Fungsi Linier.”
1.2Rumusan Masalah
Berdasarkan latar belakang maka yang menjadi rumusan masalah adalah bagaimana penerapan implementasi kriptografi algoritma ElGamal dengan steganografi teknik
Least Significant Bit (LSB) berdasarkan penyisipan menggunakan fungsi linier untuk
pengamanan data.
1.3Batasan Masalah
Batasan masalah dalam penelitian implementasi kriptografi algoritma ElGamal dengan steganografi teknik least significant bit (LSB) berdasarkan penyisipan
menggunakan fungsi linier ini adalah sebagai berikut : 1. Teks yang akan disisipkan hanya berjenis file txt.
(20)
2. Jenis citra yang akan disisipkan teks yaitu file bmp.
3. Pengujian bilangan prima yang dipakai adalah Fermat’s Little Theorem dengan
bilangan prima lebih besar dari 255.
4. Bilangan prima p , nilai x, k dan g di inputkan oleh user.
5. nilai m dan b diinputkan oleh user dengan nilai m dan b harus bernilai positif.
6. Hasil ciphertext tidak lebih besar dari 255.
7. Nilai x dan hasil fx tidak dapat lebih besar dari nilai lebar dan panjang pixel citra. 8. Implementasi algoritma ini dibangun dengan C# Microsoft Visual Studio 2010.
1.4 Tujuan Penelitian
Tujuan dari penelitian ini adalah memperoleh aplikasi kriptografi algoritma ElGamal dengan steganografi teknik least significant bit (LSB) yang melakukan penyisipan
berdasarkan fungsi linier pada pengaman pesan atau data untuk menjaga kerahasian atau keamanan data.
1.5 Manfaat Penelitian
Manfaat dari penelitian ini adalah dengan menggunakan algoritma ElGamal dan steganografi teknik least significant bit (LSB) berdasarkan penyisipan dengan fungsi
linier pada pesan atau data yang bersifat rahasia menjadi aman dari pihak yang tidak berhak atau pihak lain.
1.6 Metodelogi Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur
Penelitian ini terlebih dahulu dipelajari litelatur yang didapat melalui buku, jurnal, artikel, makalah maupun situs internet yang membahas kriptografi algoritma ElGamal dengan steganografi teknik least significant bit (LSB) berdasarkan
penyisipan menggunakan fungsi linier. 2. Analisis dan Perancangan Sistem
Pada tahap ini dilakukan analisis terhadap permasalahan yang ada dan kebutuhan yang diperlukan untuk membuat sistem serta dilakukan perancangan system dengan flowchart, data flow diagram (DFD), dan antar muka (interface).
(21)
3. Implementasi Sistem
Pada tahap ini akan dilakukan pembuatan program aplikasi berdasarkan perancangan sistem yang telah dirancang sebelumnya.
4. Pengujian Sistem
Dalam tahap ini dilakukan pengujian terhadap sistem yang telah dibangun, seperti melakukan uji coba proses enkripsi dan dekprisi penyandian teks dengan algoritma ElGamal serta embedding dan extraction pesan metode least significant bit (LSB)
dengan penyisipan menggunakan fungsi linier. 5. Dokumentasi
Dalam tahap ini dilakukan penyusunan laporan dari hasil analisis dan perancangan sistem dalam format penulisan penelitian.
1.7 Sistematika Penulisan
Untuk membuat penulisan lebih terstruktur, maka penulisan ini dibagi menjadi lima bab, yaitu :
BAB 1 : PENDAHULUAN
Pada bab ini berisi penjelasan mengenai latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodeologi penelitian dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Pada bab ini berisi penjelasan mengenai teori – teori yang terkait dengan penelitian ini diantaranya adalah teori kriptografi, Fermat’s Little Theorem, algoritma ElGamal ,
teori steganografi, least significant bit, fungsi linier dan teori pendukung lainnya.
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.
(22)
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini berisi tentang implementasi sistem yang berdasarkan tahapan perancangan dengan menggunakan bahasa pemrograman Matlab R2009A. Kemudian dilanjutkan dengan tahapan pengujian sistem untuk menguji apakah sistem sudah berjalan sesuai dengan perancangan.
BAB 5 : KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan yang diperoleh alam penelitian dan saran yang diberikan untuk pengembangan lebih lanjut.
(23)
BAB 2
LANDASAN TEORI
2.1 Kriptografi
Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman.
(Cryptography is the art and science of keeping messages secure) “Crypto” berarti
“secret” (rahasia) dan “graphy” berarti “writing” (tulisan). [4]
Kriptografi merupakan metode untuk mengamankan data, baik itu data teks maupun data gambar. Metode ini dilakukan dengan penyandian atau pengacakan data asli, sehingga pihak lain yang tidak mempunyai hak akses atas data tersebut tidak dapat memperoleh informasi yang ada di dalamnya.[3]
Sistem kriptografi terdiri dari 5 bagian yaitu:
1. Plaintext: pesan atau data dalam bentuk aslinya yang dapat terbaca.
2. Secret Key: merupakan masukan bagi algoritma enkripsi yang berupa nilai
bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.
3. Ciphertext: keluaran algoritma enkripsi yang dianggap sebagai pesan dalam
bentuk tersembunyi.
4. AlgoritmaEnkripsi: algoritma enkripsi memiliki 2 masukan yaitu teks asli dan teks kunci rahasia. Algoritma enkripsi melakukan transformasi terhadap teks asli sehingga menghasilkan teks sandi.
5. Algoritma Dekripsi: algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia. Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai algoritma enkripsi.[13]
(24)
2.2 Enkripsi dan Dekripsi
Proses menyadikan plaintext menjadi ciphertext disebut enkripsi (encryption) atau
enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan
ciphertext menjadi plaintext semula dinamakan dekripsi (decryption) atau deciphering
(standard nama menurut ISO 7498-2). [12]
Secara matematis, proses umum enkripsi dijelaskan sebagai berikut:
� (�) = �
Jadi, proses enkripsi E plaintext P akan menghasilkan ciphertext C. Sedangkan
proses umum deskripsi adalah sebagai berikut:
� (�) = �
Proses dekripsi D ciphertext C, akan menghasilkan plaintext P. Proses umum
yang terjadi pada kriptografi dapat dilihat pada Gambar 2.1.
Gambar 2.1 Proses Umum Kriptografi [7]
Gambar 2.1 merupakan proses umum kriptografi. Plaintext dienkripsi dengan
menggunakan kunci enkripsi untuk menghasilkan ciphertext. Untuk mengubah ciphertext menjadi plaintext, ciphertext didekripsi menggunakan kunci dekripsi untuk
menghasilkan plaintext.
2.3 Tujuan Kriptografi
Tujuan dari kriptografi adalah memberi layanan keamanan yang disebut juga dengan aspek keamanan. Aspek-aspek keamanan kriptografi sebagai berikut:
1. Kerahasian (confidentiality), layanan yang ditujukan untuk menjaga agar pesan
(25)
2. Integritas data (data integrity), layanan yang menjamin bahwa pesan masih
asli/utuh atau belum pernah dimanipulasi selama pengiriman.
3. Otentikasi (authentication), layanan yang berhubungan dengan identifikasi, baik
mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication
atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan
(data origin authentication).
4. Penyangkalan (non-repudiation), layanan untuk mencegah entitas yang
berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.[12]
2.4 Jenis Algoritma Kriptografi Berdasarkan Jenis Kunci
Berdasarkan jenis kunci yang dipakai terdapat 2 (dua) jenis algoritma kriptografi yaitu algoritma simetris dan algoritma asimetris.
2.4.1 Algoritma Simetris
Sistem kriptografi simetris menggunakan kunci yang sama pada proses penyandian dan proses pemulihan sandi seperti yang ditunjukan pada Gambar 2.2. [13]
Gambar 2.2Skema Kriptografi Simetris
Gambar 2.2 menunjukan bagaimana cara kerja kriptografi simetris. Plaintext
dienkripsi dengan kunci kemudian menghasilkan ciphertext, kemudian untuk
mendekripsi ciphertext menggunakan kunci yang sama pada proses enkripsi untuk
(26)
Kriptografi yang termasuk algoritma simetris adalah DES (Data Encryption Standard), Blowfish, Twofish, Triple-DES, IDEA, Serpent, Affine, Playfair, AES (Advanced Encryption Standard), dan sebagainya.
2.4.2 Algoritma Asimetris
Sistem kriptografi asimetris menggunakan kunci yang berbeda pada proses penyandian dan proses pemulihan sandi seperti yang ditunjukan pada Gambar 2.3.[13]
Gambar 2.3Skema Kriptografi Asimetris
Gambar 2.3 menunjukan bagaimana cara kerja kriptografi asimetris. Plaintext
dienkripsi dengan kunci publik kemudian menghasilkan ciphertext, kemudian untuk
mendekripsi ciphertext membutuhkan kunci private yang menghasilkan pesan asli
atau plaintext.
Kriptografi yang termasuk algoritma asimetris adalah RSA, ElGamal, DSA dan sebagainya.
2.4.3 Algoritma ElGamal
Algoritma kriptografi ElGamal merupakan salah satu algoritma kunci asimetris yang didasarkan pada logaritma diskrit. Algoritma kriptografi ElGamal ditemukan oleh Taher ElGamal pada tahun 1984[13]. Skema sistem kriptografi ElGamal dapat dilihat pada Gambar 2.4.
(27)
Gambar 2.4 Sistem Kriptografi Algoritma ElGamal
Gambar 2.4 menunjukkan cara kerja algoritma ElGamal yaitu plainteks di
enkripsi dengan menggunakan kunci publik p, g dan y. y didapat dari rumus �=
������ dengan menggunakan kunci private x. Kemudian plainteks dienkripsi
dengan rumus �1 = ������ dan �2 = ( ���)���� dan menghasilkan chipertext. Chipertext didekripsi dengan menggunakan kunci privated dan menggunakan rumus
dekripsi � = [�2× (�1�)−1����] untuk menghasilkan plainteks.
Berikut pembangkit kunci ElGamal: 1. Bilangan prima p > 255.
2. Dua bilangan acak g dan x dengan syarat � < �dan � < �.
3. Bilangan acak k dengan syarat 0≤ � ≤ � −2.
4. �=������. 5. ������� = (�,�,�). 6. �������� = �.
Untuk mengenkripsi pesan dibutuhkan k, C1, C2, dan P. Untuk C1 dan C2 dapat
dihasilkan menggunakan rumus:
�1 = ������ ..... (1) �2 = ( ��� )���� ... (2)
Untuk mendekripsi pesan dapat menggunakan rumus:
�= �2
�1� ����
�= [�2× (�1�)−1����] ... (3)
(28)
(�1�)−1 =�1�−1−����� ... (4)
dimana:
k = kunci publik bilangan acak c1 = hasil cipherteks 1
c2 = hasil cipherteks 2 m = pesan atau teks asli
Sebagai contoh penggunaan algoritma ElGamal, untuk melakukan enkripsi diambil bilangan prima � = 257, bilangan acak � = 3, � = 4 dan � = 7. Hitung
�=������ → � = 81. Pengirim ingin mengirim huruf “A” maka nilai dari
setiap huruf dapat diambil dari tabel ASCII. Maka enkripsi dapat dilakukan seperti berikut:
1. A dalam ASCII bernilai 65.
2. Hitung �1 = ������→ �1 = 37��� 257→ �1 = 131.
3. Hitung �2 = ( ��� )����→ �2 = ( 817× 65)��� 257→ �2 = 210
Pengirim akan mengirim �1 dan �2 kepada penerima pesan rahasia. Untuk melakukan dekripsi dibutuhkan nilai x, �1 dan �2. Maka enkripsi dapat dilakukan seperti berikut:
1. Hitung (�1�)−1= �1�−1−����� → (�1�)−1 = 131257−1−4��� 252
→(�1�)−1 = 190.
2. Hitung �=�2× (�1�)−1����→ � = 210 × 190 ��� 257→ m = 65.
3. Kemudian bilangan 65 diubah ke ASCII menjadi huruf “A”.
Setelah melakukan dekripsi, penerima menemukan pesan rahasia yaitu teks asli yang sebelum dilakukan enkripsi oleh pengirim pesan rahasia. Maka didapat
plainteks “A” dan tersampaikan pesan rahasia.
2.5 Bilangan Prima
Bilangan positif p (�> 1) disebut bilangan prima jika pembaginya hanya 1 dan p.
Sebagai contoh bilangan 23 adalah bilangan prima karena ia hanya habis dibagi 1 dan 23. Karena bilangan prima harus lebih besar dari satu, maka barisan bilangan prima
(29)
dimulai dari 2, yaitu 2, 3, 5 , 7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali dua yang merupakan bilangan genap. [12]
2.6 Aritmatika Modulo
Aritmatika modulo merupakan sisa hasil pembagian 2 (dua) bilangan. Operator yang digunakan dalam aritmatika modulo adalah mod. Misalkan a adalah bilangan bulat dibagi dengan m adalah bilangan bulat > 0 , maka akan menghasilkan sisa bagi r
dengan q adalah hasil bagi. Sehingga dapat dinotasikan sebagai berikut[7] :
����� = � sedemikian sehingga � = �� + �, dengan 0 ≤ � < �
Contoh :
16 ��� 6 = 4, dimana 16 = (4 × 3) + 4 2.7 Fermat’s Little Theorem
Fermat’s little theorem adalah suatu metode yang digunakan untuk menguji
keprimaan suatu bilangan bulat. Teorema Fermat ditemukan oleh Pierre De Fermat merupakan seorang matematikawan Perancis pada tahun 1640. Fermat's Little Theorem digunakan jika bilangan prima p dan bilangan bulat a adalah bilangan bulat
yang tidak habis dibagi oleh p, yaitu PBB(�,�) = 1, maka ��−1≡ 1 (mod p)[12].
Untuk nilai a rentang dalam 1 <� <�.
Sebagai contoh diambil bilangan prima �= 7. Sehingga nilai a dalam rentang 1 <� < 7 adalah � = 2, . . . , 7. Misalkan �= 2, maka:
2�−1≡ 1(����) 27−1 ≡26(��� 7)
≡64(��� 7)
≡1(��� 7)
Didapatkan hasil dari 27 ≡1 (��� 7), dapat disimpulkan bahwa 7 adalah
(30)
Meskipun dapat digunakan untuk mempermudah kalkulasi dalam kriptografi, peran terpenting dari Fermat's little theorem adalah sebagai dasar dari berbagai teknik
enkripsi asimetris.[10]
2.8 Citra Digital
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpanan. Citra digital adalah citra yang dapat diolah komputer[14]. Beberapa format citra digital yang banyak ditemui adalah BMP, JPEG, GIF, PNG, dan lain-lain.
2.8.1. BITMAP
File citra bitmap merupakan format file citra yang tidak mengalami proses kompresi
sehingga kualitas gambar yang dihasilkan baik daripada file citra dengan format lain.
Pada file citra 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.[7]
File citra bitmap menyimpan data kode citra secara digital dan lengkap (cara
penyimpanannya adalah per pixsel). Citra ini memiliki kelebihan untuk memanipulasi
warna, tetapi mengubah objek lebih sulit.[14] File citra bitmap dapat dilihat pada
Gambar 2.5.
(31)
2.8.2. PNG
PNG adalah kependekam dari Portable Network Grapihics dan merupakan format standar terbuka format image raster yang didukung oleh W3C dan IETF. Format PNG bukan merupakan format baru karena telah dikembangkan pada tahun 1995 untuk mengganti format GIF (Graphics Interchange Format) dan format TIFF (Tagged Image File Format). PNG memiliki tiga mode warna, yaitu paletted (8 bit), grayscale (16 bit), truecolor (hingga 48 bit). [11] File citra PNG memiliki fitur transparansi
seperti yang terlihat pada Gambar 2.6.
Gambar 2.6 Contoh File Citra PNG
2.8.3. JPEG
Joint Photograpic Experts (JPEG , dibaca jay-peg) di rancang untuk kompresi beberapa full-color atau gray-scale dari suatu gambar yang asli, seperti pemandangan asli di dunia ini. JPEG sudah mendukung untuk 24-bit color depth atau sama dengan 16,7 juta warna (224 = 16.777.216 warna). JPEG adalah algoritma kompresi secara lossy. JPEG bekerja dengan merubah gambar spasial dan merepresentasikan kedalam pemetaan frekueunsi. [6]
JPEG dirancang untuk mengeksploitasi tingkatan dari mata kita yakni bahwa mata kita tidak akan dapat mebedakan perubahan yang lambat terang dan warna dibandingkan dengan perbedaan suatu jarak apakah jauh atau dekat. Untuk itu JPEG sangat baik digunkan pada fotografi dan monitor 80-bit. JPEG sebenarnya hanyalah algoritma kompresi, bukan merupakan nama format file. File yang biasa disebut JPEG pada jaringan sebenarnya adalah JFIF (JPEG File Interchange Format). [6] File citra
(32)
Gambar 2.7 Contoh File Citra JPEG
2.9 Steganografi
Kata steganografi berasal dari bahasa Yunani steganos yang artinya
“tersembunyi/terselubung” dan graphein “menulis” sehingga kurang lebih artinya
“menulis (tulisan) terselubung”. [2]
Steganografi merupakan seni untuk menyembunyikan pesan di dalam media digital sedemikian rupa sehingga orang lain tidak menyadari ada sesuatu pesan didalam media tersebut.[15]
Steganografi menggunakan dua properti, yaitu wadah penampung dan data rahasia yang akan disembunyikan. Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, audio, teks dan video.[14]
Terdapat beberapa istilah yang berkaitan dengan steganografi: 1. Hiddentext atau embedded message: pesan yang disembunyikan.
2. Coverimage: citra yang digunakan untuk menyembunyikan embedded message.
3. Stegoimage: citra yang sudah berisi embedded message.
4. Stegokey: kunci rahasia.[5]
5. Embedding : proses menyisipkan pesan pada citra sebagai medium penyisipan
pesan.
(33)
Pada teknik steganografi terdapat dua proses, yaitu proses penyisipan pesan (embedding) pada cover image dan pengembalian pesan (extraction) seperti yang
ditunjukan pada Gambar 2.8.
Embedding Extraction Coverimage
Hiddentext
Stegoimage
Key Key
Hiddentext
Gambar 2.8 Diagram Penyisipan dan Ekstrasi Pesan[6]
Gambar 2.8 menunjukkan proses penyisipan (embedding) dan ekstrasi
(extraction) pesan. Untuk menyisipkan pesan (hiddentext) dilakukan proses
penyisipan (embedding) pada sebuah citra (coverimage) memerlukan kunci rahasia
(stego key) untuk menghasilkan stegoimage atau pesan yang sudah disisipakan pesan
rahasia. Untuk melakukan extraction dibutuhkan kunci rahasia untuk mengambil
pesan yang terdapat pada coverimage. Berikut contoh hiddentext, coverimage dan stegoimage yang ditunjukan pada Tabel 2.1.
Tabel 2.1 Tabelcontoh dari Hiddentext, Coverimage dan Stegoimage[12]
Hiddentext Cover Image Stego Imagw
Istilah keilmuan serumpun terasa memberikan distorsi
persepsi pada maksud sebenarnya. Persepsi yang segera terbentuk dengan istilah
tesrebut adalah eprtumbuhan dari akar-akar ilmu membentuk suatu rumpun, yang berarti bahwa nuansa historis organisasi/ kelompok/
(34)
Kriteria steganografi yang bagus sebagai berikut:
1. Fidelity, mutu citra yang menampung data tidak jauh berubah.
2. Robustness, pesan yang disembunyikan harus tahan (robust) terhadap berbagai
operasi manipulasi yang dilakukan pada stego-object, seperti pengubahan kontras,
penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan cropping,
enkripsi dan sebagainya.
3. Recovery, data yang disembunyikan harus dapat diungkapkan kembali (recovery).
[14]
2.10 Least Significant Bit
Metode least significant bit, digunakan citra digital sebagai media penyamar atau cover-object. Pada setiap byte dari piksel citra, terdapat bit yang paling kecil bobotnya
(Least Significant Bit atau LSB).[2]
Metode ini bekerja dengan cara mengganti bit terakhir dari masing-masing
pixel dengan pesan yang akan disisipkan. LSB mempunyai kelebihan yakni ukuran
gambar tidak akan jauh berubah. Sedangkan kekurangannya adalah pesan/data yang akan disisipkan terbatas, sesuai dengan ukuran citra.[1]
Sebagai contoh akan disisipkan A kedalam sebuah sebuah citra. Nilai A dalam ASCII adalah 65. Kemudian nilai ASCII A diubah menjadi biner yaitu 01000001. Piksel citra yang akan disisipkan teks yaitu 00000001, 00000110, 00000101, 00000011, 00000111, 00000100, 00000111, 00000100. Tabel 1 menunjukkan hasil dari penyisipan.
Tabel 2.2. Tabel proses penyisipan Least Significant Bit (LSB)
Biner Piksel Citra Biner Huruf A Piksel Citra Yang berubah
00000001 0 00000000
00000110 1 00000111
00000101 0 00000100
00000011 0 00000010
(35)
00000100 0 00000100
00000111 0 00000110
00000100 1 00000101
2.11 Fungsi Linier
Suatu korespondensi (�,�) antara dua himpunan bilangan yang memasangkan
sebarang bilangan x dari himpunan pertama sengan tepat satu bilangan y dari
himpunan kedua disebut suatu fungsi.[8]
Untuk rumus umum persamaan linier ditulis sebagai berikut [9]:
�(�) =��+� ...(5)
kemiringan garis adalah m , b merupakan perpotongan sumbu y.[9]
Sebagai contoh, misalkan nilai m= 1 dan b=2, sehingga:
�(�) =��+�
�(�) = 1�+ 2
(36)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem merupakan tahapan awal yang digunakan untuk mengetahui kebutuhan sistem. Pada tahapan analisis sistem memilih kebutuhan yang paling sesuai untuk sistem yang sangat penting dalam pengembanga sistem tersebut.
3.1.1. Analisis Masalah
Analisis masalah yang akan dilakukan adalah bagaimana cara mengenkripsi pesan rahasia dengan format *txt dengan menggunakan algoritma ElGamal, kemudian pesan rahasia disisipkan ke dalam gambar dengan format *bmp dengan menggunakan teknik penyisipan least significant bit (LSB) berdasarkan fungsi linier. Masalah pada
penelitian ini secara umum ditunjukkan dengan menggunakan diagram Ishikawa pada
Gambar 3.1.
Gambar 3.1 Diagram Ishikawa
3.1.2. Analisis Kebutuhan
Analisis kebutuhan pada suatu sistem terdiri dari 2 (dua) macam yaitu analisis kebutuhan fumgsional dan analisis kebutuhan non fungsional.
(37)
a. Analisis Kebutuhan Fungsional
Pada analisis kebutuhan berisikan proses-proses apa saja yang terdapat pada sistem. Dalam aplikasi pengamanan pesan rahasia dengan menggunakan algoritma kriptografi Elgamal dan teknik steganografi least significant bit
berdasarkan fungsi linier ini memiliki analisis kebutuhan fungsional sebagai berikut:
1. Melakukan proses enkripsi dan dekripsi. Pada proses ini dibutuhkan pesan rahasia berformat *txt dan input langsung dari sistem serta kunci publik dan kunci private untuk melakukan enkripsi dan dekripsi pada pesan
rahasia.
2. Melakukan proses embedding (penyisipan) dan extraction (pengembalian
pesan). Pada proses ini dibutuhkan gambar berformat *bmp yang digunakan sebagai cover image untuk penyisipan pesan ke dalam gambar.
3. Algoritma yang digunakan dalam melakukan proses enkripsi dan dekripsi adalah algoritma kriptografi ElGamal, sedangkan teknik yang digunakan dalam penyisipan pesan ke dalam gambar adalah teknik steganografi least significant bit (LSB) berdasarkan fungsi linier.
4. Menyimpan file baru yaitu hasil dari prosese embedding dan dekrtpsi.
Setelah melakukan enkripsi maka hasil pesan yang dienkripsi disisipkan ke dalam sebuah citra kemudian disimpan dalam format *bmp atau setelah melakukan extraction (pengembalian pesan) maka pesan tersebut
didekripsi untuk mendapatkan pesan asli yang kemudian disimpan dengan format *txt.
b. Analisis Kebutuhan Non Fungsional
Pada analisis kebutuhan non fungsional tidak secara langsung terkait dengan fitur yang terdapat pada sistem. analisis kebutuhan non fungsional memberikan batasan-batasan pada sistem. Analisis kebutuhan non fungsional terdapat pada sistem ini meliputi:
1. Perfomance, aplikasi yang dibangun dapat melakukan proses enkripsi dan
dekripsi dengan algoritma ElGamal serta dapat melakukan proses
embedding dan extraction dengan teknik steganografi least significant bit
(38)
2. Documentacy, apllikasi dapat menyimpan hasil penyisipan dengan format
*bmp dan menyimpan hasil dekripsi dengan format *txt.
3. User friendly, aplikasi yang dibangun harus mudah digunakan oleh
pengguna (user) dan responsif.
4. Cost, aplikasi yang dibangun tidak memerlukan biaya tambahan karena
tidak memerlukan perangkat tambahan pendukung seperti perangkat keras pendukung atau layanan internet dan lain sebagainya.
3.1.3. Analisis Proses
Dalam sistem ini terdapat empat proses utama yaitu enkripsi (penyandian pesan), dekripsi (pemulihan pesan) , embedding (penyisipan pesan), dan extraction
(pengembalian pesan). Pada teknik steganografi least significant bit dimodifikasi
dengan menggunakan fungsi linier dalam pemilihan letak pixel yang akan disisipkan pesan rahasia. Begitupula dalam melakukan pengembalian pesan, fungsi linier digunakan untuk menentukan letak pixel dari gambar yang akan diekstrak.
a. Analisis Proses Enkripsi dengan Algoritma ElGamal
Untuk melakukan proses enkripsi dengan algoritma ElGamal dibutuhkan kunci-kunci yang digunakan untuk penyadian pesan rahasia. Berikut ini adalah proses pembangkitan kunci pada algoritma ElGamal:
1. Pilih sembarang bilangan prima �> 255. Misalkan nilai bilangan prima
yang dipilih adalah 257.
2. Pilih dua bilangan acak g dan x, dengan syarat � < �dan � < �.
Contoh: � = 3 dan �= 4.
3. Hitunglah nilai �=������ dengan nilai x adalah kunci private.
Contoh:
�= ������
�= 34��� 257
�= 81 ��� 257
(39)
Setelah melakukan pembangkitan kunci dapat dilakukan proses enkripsi. Proses Enkripsi ElGamal menggunakan kunci publik �,� dan �.
Berikut proses enkripsi algoritma ElGamal:
1. Susunlah plainteks menjadi blok-blok �1,�2,�3,…. Kemudian setiap blok
huruf diubah menjadi bilangan ASCII. Contoh:
Plaintext :
DINY →�1 =� → ubah menjadi bilangan ASCII yaitu 68
�2 =� → ubah menjadi bilangan ASCII yaitu 73 �3 =� → ubah menjadi bilangan ASCII yaitu 78 �4 =� → ubah menjadi bilangan ASCII yaitu 89
2. Pilih Bilangan acak k dengan syarat 0≤ � ≤ � −2, maka 0≤ � ≤257− 2 → 0≤ � ≤255.
Contoh: � = 7.
3. Setiap blok m dienkripsikan dengan rumus:
�1 = ������ �2 = ( ��� )����
Contoh:
�1 = ������ �1 = 37��� 257 �1 = 2187 ��� 257 �1 = 131
�2 = ( ��� )����
�21 = ( ���1 )����= ( 817× 68 ) ��� 257
= (22876792454961 × 68)��� 257 = 1555621886937348 ��� 257 = 22
�22 = ( ���2 )����= ( 817× 73 ) ��� 257
= (22876792454961 × 73)��� 257 = 1670005849212153 ��� 257
(40)
= 137
�23 = ( ���3 )����= ( 817× 78 ) ��� 257
= (22876792454961 × 78)��� 257 = 1784389811486958 ��� 257 = 252
�24 = ( ���4 )����= ( 817× 89 ) ��� 257
= (22876792454961 × 89)��� 257 = 2036034528491529 ��� 257 = 248
b. Analisis Proses Dekripsi dengan Algoritma Elgamal
Proses dekripsi ElGamal menggunakan kunci publik � dan kunci private �.
Berikut proses dekripsi algoritma ElGamal: 1. Hitunglah (�1�)−1 dengan rumus:
(�1�)−1= �1�−1−�����
Contoh:
(�1�)−1= �1�−1−����� = 131257−1−4��� 256 = 131252��� 257 = 190
2. Gunakan kunci private� dan kunci publik � untuk mendekripsi ciphertext
� dan � menjadi plaintext� dengan rumus:
�= [�2 × (��)−1����]
Contoh:
�1 = ��21× (��)−1�����
= [22 × 190 ��� 257] = 4180 ��� 257 = 68
�2 =��22× (��)−1�����
= [137 × 190 ��� 257] = 26030 ��� 257 = 73
�3 =��23× (��)−1�����
(41)
= 47880 ��� 257 = 78
�4 =��24× (��)−1�����
= [248 × 190 ��� 257] = 47120 ��� 257 = 89
3. Ubahlah plaintext � menjadi huruf alfabet dengan menggunakan tabel
ASCII.
�1 = 68 → dalam ASCII yaitu D �2 = 73 → dalam ASCII yaitu I �3 = 78→ dalam ASCII yaitu N �4 = 89 → dalam ASCII yaitu Y
c. Analisis Proses Embedding dengan Fungsi Linier
Dalam melakukan proses embedding diperlukan sebuah citra yang berformat *bmp sebagai coverimage untuk penyisipan pesan. Dikarenakan penyisipan
pesan yang dilakukan sesuai dengan titik pixel yang didapat dari perhitungan fungsi linier maka citra yang digunakan memerlukan batasan untuk ukuran pixelnya. Ukuran pixel minimum dapat dihitung dengan cara:
�����ℎ���ℎ������ = ( �����ℎ�������ℎ������ + 1 ���������� ) × 8
����������������� =�����ℎ���ℎ��������� 3
���������������� =�(�����ℎ���ℎ������ − �����������������) ÷ 3�
������������ = ( �����ℎ������������ + 2 ����������)
Misalkan blok ciphertext “ 131 22 131 137 131 252 131 248 ” akan
membutuhkan resolusi cover image sebesar:
�����ℎ���ℎ������ = ( 8 + 1 ) × 8 = 72
����������������� = 72 ��� 3 = 0
�����ℎ�������������������� = ( 72−0) ÷ 3 = 24
Didapat jumlah pixel yang akan disisip yaitu 24, maka pixel minimum adalah 24 + 2 = 26.
(42)
Berikut ini contoh proses embedding berdasarkan fungsi linier:
1. Ubah nilai ciphertext ke biner yang ditunjukkan pada Tabel 3.1.
Tabel 3.1 Biner Ciphertext
�1 �2 Biner �1 Biner �2
131 22 10000011 00010110 131 137 10000011 10001001 131 252 10000011 11111100 131 248 10000011 11111000
Ciphertext yang disisipkan ditambahkan tanda “*” pada akhir
ciphertext sebagai pembatas pada proses penyisipan sehingga pada saat
proses ektraksi dapat diketahui batas proses ekstrasi. Nilai desimal dari “*” adalah 42 dengan nilai biner 00101010.
2. Pilih sembarang nilai m dan b. Misalkan nilai � = 1 dan � = 1, maka
hitung (��) = ��+�. Karena jumlah pixel yang akan disisipkan
sebanyak 34 maka nilai x yang digunakan rentang dari 0 sampai 33.
�= 0→ �(�) =��+�= 1.�+ 1 = 2 →(0,1)
�= 1→ �(�) =��+�= 1.�+ 1 = 2 →(1,2)
�= 2→ �(�) =��+�= 1.�+ 1 = 2 →(2,3)
�= 3→ �(�) =��+�= 1.�+ 1 = 2 →(3,4)
�= 4→ �(�) =��+�= 1.�+ 1 = 2 →(4,5)
�= 5→ �(�) =��+�= 1.�+ 1 = 2 →(5,6)
�= 6→ �(�) =��+�= 1.�+ 1 = 2 →(6,7)
�= 7→ �(�) =��+�= 1.�+ 1 = 2 →(7,8)
�= 8→ �(�) =��+�= 1.�+ 1 = 2 →(8,9)
�= 9→ �(�) =��+�= 1.�+ 1 = 2 →(9,10)
�= 10→ �(�) =��+�= 1.�+ 1 = 2 →(10,11)
�= 11→ �(�) =��+�= 1.�+ 1 = 2 →(11,12)
�= 12→ �(�) =��+�= 1.�+ 1 = 2 →(12,13)
�= 13→ �(�) =��+�= 1.�+ 1 = 2 →(13,14)
(43)
�= 15→ �(�) =��+�= 1.�+ 1 = 2 →(15,16)
�= 16→ �(�) =��+�= 1.�+ 1 = 2 →(16,17)
�= 17→ �(�) =��+�= 1.�+ 1 = 2 →(17,18)
�= 18→ �(�) =��+�= 1.�+ 1 = 2 →(18,19)
�= 19→ �(�) =��+�= 1.�+ 1 = 2 →(19,20)
�= 20→ �(�) =��+�= 1.�+ 1 = 2 →(20,21)
�= 21→ �(�) =��+�= 1.�+ 1 = 2 →(21,22)
�= 22→ �(�) =��+�= 1.�+ 1 = 2 →(22.23)
�= 23→ �(�) =��+�= 1.�+ 1 = 2 →(23,24)
3. Misalkan terdapat citra berukuran 30 x 30 pixel, diambil nilai pixel sesuai dengan (fx) yang telah dihitung. Nilai pixel tersebut ditunjukan pada Tabel
3.2.
Tabel 3.2 Biner Pixel
Titik pixel
Nilai RGB
Biner RGB Titik pixel
Nilai RGB
Biner RGB (0,1) R:124
G:57 B:92
R: 01111100 G: 00111001 B: 01011100
(12,13) R:106 G:109 B:119
R: 01101010 G: 01101101 B: 01110111 (1,2) R:45
G:54 B:50
R: 00101101 G: 00110110 B: 00110010
(13,14) R:109 G:90 B:93
R: 01101101 G: 01011010 B: 01011101 (2,3) R:47
G:61 B:49
R: 00101111 G: 00111101 B: 00110001
(14,15) R:148 G:118 B:118
R: 10010100 G:0 1110110 B: 01110110 (3,4) R:66
G:74 B:64
R: 01000010 G: 01001010 B: 01000000
(15,16) R:225 G:180 B:168
R: 11100001 G: 10110100 B: 10101000 (4,5) R:72
G:81 B:70
R: 01001000 G: 01010001 B: 01000110
(16,17) R:223 G:179 B:160
R: 11011111 G: 10110011 B: 10100000 (5,6) R:84 R: 01010100 (17,18) R:233 R: 11101001
(44)
G:93 B:82 G: 01011101 B: 01010010 G:186 B:160 G: 10111010 B: 10100000 (6,7) R:95
G:102 B:88
R: 01011111 G: 01100110 B: 01011000
(18,19) R:141 G:142 B:122
R: 10001101 G: 10001110 B: 01111010 (7,8) R:110
G:113 B:101
R: 01101110 G: 01110001 B: 01100101
(19,20) R:149 G:149 B:132
R: 10010101 G: 10010101 B: 10000100 (8,9) R:108
G:110 B:95
R: 01101100 G: 01101110 B: 01011111
(20,21) R:155 G:155 B:139
R: 10011011 G: 10011011 B: 10001011 (9,10) R:46
G:48 B:38
R: 00101110 G: 00110000 B: 00100110
(21,22) R:107 G:108 B:94
R: 01101011 G: 01101100 B: 01011110 (10,11) R:28
G:29 B:20
R: 00011100 G: 00011101 B: 00010100
(22,23) R:30 G:34 B:24
R: 00011110 G: 00100010 B: 00011000 (11.12) R:108
G:115 B:130
R: 01101100 G: 01110011 B: 10000010
(23,24) R:31 G:36 B:26
R: 00011111 G: 00100100 B: 00011010 4. Kemudian sisipkan biner ciphertext pada biner pixel. Setelah biner
ciphertext disisipkan ke biner pixel dari gambar, kemudian biner hasil
penyisipan tersebut di ubah kembali ke desimal yang tunjukan pada Tabel 3.3.
Tabel 3.3 Penyisipan Pesan
Titik pixel
Biner RGB Nilai RGB
Titik pixel
Biner RGB Nilai RGB (0,1) R: 01111101
G: 00111000 B: 01011100
R:125 G:56 B:92
(12,13) R: 01101010 G: 01101100 B: 01110111
R:106 G:108 B:119
(45)
(1,2) R: 00101100 G: 00110110 B: 00110010
R:44 G:54 B:50
(13,14) R: 01101101 G: 01011011 B: 01011101
R:109 G:91 B:93 (2,3) R: 00101111
G: 00111101 B: 00110000
R:47 G:61 B:48
(14,15) R: 10010101 G: 01110111 B: 01110111
R:149 G:119 B:119 (3,4) R: 01000010
G: 01001010 B: 01000001
R:66 G:74 B:65
(15,16) R: 11100001 G: 10110100 B: 10101000
R:225 G:180 B:168 (4,5) R: 01001000
G: 01010001 B: 01000111
R:72 G:81 B:71
(16,17) R: 11011111 G: 10110010 B: 10100000
R:223 G:178 B:160 (5,6) R: 01010100
G: 01011101 B: 01010010
R:84 G:93 B:82
(17,18) R: 11101000 G: 10111010 B: 10100000
R:232 G:186 B:160 (6,7) R: 01011110
G: 01100110 B: 01011000
R:94 G:102
B:88
(18,19) R: 10001101 G: 10001111 B: 01111011
R:141 G:143 B:123 (7,8) R: 01101110
G: 01110001 B: 01100101
R:110 G:113 B:101
(19,20) R: 10010101 G: 10010101 B: 10000101
R:149 G:149 B:133 (8,9) R: 01101101
G: 01101110 B: 01011110
R:109 G:110 B:94
(20,21) R: 10011010 G: 10011010 B: 10001011
R:154 G:154 B:139 (9,10) R: 00101110
G: 00110001 B: 00100110
R:46 G:49 B:38
(21,22) R: 01101011 G: 01101100 B: 01011110
R:107 G:108 B:94 (10,11) R: 00011100
G: 00011101 B: 00010101
R:28 G:29 B:21
(22,23) R: 00011111 G: 00100010 B: 00011001
R:31 G:34 B:25 (11.12) R: 01101100
G: 01110010
R:108 G:114
(23,24) R: 00011110 G: 00100101
R:30 G:37
(46)
B: 10000010 B:130 B: 00011010 B:26 d. Analisis Proses Extraction dengan Fungsi Linier
Berikut ini proses extraction dengan fungsi linier:
1. Pilih bilangan untuk nilai m dan b. Misalkan �= 1 dan �= 1.
Kemudian dilakukan perhitungan (��) = �� + �. Untuk
mendapatkan titik pixel yang telah disisip. Titik pixel dihitung sebanyak jumlah pixel dari gambar.
2. Kemudian pixel yang telah disisip diubah ke dalam bilangan biner seperti yang ditunjukan pada Tabel 3.4.
Tabel 3.4 Pengubahan Biner Pixel
Titik pixel
Nilai RGB
Biner RGB Titik pixel
Nilai RGB
Biner RGB (0,1) R:125
G:56 B:92
R: 01111101 G: 00111000 B: 01011100
(12,13) R:106 G:108 B:119
R: 01101010 G: 01101100 B: 01110111 (1,2) R:44
G:54 B:50
R: 00101100 G: 00110110 B: 00110010
(13,14) R:109 G:91 B:93
R: 01101101 G: 01011011 B: 01011101 (2,3) R:47
G:61 B:48
R: 00101111 G: 00111101 B: 00110000
(14,15) R:149 G:119 B:119
R: 10010101 G: 01110111 B: 01110111 (3,4) R:66
G:74 B:65
R: 01000010 G: 01001010 B: 01000001
(15,16) R:225 G:180 B:168
R: 11100001 G: 10110100 B: 10101000 (4,5) R:72
G:81 B:71
R: 01001000 G: 01010001 B: 01000111
(16,17) R:223 G:178 B:160
R: 11011111 G: 10110010 B: 10100000 (5,6) R:84
G:93 B:82
R: 01010100 G: 01011101 B: 01010010
(17,18) R:232 G:186 B:160
R: 11101000 G: 10111010 B: 10100000
(47)
(6,7) R:94 G:102 B:88 R: 01011110 G: 01100110 B: 01011000
(18,19) R:141 G:143 B:123
R: 10001101 G: 10001111 B: 01111011 (7,8) R:110
G:113 B:101
R: 01101110 G: 01110001 B: 01100101
(19,20) R:149 G:149 B:133
R: 10010101 G: 10010101 B: 10000101 (8,9) R:109
G:110 B:94
R: 01101101 G: 01101110 B: 01011110
(20,21) R:155 G:154 B:138
R: 10011011 G: 10011010 B: 10001010 (9,10) R:46
G:49 B:38
R: 00101110 G: 00110001 B: 00100110
(21,22) R:106 G:108 B:94
R: 01101010 G: 01101100 B: 01011110 (10,11) R:28
G:29 B:21
R: 00011100 G: 00011101 B: 00010101
(22,23) R:31 G:34 B:25
R: 00011111 G: 00100010 B: 00011001 (11.12) R:108
G:114 B:130
R: 01101100 G: 01110010 B: 10000010
(23,24) R:30 G:37 B:26
R: 00011110 G: 00100101 B: 00011010 3. Kemudian diambil angka terakhir dari biner pixel untuk mengetahui
pesan yang telah disisip yaitu 10000011, 00010110, 10000011, 10001001, 10000011, 11111100, 10000011, 11111000, 00101010. 4. Setelah nilai biner yang disisip diperoleh, maka nilai biner tersebut
diubah kedalam bentuk desimal seperti yang ditunjukan pada Tabel 3.5.
Tabel 3.5 Desimal Ciphertext
Biner �1 Biner �2 �1 �2 10000011 00010110 131 22 10000011 10001001 131 137 10000011 11111100 131 252 10000011 11111000 131 248
(48)
Pada biner 00101010 didapat nilai desimal yaitu 42, maka proses ekstraksi selesai.
3.2. Pemodelan Sistem
3.2.1. Use Case Diagram
Use case diagram merupakan model diagram yang digunakan untuk menampilkan
dialog yang ada pada sistem. Use case diagram pada sistem ini ditunjukan pada
Gambar 3.2.
Pengirim
Encryption - Embedding
Extraction - Decryption
Input kunci kriptografi
Input plaintext
Encryption
Input kunci steganografi
Input cover image
Embedding
Input Kunci Steganografi
Input stego image
Extraction
Input kunci kriptografi
Decryption
Penerima
<<uses>>
<<extends>> <<extends>>
<<extends>>
<<extends>> <<uses>>
<<uses>>
<<uses>>
<<uses>>
<<uses>>
<<uses>>
Save Stegoimage <<uses>>
<<uses>>
Save
(49)
a. Use Case Encryption – Embedding
Spesifikasi untuk proses use case encryption – embedding yang terdapat dalam
diagram use case dijabarkan pada Tabel 3.6.
Tabel 3.6 Spesifikasi Use CaseEncryption-Embedding
Name Encryption – Embedding
Actors Pengguna
Trigger Pengguna memilih submenu Enkripsi – Embedding.
Preconditions Pengguna menggunakan aplikasi sistem keamanan
data.
Post Conditions 1. Pengguna dapat melihat kunci publik dan kunci
private.
2. Pengguna dapat melihat hasil penyisipan pesan ke dalam gambar.
Success Scenarion 1. Pengguna mengeksekusi menu file.
2. Pengguna memilih submenu Encryption – Embedding.
3. Sistem menampilkan halaman Encryption – Embedding
4. Pengguna menginputkan kunci publik p, g, k dan kunci private x.
5. Pengguna menginputkan pesan (plaintext) dan
menekan tombol Encryption untuk melakukan
Enkripsi.
6. Pengguna melihat hasil enkripsi yaitu ciphertext.
7. Pengguna menginputkan nilai m dan b yang digunaka untuk letak penyisipan pesan ke dalam gambar.
8. Pengguna memilih coverimage, kemudian
pengguna menekan tombol Embed untuk
melakukan embedding.
(50)
b. Use Case Input Kunci Kriptografi
Spesifikasi untuk proses use case input kunci kriptografi yang terdapat dalam diagram use case dijabarkan pada Tabel 3.7.
Tabel 3.7 Spesifikasi Use Case Kunci Kriptografi
Name Input Kunci Kriptografi
Actors Pengguna
Trigger Pengguna memilih submenu Enkripsi – Embedding.
Preconditions Pengguna melihat menggunakan aplikasi sistem
keamanan data.
Post Conditions Pengguna dapat melihat kunci publik dan kunci
private.
Success Scenarion 1. pengguna menginputkan kunci publik p, g, k dan
kunci private x.
2. Pengguna dapat melihat kunci publik dan kunci
private.
Alternatif Flows -
c. Use Case InputPlaintext
Spesifikasi untuk proses use case inputplaintext yang terdapat dalam diagram use case dijabarkan pada Tabel 3.8.
Tabel 3.8 Spesifikasi Use CaseInput Plaintext
Name Input Plaintext
Actors Pengguna
Trigger Pengguna telah menginputkan kunci publik dan kunci
private.
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat hasil pesan yang akan
dienkripsikan.
Success Scenarion 1. Pengguna menginputkan pesan (plaintext) dan
(51)
Enkripsi.
2. Sistem menampilkan hasil encryption yaitu ciphertext.
3. Pengguna dapat melihat ciphertext.
Alternatif Flows -
d. UseCaseEncyption
Spesifikasi untuk proses use case encryption yang terdapat dalam diagram use case
dijabarkan pada Tabel 3.9.
Tabel 3.9 Spesifikasi Use CaseEncryption
Name Encryption
Actors Pengguna
Trigger Pengguna telah menginputkan pesan yang akan di
enkripsi.
Preconditions Pengguna memilih submenu Enkripsi – Embedding
Post Conditions Pengguna dapat melihat hasil pesan yang dienkripsi.
Success Scenarion 1. pengguna telah menginputkan pesan yang akan
dienkripsi.
2. Pengguna menekan tombol Encryption dan sistem
menampilkan hasil enkripsi yaitu ciphertext.
3. Pengguna dapat melihat hasil enkripsi.
Alternatif Flows -
e. Use Case Input Kunci Steganografi
Spesifikasi untuk proses use case input kunci steganografi yang terdapat dalam
diagram use case dijabarkan pada Tabel 3.10.
Tabel 3.10 Spesifikasi Use CaseInput Kunci Steganografi
Name Input Kunci Steganografi
Actors Pengguna
(52)
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat kunci steganografi yaitu nilai
m dan b.
Success Scenarion 1. Pengguna telah melakukan enkripsi.
2. Pengguna menginputkan nilai m dan b untuk melakukan embedding.
3. Pengguna menekan tombol Embed dan sistem
menampilkan hasil penyisipan gambar (stegoimage).
4. Pengguna melihat stegoimage.
Alternatif Flows -
f. Use Case Input Coverimage
Spesifikasi untuk proses use case inputcover image yang terdapat dalam diagram use case dijabarkan pada Tabel 3.11.
Tabel 3.11 Spesifikasi Use CaseInput Cover Image
Name InputCoverimage
Actors Pengguna
Trigger Pengguna telah menginputkan kunci steganografi.
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat coverimage yang dipilih.
Success Scenarion 1. Pengguna telah menginputkan nilai m dan b.
2. Pengguna memilih coverimage, kemudian
menekan tombol Embed dan sistem menampilkan
hasil embedding.
3. Pengguna melihat hasil embedding yaitu stegoimage.
Alternatif Flows -
g. Use Case Embedding
Spesifikasi untuk proses use case embedding yang terdapat dalam diagram use case
(53)
Tabel 3.12 Spesifikasi Use CaseEmbedding
Name Embedding
Actors Pengguna
Trigger Pengguna telah memilih coverimage.
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat hasil penyisipan pesan ke
dalam gambar.
Success Scenario 1. Pengguna telah memilih coverimage.
2. Pengguna menekan tombol Embed dan sistem
menampilak hasil embedding yaitu stego image.
3. Pengguna melihat hasil embedding yaitu stego image.
Alternatif Flows -
h. Use Case Save Stegoimage
Spesifikasi untuk proses use case embedding yang terdapat dalam diagram use case
dijabarkan pada Tabel 3.13.
Tabel 3.13 Spesifikasi Use CaseSave Stegoimage
Name Embedding
Actors Pengguna
Trigger Pengguna telah melakukan proses embeddinng.
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat hasil embedding.
Success Scenario 4. Pengguna telah melakukan proses embedding.
5. Pengguna menekan tombol Save Stegoimgae.
6. Sistem melakukan proses penyimpan hasil
embedding (stegoimage).
Alternatif Flows -
i. UseCaseExtraction–Decryption
Spesifikasi untuk proses use caseextraction-decryption yang terdapat dalam diagram use case dijabarkan pada Tabel 3.14.
(54)
Tabel 3.14 Spesifikasi Use CaseExtraction-Decryption
Name Encryption – Embedding
Actors Pengguna
Trigger Pengguna memilih submenu Extraction – Decryption.
Preconditions Pengguna menggunakan aplikasi sistem keamanan
data.
Post Conditions Pengguna dapat melihat hasil pengambilan pesan dari
gambar dan hasil dekripsi yaitu plaitext.
Success Scenario 1. Pengguna mengeksekusi menu file.
2. Pengguna memilih submenu Extraction – Decryption.
3. Sistem menampilkan halaman Extraction – Decryption.
4. Pengguna menginputkan nilai m dan b untuk menentukan letak pixel yang akan diekstrak.
5. Pengguna memilih stegoimage kemudian
menekan tombol Extraction dan sistem
menampilkan hasil ekstrak yaitu ciphertext.
6. Pengguna menginputkan kunci publik p dan kunci
private x.
7. Pengguna menekan tombol Decryption dan sistem
menampilkan hasil dekripsi yaitu plaintext.
Alternatif Flows -
j. Use Case Input Kunci Steganografi
Spesifikasi untuk proses use case input kunci steganografi yang terdapat dalam
diagram use case dijabarkan pada Tabel 3.15.
Tabel 3.15 Spesifikasi Use CaseInput Kunci Steganografi
Name Extraction
Actors Pengguna
(55)
Preconditions Pengguna menggunakan aplikasi sistem keamanan
data.
Post Conditions Pengguna dapat melihat nilai m dan b.
Success Scenarion 1. Pengguna menginputkan nilai m dan b.
2. Pengguna dapat melihat nilai m dan b.
Alternatif Flows -
k. Use Case Input Stegoimage
Spesifikasi untuk proses use case inputstegoimage yang terdapat dalam diagram use case dijabarkan pada Tabel 3.16.
Tabel 3.16 Spesifikasi Use CaseInput Stego Image
Name Extraction
Actors Pengguna
Trigger Pengguna telah menginputkan nilai m dan b.
Preconditions Pengguna memilih submenu Enkripsi – Embedding.
Post Conditions Pengguna dapat melihat stegoimage yang dipilih.
Success Scenarion 1. Pengguna telah menginput nilai m dan b.
2. Pengguna memilih stegoimage dan sistem
menampilkan stegoimage yang dipilih.
3. Pegguna melihat stegoimage yang dipilih.
Alternatif Flows -
l. Use Case Extraction
Spesifikasi untuk proses use case extraction yang terdapat dalam diagram use case
dijabarkan pada Tabel 3.17.
Tabel 3.17 Spesifikasi Use CaseExtraction
Name Extraction
Actors Pengguna
Trigger Pengguna telah memilih stegoimage.
(1)
mark++; }
if (mark == biner.Length) goto selesai;
else {
bx = bx.Remove(7, 1).Insert(7, biner[mark]); mark++;
}
gbr_hasil.SetPixel(fx, nilaix,
Color.FromArgb(255, Convert.ToInt32(rx, 2),
Convert.ToInt32(gx, 2), Convert.ToInt32(bx, 2))); selesai:
gbr_hasil.SetPixel(fx, nilaix,
Color.FromArgb(255, Convert.ToInt32(rx, 2),
Convert.ToInt32(gx, 2), Convert.ToInt32(bx, 2))); pictureBox2.Image = gbr_hasil;
} else {
MessageBox.Show("Pixel size of the picture is not enough to do the process of embedding",
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
pictureBox1.Image = null; pictureBox2.Image = null; break;
} } } } }
Kode Program Menu
Extraction-Decryption
:
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;
namespace ElgamalLSB {
public partial class EktrakDekripsi : Form {
BigInteger c1x, plain; Image gambar;
Bitmap newBitmap;
string plainbiner = "";
int pixelr, pixelg, pixelb, fx, nilaix, korx, kory; public EktrakDekripsi()
(2)
{
InitializeComponent(); }
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
About formA = new About(); formA.Show();
}
private void homeToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
Home formH = new Home(); formH.Show();
}
private void
encryptionEmbeddingToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
EnkripsiEmbed formEE = new EnkripsiEmbed(); formEE.Show();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit(); }
private void btnOpenStego_Click(object sender, EventArgs e) {
OpenFileDialog openDialogStego = new OpenFileDialog(); openDialogStego.Filter = "Bitmaps|*.Bmp";
DialogResult dr = openDialogStego.ShowDialog(); if (dr == DialogResult.OK)
{
gambar = Image.FromFile(openDialogStego.FileName); newBitmap = new Bitmap(openDialogStego.FileName); StegoImage.Image = gambar;
Location.Text = openDialogStego.FileName.ToString(); FileName.Text =
Path.GetFileNameWithoutExtension(openDialogStego.FileName); lebar.Text = gambar.Width.ToString();
panjang.Text = gambar.Height.ToString(); }
}
private void btnReset_Click(object sender, EventArgs e) {
keym.Text = ""; keyb.Text = ""; keyp.Text = "";
(3)
keyx.Text = "";
ciphertext.Text = ""; plaintext.Text = ""; FileName.Text = ""; Location.Text = ""; panjang.Text = ""; lebar.Text = ""; textBox2.Text = ""; textBox3.Text = ""; StegoImage.Image = null; keym.Focus();
}
private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{
Help formHP = new Help(); formHP.Show();
}
private void btnSavePlaintext_Click(object sender, EventArgs e)
{
SaveFileDialog savedialog = new SaveFileDialog(); savedialog.Filter = "txt Files|*.txt";
savedialog.FileName = "*.txt";
if (savedialog.ShowDialog() == DialogResult.OK) {
string filename = savedialog.FileName;
FileStream fstream = new FileStream(filename, FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fstream); SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(plaintext.Text); sw.Flush();
} }
private void btnDekripsi_Click(object sender, EventArgs e) {
string s = ciphertext.Text; plaintext.Text = "";
string cipherteks = ""; int j = 0;
BigInteger[] c1 = new BigInteger[1000]; BigInteger[] c2 = new BigInteger[1000]; foreach (char c in s)
{
cipherteks += System.Convert.ToInt32(c).ToString() + " ";
}
string text = "";
string[] bitsplain = cipherteks.Split(' '); for (int i = 0; i < bitsplain.Length - 1; i+=2) {
c1[i] = Convert.ToInt32(bitsplain[i]); c2[i] = Convert.ToInt32(bitsplain[i + 1]);
(4)
c1x = BigInteger.Pow(c1[i],
(Convert.ToInt32(keyp.Text)) - 1 - (Convert.ToInt32(keyx.Text)) % Convert.ToInt32(keyp.Text));
plain = ((c2[i]) * c1x) % Convert.ToInt32(keyp.Text); text += char.ConvertFromUtf32((int)plain);
j++; }
plaintext.Text += text;
textBox2.Text = Convert.ToString(ciphertext.TextLength); textBox3.Text = Convert.ToString(plaintext.TextLength);
}
string getBiner(int str) {
string s = "";
for (int k = 0; k < 8; k++) {
s += (str & 0x80) > 0 ? "1" : "0"; str <<= 1;
}
return s; }
int binToAscii(string str) {
int hasil = 1; int Ascii = 0;
for (int i = str.Length - 1; i >= 0; i--) {
Ascii += (Convert.ToInt32(str[i]) - 48) * hasil; hasil *= 2;
}
return Ascii; }
private void btnExtraction_Click(object sender, EventArgs e) {
plainbiner = "";
Bitmap gbr_asli = new Bitmap(StegoImage.Image); korx = gbr_asli.Width;
kory = gbr_asli.Height;
string rx = "", gx = "", bx = "";
for (nilaix = 0; nilaix < korx && nilaix< kory; nilaix++)
{
fx = (Convert.ToInt32(keym.Text) * nilaix) + Convert.ToInt32(keyb.Text);
if (fx >= korx || fx >= kory) break;
pixelr = gbr_asli.GetPixel(fx, nilaix).R; pixelg = gbr_asli.GetPixel(fx, nilaix).G; pixelb = gbr_asli.GetPixel(fx, nilaix).B; rx = getBiner(pixelr);
(5)
gx = getBiner(pixelg); bx = getBiner(pixelb);
plainbiner += rx.Substring(7, 1); plainbiner += gx.Substring(7, 1); plainbiner += bx.Substring(7, 1); }
string sisip, text = "";
for (int i = 0; i < plainbiner.Length; i += 8) {
if (plainbiner.Length - i < 8) break;
sisip = plainbiner.Substring(i, 8); int desimal = binToAscii(sisip);
text += char.ConvertFromUtf32(desimal); }
int batas;
string hasilextract;
batas = text.IndexOf("*"); if (batas > 0)
{
hasilextract = text.Substring(0, batas); ciphertext.Text = hasilextract;
} else {
MessageBox.Show("Value of m and b are not the same as embedding process", "Information",
MessageBoxButtons.OK, MessageBoxIcon.Information); }
} } }
(6)