implementasi konsep hybrid algoritma rsa

117
Universitas Sumatera Utara Repositori Institusi USU http://repositori.usu.ac.id Departemen Ilmu Komputer Skripsi Sarjana 2018 Implementasi Konsep Hybrid Algoritma RSA - Naive dan Algoritma RC4 dalam Pengamanan File JPG pada Aplikasi Instant Messaging Tumanggor, Ronaldi http://repositori.usu.ac.id/handle/123456789/4242 Downloaded from Repositori Institusi USU, Univsersitas Sumatera Utara

Transcript of implementasi konsep hybrid algoritma rsa

Page 1: implementasi konsep hybrid algoritma rsa

Universitas Sumatera Utara

Repositori Institusi USU http://repositori.usu.ac.id

Departemen Ilmu Komputer Skripsi Sarjana

2018

Implementasi Konsep Hybrid Algoritma

RSA - Naive dan Algoritma RC4 dalam

Pengamanan File JPG pada Aplikasi

Instant Messaging

Tumanggor, Ronaldi

http://repositori.usu.ac.id/handle/123456789/4242

Downloaded from Repositori Institusi USU, Univsersitas Sumatera Utara

Page 2: implementasi konsep hybrid algoritma rsa

IMPLEMENTASI KONSEP HYBRID ALGORITMA RSA - NAÏVE DAN

ALGORITMA RC4+ DALAM PENGAMANAN FILE JPG PADA

APLIKASI INSTANT MESSAGING

SKRIPSI

RONALDI TUMANGGOR

131401011

PROGRAM STUDI S-1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2018

Universitas Sumatera Utara

Page 3: implementasi konsep hybrid algoritma rsa

IMPLEMENTASI KONSEP HYBRID ALGORITMA RSA - NAÏVE DAN

ALGORITMA RC4+ DALAM PENGAMANAN FILE JPG PADA

APLIKASI INSTANT MESSAGING

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah

Sarjana Ilmu Komputer

RONALDI TUMANGGOR

131401011

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2018

Universitas Sumatera Utara

Page 4: implementasi konsep hybrid algoritma rsa

ii

PERSETUJUAN

Judul : IMPLEMENTASI KONSEP HYBRID ALGORITMA

RSA – Naïve DAN ALGORITMA RC4+ DALAM

PENGAMANAN FILE JPG PADA APLIKASI

INSTANT MESSAGING

Kategori : SKRIPSI

Nama : RONALDI TUMANGGOR

Nomor Induk Mahasiswa : 131401011

Program Studi : SARJANA (S1) ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Dosen Pembimbing II Dosen Pembimbing I

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

NIP. 197812212014042001 NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer

Ketua,

Dr. Poltak Sihombing, M.Kom

NIP. 19620317 19910310 01

Universitas Sumatera Utara

Page 5: implementasi konsep hybrid algoritma rsa

iii

PERNYATAAN

IMPLEMENTASI KONSEP HYBRID ALGORITMA RSA - Naïve DAN

ALGORITMA RC4+ DALAM PENGAMANAN FILE JPG PADA

APLIKASI INSTANT MESSAGING

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa

kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Januari 2018

Ronaldi Tumanggor

131401011

Universitas Sumatera Utara

Page 6: implementasi konsep hybrid algoritma rsa

iv

PENGHARGAAN

Puji dan syukur penulis ucapkan kehadirat Tuhan Yang Maha Esa, karena rahmat dan

penyertaan-Nya, penulis dapat penyusunan skripsi ini, sebagai syarat untuk

memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas

Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Banyak bantuan berupa uluran tangan, baik budi, buah pikiran, motivasi, dan

kerjasama yang telah penulis terima selama menempuh studi sampai dengan

penyelesaian studi (skripsi) ini terutama kepada ayahanda Jausman Tumanggor dan

ibunda Kesteria Situmorang yang selalu mendukung dan sabar membimbing saya. Oleh

karena itu, penulis ingin menyampaikan ucapan terimakasih kepada pihak – pihak yang

telah membantu.

Ucapan terima kasih penulis sampaikan kepada :

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

Utara.

2. Prof. Dr. Opim Salim Sitompul M.Sc selaku Dekan Fakultas Ilmu Komputer

dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu

Komputer Fakultas Ilmu komputer dan Teknologi Informasi Universitas

Sumatera Utara.

4. Ibu Dr. Maya Silvi Lydia, B.Sc, M.Sc selaku dosen Pembimbing Akademik

yang telah memberikan nasihat, arahan dan motivasi kepada penulis selama

menempuh perkuliahan.

5. Bapak M.Andri Budiman, S.T., M.Comp.Sc., M.E.M selaku dosen pembimbing

I yang telah memberikan bimbingan, kritik, motivasi, dan saran kepada penulis

dalam menyelesaikan skripsi ini.

6. Ibu Amalia., S.T., MT selaku dosen pembimbing II yang telah memberikan

bimbingan, kritik, motivasi, dan saran kepada penulis dalam menyelesaikan

skripsi ini.

Universitas Sumatera Utara

Page 7: implementasi konsep hybrid algoritma rsa

v

7. Seluruh tenaga pengajar dan pegawai di Fakultas Ilmu Komputer dan

Teknologi Informasi USU yang telah membantu penulis dalam proses

pembuatan skripsi.

8. Keluarga Besar Op. Yusri Tumanggor, terkhusus Sr. Damiana Tumanggor,

KSSY, Bapak uda P. Asterius Tumanggor yang telah banyak sekali membantu

baik melalui doa, material maupun moral dan menjadi motivator terbesar selama

perjalanan kuliah penulis.

9. Adek tercinta Hasiani Thresia Tumanggor yang selalu memberikan dukungan

kepada penulis.

10. Sahabat – sahabat pejuang wisuda Dian Dwi Prayoga, Rahmat Fajar, M. Reza

Vahlevi, Fauza Badratul Chairiah yang banyak membantu, memberikan

semangat dan inspirasi, serta dorongan kepada penulis selama mengerjakan

skripsi.

11. Teman - teman penghuni terakhir IKLC Teguh Subiyantoro, Bintang Thunder,

Ricky Rinaldi, Audhika Gaindata yang telah memberikan semangat kepada

penulis dalam pengerjaan skripsi.

12. Teman – teman Hendra Suranta Ginting, Debby F. Nainggolan, Billy Halim

Bonar Situmorang, Hotmoko Tumanggor, Jisandi Nahampun, Lambok

Situmorang, Samsul Bahri Pasaribu, Esrin Pasaribu, Rudy Chandra, Fahry

Mayprana, Dendy Herlambang, Afri, Abdul Latif W. Nasution, Mangasa

Manullang, S.Kom yang telah berbagi kebersamaan, saling berbagi ilmu,

semangat, serta dorongan kepada penulis.

13. Rekan – rekan tim ruangmahasiswa.com yang selalu memberikan semangat dan

dukungan kepada penulis.

14. Rekan – rekan di Ilmu Komputer Laboratory Center (IKLC) USU yang telah

berbagi ilmu, inspirasi dan pengalaman kepada penulis.

15. Rekan – rekan Mahasiswa Parlilitan yang telah banyak memberikan semangat

dan dukungan kepada penulis dalam pengerjaan skripsi ini.

16. Rekan - rekan seluruh keluarga besar Kom B Ilmu Komputer Universitas

Sumatera Utara yang telah banyak memberi motivasi kepada penulis dalam

pengerjaan skripsi ini.

Universitas Sumatera Utara

Page 8: implementasi konsep hybrid algoritma rsa

vi

17. Rekan - rekan seperjuanan Mahasiswa Ilmu Komputer Universitas Sumatera

Utara stambuk 2013 yang telah banyak memberi motivasi kepada penulis dalam

pengerjaan skripsi ini.

18. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat

penulis ucapkan satu per satu yang telah membantu menyelesaikan skripsi

ini.

Semoga Tuhan Yang Maha Esa melimpahkan berkah kepada semua pihak yang

telah memberikan bantuan, semangat, perhatian, serta dukungan kepada penulis dalam

menyelesaikan skripsi ini. Semoga skripsi ini bermanfaat bagi pribadi, keluarga,

masyarakat, organisasi dan negara.

Medan, Januari 2018

Penulis

Universitas Sumatera Utara

Page 9: implementasi konsep hybrid algoritma rsa

vii

ABSTRAK

Semakin mudahnya menggunakan internet menjadikan semua pertukaran informasi jadi

terpusat di internet. Namun terdapat banyak ancaman informasi yang tersimpan di

internet seperti penyadapan dan pencurian. Perlunya mengamankan pesan termasuk

pesan gambar yang dikirim melalui aplikasi Instant Messaging. Pada penelitian ini,

solusi pengamanan yang dilakukan adalah menerapkan algoritma kriptografi dengan

konsep hybrid menggunakan algoritma RC4+ dan algoritma RSA - Naïve. Algoritma

RC4+ termasuk dalam algoritma simetris dimana kekuatannya terletak pada banyaknya

proses pengacakan kunci, sedangkan algoritma RSA – Naïve adalah algoritma asimetris

dan letak kekuatannya berada pada panjang kunci pada bit yang dihasilkan sehingga

semakin panjang bit maka semakin sukar untuk dipecahkan karena sulitnya

memfaktorkan dua bilangan yang sangat besar tersebut. Dalam prosesnya, citra JPG

dikonversi ke string Base64 terlebih dahulu, kemudian dienkripsi menggunakan RC4+

dan kunci RC4+ yang digunakan untuk mengenkripsi citra akan dienkripsi oleh

algoritma RSA – Naïve untuk menghasilkan cipherkey. Hasil enkripsi dikirim melalui

internet dan disimpan di database. Data yang tersimpan di database kemudian didekripsi

kembali agar pesan bisa diterima kembali di aplikasi penerima dengan baik.

Implementasi dilakukan dengan menggunakan bahasa pemrograman Java. Hasil dari

penelitian menunjukkan resolusi citra berbanding lurus secara linear terhadap waktu

proses proses enkripsi dan dekripsi pesan.

Kata kunci: Hybrid Cryptosystem, Instant Messaging, Kriptografi, JPG, RC4+, RSA –

Naïve

Universitas Sumatera Utara

Page 10: implementasi konsep hybrid algoritma rsa

viii

AN IMPLEMENTATION OF THE HYBRID CONCEPT RSA – NAÏVE

ALGORITHM AND RC4+ ALGORITHM TO SECURING JPG FILE ON INSTANT

MESSAGING APPLICATION

ABSTRACT

Easines to use internet make all the information exchange centered on the internet.

However, there are many threats of information stored on the internet such as tapping

and theft. The need to secure messages including sent messages via the Instant

Messaging app. In this research, the security solution is implements cryptographic

algorithms with hybrid concept using RC4+ algorithm and RSA - Naïve algorithm. The

RC4+ algorithm is a symmetric algorithm where its strength lies in the number of key

randomisation processes, while the RSA-Naïve algorithm is an asymmetric algorithm

and its strength lies in the key length of the resulting bit so that the bit length becomes

more difficult to solve because of the difficulty of factoring the two very large numbers.

In the process, the JPG image converted to the Base64 string first, then encrypted using

RC4+, and the RC4+ key’s used to encrypt the image will be encrypted by the RSA-

Naïve algorithm to produce the cipherkey. The encryption results are sent over the

internet and stored in the database. The data stored in the database is then decrypted so

that the message can be received back in the recipient application properly. The

implementation using Java programming language. The results of the research show

that the image resolution is linearly straight to the process time for the encryption and

decryption processes of the message.

Keywords: Cryptography, Hybrid Cryptosystem, Instant Messaging, JPG, RC4+, RSA

- Naïve

Universitas Sumatera Utara

Page 11: implementasi konsep hybrid algoritma rsa

ix

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi ix

Daftar Tabel xi

Daftar Gambar xii

Daftar Lampiran xiv

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Tujuan Penelitian 3

1.4 Batasan Penelitian 4

1.5 Manfaat Penelitian 4

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Tinjauan Pustaka

2.1 Kriptografi 7

2.1.1 Definisi kriptografi 7

2.1.2 Tujuan kriptografi 8

2.1.3 Macam – macam algoritma kriptografi 9

2.2 Hybrid Cryptosystem 12

2.3 Algoritma Lehmann 12

2.4 Algorima RSA Naïve 13

2.4.1 Proses enkripsi pada RSA Naïve 15

2.4.2 Prose dekripsi pada RSA Naïve 16

2.5 Algoritma RC4+ 17

2.5.1 Key Scheduling Algorithm (KSA+) 17

2.5.2 Pseudo Random Generation Algorithm (PRGA+) 18

2.6 Citra Digital 21

2.6.1 Pengertian Citra Digital 21

2.6.2 Format File Citra Digital 22

2.6.3 Enkripsi pada Citra Digital 22

2.7 Penelitian yang Relevan 24

Universitas Sumatera Utara

Page 12: implementasi konsep hybrid algoritma rsa

x

Bab 3 Analisis dan Perancangan

3.1 Analisis Sistem 26

3.1.1 Analisis Masalah 26

3.1.2 Analisis Kebutuhan 27

3.1.3 Diagram Umum 29

3.1.4 Pemodelan sistem 20

3.1.5 Flowchart 34

3.2 Perancangan Antarmuka (Interface) 38

Bab 4 Implementasi dan Pengujian

4.1 Implementasi 44

4.1.1 Halaman Awal 44

4.1.2 Halaman Timeline 45

4.1.3 Halaman Detail 45

4.1.4 Halaman Bantuan 46

4.1.5 Halaman About 47

4.2 Pengujian 48

4.2.1 Pengujian Proses Pembangkitan Kunci 48

4.2.2 Pengujian Hasil Enkripsi Algoritma RC4+ dan RSA Naïve 50

4.2.3 Pengujian Hasil Dekripsi Algoritma RC4+ dan RSA Naïve 66

4.2.4 Waktu Proses 68

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 75

5.2 Saran 76

Daftar Pustaka 77

Universitas Sumatera Utara

Page 13: implementasi konsep hybrid algoritma rsa

xi

DAFTAR TABEL

Nomor

Tabel Nama Tabel Halaman

4.1 Larik state awal 55

4.2 Kode ASCII 55

4.3 Hasil Akhir Tahap Key Scheduling Algorithm (KSA) 59

4.4 Waktu Proses Enkripsi – Dekripsi Citra 69

4.5 Waktu Proses Enkripsi – Dekripsi pada Kunci 71

4.6 Pengaruh Resolusi Citra terhadap Panjang Pesan 72

Universitas Sumatera Utara

Page 14: implementasi konsep hybrid algoritma rsa

xii

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 Proses enkripsi dan dekripsi dengan menggunakan kunci 8

2.2 Skema Algoritma Simetris 10

2.3 Algoritma Kunci Asimetri 11

2.4 Inisialisasi KSA 18

2.5 Pengacakan dasar di dalam KSA+ 18

2.6 Pseudo Random Generation Algorithm (PRGA+) 18

2.7 Ilustrasi Citra RGB 23

2.8 Diagram enkripsi-dekripsi citra digital 24

3.1 Diagram Ishikawa 27

3.2 Diagram umum 29

3.3 Diagram Use Case 30

3.4 Diagram aktivitas pada tahap enkripsi 31

3.5 Diagram aktivitas untuk proses dekripsi 32

3.6 Diagram sequence untuk proses enkripsi 33

3.7 Diagram sequence untuk proses dekripsi 34

3.8 Flowchart sistem 35

3.9 Flowchart Algoritma RC4+ Cipher 36

3.10 Flowchart enkripsi algoritma RSA Naïve 37

3.11 Flowchart dekripsi algoritma RSA Naïve 38

3.12 Perancangan interface halaman awal (splash screen) 39

Universitas Sumatera Utara

Page 15: implementasi konsep hybrid algoritma rsa

xiii

3.13 Perancangan interface Halaman Beranda (Timeline) 40

3.14 Perancangan interface halaman info detail tentang

gambar 41

3.15 Perancangan kotak dialog about 42

3.16 Perancangan interface halaman bantuan 43

4.1 Tampilan Halaman Awal Sistem 44

4.2 Tampilan Halaman Timeline 45

4.3 Tampilan Halaman Detail 46

4.4 Tampilan Halaman Bantuan 47

4.5 Tampilan Halaman About 47

4.6 Proses Pembangkitan Kunci RC4+ 48

4.7 Pengujian Pembangkitan Kunci RSA Naïve 49

4.8 File citra .jpg berukuran 20 x 20px 50 4.9 Tampilan Timeline Sistem 51

4.10 Memilih gambar dari galeri 51

4.11 Data hasil enkripsi disimpan dalam Firebase 54

4.12 Gambar setelah proses dekripsi dari database

ditampilkan di halaman timeline 67

4.13 Detail proses enkripsi – dekripsi dan ciphertext

ditampilkan di halaman detail 68

4.14 Pengaruh resolusi citra terhadap waktu proses pada tahap

enkripsi dan dekripsi 70

4.15 Grafik waktu proses pada tahap enkripsi dan dekripsi

kunci dengan algoritma RSA Naïve 72

4.16 Pengaruh Resolusi Citra terhadap Panjang Pesan 73

Universitas Sumatera Utara

Page 16: implementasi konsep hybrid algoritma rsa

xiv

DAFTAR LAMPIRAN

Nama Lampiran Halaman

Listing Program A-1

Curriculum Vitae B-1

Universitas Sumatera Utara

Page 17: implementasi konsep hybrid algoritma rsa

BAB 1

PENDAHULUAN

1.1.Latar Belakang

Kemajuan teknologi memang sangat berdampak besar bagi manusia, salah satu

contohnya adalah pada bidang komunikasi. Di zaman sekarang ini, orang – orang

mengandalkan jaringan internet sebagai media untuk komunikasi. Melalui jaringan

internet, komunikasi antar manusia memang semakin cepat dan murah.

Seiring dengan kemajuan teknologi informasi maka bentuk

komunikasi juga beralih ke arah digital dengan memanfaatkan aplikasi yang ada

diantaranya adalah Instant Messaging (IM). Instant messaging adalah aplikasi yang

membantu seseorang untuk berkomunikasi secara real-time dengan pengguna lain

melalui media jaringan yang ada

Jika beberapa tahun yang lalu pengguna saling bertukar pesan melalui layanan

SMS, sekarang ini banyak pengguna perangkat mobile yang tertarik menggunakan

layanan instant messaging untuk saling berkomunikasi karena kelebihan yang

dimilikinya (Dwi Nugroho & Munir, 2015). Alasannya adalah karena instant messaging

tidak hanya mendukung pengiriman pesan berupa teks, tetap telah memiliki fitur untuk

mengirim pesan dalam bentuk gambar, suara, ataupun video.

Pada saat ini layanan Short Message Service (SMS) sudah mulai ditinggalkan

orang – orang. Banyaknya penggunaan layanan instant messaging kini sudah

mengalahkan penggunaan layanan SMS. Menurut data perusahaan riset Informa, pada

tahun 2012 jumlah pesan yang dikirimkan melalui layanan instant messaging mencapai

19 miliar melampaui jumlah pesan yang dikirimkan melalui SMS yang berjumlah 17,6

miliar (Mayer, 2013).

Maraknya penerapan Instant Messaging pada masyarakat harus didukung

dengan sistem keamanan yang baik karena banyak sekali kasus yang menunjukkan

Universitas Sumatera Utara

Page 18: implementasi konsep hybrid algoritma rsa

2

risiko keamanan. Pesan – pesan instant dalam aplikasi instant messaging sangat rawan

terhadap penyadapan (Dwi Nugroho & Munir, 2015). Sistem yang lemah akan

memudahkan penyerang untuk menyebarkan pesan palsu atau worm (Wanda, Selo, &

Hantono, 2014)

Penyadapan pada instant messaging tidak hanya dapat mengetahui isi pesan

teks, melainkan juga dapat mengetahui gambar, suara dan video yang dikirim. Hal ini

dikarenakan lemahnya sistem keamanan yang diterapkan pada jaringan internet

pengiriman pesan tersebut. Padahal pasitnya banyak isi dari pesan tersebut yang bersifat

privasi.

Salah satu cara yang dapat digunakan untuk mengamankan pesan yang dikirim

melalui aplikasi instant messaging adalah dengan memanfaatkan peran kriptografi

untuk mengenkripsi pesan sebelum pesan tersebut dikirim (Dwi Nugroho & Munir,

2015). Dengan dienkripsinya pesan yang akan dikirim, maka pesan tersebut tidak akan

mudah diketahui oleh pihak yang tidak dinginkan.

Pada kasus ini, penulis akan mencoba menerapkan kriptografi untuk

mengamankan pesan gambar dengan ekstensi JPG pada aplikasi Instant Messaging.

