Kombinasi Algoritma RSA 512-BIT Dan One Time PAD Untuk Pengamanan Pesan Pada NIC Messenger

(1)

KOMBINASI ALGORITMA RSA 512-BIT DAN ONE TIME PAD

UNTUK PENGAMANAN PESAN

PADA NIC MESSENGER

SKRIPSI

SATRIA PRAYUDI

091402037

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2013


(2)

PADA NIC MESSENGER

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

SATRIA PRAYUDI 091402037

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2013


(3)

PERSETUJUAN

Judul : KOMBINASI ALGORITMA RSA 512-BIT DAN

ONE TIME PAD

UNTUK PENGAMANAN PESAN

PADA NIC MESSENGER

Kategori : SKRIPSI

Nama : SATRIA PRAYUDI

Nomor Induk Mahasiswa : 091402037

Program Studi : SARJANA (S-1) TEKNOLOGI INFORMASI

Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI

Diluluskan di

Medan, 27 Juni 2013

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dedy Arisandi, ST.M.Kom

M. Andri Budiman S.T., M.Comp.Sc., M.E.M.

NIP. 197908312009121002 NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi Teknologi Informasi Ketua,

Prof. Dr. Opim Salim Sitompul, M.Sc NIP 19610817 198701 1001


(4)

PERNYATAAN

KOMBINASI ALGORITMA RSA 512-BIT DAN ONE TIME PAD

UNTUK PENGAMANAN PESAN

PADA NIC MESSENGER

SKRIPSI

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

Medan, 27 Juni 2013

SATRIA PRAYUDI 091402037


