Layanan Web yang aman

Keamanan penting untuk setiap lingkungan komputasi terdistribusi. Namun, keamanan menjadi semakin penting untuk layanan Web karena alasan berikut:

  1. Batas interaksi antara mitra yang berkomunikasi diharapkan meluas dari intranet ke Internet. Misalnya, bisnis semakin berharap untuk melakukan beberapa transaksi melalui Internet dengan mitra dagang mereka menggunakan layanan Web. Jelas, dari sudut pandang keamanan, komunikasi Internet jauh lebih tidak terlindungi daripada komunikasi intranet.
  2. Mitra yang berkomunikasi lebih cenderung berinteraksi satu sama lain tanpa menjalin bisnis atau hubungan manusia terlebih dahulu. Ini berarti bahwa semua persyaratan keamanan seperti otentikasi, kontrol akses, nonrepudiation, integritas data, dan privasi harus ditangani oleh teknologi keamanan yang mendasarinya.
  3. Lebih banyak interaksi diharapkan terjadi dari program ke program daripada dari manusia ke program. Oleh karena itu, interaksi antara mitra komunikasi yang menggunakan layanan Web diantisipasi menjadi lebih dinamis dan instan.
  4. Akhirnya, karena semakin banyak fungsi bisnis yang diekspos sebagai layanan Web, jumlah peserta dalam lingkungan layanan Web akan lebih banyak daripada yang telah kita lihat di lingkungan lain.

Saat ini, skema keamanan paling umum yang tersedia untuk layanan Web saat ini adalah SSL (Secure Socket Layer), yang biasanya digunakan dengan HTTP. Terlepas dari popularitasnya, SSL memiliki beberapa batasan dalam hal layanan Web. Dengan demikian, berbagai inisiatif keamanan berbasis XML sedang dikerjakan untuk memenuhi kebutuhan unik layanan Web. Artikel ini membahas skema tersebut.

Batasan SSL

Pertama, SSL dirancang untuk menyediakan keamanan point-to-point, yang kurang untuk layanan Web karena kita membutuhkan keamanan ujung-ke-ujung, di mana beberapa node perantara dapat berada di antara dua titik akhir. Dalam lingkungan layanan Web yang khas di mana dokumen bisnis berbasis XML melewati beberapa node perantara, terbukti sulit bagi node perantara tersebut untuk berpartisipasi dalam operasi keamanan secara terintegrasi.

Kedua, SSL mengamankan komunikasi di tingkat pengangkutan daripada di tingkat pesan. Akibatnya, pesan hanya dilindungi saat transit melalui kabel. Misalnya, data sensitif pada hard disk drive Anda umumnya tidak dilindungi kecuali Anda menerapkan teknologi enkripsi eksklusif.

Ketiga, HTTPS dalam bentuknya saat ini tidak mendukung nonrepudiation dengan baik. Nonrepudiation sangat penting untuk layanan Web bisnis dan, dalam hal ini, setiap transaksi bisnis. Apa itu nonrepudiation? Nonrepudiation artinya mitra komunikasi dapat membuktikan bahwa pihak lain telah melakukan transaksi tertentu. Misalnya, jika E-Trade menerima pesanan transaksi saham dari salah satu kliennya dan melakukan transaksi atas nama klien tersebut, E-Trade ingin memastikan bahwa ia dapat membuktikan bahwa ia telah menyelesaikan transaksi tersebut kepada komite arbitrase, misalnya, jika a perselisihan muncul. Kami membutuhkan beberapa tingkat nonrepudiation untuk transaksi berbasis layanan Web.

Terakhir, SSL tidak menyediakan penandatanganan dan enkripsi berdasarkan elemen. Misalnya, jika Anda memiliki dokumen XML pesanan pembelian yang besar, namun Anda hanya ingin menandatangani atau mengenkripsi elemen kartu kredit, menandatangani atau mengenkripsi hanya elemen tersebut dengan SSL terbukti agak sulit. Sekali lagi, ini disebabkan oleh fakta bahwa SSL adalah skema keamanan tingkat pengangkutan sebagai lawan dari skema tingkat pesan.

Selama beberapa tahun terakhir, industri teknologi telah mengerjakan berbagai skema keamanan berbasis XML untuk menyediakan skema keamanan yang komprehensif dan terpadu untuk layanan Web. Skema ini meliputi:

  • Tanda tangan digital XML
  • Enkripsi XML
  • XKMS (Spesifikasi Manajemen Kunci XML)
  • XACML (Extensible Access Control Markup Language)
  • SAML (Secure Assertion Markup Language)
  • WS-Security (Keamanan Layanan Web)
  • Layanan Pesan ebXML
  • Proyek Liberty Alliance

Dalam artikel ini, saya menjelaskan masing-masing inisiatif keamanan ini, mengapa masing-masing penting, dan bagaimana semuanya dapat bekerja sama.

Tanda tangan digital XML