Banyak algoritma dan metode yang dapat digunakan untuk proses kriptografi maka

penulis menggunakan algoritma RSA Naïve dan algoritma RC4+.

Algoritma RSA adalah algoritma kriptografi modern yang paling dikenal

didalam sejarah kriptiografi modern. RSA digunakan karena merupakan algoritma

kriptografi asimetris yang paling sering digunakan pada saat ini dikarenakan

kehandalannya. Panjang kunci dalam bit dapat diatur.

Dengan semakin panjang bit maka semakin susah untuk dipecahkan karena

sulitnya memfaktorkan dua bilangan yang sangat besar tersebut, tetapi juga semakin

lama pada proses dekripsinya.

Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang

besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci

pribadi. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum

ditemukan algoritma yang efisien, maka selama itu pula keamanan algoritma RSA tetap

terjamin. Karena algoritma RSA Naïve termasuk ke dalam algoritma kriptografi

Universitas Sumatera Utara

Page 19: implementasi konsep hybrid algoritma rsa

3

modern, maka algoritma ini termasuk algoritma yang aman tetapi semakin lama pada

proses dekripsinya.

Algoritma RC4+ merupakan salah satu algoritma stream cipher yang merupakan

algoritma simetri. RC4+ merupakan pengembangan dari RC4. Algoritma dalam

kategori stream cipher dapat dibuat dengan sangat cepat. Dengan menggunakan

algoritma RC4+, pesan akan diubah ke pseudo random streambit dengan

mengkombinasikan bit-wise XOR.

Hybrid crypto adalah metode untuk mengunci plainteks dengan algoritma

simetris dan menggunakan algoritma asimetris untuk mengunci algoritma simetris.

Kedua algoritma tersebut dikombinasikan yang disebut hybrid crypto. Dengan

menggunakan hybrid crypto, maka proses enkripsi plainteks menggunakan algoritma

RC4+ sementara algoritma RSA-Naïve digunakan untuk enkripsi kunci algoritma RC4+

Berdasarkan penjelasan di atas, penulis akan merancang suatu aplikasi instant

messaging yang berfokus untuk mengamankan file citra dengan ekstensi JPG dengan

menerapkan ilmu kriptografi dengan menggunakan algoritma RC4+ dan RSA – Naïve.

1.2.Rumusan Masalah

Rumusan masalah yang akan dibahas pada penelitian ini adalah Instant messaging

sangat rentan dengan penyadapan sehingga perlu dilakukan pengamanan dengan

menggunakan teknik kriptografi.

1.3.Tujuan Penelitian

Tujuan dari penelitian ini adalah :

1. Merancang dan membangun aplikasi Instant Messaging yang dilengkapi dengan

sistem keamanan

2. Mengamankan pesan Instant Messaging yang berisi file JPG dengan menggunakan

ilmu kriptografi.

3. Mengimplementasikan algoritma RC4+ yang dikombinasikan dengan algoritma

RSA – Naïve untuk mengamankan isi pesan berupa file JPG pada aplikasi Instant

Messaging

Universitas Sumatera Utara

Page 20: implementasi konsep hybrid algoritma rsa

4

4. Melakukan pengujian apakah file JPG yang dikirimkan dapat diterima seperti

keadaan semula setelah melewati proses pengamanan dengan kriptografi.

1.4.Batasan Penelitian

1. Melakukan enkripsi dan dekripsi terfokus untuk mengamankan isi pesan.

2. Algoritma RC4+ untuk enkripsi file citra sementara algoritma RSA-Naïve

digunakan untuk enkripsi kunci algoritma RC4+.

3. Pembangunan aplikasi fokus pada pengimplementasian kriptografi pada isi pesan

berupa file citra dengan ekstensi JPG dengan resolusi maksimal 500 x 500 piksel.

4. Pembuatan aplikasi Instant Messaging untuk sistem operasi Android dengan versi

minimal Kitkat

5. Menggunakan bahasa pemrograman Java.

6. IDE yang digunakan adalah Android Studio versi minimal 2.2.2 dan Database

Management System menggunakan Firebase.

7. Hanya menghitung running time pada saat proses enkripsi dan dekripsi

1.5.Manfaat Penelitian

Manfaat dari penelitian ini adalah :

1. Penelitian ini diharapkan mampu memberikan keamanan pada pengiriman pesan

gambar melalui jaringan internet.

2. Menambah pengetahuan penulis dalam menerapkan algoritma kriptografi pada

aplikasi mobile Instant Messaging.

3. Sebagai bahan referensi bagi peneliti lain yang ingin membahas topik yang terkait

dengan penelitian.

1.6.Metodologi Penelitian

Tahapan penelitian yang dilakukan dalam penelitian ini adalah :

1. Studi Literatur

Pada tahap ini dilakukan peninjauan terhadap buku, artikel, jurnal, maupun hasil

penelitian terdahulu sebagai referensi yang diperlukan dalam melakukan

penelitian. Ini dilakukan untuk memperoleh informasi yang terkait dengan

Universitas Sumatera Utara

Page 21: implementasi konsep hybrid algoritma rsa

5

algoritma RC4+ dan algoritma RSA – Naïve, file gambar dan proses pengiriman

pesan melalui jaringan internet.

2. Analisis dan Perancangan

Tahap ini digunakan untuk mengolah data dari hasil studi literatur yang

kemudian dilakukan analisis dan perancangan menggunakan algoritma RC4+ dan

algoritma RSA – Naïve. Proses ini meliputi pembuatan algoritma program, Use

Case Diagram), flowchart, perancangan interface dari aplikasi, serta pembuatan

database.

3. Implementasi

Pada tahap ini, implementasi berupa aplikasi sistem instant messaging, dimana

pada setiap pesan gambar yang terkirim akan dienkripsi terlebih dahulu

menggunakan algoritma RC4+ dan kunci dari RC4+ dienkripsi RSA – Naïve

sebelum di simpan ke database dan kemudian akan didekripsi jika telah sampai

kepada pembaca. Aplikasi dibangun menggunakan bahasa pemrograman Java.

4. Pengujian

Menguji apakah aplikasi yang dibuat telah berhasil berjalan sesuai dengan

keinginan dan melakukan perbaikan kesalahan jika masih tedapat error pada

aplikasi.

5. Dokumentasi

Pada tahap ini berisi laporan dan kesimpulan akhir dari hasil akhir analisa dan

pengujian dalam bentuk skripsi.

1.7.Sistematika Penulisan

Sistematika penulisan skripsi in iterdiri dari beberapa bagian utama, yaitu:

BAB 1 PENDAHULUAN

Bab ini berisi latar belakang pemilihan judul skripsi

“Implementasi Konsep Hybrid Algoritma RSA - Naïve dan

Algoritma RC4+ dalam Pengamanan File JPG pada Aplikasi

Universitas Sumatera Utara

Page 22: implementasi konsep hybrid algoritma rsa

6

Instant Messaging.”, rumusan masalah, batasan masalah, tujuan

penelitian, manfaat penelitian, metode penelitian dan

sistematika penulisan.

BAB 2 LANDASAN TEORI

Bab ini menjelaskan tentang sistem kriptografi secara umum,

teori dan dasar-dasar perhitungan serta contoh implementasi

algoritma RSA - Naïve dan algoritma RC4+ dan pembangkit

bilangan prima algoritma Lehmann

BAB 3 ANALISIS DAN PERANCANGAN

Bab ini berisi analisis terhadap masalah penelitian dan

perancangan sistem yang akan dibangun sebagai solusi

permasalahan tersebut.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Bab ini berisi implementasi algoritma algoritma RSA - Naïve

dan algoritma RC4+, selanjutnya pengujian terhadap sistem

yang telah dibangun dengan melakukan pengiriman file JPG

melalui aplikasi, serta pembahasan hasil pengujian dan

analisisnya

BAB 5 KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dari uraian penjelasan bab-bab

sebelumnya dan saran berdasarkan hasil pengujian yang

diharapkan dapat bermanfaat untuk pengembangan sistem

selanjutnya,

Universitas Sumatera Utara

Page 23: implementasi konsep hybrid algoritma rsa

BAB 2

LANDASAN TEORI

2.1.Kriptografi

Kata Kriptografi berasal dari bahasa Yunani yang terdiri dari dua kata yaitu kryptós dan

gráphein, “kryptós” yang mempunyai arti tersembunyi dan “gráphein” yang artinya

“writting”(tulisan). Sehingga secara etimologi kriptografi berarti “secret writting”

(tulisan tersembunyi) (Basri, 2016).

Menurut terminologinya, cryptography adalah ilmu dan seni untuk menjaga

keamanan pesan ketika pesan dikirim dari suatu tempat ketempat yang lain (Ariyus,

2009). Menurut Request for Comments (RFC), kriptografi adalah ilmu matematika yang

berhubungan dengan transformasi data untuk membuat artinya tidak dipahami (untuk

menyembunyikan makna dari data tersebut), mencegah dari perubahan tanpa izin, atau

mencegah dari penggunaan yang tidak sah.

Jika transformasinya dapat dikembalikan, kriptografi juga bisa diartikan sebagai

proses mengubah kembali data yang terenkripsi menjadi bentuk yang dapat dipahami.

Artinya, kriptografis dapat diartikan sebagai proses untuk melindungi data dalam arti

yang luas (Oppliger, 2005). Selain bertujuan untuk merahasiakan data (privacy), tujuan

lain dari kriptografi yaitu menjaga integritas data (integrity), autentikasi

(authentication) dan mencegah terjadinya penyangkalan terhadap pengiriman informasi

oleh pengirim pesan (NonRepudiation) (Bellare & Rogaway, 2005).

Sistem kriptografi adalah sistem yang dapat digunakan untuk mengubah pesan

dengan tujuan membuat pesan tersebut tidak dimengerti oleh orang lain selain

penerima. Proses ini disebut enkripsi (encryption) (Churchouse, 2002). Enkripsi bisa

diartikan dengan cipher atau kode. Penerima pesan kemudian mengembalikan kode –

kode yang telah diterima menjadi bentuk asal dengan menggunakan kunci yang

dikirimkan oleh penerima pesan. Proses ini disebut dekripsi (decryption).

Universitas Sumatera Utara

Page 24: implementasi konsep hybrid algoritma rsa

8

Kunci yang digunakan untuk melakukan enkripsi dan dekripsi terbagi menjadi 2 bagian,

yaitu kunci pribadi (private key) dan kunci umum (public key) (Munir, 2006). Pesan asli

yang akan disampaikan pengirim kepada penerima pesan disebut plaintext, biasanya

disimbolkan dengan p, sedangkan pesan setelah dienkripsi disebut dengan chipertext,

biasanya disimbolkan dengan c. Kunci yang dikirimkan mengirim kepada penerima

pesan untuk proses dekripsi disebut dengan key, biasanya disimbolkan dengan k. Fungsi

enkripsi disimbolkan dengan E(p) sedangkan fungsi dekripsi disimbolkan dengan D(c)

(Schneier, 1996).

Gambar 2.1 Proses enkripsi dan dekripsi dengan menggunakan kunci

Super Enkripsi merupakan suatu konsep dengan menggunakan kombinasi dari

dua atau lebih dari teknik subtitusi dan permutasi cipher untuk mendapatkan algoritma

yang lebih handal (susah untuk dipecahkan) (Ariyus, 2006).

2.1.1 Tujuan Kriptografi

Tujuan awal dari kriptografi adalah menyembunyikan isi pesan sehingga tidak dapat

terbaca oleh pihak-pihak yang tak diinginkan, tetapi masih dapat dimengerti oleh pihak

yang dituju. Seiring perkembangan zaman, kriptografi banyak diterapkan di berbagai

bidang, mulai dari tukar menukar informasi di perang dunia kedua, hingga dunia

komputerisasi yang kita gunakan saat ini.

Menurut Schneier (1996), ada beberapa tujuan kriptografi, diantaranya adalah:

1. Kerahasiaan (Secrecy)

Secrecy bermakan kerahasiaan. Setiap informasi yang dikirim atau diterima

hanya dapat diakses oleh pihak yang berkepentingan. Enkripsi pesan bertujuan

untuk tetap merahasiakan pesan sampai kepada penerima dengan aman.

Selanjutnya pesan yang telah diterima akan didekripsi oleh penerima dengan

algoritma yang telah disepakati dan kunci yang telah dikirimkan dnegna jalur

yang lebih aman.

2. Integritas (Integrity)

Universitas Sumatera Utara

Page 25: implementasi konsep hybrid algoritma rsa

9

Integritas dalam kriptografi berhubungan dengna menjaga keasilan data,

artinya data yang diterima tidak rusak, berkurang, bertambah atau telah

dimanipulasi oleh pihak lain sebelum diterima oleh penerima data.

3. Autentikasi (Authentication)

Autentikasi berkaitan dengan identifikasi dan verifikasi, baik secara sistem

maupun informasi itu sendiri. Salah satu sarana proses autentifikasi adalah

melalui password. Apabila proses ini menggunakan password, maka protocol

autentifikasi harus aman dalam proses pengirimannya dan tidak digunakan

oleh pihak – pihak yang tidak bertanggung jawab. Teknik kriptografi sangat

diperlukan untuk permasalahan ini.

4. Non – Repudiation

Non – Repudiation adalah usaha untuk memastikan bahwa baik pesan maupn

kunci yang sampai adlaah benar – benar pesan atau kunci yang diharapkan.

Selain itu, non-repudiation juga adalah usaha untuk menghindari adanya

penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh pengirim

pesan.

Sadikin (2012) menyatakan bahwa elemen-elemen dari sistem kriptografi yaitu :

1. Plaintext, biasanya disimbolkan dengan P adalah pesan atau data dalam bentuk

asli yang dapat dibaca dan juga sebagai masukan bagi algoritma enkripsi.

2. Secret Key atau kunci rahasia adalah nilai yang bebas bagi algoritma enkripsi

terhadap teks asli dan menentukan hasil keluaran dari algoritma enkripsi.

3. Ciphertext biasanya disimbolkan dengan C, adalah pesan dalam bentuk

tersembunyi yang merupakan hasil dari algoritma enkripsi.

4. Algoritma enkripsi, memiliki 2 masukan yaitu teks asli dan kunci rahasia. Kedua

masukan akan diproses sehingga membuat teks asli menghasilkan teks sandi.

5. Algoritma dekripsi, memiliki 2 masukan yaitu teks sandi dan kunci rahasia.

Proses ini mengembalikan teks sandi menjadi teks asli.

2.1.2 Macam – macam algoritma kriptografi

Berdasarkan jenis kuncinya, algoritma kriptografi terbagi menjadi 3 bagian (Ariyus,

2006), yaitu:

- Algoritma Simetris (menggunakan satu kunci untuk enkripsi dan dekripsinya)

Universitas Sumatera Utara

Page 26: implementasi konsep hybrid algoritma rsa

10

- Algoritma Asimetris (menggunakan kunci yang berbeda untuk enkripsi dan

dekripsi)

- Hash Function

1. Algoritma Simetris

Algoritma simetris disebut juga algoritma konvensional atau Symetric

Cryptosystem adalah algoritma yang membuat kunci enkripsi sama dengan kunci

dekripsi. Jadi pembuat pesan dan penerima pesan harus memiliki kunci yang sama.

Keamanan algoritma simetris tergantung pada kuncinya.

Membocorkan kunci berarti siapa pun dapat mengekrip dan mendekrip

pesan. Agar kemunikasi tetap aman, kunci harus tetap dirahasiakan. Masalah yang

paling jelas di sini terkadang bukanlah masalah pengiriman ciphertext-nya,

melainkan masalah bagiamana menyampaikan kunci tersebut kepada pihak yang

diinginkan.

Berikut ini adalah skema algoritma simetris dengan menggunakan kunci

seperti terlihat pada gambar 2.2.

Gambar 2.2 Skema Algoritma Simetris

Tampak pada gambar 2.2, plainteks dienkripsi dengan kunci K dan menghasilkan

ciphertext. Lalu ciphertext dikirim ke penerima, sehingga penerima melakukan

dekripsi ciphertext dengan menggunakan kunci K yang tadi. Sehingga terlihat

bahwa proses enkripsi dan dekripsi menggunakan kunci K.

Terdapat beberapa kelebihan menggunakan algoritma simetris (Basri, 2016), yaitu:

- Kecepatan operasi lebih tinggi bila dibandingkan dengan algortima

asimetris walaupun hal ini berbanding lurus dengan penambahan ukuran

file.

- Kecepatan proses enkripsi/dekrispi bergantung pada besarnya ukuran file,

semakin besar ukuran file semakin banyak waktu yang dibutuhkan.

- Dengan kecepatan yang cukup tinggi, maka algoritma simetris cocok

digunakan pada sistem real-time seperti instant messaging.

Beberapa kekurangan dari algoritma simetris (Basri, 2016), yaitu:

Universitas Sumatera Utara

Page 27: implementasi konsep hybrid algoritma rsa

11

- Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan

kunci yang berbeda juga, sehingga akan terjadi kesulitan manajemen kunci

tersebut.

- Perlunya ada kesepatakan untuk jalur yang khusus untuk kunci, hal ini akan

menimbulkan masalah baru karena tidak mudah menentukan jalur yang

aman untuk kunci, masalah ini sering disebut dengan “Key Distribution

Problem”.

- Apabila kunci sampai hilang atau dapat ditebak maka kriptosistem ini tidak

akan aman lagi.

2. Algoritma Asimetris

Algoritma asimetris disebut juga sebagai kunci publik karena kunci yang

digunakan pada proses enkripsi dapat diketahui oleh orang banyak tanpa

membahayakan kerahasiaan kunci dekripsi sehingga sering disebut kunci publik,

sedangkan kunci yang digunakan untuk proses dekripsi hanya diketahui oleh pihak

yang tertentu (penerima) sehingga disebut kunci privat atau kunci rahasia.

Sebagai contoh, jika Bob mengirim pesan untuk Alice, Bob dapat merasa

yakin bahwa pesan tersebut hanya dapat dibaca oleh Alice, karena hanya Alice

yang bisa melakukan dekripsinya dengan kunci privatnya. Tentunya Bob harus

memiliki kunci public Alice untuk melakukan Enkripsi. Bob bisa mendapatkannya

dari Alice, atauapun dari pihak ketiga seperti Tari.

Algoritma asimetris dengan menggunakan kunci seperti terlihat pada gambar 2.3.

Gambar 2.3 Skema Algoritma Asimetri

Beberapa kelebihan dari algoritma asimetris (Ariyus, 2006), yaitu:

- Masalah keamanan pada distribusi kunci dapat diatasi

- Manajemen kunci pada suatu sistem informasi dengan banyak pengguna

menjadi lebih mudah, karena jumlah kunci yang digunakan lebih sedikit.

Kekurangan dari algoritma asimetris (Ariyus, 2016), yaitu:

- Kecepatan proses algoritma ini tergolong lambat bila dibandingkan dengan

algoritma kunci simetris

Universitas Sumatera Utara

Page 28: implementasi konsep hybrid algoritma rsa

12

- Untuk tingkat keamanan yang sama, rata – rata ukuran kunci harus lebih

besar dibandingkan dengan ukuran kunci yang dipakai pada algoritma

kunci simetris.

2.2 Hybrid Cryptosystem

Hybrid Cryptosystem atau kriptografi hibrida adalah salah satu yang

mengkombinasikan keamanan dari kriptografi kunci asimetris (public-key-

cryptosystem) dengan efisiensi dari kriptografi kunci simetris (symmetric-key-

cryptosystem) (Kuppuswamy, 2014).

Enkripsi hibrida dapat dilakukan dengan cara mengenkripsi kunci dari algoritma

simetris dengan kunci kunci publik dari algoritma asimetris. Kemudian, penerima pesan

akan mendekripsi kunci simetris dengan kunci privatnya. Penerima akan

mendekripsikan ciphertext, setelah kunci simetris berhasil didekripsi.

2.3 Algoritma Lehmann

Untuk menghasilkan sebuah kunci pada sistem kriptografi untuk kunci publik RSA

membutuhkan bilangan prima p dan q. Algoritma Lehmann dapat digunakan untuk

menguji apakah sebuah bilangan prima atau tidak.

Syarat pembangkit bilangan prima Lehmann adalah yaitu (Munir, 2016):

1. Bangkitkan bilangan acak a yang lebih kecil dari p.

2. Hitung 𝑎(𝑝−1)/2 mod p.

3. Jika 𝑎(𝑝−1)/2 ≡/ 1 atau -1 (mod p), maka p tidak prima.

4. Jika 𝑎(𝑝−1)/2 ≡ 1 atau -1 (mod p), maka peluang p bukan prima adalah 50%.

Sebagai contoh, akan diuji apakah bilangan 11 merupakan bilangan prima atau

