LISTING PROGRAM
private void button1_Click(object sender, EventArgs e) { start the python program with two parameters
p.Start(); // start the process (the python program) StreamReader s = p.StandardOutput;
string[] r = output.Split(new char[] { ' ' }); // get the
private void button3_Click(object sender, EventArgs e) {
plainText.Text.Replace(' ', '_') + " " + ekskey.Text;// start the python program with two parameters
waktupenyisipan = Convert.ToInt32(total.TotalMilliseconds); MessageBox.Show("Waktu enkripsi adalah: " + waktupenyisipan + " ms.");
}
StreamReader objReader = new
private void button5_Click(object sender, EventArgs e) {
private void button14_Click_1(object sender, EventArgs e) { start the python program with two parameters
StreamReader s = p.StandardOutput;
private void button12_Click_1(object sender, EventArgs e) { eksdek.Text;// start the python program with two parameters
p.Start(); // start the process (the python program)
waktupenyisipan = Convert.ToInt32(total.TotalMilliseconds); MessageBox.Show("Waktu dekripsi adalah: " + waktupenyisipan + " ms.");
}
p.StartInfo.UseShellExecute = false; // make sure we can read the output from stdout
p.StartInfo.Arguments = "imgPadding.py " + imgPath + " " + ekskey.Text + " " + plainText.Text.Replace(' ', '_');// start the python program with two parameters
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox2.Image = image;
fs.Close();
akhir = DateTime.Now; total = akhir - awal;
waktupenyisipan = Convert.ToInt32(total.TotalMilliseconds); MessageBox.Show("Pesan Berhasil disisipkan!", "Informasi!", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("Waktu penyisipan adalah: " + waktupenyisipan + " ms.");
p.Close(); }
private void button10_Click(object sender, EventArgs e) {
p.StartInfo.Arguments = "imgExtractMsg.py " + imgPath;// start the python program with two parameters
p.Start(); // start the process (the python program)
waktupenyisipan = Convert.ToInt32(total.TotalMilliseconds); MessageBox.Show("Pesan berhasil diekstrak!", "Informasi!", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("Waktu ekstrsi adalah: " + waktupenyisipan + " ms.");
p.Close(); }
private void button1_Click_1(object sender, EventArgs e) {
private void label7_Click(object sender, EventArgs e) {
}
private void button2_Click_1(object sender, EventArgs e) {
def divide_side(message_bit): i = 0
left = "" right = ""
half_size = len(message_bit)/2; while (i < half_size):
ip = [58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7];
message_permutation_1 = "" for i in range(0, len(ip)):
message_permutation_1 += message[ip[i]-1]; return message_permutation_1
def e_bit(message):
ip_inv = [40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38,
# Get blue pixels from image for padding process def get_bluePx0(rgbaPx):
bluePx = []
for i in range (0, len(rgbaPx)): bluePx.append(rgbaPx[i][2]) return bluePx
# Get blue pixels from image to get padded message def get_bluePx1(rgbaPx):
plain_pixel[i] = temp return plain_pixel
def extract_bluePx(bluePx): msgBit = ''
for i in range(0, len(bluePx)):
bluePxList = list(bin(bluePx[i]).replace("0b", "")) msgBit += bluePxList[len(bluePxList)-1]
return msgBit
def create_png(imgPath, rgbaPx, imgName, msgLength): x = get_img_res(imgPath, 'height')# x -> height
key_bin_pc1 = get_key_plus_bit(key_bin) key_bin_div = divide_side(key_bin_pc1) c0 = key_bin_div[0]
d0 = key_bin_div[1] c = [c0]
d = [d0]
key_bin_c1_c16 = get_c1_to_c16(c, d) c0 = key_bin_c1_c16[0]
d0 = key_bin_c1_c16[1] key_bin_join = join(c0,d0)
key_bin_pc2 = get_key_plus_bit_2(key_bin_join) return key_bin_pc2
ip1 = message_permutation_1(message_bin)
rn = lnrn(key_bin_pc2, x, ln, rn)
join_e_m += encrypt_m(key_bin_pc2,message[i:i+8]) return join_e_m
def decrypt_m(key_bin_pc2, message_bin): ip1 = message_permutation_1(message_bin)
message_divide = divide_side(ip1) l0 = message_divide[0]
3. Internal_key.py from function import * import sys
#mengambil nilai dari argument ekskey.text key = sys.argv[1]
message = sys.argv[1].replace('_', ' '); key = sys.argv[2]
6. Dekripsi_pesan.py from function import * import binascii
import sys
key = sys.argv[2] imgPath = sys.argv[1]
key_bin_pc2 = get_key_bin(key) plainPx = get_img_px(imgPath) bluePx = get_bluePx1(plainPx) message = extract_bluePx(bluePx)
plain_bit = get_plain_message(key_bin_pc2, message) print bit_to_ascii(plain_bit)
7. ImgExtractMsg.py from function import * import sys
imgPath = sys.argv[1]
CURRICULUM VITAE
---
Data Pribadi
Nama : Hengky Prayson Fangaro Gulo
Tempat/Tanggal Lahir : Gunung Sitoli / 28 Agustus 1992
Tinggi/Berat Badan : 169 cm / 100 kg
Agama : Kristen Protestan
Kewarganegaraan : Indonesia
Alamat : Jl. Jahe 6 no.2 Perumnas Simalingkar Medan
Alamat Orang Tua : Jl. Jahe 6 no.2 Perumnas Simalingkar Medan
Telp/ Hp : 085362402072
Email : hengkygulo@gmail.com
---
Riwayat Pendidikan
[2010 – 2016] : S1 Ilmu Komputer Universitas Sumatera Utara, Medan [2007 – 2010] : SMK Negeri 9 Medan
[2004 – 2007] : SMP Negeri 10 Medan
---
Keahlian/Kursus
Keahlian Komputer Bahasa :
Pemrograman :Pyhton, C#, C++ English
Database : MySQL Indonesia
Daftar Pustaka
Anggraini, Siska.2012.Implementasi Sistem Keamanan Data Menggunakan Algoritma RSA dan Modified LSB.Skripsi.Universitas Sumatera Utara
Batten, Lynn M.2013.Public Key cryptography Applications and Attacks.IEEE press.USA
Gabriel,Stephen, Waweru, 2012, An enhanced Least Significant Bit Steganographic Method for Information Hiding, Journal of Information Engineering and Applications, Vol 2, No.9:1-11.
Kromodimoeljo, Sentot. 2010. Teori dan Aplikasi Kriptografi. SPK IT Consulting : Jakarta.
Kipper,Gregory.2004.Invetigator’s Guide To Steganography.A CRC Press Company.London
Kadir, A. & Susanto A. 2013. Teori dan Aplikasi Pengolahan Citra. Yogyakarta ANDI: Yogyakarta.
Mollin, Richard a. 2007. An Introduction To Cryptography 2nd. Chapman & Hall : London
Miano, John. 2004. Compressed image file formats : JPEG, PNG, GIF, XBM, BMP. Canada: ACM Press
Munir, Rinaldi. 2004. Pengolahan Citra. Bandung Penerbit Informatika
Schneier, Bruce. 1996. Applied Cryptography : Protocols, Algorithms, and Source Code in C. 2nd Edition. John Wiley & Sons, Inc: New Jersey.
Sadikin, Rifki. 2012. Kriptografi Untuk Keamanan Jaringan. Penerbit ANDI: Yogyakarta.
Vijayakumar. Soniya.2011. Image Steganography Based On Polynomial Functions. Journal of Global Research in Computer Science.Volume 2 no 3:13-15.
ANALISIS DAN PERANCANGAN
3.1. Analisis Sistem
Analisis sistem merupakan fase awal pada pengembangan sistem yang bertujuan untuk memahami dan mempelajari masalah yang akan diselesaikan oleh suatu sistem. Dan juga untuk merancang sistem sesuai dengan kebutuhan pengguna (user). Dengan adanya analisis terhadap suatu sistem diharapkan agar suatu sistem atau apilkasi dapat berjalan dengan baik dan sesuai dengan kebutuhan.
3.1.1. Analisis Masalah
Masalah yang akan diselesaikan pada penelitian ini adalah bagaimana cara meningkatkan keamanan dan melindungi suatu data dari pihak ketiga. Dan untuk meningkatkan keamanan suatu data maka diperlukan teknik pengamanan data yaitu dengan teknik kriptografi dan steganografi. Pada penelitian ini algoritma kriptografi yang digunakan adalah algoritma DES (Data Encryption Standard) dan teknik steganogarfi yang digunakan adalah metode LSB(Least Significant Bit) yang akan dimodifikasi.
Gambar 3.1. Diagram Ishikawa
Pada gambar 3.1. menunjukkan permasalahan yang terjadi. Permasalahan tersebut dapat dibagi 4 kategori yaitu manusia(Man), mesin(Machine), materi(Material), dan metode(Method).
3.1.2. Analisis Persyaratan
Analisis persyaratan sistem dikelompokkan ke dalam dua kategori yaitu, analisis persyaratan fungsional dan analisis persyaratan non-fungsional. Persyaratan fungsional berisi persyaratan pokok dari suatu sistem dimana persyaratan tersebut wajib ada atau disediakan dalam sistem tersebut. Sedangkan persyaratan non-fungsional berupa persyaratan tambahan yang dapat menunjang kinerja dari persyaratan fungsional.
3.1.2.1. Persyaratan Fungsional
Persyaratan fungsional dari sistem yang akan dirancang adalah sebagai berikut. 1. Plaintext yang dienkripsi adalah data text berformat *.TXT
2. Citra digital yang digunakan untuk penyisipan pesan adalah file dengan format *.PNG
3. Kunci eksternal 64 bit atau 8 karakter 4. Hasil enkripsi akan berbentuk biner
5. Citra digital yang disisipkan disimpan dalam format *.PNG
3.1.2.2. Persyaratan Non-Fungsional
Adapun persyaratan non-fungsional pada sistem ini adalah sebagai berikut : 1. Performa
Sistem yang dibangun harus dapat menunjukkan hasil dari proses enkripsi dan penyisipan pesan menggunakan algoritma DES (Data Encryption Standard)
dan Modified LSB (Least Significant Bit).Dan pesan tersebut dapat diekstraksi kembali dari citra penampung.
2. Mudah dipelajari dan digunakan
Sistem dibangun sederhana agar mudah digunakan dan dipelajari oleh pengguna (user).
3. Hemat biaya
Perangkat lunak yang dibangun tidak memerlukan peralatan tambahan ataupun perangkat pendukung dalam proses eksekusinya.
4. Dokumentasi
Perangkat lunak yang akan dibangun mampu menyimpan citra digital disisipkan pesan dan dapat menyimpan pesan yang diekstraksi kembali.
5. Manajemen kualitas
Perangkat lunak yang akan dibangun harus memiliki kualitas yang baik yaitu proses enkripsi dan penyisipan pesan relatif cepat. Begitu juga saat proses ekstraksi pesan dan dekripsi
6. Kontrol
Perangkat lunak harus mampu memanajemen proses error yang terjadi pada saat penggunaan.
3.1.3. Analisis Proses
eksternal sebesar 64 bit atau 8 karakter. Dari kunci eksternal akan didapat 16 kunci internal yang berfungsi untuk mengenkripsi dan mendekripsikan pesan, dan masing-masing kunci internal sebesar 56 bit. Pesan yang telah diinputkan akan dienkripsi menggunakan kunci internal dan akan menghasilkan ciphertext dalam bentuk biner. Setelah enkripsi, ciphertext akan disisipkan pada citra asli berformat *.PNG.
Citra hasil penyisipan akan disimpan dalam bentuk citra stego yang berformat *.PNG, dan kemudian akan dikirim kepada penerima pesan. Untuk mengetahui pesan yang terlah disisipkan maka pesan yang sudah disisipkan harus diekstrasikan dan kemudian didekripsi untuk mendapat pesan teks yang utuh.
3.2. Perancangan Sistem
Perancangan sistem merupakan tahapan yang dilakukan setelah tahap analisis sistem.
Adapun perancangan sistem yang dilakukan adalah perancangan flowchart, kemudian dilanjutkan dengan pembuatan diagram Unified Modeling Language (UML) dari sistem.
3.2.1. Perancangan Flowchart Aplikasi
Pada bagian ini akan dijelaskan langkah-langkah pembuatan aplikasi dalam flowchart
sistem kemudian akan dijabarkan dalam bagian-bagian flowchart algoritma.
Flowchart di dalam sistem diantaranya:
3.2.1.1 Flowchart Pembangkitan Kunci
permutasi kembali dengan tabel 2.3. PC-2. Dari hasil permutasi tersebut, kita akan mendapat 16 kunci internal yang masing-masing sebesar 56 bit.
Gambar 3.2. Flowchart Pembangkitan Kunci
3.2.1.2. Flowchart Enkripsi Algoritma DES (Data Encryption Standard)
Pada proses ini, plaintext akan dienkripsi sehingga menjadi ciphertext. Algoritma yang digunakan untuk mengenkripsi pesan adalah algoritma DES. Hal yang pertama yang harus dilakukan adalah membangkitkan kunci internal yang kemudian menginput plaintext. Plaintext yang sudah diinputkan akan diubah menjadi pesan
start
Kunci Eksternal (Biner) Input Kunci
Permutasi PC-1
C0 D0
Left Shift bit
C1D1,C2D2,....C16D16
Permutasi PC-2
K1,....K16
biner, dan kemudian mengalami permutasi dengan tabel 2.4 tabel IP. Dan kemudian pesan dibagi menjadi dua bagian L0R0. Dan kemudian bagian R0 akan ditambah jumlah bitnya dengan menggunakan tabel 2.5. tabel ekspansi. R0 akan di XOR kan dengan Kn (kunci internal) dan menghasilkan B1,….,B8. Setelah mendapatkan Bn, maka proses selanjutnya adalah mensubtitusikan Bn dengan tabel 2.6. tabel S-Box. Dan kemudian dilanjutkan dengan permutasi tabel 2.7. tabel P. Proses terakhir enkripsi ialah dengan melakukan permutasi terakhir pada R16L16 dengan menggukan tabel 2.8. tabel IP-1.
Gambar 3.3. Flowchart Enkripsi
3.2.1.3. Flowchart Penyisipan Modified LSB (Least Significant Bi)
Hasil enkripsi pesan akan disisipkan pada citra digital yang mempunyai 24 bit kedalaman warna. Pada penyisipan pesan, metode yang digunakan adalah Modified LSB (Least Significant Bit). Pesan akan disisipkan pada salah satu warna dari warna RGB (Red, Green, Blue) yaitu warna biru (Blue), pesan akan disisipkan pada bit terendah yang ada pada warna biru (Blue).
Gambar 3.4. Flowchart Penyisipan Pesan
3.2.1.4 Flowchart Ekstrasi Pesan
start
Input Cover Image
Ambil Nilai Biru setiap
pixel
Ubah ke biner
nilai biner biru
Input Ciphertext
Penyisipan dengan LSB
Stego Image
Untuk mengekstrasi pesan, maka pertama yang harus diinput adalah stego image atau citra yang telah disisipkan pesan. Setelah citra stego diinput maka sistem akan membaca nilai setiap pixel citra stego.
Gambar 3.5. Flowchart Ekstrasi Pesan
3.2.1.5. Flowchart Dekripsi DES (Data Encypstion Standard)
Untuk dekripsi pesan dengan algoritma DES (Data Encryption Standard), hampir sama dengan alur untuk mengenkripsi pesan. Proses dekripsi pesan DES merupakan kebalikan dari proses enkripsi pesan, dengan menggunakan kunci eksternal yang sama. Tetapi yang berbeda ialah blok masukkan proses, kalau pada proses enkripsi blok masukkan adalah L0R0 maka untuk dekripsi blok masukkan awal adalah R16L16.
Start
Input Stego Image
Ambil Nilai Biru setiap
pixel
Ubah ke biner
Ciphertext
Gambar 3.6. Flowchart Dekripsi Pesan Start
Input Ciphertext (Biner)
Ubah ke Ascii Permutasi
dengan IP
Ln Rn
Ekspansi Rn
dengan tabel E
E(Rn-1)
N=16
Kn XOR E(Rn-1)
B1,...,B8
Subtitusi B1...8
dengan S-Box Sn
Permutasi Sn
dengan tabel P
F(Kn + (Rn-1))
R1= L0 + F
(Kn + (Rn-1))
L0 R0
L0 R0
dipermutasikan dengan IP-1
Plaintext (Biner)
3.2.2. Perancangan Unified Modeling Language (UML)
Model diagram UML yang digunakan pada penelitian ini antara lain Use-case diagram, Sequence diagram, dan Activity diagram.
3.2.2.1 Use Case Diagram
Use Case berfungsi untuk menggambarkan langkah-langkah yang dapat dikerjakan oleh pengguna (user). Use case juga berfungsi untuk melihat interaksi pengguna dan sistem.
Gambar 3.7. Use Case Diagram Sistem
Pada gambar 3.7, pengguna memiliki peran sebagai pengirim dan penerima pesan. Untuk melakukan enkripsi pesan, pengirim terlebih dahulu membangkitkan kunci internal dengan cara menginputkan kunci eksternal. Kunci internal digunakan untuk mengenkripsi pesan plaintext. Ciphertext sebagai hasil enkripsi akan disisipkan pada citra asli (cover image). Citra stego merupakan citra hasil dari penyisipan
ciphertext ke citra asli (cover image).
Actor
SYSTEM
Enkripsi Penyisipan Pesan
Ekstrasi Pesan Dekripsi Pesan
<<D epends
On>>
<<Extends>>
<<Extends>> <<Extends>>
<< Exten
ds>>
Untuk melakukan dekripsi pesan, maka pengguna akan memerima pesan dalam bentuk citra untuk diekstrasi menjadi ciphertext. Kemudian ciphertext akan didekirpsikan menggunakan kunci eksternal yang sama.
Setiap use case diagram akan dijelaskan dengan dokumentasi naratif. Dokumentasi naratif pada proses pembangkitan kunci yang terdapat dalam use case
diagram dilihat pada Tabel 3.1
Tabel 3.1. Dokumentasi Naratif Use Case Bangkitkan kunci
Nama use case Pembangkitan Kunci
Aktor Pengguna
Deskripsi Use case berfungsi untuk membangkitkan kunci internal
Pre-condition -
Typical course of event
Aksi actor Respon sistem
Langkah 1: Pengguna
menginputkan kunci eksternal sebesar 64 bit atau 8 karakter
Langkah 2 : Pengguna
mengeksekusi tombol generate Langkah 3: Sistem
membangkitkan kunci Internal.
Langkah 4 : sistem
menampilkan kunci Internal
Alternate course - -
Post condition Kunci internal berhasil dibangkitkan.
Tabel 3.2 Dokumentasi Naratif Use Case Enkripsi Nama use case Enkripsi
Aktor Pengguna
Deskripsi Use case mendekripsikan proses enkripsi plaintext.
Pre-condition Kunci internal telah dibangkitkan
Typical course of event
Aksi actor Respon sistem
Langkah 1: Menginput
plaintext dengan menekan
button Cari
Langkah 3: Melakukan proses enkripsi dengan menekan button Enkripsi
Langkah 2: Sistem membaca inputan
plaintext.
Langkah 4: Sistem mengenkripsi
plaintext dan menghasilkan
ciphertext
Langkah 5: Sistem menampilkan
ciphertext.
Alternate course - -
Post condition Diperoleh ciphertext hasil enkripsi.
Dokumentasi naratif pada proses penyisipan ciphertext yang terdapat dalam
use case diagram dilihat pada Tabel 3.3
Tabel 3.3 Dokumentasi Naratif Use Case Penyisipan Nama use case Penyisipan
Aktor Pengguna
Deskripsi Use case mendekripsikan proses penyisipan ciphertext.
Typical course of event
Aksi actor Respon sistem
Langkah 1 : Menginputkan
citra asli
Langkah 3: Melakukan proses penyisipan dengan menekan button Penyisipan
Langkah 2: Sistem membaca nilai warna biru setiap pixel dan mengubahnya ke biner
Langkah 4: Sistem menyisipkan
ciphertext biner ke bit paling rendah pada warna biru.
Langkah 5: Sistem menyimpan citra stego.
Alternate course
Post condition Diperoleh citrastego yang telah disisipkan ciphertext.
Dokumentasi naratif pada proses ekstraksi ciphertext yang terdapat dalam use case diagram dilihat pada Tabel 3.4
Tabel 3.4 Dokumentasi Naratif Use Case Ekstraksi Nama use case Ekstraksi
Aktor Pengguna
Deskripsi Use case mendekripsikan proses ekstraksi ciphertext.
Pre-condition Citra stego telah disisipkan ciphertext.
Typical course of event
Aksi actor Respon sistem
Langkah 1 : Menginputkan
Langkah 3: Melakukan proses ekstraksi dengan
menekan button Ekstraksi Langkah 4: Sistem mengekstraksi
ciphertext di bit paling rendah dari warna biru
Langkah 5: Sistem menampilkan
ciphertext
Alternate course - -
Post condition Diperoleh ciphertext yang akan didekripsi
Dokumentasi naratif pada proses dekripsi ciphertext yang terdapat dalam use case diagram dilihat pada Tabel 3.5
Tabel 3.5 Dokumentasi Naratif Use Case Dekripsi Nama use case Dekripsi
Aktor Pengguna
Deskripsi Use case mendekripsikan proses dekripsi ciphertext.
Pre-condition Ciphertext telah diekstraksi dari citra stego.
Typical course of event
Aksi actor Respon sistem
Langkah 1 : Menginputkan kunci eksternal yang sama dengan kunci eksternal enkripsi
Langkah 5: Melakukan dekripsi dengan menekan
button Dekripsi.
Langkah 3 : sistem menampilkan kunci internal
Langkah 4 : sistem menampilkan
ciphertext
Langkah 6: Sistem mendekripsi
ciphertext menjadi plaintext.
Alternate course - -
Post condition Diperoleh plaintext hasil dekripsi
3.2.2.2. Sequence Diagram
Sequence diagram digunakan untuk menggambarkan skenario atau rangkaian
langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output
tertentu. Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Garis berpanah penuh menunjukan input yang dilakukan pengguna terhadap sistem, sedangkan garis putus-putus menunjukan output yang dihasilkan oleh sistem.
Activation bar menunjukkan periode waktu proses diilakukan, sebuah activation bar
dimiliki oleh setiap input dan output yang terjadi. Sequence diagram pada sistem ini terbagi dua: gambar 3.8 merupakan sequence diagram enkripsi dan penyisipan
plaintext, sedangkan gambar 3.9 merupakan sequence diagram ekstraksi dan dekripsi
Pembangkitan kunci Enkripsi Penyisipan
user
input eksternal key Tampilkan eksternal key Bangkitkan internal key
Tampilkan internal Key
input plaintext tampilkan plaintext
enkripsi plaintext tampilkan ciphertext
Import citra tampilkan citra
penyisipan pesan tampilkan stego image
simpan stego image stego image.bmp
Pembangkitan kunci ekstrasi Dekripsi
user
input eksternal key
Tampilkan eksternal key
Bangkitkan internal key
Tampilkan internal Key
import stego image
tampilkan stego image
ektrasi ciphertext
tampilkan ciphertext
Dekripsi ciphertext
tampilkan plaintext
3.2.2.3. Activity Diagram
Activity diagram menggambarkan alir aktivitas dalam sistem yang dirancang,
bagaimana awal alir sistem, decision yang mungkin terjadi, dan bagaimana sistem berakhir. Nodes bulat berwarna hitam menunjukkan awal proses sedangkan nodes
bulat berwarna hitam ditengah menunjukkan akhir proses. Activity diagram pada sistem ini terbagi dua: gambar 3.10 merupakan activity diagram enkripsi dan penyisipan plaintext, sedangkan gambar 3.11 merupakan activity diagram ekstraksi dan dekripsi ciphertext.
Gambar 3.9. Activity diagram enkripsi dan penyisipan
pengguna sistem
input kunci tampilkan kunci
bangkitkan kunci internal tampilkan kunci internal
input plaintext tampilkan plaintext
enkripsi plaintext
tampilkan ciphertext import citra
tampilkan file citra sisipkan pesan
proses penyisipan pesan
tampilkan stego image simpan stego image
meyimpan stego image .png
Gambar 3.10. Activity diagram ekstraksi dan dekripsi
3.2.3. Perancangan User Interface
Adapun perancangan User Interface yang dilakukan yaitu perancangan form home, perancangan form enkripsi dan perancangan form dekripsi.
3.2.3.1 Perancangan Interface Form Home
Pada saat aplikasi dijalankan, form yang pertama kali dilihat oleh user adalah form home. Adapun rancangan interface form home dapat dilihat pada gambar 3.11.
pengguna sistem
input kunci tampilkan kunci
bangkitkan kunci internal tampilkan kunci internal
tampilkan plaintext dekripsi ciphertext tampilkan ciphertext
ekstrasi pesan proses ekstrasi pesan tampilkan stego image input stego image
Gambar 3.12. Tampilan Form Home
Keterangan:
1. Tab control yang berfungsi untuk menampilkan tab page home.
2. Tab control yang berfungsi untuk menampilkan tab page enkripsi.
3. Tab control yang berfungsi untuk menampilkan tab page dekripsi.
4. Label yang berisi judul skripsi penulis. 5. Label yang berisi nama penulis.
6. Label yang berisi logo.
3.2.3.2 Perancangan Interface Form Enkripsi
Pada form enkripsi, user dapat menginputkan kunci eksternal, plaintext yang akan di enkripsikan dan citra yang akan disisipkan setelah pesan selesai dienkripsi. Adapun rancangan interface form enkripsi dapat dillihat pada gambar 3.12
Keterangan
1. Button yang berfungsi untuk mengambil atau mencari file citra
2. Button yang berfungsi untuk mereset semua yang ada di form enkripsi
3. Picturebox yang berfungsi untuk menampilkan citra yang akan disisipkan
4. Textbox yang berfungsi untuk menampilkan ekternal key
5. Button yang berfungsi untuk membangkitkan kunci
6. Richtextbox yang berfungsi untuk menampilkan kunci internal
7. Button yang berfungsi untuk mencari atau mengambil file text 8. Richtextbox yang berfungsi menampilkan pesan atau plaintext
9. Button yang berfungsi mengenkripsi pesan atau plaintext
10. Richtextbox yang berfungsi untuk menampilkan ciphertext dalam bentuk biner 11. Button yang berfunsi untuk menyisipkan pesan cipher ke dalam citra
12. Picturebox yang berfungsi untuk menampilkan citra yang telah disispkan pesan
3.2.3.3 Perancangan Interface Form Dekripsi
Pada form dekripsi, user dapat menginputkan kunci eksternal, citra yang sudah disisipkan pesan,mengekstrasikan pesan dan mendekripsikan pesan. Adapun rancangan interface form enkripsi dapat dillihat pada gambar 3.13
Keterangan :
1. Textbox yang berfungsi untuk menampilkan ekternal key
2. Button yang berfungsi untuk membangkitkan kunci
3. Richtextbox yang berfungsi untuk menampilkan kunci internal
4. Button yang berfungsi untuk mencari citra
5. Picturebox yang berfungsi untuk menampilkan citra 6. Button yang berfungsi untuk mengambil pesan dari citra
7. Button yang berfungsi untuk mereset semua yang ada dalam form dekripsi
8. Richtextbox yang berfungsi untuk menampilkan cipher bit
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Sistem
Setelah melakukan analisis dan perancangan sistem, tahap selanjutnya adalah implementasi. Sistem ini menggunakan dua bahasa pemrograman yaitu bahasa pemrograman Python dan bahasa pemrograman C# . Intergrated Development
Environment (IDE) yang digunakan adalah Wing IDE untuk bahasa pemrograman
python dan Microsoft Visual Studio Ultimate 2012 untuk C#.
Spesifikasi perangkat keras yang digunakan untuk pembangunan dan pengujian sistem ini adalah sebagai berikut:
Tabel 4.1 Spesifikasi Kebutuhan Perangkat Keras untuk Implementasi Spesifikasi Komputer
CPU : Intel Core i3 RAM : 6 Giga Byte Hard Disk : 600 Giga Byte Monitor : 14”
Sistem Operasi : Windows 7 Home Premium
4.1.1 Form Home
Gambar 4.1 Form Home
4.1.2 Form Enkripsi
Pada form enkripsi, user dapat menginputkan kunci eksternal, citra, dan plaintext. Pertama user harus menginputkan citra yang akan disisipkan pesan. Setelah citra berhasil diinputkan kemudian user harus menginputkan kunci eksternal untuk dibangkitkan. Setelah kunci internal didapat dari hasil pembangkitan kunci maka user dapat menginputkan plaintext. Plaintext akan dienkripsi dengan algoritma DES (Data Encryption Staqndard), maka akan dihasilkan pesan cipher dalam bentuk bit. Kemudian pesan yang berbentuk cipher bit tersebut akan disisipkan pada citra yang telah diinputkan tadi. Gambar 4.2 merupakan tampilan dari form enkripsi.
4.1.3 Form Dekripsi
Pada form dekripsi ini, user dapat mengektrasi pesan dari citra yang telah disisipkan pesan dan mendekripsikan pesan cipher bit menjadi plaintext atau pesan asli. Yang dapat dilakukan user pada form dekripsi adalah user harus menginputkan kunci eksternal yang sama dengan kunci eksternal pada proses enkripsi. Kemudian user menginputkan citra yang telah disisipkan pesan dan mengektrasikan pesan tersebut menjadi pesan cipher bit. Setelah pesan cipher bit didapat maka user dapat mendekripsikan pesan tersebut menjadi plaintext atau pesan yang asli. Pada gambar 4.3 adalah tamipilan form dekripsi.
Gambar 4.3 Form Dekripsi
4.2 Pengujian Sistem
4.2.1 Proses Pembangkitan Kunci Internal
Pada proses pembangkitan kunci internal, user harus menginputkan kunci eksternal sebesar 64 bit atau 8 karakter. Kunci eksternal akan menghasilkan 16 buah kunci internal dan masing-masing kunci internal memiliki ukuran yang sama yaitu 56 bit. Kunci eksternal yang akan digunakan adalah ”clairine”. Kunci eksternal harus diubah ke dalam bentuk biner. Berikut proses pembangkitan kunci internal.
Kunci eksternal : clairine
Ubah kunci eksternal kedalam benttuk biner
clairine = 01100011 01101100 01100001 01101001 01110010 01101001 01101110 01100101
a. Permutasi kunci
Untuk mendapat kunci K, maka kunci eksternal yang dalam bentuk biner harus mengalami permutasi dengan menggunakan tabel 2.1 permuted choice-1. Cara menggunakan tabel 2.1 permuted choice adalah dengan cara mengganti posisi bit. Misalkan kolom 1 baris 1 pada tabel 2.1 permuted choice-1 adalah 57, artinya bit ke 57 dari kunci eksternal akan menjadi bit pertama pada kunci K. Pada tahap ini bit yang kelipatan 8 tidak akan digunakan, seperti bit ke 8,16,24,32,40,48,56 dan 64. Kunci eksternal
01100011 01101100 01100001 01101001 01110010 01101001 01101110 01100101 K
00000000 11111111 11111111 00010101 00011100 00100110 10100000
b. Pembagian Kunci
Setelah mendapat kunci K sebesar 56 bit, maka kunci K akan dibagi dua untuk menghasilkan C0 dan D0
C0 = 0000 0000 1111 1111 1111 1111 0001 D0 = 0101 0001 1100 0010 0110 1010 0000
c. Pembuatan 16 Kunci Internal
Pada tahap ini C0 dan D0 masing-masing bit pertamanya akan digeser dengan
Tabel 4.2 Hasil Pergeseran bit Putaran Jumlah pergeseran bit Cn Dn
0 0 0000000011111111111111110001
0101000111000010011010100000
1 1 0000000111111111111111100010
1010001110000100110101000000
2 1 0000001111111111111111000100
0100011100001001101010000001
3 2 0000111111111111111100010000
0001110000100110101000000101
4 2 0011111111111111110001000000
0111000010011010100000010100
5 2 1111111111111111000100000000
1100001001101010000001010001
6 2 1111111111111100010000000011
0000100110101000000101000111
7 2 1111111111110001000000001111
0010011010100000010100011100
8 2 1111111111000100000000111111
1001101010000001010001110000
9 1 1111111110001000000001111111
0011010100000010100011100001
10 2 1111111000100000000111111111
1101010000001010001110000100
11 2 1111100010000000011111111111
0101000000101000111000010011
12 2 1110001000000001111111111111
0100000010100011100001001101
13 2 1000100000000111111111111111
0000001010001110000100110101
14 2 0010000000011111111111111110
15 2 1000000001111111111111111000 0010100011100001001101010000
16 1 0000000011111111111111110001
0101000111000010011010100000
d. Permutasi Kunci Internal
Pada tahap ini Cn dan Dn akan digabungkan dan akan dipermutasikan kembali menggunakan tabel 2.3 Permuted choice-2 dan akan menghasilkan 16 kunci K+ atau kunci internal.
Tabel 4.3 Kunci K+ atau Kunci Internal 16 Kunci K+n
K+1 = '111000001011111001101110001100000101000000111110',
K+2 = '111000001011011011110110100010100100110110000100',
K+3 = '111101001101011001110110000010000110001110010001',
K+4 = '111001101101001101110010111100110100000000000001', K+5 = '101011101101001101110111110000100000001100001010',
K+6 = '101011110101001101011011100101000011001100001100',
K+7 = '001011110101001111111001011100000001001011100000',
K+8 = '100111110101100111011001010100001010100000101011',
K+9 = '000111110100100111011011001000001100010110001101', K+10 = '001111110110100110011101100010100001010010000011',
K+11 = '000111110010110110001101110011100100001100100001',
K+12 = '010110110010110010111101000100100100101101001000',
K+13 = '110111011010110010101100110100001001000100010000',
K+14 = '110100101010111010101110110000010010011000101000',
K+15 = '111110001011111000100110011110000011101000001000',
4.2.2 Proses Enkripsi
Pada proses enkrispi, user harus menginputkan plaintext atau pesan. Pesan yang telah diinputkan akan diubah kedalam bentuk pesan biner M, dan proses enkripsi akan diulang sebanyak 16 kali sehingga akan didapat R16L16 yang akan menjadi cipher bit. Plaintext = toshibao
M = 01110100 01101111 01110011 01101000 01101001 01100010 01100001 01101111
Sebelum pesan M dienkripsi, pesan M akan dipermutasikan menggunakan tabel 2.4 initial permutation. Cara menggunakan tabel 2.4 initial permtation yaitu dengan cara mengganti posisi bit pada pesan M. Misalkan kolom 1 baris 1 pada tabel 2.4 initial permutation adalah 58, artinya bit ke 58 pada pesan M akan menjadi bit pertama pada pesan IP.
IP = 11111111 00000101 10000011 11010110 00000000 11111111 10011010 10100110
Pesan IP kemudian akan dibagi dua menjadi L0 = 11111111 00000101 10000011 11010110 R0 = 00000000 11111111 10011010 10100110
Lakukan proses iterasi sebanyak 16 kali dengan :
Ln = Rn – 1
Rn = Ln – 1 + f(Rn-1, K+n)
Diman n = 1. Untuk fungsi f , fungsi f akan dihasilkan dari proses perhitungan 2 blok bit yaitu Rn-1 dan K+n.
Untuk proses enkripsi selanjutnya, blok Rn-1 akan diubah dari 32 bit menjadi 48 bit dengan menggunkan tabel 2.5 Tabel ekspansi dimana n=1, cara menggunakan tabel ekspansi adalah dengan mengganti posisi bit dan akan mengulangi beberapa bagian bit.
R0 = 00000000 11111111 10011010 10100110
Selanjutnya E(R0) akan di XOR kan dengan K+1.
K+1 = 11100000 10111110 01101110 00110000 01010000 00111110 E(R0) = 00000000 00010111 11111111 11001111 01010101 00001100
f(K+1,E(R0)) = 111000 001010 100110 010001 111111 110000 010100 110010
Setelah mendapat f , selanjutnya f akan dibagi 8 blok bit masing-masing blok bit berisi 6 bit. Dimana setiap blok bit akan disubtitusikan dengan tabel 2.6 Tabel Substitution Box DES menurut urutan blok bit, misalkan blok bit pertama akan disubstitusikan dengan S1 dan seterusnya sampai blok ke 8.
f = S1(111000) S2(001010) S3(100110) S4(010001) S5(111111) S6(110000)
S7(010100) S8(110010)
Cara menggunakan tabel 2.6 Tabel Substitution Box DES adalah bit pertama dan bit terakhir pada blok bit akan digabungkan dan akan menjadi penunjuk baris sedangkan bit yang berada pada tengah blok akan menjadi penunjuk posisi kolom.
S1(111000) bit pertama = 1, bit terakhir = 0, bit tengah = 1100. Jadi baris 10 diubah ke desimal menjadi baris 2, kolom 1100 diubah ke desimal menjadi kolom 12. Nilai yang ada pada baris 2 kolom 12 adalah 3 jika dibinerkan adalah 0011.
S2(001010) bit pertama = , bit terakhir = 0, bit tengah = 0101. Jadi baris 00 diubah ke desimal menjadi baris 0, kolom 0101 diubah ke desimal menjadi kolom 5. Nilai yang ada pada baris 0 kolom 5 adalah 11 jika dibinerkan adalah 1011.
S3(100110) bit pertama = 1, bit terakhir = 0, bit tengah = 0011. Jadi baris 10 diubah ke desimal menjadi baris 2, kolom 0011 diubah ke desimal menjadi kolom 3. Nilai
yang ada pada baris 2 kolom 3 adalah 9 jika dibinerkan adalah 1001.
S4(010001) bit pertama = 0, bit terakhir = 1, bit tengah = 1000. Jadi baris 01 diubah ke desimal menjadi baris 1, kolom 1000 diubah ke desimal menjadi kolom 8. Nilai yang ada pada baris 1 kolom 8 adalah 4 jika dibinerkan adalah 0100.
S6(110000) bit pertama = 1, bit terakhir = 0, bit tengah = 1000. Jadi baris 10 diubah ke desimal menjadi baris 2, kolom 1000 diubah ke desimal menjadi kolom 8. Nilai yang ada pada baris 2 kolom 8 adalah 7 jika dibinerkan adalah 0111.
S7(010100) bit pertama = 0, bit terakhir = 0, bit tengah = 1010. Jadi baris 00 diubah ke desimal menjadi baris 0, kolom 1010 diubah ke desimal menjadi kolom 10. Nilai yang ada pada baris 0 kolom 10 adalah 9 jika dibinerkan adalah 1001.
S8(110010) bit pertama = 1, bit terakhir = 0, bit tengah = 1001. Jadi baris 10 diubah ke desimal menjadi baris 2, kolom 1001 diubah ke desimal menjadi kolom 9. Nilai yang ada pada baris 2 kolom 9 adalah 6 jika dibinerkan adalah 0110.
Nilai f setelah disubtitusikan dengan tabel 2.6 tabel Substitution Box DES adalah
f = 0011 1011 1001 0100 0011 0111 1001 0110
Setelah mendapat nilai f, maka f akan dipermutasikan dengan tabel 2.7 Tabel Permutasi. Cara penggunaan tabel 2.7 tabel permutasi adalah mengganti posisi bit f, misalkan pada kolom 1 baris 1 menunjukkan 16, maka bit ke 16 dari f akan menjadi bit pertama setelah dipermutasikan.
f = 0110 0110 0010 1010 0111 0011 1010 1011
Setelah mendapat nilai f , maka nilai R1 akan didapat. Sehingga
R1 = L0 + f (R0 , K1 )
R1 = 1111 1111 0000 0101 1000 0011 1101 0110 + 0110 0110 0010 1010 0111 0011
1010 1011
R1 = 1001 1001 0010 1111 1111 0000 0111 1101
Dari proses enkripsi ini akan didapat nilai R1L1, dimana nilai L1 sama dengan nilai R0.
R1 = 1001 1001 0010 1111 1111 0000 0111 1101
Proses enkripsi DES akan terus berulang sebanyak 16 kali dengan menggunkan 16 kunci internal dimana nilai n akan dimulai dari 1 (n = 1). Berikut adalah hasil dari proses enkripsi yang akan ditunjukkan pada tabel 4.4 Hasil Proses Iterasi Enkripsi.
Tabel 4.4 Hasil Proses Iterasi Enkripsi
n Rn Ln
0 00000000111111111001101010100110 11111111000001011000001111010110
1 10011001001011111111000001111101 00000000111111111001101010100110 2 00011101100010001001010001100011 10011001001011111111000001111101
3 11010010010011010100111101101110 00011101100010001001010001100011
4 01100000000001000100000110010010 11010010010011010100111101101110
5 11010010001010100111100110111010 01100000000001000100000110010010
6 11000001011010111110110110001100 11010010001010100111100110111010 7 01110001000100011100001101100110 11000001011010111110110110001100
8 10100001000001010110010100100101 01110001000100011100001101100110
9 00000111101000011111010001011101 10100001000001010110010100100101
10 00100100011000101101101011101111 00000111101000011111010001011101 11 01001110000100110011100111010000 00100100011000101101101011101111
12 00111001100100101001001110100010 01001110000100110011100111010000
13 00101111111100011100011001010111 00111001100100101001001110100010
14 01001101001001101111000000010011 00101111111100011100011001010111
15 10101101010110111110000011000001 01001101001001101111000000010011 16 00111111101101100000111110010010 10101101010110111110000011000001
Langkah selanjutnya adalah menggabungkan bit-bit R16 dan L16 menjadi satu.
R16 L16 = 00111111 10110110 00001111 10010010 10101101 01011011 11100000 11000001
Langkah terakhir dari proses enkripsi adalah R16L16 akan mengalami permutasi kembali dengan menggunakan tabel 2.8 tabel Initial Permutation -1.
C = 11100110 01110101 11010100 11100100 01110001 11011000 00101010 10011011
Jadi C adalah hasil dari proses enkripsi pesan dalam bentuk biner dengan menggunakan algoritma DES (Data Encryption Standard).
4.2.3 Proses Deskripsi
Untuk proses dekripsi pesan, inputannya adalah kebalikan dari input proses enkripsi pesan. Dimana input awalnya adalah pesan C. Untuk langah awal proses dekripsinya pesan C juga akan dibagi dua tetapi untuk blok awalannya adalah R16 dan L16. Dan untuk kunci dekripsinya juga adalah kunci ekternal yang sama dengan kunci eksternal untuk proses enkripsi. Pada proses dekripsi nilai n sama dengan 16 (n = 16). Jadi kunci internal yang digunakan juga akan dimulai dari K+16. Semua langkah-langkah
proses dekripsi pesan sama dengan langkah-langkah proses enkripsi.
C = 11100110 01110101 11010100 11100100 01110001 11011000 00101010 10011011
Permutasikan pesan C menggunakan tabel 2.4 tabel Initial Permutation.
C = 11100110 01110101 11010100 11100100 01110001 11011000 00101010 10011011
IP = 00111111 10110110 00001111 10010010 10101101 01011011 11100000 11000001
Pesan IP akan dibagi dua masing- masing berukuran 32 bit
L0 = 00111111 10110110 00001111 10010010
R0 = 10101101 01011011 11100000 11000001
c. Iterasi
Ln = Rn – 1
Rn = Ln – 1 + f(Rn-1, K+n)
Diman n = 1. Untuk fungsi f , fungsi f akan dihasilkan dari proses perhitungan 2 blok bit yaitu Rn-1 dan K+n melalui 4 tahapan proses yaitu :
Proses ekspansi akan menggunakan tabel 2.5 tabel ekspansi. R0 = 10101101 01011011 11100000 11000001
E(R0) = 11010101 10101010 11110111 11110000 00010110 00000011
XOR Bit
K+16 = '111100011011111000100110000110101000010000100101'
E(R0) = 11010101 10101010 11110111 11110000 00010110 00000011
f(K+16,E(R0)) = 00100100 00010100 11010001 11101010 10010010 00100110
Setelah mendapat f , selanjutnya f akan dibagi 8 blok bit masing-masing blok bit berisi 6 bit. Dimana setiap blok bit akan disubtitusikan dengan tabel 2.6 Tabel Substitution Box DES menurut urutan blok bit, misalkan blok bit pertama akan disubstitusikan dengan S1 dan seterusnya sampai blok ke 8.
f = S1(001001) S2(000001) S3(010011) S4(010001) S5(111010) S6(101001) S7(001000) S8(100110)
Setelah disubtitusikan maka nilai f adalah
f = 1110 0011 1000 0100 0011 1001 1111 0001
1. Proses Permutasi
Setelah mendapat nilai f, maka f akan dipermutasikan dengan tabel 2.7 Tabel Permutasi. Maka nilai f setelah dipermutasikan adalah
f = 0111 0010 1001 0000 1111 1111 1000 0001
Setelah mendapat nilai f , maka nilai R16 akan didapat. Sehingga
R16 = 10101101 01011011 11100000 11000001 + 01110010 1001000011111111 10000001
R16 = 01001101 00100110 11110000 00010011
Dari proses iterasi dekripsi ini maka didapat nilai R16 dan L16
R16 = 01001101 00100110 11110000 00010011
L16 = 10101101 01011011 11100000 11000001
Berikut adalah hasil dari proses iterasi dekripsi yang akan ditunjukkan pada tabel 4.5 Hasil Proses Iterasi Dekripsi.
Tabel 4.5 Hasil Iterasi Dekripsi
n Rn Ln
16 01001101001001101111000000010011 10101101010110111110000011000001
15 00101111111100011100011001010111 01001101001001101111000000010011
14 00111001100100101001001110100010 00101111111100011100011001010111 13 01001110000100110011100111010000 00111001100100101001001110100010
12 00100100011000101101101011101111 01001110000100110011100111010000
11 00000111101000011111010001011101 00100100011000101101101011101111
10 10100001000001010110010100100101 00000111101000011111010001011101
9 01110001000100011100001101100110 10100001000001010110010100100101 8 11000001011010111110110110001100 01110001000100011100001101100110
7 11010010001010100111100110111010 11000001011010111110110110001100
6 01100000000001000100000110010010 11010010001010100111100110111010
5 11010010010011010100111101101110 01100000000001000100000110010010
4 00011101100010001001010001100011 11010010010011010100111101101110 3 10011001001011111111000001111101 00011101100010001001010001100011
2 00000000111111111001101010100110 10011001001011111111000001111101
Langkah selanjutnya adalah menggabungkan bit-bit R1 dan L1 menjadi satu.
R1L1 = 11111111 00000101 10000011 11010110 00000000 11111111 10011010 10100110
Langkah terakhir dari proses enkripsi adalah R1L1 akan mengalami permutasi kembali dengan menggunakan tabel 2.8 tabel Initial Permutation -1.
R1L1 = 11111111 00000101 10000011 11010110 00000000 11111111 10011010 10100110
M = 01110100 01101111 01110011 01101000 01101001 01100010 01100001 01101111
Jadi M adalah hasil dari proses Dekripsi pesan dalam bentuk biner dengan menggunakan algoritma DES (Data Encryption Standard). Dan menghasilkan
plaintext= ”toshibao”
4.2.4 Proses Penyisipan
Pada proses penyisipan pesan, pesan akan disisipkan pada salah satu warna dari citra digital yang telah diinput. Warna yang disisipkan pesan adalah warna biru (blue). Pesan akan disisipkan pada bit terendah dari warna biru. Misalkan kita mempunyai nilai 3 buah pixel dengan format RGB yang telah dirubah ke bentuk biner untuk meyisipkan pesan “010” pada salah satu warna RGB dalam hal ini warna yang akan disisipkan pesan adalah warna Biru (Blue)
ͳͲͲͳͲͳͲͳ ͲͲͲͲͳͳͲͳ ͳͳͲͲͳͲͲͳ ͳͲͲͳͲͳͳͲ ͲͲͲͲͳͳͳͳ ͳͳͲͲͳͲͳͳ ͳͲͲͳͳͳͳͳ ͲͲͲͳͲͲͲͲ ͳͳͲͲͳͲͳͳ
Bit yang disisipkan pesan adalah bit terendah dari warna biru(Blue) yaitu posisi matriks (1,3), (2,3), (3,3) dan menghsailkan perubahan
Dikarenakan bit yang mengalami perubahan hanya satu warna yaitu warna biru(Blue) maka dibutuhkan cover image yang mempunyai ukuran yang besar dan pesan yang disisipkan akan terbatas.
4.3 Hasil Pengujian
4.3.1 Pengujian Enkripsi Plaintext dan Dekripsi Ciphertext
Setelah mendapat kunci internal, kemudian pesan harus diinputkan untuk dilakukan proses enkripsi. Pesan yang akan digunakan adalah file berformat *.txt. Panjang pesan tidak ditentukan. Berikut beberapa pesan yang akan dienkrispi dapat dilihat pada tabel 4.6.
Tabel 4.6 Hasil Enkripsi Pesan
Kunci Plaintext (*.txt)
0100010000110100
Untuk proses pendekripsian pesan, cipher bit yang telah didapat akan didekripsikan dengan kunci yang sama pada saat proses enkripsi pesan. Tabel 4.7 akan menunjukkan
Tabel 4.7 Hasil Dekripsi Pesan
Kunci Cipher Bit Plaintext Waktu
111000110000000000011100101011 111000100111111011111110011011 011011010100100101111100100110 010111100010100100110010011001 101101101101110101000000111010 010010000101010010110010100001 001100110110000011110100111001 110110000110111100111001101110 110101001001011000110111000100 010100101000010100100010111001 110110010100011010101000010011 001101011111110011001101011111 1011010111
4.3.2 Perbandingan waktu Enkripsi dan Dekripsi
Pada pengujian ini, akan dilakukan terhadap waktu proses enkripsi dan proses dekripsi dengan jumlah panjang karakter pesan.
Tabel 4.8 Perbandingan Waktu Enkripsi dan Dekripsi
Panjang Plaintext (karakter)
Panjang cipher bit
Waktu enkripsi (ms) Waktu Dekripsi (ms)
27 236 92 365
32 256 110 518
80 640 117 902
Gambar 4.4 Grafik Perbandingan Waktu Enkripsi dan Dekripsi
Dari beberapa pengujian terhadap dekripsi pesan, untuk mendekripsikan pesan dibutuhkan waktu yang sedikit lama dibandingkan dengan proses enkripsi pesan.
4.3.3 Pengujian Penyisipan dan Ekstrasi Pesan
Setelah proses enkripsi pesan selesai, maka cipher bit akan disisipkan pada citra yang telah diinputkan dan berformat *.png. Cipher bit akan disisipkan pada salah warna dari setiap pixel, yaitu warna biru (blue). Cipher bit disisipkan pada bit terendah dari warna biru. Berikut cover image yang akan disisipkan pesan dan dapat dilihat pada tabel 4.9.
0 100 200 300 400 500 600 700 800 900 1000
27 karakter 32 karakter 80 karakter
w
a
k
tu
(
m
s)
panjang pesan (karakter)
enkripsi
Nama file :
FASILKOMTI.png Dimensions : 1063 x 1063 Ukuran : 524 kb
Nama file :
PaddedImage3.png
Dimensions : 1063 x 1063 Ukuran : 543 kb
Dari beberapa pengujian dapat dilihat bahwa jumlah karakter pada setiap pesan akan mempengaruhi waktu untuk mengenkrispi suatu pesan. Sedangkan untuk citra asli dan citra stego yang telah disisipkan cipher bit terlihat tidak ada perbedaan secara kasat mata, dimensi citra sebelum dan setelah disisipkan pesan juga tidak berubah walaupun ukuran citra sebelum dan setelah disisipkan pesan sedikit berbeda namun tidak telalu jauh perbedaan ukuran citranya. Dan semakin banyak jumlah pesan yang disisipkan maka semakin lama juga waktu penyisipan pesan. Sedangkan untuk proses ekstrasi pesan dilakukan sebelum proses dekripsi pesan dilakukan. Lama waktu ekstrasi juga dapat dipengaruhi oleh panjang cipher bit yang telah disisipkan pada citra asli.
Tabel 4.10 Proses Ekstrasi Pesan
Citra Stego Cipher Bit Waktu
Pada proses ekstrasi pesan, waktu yang dibutuhkan untuk ekstrasi pesan hanya sedikit dibandingkan dengan proses penyisipan pesan yang membutuhkan waktu sedikit lama. Kemudian Pada gambar 4.5 akan menunjukkan grafik lama waktu penyisipan pesan dan ekstrasi pesan.
Gambar 4.5 Grafik Perbandingan Waktu Penyisipan dan Ekstrasi
Pada gambar 4.5 menunjukkan bahwa waktu yang dibutuhkan untuk proses penyisipan pesan lebih lama dibandingkan dengan proses ekstrasi pesan dikarenakan bit-bit pada proses penyisipan mengalami perubahan sehingga citra kembali disusun menjadi satu citra baru.
0 1000 2000 3000 4000 5000
236 256 640
w
a
k
tu
(
m
s)
panjang cipher bit
ekstrasi
BAB V
KESIMPULAN DAN SARAN
5.1 KESIMPULAN
Berdasarkan pembahasan dan hasil dari penelitian, maka diperoleh beberapa kesimpulan sebagai berikut:
1. Implementasi Modified LSB (Least Significant Bit) dan Algoritma DES (Data
Encrypstion Standard) dapat digunakan untuk mengamankan data berupa teks. 2. Semakin panjang pesan yang akan dienkripsi maka semakin lama juga proses
enkripsi dan begitu juga dengan proses dekripsi, semakin panjang pesan maka
semakin lama juga proses dekripsi
3. Untuk penyisipan pesan, semakin panjang jumlah pesan yang akan disisipkan maka ukuran dimensi citra yang akan digunakan juga semakin besar
4. Pesan yang disembunyikan Modified LSB (Least Significant Bit) lebih terjaga dikarenakan pesan hanya akan disisipkan pada bit terendah dari salah satu warna yang terdapat pada citra.
5.2 SARAN
Berikut beberapa saran untuk pengembangan sistem ini:
1. File yang dapat dienkripsi bukan hanya file berformat *.txt melainkan dapat juga mengenkripsi dengan format lain seperti *.doc dan *.docx
2. Pada pengujian ini, citra yang digunakan hanya citra berformat *.png. Dan untuk selanjutnya file citra yang digunakan bukan hanya *.png melainkan *.jpeg, *.gif dan sebagainya
TINJAUAN PUSTAKA
2.1.Kriptografi
Kriptografi (cryprography) berasal dari bahasa Yunani : “cryptos” artinya “secret”
(rahasia), sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti
“secret writing” (tulisan rahasia). Pesan asli biasanya disebut plaintext sedangkan pesan yang disembunyikan disebut ciphertext (Mollin,2007).
Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak
menggunakan suatu kunci enkripsi menjadi sesuatu yang suit dibaca oeh seseorang
yang tidak memiliki kunci dekripsi. Dekripsi menggunakan kunci dekripsi
mendapatkan kembali data asli. Proses enkripsi dilakukan menggunakan algoritma
dengan beberapa parameter. Biasanya algoritma tidak dirahasikan, tetapi rahasinya
terletak pada parameter yang digunakan. Jadi kunci ditentukan oleh parameter dan
parameter yang menentukan kunci dekripsi. Dalam kriptografi klasik, teknik enkripsi
yang digunakan adalah enkripsi simetris dimana kunci enkripsi sama dengan kunci
dekripsi. Untuk kriptografi kunci publik, diperlukan teknik enkripsi asimetris dimana
kunci dekripsi tidak sama dengan kunci enkripsi. Enkripsi, dekripsi dan pembuatan
kunci untuk teknik enkripsi asimetris memerlukan komputasi yang lebih intensif
dibandingkan enkripsi simetris, karena enkripsi asimetris menggunakan bilangan -
bilangan yang sangat besar (Kromodimoeljo,2010).
Menurut Schneier (1996), dalam pemenuhan kerahasiaan, kriptografi sering
digunakan untuk :
1. Authentication. Memungkinkan penerima pesan menegaskan keaslian dari data
2. Integrity. Memungkinkan penerima pesan memeriksa bahwa data tersebut
tidak dimodifikasi selama pengiriman; penyusup tidak dapat mengganti pesan
yang salah dengan yang asli.
3. Non-repudiation. Pengirim tidak dapat menyangkal telah melakukan
pengiriman.
2.1.1. Kriptografi Simetri
Algoritma simetri juga sering disebut algoritma klasik, dimana untuk melakukan
proses enkripsi dan dekripsi dapat menggunakan kunci yang sama. Sistem algoritma
simetri merupakan sistem dekripsin yang mana adalah hasil dari pembalikkan dari
enkripsi yang digunakan. Jadi untuk menggunakan algoritma simetri, pengirim dan
penerima pesan harus menggunakan kunci yang sama (Batten,2013).
Algoritma simetris, biasanya disebut juga sebagai algoritma konvensional,
merupakan algoritma dimana kunci enkripsi dapat dihitung dari kunci dekripsi dan
sebaliknya. Algoritma ini, disebut juga algoritma kunci-privat (secret-key), algoritma
kunci-tunggal (single-key), algoritma satu kunci (one-key), dimana pengirim dan
penerima sepakat dengan sebuah kunci sebelum berkomunikasi dengan aman.
Keamanan algoritma simetris terletak pada kunci. Algoritma simetri dapat dibagi dua,
yaitu stream chipher dan block chipher (Schneier, 1996). Proses algoritma simetri
dapat dilihat pada gambar 1.
Gambar 2.1. Kriptografi Simetri
Menurut Schneier (1996), enkripsi dan dekripsi dengan menggunakan
algoritma simetris disimbolkan dengan:
EK (M) = C………..(1)
DK (C) = M …………...(2)
Plaintext Enkripsi Dekripsi Plaintext
Kunci
Berdasarkan rumus (1), M adalah plaintext, C adalah Ciphertext, Ek adalah algoritma
enkripsi dan pada rumus (2) Dk adalah algoritma dekripsi.
2.1.2 Kriptografi Asimetri
Algoritma asimetri sering juga disebut algoritma kunci public. Algoritma ini
dirancang sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang
digunakan untuk dekripsi. Pada algortima ini, kunci enkripsi disebut kunci public
sedangkan untuk kunci dekripsi disebut kunci private(Scheiner, 1996).
Enkripsi menggunakan kunci publik K disimbolkan :
EK (M) = C………..(3)
Walaupun kunci publik dan kunci privat berbeda, dekripsi dengan kunci privat yang
cocok disimbolkan dengan :
DK (C) = M………(4)
Keterangan :
E = Fungsi enkripsi
D = Fungsi dekripsi
C = Cipherteks
M = Pesan (Message) atau plainteks
2.2. DES (Data Encryption Standard)
DES (Data Encryption Standard) dirancang oleh tim IBM yang dipimpin Horst
Feistel dengan bantuan dari NSA(National Security Agency) (Kromodimoeljo,2010).
Pada tahun 1970, penelitian tentang kriptografi tidak boleh dilakukan secara
sembarangan. Hampir semua dokumen di bidang kriptografi tidak diterbitkan. Pada
tahun itu semua orang tahu bahwa pihak militer menggunakan sandi dalam
berkomunikasi, tetapi hanya sebagian kecil yang mengerti tentang
DES pertama kali dipublikasikan di Federal Register pada 17 Maret 1975.
Setelah melalui banyak diskusi, akhirnya algortima DES diadopsi sebagai algoritma
standar yang digunakan oleh NBS (National Bureau of Standards) pada 15 Januari
1977. Sejak saat itu, DES banyak digunakan pada dunia penyebaran informasi untuk
melindungi data agar tidak bisa dibaca oleh orang lain.
DES adalah algoritma block cipher yang mengenkripsi blok sebesar 64 bit
plaintext. Panjang kunci DES adalah 64 bit, akan tetapi kunci efektif yang digunakan
untuk proses enkripsi hanya sebesar 56 bit saja dan 8 bit dari kunci digunakan sebagai
parity(Scheiner, 1996).
2.2.1 Pembangkitan Kunci
Awalnya kunci DES yang sebesar 64 bit akan diperkecil menjadi 56 bit dengan
mengabaikan setiap bit kedelapan pada kunci. Dengan menggunakan tabel 2.1
permuted choice-1, maka kunci 56 bit dapat dihasilkan. Setiap bit kedelapan
digunakan sebagai parity(Scheiner, 1996).
Tabel 2.1. Permuted Choice -1(Kromodimoeljo,2010)
57 49 41 33 25 17 9 1 58 50 42 34 26 18
10 2 59 51 43 35 27 19 11 3 60 52 44 36
63 55 47 39 31 23 15 7 62 54 46 38 30 22
14 6 61 53 45 37 29 21 13 5 28 20 12 4
Setelah mendapatkan kunci 56 bit, kunci 56 bit akan dibagi menjadi 2 masing-masing
berukuran 28 bit. Kemudian setiap bagian akan mengalami pergeseran bit tergantung
pada setiap putaran. Setiap putaran akan menggeser bit sebanyak 1 atau 2
Tabel 2.2. Jumlah Pergeseran Bit(Kromodimoeljo,2010)
Setelah pergeseran bit, maka 48 bit dari 56 bit akan dipilih. Tabel 2.3 akan melakukan
kompersi permutasi terhadap 56 bit untuk menghasilkan 48 bit, permutasi ini juga
disebut permutasi pilihan (Permuted choice)(Scheiner, 1996).
Tabel 2.3. Permuted Choice -2(Kromodimoeljo,2010)
putaran jumlah pergeseran
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1
14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
Contoh:
1. Kunci K sebesar 64 bit = 133457799BBCDFF1 diubah dalam bentuk biner
dengan masing-masing 8 bit setiap bloknya K=00010011 00110100 01010111
01111001 10011011 10111100 11011111 11110001
2. Kunci K yang mempunyai ukuran 64 bit, setelah melakukan permutasi maka K
akan diubah menjadi K+ yang mempunyai ukuran sebesar 56 bit.
K+ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111
0001111
3. Kunci K+ dapat dipisah menjadi dua bagian dengan ukuran 28 bit
C0 = 1111000 0110011 0010101 0101111
D0 = 0101010 1011001 1001111 0001111
4. Dari C0 dan D0, maka dapat dibuat 16 block Cn dan Dn, 1<=n<=16. Dari C0 dan
D0 dapat menghasilkan
C0 = 1111000011001100101010101111
D0 = 0101010101100110011110001111
C1 = 1110000110011001010101011111
D1 = 1010101011001100111100011110
Sampai dengan
C16 = 1111000011001100101010101111
D16 = 0101010101100110011110001111
5. Setelah mengalami pergeseran bit maka kunci K+1 diturunkan dari C1D1
sampai K+16 diturunkan dari C16D16 akan mengalami kompresi dengan
menggunakan tabel 2.3.
K1 = 000110 110000 001011 101111 111111 000111
000001 110010 sampai dengan
K16 = 110010 110011 110110 001011 000011 100001
2.2.2 Enkripsi Algoritma DES (Data Encryption Standard)
Sebelum putaran pertama, terhadap blok plaintext dilakukan permutasi awal. Misalnya
bit ke 58 dari plaintext akan menjadi bit ke 1 setelah mengalami permutasi
awal(Scheiner, 1996).
Tabel 2.4. Initial Permutation(Kromodimoeljo,2010)
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
Menurut (Scheiner, 1996) rumus enkripsi DES adalah
Ln = Rn – 1………..(5)
Rn = Ln– 1 + f(Rn-1, K1)…….(6)
dimana
Ln-1 adalah blok yang sedang giliran tidak dienkripsi,
+ adalah operasi exclusive or secara bitwise,
f adalah fungsi cipher yang akan dijelaskan,
Rn-1 adalah blok yang sedang giliran dienkripsi, dan
Kn adalah kunci untuk putaran n
Untuk fungsi f , blok Rn-1 harus diubah dari 32 bit menjadi 48 bit. Dengan
menggunakan tabel E, fungsi dari tabel E (ekspansi) adalah mengulangi beberapa
Tabel 2.5. Tabel Ekspansi(Grabbe,1998)
Untuk selanjutnya output dari E(Rn-1) akan di XOR dengan kunci K1, dengan
menggunakan rumus(Scheiner, 1996). :
Kn + E(Rn-1) =B1B2B3B4B5B6B7B8……..(7)
Setelah kunci di XOR dengan E(Rn-1), akan dilakukan subtitusi menggunakan
substitution box atau S-box. S-box harus memiliki inputan sebesar 6 bit dan hasil
output dari S-box sebesar 4 bit.
Dari rumus diatas maka akan menghasilkan 8 blok yang berukuran 6 bit
S1(B1) S2(B2) S3(B3) S4(B4) S5(B5) S6(B6) S(B7) S8 (B8)
Sebagai contoh, misalkan input untuk S-box 6 adalah 110011. Bit pertama dan bit
terakhir digabung sehingga menjadi 11 dan akan menjadi penunjuk baris pada S-box,
jadi 11 bila didesimalkan menjadi 3. Dan bit tengah 1001 akan menjadi penunjuk
kolom, jika didesimalkan maka menjadi 9. Jadi outpunya berada di baris ke 3 kolom 9
adalah 14 dan dibinerkan menjadi 1110(Scheiner, 1996).
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
Tabel 2.6. Tabel Substitution Box DES(Kromodimoeljo,2010)
S1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 16
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3