• Tidak ada hasil yang ditemukan

Ancaman

Secara umum, ancaman yang dapat muncul dalam konteks pengembangan bagian offline SES terbagi ke dalam 2 kelas besar, yaitu:

11 1 Disclosure, yakni akses terhadap informasi oleh pihak yang tidak berwenang. 2 Usurpation, yakni pengaturan beberapa bagian dari sistem oleh pihak-pihak

yang tidak berwenang.

Pada bagian offline, komunikasi terjadi antara sistem dan server sebagai media penyimpanan data. Proses pengamanan yang diterapkan pada shapefile membutuhkan kunci simetri untuk digunakan dalam proses enkripsi dan dekripsinya. Hal tersebut menjadikan kunci simetri juga perlu dilindungi dari kemungkinan serangan. Ancaman-ancaman yang mungkin terjadi pada bagian offline SES antara lain:

1 Pada kelas disclosure, ancaman yang mungkin terjadi adalah pengintaian (snooping) yang merupakan penahanan informasi yang didapat pada saat proses komunikasi terjadi antara dua atau lebih entitas yang dilakukan oleh pihak yang tidak berwenang. Pada SES, entitas yang berperan adalah sistem dan server. Pengintaian dikatakan berhasil saat penyerang dapat turut mendengarkan alur kerja sistem (traffic analysis). Sebagai contoh: penyerang yang melakukan pengintaian pada SES dapat mengetahui dari mana berkas shapefile berasal, di mana akan disimpan serta di mana kunci simetri untuk membuka shapefile berada. Layanan keamanan kerahasiaan dapat diterapkan untuk mengatasi ancaman ini.

2 Pada kelas usurpation, ancaman dapat berupa penyamaran atau peniruan suatu entitas terhadap entitas lain. Ancaman ini akan mengumpan korban agar percaya bahwa entitas yang berkomunikasi dengannya adalah pihak yang benar, meski pada kenyataannya pihak tersebut adalah penyerang yang bukan merupakan pihak yang berwenang. Dalam konteks SES, penyerang berusaha mengakses sistem dengan cara menyamar sebagai administrator. Tidak ada pihak (termasuk administrator) yang menyadari penyamaran ini sehingga penyerang dapat masuk ke dalam sistem dan mengakses shapefile terenkripsi beserta kunci rahasia di dalamnya. Ancaman ini dapat ditangani dengan menyediakan layanan autentikasi.

Kebijakan

Pengembangan SES dilakukan menggunakan pendekatan end-to-end encryption sebagai bagian dari aturan encrypting communication channels. Pendekatan tersebut mengatur peran pengguna dan hal-hal terkait implementasi. Kebijakan yang diterapkan terhadap pengguna antara lain:

1 Bagian offline SES hanya dapat diakses oleh satu pengguna dalam satu waktu. Kebijakan ini diterapkan karena bagian offline SES akan menangani semua data sensitif dan rahasia yang digunakan oleh sistem dalam bentuk plaintext. Pengguna yang memiliki hak akses dalam konteks penelitian ini adalah seorang administrator.

2 Administrator bertugas melakukan enkripsi pada shapefile dengan menentukan password, membangkitkan pasangan kunci asimetri, dan memilih citra yang digunakan oleh sistem.

Sementara itu, beberapa kebijakan terkait dengan implementasi adalah:

1 Sistem memerlukan suatu mekanisme autentikasi bagi pengguna. Hal ini dilakukan dengan menyediakan username serta password untuk administrator

12 SES.

2 Baik kunci simetri maupun pasangan kunci publik yang digunakan akan dibangkitkan untuk setiap transaksi shapefile yang akan dienkripsi.

Spesifikasi

Secara umum, bagian offline SES memiliki spesifikasi sebagai berikut: 1 Sistem hanya dapat diakses oleh satu pengguna dalam satu waktu.

• Sistem tidak terhubung dengan jaringan aktif selama proses enkripsi berlangsung.

• Terdapat ID yang bersifat unik untuk administrator.

