KEAMANAN WEB SERVICES


Nama : Fajar Noverdian
Nim : 10523467


Keamanan Web Service
Dalam bab ini kita akan membahas tentang teknik pengamanan terhadap web service yang kita bangun. Sebelum kita membahas lebih lanjut tentang teknik pengamanan web service, sebaiknya kita memahami beberapa konsep yang mendasarinya.

Web service adalah suatu layanan yang diberikan oleh website yang dirancang untuk mendukung interoperabilitas dan interaksi antar sistem pada suatu jaringan
Mengapa web services menjadi sangat populer saat ini? Jawabannya adalah karena web services mampu mengintegrasikan aplikasi yang berbeda platform secara lebih sederhana dan mampu memperbaiki kelemahan dari middleware konvensional.

Web services itu komponen yang independen terhadap platform ataupun bahasa. Web services menggunakan web protokol (HTTP) yang sangat mendukung heterogenoitas dan interoperabilitas serta 2
memudahkan integrasi. Selain itu web services mendukung koneksi loosely coupled, sehingga sebuah perubahan pada satu aplikasi tidak akan memaksa perubahan pada aplikasi yang lain. Sebuah
web services memiliki interface berupa web API (Application Programming Interface) yang dapat dipanggil oleh suatu aplikasi untuk mengakses aplikasi yang mengimplementasikan layanan web
services.

Interoperabilitas adalah prioritas utama sebuah enterprise dalam Enterprise Application Integration (EAI) dan Business-to-Business Integration (B2Bi).
Gambar : Heterogenoitas dan interoperabilitas web
Services

EAI dan B2Bi adalah permasalahan yang dihadapi oleh enterprise untuk mengintegrasikan berbagai macam aplikasi yang sudah ada. Web services dapat diimplementasikan sebagai komponen yang mendukung komunikasi antar aplikasi dalam enterprise.
Web Services Security Specification
Saat web services menggunakan secure connection seperti Secure Sockets Layer (SSL) atau Transport Layer Security (TLS) membangun koneksi end to end yang aman tidak akan sulit [9]. Akan tetapi jika terdapat perantara pada komunikasi Tugas Membuat Makalah Mata Kuliah IF5054 Kriptografi 3 tersebut, maka dibutuhkan protokol yang memiliki tingkat keamanan yang tinggi. Berikut adalah spesifikasi dari keamanan web services. Spesifikasi berikut termasuk message security model (WS-Security) yang memberikan dasar bagi spesifikasi yang lain [13]. Kemudian diatasnya terdapat lapisan khusus yang menangani masalah policy, yaitu WS-Policy, WS-Trust dan WSPrivacy. WS-Policy mendeskripsikan
kemampuan dan batasan dari keamanan, WS-Trust mendeksripsikan frameworkyang digunakan, dan WS-Privacy mendeskripsikan model privasi untuk web services.Lapisan tersebut memberikan fondasi untuk keamanan WS-Security.

WS-Security
SOAP Fondation
Gambar : Spesifikasi web services security

Web Service Security
Web Services Security (WS-Security) merupakan model pengamanan pesan SOAP yang menjadi dasar bagi web services security specification lainnya. WSSecurity berurusan dengan integritas pesan dan kerahasiaan isi pesan SOAP. Selain itu, WS-Security juga mengatur caramenyisipkan security token dalam pesan SOAP dalam bentuk plain teks maupun dalam bentuk biner (seperti sertifikat X.509).
WS-Security didesain sefleksibel mungkin terhadap tipe security token yang
dapat disisipkan. WS-Security menyediakan keamanan pada pesan SOAP tanpa mempedulikan bagaimana pesan tesebut disalurkan ke penerima. WS-Security dibangun berdasarkan teknologi-teknologi yang sudah ada sebelumnya. Dua teknologi yang menjadi pondasi utama WS-Security adalah XML
Signature dan XML Encryption. XML Signature berperan dalam menjaga integritas pesan SOAP, sedangkan XML Encryption lebih berperan dalam menjaga kerahasiaan isi pesannya. XML Signature dapat juga dikombinasikan dengan SecurityToken.

Web Services Policy (WS-Policy)

