Implementasi Algoritma ADFGVX Cipher dan Knapsack Dalam Pengamanan Data Teks
A-1 LISTING PROGRAM 1. Mainform using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Skripsi_1 {
/// <summary>
/// Description of MainForm. /// </summary>
public partial class MainForm : Form
{
public char[,] kunci = new char[1000,1000]; public int[] barisw = new int[30];
public int[] cipherkunci = new int[1000]; public int bilm,biln,n;
public int kolkey, barkey; public int nteks;
public MainForm() {
InitializeComponent(); }
void ToolStripButton1Click(object sender, EventArgs e) {
}
void ToolStripButton2Click(object sender, EventArgs e) {
Form tentang = new About(); tentang.Show();
this.Hide(); }
void ENKRIPSIToolStripMenuItemClick(object sender, Eve ntArgs e)
{
Form enkrip = new Enkripsi(); enkrip.Show();
this.Hide(); }
void DEKRIPSIToolStripMenuItemClick(object sender, Eve ntArgs e)
(2)
dekrip.n = n;
for (int i=0; i<n; i++){
dekrip.cipherkunci[i] = cipherkunci[i]; }
for (int i=0; i<7; i++){ dekrip.barisw = barisw; }
dekrip.kolkey = kolkey; dekrip.barkey = barkey; for (int i=0; i<barkey; i++){ for (int j=0; j<kolkey; j++){ dekrip.kunci[i,j] = kunci[i,j]; }
}
dekrip.nteks = nteks; dekrip.Show();
this.Hide(); }
void ToolStripButton3Click(object sender, EventArgs e) {
Form bantuan = new Help(); bantuan.Show();
this.Hide(); }
void ToolStripButton4Click(object sender, EventArgs e) {
if (MessageBox.Show("Apakah Anda benar ingin keluar dari Aplikasi?","konfirmasi",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResul t.Yes)
Application.Exit(); }
void MainFormLoad(object sender, EventArgs e) {
} } }
(3)
A-3
2. Enkripsi plainteks menggunakan Algoritma ADFGVX Cipher string[] arrkunci1
= new string[] {"A", "D", "F", "G", "V", "X"};
string[,] arrkunci2
= new string[6,6] {{"F","E","D","C","B","A"}, {"G","H","I","J"," K","L"}, {"R","Q","P","O","N","M"}, {"S","T","U","V","W","X"}, {
"3","2","1","0","Z","Y"}, {"4","5","6","7","8","9"}};
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();
for (int i = 0; i < nteks; i++){
if (char.IsLetter(teks[i]) == true){ for (int j =0; j<6; j++){
for (int k =0; k<6; k++){
if (teks[i].ToString() == arrkunci2[j,k]){ cipher[l] = arrkunci1[j];
cipher[l+1] = arrkunci1[k]; l+=2;
} } } }
else{
cipher[l] = teks[i].ToString(); l+=1;
} }
double n =
Convert.ToDouble(l)/Convert.ToDouble(textBox3.TextLength);
char[] txtkunci = textBox3.Text.ToUpper().ToCharArray(); barkey = (Convert.ToInt16( Math.Ceiling(n)))+2;
kolkey = textBox3.TextLength;
for (int i = 0; i < kolkey; i++){ kunci[0,i] = txtkunci[i]; }
for (int i = 0; i <kolkey; i++){
kunci[1,i] = Convert.ToChar((i+1).ToString()); }
int x = 0;
for(int i = 2; i <barkey; i++){ if (i%2 == 0){
(4)
else{
kunci[i,j] = Convert.ToChar(cipher[x]); x++; } } } else{
for(int k = kolkey-1; k>=0; k--){ if(cipher[x] == null){
kunci[i,k] = 'x'; }
else{
kunci[i,k] = Convert.ToChar(cipher[x]); x++; } } } }
char[] tempkey = new char[kolkey]; char[] tempkey1 = new char[10000];
for (int i=0; i<kolkey; i++){ tempkey[i] = kunci[0,i]; }
Array.Sort(tempkey);
for (int i=0; i<kolkey; i++){ for (int j=i; j<kolkey; j++){ if (tempkey[i] == kunci[0,j]){ for(int k=0; k<barkey; k++){ tempkey1[k] = kunci[k,i]; kunci[k,i] = kunci[k,j]; kunci[k,j] = tempkey1[k]; }
break; }
} }
for (int i=0; i<kolkey; i++){
for (int j=2; j<barkey; j++){
textBox4.Text+= kunci[j,i].ToString(); }
}
timer.Stop();
(5)
A-5
return p2; }
return gcd(n2, p2 % n2); }
public bool iscoprime(int p1, int n1){
if (gcd(p1, n1) == 1){ return true; }
return false; }
void Button4Click(object sender, EventArgs e) {
nW = textBox3.TextLength; int jumlah;
int n=1;
Random r = new Random(); textBox5.Text = textBox3.Text; barisanw[0] = r.Next(1,3); while (n<7){
jumlah = 0;
for(int j=0; j<=n-1; j++){
jumlah = jumlah+ barisanw[j]; }
barisanw[n] = jumlah + r.Next(1,5); n++;
}
int jum_elemen = 0; for (int i=0; i<7; i++){
jum_elemen = jum_elemen + barisanw[i]; }
for (int i=0; i<7; i++){
textBox7.Text += barisanw[i].ToString()+ " "; }
bilm= r.Next(jum_elemen+1,10000); biln=r.Next(255);
while(iscoprime(bilm,biln) == false){ bilm=r.Next(jum_elemen+1,10000); biln=r.Next(255);
}
textBox8.Text = bilm.ToString(); textBox9.Text = biln.ToString();
for (int i=0; i<7; i++){
publik[i] = (barisanw[i]*biln) % bilm; textBox11.Text += publik[i].ToString()+" "; }
(6)
char[] txtkunci = textBox5.Text.ToCharArray();
string tempbiner;
char[] biner = new char[nW]; nW = textBox3.TextLength;
Stopwatch timer = new Stopwatch(); timer.Start();
for (int i=0; i<nW; i++){ tempbiner =
Convert.ToString((int)txtkunci[i],2).PadLeft(7,'0');
biner = tempbiner.ToCharArray(); for (int j=0; j<7; j++){
cipherkey[i] +=
Convert.ToInt16(char.GetNumericValue(biner[j])) * publik[j];
}
textBox10.Text += cipherkey[i].ToString()+ " "; }
timer.Stop(); textBox6.Text =
timer.Elapsed.TotalSeconds.ToString();
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++){
tempplain = (cipherkunci[i]*invmodulo) % bilm; for (int j=6; j>=0; j--){
if (tempplain >= barisw[j]){ tempplain -= barisw[j]; binerplain[i,j] += "1"; }
else{
binerplain[i,j] += 0; }
}
}
for (int i=0; i<n; i++){
plainkey="";
for (int j=0; j<7; j++){
(7)
A-7
6.
Dekripsi Cipherteks Menggunakan Algoritma ADFGVX Cipher string[] arrkunci1= new string[] {"A", "D", "F", "G", "V", "X"};
string[,] arrkunci2
= new string[6,6] {{"F","E","D","C","B","A"}, {"G","H","I","J"
,"K","L"},{"R","Q","P","O","N","M"}, {"S","T","U","V","W","X"} , {"3","2","1","0","Z","Y"}, {"4","5","6","7","8","9"}}; char[] tempkey = textBox5.Text.ToUpper().ToCharArray(); char[] tempkey1 = new char[1000];
string tempplainteks="";
Stopwatch timer = new Stopwatch(); timer.Start();
for (int i=0; i<kolkey; i++){ for (int j=i; j<kolkey; j++){
if (tempkey[i]==kunci[0,j] && Char.GetNumericValue(k unci[1,j]) <= i+1){
for(int k=0; k<barkey; k++){ tempkey1[k] = kunci[k,i]; kunci[k,i] = kunci[k,j]; kunci[k,j] = tempkey1[k]; }
break; }
} }
for (int i=2; i<barkey; i++){
if (i%2 == 0){
for (int j=0; j<kolkey; j++){
tempplainteks+= kunci[i,j].ToString(); }
} else{
for (int j=kolkey-1; j>=0; j--){
tempplainteks+= kunci[i,j].ToString(); }
} }
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()))];
(8)
break; }
else{
textBox8.Text += tempplainteks1[x].ToString(); x+=1;
} }
timer.Stop();
textBox10.Text = timer.Elapsed.TotalMilliseconds.ToString();
(9)
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 2012 - Selesai S1 Ilmu Komputer, Universitas Sumatera Utara, Medan
(10)
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
IMILKOM (Ikatan mahasiswa Ilmu Komputer) “Public Speaking 2015”
(11)
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
(12)
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.
(13)
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
(14)
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 dan proses dekripsi.
(15)
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
Metode
Material Sistem
Pengamanan data dengan menggunakan algoritma ADFGVX Cipher dan knapsack
Algoritma ADFGVX digunakan untuk mengamankan text
Data yang akan diamankan *.txt dan *.doc/docx
Dibutuhkan sebuah aplikasi untuk mengamankan data Kebutuhan user terhadap
pengiriman pesan yang aman
Pemalsuan data
Algoritma Knapsack digunakan untuk mengamankan kunci
(16)
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
(17)
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 dapat dilihat pada Gambar 3.2.
(18)
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 Name Use-Case Input Text
(19)
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
(20)
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 Post condition User mendapatkan file asli kunci atau plainteks kunci
(21)
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 dapat dilihat pada gambar 3.3.
(22)
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 dapat dilihat pada Gambar 3.4.
(23)
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 3.5.
(24)
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 alur dari proses dekripsi dapat dilihat pada Gambar 3.7.
(25)
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 Gambar 3.8, sedangkan untuk proses dekripsi ditunjukkan pada Gambar 3.9.
(26)
(27)
30
(28)
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.
(29)
(30)
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
(31)
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
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2016
1 2 3 4
5
6
7
(32)
5 Label Judul Skripsi
Label1 Menampilkan judul skripsi
6 PictureBo
x
- PictureB
ox1
Menampilkan logo Fakultas Ilmu Komputer dan Teknologi Informasi
7 Label Nama
penulis
Label2 -
8 Label Keterangan
Universitas Penulis
Label3 -
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.
File Name : Buka FIle
Isi File :
Ukuran file :
Kunci :
Hasil enkripsi pesan :
enkripsi
simpan
Ukuran file :
Kunci : Barisan w / kunci Privat : Nilai m : Nilai n : Kunci publik :
Acak kunci
Hasil enkripsi kunci :
enkripsi simpan
Waktu eksekusi : Ukuran file :
Enkripsi File 1 Enkripsi Kunci
2 3
4
5
6
7
8
9 10
11
12
13
14
15 16
18
19
20 28
21 29
22 30
23 31
24 32
33 25 34 35 36 37 38
(33)
36
Keterangan rancangan halaman enkripsi dapat dilihat pada Tabel 3.7. Tabel 3.7 Keterangan Rancangan Halaman Enkripsi
No Tipe Teks Name Keterangan
1 GroupBox Enkripsi File GroupBox1 -
2 Label Filename Label1
3 Textbox - TextBox1 Menampilkan nama file
4 Button Buka File Button1 Membuka File
5 Label Isi File Label2 -
6 TextBox - TextBox2 Menampilkan isi file
7 Label Ukuran File Label3 -
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
file
19 GroupBox Enkripsi File GroupBox2 -
20 Label Kunci Label8 -
21 Label Barisan W / Kunci
Privat
(34)
23 Label Nilai n Label11 -
24 Label Kunci Publik Label12 -
25 Label Hasil Enkripsi Kunci Label13 -
26 Label Waktu eksekusi Label14 -
27 Label Ukuran File Label15 -
28 TextBox - TextBox8 Menampilkan kata
kunci
29 TextBox - TextBox9 Menampilkan barisan w
30 TextBox - TextBox10 Menampilkan nilai m
31 TextBox - TextBox11 Menampilkan nilai n
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
(35)
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
1 GroupBox Dekripsi Kunci GroupBox1 -
2 Label Cipherteks Kunci Label1 -
3 Label Barisan W/Kunci
privat
Label2 -
4 Label Nilai m Label3 -
5 Label Nilai n-1 Label4 -
Cipherteks kunci :
Barisan W/kunci Privat : Nilai m : Nilai n-1 :
Hasil dekripsi kunci :
Dekripsi Simpan
Waktu eksekusi :
Kembali Reset
Nama file : Isi file :
Hasil dekripsi file :
Waktu eksekusi :
Buka file
Dekripsi Simpan
Ukuran File :
Dekripsi Kunci 1 Dekripsi FIle
2
9
3 10
4 11
5 12
6
13
16
17
7 14
8 15
18
19 24
29 20 25 21 26 30 31
22 27
23 28
(36)
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
18 GroupBox Dekripsi File GroupBox2 -
19 Label Nama File Label8 -
20 Label Isi File Label9 -
21 Label Hasil Dekripsi File Label10 -
22 Label Waktu eksekusi Label11 -
23 Label Ukuran File Label12 -
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
(37)
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
KNAPSACK
DALAM PENGAMANAN DATA TEKS Created By
Nama : Jul Ilmi Harahap Nim : 121401048
TTl : Napa Gadung Laut, 28 Oktober 1993
Email : harahapilmi@gmail.com
1
2
3
4
(38)
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.
(39)
42
2 Label Keterangan
Penggunaan
Label1 -
(40)
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
(41)
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.
(42)
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. Halaman About dapat dilihat pada Gambar 4.4.
(43)
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 dalam textbox. Proses buka file dapat dilihat pada Gambar 4.6.
(44)
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 Gambar 4.7.
(45)
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
A F E D C B A
D G H I J K L
F R Q P O N M
G S T U V W X
V 3 2 1 0 Z Y
X 4 5 6 7 8 9
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
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
(46)
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”
(47)
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
(48)
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.
(49)
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 11532. Hasil enkripsi kunci menggunakan sistem dapat dilihat pada Gambar 4.10.
(50)
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
(51)
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 :
(52)
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 Barisan superincreasing/
Kunci Privat (KP)
Temp Kp<=Temp Tempi
123 144 T 1
61 21 F 0
31 21 F 0
15 21 T 1
8 6 F 0
(53)
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
(54)
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,
(55)
58
D A D F X
D X D A A
A F X V F
X V x D X
9) Urutkan kolom-kolom yang ada pada tabel 4.8 menjadi kata kunci yang kita miliki, seperti pada Tabel 4.9.
Tabel 4.9. 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
10)Lakukan pembacaan secara berurutan ke kanan kemudian ke bawah. Dengan
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
A F E D C B A
D G H I J K L
F R Q P O N M
G S T U V W X
V 3 2 1 0 Z Y
X 4 5 6 7 8 9
12) Dengan mencari padanan karakter pada Tabel 4.10 maka kita dapatkan pesan HARAHAP28. Untuk huruf xx tidak dilakukan pembacaan karena huruf tersebut bukan merupakan cipherteks tetapi hanya huruf yang digunakan untuk
(56)
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).
(57)
60
Tabel 4.11. Waktu Proses Enkripsi Algoritma ADFGVX Cipher
No Plainteks Panjang
plainteks
Waktu proses (sekon) Rata-rata waktu proses (s) Pengujian I Pengujian II Pengujian III
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 plainteks dengan panjang 160 karakter diperoleh rata-rata waktu eksekusi 0.2903846
(58)
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
Waktu proses (sekon) Rata-rata waktu proses (s) Pengujian I Pengujian II Pengujian III
1 AFDFVAXDFVADXA AXX DVADAXAFADAXFDADADAFAX GXFAVVVGDDXGXAADAVFX FVX VGVFAXGAADXX DAAAD FAVFVFAGGFADGDFAFAGFF FF DAXFADFXDV.DGDFFXGADGxD GX FADFFAVDXFDXVGAVF GF FAADX Ax 165 karakter 0.035594 5 0.038123 9 0.034151 6 0.10787
2 AFDFVAXDFVADXA AXXDVADA XAFADAXFDAXXAXFAXVAA GA AGFGA ADFV)ADADAFAXGXFA VVVGDDXGXAADAVFX FVX FD FDV DX FGF,FGAGA FGDVFFxV GVFAXGAADXX DAADFAVFVFA GGFADGDFGDXAVXDDXFFDFA F(GDDGAD.FAFAGFF FFAXFADF XDV.DGDFFXGADGFAAFGFXAF DGDGGAAFVDDAAADFVxDGX FADFFAVDXFDXVGAVFGFFAAD X AAX DVDFDGFVFFAFXX AXFXXDGDx 295 karakter 0.145117 9 0.085476 4 0.109381 6 0.3399759
(59)
62
3 AFDFVAXDFVADXAAXXVADAX AFADAXFDAXXAXFAXVAAGAA GFGA ADFV)ADFAXAGFXAADXF AXFDGDDAFDGDGD FFGXFGDV DAXGFXFVFA() FXADXFFGDFXD GFDDAF(ADXADGF.DVAADGV A XGAFVXAXAVFADADAXFDVGF DFAXxADADAFAXGXFAVVVGD DXGXAADAVFX FVX FDFDV DX FGF,FGAGA FGDVFF FXGXDDAD FVDVGGD FFFFGAFXDADXAAV GVDFX F FVDAXFFXDFAFAFVFX AAGFXGGAADFV-D FAFDFGDAD GDFDXVAAFGDXFXFFXDAAGAX AFFDDXFDVXxVGVFAXGAADXX DAA ADFAVFVFAGGFADGDFGD XAVXDDXFF GDFAF(GDDGAD.A DFADDFVFDDVAVDGVAGAFFX AVGXXGDAVVGFAX,XFAXFDGF FAXAXDFAVAFAAXAFAXFG DF) FFADVFDVFXFFGFFAVDAXFGFD FXFDGFFDAVXAAXAGAAV FxFA FAGFFFF DAXFADFXDV.DGDFFX GADGFAAFGFXAFDGDGGAAFVD DAAADFVAG(GD GDDVGFFVVD FVVAVAAAGAAAGFVFFXDDVA VXXAVADVFVVAXGXGXDADDF FFXAADDFXGDVDFXAFDDAVAX AFAFGAVDVDFXDAXFDDADVV AXGFAGDAAXDGVAXXFDGXFA DFFAVDXFDXVGAVFGF FAADX AAXDVDFDGFVFFAFXX AXFXX DGDGF AGAVFF)XFFDDFFGADD XVFXDFXXDFFDAFDGXADXFX AXAFAAAADAXFFAFDVFXXDF ADDGVDFXAFGXDXDDXADDFG 910 karakter 1.332432 3 0.904326 3 0.726993 5 0.9637521
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, untuk plainteks dengan panjang 295 karakter diperoleh rata-rata waktu eksekusi
(60)
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 panjang 160 karakter diperoleh rata-rata waktu eksekusi 0.1078 s, untuk cipherteks
0 1 2 3 4 5 6
200 300 400 600 900
Waktu
(
s)
Panjang Karakter
Dekripsi Enkripsi
(61)
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 untuk mengamankan teks.
(62)
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 (RSA), El-Gamal, Rabin dan lain-lain.
(63)
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
(64)
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
(65)
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
(66)
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
A F E D C B A
D G H I J K L
F R Q P O N M
G S T U V W X
V 3 2 1 0 Z Y
X 4 5 6 7 8 9
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 kebawah jika ada sisa maka diisi dengan huruf x atau sesuai dengan
(67)
10
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
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
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
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.
(68)
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
(69)
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
Jika m adalah bobot knapsack dan n adalah banyaknya objek yang masing-masing mempunyai bobot W1, W2, …, Wn. tentukan nilai bi untuk i= 1, 2, 3, …, n sedemikian
sehingga
M = b1W1 + b2W2+ …. + bnWn……… (Pers 1)
Yang dalam hal ini bi hanya bernilai 0 dan 1. Jika b = 1 maka objek i dimasukkan
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.
(70)
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: I = 8, biner 01000
L = 11, biner 01011 K = 10, biner 01010 O = 14, biner 01110 M = 12, biner 01100
Sehingga didapatkan plainteks: 0100001011010100111001100 yang akan di enkripsi menggunakan kunci privat sebagai berikut:
(71)
14
Sehingga:
(1 x 14) mod 75 = 14 (2 x 14) mod 75 = 28 (4 x 14) mod 75 = 56 (8 x 14) mod 75 = 37 (16 x 14) mod 75 = 74
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 Kriptogram: (1 x 28) = 28 Blok plainteks 2: 01011
Kriptogram: (1 x 28) + (1 x 37) + (1 x 74) = 139 Blok plainteks 3: 01010
Kriptogram: (1 x 28) + (1 x 37) = 65 Blok plainteks 4: 01110
Kriptogram: (1 x 28) + (1 x 56) + (1 x 37) = 121 Blok plainteks 5: 01100
Kriptogram: (1 x 28) + (1 x 56) = 84
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 dapatkan hasil inversi n modulo m seperti pada Tabel 2.7.
(72)
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”
01011 = 11, berkoresponden dengan huruf “L” 01010 = 10, berkoresponden dengan huruf “K” 01110 = 14, berkoresponden dengan huruf “O” 01100 = 12, berkoresponden dengan huruf “M”
(73)
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,
(1)
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Daftar Lampiran xiii
Bab 1 Pendahuluan
1.1 Latar Belakang Masalah 1
1.2 Rumusan Masalah 2
1.3 Ruang Lingkup Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 5
Bab 2 Tinjauan Pustaka
2.1 Kriptografi 6
2.1.1 Tujuan Kriptografi 6
2.1.2 Jenis-jenis Algoritma Kriptografi 7
2.2 ADFGVX Cipher 8
2.2.1 Enkripsi ADFGVX Cipher 9
2.2.2 Dekripsi ADFGVX Cipher 10
2.3 Algoritma Knapsack 12
2.3.1 knapsack problem 12
2.3.2 Enkripsi superincreasing knapsack 13 2.3.3 Dekripsi superincreasing knapsack 15
Bab 3 Analisis dan Perancangan
3.1 Analisis Sistem 17
3.1.1 Analisis Masalah 17
3.1.2 Analisis Kebutuhan 18
3.1.2.1 Kebutuhan Fungsional 19 3.1.2.2 Kebutuhan Nonfungsional 19
3.1.3 Analisis Proses 20
3.2 Perancangan Sistem 20
3.2.1 Use Case Diagram 20
3.2.2 Activity Diagram 24
(2)
3.2.4 Flowchart 27 3.2.4.1 Flowchart Enkripsi dan Dekripsi Sistem 27 3.2.4.2 Flowchart ADFGVX Cipher 29
3.2.4.3 Flowchart Knapsack 31
3.3 Perancangan Antarmuka 33
3.3.1 Perancangan Halaman Awal 34
3.3.2 Rancangan Halaman Proses Enkripsi File dan 34 Enkripsi Kunci
3.3.3 Rancangan Halaman Proses Dekripsi Kunci dan 37 Dekripsi File
3.3.4 Rancangan Halaman About 39
3.3.5 Rancangan Halaman Help 40
Bab 4 Implementasi dan Pengujian
4.1 Implementasi 41
4.1.1 Halaman Home 41
4.1.2 Halaman Enkripsi 42
4.1.3 Halaman Dekripsi 43
4.1.4 Halaman About 43
4.1.5 Halaman Help 44
4.2 Pengujian 44
4.2.1 Proses Pengujian Enkripsi Pesan 44
4.2.2 Proses Pengacakan Kunci 49
4.2.3 Enkripsi Kunci (Plainkey) 50
4.2.4 Dekripsi Kunci 52
4.2.5 Proses Dekripsi Cipherteks 56
4.2.6 Pengujian Algoritma terhadap Waktu 58
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 63
5.2 Saran 64
Daftar Pustaka 65
Listing Program A-1
(3)
DAFTAR TABEL
Hal.
TABEL 2.1. Tabel ADFGVX Cipher ... 9
TABEL 2.2 Tabel Kunci Enkripsi ADFGVX Cipher... 10
TABEL 2.3. Perubahan Posisi Kunci ADFGVX Cipher ... 10
TABEL 2.4 Tabel Kunci Dekripsi ADFGVX Cipher ... 11
TABEL 2.5 Tabel Kunci Dekripsi ADFGVX Cipher sesuai Urutan ... 11
TABEL 2.6. Tabel ADFGVX Cipher ... 12
TABEL 2.7. Perhitungan Inversi n modulo m ... 15
TABEL 3.1. Deskripsi use-case enkripsi plainteks ... 22
TABEL 3.2. Deskripsi use-case enkripsi kunci ... 22
TABEL 3.3. Deskripsi use-case Dekripsi kunci ... 23
TABEL 3.4 Deskripsi use-case Dekripsi cipherteks ... 23
TABEL 3.5. keterangan Rancangan Halaman Utama ... 24
TABEL 3.6. Keterangan Rancangan Halaman Enkripsi... 34
TABEL 3.7. Keterangan Rancangan Halaman Dekripsi ... 36
TABEL 3.8. Keterangan Rancangan Halaman About... 39
TABEL 3.9. Rancangan Halaman Help ... 40
TABEL 4.1. Tabel ADFGVX Cipher ... ... 46
TABEL 4.2. Tabel Kunci Enkripsi ADFGVX Cipher... 47
TABEL 4.3. Perubahan Posisi Kunci ADFGVX Cipher ... 47
TABEL 4.4. Biner Kunci ... 50
TABEL 4.5. Pencarian Nilai n-1 ... 52
TABEL 4.6. Solusi Superincrasing Knapsack ... 53
TABEL 4.7. Perubahan Biner Ke Char... 55
TABEL 4.8. Tabel Kunci Dekripsi ADFGVX Cipher ... 56
TABEL 4.9. Tabel Kunci Dekripsi ADFGVX Cipher sesuai Urutan ... 56
TABEL 4.10. Tabel ADFGVX Cipher ... 57
TABEL 4.11. Waktu Proses Enkripsi Algoritma ADFGVX Cipher ... 59
(4)
DAFTAR GAMBAR
Hal.
GAMBAR 2.1. Skema Proses Enkripsi dan Dekripsi ... 6
GAMBAR 2.2. Skema Algoritma Simetris (Hayanti, Disa 2013) ... 7
GAMBAR 2.3. Skema Algorima Asimetris ... 8
GAMBAR 3.1. Diagram Ishikawa Sistem ... 18
GAMBAR 3.2. Use Case Diagram ... 21
GAMBAR 3.3. Activity Diagram Enkripsi ... 25
GAMBAR 3.4. Activity Diagram Dekripsi ... 26
GAMBAR 3.5. Sequence Diagram ... 27
GAMBAR 3.6. Proses Enkripsi Sistem ... 28
GAMBAR 3.7. Proses Dekripsi Sistem ... 28
GAMBAR 3.8. Flowchart Enkripsi Algoritma ADFGVX Cipher ... 29
GAMBAR 3.9. Flowchart Dekripsi Algoritma ADFGVC Cipher ... 30
GAMBAR 3.10. Flowchart Enkripsi Algoritma Knapsack ... 31
GAMBAR 3.11. Flowchart Dekripsi Algoritma Knapsack ... 32
GAMBAR 3.12. Flowchart Pembangkit Kunci Algoritma Knapsack ... 33
GAMBAR 3.13. Rancangan Halaman Utama ... 34
GAMBAR 3.14. Rancangan Halaman Enkripsi ... 34
GAMBAR 3.15. Rancangan Halaman Dekripsi ... 37
GAMBAR 3.16. Rancangan Halaman About ... 39
GAMBAR 3.17. Rancangan Halaman Help ... 40
GAMBAR 4.1. Tampilan Halaman Home ... 42
GAMBAR 4.2. Halaman Enkripsi ... 42
GAMBAR 4.3. Halaman Dekripsi ... 43
GAMBAR 4.4. Halaman About ... 44
GAMBAR 4.5. Halaman Help ... 44
GAMBAR 4.6. Buka File ... 45
(5)
GAMBAR 4.9. Proses Pengacakan Kunci ... 50
GAMBAR 4.10. Proses Enkripsi Kunci ... 51
GAMBAR 4.11. proses pencarian Nilai n-1 ... 53
GAMBAR 4.12. Proses Dekripsi Cipherkey ... 55
GAMBAR 4.13. Proses Dekripsi Cipherteks ... 58 GAMBAR 4.14. Grafik Hubungan Ukuran Plainteks & cipherteks dengan Waktu . 62
(6)
DAFTAR LAMPIRAN
Hal. A. Listing Program ... A-1 B. Curriculum Vitae ... B-2