(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Allah SWT Yang Maha Pengasih dan Maha Penyayang, dengan limpahan rahmat dan karunia-Nya penulisan tugas akhir ini berhasil diselesaikan dalam waktu yang telah ditetapkan.

Dalam penyelesaian tugas akhir ini, tidak terlepas dari bantuan dan kerjasama serta doa dan dukungan dari berbagai pihak, untuk itu penulis sampaikan ucapan terima kasih sedalam-dalamnya dan penghargaan kepada :

1. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara

2. Ketua dan Sekretaris Departemen Prof. Dr. Opim Salim Sitompul, M.Sc dan Drs. Sawaluddin, M.Sc yang telah memberikan dukungan, arahan dan bantuannya dalam menyelesaikan tugas akhir ini.

3. Seluruh dosen Departemen Teknologi Informasi dan Ilmu Komputer USU yang telah mengajarkan dan memberikan dukungan serta bantuannya dalam menyelesaikan tugas akhir ini.

4. Kepada Bapak M. Andri Budiman S.T., M.Comp.Sc., M.E.M. dan Bapak Dedy Arisandi, ST.M.Kom selaku pembimbing yang selalu memberikan arahan, bimbingan, keluangan waktu serta dukungan dalam menyelesaikan tugas akhir ini beserta Ibu Sarah Purnamawati S.T., M.Sc dan Bapak M. Fadly Syahputra B.Sc., M.Sc.IT yang bersedia menguji seminar hasil dan sidang sarjana saya.

5. Untuk kedua orang tua yang selalu memberi dukungan moril dan motivasi yang tak terhingga hingga saat ini.

6. Seluruh keluarga yang telah memberikan bantuan do’a dan dorongan dalam menyelesaikan tugas akhir ini.

7. Sahabat-sahabat Zaki, Toyo, Ussi, Razi, Rafa, Wildan, Mulki, Zizi, Ari, Bagus, Rozy, Aang, Yogi, Denny, Nazam, Mahatir, abang-kakak senior, adik-adik junior, dan seluruh teman-teman seperjuangan yang tidak dapat disebutkan.

8. Ummi Salamah Lubis yang secara tidak langsung memberi semangat.

Semoga segala kebaikan dan bantuannya dibalas oleh Allah SWT dan semoga tugas akhir ini dapat bermanfaat bagi semua pihak yang memerlukannya.


(6)

ABSTRAK

Perkembangan dan pemakaian internet telah mendunia dewasa ini sudah semakin pesat, banyak dari kalangan pengguna baik kalangan siswa, mahasiswa dan pekerja perkantoran atau pelaku bisnis menggunakan fasilitas internet didalam penambahan ilmu pengetahuan dan mempermudah pekerjaan serta mendapatkan informasi dengan mudah, hal ini membuat developer aplikasi harus merubah acuannya dari merancang dan mendesain aplikasi yang bersifat desktop menjadi bersifat web-based, dengan memanfaatkan cloud

computing. Banyak contoh aplikasi yang berjalan dan berkembang sukses saat

ini dengan memanfaatkan cloud computing, yang penulis jadikan contoh dalam hal ini adalah aplikasi messenger atau aplikasi pengirim pesan tanpa biaya, mudah dan cepat dengan memanfaatkan fasilitas internet. Dalam perkembangan aplikasi messenger sangat membantu dalam pertukaran pesan, hal ini menjadi kesempatan kebocoran pesan semakin besar. Oleh karena itu diperlukan sebuah pendekatan untuk mengamankan pesan tersebut yaitu dengan menerapkan sistem kriptografi pada aplikasi messenger. Dalam penelitian ini penulis akan menerapkan sistem kriptografi asimetris RSA dan kriptografi simetris One Time Pad untuk mengamankan pesan. Berdasarkan pengujian yang telah dilakukan, kombinasi RSA dan One Time Pad dapat mengamankan pesan yang dikirim RSA teruji sebagai sistem kriptografi yang aman karena kesulitan dalam proses memfaktorkan bilangan yang sangat besar, dimana menggunakan sepasang bilangan prima sebagai kunci public dan privat sebesar 100 hingga 200 digit atau bahkan lebih besar (Schneier, 1996).

Kata kunci: NIC Messenger, RSA Algorithm, One Time Pad Algorithm, Kriptografi Simetris, Kriptografi Asimetris.


(7)

COMBINATION OF 512 BITS RSA ALGORITHMS AND ONE TIME PAD FOR MESSAGE SECURITY ON NIC MESSENGER SOFTWARE

ABSTRACT

Development and use of the internet has grown worldwide is now growing rapidly, many of the users of both the students and office workers or business people use the internet facility in the addition of science and facilitate the work and get information easily, this makes the application developer must change reference of designing a desktop application became web-based application, by utilizing cloud computing. Many examples of applications that are running and growing successful by utilizing cloud computing, the authors make an example in this regard is a messenger application or applications without the cost of sending a message, easily and quickly by utilizing the internet. During its development, messenger applications are very helpful in the exchange of messages, it became an opportunity to greater leak message. Therefore we need an approach to securing these messages by applying cryptographic systems on messenger application. In this study the authors will apply the RSA assymmetric cryptographic system and the One Time Pad symmetric cryptographic system to securing these messages. Based on the testing that has been done, a combination of RSA and One Time Pad can secure messages. RSA tested as secure cryptographic system because of difficulties in the process of factoring very large numbers, where RSA using a pair of prime numbers as a public and private key of 100 to 200 digits or even larger (Schneier, 1996).

Keywords: NIC Messenger, RSA Algorithm, One Time Pad Algorithm, symmetric cryptography, asymmetric cryptography.


(8)

DAFTAR ISI

PERSETUJUAN ... i

PERNYATAAN ... ii

PENGHARGAAN ... iii

ABSTRAK ... iv

ABSTRACT ... v

DAFTAR ISI ... vi

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... x

BAB 1 PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Batasan Masalah ... 2

1.4. Tujuan Penelitian ... 3

1.5. Manfaat Penelitian ... 3

1.6. Sistematika Penulisan ... 3

BAB 2 TINJAUAN PUSTAKA ... 5

2.1. Pertukaran Data ... 5

2.2. Keamanan Informasi ... 5

2.3. Android ... 6

2.4. Kriptografi... 6

2.4.1. Algoritma RSA ... 7

2.4.2. Algoritma LCG (Linear Congruential Generators) ... 99 2.4.3. Fermat’s Primality Test... 10

2.4.4. Algoritma Rabin-Miller ... 12

2.4.5. Algoritma One Time Pad ... 12

2.5. Database ... 14

2.5.1. DBMS ... 14


(9)

2.6. PHP ... 15

2.7. DFD... 16

2.8. UML (Unified Modelling Language) ... 16

2.9. Penelitian Terdahulu ... 17

BAB 3 ANALISIS DAN PERANCANGAN ... 19

3.1. Use Case Diagram... 19

3.2. Data Flow Diagram ... 20

3.2.1. DFD Level 0 ... 20

3.2.2. DFD Level 1 ... 21

3.2.3. DFD Manajemen Chat Level 2 ... 22

3.2.4. DFD Manajemen Teman Level 2 ... 23

3.2.5. DFD Manajemen Pengguna Level 2 ... 24

3.3. Flowchart ... 24

3.3.1. Flowchart Sistem ... 25

3.3.2. Flowchart Enkripsi Pesan ... 28

3.3.3. Flowchart Dekripsi Pesan ... 35

3.4. Perancangan Sistem ... 39

3.4.1. Kebutuhan Perangkat Lunak ... 39

3.4.2. Perancangan Antar Muka Sistem ... 39

3.5. Perancangan Database ... 47

3.5.1. Perancangan Database ... 47

3.5.2. Relasi Antar Tabel ... 49

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 50

4.1. Spesifikasi Perangkat Keras dan Perangkat Lunak ... 50

4.2. Uji Batasan ... 51

4.3. Pengujian Sistem Secara Menyeluruh ... 58

4.3.1. Pengujian Pada Sisi User ... 58

4.4. Analisis Kriptografi Terhadap Sistem ... 72

4.4.1. Analisis Keamanan Pesan Antar Pengguna NIC Messenger ... 72


(10)

BAB 5 KESIMPULAN DAN SARAN ... 78

5.1. Kesimpulan ... 78

5.2. Saran ... 78

DAFTAR PUSTAKA ... 80


(11)

DAFTAR TABEL

Hal

Tabel 2.1 Tabel Penelitian Terdahulu 18


(12)

DAFTAR GAMBAR

Hal

Gambar 3.1 Use Case Diagram 19

Gambar 3.2 Diagram Konteks 20

Gambar 3.3 DFD Level 1 21

Gambar 3.4 DFD Manajemen Chat Level 2 22

Gambar 3.5 DFD Manajemen Teman Level 2 23

Gambar 3.6 DFD Manajemen Pengguna Level 2 24

Gambar 3.7 Flowchart Sistem 25

Gambar 3.8 Flowchart Halaman Utama 26

Gambar 3.9 Flowchart Proses Enkripsi 28

Gambar 3.10 Enkripsi One Time Pad 29

Gambar 3.11 Enkripsi RSA 512-Bit 30

Gambar 3.12 Uji Bilangan Prima 31

Gambar 3.13 Flowchart Proses Dekripsi 35

Gambar 3.14 Dekripsi RSA 512-Bit 36

Gambar 3.15 Dekripsi One Time Pad 37

Gambar 3.16 Form Registrasi 40

Gambar 3.17 Form Login 41

Gambar 3.18 Halaman Utama 41

Gambar 3.19 Halaman Daftar Teman 42

Gambar 3.20 Halaman Hapus Teman 43

Gambar 3.21 Halaman Daftar Pengguna 44

Gambar 3.22 Halaman Tambah Teman 45

Gambar 3.23 Halaman Form Chat 46

Gambar 3.24 Table User 47

Gambar 3.25 Table Chat 48

Gambar 3.26 Table Nic List 48

Gambar 3.27 Database Relationship 49


(13)

Gambar 4.2 Proses Enkripsi Kunci OTP 52

Gambar 4.3 Proses Pembangkit Kunci OTP 53

Gambar 4.4 Proses Enkripsi OTP 54

Gambar 4.5 Proses Dekripsi OTP 54

Gambar 4.6 Proses Pembangkit Bilangan Acak 55

Gambar 4.7 Proses Pembangkit Bilangan Prima Acak 55

Gambar 4.8 Proses Pengujian Bilangan Prima 56

Gambar 4.9 Proses Mendapatkan Nilai P dan Q 57

Gambar 4.10 Proses Mendapatkan Nilai E 57

Gambar 4.11 Proses Mendapatkan Nilai D 58

Gambar 4.12 Halaman Registrasi 59

Gambar 4.13 Halaman Login 60

Gambar 4.14 Halaman Utama 61

Gambar 4.15 Halaman Menu Pada Pertemanan 62

Gambar 4.16 Halaman Daftar Chat 63

Gambar 4.17 Halaman Chat Kepada Teman 64

Gambar 4.18 Pengiriman Pesan 65

Gambar 4.19 Pesan Diterima 68

Gambar 4.20 Notifikasi Hapus Pesan 69

Gambar 4.21 Halaman List 70

Gambar 4.22 Halaman Menu Tambah Teman 71

Gambar 4.23 Sniffing Jaringan Dengan Wireshark 72

Gambar 4.24 Analisis HTTP Request 73

Gambar 4.25 Chat Setelah Dienkripsi 74


(14)

ABSTRAK

Perkembangan dan pemakaian internet telah mendunia dewasa ini sudah semakin pesat, banyak dari kalangan pengguna baik kalangan siswa, mahasiswa dan pekerja perkantoran atau pelaku bisnis menggunakan fasilitas internet didalam penambahan ilmu pengetahuan dan mempermudah pekerjaan serta mendapatkan informasi dengan mudah, hal ini membuat developer aplikasi harus merubah acuannya dari merancang dan mendesain aplikasi yang bersifat desktop menjadi bersifat web-based, dengan memanfaatkan cloud

computing. Banyak contoh aplikasi yang berjalan dan berkembang sukses saat

ini dengan memanfaatkan cloud computing, yang penulis jadikan contoh dalam hal ini adalah aplikasi messenger atau aplikasi pengirim pesan tanpa biaya, mudah dan cepat dengan memanfaatkan fasilitas internet. Dalam perkembangan aplikasi messenger sangat membantu dalam pertukaran pesan, hal ini menjadi kesempatan kebocoran pesan semakin besar. Oleh karena itu diperlukan sebuah pendekatan untuk mengamankan pesan tersebut yaitu dengan menerapkan sistem kriptografi pada aplikasi messenger. Dalam penelitian ini penulis akan menerapkan sistem kriptografi asimetris RSA dan kriptografi simetris One Time Pad untuk mengamankan pesan. Berdasarkan pengujian yang telah dilakukan, kombinasi RSA dan One Time Pad dapat mengamankan pesan yang dikirim RSA teruji sebagai sistem kriptografi yang aman karena kesulitan dalam proses memfaktorkan bilangan yang sangat besar, dimana menggunakan sepasang bilangan prima sebagai kunci public dan privat sebesar 100 hingga 200 digit atau bahkan lebih besar (Schneier, 1996).

Kata kunci: NIC Messenger, RSA Algorithm, One Time Pad Algorithm, Kriptografi Simetris, Kriptografi Asimetris.


(15)

COMBINATION OF 512 BITS RSA ALGORITHMS AND ONE TIME PAD FOR MESSAGE SECURITY ON NIC MESSENGER SOFTWARE

ABSTRACT

Development and use of the internet has grown worldwide is now growing rapidly, many of the users of both the students and office workers or business people use the internet facility in the addition of science and facilitate the work and get information easily, this makes the application developer must change reference of designing a desktop application became web-based application, by utilizing cloud computing. Many examples of applications that are running and growing successful by utilizing cloud computing, the authors make an example in this regard is a messenger application or applications without the cost of sending a message, easily and quickly by utilizing the internet. During its development, messenger applications are very helpful in the exchange of messages, it became an opportunity to greater leak message. Therefore we need an approach to securing these messages by applying cryptographic systems on messenger application. In this study the authors will apply the RSA assymmetric cryptographic system and the One Time Pad symmetric cryptographic system to securing these messages. Based on the testing that has been done, a combination of RSA and One Time Pad can secure messages. RSA tested as secure cryptographic system because of difficulties in the process of factoring very large numbers, where RSA using a pair of prime numbers as a public and private key of 100 to 200 digits or even larger (Schneier, 1996).

Keywords: NIC Messenger, RSA Algorithm, One Time Pad Algorithm, symmetric cryptography, asymmetric cryptography.


(16)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Perkembangan dan pemakaian internet telah mendunia dewasa ini sudah semakin pesat, banyak dari kalangan pengguna baik kalangan siswa, mahasiswa dan pekerja perkantoran atau pelaku bisnis menggunakan fasilitas internet didalam penambahan ilmu pengetahuan dan mempermudah pekerjaan serta mendapatkan informasi dengan mudah, hal ini membuat developer aplikasi harus merubah acuannya dari merancang dan mendesain aplikasi yang bersifat desktop menjadi bersifat

web-based, dengan memanfaatkan cloud computing. Banyak contoh aplikasi yang berjalan

dan berkembang sukses saat ini dengan memanfaatkan cloud computing, yang penulis jadikan contoh dalam hal ini adalah aplikasi messenger atau aplikasi pengirim pesan tanpa biaya, mudah dan cepat dengan memanfaatkan fasilitas internet.

Banyak software messenger yang telah beredar di internet yang dapat digunakan secara bebas, akan tetapi hanya beberapa saja yang mengklaim memanfaatkan kriptografi untuk mengamankan pesan penggunanya salah satunya WhatsApp Messenger untuk versi terbaru, seperti yang telah mereka beritahukan dalam website mereka. Dalam skripsi ini nantinya penulis akan mengambil aplikasi yang bersifat web-based, sebagai contoh pengimplementasian pada NIC Messenger. Penulis ingin mengimplementasikan algoritma enkripsi yang sudah terkenal yaitu RSA dan One Time Pad untuk mengamankan komunikasi antar pengguna dari pihak lain yang ingin menyadap atau tindakan krimal lainnya. Ada banyak algoritma lain yang dapat digunakan, akan tetapi algoritma RSA sudah sangat popular dikalangan

developer sebagai algoritma enkripsi yang sangat aman. RSA teruji sebagai sistem

kriptografi yang aman karena kesulitan dalam proses memfaktorkan bilangan yang sangat besar, dimana RSA menggunakan sepasang bilangan prima sebagai kunci publik dan privat sebesar 100 hingga 200 digit atau bahkan lebih besar (Schneier,


(17)

Beberapa penerapan sistem kriptografi RSA sebagai sistem pengaman data antara lain, meningkatkan keamanan informasi dalam sistem e-voting berbasis pada kriptografi kunci publik. al-Anie et al menerapkan sistem enkripsi RSA pada proses vote yang dilakukan untuk mencegah terjadinya penyadapan dan kecurangan (al-Anie,

et al. 2011), dan meningkatkan algoritma keamanan untuk komunikasi pesan dengan

mengkombinasikan RSA dengan beberapa sistem kriptografi lainnya. Rasool et al, menyadari bahwasanya dengan mengkombinasikan beberapa sistem enkripsi dalam proses komunikasi pesan akan meningkatkan keamanan pada komunikasi pesan, hal ini dikarenakan pada sebuah algoritma kriptografi masih terdapat kekurangan (Rasool, et al. 2011).

Beberapa penerapan sistem kriptografi One Time Pad, dengan memanfaatkan fungsi One Time Pad dan multi-chaotic untuk meningkatkan algoritma enkripsi dan meningkatkan kompleksitas sistem enkripsi sehingga sangat sulit untuk dipecahkan dan diprediksi dalam penerapannya pada enkripsi gambar (al-Najjar, et al. 2012), dan menerapkan sistem enkripsi One Time Pad pada email antar dua individu untuk mengamanakan isi email (Connelly, 2008).

1.2 Rumusan Masalah

Berdasarkan pemaparan pada latar belakang tersebut, maka rumusan masalahnya adalah, mengamankan pesan yang benar-benar aman dan efektif untuk mencegah terjadinya penyadapan pesan.

1.3 Batasan Masalah

Agar pengimplementasian algoritma RSA kedalam NIC Messenger tidak terdapat banyak masalah, penulis membatasi masalah tersebut sebagai berikut:

1. Menggunakan kunci RSA sebesar 512-bit.

2. Pembangunan software fokus pada pengimplementasian kriptografi pada pesan.

3. Hanya mengenkripsi data berupa text.


(18)

1.4 Tujuan Penelitian

Adapaun tujuan dari penelitian ini adalah sebagai berikut:

1. Untuk mengamankan pesan antar pengguna NIC Messenger dengan

menggunakan RSA dan One Time Pad.

1.5 Manfaat Penelitian

Penelitian ini diharapkan dapat memberikan manfaat bagi penulis, pembaca dan para peneliti pemula, sebagai berikut:

1. Menjadikan salah satu alternatif pilihan bagi developer aplikasi untuk mengamankan informasi pengguna.

2. Menambah pengetahuan baru tentang kombinasi RSA dan One Time Pad untuk pengamanan pesan.

1.6 Sistematika Penulisan

Tugas akhir ini disusun dalam enam bab dengan sistematika penulisan sebagai berikut:

Bab I Pendahuluan

Bab pendahuluan ini berisi tentang hal-hal yang mendasari dilakukannya penelitian serta pengidentifikasian masalah penelitian. Bagian-bagian yang terdapat dalam bab pendahuluan ini meliputi latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, dan manfaat penelitian.

Bab II Tinjauan Pustaka

Pada bab tinjauan pustaka menguraikan landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang diperoleh dari acuan yang mendasari dalam melakukan kegiatan penelitian pada tugas akhir ini.


(19)

Bab III Metodologi

Bab ini menguraikan metodologi penelitian yang dilakukan dalam menerapkan kombinasi Algoritma RSA dan One Time Pad untuk pengamanan pesan pada

NIC Messenger.

Bab IV Hasil dan Pembahasan

Pada bab hasil dan pembahasan akan memaparkan hasil terhadap uji coba algoritma yang telah dilakukan dalam meyelesaikan permasalahan pengamanan pesan padaNIC Messenger.

Bab V Kesimpulan dan Saran

Bab ini berisi tentang kesimpulan hasil penelitian dan saran-saran yang berkaitan dengan penelitian selanjutnya.


(20)

BAB 2

TINJAUAN PUSTAKA

Pada bab ini, akan dibahas landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang mendasari penyelesaian permasalahan pengamanan pesan pada NIC

Messenger dengan Algoritma RSA 512-bit dan One Time Pad.

2.1. Pertukaran Data

Dalam software messenger pada umumnya terjadi pertukaran data, dapat berupa pesan teks, suara dan dapat pula berupa gambar. Maksud dari pertukaran data disini adalah proses pengiriman data yang berupa teks, suara atau gambar dari pengguna messenger satu ke pengguna messenger lainnya, dimana data yang dikirimkan akan disimpan terlebih dahulu ke server dan dari server akan dikirim ke penerima data tersebut. Karena proses ini penulis dapat mengambil kesimpulan bahwasanya pertukaran data pada aplikasi messenger sangat rentan terhadap kejahatan maya seperti data dicuri dan atau data dibajak oleh pihak yang tidak berkepentingan.

2.2. Keamanan Informasi

Informasi saat ini sudah menjadi sebuah komoditi yang sangat penting bagi sebuah organisasi, perguruan tinggi, lembaga pemerintahan maupun individual, kemampuan dalam mengakses dan menyediakan informasi secara cepat serta akurat (Rahardjo, 2005). Karena pentingnya sebuah informasi, seringkali informasi yang diinginkan hanya dapat diakses oleh orang tertentu misalnya pihak penerima yang diinginkan, dan jika informasi ini sampai diterima oleh pihak yang tidak diinginkan akan berdampak kerugian pada pihak pengirim.

Keamanan informasi adalah bagaimana kita dapat mencegah penipuan, atau paling tidak mendeteksi adanya penipuan di sebuah sistem yang berbasis informasi,


(21)

Untuk itu diperlukanlah sebuah pendekatan dalam melakukan pengamanan pada informasi, seperti melakukan enkripsi, steganografi, cipher dan hashing terhadap informasi tersebut.

2.3. Android

Android adalah salah satu sistem operasi yang dapat berjalan pada handphone, android merupakan turunan dari sistem operasi linux. Oleh karena itu banyak vendor telepon genggam memanfaatkan sistem operasi android yang open source hal ini mengundang banyaknya developer aplikasi untuk mengembangkan berbagai aplikasi

mobile karena mereka dapat dengan bebas biaya mengembangkan aplikasi untuk dapat

digunakan di handphone berbasis android. Berbeda dengan sistem operasi IOS besutan Apple yang mengharuskan developer aplikasi membayar $99 per tahun untuk mendapatkan lisensi agar aplikasi buatan developer dapat diinstalasi pada iPhone atau iDevice lainnya. Hal ini yang menjadi alasan penulis untuk mengembangkan aplikasi

NIC Messenger ini pada handphone berbasis android.

2.4. Kriptografi

Menurut Sadikin (2012), kriptografi adalah ilmu yang bersandarkan pada teknik matematika yang berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas.

Kriptografi terbagi atas dua kategori yaitu kriptografi klasik dan kriptografi modern. Kriptografi klasik adalah sistem kriptografi yang menggunakan penyandian kunci simetris dan menggunakan metode subtitusi (pergantian huruf) atau transposisi (pertukaran tempat). Dan kriptografi modern adalah sistem kriptografi yang menggunakan penyandian kunci asimetris (Sadikin, 2012). Berikut ini adalah beberapa mekanisme yang berkembang pada kriptografi:

1. Fungsi Hash

Fungsi hash adalah fungsi yang melakukan pemetaan pesan dengan panjang sembarang ke sebuah teks khusus yang disebut message digest dengan panjang


(22)

yang tetap. Fungsi hash pada umumnya digunakan untuk menguji keutuhan pada sebuah data.

2. Penyandian dengan kunci simetris

Penyandian dengan kunci simetris adalah penyandian yang pada proses enkripsi dan dekripsinya menggunakan sebuah kunci yang sama. Kunci yang digunakan pada proses enkripsi dan dekripsi bersifat rahasia. Beberapa jenis kriptografi dengan penyandian kunci simetris antara lain Data Encryption

Standard (DES), 3DES, Advance Encryption Standard (AES), Blowfish dan

International Data Encryption Algorithm (IDEA).

3. Penyandian dengan kunci asimetris

Penyandian dengan kunci asimetris atau sering juga disebut dengan kunci publik adalah penyandian yang pada proses enkripsi dan dekripsinya memiliki kunci yang berbeda. Pada kunci yang digunakan untuk enkripsi bersifat publik

(public key). Sedangkan kunci yang digunakan untuk dekripsi bersifat rahasia

(private key). Beberapa jenis kriptografi dengan penyandian kunci asimetris antara lain RSA, Diffie-Helman, ELGamal, Knapsack, dan beberapa penerapan teknik Elliptic Curve.

2.4.1 Algoritma RSA

Karena semakin berkembangnya pertukaran data, khususnya dalam wireless dan local

area network (LAN), hal ini memberi kesempatan yang besar untuk mencegat data

dan memalsukan pesan. Satu-satunya cara yang mudah untuk menjaga keamanan dan keintegritasan informasi antara pengirim dan penerima adalah dengan menggunakan kriptografi kunci publik.

RSA adalah sistem kriptografi dengan kunci publik yang pertama kali dapat berjalan dan dipraktekkan, ditemukan pada tahun 1977 dan dipublikasikan pada tahun 1978 oleh Rivest, Shamir dan Adleman (RSA) di Institut Teknologi Massachusetts. RSA adalah sistem kriptografi yang masih paling banyak digunakan seperti transaksi online, email, kartu pintar dan umumnya pada aplikasi mobile commerce (Yan, 2008).


(23)

Rumus dasar dari metode enkripsi dan dekripsi RSA adalah

C≡� mod N (1)

Dan

M≡� mod N (2)

Penjelasan:

N = p * q

p dan q = Bilangan prima

M = Plaintext

C = Ciphertext

e = Encryption exponent

d = Decryption exponent

ɸ(N) = (p-1)(q-1)

Tahapan Algoritma RSA

1. Pilih dua bilangan prima secara acak dan tidak sama. 2. Hitung perkalian p dan q, simpan dalam variabel n. 3. Hitung ɸ(n) ≡ (p-1).(q-1)

4. Pilih e secara acak dengan syarat, PBB(e, ɸ(n)) = 1 5. Hitung d ≡ e-1(mod ɸ(n) atau d.e ≡ 1.mod(ɸ(n)) 6. Rahasiakan p, q, ɸ(n) dan d

7. Kirimkan e dan n

Contoh kasus sederhana algoritma Kriptografi RSA: P = 47 (bilangan prima) dan Q = 71 (bilangan prima) N = P.Q = 3337

ɸ(N) = (P-1)*(Q-1) = 3220 E = 79 (pilih angka acak) D = 1+(k*3220)/79 dicoba K = 1,2,..,dst


(24)

Misalkan plainteks M = “ABC”, ubah kedalam ASCII menjadi “65 66 67” Enkripsi dengan kunci publik E = 79 dan N = 3337:

M1 = 65 -> C1 = 65^79 mod 3337 = 541 M2 = 66 -> C2 = 66^79 mod 3337 = 795 M3 = 67 -> C3 = 67^79 mod 3337 = 1479 Dekripsi dengan kunci D = 1019:

C1 = 541 -> M1 = 541^1019 mod 3337 = 65 -> A C2 = 795 -> M2 = 795^1019 mod 3337 = 66 -> B C3 = 1479 -> M3 = 1479^1019 mod 3337 = 67 -> C

2.4.2 Algoritma LCG (Linear Congruential Generators)

Algoritma LCG atau Linear Congruential Generators adalah algoritma yang

umumnya digunakan untuk pembangkit bilangan acak, dengan rumus sebagai berikut:

Xn = (a * Xn-1 + b) mod m (3)

Penjelasan:

X = Kunci sementara

a = Bilangan pengali

b = Bilangan inkremen

m = Modulus

Keuntungan dari linear congruential generators adalah proses pembangkitan bilangan acak cepat, dan membutuhkan beberapa operasi per-bit (Schneier, 1996).

Akan tetapi kekurangan dari algoritma pembangkit bilangan acak ini adalah bilangan acak yang dihasilkan tidak dapat digunakan untuk kriptografi, karena bilangan acak tersebut bisa ditebak. Pada penelitian ini algoritma LCG akan dikombinasikan dengan waktu dalam satuan milidetik, dimana untuk setiap bilangan acak yang dihasilkan akan ditambahkan dengan milidetik saat ini, dengan demikian hasil bilangan acak yang dihasilkan akan sulit untuk ditebak.


(25)

Contoh:

m = 1024

a = 105

c = 71

X = 1

t = Waktu dalam milidetik

Pengujian LCG tanpa kombinasi waktu 0 = (105 * 176) +71) mod 1024 = 176 1 = (105 * 119) +71) mod 1024 = 119 2 = (105 * 278) +71) mod 1024 = 278 3 = (105 * 589) +71) mod 1024 = 589 4 = (105 * 476) +71) mod 1024 = 476

