Implementasi Algoritma Rc4a Dan Md5 Untuk Menjamin Confidentiality Dan Integrity Pada File Teks

(1)

LAMPIRAN LISTING PROGRAM

1. Kode Program RC4A using System;

using System.IO;

using System.Collections.Generic; using System.Drawing;

using System.Windows.Forms; using System.Text;

namespace Sistem

{

public class RC4A

{

int[] K = new int[256];

int[] S1 = new int[256];

int[] S2 = new int[256];

public List<int> cip = new List<int>();

public void Kunci(string kuncii)

{

int l = kuncii.Length;

for (int i = 0; i < 256; i++) {

K[i] = (int)kuncii[i%l];

//MessageBox.Show(K[i].ToString()); }

}

public void KSA()

{

for (int i = 0; i < 256; i++) {

S1[i] = i; }

int j = 0;

for (int i = 0; i < 256; i++) {

j = (j + S1[i] + K[i]) % 256; int temp = S1[i];

S1[i] = S1[j]; S1[j] = temp; }

}

public void KSA2()

{

for (int i = 0; i < 256; i++) {

S2[i] = i; }

int j = 0;


(2)

j = (j + S2[i] + K[i]) % 256; int temp = S2[i];

S2[i] = S2[j]; S2[j] = temp; }

}

public string PRGA(string teks)

{

int i = 0;

int j = 0;

StringBuilder cipherst = new StringBuilder();

for (int pl = 0; pl < teks.Length; pl++) {

i = (i+1) % 256; j = (j+S1[i]) % 256; int temp = S1[i];

S1[i] = S1[j]; S1[j] = temp;

int z1 = S1[(S1[i] + S1[j]) % 256];

cipherst.Append(Convert.ToChar(z1));

}

return cipherst.ToString();

}

public string PRGA2(string plteks)

{

int i = 0;

int j1 = 0;

int j2 = 0;

StringBuilder cipherst = new StringBuilder();

for (int pl = 0; pl < plteks.Length; pl++) {

i = (i+1) % 256;

j1 = (j1 + S1[i]) % 256; int temp = S1[i];

S1[i] = S1[j1]; S1[j1] = temp;

int z1 = S2[(S1[i] + S1[j1]) % 256];

int cipher1 = (int)plteks[pl] ^ z1;

j2 = (j2 + S2[i]) % 256; int temp1 = S2[i];

S2[i] = S2[j2]; S2[j2] = temp1;

int z2 = S1[(S2[i] + S2[j2]) % 256];

int cipher2 = cipher1 ^ z2;

cip.Add(cipher2);

cipherst.Append(Convert.ToChar(cipher2));

}

return cipherst.ToString();

} } }


(3)

2. Kode Program MD5 using System; using System.Text;

using System.Diagnostics; namespace Sistem

{

public class MD5

{

private static int[] S

= { 7, 12, 17, 22, 5, 9, 14, 20, 4,11, 16, 23, 6, 10, 15, 21}; private static int[] Tabel_T = new int[64];

private static void tabel() {

//pembuatan tabel T[i] unchecked{

for (int i = 0; i < 64; i++){

Tabel_T[i] = (int) (long) ((1L << 32) * Math.Abs(

Math.Sin(i + 1)));

} } }

private static int BUFF_A;

private static int BUFF_B;

private static int BUFF_C;

private static int BUFF_D;

public byte[] GetMd5(byte[] input)

{

unchecked{

tabel();

BUFF_A = 0x67452301;

BUFF_B = (int) 0xEFCDAB89L;

BUFF_C = (int) 0x98BADCFEL;

BUFF_D = 0x10325476;

//perhitungan jumlah blok dan panjang pesan int pesanByte = input.Length;

int block = (int)((uint)(pesanByte + 8) >> 6) + 1;

int jumlah = block << 6;

byte[] padding = new byte[jumlah - pesanByte];

padding[0] = (byte) 0x80;

long pesanBit = (long) pesanByte << 3;

//representasi panjang pesan asli for (int i = 0; i < 8; i++){

padding[padding.Length 8 + i] = (byte) pesanBit;

pesanBit = (int)((uint)pesanBit >> 8);

}

int a = BUFF_A;

int b = BUFF_B;

int c = BUFF_C;

int d = BUFF_D;


(4)

for(int i = 0; i < block; i++){

int index = i << 6;

for(int j = 0; j < 64; j++, index++)

buffer[(int)((uint)j >> 2)] = ((int) ((index

< pesanByte) ? input [index]

: padding[index

pesanByte]) << 24) | (int)((uint)buffer [(int)((uint)j >> 2)]

>> 8); int A = a;

int B = b;

int C = c;

int D = d;

for (int j = 0; j < 64; j++){

int fungsi = (int)((uint)j >> 4);

int f = 0;

int bufferIndex = j;

switch (fungsi){

case 0 :

f = (b & c) | (~b & d); break;

case 1 :

f = (b & d) | (c & ~d); bufferIndex

= (bufferIndex * 5 + 1) & 0x0F;

break; case 2 :

f = b ^ c ^ d; bufferIndex = (bufferIndex * 3 + 5) & 0x0F;

break; case 3 :

f = c ^ (b | ~d); bufferIndex

= (bufferIndex * 7) & 0x0F;

break; }

int temp

= RotateLeft(a + f + buffer[bufferIndex]

+ Tabel_T[j], S[(fungsi << 2) | (j & 3)] );

a = d; d = c; c = b;

b = b + temp; }

a += A; b += B; c += C; d += D; }

//proses low-order

byte[] md5 = new byte[16];


(5)

for (int i = 0; i < 4; i++){

int n = (i == 0) ? a : ((i == 1) ? b : ((i

== 2) ? c : d));

for (int j = 0; j < 4; j++){

md5[plus++] = (byte) n;

n = (int)((uint) n >> 8);

} }

return md5; }

}

public String toHexString(byte[] hex){

StringBuilder sb = new StringBuilder();

for(int i = 0; i < hex.Length; i++){

sb.Append((hex[i] & 0xFF).ToString("X2"));

}

return sb.ToString();

}

static int RotateLeft(int value, int shift)

{

unchecked{

uint uvalue = (uint) value;

uint uresult = (uvalue << shift) | (uvalue >> 32

shift);

return (int) uresult;

} } } }


(6)

CURRICULUM VITAE

1. Biodata

2. Riwayat Pendidikan

2012 – 2016 : S1 Ilmu Komputer Universitas Sumatera Utara 2009 – 2012 : SMA Negeri 1 Padangsidimpuan

2006 – 2009 : SMP Negeri 1 Padangsidimpuan 2000 – 2006 : SD Negeri 200117 Padangsidimpuan

3. Keahlian

Bahasa : Indonesia, Inggris Pemrograman : C#, Pascal, C++

Database : MySql

Perkantoran : Microsoft Office

4. Kursus yang Diikuti

2016 : Les Bahasa Inggris di Briton

5. Pengalaman Organisasi

[2014 – Sekarang] : Anggota Ilmu Komputer Laboratory Center (IKLC) Nama : Nur Hayati

Alamat Sekarang : Jln. Dr. Mansyur Gg. Sipirok No. 16H Medan Alamat Orang Tua : Jln. ST. Mhd. Arief Gg.Lurah Padangsidimpuan Telp/ Hp : 085658090062


(7)

6. Pengalaman Kerja

[2014 – Sekarang] : Asisten Ilmu Komputer Laboratory Center (IKLC)

7. Seminar

[2014] : Seminar Nasional Literasi Informasi “SENARAI”

[2014] : Seminar Internasional “Young People of Character-The Hope of the Future”


(8)

DAFTAR PUSTAKA

Ariyanto, Y. 2009. Algoritma RC4 dalam Proteksi Transmisi dan Hasil Query Untuk ORDBMS POSTGRESQL. Jurnal Informatika. Volume 10, Nomor 1. Hal 53-59

Ariyus, D. 2006. Computer Security. Yogyakarta: Andi

Ariyus, D. 2008. Pengantar Ilmu Kriptografi Teori, Analisis, dan Implementasi. Yogyakarta: Andi

Buana, R.G. 2012. Pengujian Integritas Data Menggunakan Algoritma MD5. Jurnal Dinamika Dotcom. Volume 3, Nomor 1. Hal 87-97

Chulkamdi, M T., Pramono, S.H. & Yudaningtyas, E. 2015. Kompresi teks menggunakan algoritma huffman dan MD5 pada instant messaging smartphone android. Jurnal EECCIS. Volume 9, Nomor 1. Hal 103-108

Fatta, H.A. 2007. Analisis & Perancangan Sistem Informasi. Yogyakarta: Andi

Fowler, M. 2004. UML Distilled, 3th Ed., A Brief Guide to the Standard Object Modeling Language. Tim Penerjemah Penerbit Andi. Yogyakarta: Andi

Harahap, R. 2010. Sistem pengamanan data teks menggunakan algoritma message digest-5. Skripsi. Universitas Sumatera Utara

Hossam & Moussa, B. MD5 algorithm description with an example. (Online) https://www.scribd.com/doc/35954574/MD5-With-Example (19 Juni 2016) Komputer, W. 2003. Memahami Model Enkripsi dan Security Data. Yogyakarta: Andi Kromodimoeljo, S. 2010. Teori dan Aplikasi Kriptografi. SPK IT Consulting

Kurniawan, Y. 2004. Kriptografi Keamanan Internet dan Jaringan Komunikasi. Bandung: Informatika

McKague, M.E. 2005. Design and analysis of RC4-like stream ciphers. Thesis. University of Waterloo

Menezes, A., Oorschot, P.V. & Vanstone, S. 1996. Handbook of Applied Cryptography. CRC Press

Mollin, R.A. 2007. An Introduction to Cryptography. Second Edition. Taylor & Francis Group

Mooduto, H.A. & Albar. 2004. Enkripsi data menggunakan algoritma RC4. Jurnal Ilmiah R & B. Volume 4, Nomor 2. Hal 68-74


(9)

Nathasia, N.D. & Wicaksono, A.E. 2011. Penerapan teknik kriptografi stream cipher untuk pengaman basis data. Jurnal Basis Data, ICT Research Center UNAS. Volume 6, Nomor 1. Hal 1-22

Fast Software Encryption, FSE 2004. Hal 245-259

Rivest, R.L. 1992. The MD5 message-digest algorithm. (Online)

Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan. Yogyakarta : Andi

Schneier, B. 1996. Applied Cryptography Protocols, Algorithms, and Source Code in C. Second Edition

Sukmawan, B. 1998. RC4 stream cipher. (Online)

Tsunoo, Y., Saito, T., Kubo, H., Shigeri, M., Suzaki, T. & Kawabata, T. 2005. The most efficient distinguishing attack on VMPC and RC4A

