herpiko dwi aguno - “pkiwebsdk : pustaka javascript untuk aplikasi pki berbasis html5”

3

Click here to load reader

Upload: idsecconf

Post on 13-Apr-2017

601 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Herpiko Dwi Aguno - “PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5”

PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5

Herpiko Dwi AgunoEmail : [email protected]

Kriptografi merupakan hal yang tidak dapat dipisahkan pada dunia digital modern. Implementasi-implementasi Public Key Infrastructur (PKI) menjadi tumpuan penting dalam berbagai infrasturktur digital,seperti Sertifikat SSL. PKI dapat diterapkan pada berbagai sistem dan lingkungan, bahkan sebagai sistemuntuk identitas warga negara. Akan tetapi, pemahaman dan penerapan PKI tidak terbilang mudah. Sudah adabeberapa aplikasi dan framework yang membantu implementasi PKI, namun belum ada SDK (SystemDevelopment Kit) yang siap pakai dan tersedia untuk platform web. Antar muka pemrograman WebCrypto diperamban juga belum dapat digunakan secara maksimal untuk PKI. PKIWebSDK menyediakan antar mukapemrograman yang siap pakai dan mudah untuk lingkungan pengembangan web dan aplikasi hybrid.

Kata kunci : PKI, kriptografi, JavaScript, SDK, kunci publik, enkripsi

Pendahuluan

Hingga akhir 1990-an, analis teknologimemprediksi teknologi Public Key Infrastructure(PKI) akan menjadi elemen penting dalam keamanansistem daring. PKI memperluas penggunaankriptografi kunci publik ke berbagai macam aplikasi-aplikasi seperti email, pemroses dokumen,identifikasi dan autentifkasi peladen dan sistempembayaran. Sebuah sistem PKI dengan kuncipublik dan identitas pengguna yang saling terhubungdapat menyediakan fungsi-fungsi keamanan yangsangat penting seperti autentikasi, kerahasiaan,otorisasi, pemeriksaan integritas dan antipenyangkalan.

Namun adopsi sistem PKI terbukti tidakmudah, baik dari sisi teknologi maupun kerumitanoperasional serta biaya. Beberapa negara sudahmenginisiasi adopsi PKI secara nasional, termasukAmerisa Serikat, Inggris, Pemerintah FederalAustralia dan Korea Selatan.

Contoh implementasi PKI secara meluasyang berhasil adalah Korea Selatan, dimanasebagian besar warga negaranya telah memilikiidentitas utama dengan kunci publik untukmengakses layanan-layanan pemerintah maupununtuk sekedar bertransaksi di toko daring. DiIndonesia, pemerintah (Kominfo) masih berusahakeras mengimplementasikan PKI secara nasionaldengan menjajaki kerjasama dengan Korea Selatan,antara lain dengan mengadakan transisipengetahuan, pelatihan, menyiapkan infrastrukturdan menyediakan perangkat lunak untuk mendukungpercepatan PKI aware. Salah satunya adalahPKIWebSDK.

PKIWebSDK dibangun untuk mempermudahpemerhati teknologi keamanan informasi dalammembangun aplikasi yang memerlukan implementasiPKI dengan platform web dan bahasa yang palingpopuler saat ini, yaitu JavaScript.

Dasar Teori

PKI adalah implementasi dari berbagaiteknik kriptografi yang bertujuan mengamankan data,memastikan keaslian, mempercayai sebuah entitasdan mencegah penyangkalan. Teknik-teknik tersebutantara lain :

● Hash● Enkripsi simetrik

● Enkripsi asimetrik

Fungsi hash secara bersama-sama denganenkripsi asimetrik untuk menghasilkan sebuah nilaisebagai bukti keaslian entitas (misal pengirim data)dan hanya dapat diverifikasi secara searah.

Sementara enkripsi asimetrik digunakan untukmencegah data dapat dibaca secara langsung tanpamelalui suatu proses (dekripsi).

Fungsi-fungsi kriptografi tersebut terkait erat dengankunci publik, yang akan digunakan oleh setiapentitas yang terkait dengan lingkungan PKI. Minimalentitas yang terlibat dalam PKI antara lain :

1. Certificate Authority (CA) adalah lembagaterpercaya yang berhak menerbitkanpasangan kunci privat dan publik untukpengguna. Kunci publik yang diterbitkan

Page 2: Herpiko Dwi Aguno - “PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5”

tersebut terikat dan terpercaya (trusted)karena telah ditandatangani oleh kunci privatmilik CA. Secara tidak langsung, CA

2. Pengguna (baik organisasi maupunperorangan) adalah pihak yang mengajukanpermintaan sertifikat ke CA. Sebelumnya,pengguna diminta memenuhi berbagaisyarat yang ditentukan CA atau RA(Registration Authority, wewenang di bawahCA, bertugas memvalidasi dan menyetujui).Jika disetujui, CA akan menerbitkanpasangan kunci, menandatanganinya danmenyerahkan ke pengguna. Kemudianpengguna dapat menggunakan kuncitersebut untuk keperluannya, misal sebagaiSSL untuk aplikasi web.

Secara garis besar, PKI menyediakan dua fungsiutama :

● Kriptografi kunci publik, dimana pengirimdapat mengenkripsi data dengan kuncipublik penerima dan hanya penerima yangdapat mendekripsi data tersebut dengankunci privatnya.

