IMPLEMENTASI ALGORITMA KRIPTOGRAFI RSA DAN RABIN PADA THREE-PASS PROTOCOL UNTUK PENGAMANAN DATA PADA APLIKASI CHAT BERBASIS ANDROID

(1)

LISTING PROGRAM 1. Program Rabin

package com.januar.tppchat.crypto; import java.nio.ByteBuffer;

public class Rabin {

public static long Encrypt(long n, long m) {

long cipher = GeneralMath.ModularExponential(m, 2, n); return cipher;

}

public static long Decrypt(Long cipher, int p, int q){ long[] euclidean = GeneralMath.ExtendedEuclideanAll(p, q); long Yp = euclidean[1];

long Yq = euclidean[2]; long mp = 0;

long mq = 0; long n = p * q;

mp = GeneralMath.ModularExponential(cipher, (p+1)/4, p); mq = GeneralMath.ModularExponential(cipher, (q+1)/4, q); Long R = GeneralMath.mod((Yp * p * mq) + (Yq * q * mp), n); Long S = GeneralMath.mod((Yp * p * mq) - (Yq * q * mp), n); Long T = GeneralMath.mod(-1*(Yp * p * mq) + (Yq * q * mp), n);

Long U = GeneralMath.mod(-1*(Yp * p * mq) - (Yq * q * mp), n);

if (checkSimilarity(R) != -1) { return checkSimilarity(R);

}else if (checkSimilarity(S) != -1) { return checkSimilarity(S);

}else if (checkSimilarity(T) != -1) { return checkSimilarity(T);

}else if (checkSimilarity(U) != -1) { return checkSimilarity(U);

} return 0; }

public static long[] DecryptArray(Long cipher, long p, long q){ long[] euclidean = GeneralMath.ExtendedEuclideanAll(p, q); long Yp = euclidean[1];

long Yq = euclidean[2]; long mp = 0;

long mq = 0; long n = p * q;

mp = GeneralMath.ModularExponential(cipher, (p+1)/4, p); mq = GeneralMath.ModularExponential(cipher, (q+1)/4, q); Long R = GeneralMath.mod((Yp * p * mq) + (Yq * q * mp), n); Long S = GeneralMath.mod((Yp * p * mq) - (Yq * q * mp), n); Long T = GeneralMath.mod(-1*(Yp * p * mq) + (Yq * q * mp),


(2)

n);

Long U = GeneralMath.mod(-1*(Yp * p * mq) - (Yq * q * mp), n);

long[] result = new long[]{R,S,T,U}; return result;

}

public static String Decrypt(int p, int q, byte[] cipherByte) throws InvalidKeyException {

String plainText = "";

for (int i = 0; i < cipherByte.length / 8; i++) { byte[] cipher = new byte[4];

byte[] kongruenByte = new byte[4];

for (int j = 0; j < kongruenByte.length; j++) { cipher[j] = cipherByte[(i*8)+j];

kongruenByte[j] = cipherByte[(i*8+4)+j]; }

int cipherInt = ByteBuffer.wrap(cipher).getInt(); int plainInt = (int)Decrypt((long)cipherInt, p, q); if (plainInt == 0) {

throw new InvalidKeyException("private key wrong."); }

String plainBitString = Integer.toString(plainInt, 2); plainText = plainText +

(char)Integer.parseInt(plainBitString.substring(0, plainBitString.length() - 8), 2)

+

(char)Integer.parseInt(plainBitString.substring(plainBitString.length () - 8), 2);

}

return plainText; }

public static int checkSimilarity(Long p) {

String binary = Long.toString(p, 2); if ((binary.length() % 2) == 0) {

if (binary.substring(0, binary.length() /

2).equals(binary.substring(binary.length() /2))) {

return Integer.parseInt(binary.substring(0, binary.length() /2), 2); }else{

return -1; } } else { return -1;

} } }


(3)

2. Program RSA

package com.januar.tppchat.crypto; import java.math.BigInteger;

import java.util.Random; public class RSA {

public static long getPublicKey(long totien){ Random random = new Random();

long e = 100 + (long)(random.nextDouble()*(totien - 100)); while (GeneralMath.GCD(totien, e) != 1) {

e = 100 + (long)(random.nextDouble()*(totien - 100)); }

return e; }

public static long getPrivateKey(long totien, long e){ return GeneralMath.ExtendedEuclidean(totien, e);

}

public static long Encrypt(long m, long e, long n){

// return GeneralMath.ModularExponential(m, e, n); BigInteger b_m = new BigInteger(Long.toString(m));

BigInteger b_e = new BigInteger(Long.toString(e)); BigInteger b_n = new BigInteger(Long.toString(n)); BigInteger result = b_m.modPow(b_e,b_n);

return Long.parseLong(result.toString()); }

public static long Decrypt(long c, long d, long n){

// return GeneralMath.ModularExponential(c, d, n); BigInteger b_c = new BigInteger(Long.toString(c));

BigInteger b_d = new BigInteger(Long.toString(d)); BigInteger b_n = new BigInteger(Long.toString(n)); BigInteger result = b_c.modPow(b_d,b_n);

return Long.parseLong(result.toString()); }

}

3. Program Sieve of Eratosthenes

package com.januar.tppchat.crypto; import java.util.ArrayList;

import java.util.List; import java.util.Random;

public class SieveofEratosthenes { public static final int MAX = 99999999;

public static List<Integer> generate(int min, int limit) {


(4)

boolean[] bil_asal = new boolean[limit]; for (int i = 0; i < limit; i++) {

bil_asal[i] = true; }

bil_asal[0] = false; // bilangan 0 bukan bilangan prima bil_asal[1] = false; // bilangan 1 bukan bilangan prima

// Penerapan algoritma Sieve of Erathosthenes

for (int i = 2; i <= Math.sqrt(limit); i++) { if (bil_asal[i]) {

for (int j = i * i; j < limit; j = j + i) { bil_asal[j] = false; }

} }

// Masukkan semua bilangan prima hasil pencarian ke dalam array "prima"

List<Integer> prima = new ArrayList<Integer>(); for (int i = 2; i < limit; i++) {

if (bil_asal[i] && i >= min) { prima.add(i); }

}

System.out.println("Jumlah bilangan prima antara "+ min +"

sampai " + limit

+ " adalah " + prima.size() + " buah"); return prima;

}

public static List<Integer> generate() { return SieveofEratosthenes.generate(2, MAX);

}

public static List<Integer> generate(int limit) { return SieveofEratosthenes.generate(2, limit); }

public static List<Integer> generateKey() {

List<Integer> keys = new ArrayList<Integer>();

List<Integer> prima = SieveofEratosthenes.generate(100, 10000);

Random random = new Random(); int q = 0;

int temp = random.nextInt(prima.size()); keys.add(prima.get(temp));

do {

temp = random.nextInt(prima.size()); q = prima.get(temp);

} while (keys.get(0) == q); keys.add(q);

return keys; }

public static List<Integer> generateRabinKey() {

List<Integer> keys = new ArrayList<Integer>();

List<Integer> prima = SieveofEratosthenes.generate(100000, 1000000);


(5)

Random random = new Random(); while (keys.size() != 2) {

int temp = random.nextInt(prima.size()); if (prima.get(temp) % 4 == 3) {

if (!keys.contains(prima.get(temp))) {

keys.add(prima.get(temp)); }

} } return keys; }

}

4. Program Three-Pass Protocol

package com.januar.tppchat.crypto; import android.util.Base64;

import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer;