Zain, R.H. 2012. Perancangan dan implementasi cryptography dengan metode algoritma RC4 pada type file document menggunakan bahasa pemrograman visul basic 6.0. Jurnal Momentum. Volume 12, Nomor 1. Hal 71-80


(10)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem adalah teknik pemecahan masalah yang menguraikan bagian-bagian komponen dengan mempelajari seberapa baik bagian-bagian komponen tersebut bekerja dan berinteraksi dalam mencapai tujuan (Fatta, 2007). Analisis sistem dilakukan untuk mengidentifikasi permasalahan-permasalahan yang ada sehingga sistem dapat berjalan sebagaimana mestinya. Pada penelitian ini terdapat dua analisis sistem yang dilakukan yaitu analisis masalah dan analisis kebutuhan.

3.1.1 Analisis Masalah

Permasalahan yang dibahas dalam penelitian ini adalah bagaimana cara menjaga kerahasiaan suatu pesan atau informasi dari pihak-pihak yang tidak berwenang yang menginginkan informasi tersebut serta dapat menjamin bahwa informasi yang diperoleh masih utuh atau tidak mengalami perubahan.

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa berbentuk seperti ikan yang terdiri dari kepala ikan (fish’s head) dan tulang-tulang ikan (fish’s bones). Masalah yang diidentifikasi terletak pada bagian kepala ikan. Sementara pada bagian tulangnya menggambarkan penyebab-penyebab dari masalah tersebut. Diagram Ishikawa pada sistem ini ditunjukkan pada Gambar 3.1.


(11)

Gambar 3.1 Diagram Ishikawa 3.1.2 Analisis Kebutuhan

Dalam membangun sebuah sistem, perlu dilakukan tahap analisis kebutuhan sistem untuk mengetahui kebutuhan yang diperlukan oleh sistem secara menyeluruh. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu kebutuhan fungsional dan kebutuhan non-fungsional.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan fungsional yang harus dipenuhi dari sistem yang dirancang adalah sebagai berikut:

1. Sistem dapat melakukan enkripsi data terhadap file teks dengan menggunakan algoritma RC4A.

2. Sistem menghitung nilai hash dari hasil enkripsi (ciphertext) dengan menggunakan algoritma MD5.

3. Sistem dapat memverifikasi keutuhan file yang diterima dengan mencocokkan nilai hash yang ada.

4. Sistem dapat mengembalikan pesan atau file ke bentuk semula, yaitu dengan mendekripsi kembali ciphertext sesuai dengan kunci yang digunakan pada proses enkripsi.


(12)

3.1.2.2 Kebutuhan Non-Fungsional

Kebutuhan non-fungsional adalah kebutuhan yang berisi properti perilaku yang dimiliki oleh sistem (Fatta, 2007). Kebutuhan non-fungsional dari sistem yang dirancang adalah sebagai berikut:

1. Kinerja

Sistem yang dibangun dapat menampilkan hasil dari fungsi kriptografi yang dilakukan yaitu enkripsi dan dekripsi.

2. Informasi

Sistem yang dibangun mampu menampilkan pesan ketika nilai hash file yang dihitung dari sistem tidak sama dengan nilai hash yang diterima.

3. Mudah dipelajari dan digunakan

Sistem yang dibangun bersifat user friendly sehingga sistem dapat dengan mudah dipelajari dan digunakan oleh pengguna.

4. Hemat biaya

Sistem yang dibangun tidak memerlukan perangkat tambahan maupun sistem pendukung dalam penggunaannya.

3.2 Pemodelan Sistem

Pemodelan sistem dilakukan untuk menunjukkan gambaran dari sistem yang akan dibangun, bagaimana interaksi antar objek yang ada pada sistem, serta hubungan yang terjadi di dalamnya. Pada penelitian ini digunakan pemodelan UML (Unified Modeling Language) untuk mendesain serta merancang sistem. Model UML yang digunakan yaitu use case diagram dan activity diagram.

3.2.1 Use Case Diagram

Use case adalah teknik untuk merekam persyaratan fungsional sebuah sistem. Use

case mendeskripsikan interaksi antara para pengguna sistem dengan sistem itu sendiri, dengan menunjukkan gambaran bagaimana sistem tersebut digunakan. Dalam use case, para pengguna disebut sebagai aktor. Aktor merupakan sebuah peran yang dimainkan seorang pengguna dalam kaitannya dengan sistem. Use case diagram


(13)

menampilkan aktor, use case, dan hubungan antar keduanya (Fowler, 2004). Use case diagram dari sistem ditunjukkan pada Gambar 3.2.

Gambar 3.2 Use Case Diagram Sistem

Narasi use case Enkripsi File dapat dilihat pada Tabel 3.1. Tabel 3.1 Use Case Enkripsi File

Nama Enkripsi File

Aktor User

Deskripsi Use case ini mendeskripsikan proses enkripsi file dengan algoritma RC4A

Alur Utama - User memilih file yang akan dienkripsi

- User memasukkan kunci yang telah disepakati


(14)

Prakondisi -

Pasca Kondisi User mendapatkan hasil enkripsi plaintext

Narasi use case Membangkitkan Kode MD5 dapat dilihat pada Tabel 3.2. Tabel 3.2 Use Case Membangkitkan Kode MD5

Nama Membangkitkan Kode MD5

Aktor User

Deskripsi Use case ini mendeskripsikan proses untuk mendapatkan kode hash MD5

Alur Utama User menekan tombol Proses MD5

Alur Alternatif User dapat memasukkan secara langsung kata yang ingin dihitung kode hash MD5 nya

Prakondisi User sudah mendapatkan hasil enkripsi file berupa ciphertext Pasca Kondisi User mendapatkan hasil perhitungan kode MD5

Narasi use case Verifikasi File dapat dilihat pada Tabel 3.3. Tabel 3.3 Use Case Verifikasi File

Nama Verifikasi File

Aktor User

Deskripsi Use case ini mendeskripsikan proses untuk memverifikasi file dengan cara membandingkan kode MD5 yang diterima dari si pengirim dengan kode MD5 yang dihasilkan sistem


(15)

Alur Alternatif - Prakondisi -

Pasca Kondisi User mendapatkan hasil proses verifikasi

Narasi use case Dekripsi File dapat dilihat pada Tabel 3.4. Tabel 3.4 Use Case Dekripsi File

Nama Dekripsi File

Aktor User

Deskripsi Use case ini mendeskripsikan proses dekripsi file dengan algoritma RC4A

Alur Utama - User memilih file yang akan didekripsi

- User memasukkan kunci yang telah disepakati

Alur Alternatif -

Prakondisi User sudah mendapatkan hasil verifikasi file Pasca Kondisi User mendapatkan hasil proses dekripsi (plaintext)

3.2.2 Activity Diagram

Activity diagram adalah teknik yang digunakan untuk menggambarkan logika prosedural, proses bisnis, dan jalur kerja (Fowler, 2004). Activity diagram pada sistem ini ditunjukkan pada Gambar 3.3.


(16)

Gambar 3.3 Activity Diagram

3.3 Flowchart

Flowchart merupakan gambaran atau bagan yang memperlihatkan urutan dan

hubungan antar proses. Berikut adalah flowchart dari sistem yang akan dibangun: 3.3.1 Flowchart Sistem

Flowchart dari sistem dapat dilihat pada Gambar 3.4.


(17)

Gambar 3.4 Flowchart Sistem

3.3.2 Flowchart Algoritma RC4A

Algoritma RC4A menggunakan proses KSA dan PRGA yang sama dengan algoritma RC4. Flowchart dari algoritma RC4 dapat dilihat pada Gambar 3.5. Sementara flowchart dari algoritma RC4A untuk proses enkripsi dan dekripsinya masing-masing dapat dilihat pada Gambar 3.6 dan Gambar 3.7.


(18)

(19)

(20)

Gambar 3.7 Flowchart Dekripsi Algoritma RC4A

3.4 Perancangan Antarmuka Sistem

Perancangan antarmuka merupakan desain awal dari tampilan sistem yang akan dibangun. Perancangan antarmuka digunakan untuk memberikan kemudahan kepada pengguna sistem.

3.4.1 Menu Utama

Menu utama pada sistem terdiri dari satu form utama dengan beberapa menu tab yaitu menu enkripsi, dekripsi, bantuan, dan tentang. Menu tersebut memiliki fungsinya masing-masing dan dapat diakses secara langsung oleh pengguna.


(21)

3.4.1.1 Menu Enkripsi

Gambar 3.8 Menu Enkripsi Keterangan :

1. Tab Enkripsi untuk menampilkan menu enkripsi. 2. Tab Dekripsi untuk menampilkan menu dekripsi. 3. Tab Bantuan untuk menampilkan menu bantuan. 4. Tab Tentang untuk menampilkan menu tentang.

5. TextBox untuk menampilkan nama file plaintext.

6. TextBox untuk memasukkan kunci.

7. RichTextBox untuk menampilkan ciphertext.

8. TextBox untuk menampilkan hash MD5.

9. Button untuk memilih file yang akan dienkripsi. 10. Button untuk melakukan proses enkripsi.

Enkripsi Dekripsi Bantuan Tentang

1 2 4

5

6

7

8

9

10

11

12

13 14

3


(22)

11. Button untuk menyimpan ciphertext yang dihasilkan. 12. Button untuk melakukan proses perhitungan nilai MD5.

13. Button untuk menyimpan kode MD5.

14. RichTextBox untuk menampilkan plaintext.

15. Button untuk menghapus data yang digunakan sebelumnya.

3.4.1.2 Menu Dekripsi

Gambar 3.9 Menu Dekripsi Keterangan :

1. Tab Enkripsi untuk menampilkan menu enkripsi. 2. Tab Dekripsi untuk menampilkan menu dekripsi. 3. Tab Bantuan untuk menampilkan menu bantuan. 4. Tab Tentang untuk menampilkan menu tentang.

5. TextBox untuk menampilkan nama file ciphertext.

Enkripsi Dekripsi Bantuan Tentang

1 2 3 4

5

6

7 8

9

10

11

13

14 12


(23)

6. TextBox untuk memasukkan kode MD5.

7. TextBox untuk memasukkan kunci.

8. RichTextBox untuk menampilkan plaintext.

9. Button untuk memilih file yang akan didekripsi. 10. Button untuk memilih file yang berisi kode MD5. 11. Button untuk melakukan proses verifikasi.

12. Label untuk menampilkan hasil proses verifikasi. 13. Button untuk melakukan proses dekripsi.

14. Button untuk menyimpan plaintext.

15. RichTextBox untuk menampilkan ciphertext.

16. Button untuk menghapus data yang digunakan sebelumnya.

3.4.1.3 Menu Bantuan

Menu bantuan berisi informasi mengenai cara penggunaan sistem.

Gambar 3.10 Menu Bantuan Keterangan :

1. Tab Enkripsi untuk menampilkan menu enkripsi. Enkripsi Dekripsi Bantuan Tentang

