Capability
Konsep kapabilitas diperkenalkan oleh Dennis dan Van Horn pada tahun 1966. "Kapabilitas adalah token, tiket, atau kunci yang memberikan izin kepada pemiliknya untuk mengakses entitas atau objek dalam sistem komputer."
• Contoh intuitif - Tiket film adalah kemampuan untuk menonton film. - Kuncinya adalah kemampuan untuk memasuki sebuah rumah.
• Kemampuan diimplementasikan sebagai struktur data yang berisi: –Identifier: alamat atau nama. misalnya segmen memori, array, file, printer, atau laporan pesan. - Hak akses: membaca, menulis, menjalankan, mengakses, dll.
• Menggunakan kemampuan - Penggunaan eksplisit: Anda harus menunjukkan kemampuan Anda secara eksplisit. Inilah yang kami lakukan saat kami pergi ke bioskop: kami menunjukkan tiket kami kepada penjaga pintu. Berikut ini adalah contoh lain yang cukup umum ketika program mencoba mengakses file:
PUT (file_capability, "this is a record");
Penggunaan implisit: tidak perlu menunjukkan kapabilitas, tetapi sistem akan secara otomatis memeriksa apakah seseorang memiliki kapabilitas yang tepat. Sebuah analogi untuk ini adalah meminta penjaga pintu teater untuk mencari di saku Anda tiket yang tepat. Meskipun pendekatan ini canggung dalam analogi ini, ini cukup umum dalam sistem operasi. Metode daftar kemampuan pada dasarnya menggunakan pendekatan ini. Yakni, setiap proses membawa daftar kemampuan; ketika mencoba untuk mengakses suatu objek, sistem kontrol akses memeriksa daftar ini untuk melihat apakah proses memiliki kapabilitas yang benar. Tidak seperti pendekatan penggunaan eksplisit, dengan pendekatan ini, proses (atau pemrogram yang menulis program) tidak perlu mencari tahu yang mana kapabilitas harus disajikan ke sistem.
- Perbandingan: Pendekatan implisit kurang efisien, terutama, ketika daftar kapabilitasnya panjang. Namun, mungkin lebih mudah digunakan, karena, tidak seperti pendekatan eksplisit, kapabilitas adalah trans-parent bagi pengguna; Oleh karena itu, pengguna tidak perlu menyadari kapabilitasnya.
Pengenal kemampuan bisa banyak hal, termasuk pengguna, proses, prosedur, dan program: –Kemampuan Pengguna: Pengguna adalah pengidentifikasi yang lebih gigih. Kapabilitasnya dapat disimpan dalam file.
- Kapabilitas pada Proses: Proses bukanlah pengidentifikasi persisten, mereka biasanya memperoleh kapabilitas secara dinamis.
- Kapabilitas pada Prosedur:
(1) Penelepon dan panggilan dapat memiliki kapabilitas yang berbeda
(2) Sebagian besar sistem kapabilitas melangkah selangkah lebih lanjut: izinkan setiap prosedur memiliki daftar kemampuan privat.
– Kapabilitas pada Program. Pemberian kemampuan pada program dapat mencapai eskalasi dan penurunan hak istimewa. ∗
Contoh: Hak Istimewa di Trusted Solaris (lihat studi kasus di Trusted Solaris). ∗ Set-UID program adalah kasus khusus: Program Set-UID memiliki kapabilitas root.
• Contoh kapabilitas yang diterapkan di LIDS (Sistem Deteksi Intrusi Linux)
–CAPCHOWN: mengesampingkan pembatasan perubahan kepemilikan file dan kepemilikan grup.
- CAPDACREADSEARCH: menimpa semua pembatasan DAC terkait pembacaan dan mencari file dan direktori.
– CAPKILL: kemampuan untuk mematikan proses apapun.
– CAPNETRAW: kemampuan untuk menggunakan soket RAW
– CAPSYSBOOT: kemampuan untuk melakukan boot ulang.
Capability Implementation
Di mana kapabilitas harus disimpan? Kapabilitas sangat penting untuk keamanan sistem. Setelah kemampuan diberikan kepada pengguna, pengguna tidak boleh merusak kemampuan tersebut
- Di tempat yang dilindungi: Kemampuan dapat disimpan di tempat yang dilindungi. Pengguna tidak dapat menyentuh kapabilitas; mereka menggunakan kapabilitas secara implisit:
∗ Dalam kernel: pendekatan ini diadopsi oleh pendekatan Daftar kapabilitas, di mana, daftar kapabilitas disimpan di kernel (misalnya dalam struktur data proses). Pengguna tidak dapat mengubah konten kapabilitas apa pun, karena mereka tidak memiliki akses ke kernel. Kapanpun pengguna membutuhkan kapabilitas mereka, sistem akan pergi ke kernel ke daftar kapabilitas.
∗ Arsitektur yang diberi tag: kapabilitas dapat disimpan dalam memori yang ditandai sebagai read-only dan use-only.– Di tempat yang tidak dilindungi: Di beberapa aplikasi, pengguna mungkin harus membawa kemampuan mereka sendiri. Ketika mereka meminta akses, mereka hanya menunjukkan kemampuan mereka ke sistem. Ini adalah penggunaan kemampuan secara eksplisit.
∗ Bagaimana cara mencegah pengguna merusak kapabilitas? Karena izin dikodekan dalam kapabilitas, jika pengguna dapat merusak konten kapabilitas, mereka dapat memperoleh hak istimewa yang tidak sah.
∗ Perlindungan dapat dicapai dengan menggunakan checksum kriptografi: penerbit kapabilitas dapat menempatkan checksum kriptografi pada kapabilitas (misalnya tanda tangan digital) . Setiap gangguan pada kapabilitas akan terdeteksi.
- Pendekatan Hibrid: pengguna dapat menggunakan kapabilitas secara eksplisit, tetapi kapabilitas disimpan di tempat yang aman. Capabilities Kemampuan sebenarnya disimpan dalam tabel, yang berada di tempat terlindungi (misalnya kernel).
∗ Pengguna diberi indeks untuk kemampuan ini. Mereka dapat menyajikan indeks ke sistem untuk secara eksplisit menggunakan kemampuan.
∗ Memalsukan indeks oleh pengguna tidak memberi pengguna kemampuan tambahan apa pun.
Comments
Post a Comment