Perancangan dan Implementasi Aplikasi Crypto-Steganoraphy ...

17
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

Transcript of Perancangan dan Implementasi Aplikasi Crypto-Steganoraphy ...

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