1 2 3 4

5


(24)

2. Tab Dekripsi untuk menampilkan menu dekripsi. 3. Tab Bantuan untuk menampilkan menu bantuan. 4. Tab Tentang untuk menampilkan menu tentang.

5. Label untuk menampilkan informasi mengenai cara untuk mengenkripsi file.

6. Label untuk menampilkan informasi mengenai cara untuk mendekripsi file.

3.4.1.4 Menu Tentang

Gambar 3.11 Menu Tentang Keterangan :

1. Tab Enkripsi untuk menampilkan menu enkripsi. 2. Tab Dekripsi untuk menampilkan menu dekripsi. 3. Tab Bantuan untuk menampilkan menu bantuan. 4. Tab Tentang untuk menampilkan menu tentang.

5. Label untuk menampilkan informasi mengenai aplikasi.

6. PictureBox untuk menampilkan gambar.

7. Label untuk menampilkan informasi mengenai aplikasi.

Enkripsi Dekripsi Bantuan Tentang

1 2 3 4

5

6


(25)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Setelah melakukan tahap analisis dan perancangan sistem maka tahapan yang dilakukan selanjutnya adalah implementasi sistem. Sistem ini dibangun dengan menggunakan bahasa pemrograman C#. Perangkat lunak yang digunakan sebagai Integrated Development Environment (IDE) adalah SharpDevelop versi 4, 3.

Pada sistem ini terdapat satu form utama dengan beberapa menu tab yaitu menu enkripsi, dekripsi, bantuan, dan tentang.

4.1.1 Menu Enkripsi

Menu enkripsi merupakan menu yang pertama kali muncul pada saat aplikasi dijalankan. Pada menu ini tersedia dua RichTextBox yang masing-masing berfungsi untuk menampilkan isi dari file teks asli dan hasil ciphertext yang diperoleh.

Menu enkripsi berisi tentang proses enkripsi dengan menggunakan algoritma RC4A dan juga proses untuk menghasilkan nilai hash MD5. Sehingga terdapat dua output yang akan diperoleh dari menu ini, yakni file berupa ciphertext dan kode MD5 dari ciphertext tersebut. Selanjutnya keduanya akan dikirimkan oleh si pengirim kepada si penerima pesan. Menu enkripsi dapat dilihat pada Gambar 4.1.


(26)

Gambar 4.1 Menu Enkripsi

4.1.2 Menu Dekripsi

Menu dekripsi merupakan menu yang digunakan untuk melakukan proses dekripsi. Menu ini digunakan oleh si penerima pesan untuk mendapatkan kembali pesan asli yang dikirimkan kepadanya.

Sebelum melakukan proses dekripsi, maka terlebih dahulu dilakukan proses verifikasi file untuk membuktikan apakah file yang diterima masih asli atau sudah mengalami perubahan. Proses verifikasi ini dilakukan dengan cara mencocokkan kode


(27)

MD5 yang diterima dari si pengirim dengan kode MD5 yang akan dihasilkan dari sistem. Jika hasil verifikasi “Sesuai” maka file yang diterima masih asli dan selanjutnya dapat dilakukan dekripsi pesan. Tampilan untuk menu dekripsi dapat dilihat pada Gambar 4.2.

Gambar 4.2 Menu Dekripsi

4.1.3 Menu Bantuan

Menu bantuan merupakan menu yang digunakan untuk menampilkan informasi tentang cara mengoperasikan sistem atau aplikasi yang dibuat. Tampilan untuk menu bantuan dapat dilihat pada Gambar 4.3.


(28)

Gambar 4.3 Menu Bantuan

4.1.4 Menu Tentang

Menu tentang merupakan menu yang berfungsi untuk menampilkan informasi mengenai sistem atau aplikasi yang dibuat dan informasi mengenai penulis. Menu tentang dapat dilihat pada Gambar 4.4.


(29)

Gambar 4.4 Menu Tentang

4.2 Pengujian Sistem

Pengujian sistem dilakukan untuk memastikan bahwa sistem yang telah dibangun dapat berjalan dengan baik sesuai dengan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem.


(30)

4.2.1 Pengujian Hasil Enkripsi

4.2.1.1 Pengujian Hasil Enkripsi Sistem

Untuk melakukan proses enkripsi, maka tahap awal yang dilakukan adalah memilih menu enkripsi. Setelah itu lakukan langkah-langkah berikut ini untuk melakukan proses enkripsi.

1. Tekan tombol Pilih File untuk memilih file teks (*.txt dan *.doc) yang akan dienkripsi.

2. Masukkan kunci RC4A pada kolom yang telah disediakan. 3. Tekan tombol Enkripsi untuk melakukan proses enkripsi.

4. Tekan tombol Simpan untuk menyimpan hasil enkripsi / ciphertext. 5. Tekan tombol Proses MD5 untuk mendapatkan kode MD5 dari ciphertext. 6. Kemudian simpan kode MD5 yang diperoleh dengan menekan tombol Simpan. Contoh hasil proses enkripsi dapat dilihat pada Gambar 4.5 dengan masukan file E:\tes.txt dan kunci “ilkom12”.


(31)

Gambar 4.5 Hasil Proses Enkripsi

Kemudian hasil proses enkripsi tersebut disimpan dalam file E:\hasiltes.txt seperti ditunjukkan pada Gambar 4.6. Hasil proses enkripsi disimpan dalam bentuk nilai desimal.


(32)

Gambar 4.6 File Hasil Enkripsi

4.2.1.2 Pengujian Hasil Enkripsi Manual

Berikut adalah contoh hasil enkripsi manual algoritma RC4A dengan mode 4 byte (untuk lebih menyederhanakan). Plaintext yang digunakan adalah “HI”.

Proses KSA dengan masukan K dan S1 adalah sebagai berikut :

1. Inisialisasi array S1, S1 = {0, 1, 2, 3}

2. Kunci yang digunakan adalah 1 dan 7, l = 2 byte. Ulangi kunci hingga memenuhi array K, K = {1, 7, 1, 7}


(33)

3. j = 0

Iterasi 1 ( i = 0, j = 0, S1 = {0, 1, 2, 3})

j = (j + S1[i] + K[i mod l]) mod 4

j = (0 + S1[0] + K[0 mod 2]) mod 4

j = (0 + 0 + 1) mod 4 = 1 swap S1[i] dengan S1[j]

swap S1[0] dengan S1[1], S1 = {1, 0, 2, 3}

4. Iterasi 2 ( i = 1, j = 1, S1 = {1, 0, 2, 3})

j = 0

swap S1[1] dengan S1[0], S1 = {0, 1, 2, 3}

5. Iterasi 3 ( i = 2, j = 0, S1 = {0, 1, 2, 3})

j = 3

swap S1[2] dengan S1[3], S1 = {0, 1, 3, 2}

6. Iterasi 4 ( i = 3, j = 3, S1 = {0, 1, 3, 2})

j = 0

swap S1[3] dengan S1[0], S1 = {2, 1, 3, 0}

Proses PRGA untuk mendapatkan nilai WK adalah sebagai berikut: 1. For WK = 0 to l – 1, dimana l = 2

( i = j = 0, S1 = {2, 1, 3, 0} )

Iterasi 1 ( WK = 0) i = (i + 1) mod 4 i = (0+1) mod 4 = 1 j = (j + S1[i]) mod 4


(34)

j = (0 + S1[1]) mod 4

j = (0 + 1) mod 4 = 1 swap S1[i] dengan S1[j]

swap S1[1] dengan S1[1], S1 = {2, 1, 3, 0}

output = S[(S1[i] + S1[j]) mod 4]

output = S[(1 + 1) mod 4] output = S[2] = 3

WK[0] = 3

2. Iterasi 2 ( WK = 1)

( i = 1, j = 1, S1 = {2, 1, 3, 0} )

i = (i + 1) mod 4 i = (1+1) mod 4 = 2 j = (j + S1[i]) mod 4

j = (1 + S1[2]) mod 4

j = (1 + 3) mod 4 = 0 swap S1[i] dengan S1[j]

swap S1[2] dengan S1[0], S1 = {3, 1, 2, 0}

output = S[(S1[i] + S1[j]) mod 4]

output = S[(2 + 3) mod 4] output = S[1] = 1

WK[1] = 1

Maka WK = {3, 1}

Proses KSA dengan masukan WK dan S2. Proses ini sama halnya dengan proses

sebelumnya, hanya saja jika sebelumnya menggunakan K dan S1 maka kali ini yang

digunakan adalah WK dan S2. Pada akhir dari proses ini diperoleh S2 = {3, 1, 2, 0}.

Setelah S1 dan S2 diperoleh dari proses KSA, selanjutnya masuk ke tahap PRGA.

Proses PRGA dengan masukan S1 dan S2 adalah sebagai berikut :

1. Iterasi 1 (i = j1 = j2 = 0, S1 = {3, 1, 2, 0}, S2 = {3, 1, 2, 0})

i = (i + 1) mod 4 i = (0+1) mod 4 = 1


(35)

j1 = (j1 + S1[i]) mod 4

j1 = (0 + S1[1]) mod 4

j1 = (0 + 1) mod 4 = 1

swap S1[i] dengan S1[j1]

swap S1[1] dengan S1[1], S1 = {3, 1, 2, 0}

output = S2[(S1[i] + S1[j1]) mod 4]

output = S2[(1 + 1) mod 4]

output = S2[2] = 2

j2 = (j2 + S2[i]) mod 4

j2 = (0 + S2[1]) mod 4

j2 = (0 + 1) mod 4 = 1

swap S2[i] dengan S2[j2]

swap S2[1] dengan S2[1], S2 = {3, 1, 2, 0}

output = S1[(S2[i] + S2[j2]) mod 4]

output = S1[(1 + 1) mod 4]

output = S1[2] = 2

Selanjutnya plaintext H di XOR dengan 2 kemudian di XOR lagi dengan 2, maka : H XOR 2 = 01001000 XOR 00000010 = 01001010 XOR 00000010 = 01001000 2. Iterasi 2 ( i = 1, j1 = 1, j2 = 1, S1 = {3, 1, 2, 0}, S2 = {3, 1, 2, 0} )

i = (i + 1) mod 4 i = (1+1) mod 4 = 2 j1 = (j1 + S1[i]) mod 4


(36)

j1 = (1 + S1[2]) mod 4

j1 = (1 + 2) mod 4 = 3

swap S1[i] dengan S1[j1]

swap S1[2] dengan S1[3], S1 = {3, 1, 0, 2}

output = S2[(S1[i] + S1[j1]) mod 4]

output = S2[(0 + 2) mod 4]

output = S2[2] = 2

j2 = (j2 + S2[i]) mod 4

j2 = (1 + S2[2]) mod 4

j2 = (1 + 2) mod 4 = 3