Hasil pengujian jika dilakukan berulang kali akan tetap menghasilkan bilangan yang sama.

Pengujian LCG dengan kombinasi waktu 0 = ((105 * 46) +71 + 514942) mod 1024 = 46 1 = ((105 * 753) +71 + 515020) mod 1024 = 753 2 = ((105 * 267) +71 + 515051) mod 1024 = 267 3 = ((105 * 464) +71 + 515078) mod 1024 = 464 4 = ((105 * 694) +71 + 515103) mod 1024 = 694

Hasil pengujian jika dilakukan berulang kali akan menghasilkan bilangan yang berbeda.

2.4.3 Fermat’s Primality Test

Untuk menghasilkan sebuah kunci pada sistem kriptografi kunci publik RSA membutuhkan bilangan P dan Q yang prima, algoritma Fermat’s Little Theorem dapat digunakan untuk menguji apakah sebuah bilangan prima atau bilangan biasa (Thomas, et al. 2001).


(26)

Sebuah bilangan dikatakan prima jika memenuhi rumus sebagai berikut:

ap-1 ≡ 1 (mod p) atau ap-1 (mod p) 1 (4)

Penjelasan:

a = Bilangan Inkremen

p = Bilangan yang diuji

Jika dalam interval a dalam pengujian menghasilkan sekali saja nilai bukan 1 maka bilangan yang diuji bukan bilangan prima.