• Hanya pengguna (administrator) dengan ID serta PassID yang terdaftar yang dapat mengakses sistem.

2 Administrator bertugas melakukan enkripsi pada shapefile dengan menentukan kunci simetri, membangkitkan kunci publik, dan memilih citra yang digunakan oleh sistem.

• Kunci simetri dibangkitkan untuk setiap proses enkripsi shapefile. • Kunci publik dibangkitkan untuk setiap proses enkripsi password.

Perancangan

Tahapan desain bagian offline SES melayani 2 fungsionalitas utama diantaranya adalah:

1 Fungsi perlindungan shapefile (SHP encryption). 2 Fungsi perlindungan password (password encryption).

Fungsi perlindungan shapefile diawali dengan proses pembangkitan kunci simetri yang memerlukan password sebagai masukan. Password tersebut akan dikonversi menggunakan PBKDF2 untuk menghasilkan kunci simetri AES 256 bit. Proses selanjutnya adalah pengenkripsian shapefile yang akan menggunakan masukan berupa kunci simetri AES dan shapefile. Proses ini akan menghasilkan shapefile terenkripsi sebagai produk pertama dari bagian offline SES.

Fungsi perlindungan password diawali oleh proses pembangkitan kunci RSA. Masukan yang diperlukan adalah kisaran nilai p dan q yang akan menghasilkan pasangan kunci publik dan kunci privat. Selanjutnya, password akan diubah ke dalam bentuk biner lalu dienkripsi menggunakan kunci publik RSA. Hasil dari proses ini berupa password terenkripsi. Selanjutnya password terenkripsi tersebut disisipkan ke dalam sebuah citra bitmap. Hasil dari proses ini adalah stego-image yang menjadi produk kedua dari bagian offline SES. Desain bagian offline SES secara keseluruhan dapat dilihat pada Gambar 7.

13

Fungsi Perlindungan Shapefile

Pembangkitan kunci AES: Proses pembangkitan kunci simetri AES dilakukan dengan menggunakan sebuah key derivation function (KDF) yang membutuhkan password, salt, serta iterasi untuk mendapatkan kunci. Alur proses pembangkitan kunci AES pada SES dapat dilihat pada Gambar 8.

Masukan password didapatkan dari user. Salt serta counter iterasi ditentukan oleh sistem. Proses pembangkitan kunci akan dilakukan selama counter iterasi belum dicapai. Proses ini akan menghasilkan kunci yang berukuran 256 bit. • Pengenkripsian shapefile: Kunci simetri AES yang telah dihasilkan proses

sebelumnya akan digunakan untuk mengenkripsi shapefile seperti yang ditunjukan oleh Gambar 6. Proses enkripsi akan menggunakan AES-256 dengan panjang kunci 256 bit. Proses enkripsi akan menggunakan mode enkripsi cipher block chaining (CBC). Secara sederhana, diagram alir proses pengenkripsian shapefile ditampilkan pada Gambar 9.

Gambar 7 Diagram alir bagian offline SES

14

Fungsi Perlindungan Password

Pembangkitan kunci RSA: Pembangkitan kunci RSA akan menghasilkan dua buah kunci yaitu, kunci publik dan kunci privat. Kunci-kunci ini akan digunakan di sejumlah modul, baik pada komponen offline maupun online. Panjang kunci yang digunakan antara lain 512, 1024, 2048, dan 4096 bit. Penggunaan panjang kunci yang besar akan meningkatkan sisi keamanannya namun akan membutuhkan waktu yang lebih lama pada proses pembangkitan serta proses enkripsi dan dekripsi.

Pengenkripsian password: Kunci rahasia yang dihasilkan pada proses pembangkitan kunci AES tidak akan disimpan, sementara password yang merupakan masukan awal akan dienkripsi menggunakan kunci publik RSA untuk kemudian disimpan. Pertama-tama password akan dimanipulasi ke dalam bentuk biner. Password yang berbentuk deret biner akan dienkripsi menggunakan kunci publik RSA dengan terlebih dahulu diubah ke dalam nilai desimal dari kode ASCII untuk setiap karakternya. Diagram alir proses ini dapat dilihat pada Gambar 10.