komposit dengan menggunakan metode Lehmann.

Apakah 11 prima ?

p = 11

n = 2

α = (2

11) ≡ 2

11−1

2 ≡ 25 ≡ 32 − 33 = −1

p = 11 prima dengan kemungkinan >50%

ulangi pengujian dengan algoritma Lehmann diatas sebanyak t kali (dengan nilai a

yang berbeda). Jika hasil perhitungan langkah (b) sama dengan 1 atau -1, tetapi

Universitas Sumatera Utara

Page 29: implementasi konsep hybrid algoritma rsa

13

tidak selalu sam dengan 1, maka peluang p adalah prima mempunyai kesalahan

tidak lebih dari 1 2𝑡 ⁄ .

a = 3

α ≡ (3

11) ≡ 2

11−1

2 ≡ 35 ≡ 243 ≡ −1 (𝑚𝑜𝑑 11)

p ≡ 11 prima denga kemungkinan >50% + 1

2 . 50% = 75%

a = 4

α ≡ 4

11 ≡ 45 ≡ 1024 ≡ 1 ( 𝑚𝑜𝑑 11)

p = 11 prima dengan probabilitas >50% + 25% + 1

2 . 25% = 87,5%

2.4 Algoritma RSA Naïve

Algoritma RSA adalah algoritma kriptografi modern yang paling dikenal didalam

sejarah kriptografi modern. Algoritma RSA merupakan algoritma kriptografi asimetris

yang paling sering digunakan pada saat ini dikarenakan kehandalannya. 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).

Panjang kunci dalam bit dapat diatur, dengan semakin panjang bit maka semakin

sukar untuk dipecahkan karena sulitnya memfaktorkan dua bilangan yang sangat besar

tersebut, tetapi juga semakin lama pada proses dekripsinya. Keamanan algoritma RSA

terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima.

Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Selama pemfaktoran bilangan

besar menjadi faktor-faktor prima yang belum ditemukan algoritma yang efektif, maka

selama itu pula keamanan algoritma RSA tetap terjamin.

Kata Naïve pada banyak algoritma seseorang akan dijumlah kedalam Naïve

Bayes merupakan pengklasifikasian dengan metode probabilitas dan statistik yang

dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi peluang di masa

depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai teorema

Bayes. Teorema tersebut dikombinasikan dengan ”naive” dimana diasumsikan kondisi

antar atribut saling bebas.

Universitas Sumatera Utara

Page 30: implementasi konsep hybrid algoritma rsa

14

Penelitian ini menyajikan metode efektif yang menggabungkan teknik yang bisa

digunakan untuk menghasilkan pesan sehingga tidak dapat terbaca oleh pihak-pihak

yang tak diinginkan, tetapi masih dapat dimengerti oleh pihak yang dituju algoritma

RSA, salah satu algoritma kriptografi yang paling efektif dan umum digunakan dan

menambahkan lebih banyak langkah untuk mengurangi serangan. Serangan saluran

samping tidak akan terlalu efektif dalam teknik ini karena tingkat kekuatan dan

kebocoran yang digunakan untuk mengidentifikasi algoritma yang digunakan akan

bervariasi dari algoritma RSA. Jika penyusup diidentifikasi maka pengiriman bisa

dihentikan dan karena itu, dia tidak akan menerima keseluruhan pesan karena pesan

dikirim ke beberapa bagian. ini juga bisa berfungsi secara efektif berfungsi sebagai

software yang bisa digunakan untuk mengenkripsi / mendekripsi pesan

(Meenakshi,2014).

Proses pembangkitan kunci pada kriptografi RSA Naïve adalah sebagai berikut (Smart,

2016):

1. Pilih dua buah bilangan prima sembarangan p dan q. Jaga kerahasiaan p dan q.

2. Hitung 𝑛 = 𝑝. 𝑞 Besaran n ini tidak perlu dirahasiakan. (Sebaiknya p ≠ q, sebab

jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat

dua dari n).

3. Hitung ɸ (𝑛) = (𝑝 − 1). (𝑞 − 1). Sekali m telah dihitung, p dan q dapat dihapus

untuk mencegah diketahuinya oleh pihak lain.

4. Pilih sebuah bilangan acak untuk kunci publik, sebut namanya e, yang relatif prima

terhadap ɸ (relatif prima berarti GCD(𝑒, ɸ) = 1dengan syarat 1 < 𝑒 < ɸ(𝑛) .

5. Hitung kunci dekripsi d, dengan kekongruenan 𝑒. 𝑑 ≡ 1(𝑚𝑜𝑑 ɸ(𝑛)).

Hasil dari algoritma di atas:

- Kunci publik adalah pasangan (e, n)

- Kunci privat adalah pasangan (d, n)

Catatan: n tidak bersifat rahasia, namun ia diperlukan pada perhitungan

enkripsi/dekripsi.

Contoh penerapan pembangkitan kunci algoritma RSA Naïve :

1. Menetukan bilangan acak p dan q

p =47, q = 71

Universitas Sumatera Utara

Page 31: implementasi konsep hybrid algoritma rsa

15

2. Hitung n dan ɸ

n = 47 * 71 = 3337

ɸ(n) = (p – 1) (q – 1)

= (47 – 1) (71 – 1)

= 3220

3. Cari nilai e

ambil bilangan acak e dimana 1 < e < ɸ (n) adalah bilangan bulat lalu hitung nilai

GCD (e, ɸ) = 1 atau e relatif prima terhadap ɸ.

e = 79

GCD (79, 3220) = 1

4. Lalu cari nilai d

Hitung nilai d secara iterasi sampai pada keadaan dimana d.e ≡ 1 (mod ɸ (n))

d = 1019

e.d ≡ 1 (mod ɸ(n))

79.1019 ≡ 1 (mod 3220)

publik key = (e, n) = (79,3337)

private key = (d,n) = (1019,3337)

2.4.1. Proses enkripsi pada RSA Naïve

Proses enkripsi pesan menggunakan kunnci publik dari hasil pembangkitan

kunci dengan menggunakan rumus :

ci = mie mod n

Tahapan proses enkripsi:

1. Ambil kunci publik penerima pesan, e, dan modulus n.

2. Nyatakan plainteks mi menjadi blok – blok m1, m2, ..., sedemikian sehingga setiap

blok merepresentasikan nilai dalam selang [0, n - 1].

3. Setiap blok mi dienkripsi menjadi blok ci dengan rumus ci = mie mod n

Misalkan B mengirim pesan kepada A. Pesan (plainteks) yang akan dikirim ke A

adalah

m = HARI INI

atau dalam sistem desimal (pengkodean ASCII) adalah:

Universitas Sumatera Utara

Page 32: implementasi konsep hybrid algoritma rsa

16

7265827332737873

B memecah m menjadi blok yang lebih kecil, misalnya m dipecah menjadi enam blok

yang berukuran 3 digit:

m1 = 726 m4 = 273

m2 = 582 m5 = 787

m3 = 733 m6 = 003

Nilai – nilai mi ini masih terletak di dalam selang [0, 3337 - 1] agar transformasi menjadi

satu-ke-satu.

B mengetahui kunci publik A adalah e = 79 dan n = 3337. A dapat mengenkripsikan

setiap blok plainteks sebagai berikut:

c1 = 72679 mod 3337 = 215; c2 = 58279 mod 3337 = 776;

c3 = 73379 mod 3337 = 1743 ; c4 = 27379 mod 3337 = 933;

c5 = 78779 mod 3337 = 1731 ; c6 = 00379 mod 3337 = 158

Sehingga cipherteks yang dihasilkan adalah:

c = 215 776 1743 933 1731 158

2.4.2. Proses dekripsi pada RSA Naïve

Untuk mengembalikan pesan ciphertext menjadi plaintext (pesan asli) adalah dengan

menggunakan rumus dekripsi RSA Naïve sebagai berikut :

mi = cid mod n

Dekripsi dilakukan dengan menggunakan kunci privat:

d = 1019

Blok – blok cipherteks didekripsikan sebagai berikut:

m1 = 2151019 mod 3337 = 726

m2 = 7761019 mod 3337 = 582

m3 = 17431019 mod 3337 = 733

Blok plainteks yang lain dikembalikan dengan cara serupa. Akhirnya kita memperoleh

kembali plainteks semula

m = 7265827332737873

Jika diubah dalam sistem pengkodean ASCII adalah:

m = HARI INI

Universitas Sumatera Utara

Page 33: implementasi konsep hybrid algoritma rsa

17

Dari hasi dekripsi diatas dapat dibuktikan bahwa hasil enkripsi pesan dapat didekripsi

kembali ke pesan asli.

2.5 Algoritma RC4+

RC4+ adalah salah satu jenis dari algoritma RC4. Di mana algoritma RC4+ merupakan

salah satu lagoritma kunci simetris yang berbentuk stream cipher yang melakukan

proses enkripsi/dekripsi dalam 1 byte dan menggunakan kunci yang sama.

Stream Cipher digunakan untuk mengenkripsi plaintext menjadi ciphertext bit

per bit (1 bit setiap kali transformasi) atau byte per byte (1 karakter = 1 byte). Struktur

dasar dari RC4+ sama seperti RC4 (Subhadeep, Santanu & Raghu, 2013). RC4

menggunakan variabel yang panjang kuncinya dari 1 sampai 256 bit yang digunakan

untuk menginisialisasikan tabel sepanjang 256 bit.

RC4+ menggunakan struktur seperti RC4 dan menambahkan beberapa operasi

untuk memperkuat cipher. Struktur ini mencoba untuk memanfaatkan poin yang baik

pada algoritma RC4 kemudian memberikan beberapa fitur tambahan untuk batas

keamanan yang lebih baik (Paul & Subhamoy, 2012) untuk mengatasi kelemahan RC4

itu sendiri seperti tingginya peluang untuk menghasilkan.

2.5.1 Key Scheduling Algorithm (KSA+)

KSA+ adalah KSA RC4 yang sudah dimodifikasi. KSA+ menggunakan tiga lapis key

scheduling. Lapisan pertama sama dengan KSA RC4 yang asli. Dalam tahap ini akan

diisi array sepanjang 256 elemen. Adapun KSA dari algoritma RC4+ Cipher sebagai

berikut:

Inisialisai

For i = 0,…,N – 1

S[i] = I;

j = 0;

Gambar 2.4. Inisialisasi KSA

Universitas Sumatera Utara

Page 34: implementasi konsep hybrid algoritma rsa

18

Lapisan 1 : Pengacakan Biasa

For i = 0, . . . ,N – 1

j = (j + S[i] + K[i] mod keylength);

Swap(S[i], S[j]);

Gambar 2.5. Pengacakan dasar di dalam KSA+

2.5.2 Pseudo Random Generation Algorithm (PRGA+)

PRGA dari RC4+ berbeda dengan PRGA dari RC4, meskipun dari pengembangan

RC4. Secara sistematis PRGA algoritma dari RC4+ dituliskan sebagai berikut:

Gambar 2.6. Pseudo Random Generation Algorithm (PRGA+)

Pada tabel di atas menunjukkan Pseudo Random Generation Algorithm (PRGA)

dari algoritma RC4+ cipher, dimana i dan j adalah 8-bit indeks array. S adalah semua

Input: Key-dependent scrambled permutation array S[0 . . .N − 1].

Output: Pseudo-random keystream bytes z.

Initialization:

i = j = 0;

For i = 0, . . . ,N – 1

i = i + 1;

j = j + S[i];

Swap(S[i], S[j]);

t = S[i] + S[j];

t′ = (S[i>>3 ⊕ j<<5] + S[i<<5 ⊕ j>>3 ]) ⊕ 0xAA;

t′′ = j + S[j];

Output z = (S[t] + S[t′]) ⊕ S[t′′];

Universitas Sumatera Utara

Page 35: implementasi konsep hybrid algoritma rsa

19

permutasi 256 yang mungkin terjadi, sedangkan << dan >> adalah left dan right shift,

⊕ adalah exclusive OR.

Contoh:

Misalkan kunci adalah 1, 2 dengan di dalam kode ASCII, 1 = 49 dan 2 =50. Tahap

pertama adalah KSA+. Di dalam KSA+ ada 3 layer, yaitu basic scrambling,

initialization vector dan zig – zag scrambling.

Berikut adalah perhitungannya:

Basic scrambling

j = (i + S[i] + K[i mod keylength]) mod 256

j = (0 + S[0] +K[0 mod 2]) mod 256

j = (0 + 0 + K[0]) mod 256

j = (0 + 0 + 49) mod 256

j = 49 mod 256

j = 49

Selanjutnya, tukarkan S[0] dengan S[49], maka nilai S[0] = 49 dan nilai dari

S[49]=0. Kemudian dengan nilai i = 1, lakukan perhitungan nilai j yang kedua

yaitu j = 49.

Proses perhitungan sebagai berikut :

j = (j+S[i]+K[i] ) mod 256

j = (49+S[1]+K[1]) mod 256

j = (49+1+50) mod 256

j = 100 mod 256

j = 100

Tukarkan nilai S[1] dengan S[100], sehingga nilai dari S[1] = 100 dan nilai dari

S[100] = 1. Kemudian dengan nilai i = 2, lakukan perhitungan nilai j ketiga,

yaitu j = 100. Proses perhitungan sebagai berikut :

j = ( j + S[i] + K[i mod keylength] ) mod 256

j = ( 100 + S[2] + K[2 mod 2] ) mod 256

j = ( 100 + 2 + K[0] ) mod 256

j = ( 100 + 2 + 49 ) mod 256

Universitas Sumatera Utara

Page 36: implementasi konsep hybrid algoritma rsa

20

j = 151 mod 256

j = 151

Tukarkan nilai S[2] dengan S[151], sehingga nilai dari S[2] = 151 dan nilai dari

S[151] = 2. Perhitungan akan terus dilakukan sampai i = 255. Setelah

mendapatkan hasil akhir tahap Key Scheduling Algorithm (KSA) maka

selanjutnya dilakukan proses enkripsi pesan. Pesan yang dienkripsi pada tahap

ini adalah nilai Red dari sebuah pixel. Jika Red = 121, maka perhitungan yang

akan dilakukan adalah :

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

a = S[i] = S[1] = 100 (misalkan S[1] = 100)

j = ( j + a ) mod 256 = ( 0 + 100 ) mod 256 = 100

Tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut:

b = S [j] = S [100] = 5 (misalkan S[100] = 5)

S[i] = b = S [1] = 5

S [j] = a = S [100] = 100

Setelah nilai i, j, a, b diketahui, dicari nilai c dengan rumus sebagai berikut :

c = ( S[((i<<5) ⊕ (j>>3)) mod 256] + S[((j<<5) ⊕ (i>>3)) mod 256]) mod

256

c = ( S[((1<<5) ⊕ (100>>3)) mod 256] + S[((100<<5) ⊕ (1>>3)) mod 256])

mod 256

c = ( S[(32 ⊕ 12) mod 256] + S[(3200 ⊕ 0) mod 256]) mod 256

c = ( S[44 mod 256] + S[3200 mod 256]) mod 256

c = ( S[44] + S[128]) mod 256

c = ( 100 + 102) mod 256 (misalkan S[44] = 100 dan S[128] = 102)

c = 202 mod 256

Universitas Sumatera Utara

Page 37: implementasi konsep hybrid algoritma rsa

21

c = 202

Setelah nilai c berhasil didapatkan, hitung nilai z dengan cara sebagai berikut:

z = ((S[(a+b) mod 256] +S[((c ⊕ 0xAA) mod 256)]) ⊕ S[j+b) mod 256]) mod

256

z = ((S[(100+5) mod 256] +S[((202 ⊕ 170 ) mod 256)]) ⊕ S[100+5) mod 256])

mod 256

z = ((S[105 mod 256] +S[(96 mod 256)]) ⊕ S[105] )mod 256

z = ((S[105 mod 256] +S[(96 mod 256)]) ⊕ S[105 mod 256]) mod 256

z = ((S[105] +S[96])⊕ S[105]) mod 256

(misalkan S[105]=96 dan S[96]=22)

z = ((96 +22) ⊕ 96) mod 256

z = (118 ⊕ 96) mod 256

z = 22 mod 256

z = 22

Lalu lakukan operasi XOR pada nilai P = 121 dengan nilai dari z = 22, yaitu:

01111001

00010110 ⊕

01101111 = 11110 dalam tabel ASCII merupakan karakter “o”.

Proses enkripsi telah berhasil dilakukan. Dekripsi adalah kebalikan dari proses

enkripsi.

2.6 Citra digital

2.6.1 Pengertian Citra Digital

Citra atau gambar dapat didefinisikan sebagai sebuah fungsi dua dimensi, f(f,y), di mana

x dan y adalah koordinat bidang datar, dan harga fungsi f di setiap pasangan koordinat

(x,y) disebut intensitas atau lebel keabuan (grey level) dari gambar di titik itu. Jika x,y

dan f semuanya berhingga (finite), dan nilainya diskrit, maka gambarnya disebut citra

digital (gambar digital) (Hermawati, 2013).

Universitas Sumatera Utara

Page 38: implementasi konsep hybrid algoritma rsa

22

Citra (image) sebagai salah satu komponen multimedia memegang peranan

sangat penting sebagai bentuk informasi visual. Sebuah gambar dapat memberikan

informasi yang lebih banayk daripada informasi tersebut disajikan dalam bentuk kata –

kata (tekstual)(Munir, R. 2004).

Citra digital dipetakan sebagai suatu gabungan titik – titik atau elemen (piksel).

Tiap piksel terdiri dari nilai warna (hitam, putih, derajat keabuan atau warna). Mode

warna yang paling sering dipakai adalah RGB. RGB adalah suatu mode warna yang

terdiri atas 3 buah warna: RED (merah), GREEN (hijau), dan BLUE (biru).

2.6.2 Format File Citra Digital

Beberapa format yang umum digunakan dalam pengolahan citra antara lain, yaitu:

- Format BMP

BMP adalah format gambar yang digunakan untuk menyimpan gambar digital

berupa bitmap dan merupakan file gambar yang tidak terkompresi.

- Format JPG

JPG (Joint Photographic Experts Assemble)adalah format gambar yang digunakan

untuk menyimpan gambar digital dan merupakan format file gambar yang

terkompresi.

- PNG (Portable Network Graphics) adalah salah satu format penyimpanan citra

yang menggunakan metode pemadatan yang tidak menghilangkan bagian dari citra

tersebut (Inggris lossless compression).

2.6.3 Enkripsi pada Citra Digital

Enkripsi citra merpuakan teknik untuk melindungi kerahasiaan citra dari pengaksesan

secara ilegal. Enkripsi diperlukan karena dalam era teknologi sekarang ini, citra digital

mudah disimpan atau ditransmisikan melalui salutran publik seperti internet (Munir,

2012).

Pengiriman citra digital melalui melalui jalur komunikasi yang tidak aman

seperti internet, rawan terhadap pengaksesan ilegal. Enkripsi citra (plain-image) ke

dalam bentuk visual lain yang tidak bermakna (cipher-image). Untuk melakukan

enkripsi citra, nilai RGB dari setiap piksel harus diketahui. Nilai dari RGB inilah yang

akan dimodifikasi dengan memasukkan algoritma kriptografi.

Universitas Sumatera Utara

Page 39: implementasi konsep hybrid algoritma rsa

23

Misalkan sebuah citra RGB dengan ukuran piksel 2 x 2, sehingga banyak piksel RGB

pada citra input tersebut adalah 2 x 2 x 3, yaitu 12 piksel. Citra tersebut diilustrasikan

oleh gambar di bawah ini:

Gambar 2.7. Ilustrasi Citra RGB

Adapun masing –masing nilai piksel pada citra input setelah diterjemahkan ke

dalam suatu matrik RGB, yaitu:

- Matrik R: [1, 103, 205, 12]

- Matrik G: [35, 137. 239, 13]

- Matrik B: [69, 171, 14, 15]

Kemudian nilai Red, Green, Blue akan enkripsi dengan algoritam kriptografi. Sehingga

citra tampak tidak memiliki arti, dapat diperlihatkan seperti pada gambar berikut:

Gambar 2.8. Diagram enkripsi-dekripsi citra digital

Universitas Sumatera Utara

Page 40: implementasi konsep hybrid algoritma rsa

24

2.7 Penelitian yang relevan

Penelitian yang berkaitan dengan algoritma RSA Naïve, algoritma RC4+, citra

digital dan instant messaging diantaranya :

1. Zainal Arifin (2009) dalam judul Studi Kasus Penggunaan Algoritma RSA

Sebagai Algoritma Kriptografi yang Aman: RSA dianggap sebagai algoritma

kriptografi yang paling aman saat ini. Hal ini dikarenakan belum ditemukannya

