• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
95
0
0

Teks penuh

(1)

LISTING PROGRAM

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];

(2)

n);

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)

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))) {

(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();

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_c = new BigInteger(Long.toString(c));

BigInteger b_d = new BigInteger(Long.toString(d));

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];

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

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

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));

public static List<Integer> generateRabinKey() {

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

(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));

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();

(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){

(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

(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

(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

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

(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

(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

(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

(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

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

(18)

Sender/Receiver

Register <<include>> Register to server

Sing in using Google

Simulation Key Three Pass Process Generate Key

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

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

(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

(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-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.

(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

(26)

Login and Register Activity Diagram

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

(27)

Contact, Chat Room and Manual Simulation Activity Diagram

Get chat room list from local database

Get detail chat from local database

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

Pada gambar 3.5 dapat dilihat activity diagram dari proses pengiriman pesan,

(28)

Send Message Activity Diagram

Android (sender) Android (receiver) Backend Firebase

Ph

(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

(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

(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

(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

(33)

Start

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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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)
(55)

Plaintext Ciphertext Rasio

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

(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

(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.

(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.

(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

(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

(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

(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

Gambar

Gambar 3.7. Sequence Diagram Kontak, Daftar Chat Room, dan Simulasi Manual
Gambar 3.8. Sequence Diagram Pengiriman Pesan
Gambar 3.9. Flowchart Sistem
Gambar 3.10. Rancangan Halaman Login
+7

Referensi

Dokumen terkait

Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan

Bab ini berisi latar belakang pemilihan judul skripsi “ Implementasi Three-Pass Protocol dengan Kombinasi Algoritma Beaufort Cipher dan One Time Pad untuk

Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan

Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan

Pengamanan file dengan kriptografi telah digunakan dalam file pdf, dengan menggunakan algoritma RSA [4], pada penelitian lain algoritma kriptografi RSA dapat digunakan untuk melakukan

dengan metode Three-pass Protocol yang diharapkan dapat memperbaiki kelemahan algoritma Affine Cipher yang memiliki kunci yang pendek dan kelemahan Beaufort

Skema three pass protocol merupakan suatu metode dimana dalam proses pengiriman pesan tidak perlu berbagi kunci enkripsinya, sehingga kedua belah pihak baik pengirim dan

Berdasarkan hasil dari pembuatan aplikasi SMS kriptografi dengan menerapkan metode RSA pada android , maka ddidapatkan kesimpulan seperti : (1) Dengan aplikasi ini ,