Penyisipan password terenkripsi: Password yang sudah terenkripsi akan disisipkan ke dalam citra bitmap dengan metode LSB. Setiap byte dari masukan akan dibagi menjadi 3 bagian dan setiap bagiannya akan disisipkan ke dalam setiap pixel dimulai dari bit paling kiri most significant bit (MSB). Tiap layer warna rij, gij, dan bij pada pixelPij berlaku fungsi sebagai berikut:

Gambar 9 Diagram pengenkripsian shapefile

15 f(t)= ⎩ ⎪ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎪ ⎧ rij[7]=t[0], j mod 3=0 gij[7]=t[1], j mod 3=0 bij[7]=t[2], j mod 3=0 rij[7]=t[3], j mod 3=1 gij[7]=t[4], j mod 3=1 bij[7]=t[5], j mod 3=1 rij[7]=t[6], j mod 3=2 gij[7]=t[7], j mod 3=2 bij[7]=bij[7], j mod 3=2

i merupakan indeks koordinat lebar citra dan j merupakan indeks koordinat tinggi citra. Layer warna merah pada bit ke-7 dinotasikan dengan rij[7]. Layer warna hijau pada bit ke-7 dinotasikan dengan gij[7]. Layer warna biru pada bit ke-7 dinotasikan dengan bij[7]. Tiap byte dari password terenkripsi akan disimpan di dalam t[0] sampai t[7]. Secara sederhana, diagram alir penyisipan password terenkripsi dapat dilihat pada Gambar 11.

Implementasi Fungsi Perlindungan Shapefile

Implementasi fungsi perlindungan shapefile diawali dengan proses pembangkitan sebuah kunci simetri. Masukan yang diperlukan terdiri atas: password, iterasi, panjang kunci, dan salt. Password diperoleh dari pengguna, sementara ketiga masukan lain dideklarasikan secara statis di dalam sistem. Pseudocode berikut menampilkan proses pembangkitan kunci menggunakan PBKDF2.

MASUKAN:

P // password S // salt

C // counter iterasi

kLen // panjang kunci yang diinginkan

16

KELUARAN:

K // kunci sepanjang kLen

1 d = CEILING(kLen/hLen).

2 T = string kosong. 3 fori = 1 tod 4 F = U1 = PRF(P,APPEND(S,i)) 5 forj = 2 toC 6 Uj = PRF(P, Uj-1) 7 F = F xor Uj 8 end for 9 T = APPEND(T, F) 10 end for 11 K = T sepanjang kLen.

Proses pembangkitan kunci memanfaatkan kelas Rfc2898DeriveBytes yang menerapkan PBKDF2 dengan menggunakan fungsi pseudorandom (PRF) berdasarkan pada HMAC-SHA1. Iterasi ditentukan sebanyak 1000, salt dideklarasikan sepanjang 14 bytes, dan panjang kunci ditentukan sepanjang 256 bit.

Selanjutnya, berkas shapefile akan dibaca sebagai aliran bit untuk dienkripsi seperti pada Gambar 9. Shapefile yang telah terenkripsi adalah produk pertama yang akan dikirimkan ke server. Proses enkripsi ditunjukan pada pseudocode berikut.

MASUKAN:

Sh // shapefile

Nb // panjang blok dalam satuan words Nr // banyaknya round

KELUARAN:

ShEn // shapefile terenkripsi

1 Tentukan state sebagai setiap blok Sh 2 ADDROUNDKEY(state, w[0, Nb-1]) 3 forround=1 to Nr-1

4 SUBBYTES(state) 5 SHIFTROWS(state)

6 MIXCOLUMNS(state)

7 ADDROUNDKEY(state, w[round*Nb, (round+1)*Nb-1]) 8 end for

9 SUBBYTES(state) 10 SHIFTROWS(state)

