• Tidak ada hasil yang ditemukan

IMPLEMENTASI ALGORITMA ELGAMAL PADA JWS UNTUK KEAMANAN LAYANAN API APLIKASI ABSENSI LPKIA

N/A
N/A
Protected

Academic year: 2021

Membagikan "IMPLEMENTASI ALGORITMA ELGAMAL PADA JWS UNTUK KEAMANAN LAYANAN API APLIKASI ABSENSI LPKIA"

Copied!
7
0
0

Teks penuh

(1)

IMPLEMENTASI ALGORITMA ELGAMAL PADA

JWS UNTUK KEAMANAN LAYANAN

API APLIKASI ABSENSI LPKIA

1Andy Victor Pakpahan, 2Sangga Buana

1,2 Program Studi Teknik Informatika, STMIK LPKIA

Jln. Soekarno Hatta No. 456 Bandung 40266, Telp. +62 22 75642823, Fax. +62 22 7564282 Email : 1[email protected], 2[email protected].

ABSTRAK

API (Aplication Programming Interface) merupakan sebuah layanan antarmuka yang memungkinkan berbagai aplikasi untuk berkomunikasi melakukan pertukaran data (Leonardo Richardson dkk, 2013). Salah satu bentuk dari API adalah JSON (javascript object notation) yang memiliki karakteristik lebih ringan dari format lainnya, selain itu json menyajikan data dalam bentuk objek yang memudahkan dalam pengolahan serta pengambilan data. Data bisa berwujud suatu keadaan, gambar, suara, huruf, angka, matematika, bahasa ataupun simbol-simbol lainnya yang bisa kita gunakan sebagai bahan untuk melihat lingkungan, obyek, kejadian ataupun suatu konsep. Data yang sudah dikelola pada tempat , waktu, dan dengan format yang tepat dapat menghasilkan sebuah informasi yang berguna untuk berbagai user (Hitesh Gupta, 2011). Dari waktu ke waktu data yang dihasilkan di sebuah aplikasi web dan mobile semakin banyak. Sebagian dari data tersebut adalah data pribadi dan data keuangan yang bersifat sensitif dan sangat penting sehingga perlu untuk diamankan. JSON API digunakan sebagai interface untuk melakukan pertukaran data – data tersebut. JSON API tanpa keamanan sangatlah rentan untuk diserang. Memungkinkan tejadinya manipulasi data melalui JSON API karena dapat diakses melalui URL dengan protocol HTTP/HTTPS.

Untuk meminimalkan kemungkinan terjadinya manipulasi tersebut maka dibuatkan mekanisme keamanan JWS dengan algoritma ElGamal yang dapat memberikan jaminan kemanan pada JSON API

.

Kata kunci: JSON API, JWS, ElGamal. *) = pembimbing

I. PENDAHULUAN

Aplikasi yang berkomunikasi melalui sebuah interface JSON API memiliki kerentanan kemanan karena JSON API mengizinkan penggunan API walaupun tanpa menggunakan mekanisme keamanan (unsecured json) seperti autorisasi pada request dan token serta enkripsi konten , hal ini menyebabkan unsecured json sangat rentan untuk diserang karena json berada pada layer aplication dengan protokol HTTP / HTTPS yang memungkinkan siapa saja dapat mengakses json yang tersedia melalui web browser. Dengan kemunkinan tersebut, API membutuhkan mekanisme keamanan, tidak hanya mekanisme keamanan pada lapisan transport dan lapisan network saja, tapi juga dibutuhkan mekanisme keamanan berbasis objek pada lapisan application. Semua itu dilakukan untuk mengurangi terjadinya pencurian dan manipulasi data yang tidak diinginkan oleh

developer, kebocoran data pernah terjadi pada website Pribadi Kim Kardashian West yang disebabkan API yang tidak diamankan. CEO sekaligus Co-founder dari Communly yang merupakan developer dari apilkasi terebut menyatakan “Membiarkan API server dalam keadaan tidak terproteksi, yang memungkinkan siapa saja untuk mendapatkan rincian tentang pengguna yang terdaftar pada situs Kardashian / Janner”. Hal itu membuat bocornya data sensitif pengguna web tersebut. Kesadaran devolper untuk mengamankan API mereka sangatlah rendah, 65 persen dari 250 praktisi keamanan mengakui bahwa mereka tidak memiliki proses di tempat untuk memastikan bahwa data yang diakses oleh aplikasi yang menkonsumsi API yang mereka kelola adalah aman. (Blackhat Conference 2015, Alkana), Membiarkan API telanjang dan tanpa memberi pembatasan akses sangatlah buruk, bahkan developer tidak akan pernah tau apakah data mereka dicuri atau data mereka telah dimanipulasi oleh pihak lain.