Tanda tangan digital XML, seperti teknologi penandatanganan digital lainnya, menyediakan otentikasi, integritas data (anti-rusak), dan nonrepudiation. Dari semua inisiatif keamanan berbasis XML, upaya tanda tangan digital XML adalah yang paling jauh. W3C (World Wide Web Consortium) dan IETF (Internet Engineering Task Force) bersama-sama mengoordinasikan upaya ini. Proyek ini bertujuan untuk mengembangkan sintaks XML untuk merepresentasikan tanda tangan digital pada semua tipe data. Spesifikasi tanda tangan digital XML juga menjelaskan prosedur untuk menghitung dan memverifikasi tanda tangan tersebut.

Area penting lainnya yang menjadi alamat tanda tangan digital XML adalah kanonikalisasi dokumen XML. Kanonikalisasi memungkinkan pembuatan intisari pesan yang identik dan dengan demikian tanda tangan digital yang identik untuk dokumen XML yang ekuivalen secara sintaksis tetapi berbeda dalam tampilan karena, misalnya, jumlah spasi putih yang berbeda dalam dokumen.

Jadi mengapa tanda tangan digital XML? Tanda tangan digital XML menyediakan cara penandatanganan yang fleksibel dan mendukung beragam model transaksi Internet. Misalnya, Anda bisa menandatangani item individu atau beberapa item dari dokumen XML. Dokumen yang Anda tanda tangani dapat berupa objek lokal atau bahkan jarak jauh, selama objek tersebut dapat direferensikan melalui URI (Uniform Resource Identifier). Anda tidak hanya dapat menandatangani data XML, tetapi juga data non-XML. Tanda tangan dapat berupa amplop atau amplop , yang berarti tanda tangan dapat disematkan dalam dokumen yang ditandatangani atau berada di luar dokumen.

Tanda tangan digital XML juga memungkinkan beberapa tingkat penandatanganan untuk konten yang sama, sehingga memungkinkan semantik penandatanganan yang fleksibel. Misalnya, konten yang sama dapat ditandatangani secara semantik, ditandatangani, disaksikan, dan diaktakan oleh orang yang berbeda.

Apa itu Enkripsi XML?

W3C juga mengoordinasikan Enkripsi XML. Tujuannya adalah mengembangkan sintaks XML untuk merepresentasikan data terenkripsi dan menetapkan prosedur untuk mengenkripsi dan mendekripsi data tersebut. Tidak seperti SSL, dengan Enkripsi XML, Anda hanya dapat mengenkripsi data yang perlu dienkripsi, misalnya, hanya informasi kartu kredit dalam dokumen XML pesanan pembelian:

 Alice Smith ... ABCD SharedKey A23B45C56 8a32gh19908 1  

XKMS

XKMS adalah singkatan dari XML Key Management Specification dan terdiri dari dua bagian: XKISS (XML Key Information Service Specification) dan XKRSS (XML Key Registration Service Specification). XKISS mendefinisikan protokol untuk menyelesaikan atau memvalidasi kunci publik yang terdapat dalam dokumen XML yang ditandatangani dan dienkripsi, sementara XKRSS mendefinisikan protokol untuk pendaftaran, pencabutan, dan pemulihan kunci publik. Aspek kunci dari XKMS adalah ia berfungsi sebagai spesifikasi protokol antara klien XKMS dan server XKMS di mana server XKMS menyediakan layanan kepercayaan kepada kliennya (dalam bentuk layanan Web) dengan melakukan berbagai operasi PKI (infrastruktur kunci publik) , seperti validasi kunci publik, pendaftaran, pemulihan, dan pencabutan atas nama klien.

Sekarang mari kita bicara tentang mengapa kita membutuhkan XKMS. Untuk menjelaskannya, saya harus membahas PKI dulu. PKI terbukti penting untuk e-commerce dan layanan Web. Namun, salah satu kendala untuk adopsi PKI secara luas adalah bahwa operasi PKI seperti validasi kunci publik, registrasi, pemulihan, dan pencabutan bersifat kompleks dan membutuhkan sumber daya komputasi dalam jumlah besar, yang mencegah beberapa aplikasi dan perangkat kecil seperti ponsel untuk berpartisipasi di dalamnya. Transaksi e-commerce atau layanan Web berbasis PKI.

XKMS memungkinkan server XKMS untuk melakukan operasi PKI ini. Dengan kata lain, aplikasi dan perangkat kecil, dengan mengirimkan pesan XKMS melalui SOAP (Simple Object Access Protocol), dapat meminta server XKMS untuk melakukan operasi PKI. Dalam hal ini, server XKMS memberikan layanan kepercayaan kepada kliennya dalam bentuk layanan Web.

XACML

XACML adalah singkatan dari Extensible Access Control Markup Language, dan tujuan utamanya adalah untuk menstandarkan bahasa kontrol akses dalam sintaks XML. Bahasa kontrol akses standar menghasilkan biaya yang lebih rendah karena tidak perlu mengembangkan bahasa kontrol akses khusus aplikasi atau menulis kebijakan kontrol akses dalam berbagai bahasa. Selain itu, administrator sistem hanya perlu memahami satu bahasa. Dengan XACML, dimungkinkan juga untuk membuat kebijakan kontrol akses dari yang dibuat oleh pihak yang berbeda.

SAML