algoritma yang mangkus (efisien) untuk memecahkan sistem keamanan yang

diberikan oleh sistem RSA. Semakin panjang suatu kunci publik, maka usaha

yang harus dikeluarkan untuk memecahkan kunci tersebut akan lebih lama. Pada

saat ini dianjurkan untuk menggunakan sistem RSA dengan kunci publik 1024

bit.

2. Anil Kumar & Rohini Sharma (2013) pada judul A Secure Image Steganography

Based on RSA Algorithm and Hash-LSB Technique: Pada teknik pengamanan

citra juga menerapkan algoritma RSA yang berfungsi untuk mengamankan

pesan rahasia maka tidak mudah untuk memecah enkripsi tanpa kunci. Sebuah

teknik spesifik yang tertanam menggunakan hash function dan juga

menyediakan enkripsi data menggunakan algoritma RSA membuat sangat

bermanfaat dan terpercaya untuk mengirim informasi pada saluran atau internet

yang tidak aman.

3. Subhadeep Banik, Santanu Sarkar, & Raghu Kacker dalam judul Security

Analysis of the RC4+ Stream Cipher: RC4+ dikembangkan untuk mengatasi

kelemahan dari RC4, dan ternyata RC4+ hanya sedikit lebih lambat

dibandingkan dengan RC4 jika diterapkan dalam software. Sebelumnya RC4+

telah dikembangkan oleh Maitra & Paul (2008), dan penelitian ini lebih fokus

membahas kelemahan pada penelitian sebelumnya.

4. Subhadeep Banik, & Sonu Jha dalam penelitian yang berjudul Some Security

Results of the RC4+ Stream Cipher : membahas tentang keamanan dari

algoritma stream cipher RC4+ melawan serangan yang berbeda berdasarkan bias

dari byte output-nya itu sendiri. Ditambah lagi, pada penelitian ini juga dianalisis

keamanan dari cipher jika odd pads digunakan untuk menjadi parameter desain

dibandingkan dengan pad 0xAA digunakan di cipher yang asli. Algoritma RC4+

stream cipher menyediakan resistansi maksimum untuk membedakan serangan

jika pad digunakan sebagai parameter desain yang dibuat sama dengan 0x03.

Universitas Sumatera Utara

Page 41: implementasi konsep hybrid algoritma rsa

25

5. Satria Prayudi (2013) dalam judul Kombinasi Algoritma RSA 512-BIT dan One

Time Pad untuk Pengamanan Pesan pada NIC MESSEGER: kombinasi sistem

kriptografi kunci publik dan kunci simetris dapat diimplementasikan untuk

mengamankan pertukaran pesan yang memanfaatkan koneksi internet dari

proses penyadapan. Namun karakter pesan yang disimpan menjadi dua kali lipat

dari panjang pesan asli dan proses pengirimaan relatif lebih lama dibanding

tanpa menerapkan sistem kriptografi.

Universitas Sumatera Utara

Page 42: implementasi konsep hybrid algoritma rsa

BAB 3

ANALISIS DAN PERANCANGAN

3.1.Analisis Sistem

Analisis sistem bertujuan untuk memecah sistem ke dalam komponen-komponen

subsistem yang lebih kecil untuk mengetahui hubungan setiap komponen tersebut

dalam mencapai tujuan. Dalam tugas akhir ini, ada tiga fase analisis yaitu analisis

masalah, analisis kebutuhan dan analisis proses.

Analisis masalah bertujuan untuk mengidentifikasi masalah dan menemukan

penyebab atau akar dari masalah serta memahami kelayakan masalah. Analisis

kebutuhan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu

dikerjakan system, sedangkan analisis proses untuk memodelkan tingkah laku sistem.

3.1.1. Analisis Masalah

Saat ini keamanan dalam pengiriman pesan sangatlah rentan oleh pihak ketiga yang

ingin mengetahui isi pesan tersebut. Masalah utama yang diangkat didalam penelitian

ini adalah bagaimana mengamankan file gambar dengan tipe file jpg agar bisa aman

pihak – pihak yang punya tujuan tertentu untuk membuka file yang ada di database.

Dalam sistem ini, file akan diamankan dengan metode Hybrid cryptosystem, dimana file

akan diamankan oleh algoritma kunci simetris algoritma RC4+ dan kunci simetris

tersebut akan diamankan lagi dengan algoritma kunci asimetris RSA Naïve.

Masalah-masalah pada penelitian ini diidentifikasikan dengan menggunakan

diagram Ishikawa. Diagram Ishikawa atau sering dikenal dengan cause-and-effect

matrix adalah suatu alat visual untuk mengidentifikasi, mengksplorasi, dan secara grafik

menggambarkan secara detail semua penyebab yang berhubungan dengan suatu

permasalahan.

Permasalahan pada penelitian ini secara umum dapat ditunjukan pada diagram

Ishikawa pada gambar 3.1 berikut ini:

Universitas Sumatera Utara

Page 43: implementasi konsep hybrid algoritma rsa

27

Gambar 3.1 Diagram Ishikawa

Pada gambar 3.1 terlihat bahwa terdapat empat kategori penyebab masalah dari

penelitian. Masalah utama pada segi empat paling kanan (kepala ikan) yaitu

implementasi algoritma kriptografi simetris dan algoritma kriptografi asimetris dalam

skema super enkripsi yang berkaitan dengan user, material, metode dan sistem. Tanda

panah yang mengarah ke masing-masing kategori menggambarkan detail penyebab

masalah.

Pengiriman dan penerimaan pesan memungkinkan dapat bersifat tidak aman dan

rahasia. Oleh karena itu dibutuhkan proses pengamanan pesan dengan mekanisme

kriptografi yang disebut juga sistem kriptografi.

3.1.2. Analisis Kebutuhan

Dalam analisis kebutuhan sistem, terdapat dua bagian yaitu analisis kebutuhan

fungsional dan non-fungsional. Kebutuhan fungsional mendeskripsikan fungsi-fungsi

yang harus dilakukan oleh sebuah sistem untuk mencapai tujuan. Sedangkan

kebutuhan non-fungsional mendeskripsikan fitur lain seperti karakteristik, batasan

sistem, performa, dokumentasi dan yang lainnya agar sistem berjalan sukses.

a. Kebutuhan Fungsional

Kebutuhan fungsional yang harus dipenuhi dari sistem yang mengimplementasikan

algoritma RSA - Naïve dan algoritma RC4+ dalam skema super enkripsi adalah sebagai

berikut :

Universitas Sumatera Utara

Page 44: implementasi konsep hybrid algoritma rsa

28

1. Menerima input citra .jpg

Sistem mencari dan meng-upload file citra yang berekstensi .jpg yang tersimpan

pada perangkat smartphone yang digunakan.

2. Mengubah input citra menjadi plainteks

Sistem mengubah input citra yang berektensi .jpeg menjadi plainteks secara

otomatis.

3. Membangkitkan kunci

Sistem membangkitkan kunci secara acak untuk digunakan sebagai kunci

algoritma RSA - Naïve dan algoritma RC4+.

4. Mengenkripsi pesan

Sistem mengenkripsi pesan dengan kunci yang telah ada menggunakan

algoritma RC4+ untuk enkripsi pertama dan RSA - Naïve untuk enkripsi kedua.

5. Menyimpan hasil enkripsi

Sistem menyimpan pesan yang telah dienkripsi beserta kunci ke dalam database.

6. Mendekripsi pesan

Sistem mendekripsi pesan dengan kunci yang tersimpan menggunakan

algoritma RC4+ untuk enkripsi pertama dan RSA - Naïve untuk enkripsi kedua.

7. Mengubah pesan plainteks menjadi citra .jpeg

Sistem mengubah plainteks yang telah didekripsi dengan algoritma yang

digunakan menjadi citra .jpeg.

8. Menampilkan citra .jpeg

Sistem menampilkan citra .jpeg ke dalam aplikasi perangkat smartphone yang

digunakan.

b. Kebutuhan non - fungsional

Kebutuhan non - fungsional dari sistem meliputi karakteristik sebagai berikut :

1. Performa

Sistem dibangun untuk dapat menampilkan dan menyimpan pesan gambar hasil

dari fungsi kriptografi yang dilakukan.

2. Mudah digunakan dan dimengerti

Sistem yang akan dibangun menggunakan desain yang user friendly dan

responsif.

Universitas Sumatera Utara

Page 45: implementasi konsep hybrid algoritma rsa

29

3. Manajemen kualitas

Sistem yang akan dibangun memiliki kualitas yang baik yaitu hasil setelah

didekripsi dan disimpan di database sama dengan citra yang asli.

4. Panduan

Sistem yang akan dibangun memiliki panduan penggunaan.

5. Pengendalian

Untuk setiap input yang tidak sesuai, sistem yang dibangun akan menampilkan

pesan error.

3.1.3. Diagram Umum

Diagram umum dapat digunakan untuk mendekripsikan jalannya sistem secara

keseluruhan. Diagram umum ini juga dapat menjadi tumpuan untuk pembuatan

pemodelan sistem. Diagram umum dapat dilihat pada gambar 3.2.

Gambar 3.2 Diagram Umum

Gambar 3.2 menjelaskan bahwa ciphertext yang dihasilkan adalah hasil dari

proses enkripsi oleh pengirim pesan dengan menggunakan algoritma RC4+. Selanjutnya

pengirim pesan akan melakukan enkripsi dengan algoritma RSA - Naïve yang kemudian

menghasilkan cipherkey. Proses selanjutnya adalah proses dekripsi cipherkey oleh

penerima pesan dengan menggunakan algoritma RSA – Naïve. Proses ini kemudian

Universitas Sumatera Utara

Page 46: implementasi konsep hybrid algoritma rsa

30

menghasilkan kembali key untuk digunakan algoritma RC4+. Proses yang terakhir

adalah dekripsi oleh penerima pesan yang dilakukan dengan menggunakan algoritma

RC4+ yang menghasilkan plaintext yang dikirimkan oleh pengirim pesan.

3.1.4. Pemodelan Sistem

Untuk meggambarkan kerja dari sistem yang akan dibuat, maka akan dibuat pemodelan

sistem dengan menggunakan diagram UML (Unified Modelling Language). Diagram

UML yang digunakan adalah Use Case Diagram, Activity Diagram dan Sequence

Diagram.

a. Diagram Use Case

Tujuan dari diagram use case yaitu untuk menggambarkan siapa saja yang berhubungan

dengan sistem dan apa saja yang dapat dilakukan oleh sistem. Diagram use case

biasanya menggambarkan kebutuhan fungsional yang telah dipaparkan. Pada penelitian

ini diagram use case dapat ditunjukkan pada gambar 3.3.

Gambar 3.3 Diagram use case

Universitas Sumatera Utara

Page 47: implementasi konsep hybrid algoritma rsa

31

Pada gambar 3.3 menjelaskan bahwa sistem diakses oleh dua aktor yang

dinamakan “pengirim” dan “penerima”, kemudian terdapat 6 use case utama pada

sistem yaitu sign up, login, send image, receive image, timeline, logout. Di mana pada

use case send image dan receive image memerlukan use case encryption dan

decryption. Pada tahap inilah proses pengamanan file citra dengan algoritma kriptografi

dilakukan.

b. Diagram Aktivitas

Activity Diagram (diagram aktivitas) menggambarkan aliran kerja atau interaksi

aktivitas antara pengirim dan sistem dari sebuah sistem atau perangkat lunak yang

dikembangkan, dari aktivitas mulai, decision yang mungkin terjadi sampai aktivitas

berhenti.

Gambar 3.4 Diagram aktivitas pada tahap enkripsi

Aktivitas pengirim ditunjukkan pada gambar 3.4 kotak paling kiri sedangkan respon

oleh sistem yang dikerjakan ditunjukkan pada kotak paling kanan.

Universitas Sumatera Utara

Page 48: implementasi konsep hybrid algoritma rsa

32

Pada gambar 3.4, terlihat bahwa sistem melakukan proses enkripsi pesan pada

file citra .jpg dengan cara meng-upload file citra yang ada pada perangkat terlebih

dahulu. Kemudian sistem akan mengubah gambar menjadi plainteks sekaligus meng-

generate key kunci untuk algoritma RC4+ dan algoritma RSA - Naïve.

Proses selanjutnya yaitu melakukan enkripsi algoritma RC4+ dan sistem akan

menghasilkan ciphertext pertama hasil dari enkripsi algoritma tersebut. Setelah

mendapatkan ciphertext, maka sistem akan melakukan enkripsi untuk key dengan

algoritma RSA – Naïve sehingga menghasilkan cipherkey. Langkah terakhir untuk

proses enkripsi adalah dengan menyimpan file hasil enkripsi ke dalam database.

Gambar 3.5 Diagram aktivitas untuk proses dekripsi

Proses dekripsi pesan ditunjukkan pada gambar 3.5. Proses dekripsi dilakukan

dengan cara membuka aplikasi terlebih dahulu kemudian mengakses file enkripsi yang

tersimpan di database. Sistem akan sendirinya melakukan dekripsi cipherkey

menggunakan algoritma RSA – Naïve. Setelah cipherkey didekripsi maka akan menjadi

key yang akan digunakan untuk dekripsi RC4+, maka plainteks pun dapat. Langkah

selanjutnya adalah mengubah plainteks menjadi citra atau gambar dengan ekstensi

.jpeg. Selanjutnya citra yang telah didapat ditampilkan di timeline aplikasi Instant

Messaging

Universitas Sumatera Utara

Page 49: implementasi konsep hybrid algoritma rsa

33

c. Diagram Sequence

Sequence diagram merupakan suatu diagram yang bertujuan untuk menggambarkan

interaksi antara objek dengan apa yang akan dilakukan sistem dalam sebuah urutan

waktu. Sistem ini menggunakan algoritma RC4+ dan algoritma RSA – Naïve. Algoritma

RC4+ terlebih dahulu digunakan pada proses enkripsi kemudian dilanjutkan dengan

algoritma RSA – Naïve.

Pada gambar 3.6 terlihat sequence diagram untuk proses enkripsi antara user

yang menjadi aktor dengan sistem yang akan dibangun. Aktivitas yang terjadi ketika

aktor atau objek berinteraksi ke objek lain digambarkan dengan tanda panah garis

penuh, sedangkan garis putus-putus menggambarkan respon sistem terhadap aktor.

Gambar 3.6 Diagram sequence untuk proses enkripsi

Hasil dari enkripsi dapat disimpan untuk proses dekripsi. Untuk sequence

diagram proses dekripsi dapat dilihat pada gambar 3.7 pada halaman selanjutnya.

Universitas Sumatera Utara

Page 50: implementasi konsep hybrid algoritma rsa

34

Gambar 3.7 Diagram sequence untuk proses dekripsi

Gambar 3.7 menjelaskan tentang sequence diagram proses dekripsi. Dapat diliat

bahwa sequence diagram enkripsi dan dekripsi berbeda. Pada proses dekripsi tidak

menggunakan pengacakan kunci melainkan menggunakan kunci yang digunakan pada

saat enkripsi yang sebelumnya disimpan di database agar mendapatkan plaintext awal.

Kemudian selanjutnya, plaintext yang didapat hasil dari dekripsi diubah kembali

menjadi citra dengan tipe file .jpg.

3.1.5. Flowchart

Terdapat beberapa flowchart pada pembangunan sistem ini, yaitu : flowchart sistem,

flowchart algoritma RC4+ dan flowchart algoritma RSA – Naïve.

a. Flowchart Sistem

Flowchart sistem yang akan dibangun ditunjukkan pada gambar 3.8 yang menunjukkan

urutan-urutan dari prosedur yang ada di dalam sistem secara sistematis. Secara umum,

Universitas Sumatera Utara

Page 51: implementasi konsep hybrid algoritma rsa

35

sistem memiliki empat halaman utama yang dapat dipilih pada sistem oleh user, yaitu

halaman timeline, enkripsi, dekripsi, help, dan about:

Gambar 3.8 Flowchart sistem

Pada gambar 3.8, flowchart menunjukkan proses dimulai dari membuka halaman

timeline. Pada halaman ini ditampilkan seluruh file citra jpg yang hasil dekripsi dari

database. Dari halaman ini, terdapat beberapa pilihan akses ke halaman lain seperti:

halaman help, halaman about, halaman detail image, serta pilihan untuk logout.

Proses kirim foto dimulai dengan menekan button “Kirim Foto”, kemudian

memilih citra dengan resolusi tidak lebih besar dari 500 x 500 piksel dengan ekstensi

file .jpg. Proses enkripsi dilakukan dengan melakukan konversi file citra ke plainteks

yaitu string Base64, kemudian disimpan di database. Proses dekripsi dilakukan setelah

mengambil file pesan yang tersimpan dari database.

Universitas Sumatera Utara

Page 52: implementasi konsep hybrid algoritma rsa

36

b. Flowchart Algoritma RC4+

Flowchart algoritma RC4+ bekerja ditunjukkan pada gambar 3.9. Pada algoritma RC4+

proses enkripsi dan dekripsi tidak berbeda atau sama. Bagian kiri flowchart terdapat

perulangan untuk proses Key Scheduling Algorithm (KSA) sedangkan bagian kanan

merupakan proses Pseudo-Random Generation Algorithm atau PGRA.

Gambar 3.9 Flowchart Algoritma RC4+ Cipher

Proses enkripsi dengan algoritma RC4+ dilakukan dengan memilih plainteks terlebih

dahulu kemudian melakukan pengacakan kunci. Proses enkripsi dimulai dari inisialisasi

nilai ASCII ke array 256 dari i = 0 ... i = 255 dan menghitung nilai j = S[i]+j+kunci[i

mod key.length] mod 256. Kemudian nilai dari S[i] dan S[j] akan ditukar. Proses ini

dilakukan dari 1 sampai mencapai nilai 255, kemudian dilakukan pencarian nilai c dan

z setelah itu nilai yang didapat akan dikonversi menjadi karakter ASCII.

Universitas Sumatera Utara

Page 53: implementasi konsep hybrid algoritma rsa

37

c. Flowchart Algoritma RSA Naïve

Gambar 3.10 Flowchart enkripsi algoritma RSA Naïve

Gambar 3.10 menunjukkan flowchart enkripsi algoritma RSA Naïve yang di awali

dengan input plaintext , nilai p, q, e, dan d. Dimana p dan q merupakan bilangan prima

Dimana dari enkripsi RSA Naïve tersebut akan menghasilkan ciphertext.

Untuk mendapatkan plaintext kembali maka dilakukan proses dekripsi

ciphertext. Proses dekripsi juga memerlukan kunci ciphertext atau cipherkey yang

tersimpan sebelumnya. Kemudian didekripsi dengan mengunakan nilai n dan d

Flowchart dekripsi algoritma RSA Naïve ditunjukkan pada gambar 3.11.

Universitas Sumatera Utara

Page 54: implementasi konsep hybrid algoritma rsa

38

Gambar 3.11 Flowchart dekripsi algoritma RSA Naïve

Proses dekripsi dengan algoritma RSA-Naïve seperti ditunjukkan pada gambar 3.11

dimulai dengna membaca nilai ciphertext, kunci publik n, dan kunci privat d.

Selanjutnnya melakukan proses dekripsi dengan rumus:

M = Cd mod N

Nilai M yang didapat kemduian di-decode menjadi plainteks.

3.2.Perancangan Interface

Sistem akan dibangun pada platform mobile application dengan menggunakan bahasa

pemrograman Java dan mengunakan IDE Android Studio. Rancangan interface akan

disesuaikan dengan kebutuhan dan software yang digunakan.

Perancangan interface dibuat agar mudah dalam pembangunan sistem. Sistem akan

memiliki lima mock-up. Lima mock-up tersebut adalah splash screen, halaman timeline,

detail image info & processing, kotak dialog about, dan halaman bantuan.

Universitas Sumatera Utara

Page 55: implementasi konsep hybrid algoritma rsa

39

a. Halaman Awal

Pada halaman awal ini kita dapat melihat nama dan logo aplikasi dengan durasi tertentu

akan beralih kepada halaman timeline. Halaman awal ditunjukkan pada gambar 3.12.

Gambar 3.12 Perancangan interface halaman awal (splash screen)

Keterangan gambar:

1. ImageView (Logo Aplikasi) : digunakan untuk logo sistem

2. Textview (Nama Aplikasi) : digunakan untuk nama sistem

Universitas Sumatera Utara

Page 56: implementasi konsep hybrid algoritma rsa

40

b. Halaman Tampilan Beranda (timeline)

Halaman beranda (timeline) berisi gambar dan informasi gambar hasil dekripsi dari

database. Halaman beranda terlihat pada gambar 3.13.

Gambar 3.13 Perancangan interface Halaman Beranda (Timeline)

Keterangan gambar:

1. TitleBar (Timeline) : berfungsi untuk menampilkan judul halaman

2. ActionBar (Logout ) : berfungsi untuk keluar dari halaman

3. ActionBar (Menu) : berfungsi untuk menampilkan menu

4. ImageView : berfungsi untuk menampilkan gambar

5. Acvitivy (Konten) : berfungsi sebagai tempat pesan yang terkirim.

6. Button (Add) : digunakan untuk menambah foto yang dikirim dan

sekaligus disimpan di database

Universitas Sumatera Utara

Page 57: implementasi konsep hybrid algoritma rsa

41

c. Halaman Info Detail tentang Citra

Dari halaman timeline, jika gambar diklik maka ditampilkan halaman baru yaitu

halaman info detail tentang citra. Pada halaman ini ada nama pengirim, waktu kirim,

resolusi citra, ukuran citra, info tentang proses enkripsi – dekripsi serta ciphertext

Halaman info detail tentang gambar digambarkan pada interface seperti gambar 3.14.

Gambar 3.14 Perancangan interface halaman info detail tentang gambar

Keterangan gambar:

1. Title Bar (Detail) : berfungsi untuk menampilkan judul halaman

2. Textview : berfungsi untuk menampilkan data pengiriman citra

3. ImageView : berfungsi untuk menampilkan gambar yang diklik dari

timeline

4. Button (Image Info) : digunakan untuk menampilkan kotak dialog detail

proses enkripsi-dekripsi

Universitas Sumatera Utara

Page 58: implementasi konsep hybrid algoritma rsa

42

5. Button (Cipher Text) : digunakan untuk menampilkan kotak dialog ciphertext

d. Kotak dialog About

Kotak dialog about merupakan kotak dialog untuk menampilkan info tentang pembuat

sistem, tahun pembuatan dan juga versi. Gambar 3.16 merupakan rancangan interface

kotak dialog about.

Gambar 3.15 Perancangan kotak dialog about

Keterangan gambar:

1. AlertDialog (About) : berfungsi untuk menampilkan informasi tentang

pembuat aplikasi, jurusan dan kampus pembuat aplikasi, tahun pembuatan dan

versi aplikasi

2. NegativeButton (Close) : berfungsi untuk menutup kotak dialog about

Universitas Sumatera Utara

Page 59: implementasi konsep hybrid algoritma rsa

43

e. Halaman Help

Halaman help merupakan halaman untuk menampilkan panduan penggunaan aplikasi.

Gambar 3.17 merupakan rancangan interface halaman bantuan.

Gambar 3.16 Perancangan interface halaman bantuan

Keterangan gambar:

1. TitleBar : berfungsi untuk menampilkan halaman bantuan

2. TextView : berfungsi untuk menampilkan teks panduan.

Universitas Sumatera Utara

Page 60: implementasi konsep hybrid algoritma rsa

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1.Implementasi

Dalam penelitian ini, sistem dibangun dengan menggunakan bahasa pemrograman Java

dan IDE Android Studio 2.3.3. Terdapat lima halaman utama dalam sistem yang

dibangun, yaitu splash screen sebagai tampilan awal untuk menampilkan judul aplikasi,

halaman timeline untuk menampilkan citra dari database yang telah dekripsi, halaman

detail untuk menampilkan informasi detail tentang citra, halaman bantuan untuk

menampilkan informasi tentang cara penggunaan aplikasi, halaman about untuk

menampilkan informasi tentang pembuat sistem dan tahun pembuatan.

Sistem implementasi algoritma RC4+ dan algoritma RSA Naïve dalam konsep

hybrid ini diberi nama “ImageChat”.

4.1.1. Halaman Awal

Gambar 4.1 Tampilan Halaman Awal Sistem

Universitas Sumatera Utara

Page 61: implementasi konsep hybrid algoritma rsa

45

Halaman awal merupakan tampilan halaman yang muncul ketika user pertama kali

menjalankan sistem. Tampilan halaman awal dapat dilihat pada citra 4.1. Pada citra 4.1

terlihat tampilan halaman awal sistem yang berisi logo dan nama aplikasi.

4.1.2. Halaman Timeline

Halaman ini berfungsi untuk menampilkan citra hasil dekripsi dari database. Jadi semua

citra hasil dekripsi dari database akan ditampilkan di halaman timeline. Selain citra,

halaman timeline juga menampilkan nama pengirim, waktu dan tanggal kirim citra.

Halaman ini akan menjadi home dari aplikasi ini. Tampilan halaman timeline dapat

dilihat pada citra 4.2.

Gambar 4.2 Tampilan Halaman Timeline

4.1.3. Halaman Detail

Untuk memberikan informasi detail tentang data file citra yang tersimpan di databse

yang telah dienkripsi. Tampilan halaman detail algoritma ditunjukkan pada citra 4.3.

Universitas Sumatera Utara

Page 62: implementasi konsep hybrid algoritma rsa

46

Gambar 4.3 Tampilan Halaman Detail

Pada citra 4.3 terlihat halaman untuk menampilkan data dari database yang telah

dekripsi kembali menjadi file citra. Pada halaman ditampilkan citra, nama pengirim,

waktu pengiriman, resolusi dan ukuran citra. Di halaman ini juga ada 2 button yaitu

button image info dan button cipher text.

Button image info berfungsi untuk menampilkan informasi tentang tahap proses

enkripsi – dekripsi file citra, seperti cipher key, public key, private key, waktu enkripsi

citra, waktu dekripsi citra, waktu enkripsi key, waktu dekripsi key. Button cipher text

berfungsi untuk menampilkan cipher text hasil enkripsi citra menggunakan algoritma

RC4+.

4.1.4. Halaman Bantuan

Halaman bantuan berfungsi untuk menampilkan cara penggunaan sistem. Tampilan

Halaman Bantuan dapat dilihat pada citra 4.4.

Universitas Sumatera Utara

Page 63: implementasi konsep hybrid algoritma rsa

47

Gambar 4.4 Tampilan Halaman Bantuan

Citra 4.4 terlihat tampilan halaman bantuan untuk cara penggunaan sistem.

Panduannya yaitu mulai dari Sign Up, Sign In, kirim foto, proses enkripsi, about,

bantuan, dan exit.

4.1.5. Halaman About

Halaman about berisi tentang profil pembuat sistem dan tahun pembuatan. Tampilan

halaman dekripsi dapat dilihat pada citra 4.5.

Gambar 4.5 Tampilan Halaman About

Universitas Sumatera Utara

Page 64: implementasi konsep hybrid algoritma rsa
Page 65: implementasi konsep hybrid algoritma rsa
Page 66: implementasi konsep hybrid algoritma rsa
Page 67: implementasi konsep hybrid algoritma rsa
Page 68: implementasi konsep hybrid algoritma rsa
Page 69: implementasi konsep hybrid algoritma rsa
Page 70: implementasi konsep hybrid algoritma rsa
Page 71: implementasi konsep hybrid algoritma rsa
Page 72: implementasi konsep hybrid algoritma rsa
Page 73: implementasi konsep hybrid algoritma rsa
Page 74: implementasi konsep hybrid algoritma rsa

58

d = 100

i = 105

Dengan nilai i =0, dilakukan perhitungan nilai j yang pertama melalui perhitungan

berikut:

j = (j + S[i] + key[i mod keylength]) mod 256

j = (0 + S[0] + key[0 mod 5]) mod 256

j = (0 + 0 + key[0]) mod 256

j = (0 + 0 + 110) mod 256

j = 110 mod 256 = 110

Nilai S[0] ditukar dengan nilai S[110], maka nilai S[0] berubah menjadi 110 dan nilai

S[110] berubah menjadi 0.

Kemudian nilai i yang berikutnya i=1, dilakukan perhitungan untuk nilai j = 110. Proses

perhitungan adalah sebagai berikut ini:

j = (j + S[i] + key[i mod keylength]) mod 256

j = (110 + S[1] + key[1 mod 5]) mod 256

j = (110 + 1 + key[1]) mod 256

j = (110 + 1 + 97) mod 256

j = 108 mod 256 = 108

Nilai S[1] ditukar dengan nilai S[108], maka nilai S[1] berubah menjadi 108 dan nilai

S[108] berubah menjadi 1.

Perhitungan pada i=2:

j = (j + S[i] + key[i mod keylength]) mod 256

j = (108 + S[2] + key[2 mod 5]) mod 256

j = (108 + 2 + key[2]) mod 256

j = (108 + 2 + 108) mod 256

j = 218 mod 256 = 218

Maka S[2] = 218 dan S[218] = 2.

Perhitungan pada i=3:

j = (j + S[i] + key[i mod keylength]) mod 256

j = (218 + S[3] + key[3 mod 5]) mod 256

j = (218 + 3 + key[3]) mod 256

j = (218 + 3 + 100) mod 256

j = 321 mod 256 = 65

Universitas Sumatera Utara

Page 75: implementasi konsep hybrid algoritma rsa

59

Maka S[3] = 65 dan S[65] = 3.

Perhitungan pada i=4:

j = (j + S[i] + key[i mod keylength]) mod 256

j = (65 + S[4] + key[4 mod 5]) mod 256

j = (64 + 4 + key[4]) mod 256

j = (64 + 4 + 105) mod 256

j = 173 mod 256 = 173

Maka S[4] = 173 dan S[173] = 4.

Proses perhitungan j dilakukan hingga i mencapai nilai 255. State akhir yang didapat

dalam tahap KSA setelah i mencapai nilai 255 ditunjukkan pada tabel berikut ini:

Tabel 4.3 Hasil Akhir Tahap Key Scheduling Algorithm (KSA)

0 1 2 3 4 5 6 7 8 9 10 11 12 13

54 143 102 118 18 133 89 234 85 175 65 94 153 202

14 15 16 17 18 19 20 21 22 23 24 25 26 27

142 150 111 6 190 78 141 200 26 197 157 41 188 132

28 29 30 31 32 33 34 35 36 37 38 39 40 41

79 230 97 170 80 220 103 248 125 59 140 15 12 115

42 43 44 45 46 47 48 49 50 51 52 53 54 55

67 154 139 156 108 66 100 244 148 47 155 30 110 177

56 57 58 59 60 61 62 63 64 65 66 67 68 69

138 209 14 55 27 227 217 83 71 45 22 221 93 63

70 71 72 73 74 75 76 77 78 79 80 81 82 83

236 144 74 195 122 251 168 178 1 38 191 203 0 128

84 85 86 87 88 89 90 91 92 93 94 95 96 97

172 16 109 215 159 104 255 43 131 210 49 69 73 24

98 99 100 101 102 103 104 105 106 107 108 109 110 111

28 34 231 62 20 77 179 245 98 187 242 130 81 127

112 113 114 115 116 117 118 119 120 121 122 123 124 125

127 185 50 117 123 64 165 87 201 163 137 222 218 166

126 127 128 129 130 131 132 133 134 135 136 137 138 139

58 75 219 5 136 76 145 253 36 7 149 121 2 180

140 141 142 143 144 145 146 147 148 149 150 151 152 153

152 124 88 44 147 146 207 205 239 68 164 233 184 51

154 155 156 157 158 159 160 161 162 163 164 165 166 167

212 21 160 167 161 37 23 25 4 116 241 129 192 60

168 169 170 171 172 173 174 175 176 177 178 179 180 181

Universitas Sumatera Utara

Page 76: implementasi konsep hybrid algoritma rsa

60

46 158 39 193 199 29 134 126 72 3 53 247 151 246

182 183 184 185 186 187 188 189 190 191 192 193 194 195

70 189 48 232 183 250 176 173 214 10 17 113 96 35

196 197 198 199 200 201 202 203 204 205 206 207 208 209

243 194 186 42 224 229 114 240 213 226 99 211 237 119

210 211 212 213 214 215 216 217 218 219 220 221 222 223

169 91 56 235 84 57 249 162 238 174 90 92 112 40

224 225 226 227 228 229 230 231 232 233 234 235 236 237

107 120 252 9 198 182 196 11 135 208 95 225 31 106

238 239 240 241 242 243 244 245 246 247 248 249 250 251

82 181 171 254 228 52 33 105 86 101 216 13 8 32

252 253 254 255

19 61 223 28

Pada tabel 4.3 di atas, yang berwarna biru menunjukkan nilai i, sedangkan nilai

dari S[i] ditunjukkan oleh baris yang berwarna putih.

Hasil akhir pada tabel 4.3 diatas adalah hasil dari perulangan sebanyak nilai k=1 kali.

Di sini penulis menggunakan KSA+, dimana perulangan itu dilakukan sebanyak k>1.

Pada kasus ini dilakukan untuk perulangan k = 3, jadi didapat nilai akhir KSA jika k=2

seperti berikut ini:

[234, 188, 128, 152, 97, 6, 240, 244, 140, 148, 142, 249, 182, 40, 84, 104, 39, 209, 173, 153,

81, 49, 63, 218, 178, 162, 83, 200, 79, 122, 165, 191, 93, 50, 43, 55, 164, 58, 86, 130, 154, 176,

108, 179, 210, 20, 155, 252, 7, 242, 171, 100, 185, 45, 221, 85, 126, 21, 213, 197, 94, 74, 127,

101, 248, 231, 88, 215, 22, 224, 0, 59, 35, 23, 14, 131, 134, 223, 175, 228, 36, 233, 222, 229,

144, 193, 1, 192, 158, 216, 11, 117, 204, 29, 225, 114, 54, 159, 203, 136, 118, 230, 202, 62, 16,

24, 27, 119, 113, 107, 66, 89, 70, 251, 109, 255, 167, 184, 95, 112, 64, 48, 121, 124, 237, 146,

26, 53, 60, 168, 241, 166, 47, 68, 98, 37, 149, 87, 226, 245, 116, 75, 18, 5, 99, 141, 157, 208,

73, 77, 232, 190, 32, 186, 187, 151, 243, 250, 17, 111, 34, 174, 239, 219, 220, 199, 69, 42, 137,

180, 189, 253, 90, 31, 177, 56, 120, 57, 227, 156, 44, 91, 161, 96, 110, 183, 236, 212, 211, 139,

206, 195, 214, 82, 247, 163, 138, 71, 102, 78, 80, 15, 129, 72, 76, 133, 160, 13, 8, 150, 67, 41,

246, 123, 106, 196, 194, 181, 145, 103, 115, 12, 238, 51, 201, 207, 92, 9, 65, 3, 235, 125, 33,

105, 25, 2, 170, 143, 135, 198, 38, 254, 217, 61, 4, 169, 205, 52, 46, 28, 172, 132, 147, 10, 19,

30]

Berikut ini nilai akhir KSA dengan k = 3:

0 1 2 3 4 5 6 7 8 9 10 11 12 13

52 51 246 78 214 181 67 105 104 43 111 101 200 94

14 15 16 17 18 19 20 21 22 23 24 25 26 27

143 213 173 110 153 185 47 119 5 176 224 237 13 223

28 29 30 31 32 33 34 35 36 37 38 39 40 41

247 228 205 118 248 250 232 58 156 216 245 19 1 253

Universitas Sumatera Utara

Page 77: implementasi konsep hybrid algoritma rsa

61

42 43 44 45 46 47 48 49 50 51 52 53 54 55

198 29 207 49 114 152 171 75 149 252 170 146 183 98

56 57 58 59 60 61 62 63 64 65 66 67 68 69

230 235 33 226 59 124 88 28 81 190 174 65 225 40

70 71 72 73 74 75 76 77 78 79 80 81 82 83

136 57 121 212 187 217 127 60 32 231 148 211 255 155

84 85 86 87 88 89 90 91 92 93 94 95 96 97

113 162 80 26 239 131 167 36 238 140 66 74 89 112

98 99 100 101 102 103 104 105 106 107 108 109 110 111

38 92 37 24 178 109 93 147 132 138 188 64 194 165

112 113 114 115 116 117 118 119 120 121 122 123 124 125

137 161 241 154 70 46 244 195 4 166 85 41 159 44

126 127 128 129 130 131 132 133 134 135 136 137 138 139

83 79 7 99 3 206 150 145 135 218 14 25 139 186

140 141 142 143 144 145 146 147 148 149 150 151 152 153

221 142 22 106 86 180 208 202 191 20 50 82 133 234

154 155 156 157 158 159 160 161 162 163 164 165 166 167

72 229 95 184 219 160 9 242 182 97 76 129 87 199

168 169 170 171 172 173 174 175 176 177 178 179 180 181

243 126 128 115 61 125 73 68 45 84 69 0 220 55

182 183 184 185 186 187 188 189 190 191 192 193 194 195

31 227 30 163 130 172 123 201 102 39 15 196 209 192

196 197 198 199 200 201 202 203 204 205 206 207 208 209

164 120 100 48 189 77 103 203 141 157 108 21 16 35

210 211 212 213 214 215 216 217 218 219 220 221 222 223

254 116 12 17 91 151 215 6 11 62 134 158 240 122

224 225 226 227 228 229 230 231 232 233 234 235 236 237

34 107 71 204 90 18 179 23 96 251 169 249 168 54

238 239 240 241 242 243 244 245 246 247 248 249 250 251

2 10 144 222 177 42 193 27 63 53 56 8 233 210

252 253 254 255

175 117 236 197

b. Tahap Pseudo Random Generation Algoritma (PRGA+)

Pada tahap PRGA, pesan akan dienkripsi. Pesan yang dienkripsi adalah string Base64

hasil konversi dari citra .jpg yang berukuran 20 x 20 piksel. Karena hasil konversi citra

ke string Base64 menghasilkan 1787 karakter, maka penulis melakukan enkripsi pada

karakter pertama, tengah, dan terakhir yaitu karakter ke-1, ke-894, dan ke-1787 yaitu:

“/9k”.

Karakter “/”

Universitas Sumatera Utara

Page 78: implementasi konsep hybrid algoritma rsa

62

Dilakukan inisialisasi pada nilai i dan j sama dengan 0. Kemudian inisialisasi a = S[i]

dan b = S[j]. Selanjutnya lakukan perhitungan i, j, a,b,c dan z yang baru dengan cara:

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

a=S[i] = S[1] = 51

j = (j + a) mod 256 = (0+51) mod 256 = 51

Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut

b=S[j] = S[51] =252

S[i]=b = S[1] =252

S[j]=a = S[252] =51

Dari perhitungan di atas didapatkan S[1]=252 dan S[252]=51. Selanjutnya hitung nilai

c dengan cara:

𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) (i≫3)) mod 256]) mod 256

𝑐 = (S[((1≪5) (252≫3)) mod 256] + S[((252≪5) (1≫3)) mod 256]) mod 256

𝑐 = (S[(32 31) mod 256] + S[(8064 0) mod 256]) mod 256

𝑐 = (S[(63) mod 256] + S[(8064) mod 256]) mod 256

𝑐 = (S[63] + S[128]) mod 256

𝑐 = (28 + 7) mod 256

c = 35 mod 256

c = 35

Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut :

𝑧 = ((S[(a + b) mod 256] + S[((c 170 ) mod 256)]) S[(j + b) mod 256]) mod 256

𝑧 = ((S[(51 +252) mod 256] + S[((35 170 ) mod 256)]) S[(51 + 252) mod 256])

mod 256

𝑧 = ((S[(303) mod 256] + S[((137) mod 256)]) S[(303) mod 256]) mod 256

𝑧 =((S[47] + S[137]) S[47]) mod 256

𝑧 =((152 + 25 ) 152) mod 256

𝑧 =((177) 152) mod 256

𝑧 = 41 mod 256

z = 41

Universitas Sumatera Utara

Page 79: implementasi konsep hybrid algoritma rsa

63

Kemudian lakukan operasi XOR pada nilai ASCII “/”=47 dan nilai dari z = 41, yaitu:

0010 1111

0010 1001

0000 0110 = 610 dalam tabel ASCII merupakan karakter “ACK” = Non Printable

Karakter “k”

Dilakukan inisialisasi pada nilai i dan j sama dengan 0. Kemudian inisialisasi a = S[i]

dan b = S[j]. Selanjutnya lakukan perhitungan i, j, a,b,c dan z yang baru dengan cara:

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

a=S[i] = S[1] = 51

j = (j + a) mod 256 = (0+51) mod 256 = 51

Selanjutnya tukarkan nilai S[i] dan S[j] dengan cara sebagai berikut

b=S[j] = S[51] =252

S[i]=b = S[1] =252

S[j]=a = S[252] =51

Dari perhitungan di atas didapatkan S[1]=252 dan S[252]=51. Selanjutnya hitung nilai

c dengan cara:

𝑐 = (𝑆[((i≪5) (j≫3)) mod 256] + 𝑆[((j≪5) (i≫3)) mod 256]) mod 256

𝑐 = (S[((1≪5) (252≫3)) mod 256] + S[((252≪5) (1≫3)) mod 256]) mod 256

