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];
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))) {
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) {
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>();
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();
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)c2; }else if(c3 != -1){ plain += (char)c3; }else if(c4 != -1){ plain += (char)c4; }
} return plain; }
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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 -
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.
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.
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
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
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,
Send Message Activity Diagram
Android (sender) Android (receiver) Backend Firebase
Ph
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
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.
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
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