Institutional Repository | Satya Wacana Christian University: Perancangan dan Implementasi Kriptografi Menggunakan Vigenere Cipher Fisher Yates Shuffle pada Data Citra Digital
Perancaangan dan Implementasi Kriptoggrafi
an Vigenere Cipher dan Fisher Yaates Shuffle
Menggunakan
Pada Data Citra Digital
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh gelar Sarjana Komputer
puter
Peneliti:
Rulianto Lalu Pada (672013725)
Mag
Magdalena
A. Ineke Pakereng, M.Kom..
Prrogram Studi Teknik Informatika
Fakultas Teknologi Informasi
U
Universitas
Kristen Satya Wacana
Salatiga
Mei 2015
i
ii
iii
iv
v
vi
Perancangan dan Implementasi Kriptografi
Menggunakan Vigenere Cipher dan Fisher Yates Shuffle
Pada Data Citra Digital
1) Rulianto
Lalu Pada, 2) Magdalena A. Ineke Pakereng
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
1)
Email: [email protected],2)[email protected]
Abstract
Security aspects in the exchange of information is very important because a remote
data communication may not necessarily have a secure transmission path. Information in
the form of digital images has been widely used in various fields such as government,
military, financial institutions, hospitals, trading companies, and so forth. Digital image
stored in a computer and transmitted through a computer network and the Internet are at
risk to be known, altered or destroyed by certain parties. Cryptographic techniques can be
applied to protect digital images of these problems. Cryptography in the digital image can
be implemented using a combination of Fisher Yates and Vigenere algorithm. In this study
produced an application for encryption and decryption of digital image by using a
combination of these two algorithms. The results show that small changes in the key, give
large changes in the results of encryption. Encryption and decryption process does not
damage the pixels in a digital image, so that the integrity of the digital image can be
maintained.
Keywords: Image Cryptography, Vigenere Cipher, Fisher Yates Shuffle
Abstrak
Aspek keamanan dalam pertukaran informasi menjadi sangat penting karena suatu
komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman. Informasi
berupa citra digital telah digunakan secara luas dalam berbagai macam bidang seperti
pemerintahan, militer, badan keuangan, rumah sakit, perusahaan perdagangan, dan lain
sebagainya. Citra digital yang tersimpan dalam komputer maupun dikirimkan lewat
jaringan komputer dan internet memiliki resiko untuk diketahui, diubah dan dirusak oleh
pihak tertentu. Teknik kriptografi dapat diterapkan untuk melindungi citra digital dari
masalah-masalah tersebut. Kriptografi pada citra digital dapat diimplementasikan dengan
menggunakan kombinasi algoritma Fisher Yates dan Vigenere. Pada penelitian ini
dihasilkan suatu aplikasi untuk enkripsi dan dekripsi citra digital dengan menggunakan
kombinasi dua algoritma tersebut. Hasil pengujian menunjukkan bahwa perubahan kecil
pada kunci, memberikan perubahan yang besar pada hasil enkripsi. Proses enkripsi dan
dekripsi tidak merusak piksel pada citra digital, sehingga keutuhan citra digital dapat
dipertahankan.
Kata Kunci: Kriptografi Citra Digital, Vigenere Cipher, Fisher Yates Shuffle
1) Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana
2) Staf Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana Salatiga.
1
1.
Pendahuluan
Pada era modern saat ini banyak sekali kemungkinan penyadapan data,
maka aspek keamanan dalam pertukaran informasi menjadi sangat penting karena
suatu komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman
dari penyadapan sehingga keamanan informasi menjadi bagian penting dalam dunia
informasi itu sendiri [1].
Informasi berupa citra digital telah digunakan secara luas dalam berbagai
macam bidang seperti pemerintahan, militer, badan keuangan, rumah sakit,
perusahaan perdagangan, dan lain sebagainya. Citra digital digunakan untuk
menyimpan informasi penting, misalnya hasil pemeriksaan pasien dalam bidang
rumah sakit, area geografi dalam bidang penelitian, posisi musuh dalam bidang
militer, produk baru dalam perusahaan, dan lain sebagainya. Citra digital yang
tersimpan dalam komputer maupun dikirimkan lewat jaringan komputer dan
internet memiliki resiko untuk diketahui, diubah dan dirusak oleh pihak tertentu.
Teknik kriptografi dapat diterapkan untuk melindungi citra digital dari masalahmasalah tersebut. Algoritma Fisher Yates adalah algoritma yang berfungsi untuk
mengacak posisi elemen dalam sebuah himpunan. Algoritma Fisher Yates dapat
diimplementasikan untuk mengacak (shuffle) piksel pada suatu citra digital,
sehingga menghilangkan makna sebenarnya. Proses pengacakan dapat menggunakan suatu nilai seed sebagai nilai awal pengacakan. Nilai seed ini digunakan
kembali ketika proses pembalikan (deshuffle) diperlukan, untuk mendapatkan citra
digital yang semula. Untuk meningkatkan keamanan, pada hasil shuffle dapat
dilakukan proses enkripsi. Algoritma Vigenere yang merupakan algoritma klasik
dapat digunakan untuk tujuan tersebut.
Berdasarkan uraian latar belakang masalah tersebut, maka pada penelitian
ini dirancang aplikasi kriptografi citra digital, dengan melakukan penggabungan
antara algoritma Fisher Yates shuffle dan algoritma Vigenere. Berdasarkan hasil
perancangan, dilakukan implementasi dalam bentuk aplikasi berbasis Windows,
yang dibuat dengan menggunakan teknologi .Net Framework.
2.
Tinjauan Pustaka
Penelitian tentang Vigenere cipher termodifikasi telah dilakukan
sebelumnya. Pada penelitian Setyaningsih, dkk., [2] dibahas mengenai masalah
keamanan pesan multimedia (MMS) yang dikirimkan melalui smartphone. Pesan
tersebut sebelum sampai ke penerima, terlebih dahulu melewati server operator
seluler. Melihat permasalahan tersebut, maka diperlukan mekanisme untuk
mengamankan, yaitu dengan menyandikan pesan multimedia, terutama citra digital,
sebelum dikirimkan. Teknik yang digunakan adalah kombinasi antara Vigenere
cipher dengan Playfair Cipher. Hasil percobaan menunjukkan histogram
cipher image memiliki distribusi keragaman dan perbedaan yang signifikan
dengan histogram plain image, serta frekuensi kemunculan masing-masing nilai
intensitas pada histogram cipher image juga merata yang berarti tidak dapat
2
memberikan
ikan petunjuk untuk dilakukan statistical attack.
Penelitian yanng lain adalah yang dilakukan oleh Li [3], yyang melakukan
kombinasi antara algo
oritma berbasis chaos theory dan Vigenere ciphe
ipher. Kombinasi
algoritma tersebut diggunakan untuk melakukan proses pengacakan piksel pada citra
uan men
mengamankan citra digital tersebut.
digital, untuk tujuan
Perbedaan penelitian
pen
yang dilakukan ini dengan peneelitian-penelitian
sebelumnya adalah, pada penelitian ini, citra digital dienkrip
ipsi dengan cara
mengacak piksel yan
ng ada di dalamnya dengan algorima Fishe
her Yates. Hasil
pengacakan (shuffle) kemudian dienkripsi menggunakan algoritma
itma Vigenere.
ipher merupakan algoritma kriptografi klasik.
Vigenere Ciphe
ik. Operasi pada
algoritma kriptografi klasik berbasis pada operasi karakter, sedangkkan operasi pada
algoritma kriptografi modern berbasis pada operasi bit. Dalam krriptografi klasik,
Vigenere Cipher terma
masuk ke dalam cipher substitusi abjad majemuk,
emuk, yang terbuat
dari sejumlah cipher abjad
a
tunggal, masing-masing dengan kunci yyang berbeda [4].
Vigenere Cipher telah berkali-kali diciptakan ulang dengan cukup bervariasi.
Namun, metode aslinnya digambarkan oleh Giovan Batista Belaso pada tahun 1553
seperti tertulis di dalam
lam bukunya La Cifra del Sig. Giovan Batista B
Belaso. Meskipun
demikian, Vigenere Cipher
Cip
dipopulerkan oleh Blaise de Vigenere ppada tahun 1586.
Vigenere Cipher menggunakan
meng
Bujur Sangkar Vigenere (Gaambar 1) untuk
melakukan enkripsi. Pada bujur sangkar tersebut, kolom paling kiri menyatakan
huruf-huruf kunci,
b
paling atas menyatakan plainteks sedaangkan karakteri, dan baris
karakter lainnya menunjukkan
menun
karakter cipherteks. Karakter ciphe
cipherteks ditentukan
dengan menggunakan
an prinsip
p
Caesar Cipher. Pergeseran huruf menj
menjadi cipherteks
ditentukan oleh nilai desimal dari huruf kunci yang bersangkutan (a = 0, b = 1, ...,
y = 24, z = 25). Vigen
nere Cipher menggunakan tabel Vigenere yangg dikenal dengan
tabula recta (Gambarr 1)..
Gambar 1 Tabula Recta yang Digunakan oleh Vigenere Cipher
er [5]
Tabula recta digunakan untuk mendapatkan ciphe
cipherteks dengan
menggunakan kunci yang telah ditentukan. Jika panjang kunci lebih pendek
daripada panjang plainteks,
plaintek maka kunci diulang penggunaannya (s
(sistem periodik).
Jika panjang kunci adalah
ad
m, maka periodenya adalah m. Secara singkat, enkripsi
3
dapat digambarkan sebagai berikut: p (plainteks) : KRIPTOGRAFI k (kunci) :
LAMPIONLAMP c (cipherteks) : VRUEBCTCARX
Pada penelitian ini digunakan algoritma shuffle Fisher Yates. Fisher Yates
shuffle (diambil dari nama Ronald Fisher dan Frank Yates) atau juga dikenal dengan
nama Knuth shuffle (diambil dari nama Donald Knuth), adalah sebuah algoritma
untuk menghasilkan suatu permutasi acak dari suatu himpunan terhingga, dengan
kata lain untuk mengacak suatu himpunan tersebut [6]. Jika diimplementasikan
dengan benar, maka hasil dari algoritma ini tidak akan berat sebelah, sehingga
setiap permutasi memiliki kemungkinan yang sama. Metode dasar yang digunakan
untuk menghasilkan suatu permutasi acak untuk angka 1 sampai N adalah sebagai
berikut [7]:
1.
Tuliskan angka dari 1 sampai N.
2.
Pilih sebuah angka acak K di antara 1 sampai dengan jumlah angka
yang belum dicoret.
3.
Dihitung dari bawah, coret angka K yang belum dicoret, dan tuliskan angka
tersebut di lain tempat.
4.
Ulangi langkah 2 dan langkah 3 sampai semuat angka sudah tercoret.
5.
Urutan angka yang dituliskan pada langkah 3 adalah permutasi acak dari
angka awal.
Pada versi modern yang digunakan sekarang, angka yang terpilih tidak
dicoret, tetapi posisinya ditukar dengan angka terakhir dari angka yang belum
terpilih. Contoh pengerjaan dari versi modern ditunjukkan pada Tabel 1. Range
adalah jumlah angka yang belum terpilih, roll adalah angka acak yang terpilih,
scratch adalah daftar angka yang belum terpilih, dan result adalah hasil permutasi
yang akan didapatkan.
Tabel 1 Contoh Langkah Fisher Yates Shuffle
Range
Roll
1-8
1-7
1-6
1-5
1-4
1-3
1-2
6
2
6
1
3
3
1
Scratch
12345678
61234587
173458
17345
5734
574
57
7
Result
6
26
826
1826
31826
431826
5431826
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 [8][9].
4
Gambar 2 True Color 24 bit dan 32 bit [8]
Sebuah metode otentikasi yang efektif memiliki beberapa kriteria sebagai
berikut: (1) Dapat mengetahui apakah sebuah gambar telah mengalami perubahan
atau tidak; (2) Dapat menunjukkan lokasi perubahan yang terjadi; (3) Dapat
mengintegrasikan (menggabungkan) antara data otentikasi dengan citra digital
yang akan diamankan; dan (4) Data otentikasi yang disisipkan tidak terlihat oleh
mata manusia [10].
3.
Metode dan Perancangan Sistem
Sistem yang dikembangkan, memiliki desain yang ditunjukkan pada
Gambar 3. Sistem terdiri dari dua proses, yaitu proses enkripsi dan proses
dekripsi. Pada proses enkripsi diperlukan masukan berupa citra digital dan kunci
enkripsi. Hasil dari proses enkripsi adalah cipher image. Pada proses dekripsi,
masukan yang diperlukan adalah cipher image dan kunci dekripsi. Kunci enkripsi
dan kunci dekripsi adalah sama.
Encryptor
Citra Digiital +
Kunci Enkripsi
Proses Shuffle
Piksel
Proses Enkripsi
dengan
Vigenere
Cipher Image
Proses Dekripsi
dengan
Vigenere
Proses
Deshuffle Piksel
Citra Digital
Original
Decryptor
Cipher Image +
Kunci Dekripsi
Gambar 3 Desain Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi masalah dan studi literatur, (2)
Perancangan sistem, (3) Implementasi sistem, dan (4) Pengujian sistem dan analisis
hasil pengujian.
5
Gambar 4 Tahapan Penelititan
Tahapan penelitian pada Gambar 4, dijelaskan sebagai berikut: Tahap
pertama: mengidentifikasi masalah keamanan data terutama citra digital, dan
mempelajari solusi-solusi yang dapat diterapkan. Tahap kedua: berdasarkan solusisolusi yang dipilih, dirancang suatu modifikasi dari algoritma yang sudah ada,
untuk digunakan sebagai penyelesaian masalah. Tahap ketiga: mengimplementasikan hasil perancangan ke dalam bentuk aplikasi Windows
dengan menggunakan teknologi .Net Framework. Tahap keempat: adalah
melakukan pengujian sistem dan kemudian melakukan analisis terhadap hasil
pengujian tersebut.
Mulai
Input gambar dan kunci
Modulasi kunci menjadi angka seed
Baca semua elemen warna pada gambar
Shuffle warna
Proses enkripsi d engan Vigenere
Masukkan kembali Warna ke dalam gambar
Output Chiper Image
Selesai
Gambar 4 Rancangan Proses Enkripsi pada Citra Digital
6
Pada Gambar 4 ditunjukkan proses enkripsi pada citra digital dengan
Vigenere cipher termodifikasi. Masukan yang diperlukan adalah citra digital dan
kunci yang panjangnya 6-12 karakter. Kunci yang digunakan kemudian dilakukan
modulasi dengan XOR sehingga dihasilkan satu bilangan byte. Bilangan tersebut
menjadi seed untuk proses pembangkitan bilangan acak. Untuk tiap elemen warna
padagambar,dilakukanproses enkripsi dengan caramenggesernilai warnatersebut
dengan nilai yangdihasilkan dari prosespembangkitan acak. Prosesiniberlangsung
terus sampai pada elemen warna terakhir. Hasil dari proses pergeseran ini adalah
citra digital terenkripsi (cipher image).
Mulai
Input Chiper Image dan kunci
Modulasi kunci menjadi angka seed
Baca semua elemen warna pada gambar
Proses enkripsi d engan Vigenere
Deshuffle warna
Masukkan kembali Warna ke dalam gambar
Output plain Image
Selesai
Gambar 5 Rancangan Proses Dekripsi Citra Digital
Pada Gambar 5 ditunjukkan diagram proses dekripsi. Seperti halnya pada
proses enkripsi, pada proses dekripsi diperlukan masukan yaitu cipher image, dan
kunci dekripsi. Kunci dekripsi digunakan untuk membangkitkan bilangan acak.
Proses selanjutnya sama dengan proses enkripsi, yaitu menggeser nilai
warnaseusai dengan nilai hasil pembangkitan acak. Perbedaannya adalah proses
geser yang dilakukan dengan arah yang sebaliknya dari proses enkripsi.
Detail dari rancangan proses yang dikembangkan pada penelitian ini
dijelaskan melalui urutan sebagai berikut.
1.
Proses shuffle. Pada citra digital 24 bit warna tersusun dari piksel-piksel.
Piksel tersebut kemudian dikocok (shuffle) sehingga posisinya tersusun
7
secara acak. Algoritma yang digunakan untuk proses shuffle adalah Fisher
Yates. Agar proses shuffle yang telah dilakukan, dapat dikembalikan lagi
ke urutan semula (deshuffle), maka diperlukan satu kunci yang digunakan
pada proses pembangkitan urutan shuffle. Kunci ini diperoleh dari
masukkan pengguna.
Proses enkripsi. Piksel yang telah dikocok, kemudian dienkripsi dengan
menggunakan algoritma Vigenere. Kunci yang digunakan untuk proses
enkripsi adalah kunci
kunci yang dimasukkan oleh pengguna, sama dengan kunci
pada proses shuffle
shuffle.
Proses dekripsi. Citra digital yang telah terenkripsi tersebut, diterima oleh
pihak kedua (penerima). Oleh penerima, dengan menggunakan kunci yang
sama, citra digital didekripsi dengan menggunakan algoritma Vigenere.
Proses deshuffle.
deshuffle Setelah proses dekripsi, piksel-piksel
piksel berada dalam
kondisi acak. Untuk mengembalikan ke urutan asli perlu dilakukan proses
deshuffle. Proses deshuffle memerlukan kunci yang sama digunakan pada
awalnya.
proses shuffle, sehingga dapat diperoleh urutan seperti pada awal
2.
3.
4.
Sebagai contoh, jika dilakukan proses pada citra digital 24 warna, 4x4 px
dengan susunan warna sebagai berikut:
Gambar 6 Contoh Citra Awal
Warna
7
255
7
83
32
187
32
163
187
243
240
10
Kunci yang dimasukkan
dim
oleh pengguna adalah fti@uksw.
Kunci
f
Ascii
Hasil Modulasi Kunci
t
102
33
255
243
7
240
@
105
64
u
117
k
s
107
115
w
angka yang digunakan untuk lakukan shuffle
Contoh proses shuffle:
Urutan Semula
Hasil Shuffle
i
116
7
10
83
255
32
7
187
7
32
83
163
32
187
187
243
32
240
163
119
10
187
Contoh proses
oses enkripsi:
Hasil Shuffle
(P)
Kunci (K)
P+K
(P+K) Mod 256
243
240
10
255
7
7
83
32
187
32
163
187
102
345
89
116
356
100
105
115
115
64
319
63
117
124
124
107
114
114
115
198
198
119
151
151
102
289
33
116
148
148
105
268
12
64
251
251
148
116
12
105
251
64
Citra digitall terenkripsi ditunjukkan pada Gambar
G
7.
Gambar 7 Contoh Citra Hasil Shuffle dan Enkripsi
Contoh proses dekripsi:
Warna (C)
Kunci (K)
89
102
100
116
115
105
63
64
124
117
8
114
107
198
115
151
119
33
102
C-K
Jika < 0, + 256
-13
243
-16
240
10
10
-1
255
7
7
7
7
83
83
32
32
-69
187
32
32
-93
163
187
187
Contoh proses deshuffle:
Hasil
Decrypt/Hasil
Shuffle
Hasil DeShuffle
4.
243
240
10
255
7
7
83
32
187
32
163
187
255
7
7
83
32
187
32
163
187
243
240
10
mbahasan
Hasil dan Pem
Berdasarkan hasil perancangan, maka dilakukan implementa
plementasi dalam
bentuk aplikasi desktop
ktop berbasis Windows. Aplikasi dikemban
dikembangkan dengan
menggunakan bahasaa pemrograman C#, dengan pustaka .Net F
Framework 4.5.
ngan yang digunakan adalah Visual Studio E
Perangkat pengemban
Express 2012 for
Windows Desktop.
Gambar 8 Form untuk
tuk Proses Enkripsi
Gambar 9 Form untuk Pro
Proses Dekripsi
Gambar 8 merupakan
me
form yang digunakan untuk melakuk
melakukan proses
enkripsi. Form terseebut menyediakan masukan berupa citra diigital yang akan
dienkripsi, dan kunci enkripsi. Hasil enkripsi ditampilkan bersebela
lahan dengan citra
digital semula. Gamba
ambar 9 merupakan form yang digunakan untuk proses dekripsi.
Skema tampilan sama
ama dengan
den
form untuk proses enkripsi.
Kode Program 1 Perintah untuk Proses Shuffle dengan Algoritma Fisher-Yates
1.
public static T[] Shuffle(T[] array, int seed)
2.
{
3.
T[] copy = new T[array.Length];
4.
array.CopyTo(copy, 0);
5.
Random r = new Random(seed);
6.
for (int i = copy.Length - 1; i > 0; i--)
7.
{
8.
int index = r.Next(i);
9.
T tmp = copy[index];
10.
copy[index] = copy[i];
11.
copy[i] = tmp;
12.
}
13.
return copy;
14. }
m 1 merupakan perintah untuk proses shuffle dari sekumpulan
Kode Program
nilai data. Proses shuf
huffle dilakukan dengan menggunakan algoritma
itma Fisher Yates.
Algoritma tersebut memanfaatkan
me
fungsi acak. Pada .Net Framewo
ework, disediakan
9
class Random yang dapat membangkitkan bilangan acak (perintah pada baris 5).
Angka acak diperoleh dengan memanggil fungsi next (perintah pada baris 8).
Kode Program 2 Perintah untuk proses Deshuffle dengan Algoritma Fisher Yates
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.
public static T[] DeShuffle(T[] array, int seed)
{
Trace[] traces = new Trace[array.Length];
for (int i = 0; i < traces.Length; i++)
{
traces[i] = new Trace() { Index = i };
}
Random r = new Random(seed);
for (int i = array.Length - 1; i > 0; i--)
{
int index = r.Next(i);
Trace tmp = traces[index];
traces[index] = traces[i];
traces[i] = tmp;
}
T[] copy = new T[array.Length];
for (int i = 0; i < traces.Length; i++)
{
int originalIndex = traces[i].Index;
copy[originalIndex] = array[i];
}
return copy;
}
Kode Program 2 merupakan perintah untuk proses deshuffle dari
sekumpulan nilai data. Deshuffle berarti proses menata ulang kembali sekumpulan
data yang telah melalui proses shuffle sebelumnya. Langkah ini dicapai dengan cara
membangkitkan urutan shuffle (perintah pada baris 10-16). Urutan proses shuffle
tersebut, digunakan untuk membalikkan kembali ke susunan awal (perintah
pada baris 19-23).
Kode Program 3 Perintah untuk Proses Enkripsi dengan Vigenere Chiper
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static byte[] Encrypt(byte[] data, byte[] key)
{
key = ExpandKey(key, data.Length);
List result = new List();
int keyIndex = 0;
foreach (byte M in data)
{
byte C = (byte)((M + key[keyIndex]) % 256);
result.Add(C);
keyIndex++;
}
return result.ToArray();
}
Kode Program 3 merupakan perintah untuk proses enkripsi dengan
algoritma Vigenere. Proses dimulai dengan menyusun kunci sepanjang data yang
akan dienkripsi. Kemudian untuk tiap nilai byte pada data, dilakukan operasi
penjumlahan, dan hasilnya dimodulus 256 (jangkauan nilai data bertipe byte).
Kode Program 4 Perintah untuk Proses Dekripsi dengan Vigenere Chiper
10
1. public static byte[] Decrypt(byte[] data, byte[] key)
2. {
3.
key = ExpandKey(key, data.Length);
4.
List result = new List();
5.
int keyIndex = 0;
6.
foreach (byte M in data)
7.
{
8.
byte K = key[keyIndex];
9.
if (K
an Vigenere Cipher dan Fisher Yaates Shuffle
Menggunakan
Pada Data Citra Digital
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh gelar Sarjana Komputer
puter
Peneliti:
Rulianto Lalu Pada (672013725)
Mag
Magdalena
A. Ineke Pakereng, M.Kom..
Prrogram Studi Teknik Informatika
Fakultas Teknologi Informasi
U
Universitas
Kristen Satya Wacana
Salatiga
Mei 2015
i
ii
iii
iv
v
vi
Perancangan dan Implementasi Kriptografi
Menggunakan Vigenere Cipher dan Fisher Yates Shuffle
Pada Data Citra Digital
1) Rulianto
Lalu Pada, 2) Magdalena A. Ineke Pakereng
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
1)
Email: [email protected],2)[email protected]
Abstract
Security aspects in the exchange of information is very important because a remote
data communication may not necessarily have a secure transmission path. Information in
the form of digital images has been widely used in various fields such as government,
military, financial institutions, hospitals, trading companies, and so forth. Digital image
stored in a computer and transmitted through a computer network and the Internet are at
risk to be known, altered or destroyed by certain parties. Cryptographic techniques can be
applied to protect digital images of these problems. Cryptography in the digital image can
be implemented using a combination of Fisher Yates and Vigenere algorithm. In this study
produced an application for encryption and decryption of digital image by using a
combination of these two algorithms. The results show that small changes in the key, give
large changes in the results of encryption. Encryption and decryption process does not
damage the pixels in a digital image, so that the integrity of the digital image can be
maintained.
Keywords: Image Cryptography, Vigenere Cipher, Fisher Yates Shuffle
Abstrak
Aspek keamanan dalam pertukaran informasi menjadi sangat penting karena suatu
komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman. Informasi
berupa citra digital telah digunakan secara luas dalam berbagai macam bidang seperti
pemerintahan, militer, badan keuangan, rumah sakit, perusahaan perdagangan, dan lain
sebagainya. Citra digital yang tersimpan dalam komputer maupun dikirimkan lewat
jaringan komputer dan internet memiliki resiko untuk diketahui, diubah dan dirusak oleh
pihak tertentu. Teknik kriptografi dapat diterapkan untuk melindungi citra digital dari
masalah-masalah tersebut. Kriptografi pada citra digital dapat diimplementasikan dengan
menggunakan kombinasi algoritma Fisher Yates dan Vigenere. Pada penelitian ini
dihasilkan suatu aplikasi untuk enkripsi dan dekripsi citra digital dengan menggunakan
kombinasi dua algoritma tersebut. Hasil pengujian menunjukkan bahwa perubahan kecil
pada kunci, memberikan perubahan yang besar pada hasil enkripsi. Proses enkripsi dan
dekripsi tidak merusak piksel pada citra digital, sehingga keutuhan citra digital dapat
dipertahankan.
Kata Kunci: Kriptografi Citra Digital, Vigenere Cipher, Fisher Yates Shuffle
1) Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana
2) Staf Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana Salatiga.
1
1.
Pendahuluan
Pada era modern saat ini banyak sekali kemungkinan penyadapan data,
maka aspek keamanan dalam pertukaran informasi menjadi sangat penting karena
suatu komunikasi data jarak jauh belum tentu memiliki jalur transmisi yang aman
dari penyadapan sehingga keamanan informasi menjadi bagian penting dalam dunia
informasi itu sendiri [1].
Informasi berupa citra digital telah digunakan secara luas dalam berbagai
macam bidang seperti pemerintahan, militer, badan keuangan, rumah sakit,
perusahaan perdagangan, dan lain sebagainya. Citra digital digunakan untuk
menyimpan informasi penting, misalnya hasil pemeriksaan pasien dalam bidang
rumah sakit, area geografi dalam bidang penelitian, posisi musuh dalam bidang
militer, produk baru dalam perusahaan, dan lain sebagainya. Citra digital yang
tersimpan dalam komputer maupun dikirimkan lewat jaringan komputer dan
internet memiliki resiko untuk diketahui, diubah dan dirusak oleh pihak tertentu.
Teknik kriptografi dapat diterapkan untuk melindungi citra digital dari masalahmasalah tersebut. Algoritma Fisher Yates adalah algoritma yang berfungsi untuk
mengacak posisi elemen dalam sebuah himpunan. Algoritma Fisher Yates dapat
diimplementasikan untuk mengacak (shuffle) piksel pada suatu citra digital,
sehingga menghilangkan makna sebenarnya. Proses pengacakan dapat menggunakan suatu nilai seed sebagai nilai awal pengacakan. Nilai seed ini digunakan
kembali ketika proses pembalikan (deshuffle) diperlukan, untuk mendapatkan citra
digital yang semula. Untuk meningkatkan keamanan, pada hasil shuffle dapat
dilakukan proses enkripsi. Algoritma Vigenere yang merupakan algoritma klasik
dapat digunakan untuk tujuan tersebut.
Berdasarkan uraian latar belakang masalah tersebut, maka pada penelitian
ini dirancang aplikasi kriptografi citra digital, dengan melakukan penggabungan
antara algoritma Fisher Yates shuffle dan algoritma Vigenere. Berdasarkan hasil
perancangan, dilakukan implementasi dalam bentuk aplikasi berbasis Windows,
yang dibuat dengan menggunakan teknologi .Net Framework.
2.
Tinjauan Pustaka
Penelitian tentang Vigenere cipher termodifikasi telah dilakukan
sebelumnya. Pada penelitian Setyaningsih, dkk., [2] dibahas mengenai masalah
keamanan pesan multimedia (MMS) yang dikirimkan melalui smartphone. Pesan
tersebut sebelum sampai ke penerima, terlebih dahulu melewati server operator
seluler. Melihat permasalahan tersebut, maka diperlukan mekanisme untuk
mengamankan, yaitu dengan menyandikan pesan multimedia, terutama citra digital,
sebelum dikirimkan. Teknik yang digunakan adalah kombinasi antara Vigenere
cipher dengan Playfair Cipher. Hasil percobaan menunjukkan histogram
cipher image memiliki distribusi keragaman dan perbedaan yang signifikan
dengan histogram plain image, serta frekuensi kemunculan masing-masing nilai
intensitas pada histogram cipher image juga merata yang berarti tidak dapat
2
memberikan
ikan petunjuk untuk dilakukan statistical attack.
Penelitian yanng lain adalah yang dilakukan oleh Li [3], yyang melakukan
kombinasi antara algo
oritma berbasis chaos theory dan Vigenere ciphe
ipher. Kombinasi
algoritma tersebut diggunakan untuk melakukan proses pengacakan piksel pada citra
uan men
mengamankan citra digital tersebut.
digital, untuk tujuan
Perbedaan penelitian
pen
yang dilakukan ini dengan peneelitian-penelitian
sebelumnya adalah, pada penelitian ini, citra digital dienkrip
ipsi dengan cara
mengacak piksel yan
ng ada di dalamnya dengan algorima Fishe
her Yates. Hasil
pengacakan (shuffle) kemudian dienkripsi menggunakan algoritma
itma Vigenere.
ipher merupakan algoritma kriptografi klasik.
Vigenere Ciphe
ik. Operasi pada
algoritma kriptografi klasik berbasis pada operasi karakter, sedangkkan operasi pada
algoritma kriptografi modern berbasis pada operasi bit. Dalam krriptografi klasik,
Vigenere Cipher terma
masuk ke dalam cipher substitusi abjad majemuk,
emuk, yang terbuat
dari sejumlah cipher abjad
a
tunggal, masing-masing dengan kunci yyang berbeda [4].
Vigenere Cipher telah berkali-kali diciptakan ulang dengan cukup bervariasi.
Namun, metode aslinnya digambarkan oleh Giovan Batista Belaso pada tahun 1553
seperti tertulis di dalam
lam bukunya La Cifra del Sig. Giovan Batista B
Belaso. Meskipun
demikian, Vigenere Cipher
Cip
dipopulerkan oleh Blaise de Vigenere ppada tahun 1586.
Vigenere Cipher menggunakan
meng
Bujur Sangkar Vigenere (Gaambar 1) untuk
melakukan enkripsi. Pada bujur sangkar tersebut, kolom paling kiri menyatakan
huruf-huruf kunci,
b
paling atas menyatakan plainteks sedaangkan karakteri, dan baris
karakter lainnya menunjukkan
menun
karakter cipherteks. Karakter ciphe
cipherteks ditentukan
dengan menggunakan
an prinsip
p
Caesar Cipher. Pergeseran huruf menj
menjadi cipherteks
ditentukan oleh nilai desimal dari huruf kunci yang bersangkutan (a = 0, b = 1, ...,
y = 24, z = 25). Vigen
nere Cipher menggunakan tabel Vigenere yangg dikenal dengan
tabula recta (Gambarr 1)..
Gambar 1 Tabula Recta yang Digunakan oleh Vigenere Cipher
er [5]
Tabula recta digunakan untuk mendapatkan ciphe
cipherteks dengan
menggunakan kunci yang telah ditentukan. Jika panjang kunci lebih pendek
daripada panjang plainteks,
plaintek maka kunci diulang penggunaannya (s
(sistem periodik).
Jika panjang kunci adalah
ad
m, maka periodenya adalah m. Secara singkat, enkripsi
3
dapat digambarkan sebagai berikut: p (plainteks) : KRIPTOGRAFI k (kunci) :
LAMPIONLAMP c (cipherteks) : VRUEBCTCARX
Pada penelitian ini digunakan algoritma shuffle Fisher Yates. Fisher Yates
shuffle (diambil dari nama Ronald Fisher dan Frank Yates) atau juga dikenal dengan
nama Knuth shuffle (diambil dari nama Donald Knuth), adalah sebuah algoritma
untuk menghasilkan suatu permutasi acak dari suatu himpunan terhingga, dengan
kata lain untuk mengacak suatu himpunan tersebut [6]. Jika diimplementasikan
dengan benar, maka hasil dari algoritma ini tidak akan berat sebelah, sehingga
setiap permutasi memiliki kemungkinan yang sama. Metode dasar yang digunakan
untuk menghasilkan suatu permutasi acak untuk angka 1 sampai N adalah sebagai
berikut [7]:
1.
Tuliskan angka dari 1 sampai N.
2.
Pilih sebuah angka acak K di antara 1 sampai dengan jumlah angka
yang belum dicoret.
3.
Dihitung dari bawah, coret angka K yang belum dicoret, dan tuliskan angka
tersebut di lain tempat.
4.
Ulangi langkah 2 dan langkah 3 sampai semuat angka sudah tercoret.
5.
Urutan angka yang dituliskan pada langkah 3 adalah permutasi acak dari
angka awal.
Pada versi modern yang digunakan sekarang, angka yang terpilih tidak
dicoret, tetapi posisinya ditukar dengan angka terakhir dari angka yang belum
terpilih. Contoh pengerjaan dari versi modern ditunjukkan pada Tabel 1. Range
adalah jumlah angka yang belum terpilih, roll adalah angka acak yang terpilih,
scratch adalah daftar angka yang belum terpilih, dan result adalah hasil permutasi
yang akan didapatkan.
Tabel 1 Contoh Langkah Fisher Yates Shuffle
Range
Roll
1-8
1-7
1-6
1-5
1-4
1-3
1-2
6
2
6
1
3
3
1
Scratch
12345678
61234587
173458
17345
5734
574
57
7
Result
6
26
826
1826
31826
431826
5431826
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 [8][9].
4
Gambar 2 True Color 24 bit dan 32 bit [8]
Sebuah metode otentikasi yang efektif memiliki beberapa kriteria sebagai
berikut: (1) Dapat mengetahui apakah sebuah gambar telah mengalami perubahan
atau tidak; (2) Dapat menunjukkan lokasi perubahan yang terjadi; (3) Dapat
mengintegrasikan (menggabungkan) antara data otentikasi dengan citra digital
yang akan diamankan; dan (4) Data otentikasi yang disisipkan tidak terlihat oleh
mata manusia [10].
3.
Metode dan Perancangan Sistem
Sistem yang dikembangkan, memiliki desain yang ditunjukkan pada
Gambar 3. Sistem terdiri dari dua proses, yaitu proses enkripsi dan proses
dekripsi. Pada proses enkripsi diperlukan masukan berupa citra digital dan kunci
enkripsi. Hasil dari proses enkripsi adalah cipher image. Pada proses dekripsi,
masukan yang diperlukan adalah cipher image dan kunci dekripsi. Kunci enkripsi
dan kunci dekripsi adalah sama.
Encryptor
Citra Digiital +
Kunci Enkripsi
Proses Shuffle
Piksel
Proses Enkripsi
dengan
Vigenere
Cipher Image
Proses Dekripsi
dengan
Vigenere
Proses
Deshuffle Piksel
Citra Digital
Original
Decryptor
Cipher Image +
Kunci Dekripsi
Gambar 3 Desain Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi masalah dan studi literatur, (2)
Perancangan sistem, (3) Implementasi sistem, dan (4) Pengujian sistem dan analisis
hasil pengujian.
5
Gambar 4 Tahapan Penelititan
Tahapan penelitian pada Gambar 4, dijelaskan sebagai berikut: Tahap
pertama: mengidentifikasi masalah keamanan data terutama citra digital, dan
mempelajari solusi-solusi yang dapat diterapkan. Tahap kedua: berdasarkan solusisolusi yang dipilih, dirancang suatu modifikasi dari algoritma yang sudah ada,
untuk digunakan sebagai penyelesaian masalah. Tahap ketiga: mengimplementasikan hasil perancangan ke dalam bentuk aplikasi Windows
dengan menggunakan teknologi .Net Framework. Tahap keempat: adalah
melakukan pengujian sistem dan kemudian melakukan analisis terhadap hasil
pengujian tersebut.
Mulai
Input gambar dan kunci
Modulasi kunci menjadi angka seed
Baca semua elemen warna pada gambar
Shuffle warna
Proses enkripsi d engan Vigenere
Masukkan kembali Warna ke dalam gambar
Output Chiper Image
Selesai
Gambar 4 Rancangan Proses Enkripsi pada Citra Digital
6
Pada Gambar 4 ditunjukkan proses enkripsi pada citra digital dengan
Vigenere cipher termodifikasi. Masukan yang diperlukan adalah citra digital dan
kunci yang panjangnya 6-12 karakter. Kunci yang digunakan kemudian dilakukan
modulasi dengan XOR sehingga dihasilkan satu bilangan byte. Bilangan tersebut
menjadi seed untuk proses pembangkitan bilangan acak. Untuk tiap elemen warna
padagambar,dilakukanproses enkripsi dengan caramenggesernilai warnatersebut
dengan nilai yangdihasilkan dari prosespembangkitan acak. Prosesiniberlangsung
terus sampai pada elemen warna terakhir. Hasil dari proses pergeseran ini adalah
citra digital terenkripsi (cipher image).
Mulai
Input Chiper Image dan kunci
Modulasi kunci menjadi angka seed
Baca semua elemen warna pada gambar
Proses enkripsi d engan Vigenere
Deshuffle warna
Masukkan kembali Warna ke dalam gambar
Output plain Image
Selesai
Gambar 5 Rancangan Proses Dekripsi Citra Digital
Pada Gambar 5 ditunjukkan diagram proses dekripsi. Seperti halnya pada
proses enkripsi, pada proses dekripsi diperlukan masukan yaitu cipher image, dan
kunci dekripsi. Kunci dekripsi digunakan untuk membangkitkan bilangan acak.
Proses selanjutnya sama dengan proses enkripsi, yaitu menggeser nilai
warnaseusai dengan nilai hasil pembangkitan acak. Perbedaannya adalah proses
geser yang dilakukan dengan arah yang sebaliknya dari proses enkripsi.
Detail dari rancangan proses yang dikembangkan pada penelitian ini
dijelaskan melalui urutan sebagai berikut.
1.
Proses shuffle. Pada citra digital 24 bit warna tersusun dari piksel-piksel.
Piksel tersebut kemudian dikocok (shuffle) sehingga posisinya tersusun
7
secara acak. Algoritma yang digunakan untuk proses shuffle adalah Fisher
Yates. Agar proses shuffle yang telah dilakukan, dapat dikembalikan lagi
ke urutan semula (deshuffle), maka diperlukan satu kunci yang digunakan
pada proses pembangkitan urutan shuffle. Kunci ini diperoleh dari
masukkan pengguna.
Proses enkripsi. Piksel yang telah dikocok, kemudian dienkripsi dengan
menggunakan algoritma Vigenere. Kunci yang digunakan untuk proses
enkripsi adalah kunci
kunci yang dimasukkan oleh pengguna, sama dengan kunci
pada proses shuffle
shuffle.
Proses dekripsi. Citra digital yang telah terenkripsi tersebut, diterima oleh
pihak kedua (penerima). Oleh penerima, dengan menggunakan kunci yang
sama, citra digital didekripsi dengan menggunakan algoritma Vigenere.
Proses deshuffle.
deshuffle Setelah proses dekripsi, piksel-piksel
piksel berada dalam
kondisi acak. Untuk mengembalikan ke urutan asli perlu dilakukan proses
deshuffle. Proses deshuffle memerlukan kunci yang sama digunakan pada
awalnya.
proses shuffle, sehingga dapat diperoleh urutan seperti pada awal
2.
3.
4.
Sebagai contoh, jika dilakukan proses pada citra digital 24 warna, 4x4 px
dengan susunan warna sebagai berikut:
Gambar 6 Contoh Citra Awal
Warna
7
255
7
83
32
187
32
163
187
243
240
10
Kunci yang dimasukkan
dim
oleh pengguna adalah fti@uksw.
Kunci
f
Ascii
Hasil Modulasi Kunci
t
102
33
255
243
7
240
@
105
64
u
117
k
s
107
115
w
angka yang digunakan untuk lakukan shuffle
Contoh proses shuffle:
Urutan Semula
Hasil Shuffle
i
116
7
10
83
255
32
7
187
7
32
83
163
32
187
187
243
32
240
163
119
10
187
Contoh proses
oses enkripsi:
Hasil Shuffle
(P)
Kunci (K)
P+K
(P+K) Mod 256
243
240
10
255
7
7
83
32
187
32
163
187
102
345
89
116
356
100
105
115
115
64
319
63
117
124
124
107
114
114
115
198
198
119
151
151
102
289
33
116
148
148
105
268
12
64
251
251
148
116
12
105
251
64
Citra digitall terenkripsi ditunjukkan pada Gambar
G
7.
Gambar 7 Contoh Citra Hasil Shuffle dan Enkripsi
Contoh proses dekripsi:
Warna (C)
Kunci (K)
89
102
100
116
115
105
63
64
124
117
8
114
107
198
115
151
119
33
102
C-K
Jika < 0, + 256
-13
243
-16
240
10
10
-1
255
7
7
7
7
83
83
32
32
-69
187
32
32
-93
163
187
187
Contoh proses deshuffle:
Hasil
Decrypt/Hasil
Shuffle
Hasil DeShuffle
4.
243
240
10
255
7
7
83
32
187
32
163
187
255
7
7
83
32
187
32
163
187
243
240
10
mbahasan
Hasil dan Pem
Berdasarkan hasil perancangan, maka dilakukan implementa
plementasi dalam
bentuk aplikasi desktop
ktop berbasis Windows. Aplikasi dikemban
dikembangkan dengan
menggunakan bahasaa pemrograman C#, dengan pustaka .Net F
Framework 4.5.
ngan yang digunakan adalah Visual Studio E
Perangkat pengemban
Express 2012 for
Windows Desktop.
Gambar 8 Form untuk
tuk Proses Enkripsi
Gambar 9 Form untuk Pro
Proses Dekripsi
Gambar 8 merupakan
me
form yang digunakan untuk melakuk
melakukan proses
enkripsi. Form terseebut menyediakan masukan berupa citra diigital yang akan
dienkripsi, dan kunci enkripsi. Hasil enkripsi ditampilkan bersebela
lahan dengan citra
digital semula. Gamba
ambar 9 merupakan form yang digunakan untuk proses dekripsi.
Skema tampilan sama
ama dengan
den
form untuk proses enkripsi.
Kode Program 1 Perintah untuk Proses Shuffle dengan Algoritma Fisher-Yates
1.
public static T[] Shuffle(T[] array, int seed)
2.
{
3.
T[] copy = new T[array.Length];
4.
array.CopyTo(copy, 0);
5.
Random r = new Random(seed);
6.
for (int i = copy.Length - 1; i > 0; i--)
7.
{
8.
int index = r.Next(i);
9.
T tmp = copy[index];
10.
copy[index] = copy[i];
11.
copy[i] = tmp;
12.
}
13.
return copy;
14. }
m 1 merupakan perintah untuk proses shuffle dari sekumpulan
Kode Program
nilai data. Proses shuf
huffle dilakukan dengan menggunakan algoritma
itma Fisher Yates.
Algoritma tersebut memanfaatkan
me
fungsi acak. Pada .Net Framewo
ework, disediakan
9
class Random yang dapat membangkitkan bilangan acak (perintah pada baris 5).
Angka acak diperoleh dengan memanggil fungsi next (perintah pada baris 8).
Kode Program 2 Perintah untuk proses Deshuffle dengan Algoritma Fisher Yates
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.
public static T[] DeShuffle(T[] array, int seed)
{
Trace[] traces = new Trace[array.Length];
for (int i = 0; i < traces.Length; i++)
{
traces[i] = new Trace() { Index = i };
}
Random r = new Random(seed);
for (int i = array.Length - 1; i > 0; i--)
{
int index = r.Next(i);
Trace tmp = traces[index];
traces[index] = traces[i];
traces[i] = tmp;
}
T[] copy = new T[array.Length];
for (int i = 0; i < traces.Length; i++)
{
int originalIndex = traces[i].Index;
copy[originalIndex] = array[i];
}
return copy;
}
Kode Program 2 merupakan perintah untuk proses deshuffle dari
sekumpulan nilai data. Deshuffle berarti proses menata ulang kembali sekumpulan
data yang telah melalui proses shuffle sebelumnya. Langkah ini dicapai dengan cara
membangkitkan urutan shuffle (perintah pada baris 10-16). Urutan proses shuffle
tersebut, digunakan untuk membalikkan kembali ke susunan awal (perintah
pada baris 19-23).
Kode Program 3 Perintah untuk Proses Enkripsi dengan Vigenere Chiper
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static byte[] Encrypt(byte[] data, byte[] key)
{
key = ExpandKey(key, data.Length);
List result = new List();
int keyIndex = 0;
foreach (byte M in data)
{
byte C = (byte)((M + key[keyIndex]) % 256);
result.Add(C);
keyIndex++;
}
return result.ToArray();
}
Kode Program 3 merupakan perintah untuk proses enkripsi dengan
algoritma Vigenere. Proses dimulai dengan menyusun kunci sepanjang data yang
akan dienkripsi. Kemudian untuk tiap nilai byte pada data, dilakukan operasi
penjumlahan, dan hasilnya dimodulus 256 (jangkauan nilai data bertipe byte).
Kode Program 4 Perintah untuk Proses Dekripsi dengan Vigenere Chiper
10
1. public static byte[] Decrypt(byte[] data, byte[] key)
2. {
3.
key = ExpandKey(key, data.Length);
4.
List result = new List();
5.
int keyIndex = 0;
6.
foreach (byte M in data)
7.
{
8.
byte K = key[keyIndex];
9.
if (K