● Sertifikat digital, mengizinkan penggunamenandatangani sebuah data sebelummengirimnya ke penerima. Penerima dapatmenverifikasi, apakah pengirimnya adalahpihak yang benar dan terpercaya sertaapakah identitas pengirim tersebut jugadipercaya oleh sertifikat utama (rootcertificate).

PKIWebSDK

PKIWebSDK adalah pustaka JavaScriptyang mempermudah pembangunan aplikasi web /hybrid berbasis PKI. Pustaka ini dirancang untukdapat digunakan secara penuh dan siap pakai di sisiklien / peramban.

Pustaka PKIWebSDK hanya didukung olehperamban-peramban terbaru yang sudah memilikifitur WebCrypto, lihat [2]. PKIWebSDK dirilis olehKominfo sebagai perangkat lunak terbuka namunlisensi spesifik belum ditetapkan.

WebCrypto dan Pustaka Hulu

WebCrypto adalah antar mukapemrograman pada peramban untuk mendukungkriptografi. WebCrypto masih dijajaki secara aktifpada konsorsium W3C namun belumz selengkapyang diharapkan untuk dapat membangun aplikasikriptografi yang kompleks.

Beberapa pustaka kriptografi di JavaScriptyang paling giat dikembangkan akhir-akhir ini antaralain :

● Forge (https://github.com/digitalbazaar/forge)

● PKI JS (http://pkijs.org)

PKIWebSDK menggunakan Forgedikarenakan antar muka pemrogramannya yanglebih sederhana dan mudah diimplementasikan.Meskipun demikian, PKIWebSDK tetapmenggunakan API WebCrypto dari peramban jikaada implementasi kriptografi yang dapat ditanganisecara langsung oleh API WebCrypto, seperti fungsipembuatan pasangan kunci RSA.

Callback vs Promise

Callback merupakan potongan kode yangmengirim argumen ke potongan kode lain padawaktu tertentu (misal saat sebuah fungsi tertentutelah diselesaikan). Callback umum digunakan padapustaka-pustaka Javascript sebagai bentuk fungsiasinkron.

Contoh callback :

doSomething(function(err, result) { If (err) { // handle error return; } // handle result})

Promise mirip dengan callback namunmenyediakan percabangan terpisah untuk galat danhasil dan ditangani di blok kode terpisah.

Contoh promise :

doSomething().then(function(result) { // handle result}).catch(function(error) { // handle error})

Promise mengizinkan penggunaan APIsecara berantai namun tetap mudah dibaca (humanreadable)

Page 3: Herpiko Dwi Aguno - “PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5”

Contoh promise berantai :

doSomething().then(function(result) { // handle result return doSomethingThatMatters().then(function(result) { // handle result}).catch(function(error) { // handle error})

Demi menyederhanakan penggunaan antarmuka pemrograman, PKIWebSDK menggunakanpromise pada hampir semua antar mukapemrogramannya. Berikut adalah salah satu fungsidari pustaka PKIWebSDK yaitu fungsi parseP12untuk mendapatkan kunci privat dari kontainer P12yang terkunci.

var privateKey;newCert.parseP12(buffer, password).then(function(result) { privateKey = result.privateKey;}).catch(function(err) { alert(err);})

Kelas dan Fitur

Pada PKIWebSDK, fungsi-fungsi kriptografidan beberapa fungsi pembantu dikelompokkan kekelas-kelas utama, antara lain :

● Key, memuat fungsi untuk membuatpasangan kunci, enkripsi dan dekripsi berkas(ukuran terbatas)

● Certificate, memuat fungsi untuk membuatCSR, ekspor dan impor sertifikat digitaldaam berbagai format

● SignedData, memuat fungsi untukpenandatanganan dan verifikasi berkasdengan protokol PKCS#7.

● EncryptedData, memuat fungsi untukenkripsi data yang berukuran lebih besar.

● PDF, memuat fungsi untukpenandatanganan dan verifikasi berkas PDF.

● UI, memuat helper untuk membangun antarmuka siap pakai untuk fungsi-fungsi tertentu.

Dari kelas-kelas tersebut, PKIWebSDKmemenuhi fitur-fitur berikut :

- Mendukung sertifikat X509 : CSR, ekspordan impor sertifikat dalam format PEM, P12dan DER, verifikasi path, CRL parsing.

- Kriptografi RSA : membuat pasangan kunci,penandatanganan, verifikasi tanda tangan,enkripsi dan dekripsi.

- Signed Data (PKCS#7) : Tanda tangan danverifikasi.

- PDF Signature : Tanda tangan dan verifikasipada berkas PDF

- SIM (RFC 4683) yang memungkinkanpenggunaan nomor induk Kartu TandaPenduduk sebagai subyek sertifikat

Kesimpulan

Pustaka PKIWebSDK dapat memudahkanimplementasi PKI pada aplikasi web maupun aplikasidesktop hybrid berbasis HTML5 (menggunakanElectron, IGN-SDK atau Maleo). Contoh-contohaplikasi yang mungkin menerapkan pustaka iniantara lain ; aplikasi penerbit CSR, aplikasipenandatangan digital dan pengecek tanda tangan diberkas PDF, aplikasi enkripsi dan dekripsi berkas.

Referensi

[0] http :// tools . ietf . org / html / rfc 5280[1] https :// gitlab . com / rootcaid / kominfo - pki - websdk[2] http :// caniuse . com /# search = cryptography[3]https :// www . academia . edu /25840731/ Social _ Life _ of _PKI _ Sociotechnical _ Development _ of _ Korean _ Public- Key _ Infrastructure