WS-Policy menyediakan cara bagi penyedia web services untuk mendeskripsikan kebutuhan dan
kemampuan yang harus dimiliki suatu client untuk mengakses web services yang
disediakannya. Kebutuhan akan WS-Policy dipicu dari kebutuhan kemanan. Sebagai contoh, untuk mengetahui apakah suatu web services membutuhkan masukan kunciprivat dari client, suatu client dapat melihat WS-Policy yang dimiliki web services tersebut. Dalam kaitannya dengan WS-Security,
beberapa hal yang menjadi peranan WSPolicy yaitu mendeskripsikan kepada client: 1. Perlu tidaknya masukan security token dengan tipe tertentu 2. Perlu tidaknya pesan didekripsi dan
dimana lokasi kunci 3. Ada tidaknya mekanisme terkait signature Saat ini, belum ada spesifikasi yang baku mengenai WS-Policy. Sebagian pihak mencoba mengimplementasikan WS-Policy sebagai bagian tambahan dalam WSDL. Namun, banyaknya aspek yang terkait dengan WS-Policy(WS-Policy bisa dibuat berbeda untuk setiap pesan yang ada dalam satu buah web services) menyebabkan WSPolicy akan menjadi begitu besar dan dinamis sehingga kemungkinan akan berdiri sendiri sebagai pengganti WSDL yang spesifikasinya sudah ada saat ini.

Web Services Trust (WS-Trust)

WS-Trust mendeskripsikan model untuk membentuk kepercayaan dalam hubungan langsung maupun tidak langsung (melibatkan pihak ketiga). Spesifikasi WSTrust akan menggambarkan bagaimana kepercayaan (trust) langsung pada pihak tertentu dapat digunakan sebagai dasar kepercayaan bagi pihak lain. Model sekuriti 8 Tugas Membuat Makalah Mata Kuliah IF5054 Kriptografi yang didefinisikan dalam WS-Trustdidasarkan pada sekumpulan data yang disediakan oleh request yang masuk (sebagai contoh yaitu nama, kunci,dan  permission). Jika suatu request sampai tanpa data tersebut, service akan
mengabaikan atau menolak request tersebut. WS-Trust ditujukan supaya pihak yang menggunakan web services benarbenar pihak yang mempunyai kewenangan. Model WS-Trust sangat mirip dengan
model Public Key Infrastructure (PKI). Pihak yang melakukan request (selanjutnya disebut requestor) dapat membuktikan bahwa ia dapat dipercaya dengan menyisipkan security token milik pihak lain
yang terpercaya dan signature yang membuktikan bahwa security token benarbenar dimiliki oleh pihak yang terpercaya. Jika requestor tidak memiliki token yang dibutuhkan, ia dapat menghubungi Security
Token Service untuk mendapatkan token yang dimaksud. Pada sisi pemberi web services, pemeriksaan kewenangan requestor dilakukan dengan langkah-langkah sebagai berikut:

1.      Verifikasi bahwa isi security token yang dimasukkan cocok dengan WSpolicy tertentu yang disediakan

2.      Verifikasi bahwa security token yang disediakan oleh requestor sesuai  dengan signature.


3. Lakukan verifikasi terhadap pihak yang memberikan security token pada requestor. Proses ini bisa dilakukan dengan melakukan pemeriksaan terhadap security token pihak pemberi. Mekanisme verifikasi serupa dengan mekanisme PKI. Proses verifikasi dapat dilanjutkan sampai pada level root atau sampai pihak yang dipercaya sebagai pemberi security token. Jika seluruh verifikasi ini berhasil, barulah request diproses oleh pemberi service. Sebagai catatan, pemberi security token bisa saja merupakan layanan web services lain, sehingga proses verifikasi dapat dilakukan sepenuhnya oleh mesin tanpa intervensi manusia.

Web Services Privacy

Siapapun yang membuat atau memanfaatkan sebuah komponen web services harus mendeklarasikan kebijakan privasinya [13]. Untuk mendefinisikan kebutuhan privasi, terlebih dahulu harus
didefinisikan tipe data yang terlibat [16]. Kebijakan privasi dideklarasikan pada WSPrivacy.
WS-Privacy bertujuan untuk meyakinkan privasi dengan merekomendasikan kebijakan accesscontrol
pada atribut informasi [12]. Dengan menggunakan kombinasi dari WSPolicy, WS-Security, and WS-Trust kita dapat mendeklarasikan kebijakan privasi kita. Spesifikasi ini akan menjelaskan pemodelan tentang penyertaan privacy language dalam deskripsi WS-Policy dan bagaimana WS-Security dapat digunakan
untuk mengasosiasikan klaim pada sebuah pesan. Akhirnya spesifikasi ini akan mendeskripsikan bagaimana mekanisme WS-Trust dapat digunakan untuk mengevaluasi klaim privasi untuk kedua
pihak yang berhubungan dengan menggunakan web services.


