SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
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
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)
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

Más contenido relacionado

Más de idsecconf

idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf
 
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf
 
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfAli - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfidsecconf
 
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...idsecconf
 
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfRama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfidsecconf
 
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...idsecconf
 
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfNosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfidsecconf
 
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...idsecconf
 
Utian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfUtian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfidsecconf
 
Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...idsecconf
 
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika TriwidadaPerkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidadaidsecconf
 
Pentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - AbdullahPentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - Abdullahidsecconf
 
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaHacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaidsecconf
 
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...idsecconf
 
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi DwiantoDevsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwiantoidsecconf
 
Stream crime
Stream crime Stream crime
Stream crime idsecconf
 
(Paper) Mips botnet worm with open wrt sdk toolchains
(Paper) Mips botnet worm with open wrt sdk toolchains(Paper) Mips botnet worm with open wrt sdk toolchains
(Paper) Mips botnet worm with open wrt sdk toolchainsidsecconf
 
Mips router targeted worm botnet
Mips router targeted worm botnetMips router targeted worm botnet
Mips router targeted worm botnetidsecconf
 
The achilles heel of GPN Card implementation
The achilles heel of GPN Card implementationThe achilles heel of GPN Card implementation
The achilles heel of GPN Card implementationidsecconf
 
iot hacking, smartlockpick
 iot hacking, smartlockpick iot hacking, smartlockpick
iot hacking, smartlockpickidsecconf
 

Más de idsecconf (20)

idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
 
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
 
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfAli - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
 
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
 
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfRama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
 
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
 
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfNosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
 
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
 
Utian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfUtian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdf
 
Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...
 
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika TriwidadaPerkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
 
Pentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - AbdullahPentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - Abdullah
 
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaHacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
 
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
 
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi DwiantoDevsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
 
Stream crime
Stream crime Stream crime
Stream crime
 
(Paper) Mips botnet worm with open wrt sdk toolchains
(Paper) Mips botnet worm with open wrt sdk toolchains(Paper) Mips botnet worm with open wrt sdk toolchains
(Paper) Mips botnet worm with open wrt sdk toolchains
 
Mips router targeted worm botnet
Mips router targeted worm botnetMips router targeted worm botnet
Mips router targeted worm botnet
 
The achilles heel of GPN Card implementation
The achilles heel of GPN Card implementationThe achilles heel of GPN Card implementation
The achilles heel of GPN Card implementation
 
iot hacking, smartlockpick
 iot hacking, smartlockpick iot hacking, smartlockpick
iot hacking, smartlockpick
 

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

  • 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. 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. 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