Contoh:

Uji keprimaan angka 6 a = 1

15 (mod 6) = 1 a = 2

25 (mod 6) = 2

Proses berhenti karena dalam interval a = 2 menghasilkan nilai bukan 1, maka angka 6 bukanlah bilangan prima.

Uji keprimaan angka 5 a = 1

14 (mod 5) = 1 a = 2

24 (mod 5) = 1 a = 3

34 (mod 5) = 1 A = 4

44 (mod 5) = 1

Proses berhenti dan dalam setiap interval a menghasilkan nilai 1, maka angka 5 adalah bilangan prima.


(27)

2.4.4 Algoritma Rabin-Miller

Michael Rabin dan Gary Miller mengembangkan sebuah algoritma untuk mengujian keprimaan sebuah bilangan pada tahun 1976. Algoritma ini adalah algoritma yang umumnya digunakan untuk menentukan sebuah bilangan prima (Schneier, 1996).

Berikut ini adalah langkah-langkah dalam melakukan pengujian bilangan prima berdasarkan Algoritma Rabin-Miller pada buku Schneier (1996).

1. Pilih bilangan acak n untuk diuji dan bilangan acak a untuk menguji

2. Hitung b yang dalam hal ini 2b adalah nilai pangkat terbesar yang habis membagi n-1

3. Hitung M dengan n = 1 + 2b * m atau m = n-1 / 2b 4. Nyatakan j = 0 dan z = am mod n

5. Jika z = 1 atau z = n-1, maka n adalah bilangan prima 6. Jika z > 0 dan z = 1, maka n bukan bilangan prima

7. Nyatakan j = j+1. Jika j < b dan z ≠ n-1, nyatakan z = z2 mod n dan ulangi langkah 7. Jika z = p-1, maka n adalah bilangan prima

8. Jika j = b dan z ≠ n-1, maka n adalah bukan bilangan prima.

Contoh:

1. n = 223, n-1 = 222

2. b = 1, jadi 2b = 2. Karena 2b mod n-1 = 21 mod 222 = 0 3. a = 24

4. hitung M, 223 = 1 + 21 * M, M = 223 – 1 / 21, M = 111 5. j = 0, z = 24111 mod 223, z = 222

6. z = 222 maka n adalah bilangan prima.

2.4.5 Algoritma One Time Pad

Sandi One Time Pad merupakan salah satu dari Sistem Kriptografi Klasik berbasis subtitusi, ditemukan oleh Major Joseph Mauborgne pada tahun 1917. Proses kerja Sandi One Time Pad menggunakan kunci yang acak setiap karakternya untuk semua teks asli, kunci yang acak tersebut hanya digunakan sekali saja dan panjang kuncinya sama dengan panjang teks asli, sistem Sandi One Time Pad diklaim merupakan sandi yang mencapai kerahasiaan sempurna (perfect secrecy) (Sadikin, 2012).


(28)

Rumus dasar dari Sandi One Time Pad adalah Enkripsi:

ci = (pi + ki) mod 26 (10)

Dekripsi:

di = (ci - ki) mod 26 (11)

Penjelasan:

c = Ciphertext

p = Plaintext k = Kunci enkripsi

i = Karakter ke-i

Tahapan Sandi OTP

1. Pilih karakter secara acak sebanyak karakter pada pesan sebagai kunci enkripsi.

2. Jumlahkan karakter ke-i dari pesan dengan kunci ke-i dan mod 26.

Contoh kasus sederhana algoritma Kriptografi One Time Pad:

Misalkan plainteks P = “BUKU”

Generate Kunci OTP sepanjang P karakter = “70 75 83 78”

Ubah P dan Kunci kedalam bentuk ASCII: P = 66 85 75 85

K = 70 75 83 78

Enkripsi Ci = (Pi + Ki) mod 26 : C1 = (66+70) mod 26 = 84 -> T C2 = (85+75) mod 26 = 108 -> l C3 = (75+83) mod 26 = 80 -> P C4 = (85+78) mod 26 = 85 -> U


(29)

Dekripsi Pi = (Ci - Ki) mod 26 : P1 = (84-70) mod 26 = 66 -> B P2 = (108-75) mod 26 = 85 -> U P3 = (80-83) mod 26 = 75 -> k P4 = (85-78) mod 26 = 85 -> U

2.5. Database

Menurut Rosa et al (2011), Database atau basis data adalah sistem terkomputerisasi yang berfungsi untuk menyimpan data atau informasi yang sudah diolah dan membuat informasi tersedia saat dibutuhkan.

Kebutuhan basis data dalam sistem informasi meliputi 2 hal, yaitu: 1. Memasukkan, menyimpan, dan mengambil data

2. Membuat laporan berdasarkan data yang telah disimpan

2.5.1 DBMS

Menurut Rosa et al (2011), DBMS (Database Management System) atau Sistem Manajemen Basis Data adalah aplikasi yang digunakan untuk menyimpan, mengelola, dan menampilkan data.

Aplikasi DBMS memiliki beberapa persyaratan minimal sebagai berikut: 1. Menyediakan fasilitas untuk mengelola akses data

2. Mampu menangani integritas data

3. Mampu menangani akses data yang dilakukan secara efektif 4. Mampu menangani backup data

DBMS sudah lama berkembang dimulai sejak tahun 1960an, dan memasuki tahun 1970an mulai berkembang teknologi Relational DBMS yaitu DBMS yang berbasis model relasional dikembangkan oleh Edgar J. Codd. DBMS model relasional adalah sebuah model pada DBMS yang memandang data sebagai sekumpulan tabel yang saling berkaitan. Seiring perkembangan teknologi, model DBMS berkembang menjadi Object Oriented DBMS atau DBMS dengan model berorientasi objek yang memandang data sebagai suatu objek.


(30)

Berikut ini adalah beberapa macam DBMS yang paling populer dan banyak digunakan di dunia saat ini, yaitu:

1. Oracle

2. Microsoft SQL Server 3. Microsoft Access

4. MySQL

2.5.2 MySQL

MySQL adalah salah satu DBMS yang sangat populer dikalangan developer aplikasi web. Untuk dapat mengelola data yang disimpan dalam database, memerlukan sebuah perintah khusus yang dikirimkan kepada DBMS bernama SQL (Structured Query

Language). Dalam MySQL, SQL disebut sebagai pernyataan.

Adapun beberapa pernyataan umum yang digunakan dalam MySQL adalah sebagai berikut:

1. “SELECT”, berguna untuk menampilkan informasi dari sebuah table pada

database.

2. “UPDATE”, berguna untuk mengubah informasi dari sebuah table pada

database.

3. “DELETE”, berguna untuk menghapus informasi dari sebuah table pada

database.

4. “INSERT”, berguna untuk menambah informasi baru kedalam table pada

database.

2.6. PHP

Menurut Sibero (2011), PHP (Hypertext Preprocessor) adalah pemrograman

interpreter yaitu proses penerjemahan dari kode sumber menjadi kode mesin yang

dimengerti komputer pada saat baris kode dijalankan secara langsung. PHP pada awalnya ditulis menggunakan bahasa PERL (Perl Script), kemudian ditulis ulang dengan menggunakan bahasa C CGI-BIN (Common Gateway Interface-Binnary) yang bertujuan agar halaman website dapat mendukung formulir dan penyimpanan data.


(31)

PHP adalah bahasa pemrograman Server Side Programming, memungkinkan sebuah

website yang dibangun bersifat dinamis (Sibero, 2011).

2.7. DFD

Dalam pembangunan software, perlu adanya konsep pemrograman terstruktur untuk memudahkan developer dalam membagi-bagi fungsi, prosedur, dan modul program yang dibangun. Dalam konsep pemrograman terstruktur dikenal metode DFD (Data

Flow Diagram). DFD adalah sebuah metode yang digunakan untuk merepresentasikan

sebuah sistem atau perangkat lunak pada beberapa level detail. DFD lebih sesuai untuk memodelkan fungsi-fungsi dan prosedur-prosedur pada pemrograman sistem yang terstruktur (Structural Programming) (Rosa, et al. 2011).

2.8. UML (Unified Modelling Language)

Untuk membantu dalam pengembangan perangkat lunak dikenal istilah pemodelan. Salah satu pemodelan yang saat ini paling banyak digunakan oleh pengembang perangkat lunak adalah UML (Unified Modelling Language). UML adalah standar bahasa yang sering digunakan dalam bidang industri untuk mendefinisikan

requirement (kebutuhan), membuat analisis dan desain, serta menggambarkan

arsitektur dalam pemrograman berorientasi objek.

Ada beberapa hal yang dimaksud dalam kompleksitas pada perangkat lunak (Rosa, et al. 2011):

1. Kompleksitas domain atau permasalahan perangkat lunak 2. Kesulitas mengelola proses pengembangan perangkat lunak 3. Kemungkinan fleksibilitas perubahan perangkat lunak

4. Permasalahan karakteristik bagian-bagian perangkat lunak secara diskrit