Menjaga Integritas SOAP dengan XML Signature dan Security Token

Integritas pesan SOAP berarti penerima pesan SOAP dapat memastikan bahwa pesan yang diterimanya benar-benar berasal dari pihak tertentu tanpa ada perubahan sedikitpun pada isi pesannya. Dalam WSSecurity, integritas pesan SOAP dijaga menggunakan XML Signature yang terkadang dilengkapi juga dengan security token.
XML Signature merupakan implementasi digital signature dalam XML. XML Signature digunakan dalam
WS-Security, sebab pesan SOAP pada dasarnya merupakan sebuah dokumen XML. Prinsip yang digunakan dalam membuat XML Signature secara umum 4 Tugas Membuat Makalah Mata Kuliah IF5054 Kriptografi sama dengan prinsip pembuatan digital signature.
Proses untuk membangkitkan XML Signature dibagi menjadi dua komponen, yakni pembangkitan reference dan \pembangkitan signature:












Keamanan Informasi (Information Security)
Web service akan selalu berhubungan dengan informasi. Keberadaan web service hanyalah sebagai alternatif yang berfungsi sebagai salah satu alat bantu dalam proses pengolahan informasi. Sedangkan proses pengolahan informasi itu sendiri selalu berkaitan dengan keamanan.
Keamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity) dan ketersediaan informasi (availability) dalam suatu organisasi, dan dicapai dengan kombinasi komponen yang baik, desain arsitektural yang baik, serta perlakuan yang teliti dalam pusat pengelolaannya.
Keamanan informasi bertanggung jawab pada tiga hal, yaitu:
  • Confidentiality, adalah suatu jaminan bahwa informasi hanya dapat digunakan secara bersama oleh organisasi atau orang yang diberi hak.
  • Integrity, adalah jaminan bahwa informasi adalah asli dan lengkap serta dapat dipercaya ketepatan  tujuannya.
  • Availability, adalah jaminan bahwa sistem yang bertanggung jawab pada pengiriman, penyimpanan dan pengolahan informasi dapat diakses ketika dibutuhkan.



Mekanisme Keamanan Informasi
Dikarenakan tidak ada peralatan tunggal yang dapat memelihara integritas informasi, maka penting untuk menempatkan empat mekanisme keamanan dalam struktur kinerja yang berlapis. Empat mekanisme tersebut adalah:
·         Otentikasi user
·         Enkripsi data
·         Penyaringan paket jaringan
·         Kendali akses fisik
Prinsip keamanan yang baik adalah “defense in depth” atau pertahanan yang sungguh-sungguh mendalam. Jangan pernah bersandar pada mekanisme keamanan tunggal dan meletakkannya dalam desain berlapis sehingga seorang hacker dapat masuk melalui salah satu lapisan dan melakukan serangannya.
Sebagai contoh, penyaringan paket yang menghalangi akses dari alamat jaringan luar dapat mencegah akses dari seorang penyerang yang telah mencuri password otentikasi. Enkripsi data dapat melindungi kerahasiaan informasi bahkan ketika penyerang menyadap kabel jaringan dengan cara mengalahkan mekanisme kendali akses fisik.
Otentikasi user, adalah mekanisme yang dirancang untuk mengidentifikasi user secara unik, menempatkan user pada hak akses informasi yang sesuai, dan menjejaki aktifitas mereka. Otentikasi pada umumnya dilakukan dengan meminta kunci akses (dapat berupa username, password, informasi biometric, kartu pengenal, ataupun smart card) dan menentukan hak akses mereka.
Enkripsi data, adalah mekanisme yang melakukan proses penyandian data untuk mencegah pihak yang tidak diberi hak untuk melihat, mengamati, dan memodifikasi informasi. Mekanisme ini memiliki sasaran untuk melindungi integritas dan kerahasiaan informasi, bahkan ketika data yang disandikan itu melewati jalur media yang tidak aman (seperti internet). Enkripsi data bekerja sedemikian sehingga hanya penerima yang dituju yang dapat membaca data tersebut dengan menggunakan suatu algoritma dan kunci enkripsi. Sebagai contoh, suatu sesi terminal remote yang menggunakan secure-shell SSH melakukan enkripsi data dengan menggunakan algoritma DES.
Penyaringan paket jaringan, adalah mekanisme pengamanan pada level jaringan yang dapat dilakukan pada router dan gateway dengan menganalisis header dari paket IP, kemudian mengizinkan atau menolak pengiriman paket berdasarkan pada alamat sumber, alamat tujuan, tipe protokol, nomor port TCP, panjang paket dan sebagainya. Mekanisme ini berguna untuk mencegah akses bahkan sebelum penyerang dihadapkan pada otentikasi terhadap sistem yang dituju. Firewall adalah alat yang melakukan penyaringan paket dan melakukan analisis terhadap paket tersebut untuk menentukan apakah diizinkan atau ditolak. Gambar di bawah ini mengilustrasikan mekanisme pengamanan paket pada level jaringan:


