A-1
void ENKRIPSIToolStripMenuItemClick(object sender, Eve ntArgs e)
void DEKRIPSIToolStripMenuItemClick(object sender, Eve ntArgs e)
dekrip.n = n; keluar dari Aplikasi?","konfirmasi",
A-3
2. Enkripsi plainteks menggunakan Algoritma ADFGVX Cipher
string[] arrkunci1
string tekss = richTextBox1.Text.ToUpper().ToString(); char[] teks = tekss.ToCharArray();
string[] cipher = new string[10000]; nteks = tekss.Length;
int l = 0;
Stopwatch timer = new Stopwatch(); timer.Start();
Convert.ToDouble(l)/Convert.ToDouble(textBox3.TextLength);
char[] txtkunci = textBox3.Text.ToUpper().ToCharArray(); barkey = (Convert.ToInt16( Math.Ceiling(n)))+2;
else{
char[] tempkey = new char[kolkey]; char[] tempkey1 = new char[10000];
A-5
char[] txtkunci = textBox5.Text.ToCharArray();
string tempbiner;
char[] biner = new char[nW]; nW = textBox3.TextLength;
Stopwatch timer = new Stopwatch(); timer.Start();
Convert.ToInt16(char.GetNumericValue(biner[j])) * publik[j];
5.
Dekripsi cipherkey menggunakan Algoritma Knapsackint invmodulo = Convert.ToInt16(textBox4.Text);
string plainkey = "";
Stopwatch timer = new Stopwatch(); timer.Start();
for (int i=0; i<n; i++){
A-7
6.
Dekripsi Cipherteks Menggunakan Algoritma ADFGVX Cipherstring[] arrkunci1 char[] tempkey = textBox5.Text.ToUpper().ToCharArray(); char[] tempkey1 = new char[1000];
string tempplainteks="";
Stopwatch timer = new Stopwatch(); timer.Start();
char[] tempplainteks1 = tempplainteks.ToCharArray(); int x = 0;
while (x<textBox7.TextLength){
if (char.IsLetter(tempplainteks1[x]) == true && temppl ainteks1[x] != 'x'){
textBox8.Text +=arrkunci2[Array.IndexOf(arrkunci1, (te mpplainteks1[x]).ToString()), Array.IndexOf(arrkunci1, (temppl ainteks1[x+1].ToString()))];
break; }
else{
textBox8.Text += tempplainteks1[x].ToString(); x+=1;
} }
timer.Stop();
B-1
Curriculum Vitae
Data Pribadi
Nama : Jul Ilmi Harahap
Alamat : Desa Hutaimbaru, Kec. Halongonan, Kab. Padang Lawas Utara, Prov. Sumatera Utara
Kode Post : 22753
Nomor Telepon : 082370044798
Email : harahapilmi@gmail.com
Jenis Kelamin : Perempuan
Tanggal Kelahiran : 28 Oktober 1993
Tempat Kelahiran : Napa gadung laut
Warga Negara : Indonesia
Agama : Islam
Jenjang Pendidikan
Periode Institusi Pendidikan
2000-2006 Sekolah Dasar Negeri 100670 Hutaimbaru
2006-2009 Madrasah Tsanawiyah Swasta Al-Yunusiah, Hutaimbaru,
2009-2012 Sekolah Menengah Atas Negeri 01 Halongonan
Kemampuan
Programming HTML, Php
Design Photoshop, CSS
Microsoft Word, Excel, PowerPoint
Pendidikan Non Formal
Periode/Tahun Nama Lembaga/Seminar
2012
Smartfren
“Tren Data Evdo : Kulik Lebih Jauh Lagi Teknologi Rev B”
UKMI Ad-Dakwah Universitas Sumatera Utara “Mentoring Akbar Universitas”
2013
IMILKOM (Ikatan Mahasiswa Ilmu Komputer) “What Will You Be 2013”
UKMI Al-Khuwarizmi Fasilkom-Ti Universitas Sumatera Utara “Peserta Kelas Media interaktif dan Web Development”
2014
Universitas Sumatera Utara
“SENARAI (Seminar Nasional Literasi Informasi) 2014”
IMILKOM (Ikatan Mahasiswa Ilmu Komputer) “Kewirausahaan & Talk Show 2014”
UKM Fotografi Universitas Sumatera Utara “Peserta Workshop Dasar VII UKM Fotografi USU”
2015
B-3
Pengalaman Organisasi
Pengalaman Kerja
Periode/Tahun Jabatan Nama Organisasi
2012-2013 Anggota
Ukmi Al-Khuwarizmi Fasilkom-Ti Universitas Sumatera Utara
2013-2014 Sekretaris Devisi
Ukmi Al-Khuwarizmi Fasilkom-Ti Universitas Sumatera Utara
2015-2016
Sekretaris Umum Unit Kegiatan Mahasiswa (UKM) Fotografi USU
1. Internship –Divisi Keuangan
DAFTAR PUSTAKA
Agarwal, Ashish. 2011. Encrypting massage using the merkle-hellmen knapsack
cryptosystem. IJCSNS international jurnal of computer science and network
security 11(5): 12-14.
Cockburn, Alistair. 2001. Writing Effective Use-Cases. Addison-Wesley: Amerika.
Hayanti, Disa. 2013. Implementasi Pengamanan FIle Teks Dengan Algoritma
Kriptografi Knapsack dan Algoritma Steganografi FOF (Fisrt Of Life).
Skripsi. Universitas Sumatera Utara.
Kromodimoeljo, S. 2010. Teori dan Aplikasi Kriptografi. SPK IT Consulting. Jakarta.
Manoharan, N., Balasubramanian., Nandhini, Uma. & Sujatha, V. 2015. A study on
cryptography using adfgvx , single or double columnar transposition, playfair,
vigenere algorithms. International jurnal of anvanced research in datamining
and cloud computing 3(1): 21-32.
Mollin, R.A. 2007. An Introduction Of Cryptography. 2nd Edition. Taylor & Francis
Group: LLC. United State Of America.
Prameswara, Gustaf. 2012. Implementasi algoritma one time pad pada data teks dan
knapsack pada kunci. Skripsi. Universitas Sumatera Utara.
66
Sachdeva, Komal. 2013. Public key cryptography with knapsack systems.
International jurnal of engineering and advanced technology (IJEAT) 3(2):
310-311.
Sihotang, Rajab. 2014. Analisis perbandingan algoritma nihilist dengan adfgvx pada
pengamanan file text. Skripsi. Universitas Sumatera Utara.
Sembiring, Dira Fahrendy. 2013. implementasi keamanan teks pada citra bitmap
dengan kombinasi algoritma knapsack dan algoritma least significant bit (lsb)
terhadap modifikasi nilai brightnes. Skripsi. Universitas Sumatera Utara.
Smart, N.P. 2016. Information security and cryptography: Cryptography made simple.
Springer International Publishing: Switzerland.
Whitten J. L., Bentley, L. D., K. C. 2004. Systems analysis & design methods. 7nd
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Sebelum melakukan perancangan sistem perlu dilakukan analisis sistem. Analisis
sistem merupakan proses penguraian sistem yang utuh ke dalam bagian-bagian yang
kecil dengan maksud untuk mengidentifikasi dan mengelompokkan permasalahan
yang ada sehingga diperoleh gambaran tentang kebutuhan sistem dan alur kerja dari
sistem. Analisis sistem terbagi menjadi tiga langkah yaitu, analisis permasalahan,
analisis kebutuhan dan analisis proses. Analisis permasalahan digunakan untuk
memahami penyebab masalah serta kelayakan masalah. Analisis kebutuhan bertujuan
untuk mengetahui data apa dan proses apa yang dibutuhkan dalam sistem. Analisis
proses bertujuan untuk menjelaskan bagaimana proses dari sistem.
3.1.1 Analisis Masalah
Anlisis masalah merupakan langkah pertama yang dilakukan dalam analisis sistem.
masalah yang akan diselesaikan dengan menggunakan sistem ini adalah bagaimana
mengamankan sebuah data sehingga hanya pengirim pesan dan penerima pesan saja
yang bisa mengerti pesan tersebut. Sistem ini menggunakan sebuah algoritma
kriptografi simetris ADFGVX Cipher untuk mengamankan data, supaya pesan lebih
aman kunci yang digunakan dalam ADFGVX Cipher diamankan kembali dengan
menggunakan algoritma kriptografi asimetris knapsack. Analisis masalah dapat
diuraikan sebagai berikut:
1. User merupakan orang yang melakukan pembangkitan kunci, proses enkripsi
18
4. Sistem, menunjukkan pengamanan data yang baik dari kombinasi algoritma
ADFGVX cipher dan algoritma kanpsack
Selanjutnya digunakan diagram ishikawa (fishbone diagram) untuk
mengidentifikasi masalah. Diagram ishikawa merupakan alat visual yang digunakan
untuk mengidentifikasi, mengeksplorasi dan menggambarkan secara detail semua
penyebab yang berhubungan dengan permasalahan. Diagram ishikawa sistem dapat
dilihat pada Gambar 3.1.
Gambar 3.1. Diagram Ishikawa Sistem
3.1.2 Analisis Kebutuhan
Analisis kebutuhan merupakan langkah awal menentukan seperti apa sistem yang
akan dihasilkan. Analisis kebutuhan terbagi menjadi dua, yaitu kebutuhan fungsional
dan kebutuhan nonfungsional. Kebutuhan fungsional mendekskripsikan aktivitas yang
dilakukan oleh suatu sistem, sedangkan kebutuhan nonfungsional mendekskripsikan
fitur, karakteristik dan batasan lainnya.
User Kebutuhan user terhadap
3.1.2.1 Kebutuhan Fungsional
kebutuhan fungsional yang harus dipenuhi oleh sistem yang dirancang adalah:
1. Sistem mampu membaca String dalam file teks yang diinputkan oleh user
maupun file yang telah ada dalam format *.txt, *.doc/docx.
2. Sistem mampu melakukan enkripsi pesan dengan algoritma ADFGVX Cipher
dengan kunci yang diinputkan dan telah disepakati oleh pengirim dan penerima
pesan, sehingga didapat hasil berupa cipherteks.
3. Sistem mampu melakukan enkripsi terhadap kata kunci dengan menggunakan
algoritma Knapsack, sehingga didapatkan hasil berupa cipherkey.
4. Sistem mampu melakukan dekripsi terhadap cipherkey sehingga menjadi string
yang sama dengan string sebelum di enkripsi.
5. Sistem mampu melakukan dekripsi terhadap cipherteks sehingga menjadi string
yang sama dengan string sebelum di enkripsi.
3.1.2.2 Kebutuhan Nonfungsional
Kebutuhan nonfungsional pada sistem ini meliputi:
1. Performa
Sistem yang dibangun harus dapat melakukan proses kriptografi yang meliputi
pembangkitan kunci, proses enkripsi dan proses dekripsi.
2. Mudah digunakan dan dipelajari
Sistem yang akan dibangun harus memiliki tampilan yang user friendly agar
mudah dipahami oleh user.
3. Ekonomi
Sistem yang akan dibangun harus dapat bekerja dengan baik tanpa perlu
mengeluarkan biaya yang tinggi.
4. Dokumentasi
20
3.1.3 Analisis Proses
Sistem dibangun menggunakan bahasa pemrograman C#. Algoritma kriptografi yang
digunakan adalah algoritma simetris ADFGVX Cipher dan algoritma asimetris
knapsack.
3.2 Perancangan Sistem
Perancangan aplikasi bertujuan untuk menggambarkan semua kondisi dan
bagian-bagian yang berperan dalam sistem. Perancangan sistem yang akan diaplikasikan ke
dalam penelitian ini adalah perancangan sistem dengan menggunakan UML. UML
merupakan bahasa yang berfungsi untuk menjelaskan masing-masing komponen pada
sistem secara detail, berikut dengan interaksi yang terjadi pada masing-masing
komponen tersebut. Model UML yang digunakan, diantaranya adalah : use case
diagram, activity diagram, serta sequence diagram.
3.2.1 Use-case Diagram
Use case diagram merupakan suatu gambaran atau deskripsi yang menjelaskan
interaksi antara sistem dan actor (user) yang mencakup kebutuhan (requirement) yang
ada pada sistem tersebut. Hubungan antara actor dengan use case dihubungkan
dengan garis lurus. Hubungan use case yang menunjukan penggunaan kembali
tindakan yang dimodelkan oleh use case lain disebut include. Sementara itu,
hubungan use case yang dimaksudkan untuk menambahkan bagian untuk use case
yang ada serta untuk pemodelan komponen layanan opsional disebut extend
(Cockburn, Alistair. 2000).Use-case diagram yang akan digunakan dalam sistem ini
Gambar 3.2. Use Case Diagram
Pada gambar 3.2 terdapat actor yang berfungsi sebagai user sistem. Actor
melakukan input text terlebih dahulu untuk bisa melakukan enkripsi kemudian
melakukan dekripsi. Untuk input text, user dapat melakukan dengan cara mengetikkan
teks di dalam tekxbox atau memilih file yang telah disediakan. Hasil enkripsi ataupun
hasil dekripsi dapat disimpan oleh user jika menginginkannya. Untuk enkripsi
terdapat dua proses yaitu proses enkripsi kunci dan proses enkripsi plainteks. Proses
dekripsi juga terbagi menjadi dua yaitu proses dekripsi kunci dan proses dekripsi
palinteks. Tabel deskripsi use-case input text dapat dilihat pada Tabel 3.1.
Tabel 3.1 Deskripsi use-case input Text
22
Pre condition user mempersiapkan file yang akan dienkripsi dengan ekstensi *.txt atau *.Doc.
Post condition Textbox menampilkan plainteks
Success scenario 1. User mengetik secara manual plainteks di dalam textbox. 2. User menekan tombol pilih file.
3. User memilih file.
4. User menekan tombol open. 5. Textbox menampilkan plainteks.
Alternative flow
-Dekripsi dari use-case enkripsi plainteks dapat dilihat pada Gambar 3.2.
Tabel 3.2 Deskripsi use-case enkripsi plainteks
Name Use-Case Enkripsi Plainteks
Actor User
Trigger user memasukkan plainteks yang akan dienkripsi dan memasukkan kunci .
Pre condition user mempersiapkan file yang akan dienkripsi dengan ekstensi *.txt atau *.Doc. User juga mempersiapkan kunci untuk enkripsi.
Post condition User mendapatkan file hasil enkripsi atau Cipherteks
Success scenario 6. user telah memasukkan file yang akan di enkripsi beserta kuncinya
7. user mengakses tombol enkripsi
8. Sistem melakukan proses enkripsi terhadap plainteks yang telah dimasukkan.
9. user mendapatkan cipherteks, yaitu hasil enkripsi dari
plainteks.
Alternative flow Jika plainteks tidak dimasukkan maka sistem akan mengalami error
Tabel deskripsi use-case enkripsi kuncidapat dilihat pada Tabel 3.3.
Tabel 3.3 Deskripsi use-case enkripsi Kunci
Name Use-Case Enkripsi Kunci
Actor User
Trigger User memasukkan kunci, barisan superincreasing nilai m dan nilai n
Pre condition User mempersiapkan kunci yang akan di enkripsi
Post condition User mendapatkan file hasil enkripsi atau cipherkey dari kunci
Success scenario 1. User telah memasukkan kata kunci yang akan digunakan
2. User mengacak barisan superincreasing dan juga
membagkitkan nilai m dan nilai n
3. Sistem melakukan proses enkripsi terhadap kata kunci yang telah dimasukkan
4. User mendapatkan cipherkey, yaitu hasil enkripsi dari kunci.
Alternative flow Jika kunci tidak dimasukkan maka sistem akan mengalami error
Tabel deskripsi use-case dekripsi kuncidapat dilihat pada Tabel 3.4.
Tabel 3.4 Deskripsi use-case Dekripsi kunci
Name Use-Case Dekripsi Kunci
Actor User
Trigger User memasukkan cipherkey kunci dan membangkitkan barisan superincreasing nilai m dan n
Pre condition User mempersiapkan cipherkey kunci yang akan di enkripsi
24
Success
scenario
1. User telah memasukkan cipherkey kunci yang akan dienkripsi
2. User membangkitkan barisan superincreasing nilai m dan n
3. Sistem melakukan proses dekripsi terhadap cipherkey kunci yang telah dimasukkan
4. User mendapatkan plainkey kunci, yaitu kata kunci awal
Alternative flow Jika Cipherkey tidak dimasukkan maka sistem akan mengalami error
Tabel deskripsi use-case dekripsi cipherteksdapat dilihat pada Tabel 3.5.
Tabel 3.5 Deskripsi use-case dekripsi cipherteks
Name Use-Case Dekripsi Cipherteks
Actor User
Trigger User memasukkan cipherteks yang akan dienkripsi
Pre condition User mempersiapkan cipherteks hasil enkripsi
Post condition User mendapatkan file asli atau plainteks awal
Success scenario 1. User telah memasukkan cipherteks yang akan dienkripsi
2. User memasukkan kata kunci yang telah di dekripsi
3. Sistem melakukan proses dekripsi terhadap cipherteks yang telah dimasukkan
4. User mendapatkan plainteks, yaitu file asli
Alternative flow Jika cipherteks tidak dimasukkan maka sistem akan mengalami error
3.2.2 Activity Diagram
Activitydiagram berguna untuk menampilkan gambaran langkah-langkah proses atau
alur kegiatan dari sistem (Whitten, J.L. & Bentley, L.D. 2007). Activity diagram juga
bertujuan untuk memberikan bantuan untuk memahami proses dan gambaran setiap
interaksi yang terjadi di dalam suatu sistem. Activity diagram untuk proses enkripsi
Gambar 3.3. Activity Diagram Enkripsi
Pada Gambar 3.3 dapat dilihat untuk melakukan enkripsi hal pertama yang
dilakukan adalah memilih file yang akan di enkripsi, memasukkan kunci kemudian
mengenkripsi file. Setelah file dienkripsi hal selanjutnya yang dilakukan adalah
mengenkripsi kata kunci. Untuk melakukan enkripsi kunci dibutuhkan barisan
superinceasing nilai m dan nilai n. setelah mendapatkan barisan superincreasing nilai
m dan nilai m, maka dilakukan enkripsi kunci. Activity diagram untuk proses dekripsi
26
Gambar 3.4. Activity Diagram Dekripsi
Pada Gambar 3.4 dapat dilihat alur sistem dari proses dekripsi. Pertama,
masukkan cipherteks kunci, masukkan barisan superincreasing nilai m dan nilai n,
kemudian dekripsi kunci. Setelah plainteks kunci didapatkan, selanjutnya cari file
cipherteks yang akan didekripsi, kemudian dekripsi file cipherteks dengan
menggunakan kunci yang telah di dekripsi.
3.2.3 Sequence diagram
Sequence diagram adalah diagram yang menunjukan interaksi yang ada pada sistem
dan menjelaskan bagaimana proses operasi yang ada pada masing-masing komponen
pada sistem berdasarkan perintah yang ada pada sistem. Diagram ini membangun
suatu diagram pesan secara berurutan dan menunjukan interaksi yang disusun secara
berurutan. Sequence diagram pada sistem yang dirancang ditunjukkan pada Gambar
Gambar 3.5. Sequence Diagram
3.2.4 Flowchart
Pada sistem ini terdapat 7 flowchart yang terdiri dari flowchart sistem enkripsi dan
dekripsi, flowchart enkripsi dan dekripsi algoritma ADFGVX Cipher, flowchart
enkripsi dan dekripsi algoritma Knapsack dan flowchart pembangkit kunci algoritma
knapsack.
3.2.4.1 Flowchart enkripsi dan dekripsi sistem
Sistem yang akan dibuat terdiri dari dua proses yaitu proses enkripsi dan proses
dekripsi. Untuk alur dari proses enkripsi dapat dilihat pada Gambar 3.6, sedangkan
28
Gambar 3.6. Proses Enkripsi Sistem Gambar 3.7. Proses Dekripsi Sistem
3.2.4.2 Flowchart ADFGVX Cipher
Proses yang dilakukan oleh algoritma ADFGVX Cipher adalah mengamankan data.
Algoritma ADFGVX mempunyai dua proses yaitu proses enkripsi dan proses
dekripsi. Untuk alur dari proses enkripsi algoritma ADFGVX dapat dilihat pada
30
3.2.4.3 Flowchart Knapsack
Flowchart alur dari sistem enkripsi knapsack ditujukan pada Gambar 3.10, flowchart
untuk proses dekripsi ditujukan pada Gambar 3.11 dan untuk flowchart pembangkit
kunci dari algoritma knapsack dapat dilihat pada Gambar 3.12.
Gambar 3.12. Flowchart Pembangkit Kunci Algoritma Knapsack
3.3 Perancangan Antar Muka
Perancangan antar muka merupakan penghubung antara user dengan sistem. Syarat
utama pembuatan antar muka adalah berorientasi pada user friendly, hal ini
dimaksudkan untuk memudahkan user dalam pengoperasian sistem. Mulai
Panjang Barisan (W)
Acak Barisan (W)
Barisan Kprivat
Acak Nilai M, N
Kpublik= (W.N) Mod
M
KPublik
34
3.3.1 Rancangan Halaman Awal
Halaman awal sistem merupakan halaman yang pertama kali tampil saat sistem
dijalankan. Halaman awal berisi tentang judul penelitian, nama penulis, dan instansi
pendidikan penulis. Rancangan halaman awal dapat dilihat pada Gambar 3.13.
Gambar 3.13 Rancangan Halaman Awal
Gambar 3.13. Rancangan Halaman Utama
Keterangan gambar pada rancangan halaman Utama dapat dilihat pada Tabel 3.6.
Tabel 3.6 keterangan Rancangan Halaman Utama
No Type Teks Nama Keterangan
1 Button Proses Button1 Terdapat dua proses yaitu enkripsi dan
dekripsi
2 Button Tentang Button2 Menampilkan keterangan sistem
3 Button Bantuan Button3 Menampilkan tata cara Penggunaan
sistem PROSES TENTANG BANTUAN KELUAR
Implementasi Algoritma ADFGVX
Cipher
dan
Knapsack
dalam Pengamanan Data Teks
Jul Ilmi Harahap 121401048
PROGRAM STUDI S-1 ILMU KOMPUTER
5 Label Judul Skripsi
Label1 Menampilkan judul skripsi
6 PictureBo
3.3.2 Rancangan Halaman proses enkripsi file dan enkripsi kunci
Rancangan halaman proses enkripsi file dan enkripsi kunci dapat dilihat pada Gambar
3.14.
Enkripsi File 1 Enkripsi Kunci
36
Keterangan rancangan halaman enkripsi dapat dilihat pada Tabel 3.7.
Tabel 3.7 Keterangan Rancangan Halaman Enkripsi
No Tipe Teks Name Keterangan
8 TextBox - TextBox3 Menampilkan Ukuran
File
9 Label Kunci Label4 -
10 TextBox - TextBox4 Inputan kata kunci
11 Label Hasil Enkripsi Pesan Label5 -
12 TextBox - TextBox5 Menampilkan Hasil
Enkripsi
13 Button Enkripsi Button2 Enkripsi file/teks
14 Button Simpan Button3 SImpan hasil enkripsi
15 Label Waktu Eksekusi Label6 -
16 TextBox - TextBox6 Menampilkan waktu
eksekusi
17 Label Ukuran file Label7 -
18 TextBox - TextBox7 Menampilkan ukuran
23 Label Nilai n Label11 -
32 TextBox - TextBox12 Menampilkan kunci
public
33 Button Acak Kunci Button4 Mengacak kunci
34 TextBox - TextBox13 Menampilkan hasil
enkripsi kunci
35 Button Enkripsi Button5 Melakukan proses
enkripsi kunci
36 Button Simpan Button6 Menyimpan hasil
enkripsi kunci
37 TextBox - TextBox14 Menampilkan lama
proses enkripsi
38 TextBox - TextBox15 Menampilkan ukuran
file
39 Button Reset Button7 Menghapus semua isi
textbox
40 Button Kembali Button8 Kembali ke halaman
depan
38
Gambar 3.15. Rancangan Halaman Dekripsi
Keterangan rancangan untuk halaman dekripsi kunci dan dekripsi file dapat dilihat
pada Tabel 3.8.
Tabel 3.8 Keterangan Rancangan Halaman Dekripsi
No Type Teks Nama Keterangan
Dekripsi Kunci 1 Dekripsi FIle
7 Label Waktu Eksekusi Label6 -
8 Label Ukuran File Label7 -
9 TextBox - TextBox1 Menampilkan Cipherteks kunci
10 TextBox - TextBox2 Menampilkan barisan kunci
privat
11 TextBox - TextBox3 Menampilkan nilai m
12 TextBox - TextBox4 Menampilkan Nilai n-1
13 TextBox - TextBox5 Menampilkan hasil dekripsi
kunci
14 TextBox - TextBox6 Menampilkan waktu eksekusi
sistem
15 TextBox - TextBox7 Menampilkan Ukuran File
16 Button Dekripsi Button1 Melakukan proses dekripsi
kunci
17 Button Simpan Button2 Menyimpan hasil dekripsi
kunci
24 TextBox - TextBox8 Menampilkan nama file
25 TextBox - TextBox9 Menampilkan isi file
26 TextBox - TextBox10 Menampilkan hasil dekripsi file
27 TextBox - TextBox11 Menampilkan waktu eksekusi
40
32 Button Kembali Button6 Menghapus semua field
32 Button Reset Button7 Kembali ke halaman depan
3.3.4 Rancangan Halaman About
Halaman about merupakan halaman yang berisi biodata dari penulis. Rancangan
halaman about dapat dilihat pada Gambar 3.16.
Gambar 3.16. Rancangan Halaman About
Keterangan rancangan halaman About dapat dilihat pada Tabel 3.9
Tabel 3.9 Keterangan Rancangan Halaman About
No Type Teks Nama Keterangan
1 Label Judul skripsi Label1 -
2 Label Created By Label2 -
3 PictureBox - PictoreBox1 Menampilka gambar
penulis
IMPLEMENTASI ADFGVX CIPHER DAN
penulis
5 Button Kembali Button1 Kembali ke halaman
depan
3.3.5 Rancangan Halaman Help
Halaman help menampilkan tatacara Penggunaan sistem. Halaman ini akan
membantu User dalam menggunakan sistem. Rancangan halaman help ditunjukkan
pada Gambar 3.17.
Gambar 3.10 Rancangan halaman Help
Gambar 3.17. Rancangan Halaman Help
Keterangan rancangan halaman help dapat dilihat pada Tabel 3.10.
Tabel 3.10 Rancangan Halaman Help 1
3 1.
2.
3.
4.
42
2 Label Keterangan
Penggunaan
Label1 -
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi
Setelah tahap analisis dan perancangan sistem selesai seperti yang telah diuraikan
pada Bab III, tahap selanjutnya adalah implementasi sistem. Penulis menggunakan c#
sebagai bahasa pemrogramana dan SharDepelov sebagai editor untuk membangun
sistem. Aplikasi dijalankan pada laptop dengan sistem operasi Windows 7, Ram
berukuran 2.0 GB dan intel® CoreTM i3 sebagai processor. Dalam sistem ini terdapat
empat halaman yaitu: halaman Home, halaman Enkripsi, halaman Dekripsi, Halaman
About, dan halaman Help.
4.1.1 Halaman Home
Halaman Home merupakan halaman yang menampilkan judul skripsi, logo instansi,
nama penulis beserta nomor induk mahasiswa (NIM), nama departemen, universitas
dan tahun. Pada halaman Home juga terdapat menubar yaitu: menu Proses yang berisi
dua Submenu yaitu Enkripsi dan Dekripsi. Submenu Enkripsi untuk memanggil
halaman Enkripsi, Submenu Dekripsi untuk memanggil halaman Dekripsi. Menu
Tentang untuk memanggil halaman About, dan menu Bantuan untuk memanggil
44
Gambar 4.1. Tampilan Halaman Home
4.1.2 Halaman Enkripsi
Menubar Enkripsi terdapat pada submenu proses. Tampilan dari halaman enkripsi
dapat dilihat pada Gambar 4.2.
Halaman dekripsi merupakan halaman yang menampilkan proses dekripsi kunci dan
proses dekripsi file. Tampilan halaman proses dekripsi dapat dilihat pada Gambar 4.3.
Gambar 4.3. Halaman Dekripsi
4.1.4 Halaman About
Halaman About menampilkan judul skripsi, gambar penulis dan biodata penulis.
46
4.1.5 Halaman Help
Halaman Help berfungsi untuk membantu user mengetahui bagaimana cara
menggunakan sistem. Tampilan halaman Help dapat dilihat pada Gambar 4.5.
Gambar 4.5. Halaman Help
4.2 Pengujian
Pada tahap pengujian akan dilakukan pengujian keberhasilan sistem dalam melakukan
enkripsi dan dekripsi file dengan menggunakan algoritma ADFGVX cipher dan
knapsack. File yang akan dienkripsi merupakan file dengan ekstensi *.txt dan *.doc.
4.2.1 Proses Pengujian Enkripsi pesan
Proses enkripsi pesan dilakukan dengan menggunakan algoritma ADFGVX cipher.
algoritma ADFGVX cipher menggunakan tabel 6x6 yang berisi 26 alphabet dan
angka 0-9. Untuk melakukan proses enkripsi user terlebih dahulu menekan tombol
Buka File mencari file yang akan di enkripsi atau user bisa menginputkan langsung ke
Gambar 4.6. Buka File
Setelah file diinputkan pengguna terlebih dahulu menginputkan kata kunci
sebelum melakukan enkripsi. Proses input plainteks dan kunci dapat dilihat pada
48
Untuk melakukan enkripsi digunakan algoritma ADFGXV cipher, berikut adalah
langkah-langkah proses enkripsi plainteks.
1. Contoh plainteks yang akan dienkripsi adalah “HARAHAP28” dengan kata kunci
ilkom. Lakukan substitusi plainteks terhadap tabel ADFGVX cipher. setiap huruf
di dalam plainteks di substitusi menjadi dua huruf berdasarkan baris dan kolom.
Tabel ADFGVX cipher dapat dilihat pada Tabel 4.1.
Tabel 4.1. Tabel ADFGVX Cipher
A D F G V X
Dari Tabel 4.1 didapatkan substitusi dari plainteks “HARAHAP28” adalah DD
AX FA AX DD AX FF VD XV.
2. Tentukan kata kunci yang terdiri dari huruf saja. Kunci ini akan digunakan pada
proses tranposisi. Misal kunci yang digunakan adalah ILKOM. Maka buatlah
sebuah tabel baru dan tuliskan kata kunci di baris pertama. Kemudian tulis hasil
substitusi plainteks dibawahnya berurutan dari kanan kemudian kebawah jika ada
sisa maka diisi dengan huruf x , seperti pada Tabel 4.2.
Tabel 4.2. Tabel Kunci Enkripsi ADFGVX Cipher
3. Selanjutnya urutkan kolom pada kata kunci berdasarkan alphabet. Maka
ILKOM menjadi IKLMO sehingga menjadi seperti pada Tabel 4.3.
Tabel 4.3. Perubahan Posisi Kunci ADFGVX Cipher
I K L M O
1 3 2 5 4
D A D F X
D X D A A
A F X V F
x V X D X
4. Untuk mendapatkan cipherteks lakukan pembacaan dari huruf-huruf yag
berada dibaris pertama dan seterusnya pada Tabel 4.3. Maka untuk
plainteks “HARAHAP28” dengan kata kunci “ilkom” didapatkan
“DDAxAXFVDDXx FAVDXAFX”.
Dengan langkah yang sama proses enkripsi dapat dilakukan untuk
mengenkripsi plainteks “ Ilmi harahap, mahasiswa S1 ilmu komputer stambuk 2012”
50
Gambar 4.8 menunjukkan hasil enkripsi dan juga waktu eksekusi dalam satuan
second, dimana untuk mengenkripsi plainteks “Ilmi harahap, mahasiswa S1 ilmu
komputer stambuk 2012” didapatkan plainteks “DDDAXDDGVFDFGADX
F20DFXDFAXGXFDXGADAV2FADFXAAADXVFDFAX1FXAA FADGAGF
FGGAGFxXDFX,XGF 1X FF GVDx” dengan lama proses selama 0.1150513 s.
Pada implementasinya algoritma ADFGVX cipher hanya mampu melakukan
enkripsi terhadap alphabet numeric saja, Untuk mengurangi kelemahan tersebut
penulis melakukan penambahan kondisi pada source code di dalam sistem.
Kondisinya adalah ketika sistem menemukan symbol pada plainteks maka letakkan
symbol tersebut pada posisi +1 dibelakang plainteks sesudahnya. Kondisi tersebut
berjalan dengan baik didalam sitem tetapi menyebabkan hasil ciphertekes yang
dikerjakan secara manual berbeda sedikit dengan hasil cipherteks yang didapatkan
dari sistem.
4.2.2 Proses Pengacakan Kunci
User menekan tombol Acak untuk mendapatkan kunci publik dan kunci privat, selain
kunci publik dan kunci privat, di dalam halaman enkripsi kunci terdapat nilai m dan
nilai n. Nilai m dan nilai m digunakan untuk mencari kunci publik.
Barisan superincreasing merupakan kunci privat yang didapatkan dengan cara
melakukan pengacakan terhadap bilangan bulat, dalam pengacakan barisan
superincreasing terdapat kondisi dimana setiap nilai di dalam barisan harus lebih
besar daripada jumlah semua nilai sebelumnya. Nilai m dan n merupakan bilangan
yang relatif prima.Dua bilangan dikatakan relatif prima jika FPB dari kedua bilangan
tersebut adalah sama dengan 1. Dimana nilai m harus lebih besar dari jumlah semua
elemen dalam barisan superincreasing.
Barisan superincrasing : 2 4 8 15 31 61 123
Nilam m : 6493
Nilai n : 103
Untuk mendapatkan kunci publik maka digunakan persamaan:
Kunci publik = (barisan superincrasing x n) mod m………..pers
Kunci publik = (8x103) mod 6493 = 824
Kunci publik = (15x103) mod 6493 = 1545
Kunci publik = (31x103) mod 6493 = 3193
Kunci publik = (61x103) mod 6493 = 6283
Kunci publik = (123x103) mod 6493 = 6176
Maka didapatkan kunci publik 206 412 824 1545 3193 6283 6176. Proses
pengacakan kunci dengan menggunakan sistem dapat dilihat pada Gambar 4.9.
Gambar 4.9. Proses Pengacakan Kunci
4.2.3 Enkripsi Kunci (plainkey)
Proses enkripsi plainkey dapat dilakukan setelah proses pengacakan kunci selesai.
Untuk melakukan enkripsi plainkey digunakan algoritma knapsack, berikut adalah
langkah-langkah proses enkripsi plainkey dengan menggunakan algoritma knapsack.
1. Kunci yang digunakan adalah “ilkom”, pertama ubah kata ilkom ke dalam biner,
untuk proses pengubahan kata kunci ke dalam biner dapat dilihat pada Tabel 4.4.
52
K 107 1101011
O 111 1101111
M 109 1101101
Didapatkan plainkey yang akan di enkripsi yaitu : 11010011101
100110101111011111101101.
2. Bagi plainkey menjadi blok dengan panjang 7 (merupakan panjang maksimal biner
untuk alphabet numeric). Kemudian setiap bit di dalam blok dikalikan dengan
elemen yang berkoresponden dengan kunci publik. Sebagai berikut:
Kunci publik : 206 412 824 1545 3193 6283 6176
Blok plainteks 1 : 1101001
Kriptogram : (1x206)+(1x412)+(1x1545)+(1x6176) = 8339
Blok plainteks 2 : 1101100
Kriptogram : (1x206)+(1x412)+(1x1545)+(1x3193) = 5356
Blok plainteks 3: 1101011
Kriptogram : (1x206)+(1x412)+(1x1545)+(1x6283)(+(1x6176) = 14622
Blok plainteks 4: 1101111
Kriptogram: (1x206)+(1x412)+(1x1545)+(1x3193)+(1x6283)+(1x6176) = 17815
Blok plainteks 5 : 1101101
Kriptogram: (1x206)+(1x412)+(1x1545)+(1x3193)+(1x6176) = 11120 = 11532
Maka didapatkanlah cipherkey dari ilkom yaitu : 8339 5356 14622 17815
Gambar 4.10. Proses Enkripsi Kunci
Gambar 4.10 menunjukkan hasil enkripsi dari plainkey sesuai dengan
perhitungan yang dilakukan secara manual. Waktu yang dibutuhkan untuk
mengenkripsi plainkey “ilkom” adalah 0.0024411 s.
4.2.4 Dekripsi Kunci
Untuk melakukan dekripsi cipherkey menjadi plainkey digunakan kunci privat atau
barisan superincreasing, nilai m dan nilai n yang didapatkan dari proses enkripsi
plainkey, serta mencari nilai n-1 yaitu n modulo m , sedemikian hingga n.n-1 ≡ 1 (mod
m).
Dik:
Cipherkey : 8339 5356 14622 17815 11532
Kunci privat : 2 4 8 15 31 61 123
Nilai m : 6493
Nilai n: 103
54
Tabel 4.5. Pencarian Nilai n-1
n-1 n.n-1 (mod m)
1 103.1 (mod 6493) = 103
2 103.2(mod 6493) = 206
. ….
4 103.4854(mod 6493) = 1
Maka didapatkan nilai n-1 = 4854. Proses pencarian nilai n-1 menggunakan sistem
dapat dilihat pada Gambar 4.11.
Gambar 4.11. proses pencarian Nilai n-1
Selanjutnya dilakukan proses dekripsi, berikut langkah langkah untuk
melakukan dekripsi cipherkey menggunakan algoritma knapsack.
1. Cari nilai plainkey sementara (Temp) dengan menggunakan persamaan :
Temp1 = (8339 x 4854) mod 6493 = 144
Temp2 = (5356 x 4854) mod 6493 = 52
Temp3 = (14622 x 4854) mod 6493 = 205
Temp4 = (17815 x 4854) mod 6493 = 236
Temp5 = (11532 x 4854) mod 6493 = 175
2. Cari nilai masing-masing Temp yang berkoresponden dengan nilai kunci privat
dengan menggunakan solusi knapsack superincreasing problem.
Solusi superincreasing knapsack :
a) Bandingkan nilai Temp dengan nilai terbesar di dalam barisan
superincreasing. Jika nilai terbesar di dalam barisan lebih kecil atau sama
dengan nilai Temp, maka nilai dimasukkan ke dalam knapsack, jika tidak
maka nilai tidak dimasukkan.
b) Kurangi nilai terbesar di dalam barisan dengan nilai Temp, kemudian
bandingkan nilai Temp sekarang dengan nilai terbesar selanjutnya. Demikian
seterusnya sampai semua nilai di dalam barisan selesai dibandingkan.
Cari nilai temp yang berkoresponden dengan nilai kunci privat seperti pada Tabel
4.6.
Tabel 4.6. Solusi Superincreasing Knapsack
56
Temp1 = 144, berkoresponden dengan 1101001
Dengan mengikuti langkah-langkah pada solusi superincreasing knapsack, maka di
dapatkan nilai dari masing-masing Temp sebagai berikut:
Temp2 = 52, berkoresponden dengan 1101100
Temp3 = 205, berkoresponden dengan 1101011
Temp4 = 236, berkoresponden dengan 1101111
Temp5 = 175, berkoresponden dengan 1101101
Kemudian ubah biner kedalam bilangan desimal dan cari char dari
masing-masing nilai desimal tersebut, seperti pada Tabel 4.7
Tabel 4.7 Perubahan Biner ke Char
No Tempi Biner ASCII Char
1 Temp1 1101001 105 i
2 Temp2 1101100 108 l
3 Temp3 1101011 107 k
4 Temp4 1101111 111 o
5 Temp5 1101101 109 m
Maka di dapatkan kembali plainkey, yaitu “ ilkom”. Proses dekripsi cipherkey
Gambar 4.12. Proses Dekripsi Cipherkey
Gambar 4.12 menunjukkan hasil dari proses dekripsi plainkey. Pada proses
dekripsi didapatkan kembali plainkey “ilkom” dengan waktu eksekusi selama 3.6988
detik.
4.2.5 Proses Dekripsi Chiperteks
Proses dekripsi cipherteks dilakukan dengan menggunakan algoritma ADFGVX
cipher. berikut langkah-langkah yang dilakukan untuk dekripsi cipherteks dengan
menggunakan contoh pada proses enkripsi.
7) Lakukan pemisahan cipherteks dengan cara membagi jumlah elemen yang ada
pada cipherteks dengan jumlah elemen yang ada pada kunci. Kita memiliki pesan
cipherteks DDAxAXFVDDXx FAVDXAFX dan misalkan kita memiliki kunci
ILKOM. Maka kita dapat membagi tiap kelompok terdiri dari 20/5= 4 huruf,
menjadi DDAx AXFV DDXx FAVD XAFX.
8) Selanjutnya, urutkan kunci sesuai alphabet, maka ILKOM menjadi IKLMO,
58
miliki, seperti pada Tabel 4.9.
Tabel 4.9. Tabel Kunci Dekripsi ADFGVX Cipher sesuai Urutan
I L K O M
menggunakan Tabel 4.9 didapatkan DDAXFAAXDDAXFFVDXVxx.
11)Langkah terakhir adalah mencari padanan karakter dari dua huruf yang kita
dapatkan dengan tabel ADFGVX, seperti pada Tabel 4.10.
Tabel 4.10. Tabel ADFGVX Cipher
A D F G V X
HARAHAP28. Untuk huruf xx tidak dilakukan pembacaan karena huruf tersebut
Dengan menggunakan langkah yang sama, untuk cipherteks
“DDDAXDDGVFD
FGADXF20DFXDFAXGXFDXGADAV2FADFXAAADXVFDFAX1FXAA
ADGAGF
FGGAGFxXDFX,XGF 1X FF GVDx” di dapatkan kembali plainteks seperti pada
Gambar 4.13.
Gambar 4.13. Proses Dekripsi Cipherteks
Gambar 4.13 menunjukkan hasil dekripsi cipherteks. Dari proses dekripsi di dapatkan
kembali plainteks yaitu” ILMI HARAHAP, MAHASISWA S1 ILMU KOMPUTER STAMBUK 2012” dan lama proses dekripsi yaitu 21.6982 detik. Pada saat di dekripsi plainteks berubah menjadi caps lock karena alphabet yang berada dalam tabel
ADFGVX Cipher merupakan rangkain huruf besar (caps lock).
60
Tabel 4.11. Waktu Proses Enkripsi Algoritma ADFGVX Cipher
No Plainteks Panjang
plainteks
Waktu proses (sekon) Rata-rata waktu
1 Bertukar informasi merupakan hal
yang biasa kita lakukan. Bertukar
informasi jarak jauh dapat
dilakukan melalui kantor pos, surat
dan surel (surat elektronik).
160
karakter
0.23021 0.264585 0.376359 0.2903846
2 Bertukar informasi merupakan hal yang biasa kita lakukan. Bertukar informasi jarak jauh dapat dilakukan melalui kantor pos, surat dan surel (surat elektronik). Surel (Surat Elektronik) memungkinkan kita untuk bertukar informasi jarak jauh tanpa membutuhkan waktu yang lama, namun keamanan informasi (data) dalam pengiriman informasi melalui surat elektronik (e-mail) dipertaruhkan.
381
karakter
1.691963 1.956994 3.504815
1
2.3845906
3 Bertukar informasi merupakan hal yang biasa kita lakukan. Bertukar informasi jarak jauh dapat dilakukan melalui kantor pos, surat dan surel (surat elektronik). Surel (Surat Elektronik) memungkinkan kita untuk bertukar informasi jarak jauh tanpa membutuhkan waktu yang lama, namun keamanan informasi (data) dalam pengiriman informasi melalui surat elektronik (e-mail) dipertaruhkan. Oleh karena itu dibutuhkan berbagai cara untuk mengamankan informasi tersebut agar sampai ketujuan dengan aman. Ada beberapa metode yang dapat dilakukan untuk mengamankan informasi (data) yaitu kriptografi, steganografi, dan watermarking.
633
karakter
6.243039 5.656928 4.589145 5.4963706
Pada Tabel 4.11 terdapat 7 buah kolom. Kolom pertama adalah no, kolom
kedua adalah plainteks yang akan dienkripsi sebanyak tiga kali, kolom ketiga adalah
ukuran plainteks, kolom ke empat sampai kolom ke enam adalah waktu proses, dan
pada kolom terakhir diperoleh rata-rata waktu eksekusi dari tiga kali percobaan. Untuk
2.3845906 detik, dan untuk plainteks dengan panjang 633 karakter diperoleh rata-rata
waktu eksekusi 5.4963706 detik.
Pengujian selanjutnya dilakukan terhadap proses dekripsi pada algoritma
ADFGVX cipher. sama seperti pengujian pada proses enkripsi, pengujian ini
dilakukan dengan menggunakan tiga ukuran cipherteks yang berbeda yaitu, cipherteks
dengan panjang 16 karakter, cipherteks dengan panjang 295 karakter, dan cipherteks
dengan panjang 910 karakter. Untuk waktu proses dekripsi dapat dilihat pada Tabel
4.12.
Tabel 4.12. Waktu Proses Dekripsi Algoritma ADFGVX cipher
No Cipherteks Panjang
Cipherte ks
62 FGF,FGAGA FGDVFF FXGXDDAD FVDVGGD FFFFGAFXDADXAAV GVDFX F FVDAXFFXDFAFAFVFX AAGFXGGAADFV-D FAFDFGDAD
Pada Tabel 4.12 dapat dilihat proses dekripsi dilakukan sebanyak tiga kali dan
dari proses tersebut didapatkan rata-rata dari masing-masing proses yaitu, Untuk
cipherteks dengan panjang 160 karakter diperoleh rata-rata waktu eksekusi 0.1078 s,
Dari percobaan proses enkripsi dan dekripsi didapatkan bahwa waktu proses
yang dibutuhkan proses dekripsi lebih cepat dibandingkan dengan waktu proses yang
dibutuhkan enkripsi. Hubungan waktu proses enkripsi terhadap ukuran suatu plainteks
dan hubungan waktu dekripsi terhadap ukuran dari suatu cipherteks dapat dilihat pada
Gambar 4.14.
Gambar 4.14. Grafik Hubungan Ukuran Plainteks & Cipherteks dengan Waktu
Gambar 4.14 menunjukkan grafik waktu yang dibutuhkan untuk mengenkripsi
plainteks dengan panjang 160 karakter diperoleh rata-rata waktu eksekusi 0.2903846
s , untuk plainteks dengan panjang 381 karakter diperoleh rata-rata waktu eksekusi
2.3845906 s, dan untuk plainteks dengan panjang 633 karakter diperoleh rata-rata
waktu eksekusi 5.4963706 s. Pada Gambar 4.14 dapat dilihat bahwa hubungan antara
ukuran plainteks berbanding lurus terhadap waktu proses enkripsi, dan ukuran
cipherteks berbanding lurus terhadap waktu proses dekripsi.
Gambar 4.14 juga menunjukkan grafik perbandingan antara waktu dekripsi
dengan ukuran cipherteks. Untuk melakukan dekripsi terhadap cipherteks dengan
63
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan analisis, perancangan dan pengujian dari penelitian pengamanan data
dengan menggunakan algoritma ADFGVX cipher dan knapsack, maka diperoleh
beberapa kesimpulan:
1. Berdasarkan pengujian yang dilakukan algoritma ADFGVX cipher dan
algoritma knapsack pada proses dekripsi dapat mengembalikan data awal
secara utuh.
2. Berdasarkan grafik hubungan antara waktu proses enkripsi dengan ukuran
plainteks menunjukkan bahwa ukuran plainteks berbanding lurus dengan
waktu. Semakin besar ukuran plainteks tersebut maka semakin besar waktu
proses enkripsinya.
3. Berdasarkan grafik hubungan antara waktu proses enkripsi dan waktu
proses dekripsi menunjukkan bahwa proses dekripsi lebih cepat
dibandingkan proses enkripsi.
4. Berdasarkan perubahan hasil cipherteks pada pengujian, penggunaan
algoritma ADFGVX cipher dan knapsack ini relatif aman dan sederhana
5.2 Saran
Adapun saran-saran yang dapat dipertimbangkan untuk tahap pengembangan penlitian
ini adalah:
1. Sistem ini hanya dapat mengamankan dokumen-dokumen berbasis *.txt dan
*.doc/docx, sehingga untuk penlitian selanjutnya diharapkan dapat
mengamankan citra.
2. Sistem ini hanya dapat melakukan enkripsi terhadap alphabet numeric, untuk
penulis selanjutnya diharapkan dapat mengamankan seluruh isi dokumen.
3. Untuk pengembangan sistem selanjutnya dapat mengkombinasikan ADFGVX
Cipher dengan algoritma kriptografi lainnya, seperti Rivest-Shamir-Adleman
BAB 2
LANDASAN TEORI
2.1 Kriptogafi
Kriptografi merupakan bidang ilmu yang mempelajari tentang metode untuk
mengirim pesan secara rahasia (yaitu di enkripsi atau disamarkan) sehingga hanya
penerima pesan yang dituju yang dapat menghapus penyamaran dan membaca pesan
(atau memahaminya). Secara etimologi kriptografi berasal dari bahasa yunani, cryptos
yang berarti tersembunyi, dan graphein yang berarti menulis. Dalam kriptografi pesan
yang akan dirahasiakan disebut plainteks dan pesan yang sudah dirahasiakan disebut
cipherteks. Proses pengubahan plainteks menjadi cipherteks disebut enkripsi,
sebaliknya proses pengubahan cipherteks menjadi plainteks yang dilakukan oleh
penerima pesan disebut dekripsi (Mollin, R.A. 2007). Skema rangkaian proses
enkripsi dan dekripsi secara umum ditunjukkan pada Gambar 2.1.
Gambar 2.1. Skema Proses Enkripsi dan Dekripsi
2.1.1 Tujuan Kriptografi
Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan
informasi yaitu:
1) Privacy/Confidentiality yaitu usaha menjaga informasi dari orang yang tidak
berhak mengakses.
Enkripsi
Plainteks Cipherteks
2) Integrity yaitu usaha untuk menjaga data atau sistem tidak bisa diubah oleh
pihak yang tidak berhak.
3) Authentication usaha atau metode untuk mengetahui keaslian dari informasi,
misalnya apakah informasi yang dikirim dibuka oleh orang yang benar atau
layanan dari server yang diberikan benar dari server yang dimaksud.
4) Availability yaitu berhubungan dengan ketersediaan sistem dan data ketika
data dibutuhkan.
2.1.2 Jenis-Jenis Algoritma Kriptografi
Ada dua jenis algoritma kriptografi yaitu algoritma simetris dan algoritma asimetris.
Pada kriptografi simetris maupun kriptografi asimetris tidak ada keamanan yang bisa
terjamin tanpa syarat. Suatu metode enkripsi tidak ada yang praktis. Maka, untuk
semua protokol pada kriptografi, keamanan bergantung pada asumsi perhitungan
(Pointcheval. David. 2002).
1) Kriptografi Simetris
Algoritma klasik (sebutan untuk algoritma simetris) merupakan algoritma yang
menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Algoritma
simetris juga sering disebut one key/ private key/ single key karena memiliki
kunci yang sama untuk proses enkripsi dan dekripsi (Sembiring, Dira Fahrendy
2013). Kemanan algoritma simetris berada pada kunci, agar komunikasi tetap
aman maka kunci harus tetap dirahasiakan. Contoh algoritma simetris One Time
Pad, ADFGVX Cipher, Affine Cipher, dan lainnya. Proses enkripsi dan dekripsi
algoritma simetris dapat dilihat pada Gambar 2.2.
Enkripsi Dekripsi
Plainteks Cipherteks Plainteks
8
Algoritma asimetris (public key) merupakan algoritma kriptografi yang
menggunakan sepasang kunci dalam melakukan enkripsi dan dekripsi, yaitu kunci
publik (public key) dan kunci privat (private key). Dalam algoritma simetris kunci
publik bisa disebar-luaskan sedangkan kunci privat harus tetap dirahasiakan
(Kromodimoeljo, S. 2010). Kunci publik digunakan untuk proses enkripsi
plainteks, dan kunci privat digunakan untuk proses dekripsi. algoritma yang
digunakan untuk kriptografi public key berdasarkan pada relasi matematika
(Sachdeva, Komal. 2013).
Hampir semua skema kunci publik hanya digunakan untuk mengenkripsi
pesan yang singkat, seperti mengenkripsi kunci. Hal tersebut dikarenakan skema
dari kunci publik kurang efisien jika digunakan untuk mengenkripsi data dalam
jumlah yang besar. Kemudian data dalam jumlah besar dienkripsi dengan
menggunakan algoritma simetris. Pendekatan seperti ini disebut dengan skema
enkripsi hybrid (Smart, N.P. 2016). Contoh algoritma asimetris yaitu
Rivest-Shamir-Adlenan (RSA), El-gamal, Knapsack, Rabin dan lainnya. Proses enkripsi
dan dekripsi dari algoritma asimetris dapat dilihat pada Gambar 2.3.
Gambar 2.3. Skema Algorima Asimetris
2.2 ADFGVX Cipher
Algoritma ADFGVX Cipher ini merupakan algoritma yang ditemukan oleh seorang
petugas radio tentara Jerman yang bernama Fritz Nebel (1891-1967) (Sihotang, Rajab.
2014). untuk menggunakan ADFGVX Cipher, dimulai dengan sebuah matriks 6x6.
Matriks tersebut diisi dengan alphabet dan nomor 0-9 yang disusun secara acak.
ADFGVX chiper dipertimbangkan sebagai algoritma yang cukup aman karena
algoritma ini mengkombinasikan dua kelebihan rata-rata algoritma kriptografi, yaitu
Enkripsi Dekripsi
Plainteks Cipherteks Plainteks
karena refresentatif huruf-huruf tersebut sangatlah berbeda dalam sandi morse
(Mollin, R.A. 2007).
2.2.1 Enkripsi ADFGVX Cipher
Berikut adalah langkah-langkah dalam melakukan enkripsi dengan menggunakan
algoritma ADFGVX Cipher:
1) Tentukan kata yang akan dienkripsi (plainteks) yang terdiri dari angka dan hurup misal “HARAHAP289”
2) Buat sebuah tabel 6x6 yang berisi 26 huruf dan 10 angka, seperti pada Tabel
2.1.
Tabel 2.1. Tabel ADFGVX Cipher
A D F G V X
3) Setiap huruf dalam plainteks disubstitusi menjadi dua huruf berdasarkan baris
dan kolom, misal huruf K menjadi DV. Jika plainteks-nya adalah
“HARAHAP289” maka hasil substitusinya adalah DD AX FA AX DD AX FF VD XV XX.
4) Tentukan kata kunci yang terdiri dari huruf saja. Kunci ini akan digunakan
pada proses tranposisi. Misal kunci yang digunakan adalah ILKOM. Maka
buatlah sebuah tabel baru dan tuliskan kata kunci di baris pertama. Kemudian
tulis hasil substitusi plainteks dibawahnya berurutan dari kanan kemudian
10
5) Selanjutnya urutkan kolom pada kata kunci berdasarkan alphabet. Maka
ILKOM menjadi IKLMO sehingga menjadi seperti pada Tabel 2.3.
Tabel 2.3. Perubahan Posisi Kunci ADFGVX Cipher
I K L M O
6) Cipherteksnya adalah huruf-huruf yang berada dikolom pertama dan
seterusnya. Maka cipherteks dari HARAHAP289 adalah DDAXAXFVDDXX
FAVDXAFX.
2.2.2 Dekripsi ADFGVX Cipher
1) Lakukan pemisahan cipherteks dengan cara membagi jumlah huruf yang ada
pada cipherteks dengan jumlah huruf yang ada pada kunci. Kita memiliki
pesan cipherteks DDAXAXFVDDXXFAVDXAFX dan misalkan kita
memiliki kunci ILKOM. Maka kita dapat membagi tiap kelompok terdiri dari
20/5= 4 huruf, menjadi DDAX AXFV DDXX FAVD XAFX
2) Selanjutnya, urutkan kunci sesuai alphabet, maka ILKOM menjadi IKLMO,
seperti pada Tabel 2.4.
1 3 2 5 4
D A D F X
D X D A A
A F X V F
X V X D X
3) Urutkan kolom-kolom yang ada pada tabel 2.4 menjadi kata kunci yang kita
miliki, seperti pada Tabel 2.5.
Tabel 2.5 Tabel Kunci Dekripsi ADFGVX Cipher sesuai Urutan
I L K O M
1 2 3 4 5
D D A X F
D D X A A
A X F F V
X X V X D
4) Lakukan pembacaan secara berurutan kekanan kemudian kebawah
DDAXFAAXDDAXFFVDXVXX.
5) Langkah terakhir adalah mencari padanan karakter dari dua huruf yang kita
dapatkan dengan tabel ADFGVX, seperti pada Tabel 2.6.
Tabel 2.6. Tabel ADFGVX Cipher
A D F G V X
12
X 4 5 6 7 8 9
6) Dengan mencari padanan karakter pada Tabel 2.6 maka kita dapatkan pesan
HARAHAP289.
2.3 Algoritma Knapsack
Algoritma knapsack merupakan algoritma kunci publik (asimetris) yang keamanannya
terletak pada sulitnya memecahkan persoalan knapsack (knapsack problem).
Knapsack problem merupakan permasalahan bagaimana cara mengisi knapsack
(ransel) yang mempunyai kapasitas tertentu dengan sekumpulan benda yang
berbeda-beda ukurannya sehingga knapsack terisi penuh sesuai dengan kapasitas
(Kromodimoeljo, S. 2010). Masing-masing benda memiliki nilai dan berat yang
sudah diasosiasikan di dalamnya. Jadi, nilai pada seluruh item dapat dimaksimalkan
dan beratnya tidak menambah kapasitas total pada knapsack (Agarwal, Ashish. 2011).
2.3.1 knapsack problem
kedalam knapsack, sebaliknya jika b = 0, maka tidak dimasukkan ke dalam knapsack
(Sembiring, Dira Fahrendy. 2013). Ada dua jenis algoritma knapsack, yaitu:
a) Algoritma knapsack sederhana
Ide dasar dari knapsack ini adalah mengkodekan pesan sebagai rangkaian solusi
dari persoalan knapsack. Setiap bobot W1 dalam persoalan knapsack merupakan
kunci privat sedangkan bit-bit plainteks merupakan b1.
Algoritma yang digunakan untuk membangkitkan kunci publik dan kunci privat
dalam Superincreasing knapsack:
1) Tentukan barisan superincreasing dimana setiap nilai di dalam barisan lebih
besar daripada jumlah semua nilai sebelumnya.
2) Jumlahkan semua nilai di dalam barisan, kemudian bandingkan total nilai
dengan nilai terbesar di dalam barisan. Jika nilai terbesar lebih kecil atau sama
dengan total nilai maka ia dimasukkan ke dalam knapsack, jika tidak maka ia
tidak dimasukkan.
3) Kurangi total nilai dengan nilai terbesar yang telah dimasukkan. Kemudian
bandingkan total nilai sekarang dengan nilai terbesar selanjutnya, demikian
seterusnya sampai semua nilai dalam barisan selesai dibandingkan.
4) Jika bobot total sama dengan nol maka terdapat solusi persoalan
superincreasing knapsack. sebaliknya jika bobot total tidak sama dengan nol
maka tidak ada solusinya.
2.3.2 Enkripsi superincreasing knapsack
Mula-mula plainteks dipecah menjadi blok bit yang panjangnya sama dengan
kardinalitas barisan kunci publik. Kalikan setiap bit di dalam blok dengan elemen
yang berkoresponden dengan nilai di dalam kunci publik.
Contoh:
Kita gunakan kunci ADFGVX cipher diatas sebagai barisan plainteks yaitu : ILKOM
Misal A = 0, B = 1, …. Z = 25, maka:
Sehingga didapatkan plainteks: 0100001011010100111001100 yang akan di enkripsi
14
Maka kunci publik yang didapatkan adalah {14, 28, 56, 37, 74}.
Kemudian plainteks dibagi menjadi blok dengan panjang 5 (panjang kunci publik),
kemudian setiap bit di dalam blok dikalikan dengan elemen yang berkoresponden
dengan kunci publik, sebagai berikut:
Blok plainteks 1: 01000
Jadi, cipherteks yang dihasilkan: 28, 139, 65, 121, 84
2.3.3 Dekripsi superincreasing knapsack
Untuk mendekripsikan cipherteks menjadi plainteks maka kita gunakan kunci privat,
yaitu barisan superincreasing knapsack. Mula-mula penerima pesan menghitung n-1,
yaitu inversi n modulo m, sedemikian sehingga: n.n-1 ≡ 1 (mod m) , maka untuk
mendekripsi cipherteks tersebut dengan menggunakan kunci privat {1, 2, 4, 8, 16} di
Tabel 2.7. Perhitungan Inversi n modulo m
n-1 n.n-1 (mod m)
1 14.1 (mod 75) = 14
2 14.2 (mod 75) =24
3 14.3 (mod 75) = 42
4 14.4 (mod 75) = 56
. .
. .
59 14.59 (mod 75) = 1
Dapatlah n-1 yaitu 59. Maka plainteks yang berkoresponden dengan {1, 2, 4, 8, 16}
diperoleh kembali dengan cara menggunakan algoritma superincreasing sebagai
berikut:
Temp : (cipherteks x n-1) mod m
(28 x 59) mod 75 = 2 = 2, berkoresponden dengan 01000
(139 x 59) mod 75 = 26 = 16 + 8 + 2, berkoresponden dengan 01011
(65 x 59) mod 75 = 10 = 8 + 2, berkoresponden dengan 01010
(121 x 59) mod 75 = 14 = 8 + 4 + 2, berkoresponden dengan 01110
(84 x 59) mod 75 = 6 = 4 + 2, berkoresponden dengan 01100
Sehingga painteks yang dihasilkan adalah 0100001011010100111001100, dimana 01000 = 8, berkoresponden dengan huruf “I”
BAB 1
PENDAHULUAN
1.1 Latar Belakang Masalah
Bertukar informasi merupakan hal yang biasa kita lakukan. Bertukar informasi jarak
jauh dapat dilakukan melalui kantor pos, surat dan surel (surat elektronik). Surel
(Surat Elektronik) memungkinkan kita untuk bertukar informasi jarak jauh tanpa
membutuhkan waktu yang lama, namun keamanan informasi (data) dalam pengiriman
informasi melalui surat elektronik (e-mail) dipertaruhkan. Oleh karena itu dibutuhkan
berbagai cara untuk mengamankan informasi tersebut agar sampai ketujuan dengan
aman. Salah satu metode yang digunakan untuk mengamankan data adalah
kriptografi.
Kriptografi adalah sebuah cabang ilmu dalam ilmu komputer yang berfungsi
untuk mengamankan data. Secara terminologi, kriptografi adalah ilmu dan seni untuk
menjaga kerahasiaan pesan dengan cara menyandikannya kedalam bentuk yang tidak
dapat dipahami maknanya sehingga tidak dapat dibaca oleh orang yang tidak
berkepentingan. Dalam kriptografi dibutuhkan kunci yaitu kode untuk melakukan
Enkripsi dan Dekripsi. Berdasarkan kuncinya kriptografi dibagi menjadi dua tipe yaitu
algoritma simetris dan algoritma asimetris. Algoritma simetris adalah algoritma yang
mempunyai kunci enkripsi dan dekripsi yang sama, sedangkan algoritma asimetris
merupakan algoritma yang terdiri atas dua buah kunci yaitu kunci publik untuk
melakukan enkripsi dan kunci privat untuk melakukan dekripsi. Kedua algoritma
tersebut mempunyai kelebihan dan kekurangan masing-masing. Dalam kriptografi
pesan yang akan dirahasiakan disebut plainteks. Banyak algoritma kriptografi yang
dapat digunakan untuk mengamankan data seperti: One Time Pad, ADFGVX Cipher,
ADFGVX Cipher merupakan algoritma yang digunakan oleh pihak tentara
Jerman ketika perang dunia I berlangsung. Algoritma ini diciptakan dengan
mengambil sebuah ide yang muncul pada masa lampau yaitu menghubungkan
huruf-huruf alphabet dengan posisi-posisi yang terdapat di dalam sebuah jaringan atau tabel.
Algoritma ADFGVX Cipher merupakan algoritma simetris yang menggunakan tabel
6x6 yang berisi 26 huruf dan 10 angka (0-9). Enkripsinya terdiri dari dua proses yaitu
proses substitusi dan proses transportasi.
Algoritma Knapsack merupakan sebuah algoritma kunci publik (asimetris)
yang keamanannya terletak pada kesulitan memecahkan persoalan Knapsack
(Knapsack problem). Knapsack problem merupakan masalah dimana orang
dihadapkan pada masalah optimasi pada pemilihan benda yang dapat dimasukkan ke
dalam wadah yang mempunyai keterbatasan daya tampung. Ide dasar dari algoritma
yang dikembangkan oleh Ralph Merkle dan Martin Hellman ini adalah mengkodekan
pesan sebagai rangkaian solusi dari persoalan Knapsack (Prameswara, Gustaf. 2012).
Karena keamanan data merupakan hal yang sangat penting maka penulis akan
membuat sebuah penelitian yang bertujuan untuk mengamankan data dengan
menggunakan metode kriptografi yang berjudul “Implementasi Algoritma ADFGVX
Cipher dan Knapsack dalam Pengamanan Data Teks”.
1.2 Rumusan Masalah
Berdasarkan latar belakang diatas, rumusan masalah dalam penelitian ini adalah
bagaimana mengamankan data teks dengan algoritma ADFGVX Cipher, kemudian
kunci yang digunakan untuk mengamankan data diamankan kembali dengan
3
1.3 Ruang Lingkup Masalah
Adapun ruang lingkup masalah dalam penelitian ini adalah:
1. File yang diamankan berupa file dokumen dengan format *.txt dan *.doc
2. Panjang kunci maksimal 10 karakter
3. Algoritma yang digunakan untuk mengamankan data adalah algoritma ADFGVX
Cipher
4. Algoritma yang digunakan untuk mengamankan kata kunci adalah algoritma
Knapsack
5. Menggunakan bahasa pemrograman C#
1.4 Tujuan Penelitian
Adapun tujuan dari penelitian ini adalah untuk membuat sebuah perangkat lunak yang
berguna untuk mengamankan data dengan menggunakan algoritma ADFGVX Cipher
sebagai pengaman data dan Knapsack untuk mengamankan kunci yang telah dibuat
oleh ADFGVX Cipher.
1.5 Manfaat Penelitian
Penelitian ini diharapkan mampu menciptakan sebuah aplikasi pengamanan data yang
berguna untuk meningkatkan keamanan dokumen rahasia sehingga pihak yang tidak
berkepentingan tidak bisa mengakses dokumen tersebut.
1.6 Metodologi Penelitian
Tahapan yang dilakukan pada penelitian ini adalah:
1) Studi Literatur
Pada tahap ini dilakukan studi literatur dengan mempelajari kriptografi, algoritma
ADFGVX cipher, algoritma knapsack serta bahasa pemrograman C# melalui
peninjauan terhadap buku, artikel, jurnal, maupun hasil penelitian.
2) Analisis dan Perancangan
terstruktur, jelas, dan berjalan dengan baik. Proses ini meliputi pembuatan
algoritma program, flowchart algoritma, flowchart system, use case scenario,
perancangan aplikasi, dan pembuatan user interface.
3) Implementasi
Algoritma ADFGVX cipher dan Knapsack digunakan untuk membuat sebuah
aplikasi yang berfungsi untuk mengamankan data teks dengan ekstensi *.txt dan
*.doc dengan menggunakan bahasa pemrograman C#.
4) Pengujian
Pengujian terhadap aplikasi yang telah dibuat apakah berjalan dengan baik sesuai
dengan keinginan dan melakukan perbaikan terhadap error yang masih terjadi
dalam aplikasi.
5) Dokumentasi
Membuat laporan dan kesimpulan akhir dari hasil akhir analisa dan pengujian