UML terbagi atas 3 (tiga) kategori, yaitu diagram struktur (structure diagram), diagram kelakuan sistem (behaviour diagram), dan diagram interaksi (interaction


(32)

case dari kategori diagram kelakuan sistem, untuk menggambarkan interaksi antara satu atau lebih aktor dengan perangkat lunak (Rosa, et al. 2011).

2.9. Penelitian Terdahulu

Beberapa penelitian yang menjadi bahan pembelajaran penulis tentang penyelesaian masalah keamanan dalam pertukaran pesan.

Wahyudi et al (2008) telah mencoba mengamankan pesan dengan menggunakan teknik steganografi dan algoritma AES, Wahyudi dan Silitongan merancang aplikasi yang menyembunyikan pesan sebelum dikirim kepada penerima kedalam sebuah gambar dengan teknik steganografi, sebelum pesan disisipkan kedalam gambar pesan asli dienkripsi terlebih dahulu menggunakan algoritma AES. Hasilnya pesan menjadi tersembunyi dengan tidak mencurigakan karena telah disisipkan kedalam sebuah gambar.

Connely (2008) telah menerapkan algoritma One Time Pad untuk mengamankan email. Connely menerapkan sandi One Time Pad dan teknik TRNG

(True Random Number Generator) untuk menghasilkan nilai yang benar-benar

random sebagai kunci One Time Pad. Hasilnya email yang dienkripsi benar-benar

rahasia, atau perfect secrecy.

Rasool et al (2011) telah mencoba meningkatkan algoritma keamanan dalam komunikasi pesan. Rasool et al, menerapkan kombinasi dari algoritma kunci simetris FSET (algoritma yang dibuat oleh Varghese Paul), algoritma kunci publik RSA dan teknik hashing menggunakan SHA-2. Hasilnya komunikasi pesan menjadi rahasia karena telah dienkripsi menggunakan FSET, kemudian kunci yang digunakan telah dienkripsi oleh RSA, untuk mengetahui apakah pesan asli masih terbukti valid, mereka melakukan pengujian menggunakan SHA-2.

Pardede (2012) telah mencoba menerapkan RSA sebagai pengamanan sistem

e-voting. Hasilnya data jumlah suara yang dihasilkan dari proses voting pemilih dalam


(33)

Table 1.1 Tabel penelitian terdahulu

No Peneliti Penelitian Algoritma Hasil

1 Wahyudi et al (2008)

Mengamankan

pesan Steganografi dan AES Tidak praktis

2 Connely

(2008)

Mengamankan

email One Time Pad Sangat aman

3 Rasool et al (2011)

Mengamankan pesan

FSET, RSA, dan

SHA-2 Sangat aman

4 Pardede

(2012)

Mengamankan


(34)

BAB 3

ANALISIS DAN PERANCANGAN

Pada bab ini akan dibahas tentang rancangan sistem seperti flowchart proses enkripsi dan dekripsi menggunakan One Time Pad dan RSA, use case untuk melihat proses apa saja yang dapat dilakukan oleh pengguna serta DFD dari proses pengiriman pesan, penerimaan pesan, penambahan teman, penghapusan teman dan registrasi pengguna baru.

3.1 Use Case Diagram

Use case diagram adalah salah satu pemodelan dalam sistem informasi, use case

berfungsi untuk memodelkan aspek perilaku dari sistem. Berikut ini adalah use case diagram pada NIC Messenger:

sender

register

login

hapus chat tambah teman hapus teman

receiver kelola chat

kelola teman

lupa password

<<include>> <<include>>


(35)

Dari gambar 3.1 dapat dijelaskan bahwasanya ada dua aktor yang dapat menggunakan software ini, yaitu sender dan receiver. Sender atau receiver bisa pengguna yang sama. Akan tetapi memiliki hak yang sama dalam menggunakan sistem, beberapa sistem yang ada pada NIC Messenger yaitu:

 Register Mendaftarkan akun baru untuk dapat menggunakan software

 Login Melakukan pengujian kelayakan sebagai pengguna

 Kelola chat Melakukan pengelolaan pada pesan

 Kelola teman Melakukan pengelolaan pada pengguna lain yang telah terhubung pada pengguna

 Logout Keluar dari software

3.2 Data Flow Diagram (DFD)

3.2.1 DFD Level 0

DFD level 0 atau pada umumnya disebut juga dengan diagram sistem inti

(fundamental system model) dan diagram konteks (context diagram) menjelaskan

secara sederhana dalam bentuk diagram dari proses software (Rosa, et al. 2011). Berikut ini diagram konteks NIC Messenger:

NIC Messenger

Sender Register, login, kirim chat, Receiver

manajemen teman, manajemen pengguna lain

Register, login, terima chat, manajemen teman, manajemen pengguna lain Menampilkan daftar teman,

Menampilkan daftar pengguna lain

Menampilkan daftar teman, Menampilkan daftar pengguna lain

Gambar 3.2 Diagram Konteks

Dari gambar 3.2 dapat dijelaskan bahwasanya user sebagai sender dapat mengakses proses register, login, kirim chat, manajemen teman, manajemen pengguna lain kemudian sistem memberi output berupa tampilan daftar teman dan daftar pengguna lain.

Sedangkan untuk user sebagai receiver dapat mengakses proses register, login, terima chat, manajemen teman, manajemen pengguna lain kemudian sistem memberi output berupa tampilan daftar teman dan daftar pengguna lain.


(36)

3.2.2 DFD Level 1

DFD level 1 adalah diagram yang menampilkan setiap relasi antar proses pada NIC

Messenger. Berikut ini adalah DFD level 1 NIC Messenger:

Register 1.0 Login 2.0 Lupa Password 3.0 Manajemen Teman 5.0 Manajemen Pengguna 6.0 Sender Tbl_chat Tbl_user Tbl_nic_list Receiver Manajemen Chat 4.0 Register Register Status register Login Status login Lupa password

Status lupa password

Kirim chat, hapus chat Status hapus chat

Kirim chat, hapus pertemanan

Kirim chat, hapus pertemanan Status hapus pertemanan

Status hapus pertemanan

Tambah sebagai teman Status penambahan teman

Tambah sebagai teman

Status penambahan teman Terima chat, hapus chat

Kirim chat, hapus chat

Terima chat, Status hapus chat

Terima chat, laporan hapus chat Register Status register

Status login

Login Status login

Kirim chat, hapus pertemanan Status hapus pertemanan

Tambah sebagai teman Status penambahan teman Lupa password Status lupa password Login

Status register

Lupa password Laporan lupa password

Gambar 3.3 DFD Level 1

Dari gambar 3.3 dapat dijelaskan bahwasanya software ini memiliki 6 proses pokok untuk melayani pengguna baik sebagai sender (pengirim) maupun receiver (penerima) yaitu: register, login, lupa password, manajemen chat, manajemen teman dan manajemen pengguna.

Pada proses manajemen chat, manajemen teman dan manajemen pengguna,

user (sender atau receiver) diharuskan untuk melakukan proses login terlebih dahulu


(37)

Berikut ini adalah DFD level 2 dari proses manajemen chat: Kirim Chat 4.1 Sender Receiver Terima chat 4.2 Hapus chat 4.3 Tbl_chat Id_sender, id_receiver, crypted chat,

crypted_otp, rsa_key, otp_key, datetime

Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime

Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime

Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime Id chat

Id chat

Status hapus pesan Id chat Status hapus pesan

Status hapus pesan

Gambar 3.4 DFD Manajemen Chat Level 2

Pada gambar 3.4 dapat dijelaskan, setelah melakukan proses login, sender mengirim pesan kepada receiver, pertama sekali proses kirim chat akan mengirim pesan tersebut kedalam database, setelah chat tersimpan proses terima chat akan mengambil pesan tersebut dan mengirimkannya kepada receiver sesuai dengan id_receiver dan id_sender dimana dalam proses kirim chat dan terima chat nantinya pesan akan diurutkan kepada pengirim dan penerima sesuai id_sender dan id_receiver yang tersimpan dalam tbl_chat.

Sender maupun receiver dapat menghapus pesan dengan mengirim id_chat

kepada proses hapus chat, kemudian proses hapus chat akan menghapus chat berdasarkan id_chat yang ada pada tbl_chat, pada proses hapus pesan ini, ketika sender atau receiver yang menghapus pesan dimana sender dan receiver ini dalam satu percakapan, maka pesan yang telah diterima dan dikirim oleh sender maupun


(38)

3.2.4 DFD Manajemen Teman Level 2

Berikut ini adalah DFD level 2 dari proses manajemen pertemanan:

Kirim pesan 5.1 Sender Receiver Hapus teman 5.3 Tbl_chat Tbl_nic_list Id_sender, id_receiver,

crypted chat, crypted_otp Rsa_key, otp_key, datetime

Terima pesan 5.2

Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime

Id_sender, id_receiver, crypted chat, crypted_otp Rsa_key, otp_key, datetime

Id teman Status hapus teman

Id teman Status hapus teman

Id teman Status hapus teman

Gambar 3.5 DFD Manajemen Teman Level 2

Dari gambar 3.5 dapat dijelaskan, dalam manajemen pertemanan user(sender atau receiver) dapat mengirim pesan dan menghapus teman dari pertemanan.

Pada proses mengirim pesan, pesan yang dikirim oleh sender akan diproses oleh proses kirim pesan dan kemudian pesan disimpan kedalam database sesuai dengan id_sender dan id_receiver, kemudian proses terima pesan akan mengambil pesan tersebut dari database sesuai dengan id_sender dan id_receiver yang kemudian mengirimkannya kepada receiver.

Akan tetapi proses terima pesan akan secara langsung memberi pesan yang telah dikirimkan oleh seorang pengirim kepada penerima sesuai id_sender dan id_receiver tanpa melalui proses kirim pesan.

Pada proses hapus pertemanan, pertama sekali user mengirimkan id teman kepada proses hapus pertemanan, kemudian proses hapus teman akan menghapus pertemanan antara user dan seorang teman dengan cara menghapus id_user dan id_teman yang dikirim kedalam database.


(39)

3.2.5 DFD Manajemen Pengguna Level 2

Berikut ini adalah DFD level 2 dari proses manajemen atas pengguna lain:

Tambah pertemanan

6.1

sender receiver

Tbl_nic_list

Id pengguna Id pengguna

Status tambah pertemanan Status tambah pertemanan

Id pengguna Status tambah pertemanan

Gambar 3.6 DFD Manajemen Pengguna Level 2

Dari gambar 3.6 dapat dijelaskan bahwa proses menambah pertemanan pada

NIC Messenger yaitu dengan user mengirim id_pengguna melalui halaman list

pengguna NIC Messenger, kemudian proses tambah pertemanan akan menyimpan id_pengguna dan id_user kedalam database.

3.3 Flowchart

Flowchart adalah penggambaran dari urutan-urutan dan langkah-langkah prosedur

pada sebuah program dalam tampilan grafik (Setiawan, 2011). Flowchart dibutuhkan bagi seorang developer software untuk memudahkan developer tersebut dalam mengembangkan aplikasi, dengan adanya flowchart developer dapat menyampaikan gambaran dasar dari rancangan aplikasi yang dibangun kepada klien atau kepada anggota tim lainnya yang ikut mengembangkan aplikasi secara bersama, dengan demikian kesalahan komunikasi antar anggota tim dapat dihindari.

Adapun fungsi lainnya dari flowchart ini dibuat adalah agar developer atau pengembang aplikasi perorangan dapat melihat kembali tahapan-tahapan yang akan dikerjakan jika suatu saat terjadi kesalahan dalam perancangan aplikasi.

Berikut in adalah bentuk-bentuk flowchart atau diagram alur yang menjelaskan alur proses NIC Messenger dari awal hingga akhir, termasuk proses enkripsi dari plainteks menjadi terenkripsi menggunakan algoritma One Time Pad, dan mengenkripsi kunci One Time Pad yang digunakan dengan algoritma RSA, hingga proses dekripsi kembali menjadi pesan semula.


(40)

3.3.1 Flowchart Sistem

Berikut ini adalah flowchart dari sistem NIC Messenger:

Username Password Fullname Email Phone number Username Password Uji autentikasi login Apa email terdaftar ? Password dikirimkan ke email Masukkan username, password, fullname, email, phone number Masukkan username dan password Data disimpan kedalam database Ya Benar Salah Ya Tidak selesai Menampilkan

- halaman login - menu daftar

- menu lupa password

Mulai

Masukkan email

Email Login ? Lupa

password? Tidak Ya Registrasi? Tidak Ya Halaman Utama Tidak


(41)

Pilih chat dari teman

Ambil pesan dari database - Id_chat, - Chat Berdasarkan - Id_sender - Id_receiver Kirim pesan baru? Masukkan pesan

Simpan pesan ke database - Id_sender - Id_receiver - Chat_terenkripsi Tampilkan daftar teman Pilih teman Id_user, Id_teman Proses hapus teman Tampilkan daftar pengguna Pilih pengguna Tambah teman? Id_user, Id_teman Proses tambah teman Ya Tidak Ya Ya Tidak Ya Tidak Selesai Mulai Menampilkan pilihan - Chat - Nic - List Chat ? Ya Nic ?

Tidak Tidak List ?

Ya Ya Tidak Kirim Pesan? Hapus Teman? Tidak Proses Dekripsi Proses Enkripsi


(42)

Dari gambar 3.8 dapat dijelaskan bahwa, software memulai dengan mengecek apakah pengguna sudah memiliki akun NIC Messenger atau belum, jika sudah maka

user diharuskan untuk melakukan proses login, jika belum maka user harus

melakukan proses registrasi pengguna baru.

Setelah itu user melakukan proses login, jika login diterima maka user akan ditampilkan pada halaman utama dengan tiga fitur yaitu: Chat yang berfungsi untuk menampilkan daftar chat terakhir, NIC yang berfungsi untuk menampilkan daftar teman dan LIST yang berfungsi untuk menampilkan daftar semua pengguna NIC

Messenger. Jika login pengguna tidak berhasil, maka user dapat mengulangi kembali

menginput kombinasi username dan password atau melakukan proses lupa password. Jika user melakukan proses lupa password, user harus menginput email dan jika email tersebut telah terdaftar, maka sistem akan mengirim password pengguna ke email tersebut.

Setelah berhasil login, user dapat memilih untuk mengakses halaman NIC, LIST atau Chat. Jika mengakses halaman NIC, maka sistem akan menampilkan daftar teman. Jika user memilih satu temannya, maka sistem akan menampilkan pilihan untuk teman tersebut yaitu: mengirim pesan dan menghapus pertemanan. Jika memilih untuk mengirim pesan, maka sistem akan mengalihkan user ke halaman Chat dan menjadikan user tersebut sebagai sender. Jika user memilih untuk menghapus pertemanan, maka sistem akan menghapus pertemanan antara user dan teman berdasarkan id_user dan id_teman.

Pada halaman Chat, sender dapat mengirimkan pesan kepada receiver, pertama sekali pesan yang dikirim oleh sender akan dienkripsi terlebih dahulu oleh sistem kemudian menyimpannya kedalam database, setelah itu sistem akan mengambil pesan terenkripsi tersebut dan mendekripsi pesan tersebut menjadi pesan asli kepada receiver. Pada halaman chat user (sender atau receiver) juga dapat menghapus pesan secara keseluruhan. Jika user memilih untuk menghapus pesan, maka sistem akan menghapus pesan dari database sesuai id_user dan id_receiver.

Kemudian pada halaman LIST, sistem akan menampilkan daftar semua pengguna NIC Messenger, jika user ingin menambahkan salah satu pengguna sebagai teman, maka sistem akan menyimpan id_user dan id_pengguna tersebut kedalam database.


(43)

3.3.2 Flowchart Enkripsi Pesan

Berikut ini adalah flowchart dari proses enkripsi pesan:

Mulai

Enkripsi One Time Pad

Enkripsi RSA 512-Bit

Selesai

Gambar 3.9 Flowchart Proses Enkripsi

Berdasarkan flowchart pada gambar 3.9, proses enkripsi melalui dua tahapan yaitu proses enkripsi menggunakan One Time Pad, dimana pada tahapan ini sistem akan mengenkripsi pesan asli, kemudian tahapan kedua adalah enkripsi menggunakan RSA 512-Bit dimana sistem akan menggunakan RSA 512-Bit untuk mengenkripsi kunci One Time Pad yang digunakan untuk mengenkripsi pesan asli. Berikut ini adalah gambar 3.10 yang merupakan flowchart dari enkripsi One Time Pad, gambar 3.11 merupakan flowchart dari enkripsi RSA 512-Bit , dan gambar 3.12 merupakan flowchart dari algoritma Rabin-Miller sebagai pembangkit bilangan prima.


(44)

P =Pesan n = panjang pesan

X = nilai acak sementara Key = list nilai acak T = waktu dlm milidetik

Apakah i <= n

i = 0

X = ((a * X) + c + t ) % M

I += 1 X[i] = X Benar

Salah

P = Pesan Key = kunci

otp K = jumlah karakter ASCII

i = 0

Apakah i <= n

C = P[i] + Key[i] % k

I += 1 C[i] = C Benar

Salah

Crypted_text = C

OTPKey = X Mulai

A

A

Selesai


(45)

E = sebuah bilangan acak antara angka 3 sampai Phi-1

apakah (GCD(e, phi) == 1)

Salah N = P*Q

Phi = (P-1) * (Q-1)

Benar

Gunakan e dan n

C = P[i]^e mod N i = 0

apakah (i <= J)

i += 1 C[i] = C Benar

Salah

Crypted_OTPKey = C

Selesai d ≡ e^-1 (mod

Phi)

B

B Mulai

Uji Bilangan Prima

M = OTPKey J = pjg_pesan


(46)

n = bilangan acak 256 bit

apakah GCD(P-1, Q-1) == 1 Salah

b = 1

apakah ( 2^b % n-1 )

== 0

b = b + 1 Salah

a = bilangan acak m = n-1 / 2^b z = a^m mod n

j = 0 Benar

apakah z == 1 atau z == n-1

N = Prima

z = a^m mod n

apakah z > 0 dan

z == 1 N = Bukan

Prima

j = j + 1

apakah j < b dan z != n-1

z = z^2 mod n

apakah

z == n-1 N = Prima

Z = z^2 mod n

apakah z = b dan

z != n-1 N = Bukan

Prima Benar Salah Benar Salah Salah Benar Benar Salah Benar Salah Input N Selesai Benar Apakah P == Q P = 0

Q = 0

P = N

Q = N Salah Benar Selesai C Salah C Salah


(47)

Dari gambar 3.10 dapat dijelaskan sebuah proses enkripsi pesan, pertama sekali sistem akan menghitung panjang pesan yang dikirim sender, kemudian melakukan proses pengambilan nilai-nilai acak sebagai kunci enkripsi One Time Pad. Lihat rumus Linear Congruential Generator untuk enkripsi One Time Pad pada rumus nomor 3.

Dimana:

X = Bilangan acak sementara yang telah didapat untuk dikalkulasikan kembali. a = Bilangan pengali

c = Bilangan pencacah

t = Waktu dalam milidetik

M = Batas maksimal

Variabel a, c dan m bersifat tetap, variabel ini digunakan untuk menghasilkan nilai acak yang benar-benar acak yang didapat dari algoritma Linear Congruential

Generatorsplus Time (Schneier, 1996).

Misal dilakukan proses LCG + Time untuk 5 buah nilai acak:

 X = 1; a = 105; c = 71; M = 1024; t = milidetik

 Lakukan perulangan sebanyak 5 kali dengan setiap kali perulangan melakukan kalkulasi X[i+1] = ((a * X) + c + t) mod M

 X[0] = ((105 * 441) +71 + 891145) mod 1024 = 441

 X[1] = ((105 * 561) +71 + 891145) mod 1024 = 561

 X[2] = ((105 * 873) +71 + 891145) mod 1024 = 873

 X[3] = ((105 * 865) +71 + 891145) mod 1024 = 865

 X[4] = ((105 * 25) +71 + 891145) mod 1024 = 25

 Jadi nilai acak yang didapat adalah 441, 561, 873, 865, 25

 Nilai acak ini digunakan sebagai kunci enkripsi dan dekripsi pada algoritma One Time Pad

Setelah sistem mendapatkan kunci Algoritma One Time Pad melalui algoritma LCG yang dikombinasikan dengan waktu, selanjutnya sistem akan mengenkripsi pesan yang akan dikirim menggunakan Algoritma One Time Pad.


(48)

Lihat rumus algoritma One Time Pad pada rumus nomor 10. Dimana:

C = Array penyimpan ciphertext

P = Plainteks

K = Kunci untuk enkripsi One Time Pad yang didapat dari algoritma LCG+Time N = Batas banyaknya bilangan ASCII yang digunakan

Misal dilakukan proses enkripsi dengan plainteks “DASAR”:

 Ubah plainteks menjadi bilangan ASCII dan dibagi dalam blok-blok P

 P1 = D => 68

 P2 = A => 65

 P3 = S => 83

 P4 = A => 65

 P5 = R => 82

 Kemudian setiap blok dilakukan enkripsi

 C1 = (68 + 441) mod 255 = 254

 C2 = (65 + 561) mod 255 = 116

 C3 = (83 + 873) mod 255 = 191

 C4 = (65 + 865) mod 255 = 165

 C5 = (82 + 25) mod 255 = 107

 Jadi pesan terenkripsi adalah 254 116 191 165 107

Setelah mendapatkan pesan terenkripsi, sistem mengenkripsi kunci One Time Pad yang didapat sebelumnya menggunakan algoritma RSA.

Lihat rumus algoritma enkripsi RSA pada rumus nomor 1. Dimana:

C = Array penyimpan kunci terenkripsi P = Kunci asli

E = Kunci publik RSA


(49)

Berdasarkan gambar 3.11 pertama sekali sistem akan membangkitkan kunci RSA sebagai berikut:

 Ambil dua bilangan prima sebagai nilai P dan Q

 Misal nilai P = 38183 dan Q = 48017, kemudian dilakukan pengujian bilangan prima dengan Algoritma Rabin-Miller sesuai gambar 3.10

 Kemudian lakukan pengujian apakah kondisi dari GCD(P-1, Q-1) = 1, jika Ya maka lanjutkan, jika Tidak maka lakukan pengambilan dua bilangan prima untuk P dan Q kembali

 Hitung nilai N = P*Q = 1833433111

 nilai ɸ(n) = (P-1)*(Q-1) = 1833346912

 Kemudian sistem akan mencari nilai acak yang memenuhi PBB(e, ɸ(n)) = 1, maka didapat E = 23

 Kemudian sistem akan mencari nilai untuk D.

 Dengan rumus:

D ΞE-1 (mod ɸ(n)) (12)

 D Ξ23-1 (mod 1833346912)

 D = 1036239559

Setelah sistem mendapatkan kunci publik dan rahasia dari Algoritma RSA, dilakukan proses enkripsi pada kunci yang digunakan Algoritma One Time Pad sebelumnya yaitu 441 561 873 865 25 , sebagaimana berikut:

 Ubah kunci One Time Pad yang telah didapat kedalam bentuk blok-blok P

 P1 = 441

 P2 = 561

 P3 = 873

 P4 = 865


(50)

Kemudian enkripsi setiap blok-blok M menggunakan RSA

 C1 = 44123 mod 1833433111 = 1182022997

 C2 = 56123 mod 1833433111 = 1499756931

 C3 = 87323 mod 1833433111 = 1604525808

 C4 = 86523 mod 1833433111 = 496575193

 C5 = 2523 mod 1833433111 = 1788289593

 Maka kunci One Time Pad terenkripsi adalah 1182022997 1499756931 1604525808 496575193 1788289593

 Kemudian simpan pesan terenkripsi, kunci One Time Pad terenkripsi dan kunci RSA kedalam database berdasarkan id_chat

3.3.3 Flowchart Dekripsi Pesan

Berikut ini adalah flowchart dari proses dekripsi pada pesan :

Mulai

Dekripsi RSA 512-Bit

Dekripsi One Time Pad

Selesai


(51)

Berdasarkan gambar 3.13 dapat dijelaskan bahwasanya, proses dekripsi dalam sistem terdapat dua tahapan yaitu, proses dekripsi kunci OTP menggunakan RSA 512 -Bit kemudian dekripsi pesan asli menggunakan One Time Pad.

Berikut ini adalah flowchart dari proses dekripsi kunci OTP yang digunakan dalam mengenkripsi pesan asli menggunakan RSA 512-Bit.

P = C[i]^d mod N i = 0

apakah (i <= J)

i += 1 P[i] = P Benar

Salah

C = Crypted_OPKey J = Panjang_OTPKey

d dan n = RSAKey

OTPKey = P Mulai

Selesai


(52)

Berikut ini adalah flowchart proses dekripsi menggunakan One Time Pad.

i = 0

apakah (i <= N)

P = C[i] - Key[i] % k

i += 1 P[i] = P Benar

Salah

C = crypted_text N = panjang pesan K = jumlah karakter

ASCII Key = OTPKey

P = Pesan asli

Selesai Mulai

Gambar 3.15 Dekripsi One Time Pad

Dari gambar 3.14 dapat dijelaskan langkah-langkah proses dekripsi pesan, pertama sekali sistem akan mengambil pesan terenkripsi, kunci algoritma One Time Pad yang terenkripsi dan kunci algoritma RSA dari database berdasarkan id_chat.

Adapun proses dekripsi pesan adalah sebagai berikut:

 Sistem melakukan perulangan sebanyak panjang karakter pesan

 Setiap perulangan melakukan kalkulasi dekripsi RSA

 Lihat rumus dekripsi algoritma RSA pada rumus nomor 2.


(53)

 C1 = 1182022997

 C2 = 1499756931

 C3 = 1604525808

 C4 = 496575193

 C5 = 1788289593

 Kemudian dekripsi setiap blok-blok P dengan rumus dekripsi RSA

 P1 = 11820229971036239559 mod 1833433111 = 441

 P2 = 14997569311036239559 mod 1833433111 = 561

 P3 = 16045258081036239559 mod 1833433111 = 873

 P4 = 4965751931036239559 mod 1833433111 = 865

 P5 = 17882895931036239559 mod 1833433111 = 25

 Maka kunci One Time Pad yang berhasil didekripsi adalah 441 561 873 865 25

Setelah sistem mendapatkan kunci algoritma One Time Pad, selanjutnya sistem akan mendekripsi pesan terenkripsi menggunakan kunci tersebut sebagaimana dapat dilihat pada gambar 3.15, sebagai berikut:

 Ubah pesan terenkripsi 254 116 191 165 107 kedalam blok-blok M

 M1 = 254

 M2 = 116

 M3 = 191

 M4 = 165

 M5 = 107

 Kemudian sistem melakukan perulangan sebanyak panjang karakter pesan

 Setiap perulangan, sistem melakukan kalkulasi dekripsi.

 Lihat rumus dekripsi algoritma One Time Pad pada rumus nomor 11.

 P1 = (254 – 441) mod 255 = 68

 P2 = (116 – 561) mod 255 = 65

 P3 = (191 – 873) mod 255 = 83

 P4 = (165 – 865) mod 255 = 65


(54)

 Kemudian ubah blok-blok P kedalam bentuk abjad

 P1 = 68 => D

 P2 = 65 => A

 P3 = 83 => S

 P4 = 65 => A

 P5 = 82 => R

Setelah sistem berhasil mendapatkan pesan asli hasil dari proses dekripsi, pesan asli tersebut akan ditampilkan oleh sistem secara otomatis kedalaman halaman chat pada penerima pesan.

3.4 Perancangan Sistem

Pada penelitian ini perancangan sistem terbagi dua yakni menjelaskan tentang kebutuhan perangkat lunak yang digunakan dalam perancangan sistem NIC

Messenger dan perancangan antar muka sistem yang nantinya akan digunakan pada

setiap halaman NIC Messenger.

3.4.1 Kebutuhan Perangkat Lunak

Adapun aplikasi NIC Messenger ini dibangun dengan menggunakan bahasa pemrograman Javascript, Ajax dan HTML untuk aplikasi pada sisi pengguna yang berjalan pada sistem operasi Android, dan menggunakan bahasa pemrograman PHP versi 5.3 pada sisi server, serta menggunakan DBMS MySQL untuk pengelolaan database.

3.4.2 Perancangan Antar Muka Sistem

Perancangan sistem diperlukan agar sistem yang dibangun sesuai dengan yang diharapkan. Dengan adanya rancangan antar muka bertujuan untuk memudahkan pengguna dalam pemakaian sistem. Berikut ini adalah beberapa rancangan low fidelity


(55)

A. Form Registrasi

Berikut ini adalah rancangan dari form registrasi :

Gambar 3.16 Form Registrasi

Pada 3.16 diatas dapat dilihat bahwa terdapat enam input box yang harus diisi dan dua command button yaitu: fullname, username, email, phone number, password, retype password, submit dan reset.

Keterangan:

A. Fullname, nama lengkap user (pengguna) yang akan memakai software

messenger ini.

B. Username, sebagai identitas pengguna yang unik antara satu pengguna

dengan pengguna lainnya pada saat aktifitas login.

C. Email, untuk mengirimkan link aktifasi akun.

D. Phone number, untuk informasi tambahan bagi pengguna kepada pengguna

lainnya.

E. Password, untuk aktifitas login.

F. Retype password, untuk menguji apakah password yang telah diinputkan

telah sesuai dengan yang diinginkan oleh pengguna agar tidak terjadi kekeliruan.

G. Submit, tombol untuk mengirim informasi dari form registrasi kepada

sistem untuk disimpan kedalam database.

H. Reset, tombol untuk mengosongkan semua input box.

A

B

C

D

E

F


(56)

B. Form Login

Berikut ini adalah rancangan dari formlogin :

Gambar 3.17 Form Login

Pada gambar 3.17 dapat dilihat bahwa terdapat dua input box dan dua

command button yaitu: username, password, submit dan reset.

Keterangan:

A. Username, untuk melakukan authentifikasi pengguna kedalam sistem.

B. Password, untuk melakukan authentifikasi pengguna kedalam sistem.

C. Submit, tombol untuk mengirim kombinasi username dan password kepada

sistem untuk diproses.

D. Reset, tombol untuk mengosongkan semua input box.

C. Halaman Utama

Pada halaman utama terdapat empat tombol untuk bernavigasi yaitu: Option, Chat, NIC dan List. Tombol option berfungsi untuk menampilkan opsi untuk logout, tombol chat berfungsi untuk menampilkan daftar percakapan, tombol NIC berfungsi untuk menampilkan daftar teman, dan tombol List berfungsi untuk menampilkan daftar pengguna NIC.

A

B


(57)

Pada gambar 3.18 dapat dilihat bahwa halaman utama menampilkan halaman chat, yaitu halaman yang menampilkan daftar dari teman yang pernah mengirim pesan kepada si pengguna. Pada halaman ini nantinya juga akan menampilkan jumlah pesan yang telah terkirim dan diterima antara pengguna dan teman pengguna.

D. Halaman Daftar Teman

Berikut ini adalah rancangan dari halaman daftar teman:

Gambar 3.19 Halaman Daftar Teman

Keterangan:

A. Option, tombol yang berfungsi untuk menampilkan fitur logout dan

informasi tentang aplikasi.

B. NIC, judul dari halaman yang sedang aktif saat ini.

C. Kolom yang digunakan untuk menampung seluruh daftar teman.

D. NIC, tombol dari menu NIC yang berfungsi untuk menampilkan seluruh teman.

E. Chat, tombol dari menu Chat yang berfungsi untuk menampilkan seluruh

percakapan pada teman.

F. List, tombol dari menu List yang berfungsi untuk menampilkan seluruh

pengguna NIC Messenger.

A B

C


(58)

Pada gambar 3.19 dapat dilihat bahwa halaman NIC hanya menampilkan daftar dari pengguna yang telah terhubung dengan si pengguna. Pengguna hanya perlu memilih salah satu teman dari halaman NIC untuk mengirimkan pesan, dan juga dapat menghapus teman yang telah dipilih dari pertemanan. Jika koneksi antara pengguna dan teman tersebut telah terhapus dari database, maka semua pesan antara mereka berdua juga telah terhapus dari database.

E. Halaman Hapus Teman

Berikut ini adalah rancangan dari halaman hapus pertemanan:

Gambar 3.20 Halaman Hapus Teman

Keterangan:

A. Pesan peringatan yang akan ditampilkan kepada pengguna ketika pengguna ingin menghapus pertemanan dari seseorang.

B. Yes, tombol konfirmasi menyetujui sistem untuk menghapus pertemanan dari seorang teman.

C. No, tombol pembatalan untuk menghapus pertemanan dari seorang teman, dan kembali ke halaman sebelumnya.

A


(59)

F. Halaman Daftar Pengguna

Berikut ini adalah rancangan dari halaman daftar pengguna

Gambar 3.21 Halaman Daftar Pengguna

Keterangan:

A. Option, tombol yang berfungsi untuk menampilkan fitur logout dan

informasi tentang aplikasi.

B. NIC, judul dari halaman yang sedang aktif saat ini.

C. Kolom yang digunakan untuk menampung seluruh daftar teman.

D. NIC, tombol dari menu NIC yang berfungsi untuk menampilkan seluruh teman.

E. Chat, tombol dari menu Chat yang berfungsi untuk menampilkan seluruh

percakapan pada teman.

F. List, tombol dari menu List yang berfungsi untuk menampilkan seluruh

pengguna NIC Messenger.

Pada gambar 3.21 dapat dilihat bahwa halaman list berfungsi untuk menampilkan seluruh pengguna NIC Messenger, fitur ini berguna untuk menghubungkan antara satu user dengan user lainnya yang belum berteman.

A B

C


(60)

G. Form Tambah Teman

Berikut ini adalah rancangan dari halaman tambah teman:

Gambar 3.22 Halaman Tambah Teman

Keterangan:

A. Pesan peringatan yang akan ditampilkan kepada pengguna ketika pengguna ingin menghapus pertemanan dari seseorang.

B. Yes, tombol konfirmasi menyetujui sistem untuk menghapus pertemanan dari seorang teman.

C. No, tombol pembatalan untuk menghapus pertemanan dari seorang teman, dan kembali ke halaman sebelumnya.

Dari gambar 3.22 dapat dilihat program menampilkan kotak peringatan kecil untuk meminta persetujuan pengguna. Untuk menambahkan teman, pengguna harus memilih salah satu pengguna pada halaman daftar pengguna, kemudian akan muncul pilihan untuk menambahkan sebagai teman. Jika user memilih Yes pada kotak peringatan kecil tersebut maka secara otomatis sistem akan mengambil id_user dan id_teman baru kemudian melakukan query penambahan teman kedalam database.

A


(1)

var id_user = localStorage.getItem("id_user"); var receiver =

$(location).attr('hash').replace('#','');

var array = receiver.split('+'); var id_receiver = array[0];

$.getJSON("http://nicmessenger.com/index.php?module=chat&action=updat e&id_sender="+id_user+"&id_receiver="+id_receiver+"&lastChatId="+last ChatId+"&callback=?", function(data){

$.each(data.Chats, function(i,hasil) {

//proses dekripsi hasil.chat_text disini var temp = (hasil.rsa_otp).split(","); var decrypted_OTPKey =

decrypt(hasil.otp_key, temp[0], temp[1]);

var pesan = deciph(hasil.chat_text, decrypted_OTPKey, 255);

var plain_text = des2ascii(pesan); var id_chat = hasil.id_chat;

//get current id chat, and update lastChatId = id_chat;

if(id_user == hasil.id_sender) {

$("#chat").append( "<div id='chat_box'>"+

"<div class='clean-grey'>"+ "<span style='font-size: 10px; color:grey; border-bottom: 1px solid'>"+hasil.fullname+"</span><br>"+ "<span style='font-size: 19px; color:black;'>"+plain_text+"</span><br>"+

"<span style='font-size: 10px; color:grey; align:right'>"+hasil.datetime+"</span><br>"+

"</div>"+ "</div>" );

} else {

$("#chat").append( "<div id='chat_box'>"+

"<div class='clean-blue'>"+ "<span style='font-size: 10px; color:grey; border-bottom: 1px solid'>"+hasil.fullname+"</span><br>"+ "<span style='font-size: 19px; color:black;'>"+plain_text+"</span><br>"+

"<span style='font-size: 10px; color:grey; align:right'>"+hasil.datetime+"</span><br>"+

"</div>"+ "</div>" );

}

$("html, body").animate({ scrollTop: $("#chat").height() }, "slow");

}); });

setTimeout(realtimeUpdate,1500); }


