• Tidak ada hasil yang ditemukan

Kriptografi

Kriptografi adalah studi teknik matematis yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi asal data (Menezes et al. 1996). Ilmu kriptografi merupakan alat utama programmer untuk hal yang berkaitan dengan aspek keamanan di dalam aplikasinya.

Ada empat tujuan utama kriptografi menurut Menezes et al. (1996):

1 Kerahasiaan, yaitu layanan untuk menjaga isi informasi hanya untuk yang berhak. 2 Integritas data, yaitu layanan yang berkaitan

terhadap perubahan data.

3 Autentikasi, yaitu layanan yang berkaitan dengan idetifikasi.

4 Non-repudiasi, yaitu layanan yang mencegah suatu entitas melanggar kesepakatan.

Kriptografi Kunci Publik

Kriptografi kunci publik mempunyai kunci yang berbeda untuk melakukan enkripsi dan dekripsi. Kunci untuk enkripsi disebut kunci publik yang nilainya dapat diketahui secara

umum sementara kunci untuk dekripsi disebut kunci privat yang nilainya rahasia. Algoritme kunci publik dapat digunakan untuk kerahasiaan dan autentikasi ataupun keduanya. Skema kunci publik dapat dilihat pada Gambar 1.

Karakteristik penting yang dimiliki algoritme kunci publik adalah tidak layak untuk mencari kunci dekripsi hanya dengan mengetahui algoritme kriptografi dan kunci enkripsi (Stallings 2005).

Gambar 1 Skema kunci publik (Stallings 2005). Salah satu algoritme kunci publik yang terkenal adalah RSA yang juga digunakan pada penelitian ini.

Kriptografi Kunci Simetris

Gambar 2 Skema kunci simetris (Stallings 2005).

Kriptografi secret key atau kunci simetris adalah kriptografi yang hanya melibatkan satu kunci dalam proses enkripsi dan dekripsi. Proses dekripsi dalam kriptografi kunci simetris merupakan kebalikan dari proses enkripsi. Skema kunci simetris dapat dilihat pada Gambar 2.

Algoritme AES sendiri merupakan sebuah algoritme kriptografi kunci simetris yang beroperasi dalam bentuk blok 128-bit. Algoritme AES mendukung panjang kunci 128- bit, 192-bit, dan 256-bit. Algoritme AES kunci 128-bit digunakan pada penelitian ini untuk menyandikan data yang dikirim antara client dan server.

Padding

Pada umumnya, plaintext memiliki ukuran yang tidak sama dengan algoritme blok cipher yang digunakan. Hal ini diatasi dengan padding yaitu dengan menambahkan bit tambahan agar ukuran blok semestinya terpenuhi. Tidak ada aturan baku mengenai padding. Semua skema padding dapat digunakan asalkan prosesnya dapat dibalik atau unpadding.

Penelitian ini menggunakan skema penambahan byte dengan karakter ASCII yang mempunyai kode sama dengan jumlah padding yang ditambahkan di blok tersebut. Skema padding dapat ditulis sebagai berikut:

Cpadd = Npadd = 16 - (Plength mod 16)

dengan Cpadd adalah kode ASCII yang

digunakan sebagai padding, Npadd adalah jumlah

padding, dan Plength adalah panjang byte dari

plaintext.

Sebagai contoh apabila plaintext panjangnya 88 bit atau 11 byte, diperlukan 16 – (11 mod 16), yaitu lima byte padding. Kode ASCII 5 ditambahkan sebanyak lima kali pada blok ciphertext.

Modus Operasi Algoritme Blok

Modus operasi algoritme blok merupakan aturan yang memetakan n-bit blok plaintext ke n-bit blok-blok ciphertext, dalam hal ini n merupakan panjang blok. Pada umumnya, blok cipher mengoperasikan blok plaintext dan ciphertext menjadi 64 bit atau lebih (Schneier 1996). Contoh modus operasi algoritme blok adalah Electronic Codebook (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB), dan Counter (CTR) (Stalling 2005). Penelitian ini menggunakan ECB sebagai modus algoritme blok pada implementasi AES.

Electronic Codebook (ECB)

Gambar 3 Skema Electronic Codebook (Stalling 2005).

Electronic Codebook (ECB) merupakan modus operasi algoritme blok yang mengoperasikan plaintext secara satu blok utuh menggunakan kunci yang sama. Gambar 3 menunjukkan skema dari modus operasi agloritme blok ECB.

Modus operasi algoritme blok ECB dapat ditulis sebagai berikut:

Ci = E(K,Pi) dengan i = 1,...,k

Pi = D(K,Ci) dengan i = 1,...,k

RSA

Algoritme RSA merupakan algoritme kunci publik yang populer. Nama RSA diambil dari Rivest, Shamir, dan Adleman yang merupakan pengembang algoritme tersebut.