(2)

II. DASAR TEORI 1. API

API (Aplication Programming Interface) merupakan sebuah layanan antarmuka yang memungkinkan berbagai aplikasi untuk berkomunikasi melakukan pertukaran data dan layanan.

Menurut Leonardo Richardson, Mike Amundsen, Sam Ruby (dalam Restfull Web APIs, 2013) Api merupakan singkatan dari Aplication Programming Interface. Sebuah api dapat menyediakan sambungan untuk developer pihak ketiga untuk mengakses data dan layanan saat membangun aplikasi seperti aplikasi iphone.

Menururt Sanjay Patni (dalam Design, Build and Integrate with REST, JSON, XML and JAX-RS, 2017). Api bukanlah hal yang baru. API telah menjadi sebuah layanan antarmuka yang mengizinkan berbagai aplikasi untuk berkomunikasi satu sama lain dalam beberapa dekade ini. (Leonardo Richardson, 2013)

2. JSON

JSON merupakan singkatan dari javascript object notation, Json adalah format pertukaran data berbasis text yang ringan dan mudah dipahami manusia maupun dicerna dan dikonsumsi oleh komputer. JSON dirancang untuk mewakili struktur data sederhana (Chris Snyder, 2011)

JSON adalah format pertukaran data, yang mudah untuk dibaca dan dituliskan serta mudah untuk diraikan dan digenerate oleh mesin. JSON text merapakan bahasa pengkodean seperti java, C, dan javascript (vohra, 2015)

3. ELGAMAL

Elgamal ditemukan oleh ilmuwan Mesir, yaitu Taher ElGamal pada tahun 1985, merupakan algoritma kriptografi kunci publik. Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, enkripsi, dan deskripsi. A . Pembentukan Kunci

Skema ElGamal memerlukan sepasang kunci yang dibangkitkan dengan memilih sebuah bilangan prima p dan dua buah bilangan random g dan x. Nilai g dan x lebih kecil dari p yang memenuhi persamaan :

𝑦 = 𝑔𝑥 𝑚𝑜𝑑 𝑝

Dari persamaan tersebut y, g dan p merupakan kunci publik dan x adalah kunci rahasia.

B. Proses Enkripsi

Proses enkripsi merupakan proses mengubah pesan asli (plaintext) menjadi pesan rahasia (ciphertext). Pada proses ini digunakan kunci publik (p, g, y). Langkah-langkah dalam mengenkripsi pesan adalah sebagai berikut. 1. Potong plaintext menjadi blok-blok m1, m2,

…, nilai setiap blok di dalam selang [0, p – 1].

2. Ubah nilai blok pesan ke dalam nilai ASCII. 3. Pilih bilangan acak k, dengan syarat 1 ≤

𝑘 ≤ 𝑝 – 2.

4. Setiap blok m dienkripsi dengan rumus

sebagai berikut.

gamma (𝛾) = 𝑔𝑘 𝑚𝑜𝑑 𝑝 .(1) delta (𝛿) =

𝑦𝑘 𝑚 𝑚𝑜𝑑 𝑝. (2)

5. Susun ciphertext dengan urutan γ1,δ1, γ2,δ2,…,γn,δn.

Pasangan γ dan δ adalah cipherteks untuk blok pesan m. Hasil yang didapat dari proses enkripsi berupa pesan rahasia (ciphertext).

C. Proses Dekripsi

Proses dekripsi merupakan proses mengubah pesanrahasia (ciphertext) menjadi pesan asli (plaintext). Padaproses ini digunakan kunci pribadi (x, p). Langkah-langkah dalam mendekripsi pesan adalah sebagai berikut. 1. Penentuan nilai gamma dan delta. Nilai

gamma (γ) diperoleh dari ciphertext dengan urutan ganjil sedangkan delta (δ) dengan urutan genap.

2. Hitung plaintext m dengan persamaan rumus berikut

𝑚 = 𝛿. 𝛾 (𝑝−1−𝑥)𝑚𝑜𝑑 𝑝 (3)

3. Ubah nilai m yang didapat kedalam nilai ASCII.

4. Susun plaintext dengan urutan m1,m2, ..m3

III. ANALISA DAN PERANCANGAN

Spesifikasi JWA mendefinisikan daftar standar algoritma yang dapat digunakan para developer untuk signature atau enkripsi.

(3)

Contoh algoritma digital signature JWA adalah sebagai berikut:

"alg" Value Signature Method NONE No Digital Signature HS256 HMAC w/ SHA-256 hash HS384 HMAC w/ SHA-384 hash HS512 HMAC w/ SHA-512 hash RS256 RSA PKCS v1.5 w/ SHA-256 hash

