Perancangan dan Implementasi Aplikasi Crypto...
Transcript of Perancangan dan Implementasi Aplikasi Crypto...
1
1. Pendahuluan
Pada saat ini, pengiriman gambar antar komputer adalah hal yang sudah
biasa dilakukan. Dimana file berupa gambar sudah merupakan kebutuhan umum
dalam proses pengolahan data atau dokumen. Tapi sayangnya, seiring dengan
perkembangan teknologi yang pesat, proses pengiriman file menjadi rentan
terhadap pembajakan, untuk itu dibutuhkan suatu cara agar proses pengiriman file
bisa menjadi lebih aman dan efisien.
Pada penelitian ini diajukan suatu cara untuk mengamankan proses
pengiriman gambar pada jaringan komputer, yaitu dengan cara menyandikan
gambar dengan menggunakan kunci simetris antar pengirim dan penerima.
Kemudian kunci simetris tersebut dienkripsi menggunakan algoritma asimetris
RSA, kemudian hasil enkripsi RSA tersebut disisipkan ke dalam gambar hasil
enkripsi simetris dan gambar dikirimkan kepada penerima.
Berdasarkan latar belakang masalah yang ada, maka dilakukan sebuah
penelitian yang bertujuan merancang aplikasi Crypto-Steganography untuk
mengamanankan proses pengiriman gambar menggunakan algoritma Vernam
Cipher, RSA, dan LSB Embedding.
2. Tinjauan Pustaka
Penelitian tentang image yang berjudul Kriptografi Citra Digital 24 Bit
Warna dengan Algoritma Selective Bitplane dan Blowfish Cipher membahas
tentang perancangan aplikasi kriptografi gambar dengan menggunakan metode
Selective bitplane yang bekerja dengan cara menyandikan sebagian informasi
pada gambar dengan tujuan mempercepat proses, namun tidak mengurangi tingkat
keamanan (confidentiality) serta menerapkan algoritma Blowfish yang dapat
menyandikan file gambar 24 bit warna (True Colour Image) [1].
Pada penelitian yang berjudul "Aplikasi Kriptografi dengan Metode Vernam
Cipher dan Metode Permutasi Biner", dibahas tentang masalah keamanan dalam
penyimpanan dan pengirim file. Pada penelitian tersebut diajukan solusi
kriptografi dengan menggunakan metode Vernam Cipher. Metode permutasi
ditambahkan untuk membalikkan kode biner pada setiap karakter. Hasil dari
penelitian tersebut adalah sebuah aplikasi untuk menjamin kerahasiaan data [2].
Pada penelitan yang berjudul "Implementasi Blind Signature Pada Transaksi
Digital Cash Menggunakan Algoritma RSA", dipaparkan masalah pada transaksi
digital cash, harus mampu menjaga privasi pemiliknya, baik dari pihak bank yang
mengeluarkan digital cash maupun dari pihak vendor sebagai penerima digital
cash. Property privacy inilah yang merupakan pembeda antara metode
pembayaran digital cash dengan metode pembayaran lainnya. Selain masalah
privasi, perlu diperhatikan juga faktor keamanan dalam penggunaan digital cash
dari tindak kejahatan seperti pemalsuan, penduplikasian atau pencurian.
Penerapan blind signature menggunakan algoritma RSA merupakan cara yang
tepat dalam masalah ini, selain privasi customer dalam menggunakan digital cash
yang terlindungi, juga menghasilkan digital cash yang aman untuk digunakan.
Hasil pengujian yang telah dilakukan menggunakan kunci publik dan kunci privat
2
bank yang di-generate secara random didapatkan 100% nilai validasi true untuk
proses validasi kebenaran digital cash dan update digital cash, sedangkan pada
proses tambah nominal menggunakan digital cash yang sama menghasilkan 67%
validasi true dan 33% validasi false [3].
Berdasarkan penelitian-penelitian yang telah dilakukan tentang pengamanan
gambar menggunakan kriptografi dan steganografi, maka dilakukan penelitian
yang bertujuan untuk merancang dan mengimplementasikan aplikasi yang
menggabungkan kriptografi dan steganografi pada citra digital, menggunakan
algoritma Vernam Cipher, RSA dan LSB Embedding. Pada penelitian ini diberi
batasan yaitu format file citra digital yang digunakan adalah PNG, dan tidak
membahas proses pengiriman kunci public.
LSB embedding merupakan teknik steganografi yang menggunakan
pendekatan tergolong sederhana dan langsung [4]. LSB embedding dipilih karena
beberapa alasan yaitu: 1) teknik LSB embedding menyisipkan pesan ke dalam
LSB (least significant bit). Karena hal ini hanya akan mempengaruhi nilai warna
pada piksel sebesar + 1, maka secara umum diasumsikan bahwa degradasi warna
yang terjadi dapat dikenali oleh mata [9]; 2) LSB cocok digunakan pada proses
pengamanan citra digital ini karena citra digital menggunakan sistem 24 bit
warna, tiap warna 8 bit. Sehingga proses penyisipan bit mudah dilakukan, yaitu
dengan membaca tiap piksel, kemudian pada piksel dibaca komponen warna, dan
pada tiap komponen warna diubah nilai LSB dengan nilai bit pesan.
Penelitian yang dilakukan membahas tentang kriptografi. Pada sistem
kriptografi simetrik, kunci untuk proses enkripsi sama dengan kunci untuk proses
dekripsi. Keamanan sistem kriptografi simetrik terletak pada kerahasiaan kunci.
Istilah lain untuk kriptografi simetrik adalah kriptografi kunci pribadi (private key
cryptography) atau kriptografi konvensional (conventional cryptography) . Pada
sistem kriptografi asimetrik, kunci untuk proses enkripsi tidak sama dengan kunci
untuk proses dekripsi [5]
Algoritma kriptografi simetrik dapat dikelompokkan menjadi dua kategori
antara lain: (1) Cipher aliran (stream cipher). Algoritma kriptografi beroperasi
pada plaintext/ciphertext dalam bentuk bit tunggal yang dalam hal ini rangkaian
bit dienkripsikan/didekripsikan bit per bit. Cipher aliran mengenkripsi satu bit
setiap kali. Contoh algoritma stream cipher: RC4, Panama dan Pike; (2) Cipher
blok (block cipher) Algoritma kriptografi beroperasi pada plaintext/ciphertext
dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok
bit yang panjangnya sudah ditentukan sebelumnya. Cipher blok mengenkripsi satu
blok bit setiap kali. Contoh algoritma block cipher: Rinjdael, DES dan IDEA.
3
ReceiverSender
RSA
mulai
Generate Public & Private Key
Kirim Public KeyTerima Public Key
Gunakan Public Key untuk Proses
Enkripsi
Input Plaintext
Output Ciphertext
Kirim Ciphertext
Terima Ciphertext
Gunakan Private Key untuk Proses
Dekripsi
Output Plaintext
Selesai
Gambar 1 Skema Proses Public Key Cryptosystem dengan RSA [5]
Gambar 1 menunjukkan Skema proses Public Key Cryptosytem. Pada
awalnya, penerima dokumen akan membuat pasangan kunci public dan private.
Kemudian kunci public dikirim oleh penerima ke pengirim. Pengirim menerima
kunci public, kemudian melakukan input plaintext dan proses enkripsi. Ciphertext
yang dihasilkan kemudian dikirimkan ke penerima. Oleh pihak penerima,
ciphertext didekripsi dengan menggunakan kunci private yang dimilikinya,
menghasilkan plaintext.
Algoritma RSA diambil dari nama penemunya, yaitu Ron Rivest, Adi
Shamir, dan Leonard Adleman, yang diperkenalkan pada tahun 1977. Sekilas,
algoritma RSA sama dengan metode Merkle-Hellman, memecahkan sejumlah
enkripsi untuk menemukan bagian yang akan ditambahkan pada penjumlahan
tertentu, atau dikalikan pada perkalian tertentu. Algoritma ini menggunakan dua
buah kunci, yaitu kunci publik digunakan dalam proses enkripsi, dan kunci
pribadi yang digunakan dalam proses dekripsi. Kedua kunci ini bekerja
berpasangan. [5]. RSA dipilih karena RSA memberikan jaminan keamanan
pengiriman pesan dengan menggunakan kunci asimetris. Pesan hanya dapat
dibuka (dekripsi) oleh penerima pesan yang merupakan satu-satunya pihak yang
memiliki private key (proses dekripsi hanya bisa dilakukan dengan menggunakan
private key) [6]. Pada algoritma kriptografi kunci simetris, kunci untuk dekripsi
juga digunakan untuk enkripsi, sehingga selain pihak penerima pesan, kunci
dekripsi juga diketahui oleh pihak pengirim [7]. Jika terjadi kebocoran kunci,
maka tidak dapat dipastikan sumber kebocoran, karena kunci diketahui oleh 2
pihak. Pada algoritma kriptografi kunci asimetris, jika terjadi kebocoran data
(informasi terenkripsi berhasil diketahui oleh pihak lain), maka sudah dapat
dipastikan bahwa sumber kebocoran adalah berasal dari pihak pemegang private
key.
Vernam Cipher diciptakan oleh Mayor J. Maugborne dan G. Vernam pada
tahun 1917. Metode tersebut juga dikenal dengan nama One Time Pad (OTP).
4
Vernam Cipher merupakan algoritma berjenis kriptografi simetris. Pada proses
enkripsi, plain text diubah ke dalam kode ASCII dan kemudian dikenakan operasi
XOR terhadap kunci yang sudah diubah ke dalam kode ASCII. Pada proses
dekripsi, cipher text diubah ke dalam kode ASCII, kemudian dikenakan operasi
XOR terhadap kunci yang sudah diubah ke dalam kode ASCII juga [8]. Contoh
enkripsi Vernam Cipher, dengan pesan "HELLO", dan kunci enkripsi yang
digunakan adalah "XMCKL". Tabel 1 Contoh Enkripsi Vernam Cipher
Pesan Pesan
ASCII
Kunci Kunci
ASCII ⊕ Hasil XOR
ASCII
DEC HEX
DEC HEX
DEC HEX
H 72 48 X 88 58 = 16 10
E 69 45 M 77 4D = 8 8
L 76 4C C 67 43 = 15 F
L 76 4C K 75 4B = 7 7
O 79 4F L 76 4C = 3 3
Mulai
Input PlainText
Input Key
Selesai
Selamai < panjang
plaintext
i=0
True
CipherText[i] = PlainText[i] XOR Key[i]
Output CipherText
False Set nilai i=i+1
Gambar 2 Proses Enkripsi Vernam Cipher [9]
Mulai
Input CipherText
Input Key
Selesai
Selamai < panjang CipherText
i=0
True
PlainText[i] = CipherText[i] XOR Key[i]
Output PlainText
False Set nilai i=i+1
Gambar 3 Proses Dekripsi Vernam Cipher [9]
Perlu diperhatikan, pada Tabel 1, hasil enkripsi dalam angka ASCII
mewakili karakter yang tidak bisa dicetak/ditampilkan (non-printable character),
sebagai contoh kode ASCII 8 mewakili karakter "Backspace" dan kode ASCII 7
mewakili perintah "Bell" [10]. Proses enkripsi dan dekripsi vernam ditunjukkan
pada Gambar 2 dan Gambar 3. Kedua proses tersebut memiliki langkah yang
sama, perbedaan hanya pada input dan output saja.
Vernam cipher dipilih karena beberapa alasan yaitu: 1) Vernam cipher
merupakan stream cipher, sehingga memiliki jaminan bahwa panjang byte
plaintext sama dengan panjang ciphertext [11]; 2) Vernam cipher bekerja dengan
cara yang sederhana, yaitu dengan menggunakan operator XOR, sehingga waktu
proses enkripsi dan dekripsi menjadi cepat [12]; 3) Jika digunakan dengan tepat,
5
yaitu menggunakan kunci yang berbeda-beda atau acak, Vernam cipher tidak akan
bisa dipatahkan [13].
Steganografi adalah seni menyembunyikan pesan. Tujuan steganografi
adalah menyembunyikan komunikasi untuk mencegah pihak ketiga mengetahui
tentang keberadaan pesan. Hal ini berbeda dengan kriptografi, seni merahasiakan
pesan, yang bertujuan untuk membuat pesan tidak dapat dibaca oleh pihak ketiga
tetapi tidak menyembunyikan keberadaan komunikasi rahasia tersebut [14].
LSB embedding merupakan teknik steganografi yang menggunakan
pendekatan tergolong sederhana dan langsung. Sesuai dengan namanya, teknik
LSB embedding menyisipkan pesan ke dalam LSB (least significant bit) [4]. LSB
embedding dipilih karena beberapa alasan yaitu: 1) teknik LSB embedding
menyisipkan pesan ke dalam LSB (least significant bit). Karena hal ini hanya
akan mempengaruhi nilai warna pada piksel sebesar + 1, maka secara umum
diasumsikan bahwa degradasi warna yang terjadi tidak dapat dikenali oleh mata
[9]; 2) LSB cocok digunakan pada proses pengamanan citra digital ini karena citra
digital menggunakan sistem 24 bit warna, tiap warna 8 bit. Sehingga proses
penyisipan bit mudah dilakukan, yaitu dengan membaca tiap piksel, kemudian
pada piksel dibaca komponen warna, dan pada tiap komponen warna diubah nilai
LSB dengan nilai bit pesan.
Pada penelitian ini, format file citra digital yang digunakan adalah PNG.
PNG merupakan True Color image, yang berarti tiap piksel direpresentasikan
dengan 3 byte, terbagi ke dalam red, green, dan blue masing-masing 1 byte. Hal
ini sering disebut dengan warna RGB, atau True Color 24 bit. Selain 24 bit warna,
file PNG juga mendukung 32 bit warna. True Color 32 bit sama dengan 24 bit,
dengan perbedaan adalah adanya 1 byte tambahan yang disebut komponen alpha
[15] [16].
Gambar 4 True Color 24 bit dan 32 bit [15]
3. Metode dan Perancangan Sistem
Metode yang digunakan pada penelitian ini adalah metode kualitatif, yaitu
dengan memperhatikan proses dan peristiwa [17]. Penelitian yang dilakukan,
diselesaikan melalui tahapan penelitian yang terbagi dalam empat tahapan, yaitu:
(1) Analisis kebutuhan dan pengumpulan data, (2) Perancangan sistem, meliputi
perancangan proses dan antarmuka, (3) Implementasi dan pengujian sistem, sertah
analisa hasil pengujian, (4) Penulisan laporan hasil penelitian.
6
Analisis Kebutuhan dan Pengumpulan Data
Perancangan Sistem meliputi Perancangan Proses, dan Perancangan Antarmuka
Implementasi dan Pengujian Sistem,serta Analisis Hasil Pengujian
Penulisan Laporan Hasil Penelitian
Gambar 5 Tahapan Penelitian [18]
Tahapan penelitian pada Gambar 5, dapat dijelaskan sebagai berikut. Tahap
pertama: pengumpulan kebutuhan dilakukan mengumpulkan data dengan
memperhatikan kebutuhan pengamanan pengiriman informasi, terutama informasi
dalam bentuk gambar, yang dikirimkan melalui jaringan komputer; Tahap kedua:
perancangan aplikasi yang meliputi perancangan proses aplikasi dan perancangan
antarmuka. Perancangan proses dibuat dengan menggunakan flowchart; Tahap
ketiga: implementasi sistem, yaitu membangun aplikasi berdasarkan perancangan
proses dan perancangan antarmuka yang telah dilakukan pada tahap kedua. Hasil
implementasi kemudian diuji dan dilakukan analisa berdasarkan hasil pengujian,
untuk mengetahui apakah aplikasi yang dihasilkan, telah memenuhi tujuan dan
kebutuhan. Tahap keempat: penulisan laporan hasil penelitian.
Gambar 6 Rancangan Proses Pengamanan File
Gambar 6 menunjukkan interaksi dan proses antara pengirim dan penerima.
Langkah yang harus dilakukan oleh pengirim adalah:
1. Terima kunci public dari penerima;
2. Pilih file citra digital yang akan dikirimkan;
Mulai
Generate Kunci Public & Private
Kirim kunci Public
Terima Kunci Public
Pilih citra digital
Tentukan kunci Vernam
Proses penyandian citra digital dengan Algoritma Vernam dan kunci Vernam
Citra digital terenkripsi
Proses penyandian kunci Vernam dengan menggunakan RSA dan kunci public
Proses embedding kunci Vernam terenkripsi
ke dalam citra digital terenkripsi
Kirim hasil embedding
Terima citra digital terenksipsi
Proses ekstraksi kunci Vernam terenkripsi dari dalam citra digital terenkripsi
Proses dekripsi kunci Vernam dengan menggunakan RSA dan kunci private
Proses dekripsi citra digital dengan algoritma Vernam dan kunci Vernam
Citra digital
Selesai
Pengirim Penerima
7
3. Tentukan kunci Vernam untuk menyandikan citra digital. Untuk alasan
keamanan, kunci yang dipilih harus memiliki panjang minimal 16 karakter
[19][20];
4. Aplikasi menjalankan proses penyandian citra digital, dengan menggunakan
algoritma Vernam dan kunci Vernam yang telah ditentukan pada langkah 3;
5. Aplikasi menjalankan proses penyandian kunci Vernam (dari langkah 3),
dengan menggunakan algoritma RSA dan kunci (dari langkah 1);
6. Aplikasi menjalankan proses embedding kunci Vernam yang telah
terenkripsi dari langkah 5, ke dalam citra digital terenkripsi (hasil dari
langkah 4);
7. Mengirimkan hasil dari langkah 6, yaitu citra digital terenkripsi dan
tersisipi.
Langkah yang harus dilakukan oleh penerima adalah:
1. Membangkitkan kunci private dan public, dengan menggunakan menu yang
ada di aplikasi;
2. Mengirimkan kunci public ke pengirim;
3. Menerima citra digital terenkripsi dan tersisipi dari pengirim;
4. Aplikasi menjalankan proses ekstraksi kunci Vernam terenkripsi dari dalam
file citra yang diterima (dari langkah 3);
5. Aplikasi menjalankan proses dekripsi kunci Vernam, dengan algoritma RSA
dan kunci private (dari langkah 1);
6. Aplikasi menjalankan proses dekripsi file citra (dari langkah 3), dengan
algoritma Vernam dan kunci Vernam (hasil dari langkah 5);
7. Dihasilkan citra digital yang asli.
Mulai
Ubah Pesan ke bentuk Binary String
Selesai
Input PesanInput Gambar
Set variabel i=0
Selama i < panjang PesanBinary
Sisipkan PesanBinary[i] pada LSB dari warna[i]
Baca komponen warna pada Gambar
True
Set nilai i=i+1
False
Mulai
Selesai
Input Gambar
Set variabel i=panjang pesan-1
Selama i >=0
Baca LSB pada warna [i]
Baca komponen warna pada Gambar
True
Set nilai i=i-1
False
Simpan LSB ke dalam variabel Pesan Binary
Ubah Pesan Binary ke bentuk String
Gambar 7 Proses LSB Embedding Gambar 8 Proses LSB Extracting
8
Gambar 7 menunjukkan proses LSB embedding, diawali dengan mengubah
pesan ke dalam bentuk biner (bit), dan membaca tiap komponen warna pada
gambar. Kemudian untuk tiap bit pesan, disisipkan ke dalam LSB dari komponen
warna. Proses penyisipan sebenarnya adalah proses mengganti nilai bit paling
kanan (LSB) dari warna tersebut dengan nilai bit pesan. Hal ini berakibat bit
warna semula, tidak dapat dikembalikan lagi pada waktu proses extraction. Proses
embedding selesai dilakukan ketika semua bit pesan berhasil disisipkan.
Gambar 8 menunjukkan proses LSB extraction, diawali dengan membaca
komponen warna pada gambar. Kemudian untuk tiap komponen warna, dibaca
nilai LSB dari komponen warna tersebut. Proses extraction selesai dilakukan
ketika semua jumlah bit pesan yang diperoleh, sama dengan panjang bit pesan.
Sebagai contoh, jika pada proses enkripsi digunakan input sebagai berikut:
1) kunci Vernam yang digunakan adalah "ABC"; 2) Kunci RSA yang digunakan
adalah hasil proses generate pada aplikasi dalam bentuk file. 3) Citra digital yang
akan dienkripsi memiliki susunan warna sebagai berikut: Tabel 2 Contoh Elemen Warna pada Citra Digital
R G B R G B R G B
51 145 7 11 63 99 89 155 144
89 155 144 51 145 7 11 63 99
11 63 99 89 155 144 51 145 7
51 145 7 11 63 99 89 155 144
Dan seterusnya
Langkah enkripsi yang pertama yaitu enkripsi Vernam. Warna-warna pada
citra digital yang ditunjukan pada tabel 2 dienkripsi dengan menggunakan kunci
"ABCABCABCABCABCABC". Kode ASCII untuk huruf A adalah 65, B adalah
66 dan C adalah 67. Kunci Vernam diulang sebanyak jumlah warna yang ada,
dalam contoh citra digital berarti diulang sampai panjangnya adalah 36 byte. Hasil
enkripsi ditunjukkan pada tabel 3 dengan angka cetak tebal (baris cipher). Pada
kolom pertama, angka 114 diperoleh dari perhitungan 51 XOR 65. Tabel 3 Hasil Enkripsi Elemen Warna dengan Vernam Cipher
Warna 51 145 7 11 63 99 89 155 144
Kunci 65 66 67 65 66 67 65 66 67
Cipher 114 211 68 74 125 32 24 217 211
Warna 89 155 144 51 145 7 11 63 99
Kunci 65 66 67 65 66 67 65 66 67
Cipher 24 217 211 114 211 68 74 125 32
Warna 11 63 99 89 155 144 51 145 7
Kunci 65 66 67 65 66 67 65 66 67
Cipher 74 125 32 24 217 211 114 211 68
Warna 51 145 7 11 63 99 89 155 144
Kunci 65 66 67 65 66 67 65 66 67
Cipher 114 211 68 74 125 32 24 217 211
Langkah kedua yaitu menyandikan kunci Vernam dengan algoritma RSA
pada tabel 4. Pada proses generate keys, public key disimpan dengan nama
A.kpub, dan private key disimpan dengan nama B.kpri. Hasil dari enkripsi RSA
adalah sebagai berikut:
9
plaintext (18 byte): 65 66 67 65 66 67 65 66 67 65 66 67 65 66 67 65 66 67
Tabel 4 Ciphertext Hasil proses RSA
67 198 233 232 197 236 127 151 210 48 165 34 203 85 9 212
80 17 32 26 60 77 228 131 222 198 136 32 222 16 237 62
225 186 207 59 99 222 70 152 180 71 213 63 164 208 12 52
121 96 171 42 136 68 118 178 28 14 237 8 223 31 158 56
252 157 43 128 84 73 20 74 9 64 230 39 194 7 171 250
196 203 129 37 27 126 34 148 115 113 111 155 125 226 212 35
111 225 211 114 185 93 96 104 237 168 164 153 25 124 219 214
9 20 92 250 252 32 132 68 186 124 36 184 53 162 48 94
Langkah ketiga pada tabel 5 adalah proses menyisipkan hasil enkripsi
kunci ke dalam gambar terenkripsi. Jika diambil byte pertama (67) sebagai contoh
penyisipan, maka prosesnya adalah:
67 diubah menjadi binary string: 0100 0011, kemudian disisipkan ke dalam LSB
citra terenkripsi. Diperlukan 8 komponen warna untuk menyisipkan 1 byte pesan
(8 bit). 8 komponen yang digunakan sebagai contoh adalah 8 komponen pertama
hasil dari enkripsi vernam (langkah pertama). Hasilnya adalah sebagai berikut: Tabel 5 Proses Menyisipkan Kunci Terenkripsi ke Gambar Terenkripsi
Warna 114 211 68 74 125 32 24 217
Binary
String
Warna
0111
0010
1101
0011
0100
0100
0100
1010
0111
1101
0010
0000
0001
1000
1101
1001
Pesan 0 1 0 0 0 0 1 1
Hasil
Penyisipan
Dalam
Binary
String
0111
0010
1101
0011
0100
0100
0100
1010
0111
1100
0010
0000
0001
1001
1101
1001
Hasil
Penyisipan
Dalam
Desimal 114 211 68 74 124 32 25 217
Contoh langkah proses dekripsi dilakukan sebaliknya, yaitu proses
ekstraksi, kemudian proses dekripsi RSA, baru terakhir adalah proses dekripsi
vernam pada tabel 6.
Langkah pertama, diperoleh susunan warna: Tabel 6 Contoh Elemen Warna pada Citra Digital Tersisipi
114 211 68 74 124 32 25 217
diperoleh binary string Tabel 7 Elemen Warna dalam Bentuk Binary String
0111
0010
1101
0011
0100
0100
0100
1010
0111
1100
0010
0000
0001
1001
1101
1001
dibaca nilai LSB pada tabel 8, sehingga diperoleh:
10
Tabel 8 Nilai LSB
0 1 0 0 0 0 1 1
diubah ke dalam nilai desimal 0100 0011 = 67, sehingga diperoleh byte pertama
dari kunci vernam yang terenkripsi. Langkah pertama ini dilakukan sebanyak 128
kali, sehingga diperoleh 128 byte cipher text: Tabel 9 Hasil Ekstraksi Kunci
67 198 233 232 197 236 127 151 210 48 165 34 203 85 9 212
80 17 32 26 60 77 228 131 222 198 136 32 222 16 237 62
225 186 207 59 99 222 70 152 180 71 213 63 164 208 12 52
121 96 171 42 136 68 118 178 28 14 237 8 223 31 158 56
252 157 43 128 84 73 20 74 9 64 230 39 194 7 171 250
196 203 129 37 27 126 34 148 115 113 111 155 125 226 212 35
111 225 211 114 185 93 96 104 237 168 164 153 25 124 219 214
9 20 92 250 252 32 132 68 186 124 36 184 53 162 48 94
Langkah kedua adalah dekripsi 128 byte tersebut dengan algoritma RSA
menggunakan file private key B.kpri. Hasil dekripsi RSA adalah: 65 66 67 65 66 67 65 66 67 65 66 67 65 66 67 65 66 67
Langkah ketiga, adalah menggunakan hasil dekripsi RSA tersebut untuk
proses dekripsi Vernam. Hasil dekripsi ditunjukkan pada kolom Plain Tabel 10 Hasil Dekripsi Elemen Warna dengan Vernam Cipher
Warna 114 211 68 74 125 32 24 217 211
Kunci 65 66 67 65 66 67 65 66 67
Plain 51 145 7 11 63 99 89 155 144
Warna 24 217 211 114 211 68 74 125 32
Kunci 65 66 67 65 66 67 65 66 67
Plain 89 155 144 51 145 7 11 63 99
Warna 74 125 32 24 217 211 114 211 68
Kunci 65 66 67 65 66 67 65 66 67
Plain 11 63 99 89 155 144 51 145 7
Warna 114 211 68 74 125 32 24 217 211
Kunci 65 66 67 65 66 67 65 66 67
Plain 51 145 7 11 63 99 89 155 144
Sehingga hasil akhir dekripsi adalah: Tabel 11 Hasil Akhir Dekripsi Elemen Warna
R G B R G B R G B
51 145 7 11 63 99 89 155 144
89 155 144 51 145 7 11 63 99
11 63 99 89 155 144 51 145 7
51 145 7 11 63 99 89 155 144
11
4. Hasil dan Pembahasan
Pada bagian ini dibahas tentang hasil implementasi sistem berdasarkan
perancangan yang telah dibuat, dijelaskan sebagai berikut. Antarmuka aplikasi,
terdiri dari antarmuka untuk proses enkripsi, proses dekripsi, dan proses
pembangkitan kunci.
Gambar 9 Tampilan Antarmuka Enkripsi Citra Digital
Pada Gambar 9 ditunjukkan antarmuka aplikasi untuk proses enkripsi
gambar. Citra digital semula dan citra digital hasil enkripsi (cipher image)
ditampilkan berdampingan untuk menunjukkan bahwa proses enkripsi telah
berhasil. Cipher image dapat disimpan sebagai file. Kode Program 1 Perintah Enkripsi Vernam 1. for (int i = 0; i < data.Length; i++) 2. { 3. result[i] = (byte)(data[i] ^ rKey[i]);
4. }
Kode Program 1 merupakan perintah yang digunakan untuk melakukan
proses enkripsi citra digital. Algoritma enkripsi yang digunakan adalah Vernam
Cipher. Kode Program 2 Perintah Enkripsi RSA 1. RSACryptoServiceProvider rsaCryptoServiceProvider =
2. new RSACryptoServiceProvider();
3. rsaCryptoServiceProvider.FromXmlString(kunci);
4. byte[] encryptedBytes =
5. rsaCryptoServiceProvider.Encrypt(plainBytes, true);
Kode Program 2 merupakan perintah yang digunakan untuk melakukan
proses enkripsi kunci. Library RSA pada .Net Framework digunakan pada proses
ini. Kode Program 3 Perintah untuk Proses Embedding 1. byte[] blockEmbedding = new byte[1024];
2. byte[] encryptedPassword =
3. RSATool.EncryptByte(
4. Encoding.Default.GetBytes(password),
12
5. publicKeyFile);
6. Array.Copy(encryptedPassword, 0, blockEmbedding, 0,
7. blockEmbedding.Length);
Kode Program 3 merupakan perintah untuk menyisipkan kunci terenkripsi
ke dalam citra digital. Hasil enkripsi RSA memiliki panjang 128 byte (1024 bit),
sehingga 1024 byte pertama pada citra digital digunakan sebagai lokasi
penyisipan kunci.
Gambar 10 Tampilan Antarmuka Dekripsi Citra Digital
Pada Gambar 10 ditunjukkan antarmuka aplikasi untuk proses dekripsi
gambar. Cipher image ditunjukkan pada sisi kiri, dan hasil dekripsi (plain image)
ditunjukkan pada sisi kanan. Plain image dapat disimpan sebagai file.
Gambar 11 Tampilan Antarmuka Pembangkitan Kunci
Kode Program 4 Perintah Dekripsi Vernam 1. for (int i = 0; i < data.Length; i++)
2. {
3. result[i] = (byte)(data[i] ^ rKey[i]);
4. }
Kode Program 4 merupakan perintah yang digunakan untuk melakukan
proses dekripsi citra digital. Vernam Cipher adalah algoritma kriptografi dengan
proses dekripsi sama dengan proses enkripsi.
13
Kode Program 5 Perintah Enkripsi RSA 1. RSACryptoServiceProvider rsaCryptoServiceProvider =
2. new RSACryptoServiceProvider();
3. rsaCryptoServiceProvider.FromXmlString(kunci);
4. byte[] encryptedBytes =
5. rsaCryptoServiceProvider.Decrypt(
6. encryptedBytes, true);
Kode Program 5 merupakan perintah yang digunakan untuk melakukan
proses dekripsi kunci. Library RSA pada .Net Framework digunakan pada proses
ini. Kode Program 6 Perintah untuk Proses Ekstraksi 1. byte[] blockEkstraksi = new byte[128];
2. Array.Copy(pixels, blockEkstraksi.Length,
3. blockDekripsi, 0, blockDekripsi.Length);
4. byte[] decryptedPassword =
5. RSATool.DecryptByte(blockEkstraksi,
6. privateKeyFile);
Kode Program 6 merupakan perintah untuk membaca 1024 byte pertama
pada citra digital. Kemudian byte tersebut didekripsi untuk mendapatkan kunci
Vernam yang asli (baris 5-6).
Pengujian sistem dilakukan untuk membuktikan apakah sistem yang
dikembangkan telah memenuhi tujuan pembuatan yaitu mengamankan citra
digital. Untuk mendukung tujuan tersebut, sistem juga harus dapat bekerja dengan
proses yang relatif cepat, dan secara visual tidak mengubah citra digital yang
dikirimkan. Pengujian sistem dilakukan dengan beberapa cara, yaitu: pengujian
keamanan data , pengujian visual, dan pengujian performa aplikasi.
Pengujian visual dilakukan dengan tujuan untuk membuktikan bahwa citra
digital yang diterima oleh pihak penerima tidak mengalami perbedaan secara
kasat mata dengan citra digital sebelum dikirimkan. Pengujian dilakukan dengan
memberikan kuesioner kepada 30 responden, yang merupakan pengguna internet
yang sering melakukan pengiriman gambar. Kuesioner berisi pertanyaan "apakah
gambar A sama dengan gambar B?". Gambar A adalah gambar sebelum
dikirimkan, gambar B adalah gambar yang diterima dan telah didekripsi. Hasil
pengujian visual ditunjukkan pada Tabel 2. Tabel 2 Hasil Pengujian Visual
No. Gambar A Checksum Gambar B Checksum Responden
MD5 MD5 Sama Tidak
Sama
1
113f88f6
214c0634
33677295
7f522c4d
ea401a8f
07a9e3e6
1909e108
d8fc9946 30
2
63a0a453
b71fe78a
85cea467
ad5a7b59
e085756f
5caef3be
e003a0e3
67c92958 30
14
Analisa dari hasil pengujian visual adalah, aplikasi berhasil
mempertahankan bentuk visual dari citra digital, terbukti dari hasil kuesioner yang
menyatakan bahwa tidak ada perbedaan antar kedua gambar. Pada ukuran file
terdapat perbedaan ukuran antara sebelum dan sesudah. Hal tersebut dikarenakan
pada gambar PNG terdiri dari 4 komponen warna yaitu red, green, blue dan
alpha. Alpha menunjukkan nilai transparansi suatu piksel. Nilai alpha tidak harus
ada (optional) pada suatu gambar PNG [16]. Pada waktu proses dekripsi, oleh C#,
nilai alpha ini dilengkapi pada semua piksel, sehingga mengakibatkan
pertambahan ukuran file[16].
Gambar 12 File untuk Pengujian Performa
Pengujian performa aplikasi bertujuan untuk membuktikan bahwa aplikasi
dapat melakukan proses enkripsi dan dekripsi dengan rentang waktu yang dapat
diterima oleh pengguna. Pengujian dilakukan dengan memberikan kuesioner
kepada 30 responden, bertindak sebagai pengirim sekaligus penerima. Kuesioner
berisi pertanyaan "Apakah aplikasi melakukan proses enkripsi dan dekripsi
dengan kecepatan yang dapat diterima?". Selain itu, dicatat juga waktu proses
enkripsi dan dekripsi. File citra digital yang digunakan ditunjukkan pada Gambar
12, diubah ke dalam 5 variasi dimensi. Dimensi yang dipilih merupakan dimensi
yang umum digunakan di internet saat ini [21]. Hasil pengujian performa aplikasi
ditunjukkan pada Tabel 3 dan Tabel 4. Tabel 3 Hasil Pengujian Performa Enkripsi
No File P L Total
Piksel
Waktu
Vernam
(detik)
Waktu
RSA
(detik)
Waktu
Embed
(detik)
Total
Waktu
Enkripsi
(detik)
Kecepatan
(piksel/detik)
Res
Pon
1 file2.png 4096 4096
16,777,216
18.68
0.01
9.53
28.22 594,515.10 Ya
2 file3.png 2048 2048
4,194,304
4.79
0.01
2.35
7.15 586,615.94 Ya
3 file4.png 1920 1920
3,686,400
4.08
0.01
2.04
6.13 601,370.31 Ya
4 file5.png 1136 1136
1,290,496
1.48
0.01
0.77
2.26 571,015.93 Ya
5 file6.png 1025 1025
1,050,625
1.25
0.01
0.59
1.85 567,905.41 Ya
Rata-rata kecepatan enkripsi 584,284.54
Tabel 4 Hasil Pengujian Performa Dekripsi No File P L Total
Piksel
Waktu
Ekstraksi
(detik)
Waktu
RSA
(detik)
Waktu
Dekripsi
Vernam
(detik)
Total
Waktu
Dekripsi
(detik)
Kecepatan Res
Pon
1 file2.png 4096 4096
16,777,216
18.04
0.03
8.33
26.40 635,500.61 Ya
2 file3.png 2048 2048
4,194,304
4.64
0.03
2.46
7.13 588,261.43 Ya
3 file4.png 1920 1920
3,686,400
4.09
0.03
2.01
6.13 601,370.31 Ya
15
4 file5.png 1136 1136
1,290,496
1.42
0.03
0.73
2.18 591,970.64 Ya
5 file6.png 1025 1025
1,050,625
1.18
0.03
0.59
1.80 583,680.56 Ya
Rata-rata kecepatan dekripsi 600,156.71
Analisa dari hasil pengujian performa aplikasi adalah aplikasi akan semakin
membutuhkan waktu proses ketika ukuran dimensi citra digital semakin besar.
Namun hal ini tidak dipengaruhi oleh ukuran file citra digital. Hasil kuesioner
membuktikan bahwa untuk file citra digital yang lazim [21] digunakan, proses
enkripsi dan dekripsi dirasa cepat. Pada komputer dengan prosesor Intel Core I3
2.40 GHz dan RAM 2GB, proses enkripsi memiliki kecepatan 389140.1445
piksel/detik, dan dekripsi 399711.1817 piksel/detik.
Pengujian perubahan file gambar bertujuan untuk mengetahui besarnya
perubahan yang terjadi akibat proses pengamanan citra digital. Pengujian
dilakukan dengan cara membandingkan gambar sebelum enkripsi (gambar
semula) dengan gambar hasil dekripsi (gambar akhir). Pada Pengujian ini
digunakan program ImageMagick [22] untuk proses pembandingan. Hasil
pengujian ditunjukkan pada Tabel 5. No. Gambar Semula Gambar Akhir Hasil Perbandingan Keterangan
(garis tebal)
1
Baboon.png
Dimensi 512x512
Zoom 8x
2
Pepper.png
Dimensi 512x512
Zoom 8x
Analisa dari hasil pengujian perubahan file adalah, akibat dari proses
pengamanan citra digital, terdapat perbedaan antara file semula dan file akhir.
Perbedaan ditunjukkan dengan garis cetak tebal pada kolom "Hasil
Perbandingan". Perbedaan terjadi karena pada piksel-piksel yang berbeda tersebut
merupakan lokasi penyisipan kunci, yaitu 1024 byte (1024 komponen warna atau
324 piksel). Hal ini tidak dapat dihindari karena pada proses LSB, tidak dapat
dilakukan proses pengembalian bit awal, nilai LSB dari byte yang disisipi
(embedded), telah diganti dengan bit password.
5. Simpulan
Berdasarkan penelitian, pengujian dan analisis terhadap sistem, maka
dapat diambil kesimpulan sebagai berikut: (1) Sebuah aplikasi Crypto-
Steganography yang berfungsi untuk enkripsi dan dekripsi citra digital dapat
dikembangkan dengan menggunakan algoritma Vernam Cipher, RSA dan LSB
Embedding; (2) Enkripsi citra digital menggunakan Vernam Cipher sebagai
stream cipher, tidak memberikan efek kelebihan padding, sehingga piksel ukuran
citra digital tidak bertambah. Proses enkripsi ini memiliki kecepatan rata-rata
16
584,284.54 piksel per detik, dan proses dekripsi 600,156.71 piksel/detik; (3)
Penggunaan RSA yang bekerja dengan menggunakan kunci asimetris,
memberikan jaminan bahwa hanya pihak penerima yang sah yang dapat membaca
citra digital yang sebenarnya. Saran pengembangan yang dapat diberikan untuk
penelitian lebih lanjut adalah sebagai berikut: (1) Citra digital yang dikirim dapat
dilengkapi dengan digital signature, sehingga dapat dipastikan bahwa citra digital
yang dikirim berasal dari pengirim yang sah.
6. Daftar Pustaka
[1]. Timisela, F. A. 2013. Perancangan dan Implementasi Kriptografi
CitraDigital 24 Bit Warna dengan Algoritma Selective Bitplane dan
Blowfish Cipher. Fakultas Teknologi Informasi Universitas Kristen Satya
Wacana
[2]. Sholeh, M. & Hamokwarong, J. V 2011. Aplikasi Kriptografi dengan
Metode Vernam Cipher dan Metode Permutasi Biner. Momentum 7, 8–13.
[3]. Wiyanto, Imam and Judiputra, Rizky Rachman and Nugroho, E. P. 2013.
Implementasi Blind Signature pada Transaksi Digital Cash Menggunakan
Algoritma RSA. Jurnal Ilmu Komputer (JIK) 1.
[4]. Chandramouli, R. & Memon, N. 2001. Analysis of LSB based image
steganography techniques. In Image Processing, 2001. Proceedings. 2001
International Conference on, pp. 1019–1022.
[5]. Rivest, R. L., Shamir, a. & Adleman, L. 1978. A method for obtaining
digital signatures and public-key cryptosystems. Communications of the
ACM 21, 120–126. (doi:10.1145/359340.359342)
[6]. Weise, J. 2001. Public key infrastructure overview. Sun BluePrints OnLine,
August
[7]. Thakur, J. & Kumar, N. 2011. DES, AES and Blowfish: Symmetric key
cryptography algorithms simulation based performance analysis.
International Journal of Emerging Technology and Advanced Engineering
1, 6–12.
[8]. Bellovin, S. M. 2011. Frank Miller: Inventor of the One-Time Pad.
Cryptologia 35, 203–222.
[9]. Menezes, A. J., Van Oorschot, P. C. & Vanstone, S. A. 1996. Handbook of
applied cryptography. CRC press.
[10]. Shirey, R. W. 2007. RFC 2828: Internet security glossary. The Internet
Society
[11]. Robshaw, M. J. B. & City, R. 1995. Stream ciphers. RSA Laboratories, a
division of RSA Data Security, Inc
[12]. Vernam, G. S. 1926. Cipher printing telegraph systems: For secret wire
and radio telegraphic communications. AIEE, Journal of the 45, 109–115.
[13]. Vaudenay, S. 1998. Provable security for block ciphers by decorrelation.
In STACS 98, pp. 249–275.
[14]. Kessler, G. C. 2001. Steganography: Hiding data within data. Hiding Data
in Data. Windows & .NET Magazine
17
[15]. Tan, L. K. 2006. Image file formats. Biomed Imaging Interv J 2, e6.
[16]. Duce, D. 2003. Portable Network Graphics (PNG) Specification (Second
Edition). w3c.
[17]. Somantri, G. R. 2005. Memahami Metode Kualitatif. Makara, Sosial
Humaniora 9, 57–65.
[18]. Hasibuan, Z. A. 2007. Metodologi Penelitian Pada Bidang Ilmu Komputer
dan Teknologi Informasi. Jakarta: Fakultas Ilmu Komputer Universitas
Indonesia
[19]. Blaze, Matt and Diffie, Whitfield and Rivest, Ronald L and Schneier, Bruce
and Shimomura, T. 1996. Minimal Key Lengths for Symmetric Ciphers to
Provide Adequate Commercial Security. DTIC Document
[20]. Marinakis, G. 2013. Minimum key length for cryptographic security Single
Search. Journal of Applied Mathematic & Bioinformatics 3, 181–191.
[21]. Stanley, T. 2008. Standard Web Digital Image Sizes. http://tim-
stanley.com/post/standard-web-digital-image-sizes/. Diakses tanggal 1
Februari 2014
[22]. ImageMagick Studio LLC 2004. ImageMagick Compare Command-Line
Tool. http://www.imagemagick.org/script/compare.php. Diakses tanggal 1
Februari 2014