11 ADDROUNDKEY(state, w[Nr*Nb, (Nr+1)*Nb-1]) 12 ShEn = state

Setiap fungsi yang digunakan dalam proses pengenkripsian shapefile (SubBytes, ShiftRows, MixColumns, dan AddRoundKey) memiliki perlakuan masing-masing

17 terhadap state. Diagram pada Lampiran 1 menampilkan proses pengenkripsian shapefile secara lebih lengkap.

Fungsi Perlindungan Password

Proses pembangkitan kunci RSA dilakukan dengan menggunakan kelas RSACryptoServiceProvider. Masukan yang dibutuhkan adalah ukuran kunci yang diinginkan. Hasil dari proses ini berupa pasangan kunci publik dan privat. Informasi terkait kunci publik digunakan untuk proses enkripsi password dan disimpan di bagian offline sistem sementara informasi terkait kunci privat akan digunakan oleh bagian online untuk digunakan dalam proses dekripsi. Pseudocode berikut menampilkan proses pasangan kunci RSA dibangkitkan dapat dilihat pada Lampiran 2.

Proses selanjutnya yaitu pengenkripsian password. Proses ini diawali dengan perubahan password ke dalam bentuk desimal sebagai representasi kode ASCII untuk setiap karakter yang ditampilkan pada pseudocode sebagai berikut.

MASUKAN:

P // password yang digunakan KELUARAN:

B // representasi desimal ASCII dari password 1 Baca P

2 Masukan setiap karakter dari P ke dalam arrayC

3 Ubah setiap anggota array C menjadi byte yang disimpan di dalam array E

4 Konversi setiap anggota dari array E menjadi string yang merepresentasikan nilai desimal dari ASCII

5 Gabung seluruh string yang dihasilkan di dalam B

Selanjutnya, representasi ASCII tersebut dienkripsi menggunakan kunci publik RSA. Proses yang terjadiditampilkan pada pseudocode sebagai berikut.

MASUKAN:

B // representasi desimal ASCII dari password E // informasi kunci publik

KELUARAN:

Eb // password terenkripsi 1 Baca B

2 Ubah B menjadi byte dan simpan setiap byte ke dalam arrayB

3 Enkripsi anggota arrayB dengan algoritme RSA dan kunci E lalu simpan di dalam Eb

Password yang telah terenkripsi kemudian disisipkan di dalam sebuah citra. Dalam penelitian ini, format citra yang digunakan adalah bitmap. Potongan pseudocode berikut menampilkan proses identifikasi masukan untuk proses

18

penyisipan.

MASUKAN:

I // citra yang ingin digunakan Eb // password terenkripsi KELUARAN:

Eb_byte // password terenkripsi dalam bentuk byte height // dimensi tinggi dari citra

width // dimensi lebar dari citra 1 Baca ukuran Eb sebagai Eb_size 2 Baca citra I yang ingin digunakan

3 Baca dimensi dari citra I dan simpan tinggi sebagai height dan lebar sebagai width

4 if ((8*height*width)/3) < Eb_sizethen 5 goto baris 2

6 else

7 Eb_byte=(byte)Eb 8 end if

Proses selanjutnya adalah mengidentifikasi ketiga layer warna dari setiap pixel. Pseudocode berikut menunjukan tahap-tahap identifikasi layer warna setiap pixel.

MASUKAN:

I // citra yang digunakan height // dimensi tinggi dari citra width // dimensi lebar dari citra

Eb_byte // password terenkripsi dalam bentuk byte KELUARAN:

R // array untuk layer merah dari pixel G // array untuk layer hijau dari pixel B // array untuk layer biru dari pixel T // array untuk setiap byte dari Eb_byte

1 Selama i<height dan j<width lakukan GETPIXEL(j,i) 2 Untuk setiap pixel, tempatkan:

3 R = pixel.r 4 G = pixel.g 5 B = pixel.b

6 Tempatkan setiap byte dari Eb_byte pada arrayT