swap S2[i] dengan S2[j2]

swap S2[2] dengan S2[3], S2 = {3, 1, 0, 2}

output = S1[(S2[i] + S2[j2]) mod 4]

output = S1[(0 + 2) mod 4]

output = S1[2] = 0

Selanjutnya plaintext I di XOR dengan 2 kemudian di XOR lagi dengan 0, maka : I XOR 2 = 01001001 XOR 00000010 = 01001011 XOR 00000000 = 01001011


(37)

Tabel 4.1 Proses XOR Keystream dengan Plaintext pada Enkripsi

H I

Plaintext 01001000 01001001

Keystream 1 00000010 00000010

01001010 01001011

Keystream 2 00000010 00000000

Ciphertext 01001000 01001011

H K

Sebagaimana terlihat pada Tabel 4.1, plaintext “HI” di xor dengan keystream 1 dan keystream 2 yang telah dihasilkan pada akhir proses PRGA sehingga didapatkan ciphertext pesan berupa “HK”.

4.2.2 Pengujian Hasil Perhitungan MD5

4.2.2.1 Pengujian Hasil Perhitungan MD5 Sistem

Setelah hasil dari proses enkripsi diperoleh yaitu file ciphertext maka selanjutnya adalah melakukan proses perhitungan MD5 dari file tersebut. Hasil dari proses ini dapat dilihat pada Gambar 4.7 sesuai dengan inputan file sebelumnya. Contoh lain dari proses perhitungan MD5 dapat dilihat pada Gambar 4.8 dengan pesan “Hello World!".


(38)

Gambar 4.7 Hasil Proses Perhitungan MD5 File

Setelah diperoleh kode MD5 seperti terlihat pada Gambar 4.7 maka selanjutnya kode MD5 tersebut disimpan dan dikirimkan kepada si penerima beserta dengan ciphertext yang telah disimpan sebelumnya. Kode MD5 ini nantinya akan digunakan oleh si penerima pesan untuk melakukan proses verifikasi sebelum melakukan dekripsi terhadap pesan yang diterima.


(39)

Gambar 4.8 Hasil Proses Perhitungan MD5

4.2.2.2 Pengujian Hasil Perhitungan MD5 Manual

Berikut adalah contoh implementasi algoritma MD5 dengan pesan “Hello World!" (Hossam & Moussa, circa 2000).

1. Penambahan bit-bit pengganjal (padding bits)

Pesan “Hello World!" memiliki panjang 12 byte dimana tiap-tiap byte diubah ke dalam bilangan desimal sesuai dengan kode ASCII seperti terlihat pada Gambar 4.9.


(40)

Gambar 4.9 Pesan Dalam Bentuk Desimal (Hossam & Moussa, circa 2000)

Pesan akan ditambahkan 448 – 12*8 = 352 bit pengganjal sehingga panjang pesan menjadi 96 + 352 = 448 bit. Bit-bit pengganjal terdiri dari sebuah bit 1 dan diikuti dengan bit 0 yang menjadi sisanya.

2. Penambahan nilai panjang pesan semula Panjang pesan semula adalah 96 bit.

64 bit representasi dari 96 adalah 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100000 (secara low-order) seperti terlihat pada Gambar 4.10.

Gambar 4.10 Representasi Panjang Pesan Semula (Hossam & Moussa, circa 2000)


(41)

64 bit yang menyatakan panjang pesan semula ditambahkan ke hasil dari langkah sebelumnya. Jika sebelumnya panjang pesan 448 bit, maka hasil dari panjang pesan saat ini setelah ditambah 64 bit menjadi 512 bit seperti terlihat pada Gambar 4.11.

Gambar 4.11 Penambahan 64 bit pada Pesan (Hossam & Moussa, circa 2000)

3. Inisialisasi penyangga (buffer) MD

Empat word penyangga (A, B, C, D) digunakan untuk menghitung message digest. Setiap A, B, C, D meupakan register 32 bit. Register-register ini diinisialisasi ke dalam nilai hexadesimal, dengan ketentuan low-order terlebih dahulu.


(42)

Tabel 4.2 Nilai Buffer (A, B, C, D)

Nilai 32 bit register (Hexa)

Setelah diubah ke dalam bentuk low-order (Hexa)

Setelah diubah ke dalam bentuk low-order (Desimal)

word A : 01 23 45 67 0x67452301 a : 1732584193

word B : 89 ab cd ef 0xefcdab89 b : 4023233417

word C : fe dc ba 98 0x98badcfe c : 2562383102

word D : 76 54 32 10 0x10325476 d : 271733878

4. Pengolahan pesan dalam blok berukuran 512 bit

Pesan yang sebelumnya berukuran 512 bit dikelompokkan dalam word-word berukuran 32 bit sehingga 512 : 32 = 16 word.

Sekarang X menunjukkan 16 word masing-masing 32 bit seperti pada Gambar 4.12.

Gambar 4.12 Pesan Dalam Bentuk 16 Word (Hossam & Moussa, circa 2000)


(43)

Selanjutnya dilakukan perhitungan seperti berikut ini.

• Misalkan [abcd k s i] pada operasi pertama [ABCD 0 7 1]

• F(b, c, d) = F(B, C, D) = (B ∧ C) ∨ (∼B ∧ D) = (4023233417 ∧ 2562383102) ∨ (∼4023233417 ∧ 271733878) = 2562383102

• (a + F(b,c,d) + X[k] + T[i]) = 1732584193 + 2562383102 + 1819043144 + 3614090360 = 9728100799 (1001000011110101110000100110111111) • S^n(X) = (X << n) OR (X >> 32-n)

n = 7

X = 9728100799 (1001000011110101110000100110111111) X << 7 = 0111101011100001001101111110000000

X >> 25 = 0000000000000000000000000100100001

X >> 25 = 0111101011100001001101111110100001 = 8246321057 OR

• a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s) = (4023233417 + 8246321057) MOD (232) = 3679619882

Sekarang nilai a adalah 3679619882, b, c, dan d tidak mengalami perubahan.

• Untuk iterasi 2, diperoleh nilai d adalah 2081685101 dan register yang lain tidak berubah.

• Dari putaran keempat diperoleh nilai terakhir dari keempat register. a = 538764524 ; d = 2077978953 ; c = 4184057696 ; b = 1186497226 A = A + a = (1732584193 + 538764524 ) MOD 232 = 2271348717 = 10000111 01100010 00000111 11101101 = 0x876207ED

B = B + b = (4023233417 + 1186497226) MOD 232 = 914763347 = 00110110 10000110 00101110 01010011 = 0x36862E53


(44)

C = C + c = (2562383102 + 4184057696) MOD 232 = 2451473502 = 10010010 00011110 10000100 01011110 = 0x921E845E

D = D + d = (271733878 + 2077978953) MOD 232 = 2349712831 = 10001100 00001101 11000101 10111111 = 0x8C0DC5BF

5. Output

Message digest menghasilkan output sebagai A, B, C, D yang dimulai dari A ke D secara low-order.

MD5 dari pesan “Hello World!” = 0xED076287532E86365E841E92BFC50D8C

4.2.3 Pengujian Hasil Dekripsi

4.2.3.1 Pengujian Hasil Dekripsi Sistem

Untuk melakukan proses dekripsi, maka tahap awal yang dilakukan adalah memilih menu dekripsi. Setelah itu lakukan langkah-langkah berikut ini untuk melakukan proses dekripsi.

1. Tekan tombol Pilih File untuk memilih file teks (*.txt dan *.doc) yang akan didekripsi.

2. Tekan tombol Cari Kode untuk memilih file kode MD5 yang diterima. 3. Tekan tombol Verifikasi untuk melakukan verifikasi file.

4. Lihat Hasil Verifikasi, jika hasilnya “Sesuai” maka file yang diterima masih asli. 5. Masukkan kunci RC4A pada kolom yang telah disediakan.

6. Tekan tombol Dekripsi untuk melakukan proses dekripsi.

7. Tekan tombol Simpan untuk menyimpan hasil dekripsi / plaintext.

Contoh hasil proses dekripsi dapat dilihat pada Gambar 4.13 dengan masukan file E:\hasiltes.txt dan kode MD5 yang telah diperoleh sebelumnya serta kunci “ilkom12”.


(45)

Gambar 4.13 Hasil Proses Dekripsi

4.2.3.2 Pengujian Hasil Dekripsi Manual

Ciphertext yang akan didekripsi adalah ciphertext yang telah diperoleh pada enkripsi sebelumnya yaitu “HK”. Proses dekripsi sama seperti proses enkripsi sebelumnya. Jika pada proses enkripsi, plaintext di xor dengan keystream untuk menghasilkan ciphertext sementara pada proses dekripsi, ciphertext di xor dengan keystream untuk menghasilkan plaintext.


(46)

Tabel 4.3 Proses XOR Keystream dengan Ciphertext pada Dekripsi

H K

Ciphertext 01001000 01001011

Keystream 1 00000010 00000010

01001010 01001001

Keystream 2 00000010 00000000

Plaintext 01001000 01001001

H I

Sebagaimana terlihat pada Tabel 4.3, ciphertext “HK” di xor dengan keystream 1 kemudian di xor lagi dengan keystream 2 sehingga dihasilkan plaintext semula yaitu “HI”. Keystream 1 dan keystream 2 diperoleh dengan cara yang sama seperti pada proses enkripsi sebelumnya.


(47)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Kesimpulan yang dapat diambil dari penelitian ini adalah:

1. Aplikasi yang dirancang dalam penelitian ini telah mampu melakukan proses pengamanan file teks dengan menggunakan algoritma RC4A.

2. Aplikasi yang dirancang mampu mengembalikan file teks hasil enkripsi menjadi file teks semula sebelum dienkripsi.

3. Aplikasi yang dirancang dalam penelitian ini telah mampu melakukan proses verifikasi keutuhan file dengan menggunakan algoritma MD5.

4. Algoritma MD5 dapat digunakan untuk memverifikasi keutuhan dari suatu file dengan cara menghitung nilai MD5 dari file tersebut dan membandingkannya dengan nilai MD5 yang diperoleh dari si pengirim.

5.2 Saran

Adapun saran yang dapat diberikan untuk pengembangan penelitian ini adalah sebagai berikut:

1. Untuk pengembangan sistem selanjutnya dapat menggunakan algoritma hash lain seperti SHA-1, SHA-256, dan lain sebagainya.

2. Sistem ini bekerja pada data teks, sehingga diharapkan penelitian selanjutnya dapat diimplementasikan pada data gambar, suara, atau video.


(48)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, 2010). Kriptografi adalah ilmu tentang metode-metode untuk mengirimkan pesan secara rahasia (disebut enkripsi atau bentuk samaran) sehingga hanya penerima yang dimaksud yang dapat memecahkan dan membaca pesan (dekripsi). Kriptografi secara etimologi terdiri dari kata kryptos berasal dari bahasa Yunani yang berarti tersembunyi dan graphein yang berarti tulisan. Pesan asli disebut plaintext dan pesan yang disamarkan disebut ciphertext (Mollin, 2007).