(2)

$("#sendChat").live('click', function() { $.mobile.showPageLoadingMsg();

var id_user = localStorage.getItem("id_user"); var id_sender = id_user;

var receiver =

$(location).attr('hash').replace('#','');

var array = receiver.split('+'); var id_receiver = array[0];

var string = $("#textarea1").val();

//proses enkripsi chat disini //ambil kunci OTP

var OTP_Key = getOTPKey(string.length).toString();

console.log("OTP Key: "+OTP_Key); //enkripsi text dgn OTP

var cipher_text = enciph(string, OTP_Key, 255).toString();

//ambil nilai P dan Q var p_q = pq();

var p = p_q[0]; var q = p_q[1];

console.log("P Q: "+p+" "+q); //ambil nilai N

var n = bi_multiply(p,q); console.log("N: "+n); //ambil nilai phi var phi =

bi_multiply(bi_subtract(p,1),bi_subtract(q,1)); console.log("Phi: "+phi);

//ambil nilai E

var e = compute_e(phi); console.log("E: "+e);

//ambil nilai D

var d = compute_d(e, phi); console.log("D: "+d);

//enkripsi OTP key yang telah didapat sebelumnya var crypted_OTPKey = encrypt(OTP_Key, e,

n).toString();

//simpan kunci dekripsi var kunci = [d, n];

var rsa_otp = kunci.toString();

$.post('http://nicmessenger.com/index.php?module=chat&action=submit', {

id_sender: id_sender, id_receiver: id_receiver, chat: cipher_text,

crypted_OTPKey: crypted_OTPKey, rsa_otp: rsa_otp

},


(3)

$("#textarea1").val("");

$("#textarea1").css("height", "50px"); $("#textarea1").focus();

$("html, body").animate({ scrollTop: $("#chat").height() }, "slow");

});