Selanjutnya, secara berurutan proses penyisipan dilakukan terhadap seluruh anggota dari arrayT. Hasil dari proses penyisipan password adalah sebuah stego-object (Is) yang merupakan produk kedua yang akan dikirimkan ke server bersamaan dengan shapefile terenkripsi. Pseudocode berikut menampilkan proses

19 yang digunakan dalam menyisipkan setiap anggota arrayT.

MASUKAN:

R // array untuk layer merah dari pixel G // array untuk layer hijau dari pixel B // array untuk layer biru dari pixel T // array untuk setiap byte dari Eb_byte i // indeks koordinat x dari citra

j // indeks koordinat y dari citra KELUARAN:

Is // citra yang telah disisipi password terenkripsi (stego-object); 1 ifj%3 == 0 then 2 R[7] = T[0] 3 G[7] = T[1] 4 B[7] = T[2] 5 else ifj%3 == 1 then 6 R[7] = T[3] 7 G[7] = T[4] 8 B[7] = T[5] 9 else ifj%3 == 2 then 10 R[7] = T[6] 11 G[7] = T[7] 12end if 13Is = SETPIXEL(j,i, COLOR(R,G,B));

Analisis dan Pengujian

Layanan keamanan kerahasiaan pada SES diperoleh dari perlakuan yang diterapkan pada shapefile, yaitu dengan cara mengenkripsinya menggunakan algoritme kunci simetri AES. Sementara, layanan keamanan autentikasi diperoleh dari penggunaan kunci asimetri RSA yang secara tidak langsung mengidentifikasi setiap klien yang bertransaksi melalui SES. Meskipun demikian, beberapa kelemahan masih ditemukan pada bagian offline dari SES. Bagian ini memiliki tingkat ketergantungan yang tinggi terhadap pengguna yang dapat mengaksesnya. Oleh sebab itu, jika pengguna tidak mengikuti protokol kontrol pada sistem secara seksama, layanan keamanan yang disediakan pun sulit untuk dicapai. Selain itu, penyimpanan kunci privat RSA pada server membuat SES rentan terhadap serangan pencurian kunci yang dapat berakibat pada pengaksesan shapefile secara ilegal.

Pengujian dilakukan untuk mengetahui fungsi-fungsi yang telah diimplementasikan pada SES bekerja sebagaimana mestinya. Hasil pengujian fungsionalitas SES dapat dilihat pada Tabel 2 berikut.

20