Algoritme ini berdasar pada bilangan prima dan konsep matematika sederhana, yaitu relatif sulit untuk mencari faktor bilangan prima p dan q dari bilangan komposit r. Hal ini cepat dilakukan jika r mempunyai sedikit digit. Akan tetapi, jika digit r melampaui 100, faktor primanya akan sulit dicari.

Langkah-langkah pembuatan kunci publik dan kunci privat algoritme RSA adalah sebagai berikut:

1 Bangkitkan dua bilangan prima p dan q. Kedua bilangan ini bersifat rahasia.

2 Lakukan perkalian n = p x q. Hasil perkalian dapat diketahui orang lain tanpa resiko diketahuinya p dan q.

3 Hitung φ = (p - 1)(q - 1). Bilangan φ bersifat rahasia.

4 Pilih bilangan bulat e dengan 1 < e < φ yang relatif prima terhadap φ. Relatif prima dapat diartikan gcd(e, φ) = 1.

5 Hitung integer d dengan 1 < d < φ sehingga ed

 1 (mod

φ). Perhitungan dapat dilakukan dengan menggunakan algoritme Euclid.

6 Didapat kunci publik adalah pasangan (r, e) dan kunci privat adalah d.

Setelah mendapat kunci publik dan kunci privat, dapat dilakukan enkripsi dan dekripsi. Enkripsi dapat dilakukan dengan menggunakan persamaan:

c = me (mod n)

Dekripsi dapat dilakukan dengan menggunakan persamaan:

Sebelumnya pesan terlebih dahulu direpresentasikan sebagai integer m dengan m

{0, 1 , 2, ..., n – 1}.

Pada penelitian ini, digunakan library java.math.BigInteger untuk mencari kunci privat dan representasi pesan. Kunci privat dicari dengan cara:

privateKey = publicKey.modInverse(phi) Pesan yang akan dienkripsi direpresentasikan menjadi BigInteger dengan baris kode berikut:

BigInteger msg = new BigInteger(message)

Advanced Encryption Standard (AES)

Algoritme Rijndael merupakan algoritme pemenang sayembara yang diadakan oleh National Institute of Standards and Technology (NIST). Sayembara tersebut diadakan untuk untuk membuat standar algoritme kriptografi yang baru pengganti Data Encyption Standard atau biasa disingkat DES. Standar baru dinamakan Advanced Encryption Standard (AES). Oleh karena itulah Rijndael juga disebut AES.

Algoritme AES ditemukan oleh Vincent Rijmen dan Joan Daemen. Ada tiga kriteria pada saat Rijndael didesain (Daemen & Rijmen 2002), yaitu:

1 Ketahanan terhadap serangan yang sudah diketahui.

2 Kecepatan dan kode yang compact pada berbagai platform.

3 Desain yang sederhana.

Gambar 4 menunjukkan proses enkripsi pada AES.

Enkripsi AES

Secara umum, algoritme AES melakukan putaran enkripsi sebanyak sepuluh putaran yang terbagi dalam tiga bagian, yaitu initial round, 1- 9 round, dan final round. Dilakukan empat proses utama, yaitu: SubBytes, ShiftRows, MixColumns, dan AddRoundKey.

Pada initial round, dilakukan proses AddRoundKey pada state awal yang masih berupa plaintext dengan cipher key. Pada sembilan round berikutnya, akan dilakukan empat proses transformasi, yaitu SubBytes, ShiftRows, MixColumns, dan AddRoundKey. Final round merupakan putaran terakhir yang hanya melibatkan proses transformasi SubBytes, ShiftRows, dan AddRoundKey.

Gambar 4 Proses enkripsi AES (Stalling 2005).

Pada enkripsi dilakukan ekspansi kunci untuk memperoleh round key. Pada round pertama digunakan w[4,7] pada matriks ekspansi kunci sebagai round key pertama.

a SubBytes

Subbytes merupakan tahap subsitusi byte plaintext menggunakan kaidah permutasi S- Box. AES mendefinisikan S-Box (Lampiran 1) sebagai byte matriks 16 x 16 yang memuat semua permutasi yang mungkin dari nilai 8 byte. Hanya ada satu S-Box yang digunakan untuk menyubsitusikan byte pada matriks state di semua round.

Subsitusi dilakukan dengan menggunakan nilai heksadesimal pertama sebagai baris dan nilai heksadesimal kedua sebagai kolom pada S- Box. Sebagai contoh, nilai heksadesimal {A9}

dipetakan sebagai baris A dan kolom 9 pada S- Box yang ternyata memuat nilai heksadesimal {D3}. Subsitusi dilakukan dengan mengganti {A9} dengan {D3}. Lebih jelasnya proses SubBytes dapat dilihat pada Gambar 5.

