Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PKIWebSDK : Pustaka JavaScript untuk
aplikasi PKI berbasis HTML5
Herpiko Dwi Aguno
Email : herpiko@gmail.com
Kriptografi m...
tersebut terikat dan terpercaya (trusted)
karena telah ditandatangani oleh kunci privat
milik CA. Secara tidak langsung, C...
Contoh promise berantai :
doSomething()
.then(function(result) {
// handle result
return doSomethingThatMatters()
.then(fu...
Upcoming SlideShare
Loading in …5
×

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

1,010 views

Published on

PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. PKIWebSDK : Pustaka JavaScript untuk aplikasi PKI berbasis HTML5 Herpiko Dwi Aguno Email : herpiko@gmail.com 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 sistem untuk identitas warga negara. Akan tetapi, pemahaman dan penerapan PKI tidak terbilang mudah. Sudah ada beberapa aplikasi dan framework yang membantu implementasi PKI, namun belum ada SDK (System Development Kit) yang siap pakai dan tersedia untuk platform web. Antar muka pemrograman WebCrypto di peramban juga belum dapat digunakan secara maksimal untuk PKI. PKIWebSDK menyediakan antar muka pemrograman 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 teknologi memprediksi teknologi Public Key Infrastructure (PKI) akan menjadi elemen penting dalam keamanan sistem daring. PKI memperluas penggunaan kriptografi kunci publik ke berbagai macam aplikasi- aplikasi seperti email, pemroses dokumen, identifikasi dan autentifkasi peladen dan sistem pembayaran. Sebuah sistem PKI dengan kunci publik dan identitas pengguna yang saling terhubung dapat menyediakan fungsi-fungsi keamanan yang sangat penting seperti autentikasi, kerahasiaan, otorisasi, pemeriksaan integritas dan anti penyangkalan. Namun adopsi sistem PKI terbukti tidak mudah, baik dari sisi teknologi maupun kerumitan operasional serta biaya. Beberapa negara sudah menginisiasi adopsi PKI secara nasional, termasuk Amerisa Serikat, Inggris, Pemerintah Federal Australia dan Korea Selatan. Contoh implementasi PKI secara meluas yang berhasil adalah Korea Selatan, dimana sebagian besar warga negaranya telah memiliki identitas utama dengan kunci publik untuk mengakses layanan-layanan pemerintah maupun untuk sekedar bertransaksi di toko daring. Di Indonesia, pemerintah (Kominfo) masih berusaha keras mengimplementasikan PKI secara nasional dengan menjajaki kerjasama dengan Korea Selatan, antara lain dengan mengadakan transisi pengetahuan, pelatihan, menyiapkan infrastruktur dan menyediakan perangkat lunak untuk mendukung percepatan PKI aware. Salah satunya adalah PKIWebSDK. PKIWebSDK dibangun untuk mempermudah pemerhati teknologi keamanan informasi dalam membangun aplikasi yang memerlukan implementasi PKI dengan platform web dan bahasa yang paling populer saat ini, yaitu JavaScript. Dasar Teori PKI adalah implementasi dari berbagai teknik kriptografi yang bertujuan mengamankan data, memastikan keaslian, mempercayai sebuah entitas dan mencegah penyangkalan. Teknik-teknik tersebut antara lain : ● Hash ● Enkripsi simetrik ● Enkripsi asimetrik Fungsi hash secara bersama-sama dengan enkripsi asimetrik untuk menghasilkan sebuah nilai sebagai bukti keaslian entitas (misal pengirim data) dan hanya dapat diverifikasi secara searah. Sementara enkripsi asimetrik digunakan untuk mencegah data dapat dibaca secara langsung tanpa melalui suatu proses (dekripsi). Fungsi-fungsi kriptografi tersebut terkait erat dengan kunci publik, yang akan digunakan oleh setiap entitas yang terkait dengan lingkungan PKI. Minimal entitas yang terlibat dalam PKI antara lain : 1. Certificate Authority (CA) adalah lembaga terpercaya yang berhak menerbitkan pasangan kunci privat dan publik untuk pengguna. Kunci publik yang diterbitkan
  2. 2. tersebut terikat dan terpercaya (trusted) karena telah ditandatangani oleh kunci privat milik CA. Secara tidak langsung, CA 2. Pengguna (baik organisasi maupun perorangan) adalah pihak yang mengajukan permintaan sertifikat ke CA. Sebelumnya, pengguna diminta memenuhi berbagai syarat yang ditentukan CA atau RA (Registration Authority, wewenang di bawah CA, bertugas memvalidasi dan menyetujui). Jika disetujui, CA akan menerbitkan pasangan kunci, menandatanganinya dan menyerahkan ke pengguna. Kemudian pengguna dapat menggunakan kunci tersebut untuk keperluannya, misal sebagai SSL untuk aplikasi web. Secara garis besar, PKI menyediakan dua fungsi utama : ● Kriptografi kunci publik, dimana pengirim dapat mengenkripsi data dengan kunci publik penerima dan hanya penerima yang dapat mendekripsi data tersebut dengan kunci privatnya. ● Sertifikat digital, mengizinkan pengguna menandatangani sebuah data sebelum mengirimnya ke penerima. Penerima dapat menverifikasi, apakah pengirimnya adalah pihak yang benar dan terpercaya serta apakah identitas pengirim tersebut juga dipercaya oleh sertifikat utama (root certificate). PKIWebSDK PKIWebSDK adalah pustaka JavaScript yang mempermudah pembangunan aplikasi web / hybrid berbasis PKI. Pustaka ini dirancang untuk dapat digunakan secara penuh dan siap pakai di sisi klien / peramban. Pustaka PKIWebSDK hanya didukung oleh peramban-peramban terbaru yang sudah memiliki fitur WebCrypto, lihat [2]. PKIWebSDK dirilis oleh Kominfo sebagai perangkat lunak terbuka namun lisensi spesifik belum ditetapkan. WebCrypto dan Pustaka Hulu WebCrypto adalah antar muka pemrograman pada peramban untuk mendukung kriptografi. WebCrypto masih dijajaki secara aktif pada konsorsium W3C namun belumz selengkap yang diharapkan untuk dapat membangun aplikasi kriptografi yang kompleks. Beberapa pustaka kriptografi di JavaScript yang paling giat dikembangkan akhir-akhir ini antara lain : ● Forge (https://github.com/digitalbazaar/forge) ● PKI JS (http://pkijs.org) PKIWebSDK menggunakan Forge dikarenakan antar muka pemrogramannya yang lebih sederhana dan mudah diimplementasikan. Meskipun demikian, PKIWebSDK tetap menggunakan API WebCrypto dari peramban jika ada implementasi kriptografi yang dapat ditangani secara langsung oleh API WebCrypto, seperti fungsi pembuatan pasangan kunci RSA. Callback vs Promise Callback merupakan potongan kode yang mengirim argumen ke potongan kode lain pada waktu tertentu (misal saat sebuah fungsi tertentu telah diselesaikan). Callback umum digunakan pada pustaka-pustaka Javascript sebagai bentuk fungsi asinkron. Contoh callback : doSomething(function(err, result) { If (err) { // handle error return; } // handle result }) Promise mirip dengan callback namun menyediakan percabangan terpisah untuk galat dan hasil dan ditangani di blok kode terpisah. Contoh promise : doSomething() .then(function(result) { // handle result }) .catch(function(error) { // handle error }) Promise mengizinkan penggunaan API secara berantai namun tetap mudah dibaca (human readable)
  3. 3. Contoh promise berantai : doSomething() .then(function(result) { // handle result return doSomethingThatMatters() .then(function(result) { // handle result }) .catch(function(error) { // handle error }) Demi menyederhanakan penggunaan antar muka pemrograman, PKIWebSDK menggunakan promise pada hampir semua antar muka pemrogramannya. Berikut adalah salah satu fungsi dari pustaka PKIWebSDK yaitu fungsi parseP12 untuk mendapatkan kunci privat dari kontainer P12 yang 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 kriptografi dan beberapa fungsi pembantu dikelompokkan ke kelas-kelas utama, antara lain : ● Key, memuat fungsi untuk membuat pasangan kunci, enkripsi dan dekripsi berkas (ukuran terbatas) ● Certificate, memuat fungsi untuk membuat CSR, ekspor dan impor sertifikat digital daam berbagai format ● SignedData, memuat fungsi untuk penandatanganan dan verifikasi berkas dengan protokol PKCS#7. ● EncryptedData, memuat fungsi untuk enkripsi data yang berukuran lebih besar. ● PDF, memuat fungsi untuk penandatanganan dan verifikasi berkas PDF. ● UI, memuat helper untuk membangun antar muka siap pakai untuk fungsi-fungsi tertentu. Dari kelas-kelas tersebut, PKIWebSDK memenuhi fitur-fitur berikut : - Mendukung sertifikat X509 : CSR, ekspor dan impor sertifikat dalam format PEM, P12 dan DER, verifikasi path, CRL parsing. - Kriptografi RSA : membuat pasangan kunci, penandatanganan, verifikasi tanda tangan, enkripsi dan dekripsi. - Signed Data (PKCS#7) : Tanda tangan dan verifikasi. - PDF Signature : Tanda tangan dan verifikasi pada berkas PDF - SIM (RFC 4683) yang memungkinkan penggunaan nomor induk Kartu Tanda Penduduk sebagai subyek sertifikat Kesimpulan Pustaka PKIWebSDK dapat memudahkan implementasi PKI pada aplikasi web maupun aplikasi desktop hybrid berbasis HTML5 (menggunakan Electron, IGN-SDK atau Maleo). Contoh-contoh aplikasi yang mungkin menerapkan pustaka ini antara lain ; aplikasi penerbit CSR, aplikasi penandatangan digital dan pengecek tanda tangan di berkas PDF, aplikasi enkripsi dan dekripsi berkas. Referensi [0] http://tools.ietf.org/html/rfc5280 [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

×