Pengujian lebih lanjut dilakukan untuk mengetahui waktu yang diperlukan dalam menjalankan proses enkripsi (ETime) dan waktu yang diperlukan untuk proses dekripsi (DTime). Data uji yang digunakan terdiri atas lima data shapefile yang diperoleh dari situs inigis (http://inigis.org). ETime dan DTime dicatat berdasarkan perubahan besar kunci RSA yang dibangkitkan. Pada penelitian ini besar kunci RSA yang digunakan antara lain: 512, 1024, 2048, dan 4096. Tabel 3 menunjukan kelima data uji yang digunakan. Berdasarkan alur implementasi yang diterapkan, fungsi-fungsi yang berpengaruh pada besarnya ETime diantaranya adalah: pembangkitan kunci AES, pengenkripsian shapefile, pembangkitan kunci RSA, pengenkripsian password, penyisipan password terenkripsi, penyimpanan kunci privat RSA. Sementara, besarnya DTime dipengaruhi oleh proses ekstraksi password terenkripsi dari citra, proses dekripsi password terenkripsi oleh kunci privat RSA, proses pembangkitan kunci AES dari password, dan proses dekripsi shapefile menggunakan algoritme AES. Citra yang digunakan pada pengujian ini memiliki format bitmap-24 bit dengan dimensi tinggi 50 pixel dan lebar 51 pixel.

Pengujian dilakukan sebanyak tiga kali perulangan untuk setiap shapefile dan setiap besaran kunci RSA. Lampiran 3, 4, dan 5 secara berturut-turut menampilkan tabel perulangan pertama, kedua, dan ketiga. Tabel 4 menampilkan hasil pengujian untuk besar kunci RSA 512 bit.

Tabel 2 Pengujian fungsionalitas SES

Deskripsi uji Hasil uji

Fungsi perlindungan shapefile

Pembangkitan kunci 256 bit. Berhasil

Pengenkripsian shapefile. Berhasil

Fungsi perlindungan password

Pembangkitan pasangan kunci RSA. Berhasil

Pengenkripsian password. Berhasil

Penyisipan password terenkripsi pada citra. Berhasil Fungsi pelengkap

Pengiriman tabel dBASE (.dbf) dan indeks (.shx). Berhasil Penyimpanan kunci privat RSA beserta parameter terkait. Berhasil Proses dekripsi shapefile dengan menggunakan kunci dari password

hasil ekstraksi citra.

Berhasil

Tabel 3 Data shapefile uji

ID Shapefile Ukuran (kB) 1 jawa_tengah_highway.shp 1330.12 2 banten_highway.shp 1955.23 3 jakarta_raya_highway.shp 2909.38 4 jawa_barat_highway.shp 4177.39 5 indonesia_highway.shp 31492.65

21

Pada Tabel 4, perubahan ETime dan DTime berbanding lurus dengan ukuran shapefile. Hal tersebut dapat dilihat dari perubahan ETime dan DTime yang meningkat seiring dengan besarnya ukuran shapefile.

Pada Tabel 5 diperlihatkan hasil pengujian untuk besar kunci RSA 1024 bit. Perlakuan yang berbeda terjadi pada shapefile ke-5. Shapefile tersebut memiliki ETime lebih kecil dibandingkan ETime pada Tabel 4 untuk shapefile yang sama.

Tabel 4 ETime dan DTime pada besar kunci RSA 512 bit ID ETime (ms) DTime (ms) 1 138.5359 110.8023 2 200.9368 133.7361 3 228.4038 179.8034 4 287.0710 233.0708 5 4693.6897 1231.2240

Tabel 5 ETime dan DTime pada besar kunci RSA 1024 bit ID ETime (ms) DTime (ms) 1 364.9389 120.2023 2 451.6062 137.9360 3 519.7441 171.4035 4 536.0766 223.6708 5 1440.6972 1164.3567

Tabel 6 ETime dan DTime pada besar kunci RSA 2048 bit ID ETime (ms) DTime (ms) 1 2651.2750 163.8700 2 3858.5680 203.7372 3 1878.5612 216.9377 4 1649.9735 251.7385 5 4107.5970 1198.0253

Tabel 7 ETime dan DTime pada besar kunci RSA 4096 bit ID ETime (ms) DTime (ms) 1 23039.4702 513.2103 2 43059.0089 525.0774 3 28570.8559 561.7447 4 22836.4065 596.5455 5 17742.2988 1580.3646

22

Hal tersebut kemungkinan besar disebabkan oleh waktu yang diperlukan untuk membangkitkan pasangan kunci RSA lebih sedikit.

Tabel 6 menunjukan ETime dan DTime pada besar kunci RSA 2048 bit. Keragaman nilai ETime cukup mencolok. Selain dari waktu yang diperlukan untuk membangkitkan kunci RSA, faktor lain yang dapat mempengaruhi ETime adalah kemampuan kerja hardware yang digunakan saat pengujian.

Tabel 7 menunjukan ETime dan DTime pada besar kunci RSA 4096 bit. Perbedaan ETime terjadi secara signifikan pada Tabel 7. Waktu yang diperlukan untuk melakukan proses enkripsi berkisar antara 17–43 detik. Grafik pengujian ETime dan DTime ditunjukkan pada Gambar 12.

Dari pengujian tersebut diperoleh informasi bahwa ukuran shapefile bukan menjadi faktor utama yang mempengaruhi ETime. Beberapa faktor yang mungkin lebih mempengaruhi ETime diantaranya adalah proses pembangkitan kunci RSA, proses penyisipan pada citra, dan hardware yang digunakan pada saat pengujian.

Dokumen terkait