Model Kepercayaan dalam Sistem – Part 1: Trust Model dan Rantai Kepercayaan (Chain of Trust)
Keamanan itu dibangun di atas kepercayaan (trust). Karena tanpa kepercayaan, kita akan selalu merasa tidak aman. Sederhananya begitu. Nah dalam sistem komputer, model kepercayaan atau trust model ini juga diterapkan untuk menjamin keamanan informasi yang berlangsung di dalamnya. Banyak sekali macam trust model ini dan mungkin di sini bisa kita bahas sedikit tentang trust model dan aplikasinya di teknologi komputer.
Apa Sih Esensi dari Trust Model
Trust model ini adalah bagaimana kita mendefinisikan kepercayaan terhadap suatu informasi atau kebenaran yang kita peroleh. Prinsipnya sama seperti hubungan interaksi antar manusia. Kita ke masing-masing manusia memerlukan kepercayaan untuk berinteraksi. Dari kepercayaan tersebut, kita bisa membuat pertimbangan apakah informasi yang kita peroleh itu benar atau tidak.
Ini berlaku di segala macam hal yang berkaitan dengan kehidupan kita. Contoh sederhananya: kita mempercayai guru kita karena kita menganggap mereka lebih berilmu. Atau bisa juga, kita percaya akan adanya Tuhan karena kita percaya bahwa kitab suci mengatakan seperti itu. Atas dasar kepercayaan itu, kita menerima informasi tersebut sebagai kebenaran. From trust, we accept truth. Tapi apakah itu the real truth? Mungkin kalau analogi tentang Tuhan tampak terlalu rancu untuk jadi contoh konkrit tentant trust model di dunia komputer. Tapi kita akan kembali lagi ke analogi soal Tuhan ketika kita membahas trust model di bidang keamanan komputer.
Kalau di dunia komputer, semua informasi itu harus bisa dihitung dan dibuktikan melalui matematika. Matematika itu adalah layaknya ayat suci dari ilmu komputer. Aturan-aturan matematis tersebut bisa dibentuk untuk melakukan pemodelan kepercayaan yang berguna dalam membentuk kepercayaan dan kebenaran atas informasi yang berada dalam suatu sistem komputer. Dasar ilmu matematika yang digunakan di sini adalah matematika diskret, di mana kita bisa memodelkan logika matematika dan logika pembuktian. Selain itu, ilmu tentang bilangan (number theory) juga menjadi topik penting yang digunakan untuk pembentukan trust model ini. Makin dalam lagi ada namanya Metode Formal di mana kita menggunakan aturan-aturan baku tersebut untuk melakukan verifikasi dan validasi alur berpikir kita apakah sudah sesuai dengan logika matematis yang tepat.
Dengan kita merancang trust model, kita bisa membuat suatu sistem yang memberikan jaminan kepercayaan atau confidence of trust terhadap suatu informasi atau truth. Dan dalam ilmu komputer, confidence-nya itu kita buktikan dengan verifikasi matematis. Percaya atau engga, ilmu kriptografi sendiri berdiri di atas trust model yang berbasiskan asumsi-asumsi juga. Tapi asumsi yang diberikan itu dianggap dapat ditolerir, atau kita menyebutnya sebagai negligible. Kita akan kembali ke sini lagi nanti.
Rantai Kepercayaan (Chain of Trust)
Rantai kepercayaan atau chain of trust adalah salah satu trust model yang paling sering dipakai di dunia komputer. Analoginya mungkin bisa diberi contoh seperti ini:
Ani percaya sepenuhnya kepada Cita. Cita menjamin bahwa Budi selalu berkata jujur. Oleh karena itu, Ani percaya bahwa Budi selalu berkata jujur.
Budi meyakini bahwa Doni itu baik, lalu memberitahukannya kepada Ani
Ani menerima informasi bahwa Doni itu baik dari Budi. Karena Ani mempercayai Budi, maka Ani yakin bahwa Doni itu baik. Sehingga Ani menerima kebenaran bahwa Doni itu baik.
Sederhananya, kita menerima informasi sebagai kebenaran setelah kita memiliki kepercayaan terhadap pihak yang memberi informasi tersebut. Dan informasi tersebut mengalir dari sumbernya hingga ke titik akhir yang membutuhkan informasi tersebut. Ketika hubungan informasi antara dua subyek (Ani, Budi, Cita) didasari atas suatu kepercayaan, maka informasi tersebut dianggap sebagai kebenaran ketika sampai ke penerima terakhirnya.
Untuk memodelkan trust model seperti ini, terdapat beberapa pertanyaan yang timbul:
- Bagaimana cara sumber informasi untuk membuktikan bahwa informasi itu benar-benar berasal dari dia. Dalam hal ini, bagaimana Budi memberikan informasi bahwa Doni itu baik kepada Ani
- Bagaimana cara salah satu pihak membuktikan dirinya bahwa dia diberikan kepercayaan untuk memberikan informasi yang benar. Dalam hal ini, bagaimana Budi membuktikan kepada Ani bahwa Cita menjamin jika Budi itu jujur.
- Bagaimana cara penerima informasi untuk membuktikan bahwa informasi yang dia terima itu benar atau legit. Dalam hal ini, bagaimala Ani membuktikan bahwa informasi tentang Doni benar berasal dari sumber yang dipercaya.
Kalau di dunia nyata, kita bisa memberikan tanda persetujuan kita atau bukti approval kita menggunakan tanda tangan. Konsep inilah yang ditiru di dunia ilmu komputer menggunakan bantuan teknik-teknik matematika. Kita berusaha memodelkan suatu mekanisme di mana kita bisa membubuhkan “tanda tangan virtual” ke setiap informasi yang kita sebarkan. Tanda tangan, atau dikenal sebagai signature ini digunakan sebagai pembuktian bahwa informasi yang saling ditransmisikan adalah bersumber dari sumber yang benar.
Assymetryc/Public-Key Cryptography, Signature, dan Identitas
Ilmu kriptografi di matematika menemukan cara untuk saling membubuhkan tanda tangan yang bisa digunakan sebagai verifikasi keabsahan dari informasi. Teknik signature ini menggunakan assymetric cryptography atau public-key cryptography. Selain untuk melakukan enkripsi atau penyandian data, public-key cryptography ini juga sangat penting digunakan untuk membuat signature. Bahkan, public-key cryptography ini jauh lebih sering digunakan untuk membuat signature dibandingkan untuk enkripsi itu sendiri.
Dalam public-key cryptography, ada dua kunci atau key yang terlibat dalam penghitungannya: Public Key atau Kunci Umum, di mana kunci ini bisa disebar dan diumumkan ke siapapun; Private Key atau Kunci Pribadi, di mana kunci ini hanya untuk pemiliknya saja. Kedua kunci ini adalah selalu berpasangan dan tidak dapat dipisahkan. Untuk kasus enkripsi, khalayak umum yang ingin mengirimkan informasi bisa menyandikan informasi tersebut menggunakan public key yang ada. Informasi yang sudah disandikan hanya bisa dibuka kembali oleh pemilik dari private key. Tanpa private key, informasi tersebut tidak bisa kita baca atau kembalikan menjadi informasi aslinya.
Dalam kebutuhan untuk menciptakan signature, proses yang berlangsung adalah kebalikan dari tahapan enkripsinya. Misalnya ada suatu pihak yang ingin memberikan informasi legit dan ingin mempertahankan bahwa informasi itu benar berasal dari dia. Maka, informasi tersebut kita bubuhkan signature menggunakan private key dia. Lalu penerima informasinya bisa membuktikan bahwa informasi itu benar dari yang bersangkutan apabila signature-nya bisa diverifikasi melalui public key dari orang yang memberi informasi tersebut.
Dengan kata lain, pasangan public-private key itu dapat kita gunakan untuk membuktikan identitas dari masing-masing pihak yang terlibat. Siapapun yang memiliki public-key dari Cita, maka dia dapat membuktikan keabsahan segala informasi yang ditandatangani oleh Cita. Selain itu, Cita dapat membuktikan dirinya sendiri karena Cita memiliki private-key yang merupakan pasangan dari public-key yang beredar tersebut.
Sertifikat Sebagai Bukti Identitas
Kalau di dunia nyata, kita punya identitas seperti KTP. Di KTP kita biasanya ada tanda tangan kita sebagai pemegang identitas tersebut. Misalnya kita pergi ke bank dan melakukan transaksi, biasanya kita akan diminta kartu identitasnya, lalu tanda tangan di form perbankan yang kita isi dicocokkan dengan yang tertera di kartu identitas kita.
Prinsipnya sama dengan identitas dijital. Di dunia dijital (bukan dunia Digimon lho ya), bukti keabsahan identitas ini bisa kita buktikan dengan menggunakan sertifikat. Sertifikat ini dapat kita sebar ke siapapun yang perlu untuk menjalin hubungan kepercayaan antara kedua belah pihak. Pada contoh sebelumnya, Ani perlu membuktikan informasi yang dia peroleh berasal dari Budi. Oleh karena itu, Budi harus memberikan sertifikatnya kepada Ani, dan Ani akan menggunakan sertifikat itu untuk mengecek semua informasi yang diklaim berasal dari Budi.
Sertifikat itu berisi dari public-key dari pemilik sertifikatnya. Public-key inilah yang digunakan untuk memverifikasi keabsahan informasi yang diklaim berasal dari identitas tersebut. Dari contoh di atas, sertifikat Budi yang dimiliki oleh Ani menganding informasi public-key dari Budi. Ketika Budi mengirimkan informasi kepada Ani, Budi “membubuhkan tanda-tangan” di informasi dia dengan menggunakan private-key miliknya. Karena Ani tahu (atau tepatnya berasumsi) bahwa hanya Budi yang memegang private-keynya, maka informasi tersebut benar adanya berasal dari Budi.
Membuktikan Pemberian Kepercayaan (Delegasi) Dari Otoritas Yang Lebih Tinggi
Kalau di dunia nyata kita mengenal ijazah. Ijazah kita ditandatangani oleh otoritas kampus kita. Tapi siapa yang membuktikan kalau kampus kita itu legal dan kampus benaran, bukan kampus abal-abal atau kampus palsu? Di Indonesia ada Direktorat Jenderal Pendidikan Tinggi (Dikti) yang memberikan pendelegasian kepada masing-masing kampus yang diakui untuk menerbitkan ijazah dan memberikan gelar kepada lulusannya. Karena ada pendelegasian ini, kita bisa tahu bahwa sertifikat ijazah yang diterbitkan oleh suatu universitas adalah benar karena universitas tersebut diakui oleh Dirjen Dikti.
Prinsipnya lagi-lagi sama dengan dunia ilmu komputer. Kita bisa aja bikin sertifikat yang mengklaim bahwa diri itu kita. Kita bisa bikin sendiri kita tanda tangani sendiri. Tapi apakah sertifikat tersebut sertifikat yang berharga? Apa yang bisa kita buktikan dari sertifikat yang kita tandatangani sendiri? Oleh karena itu, kita memerlukan otoritas yang membuktikan bahwa kita adalah orang yang tepat dan benar.
Kalau dari contoh Ani Budi Cita sebelumnya, Budi mendapat kepercayaan dari Cita, dan Ani mempercayai Cita. Untuk membuktikannya, sertifikat Budi harus ditandatangani oleh Cita sehingga Budi bisa mendapat kepercayaan dari Ani. Ani bisa membuktikan kebenaran kepercayaan yang diberikan Cita kepada Budi tersebut melalui tanda tangan yang diberikan oleh Cita di sertifikat milik Budi. Untuk mengeceknya, tentu Cita juga harus mengumumkan sertifikat milik dia sendiri sehingga Ani juga bisa memvalidasinya.
Root of Trust – Pangkal dari Kepercayaan
Kalau begitu, siapa dong yang memberikan kepercayaan kepada Cita? Tidak ada. Itulah namanya root-of-trust. Root of trust adalah pangkal dari semua kepercayaan yang didelegasikan. Semua pendelegasian trust harus semuanya berujung kepada suatu root-of-trust. Kita mempercayai dan mengasumsikan sepenuhnya bahwa root-of-trust itu selalu benar. Tidak ada sanggahan atasnya. Sehingga, sertifikat yang berada pada tingkatan root-of-trust selalu ditandatangani oleh dirinya sendiri.
Lantas, root-of-trust itu adalah Tuhan dong? Iya, bisa dianalogikan seperti itu. Kembali pada paragraf awal di mana gue menyebutkan Tuhan sebagai analogi dari sebuah trust model, pemodelan chain-of-trust ini merepresentasikan konsep yang serupa dimana semua kebenaran selalu ada ujungnya yang berupa kebenaran absolut.
Dalam ilmu komputer, kita memvalidasi informasi sebagai kebenaran itu dengan cara memverifikasi seluruh rantai kepercayaan yang disebutkan melalui sertifikat yang kita terima, dan ujung dari validasi tersebut harus selalu berujung di sertifikat milik root-of-trust. Apabila kita tidak bisa memvalidasi rantai tersebut, maka informasi atau sertifikat tersebut adalah bodong. Inilah kenapa trust model ini disebut sebagai chain-of-trust, karena kita memodelkan kepercayaan tersebut seperti layaknya rantai.
Implementasi di Dunia Komputer
Pemodelan kepercayaan menggunakan chain-of-trust ini utamanya digunakan untuk membuktikan identitas dari suatu alamat website. Ini membantu web browser untuk mendeteksi apakah kita benar-benar berkomunikasi dengan web server yang benar, dan komunikasi kita 100% terjamin kerahasiaannya. Pada browser yang bisa memvalidasi identitas servernya, tanda gembok akan muncul. Kalau kita klik di situ, akan tertera bahwa koneksi kita dijamin aman. Kalau kita tekan tombol di sampingnya, kita bisa lihat siapa yang memverifikasinya. Lalu kita juga bisa melihat detil isi sertifikatnya di sana.
Pada sertifikat Twitter contohnya, sertifikat dia ditandatangani oleh DigiCert Server CA. Informasi yang tertera di sertifikat Twitter juga mengindikasikan informasi pemilik sertifikat, seperti nama perusahaan, lokasi dan negara. Lalu, sertifikat DigiCert Server CA ditandatangani oleh DigiCert Root CA. Sertifikat inilah yang menjadi root-of-trust dari validasi sertifikat milik Twitter. Karena browser berhasil memvalidasi sertifikat tersebut hingga ke root-of-trust, maka komunikasi yang terjalin antara browser dan server tersebut dijamin berasal dari Twitter langsung tanpa cela.
Browser atau sistem operasi biasanya sudah memiliki koleksi sertifikat root-of-trust dari “para absolute truth”. Ini memang sudah menjadi ketetapan para pembuat sistem operasi untuk menanamkan kebenaran absolut pada komponennya masing-masing. Di Windows kita bisa melihat daftar sertifikat ini melalui Control Panel. Di Linux, semua file sertifikat root-of-trust disimpan di folder /etc/ssl/certs/.
Sertifikat yang menjadi root-of-trust itu biasanya diterbitkan oleh entitas-entitas besar seperti DigiCert, GoDaddy, IdenTrust, dan lain sebagainya. Entitas tersebut disebagai sebagai Certificate Authority (CA). Sertifikat mereka dijadikan sebagai kebearan absolut atas dasar kepercayaan dari keamanan mereka. Para pembuat sistem operasi memberikan trust kepada entitas-entitas tersebut sehingga entitas tersebut selalu diintegrasikan dengan sistem operasi yang dipublikasi dan di-install di semua tempat. Bisa dibilang juga, pengembang sistem operasi mendoktrin sistem operasinya untuk mempercayai kebenaran absolut dari root-of-trust tersebut sejak lahirnya sistem operasi. Sama kayak agama lah. Hahaha.
Bagaimana Keamanannya?
Karena atas dasar kepercayaan, semua keamanannya bergantung dari keamanan yang memiliki private-key dari sertifikat root-of-trust tersebut. Entitas besar tersebut biasanya mengamankan private-key dari root-of-trust di lokasi yang bahkan tidak bisa diakses melalui internet. Ini untuk memastikan bahwa private-key tidak bisa di-compromise tanpa langsung bersentuhan fisik dengan perangkat yang menyimpan private-key tersebut. Semua akses ke private-key tersebut, seperti untuk menandatangani sertifikat-sertifikat penting harus teraudit dan terekam.
Nah karena pentingnya keamanan dari private-key yang jadi semacam master password ini, CA menerbitkan sertifikat penengah, atau intermediate certificate untuk kebutuhan transaksi sehari-hari. Fungsi intermediate certificate ini kurang lebih sama seperti broker. Dia menjadi penghubung validasi dari root-of-trust ke trusted entity atau orang yang divalidasi keabsahannya. Oleh karena itu, sertifikat dari trusted entity tidak perlu untuk ditandatangani oleh root-of-trust karena pemberian kepercayaannya sudah didelegasikan kepada intermediate certificate itu. Ini untuk memperkecil area serangan (attack surface) terhadap private-key dari root-of-trust yang akan sangat-sangat berbahaya jika itu bocor.
Kalau private-key milik root-of-trust bocor, maka konsekuensinya semua kepercayaan yang diberikan oleh rantai root-of-trust tersebut tidak lagi bisa dipercaya. Hal ini berdampak kepada semua sertifikat yang terhubung kepada root-of-trust tersebut menjadi tidak valid lagi. Oleh karena itu, penggunaan intermediate certificate menjadi sangat penting. Selain itu, masa berlaku sertifikat root-of-trust itu sangat panjang. Sertifikat root milik DigiCert misalnya berlaku 25 tahun dan akan kedaluwarsa pada tahun 2030. Sedangkan untuk sertifikat intermediate masa berlakunya lebih pendek. Saat ini umur sertifikat intermediate milik DigiCert yang digunakan untuk memberikan signature pada sertifikat Twitter baru berumur 7 tahun, dan akan kedaluwarsa pada tahun 2028. Sertifikat milik Twitter sendiri masa berlakunya hanya satu tahun. Setiap tahun, Twitter harus memperbaharui sertifikatnya ke DigiCert agar identitas mereka tetap bisa diverifikasi.
Proses pembaharuan sertifikat (certificate renewal) ini memastikan bahwa masing-masing trusted entity tetap dalam rentang waktu yang aman. Karena semakin ke bawah rantainya, keamanan dari sertifikat masing-masing menjadi semakin lemah. Untuk memastikan hal tersebut, protokol yang dilakukan adalah memberikan umur pendek terhadap sertifikat milik trusted entity. Apabila sertifikat yang telah habis masa berlakunya, browser dapat memberikan peringatan bahwa sertifikat yang digunakan tidak berlaku lagi. Selain itu, misalnya sertifikat milik trusted entity bocor, maka Certificate Authority dapat mengumumkan kepada kahlayak bahwa sertifikat tersebut tidak valid lagi, dan web browser dapat bertindak untuk menolak sertifikat spesifik yang ditarik tersebut.
Bagaimana Kalau root-of-trust-nya sendiri yang jahat?
Ya kalau ga percaya sama root-of-trust-nya, ya gausah pake internet aja. Modern problems require traditional solutions. 🙂
Ya balik lagi di perkataan gue di awal blog ini: “Keamanan itu dibangun di atas kepercayaan (trust). Karena tanpa kepercayaan, kita akan selalu merasa tidak aman”. Nah trust itu dibangun oleh entitas Certificate Authority yang mengelola sistem Public-Key Infrastructure (PKI) yang digunakan untuk mengamankan komunikasi internet. Mereka punya kredibilitas dan selalu diaudit satu sama lain oleh auditor keamanan sistem. Mereka sangat menomorsatukan keamanan sistem mereka. Bahkan bisa dibilang, keamanan mereka jauh lebih ketat dibandingkan keamanan Tokopedia (ups). Jadi kita tidak perlu punya asumsi-asumsi yang enggak-enggak terhadap root-of-trust yang berlaku tersebut.
“Tapi kan tapi kan, Bill Gates mau menguasai dunia, Amerika kan jahat, …”
Yah kalau mau berteori konspirasi, dengerin live streamnya Dokter dan Penyanyi Dangdut yang kemaren berkonspirasi soal COVID-19 itu bohong aja ya. Ga usah di sini 🙂
Public-Key Infrastructure adalah sistem yang digunakan lintas negara dan dikelola independen dari intervensi negara manapun. Mereka saling diaudit satu sama lain secara independen, sehingga kalau ada intervensi dari pihak manapun yang berusaha meng-compromise keabsahan dari root-of-trust pasti akan segera ketahuan dan akan jadi skandal besar. Ga mau lah perusahaan-perusahaan pengelola PKI dan Certificate Authority menghancurkan bisnisnya dalam semalam cuma karena skandal murahan. Bisnis Certificate Authority itu adalah bisnis yang sangat besar duitnya. Mereka itu layaknya pengacara atau lawyer di dunia perkomputeran. Mereka tidak hanya memverifikasi identitas domain dan server, tetapi juga informasi-informasi intrinsik lainnya seperti identitas perusahaan, lokasi, dan lain sebagainya.
(Artikel ini akan berlanjut ya. Pantengin terus blog ini, atau bisa follow Twitter gue di mana gue akan menginformasikan jika artikel kelanjutannya telah ditulis :))