Secara garis besar, proses enkripsi adalah proses pengacakan naskah asli (plaintext) menjadi naskah acak (ciphertext) yang sulit untuk dibaca oleh seseorang yang tidak mempunyai kunci dekripsi. Yang dimaksud dengan sulit untuk dibaca disini adalah probabilitas mendapat kembali naskah asli oleh seseorang yang tidak mempunyai kunci dekripsi dalam waktu yang tidak terlalu lama adalah sangat kecil (Kromodimoeljo, 2010). Dekripsi merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi dikembalikan ke bentuk asalnya (teks asli), disebut dengan dekripsi pesan (Ariyus, 2008).

Algoritma kriptografi dibagi menjadi dua bagian berdasarkan kunci yang dipakainya:

1. Algoritma simetris (menggunakan satu kunci untuk enkripsi dan dekripsinya). 2. Algoritma asimetris (menggunakan kunci yang berbeda untuk enkripsi dan


(49)

2.2 Algoritma Kriptografi Kunci Simetris

Algoritma kriptografi simetris menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Kunci pada penyandian simetris diasumsikan bersifat rahasia yakni hanya pihak yang melakukan enkripsi dan dekripsi yang mengetahui nilainya. Oleh karena itu, penyandian dengan kunci simetris disebut juga dengan penyandian kunci rahasia (Sadikin, 2012).

Dalam lingkungan komunikasi, algoritma kriptografi kunci simetris dapat digunakan jika kedua belah pihak yang berkomunikasi satu dengan yang lainnya saling membagi kunci enkripsi sebelumnya (Wahana Komputer, 2003).

Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang tersebut akan dapat melakukan enkripsi dan dekripsi terhadap pesan. Contoh algoritma yang memakai kunci simetris antara lain DES, RC4, IDEA, AES, OTP, A5, dan lain sebagainya (Ariyus, 2008).

Algoritma kriptografi kunci simetris dibagi menjadi dua yaitu : 1. Stream cipher

Stream cipher adalah suatu sistem di mana proses enkripsi dan dekripsinya dilakukan dengan cara bit per bit. Pada sistem ini aliran bit kuncinya dihasilkan oleh suatu pembangkit bit acak atau disebut juga pembangkit aliran kunci (Zain, 2012).

Stream cipher mengenkripsi satu bit setiap kali. Bit hanya mempunyai dua buah nilai, sehingga proses enkripsi hanya menyebabkan dua keadaan pada bit tersebut yakni berubah atau tidak berubah. Keamanan stream cipher bergantung seluruhnya pada pembangkit aliran kunci. Jika pembangkit mengeluarkan aliran kunci yang benar-benar acak maka algoritma enkripsinya berada pada tingkat keamanan yang tinggi. Contoh algoritma stream cipher adalah RC4 dan A5 (Nathasia & Wicaksono, 2011).


(50)

2. Block cipher

Sistem block cipher mengkodekan data dengan cara membagi plaintext menjadi per blok dengan ukuran yang sama dan tetap. Kemudian setiap bloknya dienkripsi atau didekripsi sekaligus (Zain, 2012). Contoh algoritma ini adalah RC5, DES, AES, IDEA, dan Blowfish.

2.3 Algoritma Kriptografi Kunci Asimetris

Penyandian dengan kunci asimetris atau sering juga disebut dengan penyandian kunci publik adalah penyandian dengan kunci enkripsi dan dekripsi yang berbeda nilai. Kunci yang digunakan untuk enkripsi disebut dengan kunci publik (public key) dan kunci yang digunakan untuk dekripsi disebut kunci rahasia (private key) (Sadikin, 2012).

Kunci asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan yang satu lagi untuk proses dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki kunci rahasia yang dapat melakukan pembongkaran terhadap sandi yang dikirim untuknya (Ariyus, 2006).

Contoh, Alice ingin mengirim pesan kepada Bob, maka hal yang harus dilakukan adalah :

1. Bob memberitahukan kunci publiknya ke Alice.

2. Alice mengenkripsi pesan dengan menggunakan kunci publik Bob. 3. Bob mendekripsi pesan dari Alice dengan kunci rahasianya.

4. Begitu juga sebaliknya jika Bob ingin mengirim pesan kepada Alice. Contoh algoritma yang menggunakan kunci asimetris adalah RSA, DSA, Diffie-Hellman (DH), dan lain-lain (Ariyus, 2008).

2.4 Algoritma RC4

RC4 adalah stream cipher yang dirancang di RSA Security oleh Ron Rivest tahun 1987. Pada mulanya cara kerja RC4 dirahasiakan oleh RSA Security, akan tetapi ini dibocorkan di internet tahun 1994 di milis Cypherpunks. RSA Security tidak pernah


(51)

merilis RC4 secara resmi, akibatnya banyak yang menyebutnya sebagai ARC4 (alleged RC4 atau tersangka RC4) untuk menghindari masalah trademark (Kromodimoeljo, 2010).

RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Unit atau data pada umumnya merupakan sebuah byte. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip (Sukmawan, 1998).

Algoritma RC4 terdiri atas 2 bagian yaitu Key Scheduling Algorithm (KSA) dan Pseudo-Random Generation Algorithm (PRGA).

1. Key Scheduling Algorithm (KSA)

Dalam proses KSA terdapat 2 state array yang harus diinisialisasi yakni S dan K. Array S sepanjang 256 diinisialisasi dengan bilangan 0 sampai 255, S[0] = 0, S[1] = 1, ... , S[255] = 255. Sedangkan array K dengan panjang 256 diinisialisasi dengan kunci yang diulangi sampai seluruh array K[0], K[1], ... , K[255] terisi penuh (Ariyanto, 2009).

Berikut adalah algoritma KSA, dimana simbol l menyatakan panjang kunci dalam byte.

for i from 0 to 255 S[i] := i

endfor j := 0

for i from 0 to 255

j := (j + S[i] + K[i mod l]) mod 256 swap values of S[i] and S[j]


(52)

2. Pseudo-Random Generation Algorithm (PRGA)

State array S hasil dari proses KSA digunakan lagi dalam proses PRGA ini untuk menghasilkan keystream yang akan di XOR kan dengan plaintext untuk menghasilkan ciphertext (Mooduto & Albar, 2004).

Berikut adalah algoritma PRGA :

i := 0 j := 0

while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap values of S[i] and S[j]

output := S[(S[i] + S[j]) mod 256] endwhile

2.5 Algoritma RC4A

Pada FSE 2004, Souradyuti Paul dan Bart Preneel telah mengusulkan sebuah varian baru dari RC4 yang diberi nama RC4A. RC4A merupakan sebuah upaya untuk meningkatkan keamanan dari RC4 tanpa mengurangi efisiensi.

RC4A adalah stream cipher yang berorientasi byte. Tahap pembentukan dari RC4A lebih efisien dibanding RC4, tetapi tahap inisialisasinya memerlukan setidaknya dua kali proses inisialisasi dari RC4.

Berikut adalah algoritma KSA dari RC4A (Tsunoo, et al. circa 2005):

RC4_KSA(K,�1)

for i = 0 ... l-1 WK[i] = RC4_PRGA(�1) RC4_KSA(WK,�2)


(53)

Berikut adalah algoritma PRGA dari RC4A (Tsunoo, et al. circa 2005):

Initialization: i = 0

�1 = �2 = 0

Generation loop i = i + 1

�1 = �1 + �1[i]

Swap (�1[i], �1[�1])

Output z = �2[�1[i] + �1[�1]]

�2 = �2 + �2[i] Swap (�2[i], �2[�2])

Output z = �1[�2[i] + �2[�2]]

RC4A menggunakan dua state array, S1 dan S2, dan tiga buah indeks i, j1, dan

j2. RC4A menggunakan KSA yang sama dengan RC4 kecuali satu hal dimana KSA

digunakan dua kali, masing-masing sekali untuk S1 dan S2. Semua operasi aritmetika

dihitung dengan modulo 256.

Proses KSA dari RC4A terdiri atas 2 bagian yaitu : 1. KSA dengan masukan K dan S1.

2. KSA dengan masukan WK dan S2.

WK dihasilkan dari PRGA milik RC4. l di sini merupakan panjang kunci dalam byte.

Setelah S1 dan S2 diperoleh dari proses KSA, selanjutnya digunakan kembali dalam

PRGA. Tiap putaran dalam PRGA menghasilkan 2 byte output.

2.6 Fungsi Hash

Salah satu hal primitif mendasar dalam kriptografi modern adalah fungsi hash kriptografi yang sering disebut dengan fungsi hash satu arah. Fungsi hash adalah sebuah fungsi dengan masukan string biner yang panjangnya sembarang dan menghasilkan string biner dengan panjang yang tetap. Fungsi hash yang paling banyak digunakan dalam kriptografi adalah untuk integritas data dan tanda tangan digital (Menezes, et al. 1996).


(54)

Fungsi hash satu arah (one-way hash function) sering disebut juga sebagai message digest, fingerprint, dan fungsi kompresi. Fungsi ini biasanya diperlukan bila kita menginginkan pengambilan sidik jari suatu pesan. Sebagaimana sidik jari manusia yang menunjukkan identitas si pemilik sidik jari, fungsi ini diharapkan pula mempunyai kemampuan yang serupa dengan sidik jari manusia, di mana sidik jari pesan diharapkan menunjuk ke satu pesan dan tidak dapat menunjuk kepada pesan lainnya. Dinamakan sebagai fungsi kompresi karena biasanya, masukan fungsi hash ini selalu lebih besar dari pada keluarannya, sehingga seolah-olah mengalami kompresi. Namun kompresi hasil fungsi ini tidak dapat dikembalikan ke bentuk awalnya sehingga disebut fungsi satu arah. Dinamakan message digest karena seolah-olah merupakan inti sari pesan, meskipun sebenarnya tidak demikian (Kurniawan, 2004).

Fungsi hash dapat digunakan untuk mewujudkan layanan keutuhan data. Misalnya M merupakan pesan dan h adalah fungsi hash, maka �= ℎ(�) disebut dengan message digest. Sebelum pesan M disebarkan/dikirimkan sebuah message digest ����� = ℎ(�) disimpan sebagai acuan. Misalnya didapatkan kembali �′ setelah disebarkan/dikirim apabila ingin menguji apakah � =�′ hitung kembali message digest baru ����= ℎ(�′) disimpulkan pesan tidak berubah bila ����� = ����� (Sadikin, 2012).

Fungsi hash memiliki karakteristik sebagai berikut (Kromodimoeljo, 2010) : 1. Preimage resistance.

Untuk suatu nilai hash yang sembarang (tidak diketahui asal-usulnya), sangat sukar untuk mencari naskah yang mempunyai nilai hash tersebut. 2. Second preimage resistance.

Untuk suatu naskah �1, sangat sukar untuk mencari naskah lain �2 yang mempunyai nilai hash yang sama.

3. Collision resistance.

Sangat sukar untuk mencari dua naskah �1 dan �2 yang berbeda, yang mempunyai nilai hash yang sama.

2.7 Algoritma MD5

MD5 adalah salah satu fungsi hash yang paling banyak digunakan. MD5 merupakan versi perbaikan dari MD4 yang dirancang oleh Ron Rivest pada tahun 1991. MD5


(55)

umumnya digunakan sebagai checksum untuk verifikasi integritas file yang didownload dari internet.

MD5 memproses teks masukan ke dalam blok-blok 512 bit, kemudian dibagi menjadi 16 buah sub blok sebesar 32 bit. Keluaran dari algoritma MD5 adalah sebuah set dari 4 buah blok masing-masing 32 bit, yang kemudian menghasilkan nilai hash 128 bit (Schneier, 1996).

Langkah-langkah pembuatan message digest pada MD5 adalah sebagai berikut: 1. Penambahan bit-bit pengganjal (padding bits)

Pesan ditambahkan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam bit) kongruen dengan 448, modulo 512. Hal ini berarti pesan akan mempunyai panjang yang hanya kurang 64 bit dari kelipatan 512. Penambahan bit selalu dilakukan walaupun panjang pesan sudah kongruen dengan 448, modulo 512. Jika panjang pesan jumlahnya 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit, jadi panjang bit-bit pengganjal adalah antara 1 sampai 512 bit-bit. Bit-bit-bit pengganjal terdiri dari sebuah bit 1 dan diikuti dengan bit 0 yang menjadi sisanya (Chulkamdi, dkk. 2015).