𝑐 = (S[(32 31) mod 256] + S[(8064 0) mod 256]) mod 256

𝑐 = (S[(63) mod 256] + S[(8064) mod 256]) mod 256

𝑐 = (S[63] + S[128]) mod 256

𝑐 = (28 + 7) mod 256

c = 35 mod 256

c = 35

Setelah mendapatkan nilai c, selanjutnya hitung nilai z dengan cara sebagai berikut :

𝑧 = ((S[(a + b) mod 256] + S[((c 170 ) mod 256)]) S[(j + b) mod 256]) mod 256

𝑧 = ((S[(51 +252) mod 256] + S[((35 170 ) mod 256)]) S[(51 + 252) mod 256])

mod 256

𝑧 = ((S[(303) mod 256] + S[((137) mod 256)]) S[(303) mod 256]) mod 256

𝑧 =((S[47] + S[137]) S[47]) mod 256

Universitas Sumatera Utara

Page 80: implementasi konsep hybrid algoritma rsa

64

𝑧 =((152 + 25 ) 152) mod 256

𝑧 =((177) 152) mod 256

𝑧 = 41 mod 256

z = 41

Kemudian lakukan operasi XOR pada nilai ASCII “/”=47 dan nilai dari z = 41, yaitu:

0010 1111

0010 1001

0000 0110 = 610 dalam tabel ASCII merupakan karakter “ACK” = Non Printable

2. Enkripsi Algoritma RSA Naïve

Proses enkripsi menggunakan algoritma RSA Naïve dilakukan setelah mendapat kunci

RC4+ dan setelah mendapatkan hasil pengacakan untuk bilangan prima p dan q.

Pada proses pengacakan sebelumnya diperoleh kunci RC4+ adalah “naldi”; nilai p dan

q, yaitu: 1543 dan 5419.

Langkah selanjutnya menghitung nilai kunci publik n dan ɸ:

n = 1543 * 5419 = 83615117

ɸ(n) = 1542*5418 = 8354556

Kemudian mencari nilai kunci publik e dimana 1 < e < ɸ(n) adalah bilangan bulat

kemudian menghitung nilai GCD(e, ɸ)=1 atau e relatif prima terhadap ɸ. Didapat e =

7561. Cek nilai e apakah memenuhi syarat GCD(7561, 8354556) = 1:

8354556 mod 7561 = 7212

7561 mod 7212 = 349

7212 mod 349 = 232

349 mod 232 = 117

232 mod 117 = 115

117 mod 115 = 2

115 mod 2 = 1

Dari pengujian nilai e memenuhi syarat. Kemudian proses enkripsi dimulai untuk kunci

“naldi”

m = naldi

Karakter di atas dipecah menjadi n, a, l, d, dan i kemudian diambil kode ASCII.

n =110 (m1)

a = 97 (m2)

Universitas Sumatera Utara

Page 81: implementasi konsep hybrid algoritma rsa

65

l = 108 (m3)

d = 100 (m4)

i = 105 (m5)

Dengan mendapat nilai e = 7561 dan n = 8361517. Langkah selanjutnya mencari nilai

biner dari e = 7561.

7561 3780 1890 945 472 236 118 59 29 14 7 3 1 0

1 0 0 1 0 0 0 1 1 0 1 1 1

Proses enkripsi untuk karakter “n” dengan kode ASCII = 110

c1 = 1 * 1 * 8361517 mod 8361517 = 110 (e = 1)

c1 = 110 * 110 * 8361517 mod 8361517 = 1331000 (e = 3)

c1 = 1331000 * 1331000 * 8361517 mod 8361517 = 885672 (e = 7)

c1 = 885672 * 885672 mod 8361517 = 4258780 (e = 14)

c1 = 4258780 * 4258780 * 8361517 mod 8361517 = 6167212 (e = 29)

c1 = 6167212 * 6167212 * 8361517 mod 8361517 = 4126406 (e = 59)

c1= 4126406 * 4126406 mod 8361517 = 488376 (e = 118)

c1 = 488376 * 488376 mod 8361517 = 7206468 (e = 236)

c1= 7206468 * 7206468 mod 8361517 = 7985949 (e = 472)

c1 = 7985949 * 7985949 * 8361517 mod 8361517 = 6181923 (e = 945)

c1 = 6181923 * 6181923 mod 8361517 = 675218 (e = 1890)

c1 = 675218 * 675218 mod 8361517 = 7633099 (e = 3780)

c1 = 7633099 * 7633099 * 8361517 mod 8361517 = 2990451 (e = 7561)

Hasil enkripsi yang diambil adalah nilai terakhir setelah nilai e mencapai 7561.

Proses enkripsi untuk karakter “a” dengan kode ASCII = 97

c2 = 1 * 1 * 8361517 mod 8361517 = 97

c2 = 97 * 97 * 8361517 mod 8361517 = 912673

c2 = 912673 * 912673 * 8361517 mod 8361517 = 855692

c2 = 855692 * 855692 mod 8361517 = 7478208

c2 = 7478208 * 7478208 * 8361517 mod 8361517 = 165700

c2 = 165700 * 165700 * 8361517 mod 8361517 = 2581228

c2 = 2581228 * 2581228 mod 8361517 = 5312323

c2 = 5312323 * 5312323 mod 8361517 = 3583003

c2 = 3583003 * 3583003 mod 8361517 = 5202957

c2 = 5202957 * 5202957 * 8361517 mod 8361517 = 2022282

c2 = 2022282 * 2022282 mod 8361517 = 6522824

c2 = 6522824 * 6522824 mod 8361517 = 4864190

c2 = 4864190 * 4864190 * 8361517 mod 8361517 = 2925796

Proses enkripsi untuk karakter “l” dengan kode ASCII = 108

c3 = 1 * 1 * 8361517 mod 8361517 = 108

c3 = 108 * 108 * 8361517 mod 8361517 = 1259712

c3 = 1259712 * 1259712 * 8361517 mod 8361517 = 19745

c3 = 19745 * 19745 mod 8361517 = 5235243

c3 = 5235243 * 5235243 * 8361517 mod 8361517 = 3878118

c3 = 3878118 * 3878118 * 8361517 mod 8361517 = 7199090

Universitas Sumatera Utara

Page 82: implementasi konsep hybrid algoritma rsa

66

c3 = 7199090 * 7199090 mod 8361517 = 7021612

c3 = 7021612 * 7021612 mod 8361517 = 2286370

c3 = 2286370 * 2286370 mod 8361517 = 1132772

c3 = 1132772 * 1132772 * 8361517 mod 8361517 = 7484652

c3 = 7484652 * 7484652 mod 8361517 = 570973

c3 = 570973 * 570973 mod 8361517 = 2980416

c3 = 2980416 * 2980416 * 8361517 mod 8361517 = 4086137

Proses enkripsi untuk karakter “d” dengan kode ASCII = 100

c4 = 1 * 1 * 8361517 mod 8361517 = 100

c4 = 100 * 100 * 8361517 mod 8361517 = 1000000

c4 = 1000000 * 1000000 * 8361517 mod 8361517 = 2639616

c4 = 2639616 * 2639616 mod 8361517 = 4126526

c4 = 4126526 * 4126526 * 8361517 mod 8361517 = 45150

c4 = 45150 * 45150 * 8361517 mod 8361517 = 6827057

c4 = 6827057 * 6827057 mod 8361517 = 6111985

c4 = 6111985 * 6111985 mod 8361517 = 4130624

c4 = 4130624 * 4130624 mod 8361517 = 2922611

c4 = 2922611 * 2922611 * 8361517 mod 8361517 = 4352810

c4 = 4352810 * 4352810 mod 8361517 = 8219610

c4 = 8219610 * 8219610 mod 8361517 = 3063713

c4 = 3063713 * 3063713 * 8361517 mod 8361517 = 4570236

Proses enkripsi untuk karakter “i” dengan kode ASCII = 105

c5 = 1 * 1 * 8361517 mod 8361517 = 105

c5 = 105 * 105 * 8361517 mod 8361517 = 1157625

c5 = 1157625 * 1157625 * 8361517 mod 8361517 = 988178

c5 = 988178 * 988178 mod 8361517 = 4358356

c5 = 4358356 * 4358356 * 8361517 mod 8361517 = 1624502

c5 = 1624502 * 1624502 * 8361517 mod 8361517 = 1901518

c5 = 1901518 * 1901518 mod 8361517 = 8269531

c5 = 8269531 * 8269531 mod 8361517 = 7930509

c5 = 7930509 * 7930509 mod 8361517 = 72875

c5 = 72875 * 72875 * 8361517 mod 8361517 = 821895

c5 = 821895 * 821895 mod 8361517 = 1155629

c5 = 1155629 * 1155629 mod 8361517 = 1974952

c5 = 1974952 * 1974952 * 8361517 mod 8361517 = 2593742

4.2.3 Pengujian Hasil Dekripsi Algoritma RC4+ dan Algoritma RSA Naïve

a. Pengujian Hasil Dekripsi dengan Sistem

Proses dekripsi dimulai dengan melakukan dekripsi pada cipherkey terlebih dahulu

dengan algoritma RSA Naïve sehingga menghasilkan key yang akan digunakan untuk

mengenkripsi ciphertext dengan algoritma RC4+ sehingga didapatkan kembali

plaintext. Data ciphertext dan cipherkey yang didekripsi adalah file yang tersimpan di

Firebase.

Universitas Sumatera Utara

Page 83: implementasi konsep hybrid algoritma rsa

67

Langkah pertama kali dilakukan adalah dengan mengakses data ciphertext,

cipherkey, kunci publik n dan kunci privat d RSA Naïve dari database Firebase.

Selanjutnya cipherkey didekripsi terlebih dahulu menggunakan pasangan kunci publik

n dan kunci privat e untuk mendapatkan kunci algoritma RC4+. Setelah kunci didapat,

selanjutnya ciphertext dienkripsi menggunakan algoritma RC4+ sehingga didapat

plainteks berupa string Base64. Langkah selanjutnya adalah mengkonversi string

Base64 menjadi citra dan ditampilkan di halaman timeline sistem.

Langkah – langkah ini dilakukan sampai semua pesan yang tesimpan di database

selesai didekripsi dan ditampilkan di halaman timeline seperti pada gambar berikut:

Gambar 4.12 Gambar setelah proses dekripsi dari database ditampilkan di

halaman timeline

Universitas Sumatera Utara

Page 84: implementasi konsep hybrid algoritma rsa

68

Data proses enkripsi – dekripsi beserta ciphertext dapat dilihat di halaman detail seperti

pada gambar berikut ini:

Gambar 4. 13 Detail proses enkripsi – dekripsi dan ciphertext ditampilkan di halaman

detail

4.2.4 Waktu Proses

a. Waktu Proses Enkripsi – Dekripsi Citra .jpg menggunakan algoritma RC4+

Tujuan dari pengujian ini adalah untuk memperoleh pengaruh besar resolusi gambar

yang diuji dengan waktu proses algoritma. Pada pengujian ini dilakukan untuk 8 file

citra .jpg dengan resolusi yang berbeda yaitu citra dengan ukuran 20px x 20px, 30px x

30px, 50px x 50px, 75px x 75px, 100px x 100px dan seterusnya yang ditunjukkan pada

tabel 4.4.

Untuk waktu proses setiap citra dapat dilihat pada tabel berikut ini:

Universitas Sumatera Utara

Page 85: implementasi konsep hybrid algoritma rsa

69

Tabel 4.4 Waktu Proses Enkripsi – Dekripsi Citra

Gambar Resolusi Kunci

RC4+

Waktu Proses Citra

Waktu

Enkripsi

(ms)

Waktu

Dekripsi

(ms)

20 x 20px naldi 1,668542 1,059167

30 x 30px naldi 3,345468 1,125469

50 x 50px naldi 4,60401 1,778021

75 x 75px naldi 6,552344 2,7799448

100 x 100px naldi 8,473125 3,846458

125 x 125px naldi 8,648282 5,732604

150 x 150px naldi 20,781042 7,834427

200 x 200px naldi 24,886458 9,699167

Pada tabel di atas uji 5 file citra .jpg dengan resolusi berbeda – beda namun

menggunakan kunci enkripsi algoritma RC4+. Untuk melihat pengaruh resolusi gambar

terhadap waktu proses pada saat enkripsi dan dekripsi dapat dilihat pada grafik berikut

ini:

Universitas Sumatera Utara

Page 86: implementasi konsep hybrid algoritma rsa

70

Gambar 4.14 Pengaruh resolusi citra terhadap waktu proses pada tahap enkripsi dan

dekripsi

Dari grafik di atas, dapat diperoleh kesimpulan bahwa pada tahap enkripsi

maupun tahap dekripsi citra, semakin tinggi resolusinya maka semakin lama pula waktu

proses yang dibutuhkan. Waktu proses meningkat secara linear. Jika dilihat dari grafik,

ternyata waktu proses yang dibutuhkan untuk tahap dekripsi lebih cepat jika

dibandingkan pada tahap enkripsi citra.

a. Waktu Proses Enkripsi – Dekripsi Kunci menggunakan algoritma RSA

Naïve

Proses perhitungan waktu proses dilakukan terhadap kunci hasil pengacakan yang

digunakan untuk enkripsi pada plaintext dengan algoritma RC4+. Kunci ini kemudian

dienkripsi lagi dengan algoritma RSA Naïve sehingga menghasilkan cipherkey.

Pada pengujian ini akan dihitung waktu proses untuk tahap enkripsi dan dekripsi

kunci terhadap 5 kunci hasil pengacakan dari ASCII dengan panjang 5 karakter.

0

5

10

15

20

25

30

20 x 20piksel

30 x 30piksel

50 x 50piksel

75 x 75piksel

100 x 100piksel

125 x 125piksel

150 x 150piksel

200 x 200piksel

Pengaruh Resolusi Citra terhadap Waktu Proses

Enkripsi Dekripsi

Universitas Sumatera Utara

Page 87: implementasi konsep hybrid algoritma rsa

71

Tabel 4.5 Waktu Proses Enkripsi – Dekripsi pada Kunci

Gambar Resolusi Kunci

RC4+

Waktu Proses Kunci

Waktu

Enkripsi

(ms)

Waktu

Dekripsi

(ms)

20 x 20px Ēăê©< 9,318021 3,921459

