Hal: 232-243
Pengamanan Teks Terenkripsi Dengan Algoritma RC4+
Dan Steganografi DCS Pada Citra Digital
Noni Ciptania Lase1*1Fakultas Ilmu Komputer dan Teknologi Informasi, Program Studi Teknik Informatika, Universitas Budi Darma, Medan, Indonesia
Email: 1*nonilase08@gmail.com
Abstrak
Keamanan adalah sebuah keadaan yang ingin bebas dari segala bentuk serangan apapun dan bertujuan untuk melindungi data maupun informasi dari berbagai tindakan kejahatan cyber seperti yang dilakukan para hacker dan cracker. Data maupun informasi menjadi target serangan oleh pihak-pihak yang tidak bertanggung jawab sehingga perlu untuk menjaga integritas data dan informasi. Isu keamanan data saat ini yang terus berkembang adalah salah satunya keamanan data teks. Dimana data teks banyak berisi tentang informasi penting maupun data rahasia. Teknik peretasan saat ini semakin meningkat sehingga perlindungan terhadap kerahasiaan data perlu ditingkatkan. Kriptografi merupakan ilmu mengenai teknik enkripsi dimana data diacak menggunakan kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi. Teknik steganografi merupakan ilmu yang mempelajari tentang seni menyembunyikan pesan atau informasi. Kedua teknik ini dapat digunakan dalam mengamankan data. Penelitian ini membahas kriptografi dengan menggunakan algoritma RC4+ untuk mengenkripsi teks. Steganografi dengan menggunakan Teknik Dynamic Cell Spreading yang merupakan teknik menyembunyikan/menyisipkan teks dengan cara mengganti susunan palet warna yang ada dalam sebuah citra dengan format jpeg/jpg. Akan dibahas juga bagaimana proses encoding dan decoding pesan dalam citra dengan menggunakan teknik Dynamic Cell Spreading.
Kata Kunci : Pengamanan, Kriptografi, Algoritma RC4+, Steganografi DCS, Micrososft Visual Studio 2008.
1. PENDAHULUAN
Adanya internet sebagai sistem jaringan terluas yang menghubungkan hampir seluruh komputer di dunia, membuat semua komputer dapat dengan mudah untuk saling bertukar data. Dalam dunia maya ini, hampir segala jenis informasi dapat diperoleh, yang dibutuhkan hanyalah sebuah komputer yang terhubung dengan dunia maya ini. Dengan luasnya teknologi sangat membantu dan memilki dampak positif, disamping itu sering kali terbengkali dalam keamanan setiap data.
Masalah keamanan merupakan masalah yang penting dan utama dalam sistem komputer yang terhubung dalam suatu jaringan. Data maupun informasi menjadi target serangan oleh pihak-pihak yang tidak bertanggung jawab sehingga perlu untuk menjaga integritas data dan informasi. Isu keamanan data saat ini yang terus berkembang adalah salah satunya keamanan data teks. Dimana data teks banyak berisi tentang informasi penting maupun data rahasia. Teknik peretasan saat ini semakin meningkat sehingga perlindungan terhadap kerahasiaan data perlu ditingkatkan, salah satu caranya dengan penyandian data atau enkripsi. Ada dua teknik pengamanan yaitu kriptografi dan steganografi. Kombinasi kedua teknik tersebut dapat digunakan sebagai salah satu solusi untuk meningkatkan keamanan data ataupun informasi, dimana teknik kriptografi digunakan untuk menyandikan pesan dan steganografi untuk menyembunyikan pesan yang telah disandikan sebelumnya.
Kriptografi merupakan ilmu mengenai teknik enkripsi dimana data diacak menggunakan kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi. Teks yang terenkripsi merupakan sebuah teknik kriptografi yang telah di enkripsi terlebih dahulu yang bertujuan untuk memperkuat ciphertext sehingga lebih sulit dipecahkan dan kerahasiaan pesan terjamin keamanannya lalu menggunakan teknik steganografi agar lebih sulit lagi
dalam memecahkannya dan lebih terjamin data atau informasi tersebut. Salah satu algoritma yang digunakan dalam pengacakan pada kriptografi modern adalah algoritma RC4+. RC4+ adalah salah satu jenis dari algoritma RC4 di mana algoritma RC4 merupakan salah satu algoritma kunci simetris yang berbentuk stream cipher untuk melakukan proses enkripsi dan dekripsi dalam satu byte menggunakan kunci yang sama[1]. RC4+ adalah algoritma kunci simetris yang berbentuk synchronous stream cipher, yaitu cipher yang memiliki kunci simetris dan mengenkripsi atau mendekripsi plaintext secara digit per digit atau bit per bit.
Steganografi merupakan ilmu pengetahuan dan seni dalam menyembunyikan data atau informasi. Suatu sistem Steganografi sedemikian rupa menyembunyikan isi suatu data di dalam suatu sampul media yang tidak dapat di duga oleh orang biasa sehingga tidak membangunkan suatu kecurigaan kepada orang yang melihatnya (Ermadi Satriya Wijaya). Metode yang sering digunakan dalam steganografi dalam penyembunyian data salah satunya metode DCS (Dynamic Cell Spreading). Metode DCS (Dynamic Cell Spreading) merupakan steganografi dengan menggunakan model proteksi terhadap deteksi yang dikembangkan oleh Holger Ohmacht dengan konsep dasar yaitu menyembunyikan pesan ke dalam media citra digital. Penyembunyian pesan dilakukan dengan cara menyisipkan pada bit rendah dari data piksel yang menyusun file tersebut menggunakan buffer memori sebagai media penyimpanan sementara[2].
Penulis menggunakan algoritma RC4+ dalam mengenkripsi password tersebut karena dalam penelitian sebelumnya yang dilakukan oleh Lysa Aprilla Br Kaban “Teknik Super Enkripsi Menggunakan Algoritma Affine Cipher, One Time Pad dan RC4+ dalam pengamanan File Teks” menyimpulkan bahwa proses enkripsi dan dekripsi dengan algritma RC4+ dapat memenuhi kriteria dalam keutuhan data karena plainteks yang dihasilkan dari proses
Hal: 232-243 dekripsi sama dengan plainteks awal. Penulis juga
menggunakan steganografi DCS dalam menyembunyikan ciphertxt dari algoritma RC4+ dalam citra digital karena pada penelitian yang dilakukan oleh Desi Lilyani dengan judul “Implementasi Steganografi Pada Citra Digital Dengan Menggunakan Metode Dynamic Cell Spreading” menyimpulkan bahwa penerapan steganografi DCS (Dynamic Cell Spreading) baik untuk mengamankan data digital berupa teks pada sebuah file citra jpeg/jpg.
2. TEORITIS A. Kriptografi
Salah satu cara yang dapat dilakukan untuk dapat mengamankan sistem informasi adalah kriptografi. Kata kriptografi berasal dari bahasa Yunani, yaitu Kryptos (tersembunyi, rahasia) dan Graphein (tulisan). Jadi kriptografi didefenisikan sebagai ilmu seni untuk menjaga kerahasiaan pesan dengan cara menyandikan kebentuk yang tidak dapat dimengerti (Random). Kriptografi merupakan bidang pengetahuan yang menggunakan persamaan matematis untuk melakukan proses enkripsi (encrypt) maupun dekripsi (decrypt) pesan [2].
B. Algoritma RC4+
Salah satu algoritma kunci simetris dalam bentuk stream cipher adalah algoritma RC4+. Dalam hal ini stream cipher sangat penting dan tidak dapat diabaikan pada aplikasi komputer. Agar sandi pada lagoritma RC4+ lebih kuat, maka ditambahkan beberapa operasi menggunakan struktur seperti RC4. Keamanan yang lebih baik diperoleh dengan memanfaatkan poin yang ada pada RC4 kemudian memberikan fitur tambahan. Algoritma RC4+ terdiri dari 2 komponen, yaitu Key Scheduling Algorithm (KSA+) dan Pseudo Random Generation Algorithm (PRGA+) [9].
RC4+ merupakan salah satu jenis dari algoritma RC4. Dimana algoritma RC4 adalah salah satu algoritma kunci simetris yang berbentuk stream cipher yang melakukan proses enkripsi atau dekripsi dalam satu byte dan menggunakan kunci yang sama. Stream cipher digunakan untuk mengenkripsi plaintext menjadi ciphertext bit per bit ( 1 bit setiap kali transformasi) atau byte per byte (1 karakter = 1 byte). RC4 menggunakan variabel yang panjang kuncinya dari 1 sampai 256 byte yang digunakan untuk menginisialisasikan tabel sepanjang 256 byte [9].
C. Metode Dynamic Cell Spreading (DCS)
Teknik Dynamic Cell Spreading (DCS) merupakan steganografi dengan menggunakan model proteksi terhadap deteksi yang dikembangkan oleh Holger Ohmacht dengan konsep dasar yaitu menyembunyikan teks pesan (semua data elektronik) kedalam media gambar (JPEG). Penyembunyian pesan dilakukan dengan cara menyisipkanya pada bit rendah LSB (Least Significant Bit) dari data pixel yang menyusun file tersebut menggunakan buffer memori sebagai media penyimpan sementara[9].
Proses embedding dalam teknik DCS mempunyai beberapa tahapan proses yaitu:
1. Membuat registry address untuk mempersiapkan tempat penyimpan memori sementara guna proses dalam penghitunggan LSB (Least Significant Bit) pada gambar maupun data yang akan digabungkan (embed).
2. Konversi JPEG ke dalam bitmap dalam arti format gambar JPEG yang merupakan format kompresi gambar dirubah atau di unkompres agar mempermudah dalam penghitunggan dan penempatan data.
3. Mengkalkulasikan jarak antar bit yang ada pada file gambar agar mempermudah penghitunggan dan penyisipan bit data yang akan dimasukkan.
4. Mengalokasikan memori untuk menampung bit gambar pada saat proses steganografi akan dijalankan.
5. Mengcopi bitmap ke dalam buffer memori. Mendapatkan ukuran input byte file yaitu sama dengan proses pada gambar yang dimana untuk mengetahui besar dari data yang akan digabungkan ke dalam gambar.
6. Mengcopi buffer memori ke bentuk bitmap mengubah kembali dari memori menjadi file gambar.
Proses ekstrakting dalam teknik DCS mempunyai beberapa tahapan proses yaitu:
1. Membuat registry address untuk mempersiapkan tempat penyimpan memori sementara guna proses dalam penghitungan LSB (Least Significant Bit) pada gambar maupun data yang akan dipisahkan (extract).
2. Mengkalkulasikan variabel yang ada pada media pembawa pesan dalam hal ini adalah file gambar yang berformat bmp.
3. Mengalokasikan ukuran memori yang akan digunakan dalam proses.
4. Mengcopi bitmap ke dalam buffer memori.
5. Ekstrak ukuran file pembawa bertujuan untuk menghitung dan mengembalikan kembali ukuran file pembawa ke dalam ukuran yang semula sebelum disisipkan file lain.
6. Mengkalkulasikan variabel yang ada menghitung kembali setelah proses ekstrak dilewati.
7. Ekstrak file bertujuan untuk mengambil data dalam file gambar yang telah dihitung dan disiapkan dalam memori sebelumnya sehingga proses dapat berjalan dengan cepat. 3. ANALISA
A. Analisa Masalah
Analisa merupakan kegiatan utama dalam penelitian skripsi ini untuk proses penguraian dari suatu aplikasi yang diracang secara utuh kedalam bagian-bagian atau komponen-komponen yang dimaksud untuk mengidentifikasikan dan mengevaluasi permasalahn yang akan dihadapi pada pengamanan suatu teks. Data maupun informasi menjadi target serangan oleh pihak-pihak yang tidak bertanggung jawab sehingga perlu untuk menjaga integritas data dan informasi. Isu keamanan data saat ini yang terus berkembang adalah salah satunya keamanan data teks. Dimana data teks banyak berisi tentang informasi penting maupun data rahasia. Teknik peretasan saat ini semakin meningkat sehingga perlindungan terhadap kerahasiaan data perlu ditingkatkan
Hal: 232-243 Dari uraian diatas perlu adanya pengamanan data
agar tidak disalah gunakan oleh orang yang tidak bertanggung jawab. Kriptografi salah satu solusi untuk menyelesaikan masalah tersebut, dengan adanya kriptografi dapat dilakukan pengamanan teks yang terenkripsi menggunakan algoritma RC4+ disertai dengan teknik steganografi untuk menyembunyikan teks tersebut dengan metode DCS melalui proses penyisipan teks ke dalam citra digital agar tidak mudah disadap oleh pihak yang tidak bertanggung jawab.
Berdasarkan proses yang dilakukan mulai dari proses enkripsi selanjutnya dilakukan penyisipan teks ke dalam citra digital dengan metode DCS dan mengekstraksi serta mendekripsi kembali dengan menggunakan metode yang sama. Teknik ini baik untuk mengamankan teks pada sebuah citra digital. Karena setelah citra disisipi teks, tidak menimbulkan adanya perbedaan dalam citra.
B. Penerapan Algoritma RC4+
Berikut merupakan tahapan enkripsi dan dekripsi terhadap plaintext menjadi ciphertext pada algoritma RC4+. Key yang dimasukkan akan diacak dengan Key Scheduling Algorithm (KSA) sebanyak 256 kali. Lalu dilanjutkan dengan Pseudo Random Generation Algorithm (PRGA) sepanjang plaintext untuk mendapatkan hasil keystream yang akan di xor dengan plaintext.
Inisalisasi state awal tersebut merupakan langkah pertama dari key scheduling. Berikut inisialisasi state awal dari Key Scheduling Algorithm (KSA) berupa larik 256 elemen ditunjukkan pada tabel 1. Tahap ini kunci akan diinisialisasi state awal berupa larik 256, seperti pada tabel berikut ini.
Tabel 1. Larik State Awal RC4+
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 12 0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9 13 0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 13 8 13 9 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 15 0 15 1 15 2 15 3 15 4 15 5 15 6 15 7 15 8 15 9 16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 16 9 17 0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 18 0 18 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9 19 0 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 29 9 20 0 20 1 20 2 20 3 20 4 20 5 20 6 20 7 20 8 20 9 21 0 21 1 21 2 21 3 21 4 21 5 21 6 21 7 21 8 21 9 22 0 22 1 22 2 22 3 22 4 22 5 22 6 22 7 22 8 22 9 23 0 23 1 23 2 23 3 23 4 23 5 23 6 23 7 23 8 23 9 24 0 24 1 24 2 24 3 24 4 24 5 24 6 24 7 24 8 24 9 25 0 25 1 25 2 25 3 25 4 25 5
Dapat dilihat pada contoh kasus dibawah ini tentang algoritma RC4+ dengan metode enkripsi di bawah ini :
Plainteks : [ N, O, N, I, 9, 7 ] Plainteks : [ 78, 79, 78, 57, 55 ] Dalam ASCII Index : [ 0, 1, 2, ... 225 ]
Kunci = [ L A S E]
Kunci = [ 76, 65, 83, 69 ] Dalam ASCII Jumlah karakter plaintext 6 (length of plaintext) Jumlah karakter kunci 4 (length of key)
Kunci akan di-generate dengan Key Scheduling Algorithm (KSA) dan Pseudo Random Generation Algorithm (PRGA) adalah sebagai berikut :
1. Tahap Key Scheduling Algorithm (KSA) algoritma RC4+
Dengan nilai i = 0 hingga 255, lakukan perhitungan nilai j yang pertama. Proses perhitungan sebagai berikut : Nilai i = 0
1. j = (j + S[i] + key[i mod keylength]) mod 256 j = (0 + S[0] + key[0]) mod 256
j = (0 + 0 + 76) mod 256 j = 76 mod 256
j = 76
Nilai S[i] swap dengan nilai S[j] nilai S[0] ditukar dengan (swap) dengan nilai S[76], maka nilai dari S[0] = 76 dan nilai dari S[76] = 0. Nilai i = 1, lakukan perhitungan nilai j yang kedua yaitu j = 76 Proses perhitungan sebagai berikut :
Nilai i = 1
2. j = (j + S[i] + key[i mod keylength]) mod 256 j = (76 + S[1] + key[1 mod 4]) mod 256 j = (76+ 1 + key[1]) mod 256
j = (76 + 1 + 65) mod 256 j = (142) mod 256 j = 142
Tukarkan nilai S[1] dengan S[142], maka nilai dari S[1] = 142 dan nilai dari S[142] = 1. Maka i dimulai dari 0 hingga 255 pada saat nilai i=2 maka ingat bahwa nilai j pada saat i=1 adalah 142 maka proses perhitungan sebagai berikut :
Nilai i = 2
3. j = (j + S[i] + key[i mod keylength]) mod 256 j = (142 + S[2] + key[2 mod 4]) mod 256 j = (142+ 2 + key[2]) mod 256
j = (142 + 2 + 83) mod 256 j = (227) mod 256
j = 227
Tukarkan nilai S[2] dengan S[227], maka nilai dari S[1] = 227 dan nilai dari S[227] = 1. Maka i dimulai dari 0 hingga 255 pada saat nilai i=2 maka ingat bahwa nilai j pada saat i=1 adalah 227 maka proses perhitungan sebagai berikut :
Nilai i = 3
4. j = (j + S[i] + key[i mod keylength]) mod 256 j = (227 + S[3] + key[3 mod 4]) mod 256 j = (227+ 3 + key[3]) mod 256
j = (227 + 3 + 69) mod 256 j = (299) mod 256
j = 43
Tukarkan nilai S[3] dengan S[43], maka nilai dari S[3] = 43 dan nilai dari S[43] = 3. Ulangi langkah 4
Hal: 232-243 hingga indeks i = 255, kemudian array s1 teracak
sebanyak 256 kali. Nilai-nilai pada state tersebut masih bersifat sementara hingga i = 255. Nilai state akhir didapatkan apabila i telah mencapai nilai 255. Hasil tahap Key Scheduling Algoritihm (KSA) berupa nilai state akhir dapat dilihat pada tabel 3.3 dimana nilai i berada pada baris yang berwarna putih dan nilai dari S[i] berada pada baris yang berwarna hijau.
Tabel 2. Larik 256 Byte Hasil Perhitungan Pengacakan Tahap KSA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 12 4 14 6 19 0 45 21 9 17 4 10 9 23 8 51 13 6 71 49 99 14 15 16 17 18 19 20 21 22 23 24 25 26 27 13 2 15 0 60 18 1 11 12 7 20 24 1 57 40 28 22 2 17 7 12 9 28 29 30 31 32 33 34 35 36 37 38 39 40 41 14 8 18 9 22 1 84 15 8 13 1 24 5 93 19 5 21 1 10 78 40 10 2 42 43 44 45 46 47 48 49 50 51 52 53 54 55 65 63 24 4 17 2 54 19 0 13 7 39 71 16 9 20 3 32 12 15 3 56 57 58 59 60 61 62 63 64 65 66 67 68 69 53 87 19 4 13 17 3 12 0 14 1 3 9 11 9 24 25 2 21 2 14 70 71 72 73 74 75 76 77 78 79 80 81 82 83 17 5 31 15 8 17 8 69 21 4 19 3 44 23 7 5 19 8 67 68 84 85 86 87 88 89 90 91 92 93 94 95 96 97 21 74 20 6 23 10 7 55 34 18 3 38 46 53 24 1 56 82 98 99 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 11 0 11 1 22 19 1 20 8 66 15 1 24 6 7 14 7 22 0 12 2 35 25 19 7 18 5 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 12 0 12 1 12 2 12 3 12 4 12 5 61 76 4 50 16 2 26 11 7 10 4 90 12 8 11 4 79 10 5 15 2 12 6 12 7 12 8 12 9 13 0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 13 8 13 9 10 0 13 4 23 1 29 41 16 0 23 5 16 4 20 5 16 3 13 5 16 6 37 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 15 0 15 1 15 2 15 3 47 62 1 91 11 8 11 3 21 6 16 1 25 0 58 96 19 9 14 3 22 7 15 4 15 5 15 6 15 7 15 8 15 9 16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 23 4 35 18 4 10 3 52 24 0 11 5 22 4 48 89 25 3 22 5 16 6 43 16 8 16 9 17 0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 18 0 18 1 13 0 64 13 8 14 9 21 3 18 8 15 6 75 73 14 0 94 17 23 6 11 1 18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9 19 0 19 1 19 2 19 3 19 4 19 5 16 5 20 7 15 9 88 8 81 18 2 90 22 3 36 22 6 15 7 15 4 19 1 19 6 19 7 19 8 19 9 20 0 20 1 20 2 20 3 20 4 20 5 20 6 20 7 20 8 20 9 19 6 18 0 10 1 17 9 25 5 11 2 17 1 80 14 0 18 7 10 8 59 18 6 20 4 21 0 21 1 21 2 21 3 21 4 21 5 21 6 21 7 21 8 21 9 22 0 22 1 22 2 22 3 20 2 24 9 85 42 23 9 21 5 22 8 92 98 20 1 20 2 12 6 77 24 7 22 4 22 5 22 6 22 7 22 8 22 9 23 0 23 1 23 2 23 3 23 4 23 5 23 6 23 7 12 4 11 6 86 23 7 13 9 2 12 5 23 2 23 0 19 2 17 0 14 4 97 23 3 23 8 23 9 24 0 24 1 24 2 24 3 24 4 24 5 24 6 24 7 24 8 24 9 25 0 25 1 25 1 20 0 27 15 5 13 3 95 22 9 21 8 30 16 8 12 1 21 0 10 6 17 6 25 2 25 3 25 4 25 5 11 0 25 4 24 2 21 7
2. Tahap Pseudo Random Generation Algorithm (PRGA)
Pada tahap awal inisialisasikan nilai i = 0 dan j = 0, Lakukan inisialisasi pada nilai i dan j sama dengan 0. Kemudian inisialisasikan a = S[i] dan b = S[j]. Selanjutnya
lakukan perhitungan nilai i, j, a, b, c dan z yang baru dengan cara :
Untuk i = 0
i = (i + 1) mod 256 = (0 + 1) mod 256 = 1 a = S[i] = S[1] = 146 j = (j + a) mod 256 = (0 + 146) mod 256 = 146
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[146] = 216 S[i] = b = S[1] = 216 S[j] = a = S[146] = 146
Dari perhitungan diatas didapat S[1] = 216 dan S[146] = 146. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 1 dan j :146
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((1≪5)⊕ (146≫3)) mod 256] + S[((146≪5)⊕(1≫3))mod256])mod256
𝑐 = (S[(32 ⊕ 18) mod 256] + S[( 64⊕ 0) mod 256])
mod 256
𝑐 = (S[(50) mod 256] + S[(64) mod 256]) mod 256 𝑐 = (S[50] + S[64]) mod 256
𝑐 = (71 + 9) mod 256
c = 80 mod 256 c = 80
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 1 dan j :146 a = S[i] = S[1] = 146 j = (j + a) mod 256 = (0 + 146) mod 256 = 146 S[i] = b = S[1] = 216 S[j] = a = S[146] = 146 Nilai c : 80 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(146+216)mod256]+S[((80⊕170)mod256)])⊕S[ (146+216)mod256])mod256 𝑧 = ((S[(362) mod 256] + (80⊕170)mod 256)])⊕S[(362)mod 256]) mod 256 z = ((S[(106)+S[((80⊕170)mod 256)])⊕S[(106)mod 256]) mod 256 𝑧 =((S[106] + S[250]) ⊕S[106]) mod 256 𝑧 =((220 + 106) ⊕ 220) mod 256 𝑧 =((326) ⊕ 220) mod 256 𝑧 =410 mod 256 z = 154
Nilai z ini akan menjadi nilai kunci [0] untuk mengenkripsi plainteks.
Plainteks yang diamankan : N
Plainteks [0] N : 78 01001110
Kunci [0] : 154 10011010 ⊕
Ciphertext [0] : 212 11010100
Ciphertext [0] : Ô (dalam ASCII)
Inisialisasi pada nilai i = 1 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara :
Hal: 232-243 Untuk i = 1
i = (i + 1) mod 256 = (1 + 1) mod 256 = 2 a = S[i] = S[2] = 19 j = (j + a) mod 256 = (146 + 19) mod 256 = 165
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[165] = 225 S[i] = b = S[2] = 225 S[j] = a = S[165] = 165
Dari perhitungan diatas didapat S[2] = 225 dan S[165] = 165. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 2 dan j :165
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((2≪5)⊕ (165≫3)) mod 256] + S[((165≪5)⊕(2≫3))mod256])mod256
𝑐 = (S[(64 ⊕ 20) mod 256] + S[( 160⊕ 0) mod 256])
mod 256
𝑐 = (S[(84) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[84] + S[160]) mod 256
𝑐 = (21 + 115) mod 256
c = 136 mod 256 c = 136
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 2 dan j :165 a = S[i] = S[2] = 19 j = (j + a) mod 256 = (146 + 19) mod 256 = 165 S[i] = b = S[2] = 225 S[j] = a = S[165] = 165 Nilai c : 136 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(19+225)mod256]+S[((136⊕170)mod256)])⊕S[ (165+225)mod256])mod256 𝑧 = ((S[(244) mod 256] + (136⊕170)mod 256)])⊕S[(390)mod 256]) mod 256 z = ((S[(155)+S[((136⊕170)mod 256)]) ⊕S[(134)mod 256]) mod 256 𝑧 =((S[155] + S[34]) ⊕ S[134]) mod 256 𝑧 =((35 + 245) ⊕ 205) mod 256 𝑧 =((280) ⊕ 205) mod 256 𝑧 =469 mod 256 z = 213
Nilai z ini akan menjadi nilai kunci [1] untuk mengekripsi plainteks.
Plainteks yang diamankan : O
Plainteks [0] 0 : 79 01001111
Kunci [0] : 213 11010101 ⊕
Cipheretxt [0] : 154 10011010
Ciphertext [0] : SCI (dalam ASCII)
Inisialisasi pada nilai i = 2 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 2
i = (i + 2) mod 256 = (2 + 1) mod 256 = 3 a = S[i] = S[3] = 0
j = (j + a) mod 256 = (165 + 0) mod 256 = 165
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[165] = 225 S[i] = b = S[3] = 225 S[j] = a = S[165] = 165
Dari perhitungan diatas didapat S[3] = 225 dan S[165] = 165. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 3 dan j :165
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((3≪5)⊕ (165≫3)) mod 256] + S[((165≪5)⊕(3≫3))mod256])mod256
𝑐 = (S[(96 ⊕ 20) mod 256] + S[( 160⊕ 0) mod 256])
mod 256
𝑐 = (S[(116) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[116] + S[160]) mod 256
𝑐 = (162 + 115) mod 256
c = 277 mod 256 c = 21
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 3 dan j :165 a = S[i] = S[3] = 0 j = (j + a) mod 256 = (165 + 0) mod 256 = 165 S[i] = b = S[3] = 225 S[j] = a = S[165] = 165 Nilai c : 21 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(0+225)mod256]+S[((21⊕170)mod256)])⊕S[(1 65+225)mod256]) mod 256 𝑧 = ((S[(225) mod 256] + (21⊕170)mod 256)])⊕S[(390)mod 256]) mod 256 z = ((S[(225)+S[((21⊕170)mod 256)]) ⊕S[(134)mod 256]) mod 256 𝑧 =((S[225] + S[191]) ⊕ S[134]) mod 256 𝑧 =((116 + 36) ⊕ 205) mod 256 𝑧 =((152) ⊕ 205) mod 256 𝑧 =85 mod 256 z = 85
Nilai z ini akan menjadi nilai kunci [2] untuk mengekripsi plainteks.
Plainteks yang diamankan : N
Plainteks [0] 0 : 78 01001110
Kunci [0] : 85 01010101 ⊕
Ciphertext [0] : 27 00011011
Ciphertext [0] : ESC (dalam ASCII)
Inisialisasi pada nilai i = 3 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 3
Hal: 232-243
a = S[i] = S[4] = 45 j = (j + a) mod 256 = (165 + 45) mod 256 = 210
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[210] = 202 S[i] = b = S[4] = 202 S[j] = a = S[210] = 210
Dari perhitungan diatas didapat S[4] = 202 dan S[210] = 210. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 4 dan j :210
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((4≪5)⊕ (210≫3)) mod 256] + S[((210≪5)⊕(4≫3))mod256])mod256
𝑐 = (S[(128 ⊕ 26) mod 256] + S[( 64⊕ 0) mod 256])
mod 256
𝑐 = (S[(154) mod 256] + S[(64) mod 256]) mod 256 𝑐 = (S[154] + S[64]) mod 256
𝑐 = (234 + 9) mod 256
c = 243 mod 256 c = 243
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 4 dan j :210 a = S[i] = S[4] = 45 j = (j + a) mod 256 = (165 + 45) mod 256 = 210 S[i] = b = S[4] = 202 S[j] = a = S[210] = 210 Nilai c : 243 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(45+202)mod256]+S[((243⊕170)mod256)])⊕S[ (210+202)mod256])mod256 𝑧 = ((S[(247) mod 256] + (243⊕170)mod 256)])⊕S[(412)mod 256]) mod 256 z = ((S[(247)+S[((243⊕170)mod 256)]) ⊕S[(156)mod 256]) mod 256 𝑧 =((S[247] + S[89]) ⊕ S[156]) mod 256 𝑧 =((168 + 55) ⊕ 184) mod 256 𝑧 =((223) ⊕ 184) mod 256 𝑧 =103 mod 256 z = 103
Nilai z ini akan menjadi nilai kunci [3] untuk mengekripsi plainteks.
Plainteks yang diamankan : I
Plainteks [0] 0 : 73 01001001
Kunci [0] : 103 01100111 ⊕
Ciphertext [0] : 46 00101110
Ciphertext [0] : . (dalam ASCII)
Inisialisasi pada nilai i = 4 dan j = 210. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 4
i = (i + 4) mod 256 = (4 + 1) mod 256 = 5 a = S[i] = S[5] = 219 j = (j + a) mod 256 = (210 + 219) mod 256 = 173
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[173] = 188 S[i] = b = S[5] = 188 S[j] = a = S[173] = 173
Dari perhitungan diatas didapat S[5] = 188 dan S[173] = 173. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 5 dan j :173
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((5≪5)⊕ (173≫3)) mod 256] + S[((173≪5)⊕(5≫3))mod256])mod256
𝑐 = (S[(0 ⊕ 21) mod 256] + S[( 160⊕ 0) mod 256])
mod 256
𝑐 = (S[(21) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[21] + S[160]) mod 256
𝑐 = (241 + 115) mod 256
c = 356 mod 256 c = 100
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 5 dan j :173 a = S[i] = S[5] = 219 j = (j + a) mod 256 = (210 + 219) mod 256 = 173 S[i] = b = S[5] = 188 S[j] = a = S[173] = 173 Nilai c : 100 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(219+188)mod256]+S[((100⊕170)mod256)])⊕S [(173+188)mod256])mod256 𝑧 = ((S[(407) mod 256] + (100⊕170)mod 256)])⊕S[(361)mod 256]) mod 256 z = ((S[(151)+S[((100⊕170)mod 256)]) ⊕S[(105)mod 256]) mod 256 𝑧 =((S[151] + S[206]) ⊕ S[105]) mod 256 𝑧 =((199 + 108) ⊕ 147) mod 256 𝑧 =((307) ⊕ 147) mod 256 𝑧 =416 mod 256 z = 160
Nilai z ini akan menjadi nilai kunci [4] untuk mengekripsi plainteks.
Plainteks yang diamankan : 9
Plainteks [0] 9 : 57 00111001
Kunci [0] : 160 10100000 ⊕
Ciphertext [0] : 153 10011001
Ciphertext [0] : SGCI (dalam ASCII)
Inisialisasi pada nilai i = 4 dan j = 173. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 5
i = (i + 5) mod 256 = (5 + 1) mod 256 = 6 a = S[i] = S[6] = 174 j = (j + a) mod 256 = (173 + 174) mod 256 = 91
Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
Hal: 232-243
b = S[j] = S[91] = 183 S[i] = b = S[6] = 183 S[j] = a = S[91] = 91
Dari perhitungan diatas didapat S[6] = 183 dan S[91] = 91. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 6 dan j :91
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3))
mod 256]) mod 256
𝑐 =(S[((6≪5)⊕ (91≫3)) mod 256] + S[((91≪5)⊕(6≫3))mod256])mod256
𝑐 = (S[(192 ⊕ 11) mod 256] + S[( 96⊕ 0) mod 256])
mod 256
𝑐 = (S[(203) mod 256] + S[(96) mod 256]) mod 256 𝑐 = (S[203] + S[96]) mod 256
𝑐 = (80 + 56) mod 256
c = 136 mod 256 c = 136
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 6 dan j :91 a = S[i] = S[6] = 174 j = (j + a) mod 256 = (173 + 174) mod 256 = 91 S[i] = b = S[6] = 183 S[j] = a = S[91] = 91 Nilai c : 136 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(174+183)mod256]+S[((136⊕170)mod256)])⊕S [(91+183)mod256])mod256 𝑧 = ((S[(357) mod 256] + (136⊕170)mod 256)])⊕S[(274)mod 256]) mod 256 z = ((S[(101)+S[((136⊕170)mod 256)]) ⊕S[(18)mod 256]) mod 256 𝑧 =((S[101] + S[34]) ⊕ S[18]) mod 256 𝑧 =((66 + 245) ⊕ 11) mod 256 𝑧 =((311) ⊕ 11) mod 256 𝑧 =292 mod 256 z = 36
Nilai z ini akan menjadi nilai kunci [6] untuk mengekripsi plainteks.
Plainteks yang diamankan : 7
Plainteks [0] 7 : 55 00110111
Kunci [0] : 36 00100100 ⊕
Ciphertext [0] : 19 00010011
Ciphertext [0] : DC3 (dalam ASCII) Jadi hasil yang didapat adalah sebagai berikut : Plainteks : [ N, O, N, I, 9, 7 ]
Plainteks : [ 78, 79, 78, 73, 57,55 ] (dalam ASCII)
Ciphertext : [ 212, 154, 27, 46, 153, 19 ]
Ciphertext : [Ô, SCI, ESC, . , SGCI, DC3] (dalam
ASCII)
C. Penerapan Metode Dynamic Cell Spreading (DCS) Misalkan text berisikan dari hasil cipherteks dari proses enkripsi algoritma RC4+ Cipherteks : [ 212, 154, 27,
46, 153, 19 ] Cipherteks : [Ô, SCI, ESC, . , SGCI, DC3] (dalam ASCII).
Berikut ini akan diuraikan contoh penyembunyian (embedding) pesan teks pada citra digital berdasarkan algoritma dynamic cell spreading.
1. Siapkan pesan yang akan disembunyikan.
Pesan yang akan disembunyikan merupakan karakter-karakter dari tabel ASCII yang dirangka menjadi data teks. Mengingat proses yang sangat banyak, maka jumlah karakter pesan yang akan disisipkan adalah :
Char Pesan
Karakter Pesan Yang disembunyikan
Ô SCI ESC . SGCI DC3
Desim
al 212 154 27 46 153
19 Biner 11010100 10011010 00011011 00101110 10011001 00010011
Biner dari nilai desimal total bit pesan utama 48 bit
2. Tetapkan kunci yang digunakan baik untuk embedding maupun ekstraksi. Kunci = LASE Kunci L A S E Decimal 76 65 83 69 Biner 01001100 01000001 01010011 01000101 3. XOR biner kunci
L = 01001100 A = 01000001 XOR 1 00001101 S = 01010011 XOR 2 01011110 E = 01000101
XOR 3 00011011 = 27 desimal (Char g) Hasil XOR kunci digabungkan dengan pesan. Sehingga pesan keseluruhan setelah digabungkan dengan kunci, dan bit-bit pesan utama menjadi :
Hasil XOR Kunci
Karakter Pesan Utama
Biner Pesan Seluruh nya
ESC Ô SCI ESC . SGCI DC3
00011 011 11010 100 10011 010 00011 011 00101 110 10011 001 00010 011
4. Proses pemeriksaan jumlah bit yang dapat ditampung oleh citra cover.
Proses ini dilakukan dengan menghitung jumlah bit dari keseluruhan karakter pesan, kemudian membandingkan dengan jumlah bit-bit dari seluruh pixel citra penampung (citra cover).
Pesan keseluruhan adalah :
Hasil XOR Kunci
Karakter Pesan Utama
Biner Pesan Seluruhn
ya
ESC Ô SCI ESC . SGCI DC3
000110 11 110101 00 100110 10 000110 11 001011 10 100110 01 000100 11 Total Bit Pesan Keseluruhan Adalah 56 Bit
Hal: 232-243 Setiap pixel citra JPG 24 bit memiliki 3 elemen
warna yaitu red, green dan blue. Masing-masing elemen warna tersebut terdiri dari 8 bit, sehingga citra ini memiliki 24 bit setiap pixel (8 bit x 3 elemen warna).
Penyisipan dilakukan dengan mengganti bit-bit terakhir (1 bit) dari setiap elemen warna pixel atau dapat diartikan setiap pixel dapat menampung 3 bit pesan. Total pixel citra yang dapat menampung pesan yang akan disembunyikan dapat dihitung dengan total bit pesan dibagi dengan 3 (56 bit / 3 = 19). Artinya bahwa untuk menyembunyikan pesan 48 bit membutuhkan 19 pixel dari citra cover. Berdarkan hasil perhitungan ini, maka dapat disimpulkan bahwa citra cover dengan ukuran di atas dapat digunakan untuk menyembunyikan pesan 56 bit di atas. 5. Nilai pembangkit bilangan pengacakan (m) misalnya
adalah 367
6. Proses pengacakan posisi-posisi pixel citra penampung (citra cover)
Bangkitkan 20 bilangan acak dengan menggunakan nilai m, hasil dari pengacakan dijadikan sebagai parameter pemindahan posisi pixel citra cover.
a. Urutkan warna palet pixel citra beserta nilai desimalnya sesuai dengan urutan pixel yang masih natural. Nilai desimal setiap warna palet pixel citra didapatkan dengan cara melakukan konversi elemen setiap warna pixel menjadi bilangan desimal, dalam contoh kasus ini dilakukan dengan menggunakan matlab 6.0. Setiap warna dikonversikan dengan rumus (Nilai R *65536) + (Nilai G *256) + (Nilai B). Kemudian palet warna diurutkan berdasarkan besar bilangan integer yang mewakili warna tersebut.
b. Urutkan susunan palet pixel di atas mulai dari nilai total warna paling rendah :
c. Lakukan iterasi terhadap variabel i dengan nilai i sampai n (jumlah pixel dari citra penampung pesan). Setiap warna pada urutan n-i dipindahkan ke posisi baru yaitu m mod i, kemudian m dibagi dengan i. Nilai n = 20, nilai m = 367. d. Palet warna baru hasil iterasi pada setiap
langkah dimasukkan ke dalam palet warna berkas (buffer memory). Apabila ada sebuah tempat yang diisi oleh 2 buah warna maka warna yang sebelumnya menempati tempat tersebut akan digeser satu tempat ke posisi berikutnya.
Iterasi variabel i dari mulai 1 sampai n, nilai n = 20 (jumlah pixel citra penampung pesan yang digunakan dalam contoh kasus ini) :
Warna indeks ke-(n-i) dipindahkan ke indeks ke- (m mod i), m=m/i
Diketahui n = 20, m= 367 Nilai untuk i = 1, maka :
indeks ke- ( n – i ) = 20 - 1= 19, dipindahkan ke indeks pixel ke - ( m mod i ) = 367 mod 1 = 0 Sehingga diperoleh bahwa palet pixel yang berada pada indeks ke-19 dipindahkan ke indeks ke-0, kemudian simpan ke buffer memory.
7. Proses penggantian bit rendah (least significant bit) citra cover dengan bit-bit pesan.
8. Susun kembali palet warna pixel dari buffer memory setelah disisipkan pesan. Proses penyusunan ini dilakukan dengan mengurutkan kembali urutan pixel dari yang terkecil ke yang terbesar (urutkan berdasakan nomor index-nya), sehingga susunan pixel-pixel kembali sama seperti susunan pixel citra cover sebelum pengacakan tetapi telah tersisipkan pesan. Simpan citra yang baru menjadi steganoimage ke dalam media penyimpanan.
Proses dekripsi sama dengan proses enkripsi dengan menggunakan kunci yang sama, berikut ini adalah proses dekripsi yang bertujuan untuk mengembalikan pesan tersandi kepesan asli.
Cipherteks : [ 212, 154, 27, 46, 153, 19 ]
Cipherteks : [Ô, SCI, ESC, . , SGCI, DC3] (dalam ASCII)
Pada tahap awal inisialisasikan nilai i = 0 dan j = 0, Lakukan inisialisasi pada nilai i dan j sama dengan 0. Kemudian inisialisasikan a = S[i] dan b = S[j]. Selanjutnya lakukan perhitungan nilai i, j, a, b, c dan z yang baru dengan cara :
Untuk i = 0
i = (i + 1) mod 256 = (0 + 1) mod 256 = 1
a = S[i] = S[1] = 146
j = (j + a) mod 256 = (0 + 146) mod 256 = 146 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[146] = 216
S[i] = b = S[1] = 216
S[j] = a = S[146] = 146
Dari perhitungan diatas didapat S[1] = 216 dan S[146] = 146. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 1 dan j :146
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((1≪5)⊕ (146≫3)) mod 256] + S[((146≪5)⊕(1≫3))mod256])mod256
𝑐 = (S[(32 ⊕ 18) mod 256] + S[( 64⊕ 0) mod 256]) mod 256
𝑐 = (S[(50) mod 256] + S[(64) mod 256]) mod 256 𝑐 = (S[50] + S[64]) mod 256
𝑐 = (71 + 9) mod 256 c = 80 mod 256 c = 80
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 1 dan j :146 a = S[i] = S[1] = 146 j = (j + a) mod 256 = (0 + 146) mod 256 = 146 S[i] = b = S[1] = 216 S[j] = a = S[146] = 146 Nilai c : 80 Mencari nilai z.
Hal: 232-243 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(146+216)mod256]+S[((80⊕170)mod256)])⊕S[( 146+216)mod256])mod256 𝑧 = ((S[(362) mod 256] + (80⊕170)mod 256)])⊕S[(362)mod 256]) mod 256 z = ((S[(106)+S[((80⊕170)mod 256)])⊕S[(106)mod 256]) mod 256 𝑧 =((S[106] + S[250]) ⊕S[106]) mod 256 𝑧 =((220 + 106) ⊕ 220) mod 256 𝑧 =((326) ⊕ 220) mod 256 𝑧 =410 mod 256 z = 154
Nilai z ini akan menjadi nilai kunci [0] untuk mengekripsi plainteks.
Cipherteks yang tersandi : Ô
Cipherteks [0] Ô : 212 11010100
Kunci [0] : 154 10011010 ⊕
Plainteks [0] : 78 01001110
Plainteks [0] : N (dalam ASCII)
Inisialisasi pada nilai i = 1 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 1
i = (i + 1) mod 256 = (1 + 1) mod 256 = 2
a = S[i] = S[2] = 19
j = (j + a) mod 256 = (146 + 19) mod 256 = 165 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[165] = 225
S[i] = b = S[2] = 225
S[j] = a = S[165] = 165
Dari perhitungan diatas didapat S[2] = 225 dan S[165] = 165. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 2 dan j :165
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((2≪5)⊕ (165≫3)) mod 256] + S[((165≪5)⊕(2≫3))mod256])mod256
𝑐 = (S[(64 ⊕ 20) mod 256] + S[( 160⊕ 0) mod 256]) mod 256
𝑐 = (S[(84) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[84] + S[160]) mod 256
𝑐 = (21 + 115) mod 256 c = 136 mod 256 c = 136
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 2 dan j :165 a = S[i] = S[2] = 19 j = (j + a) mod 256 = (146 + 19) mod 256 = 165 S[i] = b = S[2] = 225 S[j] = a = S[165] = 165 Nilai c : 136 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(19+225)mod256]+S[((136⊕170)mod256)])⊕S[( 165+225)mod256])mod256 𝑧 = ((S[(244) mod 256] + (136⊕170)mod 256)])⊕S[(390)mod 256]) mod 256 z = ((S[(155)+S[((136⊕170)mod 256)]) ⊕S[(134)mod 256]) mod 256 𝑧 =((S[155] + S[34]) ⊕ S[134]) mod 256 𝑧 =((35 + 245) ⊕ 205) mod 256 𝑧 =((280) ⊕ 205) mod 256 𝑧 =469 mod 256 z = 213
Nilai z ini akan menjadi nilai kunci [1] untuk mengekripsi plainteks.
Cipherteks yang tersandi : SCI
Cipherteks [0] : 154 10011010
Kunci [0] : 213 11010101 ⊕
Plainteks [0] 0 : 79 01001111 Plainteks [0] 0 : O (dalam ASCII)
Inisialisasi pada nilai i = 2 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 2
i = (i + 2) mod 256 = (2 + 1) mod 256 = 3
a = S[i] = S[3] = 0
j = (j + a) mod 256 = (165 + 0) mod 256 = 165 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[165] = 225
S[i] = b = S[3] = 225
S[j] = a = S[165] = 165
Dari perhitungan diatas didapat S[3] = 225 dan S[165] = 165. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 3 dan j :165
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((3≪5)⊕ (165≫3)) mod 256] + S[((165≪5)⊕(3≫3))mod256])mod256
𝑐 = (S[(96 ⊕ 20) mod 256] + S[( 160⊕ 0) mod 256]) mod 256
𝑐 = (S[(116) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[116] + S[160]) mod 256
𝑐 = (162 + 115) mod 256 c = 277 mod 256 c = 21
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 3 dan j :165 a = S[i] = S[3] = 0 j = (j + a) mod 256 = (165 + 0) mod 256 = 165 S[i] = b = S[3] = 225 S[j] = a = S[165] = 165 Nilai c : 21 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(0+225)mod256]+S[((21⊕170)mod256)])⊕S[(16 5+225)mod256])mod256
Hal: 232-243 𝑧 = ((S[(225) mod 256] + (21⊕170)mod 256)])⊕S[(390)mod 256]) mod 256 z = ((S[(225)+S[((21⊕170)mod 256)]) ⊕S[(134)mod 256]) mod 256 𝑧 =((S[225] + S[191]) ⊕ S[134]) mod 256 𝑧 =((116 + 36) ⊕ 205) mod 256 𝑧 =((152) ⊕ 205) mod 256 𝑧 =85 mod 256 z = 85
Nilai z ini akan menjadi nilai kunci [2] untuk mengekripsi plainteks.
Cipherteks yang disandikan : ESC
Cipherteks [0] : 27 00011011
Kunci [0] : 85 01010101 ⊕
Plainteks [0] 0 : 78 01001110 Plainteks [0] 0 : N (dalam ASCII) Inisialisasi pada nilai i = 3 dan j = 146. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 3
i = (i + 3) mod 256 = (3 + 1) mod 256 = 4
a = S[i] = S[4] = 45
j = (j + a) mod 256 = (165 + 45) mod 256 = 210 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[210] = 202
S[i] = b = S[4] = 202
S[j] = a = S[210] = 210
Dari perhitungan diatas didapat S[4] = 202 dan S[210] = 210. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 4 dan j :210
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((4≪5)⊕ (210≫3)) mod 256] + S[((210≪5)⊕(4≫3))mod256])mod256
𝑐 = (S[(128 ⊕ 26) mod 256] + S[( 64⊕ 0) mod 256]) mod 256
𝑐 = (S[(154) mod 256] + S[(64) mod 256]) mod 256 𝑐 = (S[154] + S[64]) mod 256
𝑐 = (234 + 9) mod 256 c = 243 mod 256 c = 243
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 4 dan j :210 a = S[i] = S[4] = 45 j = (j + a) mod 256 = (165 + 45) mod 256 = 210 S[i] = b = S[4] = 202 S[j] = a = S[210] = 210 Nilai c : 243 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(45+202)mod256]+S[((243⊕170)mod256)])⊕S[( 210+202)mod256])mod256 𝑧 = ((S[(247) mod 256] + (243⊕170)mod 256)])⊕S[(412)mod 256]) mod 256 z = ((S[(247)+S[((243⊕170)mod 256)]) ⊕S[(156)mod 256]) mod 256 𝑧 =((S[247] + S[89]) ⊕ S[156]) mod 256 𝑧 =((168 + 55) ⊕ 184) mod 256 𝑧 =((223) ⊕ 184) mod 256 𝑧 =103 mod 256 z = 103
Nilai z ini akan menjadi nilai kunci [3] untuk mengekripsi plainteks.
Plainteks yang diamankan : .
Cipherteks [0] : 46 00101110
Kunci [0] : 103 01100111 ⊕
Plainteks [0] 0 : 73 01001001 Plainteks [0] 0 : I (dalam ASCII) Inisialisasi pada nilai i = 4 dan j = 210. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 4
i = (i + 4) mod 256 = (4 + 1) mod 256 = 5
a = S[i] = S[5] = 219
j = (j + a) mod 256 = (210 + 219) mod 256 = 173 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[173] = 188
S[i] = b = S[5] = 188
S[j] = a = S[173] = 173
Dari perhitungan diatas didapat S[5] = 188 dan S[173] = 173. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 5 dan j :173
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((5≪5)⊕ (173≫3)) mod 256] + S[((173≪5)⊕(5≫3))mod256])mod256
𝑐 = (S[(0 ⊕ 21) mod 256] + S[( 160⊕ 0) mod 256]) mod 256
𝑐 = (S[(21) mod 256] + S[(160) mod 256]) mod 256 𝑐 = (S[21] + S[160]) mod 256
𝑐 = (241 + 115) mod 256 c = 356 mod 256 c = 100
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 5 dan j :173 a = S[i] = S[5] = 219 j = (j + a) mod 256 = (210 + 219) mod 256 = 173 S[i] = b = S[5] = 188 S[j] = a = S[173] = 173 Nilai c : 100 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(219+188)mod256]+S[((100⊕170)mod256)])⊕S[ (173+188)mod256])mod256 𝑧 = ((S[(407) mod 256] + (100⊕170)mod 256)])⊕S[(361)mod 256]) mod 256 z = ((S[(151)+S[((100⊕170)mod 256)]) ⊕S[(105)mod 256]) mod 256
Hal: 232-243 𝑧 =((S[151] + S[206]) ⊕ S[105]) mod 256 𝑧 =((199 + 108) ⊕ 147) mod 256 𝑧 =((307) ⊕ 147) mod 256 𝑧 =416 mod 256 z = 160
Nilai z ini akan menjadi nilai kunci [4] untuk mengekripsi plainteks.
Plainteks yang diamankan : SGCI
Cipherteks [0] : 153 10011001 Kunci [0] : 160 10100000 ⊕ Plainteks [0] : 57 00111001 Plainteks [0] : 9 (dalam ASCII)
Inisialisasi pada nilai i = 4 dan j = 173. Selanjutnya lakukan perhitungan nilai i dan j yang baru dengan cara : Untuk i = 5
i = (i + 5) mod 256 = (5 + 1) mod 256 = 6
a = S[i] = S[6] = 174
j = (j + a) mod 256 = (173 + 174) mod 256 = 91 Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut :
b = S[j] = S[91] = 183 S[i] = b = S[6] = 183
S[j] = a = S[91] = 91
Dari perhitungan diatas didapat S[6] = 183 dan S[91] = 91. Berdasarkan proses sebelumnya yang didapatkan nilai i dan j adalah sebagai berikut :
i : 6 dan j :91
Selanjutnya hitung nilai c dengan cara :
𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) ⊕ (i≫3)) mod 256]) mod 256
𝑐 =(S[((6≪5)⊕ (91≫3)) mod 256] + S[((91≪5)⊕(6≫3))mod256])mod256
𝑐 = (S[(192 ⊕ 11) mod 256] + S[( 96⊕ 0) mod 256]) mod 256
𝑐 = (S[(203) mod 256] + S[(96) mod 256]) mod 256 𝑐 = (S[203] + S[96]) mod 256
𝑐 = (80 + 56) mod 256 c = 136 mod 256 c = 136
Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut:
i : 6 dan j :91 a = S[i] = S[6] = 174 j = (j + a) mod 256 = (173 + 174) mod 256 = 91 S[i] = b = S[6] = 183 S[j] = a = S[91] = 91 Nilai c : 136 Mencari nilai z. 𝑧 =((S[(a+b)mod256]+S[((c ⊕170)mod 256)])⊕S[(j +b) mod256])mod 256 𝑧=((S[(174+183)mod256]+S[((136⊕170)mod256)])⊕S[ (91+183)mod256])mod256 𝑧 = ((S[(357) mod 256] + (136⊕170)mod 256)])⊕S[(274)mod 256]) mod 256 z = ((S[(101)+S[((136⊕170)mod 256)]) ⊕S[(18)mod 256]) mod 256 𝑧 =((S[101] + S[34]) ⊕ S[18]) mod 256 𝑧 =((66 + 245) ⊕ 11) mod 256 𝑧 =((311) ⊕ 11) mod 256 𝑧 =292 mod 256 z = 36
Nilai z ini akan menjadi nilai kunci [6] untuk mengekripsi plainteks.
Plainteks yang diamankan : DC3
Cipherteks [0] : 19 00010011
Kunci [0] : 36 00100100 ⊕
Plainteks [0] : 55 00110111 Plainteks [0] : 7 (dalam ASCII) Jadi hasil yang didapat adalah sebagai berikut : Cipherteks : [ 212, 154, 27, 46, 153, 19 ]
Cipherteks : [Ô, SCI, ESC, . , SGCI, DC3] (dalam ASCII)
Plainteks : [ N, O, N, I, 9, 7 ]
Plainteks : [ 78, 79, 78, 73, 57,55 ] (dalam ASCII) Berdasarkan hasil perhitungan keseluruhan proses enkripsi dan dekripsi pengujian secara manual dengan Ciphertext [Ô, SCI, ESC, . , SGCI, DC3] menjadi Plaintext [ N, O, N, I, 9, 7 ] dengan algoritma RC4+ menunjukkan hasil yang sesuai.
4. KESIMPULAN
Berdasarkan hasil penelitian dan evaluasi sebelumnya, maka diambil beberapa kesimpulan-kesimpulan. Adapun kesimpulan-kesimpulan tersebut adalah Pengamanan teks dengan algoritma RC4+ dapat mengamankan teks karena hasil dari enkripsi merupakn simbol-simbol yang tidak mudah dipahami oleh orang lain. Berdasarkan pengujian yang dilakukan algoritma RC4+ dapat diterapkan diaplikasi melalui proses enkripsi dan dekripsi dengan baik mulai plaintext yang digunakan maupun kunci yang sama dan menghasilkan ciphertext serta memenuhi syarat dari plaintext maupun ciphertext. Sehingga setelah diuji berhasil, jika tidak memenuhi syarat dan tidak menggunakan kunci yang sama yang telah ditentukan maka pada pengujiannya akan gagal. Penerapan steganografi DCS (Dynamic Cell Spreading) baik untuk mengamankan teks, karena citra yang disisipkan teks tidak menimbulkan perbedaan dalam citra sehingga orang lain tidak curiga adanya teks rahasia dalam citra tersebut.
REFERENCES
[1] K. K. Kriptografi And C. Transposition, “Analisa Dan Implementasi Kriptografi Pada Pesan Rahasia,” Vol. 3, No. 1, Pp. 1–11, 2017.
[2] A. Arif, P. Mandarani, M. T. Informatika, And D. T. Informatika, “Rekayasa Perangkat Lunak Kriptografi Menggunakan Algoritma Advanced Encryption Standard ( Aes ) 128 Bit Pada Sistem Keamanan Short Message Service ( Sms ) Berbasis,” Vol. 4, No. 1, 2016.
[3] H. Hasanah And N. A. Hasibuan, “Implementasi Agoritma Rc6 Untuk Keamanan Pesan Sms ( Short Massage Service ) Berbasis Android,” No. April, Pp. 111–115, 2017.
[4] B. Kaban And L. Aprilla, Teknik Super Enkripsi Menggunakan Algoritma Affine Cipher , One Time Pad Dan Rc4 + Dalam Pengamanan File Teks. 2018.
Hal: 232-243
And M. Metode, “Implementasi Steganografi Pada Citra Digital Dengan Menggunakan Metode Dynamic Cell Spreading,” No. 0911074, Pp. 1–8, 2014.
[6] H. Kharisma And S. Arief, “Triple Transposisi Dan Spread Spectrum Sebagai Metode Untuk Pengembangan Algoritme Steganografi,” Vol. 17, 2018.
[7] M. Ricky, F. A. Setyaningsih, And M. Dipenogoro, “Analisis Kompresi Steganography Pada Citra Digital Dengan Menggunakan Metode Least Significant Bit Berbasis Mobile,” Vol. 06, No. 03, 2018.