2. Penambahan nilai panjang pesan semula

Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Jika panjang pesan semula > 264, maka hanya 64 bit secara low-order yang digunakan. Pada saat ini, pesan yang dihasilkan memiliki panjang yang merupakan kelipatan dari 512.

3. Inisialisasi penyangga (buffer) MD

MD5 membutuhkan 4 buah penyangga atau buffer yang masing-masing panjangnya 4 x 32 bit = 128 bit. Setiap penyangga diinisialisasi dengan nilai hexadesimal sebagai berikut :

A = 01 23 45 67 B = 89 ab cd ef C = fe dc ba 98 D = 76 54 32 10


(56)

4. Pengolahan pesan dalam blok berukuran 512 bit

Dalam tahap ini terdapat fungsi yang akan menghasilkan output satu buah word 32 bit yang didefinisikan sebagai berikut :

F(b,c,d) = (b∧c) ( b∧d) G(b,c,d) = (b∧d)∨(c ∧∼d) H(b,c,d) = b c d I(b,c,d) = c (b∨ d)

(Operator logika and, or, not, xor masing-masing dilambangkan dengan

, , , ).

Tahap ini menggunakan sebuah tabel 64 elemen T[1 ... 64] yang dibangun dari fungsi sinus. T[i] menunjukkan urutan ke-i elemen dari tabel yang merupakan 232 × abs(sin(i)), di mana i dalam radian. Nilai T[i] dapat dilihat pada Tabel 2.1.

Tabel 2.1 Nilai T[i]

T[1] = D76AA478 T[2] = E8C7B756 T[3] = 242070DB T[4] = C1BDCEEE T[5] = F57C0FAF T[6] = 4787C62A T[7] = A8304613 T[8] = FD469501 T[9] = 698098D8 T[10] = 8B44F7AF T[11] = FFFF5BB1 T[12] = 895CD7BE T[13] = 6B901122 T[14] = FD987193 T[15] = A679438E T[16] = 49B40821

T[17] = F61E2562 T[18] = C040B340 T[19] = 265E5A51 T[20] = E9B6C7AA T[21] = D62F105D T[22] = 02441453 T[23] = D8A1E681 T[24] = E7D3FBCB T[25] = 21E1CDE6 T[26] = C33707D6 T[27] = F4D50D87 T[28] = 455A14ED T[29] = A9E3E905 T[30] = FCEFA3F8 T[31] = 676F02D9 T[32] = 8D2A4C8A

T[33] = FFFA3942 T[34] = 8771F681 T[35] = 69D96122 T[36] = FDE5380C T[37] = A4BEEA44 T[38] = 4BDECFA9 T[39] = F6BB4B60 T[40] = BEBFBC70 T[41] = 289B7EC6 T[42] = EAA127FA T[43] = D4EF3085 T[44] = 04881D05 T[45] = D9D4D039 T[46] = E6DB99E5 T[47] = 1FA27CF8 T[48] = C4AC5665

T[49] = F4292244 T[50] = 432AFF97 T[51] = AB9423A7 T[52] = FC93A039 T[53] = 655B59C3 T[54] = 8F0CCC92 T[55] = FFEFF47D T[56] = 85845DD1 T[57] = 6FA87E4F T[58] = FE2CE6E0 T[59] = A3014314 T[60] = 4E0811A1 T[61] = F7537E82 T[62] = BD3AF235 T[63] = 2AD7D2BB T[64] = EB86D391

Proses pada tahap ini terdiri dari 4 buah putaran dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali.

Operasi dasar MD5 ditulis dalam persamaan sebagai berikut:

a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s)


(57)

Empat buah putaran ditunjukkan pada Tabel 2.2, Tabel 2.3, Tabel 2.4, dan Tabel 2.5.

Misalkan notasi [abcd k s i], maka

Tabel 2.2 Putaran 1

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

Tabel 2.3 Putaran 2

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

Tabel 2.4 Putaran 3

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

Tabel 2.5 Putaran 4

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

5. Output

Setelah putaran keempat, nilai dari a, b, c, dan d ditambahkan masing-masing ke A, B, C, dan D dan algoritma berlanjut ke blok data selanjutnya. Output akhirnya adalah rangkaian dari A, B, C, dan D (Schneier, 1996).


(58)

2.8 Penelitian yang Relevan

Berikut ini beberapa penelitian yang terkait dengan algoritma RC4A dan MD5 :

1. Rosyanti Harahap (2010) dalam skripsi yang berjudul Sistem Pengamanan Data Teks Menggunakan Algoritma Message Digest-5. Menyimpulkan bahwa MD5 dapat melakukan pengujian terhadap data teks untuk mengetahui apakah data sudah diubah atau belum.

2. M Taofik Chulkamdi, Sholeh Hadi Pramono, dan Erni Yudaningtyas (2015) dalam jurnal yang berjudul Kompresi Teks Menggunakan Algoritma Huffman dan MD5 pada Instant Messaging Smartphone Android. Menyimpulkan bahwa algoritma MD5 sesuai untuk aplikasi instant message berbasis android untuk menjaga integritas password.

3. Rendi Gayu Buana (2012) dalam jurnal yang berjudul Pengujian Integritas Data Menggunakan Algoritma MD5. Menyimpulkan bahwa algoritma MD5 dapat mendeteksi perubahan yang terjadi pada suatu file walaupun perubahan tersebut sangat kecil.


(59)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Masalah keamanan merupakan salah satu aspek penting dalam proses pengiriman informasi. Informasi yang dikirimkan harus dapat dijaga kerahasiaan dan keutuhannya agar tidak dapat disalahgunakan oleh pihak-pihak yang tidak berwenang yang menginginkan informasi tersebut.

Kriptografi banyak digunakan untuk menjaga aspek keamanan informasi. Ada empat tujuan mendasar dari ilmu kriptografi yaitu confidentiality (kerahasiaan), integrity (keutuhan), authentication (keaslian pesan), dan non-repudiation (tak terbantahkan). Menurut Kromodimoeljo (2010) kriptografi adalah “ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi”. Dekripsi menggunakan kunci dekripsi mendapatkan kembali data asli.

Algoritma RC4 adalah algoritma kriptografi simetrik karena menggunakan kunci yang sama untuk mengenkripsi ataupun mendekripsi suatu pesan, data, atau informasi. Algoritma RC4 merupakan salah satu algoritma kunci simetris berbentuk stream cipher yang memproses unit atau input data, pesan atau informasi pada satu saat. Unit atau data pada umumnya merupakan sebuah byte. Pada FSE 2004, sebuah modifikasi baru dari RC4 telah diusulkan oleh Souradyuti Paul dan Bart Preneel yang diberi nama RC4A. RC4A merupakan sebuah upaya untuk meningkatkan keamanan dari RC4 dengan memperkenalkan sebuah permutasi tambahan di dalam desainnya.

MD5 merupakan fungsi hash satu arah yang dirancang oleh Ron Rivest dengan hash value 128 bit. Dikatakan fungsi hash satu arah karena pesan yang telah diubah menjadi message digest (pesan ringkas), sangat sulit untuk mengembalikannya ke pesan semula (plaintext). MD5 merupakan salah satu fungsi hash satu arah yang banyak digunakan untuk menguji integritas sebuah file.


(60)

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, maka yang menjadi rumusan masalah pada penelitian ini adalah sulit untuk menjaga kerahasiaan dan keutuhan dari suatu file teks. 1.3 Batasan Masalah

Dalam penelitian ini penulis membuat batasan masalah sebagai berikut: 1. Jenis data yang digunakan adalah file teks (*.txt dan *.doc).

2. Algoritma RC4A digunakan untuk proses enkripsi dan dekripsi.

3. Algoritma MD5 digunakan untuk memperoleh message digest dari pesan hasil enkripsi (ciphertext).

4. Bahasa pemrograman yang digunakan adalah C#.

1.4 Tujuan Penelitian

Tujuan penelitian ini adalah sebagai berikut:

1. Mengamankan file teks dengan menggunakan algoritma RC4A.

2. Memverifikasi keutuhan dari suatu file dengan menggunakan algoritma MD5.

1.5 Manfaat penelitian

Manfaat yang diharapkan dari penelitian ini adalah dapat membantu dalam mengatasi masalah kemanan data berupa file teks sehingga file tetap dapat terjaga kerahasiaan dan keutuhannya.

1.6 Metodologi Penelitian

Penelitian ini menerapkan beberapa metode penelitian sebagai berikut: 1. Studi Literatur

Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data terkait dengan penelitian ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, situs internet yang berkaitan dengan algoritma RC4A dan MD5.


(61)

2. Analisis dan Perancangan Sistem

Menganalisis dan merancang sistem yang akan dibuat sesuai dengan kebutuhan sistem dengan menggunakan pemodelan UML (Unified Modeling Language).

3. Implementasi Sistem

Pada tahap ini algoritma RC4A dan MD5 telah diimplementasikan ke dalam sebuah aplikasi program.

4. Pengujian Sistem