Gambar 5 Ilustrasi proses SubBytes (Stalling 2005).

b ShiftRows

Proses ShiftRows pada dasarnya menggeser baris pada matriks state dengan aturan sebagai berikut:

1 Baris pertama tidak bergeser (tetap).

2 Baris kedua dilakukan pergeseran secara rotasi satu byte ke kiri.

3 Baris ketiga dilakukan pergeseran secara rotasi dua byte ke kiri.

4 Baris keempat dilakukan pergeseran secara rotasi tiga byte ke kiri.

Pergeseran secara rotasi ke kiri mengakibatkan byte paling kiri berpindah ke byte paling kanan pada dalam satu baris matriks state. Lebih jelasnya diberikan Gambar 6 yang merupakan ilustrasi proses SubBytes.

Gambar 6 Ilustrasi proses ShiftRows (Stalling 2005).

c MixColumns

Proses MixColumns mengoperasikan kolom secara terpisah. Setiap byte kolom dipetakan menjadi nilai baru dengan suatu fungsi yang melibatkan semua nilai pada kolom tersebut. Transformasi didapat dengan melakukan operasi perkalian matriks forward mix columns

dengan matriks state. Lebih jelasnya dapat dilihat pada persamaan berikut (Stalling 2005):

[ ] [ ] = [ ]

Semua operasi penjumlahan dan perkalian untuk masing-masing nilai pada perkalian matriks dilakukan pada ruang lingkup finite field GF(28).

d AddRoundKey

AddroundKey merupakan proses XOR antara matriks state dan matriks round key. Matriks round key merupakan matriks hasil ekspansi kunci yang dibangkitkan pada setiap round. Gambar 7 merupakan contoh dari proses AddRoundKey.

Gambar 7 Contoh AddRoundKey (Stalling 2005).

Dekripsi AES

Alur dekripsi AES kebalikan dari alur enkripsi. Proses transformasi pada dekripsi juga merupakan kebalikan terhadap proses transformasi enkripsi. Perbedaanya adalah pada penjadwalan kunci yang dimulai dari word ke- 43 sampai word ke-0.

Pada initial round dilakukan proses AddRoundKey pada state awal yang merupakan ciphertext dengan w[40,43] dari matriks ekspansi kunci. Selanjutnya dilakukan sembilan putaran yang meliputi proses tranformasi InvShiftRows, InvSubBytes, AddRoundKey, dan InvMixColumns. Sementara itu, final round hanya dilakukan proses InvShiftRows, InvSubBytes, dan AddRoundKey.

Round key pertama pada proses dekripsi dimulai dari word ke-36 sampai word ke-39 dari matriks ekpansi kunci. Hal ini terus berlanjut sampai round kesepuluh yang menggunakan word ke-0 sampai word ke 3 untuk proses XOR

dengan matriks state. Lebih jelasnya alur proses dekripsi dapat dilihat pada Gambar 8.

Gambar 8 Proses dekripsi AES (Stalling 2005)

a InvShiftRows

InvShiftRows mengembalikan pergeseran byte yang telah dilakukan oleh forward ShiftRows. InvShiftRows memiliki aturan- aturan sebagai berikut:

1 Baris pertama tidak bergeser (tetap).

2 Baris kedua dilakukan pergeseran secara rotasi satu byte ke kanan.

3 Baris ketiga dilakukan pergeseran secara rotasi dua byte ke kanan.

4 Baris keempat dilakukan pergeseran secara rotasi tiga byte ke kanan.

Pergeseran satu byte ke kanan akan menyebabkan byte paling kanan akan berpindah ke byte paling kiri.

b InvSubBytes

InvSubBytes pada dasarnya sama dengan proses transformasi SubBytes namun menggunakan inverse S-Box alih-alih S-Box.

Inverse S-Box merupakan matriks 16x16 yang memuat nilai antilog dari S-Box. Matriks inverse S-Box dapat dilihat pada Lampiran 2.

c AddRoundKey

AddroundKey pada dekripsi sama dengan AddRoundKey pada enkripsi. AddRoundKey melakukan proses XOR antara matriks state dan round key. Perbedaannya terletak pada round key yang digunakan pada proses enkripsi dan pada proses dekripsi. Sebagai contoh pada round pertama enkripsi, digunakan round key w[4,7] sementara pada round pertama dekripsi digunakan round key w[36,39].

d InvMixColumns

Proses InvMixColumns melakukan operasi perkalian matriks inverse mix columns dengan matriks state. Berikut merupakan persamaan untuk perkalian InvMixColumns:

[ ] [ ] = [ ]

Operasi penjumlahan dan perkalian untuk masing-masing nilai pada perkalian matriks dilakukan pada ruang lingkup finite field GF(28).