Selanjutnya adalah upaya Security Assertions Markup Language, atau SAML, yang didefinisikan oleh komite teknis layanan keamanan OASIS (Organisasi untuk Kemajuan Informasi Terstruktur). Panitia bertujuan untuk menguraikan kerangka XML standar untuk bertukar informasi otentikasi dan otorisasi.

Singkatnya, SAML adalah kerangka kerja berbasis XML untuk bertukar informasi keamanan. Sebagai kerangka kerja, ini berkaitan dengan tiga hal. Pertama, ini mendefinisikan sintaks dan semantik pesan pernyataan berenkode XML. Kedua, ia mendefinisikan protokol permintaan dan tanggapan antara pihak yang meminta dan menegaskan untuk bertukar informasi keamanan. Ketiga, ia mendefinisikan aturan untuk menggunakan pernyataan dengan transport standar dan framework pesan. Misalnya, ini mendefinisikan bagaimana pesan pernyataan SAML dapat diangkut menggunakan SOAP melalui HTTP.

Kasus penggunaan SAML

Spesifikasi SAML mengembangkan tiga skenario kasus penggunaan untuk mendorong persyaratan dan desainnya: sistem masuk tunggal, transaksi terdistribusi, dan layanan otorisasi.

Gambar 1 menunjukkan bagaimana SAML digunakan untuk mengaktifkan sistem masuk tunggal.

Misalkan pengguna masuk ke Smith.com dan diautentikasi. Nanti, pengguna yang sama mengakses Johns.com. Tanpa sistem masuk tunggal, pengguna biasanya harus memasukkan kembali informasi identitas penggunanya ke Johns.com. Di bawah skema SAML, dengan mengirimkan pesan permintaan pernyataan SAML, Johns.com dapat menanyakan Smith.com apakah pengguna telah diautentikasi. Smith.com kemudian mengirimkan kembali pernyataan pernyataan SAML yang menunjukkan bahwa pengguna sebenarnya telah diautentikasi. Setelah Johns.com menerima pernyataan pernyataan SAML, ini memungkinkan pengguna untuk mengakses sumber dayanya tanpa meminta pengguna untuk memasukkan kembali informasi identitasnya.

Gambar 2 mengilustrasikan kasus penggunaan transaksi terdistribusi.

Dalam kasus ini, katakanlah pengguna membeli mobil dari Cars.com. Pengguna yang sama kemudian memutuskan untuk membeli asuransi mobil dari Insurance.com. Sekarang, ketika pengguna pergi ke Insurance.com untuk membeli asuransi, profil pengguna seperti nama, alamat, dan riwayat kredit, yang telah dikumpulkan Cars.com, dapat diteruskan ke Insurance.com. Dalam kasus ini, Insurance.com mengirimkan permintaan pernyataan SAML, seperti, "Kirimi saya informasi profil pengguna", ke Cars.com, dan Cars.com mengirimkan semua informasi profil pengguna yang diketahuinya ke Insurance.com dalam pernyataan pernyataan SAML.

Gambar 3 menunjukkan kasus penggunaan SAML untuk layanan otorisasi.

Katakanlah seorang karyawan Works.com bernama Sang ingin memesan furnitur senilai jutaan dari Office.com, pemasok furnitur pilihan Works.com. Ketika Office.com menerima pesanan pembelian dari Sang, jelas ia ingin tahu apakah Sang berwenang untuk menyelesaikan pesanan dan, jika demikian, batas dolar maksimum yang dapat dia belanjakan. Jadi dalam skenario ini, ketika Office.com menerima pesanan pembelian dari Sang, itu mengirim pesan permintaan pernyataan SAML ke Works.com, yang kemudian mengirim kembali pernyataan SAML yang menunjukkan bahwa Sang sebenarnya diizinkan untuk memesan furnitur, tetapi maksimum jumlah yang bisa dia belanjakan adalah, 000.

Pernyataan SAML

Saya sudah menyentuh pernyataan SAML, yang merupakan dokumen XML yang berisi informasi keamanan. Secara formal, pernyataan SAML didefinisikan sebagai pernyataan fakta seseorang. Pernyataan SAML mencakup satu atau lebih dari tiga jenis pernyataan tentang subjek, yang dapat berupa manusia atau entitas program. Ketiga jenis pernyataan tersebut adalah:

  • Pernyataan otentikasi
  • Pernyataan atribut
  • Pernyataan otorisasi

Sekarang mari kita lihat setiap jenis pernyataan SAML secara lebih mendetail.

Pernyataan otentikasi

Pernyataan otentikasi pada dasarnya mengatakan bahwa otoritas penerbit (pihak yang menegaskan) menyatakan bahwa subjek S telah diautentikasi oleh sarana otentikasi M pada waktu T. Seperti yang mungkin Anda tebak, pernyataan otentikasi digunakan untuk mengaktifkan sistem masuk tunggal.

Kode 1 menunjukkan contoh pernyataan SAML yang berisi pernyataan otentikasi:

Daftar 1. Pernyataan SAML berisi pernyataan otentikasi

 (Pada waktu T) (Subjek S) //...core-25/sender-vouches