Pada tahap ini akan dilakukan pengujian terhadap sistem yang telah dikembangkan.

5. Dokumentasi Sistem

Melakukan dokumentasi sistem mulai dari tahap awal hingga akhir, untuk selanjutnya dibuat dalam bentuk laporan penelitian (skripsi).

1.7 Sistematika Penulisan

Sistematika dalam penulisan skripsi ini disusun menjadi beberapa bab, diantaranya yaitu:

BAB 1 : PENDAHULUAN

Bab ini berisi mengenai latar belakang masalah, rumusan masalah, batasan masalah, tujuan & manfaat penelitian, metode penelitian dan sistematika penulisan.

BAB 2 : LANDASAN TEORI

Bab ini berisi mengenai teori-teori yang digunakan untuk mendukung penulisan penelitian, selain itu dalam bab 2 juga dijelaskan mengenai metode yang digunakan dalam penelitian.

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini terdiri dari tahap analisis sistem dan desain/model perancangan dari program yang akan dibuat, dalam hal ini termasuk juga algoritma dari program tersebut.


(62)

BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisi mengenai implementasi dan pengujian dari program yang sebelumnya telah dirancang dan dianalisis sistemnya.

BAB 5 : KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dari hasil penelitian yang telah selesai dilakukan, juga saran atau rekomendasi guna penelitian lebih lanjut.


(63)

ABSTRAK

Perkembangan teknologi informasi yang semakin melesat dewasa ini memberikan kemudahan bagi siapa saja dalam melakukan pertukaran data atau informasi. Di sisi lain, timbul permasalahan akan kemanan data yang dapat terganggu oleh pihak-pihak yang tidak bertanggung jawab seperti adanya penyadapan, perusakan, pencurian data, ataupun tindakan penyalahgunaan lainnya. Penerapan teknik kriptografi merupakan salah satu solusi yang dapat dilakukan untuk mengatasi gangguan keamanan tersebut. Kriptografi merupakan ilmu atau seni untuk menjaga keamanan data dengan cara mengacak data atau pesan. Di dalam kriptografi dikenal istilah fungsi hash satu arah yang banyak digunakan untuk menguji integritas sebuah file. Pada penelitian ini, algoritma kriptografi dan fungsi hash yang digunakan adalah RC4A dan MD5. Pesan atau file teks yang akan dikirimkan terlebih dahulu dienkripsi dengan menggunakan algoritma RC4A. Kemudian algoritma MD5 digunakan untuk mendapatkan nilai hash dari pesan hasil enkripsi. Selanjutnya untuk mendapatkan kembali pesan asli dengan cara dekripsi RC4A maka terlebih dahulu dilakukan proses verifikasi file untuk menjamin bahwa file yang diterima belum mengalami perubahan atau masih asli. Verifikasi file ini dilakukan dengan cara mencocokkan nilai hash MD5 yang diperoleh dari si pengirim dengan nilai hash MD5 yang akan dihasilkan dari sistem. Hasil penelitian menunjukkan bahwa algoritma RC4A dan MD5 dapat diimplementasikan dengan baik sehingga keamanan data dapat bertambah karena sebelum melakukan dekripsi pesan maka terlebih dahulu dilakukan verifikasi pesan.


(64)

IMPLEMENTATION OF RC4A AND MD5 ALGORITHMS TO ENSURE CONFIDENTIALITY AND INTEGRITY

IN TEXT FILE

ABSTRACT

The rapid development of information technology these days provides the convenience for everyone to exchange data or information. On the other hand, problem arises in terms of the security of data that can be interrupted by parties who are not responsible such as tapping, destruction, theft, or other acts of abuse. The application of cryptographic techniques is one of the solutions that can be done to solve the security problems. Cryptography is the science or art to maintain the security of data by scrambling data or messages. In cryptography there is a term one-way hash function that is used to test the integrity of a file. In this study, the cryptographic algorithm and hash function used are RC4A and MD5. Message or a text file that will be transmitted is encrypted first by using RC4A algorithm. Then the MD5 algorithm is used to obtain a hash value of a message from encryption. Furthermore, to get back the original message by decryption of RC4A, do process of file verification first to ensure that the received file has not been corrupted or pristine. File verification is done by matching the MD5 hash value obtained from the sender with an MD5 hash value that will be generated from the system. The results showed that RC4A and MD5 algorithms can be implemented properly so that data security can be increased because prior to decrypt the message then firstly be verified the message.


(65)

IMPLEMENTASI ALGORITMA RC4A DAN MD5 UNTUK MENJAMIN CONFIDENTIALITY DAN INTEGRITY

PADA FILE TEKS

SKRIPSI

NUR HAYATI 121401027

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2016


(66)

IMPLEMENTASI ALGORITMA RC4A DAN MD5 UNTUK MENJAMIN CONFIDENTIALITY DAN INTEGRITY

PADA FILE TEKS

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

NUR HAYATI 121401027

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2016


(67)

PERSETUJUAN

Judul : IMPLEMENTASI ALGORITMA RC4A DAN MD5

UNTUK MENJAMIN CONFIDENTIALITY DAN INTEGRITY PADA FILE TEKS

Kategori : SKRIPSI

Nama : NUR HAYATI

Nomor Induk Mahasiswa : 121401027

Program Studi : S1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Desember 2016 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Amer Sharif, S.Si, M.Kom M. Andri Budiman, ST, M.Comp.Sc, M.E.M NIP. - NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M. Kom NIP.196203171991031001


(68)

PERNYATAAN

IMPLEMENTASI ALGORITMA RC4A DAN MD5 UNTUK MENJAMIN CONFIDENTIALITY DAN INTEGRITY

PADA FILE TEKS

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Desember 2016

Nur Hayati 121401027


(69)

PENGHARGAAN

Puji dan syukur kehadirat Allah SWT, yang dengan rahmat dan karunia-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Pada pengerjaan skripsi dengan judul Implementasi Algoritma RC4A dan MD5 untuk Menjamin Confidentiality dan Integrity pada File Teks, penulis menyadari bahwa banyak pihak yang turut membantu, baik dari pihak keluarga, sahabat dan orang-orang terkasih yang memotivasi dalam pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:

1. Bapak Prof. Dr. Runtung Sitepu, SH, M. Hum selaku Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara sekaligus sebagai Dosen Pembanding I yang telah memberikan kritik dan saran kepada penulis dalam pengerjaan skripsi ini.

4. Bapak M. Andri Budiman, ST, M.Comp.Sc, M.E.M selaku Dosen Pembimbing I yang telah memberikan arahan, kritik, dan saran kepada penulis dalam pengerjaan skripsi ini.

5. Bapak Amer Sharif, S.Si, M.Kom selaku Dosen Pembimbing II yang telah memberikan arahan, kritik, dan saran kepada penulis selama pengerjaan skripsi.

6. Ibu Dian Rachmawati, S. Si, M. Kom selaku Dosen Pembanding II yang telah memberikan kritik dan saran kepada penulis selama pengerjaan skripsi.


(70)

7. Seluruh tenaga pengajar dan pegawai di Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

8. Ayah dan Ibu tercinta Mhd. Tigor Harahap dan Rabiah Julida Hanum, serta kakak dan adik dr. Siti Rahmah, Laila Yunita, Fadli Al Habib yang selalu memberikan kasih sayang, doa, semangat, serta dukungan kepada penulis. 9. Teman-teman S1 Ilmu Komputer USU, Furqan Alatas, Riodat Permana

Sinulingga, Zulfikri, M. Yudha Syuhada, S. Kom, Nurhaliza Nasution, S. Kom, bang Al Mizfar, S. Kom, Muhammad Miftahul Huda yang telah banyak membantu penulis dalam pengerjaan skripsi ini.

10.Teman-teman kuliah, Desi Purnama Sari Sebayang, Erna Lestari, S. Kom, Nurun Hawa Pasaribu, Rina Iswara yang selama ini telah menemani penulis dalam menjalani seluruh kehidupan di kampus.

11.Seluruh teman-teman stambuk 2012 yang telah berbagi kebersamaan dan memberikan motivasi kepada penulis.

12.Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah banyak membantu dalam penyelesaian skripsi ini.

Semoga Allah SWT melimpahkan berkah dan kasih sayang-Nya kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.

Medan, Desember 2016 Penulis,


(71)

ABSTRAK

Perkembangan teknologi informasi yang semakin melesat dewasa ini memberikan kemudahan bagi siapa saja dalam melakukan pertukaran data atau informasi. Di sisi lain, timbul permasalahan akan kemanan data yang dapat terganggu oleh pihak-pihak yang tidak bertanggung jawab seperti adanya penyadapan, perusakan, pencurian data, ataupun tindakan penyalahgunaan lainnya. Penerapan teknik kriptografi merupakan salah satu solusi yang dapat dilakukan untuk mengatasi gangguan keamanan tersebut. Kriptografi merupakan ilmu atau seni untuk menjaga keamanan data dengan cara mengacak data atau pesan. Di dalam kriptografi dikenal istilah fungsi hash satu arah yang banyak digunakan untuk menguji integritas sebuah file. Pada penelitian ini, algoritma kriptografi dan fungsi hash yang digunakan adalah RC4A dan MD5. Pesan atau file teks yang akan dikirimkan terlebih dahulu dienkripsi dengan menggunakan algoritma RC4A. Kemudian algoritma MD5 digunakan untuk mendapatkan nilai hash dari pesan hasil enkripsi. Selanjutnya untuk mendapatkan kembali pesan asli dengan cara dekripsi RC4A maka terlebih dahulu dilakukan proses verifikasi file untuk menjamin bahwa file yang diterima belum mengalami perubahan atau masih asli. Verifikasi file ini dilakukan dengan cara mencocokkan nilai hash MD5 yang diperoleh dari si pengirim dengan nilai hash MD5 yang akan dihasilkan dari sistem. Hasil penelitian menunjukkan bahwa algoritma RC4A dan MD5 dapat diimplementasikan dengan baik sehingga keamanan data dapat bertambah karena sebelum melakukan dekripsi pesan maka terlebih dahulu dilakukan verifikasi pesan.


(72)

IMPLEMENTATION OF RC4A AND MD5 ALGORITHMS TO ENSURE CONFIDENTIALITY AND INTEGRITY

IN TEXT FILE

ABSTRACT

The rapid development of information technology these days provides the convenience for everyone to exchange data or information. On the other hand, problem arises in terms of the security of data that can be interrupted by parties who are not responsible such as tapping, destruction, theft, or other acts of abuse. The application of cryptographic techniques is one of the solutions that can be done to solve the security problems. Cryptography is the science or art to maintain the security of data by scrambling data or messages. In cryptography there is a term one-way hash function that is used to test the integrity of a file. In this study, the cryptographic algorithm and hash function used are RC4A and MD5. Message or a text file that will be transmitted is encrypted first by using RC4A algorithm. Then the MD5 algorithm is used to obtain a hash value of a message from encryption. Furthermore, to get back the original message by decryption of RC4A, do process of file verification first to ensure that the received file has not been corrupted or pristine. File verification is done by matching the MD5 hash value obtained from the sender with an MD5 hash value that will be generated from the system. The results showed that RC4A and MD5 algorithms can be implemented properly so that data security can be increased because prior to decrypt the message then firstly be verified the message.


