Prototype Integrasi Sistem Informasi Perijinan dan Kependudukan dengan CakePHP dan WebService
Alhamdulilah, kamis 10 Februari kemarin kerja praktek saya di Purwokerto telah selesai. Kerja praktek ini merupakan pembuatan prototype dari 3 aplikasi yang terintegrasi dengan menggunakan web service. Sistemnya sendiri di develop dengan menggunakan CakePHP untuk 2 aplikasi business-tier dan Croogo untuk 1 aplikasi presentation-tier. Sedangkan WebServicenya sendiri ditangani oleh NuSoap.
Jadi ceritanya gini, Di Dinas Pendapatan Daerah terdapat portal (1) yang menangani proses pembayaran ijin, sedangkan data Perijinan (3) berada di dinas yang menangani perijinan. Oleh karena itu aplikasi (1) tidak bisa mengakses data secara langsung tetapi harus diakses melalui jaringan internet. Oleh karena itu pengambilan data di implementasikan menggunakan Web Service. Kemudian, ketika seseorang hendak mendaftarkan perijinan, perlu dilakukan pengecekan validitas identitas pemohon dengan melakukan checking di data Kependudukan (5).
Sedangkan untuk spesifikasi Web Servicenya sendiri bisa dilihat dibawah ini:

Untuk Presentasi bisa dilihat disini
Untuk download prototype bisa download disini
Pengamanan Web Service
PENGAMANAN WEB SERVICE
Abstrak:
Web Service memberikan paradigma baru dalam mengimplementasikan sistem terdistribusi melalui Web dengan menggunakan standard protokol SOAP, WSDL dan UDDI yang berbasis XML. Dengan teknologi Web Service, konsep sistem terdistribusi yang biasanya digunakan pada sistem yang bersifat tertutup dan proprietary (DCOM, CORBA, RMI) dapat diterapkan kedalam sistem yang bersifat terbuka (non-propriertary) berbasis Web. Penerapan Web Service akan memudahkan proses integrasi dan kolaborasi antar aplikasi pada lingkungan platform yang heterogen baik melalui jaringan Intranet maupun Internet, dengan biaya yang lebih murah dan dalam waktu yang relative lebih cepat. Namun demikian, masih banyak yang ragu untuk segera menerapkan Web Service, khususnya jika digunakan untuk mendukung transaksi bisnis melalui Internet (global). Alasan utama yang menjadi perhatian adalah pada aspek keamanan dan kerentanan (vulnerability) yang terdapat pada teknologi Web Service. Sementara itu standard keamanan yang biasa digunakan untuk mengamankan aplikasi berbasis Web pada umumnya tidak cukup mampu untuk mengamankan transaksi Web Service. Pada makalah ini dibahas berbagai arsitektur keamanan dan spesifikasi standard keamananan untuk Web Service.
Keyword:
Malware
1. Sekilas Malware
Malware adalah program komputer yang diciptakan dengan maksud dan tujuan utama mencari kelemahan software. Umumnya Malware diciptakan untuk membobol atau merusak suatu software atau operating sistem. Contoh dari malware adalah Virus, Worm, Wabbit, Keylogger, Browser Hijacker, Trojan Horse, Spyware, Backdoor, Dialer, Exploit dan rootkit.
Malware biasa disisipkan ke dalam komputer korban melalui bug-bug program atau protocol. Celah-celah tersebut kemudian dimanfaatkan oleh penyerang untuk melakukan instalasi di computer korban. Kebanyakan dari malware tersebut memanfaatkan celah yang ada pada web browser.
Browser merupakan celah yang paling banyak dimanfaatkan oleh penyerang, karena pada umumnya browser merupakan pintu utama antara interaksi user dengan jaringan internet. Sehingga kelemahan-kelemahan yang ada pada browser dapat membuat penyerang menanamkan malware di komputer korban. Untuk mengatasi masalah tersebut, browser selalu diperbaharui dan ditambal dengan menggunakan patch. Meski demikian, kenyataannya browser akan selalu memiliki bug. Maka cara terbaik bagi kita untuk mengurangi dampak buruknya adalah dengan mengurangi kerugian yang diderita.
Ada 3 faktor utama yang dapat menyebabkan kerugian serangan malware pada webbrowser, yaitu:
- Frekuensi interaksi dengan penyerang
- Persentase waktu dari vulnerability yang tidak ditambal dengan patch
- Damage ditimbulkan ketika serangan berhasil
Maka untuk mengatasinya, perlu dilakukan
- Mencegah proses perkenalan
- Tanggap terhadap vulnerability
- Penahanan terhadap kegagalan
2. Metodologi Penyerangan Malware dan pencegahannya
Berikut ini adalah metode yang digunakan oleh penyerang untuk menyisipkan malwarenya:
- Interaksi dengan penyerang
- Drive-By Download
Drive-By download dapat diartikan sebagai berikut:
1) Download dimana user memiliki hak akses tetapi tidak paham dengan konsekuensinya, misalnya dengan mendownload executable, activeX atau java applet
2) Download yang terjadi tanpa sepengetahuan user
3) Download spyware, virus komputer atau malware yang terjadi tanpa sepengetahuan user.
Drive-by download dapat terjadi ketika user mengunjungi sebuah website, membaca email atau melakukan klip pada popup.
Saat ini 1.3% dari setiap pencarian di google menghasilkan minimal 1 entry yang merupakan malware site. Google dapat mengklasifikasi antara situs yang meruapkan malware maupun yang tidak. Hal ini dapat dilihat aktifitas download user yang mendownload content tanpa sepengetahuan sebelumnya. Dengan demikian, user yang melakukan pencarian menggunakan google memiliki resiko lebih kecil menghadapi drive-by download.
- Vulnerability yang tidak ditambal dengan patch
Proses pencarian dan penambalan vulnerability meliputi tahap sebagai berikut:
- Discovery
- Publikasi
- Patch Tersedia
- Patch Siap digunakan
Sedangkan hambatan ketika melakukan penambalan patch antara lain sebagai berikut:
- Proses patch dapat mengganggu alur kerja
- Membutuhkan previledges admin
- Dapat merusak tatanan yang ada
- Membutuhkan mekanisme update yang berbeda
- Penahanan Kegagalan
Ada 3 jenis kegagalan yang dapat dimanfaatkan oleh penyerang dalam menginstall malware di komputer korban, yaitu:
- XSS
Cross Site Scripting (XSS) adalah sebuah vulnerability yang pada umumnya ditemukan pada aplikasi web yang memungkinkan penyerang untuk melakukan penyusupan berupa client script ke dalam halaman web yang dilihat oleh pengguna lain. Sebuah website yang terexploit dapat digunakan oleh penyerang untuk mem-bypass, akses user.
- File Theft
Pencurian file dapat dilakukan oleh aplikasi web penyerang dengan memanfaatkan celah pada web browser. Penanganannya adalah sebagai berikut:
1) Aplikasi web, hanya dapat melakukan write pada folder “My Documents\Downloads”
2) Aplikasi web hanya dapat mengupload file melalui upload file milik kernel browser
3) Aplikasi web hanya dapat menggunakan web-safe schemes(http, https, ftp)
- Eksekusi kode yang tidak dikehendaki
Dalam keamanan komputer, eksekusi kode yang tidak diinginkan digunakan untuk menggambarkan kemampuan penyerang untuk mengeksekusi perintah apapun pada mesin target atau dalam proses target. Hal ini biasanya digunakan dalam kerentanan eksekusi kode yang tidak dikehendaki untuk menjelaskan bug software yang memberikan penyerang cara untuk mengeksekusi kode. Sebuah program yang dirancang untuk mengeksploitasi kerentanan seperti ini disebut arbitrary code execution exploit. Sebagian besar kerentanan memungkinkan pelaksanaan kode mesin dan eksploitasi karena suntik dan melaksanakan shellcode untuk memberikan penyerang cara mudah untuk manual menjalankan perintah sewenang-wenang.Kemampuan untuk memicu eksekusi kode sewenang-wenang dari satu mesin yang lain (khususnya melalui wide-area network seperti Internet) sering disebut sebagai remote code execution.
Sebagai pencegahannya, web browser mengimplementasikan sebagai berikut:
1) Internet Explorer
Internet explorer menggunakan priviledges low rights, sehingga ketika sebuah kode hendak dijalankan admin perlu memberikan ijin.
SSL / TLS: Pengamanan Pengiriman dan Penerimaan Data
Penggunaan internet dalam kehidupan sehari – hari saat ini sudah merupakan hal yang umum. Ketika pengguna internet melakukan browsing atau surfing seringkali ia diminta untuk mengirimkan data pribadinya. Menurut saya terdapat 2 jenis data yang kita bicarakan disini, yakni data yang diminta secara implicit maupun data yang diminta secara explicit. Data yang diminta secara explicit contohnya nama user, alamat email, dsb ketika kita hendak memberikan komentar di sebuah web. Data yang diminta secara implist contohnya ketika web browser mengirimkan cookie untuk melakukan autentikasi. Data – data tersebut bersifat pribadi dan rahasia. Penggunaan data tersebut oleh orang yang tidak berhak dapat menyebabkan kerugian terhadap pemilik data baik secara materil maupun imateril. Contohnya jika terjadi fraud atas sebuah akun bank atau ketika orang lain mengaku –ngaku sebagai diri kita dan melakukan perbuatan yang dapat menurunkan harga diri kita.
Beberapa metode sudah hadir di sekeliling kita dengan tujuan untuk mencegah data – data penting dan rahasia agar tidak dapat diketahui oleh orang yang tidak berhak. Sebagai contoh: Zip dengan password, SSL/TLS, IPsec, dsb. Dari sekian banyak metode yang hadir, yang paling sering saya gunakan adalah SSL/TLS. Secara sadar atau tidak ketika kita membuka situs jejaring social favorit atau email, kita menggunakan SSL/TLS tersebut.
Apa itu SSL/TLS? Adalah protocol kriptografi yang menyediakan keamanan komunikasi pada jaringan contohnya internet. SSL/TLS mengenkripsi segmen – segmen yang ada pada Application layer sebelum dilanjutkan ke transport layer. TLS protocol memungkinkan aplikasi klien atau server untuk berkomunikasi dengan mencegah pengupingan dan sabotase. TLS menyediakan komunikasi terautentikasi dengan menggunakan kriptografi.
FITUR
SSL/TLS menyediakan:
- Privasi Pesan
Privasi ini didapat dari kombinasi public key dan symmetric key encryption. Semua trafik diantara SSL server dan SSL client di enkripsi dengan sebuah key dan algoritma enkripsi yang didefinisikan ketika melakukan handshake.
- Integritas Pesan
Integritas pesan menjamin bahwa trafik dari sebuah sesi SSL tidak berubah rute sampai ke tujuan akhirnya. Ketika data dikirimkan, data tersebut tidak akan ditangkap dan disabotase oleh orang yang tidak berhak. SSL menggunakan kombinasi “shared secret” dan fungsi khusus matematika yang disebut hash function untuk menyediakan integritas sebuah pesan.
- Mutual Authentication
Mutual authentication adalah sebuah proses dimana server meyakinkan klient bahwa identitas yang disediakan adalah benar milik server. Identitas ini di kodekan dalam sebuah public key sertificates, dan sertifikat diberikan ketika melakukan handshake.
Sejarah Pengembangan
- Secure Network Programming API
Dalam upaya pengembangan pertama dalam keamanan transport layer, terdapat pengembangan terhadap Secure Network Programming Application Programming Interface pada tahun 1993 yang melakukan pendekatan keamanan pada transport layer API dengan menirukan Berkeley socket.
- SSL v1.0,v2.0,v3.0
SSL Protokol awalnya dikembangkan oleh Netscape. Versi 1.0 tidak pernah dipulikasi. Versi 2.0 dipulikasi pada Februari 2005. Sedangkan SSL 3.0 dipublikasi pada 1996.
- TLS v1.0
TLS 1.0 pertama kali dipublikasi dalam RFC 2246 januari 1999 sebagai upgrade dari SSL v3.0.
- TLS v1.1
TLS 1.1 dipublikasi pertama kali dalam RFC 4346 april 2006. Ini merupakan update dari TLS v1.0. Perbedaan yang mendasar di versi ini meliputi:
- Proteksi terhadap Cipher Block Chaining attacks.
- Dukungan terhadap parameter registrasi IANA
- TLS v1.2
TLS v1.2 didefinisikan pertama kali dalam RFC 5246 Agustus 2008. Perbedaan yang mendasar dengan v1.1 adalah sebagai berikut:
- Kombinasi MD5/SHA-1 dalam funsi pseudorandom telah diganti dengan SHA-256
- Kombinasi MD5/SHA-1 dalam “Finished Message” telah diganti dengan SHA-256
- Kombinasi MD5/SHA-1 dalam element yang tersertifikasi ketika handshake defaultnya menjadi SHA-1
- Peningkatan terhadap kemampuan server maupun klien dalam menentukan hash dan tandatangan yang akan mereka terima
- TLS extensions dan Advanced Encryption Standard ChiperSuites telah ditambahkan.
Aplikasi
Umumnya TLS diimplementasikan diatas Tranport Layer protocol, menyelubungi protocol yang spesifik terhadap aplikasi tertentu seperti HTTP, FTP, SMTP, NNTP, dan XMPP. Dalam sejarah, TLS umum digunakan pada Transmisiion Control Protocol(TCP). Namun TLS juga dapat digunakan pada User Datagram Protocol(UDP) dan Datagram Congestion Control Protocol(DCCP) yang penggunaannya memiliki standard tersendiri dengan istilah Datagram Transport Layer Security(DTLS).
Penggunan TLS yang umum digunakan dalam trafik World Wide Web adalah pembentukan HTTP menjadi HTTPS. TLS juga dapat digunakan untuk men-“tunnel” network stack untuk menciptakan VPN. TLS juga merupaka metode standard yang digunakan utnuk melindungi Session Initiation Protocol(SIP).
Cara Kerja
Sebuah klien TLS dan server melakukan negosiasi melalui prosedur handshake. Ketika proses ini terjadi, klien dan server menyetujui beberapa parameter yang akan digunakan dalam keamanan komunikasi.
- Handshake dimulai ketika klien menyambung ke sebuah server dengan TLS dan meminta untuk melakukan komunikasi aman, dan mengirimkan list atas CipherSuites yang didukungnya.
- Dari daftar tersebut server memilih cipher dan fungsi hash yang dianggap paling aman dan memberitahu klien atas keputusan server tersebut.
- Server kemudian mengirimkan ulang identitas dirinya dalam bentuk sertifikat digital juga mengirimkan public key encryption server tersebut. Sertifikat biasanya memuat nama server. Sertifikat dikeluarkan oleh Certificate Authority terpercaya.
- Client dapat menghubungi publisher sertifikat tersebut dan melakukan validasi.
- Untuk menghasilkan session key, klient menggunakan random number dengan menggunakan server public key dan mengirimkan hasilnya ke server.
- Dari random number tersebut, kedua pihak menghasilkan key yang digunakan untuk proses enkripsi maupun dekripsi.
Cloud Computing dengan Google App Engine
Sudah sering kita dengar istilah “Cloud Computing”. Beberapa media elektronik sudah berkali – kali memberitakan hal ini, tapi apakah pembaca sekalian telah paham dengan apa yang dimaksud dengan istilah Cloud Computing ini?
Komputasi awan adalah gabungan pemanfaatan teknologi komputer (‘komputasi’) dan pengembangan berbasis Internet (‘awan’). Awan (cloud) adalah metefora dari internet, sebagaimana awan yang sering digambarkan di diagram jaringan komputer. Sebagaimana awan dalam diagram jaringan komputer tersebut, awan (cloud) dalam Cloud Computing juga merupakan abstraksi dari infrastruktur kompleks yang disembunyikannya. Ia adalah suatu moda komputasi di mana kapabilitas terkait teknologi informasi disajikan sebagai suatu layanan (as a service), sehingga pengguna dapat mengaksesnya lewat Internet (“di dalam awan”) tanpa pengetahuan tentangnya, ahli dengannya, atau memiliki kendali terhadap infrastruktur teknologi yang membantunya.
Ide awal dari Cloud Computing pada tahun 1960-an, saat John McCarthy, pakar komputasi MIT yang dikenal juga sebagai salah satu pionir intelejensia buatan, menyampaikan visi bahwa “Suatu hari nanti komputasi akan menjadi infrastruktur public; seperti listrik dan telpon”. Namun baru di tahun 1995, Larry Ellison, pendiri Oracle, memunculkan ide “NetworkComputing” sebagai kampanye untuk menggugat dominasi Microsoft yang saat itu merajai desktop computing dengan Windows 95-nya.
Komputasi awan adalah layanan komputasi berbasis internet yang memanfaatkan infrastruktur yang diabstraksi. Mengapa menggunakan infrastruktur yang diabstraksi? Kelebihan infrastruktur yang diabstraksi dari Cloud Computing adalah:
- Agar aplikasi yang dikembangkan tidak terpaku pada satu platform yang digunakan. Ketika aplikasi yang dikembangkan perlu harus berpindah tempat eksekusi (execution environment), maka pihak developer tidak terlalu banyak mengubah bagian aplikasi yang terkait dengan arsitektur. Developer hanya perlu berkonsentrasi dengan bagaimana aplikasi tersebut dapat memberikan sebuah layanan.
- Mempermudah skalabilitas. Contoh: ketika user sebuah aplikasi bertambah dan menyebabkan load yang sudah tak mampu lagi untuk ditangani server, maka perlu dilakukan proses upgrade terhadap server. Dengan menggunakan komputasi awan ini proses upgrade infrastruktur seperti server menjadi lebih mudah bila dilihat dari sisi developer karena infrastruktur tempat aplikasi dijalankan sudah terabstraksi.
Terdapat 2 pemain besar dalam layanan Cloud Computing ini. Pemain pertama adalah Amazon dengan Amazon Web Services dan Google dengan Google App Engine. Amazon merupakan pemain lama yang memulai bisnis ini dari tahun 2002, sedangkan Google dengan Google App Engine-nya (GAE) muncul sekitar tahun 2008.
Large scale, high availability application development was a dark art until the release of Google App Engine. It involved balancing (and sometimes pitting) the programmers’ skills against the application requirements and the underlying infrastructure. Google App Engine frees us, the developers, from most concernsabout the infrastructure so that we can focus on coding and delivering useful software. It empowers us to develop complex applications with a simple and elegant API, using robust programming tools like Python, and leveraging the sophisticated data storage, searching and caching technologies that helped Google to succeed. This is cloud computing made easy and it enables us to create high availability Software as a Service without excessive overhead or infrastructure worries.
Eugene Ciurana dalam bukunya Developing with Google App Engine
Apa yang menarik dari Google App Engine ini? 1: Gratis, Google menyediakan layanan ini secara cuma – cuma. Anda dapat dengan mudah mendaftar sebuah akun yang setiap akunnya akan diberi jatah sebanyak sepuluh aplikasi yang dapat anda deploy di Google App Engine. 2: Google App Engine tidak mengharuskan developer untuk melakukan setting terhadap server. Dengan demikian developer terlepas dari pekerjaan mengkonfigurasi server yang digunakan.
So, tunggu apalagi? Segera daftar dan wujudkan kreatifitasmu di Google App Engine!