$.mobile.hidePageLoadingMsg(); });

});

$(window).hashchange(function(){ $("#chat").empty();

var id_user = localStorage.getItem("id_user"); if (id_user == null || id_user == "")

{

<!-- cookie has expired -->

$.mobile.changePage( "login.html", { transition: "slidefade" } );

}

var receiver =

$(location).attr('hash').replace('#','');

var array = receiver.split('+'); var id_receiver = array[0];

$.getJSON("http://nicmessenger.com/index.php?module=chat&action=view& id_sender="+id_user+"&id_receiver="+id_receiver+"&callback=?",

function(data){

$.each(data.Chats, function(i,hasil) {

//proses dekripsi hasil.chat_text disini var temp = (hasil.rsa_otp).split(",");

var decrypted_OTPKey = decrypt(hasil.otp_key, temp[0], temp[1]);

var pesan = deciph(hasil.chat_text, decrypted_OTPKey, 255);

var plain_text = des2ascii(pesan);

if(id_user == hasil.id_sender) {

$("#chat").append( "<div id='chat_box'>"+

"<div class='clean-grey'>"+ "<span style='font-size: 10px;

color:grey; border-bottom: 1px solid'>"+hasil.fullname+"</span><br>"+ "<span style='font-size: 19px;

color:black;'>"+plain_text+"</span><br>"+

"<span style='font-size: 10px; color:grey; align:right'>"+hasil.datetime+"</span><br>"+

"</div>"+ "</div>" );

} else {

$("#chat").append( "<div id='chat_box'>"+


(4)

"<span style='font-size: 10px;

color:grey; border-bottom: 1px solid'>"+hasil.fullname+"</span><br>"+ "<span style='font-size: 19px;

color:black;'>"+plain_text+"</span><br>"+

"<span style='font-size: 10px; color:grey; align:right'>"+hasil.datetime+"</span><br>"+

"</div>"+ "</div>" );

} }); }); }); </script> </head>

