Implementasi Algoritma ADFGVX Cipher dan Knapsack Dalam Pengamanan Data Teks

(1)

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 Knapsack

int 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