Gambar  Sebuah firewall pada level jaringan

Kendali akses fisik, adalah mekanisme pengamanan yang paling mendasar. Mekanisme ini mencegah pencurian data yang dilakukan penyerang dengan cara mengakses langsung pada peralatan fisik. Sebelum mengeluarkan banyak biaya untuk mengamankan data terhadap ancaman yang berasal dari jaringan, pastikan untuk mengendalikan keamanan akses fisik ke server kritis dan infrastruktur jaringan.

Otentikasi SOAP
Teknik pengamanan web service dengan menggunakan otentikasi SOAP merupakan metode yang cukup sederhana. Proses otentikasi SOAP dilakukan dengan cara menyisipkan suatu informasi pada pesan SOAP yang menggambarkan bahwa suatu pesan SOAP memiliki keaslian tersendiri yang bersifat unik dari suatu client tertentu yang meminta layanan. Informasi yang disisipkan ini berisi data otentikasi dari client yang mengajukan request. Informasi tersebut merupakan data otentikasi SOAP request yang berupa username dan password.
Berikut ini adalah langkah-langkah yang diterapkan dalam proses otentikasi SOAP:
1.   Client menyusun sebuah paket SOAP request dalam sebuah SOAP envelope
2.   Client menyisipkan sebuah data informasi otentikasi ke dalam struktur SOAP request tersebut
3.   Client mengirimkan SOAP request melalui protokol HTTP  ke aplikasi server (web service provider)
4.   Server menerima pesan SOAP resquest kemudian melakukan parsing
5.   Server mendapatkan data informasi otentikasi dari pesan SOAP request
6.   Server mencocokkan data informasi otentikasi dengan database server
7.   Apabila data informasi otentikasi sesuai, maka server menangani request, jika tidak server akan menolak request
8.   Server mengirimkan pesan SOAP response kepada client berikut informasi tentang status otentikasi.
Dalam menerapkan otentikasi SOAP, aplikasi server membutuhkan suatu database yang berfungsi untuk menyimpan data-data semua client yang berhak untuk mengakses layanan yang tersedia. Dengan demikian hanya client yang terdaftar dalam database tersebut yang berhak untuk mengkonsumsi layanan. Teknik pengamanan ini bertujuan untuk mencegah para hacker mengirimkan SOAP request yang berisi instruksi-instruksi ataupun data yang dapat merugikan server.


Bagaimana Otentikasi SOAP Dilakukan?
Selanjutnya kita akan membahas tentang bagaimana otentikasi SOAP ini dilakukan. Sebelum membahasnya kita perhatikan kembali struktur standar dari suatu pesan SOAP:












Gambar  Struktur paket pesan SOAP

Pada struktur pesan SOAP di atas, kita melihat terdapat dua elemen utama SOAP yaitu Header dan Body. Elemen header merupakan elemen yang bersifat opsional yang berisi data-data tambahan yang dapat digunakan oleh server untuk keperluan khusus. Elemen body merupakan elemen pokok yang harus ada dalam suatu pesan SOAP, elemen ini berisikan muatan data pesan induk dari SOAP itu sendiri.
Ada 2 alternatif tempat untuk meletakkan data informasi otentikasi pesan SOAP, yaitu pada elemen header atau pada elemen body. Apabila proses penyusunan suatu pesan SOAP membutuhkan mekanisme pengkodean isi (misalnya enkripsi ataupun kompresi) terhadap pesan yang terdapat dalam elemen body, maka tidak mungkin meletakkan data otentikasi ke dalam elemen body SOAP. Sebagai contoh, jika suatu server menerima pesan SOAP yang elemen body-nya telah dienkripsi atau dikompresi, nantinya server perlu mengetahui data informasi otentikasi yang dipakai untuk menentukan status keotentikan pesan SOAP tersebut. Tidak mungkin menanam informasi mengenai keotentikan suatu pesan SOAP ke dalam elemen body karena isinya sendiri akan dienkripsi atau dikompresi. Maka solusinya adalah lebih tepat untuk menempatkan informasi otentikasi ke dalam elemen header pesan SOAP.
            Terdapat beberapa penggunaan terhadap elemen header SOAP, beberapa di antaranya adalah:
  • Otentikasi. Server dapat meminta pengirim untuk mengotentikkan dirinya sendiri sebelum pesan diproses.
  • Informasi pernyataan keamanan. Jika penerima memerlukan jaminan bahwa isi pesan belum berubah, pengirim dapat menandatangani tubuh pesan secara digital dan menempatkan hasilnya ke dalam header.
  • Informasi routing. Jika pesan tersebut perlu dirunut ke banyak tujuan, tujuan dan urutannya dapat dimasukkan ke dalam header.
  • Transaksi. Penerima mungkin menjalankan sejumlah aksi dalam lingkup transaksi pengirim.
  • Informasi pembayaran. Jika penerima pesan menyediakan layanan ke client berdasarkan biaya per pemakaian, informasi yang diperlukan untuk menarik pembayaran dapat ditanamkan dalam header-nya.