30 x 20px ¯@Ĉ[Ě 10,117031 4,613073

50 x 50px ÎDÃ|Ĕ 8,738593 3,94724

75 x 75px ęJĿ6a 17,689687 4,765729

100 x 100px H±ĿİÒ 9,560989 4,465313

125 x 125px úēÀÓB 24,137344 4,499062

150 x 150px xīĄ=8 11,340833 4,543125

200 x 200px -Q$üï 8,492657 4,871823

Pada tabel di atas dilakukan pengujian terhadap 5 kunci yang berbeda, hasil dari

pengacakan sepanjang 5 karakter.

Untuk melihat pengaruh resolusi gambar terhadap waktu proses pada saat enkripsi dan

dekripsi dapat dilihat pada grafik berikut ini:

Universitas Sumatera Utara

Page 88: implementasi konsep hybrid algoritma rsa

72

Gambar 4.15 Grafik waktu proses pada tahap enkripsi dan dekripsi kunci dengan

algoritma RSA Naïve

Jika diperhatikan dari grafik di atas, tampak bahwa waktu proses enkripsi dan

dekripsi kunci tidak dipengaruhi oleh tingkat resolusi citra atau pun karakter dari

kunci tersebut. Grafik menunjukkan bahwa proses enkripsi dan dekripsi pada

algoritma RSA-Naïve memiliki waktu yang konstan. Peningkatan waktu pada proses

enkripsi dan dekripsi RSA-Naïve dipengaruhi oleh nilai e dan d.

4.2.5 Panjang Pesan

Tujuan dari pengujian ini adalah untuk memperoleh pengaruh besar resolusi gambar

yang diuji dengan waktu proses algoritma. Pada pengujian ini dilakukan untuk 5 file

citra .jpg dengan resolusi yang berbeda.

Tabel 4.6 Pengaruh Resolusi Citra terhadap Panjang Pesan

Gambar Resolusi Kunci

RC4+

Panjang

Base64

Panjang

Ciphertext

20 x 20px naldi 1826 2834

30 x 30px naldi 2382 3637

0

5

10

15

20

25

30

20 x 20piksel

30 x 30piksel

50 x 50piksel

75 x 75piksel

100 x 100piksel

125 x 125piksel

150 x150piksel

200 x 200piksel

Waktu Proses untuk Enkripsi dan Dekripsi Kunci dengan Algoritma RSA

Enkripsi Dekripsi

Universitas Sumatera Utara

Page 89: implementasi konsep hybrid algoritma rsa

73

50 x 50px naldi 3934 6001

75 x 75px naldi 6310 9565

100 x 100px naldi 8424 114447

Pada sistem ini, citra .jpg yang ingin dienkripsi menjadi pesan teks (Ciphertext)

harus terlebih dahulu dikonversi menjadi string Base64. Setelah didapatkan pesan

dalam bentuk string Base64, maka selanjutnya boleh dienkripsi menggunakan

algoritma RC4+.

Gambar 4.16 Pengaruh Resolusi Citra terhadap Panjang Pesan

0

2000

4000

6000

8000

10000

12000

14000

20 x 20 piksel 30 x 30 piksel 50 x 50 piksel 75 x 75 piksel 100 x 100 piksel

Pengaruh Resolusi Citra terhadap Panjang Pesan

Base64 Ciphertext

Universitas Sumatera Utara

Page 90: implementasi konsep hybrid algoritma rsa

74

Pada gambar 4.16, terlihat grafik yang menampilkan panjang string untuk Base64 dan

ciphertext, dimana pada setiap citra .jpg dengan resolusi tertentu memiliki peningkatan

panjang pesan setelah dienkripsi dari string Base64 menjadi ciphertext.

Universitas Sumatera Utara

Page 91: implementasi konsep hybrid algoritma rsa

BAB 5

KESIMPULAN DAN SARAN

5.1.Kesimpulan

Berdasarkan analisis, perancangan, dan pengujian dari penelitian kombinasi kedua

algoritma RC4+ dan RSA-Naïve, maka diperoleh beberapa kesimpulan:

1. Dalam melakukan enkripsi citra pada bahasa Java, citra .jpg harus dikonversi

terlebih dahulu ke dalam citra bitmap.

2. Proses enkripsi dekripsi dari kombinasi kedua algoritma RC4+ dan algoritma RSA-

Naïve memenuhi kriteria keutuhan data.

3. Semakin besar tingkat resolusi citra .jpg, ciphertext yang dihasilkan semakin

panjang karena dipengaruhi oleh banyaknya piksel.

4. Berdasarkan grafik, peningkatan waktu proses dalam enkripsi dan dekripsi citra

JPG berbanding lurus secara linear terhadap tingkat resolusi citra.

5. Pada algoritma RC4+, waktu proses enkripsi lebih lama dibanding dengan waktu

proses dekripsi, sedangkan pada algoritma RSA-Naïve, waktu proses enkripsi dan

dekripsi dipengaruhi oleh nilai e dan d.

5.2. Saran

Berdasarkan penelitian ini, beberapa saran yang dapat dipertimbangkan untuk

mengembangkan penelitian ini adalah adalah sebagai berikut:

1. Penelitian ini hanya mengamankan file citra dengan ekstensi .jpg, selanjutnya

diharapkan mampu mengamankan file citra dengan ekstensi lainnya, seperti png,

dan lainnya.

2. Penelitian ini hanya mengamankan file citra, selanjutnya dapat mengamankan file

lain seperti file audio, video, dan lainnya.

Universitas Sumatera Utara

Page 92: implementasi konsep hybrid algoritma rsa

76

3. Penelitian ini menggunakan bahasa pemrograman Java, diharapkan pada

penelitian selanjutnya dapat menggunakan bahasa lainnya seperti C#, Javascript,

dan lainnya.

4. Pada penelitian ini, nilai public key RSA-Naïve dibangkitkan setiap mengirimkan

pesan, selanjutnya harapkan nilai public key dibangkitkan sekali saja untuk setiap

akun yang terdaftar dalam sistem.

5. Pada algoritma RSA-Naïve, generate kunci belum memenuhi standar RCSV, diharapkan

selanjutkan memenuhi standar yang telah ditentukan.

Universitas Sumatera Utara

Page 93: implementasi konsep hybrid algoritma rsa

77

DAFTAR PUSTAKA

Arifin, Zainal. 2009. Studi Kasus Penggunaan Algoritma RSA Sebagai Algoritma

Kriptografi yang Aman, Jurnal Informatika Mulawarman Vol 4 No. 3

Ariyus, Dony. 2006. Kriptografi Keamanan Data dan Komunikasi. Yogyakarta:

Penerbit Graha Ilmu.

Banik, Subhadeep., Sarkar, Santanu & R. Kacker. 2013.Security Analysis of RC4+

Stream Cipher. In INDOCRYPT, LNCS, Vol. 8250, pp. 297-307.

Banik, Subhadeep. & Sonu Jha, 2015. “Some Security Results of The RC4+ Stream

Cipher”. Security and Communication Network, 8(18), (ISSN : 1939-0114),

4061-4072.

Basri, 2016. “Kriptografi Simetris dan Asimetris dalam Perspektif Keamanan Data dan

Kompleksitas Komputasi”. Jurnal Ilmiah Ilmu Komputer, 2(2), (ISSN:2442-

4512), 2503 – 3832.

Churchouse, R. F. 2002. Code and Ciphers: Julius Caesar, the enigma and the Internet,

Cambridge University Press.

Dwi Nugroho., Andreas & Rinaldi Munir, 2015. “Aplikasi Enkripsi Instant Messaging

Pada Perangkat Mobile Dengan Menggunakan Algoritma Elliptic Curve

Cryptography (ECC)”. KNIF 2015:146 – 151.

Florez Z., Jimmy, Camila Logreira R., Mario Muñoz & Jesús Francisco Vargas., 2016.

“Architecture of Instant Messaging Systems for Secure Data Transmission”.

Security Technology (ICCST), (ISSN: 2153 – 0742).

Hermawati, F.A. 2013. Pengolahan Citra Digital Konsep & Teori. ANDI : Yogyakarta.

Kumar., Anil & Rohini Sharma. 2013. “A Secure Image Steganography Based on RSA

Algorithm and Hash-LSB Technique”. IJARCSSE Vol. 3, No. 7

Kuppuswamy, P. & Al-Khalidi, S.Q.Y. 2014. “Hybrid Encryption/Decryption

Technique Using New Public Key and Symmetric Key Algorithm”, Vol. 19, No.

2, pp.1-13.

Meenakshi, P.Akshaya Shankara. 2014. Hybrid Cryptographic Technique Using RSA

Algorithm and Schenduling Concepts. International Journal of Network Security

& Its Applications (IJNSA) Vol.6, No.6

Meyer, D. 2013. Chat apps have overtaken SMS by message volume, but how big a

disaster is that for carriers? Diambil dari Gigaom:

https://gigaom.com/2013/04/29/chat-apps-have-overtaken-smsby-message-

volume/, Tanggal akses : 10 Juni 2017.

Munir, Rinaldi. 2006. Kriptografi. Bandung: Penerbit Informatika.

Oppliger, Rolf. 2005. Contemporary Cryptography. London : Artech House.

Universitas Sumatera Utara

Page 94: implementasi konsep hybrid algoritma rsa

78

Paul, Goutam, & Subhamoy Maita. 2012. RC4 Stream Cipher and Its Variants. London

: CRC Press Taylor & Francis Group.

Prayudi, Satria. 2013. Kombinasi Algoritma RSA 512-BIT dan One Time Pad untuk

Pengamanan Pesan pada NIC MESSEGER. Skripsi. Universitas Sumatera

Utara.

Sadikin, Rifki. 2016. Kriptografi untuk Keamanan Jaringan. Yogyakarta: Penerbit

Andi.

Schneier, B. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in

C. 2nd Edition. New York.

Smart, Nigel P. 2016. Ceriptograpy Made Simple. New York: Springer Internasional

Publishing Switzerland

Wanda, Putra., Selo, & Bimo Sunafri Hantono, 2014. “Review Sistem Keamanan Data

pada Komunikasi Instant Messenger”. CITEE 2014, (ISSN: 2085-6350), 44-48.

Yan, S. Y. 2008. Cryptanalytic Attacks on RSA. Bedfordshire, Cambridge: Springer.

Universitas Sumatera Utara

Page 95: implementasi konsep hybrid algoritma rsa

A-1

LISTING PROGRAM

MainActivity.java package naldi28.skripsi.imagechat; import android.annotation. SuppressLint ; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.support.annotation. NonNull ; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Base64; import android.view.Menu; import android.view.MenuInflater; import android.view. MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.Toast; import com.firebase.ui.auth.AuthUI; import com.firebase.ui.database.FirebaseRecyclerAdapter; import com.google.android.gms.t asks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import java.io.ByteArrayOutputStr eam; import java.io.FileNotFoundException; import java.io.InputStream; import java.text.DateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Random; import naldi28.skripsi.imagechat.algorithm.myRC4Plus; import naldi28.skripsi.imagechat.algorithm.myRSA; import naldi28.skripsi.imagechat.functional.StaticVariable; import naldi28.skripsi.imagechat.functional.ChatModel; import static

naldi28.skripsi.imagechat.fun ctional.StaticVariable. MAX_IMAGE_HEIGHT; import static

naldi28.skripsi.imagechat.functional.StaticVariable. MAX_IMAGE_WIDTH; import static

naldi28.skripsi.imagechat.functional.StaticVariable. MAX_SIZE; public class MainActivity extends AppCompatActivity implements

View.OnClickListener{ static char[] kar = { 'Ā', 'ā', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ă', 'Ĵ', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'Ķ', 'ķ',

Universitas Sumatera Utara

Page 96: implementasi konsep hybrid algoritma rsa

A-2

'ĸ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'ĉ', 'Ċ', 'ċ', 'Č', ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'Ɗ', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', 'X', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ'}; //random key text

public static String random(){ Random rnd = new Random(); String key = ""; int r; for( int i= 0; i< 5; i++){ r= rnd.nextInt( kar. length); key+= kar[r]; } return key; } final String key = random();

private ArrayList<String> mImageCipherList = new ArrayList<>(); private ArrayList<String> mKeyCipherList = new ArrayList<>(); private ArrayList<String> mPrivateKeyList = new ArrayList<>(); private ArrayList<String> mPrime_pList = new ArrayList<>(); private ArrayList <String> mPrime_qList = new ArrayList<>(); private ArrayList<String> mPublicKey_n = new ArrayList<>(); private ArrayList<String> mPublicKey_e = new ArrayList<>(); private ArrayList<String> mUserList = new ArrayList<>(); private ArrayList< String> mDateList = new ArrayList<>(); private ArrayList<String> mSizeList = new ArrayList<>(); private ArrayList<String> mResolutionList = new ArrayList<>(); private ArrayList<Double> mImageEncryptTimeList = new ArrayList<>(); private Arr ayList<Double> mImageDecryptTimeList = new ArrayList<>(); private ArrayList<Double> mKeyEncryptTimeList = new ArrayList<>(); private ArrayList<Double> mKeyDecryptTimeList = new ArrayList<>();

Universitas Sumatera Utara

Page 97: implementasi konsep hybrid algoritma rsa

A-3

private ArrayList<String> mKeyRC4PlusList = new Arra yList<>(); private ArrayList<Bitmap> mImageList = new ArrayList<>(); DatabaseReference mChatRef = FirebaseDatabase. getInstance().getReference( "chat"); FirebaseRecyclerAdapter<ChatModel, ChatModel.ChatHolder> mAdapter; RecyclerView mRecyclerView; LinearLayoutManager mLinearLayoutManager; FirebaseAuth auth = FirebaseAuth. getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R. layout. activity_main); forceLogin(); mRecyclerView = findViewById(R.id. recycler_list_chat); mLinearLayoutManager = new LinearLayoutManager(getApplicationContext()); mRecyclerView.setLayoutManager( mLinearLayoutManager); mRecyclerView.setItemAnimator( new DefaultItemAnimator()); mAdapter = new FirebaseRecyclerAdapter<ChatModel, ChatModel.ChatHolder> (ChatModel. class, R.layout. item_chat_image, ChatModel.ChatHolder. class, mChatRef) { @Override protected void populateViewHolder(ChatModel.ChatHolder viewHolder, ChatModel chat, int position) { setChat(viewHolder, ch at); }

@Override public ChatModel.ChatHolder onCreateViewHolder(ViewGroup parent, int viewType){ ChatModel.ChatHolder viewHolder = super.onCreateViewHolder(parent, viewType); viewHolder.setOnClickListener( new

ChatModel.ChatHolder.ClickListener() { @Override public void onItemClick(View view, int position) { onClickChat(position); } }); return viewHolder; } };

mAdapter.registerAdapterDataObserver( new

RecyclerView.AdapterDataObserver() { @Override public void onItemRangeInserted( int positionStart, int

itemCount) { super.onItemRangeInserted(positionStart, itemCount);

Universitas Sumatera Utara

Page 98: implementasi konsep hybrid algoritma rsa

A-4

mLinearLayoutManager.smoothScrollToPosition( mRecyclerView, null, mAdapter.getItemCount()); } }); mRecyclerView.setAdapter( mAdapter); ImageButton btnPickImage = findViewById(R.id. button_add_image); btnPickImage.setOnClickListener( this); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu. menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id. menu_logout: AuthUI. getInstance() .signOut( this) .addOnCompleteListen er( new

OnCompleteListener<Void>( ) { public void onComplete( @NonNull Task<Void> task) { Toast. makeText(getApplicationContext(), "User Sign Out", Toast. LENGTH_LONG).show(); forceLogin(); } }); return true; case R.id. menu_about: AlertDialog.Builder builder = new

AlertDialog.Builder(MainActivity. this); builder.setTitle( "About") .setMessage( "Credited by: \nRonaldi

Tumanggor\nIlmu Komputer USU 2017") .setNegativeButton( "Close", null) .show(); return true; case R.id. menu_help: Intent i = new Intent(MainActivity. this, HelpActivity. class); startActivity(i); default: return super.onOptionsItemSelected(item); } } @Override public void onClick(View view) { switch (view.getId()) { case R.id. button_add_image: Intent pickImage = new Intent(Intent. ACTION_PICK);

Universitas Sumatera Utara

Page 99: implementasi konsep hybrid algoritma rsa

A-5

pickImage.setType( "image/jpg"); startActivityForResult(pickImage, StaticVariable. RC_IMAGE_PICK); break; } } @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == StaticVaria ble. RC_IMAGE_PICK) { if (resultCode == RESULT_OK) { if ( auth.getCurrentUser() != null) { try { final Uri imageUri = data.getData();

final InputStream imageStream = getContentResolver().openInputStream(imageUri); final Bitmap selectedImage = BitmapFactory. decodeStream(imageStream); if (selectedImage.getHeight() > MAX_IMAGE_HEIGHT || selectedImage. getWidth() > MAX_IMAGE_WIDTH) { Toast. makeText(getApplicationContext(), "Image is too large. Max: " + MAX_IMAGE_WIDTH + "x" + MAX_IMAGE_HEIGHT + " px", Toast. LENGTH_LONG).show(); if

(Integer. parseInt(getImageSize(selectedImage)) > MAX_SIZE) { Toast. makeText(getApplicationContext(), "Image is too big. Max

size: " + MAX_SIZE, Toast. LENGTH_LONG).show(); } } else { newChat(selectedImage); } } catch (FileNotFoundException err) { err.printStackTrace(); Toast. makeText(getApplicationContext(), "File

not found", Toast. LENGTH_LONG).show(); } } else { fo rceLogin(); } } else { Toast. makeText(getApplicationContext(), "Canceled", Toast. LENGTH_LONG).show(); } } if (requestCode == StaticVariable. RC_SIGN_IN) { // Successfully signed in

Universitas Sumatera Utara

Page 100: implementasi konsep hybrid algoritma rsa

A-6

if (resultCode == RESULT_OK) { Toast. makeText(getApplicationContext(), "SignIn

Complete", Toast. LENGTH_LONG).show(); } else { finish(); } } } @Override protected void onDestroy() { super.onDestroy(); mAdapter.cleanup(); } void forceLogin( ){

if (!isSignedIn()) { startActivityForResult( AuthUI. getInstance() .createSignInIntentBuilder() .setIsSmartLockEnabled( false, true) .build(), StaticVariable. RC_SIGN_IN); } } boolean isSignedIn(){ return auth.getCurrentUser() != null; } void onClickChat( int position) { Bundle chatData = new Bundle(); chatData.putString(StaticVariable. ARG_CHAT_USER, mUserList.get(position)); chatData.putString(StaticVariable. ARG_CHAT_DATE, mDateList.get(position)); chatData.putString(StaticVariable. ARG_CHAT_SIZE, mSizeList.get(position)); chatData.putString(StaticVariable. ARG_CHAT_RESOLUTION, mResolutionList.get(position)); chatData.putString(StaticVari able. ARG_CHAT_CIPHER, mImageCipherList.get(position)); chatData.putDouble(StaticVariable. ARG_IMAGE_ENCRYPT_TIME, mImageEncryptTimeList.get(position)); chatData.putDouble(StaticVariable. ARG_IMAGE_DECRYPT_TIME, mImageDecryptTimeList.get(posit ion)); chatData.putDouble(StaticVariable. ARG_KEY_DECRYPT_TIME, mKeyDecryptTimeList.get(position)); chatData.putDouble(StaticVariable. ARG_KEY_ENCRYPT_TIME, mKeyEncryptTimeList.get(position)); chatData.putString(StaticVariable. ARG_PRIVATE_KEY, mPrivateKeyList.get(position)); chatData.putString(StaticVariable. ARG_PRIME_P, mPrime_pList.get(position)); chatData.putString(StaticVariable. ARG_PRIME_Q, mPrime_qList.get(position)); chatData.putString(StaticVariable. ARG_PUBLIC_KEY_N, mPublicKey_n.get(position)); chatData.putString(StaticVariable. ARG_PUBLIC_KEY_E,

Universitas Sumatera Utara

Page 101: implementasi konsep hybrid algoritma rsa

A-7

mPublicKey_e.get(position)); chatData.putString(StaticVariable. ARG_KEY_CIPHER, mKeyCipherList.get(position)); chatData.putString(StaticVariable. ARG_KEY_RC4PLUS, mKeyRC4PlusList.get(position)); chatData.putByteArray(StaticVariable. ARG_CHAT_BITMAP, bitmapToByteArray( mImageList.get(position))); Intent i = new Intent(getApplicationContext(), ImageDetailActivity. class); i.putExtras(chatData); startActivity(i); } void setChat(ChatModel.ChatHolder viewHolder, ChatModel chat) { long tStart, tStop; double tDecryptRc4, tDecryptRSA; String key; String cipherText = chat.getChipperText(); String cipherKey = chat.getChipperKey(); cipherKey = cipherKey.substring( 1, cipherKey.length() - 1); Integer publicKey_n = Integer. parseInt(chat.getPublicKey_n()); Integer privateKe y = Integer. parseInt(chat.getPrivateKey()); tStart = System. nanoTime(); key = new myRSA().decrypt(cipherKey, privateKey, publicKey_n); tStop = System. nanoTime(); tDecryptRSA = (tStop - tStart) / 1E9; tStart = System. nanoTime(); String decryptedText = new myRC4Plus().encrypt(cipherText, key); Bitmap decryptedImage = getBitmapFromString(decryptedText); tStop = System. nanoTime(); tDecryptRc4 = (tStop - tStart) / 1E9; viewHolder.setUser(chat.getUser()); viewHolder.setDat e(chat.getDate());

Bitmap bJPGcompress = BMPtoJPEG(decryptedImage, Bitmap.CompressFormat. JPEG, 10);

viewHolder.setImage(decryptedImage); assert chat.getEncryptTimeRc4Plus() != null; mImageCipherList.add(chat.getChipperText()); mKeyCipherList.add(chat.getChipperKey()); mPrime_pList.add(chat.getPrime_p()); mPrime_qList.add(chat.getPrime_q()); mPublicKey_n.add (chat.getPublicKey_n()); mPublicKey_e.add(chat.getPublicKey_e()); mPrivateKeyList.add(chat.getPrivateKey()); mImageEncryptTimeList.add(chat.getEncryptTimeRc4Plus()); mKeyEncryptTimeList.add(chat.getEncryptTimeRSA()); mUserList.add(chat.getUser());

Universitas Sumatera Utara

Page 102: implementasi konsep hybrid algoritma rsa

A-8

mDateList.add(chat.getDate());

mSizeList.add(getImageSize(bJPGcompress)); mResolutionList.add(getImageResolution(decryptedImage)); mImageDecryptTimeList.add(tDecryptRc4); mKeyDecryptTimeList.add(tDecryptRSA); mKeyRC4PlusList.add(key); mImageList.add(decryptedImage); } void newChat(Bitmap image) { //TODO: Encrypt Image

long tStart, tStop; String publicKey_n, publicKey_e, privateKey, cipher Key, prime_p, prime_q; double tEncryptRc4, tEncryptRSA; tStart = System. nanoTime(); String base64 = getStringFromBitmap(image); String chipperText = new myRC4Plus().encrypt(base64, key); tStop = System. nanoTime(); tEncryptRc4 = (tStop - tStart) / 1E9; tStart = System. nanoTime(); myRSA rsa = new myRSA(); prime_p = rsa.getPrime_P().toString(); prime_q = rsa.getPrime_Q().toString(); publicKey_n = rsa.getPublicKey_n().to String(); publicKey_e = rsa.getPublicKey_e().toString(); privateKey = rsa.getPrivateKey().toString(); cipherKey = rsa. enkrip( key); tStop = System. nanoTime(); tEncryptRSA = (tStop - tStart) / 1E9; // 1E9 = 10^9 = 1 000

000 000 (which is milliseconds)

String user = auth.getCurrentUser() != null ? auth.getCurrentUser().getDisplayName() : "Anon"; mChatRef.push() .setValue( new ChatModel( chipperText, cipherKey, publicKey_n, privateKey, publicKey_e, prime_p, prime_q, user, getFormattedNowTime(getApplicationContext()), tEncryptRc4, tEncryptRSA)); } //method untuk compress bitmap ke jpeg

private static Bitmap BMPtoJPEG(Bitmap src, Bitmap.CompressFormat forma t, int quality) { ByteArrayOutputStream os = new ByteArrayOutputStream(); src.compress(format, quality, os); byte[] array = os.toByteArray();

Universitas Sumatera Utara

Page 103: implementasi konsep hybrid algoritma rsa

A-9

return BitmapFactory. decodeByteArray(array, 0, array. length); } String g etFormattedNowTime(Context context) { Date date = Calendar. getInstance().getTime(); DateFormat dateFormat = android.text.format.DateFormat. getDateFormat(context); DateFormat timeFormat = android.text.format.DateFormat. getTimeFormat(context); return dateFormat.format(date) + " " + timeFormat.format(date); } String getImageSize(Bitmap image) { return humanReadableByteCount(image.getRowBytes() * image.getHeight(), true); } String getImageResolution(Bit map image) { return image.getHeight() + "x" + image.getWidth() + " px"; } byte[] bitmapToByteArray(Bitmap bitmap) { //Convert to byte array

ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress (Bitmap.CompressFormat. JPEG, 100 , stream); return stream.toByteArray(); } @SuppressLint ( "DefaultLocale") static String humanReadableByteCount( long bytes, boolean si) { int unit = si ? 1000 : 1024 ; if (bytes < unit) return bytes + " B"; int exp = ( int) (Math. log(bytes) / Math. log(unit)); String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); return String. format( "%.1f %sB", bytes / Math. pow(unit, exp), pre); } private String getStringFromBitmap(Bitmap image) { final int COMPRESSION_QUALITY = 100 ; String encodedImage; ByteArrayOutputStream byteArrayBitmapStream = new

ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat. JPEG, COMPRESSION_QUALITY, byteArrayBitmapStream); byte[] b = byteArrayBitmapStream.toByteArray(); encodedImage = Base64. encodeToString(b, Base64. DEFAULT); return encodedImage; } private Bitmap getBitmapFromString(String base64) { byte[] decodedString = Base64. decode(base64, Base64. DEFAULT); return BitmapFactory. decodeByteArray(decodedString, 0, decodedString. length); }

Universitas Sumatera Utara

Page 104: implementasi konsep hybrid algoritma rsa

A-10

ImageDetailActivity.java package naldi28.skripsi.imagechat; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import androi d.widget.Button; import android.widget.ImageView; import android.widget.TextView; import naldi28.skripsi.imagechat.functional.StaticVariable; public class ImageDetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle s avedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_image_detail); getSupportActionBar().setTitle( "Detail"); TextView textUser = findViewById(R.id. text_user); TextView textReso lution = findViewById(R.id. text_content_resolution); TextView textSize = findViewById(R.id. text_content_size); TextView textDate = findViewById(R.id. text_received_date); ImageView imageContent = findViewById(R.id. image_content); Bundle extra = getIntent().getExtras(); String user = extra.getString(StaticVariable. ARG_CHAT_USER); String resolution = extra.getString(StaticVariable. ARG_CHAT_RESOLUTION); String size = extra.getString(StaticVariable. ARG_CHAT_SIZE); String date = extra.getString(StaticVariable. ARG_CHAT_DATE); Double imageEncryptTime = extra.getDouble(StaticVariable. ARG_IMAGE_ENCRYPT_TIME); Double imageDecryptTime = extra.getDouble(StaticVariable. ARG_IMAGE_DECRYPT_TIME); byte[] imageByteArray = extra.getByteArray(StaticVariable. ARG_CHAT_BITMAP); final String chipper = extra.getString(StaticVariable. ARG_CHAT_CIPHER); Double keyEncryptTime = extra.getDouble(StaticVariable. ARG_KEY_ENCRYPT_TIME); Double keyDecryptTime = extra.getDouble(StaticVariable. ARG_KEY_DECRYPT_TIME); String prime_q = extra.getString(StaticVariable. ARG_PRIME_P); String prime_p = extra.getString(StaticVariable. ARG_PRIME_Q); String publicKey_n = ext ra.getString(StaticVariable. ARG_PUBLIC_KEY_N); String publicKey_e = extra.getString(StaticVariable. ARG_PUBLIC_KEY_E); String privateKey = extra.getString(StaticVariable. ARG_PRIVATE_KEY); String keyCipher = extra.getString(StaticVari able. ARG_KEY_CIPHER);

Universitas Sumatera Utara

Page 105: implementasi konsep hybrid algoritma rsa

A-11

String keyRC4Plus = extra.getString(StaticVariable. ARG_KEY_RC4PLUS); assert imageByteArray != null; Bitmap image = BitmapFactory. decodeByteArray(imageByteArray, 0, imageByteArray. length); textUser.se tText(user); textResolution.setText(resolution); textSize.setText(size); textDate.setText(date); imageContent.setImageBitmap(image); final String textImageEncrypt = getString(R.string. encrypt_image_time_format, imag eEncryptTime); final String textImageDecrypt = getString(R.string. decrypt_image_time_format, imageDecryptTime); final String textKeyEncrypt = getString(R.string. encrypt_key_time_format, keyEncryptTime); final String textKeyDecrypt = getString(R.string. decrypt_key_time_format, keyDecryptTime); final String textKeyRC4Plus = "Key : "+keyRC4Plus; final String textPrime_p = "p: " + prime_p; final String textPrime_q = "q: " + prime_q; final String textPublicKey_n = "Public Key n: " + publicKey_n; final String textPublicKey_e = "Public Key e: " + publicKey_e; final String textPrivateKey = "Private Key: " + privateKey; final String textKeyCipher = "Cipher Key: " + keyCip her; Button btnChipper = findViewById(R.id. button_show_cipher); btnChipper.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new

AlertDialog.Builder(ImageDetailActivity. this); builder.setTitle( "CipherText") .setMessage( chipper ) .setNegativeButton( "Close", null) .show(); } }); Button btnTime = findViewById(R.id. button_show_time); btnTime.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new

AlertDialog .Builder(ImageDetailActivity. this); builder.setTitle( "Encrypt - Decrypt Detail Process ") .setMessage( "RC4plus Detail:"+"\n"+ t extKeyRC4Plus + "\n \n" + "RSA Detail:"+"\n"+ textPrime_p + "\n" + textPrime_q + "\n" + textPublicKey_n + "\n" +

Universitas Sumatera Utara

Page 106: implementasi konsep hybrid algoritma rsa

A-12

textPublicKey_e + "\n" + textPrivateKey + "\n" + textKeyCipher + "\n \n" + "Running Time: "+"\n"+ textImageEncrypt + "\n" + textImageDecrypt + "\n" + textKeyEncrypt + "\n" + textKeyDecrypt ) .setNegativeButton( "Close", null) .show(); } }); } }