Ekspansi Kunci

Ekspansi kunci merupakan proses pembangkitan round key dari kunci AES. Pembangkitan dilakukan per word sebanyak 44 word. Gambar 9 merupakan ilustrasi proses ekspansi kunci.

Gambar 9 Ilustrasi ekspansi kunci (Stalling 2005)

Langkah-langkah ekspansi kunci adalah sebagai berikut:

1 Word pertama (w0) hingga word ke-4 (w3)

merupakan penyalinan langsung dari kunci AES.

2 Word selanjutnya apabila memenuhi persyaratan jika i mod 4 = 0 dengan i merupakan indeks dari word, dilakukan proses sebagai berikut:

 Rot Word

Rot Word merupakan proses pergeseran byte dimana byte yang terletak pada baris paling atas berpindah ke baris paling bawah.

 Sub Word

Sub Word merupakan proses subsitusi byte pada word menggunakan kaidah S- Box.

 XOR

Proses XOR dilakukan pada hasil dari sub word dengan Rcon[i/4]. Rcon merupakan konstanta dengan nilai yang berbeda-beda untuk setiap round. Pembangkitan tabel RC[j] dapat dilihat pada Lampiran 3.

3 Lakukan proses XOR dengan wi-4.

Setelah didapatkan ke-44 word, didapat 11 round key yang masing-masing berisikan empat word. Round key tersebut digunakan pada proses AddRoundKey.

LightWeight UI Toolkit

LightWeight UI Toolkit (LWUIT) merupakan application programming interface (API) yang memudahkan programmer membuat tampilan antarmuka lebih menarik dan lebih dinamis pada aplikasi mobile. Antarmuka menggunakan LWUIT membuatnya beroperasi seragam pada berbagai device.

Pada aplikasi Polimat Mobile, LWUIT digunakan agar tampilan tidak berubah pada berbagai tipe dan sistem operasi telepon genggam yang digunakan.

Metode Pengembangan Perangkat Lunak

Waterfall

Model waterfall mengambil aktivitas proses (spesifikasi, pengembangan, validasi, dan evolusi) lalu merepresentasikannya sebagai fase proses yang terpisah seperti spesifikasi kebutuhan, perancangan perangkat lunak, implementasi, pengujian, dan proses selanjutnya (Sommerville 2007).

Analisis Kebutuhan sistem

Perancangan sistem & perangkat lunak Implementasi & pengujian unit Integrasi & pengujian sistem Operasi & pengelolaan

Gambar 10 Proses pengembangan perangkat lunak dengan metode Waterfall (Sommerville 2007).

Gambar 10 merupakan tahapan-tahapan penting dari model Waterfall menurut Sommerville (2007) yang dapat dijabarkan sebagai berikut:

1 Analisis dan definisi kebutuhan. Layanan, batasan, dan tujuan sistem ditetapkan melalui pembicaraan dengan pengguna sistem. Informasi tersebut kemudian didefinisikan secara detail dan menjadi spesifikasi sistem.

2 Perancangan sistem dan perangkat lunak. Perancangan sistem berfungsi untuk menetapkan arsitektur sistem secara keseluruhan. Perancangan perangkat lunak meliputi identifikasi dan deskripsi abstraksi sistem perangkat lunak.

3 Implementasi dan pengujian unit. Pada tahap ini perancangan direalisasikan dalam bentuk unit. Pengujian unit meliputi verifikasi bahwa setiap unit memenuhi spesifikasinya.

4 Integrasi dan pengujian sistem. Seluruh unit perangkat lunak diuji sebagai sebuah sistem secara keseluruhan untuk memastikan bahwa kebutuhan perangkat lunak telah terpenuhi.

5 Operasi dan pengelolaan. Pada tahap ini, sistem telah digunakan. Pemeliharaan meliputi perbaikan error yang tidak diketahui saat tahap sebelumnya, mengoptimalkan implementasi dari tiap unit sistem, dan penambahan layanan baru sesuai kebutuhan sistem.

Model waterfall digunakan pada sistem yang sudah jelas kebutuhannya dan tidak berubah banyak dalam pengembangannya.

Analysis of Variance (ANOVA)

Analysis of Variance merupakan metode statistik untuk mengetahui signifikansi perbedaan rata-rata dari beberapa populasi.

Berdasarkan faktor yang diuji, ANOVA dapat dibagi menjadi dua tipe, yaitu:

1 ANOVA satu arah

Uji ANOVA satu arah hanya melibatkan satu faktor yang mengalami pengulangan sampel.

2 ANOVA dua arah

Uji ANOVA dua arah melibatkan faktor yang mempunyai sub kategori.

METODOLOGI PENELITIAN

Dokumen terkait