Kamis, 14 Maret 2019

Pemrograman Parallel: Review Jurnal dan Implementasi menggunakan Java


Review Jurnal: “Improved Performance of Advance Encryption Standard using Parallel Computing”
Vishal Pachori, Gunjan Ansari, Neha Chaudhary


Rumusan Masalah
AES merupakan algoritma chipper pertama kali yang dapat diakses dan dibuka untuk umum yang disetujui oleh National Security Agency (NSA) untuk kerahasiaan informasi. Implementasi AES sangat luas, seperti kartu pintar dan ponsel, server WWW dan mesin teller otomatis, dan juga perekam video digital.
Sejumlah arsitektur telah diusulkan untuk implementasi perangkat keras dari algoritma AES dengan tujuan untuk mempercepat waktu eksekusi kinerja dari AES, dan hal tersebut menjadi permasalahan dilakukannya banyak penelitian untuk mempercepat waktu eksekusi kinerja AES. Sebagian besar penelitian untuk meningkatkan kinerja AES didasarkan pada implementasi perangkat keras. Penelitian ini menyajikan implementasi AES secara parallel menggunakan JPPF (Java Parallel Programming Framework) yang memberikan peningkatan fleksibilitas & kinerja dalam hal mempercepat waktu eksekusi.

Kontribusi Penulis
Pada penelitian ini, penulis menyajikan implementasi algoritma Advance Encription Standard (AES) menggunakan komputasi parallel. Sebagian besar penelitian untuk meningkatkan kinerja AES didasarkan pada implementasi perangkat keras. Makalah ini menyajikan implementasi paralel AES menggunakan JPPF (Java Parallel Programming Framework) yang memberikan peningkatan fleksibilitas & kinerja dalam hal percepatan. Dalam implementasi ini ada dua pendekatan yaitu Data Parallel dan Control Parallel.

Metode Yang Digunakan
Metode yang digunakan pada penelitian ini yaitu dengan cara memecah atau melakukan sistem kerja secara parallel pada proses enkripsi pada AES yang dibagi menjadi 2 Node, tiap 1 ronde proses dari enkripsi AES menggunakan framework JPFF (Java Parallel Programming Framework), metode yang digunakan yiatu Data Parallel dan Control ParallelData Parallel dilakukan untuk memecah data yang dienkripsi, lalu Control Parallel dilakukan untuk memecah operasi yang dilakukan, berikut ilutrasi sistem kerja AES pada Data Parallel yang dimodifikasi dengan parallel computing:


Gambar 1. Alur Data Parallel

Alur Control Parallel:


Gambar 2. Alur Control Parallel

Operasi 1 dan Operasi 2 merupakan satu ronde enkripsi AES, dimana Operasi 1 mengerjakan SubByte dan Shiftrow sedangkan Operation 2 mengerjakan Mixcoloumn dan Addround Key. Proses tersebut merupakan 1 ronde pada AES, dalam implementasinya AES memiliki banyak ronde dan setiap ronde diterapkan secara paralel dengan metode tersebut. Berikut detail metode yang digunakan.

Gambar 3. Alur kerja Enkripsi AES dengan Parallel Computing

Hasil dan Pembahasan

Implementasi JPFF menggunakan tiga komponen yang saling berkomunikasi sebagai berikut:

-     Client melakukan entry point dan enable developers untuk melakukan pekerjan melalui API Client.
-       Servers menjadi komponen yang menerima pekerjaan dari client, lalu mengirim menuju node, menerima hasil dari node dan mengirim hasil tersebut kembali kepada client.
-        Node melakukan eksekusi pekerjaan.


Untuk membangun komunikasi antara node, disini digunakan framework Hazelcast  dimana hanya digunakan untuk membuat struktur data terdistribusi agar node 1 dan node 2 dapat berkomunikasi dengan meletakkan nilai yang dikomputasikan.

Hasil yang diperoleh :
Spesifikasi perangkat yang digunakan: Intel Core(TM)2Duo E7300@ 2.66 Ghz 3MB L2 cache memory, 2GB

Speed Up = (waktu eksekusi dengan serial) / (waktu eksekusi dengan paralel)

Speed up untuk eksekusi 256bit data secara data paralel:
1.          15/10 = 1.5
2.          14/7 = 2.0
3.          13/6 = 2.16
4.          13/7 = 1.85

Speed up untuk eksekusi 256 data secara control paralel:
1.           15/11 = 1.36
2.           14/7 = 2.0
3.           13/6 = 2.16
4.           13/6 = 2.16


Berikut hasil dari beberapa kali eksekusi:

Gambar 4. Tabel Eksekusi Enkripsi AES dengan Data Parallel dan Control Parallel

Kesimpulan
Dari kedua pendekatan yang dilakukan yaitu Data Parallel dan Control Parallel sukses dan berhasil diimplementasikan menggunakan JPPF (Java Parallel Programming Framework) dan hasil kinerja diukur dalam hasil waktu eksekusi dengan dua eksekusi paralel. Dapat dilihat bahwa percobaan yang dilakukan menunjukkan hasil peningkatan yang signifikan dalam hal waktu eksekusi AES.

Future Work
Future Work yang dapat dikerjakan yaitu dapat menggunakan Programming Framework lain yang dapat mendukung peningkatan waktu eksekusi parallel dan juga diimplementasikan pada algoritma cryptography lain selain AES.

==========================================================================================================================================================================================


Implementasi : “Pemrograman Parallel Sederhana pada proses Enkripsi dan Dekripsi AES menggunakan JAVA”


Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed computing).

Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.

Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.

Berikut merupakan contoh implementasi pemrograman parallel sederhana pada studi kasus enkripsi AES menggunakan JAVA. 
Download project:
https://github.com/aidakrr/AES-PARALLEL-PROGRAMMING.git atau https://drive.google.com/file/d/1DNjFFCqZB5lVmz2I_rktFO6xR83MF_82/view?usp=sharing
Initial Condition: Plain Text (256bits) dengan key (128 bits)
Final Condition:  hasil enkripsi dari plaintext dan dekripsi dari hasil enkripsi
Source Code:


Gambar 5. Source Code program

Gambar 6. Source Code Program


Hasil eksekusi program

Gambar 7. Hasil Eksekusi Program

 
Analisis dan Kesimpulan:
Setelah dilakukan 4 kali eksekusi program implementasi pemrograman parallel pada AES dalam  mengenkripsi 256bits plaintext dengan 128bits key didapat hasil sebagai berikut:

Gambar 8. Tabel hasil eksekusi

Dengan memanfaatkan thread pada java untuk pemrosesan enkripsi dan dekripsi AES, program dapat dipercepat rata-rata 4,175 untuk proses enkripsi dan 7,575 untuk proses dekripsi



Oleh:

1. Aida Kartika Alit Rahmasari (16051204016)
2. Restian Hanifia (18051204080)
3. Mokhamad Aguk Nur Anggraini (18051204081)

S-1 Teknik Informatika Universitas Negeri Surabaya

Tidak ada komentar:

Posting Komentar