LandingActivity.java package naldi28.skripsi.imagechat; import android.content.Int ent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.firebase.ui.auth.AuthUI; import com.google.firebase.auth.FirebaseAuth; import naldi28.skripsi.imagechat.functional.StaticVariable; public class LandingActivity extends AppCompatActivity { FirebaseAuth auth = FirebaseAuth. getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_landing); if ( auth.getCurrentUser() == null) { startActivityForResult( AuthUI. getInstance() .createSignInIntentBuilder() .setIsSmartLockEnabled( false, true) .build(), StaticVariable. RC_SIGN_IN); } else { Intent mainIntent = new Intent(getApplicationContext(), MainActivity. class); startActivity(mainIntent); finish(); } } @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == StaticVariable. RC_SIGN_IN) { // Successfully signed in

if (resultCode == RESULT_OK) {

Universitas Sumatera Utara

Page 107: implementasi konsep hybrid algoritma rsa

A-13

Intent mainIntent = new

Intent(getApplicationContext(), MainActivity. class); startActivity(mainIntent); finish(); } else { finish(); } } } }

SplashActivity.java package naldi28.skripsi.imagechat; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Window; import static java.lang.Thread. sleep; public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_splash); getSupportActionBar().hide (); Thread thr = new Thread(){ @Override public void run(){ try{ sleep( 3000 ); Intent i= new Intent(getApplicationContext(), MainActivity. class); st artActivity(i); finish(); } catch (InterruptedException e){ e.printStackTrace(); } } }; thr.start(); } }

HelpActivity.java package naldi28.skripsi.imag echat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import naldi28.skripsi.imagechat.functional.StaticVariable; public class HelpActivity extends AppCompatActivity {

Universitas Sumatera Utara

Page 108: implementasi konsep hybrid algoritma rsa

A-14

TextView tv, tv2, tv3, tv4, tv5, tv6; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_help); getSupportActionBar().setTitle( "Cara Penggunaan"); tv=(T extView)findViewById(R.id. tv_detail); tv2=(TextView)findViewById(R.id. tv_detail2); tv3=(TextView)findViewById(R.id. tv_detail3); tv4=(TextView)findViewById(R.id. tv_detail4); tv5=(TextView)findViewById(R.id. tv_detail5); tv6=(TextView)findViewById(R.id. tv_detail6); tv.setText(R.string. detail1); tv2.setText(R.string. detail2); tv3.setText(R.string. detail3); tv4.setText(R.string. detail4); tv5.setText(R.string. detail5); tv6.se tText(R.string. detail6); } }

ChatModel.java package naldi28.skripsi.imagechat.functional; import android.graphics.Bitmap; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import naldi28.skripsi.imagechat.R;

public class ChatModel { private String cipherText; private String cipherKey; private String publicKey_n; private String privateKey; private String publicKey_e; private String prime_p; private String prime_q; private String user; private String date; private Double encryptTimeRc4Plus; private Double encryptTimeRSA; public ChatModel(){} public ChatModel(String cipher_text, String cipher_key, String public_key_n, String private_key, String public_key_e, String prime_p, String prime_q, String user, String date, Double encrypt_time_rc4plus, Double encrypt_time_rsa){ this. cipherText = cipher_text;

Universitas Sumatera Utara

Page 109: implementasi konsep hybrid algoritma rsa

A-15

this. cipherKey = cipher_key; this. publicKey_n = public_key_n; this. privateKey = private_key; this. publicKey_e = public_key_e; this. prime_p = prime_p; this. prime_q = prime_q; this. user = user; this. date = date; this. encryptTimeRc4Plus = encrypt_time_rc4plus; this. encryptTimeRSA = encrypt_time_rsa; } public String getChipperKey() { return cipherKey; } public String getChipperT ext() { return cipherText; } public String getPublicKey_n() { return publicKey_n; } public String getPrivateKey() { return privateKey; } public String getPublicKey_e() { return publicKey_e; } public String getPrime_p() { return prime_p; } public String getPrime_q() { return prime_q; } public String getUser() { return user; } public String getDate() { return date; } public Double getEncryptTimeRc4Plus() { return encryptTimeRc4Plus; } public Double getEncryptTimeRSA() { return encryptTimeRSA; } public void setChipperKey(String cipherKey) { this. cipherKey = cipherKey; }

Universitas Sumatera Utara

Page 110: implementasi konsep hybrid algoritma rsa

A-16

public void setChipperText(String cipherText) { this. cipherText = cipherText; } public void setPublicKey_n(String publicKey_n) { this. publicKey_n = publicKey_n; } public void setPublicKey_e(String publicKey_e){ this. publicKey_e = publicKey_e; } public void setPrivateKey(String privateKey) { this. privateKey = privateKey; } public void setPrime_p(String prime_p) { this. prime_p = prime_p; } public void setPrime_q(String prime_q) { this. prime_q = prime_q; } public void setUser(String user) { this. user = user; } public void setDate(String date) { this. date = date; } public void setEncryptTimeRc4Plus(Double encryptTimeRc4Plus) { this. encryptTimeRc4Plus = encryptTimeRc4Plus; } public void setEncryptTimeRSA(Double encryptTimeRSA) { this. encryptTimeRSA = encryptTimeRSA; } public static class ChatHolder extends RecyclerView.ViewHolder { TextView mUser, mDate, mSize, mDecryptTime; ImageView mImage; RelativeLayout layoutChat; public ChatHolder(View itemView) { super(itemView); layoutChat = itemView.findViewById(R.id. layout_chat); mUser = itemView.findViewById(R.id. text_sender); mDate = itemView.findViewById(R.id. text_received_date);

mImage = itemView.findViewById(R.id. image_content);

itemView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { mClickListener.onItemClick(view, getAdapterPosition()); }

Universitas Sumatera Utara

Page 111: implementasi konsep hybrid algoritma rsa

A-17

}); } private ClickListener mClickListener; public interface ClickListener { void onItemClick(View view, int position); } public void setOnClickListener(ClickListener clickListener) { mClickListener = clickListener; }

public void setUser(String user) { mUser.setText(user); } public void setDate(String date) { mDate.setText(date); }

public void setImage(Bitmap image) { mImage.setImageBitmap(image); } } }

StaticVariable.java package naldi28.skripsi.imagechat.functional; public class StaticVariable { public static final String ARG_CHAT_USER = "chat_user"; public static final String ARG_CHAT_SIZE = "chat_image_size"; public static final String ARG_CHAT_RESOLUTION = "chat_image_resolution"; public static final String ARG_CHAT_DATE = "chat_date"; public static final String ARG_CHAT_CIPHER = "chat_chipper"; public static final String ARG_CHAT_BITMAP = "chat_image_bitmap"; public static final String ARG_IMAGE_ENCRYPT_TIME = "image_encrypt_time"; public static final String ARG_IMAGE_DECRYPT_TIME = "image_decrypt_time"; public static final String ARG_KEY_DECRYPT_TIME = "time_decrypt_time"; public static final String ARG_KEY_ENCRYPT_TIME = "time_encrypt_time"; public static final String ARG_KEY_CIPHER = "key_chipper"; public static final String ARG_PRIVATE_KEY = "private_key"; public static final String ARG_PUBLIC_KEY_N = "public_key_n"; public static final String ARG_PUBLIC_KEY_E = "public_key_e"; public static final String ARG_PRIME_P ="prime_p"; public static final String ARG_PRIME_Q ="prime_q"; public static final String ARG_KEY_RC4PLUS = "key_rc4plus"; public static final int RC_IMAGE_PICK = 10; public static final int RC_SIGN_IN = 14; public static final int MAX_IMAGE_WIDTH = 500 ; public static final int MAX_IMAGE_HEIGHT = 500 ; public static final int MAX_SIZE = 500 ;

Universitas Sumatera Utara

Page 112: implementasi konsep hybrid algoritma rsa

A-18

}

myRC4Plus.java package naldi28.skripsi.imagechat.algorithm; /**

* RC4+

* Created by naldi28 on 06/09/2017.

*/

public class myRC4Plus { public myRC4Plus() {}

public String encrypt(String t, String e) { StringBuilder hasil = new StringBuilder(); String msg = ""; //int[] i = new int[256];

int[] S = new int[ 256 ]; int n, s, r, o; n=0; if(e.length()< 1) return msg = "Kunci tidak boleh kosong"; for ( int i = 0; i < 256 ; i++) S[i] = i; //KSA process

for ( int k = 0; k < 3; k++) { for ( int i = 0; i < 256 ; i++) { n = (n + S[i] + e.charAt(i % e.length())) % 256 ; r = S[i]; S[i] = S[n]; S[n] = (r); } }

int i = 0; for ( int k=0; k < t.length(); k++) { i = (i + 1) % 256 ; r = S[i]; n = (n + r) % 256 ; r = S[i]; S[i] = S[n]; S[n] = r; r = S[((i << 5) ^ (n >> 3)) % 256 ] + S[((n << 5) ^ (i >> 3)) % 256 ]; hasil.append(Character. toString(( char) (t.charAt(k) ^ ((S[(S[i] + S[n]) % 256 ] + S[(r ^ 0xAA) % 256 ]) ^ S[(n + S[i]) % 256 ]) % 256 ))); } return hasil.toString(); } }

Universitas Sumatera Utara

Page 113: implementasi konsep hybrid algoritma rsa

A-19

package naldi28.skripsi.imagechat.algorithm; import java.math.BigInteger; import java.util.Arrays; import java.util.Random; /**

* Created by naldi28 on 06/09/2017.

*/

public class myRSA { public myRSA() { generate(); } public static int p, q, phi, e, d, n; static char[] kar = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

private static Long sma(Long x, Long H, Long n) { Long r; int[] bin = new int[ 64]; int i; r = x; i = 0; /* ubah H ke Biner */

while( H > 0 ) { if (H % 2 == 0) { bin[i] = 0; } else { bin[i] = 1; } H = H/ 2; i++; } i -- ; while(i > 0) { r = (r * r) % n; if( bin[ -- i] == 1 ) { r = (r * x) % n; } } return r; } private static int lehmann( int n) { int a = 0,i = 0; Long l; for(i= 1;i<= 2;i++) { a = ( int)(Math. random()*(n - 2)+ 2); int temp = (n - 1)/ 2; l = sma(((Number) a).longValue(), ((Number) temp).longValue(),((Number) n).longValue()); //int64 = integer tapi

lebih panjang

if (l != 1) { break; } } if(i == 2 && n%2!= 0 && n%3!= 0 && n%5!= 0 && n%7!= 0) //bilangan

di check jika = 0 dia balik nyari lagi

Universitas Sumatera Utara

Page 114: implementasi konsep hybrid algoritma rsa

A-20

return n; else

return lehmann(( int)(Math. random()*( 9999 - 1000 )+ 1000 )); } //method mencari GCD

static int GCD(int m, int n){ if(m%n == 0) return n; return GCD(n, m%n); } //method modularInvers

static int modInverse( int a, int b){ int b0 = b; int x0 = 0; int x1 = 1; if(b == 1) return 1; while(a> 1){ if(b== 0) return 1; int q = a/b; int amb = a%b; a=b; b=amb; int xqx = x1 - q*x0; x1 = x0; x0 = xqx; } if(x1< 0) x1 +=b0; return x1; } //method modulo exponensial

static BigInteger modEx( long n, long p, long m){ if(p== 0) return BigInteger. ONE; BigInteger z = modEx(n, p/ 2, m); if(p%2 ==0) z = (z.multiply(z)).mod( new

BigInteger(Long. toString(m))); else

z = (z.multiply(z).multiply( new

BigInteger(Long. toString(n)))).mod( new BigInteger(Long. toString(m))); return z; } //random key text

public static String random(){ Random rnd = new Random(); String key = ""; int r; for( int i= 0; i< 5; i++){ r= rnd.nextInt( kar. length); key+= kar[r];

Universitas Sumatera Utara

Page 115: implementasi konsep hybrid algoritma rsa

A-21

} return key; } public static String Char2Ascii(String plainteks){ long [] ass_code = new long [ 5]; for( int i = 0; i<plainteks.length(); i++){ ass_code[i]=plainteks.toCharArray()[i]; } return Arrays. toString(ass_code); } //enkrip key rsa

public static String enkrip(String key){ int pjg_key = key.length(); int r; long [] hasil = new long [ 5]; long [] hasil_enkrip = new long[ 5]; long [] hasil_dekrip = new long[ 5]; for( int i= 0; i<pjg_key; i++){ hasil[i] = key.toCharArray()[i]; hasil_enkrip[i]= modEx(hasil[i], e, n).longValue(); r= ( int)hasil_enkrip[i]; //cipher_key+=kar_ascii[r];

hasil_dekrip[i]= modEx(hasil_enkrip[i], d, n).longValue(); } return Arrays. toString(hasil_enkrip); } public String decrypt(String cipher, int a, int b) { StringBuilder hasil = new StringBuilder(); cipher = cipher.replace( '[', ' ').replace( ']', ' ').trim(); String[] chipkuncis = cipher.split( ","); Long[] chipkuncid = new Long[chipkuncis. length]; Long tempHasil; for ( int i = 0; i < chipkuncis. length; i++) { chipkuncid[i] = Long. parseLong(chipkuncis[i].trim()); tempHasil = modEx(chipkuncid[i],a,b).longValue(); //dekrip rsa

hasil.append(( char) tempHasil.intValue()); } return hasil.toString(); } //generate bilangan prima

private static boolean isPrime( int n){ int i; for(i= 2; i<= Math. sqrt(n); i++){ if(n%i== 0){ return false; } } return true; } private void generate() {

Universitas Sumatera Utara

Page 116: implementasi konsep hybrid algoritma rsa

A-22

while ( true){ p = lehmann(( int)(Math. random()*( 9999 - 1000 )+ 1000 )); q = lehmann(( int)(Math. random()*( 9999 - 1000 )+ 1000 )); break; } if( p != q){ n = p* q; phi = ( p- 1)*( q- 1); while( true){ e = lehmann(( int)(Math. random()*( 9999 - 4)+ 4)); if( e<phi && GCD( e, phi)== 1){ break; } } d = modInverse( e, phi); } } public Integer getPrivateKey() { return d; } public Integer getPublicKey_n() { return n; } public Integer getPrime_P() { return p; } public Integer getPrime_Q() { return q; } public Integer getPublicKey_e() { return e;} }

Universitas Sumatera Utara

Page 117: implementasi konsep hybrid algoritma rsa

B-1

PROFILE

Full name : Ronaldi Tumanggor

Nickname: Naldi

Gender : Male

Place, Date of birth: Sindias,

February 28th, 1995

Nationality: Indonesia

Religion: Catholic

Address: Cempaka Street,

No.41, Medan, North Sumatera

Email:

[email protected]

m

Marital Status: unmarried

SKILLS

- App & Web Developer

- Graphic Design

- Teacher

- Blogger & SEO Master

- Public Speaking

COMPUTER SKILLS

- Programming: C++,

C#, Java, PHP, Javascript

- Database: MySQL

- IDE : Android Studio,

Sublime Text

- Software: Corel Draw

X7, Adobe Photoshop

CS7, Microsoft Office

- Framework: Bootstrap,

Codeigniter

PERSONAL DATA RONALDI TUMANGGOR

EDUCATION

Bachelor of Computer Science•University of Sumatera Utara•2013 –

2018. GPA: 3.75

Awards & Honors:

- Top 10 Best Team - Youth Entrepreneurship Symposium (YES),

Singapore – 2017

- Indonesia Delegate – Youth Entrepreneurship Symposium

(YES), Singapore – 2017

- Best Teacher – IKLC, USU – 2016

- The Most Outstanding Student – Bidikmisi, USU – 2016

- The Most Outstanding Student – Computer Science, USU – 2016

- Best Participant - Imilkom Basic Organizational Training – 2015,

etc

Higher Secondary Education•SMAN 1 Parlilitan • 2010 - 2013

Awards & Honors:

- Runner Up – Olimpiade Sains Nasional tk. Kabupaten - 2010

Secondary Education•SMPN 1 Parlilitan • 2007 – 2010

Primary Education •SDN 173493 Ambalo Parlilitan • 2001 – 2007

EXPERIENCE & WORKS

TEACHER • IKLC USU • 2015 – 2018

HEAD OF KOMINFO DIVISION • IKLC USU • 2016 – 2017

WASKOM DIVISION• IMILKOM USU • 2015 – 2016

CEO & FOUNDER • RUANGMAHASISWA.COM • 2015 - NOW

VOLUNTEER EXPERIENCE OR LEADERSHIP

- Ilmu Komputer Goes to School (IGTS) 2015 & 2016 – Teacher

- Gerakan Mahasiswa Mengajar 2017 – Volunteer

- Talkshow in Our School (TOS) 2017 – Speaker

- Meet – Up Peserta SBMPTN 2017 – Facilitator

CERTIFICATIONS

- Microsoft Certifications – Microsoft Technology Associate

(MTA) – 2016

- Badan Nasional Sertifikasi Profesi: Sertificate of Competence

for Basic Programming.

Universitas Sumatera Utara