public class ThreePassProtocol {

public static String PassOne(String text, long n) throws UnsupportedEncodingException {

byte[] cipherByte = new byte[text.length() * 8]; // dikali 8 karena ukuran tipe data long

int i = 0;

for (char ch : text.toCharArray()) { int c = (int)ch;

String plaintext = Integer.toString(c, 2); plaintext = plaintext + plaintext;

long m = Long.parseLong(plaintext, 2); long enc = Rabin.Encrypt(n, m);

System.arraycopy(ByteBuffer.allocate(8).putLong(enc).array(), 0, cipherByte, i * 8, 8);

i++; }

return Base64.encodeToString(cipherByte, Base64.DEFAULT); }

public static String PassTwo(String text, long e, long n) throws UnsupportedEncodingException {

byte[] plainByte = Base64.decode(text, Base64.DEFAULT);

byte[] cipherByte = new byte[plainByte.length]; // panjang byte plain dengan cipher sama

for (int i = 0; i < (plainByte.length / 8); i++) { byte[] temp = new byte[8];

System.arraycopy(plainByte, i * 8, temp, 0, 8); long m = ByteBuffer.wrap(temp).getLong();

long enc = RSA.Encrypt(m, e, n);


(6)

System.arraycopy(ByteBuffer.allocate(8).putLong(enc).array(), 0, cipherByte, i * 8, 8);

}

return Base64.encodeToString(cipherByte, Base64.DEFAULT);

}

public static String PassThree(String text, long p, long q) throws UnsupportedEncodingException {

byte[] cipherByte = Base64.decode(text, Base64.DEFAULT);

byte[] plainByte = new byte[cipherByte.length * 4]; // setiap satu bilangan menghasilkan 4 hasil dekripsi

for (int i = 0; i < (cipherByte.length / 8); i++) { byte[] temp = new byte[8];

System.arraycopy(cipherByte, i * 8, temp, 0, 8); long c = ByteBuffer.wrap(temp).getLong();

long[] dec = Rabin.DecryptArray(c, p, q); byte[] decByte = new byte[32];

System.arraycopy(ByteBuffer.allocate(8).putLong(dec[0]).array(), 0, decByte, 0, 8);

System.arraycopy(ByteBuffer.allocate(8).putLong(dec[1]).array(), 0, decByte, 8, 8);

System.arraycopy(ByteBuffer.allocate(8).putLong(dec[2]).array(), 0, decByte, 16, 8);

System.arraycopy(ByteBuffer.allocate(8).putLong(dec[3]).array(), 0, decByte, 24, 8);

System.arraycopy(decByte, 0, plainByte, (i * 32), 32); }

return Base64.encodeToString(plainByte, Base64.DEFAULT);

}

public static String DecryptResult(String text, long d, long n) { String plain = "";

byte[] cipherByte = Base64.decode(text, Base64.DEFAULT);

for (int i = 0; i < (cipherByte.length / 32); i++) { byte[] temp = new byte[8];

System.arraycopy(cipherByte, i * 32, temp, 0, 8); long c = ByteBuffer.wrap(temp).getLong();

long c1 = Rabin.checkSimilarity(RSA.Decrypt(c, d, n));

System.arraycopy(cipherByte, (i * 32) + 8, temp, 0, 8); c = ByteBuffer.wrap(temp).getLong();

long c2 = Rabin.checkSimilarity(RSA.Decrypt(c, d, n));

System.arraycopy(cipherByte, (i * 32) + 16, temp, 0, 8); c = ByteBuffer.wrap(temp).getLong();

long c3 = Rabin.checkSimilarity(RSA.Decrypt(c, d, n));

System.arraycopy(cipherByte, (i * 32) + 24, temp, 0, 8); c = ByteBuffer.wrap(temp).getLong();

long c4 = Rabin.checkSimilarity(RSA.Decrypt(c, d, n)); if(c1 != -1){

plain += (char)c1; }else if(c2 != -1){


(7)

plain += (char)c2; }else if(c3 != -1){ plain += (char)c3; }else if(c4 != -1){ plain += (char)c4; }

} return plain; }


(8)

CURRICULUM VITAE

Nama Lengkap : Januar Andi Halomoan Sirait DATA PRIBADI

Tempat / Tanggal lahir : Medan / 21Januari 1991

Alamat rumah : Dusun I Kamboja, Laut Dendang Deli Serdang

Jenis Kelamin : Laki-Laki

Agama : Kristen Protestan

Status : Belum menikah

No. HP : 085760534549

E-mail

RIWAYAT PENDIDIKAN FORMAL

1998-2003 : SD BUDI MURNI 7 MEDAN 2003-2006 : SMP BUDI MURNI 4 MEDAN 2006-2009 : SMA NEGERI 7 MEDAN

2009-2012 : POLITEKNIK INFORMATIKA DEL

SEMINAR

2014 : Peserta Seminar Nasional Literasi Informasi (SENARAI)

PENGALAMAN KERJA

2012 : Kerja Praktek di PT. Mandiri Inti Perkasa , Jakarta – Kalimantan Timur

2012 - 2016 : Bekerja di PT. Halotec Indonesia, Medan


(9)

Daftar Pustaka

Bellare, M. & Rogaway, P. 2005. Introduction to Modern Cryptography. California.

Galbraith, Steven D. 2012. Mathematics Of Public Key Cryptography. Cambridge University Press: New York.

Haramaini, T. 2014. Algoritma One Time Pad pada Three Pass Protocol. Tesis.

Universitas Sumatera Utara.

Kasmaji, Aji Nugraha Santosa, 2014. Implementasi Algoritma RSA dan Three-Pass Protocol pada Sistem Pertukaran Pesan Rahasia. Jurnal Institut Teknologi Bandung.

Möhring, Rolf H. dan Oellrich, Martin. 2011. The Sieve of Eratosthenes – How Fast Can We Compute a Prime Number Table. Algorithms Unplugged, hal 116-130. Berlin Heidelberg, Jerman: Springer-Verlag.

Mollin, Richard A. 2003. RSA and Pulic-Key Cryptography: Discrete Mathematics and Its Applications.Taylor & Francis Group: New York.

Mollin, Richard A. 2007. An Introduction to Cryptography: Discrete Mathematics and Its Applications. Taylor & Francis Group: New York.

Mollin, Richard A. 2007. An Introduction to Cryptography Second Edition. Taylor & Francis Group: New York.

Munir, R. 2011. Kriptografi. Informatika: Bandung.

Schneier, B. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2nd Edition. New York.

Stallings, William. 2005. Cryptography and Network Security Principles and Practices 4th Ed. USA: Prentice Hall.

Sujiono, Dina Meiladya Rizki. 2016. Implementasi Three-Pass Protocol dengan Kombinasi Algoritma Beaufort Cipher dan One Time Pad untuk Pengamanan Data. Skripsi. Universitas Sumatera Utara


(10)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini akan dibahas mengenai beberapa analisi sistem dan perancangan sistem. Analisis sistem akan membahas bagaimana melakukan modifikasi algoritma RSA dan Rabin sehingga bersifat komutatif dan dapat digunakan dalam metode Three-Pass Protocol. Pada perancangan sistem akan dibahas mengenai flowchart sistem dan flowchart menu serta perancangan antarmuka (interface).

3.1 Analisis Sistem

Analisis sistem merupakan tahap awa dalam melakukan sebuah penelitian yang bertujuan untuk mengidentifikasi masalah yang akan diselesaikan, kebutuhan fungsional dan non fungsional yang dibutuhkan system. Dalam analisis sistem ini digambarkan proses-proses yang ada di dalam sistem untuk menghasilkan keluaran yang diinginkan pengguna. Hal ini dilakukan agar dalam pembangunan sistem tidak terjadi kesalahan yang berarti, sehingga sistem dapat berjalan dengan baik, tepat guna dan ketahanan sistem lebih terjaga serta selesai pada waktu yang ditentukan. Ada tiga tahapan analisis yang akan dilakukan dalam perancangan sistem ini yaitu analisis masalah, analisis kebutuhan dan analisis proses.

3.1.1 Analisis Masalah

Pada tahap analisis masalah akan dideskripsikan penyebab dari masalah yang akan diselesaikan oleh sistem. Kemudian masalah-masalah tersebut akan digambarkan pada Diagram Ishikawa atau dikenal juga dengan sebutan Fishbone Diagram.

Diagram Ishikawa disebut juga diagram sebab akibat yang digunakan untuk mengidentifikasikan masalah yang ada pada sistem yang akan dirancang. Diagram ini dapat membantu mengindetifikasi faktor-faktor yang signifikan memberikan efek terhadap sebuah even.

Adapun permasalahan yang muncul adalah berkaitan dengan pengiriman pesan yang aman tanpa melakukan pertukaran kunci. Selain itu menganalisis bagaimana menerapkan metode Three-Pass Protocol pada dua jenis algoritma kriptografi yang berbeda, yaitu RSA dan Rabin. Untuk mengidentifikasikan semua penyebab yang


(11)

berhubungan dengan permasalahan tersebut, digunakan DiaramIshikawa (Fishbone diagram) pada gambar 3.1.

User

System Method

Material

Bagaimana mengamankan pesan dengan aman tanpa melakukan pertukaran kunci dengan mekanisme

penyandian pesan yang lebih baik

User membutuhkan media pengiriman pesan yang lebih aman

User membutuhkan media pertukaran informasi yang rahasi

Kemungkinan kunci yang bocor dan diketahui oleh

pihak lain Terjadi penyusupan pada jalur

pengiriman pesan dan kunci

Metode pengiriman kunci yang aman masih menjadi

masalah

Masih sulitnya mengkombinasikan dua algoritma kriptografi pada

Three-Pass Protocol

Belum adanya skema yang tepat dalam pengiriman pesan tanpe

pertukanan kunci

Gambar 3.1. Diagram Ishikawa

3.1.2 Analisis Kebutuhan

Untuk membangun sebuah sistem, perlu dilakukan tahan analisis kebutuhan. Analisis kebutuhan terdiri dari dua bagian yaitu kebutuhan fungsional dan kebutuhan nonfungsional.

3.1.2.1 Analisi Kebutuhan Fungsional

Kebutuhan fungsional menggambarkan kemampuan dari sebuah produk, aktivitas atau layanan yang akan sistem berikan untuk memenuhi kebutuhan pengguna. Kebutuhan fungsional dari sistem yang mengimplementasikan Three-Pass Protocol dengan algoritma RSA dan Rabin adalah sebagai berikut:

1. Menerima input plaintext

Sistem akan menerima input dari pengguna berupa text yang dituliskan oleh pengguna. Input dapat berupa huruf, angka dan tanda baca.

2. Membangkitkan kunci automatis

Sistem akan secara automatis membangkitkan kunci kepada pengguna sehingga pengguna tidak akan menginput kembali kunci untuk melakukan enkripsi dan dekripsi pesan. Kunci yang akan dibangkitkan oleh sistem adalah kunci publik dan privat untuk kedua algoritma yang digunakan yaitu kunci


(12)

Rabin untuk pengiriman pesan (pengguna sebagai pengirim pesan) dan kunci RSA untuk penerima pesan (pengguna sebagai penerima pesan).

3. Mengenkripsi pesan

Sistem mengenkripsi pesan dengan menggunakan kunci yang telah dibangkitkan dengan menggunakan algoritma Rabin sebegai pengguna pertama(pengirim pesan) atau menggunakan algoritma RSA sebagai pengguna kedua(penerima pesan).

4. Mendekripsi pesan

Sistem mendekripsi pesan dengan menggunakan kunci yang telah dibangkitkan dengan menggukan algoritma Rabin sebegai pengguna pertama(pengirim pesan) atau menggunakan algoritma RSA sebagai pengguna kedua(penerima pesan).

5. Mengirimkan pesan

Sistem akan mengirimkan pesan dari pengirim pesan ke pengguna pesan sebagai mana aplikasi chat pada umumnya. Tetapi pada kasus ini, sistem akan melakukan tiga kali pengiriman sampai akhirnya pesan asli diterima penerima.

3.1.2.2 Analisis Kebutuhan Nonfungsional

Kebutuhan non-fungsional yang dibutuhkan dan digunakan dalam membangun sistem ini adalah:

1. Performa

Sistem yang dibangun dapat melakukan proses enkripsi dan dekripsi yang bedar dengan waktu yang relatif singkat

2. Interface

Sistem yang akan dibangun harus user friendly yang artinya memiliki antar muka yang mudah dimengerti atau pun digunakan.

3. Kontrol

Sistem yang dibangun harus dapat menampilkan pesan error untuk setiap kesalahan input oleh user atau pun kegagalan sistem.

4. Keamanan

Sistem dapat menjamin pesan yang dikirim harus sudah mengalami penyandian terlebih dahulu, sehingga pesan tidak dapat dimengerti oleh pihak yang menyadapnya.


(13)

5. Hemat Biaya

Sistem yang dibangun dengan memanfaatkan perangkat lunak yang freeware yang artinya dapat digunakan dengan bebas tanpa membutuhkan biaya tertentu. Selain itu tidak menggunakan perangkat keras tambahan lainnya. 6. Manajemen Kualitas

Sistem yang akan dibangun harus memiliki kualitas yang baik yaitu tidak mempersulit pengguna.

3.1.3 Analisis Proses

Tujuan dari tahap analisis proses adalah untuk mengetahui tahan dan cara kerja dari sistem yang akan dibangun. Hal ini dilakukan untuk mengetahui apa saja yang harus dilakukan oleh sistem sehingga dapat dengan mudah dilakukannya pemograman pada sistem yang akan dibangun.

Terdapat dua proses utama yang terjadi pada sistem yaitu proses pembangkitan kunci dan proses pengiriman pesan. Proses pembangkitan kunci sangat penting karena pada proses ini dilakukan modifikasi agar algoritma enkripsi yang digunakan memiliki sifat komutatif sebagai syarat metode Three-Pass Protocol dapat dilakukan. Sedangkan pada proses pengiriman pesan adalah proses dimana metode Three-Pass Protocol diimplementasikan.

3.1.3.1 Analisis Pembangkitan Kunci

Dalam proses pembangkitan kunci pada algoritma Rabin dan RSA berhubungan dengan proses pembangkitan bilangan prima. Pada penelitian ini, akan digunakan algoritma Sieve of Eratosthenes untuk membangkitkan bilangan prima dimana algoritma ini merupakan salah satu algoritma deterministik dalam pembangkitan bilangan prima. Kekurangannya adalah algoritma ini akan membutuhkan waktu yang cukup lama untuk mencari bilangan prima dalam nilai yang sangat besar.

Proses pembangkitan kunci akan dilakukan berbeda antara pengirim dan penerima pesan dikarenakan antara pengirim dan penerima pesan menggunakan algoritma yang berbeda. Tetapi antar pengirim dan penerima pesan akan menggunakan bilangan modulus yang sama dalam proses enkripsi dan dekripsi pesan.


(14)

Proses pembangkitan kunci pengirim sama halnya dengan membangkitkan kunci privat dan publik pada algoritma Rabin pada umumnya. Hanya saja akan dihitung nilai totien (�) dari bilangan yang terpilih. Nilai totien ini akan dikirim ke penerima bersama dengan nilai modulus.

Berikut adalah proses pembangkitan kunci privat dan publik algoritma Rabin:

1. Dengan mengunakan algoritma Sieve of Eratosthenes, bangkitkan bilangan prima dan pilih bilangan p dan q, dimana � ≡ � ≡ 3(��� 4). Sebagai contoh p = 79 dan q = 59. Bilangan p dan q menjadi kunci privat

2. Hitung nilai n = pq = 4661, dimana n sebagai kunci publik 3. Hitung nilai �= (� −1)(� −1) = 4524

4. Bilangan n dan � yang kemudian kirim bersama dengan pesan terenkripsi ke penerima pesan.

Proses Pembangkitan Kunci Penerima (Kunci RSA)

Proses pembangkitan kunci penerima sama halya dengan membangkitkan kunci privat dan publik pada algoritma RSA. Perbedaannya adalah sistem tidak akan melakukan pembangkitan bilangan prima p dan q, tetapi menggunakan nilai totien yang dikirimkan oleh pengirim pesan.

Berikut ada proses pembangkitan kunci privat dan publik algoritma RSA menggunakan nilai totien pada proses pembangkitan kunci Rabin sebelumnya:

1. Misalkan penerima pesan menerima nilai totien (�) = 4524.

2. Pilih secara acak nilai edimana gcd��,�(�)�= 1, sehingga nilai e yang terpilih adalah 1639

3. Bangkitkan kunci privat d dengan menggunakan algoritma extended euclidean.

�� ≡1�����(�)�

� = 3511

3.1.3.2 Analisis Pesan

Pesan yang diterima oleh sistem berupa teks, yaitu huruf capital, huruf kecil, bilangan, tanda baca dan karakter lain pada umumnya. Dikarenakan algoritma Rabin dan RSA adalah menggunakan proses bilangan, sehingga input kedua algorima ini berupa


(15)

bilangan. Sehingga input berupa teks akan diubah kedalam bentuk bilangan dengan menggunakan kode ASCII dari setiap karakter teks.

Pada algoritma Rabin, proses dekripsi akan menghasilkan 4 bilangan dimana salah satunya adalah hasil yang benar dari proses dekripsi. Sehingga untuk menentukan bilangan yang tepat, dilakukan modifikasi bilangan input dengan cara mengubah setiap bilangan ke dalam bentuk biner, kemudian hasil bilangan biner tersebut digandakan dan digabungkan kembali sehingga akan menghasilkan bilangan input baru. Langkah-langkah nya sebagai berikut:

1. Sebagai contoh bilangan 65 diubah menjadi biner yaitu “1000001”

2. Kemudian bilangan biner tersebut digandakan dan digabungkan menjadi “10000011000001”.

3. Bilangan biner baru tersebut kemudian diubah menjadi bilangan desimal menjadi 8385. Bilangan ini yang akan mengalami proses enkripsi dan dekripsi selanjutanya.

Proses pengolahan input pesan dapat dilihat pada Tabel3.1:

Tabel 3.1. Proses Analisis Pesan

Input text J A N

ASCI 74 65 78

Biner 1001010 1000001 1001110

Penggandaan biner 10010101001010 10000011000001 10011101001110

Bilangan akhir 9546 8385 10062

3.1.3.3 Analisis Pengiriman Pesan Dengan Three-Pass Protocol

Seperti yang sudah disebutkan sebelumnya, skema pengiriman pesan dengan menggunakan Three-Pass Protocol akan menggunakan dua algoritsma kriptografi yang berbeda, dimana pengirim akan menggunakan algoritma Rabin sedangankan penerima akan menggunakan algoritma RSA.

Proses enkripsi pertama kali dilakukan oleh pengirim pesan dengan menggunakan algoritma Rabin dengan kunci publik penerima yang sudah dibangkitkan sebelumnya. Seperti yang sudah dijelaskan sebelumnya, pesan pengirim sebelumnya sudah diproses dan mengalamin penggadaan bilangan binernya. Hal ini


(16)

dilakukan agar dapat menentukan hasil yang benar saat melakukan dekripsi dengan algoritma Rabin. Kemudian pesan akan dikirim ke penerima dan oleh penerima akan dienkripsi menggunakan algoritma RSA dengan kunci publik penerima. Hasil enkripsi penerima kemudian akan dikirimkan kembali ke pengirim pesan dan oleh pengirim pesan, pesan di dekripsi dengan algoritma Rabin. Dekripsi ini akan menghasilkan 4 pilihan hasil dimana salah satunya adalah bilangan yang tepat. Tetapi proses penentuan hasil dekripsi Rabin yang benar akan dilakukan oleh penerima pesan. Kemudan setiap hasil dekripsi pengirim akan dikirim kembali ke penerima. Oleh penerima, setiap hasil dekripsi pengirim akan didekripsi mengunakan algoritma RSA. Setelah proses ini selesai, makan ditentukan pilihan hasil yang tepat dengan kembali mengubah bilangan hasil dekripsi ke bilangan biner. Kemudian jumlah digit bilangan biner tersebut akan dibagi dua, jika dua bagian bilangan biner tersebut sama maka bilangan tersebut adalah hasil yang benar.

Simulasi dari skema pengiriman pesan dapat dilihat pada table 3.2, 3.3 dan 3.4 berikut:

Tabel 3.2. Simulasi Pemrosesan Input

Input A

Kode ASCII 65

Bilangan Biner 1000001

Penggandaan Biner 10000011000001

Bilangan akhir 8385

Tabel 3.3. Simulasi Pembangkitan Kunci

Rabin (Pengirim) RSA (Penerima)

Kunci publik n : 180577 e : 73295

n : 180577 Kunci privat p : 359

q : 503

d : 118807

Tabel 3.4. Simulasi Skema Pengiriman Pesan dengan Three-Pass Protocol

Input Algoritma Kunci

Three-Pass


(17)

8385 Rabin enkripsi

n : 180577 TPP 1 Pengirim 63772

63772 RSA enkripsi

e : 73295 n : 180577

TPP 2 Penerima 123934

123934 Rabin dekripsi

p : 359 q : 503

TPP 3 Pengirim • 25164 • 120231 • 60346 • 155413 • 25164

• 120231 • 60346 • 155413

RSA dekripsi

d : 118807 - Penerima • 132958 =

100000011101011110 • 172192 =

101010000010100000 • 8385 =

10000011000001 1000001 = 65 = A • 47619 =

1011101000000011

3.1.4 Pemodelan Sistem

Pemodelan sistem bertujuan menggambarkan peran user terhadap sistem yang akan dibangun. Beberapa pemodelan sistem yang digunakan dalam perancangan sistem yaitu use case diagram, activity diagram dan sequence diagram.

3.1.4.1 Use Case Diagram

Use case diagram merupakan bentuk pemodelan dari sistem yang menggambarkan functional requirement dari sistem. Menggambarkan hubungan dan interaksi antara sistem dengan pengguna. Use case diagram dari sistem yang dibangun dapat dilihat pada Gambar 3.2


(18)

Sender/Receiver

Register <<include>> Register to server

Sing in using Google

<<extend>> <<include>>

Login to server

<<include>> Login <<extend>> <<include>> Show Contact Show Chat Room List Chat Room Chat Encrypt Process Detail <<include>> <<include>> <<include>> <<include>> Manual Simulation Logout Send Chat <<include>> Generate

Simulation Key Three Pass Process Generate Key Send Three-Pass Chat 1 Send Three-Pass Chat 2 Send Three-Pass Chat 3 <<include>> <<extend>> <<extend>> <<extend>> <<include>>

Receive Chat <<include>>

<<include>>

Gambar 3.2. Use case diagram

Pada use case diagram diatas terdapat dua aktor yang akan berperan menjadi user. Sebelum dapat melakukan pengiriman pesan, penggunaharus melakukan register atau log in ke dalam sistem. Login atau register dapat dilakukan dengan menggunakan email atau pun menggunakan akun Google pengguna. Setelah login atau register, maka penggunadapat mengggunakan aplikasi seperti mengirimkan pesan, melihat kontak, melakukan simulasi manual dan lainnya. Dokumen naratif use case Register dapat dilihat pada Table 3.5.

Tabel 3.5. Dokumentasi Naratif Use Case Register

Nama Use Case Register

Actor Penerima/Pengirim

Deskripsi Pengguna melakukan registrasi ke sistem

Basic Flow Pengguna memasukkan email dan password atau pun menggunakan

google account untuk register


(19)

Pre-Condition Aplikasi dijalankan dan memunculkan halaman login Typical course of

Event

Kegiatan User Respon Sistem 1. Pengguna mengklik tombol

register di bawah halaman login.

2. Memasukkan email dan password kemudian menekan tombol daftar.

3. Jika ingin menggunakan akun google, tekan tombol sign in with google.

1. Aplikasi menampilkan halaman login.

2. Sistem mengirimkan email dan password kemudian jika data valid disimpan kedalam sistem.

3. Sistem akan melakukan verifikasi akun google yang terdaftar pada perangkat, kemudian mengirimkan google token dan mendaftarkan data tersebut ke sistem.

Pasca kondisi Pengguna masuk ke dalam sistem adan akan menampilkan halaman pengguna

Selain use case register, terdapat juga use case Show Contact dimana pada use case tersebut terdapat juga di dalamnya use case login, sign in using google dan login to server. Untuk penjelasannya dapat dilihat pada Table 3.6.

Tabel 3.6. Dokumentasi Naratif Use Case Show Contact

Nama Use Case Show Contact

Actor Penerima/Pengirim

Deskripsi Pengguna membuka tab kontak untuk mendapatkan daftar kontak yang terdapat dalam sistem.

Basic Flow Pengguna masuk ke dalam sistem dan sistem masuk ke halam

utam.

Alternate Flow -

Pre-Condition Pengguna masuk ke dalam sistem

Typical course of Eventx

Kegiatan User Respon Sistem 1. Pengguna masuk ke dalam

sistem.

2. Pengguna memilih tab

1. Aplikasi mengirimkan data login pengguna, jika benar akan masuk ke dalam


(20)

contact sistem.

2. Sistem mengirimkan request kontak ke server dan menampilkan daftar kontak.

Pasca kondisi Ditampilkan daftar kontak

Use case show chat room list adalah proses dimana sistem akan menampilkan dafar percakapan yang pengguna lakukan dengan pengguna lain. Untuk penjelasannya dapat dilihat pada Tabel 3.7.

Tabel 3.7. Dokumentasi Naratif Use Case Show Chat Room List

Nama Use Case Show Chat Room List

Actor Penerima/Pengirim

Deskripsi Pengguna membuka tab chat untuk mendapatkan daftar chat yang terdapat dalam sistem.

Basic Flow Pengguna masuk ke dalam sistem dan sistem masuk ke halam

utama sistem.

Alternate Flow -

Pre-Condition Pengguna masuk ke dalam sistem dan sedang membuka tab kontak

Typical course of Eventx

Kegiatan User Respon Sistem 1. Pengguna masuk ke dalam

sistem.

2. Pengguna memilih tab chat

1. Aplikasi mengirimkan data login pengguna, jika benar akan masuk ke dalam sistem.

2. Sistem mengambil daftar

chat yang dilakukan

pengguna di database lokal yang terdapat pada perangkat smartphone.

Pasca kondisi Ditampilkan daftar chat

Use case chat room adalah proses dimana pengguna ingin melihat daftar pesan yang dikirimkan dan diterima pengguna dengan pengguna lain. Proses ini hanya


(21)

menampilkan pesan yang disimpan dalam database lokal pada perangkat. Untuk penjelasannya dapat dilihat pada Tabel 3.8.

Tabel 3.8. Dokumentasi Naratif Use Case Chat Room

Nama Use Case Show Chat Room

Actor Penerima/Pengirim

Deskripsi Sistem menampilkan daftar percakapan antar satu pengguna dengan pengguna lainnya.

Basic Flow Pengguna masuk ke dalam sistem dan memilih salah satu daftar

pada tab chat untuk melihat percakapan user tersebut dengan pengguna lain yang dipilih.

Alternate Flow Pengguna memilih salah satu kontak

Pre-Condition Pengguna masuk ke dalam sistem dan memilih tab chat

Typical course of Eventx

Kegiatan User Respon Sistem 1. Pengguna memilih tab

chat.

2. Pengguna memilih salah satu list pada daftar chat room list.

1. Aplikasi menampilkan daftar chat yang disimpan pada database.

2. Sistem menampilkan daftar pesan pada chat room yang dipilih.

Pasca kondisi Ditampilkan daftar pesan yang dikirimkan atara pengirim dan penerima pesan.

Use case send chat adalah proses yang terjadi pada saat pengirim mengirimkan pesan ke pengguna lain. Pada proses ini akan terjadi pembangkita kunci untuk pengirim pesan dan dilakukan proses three-pass protocol. Untuk penjelasannya dapat dilihat pada Tabel 3.9.

Tabel 3.9. Dokumentasi Naratif Use Case Send Chat

Nama Use Case Send Chat

Actor Pengirim

Deskripsi Penguna ingin mengirimkan pesan ke pengguna lain. Dilakukan pada melalui halaman chat room.

Basic Flow Pengguna memasukkan pesan dan menekan tombol kirim untuk


(22)

Alternate Flow -

Pre-Condition Pengguna memilih salah satu chat room

Typical course of Eventx

Kegiatan User Respon Sistem 1. Pengguna memilih salah

satu chat room.

2. Pengguna memasukan pesan yang ingin dikirimkan dan mengklik tombol kirim.

1. Aplikasi menampilkan halaman chat room.

2. Sistem membangkitkan kunci untuk pengiriman pesan. Jika kunci sudah pernah dibangkiat, sistem akan menggunakan kunci tersebut. Kemudian sistem melakukan proses three-pass yang pertama . jika pesan diterima kembali dari penerima, akan dilakukan proses three-pass yang ketiga.

Pasca kondisi Pesan dikirimkan ke pengguna yang dituju

Sama halnya dengan use case send chat, use case receive chat juga melakukan proses three-pass protocol tetapi yang kedua dan terakhir, saat pesan asli akan dikembalikan. Proses ini terjadi pada background process sistem. Untuk penjelasannya dapat dilihat pada Tabel 3.10.

Tabel 3.10. Dokumentasi Naratif Use Case Receive Chat

Nama Use Case Receive Chat

Actor Penerima

Deskripsi Sistem menerima pesan dan mengirimkan kembali pesan three-pass yang kedua. Jika pesan yang diterima adalah pesan three-pass yang ketiga, makan sistem akan mendekripsi pesan untuk mendapatkan pesan asli.

Basic Flow Proses ini terjadi pada background process, jika pesan asli berhasil diperoleh, akan muncul notifikasi pesan baru.

Alternate Flow -


(23)

Typical course of Eventx

Kegiatan User Respon Sistem

- 1. Aplikasi menerima pesan

dari pengirim pesan.

2. Dilakukan pengecekan pesan yang diterima, jika pengguna belum pernah melakukan percakapan,

sistem akan membangkitkan kunci

pengirim.

3. Jika pesan yang diterima adalah pesan three-pass pertama, maka sistem melakukan three-pass kedua

4. Jika pesan yang diterima adalah pesan three-pass ketiga, makan sistem akan mendekripsi pesan untuk mendapatkan pesan asli. Pasca kondisi Ditampilkan notifikasi pesan baru

Use case manual simulasi adalah proses untuk melakukan simulasi manual proses tree-pass protocol. Proses ini tidak melakukan prose pengiriman pesan. Untuk penjelasannya dapat dilihat pada Tabel 3.11.

Tabel 3.11. Dokumentasi Naratif Use Case Manual Simulation

Nama Use Case Manual Simulation

Actor Penerima/Pengirim

Deskripsi Proses dimana pengguna dapat melakukan simulasi manual proses three-pass protocol yang terjadi pada sistem tanpa melakukan pengiriman pesan.

Basic Flow Pengguna membuka halaman utama dan memilih menu simulasi

manual pada daftar menu.


(24)

Pre-Condition Sistem menampilkan halaman utama Typical course of

Eventx

Kegiatan User Respon Sistem 1. Pengguna mengklik tombol

menu pada actionbar sistem.

2. Memilih menu simulasi manual

3. Mengklik tombol generate key

4. Memasukkan pesan dan mengklik tombol OK.

1. Sistem menampilkan daftar menu.

2. Menampilkan halaman simulasi manual

3. Sistem membangkitkan kunci RSA dan Rabin, kemudian ditampilkan. 4. Sistem menerima pesan

dan melakukan proses three-pass protocol kemudian menampilkan pesan dari tiap proses three-pass yang dilakukan. Pasca kondisi Ditampilkan kunci yang dibangkitkan dan pesan yang mengalami

proses three-pass protocol.

Use case logout adalah proses dimana pengguna keluar dari sistem. Proses ini akan menghapus semua data pada database lokal. Untuk penjelasannya dapat dilihat pada Tabel 3.12.

Tabel 3.12. Dokumentasi Naratif Use Case Logout

Nama Use Case Logout

Actor Penerima/Pengirim

Deskripsi Proses dimana pengguna keluar dari sistem.

Basic Flow Pengguna membuka halaman utama dan memilih menu logout

pada daftar menu.

Alternate Flow -

Pre-Condition Sistem menampilkan halaman utama

Typical course of Eventx

Kegiatan User Respon Sistem 1. Pengguna mengklik tombol

menu pada actionbar sistem.

2. Memilih menu logout

1. Sistem menampilkan daftar menu.

2. Mengirimkan request ke server untuk menghapus


(25)

token pada server

3. Seletelah request selesai,

sistem menghapus database lokal dan menampilkan halaman login.

Pasca kondisi Ditampilkan halaman login sistem.

3.1.4.2 Activity Diagram

Activity diagram adalah bentuk dari pemodelan system yang menggambarkan alur dari sebuah proses itu terjadi yang digambarkan pada use case diagram, bagaimana aliran aktivitas yang dirancang, bagaimana masing-masing aliran berawal, decision yang mungkin terjadi dan bagaimana aliran tersebut berakhir.

Pada Gambar 3.3 dapat dilihat activity diagram dari prose login dan register pengguna sampai akhirnya pengguna dapat masuk ke dalam sistem.


(26)

Login and Register Activity Diagram

Android

User Backend Server

Ph a se Start Splash Screen Show Login Page Show Register Page Get Google Access Token

Send user data to server

Get Google Access Token

Send user data to server

Generate access token [has been log in]

[hasn’t been log in]

[using google]

[not using google]

[not using google] [using google]

[not using google]

[not using google]

Save user data [user not registered]

[user registered]

[email & password match]

Show error message

[email & password not match]

Save access token

Show main menu

Gambar 3.3. Activity Diagram Proses Login dan Register

Setelah pengguna berhasil masuk ke dalam sistem, pengguna dapat melakukan beberapa fungsi sistem seperti melihat daftar kontak, daftar chat yang telah dilakukan, melihat chat room, detail dari pengiriman pesan yang dilakukan, mengirimkan pesan, dan melakukan simulasi manual. Activity diagram dari proses tersebut dapat dilihat pada Gambar 3.4


(27)

Contact, Chat Room and Manual Simulation Activity Diagram

Android

User Backend Server

Ph a se Contact List Request contact to server Get contact from database

Save contact to local database Display contact

list

Chat room list

Get chat room list from local database

Show chat room list

Chat room Get and show chat

[chat room available]

Generate Rabin Key

[chat room not available]

Save chat room Start

Detail Chat Proses

Get detail chat from local database Manual Simulation Generate Key Input text Run Generate Rabin Key Generate RSA Key

Three-Pass 1 Three-Pass 2

Three-Pass 3 Display result

Gambar 3.4. Activity Diagram Daftar Kontak, Chat Room dan Simulasi Manual

Pada gambar 3.5 dapat dilihat activity diagram dari proses pengiriman pesan, sampai akhirnya pesan tersebut diterima.


(28)

Send Message Activity Diagram

Android (sender) Android (receiver) Backend Firebase

Ph

a

se

Input message and push send button

Encrypt message using Rabin

Send message to server

Save chat room

Save message

Send message to firebase

Send message to device

Generate RSA Key

Save RSA key in chat room

Encrypt message using RSA

[RSA key not available] [RSA key available]

Send message to server

Save message

Send message to firebase Send message to device Receive message Decrypt message using Rabin

Send mesage to server

Save message

Send message to firebase Send message to device Receive message Decrypt message using RSA Show message


(29)

3.1.4.3 SequenceDiagram

Sequence diagram adalah diagram yang menunjukkan interaksi antar objek dan menggambarkan interaksi dan komunikasi antar objek-objek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan antar objek yang melakukan tugas atau pun fungsinya. Objek-objek tersebut antara lain penggunga, display, proses dan pesan. Pada Gambar 3.6 merupakan sequence diagram pada proses login dan register.

Gambar 3.6. Sequence Diagram Login dan Register

Pada Gambar 3.7 ditunjukkan sequence diagram pada proses kontak, dafta chat room, simulasi manual dan lainnya.


(30)

Gambar 3.7. Sequence Diagram Kontak, Daftar Chat Room, dan Simulasi Manual

Pada Gambar 3.8 dijukkan sequence diagram pada proses pengiriman pesan dan three-pass protocol yang berjalan pada sistem sampai akhirnya pesan kembali ke bentuk semula.


(31)

Gambar 3.8. Sequence Diagram Pengiriman Pesan

3.2 Pseudocode Program

3.2.1 Pseudocode Enkripsi Rabin

RabinEnkripsi(plaintext){

[]key ← GenerateRabinKey() p ← key[0]

q ← key[1] n ← p * q

cipher ← ModularExponential(plaintext, 2, n) return cipher

}

3.2.2 Pseudocode Dekripsi Rabin

RabinDekripsi(p,q,c) {

mp ← (c(p+1)/4) mod p mq ← (c(q+1)/4) mod p

P1 ← ChineseRemainder(mp,mq,p,q) P2 ← ChineseRemainder(mp,-mq,p,q) P3 ← ChineseRemainder(-mp,mq,p,q) P4 ← ChineseRemainder(-mp,-mq,p,q)


(32)

return P1, P2, P3, P4 }

3.2.3 Pseudocode Enkripsi RSA

RSAEnkripsi(plaintext){

[]prim ← GeneratePrime() p ← prim[0]

q ← prim[1] n ← p * q

totien ← (p-1)*(q-1) e ← getPublicKey()

d ← getPrivateKey() // using Extended Euclidean cipher ← ModularExponential(plaintext, e, n) return cipher

}

3.2.4 Pseudocode Dekripsi RSA

RSADekripsi(ciphertext, d, n){

plaintext ← ModularExponential(ciphertext, d, n) return plaintext

}

3.3 Flowchart Sistem

Flowchart adalah sebuah diagram atau bagan yang menjukkan aliran proses di dalam sebuah alogritma, program, atau pun prosedur sistem secara logika yang digambarkan dengan simbol-simbol grafis. Flowchart dapat menunjukkan urutan proses yang terjadi serta menghubungkannya, menunjukan kondisi tertentu pada proses.

Pada Gambar 3.9 ditunjukkan bagaimana flowchart sistem yang akan dibangun. Flowchart ini menunjukan bagaimana proses pengiriman pesan dimulai dan berjalannya metode three-pass protocol pada algoritma Rabin dan RSA.


(33)

Start Apakah kunci sudah tersedia? Membangkitkan kunci Rabin Enkripsi pesan (Rabin) Menerima pesan Apakah kunci sudah tersedia? Membangkitkan kunci RSA Enkripsi pesan (RSA) Mengirim pesan Mengirim pesan Menerima pesan Dekripsi pesan (Rabin) Mengirim pesan Menerima pesan Dekripsi pesan (RSA) Input pesan (plaintext) Ciphertext 1 Ciphertext 2 Ciphertext 3 Plaintext End PENGIRIM PENERIMA

Pass Protocol 1

Pass Protocol 2

Pass Protocol 3

Tidak

YA

Tidak

YA

Gambar 3.9. Flowchart Sistem

3.4 Perancangan Sistem

3.4.1 Rancangan Halaman Login

Halaman login adalah halaman yang pertama kali muncul ketika pengguna menjalankan aplikasi tetap belum masuk ke dalam sistem. Melalui halaman login, pengguna dapat melakukan registrasi melalui tombol register. Rancangan halaman login dapat dilihat pada Gambar 3.10 dan keterangan gambar dapat dilihat pada Tabel 3.13.

Tabel 3.13. Keterangan Halaman Login

No. Jenis Objek Keterangan

1. EditText Input email 2. EditText Input kata sandi

3. Button Untuk masuk ke sistem menggunakan email dan password

4. Button Google sign in button, untuk masuk ke sistem menggunakan akun google.


(34)

Gambar 3.10. Rancangan Halaman Login

3.4.2 Rancangan Halaman Register

Halaman register tampil setelah pengguna menekan tombon register pada halaman login. Rancangan halaman register dapat dilihat pada Gambar 3.11 dan keterangan gambar dapat dilihat pada Tabel 3.14

Tabel 3.14. Keterangan Halaman Register

No. Jenis Objek Keterangan

1. EditText Input email 2. EditText Input kata sandi 3. EditText Input ulangi kata sandi

4. Button Untuk masuk ke sistem menggunakan email dan password 5. Button Google sign in button, untuk masuk ke sistem menggunakan


(35)

akun google.

6. Button Untuk pindah ke halaman register

Gambar 3.11. Rancangan Halaman Register

3.4.3 Rancangan Halaman Kontak

Halaman kontak tampil setelah pengguna berhasil masuk ke dalam sistem, baik itu dengan login ataupun register terlebih dahulu. Rancangan halaman kontak dapat dilihat pada Gambar 3.12 dan keterangan gambar dapat dilihat pada Tabel 3.15

Tabel 3.15. Keterangan Halaman Kontak

No. Jenis Objek Keterangan

1. TabLayout Tab menu kontak dan daftar chat room

2. RecyclerView List tempat menampilkan semua kontak pengguna 3. ImageView Gambar profil pengguna


(36)

4. TextView Nama pengguna 5. TextView Status pengguna

Gambar 3.12. Rancangan Halaman Kontak

3.4.4 Rancangan Halaman Item Kontak Klik

Halaman item kontak klik adalah sebuah ModalDialog yang tampil pada saat pengguna mengklik salah satu item kontak. Rancangan halaman item kontak klik dapat dilihat pada Gambar 3.13 dan keterangan gambar dapat dilihat pada Tabel 3.16

Tabel 3.16. Keterangan Rancangan Halaman Item Kontak Klik

No. Jenis Objek Keterangan

1. ModalDialog Modal yang menampilkan data kontak 2. ImageView Gambar profil pengguna


(37)

4. ImageView Button untuk masuk ke dalam chat room

Gambar 3.13. Rancangan Halaman Item Kontak Klik

3.4.5 Rancangan Halaman Daftar Chat

Halaman daftar chat tampil setelah pengguna berhasil masuk ke dalam sistem, kemudian menggeser tab layout ke menu daftar chat. Rancangan halaman daftar chat dapat dilihat pada Gambar 3.14 dan keterangan gambar dapat dilihat pada Tabel 3.17

Tabel 3.17. Keterangan Halaman Daftar Chat

No. Jenis Objek Keterangan

1. TabLayout Tab menu kontak dan daftar chat room

2. RecyclerView List tempat menampilkan semua kontak pengguna 3. ImageView Gambar profil pengguna

4. TextView Nama pengguna 5. TextView Status pengguna


(38)

Gambar 3.14. Rancangan Halaman Daftar Chat

3.4.6 Rancangan Halaman Chat Room

Halaman chat room tampil setelah pengguna mengklik item dalam halaman daftar chat atau melalui modal profil pada halaman kontak. Rancangan halaman chat room dapat dilihat pada Gambar 3.15 dan keterangan gambar dapat dilihat pada Tabel 3.18

Tabel 3.18. Keterangan Rancangan Halaman Chat Room

No. Jenis Objek Keterangan

1. RecyclerView List tempat menampilkan pesan pengguna 2. TextView Tempat menampilkan pesan pengguna 3. ImageView Gambar profil pengguna

4. TextView Waktu pesan terkirim

5. EditText Tempat pengguna menuliskan pesan 6. Button Tombol untuk mengirimkan pesan


(39)

Gambar 3.15. Rancangan Halaman Chat Room

3.4.7 Rancangan Halaman Detail Pengiriman Pesan

Halaman detail pengiriman pesan tampil saat pengguna mengklik pesan dalam halaman chat room. Halam ini akan menapilkan detail proses pengiriman pesan dengan metode three-pass protocol. Rancangan halamandetail pengiriman pesan dapat dilihat pada Gambar 3.16 dan keterangan gambar dapat dilihat pada Tabel 3.19

Tabel 3.19. Keterangan Rancangan Halaman Detail Pengiriman Pesan

No. Jenis Objek Keterangan

1. RecyclerView List tempat menampilkan pesan pengguna 2. TextView Tempat menampilkan pesan pengguna 3. ImageView Gambar profil pengguna


(40)

Gambar 3.16. Rancangan Halaman Detail Pengiriman Pesan

3.4.8 Rancangan Halaman Simulasi Manual

Halaman simulasi manual dapat ditampilkan melalu menu dropdown pada halaman utama. Halaman ini berguna untuk melakukan simulasi manual penerapan metode three-pass protocol pada algoritma Rabin dan RSA. Rancangan halamansimulasi manual dapat dilihat pada Gambar 3.17 dan keterangan gambar dapat dilihat pada Tabel 3.20

Tabel 3.20. Keterangan Rancangan Halaman Simulasi Manual

No. Jenis Objek Keterangan

1. TextView Label judul kunci rabin 2. TextView Label nilai p kunci privat rabin 3. TextView Label nilai q kunci privat rabin 4. TextView Label nilai n kunci publik rabin 5. TextView Label judul kunci RSA

6. TextView Label nilai e kunci publik RSA 7. TextView Label nilai d kunci privat RSA 8. TextView Label nilai n kunci publik RSA


(41)

10. TextView Label judul three-pass protocol 11. EditText Input pesan untuk simulasi 12. Button Tombol untuk memulai simulasi 13. TextView Label judul three-pass 1

14. TextView Label hasil three-pass 1 15. TextView Label judul three-pass 2 16. TextView Label hasil three-pass 2 17. TextView Label judul three-pass 3 18. TextView Label hasil three-pass 3 19. TextView Label judul result 20. TextView Label hasil simulasi


(42)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem

Implementasi sistem merupakan penerapan dari hasil analisis dan perancangan sistem yang telah dibuat. Pada tahap ini, aplikasi yang telah dianalisis dan dirancang akan dibangun dan bekerja sesuai dengan fungsi yang telah dirancang pada bab sebelumnya, sehingga diketahui apakah sistem ini dapat bekerja dengan baik.

Aplikasi ini adalah aplikasi berbasis Android yang dibangun menggunakan bahasa pemrograman Java dengan menggunakan IDE Android Studio 2.2 sebagai aplikasi client dengan server dibangun menggunakan bahasa pemrograman PHP versi 7 yang berjalan pada server Nginx (engine x) berbasis cloud computing. Aplikasi server dibangun menggunakan Slim Framework v.3

Aplikasi ini memiliki 8 (delapan) antarmuka, yaitu halaman login, halaman register, halaman kontak, halaman item kontak klik, halaman daftar chat, halaman chat room, halaman detail pengiriman pesan dan halaman simulasi manual.

4.2 Antarmuka Sistem

Berikut akan diuraikan halaman-halaman yang dibangun pada aplikasi ini dan proses yang terjadi di dalamnya.

4.2.1 Halaman Login

Halaman login adalah halama yang akan muncul pertama sekali ketika pengguna membuka aplikasi dan belum pernah masuk ke dalam sistem sebelumnya. Pada halaman login ini terdapat buttonyang berguna untuk masuk ke dalam halaman registrasi jika pengguna belum memiliki akun untuk masuk ke dalam sistem.


(43)

Gambar 4.1. Halaman Login

4.2.2 Halaman Register

Halaman Register adalah halaman dimana pengguna dapat melakukan registrasi akun baru baik menggunakan email dan password atau pun menggunakan akun google.


(44)

4.2.3 Halaman Kontak

Halaman kontak adalah halaman utama dari aplikasi saat user pertama kali masuk ke dalam sistem. Pada halaman ini terdapat seluruh kontak yang terdaftar di dalam sistem. Melalui halaman ini pengguna dapat memulai percakapan baru dengan pengguna lain.

Gambar 4.3. Halaman Kontak

4.2.4 Halaman Item Kontak Klik

Halam item kontak klik adalah halaman dimana pengguna memilih salah satu item dari daftar kontak, maka akan muncul dialog dimana dialog tersebut akan menampilkan data pengguna. Melalui dialog ini pengguna dapat melakukan percakapan baru.


(45)

Gambar 4.4. Halaman Item Kontak Klik

4.2.5 Halaman Daftar Chat

Halaman daftar chat adalah halaman dimana pengguna dapat melihat semua daftar chat yang pengguna pernah lakukan. Melalui halaman ini pengguna dapat langsung masuk ke dalam chat room untuk melakukan pengiriman pesan ke pengguna lainnya. Untuk dapat masuk ke dalam halama ini, pengguna cukup hanya memilih tab daftar chat atau dengan men-slide layar smartphone.


(46)

Gambar 4.5. Halaman Daftar Chat

4.2.6 Halaman Chat Room

Halaman chat room adalah halaman dimana pengguna dapat mengirimkan pesan dengan pengguna lain. Melalui halaman ini lah metode three-pass protocol diimplementasikan dengan algoritma Rabin dan RSA. Ketika pengguna sebagai pengirim pesan, maka pengguna tersebut akan menggunakan algoritma Rabin dalam mengenkripsi pesan yang dikirimkan sedangkan jika pengguna sebagai penerima pesan, maka algoritma yang digunakan adalah algoritma RSA. Untuk mengirimkan pesan, pengguna dapat menuliskan pesan pada EditText yang terdapat pada bagian bawah layar dan menekan tombol kirim, makan pada layar akan dikirimkan pesan tersebut. Untuk melihat proses three-pass protocol yang terjadi, pengguna cukup mengklik salah satu pesan makan akan ditampilkan halaman detail pengiriman pesan.


(47)

Gambar 4.6. Halaman Chat Room

4.2.7 Halaman Detail Pengiriman Pesan

Halaman ini adalah halaman yang akan menampilkan proses metode three-pass protocol yang terjadi pada sebuah pesan yang dikirim. Jika sebagai pengirim pesan, pada halaman ini akan menunjukkan proses dimana pesan yang dikirim akan mengalami enkripsi dan dekripsi dengan method three-pass protocol. Diawali dengan pesan asli yang kemudian di enkripsi dengan Rabin, dienkripsi kembali dengan RSA oleh penerima, didekripsi oleh pengirim dan dikirimkan kembali ke penerima. Begitu juga sebaliknya jika pengguna sebagai penerima pesan.


(48)

Gambar 4.7. Halaman Detail Pengiriman Pesan

4.2.8 Halaman Simulasi Manual

Halaman simulasi manual adalah halaman dimana pengguna dapat melakukan simulasi three-pass protocol tanpa melakukan pengiriman pesan ke pengguna lain. Pada halaman ini akan ditunjukkan kuncil yang dibangkitkan oleh sistem, kemudian pengguna dapat memasukkan pesan dan menekan tombol OK untuk memulai simulasi.


(49)

Gambar 4.8. Halaman Simulasi Manual

4.3 Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui apakah sistem yang sudah dibangun dapat berjalan dengan benar dan mengetahui apakah metode three-pass protocol dapat diimplementasikan pada algoritma Rabin dan RSA. Dalam pengujian ini akan dilihat bagaimana sistem membangkitkan kunci untuk kedua algoritma dan masing-masing pengguna dan mengetahui apakah pesan yang dikirimkan dapat kembali ke bentuk semula dan diterima oleh penerima pesan.

4.3.1 Pengujian Pembangkitan Kunci

Pembangkitan kunci adalah proses yang terpenting pada implementasi three-pass protocol ini karena penentuan kunci dapat menentukan apakah kedua algoritma dapat


(50)

berjalan dengan baik atau dengan kata lain memiliki sifat komutatif. Pengujian dilakukan dengan mengunakan fitur simulasi manual pada sistem. Pembangkitan kunci diawali dengan membangkitakan bilangan prima p dan q dengan rentang panjang bilangan prima yaitu 100.000 sampai 1.000.000. Kemudian sistem akan menggunakan bilangan modulus (n) yang sama untuk kedua algoritma. Setelah itu, sistem akan membangkita kunci untuk algoritma RSA. Proses pembangkitan kunci dapat dilihat pada Gambar 4.9

Gambar 4.9. Pengujian Pembangkitan Kunci

4.3.2 Pengujian Simulasi Manual

Pada pengujian ini akan dilihat apakah pesan yang akan diproses dapat kembali ke bentuk semua, dimana pesan yang di input berupa teks “test”, yang akan mengalami tiga kali proses. Proses pertama adalah pesan akan di enkripsi dengan algoritma Rabin


(51)

menggunakan kunci privat yang sudah dibangkitkan. Proses kedua, hasil dari proses pertama akan di enkripsi dengan algoritma RSA. Proses ketiga adalah, hasil dari proses kedua akan di dekripsi menggunakan algoritma Rabin. Dan proses terakhir adalah hasil dari proses ketiga akan didekripsi kembali menggunakan algoritma RSA. Dapat terlihat bahwa sistem dapat berjalan dengan baik dimana pesan dapat kembali ke bentuk awal. Proses dapat dilihat pada Gambar 4.10

Gambar 4.10. Pengujian Simulasi Manual

4.3.3 Pengujian Pengiriman Pesan

Pada proses ini sistem akan mengirimkan pesan ke pengguna lain pada perangkat yang berbeda menggunakan metode three-pass protocol. Pengujian akan mengirimkan pesan teks “Good” ke pengguna lain. Pada saat pengirim sudah menerima hasil akhir


(52)

dari proses three-pass protocol, sistem akan memunculkan notifikasi bahwa sistem menerima pesan baru terlihat pada Gambar 4.11

Gambar 4.11. Notifikasi Pesan Baru

Selanjutnya jika pengguna mengklik notifikasi tersebut, maka sistem akan membuka chat room antara penerima pesan dan pengirim pesan tersebut. Terlihat bahwa pesan yang dikirimkan diterima pengirim dan pesan kembali ke bentuk semula. Jika pengguna mengklik pesan terakhir yang diterima, maka akan muncul detail proses pengiriman pesan tersebut seperti pada Gambar 4.12


(53)

Gambar 4.12. Detail Pengujian Pengiriman Pesan

4.3.4 Hasil Enkripsi dan Dekripsi Pesan

Pada bagian ini akan ditampilkan hasil pengujian proses enkripsi dan dekripsi pada metode three-pass protocol yang diimplementasikan. Pada pengujian ini akan dilihat penambahan panjang teks dari teks asli menjadi teks enkrisi pada proses three-pass protocol pada pengiriman yang ketiga. Pengujian dilakukan pada teks dengan panjang berturut-turut 10, 50, 100, dan 150 karakter. Hasil pengujian dapat dilihat pada Tabel 4.1.

Tabel 4.1. Hasil Enkripsi dan Dekripsi Pesan

Plaintext Ciphertext Rasio

Teks Jumlah Teks Jumlah


(54)

Plaintext Ciphertext Rasio

Teks Jumlah Teks Jumlah

P3AAAATLUJ2aIAAAAerBPyqgAAADG UIpsCAAAAJsUQ9JcAAAA5rR+c7wAA ABDv5u7KAAAAL9n3C1IAAAAofzyER wAAAEdpTKDPAAAABgEoVTkAAAA ME6cPyQAAAExFjH/QAAAAUlgLOmA AAAAsMRRLbgAAACChbtV6AAAAN7f Euh8AAAAsKB9EKwAAAEQEIbyZAAA ABHMmvtwAAABT5gzQvQAAABRVEd MAAAAATcpauq8AAAAXGOzboQAAA EFARrP4AAAACo7Y1OoAAAARPdyUp gAAAAkTwCshAAAAT0VzZHgAAABH G1b68wAAABnmj66cAAAACwiwUkgA AABNUIM9UQAAAD5yo+D9AAAAGW tMyBcAAAAQbCWvzgAAAEftDd/LAAA APu3mx4I= abcdefghija bcdefghijab cdefghijabc defghijabcd efghij

50 AAAAC6QptfcAAAAq61a7ogAAAC1t3N P3AAAATLUJ2aIAAAAerBPyqgAAADG UIpsCAAAAJsUQ9JcAAAA5rR+c7wAA ABDv5u7KAAAAL9n3C1IAAAAofzyER wAAAEdpTKDPAAAABgEoVTkAAAA ME6cPyQAAAExFjH/QAAAAUlgLOmA AAAAsMRRLbgAAACChbtV6AAAAN7f Euh8AAAAsKB9EKwAAAEQEIbyZAAA ABHMmvtwAAABT5gzQvQAAABRVEd MAAAAATcpauq8AAAAXGOzboQAAA EFARrP4AAAACo7Y1OoAAAARPdyUp gAAAAkTwCshAAAAT0VzZHgAAABH G1b68wAAABnmj66cAAAAC………… ……….dst

2136 42.72

abcdefghija bcdefghijab cdefghijabc defghijabcd efghijabcde

100 AAAACBMWXC0AAAAMpCXFXwAA AAEYV222AAAABalm1ugAAAAH4Y+w SgAAAAO/Riv5AAAACf03BxwAAAAF2 u2CywAAAAHYfhuQAAAACJNZTuQA AAAFKSPkMQAAAAvj/xeFAAAABlnLo


(55)

Plaintext Ciphertext Rasio

Teks Jumlah Teks Jumlah

fghijabcdef ghijabcdefg hijabcdefgh ijabcdefghij WQAAAACc4qUWAAAAAtI8p69AAAA B2KxkbEAAAAGrlfJDwAAAAA099zCA AAADYeFVlMAAAAHDiVqBgAAAAE/ ToxNAAAABzi0HaMAAAAGg8kVcgAA AAx9LqbIAAAADJWI1IMAAAABMG6n NwAAAAyMDoveAAAAASb0XpIAAAA EedIPSgAAAAYgQxqNAAAAB5w6GIgA AAAJQqsjywAAAAIX3zOtAAAABnluNq UAAAAHQw78cAAAAAuk ………. dst. abcdefghija bcdefghijab cdefghijabc defghijabcd efghijabcde fghijabcdef ghijabcdefg hijabcdefgh ijabcdefghij abcdefghija bcdefghijab cdefghijabc defghijabcd efghij

150 AAAACBMWXC0AAAAMpCXFXwAA AAEYV222AAAABalm1ugAAAAH4Y+w SgAAAAO/Riv5AAAACf03BxwAAAAF2 u2CywAAAAHYfhuQAAAACJNZTuQA AAAFKSPkMQAAAAvj/xeFAAAABlnLo WQAAAACc4qUWAAAAAtI8p69AAAA B2KxkbEAAAAGrlfJDwAAAAA099zCA AAADYeFVlMAAAAHDiVqBgAAAAE/ ToxNAAAABzi0HaMAAAAGg8kVcgAA AAx9LqbIAAAADJWI1IMAAAABMG6n NwAAAAyMDoveAAAAASb0XpIAAAA EedIPSgAAAAYgQxqNAAAAB5w6GIgA AAAJQqsjywAAAAIX3zOtAAAABnluNq UAAAAHQw78cAAAAAuknf9oAAAAD afCVt4AAAAHsMmPnAAAAAYLs6N5A AAAABS63DcAAAAIExZcLQAAAAykJ cVfAAAAARhX………..dst

6485 43.23

Pada table hasil pengujian, dapat dilihat bahwa terdapat perkembangan panjang ciphertext terhadap panjang plaintext, dimana setiap n panjang plaintext akan mengalami pertambahan panjang ciphertext sebesar (� ∗ �) dimana m adalah rasio pertambahan panjang ciphertext dengan rentang nilai antara 42-44 kali dari panjang plaintext. Secara visualisasi, pertambahan panjang ciphertext terhadap panjang plaintext dapat dilihat pada Gambar 4.13.


(56)

Gambar 4.13. Grafik Pertambahan Panjang Ciphertext 0

1000 2000 3000 4000 5000 6000 7000

0 50 100 150

P

a

nj

a

ng ci

phe

rt

e

xt

Panjang plaintext


(57)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melihat dan mengamati hasil analisis yang di dapat dari pengujian sistem yang telah diselesaikan, maka dapat ditarik kesimpulan sebagai berikut:

1. Metode three-pass protocol dapat diimplementasika pada algoritma Rabin dan RSA dimana algoritma Rabin digunakan pengirim dalam mengirimkan pesan sedangkan algoritma RSA digunakan penerima pesan.

2. Syarat sebuah algoritma kriptografi agar dapat digunakan dalam metode three-pass protocol adalah algoritma tersebut harus memiliki sifat komutatif (commutative algorithm).

3. Agar algoritma Rabin dan RSA dapat digunakan dalam metode three-pass protocol, kedua algortima tersebut harus menggunakan nilai modulus (n)yang sama sehingga kedua algoritma tersebut memiliki sifat komutatif (commutative algorithm).

5.2 Saran

Dalam pengembangan penelitia ini penulis memberikan beberapa saran yaiut:

1. Untuk pengembangan selanjutnya, perlu dikembangkan menggunakan bilangan prima yang lebih besar yaitu lebih besar dari 512 bit untuk memenuhi syarat keamaan algoritma Rabin dan RSA.

2. Perlu dikembangkan metode yang lebih efektif dalam penyandian pesan dikarenakan data yang dikirim menjadi semakin besar setelah mengalami proses penyandian dalam three-pass protocol.

3. Pada three-pass protocol perlu dikembangkan metode dalam memverifikasi bahwa sebuah request pesan berasal dari pihak yang benar.


(58)

BAB 2

LANDASAN TEORI

2.1 Pengertian Kriptografi

Kriptografi berasal dari Bahasa Yunani yang terdiri dari dua kata yaitu crypto yang artinya rahasia (secret) dan graphia yang artinya tulisan (writing). Menurut terminologinya, kriptografi dapat diartikan sebagai ilmu dan seni untuk menjaga pesan ketika pesan dikirim dari suatu tempat ke tempat lain (Mollin, 2007). Selain itu, kriptografi dapat diartikan juga sebagai ilmu atau seni untuk menjaga kerahasiaan pesan dengan menyandikan pesan ke bentuk lain yang tidak dapat dimengerti lagi maknanya (Munir, 2011).

Secara umum kriptografi merupakan teknik pengamanan informasi dengan cara menyembunyikan/menyandi pesan atau melakukan pencodean terhadap pesan asli melalui proses enkripsi menggunakan sebuah kunci tertentu. Penyandian dilakukan oleh pengirim pesan dan tidak dapat dimengerti oleh pihak yang tidak berhak menerimanya. Penerima pesan kemudian mengembalikan kode-kode yang dikirimkan menjadi pesan asli menggunakan kunci yang telah dikirimkan oleh pengirim pesan. Proses ini disebut proses dekripsi (Schneier, 1996).

2.2 Tujuan Kriptografi

Tujuan dari kriptografi diantaranya adalah sebagai berikut (Bellare & Rogaway, 2005):

1. Kerahasiaan (Confidentiality)

Kerahasiaan artinya informasi yang dikirim atau diterima hanya dapat diakses oleh pihak yang berkepentingan atau berwenang terhadap informasi tersebut. Sehingga informasi hanya dapat diakses oleh pihak-pihak yang berhak saja. Enkripsi bertujuan untuk merahasiakan pesan sampai ke penerima pesan dengan aman yang kemudian akan didekripsi kembali dengan algoritma yang telah disepakatin menggunakan kunci yang dikirimkan melalui jalur yang lebih aman. 2. Integritas (Integrity)


(59)

Integritas berkaitan dengan menjaga keaslian data yang artinya data tidak mengalami perubahan baik itu pengurangan, penambahan, penyisipan atau pengrusakan data yang dilakukan oleh pihak lain sebelum sampai ke si penerima. Oleh sebab itu, sistem harus memiliki kemampuan untuk mengindentifikasi apakah pesan tersebut mengalami manipulasi oleh pihak yang tidak berwenang. 3. Autentikasi (Authentication)

Autentikasi berkaitan dengan identifikasi pihak-pihak yang ingin mengakses sistem (entity authentication) maupun keaslian data dari sistem itu sendiri (data origin authentication). Saranan yang sering digunakan dalam hal ini adalah penggunaan password. Apabila sistem menggunakan password, protokol autentikasi harus aman dalam proses pengirimannya sehingga tidak digunakan oleh pihak-pihak yang tidak berwenang.

4. Ketiadaan peyangkalan (Non-repudiation)

Non-repudiation berkaitan dalam usaha memastikan bahwa pesan ataupun kunci yang dikirimkan adalah pesan atau kunci yang benar-benar diharapkan. Selain itu mencegah terjadinya penyangkalan antara entitas yang berkomunikasi, yaitu pengirim pesan menyangkal melakukan pengiriman pesan atau penerima menyangkal telah menerima pesan.

2.3 Mekanisme Kriptografi

Pada dasarnya, sistem kriptografi bekerja dengan melakukan penyandian terhadap suatu pesan menjadi kode rahasia yang hanya dapat dimengerti oleh si penerima pesan. Ini merupakan mekanisme dasar yang sudah dikenal sejak dulu dan masih digunakan sampai saat ini dimana saat ini teknologi informasi sudah sangat maju. Tetapi sebelum membahas mekanisme kriptografi lebih dalam lagi, perlu dipahami beberapa istilah yang sering digunakan dalam kriptografi. (Munir, 2011)

1. Plaintext

Plaintext merupakan pesan asli yang ingin dikirimkan dan dijaga keamanannya. Pesan ini tidak lain dari informasi tersebut.

2. Ciphertext

Ciphertext adalan pesan yang telah siap disandikan dan siap untuk dikirimkan. 3. Cipher


(60)

Cipher adalah algoritma matematis yang digunakan untuk malakukan penyandian pesan dari plaintext menjadi ciphertext.

4. Enkripsi (Encryption)

Enkripsi adalah proses yang dilakukan untuk menyandikan plaintext menjadi ciphertext.

5. Dekripsi (Decryption)

Dekripsi adalah proses yang dilakukan untuk mengembalikan ciphertext menjadi plaintext.

6. Kriptosistem

Kriptosistem adalah sistem yang dirancang untuk mangamankan suatu sistem dengan memanfaatkan kriptografi.

Pada dasarnya, mekanisme kriptografi adalah dimana sebuah plaintext (m) akan mengalami proses enkripsi (E) sehingga menghasilkan suatu ciphertext (c). Kemudian untuk memperoleh kembali plaintext, maka ciphertext (c) melalui proses dekripsi (D) akan menghasilkan kembali plaintext (m). Secara matemetis proses ini dapat dinyatakan sebagai, (Mollin, 2007)

�(�) =�… … … (1) �(�) =�… … … (2) ���(�)�= �… (3)

Pada mekanisme kriptografi modern, selain memanfaatkan algoritma juga menggunakan kunci (key). Proses enkripsi dan dekripsi menggunakan kunci ini. Setiap anggota memiliki kunci masing-masing untuk melakukan proses enkripsi dan dekripsi sehingga kunci ini harus dirahasiakan juga untuk menjaga keamanan data. Dengan demikian mekanismenya mengalami sedikit perubahan seperti pada gambar 2.1 dibawah ini


(61)

Plain Teks Cipher Text Plain Teks

Kunci Kunci

Enkripsi Dekripsi

Gambar 2.1. Mekanisme Kriptografi Modern (Munir, 2011)

Mekanisme ini disebut kriptografi berbasis kunci sehingga pada

kriptosistemnya terdiri dari algoritma dan kuci serta plaintext dan ciphertext-nya. Persamaan matematikanya dapat dituliskan sebagai berikut:

��(�) =�… … … … (4)

��(�) =�… … … … (5)

�����(�)�=�… … (6)

dimana :

e = kunci enkripsi

d = kunci dekripsi

2.4 Kriptografi Simetrik dan Asimetrik

Secara umum, algoritma kriptografi dapat dibedakan menjadi dua jenis berdasarkan jenis kunci yang digunakan dalam proses enkripsi dan dekripsi, yaitu kriptografi simetrik dan kriptografi asimetrik. Pada kedua jenis kriptografi ini, perbedaannya terletak pada sama atau tidaknya kunci yang digunakan dalam proses enkripsi dan dekripsi.

2.4.1 Kriptografi Simetrik

Kriptografi simetri yang dikenal sebagai kriptografi kunci rahasia (secret-key cryptography), merupakan kriptografi yang menggunakan kunci yang sama, baik pada proses enkripsi dan dekripsi.


(62)

Istilah lain yang sering digunakan dalam algoritma kriptografi simetrik yaitu kriptografi kunci privat (private-key cryptography), kriptografi kunci rahasia, kriptografi konvensional (conventional cryptography). Proses enkripsi dan dekripsi dapat dilihat pada gambar 2.2 berikut:

Enkripsi Dekripsi

Cipher Text

Kunci Kunci

Plain Text Plain Text

Gambar 2.2. Algoritma Kriptografi Simetri

Beberapa contoh algoritma kriptografi simetrik adalah DES, RC-4, block cipher, One Time Pad, AES.

Kelebihan kriptografi simetris adalah:

1. Proses enkripsi dan dekripsi relatif membutuhkan waktu lebih cepat. 2. Ukuran kunci relatif pendek

3. Autentikasi pengirim pesan langsung diketahui dari ciphertext yang diterima karena kunci hanya diketahui oleh penerima dan pengirim saja

Kekurangan kriptografi simetris adalah:

1. Kunci harus dikirim melalui saluran komunikasi yang aman dan kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci

2. Kunci harus sering diubah setiap kali melaksanakan komunikasi

2.4.2 Kriptografi Asimetrik

Kriptografi asimetrik (asymmetric cryptografi) menggunakan kunci yang berbeda untuk melakukan enkripsi dan dekripsi. Kunci yang digunakan dalam proses enkripsi disebut kunci publik (public key) sedangkan untuk melakukan proses dekripsi menggunakan kunci pribadi (private key). Kunci publik didistribusikan kepada umum, sedangkan kunci pribadi disimpan untuk diri sendiri. Oleh sebab itu, kriptografi ini dikenal pula dengan nama kriptografi kunci publik (public key cryptogarphy).


(63)

Proses enkripsi dan dekripsi pada kriptografi asimterik dapat dilihat pada gambar 2.3 di bawah ini:

Enkripsi Dekripsi

Cipher Text

Kunci Publik Kunci Privat

Plain Text Plain Text

Gambar 2.3. Algoritma Kriptografi Asimetrik

Kelebihan kriptografi asimetris adalah:

1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh entitas yang mengirim pesan

2. Pasangan kunci privat dan publik tidak perlu diubah dalam jangka waktu yang sangat lama

3. Dapat digunakan dalam pengamanan pengiriman kunci simetri

4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pesan.

Kelemahan kriptografi asimetri adalah:

1. Proses enkripsi dan dekripsi umumnya lebih lambat dari algorima simetri, karena menggunakan bilangan besar dan operasi bilangan besar.

2. Ukuran ciphertext lebih besar dari plaintext

3. Ukuran kunci relatif lebih besar dari kunci simetri

2.5 Keamanan Algoritma Kriptografi

Algoritma kriptografi dikatakan aman (computationally secure) bila ia memenuhi tiga kriteria berikut ini:

1. Persamaan matematis yang menggambarkan operasi algoritma kriptografi sangat kompleks sehingga algoritma tidak mungkin dipecahkan secara analitik.

2. Biaya untuk memecahkan ciphertext melampaui nilai informasi yang terkandung di dalam ciphertext tersebut.


(64)

4. Waktu informasi tersebut harus dijaga kerahasiaannya.

2.6 Bilangan Prima

Bilangan prima adalah bilangan asli yang lebih besar dari angka 1 dimana faktor pembagi dari bilangan tersebut adalah 1 dan bilangan itu sendiri. Bilangan bulat positif p (p > 1) disebut bilangan prima jika pembanginya hanya 1 dan p (Stallings, 2005). Contohnya, bilangan 11 adalah bilangan prima karena bilangan 11 hanya habis dibagi 1 dan 11. Seluruh bilangan prima adalah bilangan ganjil kecuali bilangan 2.

Pada algoritma kritografi kunci publik, pada umumnya menggunakan bilangan prima sehingga dibutuhkan metode dalam pembangkita bilangan prima. Beberapa algoritma pembangkitan bilangan prima dibagi menjadi dua yaitu algoritma probabilistic seperti Lehman dan Rabin-Miller, dan algoritma deterministik seperti Sieve of Eratosthenes. Perbedaan dari algoritma probabilistik dan deterministik adalah dari bilangan yang dihasilkan. Algoritma deterministik menghasilkan bilangan prima pasti sedangkan probabilistik menghasilkan bilangan prima semu.

2.7 Algoritma Pembangkitan Bilangan Prima Sieve of Eratosthenes

Algoritma Sieve of Eratosthenes adalah salah satu algoritma deterministik dalam pembagkitan bilangan prima. Algoritma ini ditemukan oleh seorang matematikawan dari Yunani bernama Eratosthenes (276-194 S.M).

Algorima ini bekerja dengan cara membangkitkan bilangan prima bilangan 1 sampai batas maksimum yang diiginkan dengan cara membuat daftar bilangan asli dari 1 sampai batak maksimum, kemudian mengeliminasi satu per satu bilangan yang tidak termasuk dalam bilangan prima sampai yang tersisa hanya bilangan prima saja. Disebut sieve (saringan) karena algoritma ini bekerja dengan menyaring bilangan prima dari daftar bilangan yang sudah ada bukan dengan membangkitkannya (Möhring dan Oellrich, 2011).

Berikut adalah algoritma Sieve of Eratosthenes:

1. Buat daftar bilangan dari 2 sampai n


(65)

3. Eliminasi semua kelipatan p yang lebih kecil dari n (untuk 2 eliminasi 4, 6, 8,…), menghitung kelipatan p dimulai dari p2.

4. Tandai bilangan terkecil yang belum dieliminasi dari daftar namun lebih besar dari p sebagai prima selanjutnya, ulangi langkah 3.

5. Sampai tidak ada lagi bilangan yang bisa ditandai sebagai prima karena semua bilangan yang tersisa tidak tereliminasi dari daftar sudah ditandai sebagai prima.

2.8 Algoritma RSA

Algoritma RSA pertama kali diperkenalkan oleh tiga orang peneliti dari MIT (Massachussets Institute of Technology) yaitu Ron Rivest, Adi Shamir, dan Lan Adleman pada tahun 1976. Keamanan dari algoritma RSA terletak pada sulitnya melakukan pemfaktoran bilangan besar menjadi fakor-faktor prima. Proses pemfaktoran dilakukan untuk mendapatkan kunci privat. Hingga saat ini, belum ditemukan algoritma yang dapat melakukan pemfaktoran bilangan besar menjadi faktor-faktor prima secara cepat, sehingga RSA masih dianggap aman sampai saat ini.

2.8.1 Pembangkitan Kunci

Berikut adalah algoritma pembangkitan kunci pada RSA (Mollin, 2003):

1. Pilih dua buah bilangan prima p dan q dimana p ≠ q dengan ukuran yang kurang lebih sama.

2. Hitung nilai � =�� dan �(�) = (� −1)(� −1). Bilangan n disebut juga dengan RSA modulus (Mollin, 2003).

3. Pilih sebuah bilanga bulang e, dimana e relatif prima dengan �(�). Secara matematis dapat ditulis 1 <�< �(�),�����,�(�)�= 1. Bilangan e disebut juga RSA enciphering exponent (Mollin, 2003).

4. Dengan menggunakan algoritma extended Euclidean, hitung bilangan unik d. Secara matematis dapat ditulis sebagai berikut:

�� ≡ 1�����(�)�

dimana : 1 <� < �(�)

5. Dengan demikian, kunci publik RSA adalah n dan e, sedangkan kunci privat adalah d. Bilangan d disebut juga RSA deciphering exponent (Mollin, 2003).


(66)

2.8.2 Proses Enkripsi

Proses enkripsi pada RSA dapat dilakukan dengan rumus berikut:

� ≡ ��(���)

dimana:

c = ciphertext

m = plaintext (syarat 0 < 1 <n-1) e = kunci public

2.8.3 Proses Dekripsi

Proses dekripsi pada RSA dapat dilakukan dengan menggunakan rumus berikut:

� ≡ �� (���)

dimana:

m = plaintext c = ciphertext d = kunci privat

Berikut dijelaskan proses enkripsi dan dekripsi yang terjadi pada algoritma krtiptografi RSA:

Plaintext : AB

Proses Enkripsi

1. Membangkitkan dua buah bilangan prima p dan q, dimana p = 83 dan q = 67 2. Menghitung nilai n=pq dan �(�)

�= ��= 5561

�(�) = (� −1)(� −1) = 5412

3. Membangkitkan kunci publik e dengan syarat gcd��,�(�)�= 1 sehingga nilai e yang terpilih adalah 1657.

4. Membangkitkan kunci privat d dengan menggunakan algoritma extended euclidean.

�� ≡1�����(�)� � = 1669

5. Enkripsi plaintext dilakukan dengan mengubah setiap karakter menjadi bilangan ASCII dan mengenkripsinya.


(67)

�� = 651657(��� 5561) = 5031 • B = 66

�� = 661657(��� 5561) = 1674

Proses Dekripsi

Untuk proses dekripsi, dilakukan dengan cara sebagai berikut:

= ��(����) = 50311669(��� 5562) = 65(A) = ��(����) = 16741669(��� 5562) = 66(B) 2.9 Algoritma Rabin

Algoritma Rabin pertama kali diperkenalkan oleh Michael O. Rabin pada tahun 1979. Algoritma Rabin sering dianggap sebagai salah satu varian algoritma RSA, tetapi pada prosesnya memiliki perbedaan. RSA dan Rabin memiliki perbedaan dalam proses pembangkitan kunci privat dan algoritma yang digunakan pada proses dekripsi.

Pada proses dekripsi, algoritma Rabin akan menghasilkan 4 buat pilihan hasil. Hal ini dikarenakan Rabin menggunakan algoritmat Chinese Remainder Theorem. Algoritma tersebut akan menghasilkan 4 buah pilihan hasil dimana salah satunya merupakan hasil dekripsi algoritma Rabin.

2.9.1 Pembangkitan Kunci

Berikut adalah langkah-langkah pembangkitan kunci algoritma Rabin (Galbraith, 2012):

1. Pilih 2 buah bilangan prima besar sembarang p dan q yang berbeda dimana � ≡ � ≡3(��� 4). Kedua bilangan p dan q dirahasiakan dan menjadi kunci privat.

2. Hitung bilangan �= ��. Bilangan n adalah kunci publik. 2.9.2 Proses Enkripsi

Pada algoritma Rabin, proses enkripsi dapat dilakukan dengan rumus berikut:

� =�2(����)

dimana:

c = ciphertext m = plaintext


(1)

2.9.2 Proses Enkripsi ... 16

2.9.3 Proses Dekripsi ... 17

2.10Three-Pass Protocol ... 18

2.11Tinjauan Penelitian yang Relevan ... 20

BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 22

3.1 Analisis Sistem ... 22

3.1.1 Analisis Masalah ... 22

3.1.2 Analisis Kebutuhan ... 23

3.1.3 Analisis Proses ... 25

3.1.4 Pemodelan Sistem ... 29

3.2 Pseudocode Program ... 43

3.2.1 Pseudocode Enkripsi Rabin ... 43

3.2.2 Pseudocode Dekripsi Rabin ... 43

3.2.3 Pseudocode Enkripsi RSA ... 44

3.2.4 Pseudocode Dekripsi RSA ... 44

3.3 Flowchart Sistem ... 44

3.4 Perancangan Sistem ... 45

3.4.1 Rancangan Halaman Login ... 45

3.4.2 Rancangan Halaman Register ... 46

3.4.3 Rancangan Halaman Kontak ... 47

3.4.4 Rancangan Halaman Item Kontak Klik ... 48

3.4.5 Rancangan Halaman Daftar Chat... 49

3.4.6 Rancangan Halaman Chat Room ... 50

3.4.7 Rancangan Halaman Detail Pengiriman Pesan ... 51

3.4.8 Rancangan Halaman Simulasi Manual ... 52

BAB 4 IMPLEMENTASI DAN PENGUJIAN ... 54

4.1 Implementasi Sistem ... 54

4.2 Antarmuka Sistem ... 54

4.2.1 Halaman Login ... 54

4.2.2 Halaman Register ... 55

4.2.3 Halaman Kontak ... 56

4.2.4 Halaman Item Kontak Klik ... 56

4.2.5 Halaman Daftar Chat ... 57

4.2.6 Halaman Chat Room ... 58

4.2.7 Halaman Detail Pengiriman Pesan ... 59


(2)

4.3 Pengujian Sistem ... 61

4.3.1 Pengujian Pembangkitan Kunci ... 61

4.3.2 Pengujian Simulasi Manual ... 62

4.3.3 Pengujian Pengiriman Pesan ... 63

4.3.4 Hasil Enkripsi dan Dekripsi Pesan ... 65

BAB 5 KESIMPULAN DAN SARAN ... 69

5.1 Kesimpulan ... 69

5.2 Saran ... 69


(3)

DAFTAR TABLE

Tabel 3.1.Tabel Proses Analisis Pesan 27

Tabel 3.2. Simulasi Pemrosesan Input 28

Tabel 3.3. Simulasi Pembangkitan Kunci 28

Tabel 3.4. Simulasi Skema Pengiriman Pesan dengan Three-Pass Protocol 28

Tabel 3.5. Dokumentasi Naratif Use Case Register 30

Tabel 3.6. Dokumentasi Naratif Use Case Show Contact 31

Tabel 3.7. Dokumentasi Naratif Use Case Show Chat Room List 32

Tabel 3.8. Dokumentasi Naratif Use Case Chat Room 33

Tabel 3.9. Dokumentasi Naratif Use Case Send Chat 33

Tabel 3.10. Dokumentasi Naratif Use Case Receive Chat 34

Tabel 3.11. Dokumentasi Naratif Use Case Manual Simulation 35

Tabel 3.12. Dokumentasi Naratif Use Case Logout 36

Tabel 3.13. Keterangan Halaman Login 45

Tabel 3.14. Keterangan Halaman Register 46

Tabel 3.15. Keterangan Halaman Kontak 47

Tabel 3.16. Keterangan Rancangan Halaman Item Kontak Klik 48

Tabel 3.17. Keterangan Halaman Daftar Chat 49

Tabel 3.18. Keterangan Rancangan Halaman Chat Room 50

Tabel 3.19. Keterangan Rancangan Halaman Detail Pengiriman Pesan 51

Tabel 3.20. Keterangan Rancangan Halaman Simulasi Manual 52


(4)

DAFTAR GAMBAR

Gambar 2.1. Mekanisme Kriptografi Modern (Munir, 2011) 10

Gambar 2.2. Algoritma Kriptografi Simetri 11

Gambar 2.3. Algoritma Kriptografi Asimetrik 12

Gambar 2.4. Skema Three-Pass Protocol 20

Gambar 3.1. Diagram Ishikawa 23

Gambar 3.2. Use case diagram 30

Gambar 3.3. Activity Diagram Proses Login dan Register 38

Gambar 3.4. Activity Diagram Daftar Kontak, Chat Room dan Simulasi Manual 39

Gambar 3.5. Activity Diagram Pengiriman Pesan 40

Gambar 3.6. Sequence Diagram Login dan Register 41

Gambar 3.7. Sequence Diagram Kontak, Daftar Chat Room, dan Simulasi Manual 42

Gambar 3.8. Sequence Diagram Pengiriman Pesan 43

Gambar 3.9. Flowchart Sistem 45

Gambar 3.10. Rancangan Halaman Login 46

Gambar 3.11. Rancangan Halaman Register 47

Gambar 3.12. Rancangan Halaman Kontak 48

Gambar 3.13. Rancangan Halaman Item Kontak Klik 49

Gambar 3.14. Rancangan Halaman Daftar Chat 50

Gambar 3.15. Rancangan Halaman Chat Room 51

Gambar 3.16. Rancangan Halaman Detail Pengiriman Pesan 52

Gambar 3.17. Rancangan Halaman Simulasi Manual 53

Gambar 4.1. Halaman Login 55

Gambar 4.2. Halaman Register 55

Gambar 4.3. Halaman Kontak 56

Gambar 4.4. Halaman Item Kontak Klik 57

Gambar 4.5. Halaman Daftar Chat 58

Gambar 4.6. Halaman Chat Room 59

Gambar 4.7. Halaman Detail Pengiriman Pesan 60

Gambar 4.8. Halaman Simulasi Manual 61

Gambar 4.9. Pengujian Pembangkitan Kunci 62


(5)

Gambar 4.11. Notifikasi Pesan Baru 64

Gambar 4.12. Detail Pengujian Pengiriman Pesan 65


(6)

LAMPIRAN

LISTING PROGRAM ... A-1 CURRICULUM VITAE ... B-1