(73)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

BAB 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 2

1.6 Metodologi Penelitian 2

1.7 Sistematika Penulisan 3

BAB 2 Landasan Teori

2.1 Kriptografi 5

2.2 Algoritma Kriptografi Kunci Simetris 6

2.3 Algoritma Kriptografi Kunci Asimetris 7

2.4 Algoritma RC4 7

2.5 Algoritma RC4A 9

2.6 Fungsi Hash 10

2.7 Algoritma MD5 11

2.8 Penelitian yang Relevan 15

BAB 3 Analisis dan Perancangan Sistem

3.1 Analisis Sistem 16

3.1.1 Analisis Masalah 16

3.1.2 Analisis Kebutuhan 17

3.1.2.1 Kebutuhan Fungsional 17

3.1.2.2 Kebutuhan Non-Fungsional 18

3.2 Pemodelan Sistem 18

3.2.1 Use Case Diagram 18


(74)

3.3 Flowchart 22

3.3.1 Flowchart Sistem 22

3.3.2 Flowchart Algoritma RC4A 23

3.4 Perancangan Antarmuka Sistem 26

3.4.1 Menu Utama 26

3.4.1.1 Menu Enkripsi 27

3.4.1.2 Menu Dekripsi 28

3.4.1.3 Menu Bantuan 29

3.4.1.4 Menu Tentang 30

BAB 4 Implementasi dan Pengujian Sisten

4.1 Implementasi Sistem 31

4.1.1 Menu Enkripsi 31

4.1.2 Menu Dekripsi 32

4.1.3 Menu Bantuan 33

4.1.4 Menu Tentang 34

4.2 Pengujian Sistem 35

4.2.1 Pengujian Hasil Enkripsi 36

4.2.1.1 Pengujian Hasil Enkripsi Sistem 36 4.2.1.2 Pengujian Hasil Enkripsi Manual 38 4.2.2 Pengujian Hasil Perhitungan MD5 43 4.2.2.1 Pengujian Hasil Perhitungan MD5 Sistem 43 4.2.2.2 Pengujian Hasil Perhitungan MD5 Manual 45

4.2.3 Pengujian Hasil Dekripsi 50

4.2.3.1 Pengujian Hasil Dekripsi Sistem 50 4.2.3.2 Pengujian Hasil Dekripsi Manual 51 BAB 5 Kesimpulan dan Saran

5.1 Kesimpulan 53

5.2 Saran 53


(75)

DAFTAR TABEL

Hal.

Tabel 2.1 Nilai T[i] 13

Tabel 2.2 Putaran 1 14

Tabel 2.3 Putaran 2 14

Tabel 2.4 Putaran 3 14

Tabel 2.5 Putaran 4 14

Tabel 3.1 Use Case Enkripsi File 19

Tabel 3.2 Use Case Membangkitkan Kode MD5 20

Tabel 3.3 Use Case Verifikasi File 20

Tabel 3.4 Use Case Dekripsi File 21

Tabel 4.1 Proses XOR Keystream dengan Plaintext pada Enkripsi 43

Tabel 4.2 Nilai Buffer (A, B, C, D) 48


(76)

DAFTAR GAMBAR

Hal.

Gambar 3.1 Diagram Ishikawa 17

Gambar 3.2 Use Case Diagram Sistem 19

Gambar 3.3 Activity Diagram 22

Gambar 3.4 Flowchart Sistem 23

Gambar 3.5 Flowchart Algoritma RC4 24

Gambar 3.6 Flowchart Enkripsi Algoritma RC4A 25

Gambar 3.7 Flowchart Dekripsi Algoritma RC4A 26

Gambar 3.8 Menu Enkripsi 27

Gambar 3.9 Menu Dekripsi 28

Gambar 3.10 Menu Bantuan 29

Gambar 3.11 Menu Tentang 30

Gambar 4.1 Menu Enkripsi 32

Gambar 4.2 Menu Dekripsi 33

Gambar 4.3 Menu Bantuan 34

Gambar 4.4 Menu Tentang 35

Gambar 4.5 Hasil Proses Enkripsi 37

Gambar 4.6 File Hasil Enkripsi 38

Gambar 4.7 Hasil Proses Perhitungan MD5 File 44

Gambar 4.8 Hasil Proses Perhitungan MD5 45

Gambar 4.9 Pesan Dalam Bentuk Desimal 46

Gambar 4.10 Representasi Panjang Pesan Semula 46

Gambar 4.11 Penambahan 64 bit pada Pesan 47

Gambar 4.12 Pesan Dalam Bentuk 16 Word 48


(77)

DAFTAR LAMPIRAN

Hal.

Lampiran 1 Listing Program A-1


(1)

vii

IMPLEMENTATION OF RC4A AND MD5 ALGORITHMS TO ENSURE CONFIDENTIALITY AND INTEGRITY

IN TEXT FILE

ABSTRACT

The rapid development of information technology these days provides the convenience for everyone to exchange data or information. On the other hand, problem arises in terms of the security of data that can be interrupted by parties who are not responsible such as tapping, destruction, theft, or other acts of abuse. The application of cryptographic techniques is one of the solutions that can be done to solve the security problems. Cryptography is the science or art to maintain the security of data by scrambling data or messages. In cryptography there is a term one-way hash function that is used to test the integrity of a file. In this study, the cryptographic algorithm and hash function used are RC4A and MD5. Message or a text file that will be transmitted is encrypted first by using RC4A algorithm. Then the MD5 algorithm is used to obtain a hash value of a message from encryption. Furthermore, to get back the original message by decryption of RC4A, do process of file verification first to ensure that the received file has not been corrupted or pristine. File verification is done by matching the MD5 hash value obtained from the sender with an MD5 hash value that will be generated from the system. The results showed that RC4A and MD5 algorithms can be implemented properly so that data security can be increased because prior to decrypt the message then firstly be verified the message.


(2)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

BAB 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 2

1.6 Metodologi Penelitian 2

1.7 Sistematika Penulisan 3

BAB 2 Landasan Teori

2.1 Kriptografi 5

2.2 Algoritma Kriptografi Kunci Simetris 6

2.3 Algoritma Kriptografi Kunci Asimetris 7

2.4 Algoritma RC4 7

2.5 Algoritma RC4A 9

2.6 Fungsi Hash 10

2.7 Algoritma MD5 11

2.8 Penelitian yang Relevan 15

BAB 3 Analisis dan Perancangan Sistem

3.1 Analisis Sistem 16

3.1.1 Analisis Masalah 16

3.1.2 Analisis Kebutuhan 17

3.1.2.1 Kebutuhan Fungsional 17

3.1.2.2 Kebutuhan Non-Fungsional 18

3.2 Pemodelan Sistem 18

3.2.1 Use Case Diagram 18


(3)

ix

3.3 Flowchart 22

3.3.1 Flowchart Sistem 22

3.3.2 Flowchart Algoritma RC4A 23

3.4 Perancangan Antarmuka Sistem 26

3.4.1 Menu Utama 26

3.4.1.1 Menu Enkripsi 27

3.4.1.2 Menu Dekripsi 28

3.4.1.3 Menu Bantuan 29

3.4.1.4 Menu Tentang 30

BAB 4 Implementasi dan Pengujian Sisten

4.1 Implementasi Sistem 31

4.1.1 Menu Enkripsi 31

4.1.2 Menu Dekripsi 32

4.1.3 Menu Bantuan 33

4.1.4 Menu Tentang 34

4.2 Pengujian Sistem 35

4.2.1 Pengujian Hasil Enkripsi 36

4.2.1.1 Pengujian Hasil Enkripsi Sistem 36 4.2.1.2 Pengujian Hasil Enkripsi Manual 38

4.2.2 Pengujian Hasil Perhitungan MD5 43

4.2.2.1 Pengujian Hasil Perhitungan MD5 Sistem 43 4.2.2.2 Pengujian Hasil Perhitungan MD5 Manual 45

4.2.3 Pengujian Hasil Dekripsi 50

4.2.3.1 Pengujian Hasil Dekripsi Sistem 50 4.2.3.2 Pengujian Hasil Dekripsi Manual 51 BAB 5 Kesimpulan dan Saran

5.1 Kesimpulan 53

5.2 Saran 53


(4)

DAFTAR TABEL

Hal.

Tabel 2.1 Nilai T[i] 13

Tabel 2.2 Putaran 1 14

Tabel 2.3 Putaran 2 14

Tabel 2.4 Putaran 3 14

Tabel 2.5 Putaran 4 14

Tabel 3.1 Use Case Enkripsi File 19

Tabel 3.2 Use Case Membangkitkan Kode MD5 20

Tabel 3.3 Use Case Verifikasi File 20

Tabel 3.4 Use Case Dekripsi File 21

Tabel 4.1 Proses XOR Keystream dengan Plaintext pada Enkripsi 43

Tabel 4.2 Nilai Buffer (A, B, C, D) 48


(5)

xi

DAFTAR GAMBAR

Hal.

Gambar 3.1 Diagram Ishikawa 17

Gambar 3.2 Use Case Diagram Sistem 19

Gambar 3.3 Activity Diagram 22

Gambar 3.4 Flowchart Sistem 23

Gambar 3.5 Flowchart Algoritma RC4 24

Gambar 3.6 Flowchart Enkripsi Algoritma RC4A 25

Gambar 3.7 Flowchart Dekripsi Algoritma RC4A 26

Gambar 3.8 Menu Enkripsi 27

Gambar 3.9 Menu Dekripsi 28

Gambar 3.10 Menu Bantuan 29

Gambar 3.11 Menu Tentang 30

Gambar 4.1 Menu Enkripsi 32

Gambar 4.2 Menu Dekripsi 33

Gambar 4.3 Menu Bantuan 34

Gambar 4.4 Menu Tentang 35

Gambar 4.5 Hasil Proses Enkripsi 37

Gambar 4.6 File Hasil Enkripsi 38

Gambar 4.7 Hasil Proses Perhitungan MD5 File 44

Gambar 4.8 Hasil Proses Perhitungan MD5 45

Gambar 4.9 Pesan Dalam Bentuk Desimal 46

Gambar 4.10 Representasi Panjang Pesan Semula 46

Gambar 4.11 Penambahan 64 bit pada Pesan 47

Gambar 4.12 Pesan Dalam Bentuk 16 Word 48


(6)

DAFTAR LAMPIRAN

Hal.

Lampiran 1 Listing Program A-1