Setelah kita memahami dasar-dasar pemahaman tentang proses otentikasi pesan SOAP, sekarang kita akan membahas tentang teknik pemrograman yang menerapkan kemanan web service dengan menggunakan otentikasi SOAP.
NuSOAP toolkit sampai pada versi terakhir (v1.9.5) pada saat buku ini ditulis belum menyediakan fasilitas otentikasi SOAP. Oleh karena itu kita akan melakukan sedikit modifikasi terhadap class library NuSOAP dengan menambahkan satu fungsi untuk menyisipkan data informasi otentikasi ke dalam elemen header SOAP dan beberapa penambahan rutin program dalam class tersebut.
Fungsi yang digunakan untuk menyisipkan data informasi otentikasi ini ke dalam header SOAP diletakkan pada class “soapclient”. Fungsi tersebut diberi nama “SetSOAPSecurityHeader”, berikut ini adalah kode programnya:



function SetSOAPSecurityHeader ($username=false,$password=false)
{
            $auth = (
                        "<wsse:Security>".
                        "<wsse:UsernameToken>".
                        "<wsse:Username>$username</wsse:Username>".
                        "<wsse:Password>$password</wsse:Password>".
                        "</wsse:UsernameToken>"
"</wsse:Security>"
);
            return $auth;
}

 
 






Gambar  Fungsi untuk menyisipkan header security pesan SOAP














Data informasi otentikasi di atas memiliki root elemen yang diberi nama “UsernameToken”. Sub elemen “username” dan “password” digunakan untuk menempatkan item data otentikasi pesan SOAP. String otentikasi yang dihasilkan kemudian disisipkan kedalam header pesan SOAP yang akan dikirim. Sehingga paket pesan SOAP yang akan dikirim akan menghasilkan format paket SOAP berikut ini:

 
















Gambar  Format string elemen header SOAP
Perhatikan kode di atas, elemen header yang berisi data informasi otentikasi disisipkan ke dalam pesan SOAP.
Enkripsi SOAP
Web service sebagai tool alternatif dalam sistem terdistribusi melakukan kinerjanya dengan menggunakan SOAP dalam mekanisme HTTP GET dan HTTP POST. Pada prinsipnya SOAP merupakan sebuah teks murni dalam format XML yang seringkali berisikan informasi-informasi yang sensitif yang harus dilindungi. Satu-satunya cara untuk melindungi data tersebut adalah dengan melakukan penyandian (enkripsi) terhadap informasi tersebut.
Pada penjelasan sebelumnya, telah dijelaskan tentang mekanisme keamanan yang diterapkan dengan menambahkan data informasi otentikasi ke dalam elemen header SOAP. Selanjutnya kita akan membahas sebuah mekanisme keamanan web service lebih lanjut, yaitu dengan melakukan enkripsi baik pada elemen header maupun elemen body pada struktur pesan SOAP.

                   http://narenda.mvps.org
                   www.unsri.ac.id



SELESAI





SILAHKAN COPY JIKA ARTIKEL INI MENARIK NAMUN HARAP CANTUMKAN SUMBERNYA




Artikel terkait:

{ 0 komentar... read them below or add one }

Posting Komentar

terima kasih telah berkunjung sobat.
Silahkan komentar,kritik dan sarannya
setidaknya tegur sapa.heheh