Kriptografi
Kriptografi didefinisikan sebagai studi teknik matematis yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi asal data. Adapun orang yang melakukannya disebut kriptografer (Menezes
et al. 1996).
Menurut Menezes et al. (1996), empat tujuan utama kriptografi yaitu:
1 Kerahasiaan.
2 Integritas data (keutuhan data).
3 Autentikasi (identifikasi entitas dan data). 4 Non-repudiasi (terjaganya kesepakatan
transaksi).
Menurut Menezes et al. (1996), sistem pengamanan data pada kriptografi secara umum ada dua langkah, yaitu:
1 Proses enkripsi
Proses enkripsi adalah suatu proses yang mengubah plaintext (kode sesungguhnya) menjadi chipertext (kode rahasia). Pada enkripsi, proses perubahan plaintext ke
chipertext dilakukan dengan cara
menyandikan pesan M dengan suatu kunci K yang akan menghasilkan pesan
C.
2 Proses dekripsi
Proses dekripsi adalah suatu proses yang mengubah chipertext menjadi plaintext, dimana pesan yang sudah teracak dikembalikan ke pesan semula. Pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K, sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.
Kotak-S
Kotak-S merupakan suatu bentuk pemetaan substitusi sederhana dari m-bit input
menjadi n-bit output. Suatu kotak-S dengan m bit input dan n bit output dinamakan kotak-S m*n bit (Stallings 2003).
Gambar 1 Kotak-S.
. Algoritme AES menggunakan desain kotak-S yang memetakan 4*32 bit input kepada 4*32 bit output sebagai hasilnya. Desain kotak-S yang digunakan AES dapat dilihat pada Gambar 1.
InversiKotak-S
Inversi Kotak-S merupakan bentuk kebalikan dari kotak-S yang tiap sel penyusunnya merupakan antilog (pemetaan kebalikan) dari setiap sel bersesuaian pada kotak-S. Desain inversi kotak-S yang digunakan AES dapat dilihat pada Gambar 2.
Gambar 2 Inversi kotak-S. 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. Khusus untuk penelitian ini, pengkajian akan dibatasi pada blok pesan 128 bit dengan ukuran blok kunci 128 bit.
Empat proses utama algoritme terdiri atas satu proses permutasi (ShiftRows) dan tiga proses substitusi (SubBytes, MixColumns, dan AddRoundKey). Struktur algoritme secara umum cukup sederhana, dengan proses baik enkripsi maupun dekripsi diawali proses AddRoundKey, diikuti sembilan round yang masing-masing tersusun atas empat proses, dan diakhiri round kesepuluh yang terdiri atas tiga proses. Proses AddRoundKey saja yang memanfaatkan kunci, karena itu penyandian diawali dan diakhiri oleh sebuah proses AddRoundKey (Stallings 2003).
Proses Enkripsi AES
Secara umum, proses enkripsi dan dekripsi AES dapat digambarkan pada Gambar 3. Masukan dari algoritme enkripsi dan dekripsi AES adalah sebuah blok berukuran 128 bit. Blok ini digambarkan sebagai sebuah matriks 4x4 dengan tiap elemen berukuran satu byte
heksadesimal, maka dihasilkan 16 buah input.
Input tersebut direpresentasikan ke dalam matriks 4x4 yang disebut matriks input.
Gambar 3 Proses umum enkripsi dan dekripsi AES.
Matriks input disalin kedalam matriks state
yang kemudian akan dimodifikasi pada setiap tahap enkipsi atau dekripsi. Pada tahap akhir penyandian, matriks state disalin ke dalam matriks output (Stallings 2003). Ilustrasi matriks input, state, dan output tersaji pada Gambar 4.
Kunci juga digambarkan sebagai matriks 4x4 yang disebut matriks key. Tiap elemennya berukuran satu byte dan direpresentasikan dalam dua karakter heksadesimal (Stallings 2003).
Gambar 4 Matriks input, state, dan output. Proses enkripsi AES diawali proses AddRoundKey diikuti sembilan round dengan arsitektur yang tersusun atas empat proses dan urutan identik yaitu SubBytes, ShiftRows, MixColumns, dan AddRoundKey. Pada akhir proses enkripsi, digunakan round kesepuluh yang tersusun atas tiga proses terurut SubBytes, ShiftRows, dan AddRoundKey yang keseluruhan proses tersebut diiringi proses penjadwalan key (oleh expand key) bagi setiap round (Stallings 2003).
a SubBytes
Operasi ini merupakan suatu operasi substitusi tak linear yang beroperasi secara mandiri pada setiap byte dengan menggunakan kotak-S (Ariyus 2008). Ilustrasi proses SubBytes diberikan pada Gambar 5.
Gambar 5 Ilustrasi proses SubBytes. b ShiftRows
ShiftRows merupakan proses permutasi sederhana dari 16 nilai matriks 4x4 kepada 16 nilai baru matriks 4x4. (Stallings 2003). Ilustrasi proses ShiftRows diberikan pada Gambar 6.
Gambar 6 Ilustrasi proses ShiftRows. c MixColumns
MixColumns merupakan operasi terhadap setiap kolom secara terpisah. Setiap byte dari suatu kolom dipetakan terhadap suatu nilai baru dengan suatu fungsi yang melibatkan seluruh nilai (4 byte) dari kolom yang bersangkutan. Proses MixColumns mengalikan matriks polimat dengan matriks state (Stallings 2003).
02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02 Gambar 7 Matriks polimat. d AddRoundKey
Operasi ini merupakan suatu operasi penambahan kunci dengan operasi XOR dan setiap kunci putaran terdiri dari w[i]. Nilai w[i] merupakan kunci ekspansi yang diturunkan dari kunci primer (Ariyus 2008). Ilustrasi proses AddRoundKey diberikan pada Gambar 8.
Gambar 8 Ilustrasi proses AddRoundKey. Proses Dekripsi AES
Struktur proses dekripsi AES sama dengan proses enkripsi. Akan tetapi, proses dekripsi AES memiliki urutan proses dan transformasi penyusun tiap round yang berbeda. Selain itu, transformasi yang digunakan pun merupakan transformasi kebalikan dari proses transformasi penyusun setiap round pada proses enkripsi (Stallings 2003).
Proses dekripsi diawali dengan AddRoundKey lalu dilanjutkan dengan proses sembilan buah round identik yang menggunakan key hasil ekspansi bagi round
bersesuaian. Setiap round dekripsi (round
pertama sampai round kesembilan) tersusun atas empat proses transformasi terurut, yaitu InvShiftRows, InvSubBytes, AddRoundKey, dan MixColumns. Proses dekripsi diakhiri oleh round kesepuluh dengan tiga proses penyusun secara berurut yaitu InvShiftRows, InvSubBytes, dan AddRounKey (Stallings 2003).
a InvShiftRows
InvShiftRows merupakan transformasi kebalikan dari proses permutasi ShiftRows (Stallings 2003). Untuk kasus blok pesan 128 bit dengan 128 bit blok kunci, InvShiftRows memiliki aturan permutasi sebagai berikut:
1 Baris pertama matriks tetap. 2 Baris kedua matriks bergeser secara
rotasi satu byte ke kanan.
3 Baris ketiga matriks bergeser secara rotasi dua byte ke kanan.
4 Baris keempat matriks bergeser secara rotasi tiga byte ke kanan. b InvSubBytes
InvSubBytes memiliki kaidah pemetaan seperti proses SubBytes pada enkripsi akan tetapi kamus pemetaannya menggunakan inversi kotak-S (Stallings 2003).
c AddRoundKey
AddRoundKey pada proses dekripsi identik dengan AddRoundKey pada proses enkripsi. Hal ini dikarenakan operasi inversi dari XOR merupakan operasi XOR itu sendiri (Stallings 2003). d InvMixColumns
InvMixColumns merupakan proses inversi dari proses MixColumns pada enkripsi (Stallings 2003). Proses InvMixColumns dapat didefinisikan sebagai proses perkalian dengan inversi dari matriks polimat pada proses enkripsi (Gambar 10).
0E 0B 0D 09 09 0E 0B 0D 0D 09 0E 0B 0B 0D 09 0E Gambar 9 Matriks inversi polimat
Ekspansi Kunci
Ekspansi kunci adalah proses untuk membangkitkan kunci bagi round pada setiap iterasi. Algoritme ekspansi kunci AES membutuhkan masukan sebuah kunci berukuran empat word dan akan menghasilkan sebuah 44 word (156 bytes) array yanglinear (Stallings 2003). Proses ekspansi kunci digambarkan pada Gambar 10.
Gambar 10 Proses ekspansi kunci AES. Pemrograman Paralel
Pemrograman paralel adalah pemrograman dalam bahasa yang memungkinkan secara eksplisit menunjukkan bagaimana bagian yang berbeda dari komputasi dapat dieksekusi secara bersamaan oleh prosesor yang berbeda (Quinn 2004).
Algoritme paralel adalah sebuah urutan yang memberi tahu kita bagaimana cara untuk memecahkan suatu masalah menggunakan beberapa prosesor. Algoritme ini mencakup identifikasi bagian dari pekerjaan bersama ke 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 di berbagai tahapan pelaksanaan program paralel (Grama et al. 2003).
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 11.
Gambar 11 Ilustrasi metode Foster. a Partisi
Partisi adalah suatu proses pembagian komputasi dan data ke dalam beberapa bagian. Ada dua cara untuk melakukan partisi, yaitu domain
decompotition dan functional
decompotition. Domain decompotition
adalah pendekatan model algoritme paralel yang melakukan pembagian data menjadi beberapa bagian terlebih dahulu, kemudian menentukan bagaimana mengasosiasikan komputasi dengan data tersebut. sedangkan functional
decompotition 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).
d Pemetaan
Pemetaan adalah proses penugasan
task ke prosesor. Tujuan dari pemetaan adalah memaksimalkan kemampuan prosesor dan meminimalkan komunikasi antar prosesor (Quinn 2004).
MPI (Message-Passing-Interface)
MPI adalah sebuah standar library
pengenalan dasar pemrograman sistem paralel (Quinn 2004). MPI dapat digunakan dengan berbagai bahasa pemrograman seperti bahasa 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.
Performance Metrics
Performance metrics adalah salah satu cara untuk menganalisis kinerja algoritme paralel (Grama et al.). 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 adalah 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 =
(1)
c Efisiensi
Efisiensi (E) adalah rasio antara
speedup dengan banyaknya prosesor yang
digunakan (p). Suatu sistem paralel dikatakan cost-optimal jika memiliki efisiensi sebesar 1 (Grama et al. 2003). Efisiensi dirumuskan pada Persamaan 2.
E = (2)
d Cost
Cost (C) pada sistem paralel adalah hasil perkalian waktu eksekusi paralel dengan jumlah prosesor yang digunakan (Grama et al. 2003). Fungsi cost
dirumuskan pada Persamaan 3.
C = pTp (3)
e Overhead
Overhead adalah kelebihan dari total waktu yang dibutuhkan oleh semua proses paralel dibandingkan proses sekuensial pada masalah yang sama (Grama et al. 2003). Fungsi overhead
dirumuskan pada Persamaan 4.
To = pTp - Ts (4)