ANALISIS DAN IMPLEMENTASI I/O PARALEL PADA ALGORITME ENKRIPSI ADVANCED ENCRYPTION STANDARD (AES)
MUHAMMAD ZULFIKAR HANDANA
DEPARTEMEN ILMU KOMPUTER FAKLTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Analisis dan Implementasi I/O Paralel pada Algoritme Enkripsi Advanced Encryption Standard adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir disertasi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, April 2013 Muhammad Zulfikar Handana NIM G64070121
ABSTRAK MUHAMMAD ZULFIKAR HANDANA. Analisis dan Implementasi I/O Paralel pada Algoritme Enkripsi Advanced Encryption Standard (AES) . Dibimbing oleh HENDRA RAHMAWAN AES (Advanced Encryption Standard) memiliki proses enkripsi yang kompleksitasnya pada lingkup O(n). Pada penelitian sebelumnya telah dilakukan komputasi paralel pada AES untuk mengurangi waktu eksekusi algoritme tersebut, namun algoritme tersebut tidak cost-optimal karena memiliki rata-rata nilai efisiensi dibawah 0.7. Pada penelitian kali ini, dilakukan komputasi paralel pada proses I/O untuk meningkatkan speedup dan efisiensidibandingkan dengan algoritme AES paralel yang menggunakan I/O sekuensial. Pada penelitian kali ini menggunakan dua komputer dengan spesifikasi, Intel Dual Core (2 CPU) @ 2.3 GHz, AMD 16-3400M APU @ 1.4 GHz (4 CPU). Masing-masing komputer memiliki memory 2 GB. Efisiensi terbesar pada algoritme AES paralel yang menggunakan I/O paralel adalah 0.95, nilai tersebut terjadi pada saat membangkitkan tiga proses dengan menggunakan dua komputer. Nilai efisiensi terbesar algoritme AES paralel yang menggunakan I/O sekuensial sebesar 0.8, nilai tersebut terjadi pada saat membangkitan dua proses dengan menggunakan dua komputer. Kata kunci: AES, I/O paralel, MPI I/O, MPI2
ABSTRACT MUHAMMAD ZULFIKAR HANDANA. Analysis and Implementation Parallel I/O at Encryption Advanced Encryption Standard (AES) Algorithm. Supervised by HENDRA RAHMAWAN Complexity of AES encryption process is O(n). In previous research, parallel computation has been conducted on AES to decrease execution time, however it was not cost-optimal because the average efficiency value was below 0.7. In this research, parallel I/O computing was conducted in order to improve the speedup and the efficiency compared with AES algorithm that using sequential I/O. In this research, two computers are used with the specification: Intel Dual Core (2 CPUs) @ 2.3 GHz, AMD 16-3400M APU @ 1.4 GHz (4 CPUs), each computer has 2 GB of memory. The highest efficiency is achieved by using parallel I/O is 0.95, that occured when three processes are generated using two computers, The highest efficiency is achieved by using sequential I/O is 0.8, that occured when two processes are generated using two computers. Keywords: AES, MPI I/O, MPI2, Parallel I/O
ANALISIS DAN IMPLEMENTASI I/O PARALEL PADA ALGORITME ENKRIPSI ADVANCED ENCRYPTION STANDARD (AES)
MUHAMMAD ZULFIKAR HANDANA
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2013
Judul Skripsi : Analisis dan Implementasi I/O Paralel Pada Algoritme Enkripsi Advanced Encryption Standard (AES) Nama : Muhammad Zulfikar Handana NIM : G64070121
Disetujui oleh
Hendra Rahmawan, SKom, MT Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi, MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan ke hadirat Allah subhanahu wa-ta’ala yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Shalawat serta salam pada junjungan kita Nabi besar Muhammad shallallahu ‘alaihi wa sallam beserta keluarga dan sahabatnya. Penulis mengucapkan terima kasih kepada semua pihak yang telah membantu dalam penyelasaian tugas akhir ini, yaitu: 1. Kedua orang tua tercinta (Eka Yudha Prya, SE dan Latifah, SSos) yang telah memberikan dukungan, bantuan, perhatian, dan doa sehingga penulis dapat menyelesaik studi di Departemen Ilmu Komputer IPB 2. Bapak Hendra Rahmawan, SKom, MT selaku dosen pembimbing 3. Bapak Endang Purnama Giri, SKom, MKom dan Bapak DrEng Heru Sukoco, SSi, MT selaku dosen penguji Seluruh dosen pengajar dan civitas akademika Departemen Ilmu Komputer 4. FMIPA IPB 5. Keluarga besar Ilkomerz 44 6. Semua pihak yang telah membantu pelaksanaan tugas akhir ini baik secara langsung maupun tidak langsung yang belum disebutkan diatas Penulis menyadari dalam tugas akhir ini masi banyak kekurangan. Oleh karena itu, penulis mengharapkan kritik dan saran yang membangun. Semoga penelitian ini dapat bermanfaat bagi semua pihak yang membutuhkan. Aamiin.
Bogor, April 2013 Muhammad Zulfikar Handana
DAFTAR ISI DAFTAR GAMBAR
x
DAFTAR LAMPIRAN
xi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
1
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
TINJAUAN PUSTAKA
2
Algoritme AES
2
Pemrograman Paralel
5
MPI (Message Passing Interface)
5
I/O Sekuensial
5
I/O paralel
6
Fungsi-fungsi I/O paralel
6
Metode Foster
8
Domain Decomposition
9
Functional Decomposition
9
Performance Metric
9
METODE
10
Analisis Struktur I/O
10
Implementasi
13
Perancangan percobaan
14
Percobaan
16
HASIL DAN PEMBAHASAN Hasil SIMPULAN DAN SARAN
16 16 25
Simpulan
25
Saran
26
DAFTAR PUSTAKA
26
LAMPIRAN
27
RIWAYAT HIDUP
37
DAFTAR GAMBAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Proses umum algoritme AES (http://www.iis.ee.ethz.ch/~kgf/acacia/c3.html) S-Box (http://developer.amd.com/resources/documentationarticles/articles-whitepapers/bulk-encryption-on-gpus/) Ilustrasi proses SubBytes (http://en.wikipedia.org/wiki/Advanced_Encryption_Standard) Ilustrasi proses ShiftRows (Surian 2006) Matriks polimat (http://en.wikipedia.org/wiki/Rijndael_mix_columns) Ilustrasi proses AddRoundKey (Surian 2006) Proses I/O sekuensial pada algoritme paralel (Gropp et al. 1999) Proses I/O paralel untuk sebuah file (Gropp et al. 1999) Ilustrasi metode Foster (http://tirtasucahya.blogspot.com/2010/12/metode-foster.html) Metode penelitian Ilustrasi partisi algoritme AES domain decomposition (Zulfikar 2012) Ilustrasi komunikasi algoritme AES domain decomposition (Zulfikar 2012) Ilustrasi aglomerasi algoritme AES domain decomposition (Zulfikar 2012) Algoritme enkripsi AES secara paralel domain decomposition menggunakan I/O sekuensial (Zulfikar 2012) Algoritme enkripsi AES secara paralel domain decomposition menggunakan I/O paralel Hasil nilai checksums enkripsi AES sekuensial dengan AES secara paralel yang menggunakan I/O sekuensial Hasil nilai checksums enkripsi AES sekuensial dengan AES secara paralel yang menggunakan I/O paralel Hasil nilai checksums dekripsi AES sekuensial dengan file awal Hasil nilai checksums dekripsi AES secara paralel dengan menggunakan I/O sekuensial dengan file awal Hasil nilai checksums dekripsi AES secara paralel dengan menggunakan I/O paralel dengan file awal Waktu eksekusi enkripsi AES secara sekuensial. Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil satu komputer Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file besar satu komputer Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer
3 3 4 4 4 5 6 6 8 10 11 11 11 12 15 17 17 18 18 19 19 20 20 21 21 22
27 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada dua komputer 28 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer 29 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada dua komputer 30 Perbandingan waktu proses input dan output I/O sekuensial vs I/O paralel
22 23 24 25
DAFTAR LAMPIRAN 1 Pengaturan dan instalasi MPICH2 2 Waktu eksekusi AES secara paralel menggunakan I/O sekuensial (file kecil pohon.jpg (4.5 MB) pada satu komputer) 3 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file 4 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil pohon.jpg (4.5 MB) pada satu komputer) 5 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada satu komputer) 6 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file kecil pohon.jpg ( 4.5 MB) pada dua komputer) 7 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar video.mp4 (115 MB) pada dua komputer) 8 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil pohon.jpg (115 MB) pada dua komputer) 9 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada dua komputer)
27 29 30 31 32 33 34 35 36
PENDAHULUAN AES (Advanced Encryption Standard) memiliki proses enkripsi dan dekripsi yang diketahui memiliki ruang lingkup O(n) (Giri 2004). Pada penelitian yang dilakukan Zulfikar (2012), telah dilakukan komputasi paralel untuk mengurangi waktu eksekusi algoritme AES tersebut. Pada penelitian tersebut telah mampu mengurangi waktu eksekusi enkripsi dengan menggunakan algoritme paralel, namun algoritme paralel tersebut tidak cost-optimal karena nilai efisiensinya ratarata kurang dari 0.7. Pada penelitian yang dilakukan oleh Zulfikar (2012), proses input dan output masih menggunakan proses sekuensial, sehingga pada percobaan kali ini akan dicoba meningkatkan speedup dan efisiensi menggunakan proses input dan output secara paralel. Tujuan dari penilitian ini adalah, meningkatkan kinerja dari implementasi AES secara paralel dengan menggunakan I/O paralel. Kinerja yang diukur berdasarkan performance metrics. Latar Belakang AES (Advanced Encryption Standard) memiliki proses enkripsi dan dekripsi yang diketahui memiliki kompleksitas pada lingkup O(n) (Giri 2004). Proses enkripsi AES tergolong cukup cepat secara kompleksitas, namun waktu eksekusinya akan meningkat seiring dengan besarnya data yang digunakan. Pada penelitian yang dilakukan oleh Zulfikar (2012), telah dilakukan komputasi paralel untuk mengurangi waktu eksekusi enkripsi dan dekripsi algoritme AES. Pada penelitian tersebut telah mampu mengurangi waktu eksekusi enkripsi dengan menggunakan algoritme paralel, namun demikian algoritme paralel tersebut tidak cost-optimal karena nilai efisiensinya kurang dari 0.7. Algoritme AES tersebut melakukan enkripsi pada sebuah file, hal tersebut merupakan proses pada input dan output. Pada penelitian yang dilakukan oleh Zulfikar (2012), proses input dan output masih menggunakan proses sekuensial, sehingga pada penelitian kali ini akan dicoba untuk meningkatkan speedup dan efisiensi menggunakan proses input dan output secara paralel. Perumusan Masalah 1. 2.
Perumusan masalah pada penelitian ini adalah: Dengan menggunakan algoritme I/O paralel, apakah dapat mengurangi waktu eksekusi dari proses enkripsi. Seberapa besar perbedaan speedup dan efisiensi antara algoritme AES secara paralel menggunakan I/O sekuensial dan algoritme AES secara paralel menggunakan I/O paralel.
2 Tujuan Penelitian Tujuan dari penelitian ini adalah meningkatkan kinerja dari implementasi AES secara paralel dengan menggunakan I/O paralel. Kinerja yang diukur berdasarkan performance metrics. Manfaat Penelitian Manfaat yang dapat diperoleh dari penelitian ini adalah kinerja dari algoritme AES secara paralel dapat ditingkatkan dengan menggunakan I/O paralel. Ruang Lingkup Penelitian 1 2
3 4 5
Ruang lingkup dalam penelitian ini adalah: Implementasi MPI (Message Passing Interface) yang digunakan adalah library MPICH2 pada bahasa pemrograman C. Komputer yang digunakan memiliki spesifikasi : Prosesor Intel Dual Core @ 2.3 GHz (2 CPU), 2 GB memory. Prosesor AMD 16-3400M APU @ 1.4 GHz (4 CPU), 2 GB memory Input yang digunakan terdiri atas dua jenis, masing-masing sebesar 4.5 MB dan 115 MB Algoritme AES secara paralel yang digunakan berbasiskan domain decomposition. Analisis performance metrics dibatasi pada waktu eksekusi, speedup, dan efisiensi.
TINJAUAN PUSTAKA Algoritme AES AES merupakan algoritme kriptografi yang didesain untuk beroperasi pada blok pesan 128 bit dan menggunakan tiga variasi blok kunci dengan panjang 128 bit, 192 bit, atau 256 bit (Stallings 2003). Khusus untuk penelitian ini, pengkajian akan dibatasi pada blok pesan 128 bit dengan ukuran blok kunci 128 bit. Adapun proses umum Algoritme AES diilustrasikan pada Gambar 1.
3
Gambar 1 Proses umum algoritme AES (http://www.iis.ee.ethz.ch/~kgf/acacia/c3.html) a SubBytes Proses SubBytes adalah proses yang melakukan substitusi non linear, dengan cara mengganti setiap byte state dengan byte pada sebuah tabel yang dinamakan tabel S-Box. Sebuah tabel S-Box terdiri dari 16 × 16 baris dan kolom dengan masing-masing berukuran 1 byte (Surian 2006). Tabel S-Box disajikan oleh Gambar 2, dan proses SubBytes diilustrasikan oleh Gambar 3.
Gambar 2 S-Box (http://developer.amd.com/resources/document ation-articles/articles-whitepapers/bulkencryption-on-gpus/)
4
Gambar 3 Ilustrasi proses SubBytes (http://en.wikipedia.org/wiki/Advanced_Encry ption_Standard) b ShiftRows Proses ShiftRows beroperasi pada tiap baris dari tabel state. Proses ini akan bekerja dengan cara memutar byte pada tiga baris terakhir (baris satu, dua, dan tiga) dengan jumlah perputaran yang berbeda-beda. Baris 1 akan diputar sebanyak satu kali, baris 2 akan diputar sebanyak dua kali, dan baris 3 akan diputar sebanyak tiga kali. Sedangkan baris 0 tidak akan diputar (Surian 2006).
Gambar 4 Ilustrasi proses ShiftRows (Surian 2006) c MixColumns Proses MixColumns beroperasi pada tiap kolom dari tabel state. Operasi ini menggabungkan 4 bytes dari setiap kolom tabel state dan menggunakan transformasi linier. Proses MixColumns mengalikan matriks polimat dengan matrik state (Surian 2006).
Gambar 5 Matriks polimat (http://en.wikipedia.org/wiki/Rijndael_mix_co lumns) d AddRoundKey Forward add round key atau AddRoundKey merupakan proses XOR sederhana antara matriks state 4×4 dengan matriks 4x4 yang merupakan key dari round bersesuaian hasil ekspansi kunci (Giri 2004). Ilustrasi dari proses AddRoundKey dapat dilihat pada Gambar 6.
5
Gambar 6 Ilustrasi proses AddRoundKey (Surian 2006) Pemrograman Paralel Pemrograman paralel adalah pemrograman yang memungkinkan secara eksplisit menunjukkan bagaimana bagian yang berbeda dari komputasi sehingga dapat dieksekusi secara bersamaan oleh prosesor yang berbeda (Quinn 2004). Algoritme paralel adalah sebuah algoritme yang dapat memecahkan suatu masalah menggunakan beberapa prosesor secara bersamaan. Algoritme ini mencakup identifikasi bagian dari pekerjaan bersama dalam proses yang berjalan secara paralel, pengaturan akses data yang dibagi ke beberapa prosesor, pendistribusian input, output, dan data yang terkait dengan program serta koordinasi proses diberbagai tahapan pelaksanaan program paralel (Grama et al. 2003). MPI (Message Passing Interface) MPI adalah sebuah library standar pengenalan dasar pemrograman sistem paralel (Quinn 2004). MPI dapat digunakan dengan berbagai bahasa pemrograman seperti bahasa C, C++, dan Fortran. Operasi utama yang dilakukan oleh standar MPI yaitu: a. Point-to-point Communication MPI point-to-point communication adalah komunikasi antar dua proses. Satu proses bertugas mengirim data atau operasi dan proses lainnya bertugas menerima data atau operasi tersebut. b. Collective Communication MPI collective communication adalah komunikasi yang melibatkan sekumpulan proses yang dipanggil oleh semua proses dalam communicator. I/O Sekuensial Proses sekuensial adalah proses I/O yang hanya dikerjakan oleh satu proses (Gropp et al. 1999). Semua prosesor akan mengirimkan data ke prosesor 0, dan prosesor 0 akan menulis data tersebut ke sebuah file. Proses tersebut diilustrasikan pada Gambar 7.
6
Gambar 7 Proses I/O sekuensial pada algoritme paralel (Gropp et al. 1999) I/O paralel I/O paralel bagian dari MPI-2 yang biasa dikenal dengan sebutan MPI I/O dibuat sebagai upaya IBM untuk mengeksplorasi analogi antara input / output dan pengiriman pesan. Setelah itu, menulis ke sebuah file dapat dianalogikan seperti mengirim pesan kepada sistem file dan membaca file seperti menerima pesan dari sistem (Gropp et al. 1999). Secara umum, I/O pada MPI-2 dapat dianggap sebagai proses I/O pada umumnya, namun memiliki beberapa fungsi tambahan. Tujuan I/O paralel adalah untuk mencapai kinerja yang jauh lebih tinggi sehingga daripada proses I/O sequential sehingga diharapkan dapat mengurangi waktu eksekusi sebuah program tersebut. Proses pada I/O paralel diilustrasikan pada Gambar 8.
Gambar 8 Proses I/O paralel untuk sebuah file (Gropp et al. 1999) Fungsi-fungsi I/O paralel I/O paralel memiliki beberapa fungsi untuk memproses sebuah file, baik file tersebut sebagai input maupun sebagai output. Beberapa fungsi yang digunakan untuk membaca maupun menulis pada sebuah file: a. MPI_File_open MPI_File_open adalah sebuah fungsi untuk membuka file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut: int MPI_File_open (MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh) (Gropp et al. 1999).
7 Argumen pertama pada fungsi tersebut yaitu komunikasi. Argumen kedua diisi oleh file yang akan dibaca atau ditulis. Argumen ketiga adalah sebuah mode yang akan kita lakukan terhadap sebuah file. Contoh dari isi argumen tersebut adalah MPI_MODE_RDONLY untuk membaca saja, MPI_MODE_WRONLY untuk menulis saja MPI_MODE_RDWR untuk membaca dan menulis MPI_MODE_CREATE untuk membuat sebuah file jika file tersebut belum ada. Argumen keempat adalah info dari sebuah objek, argumen kelima adalah file tujuan yang akan dieksekusi (file handler). b. MPI_File_write MPI_File_write adalah sebuah fungsi untuk menulis pada sebuah file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut: int MPI_File_write (MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_status *status) (Gropp et al. 1999).
Argumen pertama pada fungsi tersebut yaitu file yang akan ditulis (file handler). Argumen kedua yaitu berisi inisial alamat pada penyangga (buffer). Argumen ketiga yaitu jumlah elemen pada penyanggan (buffer). Argumen keempat yaitu berisi tipe data yang akan ditulis ke dalam file tersebut. Argumen kelima yaitu berisi status pada objek. c. MPI_File_read MPI_File_read adalah sebuah fungsi untuk membaca sebuah file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut : int MPI_File_read MPI_Datatype datatype,
(MPI_File fh, void MPI_status *status)
*buf,
int
count,
(Gropp et al. 1999). Argumen yang digunakan pada fungsi tersebut sama persis dengan fungsi MPI_File_write. d. MPI_File_set_view MPI_File_set_view adalah sebuah fungsi yang memberikan sebuah proses untuk mengakses bagian file tertentu. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut : int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info).
Argumen pertama sebagai identifikasi file. Argumen kedua adalah perpindahan (bytes) dalam sebuah file. Argumen selanjutnya biasa disebut etype, spesifik data pada sebuah file yang akan dibaca atau ditulis. Argument keempat tipe file yang akan ditulis atau dibaca, argumen ketiga dan argumen keempat dapat berupa tipe data yang diturunkan oleh MPI. Argumen kelima yaitu karakter string yang menunjukkan representasi dari data yang akan digunakan dalam file. Nilai string yang merepresentasikan data ada tiga yaitu “native”, “internal32”, dan “external32”. “native” merupakan representasi data yang digunakan agar file yang dibaca sama seperti pada memori. “internal32” dan “external32” merupakan representasi data agar file memiliki beberapa derajat portabilitas. Argumen yang keenam adalah info objek seperti pada fungsi MPI_File_open.
8 Metode Foster Ian Foster mengemukakan empat langkah metode desain sistem paralel yang dimulai dari pembagian data ke dalam beberapa bagian, menentukan komunikasi antar bagian, mengelompokkan bagian yang memiliki komunikasi intensif dengan bagian lain, dan memetakan kelompok tersebut ke sejumlah prosesor yang ada. Empat tahapan desain tersebut adalah partisi, komunikasi, aglomerasi, dan pemetaan (Quinn 2004). Ilustrasi metode Foster dapat dilihat pada Gambar 9.
Gambar 9 Ilustrasi metode Foster (http://tirtasucahya.blogspot.com/2010/12/met ode-foster.html)
a
Partisi Partisi adalah suatu proses pembagian komputasi dan data ke dalam beberapa bagian. Ada dua cara untuk melakukan partisi, yaitu domain decomposition dan functional decomposition. Domain decomposition adalah pendekatan model algoritme paralel yang melakukan pembagian data menjadi beberapa bagian terlebih dahulu, kemudian menentukan bagaimana mengasosiasikan komputasi dengan data tersebut, sedangkan functional decomposition melakukan pembagian komputasi terlebih dahulu lalu menentukan bagaimana menghubungkan data dengan komputasi-komputasi tersebut (Quinn 2004). b Komunikasi Skema komunikasi antar bagian hasil partisi dibuat setelah melakukan partisi. Ada dua jenis komunikasi yang digunakan yaitu local communication dan global communication. Local communication adalah membuat saluran antar task ketika ada task yang membutuhkan nilai dari task lainnya. Global communication terjadi ketika ada primitive task dengan jumlah yang signifikan menyumbangkan data untuk menunjukkan proses komputasi (Quinn 2004). c
Aglomerasi Aglomerasi adalah proses pengelompokkan task ke dalam task yang lebih besar guna meningkatkan kinerja program maupun menyederhanakan program (Quinn 2004).
9
d Pemetaan Pemetaan adalah proses penugasan task ke prosesor. Tujuan dari pemetaan adalah memaksimalkan kemampuan prosesor dan meminimalkan komunikasi antar prosesor (Quinn 2004). Domain Decomposition Salah satu jenis teknik pemrosesan secara paralel, yang membagikan data ke setiap proses. Setiap proses melakukan eksekusi dengan tugas yang sama dengan proses lainnya (Quinn 2004). Functional Decomposition Salah satu jenis teknik pemrosesan secara paralel, yang membagikan tugas yang berbeda ke setiap proses (Quinn 2004). Performance Metric Performance metrics adalah salah satu cara untuk menganalisis kinerja algoritme paralel (Grama et al. 2003). Beberapa persamaan performance metric yaitu: a. Waktu Eksekusi Waktu eksekusi adalah waktu yang dihitung dari awal sampai akhir eksekusi. Waktu eksekusi sekuensial dilambangkan dengan Ts. Waktu eksekusi paralel dilambangkan dengan Tp (Grama et al. 2003). b. Speedup Speedup (S) adalah rasio dari waktu yang digunakan untuk menyelesaikan masalah dalam program sekuensial (Ts) terhadap waktu yang diperlukan untuk menyelesaikan masalah yang sama dengan program paralel (Tp) (Grama et al. 2003). Speedup dirumuskan pada Persamaaan 1. S=
s
(1)
p
c. Efisiensi Efisiensi (E) adalah rasio antara speedup dengan banyaknya prosesor yang digunakan (p) (Grama et al. 2003). Efisiensi dirumuskan pada Persamaan 2. E=
s p
(2)
10
METODE Penelitian ini akan dikerjakan dalam beberapa tahap yang dapat dilihat pada Gambar 10.
Gambar 10 Metode penelitian Analisis Struktur I/O Analisis yang dilakukan pada tahap ini adalah melihat dan menentukan bagian mana saja yang menjadi tahapan proses I/O dari program AES secara paralel yang menggunakan I/O sekuensial. Pada penelitian yang dilakukan oleh Zulfikar (2012) diterapkan metode Foster untuk mendesain algoritme AES secara paralel. Tahapan dari metode Foster yaitu: 1
Partisi Jenis partisi yang dilakukan pada algoritme ini adalah domain decomposition. File plaintext akan dipecah menjadi blok-blok data berukuran 16 byte. Setiap blok data akan ditangani oleh satu proses, sehingga untuk n blok data
11 akan membutuhkan n proses (Zulfikar 2012). Ilustrasi partisi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 11.
Gambar 11 Ilustrasi partisi algoritme AES domain decomposition (Zulfikar 2012) 2
Komunikasi Proses master (root) akan mengirim blok-blok data kepada setiap proses untuk dienkripsi dengan menggunakan komunikasi kolektif (scatter). Hasil enkripsi tiap proses akan dikumpulkan kembali ke root juga dengan menggunakan koleksi komunikatif (gather), n blok data akan membutuhkan 2 kali komunikasi dan n buah proses (Zulfikar 2012). Ilustrasi komunikasi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 12.
Gambar 12 Ilustrasi komunikasi algoritme AES domain decomposition (Zulfikar 2012) Aglomerasi Aglomerasi dilakukan untuk mengurangi komunikasi dan kebutuhan proses agar menjadi lebih efisien. Tiap proses (p) akan menangani n/p blok data. Komunikasi kolektif digunakan untuk meminimalkan komunikasi sehingga hanya membutuhkan sekali scatter untuk pendistribusian data dan sekali gather untuk pengumpulan data (Zulfikar 2012). Ilustrasi aglomerasi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 13. 3
Gambar 13 Ilustrasi aglomerasi algoritme AES domain decomposition (Zulfikar 2012)
12
4 Pemetaan Setiap proses akan mengerjakan tugas yang sama namun dengan data masukan yang berbeda-beda. Jika n mod p ≠ 0, jumlah blok data yang dikerjakan ⌋. Jika s = n mod oleh tiap proses ada yang sebesar dan ada juga yang sebesar ⌊ ⌉ blok data akan dipetakan ke s proses pertama sedangkan sisa proses p, ⌈ ⌋. blok data (Zulfikar 2012). lainnya akan dipetakan ⌊ Adapun algoritme AES secara paralel yang digunakan pada penelitian kali ini diilustrasikan pada Gambar 14.
Gambar 14 Algoritme enkripsi AES secara paralel domain decomposition menggunakan I/O sekuensial (Zulfikar 2012)
13
Implementasi Implementasi I/O paralel pada penelitian ini menggunakan bahasa C, dan library MPICH2 yang digunakan untuk memakai fungsi paralel pada I/O. Panduan lengkap pemasangan MPICH2 dapat dilihat pada Lampiran 1. Pada tahap implementasi ini menggunakan source code dari penelitian yang dilakukan oleh Zulfikar (2012), perubahan-perubahan yang terjadi pada bentuk struktur I/O meliputi: a. Deklarasi file MPICH2 membuat struktur tersendiri untuk mendeklarasikan variabel sebuah file yang akan digunakan untuk membuat sebuah program menggunakan MPI I/O. Jika pada library standar bahasa C menggunakan char File *fh, maka untuk menggunakan library MPI I/O deklarasi file menjadi char MPI_File fh. b. Membuka file Struktur pada tahap pembukaan file juga mengalami perubahan. Jika pada library standar bahasa C kode yang digunakan FILE *fopen(const char *filename, const char *mode), maka kode yang digunakan pada library MPICH2 int MPI_File_open (MPI_Comm comm, char *filename, int amode, MPI_Info info,MPI_File *fh). c. Membaca file Struktur pada tahap membaca file juga mengalami perubahan. Jika pada library standar bahasa C kode yang digunakan size_t fread(void *ptr, size_t size of elements, size_t number of element, FILE *a_file), maka kode yang digunakan pada library MPICH2 int MPI_File_read (MPI_File fh, void MPI_status *status).
*buf,
int
count,
MPI_Datatype
datatype,
d. Menulis file Struktur pada tahap membaca file juga mengalami perubahan. Jika pada library standar bahasa C kode yang digunakan int fputc( int c, FILE *fp ), maka kode yang digunakan pada library MPICH2 int MPI_File_write (MPI_File fh, void MPI_status *status).
*buf,
int
count,
MPI_Datatype
datatype,
e. Mempartisi file Tahap partisi file untuk menentukan pembagian beban kerja sebuah proses. Tahap partisi ini fungsi yang digunakan int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info). Jika sebuah file dipartisi hingga n kali, maka
dibutuhkan proses sebanyak p(n-1). Ilustrasi tersebut dapat dilihat pada Gambar 8. Pada saat membuka file, semua proses berpartisipasi dalam pembukaan file tersebut. Pada penelitian yang dilakukan oleh Zulfikar (2012) terdapat tiga kali
14 pembukaan file, yaitu pada saat membuka file kunci, membuka file yang akan dienkripsi, dan pada saat membuka file hasil enkripsi. Setelah melakukan pembukaan pada file, dilakukan partisi terhadap file yang akan dienkripsi dan file hasil enkripsi. Partisi file dilakukan dengan mengambil ukuran data yang dibagi dengan jumlah proses yang dibangkitkan. Proses partisi file memiliki parameter string representasi data, pada penelitian kali ini digunakan string “native” agar pembacaan file sama seperti yang terdapat pada memori. Setelah melakukan partisi terhadap file barulah dilakukan proses pembacaan atau penulisan file. Setiap proses akan membaca atau menulis sebuah file dengan mengacu pada proses partisi file, sehingga setiap proses hanya akan membaca atau menulis file pada bagian yang telah ditentukan pada saat melakukan tahap partisi file. Perbedaan dari algoritme AES secara paralel yang menggunakan I/O paralel dan algoritme AES secara paralel yang menggunakan I/O sekuensial terletak pada proses pembacaan input dan penulisan output. Jika pada algoritme AES secara paralel yang menggunakan I/O sekuensial hanya root yang melakukan proses I/O pada algoritme AES yang menggunakan I/O paralel semua proses terlibat pada proses I/O tersebut. Desain lengkap algoritme AES secara paralel yang menggunakan I/O paralel dapat dilihat pada Gambar 15. Perancangan percobaan Pada tahap ini dilakukan perancangan sehingga mendapatkan beberapa parameter yang akan digunakan. Parameter-parameter yang digunakan dalam percobaan ini adalah: 1 Jenis algoritme Percobaan kali ini akan diuji tiga buah algoritme yaitu algoritme AES sekuensial, algoritme AES secara paralel dengan menggunakan I/O sekuensial, dan algoritme AES secara paralel dengan menggunakan I/O paralel. Tiap algoritme dihitung waktu proses enkripsi. 2 Proses dan prosesor Jumlah komputer yang digunakan pada penelitian ini berbeda-beda, baik pada algoritme AES secara paralel dengan I/O sekuensial maupun algoritme AES secara paralel dengan I/O paralel dibangkitkan dua, tiga, dan empat proses yang masing-masing menggunakan satu komputer dan dua komputer. 3 Ukuran file Ukuran file yang digunakan ada dua kategori yaitu kecil, dan besar. Detil ukuran file disaikan pada Tabel 1. Tabel 1 Nama file beserta ukurannya Nama file Kategori Ukuran Pohon.jpg Kecil 4.5 MB Video.mp4 Besar 115 MB
15
Gambar 15 Algoritme enkripsi AES secara paralel domain decomposition menggunakan I/O paralel
16 4
Ulangan Untuk ulangan yang dilakukan oleh dua komputer dilakukan eksekusi sebanyak lima kali, sedangkan ulangan yang dilakukan oleh satu komputer dilakukan eksekusi sebanyak sepuluh kali. 5 Performance metrics Performance metrics yang dianalisis adalah waktu eksekusi, speedup, dan efisiensi 6 Lingkungan penelitian a dua komputer, komputer pertama dual core dan komputer kedua quad core b satu kabel UTP standar c sistem operasi Windows 7 dan program MPICH2-1.4.1pl 32 bit. Percobaan Percobaan ini dibagi ke dalam lima bagian yaitu: 1 Eksekusi enkripsi algoritme AES secara paralel dengan I/O sekuensial menggunakan satu komputer yang membangkitkan dua, tiga, dan empat proses dengan sepuluh kali pegulangan, 2 file × 3 proses × 10 ulangan = 60 kali. 2 Eksekusi enkripsi algoritme AES secara paralel dengan I/O sekuensial yang menggunakan dua komputer yang membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 10 ulangan = 60 kali. 3 Eksekusi enkripsi AES secara paralel dengan I/O paralel yang menggunakan satu komputer dengan membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 5 ulangan = 30 kali. 4 Eksekusi enkripsi algoritme AES secara paralel dengan menggunakan I/O paralel yang menggunakan dua komputer dengan membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 5 ulangan = 30 kali. 5 Eksekusi enkripsi algoritme AES sekuensial 2 file × 10 ulangan = 20 kali. Percobaan ini diawali dengan melakukan pengaturan jaringan dan komputer agar bisa bekerja secara paralel. Langkah selanjutnya adalah dengan menjalankan batch file yang berisi perintah eksekusi untuk satu komputer dan melakukan secara manual untuk dua komputer.
HASIL DAN PEMBAHASAN Hasil Hasil analisis kinerja implementasi algoritme AES sekuensial, paralel dengan I/O sekuensial, dan paralel dengan I/O paralel diawali dengan menghitung waktu eksekusi untuk tiap jenis perlakuan dan data yang berbeda. Setelah diketahui waktu eksekusinya, performance metrics yang lain dapat dihitung.
17 Pengujian Validitas Pengujian validitas dilakukan untuk mengetahui bahwa file yang dienkripsi oleh algoritme AES secara sekuensial, algoritme AES secara paralel dengan menggunakan I/O sekuensial, dan algoritme AES secara paralel dengan menggunakan I/O paralel memiliki nilai checksums yang sama, yang artinya ketiga algoritme tersebut memiliki keluaran yang sama. Pengujian validitas menggunakan software MD5Check version 3.0. Hasil nilai checksums disajikan pada Gambar 16, 17, 18, 19, dan 20.
Gambar 16 Hasil nilai checksums enkripsi AES sekuensial dengan AES secara paralel yang menggunakan I/O sekuensial
Gambar 17 Hasil nilai checksums enkripsi AES sekuensial dengan AES secara paralel yang menggunakan I/O paralel
18
Gambar 18 Hasil nilai checksums dekripsi AES sekuensial dengan file awal
Gambar 19 Hasil nilai checksums dekripsi AES secara paralel dengan menggunakan I/O sekuensial dengan file awal
19
Gambar 20 Hasil nilai checksums dekripsi AES secara paralel dengan menggunakan I/O paralel dengan file awal Pada Gambar 16 dan 17 dapat dilihat bahwa keluaran yang dihasilkan oleh ketiga algoritme sama, dan pada Gambar 18, 19, dan 20 dapat dilihat bahwa hasil dekripsi ketiga algoritme memiliki nilai yang sama dengan file awal. Dengan demikian dapat diketahui bahwa ketiga algoritme tersebut bekerja dengan benar. Waktu Eksekusi Sekuensial Waktu eksekusi enkripsi AES secara sekuensial untuk tiap file disajikan pada Gambar 21.
Gambar 21 Waktu eksekusi enkripsi AES secara sekuensial
20 Gambar 21 menunjukkan waktu eksekusi enkripsi AES akan lebih lama berdasarkan ukuran file yang akan di eksekusi.Hal tersebut terjadi karena semakin besar ukuran file jumlah blok yang akan di baca maupun di tulis menjadi semakin lebih banyak. Waktu Eksekusi Paralel Perbandingan waktu Eksekusi enkripsi AES secara paralel yang menggunakan I/O sekuensial dan AES secara paralel yang menggunakan I/O paralel untuk setiap file disajikan pada Gambar 22, 23, 24, dan 25.
Gambar 22 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil satu komputer
Gambar 23 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file besar satu komputer
21
Gambar 24 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer
Gambar 25 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer Waktu eksekusi algoritme AES secara paralel dengan menggunakan I/O paralel jauh lebih cepat dibanding waktu eksekusi AES secara paralel yang menggunakan I/O sekuensial untuk semua kasus. Namun demikian penambahan jumlah prosesor tidak selalu mengurangi waktu eksekusi hal itu terjadi pada saat membangkitkan empat proses menggunakan dua komputer. Waktu eksekusi meningkat pada saat membangkitkan empat proses pada saat menggunakan file kecil baik algoritme AES secara paralel menggunakan I/O sekuensial maupun yang menggunakan I/O paralel. Hal itu dapat terjadi akibat dari beberapa faktor, yaitu latensi jaringan yang tidak konstan, kerja prosesor yang tidak stabil ataupun pengaruh dari cache memori. Waktu eksekusi pada saat menggunakan satu komputer mengurang di setiap penambahan jumlah proses baik pada algoritme AES secara paralel yang menggunakan I/O sekuensial maupun yang menggunakan I/O paralel. Hal itu terjadi karena eksekusi tersebut dilakukan dalam satu ruang lingkup yang sama sehingga tidak terlalu memakan waktu untuk komunikasi. Waktu tercepat untuk
22 I/O paralel adalah 2.172 detik untuk file kecil dan 63.795 detik untuk file besar yang menggunakan dua komputer. Waktu tercepat untuk I/O sekuensial adalah 2.802 detik untuk file kecil dan 70.550 detik untuk file besar yang menggunakan dua komputer. Waktu tercepat file kecil yang menggunakan satu komputer untuk I/O paralel adalah 2.289 detik dan 57.894 detik untuk file besar. Waktu tercepat file kecil untuk I/O sekuensial yang menggunakan satu komputer adalah 3.054 detik sedangkan untuk file besar adalah 75.537 detik. Speedup Nilai perbandingan speedup enkripsi AES secara paralel yang menggunakan I/O sekuensial dan I/O paraleldisajikan pada Gambar 26 dan Gambar 27.
Gambar 26 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer
Gambar 27 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada dua komputer
23 Berdasarkan Gambar 26, nilai speedup cenderung naik seiring meningkatnya jumlah proses. Fenomena ini hanya berlaku jika jumlah proses kurang dari atau sama dengan jumlah prosesor. Jika jumlah proses lebih besar dari jumlah prosesor, maka speedup akan konstan dan bahkan dapat menurun. Pada Gambar 27 menunjukkan ada penurunan pada speedup pada saat menggunakan empat proses. Hal ini terjadi karena waktu eksekusi file kecil menggunakan dua komputer meningkat di saat menggunakan empat proses sehingga hal itu berdampak juga pada nilai speedup. Dari data yang ditunjukkan Gambar 20 dan 21 nilai speedup menunjukkan selalu melebihi satu, hal itu menunjukkan adanya penurunan waktu eksekusi dibandingkan dengan algoritme AES sekuensial, selain itu nilai speedup pada gambar tersebut juga menyatakan bahwa algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan AES secara paralel yang menggunakan I/O sekuensial. Efisiensi Nilai perbandingan efisiensi enkripsi AES secara paralel yang menggunakan I/O sekuensial dan I/O paralel disajikan pada Gambar 28 dan 29.
Gambar 28 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer Berdasarkan Gambar 28 menunjukkan semakin banyak jumlah proses yang digunakan, nilai efisiensi yang diperoleh semakin menurun. Hal ini menunjukkan pemanfaatan prosesor yang rendah. Penambahan jumlah prosesor tidak dapat menurunkan waktu secara proporsional, untuk semua jenis file. Saat menggunakan dua proses, algoritme AES secara paralel yang menggunakan I/O paralel menyentuh efisiensi hingga 0.903 untuk file kecil dan 0.943 untuk file besar. Hal tersebut menunjukkan algoritme tersebut cukup bagus saat menggunakan dua proses pada satu komputer hal tersebut bisa dikatakan mendekati cost-optimal karena nilai efisiensinya mendekati 1. Efisiensi terbesar untuk algoritme AES
24 secara paralel yang menggunakan sekuensial I/O file kecil (4.5 MB) sebesar 0.8 dan 0.77 untuk file besar.
Gambar 29 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada dua komputer Gambar 29 menunjukkan bahwa adanya peningkatan efisiensi pada algoritme AES secara paralel yang menggunakan I/O paralel pada saat menggunakan tiga proses nilai efisien meningkat hingga 0.95 untuk ukuran file kecil namun pada ukuran file besar untuk algoritme I/O paralel cenderung turun. Hal itu berbanding terbalik dengan algoritme AES secara I/O paralel sekuensial pada saat mengunakan file kecil nilai efisiensi algoritme tersebut cenderung turun namun pada saat menggunakan file besar adanya peningkatan pada saat menggunakan tiga proses. Namun tingkat efisiensi algoritme AES secara paralel yang menggunakan I/O paralel lebih tinggi dibandingkan dengan yang menggunakan I/O sekuensial. Hasil lengkap pada penelitian kali ini dapat dilihat pada Lampiran 2, 3, 4, 5, 6, 7, 8, dan 9. Perbandingan Waktu Proses Input dan Output Perbandingan waktu proses input dan output antara algoritme AES secara paralel yang menggunakan I/O sekuensial dan algoritme AES secara paralel yang menggunakan I/O paralel disajikan pada Gambar 30.
25 detik 16 14 12 10 8
I/O paralel
6
I/O sekuensial
4 2 0 baca file
tulis file
Gambar 30 Perbandingan waktu proses input dan output I/O sekuensial vs I/O paralel Pada Gambar 30 dapat dilihat bahwa pembacaan file dan kunci tidak berkurang secara signifikan karena pada saat setelah melakukan pembacaan file, informasi file yang telah dibaca dikembalikan lagi kepada root untuk memecah file input menggunakan fungsi scatter. Untuk penulisan output waktu eksekusi berkurang sangat signifikan karena pada penulisan output tersebut, semua proses langsung melakukan penulisan output.
SIMPULAN DAN SARAN Simpulan 1
2
3
4
5
Simpulan dari hasil penelitian ini adalah: Waktu eksekusi algoritme AES secara sekuensial akan semakin meningkat seiring dengan meningkatnya ukuran file yang digunakan. Waktu eksekusi enkripsi secara sekuensial untuk file 1 (4.54 MB) adalah 6.306 detik dan file 2 (115 MB) adalah 167.382 detik. Algoritme AES secara paralel yang menggunakan I/O paralel dapat mengurangi waktu eksekusi lebih baik dibandingkan dengan yang menggunakan I/O sekuensial. Nilai efisiensi terbesar algoritme AES secara paralel yang menggunakan I/O paralel sebesar 0.95, sedangkan algoritme AES secara paralel yang menggunakan I/O sekuensial sebesar 0.8. Nilai efisiensi terendah algoritme AES secara paralel yang menggunakan I/O paralel sebesar 0.64, sedangkan algoritme AES secara paralel yang menggunakan sebesar 0.5. Nilai speedup algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan yang menggunakan I/O sekuensial.
26 6
Nilai efisiensi algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan yang menggunakan I/O sekuensial. Saran
Pada penelitian selanjutnya dapat digunakan sistem hybrid seperti Open MP atau gabungan dari library MPI dan Open-MP atau dapat menggunakan fitur MPI2 lainnya seperti one-sided-communication atau remote memory access.
DAFTAR PUSTAKA Giri EP. 2004. Analisis algoritme dan waktu enkripsi versus dekripsi pada Advanced Encryption Standard (AES) [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam. Institut Pertanian Bogor. Grama A, Gupta A, Karypis G, Kumar Vipin. 2003. Introduction to Parallel Computing. Boston (US): Addison-Wesley. Gropp W, Lusk E, Thakur R. 1999. Advanced Feutures of the Message-Passing Interface. London (UK): The MIT Press. Quinn MJ. 2004. Parallel Programming in C with MPI and OpenMP. San Francisco (US): McGraw Hill. Stallings W. 2003, Crypthography and Network Security Principles and Practice. London (UK): Prentice Hall. Surian D. 2006. Algoritme kriptografi AES Rijndael, Jurnal Teknik Elektro TESLA, 8(2):97-101. Zulfikar S. 2012. Analisis dan implementasi algoritme Advanced Encryption Standard secara paralel [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam. Institut Pertanian Bogor.
27 Lampiran 1 Pengaturan dan instalasi MPICH2 Langkah-langkah dalam pengaturan dan istalasi MPICH2 dalam penelitian ini yaitu: 1 Hubungkan tiap komputer menggunakan kabel UTP. 2 Ping ke setiap komputer yang hendak digunakan, pastikan semua komputer saling terhubung agar lebih mudah buat IP menjadi statis dan matikan firewall. 3 Instal mpich2-1.4.1p1-win-ia32.msi di setiap komputer dengan menggunakan administrator priviledge. 4 Tentukan passphrase yang akan digunakan dan pastikan setiap komputer memiliki passphrase yang sama dan Pilih “Everyone” pada salah satu menu instalasi agar MPICH2 bisa digunakan untuk semua pengguna komputer.
5 Tambahkan path MPICH2 (C:\Program Files\MPICH2\bin) pada system variabel tiap komputer.
6
Buat user baru dengan nama yang seragam dan password-nya sesuai dengan passphrase di tiap komputer. 7 Daftar user baru di tiap komputer dengan menjalankan perintah “mpiexec – register –user 1” pada jendela command prompt, masukkan nama dan passphrase sesuai dengan poin nomor 7. 8 Jalankan contoh program C:\Program Files\MPICH2\examples\cpi.exe secara paralel dengan menggunakan user yang sudah daftarkan. Jika contoh program dapat berjalan dengan baik, cluster komputer telah siap digunakan.
28 Lampiran 1 Lanjutan Beberapa kesalahan umum yang sering terjadi: 1 Pesan eror “Mpiexec is not recognize as internal or external command, operable program or batch file” ketika hendak menjalankan program paralel. Penyebab : instalasi MPICH2 atau penambahan path MPICH2 yang tidak sempurna. Solusi : instalasi ulang MPICH2 dan pastikan sesuai langkah di atas. 2 Pesan eror “SMPD version missmatch” ketika hendak menjalankan program paralel. Penyebab : ada program lain yang menggunakan smpd dengan versi yang berbeda dari MPICH2 yang digunakan Solusi : instalasi ulang MPICH2 dan pastikan installer-nya sama, hapus path smpd program lain jika ada.
29 Lampiran 2 Waktu eksekusi AES secara paralel menggunakan I/O sekuensial (file kecil pohon.jpg (4.5 MB) pada satu komputer) Ulangan
2 proses
3 proses
4 proses
1
4.799
3.517
3.280
2
4.777
3.451
3.098
3
4.742
3.483
3.093
4
4.717
3.523
3.072
5
4.799
3.476
3.111
6
4.723
3.554
3.153
7
4.727
3.464
3.054
8
4.729
3.492
3.073
9
4.732
3.482
3.061
10
4.715
3.487
3.089
Waktu rata - rata
4.745
3.493
3.109
Speedup
1.328
1.805
2.028
Efisiensi
0.664
0.601
0.507
30 Lampiran 3 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar video.mp4 (115 MB) pada satu komputer ) Ulangan
2 proses
3 proses
4 proses
1
107.942
85.898
75.630
2
106.312
85.405
75.860
3
106.070
85.156
76.066
4
105.009
85.443
75.782
5
105.319
85.221
75.783
6
06.109
85.333
76.298
7
105.454
85.356
76.159
8
105.366
85.309
76.239
9
104.276
85.196
75.537
10
105.426
85.222
75.809
Waktu rata rata
105.728
85.354
75.916
Speedup
1.583
1.961
2.204
Efisiensi
0.791
0.653
0.551
31 Lampiran 4 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil pohon.jpg (4.5 MB) pada satu komputer) Ulangan
2 proses
3 proses
4 proses
1
3.472
2.725
2.292
2
3.481
2.727
2.308
3
3.479
2.686
2.309
4
3.547
2.854
2.307
5
3.500
2.676
2.296
6
3.466
2.665
2.295
7
3.469
2.665
2.316
8
3.517
2.662
2.330
9
3.466
2.659
2.314
10
3.482
2.656
2.289
Waktu rata - rata
3.488
2.698
2.306
Speedup
1.807
2.337
2.734
Efisiensi
0.903
0.779
0.683
32 Lampiran 5 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada satu komputer) Ulangan
2 proses
3 proses
4 proses
1
92.124
72.037
66.820
2
90.371
69.876
58.863
3
97.539
69.922
57.894
4
87.248
70.074
58.488
5
86.766
70.042
58.387
6
86.511
69.941
58.209
7
86.518
70.341
58.389
8
86.830
70.149
58.265
9
86.386
69.708
58.298
10
86.707
70.113
58.298
Waktu rata - rata
88.700
70.220
59.191
Speedup
1.887
2.383
2.827
Efisiensi
0.943
0.794
0.706
33 Lampiran 6 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file kecil pohon.jpg ( 4.5 MB) pada dua komputer) Ulangan
2 proses
3 proses
4 proses
1
3.962
2.805
3.133
2
3.816
2.823
3.099
3
4.159
3.039
3.179
4
3.941
2.995
3.006
5
3.793
2.742
2.983
Waktu rata – rata
3.934
2.881
3.080
Speedup
1.602
2.188
2.047
efisiensi
0.801
0.729
0.511
34 Lampiran 7 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar video.mp4 (115 MB) pada dua komputer) Ulangan
2 proses
3 proses
4 proses
1
107.987
71.460
70.550
2
96.654
69.488
72.205
3
95.361
72.539
70.111
4
96.492
77.400
72.194
5
106.139
79.338
72.245
Waktu rata – rata 100.527
74.045
71.461
Speedup
1.550
2.342
2.372
Efisiensi
0.775
0.780
0.593
35 Lampiran 8 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil pohon.jpg (115 MB) pada dua komputer) Ulangan
2 proses
3 proses
4 proses
1
3.204
2.297
2.525
2
3.615
2.167
2.342
3
3.607
2.160
2.413
4
3.637
2.172
2.518
5
3.559
2.251
2.345
Waktu rata – rata
3.524
2.209
2.429
Speedup
1.789
2.853
2.596
Efisiensi
0.894
0.951
0.649
36 Lampiran 9 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada dua komputer) Ulangan
2 proses
3 proses
4 proses
1
96.132
64.258
64.920
2
93.249
63.795
66.539
3
98.480
71.390
65.166
4
96.085
63.919
65.207
5
100.387
64.101
64.602
65.493
65.287
Waktu rata – rata 96.867 Speedup
1.741
2.604
2.578
Efisiensi
0.870
0.868
0.644
37 RIWAYAT HIDUP
Penulis lahir di Bogor pada tanggal 12 Oktober 1989. Penulis merupakan anak pertama dari dua bersaudara, pasangan Eka Yudha Prya, SE dan Latifah, SSos. Penulis lulus dari Sekolah Menengah Atas Neger 8 Bogor pada tahun 2007 dan pada tahun yang sama di terima di Program Studi Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor (IPB) melalu jalur SPMB. Selama mengikuti perkuliahan, penulis aktif dalam berbagai kegiatan non akademis seperti panitia Masa Perkenalan Departemen pada tahun 2009, sebagai anggota divisi keaman acara tahunan HIMALKOM, IT TODAY, pada tahun 2008, dan wakil ketua divisi sponsorship pada acara yang sama pada tahun 2009. Penulis pernah melakukan Praktik Kerja Lapangan di BPDAS Cimanuk – Citanduy, Bandung Jawa Barat selama 35 hari kerja. Penulis membuat sistem Dokumentasi Foto Berkoordinat BPDAS Cimanuk – Citanduy pada Google Map Menggunakan JetPhoto Studio selama PKL di sana.