Pengamanan Data Teks Dengan Kombinasi Algoritma Data Encryption Standard (Des) Dan First Of File (Fof)
PENGAMANAN DATA TEKS DENGAN KOMBINASI
ALGORITMA
DATA ENCRYPTION STANDARD (DES)
DAN
FIRST OF FILE (FOF)
SKRIPSI
RIO AUDITYA PRATAMA SAMOSIR
091401074
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
(2)
PENGAMANAN DATA TEKS DENGAN KOMBINASI ALGORITMA DATA ENCRYPTION STANDARD (DES)
DAN FIRST OF FILE (FOF)
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
RIO AUDITYA PRATAMA SAMOSIR 091401074
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2015
(3)
PERSETUJUAN
Judul : PENGAMANAN DATA TEKS DENGAN
KOMBINASI ALGORITMA DATA ENCRYPTION STANDARD (DES) DAN FIRST OF FILE (FOF)
Kategori : SKRIPSI
Nama : RIO AUDITYA PRATAMA SAMOSIR
Nomor Induk Mahasiswa : 091401074
Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
Diluluskan di
Medan, 13 Januari2015
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Rachmawati, S.Si, M.Kom Prof. Dr. Iryanto, M.Si NIP. 198307232009122004 NIP.194604041971071001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP.196203171991031001
(4)
PERNYATAAN
PENGAMANAN DATA TEKS DENGAN KOMBINASI ALGORITMA DATA ENCRYPTION STANDARD (DES)
DAN FIRST OF FILE (FOF)
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 13 Januari 2015
Rio Auditya Pratama Samosir 091401074
(5)
PENGHARGAAN
Puji dan syukur kehadirat Allah SWT, yang hanya dengan rahmat dan izin-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada semua pihak yang telah membantu penulis dalam menyelesaikan skripsi ini baik secara langsung maupun tidak langsung, teristimewa untuk kedua orangtua terkasih, Ayahanda Ir. Lindung Samosir dan Ibunda Apulina Surbakti. Pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada:
1. Bapak Prof. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
2. Dr. Poltak Sihombing, M. Kom. selaku Ketua Program Studi S1 Ilmu Komputer dan Dosen Penguji I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
3. Ibu Maya Silvi Lydia, B.Sc., M.Sc selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.
4. Bapak Prof. Dr. Iryanto, M.Si. selaku Dosen Pembimbing I yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis.
5. Ibu Dian Rachmawati S.Si, M.Kom. selaku Dosen Pembimbing II yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis.
6. Bapak Ade Candra, ST, M.Kom. selaku Dosen Penguji II yang telah memberikan kritik dan saran dalam penyempuraan skripsi ini.
7. Hani Febrina Rasyad Siregar S.TI. yang telah memberikan semangat, dukungan, dan perhatian kepada penulis.
8. Teman-teman seperjuangan mahasiswa S1-Ilmu Komputer stambuk 2009 terkhusus, Ismail Fata Lubis, Fiktaruddin, M. Iqshan Johandra, S.Kom., Santo
(6)
yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.
9. Teman-teman sekaligus keluarga besar Program Studi S1 Ilmu Komputer Fasilkom-TI USU.
10.Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat penulis ucapkan satu demi satu yang telah membantu penyelesaian skripsi ini.
Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, penulis mengharapkan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini.
Medan, 13 Januari 2015 Penulis,
(7)
ABSTRAK
Pengamanan data belum menjadi prioritas utama kebanyakan orang pada saat ini. Sehingga sering terjadi penyalahgunaan data dan gangguan keamanan lainya. Untuk mengatasi gangguan keamanan tersebut, dapat digunakan ilmu pengamanan data seperti Kriptografi dan Steganografi. Ilmu Kriptografi menggunakan cara mengacak / menyamarkan data, sedangkan Ilmu Steganografi dengan cara menyembunyikan data. Pada penelitian ini algoritma Kriptografi yang digunakan adalah Algoritma Data Encryption Standard(DES). Tahap algoritma DES secara umum terbagi 3 bagian, yaitu pemrosesan pembangkitan kunci internal 56 bit dari kunci eksternal yang panjangnya 64 bit, enkripsi data 64 bit, dan dekripsi data 64 bit. Sehingga plaintext (data awal) yang telah melalui proses algoritma DES akan menghasilkan ciphertext. Selanjutnya dilakukan embedding (penyembunyian data) pada citra bitmap (*.bmp) dengan teknik Steganografi First Of File (FOF) dengan cara menyisipkan pesan pada awal file citra secara horizontal sehingga menghasilkan stego image yang akan di ekstraksi untuk mendapatkan ciphertext sebelumnya. Kemudian melalui tahap dekripsi data 64 bit dari algoritma DES, maka di dapatkan plaintext semula. Dengan kombinasi DES dan FOF, keamanan data akan bertambah karena setelah pesan diacak menjadi ciphertext, ciphertext akan disisipkan kedalam file citra.
.
(8)
TEXT DATA PROTECTION WITH A COMBINATION OF DATA ENCRIPTION STANDARD (DES) ALGORITHM
AND FIRST OF FILE (FOF)
ABSTRACT
Data security system is not a top priority for most people at this moment.As the result, misuse of data and any other security disruptions frequently happens because of the data are not properly protected. To solve the problem, we can apply data security science such as Cryptography and Steganography.Cryptography is using random-disguising method and Steganography is using hiding method.In this research, Cryptograph Algorithm being used is Data Encryption Standard Algorithm (DES). DES Algorithm is divided into 3 stages, which are; the internal process of evocation key 56 bits from external key 64 bits, data encryption 64 bits and data description 64 bits. The plaintext resulted from DES Algorithm process is the Chiphertext.Then, the embedding (data hiding) on a bitmap image (*.bmp) is performed using technique of Steganograph First of File (FOF) by inserting a message at beginning of file image, horizontally. It will result a stego-image that will be extracted to get the previous Chipertext. Thru the stage of DES Algorithm data description 64 bit, the original plaintext, will be obtained.With the combination of DES and FOF, data security will increase because after the message encrypted into ciphertext, the ciphertext will be embedded into the image file.
Keywords: Cryptography, Steganography, Data Encryption Standard, First Of File, txt.
(9)
DAFTAR ISI
PERNYATAAN iii
PENGHARGAAN iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL x
DAFTAR GAMBAR xi
DAFTAR LAMPIRAN xii
BAB I 13
PENDAHULUAN 13
1.1 Latar Belakang 13
1.2 Perumusan Masalah 14
1.3 Batasan Masalah 14
1.4 Tujuan Penelitian 15
1.5 Manfaat Penelitian 15
1.6 Metode Penelitian 15
1.7 Sistematika Penulisan 16
BAB 2 18
LANDASAN TEORI 18
2.1 Kriptografi 18
2.2 Data Encryption Standard (DES) 19
2.2.1 Langkah-langkah Proses Enkripsi DES 22
2.2.2 Dekripsi DES 30
2.3 Citra Digital 30
2.4 Bitmap 30
2.5 Steganografi 31
2.6 First Of File (FOF) 32
(10)
BAB 3 34
ANALISIS DAN PERANCANGAN 34
3.1 Analisis Sistem 34
3.1.1 Analisis Masalah 34
3.1.2 Analisis Persyaratan 35
3.1.3 Pemodelan Persyaratan Sistem dengan Use Case 36
3.1.4 Pseudocode 41
3.1.5 Analisis Sistem Proses 47
3.1.6 Flowchart Sistem 48
3.1.7 Rancangan Antar Muka 55
3.2 Tahapan Sistem 60
3.2.1 Tahapan Algoritma DESUntuk Enkripsi Pesan 60 3.2.2 Penyisipan Pesan Kedalam Citra Dengan FOF 75
BAB 4 76
IMPLEMENTASI DAN PENGUJIAN SISTEM 76
4.1 Implementasi 76
4.1.1 FormUtama 76
4.1.2 Form Enkripsi 77
4.1.3 FormDekripsi 77
4.2 Pengujian 78
4.2.1 Proses Enkripsi dan Penyisipan Pesan 79 4.2.2 Proses Ekstraksi dan Dekripsi Pesan 82
BAB 5 86
KESIMPULAN DAN SARAN 86
5.1. Kesimpulan 86
5.2. Saran 86
DAFTAR PUSTAKA 88
(11)
DAFTAR TABEL
Nomor
Tabel Nama Tabel
Halama n 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18
Tabel Initial Permutation (IP) Tabel PC-1
Tabel Left Shift Tabel PC-2 Tabel Ekspansi Tabel S-Box Tabel P-Box
Tabel Invers Initial Permutation (IP-1) Spesifikasi Use Case Enkripsi
Spesifikasi Use CaseEmbedding Spesifikasi Use Case Ekstraksi Spesifikasi Use Case Dekripsi Tabel Initial Permutation (IP) Tabel PC-1
Tabel Left Shift Tabel Hasil Left Shift Tabel PC-2
Hasil Permutation Compression 2 (PC-2) Tabel Ekspansi
Hasil Operasi XOR antara E(Ri-1) dengan Ki Tabel S-Box
Hasil Substitusi dengan Tabel S-Box Tabel P-Box
Hasil Mutasi dengan Tabel P-Box
Hasil Operasi XOR antara P(Bi) dengan Li-1 Tabel Invers Initial Permutation (IP-1)
9 9 10 10 10 11 13 14 21 21 22 23 39 40 40 40 41 41 43 43 44 46 47 47 48 49
(12)
DAFTAR GAMBAR
Nomor Gamba
r
Nama Gambar Halama
n 2.1 2.2 2.3 2.4 2.5 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.1 4.2 4.3 4.4 4.5 4.6 4.7
Skema Algoritma Simetri Skema Algoritma Asimetri Skema Global Kriptografi DES Proses enkripsi Kriptografi DES Citra Format (*.bmp)
Diagram Ishikawa Untuk Analisa Masalah Use case Diagram yang akan Dikembangkan
Activity Diagram untuk Proses Enkripsi dan Embedding Activity Diagram untuk Proses EkstraksidanDekripsi Sequence Diagram Proses Enkripsi dan Penyisipan Pesan Diagramuntuk Proses Ekstraksi dan Dekripsi Pesan Flowchart Proses Pembangkitan Kunci Internal Flowchart Proses Enkripsi
Flowchart Penyisipan Pesan pada Gambar Flowchart Ekstraksi Pesan
FlowchartProses Dekripsi TampilanForm Utama Form Enkripsi
Form Dekripsi
Tampilan Form Utama Tampilan Form Enkripsi Tampilan Form Dekripsi FormHasil Enkripsi
Gambar Perbandingan Hasil Penyisipan Pesan FormHasil Dekripsi Hasil Dekripsi 5 6 7 8 15 18 20 22 23 28 28 29 30 31 32 33 34 35 37 51 52 53 54 54 56 57
(13)
DAFTAR LAMPIRAN
Halaman
A. Listing Program A-1
(14)
ABSTRAK
Pengamanan data belum menjadi prioritas utama kebanyakan orang pada saat ini. Sehingga sering terjadi penyalahgunaan data dan gangguan keamanan lainya. Untuk mengatasi gangguan keamanan tersebut, dapat digunakan ilmu pengamanan data seperti Kriptografi dan Steganografi. Ilmu Kriptografi menggunakan cara mengacak / menyamarkan data, sedangkan Ilmu Steganografi dengan cara menyembunyikan data. Pada penelitian ini algoritma Kriptografi yang digunakan adalah Algoritma Data Encryption Standard(DES). Tahap algoritma DES secara umum terbagi 3 bagian, yaitu pemrosesan pembangkitan kunci internal 56 bit dari kunci eksternal yang panjangnya 64 bit, enkripsi data 64 bit, dan dekripsi data 64 bit. Sehingga plaintext (data awal) yang telah melalui proses algoritma DES akan menghasilkan ciphertext. Selanjutnya dilakukan embedding (penyembunyian data) pada citra bitmap (*.bmp) dengan teknik Steganografi First Of File (FOF) dengan cara menyisipkan pesan pada awal file citra secara horizontal sehingga menghasilkan stego image yang akan di ekstraksi untuk mendapatkan ciphertext sebelumnya. Kemudian melalui tahap dekripsi data 64 bit dari algoritma DES, maka di dapatkan plaintext semula. Dengan kombinasi DES dan FOF, keamanan data akan bertambah karena setelah pesan diacak menjadi ciphertext, ciphertext akan disisipkan kedalam file citra.
.
(15)
TEXT DATA PROTECTION WITH A COMBINATION OF DATA ENCRIPTION STANDARD (DES) ALGORITHM
AND FIRST OF FILE (FOF)
ABSTRACT
Data security system is not a top priority for most people at this moment.As the result, misuse of data and any other security disruptions frequently happens because of the data are not properly protected. To solve the problem, we can apply data security science such as Cryptography and Steganography.Cryptography is using random-disguising method and Steganography is using hiding method.In this research, Cryptograph Algorithm being used is Data Encryption Standard Algorithm (DES). DES Algorithm is divided into 3 stages, which are; the internal process of evocation key 56 bits from external key 64 bits, data encryption 64 bits and data description 64 bits. The plaintext resulted from DES Algorithm process is the Chiphertext.Then, the embedding (data hiding) on a bitmap image (*.bmp) is performed using technique of Steganograph First of File (FOF) by inserting a message at beginning of file image, horizontally. It will result a stego-image that will be extracted to get the previous Chipertext. Thru the stage of DES Algorithm data description 64 bit, the original plaintext, will be obtained.With the combination of DES and FOF, data security will increase because after the message encrypted into ciphertext, the ciphertext will be embedded into the image file.
Keywords: Cryptography, Steganography, Data Encryption Standard, First Of File, txt.
(16)
BAB I PENDAHULUAN
1.1 Latar Belakang
Tujuan utama keamanan data adalah untuk mengamankan data/informasi dari penyalahgunaan oleh pihak-pihak yang tidak bertanggung jawab. Dengan adanya pengamanan data, tindakan seperti sabotase dan pertukaran data yang tidak sah dapat dicegah. Namun pengamanan data belum menjadi prioritas utama kebanyakan orang pada saat ini. Sehingga sering ditemukan kejadian yang berhubungan dengan gangguan keamanan data. Oleh karena itu untuk mengatasi keadaan tersebut dapat digunakan beberapa ilmu pengamanan data seperti kriptografi dan steganografi.
Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain (Kromodimoeljo, 2009). Ada banyak algoritma pengamanan data teks dengan menggunakan kriptografi, salah satunya adalah Algoritma Data Encryption Standard (DES).
Data Encryption Standard (DES) merupakan algoritma enkripsi yang paling banyak dipakai di dunia yang diadopsi oleh NIST (National Institue Of Standards and Technology) sebagai standar pengolahan informasi Federal AS. Secara umum, DES terbagi menjadi tiga kelompok, yaitu pemrosesan kunci, enkripsi data 64 bit dan dekripsi data 64 bit, dimana satu kelompok saling berinteraksi satu dengan lainnya (Syahputra, 2010).
(17)
Secara keseluruhan konsep kriptografi memang mengacak atau menyamarkan arti dari suatu data teks tetapi tidak menyembunyikannya sehingga masih bisa terlihat dan dapat menimbulkan kecurigaan. Untuk menghindari kecurigaan ini maka dikembangkanlah teknik steganografi.
Secara umum steganografi merupakan seni atau ilmu yang digunakan untuk menyembunyikan pesan rahasia dengan segala cara sehingga selain orang yang dituju, orang lain tidak akan menyadari keberadaan dari pesan rahasia tersebut. Data rahasia yang disembunyikan juga dapat berupa citra, audio, teks, atau video (Wandani, 2012). Steganografi juga memiliki berbagai teknik penyembunyian, salah satunya adalah Teknik First Of File (FOF). Pada metode First Of File, pesan akan disisipkan pada awal nilai file.
Beradasarkan latar belakang yang telah penulis uraikan, maka dilakukan penelitian dengan judul “Pengamanan Data Teks Dengan Menggunakan Kombinasi Algoritma Kriptografi Data Encryption Standard (DES) Dengan Teknik Steganografi First Of File (FOF).”
1.2 Perumusan Masalah
Berdasarkan latar belakang diatas, maka yang menjadi rumusan masalah dalam penelitian ini adalah bagaimana mengimplementasikan suatu sistem keamanan data yang mampu melakukan proses enkripsi dan dekripsi menggunakan metode Data Encryption Standard (DES)dan dapat menyisipkan hasil enkripsi ke dalam file gambar yang berformat bitmap dengan menggunakan teknik First Of File (FOF).
1.3 Batasan Masalah
(18)
2. Pesan teks dapat diinput langsung oleh user dan dapat juga berupa file text dengan format *.txt.
3. Panjang kunci eksternal harus 8 karakter yang nantinya akan diubah menjadi kunci internal.
4. Aspek steganografi yang dijadikan acuan adalah fidelity dan recovery 5. Bahasa pemrograman yang digunakan adalah visual studio C# (sharp).
1.4 Tujuan Penelitian
Tujuan dari penelitian ini adalah membangun aplikasi yang mengimplementasikan algoritma Data Encryption Standard (DES) dan teknik steganografi First Of File (FOF) untuk mengamankan data.
1.5 Manfaat Penelitian
Manfaat penelitian diharapkanpendistribusian data menjadi lebih aman melalui implementasi algoritma Data Encryption Standard (DES) dan teknik steganografi First Of File (FOF).
1.6 Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur
Pada tahap ini dilakukan pencarian dan pengumpulan referensi yang berhubungan dengan algoritma Data Encryption Standard dan teknik steganografiFirst Of
(19)
File.Baik dalam bentuk buku ataupun e-book, jurnal, dan makalah yang di dapat dari internet.
2. Analisis dan Perancangan Sistem
Pada tahap ini dilakukan analisis terhadap masalah sesuai tujuan dan batasan masalah dan dilakukan perancangan flowchart, UML, dan interfaceyang menggunakan algoritma Data Encryption Standard dan teknik steganografi First Of File.
3. Implementasi Sistem
Pada tahap ini akan dibuat sistem dengan melakukan pengkodean (coding) pada bahasa pemrograman C# untuk implementasi algoritma Data Encryption Standard dan teknik steganografi First Of File.
4. Pengujian Sistem
Pada tahap ini dilakukan pengujian terhadap sistem yang telah dibangun untuk menguji hasil pendekripsian yang berupa plainteks, dimana plainteks keluaran harus sama dengan plainteks inputan.
5. Dokumentasi
Pada tahap ini dilakukan penyusunan laporan dari hasil analisis dan perancangan sistem dalam format penulisan penelitian.
1.7 Sistematika Penulisan
Sistematika penulisan skripsi ini terdiri atas bagian-bagian berikut:
BAB I PENDAHULUAN
Bab ini menjelaskan latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematikan penulisan dari skripsi ini.
(20)
BAB II LANDASAN TEORI
Bab ini menjelasakan landasan teori dari penelitian yang dilakukan. Teori yang diangkat yaitukriptografi dan steganografi, algoritmaData Encryption Standard (DES) dan metode First Of File (FOF).
BAB III ANALISIS DAN PERANCANGAN
Bab ini menjelaskan analisis terhadap kombinasi dari metode Data Encryption Standard (DES) dan First Of File untuk mengamankan pesan teks. Pada bab ini juga akan dilakukan analisis pengaruh apa yang terjadi terhadap file yang digunakan pada sistem ini.Bab ini juga akan menjelaskantentang perancangan sistem yang akan dibuat.
BAB IV IMPLEMENTASI DAN PENGUJIAN
Bab ini menjelaskan implementasi dari sistem dengan menggunakan software Microsoft Visual Studio 2010 (C#). Dan dilakukan pengujian sistem untuk mengetahui keberhasilan dari sistem sesuai dengan perencanaan yang telah dibuat.
BAB V KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang didapat dari hasil pengujian yang dilakukan serta saran-saran yang diberikan untuk penelitian selanjutnya.
(21)
BAB 2
LANDASAN TEORI
2.1 Kriptografi
Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana menyembunyikan pesan. Namun pada pengertian modern kriptografi adalah ilmu yang bersandarkan pada teknik matematika untuk berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas (Sadikin, 2012).
Dalam kriptografi, proses menyandikan plaintext menjadi ciphertext disebut dengan enkripsi (encryption). Sedangkan proses pengembalian ciphertext menjadi plaintext semula dinamakan dekripsi (decryption). Parameter yang digunakan untuk transformasi enkripsi dan dekripsi disebut dengan kunci (key) (Munir, 2006).
Algoritma kriptografi dibagi menjadi tiga bagian berdasarkan kunci yang dipakainya (Ariyus & Andri, 2008):
1. Algoritma simetri
Algoritma ini sering disebut dengan algoritma klasik karena memakai kunci yang sama untuk kegiatan enkripsi dan dekripsi. Algoritma yang memakai kunci simetri diantaranya adalah Vigenere Cipher, Affine Cipher,Hill Cipher danData Encryption Standard (DES). Skema algoritma simetri ditunjukkan pada Gambar 2.1 berikut.
Enkripsi Dekripsi
K K
(22)
2. Algoritma asimetri
Algoritma asimetri sering juga disebut algoritma kunci publik, dengan arti kunci yang digunakan unruk melakukan enkripsi dan dekripsi adalah berbeda. Pada algoritma asimetri, kunci terbagi menjadi dua bagian, yang pertama adalah kunci umum (public key), yaitu kunci yang boleh semua orang tahu (dipublikasikan). Dan kunci pribadi (private key), yaitu kunci yang dirahasiakan (hanya boleh diketahui oleh satu orang)Algoritma yang memakai kunci asimetri diantaranya adalah Rivest-Shamir-Adleman(RSA) dan El-Gamal. Skema algoritma asimetri ditunjukkan pada Gambar 2.2.
Enkripsi Dekripsi
K1 K2
plainteks cipherteks plainteks semula
Gambar 2.2 Skema Algoritma Asimetri
3. Hash Function (Fungsi Hash)
Fungsi hash merupakan suatu fungsi matematika yang mengambil input panjang variabel dan mengubahnya ke dalam urutan biner dengan panjang yang tetap.
2.2 Data Encryption Standard (DES)
DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plaintext menjadi 64 bit ciphertext dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit.
Skema global dari algoritma DES adalah sebagai berikut.
a. Blok plaintext dipermutasi dengan matriks permutasi awal (initial permutation atau IP)
(23)
b. Hasil permutasi awal kemudian di-encipheringsebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda.
c. Hasil encipheringkemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1) menjadi blok ciphertext (Fitri, 2010).
Skema global kritptografi DES dapat kita lihat pada Gambar 2.3 berikut:
Blok Plainteks
IP
Enciphering
IP-1
Cipherteks 16 kali
Gambar 2.3 Skema Global Kriptografi DES (Munir, 2006)
Dalam proses enchipering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut f . Pada fungsi f, blok R dikombinasikan dengan kunci internal ��.
Keluaran dari fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung diambil dari blok R yang sebelumnya. Ini adalah satu putaran DES. Secara matematis, satu putaran DES dinyatakan sebagai (Munir, 2006).
(24)
�� =��−1 ⊕ �(��−1,��) (1)
�� = ��−1 (2)
Pada Gambar 2.4 dapat dilihat skema enkripsi DES secara rinci. Pada proses enkripsi terjadi 16 kali perputaran dan akan menghasilkan keluaran (L16,R16) yang merupakan pra-cipherteks. Cipherteks yang sebenarnya akan diperoleh dengan melakukan permutasi awal balikan (IP-1) terhadap blok pra-cipherteks.
Plainteks
IP
L0 R0
L1 = R0 R1 = L0⊕ f(R0,K1) f
+
f
+
f
+
Cipherteks IP־¹
L2 = R1 R2 = L1⊕ f(R1,K2) L15 = R14 R15 = L14⊕ f(R14,K15)
L16 = R15
R16 = L15⊕ f(R15,K16)
K1
K2
K16
(25)
2.2.1 Langkah-langkah Proses Enkripsi DES
1. Langkah Pertama
Ubah plainteks dan kunci eksternal ke dalam bentuk biner
2. Langkah Kedua
Lakukan initial permutation (IP) pada bit plainteks menggunakan tabel Initial Permutationyang ditunjukkan pada Tabel 2.1 berikut:
Tabel 2.1 Tabel Initial Permutation (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
Setelah mendapatkan hasilnya, bagi (IP) menjadi dua blok, yaitu L0 dan R0:
3. Langkah Ketiga
Generate kunci yang akan digunakan untuk mengenkripsi plainteks dengan menggunakan tabel permutasi kompresi PC-1 (Tabel 2.2), pada langkah ini terjadi kompresi dengan membuang 1 bit masing-masing blok kunci dari 64 bit menjadi 56 bit.
(26)
Tabel 2.2 Tabel PC-1
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 45 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
Hasilnya kemudiban dibagi CD menjadi dua blok, yaitu C0 dan D0.
4. Langkah Keempat
Lakukan pergeseran kiri (left shift) pada C0 dan D0 sebanyak 1 atau 2 kali berdasarkan kali putaran yang ada pada Tabel 2.3 sebagai berikut:
Tabel 2.3 Tabel Left Shift
Iterasi Ke 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Pergeseran
Bit 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Setiap hasil putaran digabungkan kembali menjadi CiDi dan diinput ke dalam tabel Permutation Compression 2 (Tabel 2.4) dan terjadi kompresi data CiDi 56 bit menjadi CiDi 48 bit.
Tabel 2.4Tabel PC-2
14 17 11 24 1 5
(27)
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
5. Langkah Kelima
Pada langkah ini data Ri-1 32 bit akan di-ekspansi menjadi Ri 48 bit sebanyak 16 kali putaran menggunakan Tabel Ekspansi pada Tabel 2.7.
Tabel 2.5 Tabel Ekspansi
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
28 29 30 31 32 1
Hasil E(Ri-1) kemudian di-XOR dengan Ki dan menghasilkan Vektor matriks Ai.
6. Langkah Keenam
Setiap vektor Ai disubsitusikan kedelapan buah S-Box (Subtitution Box), dimana blok pertama disubsitusikan dengan S1, blok kedua dengan S2 dan seterusnya dan
(28)
menghasilkan output vektor Bi 32 bit. Tabel S-Box dapat dilihat pada Tabel 2.6 berikut.
Tabel 2.6 Tabel S-Box
S-1 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 10 01 00 11 01 00 01 00 10 11 11 10 11 10 00 00 11 10 10 01 10 11 00 01 01 10 01 00 00 01 11 0 1 00 00 11 11 01 11 01 00 11 10 00 10 11 01 00 01 10 10 01 10 11 00 10 11 10 01 01 01 00 11 10 00 1 0 01 00 00 01 11 10 10 00 11 01 01 10 00 10 10 11 11 11 11 00 10 01 01 11 00 11 10 10 01 01 00 00 1 1 11 11 11 00 10 00 00 10 01 00 10 01 00 01 01 11 01 01 10 11 00 11 11 10 10 10 00 00 01 10 11 01 S-2 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 11 00 01 10 00 11 10 01 10 10 11 00 11 01 00 10 01 01 11 00 10 11 01 11 00 00 00 01 01 10 10 0 1 00 11 11 01 01 00 01 11 11 11 00 10 10 00 11 10 11 00 00 00 00 01 10 10 01 10 10 01 10 11 01 01 1 0 00 00 11 10 01 11 10 11 10 10 01 00 11 01 00 01 01 01 10 00 11 00 01 10 10 01 00 11 00 10 11 11 1 1 11 01 10 00 10 10 00 01 00 11 11 11 01 00 00 10 10 11 01 10 01 11 11 00 00 00 01 01 11 10 10 01
(29)
S-3 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 10 10 00 00 10 01 11 10 01 10 00 11 11 11 01 01 00 01 11 01 11 00 01 11 10 11 01 00 00 10 10 00 0 1 11 01 01 11 00 00 10 01 00 11 01 00 01 10 10 10 00 10 10 00 01 01 11 10 11 00 10 11 11 11 00 01 1 0 11 01 01 10 01 00 10 01 10 00 11 11 00 11 00 00 10 11 00 01 00 10 11 00 01 01 10 10 11 10 01 11 1 1 00 01 10 10 11 01 00 00 01 10 10 01 10 00 01 11 01 00 11 11 11 10 00 11 10 11 01 01 00 10 11 00 S-4 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 01 11 11 01 11 10 00 11 00 00 01 10 10 01 10 10 00 01 00 10 10 00 01 01 10 11 11 00 01 00 11 11 0 1 11 01 10 00 10 11 01 01 01 10 11 11 00 00 00 11 01 00 01 11 00 10 11 00 00 01 10 10 11 10 10 01 1 0 10 10 01 10 10 01 00 00 11 00 10 11 01 11 11 01 11 11 00 01 00 11 11 10 01 01 00 10 10 00 01 00 1 1 00 11 11 11 00 00 01 10 10 10 00 01 11 01 10 00 10 01 01 00 01 01 10 11 11 00 01 11 00 10 11 10 S-5 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 00 10 11 00 01 00 00 01 01 11 10 10 10 11 01 10 10 00 01 01 00 11 11 11 11 01 00 00 11 10 10 01
(30)
1 10 11 10 00 00 11 01 01 01 00 11 10 11 01 00 10 1 0 01 00 00 10 00 01 10 11 10 10 11 01 01 11 10 00 11 11 10 01 11 00 01 01 01 10 00 11 00 00 11 10 1 1 10 11 10 00 11 00 01 11 00 01 11 10 00 10 11 01 01 10 11 11 00 00 10 01 10 10 01 00 01 01 00 11 S-6 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 00 00 01 10 10 11 11 10 01 00 10 01 10 10 00 00 00 11 01 00 11 01 00 11 10 01 11 01 01 10 11 0 1 10 10 11 11 01 00 00 10 01 11 11 00 10 01 01 01 01 10 00 01 11 01 11 10 00 00 10 11 00 11 10 00 1 0 10 01 11 10 11 11 01 01 00 10 10 00 11 00 00 11 01 11 00 00 01 00 10 10 00 01 11 01 10 11 01 10 1 1 01 00 00 11 00 10 11 00 10 01 01 01 11 11 10 10 10 11 11 10 00 01 01 11 01 10 00 00 10 00 11 01 S-7 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 01 00 10 11 00 10 11 10 11 11 00 00 10 00 11 01 00 11 11 00 10 01 01 11 01 01 10 10 01 10 00 01 0 1 11 01 00 00 10 11 01 11 01 00 10 01 00 01 10 10 11 10 00 11 01 01 11 00 00 10 11 11 10 00 01 10 1 0 00 01 01 00 10 11 11 01 11 00 00 11 01 11 11 10 10 10 11 11 01 10 10 00 00 00 01 01 10 01 00 10 1 1 01 10 10 11 11 01 10 00 00 01 01 00 10 10 01 11 10 01 01 01 00 00 11 11 11 10 00 10 00 11 11 00
(31)
S-8 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 01 00 10 10 00 01 00 01 10 11 11 10 11 00 01 10 10 10 01 00 11 11 10 01 01 00 00 11 00 01 11 0 1 00 01 11 11 11 01 10 00 10 10 00 11 01 11 01 00 11 00 01 01 01 10 10 11 00 00 11 10 10 01 00 10 1 0 01 11 10 11 01 00 00 01 10 01 11 00 11 10 00 10 00 00 01 10 10 10 11 01 11 11 00 11 01 01 10 00 1 1 00 10 00 01 11 10 01 11 01 00 10 10 10 00 11 01 11 11 11 00 10 01 00 00 00 11 01 01 01 10 10 11
Cara menggunakan S-Box:
Kita ambil contoh S-1, kemudian kita ambil sampel blok dari A1 yaitu 101100. Kita pisahkan menjadi dua blok, yaitu:
Bit pertama dan terakhir yaitu 1 dan 0 digabungkan menjadi 10
Bit kedua hingga lima yaitu 0110
Kemudian dibandingkan dengan memeriksa perpotongan antara keduanya didapatkan nilai 0010 dan seterusnya untuk blok kedua hingga blok ke delapan kita bandingkan dengan S2hingga S8.
7. Langkah Ketujuh
Setelah didapatkan nilai vektor Bi, langkah selanjutnya adalah memutasikan bit vektor Bi menggunakan P-Box (Tabel 2.7), kemudian dikelompokkan menjadi 4 blok dimana tiap-tiap blok memiliki 32 bit data.
(32)
Tabel 2.7 Tabel P-Box
16 17 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6
22 11 4 25
Hasil P(Bi) kemudian di-XOR-kan dengan Li-1 untuk mendapatkan nilai Ri. Sedangkan nilai Li sendiri diperoleh dari nilai Ri-1 untuk nilai 1<=1<=16.
8. Langkah Kedelapan
Langkah terakhir adalah menggabungkan L16 dengan R16 kemudian dipermutasikan untuk terakhir kalinya dengan tabel Invers Initial Permutation yang ditunjukkan pada Tabel 2.8 berikut:
Tabel2.8 Tabel Invers Initial Permutation (IP-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
(33)
2.2.2 Dekripsi DES
Proses dekripsi terhadap blok cipherteks merupakan kebalikan dari proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan adalah K1, K2,..., K16, maka pada proses dekripsi urutan kunci adalah K16, K15,..., K1. Untuk tiap putaran 16,15,..., 1, keluaran pada setiap putaran deciphering adalah
�� =��−1 ⊕ �(��−1,��) (1)
�� = ��−1 (2)
2.3 Citra Digital
Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai seluaran suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapatlangsung disimpan pada suatu media penyimpanan. Citra digital adalah gambar dua dimensi yang dapat ditampilkan pada layar monitor komputer sebagai himpunan berhingga (diskrit) nilai digital yang disebut piksel (elemen terkecil dari sebuah citra). Piksel adalah elemen citra yang memiliki nilai yang menunjukkan intensitas citra (Sutoyo, et al. 2009).
2.4 Bitmap
Bitmap adalah format penyimpanan standar tanpa kompresi yang umum dapat digunakan untuk menyimpan citra biner hingga citra warna. Format ini terdiri dari beberapa jenis yang setiap jenisnya ditentukan dengan jumlah bit yang digunakan untuk menyimpan sebuah nilai pixel (Putra, 2010).
(34)
Gambar 2.5 Citra Format (*.bmp) 2.5 Steganografi
Steganografi berasal dari bahasa Yunani steganos, yang berarti “tertutup” dan graphia, yang berarti “menulis”. Steganografi adalah seni komunikasi tersembunyi. Selain invisible-ink (tinta tak-tampak), contoh lain yang sering dikutip dari steganografi adalah sebuah kisah kuno dari Herodotus, yang bercerita tentang seorang budak yang dikirim oleh tuannya, Histiӕus, untuk ke kota Miletus dengan pesan rahasia berupa tato di kulit kepalanya. Setelah ditato, si budak menumbuhkan kembali rambutnya untuk menutupi pesan tersebut. Dia kemudian melakukan perjalanan ke Miletus dan setelah tiba, dia mencukur kepalanya untuk menunjukkan pesan ke Bupati kota, Aristagoras. Pesan itu mendorong Aristagoras untuk memulai pemberontakan terhadap raja Persia. Dalam skenario ini, pesan adalah nilai utama untuk Histiӕus dan budak hanyalah sebagai pembawa pesan (Cox, et al. 2008).
Steganografi adalah ilmu menyembunyikan teks pada media lain yang telah ada sedemikian sehingga teks yang tersembunyi menyatu dengan media itu. Media tempat penyembunyian pesan tersembunyi dapat berupa media teks, gambar, audio atau video. Steganografi yang kuat memiliki sifat media yang telah tertanam teks tersembunyi sulit dibedakan dengan media asli namun teks tersembunyi tetap dapat diekstraksi (Sadikin, 2012).
(35)
Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Hal ini tergantung pada ukuran file media penyimpanan dan ukuran file pesan yang disisipkan. Untuk itu ada beberapa hal atau kriteria yang harus diperhatikan dalam penyembunyian data, yaituSutoyo, et al. 2009):
a. Fidelity
Mutu citra penampung data tidak jauh berubah. Setelah terjadi penambahan pesan rahasia, stego-data masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam stego-data tersebut terdapat pesan rahasia.
b. Robustness
Pesan yang disembunyikan harus tahan (robust) terhadap berbagai operasi manipulasi yang dilakukan pada stego-data, seperti pengubahan kontras, penajaman, pemampatan, rotasi, pembesaran gambar, pemotongan, enkripsi, dan sebagainya. Bila pada citra penampung dilakukan operasi-operasi pengolahan citra tersebut, maka pesan yang disembunyikan seharusnya tidak rusak (tetap valid jika diekstraksi kembali).
c. Recovery
Data yang disembunyikan harus dapat diungkapkan kembali (recovery). Karena tujuan steganografi adalah penyembunyian informasi maka sewaktu-waktu pesan rahasia di dalam stego-data harus dapat kembali untuk digunakan lebih lanjut.
d. Imperceptibility
Keberadaan pesan rahasia tidak dapat dipersepsi oleh inderawi. Misalnya, jika covertext berupa citra, maka penyisipan pesan membuat citra stegotext sukar dibedakan oleh mata dengan citra covertext-nya (Munir, 2006).
2.6 First Of File (FOF)
First Of File adalah suatu metode atau teknik steganografi untuk menyembunyikan atau menyisipkan pesan pada awalfile secara horizontal. Teknik ini dapat digunakan
(36)
untuk menyisipkan pesan yang ukurannya sesuai dengan kebutuhan. Ukuran file yang telah disisipkan pesan sama dengan ukuran file sebelum disisipkan pesan ditambah dengan ukuran pesan yang disisipkan ke dalam file tersebut (Arfiyah, 2013).
2.7 Penelitian Terdahulu
Beberapa penelitian yang telah dilakukan sebelumnya yang berkaitan dengan penelitian ini adalah:
1. Berdasarkan penelitian oleh Indra Syahputra, yaitu Simulasi Kerahasiaan/Keamanan Informasi Dengan Menggunakan Algoritma DES (Data Encryption Standard), dijelaskan bahwa Kriptografi mendukung kebutuhan dari dua aspek keamanan informasi, yaitu secrecy (perlindungan terhadap kerahasiaan informasi) dan authenticity (perlindungan terhadap pemalsuan dan pengubahan informasi yang tidak diinginkan). Salah satu metode kripstografi yang dapat digunakan untuk menjamin keamanan data adalah dengan Data Encryption Standard (DES). DES diadopsi oleh NIST (National Institute of Standards and Technology) sebagai standar pengolah infoemasi Federal AS (Syahputra, 2010).
2. Berdasarkan penelitian oleh Henny Wandani, yaitu Implementasi Sistem Keamanan Data dengan Menggunakan Teknik Steganografi End of File (EOF) dan Rabin Public Key Cryptosystem. Kriptografi yang sifatnya mengacak suatu pesan rahasia menimbulkan kecurigaan. Sehingga muncullah steganografi yang merupakan teknik penyembunyian pesan dalam sebuah media dan bersifat tidak mengacak isi file, sehingga file yang disisipkan tidak mencurigakan. Dengan kombinasi kriptografi dan steganografi maka akan meningkatkan keamanan pada pesan rahasia (Wandani, 2012).
(37)
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Tahapan awal dalam merancang suatu sistem yang terdiri dari tiga bagian, yaitu analisis masalah, analisis persyaratan, dan analisis proses.
3.1.1 Analisis Masalah
Keamanan adalah hal terpenting bagi sebuah pesan atau komunikasi, untuk mengamankan suatu pesan maka digunakanlah algoritma kriptografi untuk mengacak pesan tersebut. Dengan semakin meningkatnya pengetahuan dalam bidang komunikasi data pengamanan dengan teknik kriptografi saja tidak cukup.
Untuk menambah tingkat keamanan suatu pesan, maka dilakukanlah penggabungan teknik kriptografi dengan steganografi. Algoritma kriptografi yang akan digunakan disini adalah algoritma Data Encryption Standard dan teknik steganografinya adalah First Of File.
Analisis masalah lebih jelasnya dapat dilihat melalui Diagram Ishikawa (Fishbone Diagram) pada Gambar 3.1. berikut.
PENGAMANAN PESAN
USER METODE
MATERIAL SISTEM
Data Encryption Standard First Of File Mengamankan pensan
File text berformat *.txt
Citra berformat *.bmp
Enkripsi dan Embedding Ekstraksi dan Dekripsi
(38)
3.1.2 Analisis Persyaratan
Analisis persayaratan merupakan tahap untuk menentukan kebutuhan-kebutuhan dari sistem. Analisis persyaratan terdiri dari dua bagian, yaitu analisis fungsional dan analisis nonfungsional.
3.1.2.1Analisis Fungsional
Analisis fungsional dilakukan untuk mengetahui hal-hal yang harus dipenuhi oleh sistem. Berikut hal-hal yang dapat dilakukan oleh sistem.
1. Sistem mampu mengenkripsi pesan berformat *.txt dan menyisipkannya ke file citra dengan format *.bmp.
2. Sistem dapat mengekstraksi pesan yang sudah tersisipkan di dalam citra kemudian mendekripsi pesan tersebut.
3. Dalam proses enkripsi dan dekripsi metode yang digunakan adalah Data Encrypsion Standard (DES) dan proses penyisipan pesan kedalam citra adalah teknik Steganografi First Of File (FOF).
4. Sistem dapat menerima inputan karakter ASCII 256.
3.1.2.2Analisis Nonfungsional
Analisis nonfungsional berkaitan dengan fitur-fitur berikut ini: 1. Performa
Sistem dapat menunjukkan hasil dari proses enkripsi dan embedding serta dekripsi dan extracting.
2. Mudah dipelajari dan digunakan
Sistem memiliki tampilan yang user friendly dan memiliki panduan penggunaan. 3. Hemat biaya
Sistem yang akan dibangun dapat bebas digunakan dan tanpa biaya. 4. Dokumentasi
(39)
Sistem yang akan dibangun dapat menyimpan hasil enkripsi dan embedding. 5. Manajemen kualitas
Sistem yang akan dibangun memiliki kualitas yang baik. 6. Kontrol
Sistem akan menampilkan kotak pesan erroruntuk setiap input yang tidak sesuai.
3.1.3 Pemodelan Persyaratan Sistem dengan Use Case
Use case merupakan langkah-langkah pada sistem yang dapat dikerjakan oleh user. Use case diagram adalah gambaran umum dari sebuah sistem yang lebih menunjukkan tentang apa saja yang dapat dilakukan oleh sistem tersebut dimana kontrol dilakukan oleh user.Use Case Diagram dari sistem yang akan dibuat dapat dilihat pada Gambar 3.2 berikut.
Enkripsi dan Embedding
Ekstraksi dan Dekripsi User
System
Embedding Enkripsi
Dekripsi Ekstraksi
<<extends>>
<<extends>> <<extends>> <<extends>>
<<depand>>
(40)
Pada gambar 3.2 menjelaskan kontrol yang dilakukan oleh user, yaitu
melakukan enkripsi pesan dengan menggunakan algoritma Data Encryption Standard dan ciphertext hasil dari enkripsi tersebut disisipkan pada citra. Kemudian untuk melihat kembali pesan user melakukan ekstraksi pada citra yang sudah tersisip pesan kemudian hasil ekstraksi tersebut harus
didekripsikan untuk melihat pesan aslinya.
3.1.3.1Spesifikasi Use Case
Berikut ini merupakan spesifikasi use casedari Gambar 3.2
Tabel 3.1 Spesifikasi Use CaseEnkripsi
Name Enkripsi
Actors User
Trigger Usermemasukkan plaintext kunci. Preconditions Usermengeksekusi tombol Enkripsi
Post Conditions Usermendapatkanciphertext hasil proses enkripsi. Success Scenario 1. Usermemilih menu Enkripsi.
2. Usermemasukkan kunci.
3. User mengeksekusi tombol enkripsi.
4. Sistem akan melakukan proses enkripsi terhadapplaintext yang dimasukkan.
5. Usermendapatkanciphertext hasil proses enkripsi. Alternative Flows -
(41)
Berikut ini adalah spesifikasi untuk use casePenyisipan Pesan
Tabel 3.2 Spesifikasi Use CaseEmbedding
Name Embedding
Actors User
Trigger Usermemiliki ciphertext yang akan disisipkan.
Preconditions User memilih citra yang akan disisikpan oleh ciphertext Post Conditions Usermendapatkan stego-image
Success Scenario 1. User memiliki ciphertext yang akan disisipkan 2. User mamasukkan filecitra.
3. User mengeksekusi tombol Embed
4. Usermendapatkan stego-image dan dapat disimpan
(42)
Berikut adalah activity diagram untuk proses Enkripsi dan Penyisipan.
Masukkan plaintext
Masukkan kunci
Proses Enkripsi
Menampilkan ciphertext Memilih file citra
Proses penyisipan chiphertext ke citra
Menampilkan stego-image Menampilkan file citra
Mengeksekusi tombol Embed
Mengeksekusi tombol simpan
Menyimpan stego-image Mengeksekusi tombol
Enkripsi
User System
Gambar 3.3 Activity Diagram untuk Proses Enkripsi dan Embedding
Berikut adalah spesifikasi untuk use case Ekstraksi Pesan
Tabel 3.3 Spesifikasi Use CaseEkstraksi
Name Ekstraksi
Actors User
Trigger Usermemiliki stego-image yang akan di ekstraksi Preconditions User mengeksekusi tombol Ekstrak
Post Conditions User mendapatkan ciphertext hasil dari ekstrasi Success Scenario 1. User memiliki stego-image
(43)
2. User mengeksekusi tombol Ekstrak 3. Sistem melakukan proses ekstraksi.
4. User mendapatkan ciphertext hasil ekstraksi Alternative Flows -
Berikut ini adalah spesifikasi untuk uses case Dekripsi Pesan
Tabel 3.4 Spesifikasi Use CaseDekripsi
Name Dekripsi
Actors User
Trigger User memiliki ciphertext yang akan didekripsi dan memasukkan kunci
Preconditions Usermengeksekusi tombol Dekripsi
Post Conditions Usermendapatkan plaintext asli dan dapat disimpan Success Scenario 1. User memiliki plaintext dan memasukkan kunci
2. User mengakses tombol dekripsi..
3. Sistem melakukan proses dekripsi terhadapciphertext.. 4. Usermendapatkanplaintext hasil proses dekripsi dan dapat
disimpan. Alternative Flows -
(44)
Membuka file stego image Menampilkan stego image
Mengeksekusi tombol Ekstrak
Melakukan proses ekstraksi
Menampilkan ciphertext hasil ekstraksi Memasukkan kunci
Mengeksekusi tombol Dekripsi Melakukan proses dekripsi
Menampilkan plaintext hasil proses dekripsi Mengeksekusi tombol simpan
Menyimpan plaintext hasil proses dekripsi
User System
Gambar 3.4 Activity Diagram untuk Proses EkstraksidanDekripsi
3.1.4 Pseudocode
Pseudocode adalah penulisan algoritma pemrograman dengan bentuk sederhana dan dapat membantu manusia dalam memahami suatu algoritma.
3.1.4.1 Pseudocode Proses Enkripsi
Berikut adalah pseudocode untuk proses enkripsi:
int index = 0 putaran = 0
(45)
while (plain.Length % 8 != 0) plain += "#"
loop ← plain.Length / 8 getCD()
getCiDi() getK()
for (int i = 0; i < loop; i++)
PlainBiner = ""
PlainBiner ←getPlainBiner(plain.Substring(index, 8)) getIP()
Enciphering() index += 8 putaran++
endfor
Proses enkripsi dimulai dengan mengubah kunci eksternal menjadi kunci internal. Kemudian pesan asli diubah terlebih dahulu kedalam bentuk biner. Proses enkripsi dilakukan setiap 8 karakter, jika pesan yang dimili user lebih dari 8 karakter maka akan dilakukan perulangan sampai selesai.
3.1.4.2 Pseudocode Proses Embedding
Berikut adalah pseudocode untuk proses embedding:
string[] cipher = CipherDec.Split(' ')
Bitmap image ← new Bitmap(imgCover.Image); int x ← image.Width
int y ← image.Height int R, G, B
int idx = 0
Bitmap output ← new Bitmap(image.Width, 1) if ((image.Width * 3) < cipher.Length - 5)
(46)
MessageBox.Show("Image Cover terlalu kecil untuk Cipherteks yg akan disisipkan", "DES", MessageBoxButtons.OK, MessageBoxIcon.Warning)
else
for (int i = 0; i < 1; i++)
for (int j = 0; j < x; j++)
output.SetPixel(j, i, Color.FromArgb(255, 0, 0, 0))
endfor endfor
for (int i = 0; i < 1; i++)
for (int j = 0; j < x; j++)
if (idx = cipher.Length - 1) goto habis;
if (idx + 2 = cipher.Length - 1)
R ← Convert.ToInt32(cipher[idx]) G ← Convert.ToInt32(cipher[idx + 1]) B ← 0
idx += 2
else if (idx + 1 = cipher.Length - 1)
R ← Convert.ToInt32(cipher[idx]) G = 0
(47)
B = 0 idx++
else
R ← Convert.ToInt32(cipher[idx]) G ← Convert.ToInt32(cipher[idx + 1]) B ← Convert.ToInt32(cipher[idx + 2]) idx += 3
endif
output.SetPixel(j, i, Color.FromArgb(255, R, G, B))
endif endfor habis:
Bitmap outputImage = new Bitmap(image.Width, image.Height + 1,
System.Drawing.Imaging.PixelFormat.Format32bppArgb); using (Graphics graphics =
Graphics.FromImage(outputImage))
graphics.DrawImage(output, new Rectangle(new Point(), output.Size),
new Rectangle(new Point(), output.Size), GraphicsUnit.Pixel);
graphics.DrawImage(image, new Rectangle(new Point(0, output.Height + 1), image.Size),
new Rectangle(new Point(), image.Size), GraphicsUnit.Pixel);
imgHasil.Image = outputImage;
(48)
endfor endif
Proses penyisipan pesan (embedding) dilakukan dengan cara menambah baris baru pada bagian atas atau bagian awal matrik pixel citra. Jika pesan yang akan disisipkan memiliki banyak karakter, maka pixel dari citra juga tidak boleh terlalu kecil. Jika citra yang digunakan memiliki pixel yang terlalu kecil maka pada sistem akan memberikan peringatan bahwa image cover terlalu kecil untuk ciphertext yang ingin disisipkan.
3.2.4.3 Pseudocode Proses Ekstraksi
Berikut adalah pseudocode untuk proses ekstraksi:
Bitmap image ← new Bitmap(imgStego.Image) int x ← image.Width
int r, g, b
string pixels = ""
for (int i = 0; i < 1; i++) {
for (int j = 0; j < x; j++) {
r ← image.GetPixel(j, i).R g ← image.GetPixel(j, i).G b ← image.GetPixel(j, i).B
pixels += r + " " + g + " " + b + " " endfor
endfor
pixels ← pixels.Remove(pixels.IndexOf("0 0 0 0")); txtCiphertext.Text = pixels
Pada proses ekstraksi sistem akan membaca nilai dari pixel matriks stego image mulai dari awal baris pertama untuk diekstrak. Jika sistem sudah membaca bit
(49)
yang bernilai 0 0 0 0 maka saat itu sistem akan berhenti membaca, hal ini adalah sebagai tanda bahwa pesan yang tersembunyi di citra sudah habis.
3.2.4.4 Pseudocode Proses Dekripsi
if (txtKunci.TextLength != 8)
MessageBox.Show("Kunci harus 8 Karakter", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
else
Plaintext = "" int index = 0 putaran = 0
string[] cipherArray = txtCiphertext.Text.Split(' ') loop ← cipherArray.Length / 8
getCD() getCiDi() getK()
for (int i = 0; i < loop; i++)
CipherBiner = ""
for (int j = index; j < index + 8; j++)
CipherBiner+= getCipherBiner(cipherArray[j]) + " "
endfor
deciphering() index += 8 putaran++ endfor endif
(50)
Proses dekripsi memiliki cara yang sama sebagaimana proses enkripsi dilakukan, yang berbeda dari kedua proses ini adalah pada bagian penggunaan kunci, jika pada enkripsi kunci yang digunakan adalah dari awal yaitu K1,K2,K3,...K16. Sedangkan untuk proses dekripsi adalah sebaliknya yaitu dari K16,K15,K14,...K1.
3.1.5 Analisis Sistem Proses
Pengamanan pesan teks ini menggunakan algoritma Data Encryption Standarddalam proses enkripsi dan menggunakan First Of File untuk proses penyisipan pesan ke file citra. Untuksequence diagramproses enkripsi pesan dapat dilihat pada Gambar 3.5.
User
Enkripsi Dekripsi
1. Masukkan plaintext
2. Masukkan kunci
3. Output: Ciphertext
4. Masukkan citra
5. Output: stego image
6. Pilih lokasi penyimpanan stego image
7. File stego image tersimpan
Gambar 3.5 Sequence Diagram Proses Enkripsi dan Penyisipan Pesan
(51)
User
Ekstraksi Dekripsi
1. Masukkan stego image 2. Output: ciphertext
3. Masukkan kunci 4. Output: plaintext asli
5. Pilih lokasi penyimpanan plaintext 6. File plaintext tersimpan
Gambar 3.6 Sequence Diagram untuk Proses Ekstraksi dan Dekripsi Pesan
3.1.6 Flowchart Sistem
3.1.6.1Flowchart Proses Enkripsi
Untuk mempermudah dalam memahami langkah-langkah proses enkripsi dengan menggunakan algoritma Data Encryption Standard penulis akan memisahkan flowchart pembangkitan kunci internal (Gambar 3.7) dan flowchart enkripsi (Gambar 3.8) yang bisa dilihat sebagai berikut.
(52)
START
Input Kunci Eksternal
Ubah kunci menjadi bilangan
biner
Kompresi menggunakan
matriks PC-1
C0D0
Left Shif
CiDi
Kompresi menggunakan
matriks PC-2
K
END
Gambar 3.7 Flowchart Proses Pembangkitan Kunci Internal
Keterangan:
Untuk memulai, user diharuskan untuk memasukkan kunci eksternal, dan untuk menjalankan proses enkripsi, kunci eksternal (64 bit) tersebut harus diubah menjadi kunci internal (48 bit) terlebih dahulu. Setelah user memasukkan kunci eksternal 64 bit, maka kunci tersebut akan diubah kedalam bentuk biner dan kemudian di kompresi menjadi 56 bit menggunakan matriks permutasi kompresi PC-1 sehingga
(53)
menghasilkan dua buah blok yaitu C0 dan D0. Kemudian kedua buah blok tersebut digeser ke kiri menggunakan Left Shift, setelah melakukan pergeseran dan digabungkan, maka menghasilkan C1,D1. C1,D1 kemudian dikompresi lagi menjadi 48 bit menggunakan matriks permutasi kompresi PC-2 dan menghasilkan K .
START
Input plaintext
Ubah kedalam bentuk biner
Pengacakan dengan matrik Initial Permutation
(IP)
L0 dan R0
Ekspansi R0 dengan matriks
ekspansi
XOR-kan E(Ri-1) dan Ki E(Ri-1)
Ai
Permutasikan dengan matriks
P-box
P(Bi)
XOR-kan P(Bi) dan Li-1
Ri (Li = Ri-1)
Inverse Initial Permutation (IP-1)
kepada L16 dan R16
Ciphertext
Konversi kedalam kode ASCII
Ciphertext (desimal)
END Bi
Subtitusikan kedalam S-box
A
(54)
Keterangan :
Dari flowchartproses enkripsi pada gambar 3.8dapat dilihat langkah-langkah untuk melakukan enkripsi, user memasukkanplaintextyang kemudian diubah dulu kedalam bentuk biner setelah itu lakukanpengacakan menggunakan Initial Permutation (IP) dan menghasilkan L0 dan R0 yang kemudian ekspansikan ke tabel ekspansi sehingga menhasilkan blok 48 bit yaitu E(R-1). E(R-1) kemudian di XOR kan dengan K untuk mendapatkan nilai Ai. Ai tersebut kemudian subtitusikan dengan tabel S-box sehingga menghasilkan blok 32 bit yaitu Bi. Nilai Bi dimutasikan dengan tabel P-box. P(B) kemudian di-XOR kan dengan L-i-1 menghasilkan Ri, dimana Li=Ri-1. Setelah melakukan perulangan sebanyak 16 kali dan mendapatkan hasil sampai L16dan R16 kemudian lakukan Invers Initial Permutation (IP-1), maka akan menghasilkan ciphertext.
3.1.6.2Flowchart Penyisipan Pesan.
Teknik steganografi yang digunakan untuk menyisipkan pesan kedalam file citra adalah First Of File.Untuk flowchart penyisipan pesan dapat dilihat pada Gambar 3.9 berikut ini.
(55)
START
Ciphertext (desimal)
Cover image
Penyisipan pesan dengan teknik
FOF
Stego image
END
Gambar 3.9Flowchart Penyisipan Pesan pada Gambar
Keterangan :
Ciphertextyang didapat dari proses enkripsi diubah kedalam bentuk desimal sesuai kode ASCII agar dapat disisipkan ke file citra. Kemudian user memasukkan cover image, yaitu citra yang akan disisipkan pesan. Setelah itu dilakukan proses penyisipan dengan teknik FOF, dan didapatlah stego image.
3.1.6.3Flowchart Ekstraksi Pesan
Ekstraksi pesan adalah proses pengambilan kembali pesan yang tersimpandidalam stego image.Untuk flowchart dari ekstraksi pesan dapat dilihat pada Gambar 3.10 berikut.
(56)
START
Masukkan Stego image
Proses ekstraksi pesan
Ciphertext
END
Gambar 3.10Flowchart Ekstraksi Pesan
Keterangan :
Awalnya usermemasukkan stego image kemudian proses ekstraksi pesan dilakukan. Hasil dari proses ekstraksi merupakan ciphertext yang nantinya digunakan untuk proses dekripsi.
3.1.6.4Flowchart Proses Dekripsi
Proses dekripsi akan setelah proses ekstraksi berhasil mengeluarkan ciphertext dari gambar. Langkah proses dekripsi dapat dilihat pada gambar 3.11.
(57)
START
Ciphertext (biner)
Pengacakan dengan matrik Initial Permutation
(IP)
L0 dan R0
Ekspansi R0 dengan matriks
ekspansi
XOR-kan E(Ri-1) dan Ki E(Ri-1)
Ai
Permutasikan dengan matriks
P-box
P(Bi)
XOR-kan P(Bi) dan Li-1
Ri (Li = Ri-1)
Inverse Initial Permutation (IP-1)
kepada L16 dan R16 Plaintext
(biner)
Konversi kedalam kode ASCII
Plaintext asli
END Bi
Subtitusikan kedalam S-box
A
A
Gambar 3.11FlowchartProses Dekripsi
Keterangan :
Flowchart pada Gambar 3.11menunjukkan proses dari dekripsi pesan, untuk penjelasan dekripsi sendiri merupakan kebalikan daripada proses enkripsi, dimana
(58)
Kipada proses enkripsi dimulai dari K1, K2, K3,...,K16 maka pada proses dekripsi adalah kebalikannya yaitu K16,K15,K14,...,K1.
3.1.7 Rancangan Antar Muka
Sistemdibangun dengan menggunakan software Microsoft Visual Studio dan bahasa pemrograman yang digunakan adalah C#. Rancangan dari sistem kombinasi algoritma Data Encryption Standard dan teknik steganografi First Of File ini terdiri dari # buah form yaitu form utama, form enkripsi dan form dekripsi..
3.1.7.1Antar Muka Form Utama
Form utama merupakan form awal yang muncul pada saat menjalankan sistem. Pada formutamaterdapat keterangan dari judul sistem yang dibuat dan nama penulis.Untuk tampilan form utama dapat dilihat pada Gambar 3.12
Enkripsi Dekripsi Keluar
Pengamanan Data Teks
Dengan Kombinasi Algoritma Data Encryption Standard (DES) Dan Teknik Steganografi First Of File (FOF)
Logo USU
Rio Auditya Pratama Samosir 091401074
Data Encryption Standard
1
2
3
2
(59)
Komponen-komponen yang dipakai dalam form Utama pada Gambar 3.12 adalah:
1. Menu String (‘Enkripsi, Dekripsi, Keluar’) merupakan pilihan proses yang dapat dilakukan oleh sistem.
2. Label digunakan sebagai judul dari sistem dan nama penulis.
3. Picture Box, menampilkan logo dari instansi pendidikan penulis.
3.1.7.2Antar Muka Form Enkripsi
Pada form enkripsi, user memasukkanplaintextyang ingin dienkripsi dan juga memasukkan kunci eksternal. Setelah proses enkripsi selesai user memasukkan file citra yang akan disisip oleh ciphertext hasil enkripsi tersebut.
Data Encryption Standard - Enkripsi Enkripsi
Plaintext
Buka
Kunci
Enkripsi Ciphertext (biner)
Steganografi
Image Cover
Buka
Informasi Image
Embed
Image Hasil
Simpan Ciphertext (desimal)
Simpan Kunci Biner
Plaintext Biner
Proses Hasil Enkripsi
2
1 3 4 7
11 8
12
13
5
6
9
10
14
15 16 18
19
20
21
22
23
24
25 26
17
Gambar 3.13Form Enkripsi
Komponen-komponen yang dipakai dalamform enkripsi pada Gambar 3.13 adalah sebagai berikut:
(60)
2. Label (‘Plaintext’) merupakanpetunjuk bahwa area tersebut adalah tempat user memasukkan pesan teks.
3. TextBox 1 merupakan lokasi inputan pesan teks.
4. Button (‘Buka’) berfungsi untuk membuka file pesan teks berformat *.txt yang sudah tersimpan dalam komputer .
5. Label (‘PlaintextBiner’) merupakanpetunjuk bahwa area tersebut adalah tempat tampilnya plaintext dalam bentuk biner.
6. TextBox2 merupakan lokasi tampilnya plaintext dalam bentuk biner. 7. Label (‘Kunci’)menunjukan lokasi user memasukkan kunci eksternal. 8. TextBox 3merupakan lokasi inputan kunci eksternal.
9. Label(‘Kunci Biner’) menunjukkan tempat tampilnyakuncidalam bentuk biner. 10. TextBox 4merupakan lokasi tampilnya kunci dalam bentuk biner.
11. Button(‘Enkripsi’) berfungsi untuk memulai proses enkripsi.
12. Label (‘Ciphertext(Biner)’) menunjukan tempattampilnyaciphertextdalam bentuk biner.
13. TextBox 5lokasitampilnyaciphertextdalam bentuk biner.
14. Label (‘Ciphertext(Desimal)’) menunjukan tempat tampilnyaciphertextdalam bentuk desimal.
15. TextBox 6lokasitampilnyaciphertextdalam bentuk desimal. 16. Button(‘Simpan’) berfungsi untuk menyimpan ciphertext.
17. Label (‘Proses Hasil Enkripsi’) menunjukan tempat tampilnyahasil dari tahapan-tahapan yang ada pada proses enkripsi.
18. GroupBox 2 (‘Steganografi’) merupakan tempat proses penyisipan pesan kedalam citra.
19. Label(‘Image Cover’) menunjukan tempat tampilnya file citra yang dipilih user sebagai citra yang akan disisipkan pesan.
(61)
21. Button(‘Buka’) berfungsi untuk mengakses file citra berformat *.bmp yang sudah tersimpan dalam komputer.
22. Label(‘Informasi Image’) menunjukan keterangan dari file citra yang terdiri dari size dan dimensi.
23. Button(‘Embed’) berfungsi untuk memulai proses penyisipan pesan kedalam file citra.
24. Label(‘Image Hasil’) menunjukan tempat tampilnya stego image. 25. PictureBox 2lokasi tampilnya stego image.
26. Button(‘Simpan’) berfungsi untukmenyimpan stego image kedalam komputer user.
3.1.7.3Antar Muka Form Dekripsi
Pada formdekripsi, usermemasukkan file stego image yang ingin di ekstrak terlebih dahulu. Setelah ciphertext didapatkan proses dekripsi bisa dimulai dan menghasilkan plaintext yang asli.
Data Encryption Standard - Dekripsi
Dekripsi Ciphertext
Kunci
Enkripsi Plaintext Steganografi
Stego Image
Buka
Informasi Image
Ekstrak
Plaintext Biner
Simpan
Kunci Biner Ciphertex Biner
Proses Hasil Enkripsi
8
7 9 12
16 13
18
19
10
11 14
15
20
21 22
2
3
4
5
6
17 1
(62)
Komponen-komponen dari form ekstraksi pada Gambar 3.14 adalah sebagai berikut: 1. GroupBox 1 (‘Steganografi’) merupakan tempat proses ekstraksi pesan dalam
stego image.
2. Label(‘Stego Image’) menunjukan tempat tampilnya stego image. 3. PictureBox 1lokasi tampilnya stego image.
4. Button(‘Buka’) berfungsi untuk mengakses file stego image yang sudah tersimpan dalam komputer.
5. Label(‘Informasi Image’) menunjukan keterangan dari file citra yang terdiri dari size dan dimensi.
6. Button(‘Ekstrak’) berfungsi untuk memulai ekstraksi pada stego image untuk mendapatkan ciphertext.
7. GroupBox 2 (‘Dekripsi’) merupakan tempat proses dekripsi dilakukan. 8. Label (‘Ciphertext’) menunjukan tempattampilnyaciphertext.
9. TextBox 1lokasitampilnyaciphertext.
10. Label (‘Ciphertext Biner’) menunjukan tempattampilnyaciphertextdalam bentuk biner.
11. TextBox 2lokasitampilnyaciphertextdalam bentuk biner. 12. Label (‘Kunci’)menunjukan lokasi user memasukkan kunci. 13. TextBox 3merupakan lokasi inputan kunci.
14. Label(‘Kunci Biner’) menunjukkan tempat tampilnyakuncidalam bentuk biner. 15. TextBox 4lokasi tampilnya kunci dalam bentuk biner.
16. Button(‘Dekripsi’) berfungsi untuk memulai proses dekripsi.
17. Label (‘Proses Hasil Dekripsi’) menunjukan tempat tampilnyahasil dari tahapan-tahapan yang ada pada proses dekripsi.
18. Label (‘Plaintext’) menunjukan tempat tampilnyaplaintext hasil dari dekripsi. 19. TextBox 5lokasi tampilnya plaintext.
20. Label (‘Plaintext (Biner)’) menunjukan tempat tampilnyaplaintext hasil dari dekripsi dalam bentuk biner.
(63)
21. TextBox 6lokasi tampilnya plaintext dalam bentuk biner.
22. Button(‘Simpan’) berfungsi untuk menyimpan plaintext asli hasil dari proses dekripsi.
3.2 Tahapan Sistem
3.2.1 Tahapan Algoritma DESUntuk Enkripsi Pesan
Contoh algoritma DES adalah sebagai berikut:
Plainteks : ILKOMUSU
Kunci eksternal : RIOAUDIT
1. Langkah Pertama
Ubah plainteks ke dalam bentuk biner
I L K O M U S U
Desim
al 73 76 75 79 77 85 83 85
Biner 010010 01
010011 00
010010 11
010011 11
010011 01
010101 01
010100 11
010101 01
Ubah kunci ke dalam bentuk biner
R I O A U D I T
Desim
al 82 73 79 65 85 68 73 84
Biner 010010 01
010011 00
010010 11
010011 11
010011 01
010101 01
010100 11
010101 01
(64)
2. Langkah Kedua
Lakukan initial permutation (IP) pada bit plainteks menggunakan tabel Initial Permutationyang ditunjukkan pada Tabel 3.5 berikut:
Tabel 3.5 Tabel Initial Permutation (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
Sehingga setelah posisi bit diambil berdasarkantabel Initial Permutation (IP) maka diperoleh outputnya adalah:
(IP) : 11111111 11100000 10111010 11111101 00000000 00000000 00011111 01001100
Bagi (IP) menjadi dua blok, yaitu L0 dan R0:
L0 : 11111111 11100000 10111010 11111101
R0 : 00000000 00000000 00011111 01001100
3.Langkah Ketiga
Generate kunci yang akan digunakan untuk mengenkripsi plainteks dengan
menggunakan tabel permutasi kompresi PC-1 (Tabel 3.6), pada langkah ini terjadi kompresi dengan membuang 1 bit masing-masing blok kunci dari 64 bit menjadi 56 bit.
(65)
Tabel 3.6 Tabel PC-1
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 45 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
Sehingga outputnya:
CD : 0000000 0111111 1100000 0001001 0000010 1100101 0001000 1100001 Bagi CD menjadi dua blok, yaitu C0 dan D0:
C0 : 0000000 0111111 1100000 0001001 D0 : 0000010 1100101 0001000 1100001
4. Langkah Keempat
Lakukan pergeseran kiri (left shift) pada C0 dan D0 sebanyak 1 atau 2 kali berdasarkan kali putaran yang ada pada Tabel 3.7 sebagai berikut:
Tabel 3.7 Tabel Left Shift
Iterasi Ke 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Pergeseran
(66)
Berikut hasil outputnya:
Tabel 3.8 Tabel Hasil Left Shift
I Ci Di
1 0000000 1111111 1000000 0010010 0000101 1011010 0010001 1000010 2 0000001 1111111 0000000 0100100 0001011 0110100 0100011 0000100 3 0000111 1111100 0000001 0010000 0101101 1010001 0001100 0010000 4 0011111 1110000 0000100 1000000 0110110 1000100 0110000 1000001 5 1111111 1000000 0010010 0000000 1011010 0010001 1000010 0000101 6 1111110 0000000 1001000 0000011 1101000 1000110 0001000 0010110 7 1111000 0000010 0100000 0001111 0100010 0011000 0100000 1011011 8 1100000 0001001 0000000 0111111 0001000 1100001 0000010 1101101 9 1000000 0010010 0000000 1111111 0010001 1000010 0000101 1011010 10 0000000 1001000 0000011 1111110 1000110 0001000 0010110 1101000 11 0000010 0100000 0001111 1111000 0011000 0100000 1011011 0100010 12 0001001 0000000 0111111 1100000 1100001 0000010 1101101 0001000 13 0100100 0000001 1111111 0000000 0000100 0001011 0110100 0100011 14 0010000 0000111 1111100 0000001 0010000 0101101 1010001 0001100 15 1000000 0011111 1110000 0000100 1000001 0110110 1000100 0110000 16 0000000 0111111 1100000 0001001 0000010 1101101 0001000 1100001
Setiap hasil putaran digabungkan kembali menjadi CiDi dan diinput ke dalam tabel Permutation Compression 2 (Tabel 3.9) dan terjadi kompresi data CiDi 56 bit menjadi CiDi 48 bit.
Tabel 3.9Tabel PC-2
14 17 11 24 1 5
3 28 15 6 21 10
(67)
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Berikut outputnya:
Tabel 3.10Hasil Permutation Compression 2 (PC-2) C1D1 : 0000000 1111111 1000000 0010010 0000101 1011010 0010001 1000010
K1 : 101100 001001 001001 001010 100001 000110 011000 001100
C2D2 : 0000001 1111111 0000000 0100100 0001011 0110100 0100011 0000100
K2 : 101000 000001 101011 010010 000100 010001 110010 000001
C3D3 : 0000111 1111100 0000001 0010000 0101101 1010001 0001100 0010000
K3 : 001101 000111 001001 010000 010010 100010 000000 110101
C4D4 : 0011111 1110000 0000100 1000000 0110110 1000100 0110000 1000001
K4 : 000001 100101 010101 010000 001000 110110 100110 001100
C5D5 : 1111111 1000000 0010010 0000000 1011010 0010001 1000010 0000101
K5 : 010011 100100 000101 010101 001000 000001 000110 010011
C6D6 : 1111110 0000000 1001000 0000011 1101000 1000110 0001000 0010110
K6 : 000011 111100 000100 001001 110001 110000 000000 100111
C7D7 : 1111000 0000010 0100000 0001111 0100010 0011000 0100000 1011011
K7 : 000010 110000 000110 101011 010001 100000 101111 001000
C8D8 : 1100000 0001001 0000000 0111111 0001000 1100001 0000010 1101101
(68)
C9D9 : 1000000 0010010 0000000 1111111 0010001 1000010 0000101 1011010
K9 : 000110 010001 100010 001010 111011 000000 010001 001100
C10D10 : 0000000 1001000 0000011 1111110 1000110 0001000 0010110 1101000
K10 : 001100 000010 100011 001100 000010 001111 001011 001010
C11D11 : 0000010 0100000 0001111 1111000 0011000 0100000 1011011 0100010
K11 : 000100 000110 110000 000100 001101 001101 010000 100001
C12D12 : 0001001 0000000 0111111 1100000 1100001 0000010 1101101 0001000
K12 : 010000 000010 110100 110100 100010 100000 110001 100010
C13D13 : 0100100 0000001 1111111 0000000 0000100 0001011 0110100 0100011
K13 : 110001 001010 010000 100101 100011 001110 101100 010000
C14D14 : 0010000 0000111 1111100 0000001 0010000 0101101 1010001 0001100
K14 : 110000 111000 011000 100010 001100 010100 011001 010000
C15D15 : 1000000 0011111 1110000 0000100 1000001 0110110 1000100 0110000
K15 : 111010 001001 001010 100010 110110 011000 000000 000010
C16D16 : 0000000 0111111 1100000 0001001 0000010 1101101 0001000 1100001
K16 : 101000 011001 001000 100010 000100 011000 001110 111100
5. Langkah Kelima
Pada langkah ini data Ri-1 32 bit akan di-ekspansi menjadi Ri 48 bit sebanyak 16 kali putaran menggunakan Tabel Ekspansi pada Tabel 3.11.
Tabel 3.11 Tabel Ekspansi
32 1 2 3 4 5
4 5 6 7 8 9
(69)
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Hasil E(Ri-1) kemudian di-XOR dengan Ki dan menghasilkan Vektor matriks Ai. Berikut hasil outputnya:
Tabel 3.12 Hasil Operasi XOR antara E(Ri-1) dengan Ki
I Ai
1 101100 001001 001001 001010 100010 111000 110001 010100 2 111111 110010 011110 000111 011100 010001 111111 010000 3 111100 010100 111110 101101 000011 111111 011000 111010 4 001000 111000 000010 100010 100111 000111 110010 000000 5 000111 100011 111101 010000 010010 100001 001010 011110 6 011110 100001 010010 100110 001111 010001 010001 110010 7 110010 111111 111001 011001 110011 001110 000100 110011 8 100100 110110 000101 111111 100010 100011 100000 000001 9 111110 011011 000001 111001 001110 011011 100000 010111 10 000101 011000 000001 100100 001011 010110 010110 010110 11 101001 010000 010000 001000 001000 011001 011110 001111 12 011101 010100 010111 000101 110011 111000 111000 111110 13 000001 001110 011000 100011 000010 011101 011010 110011
(70)
14 001100 110100 010111 011011 011011 100110 111110 100111 15 001110 001110 111011 110010 110010 010101 011001 011101 16 000011 101110 110111 011001 110110 110010 101010 111010
6. Langkah Keenam
Setiap vektor Ai disubsitusikan kedelapan buah S-Box (Subtitution Box), dimana blok pertama disubsitusikan dengan S1, blok kedua dengan S2 dan seterusnya dan
menghasilkan output vektor Bi 32 bit. Tabel S-Box dapat dilihat pada Tabel 3.13 berikut.
Tabel 3.13 Tabel S-Box
S-1 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 10 01 00 11 01 00 01 00 10 11 11 10 11 10 00 00 11 10 10 01 10 11 00 01 01 10 01 00 00 01 11 0 1 00 00 11 11 01 11 01 00 11 10 00 10 11 01 00 01 10 10 01 10 11 00 10 11 10 01 01 01 00 11 10 00 1 0 01 00 00 01 11 10 10 00 11 01 01 10 00 10 10 11 11 11 11 00 10 01 01 11 00 11 10 10 01 01 00 00 1 1 11 11 11 00 10 00 00 10 01 00 10 01 00 01 01 11 01 01 10 11 00 11 11 10 10 10 00 00 01 10 11 01 S-2 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 11 11 00 01 10 00 11 10 01 10 10 11 00 11 01 00 10 01 01 11 00 10 11 01 11 00 00 00 01 01 10 10
(71)
0 1 00 11 11 01 01 00 01 11 11 11 00 10 10 00 11 10 11 00 00 00 00 01 10 10 01 10 10 01 10 11 01 01 1 0 00 00 11 10 01 11 10 11 10 10 01 00 11 01 00 01 01 01 10 00 11 00 01 10 10 01 00 11 00 10 11 11 1 1 11 01 10 00 10 10 00 01 00 11 11 11 01 00 00 10 10 11 01 10 01 11 11 00 00 00 01 01 11 10 10 01 S-3 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 10 10 00 00 10 01 11 10 01 10 00 11 11 11 01 01 00 01 11 01 11 00 01 11 10 11 01 00 00 10 10 00 0 1 11 01 01 11 00 00 10 01 00 11 01 00 01 10 10 10 00 10 10 00 01 01 11 10 11 00 10 11 11 11 00 01 1 0 11 01 01 10 01 00 10 01 10 00 11 11 00 11 00 00 10 11 00 01 00 10 11 00 01 01 10 10 11 10 01 11 1 1 00 01 10 10 11 01 00 00 01 10 10 01 10 00 01 11 01 00 11 11 11 10 00 11 10 11 01 01 00 10 11 00 S-4 00 00 00 01 00 10 00 11 01 00 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 0 0 01 11 11 01 11 10 00 11 00 00 01 10 10 01 10 10 00 01 00 10 10 00 01 01 10 11 11 00 01 00 11 11 0 1 11 01 10 00 10 11 01 01 01 10 11 11 00 00 00 11 01 00 01 11 00 10 11 00 00 01 10 10 11 10 10 01 1 0 10 10 01 10 10 01 00 00 11 00 10 11 01 11 11 01 11 11 00 01 00 11 11 10 01 01 00 10 10 00 01 00
(1)
{
return getBiner(Convert.ToInt32(text));; }
private void getCD() {
string CD = des.getPermutasiKompresi(KunciBiner.Replace(" ", "")); C0 = CD.Substring(0, CD.Length / 2);
D0 = CD.Substring(CD.Length / 2); txtCD.Text = addSpaces(CD, 7); txtC0.Text = addSpaces(C0, 7); txtD0.Text = addSpaces(D0, 7); }
private void getCiDi() {
C = des.getleftshiftCD(C0); D = des.getleftshiftCD(D0);
for (int i = C.Length - 1; i >= 0; i--) {
txtLeftShift.Text += "C" + (i + 1) + ": " + addSpaces(C[i], 7) + "\tD" + (i + 1) + ": " + addSpaces(D[i], 7) + "\r\n";
} }
private void getK() {
txtPC2.Text = "";
string[] CiDi = new string[16]; for (int i = 15; i >= 0; i--) {
CiDi[i] = C[i] + D[i];
K[i] = des.getPermutasiKompresi2(CiDi[i]);
txtPC2.Text += "K" + (i + 1) + ": " + addSpaces(K[i], 6) + "\r\n";
} }
private void deciphering() {
clearArray(); string L16R16 =
des.getInitialPermutation(deleteSpaces(CipherBiner)); L[16] = L16R16.Substring(0, L16R16.Length / 2); R[16] = L16R16.Substring(L16R16.Length / 2);
txtAi.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; txtBi.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; txtPBi.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; txtLiRi.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; for (int x = 15; x >= 0; x--)
{
(2)
txtLiRi.Text += "L" + (x + 1) + ": " + addSpaces(L[x + 1], 4) + "\t\tR" + (x + 1) + ": " + addSpaces(R[x + 1], 4) + "\r\n";
ER[x] = des.Ekspansi(R[x]);
for (int i = 0; i < ER[x].Length; i++) {
Ai[x] += Convert.ToInt16(ER[x][i]) ^ Convert.ToInt16(K[x][i]);
}
txtAi.Text += "A" + (x + 1) + ": " + addSpaces(Ai[x], 6) + "\r\n";
Bi[x] = des.SubstitutionBox(Ai[x]);
txtBi.Text += "B" + (x + 1) + ": " + addSpaces(Bi[x], 4) + "\r\n";
PBi[x] = des.MutasiPBox(Bi[x]);
txtPBi.Text += "P(B" + (x + 1) + "): " + addSpaces(PBi[x], 4) + "\r\n";
for (int i = 0; i < PBi[x].Length; i++) {
L[x] += Convert.ToInt16(PBi[x][i]) ^ Convert.ToInt16(R[x + 1][i]);
} }
txtAi.Text += "\r\n\n"; txtBi.Text += "\r\n\n"; txtPBi.Text += "\r\n\n"; txtLiRi.Text += "\r\n\n";
PlainBiner = des.getInversInitialPermutation(L[0] + R[0]); txtIP.Text += "Putaran ke-" + (putaran + 1) + ":\r\n";
txtIP.Text += addSpaces(L[0], 8) + " " + addSpaces(R[0], 8) + "\r\n\n";
txtL0.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; txtL0.Text += addSpaces(L[0], 8) + "\r\n\n";
txtR0.Text += "Putaran ke-" + (putaran + 1) + ":\r\n"; txtR0.Text += addSpaces(R[0], 8) + "\r\n\n";
txtPlainBiner.Text += addSpaces(PlainBiner, 8); string[] arrayPlain = new string[8];
arrayPlain = addSpaces(PlainBiner, 8).Split(' '); for (int i = 0; i < arrayPlain.Length; i++) {
int PlainDec = getDecimal(arrayPlain[i]); Plaintext += char.ConvertFromUtf32(PlainDec); }
Plaintext = Plaintext.Replace("#", ""); txtPlaintext.Text = Plaintext;
}
private void clearArray() {
Array.Clear(Ai, 0, Ai.Length); Array.Clear(L, 0, L.Length); Array.Clear(R, 0, R.Length); Array.Clear(ER, 0, ER.Length);
(3)
Array.Clear(Bi, 0, Bi.Length); Array.Clear(PBi, 0, PBi.Length); }
private void txtCiphertext_TextChanged(object sender, EventArgs e) {
CipherBiner = "";
string[] cipher = txtCiphertext.Text.Split(' '); for (int i = 0; i < cipher.Length - 1; i++) {
CipherBiner += getBiner(Convert.ToInt32(cipher[i])) + " "; }
txtBinerCipher.Text = CipherBiner; }
private void txtKunci_TextChanged(object sender, EventArgs e) {
KunciBiner = "";
foreach (char c in txtKunci.Text) {
KunciBiner += getBiner(System.Convert.ToInt32(c)) + " "; }
txtBinerKunci.Text = KunciBiner; }
private void btnSimpan_Click(object sender, EventArgs e) {
saveFileDialog1.Filter = "txt files |*.txt|All files |*.*"; saveFileDialog1.InitialDirectory = @"D:\";
saveFileDialog1.Title = "Save File"; saveFileDialog1.FileName = "*.txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
string filename = saveFileDialog1.FileName; FileStream fstream = new FileStream(filename, FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fstream); SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(txtPlaintext.Text); sw.Flush();
sw.Close();
MessageBox.Show("Plaintext berhasil disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
private void btnBukaImage_Click(object sender, EventArgs e) {
OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Title = "Open Image File";
(4)
openFileDialog1.Filter = "Image Files(*.bmp)|*.bmp"; openFileDialog1.FileName = "*.bmp";
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
Bitmap gambar = new Bitmap(openFileDialog1.FileName); imgStego.Image = gambar;
string path = Path.GetFullPath(openFileDialog1.FileName); FileInfo fileInfo = new FileInfo(path);
double fileSize = fileInfo.Length / 1024; txtSize.Text = fileSize.ToString();
txtDimensi.Text = gambar.Width + " x " + gambar.Height; }
}
private void btnEkstrak_Click(object sender, EventArgs e) {
Bitmap image = new Bitmap(imgStego.Image); int x = image.Width;
int r, g, b;
string pixels = "";
for (int i = 0; i < 1; i++) {
for (int j = 0; j < x; j++) {
r = image.GetPixel(j, i).R; g = image.GetPixel(j, i).G; b = image.GetPixel(j, i).B;
pixels += r + " " + g + " " + b + " "; }
}
pixels = pixels.Remove(pixels.IndexOf("0 0 0 0")); txtCiphertext.Text = pixels;
}
private void btnDecrypt_Click(object sender, EventArgs e) {
if (txtKunci.TextLength != 8) {
MessageBox.Show("Kunci harus 8 Karakter", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
} else {
Plaintext = ""; int index = 0; putaran = 0;
string[] cipherArray = txtCiphertext.Text.Split(' '); loop = cipherArray.Length / 8;
getCD(); getCiDi(); getK();
(5)
for (int i = 0; i < loop; i++) {
CipherBiner = "";
for (int j = index; j < index + 8; j++) {
CipherBiner += getCipherBiner(cipherArray[j]) + " "; }
deciphering(); index += 8; putaran++; }
} } } }
(6)