<body>

<!-- Home -->

<div data-role="page" id="page1">

<div theme="b" role="header" data-position="fixed">

<a data-role="button" href="#" data-icon="arrow-l" data-iconpos="notext" class="ui-btn-left" data-rel="back">

Back </a>

<h3 id="nama_teman"> </h3>

<a role="button" href="#sure"

transition="pop" iconpos="notext" icon="delete" data-rel="dialog" class="ui-btn-right">

Delete Chat </a>

</div>

<div data-role="content">

<div data-role="fieldcontain"> <div id="chat"></div> </div>

</div>

<div theme="c" role="footer" data-position="fixed">

<div data-role="controlgroup" id="sendbox"> <table style='width:100%' id="sendtable"> <tbody>

<tr> <td>

<textarea name="" id="textarea1" placeholder="" data-mini="true"></textarea>

</td>

<td style='width:3em; padding-left:4px; padding-right:4px; '>

<input type="submit" data-inline="true" value="Send" data-mini="true" id="sendChat"/>

</td> </tr> </tbody> </table> </div> </div>

</div>

<div data-role="dialog" id="sure" data-title="Are you sure?"> <div data-role="content">


(5)

<script>

$(function(){

$("#removeChat").live('click', function() { var id_user =

localStorage.getItem("id_user");

var receiver = $(location).attr('hash').replace('#','');

var array = receiver.split('+'); var id_receiver = array[0];

$.getJSON("http://nicmessenger.com/index.php?module=chat&action=remov e&id_sender=1&id_receiver=32&callback=?", function(data){

$.each(data.nic, function(i,hasil) {

if(hasil.status == "berhasil") {

$.mobile.changePage( "main.html", { transition: "slidefade" } );

} else {

navigator.notification.alert("Something error :("); }

}); }); }); }); </script>

<h3 class="sure-1">Are you sure to delete those chats?</h3>

<a href="#" id="removeChat" role="button" data-theme="b" data-rel="back">Yes</a>

<a href="#" role="button" theme="c" data-rel="back">No</a>

</div> </div>

</body> </html>

2. Chat/submit.php <?php

header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); header('Content-type: application/json');

defined("NIC") or die("Restricted Access");

$id_sender = $_POST["id_sender"]; $id_receiver = $_POST["id_receiver"]; $chat = $_POST["chat"];

$crypted_OTPKey = $_POST["crypted_OTPKey"]; $rsa_otp = $_POST["rsa_otp"];

$datetime = date("Y-m-d H:i:s");

$query_submit_chat = mysql_query("

INSERT INTO tbl_chat

(id_sender, id_receiver, chat_text, datetime, status_read, otp_key, rsa_otp)


(6)

('$id_sender', '$id_receiver', '$chat', '$datetime', 's', '$crypted_OTPKey', '$rsa_otp')

") or die (mysql_error($mysql_connect));

if(!$query_submit_chat) {

echo "Gagal submit pesan"; }

else {

$id_chat = mysql_insert_id();

$sql = mysql_query(" SELECT * FROM tbl_chat

WHERE tbl_chat.id_chat = '$id_chat' ") or die (mysql_error($mysql_connect)); $simpan_array = array();

while ($row = mysql_fetch_array($sql)) {

$id_sender = $row["id_sender"]; $id_receiver = $row["id_receiver"]; $chat_text = $row["chat_text"]; $datetime = $row["datetime"]; $crypted_OTPKey = $row["otp_key"]; $rsa_otp = $row["rsa_otp"];

$id_chat = $row["id_chat"];

$sq_sender = mysql_query("select fullname from tbl_user where id_user = '$id_sender' ");

$sender = mysql_fetch_array($sq_sender);

$sq_receiver = mysql_query("select fullname from tbl_user where id_user = '$id_receiver' ");

$receiver = mysql_fetch_array($sq_receiver); $chat = array();

$chat["id_chat"] = $id_chat; $chat["id_sender"] = $id_sender; $chat["fullname"] = $sender[0]; $chat["chat_text"] = $chat_text; $chat["datetime"] = $datetime; $chat["otp_key"] = $crypted_OTPKey; $chat["rsa_otp"] = $rsa_otp;

array_push($simpan_array, $chat); }

echo json_encode(array("Chats" => $simpan_array));

} ?>