RS384 RSA PKCS v1.5 w/ SHA-384 hash

RS512 RSA PKCS v1.5 w/ SHA-512 hash

ES256 ECDSA w/ P-256 curve and SHA-256 hash

ES384 ECDSA w/ P-384 curve and SHA-384 hash

ES512 ECDSA w/ P-521 curve and SHA-512 hash

Workflow JSON

Dalam implementasinya JSON API bertukar data melalui protokol HTTP / HTTPS yang bisa diakses menggunkan metode GET, POST, PUT, dan sebagainya. Dalam aplikasi absensi LPKIA ini metode yang digunakan adalah POST.

Pemodelan Class

Proses Ekripsi pada Elgamal

- Menyiapkan Kunci publik, P , G, X. dan text sebagai input, P adalah bilangan prima acak dimana p harus lebih besar dari 255. G adalah bilangan acak dimana G harus lebih kecil dari nilai P. dan X adalah bilangan acak dengan syarat lebih besar dari 0 dan lebih kecil atau sama dengan (P- 1) - Menghitung y, dimana 𝑦 = 𝑔𝑥 𝑚𝑜𝑑 𝑝

- Melakukan pemecahan text per string / per karakter

- Setiap karakter yang dipecah dari text diubah menjadi bilangan ASCII

- Kemudian menghitung a, dimana a = g*k*I mod p

- Menghitung b, dimana b = y*k*I mod p - Kemudian memasukan nilai a,b kedalam

blok a

- Membandingkan panjang text dengan panjang blok a, jika tidak sama maka akan kembali ke langkah 5 secara berulang dan akan berhenti jika panjang text sama dengan a

- Jika perulangan telah dilakukan maka akan menampilkan nilai dari blok a

Proses Dekripsi pada Elgamal

- Simbol P , X. dan chippertext sebagai input, P adalah bilangan prima acak dimana p harus lebih besar dari 255 dengan ketentuan nilai p harus sama dengan nilai p yang ada pada enkripsi.. dan X adalah bilangan acak dengan syarat lebih besar dari 0 dan lebih kecil atau sama dengan (P- 1) , nilai x harus sama dengan nilai x yang ada pada enkripsi - Chipertext dipecah per 2 karaketer yang

dipisahkan oleh spasi, karakter bilangan ascii yang disebalah kiri adalah ai dan yang disebalah kanan adalah bi, contoh bilangan ascii : 31 201 137 82. Maka dipecah menjadi a. 31 201

b. 137 82

31 adalah ai untuk bilangan ascii a dan 201 adalah bi untuk nilai ascii a

137 adalah ai untuk bilangan ascii b dan 201 adalah bi untuk nilai ascii b

- Kemudian menghiung mi , dengan rumus 𝑚𝑖 = 𝑏𝑖. 𝑎𝑖𝑝−1−𝑥 𝑚𝑜𝑑 𝑝.

- Hasil mi adalah nilai ascii , kemudian diubah menjadi string.

(4)

- Memasukan mi kedalam variable hasil string - Melakukan pengecekan panjang hasil string

sama dengan panjang chipper text, jika panjang tidak sama maka akan melakukan perulangan. Jika panjang telah sama maka akan melakukan print hasil enkripsi

Pada Library JWS menggunakan algoritma elgamal menghasilkan struktur file sebagai berikut.

Penggunaan

Proses dibagi menjadi dua, yaitu proses sign dan verify. Kedua fungsi tersebut

dideklarasikan didalam web aplication (aplikasi web absensi front end) dan API web service nya

Interaksi web application, api service , dan JWS

1. Public key ,payload dan header yang diapanggil di web aplication akan melakukan proses signin

2. Setelah proses signin akan dihasilkan encode beserta digital signature yang nilainya akan dikembalikan ke web aplication

3. Web aplication melakukan permintaan dengan metode POST ke API web service, sekaligus mengirimkan data enkripsi (signature, payload / data, header)

4. API web service memanggil private key

5. API web service memanggil fungsi verify yang ada pada JWS

6. JWS melakukan verify dan decode, kemudian mengembalikan nilai yang merupakan data hasil dekripsi kepada API web service

7. Jika hasil verify berhasil, maka API web service akan melanjutkan untuk melakukan update pada database seusai data yang telah di enkrip.

8. API web service memberikan response kepada web application

Faktor Eksperimen

Faktor penelitian yang diuji adalah kemanan dan kecepatan. Pengujian kemanan dilakukan dengan cara melakukan penetration testing,yang dibagi menjadi menjadi tiga tahap penetrasi, untuk menjamin bahwa data hasil enkripsi telah terenkapsulasi dengan benar dan tidak adanya kesalahan pada proses verify maka pengujian berikut akan dilakukan secara berulang pada platform browser dan sistem oprasi yang berbeda - beda:

1. Pengujian akses langsung kepada url API melalui HTTP/HTTPS.

2. Penetration testing dengan memberikan key kepada penetration tester.

(5)

3. Penetration testing dengan membuatkan program untukmelakukan signin dengan semua algoritma default dari jws beserta memberikan key kepada penetration tester.

4. Pengujian Hasil Enkripsi pada Algoritma ElGamal.

5. Pengujian Hasil Deksripsi pada Algoritma Elgamal.

IV. IMPLEMENTASI

Kegiatan pengimplementasian jws adalah sebagai berikut:

1. Pembuatan Prototype

Pada tahap ini dilakukan pengkodean untuk membuat prototype library jws dengan algoritma ElGamal berdasarkan desain proses dan analisis.

2. Pengujian dan Evaluasi

Pada tahap ini dilakukan uji coba prototype library jws yang telah dibuat dan melakukan evaluasi terhadap hasil dari uji coba.

3. Penyempurnaan Prototype

Pada tahap ini dilakukan pengkodean ulang untuk menyempurnakan prototype yang sudah dibuat sebelumnya.

4. Dokumentasi

Pada tahap ini yaitu proses pengumpulan data yang sudah di rekap dan di satukan untuk keperluan skripsi.

3.1 Lingkup dan Batasan Implementasi 1. Bahasa pemograman yang digunakan php 2. Format yang digunakan JOSE untuk API

JSON

3. Digunakan sebagai library yang dimanfaatkan oleh sistem lain untuk mengaktifkan kemanan API yang sudah ada

3.2 Implementasi Interaksi JWS, API, dan Web Application

1.

Implementation

JWS

pada

program.

2.

Signing and Encode

3.

Decode

4. Error pada Header Algoritma

5. Error Kunci Publik pada Proses Verify

3.4 Hasil Pengujian

a. Signing

(6)

b. Verify

c. Enkripsi Elgamal

d. Dekripsi Elgamal

e. Halaman Download Library dan

Pembangkitan Kunci

f. Pengujian Penetrasi

Daftar Pustaka

Blank, A. G. (2016). TCP/IP Fondation. Chris Snyder, M. S. (2011). Pro PHP Security. Denis, T. s. (2006). Cryptography for

Developers.

Gerald, A. D. (2010). Bussiness Data Commmunications and Network. Gupta, H. (2011). Management Information

System.

Krause, M. (2006). Information Security Management Handbook.

Leonardo Richardson, M. A. (2013). restfull web APIs.

Lucey, T. (2005). Management Infromation System.

Network Defense : Fundamentals and Protocolsm. (2010). EC-Council. Setyaningsih, E. (2015). Kriptografi dan

Implementasinya menggunakan matlab.

vohra, D. (2015). Pro couchbase development. RFC 7515 - JSON Web Signature

RFC 7165 - Use Cases and Requirements for JSON

RFC 7797 - JSON Web Signature (JWS) Unencoded Payload Option

(7)

Referensi

Dokumen terkait

Oleh sebab itu dengan demikian meningkatnya perkembangan kebutuhan air minum bagi masyarakat Kota Blitar, maka pengelolaan air minum yang semula dilaksanakan

Puji Syukur Penulis panjatkan atas kehadirat Allah Yang Maha Esa karena berkat rahmat dan karunia-Nya Penulis dapat menyelesaikan penelitian dan penulisan tugas akhir

Bahwa Pelaksanaan asas itikad baik dalam praktek akad jual beli ikan dengan menggunakan sistem lelang yang terjadi di TPI Tanggul Malang Kendal, tidak bertentangan

DJOKO WAHJU WINARNO S.H.,M.S.. H.ADAT

 Peserta mampu menyusun spesifikasi teknis pengadaan barang/jasa yang sesuai dengan kebutuhan dan paket pengadaan barang/jasa untuk berbagai jenis pengadaan barang/jasa.. 

Melihat dari kejadian tersebut, maka perlu dilakukan peningkatan fungsi Bendung Plumbon menjadi bendung pengendali banjir, salah satu caranya dengan peninggian mercu

Pengalaman siswa dalam pembelajaran inkuiri akan mempengaruhi jumlah pertanyaan yang diajukan siswa (Chin, 2002). Siswa pun tidak terlalu merasa kesulitan dalam menjawab

PERIODE ENAM BULAN YANG BERAKHIR PADA TANGGAL 30 JUNI 2011 DAN 2010 (tidak diaudit) (DINYATAKAN DALAM RUPIAH, KECUALI DINYATAKAN