-->

Makalah Proteksi (Protection) pada Sistem Operasi (Operating System)

Thursday, November 13, 2014

Makalah Proteksi (Protection) pada Sistem Operasi (Operating System)

A.    Definisi
Setiap proses yang ada pada sistem operasi harus diproteksi dari aktivitas lain yang ada. Untuk mewujudkan adanya suatu proteksi, kita dapat menggunakan berbagai macam mekanisme untuk memastikan bahwa hanya proses-proses tertentu yang dapat memperoleh otorisasi yang tepat dari sistem operasi untuk dapat menjalankan file, segmen memori, CPU, dan sumber daya lain dalam sebuah sistem.
Proteksi di sini berarti sebuah mekanisme untuk mengontrol akses dari program-program, proses-proses, atau user dari sumber daya yang dilakukan oleh sistem komputer. Obyek yang diproteksi dalam sistem operasi bisa berupa perangkat keras (seperti CPU, memori, disk, printer, dll) atau perangkat lunak (seperti program, proses, berkas, basis data, dll).
Di beberapa sistem, proteksi dilakukan oleh sebuah program yang bernama reference monitor. Setiap kali ada pengaksesan sumber daya PC yang diproteksi, sistem pertama kali akan menanyakan reference monitor tentang keabsahan akses tersebut. Reference monitor kemudian akan menentukan keputusan apakah akses tersebut diperbolehkan atau ditolak.
Seringkali, istilah keamanan dan proteksi membingungkan dalam penggunaannya. Untuk mengurangi kebingungan itu, istilah keamanan digunakan untuk penggambaran secara umum, sedangkan proteksi digunakan untuk menggambarkan secara teknis mekanisme proteksi sistem operasi.
Ketika kita menyimpan informasi dalam sebuah sistem komputer, ada dua hal yang harus menjadi perhatian utama kita. Hal tersebut adalah :
          Reabilitas dari sebuah sistem
Maksud dari reabilitas sistem adalah  kemampuan sebuah sistem untuk melindungi informasi yang telah tersimpan agar terhindar dari kerusakan, dalam hal ini adalah proteksi secara fisik pada sebuah berkas. Proteksi  terhadap  berkas  dapat dilakukan dengan berbagai cara.
            Proteksi (perlindungan) terhadap sebuah berkas
Proteksi  terhadap  berkas  dapat  dilakukan  dengan  berbagai  cara.  Pada bagian ini, kita akan membahas secara detail mekanisme yang diterapkan dalam melindungi sebuah berkas. Suatu mekanisme pengamanan berkas  mutlak  diperlukan  dengan  memberikan  batasan  akses  ke  setiap  pengguna terhadap berkas tertentu.
A.1 Tipe Akses
Dalam  pendekatan  ini, kita  mendapatkan suatu mekanisme proteksi  yang dilakukan dengan cara membatasi jenis akses ke suatu berkas.
B.     Tujuan adanya Proteksi
Semakin maju dan berkembangnya penggunaan sistem komputer, kebutuhuan untuk memproteksi integritas mereka juga mengalami peningkatan. Konon, proteksi ada untuk sistem operasi multi-programming, sehingga para user bisa dengan aman membagi logical name space, seperti direktori dari file-file, atau membagi physical name space, seperti memori. Konsep proteksi yang modern diciptakan untuk meningkatkan realibitas dari sistem kompleks manapun yang menggunakan model berbagi sumber daya (shared resources).
Kita bisa “memanfaatkan jasa” proteksi untuk banyak alasan. Alasan yang paling sering adalah mencegah adanya “kenakalan”, pembobolan akses yang disengaja untuk akses-akses yang permission-nya dibatasi untuk “pangkat” yang lebih tinggi dari user saja.
Proteksi dapat meningkatkan realibilitas dengan cara mendeteksi error-error yang tidak nampak pada interface diantara komponen-komponen subsistem. Deteksi dini untuk error pada interface seringkali dapat mencegah kontaminasi oleh subsistem yang mengalami malfungsi pada subsistem yang baik-baik saja. Sumber daya yang tidak diproteksi tidak bisa menolak/melindungi dari adanya penggunaan/penyalahgunaan oleh user yang tidak diharapkan atau user yang tidak kompeten. Karenanya, sistem yang berorientasikan pada proteksi bertujuan untuk membedakan dan menangani penggunaan yang diizinkan (authorized) atau yang tidak diizinkan (unauthorized).
Peran dari proteksi pada sistem operasi adalah untuk menghadirkan mekanisme penegakan kebijakan yang mengatur pemanfaatan sumber daya. Kebijakan-kebijakan ini bentuknya dapat bermacam-macam. Beberapa diantaranya sudah fix “ditanamkan” saat desain sistem, sedangkan lainnya dibentuk oleh manajemen sistem. Yang lainnya lagi ditentukan berdasarkan user itu sendiri untuk memproteksi file-file dan program-program user. Sistem proteksi harus memiliki fleksibilitas untuk dapat menangani berbagai macam kebijakan yang ada.
Aturan untuk penggunaan resource bisa bermacam-macam, tergantung pada aplikasinya, dan mereka memungkinkan untuk diubah berulang kali. Untuk alasan ini, proteksi tidak dapat lagi dipandang sebagai bahan yang harus dipikirkan oleh desainer sistem operasi. Hal ini juga harus dapat bertindak sebagai alat bagi programmer aplikasi, yang menjaga terjadinya penyalahgunaan. Mekanisme proteksi dari sistem operasi harus dilakukan, sehingga desainer aplikasi dapat menggunakannya dalam pemodelan software proteksi.
Prinsip yang sangat penting adalah pembedaan antara mekanisme dengan aturan (policy). Mekanisme menentukan bagaimana sesuatu diselesaikan. Pembedaan ini penting terhadap fleksibilitas. Aturan umumnya sering berubah-ubah. Dalam kasus terburuk, setiap perubahan pada peraturan membutuhkan perubahan pada fundamental dari mekanismenya. Mekanisme yang umum lebih disukai, karena perubahan pada aturan hanya membutuhkan modifikasi dari beberapa parameter dari sistem saja.
C.    Prinsip Dasar Proteksi
Kadang-kadang, prinsip-prinsip yang membangun sering digunakan dalam sebuah proyek, pada kasus ini adalah desain sistem operasi. Dengan mengikuti prinsip-prinsip yang sudah dibentuk sebelumnya dapat menyederhanakan dan mempermudah proses desain dan berimbas pada sistem yang konsisten dan mudah dimengerti. Salah satu prinsip penting yang sudah teruji adalah least privilege. Prinsip ini dapat “mendikte” program, user, bahkan sistem untuk memberikan sebuah privileges (hak akses khusus) untuk menjalankan task-task yang ada.
Sistem operasi yang mengikuti prinsip least privilege mengimplimentasikannya dalam program-program, system call, dan struktur data mereka, jadi ketika ada error/failure/compromise pada komponen tertentu hanya akan menghasilkan kerusakan minimum dan kemudian mengatasi kerusakan tadi.
Ada sistem operasi yang menyediakan system call dan servis yang mengizinkan aplikasi-aplikasi di-write menggunakan akses kontrol yang sudah disusun dengan rapi. Kenapa rapi? Karena servis-servis ini mempunyai mekanisme untuk mengaktifkan privileges ketika dibutuhkan, dan menonaktifkan privileges ketika tidak dibutuhkan.
Prinsip least privilege ini dapat membantu menyediakan lingkungan berkomputer yang jauh lebih aman. Tapi tidak untuk beberapa kasus. Contohnya, Windows 2000 mempunyai skema proteksi sangat kompleks pada core-nya tapi malah mempunyai banyak lubang pada keamanannya. Jika dibandingkan dengan Solaris, Solaris relatif lebih aman walaupun Solaris termasuk dalam salah satu jenis UNIX, yang secara historic di-desain dengan proteksi yang minimal. Perbedaan tadi muncul mungkin karena Windows 2000 mempunyai lebih banyak LoC (Line of Code) dan fitur lebih banyak daripada Solaris dan karenanya, harus lebih aman dan protektif. Alasan lainnya adalah karena skema proteksi pada Windows 2000 tidak kompeten atau memproteksi hal yang tidak seharusnya tidak diproteksi (proteksi tidak pada tempatnya) pada sistem operasi, dan meninggalkan hal/area yang seharusnya diproteksi.
D.    Proteksi pada Perangkat Keras, I/O, dan Memori
Banyak kesalahan pemrograman dideteksi oleh perangkat keras. Kesalahan ini biasanya ditangani oleh sistem operasi. Jika terjadi kesalahan program, perangkat keras akan meneruskan kepada sistem operasi dan sistem operasi akan meng-interupsi dan mengakhirinya. Pesan kesalahan disampaikan, dan memori dari program akan dibuang. Tapi memori yang terbuang biasanya tersimpan pada disk agar programmer bisa membetulkan kesalahan dan menjalankan program ulang.
Pengguna bisa mengacaukan sistem operasi dengan melakukan instruksi I/O ilegal (mengakses lokasi memori untuk sistem operasi atau melepaskan diri dari prosesor). Untuk mencegahnya kita menganggap semua instruksi I/O sebagai privilege instruction sehingga mereka tidak bisa mengerjakan instruksi I/O secara langsung ke memori tapi harus lewat sistem operasi terlebih dahulu. Proteksi I/O dikatakan selesai jika user dapat dipastikan tidak akan menyentuh mode monitor (melakukan konfigurasi device I/O). Jika hal ini terjadi proteksi I/O dapat dikompromikan.
Salah satu proteksi perangkat keras ialah proteksi memori, yaitu dengan pembatasan penggunaan memori. Disini dikenal beberapa istilah yaitu:
§  Base Register yaitu alamat memori fisik awal yang dialokasikan (boleh digunakan) oleh pengguna.
§  Limit Register yaitu nilai batas dari alamat memori fisik awal yang dialokasikan/boleh digunakan oleh pengguna.
§  Hardware Protection.
E.     Proteksi pada Monoprogramming Sederhana
Pada monoprogramming, pemakai mempunyai kendali penuh terhadap seluruh memori utama. Memori terbagi menjadi tiga bagian, yaitu :
a.       Bagian yang berisi rutin-rutin sistem operasi.
b.      Bagian yang berisi program pemakai.
c.       Bagian yang tidak digunakan.
Masalah proteksi di monoprogramming adalah cara memproteksi rutin sistem operasi dari penghancuran program pemakai. Program pemakai dapat tersesat sehingga memanipulasi atau menempati ruang memori rutin sistem operasi. Aktivitas program pemakai ini dapat merusak sistem operasi. Sistem operasi harus diproteksi dari modifikasi program pemakai. Proteksi ini diimplementasikan menggunakan satu register batas (boundary register) di pemroses. Setiap kali program pemakai mengacu alamat memori dibandingkan register batas untuk memastikan proses pemakai tidak merusak sistem operasi, yaitu tidak melewati nilai register batas. Register batas berisi alamat memori tertinggi yang dipakai sistem operasi.
Jika program pemakai mencoba memasuki sistem operasi, instruksi diintersepsi dan job diakhiri dan diberi pesan kesalahan. Untuk memperoleh layanan sistem operasi, program pemakai harus menggunakan instruksi spesifik meminta layanan sistem operasi. Integritas sistem operasi terjaga dan program pemakai tidak merusak bagian sistem operasi.
F.     Domain Proteksi
Sistem komputer merupakan gabungan dari banyak proses dan obyek. Obyek dalam hal ini kita artikan sebagai obyek hardware (seperti CPU, segmen memori, printer, disket, dan drive), dan obyek software (seperti berkas, program, dan semaphore). Tiap objek mempunyai nama yang khusus yang membedakan mereka dengan lainnya pada suatu sistem, dan tiap-tiap dari mereka dapat diakses hanya melalui operasi yang khusus pula. Secara esensial obyek adalah tipe data abstrak.
Operasi yang ada memungkinkan untuk bergantung pada obyeknya. Contoh, CPU hanya bisa dinyalakan. Segmen memori dapat membaca maupun menulis, dimana card reader hanya bisa membaca saja. Drive dapat dibaca, ditulis, ataupun, di-rewind. Berkas data dapat dibuat, dibuka, dibaca, ditulis, ditutup, dihapus; berkas program dapat dibaca, ditulis, dijalankan, dan dihapus.
Sebuah proses harusnya hanya diizinkan untuk mengakses sumber daya dengan otorisasi tertentu. Selain itu, kapanpun sebuah proses harus dapat mengakses hanya sumber daya yang berkaitan dengan task yang hendak diselesaikan. Prinsip ini kemudian dikenal dengan nama prinsip need-to-know, dimana prinsip ini berguna untuk membatasi jumlah kerusakan sistem yang mungkin terjadi ketika terjadi kegagalan (faulty) pada proses.
Sebagai contoh, ketika proses A memanggil prosedur P, prosedur harusnya diizinkan untuk mengakses hanya variabel-variabelnya sendiri dan parameter-parameter yang berhubungan dengannya; bukan semua variabel-variabel yang ada pada proses A. Prinsip need-to-know ini mirip dengan prinsip least privilege yang telah dijelaskan sebelumnya, dimana tujuan dari proteksi adalah meminimalisir resiko dari kemungkinan pelanggaran keamanan.
F.1  Struktur Domain
Untuk menjalankan skema proteksi, sebuah proses beroperasi dalam protection domain, yang bertugas memberi spesifikasi sumber daya-sumber daya yang boleh diakses oleh proses tersebut. Setiap domain berisi satu set obyek dan jenis operasi yang kapanpun bisa dilibatkan di setiap obyek. Kapabilitas untuk mengeksekusi sebuah operasi dari sebuah obyek adalah access right. Sebuah domain adalah kumpulan dari banyak access right, setiap pasang adalah terurut dan memiliki struktur seperti <object-name, rights-set>.
Sebagai contoh, jika domain D mempunyai access right <file F, {read, write}> maka proses apapun yang dieksekusi pada domain D dapat melakukan read dan write file F.
Domain tidak perlu di-disjoint karena mereka bisa saling berbagi access rights. Sebagai contoh, pada gambar berikut ini, kita mempunyai tiga domain, yakni D1, D2, dan D3. Access right <O4, {print}> dibagikan pada D2 dan D3 juga, yang berimplikasi bahwa proses yang dieksekusi entah di domain D2 ataupun D3, proses tersebut dapat melakukan print obyek O4. Perlu dicatat bahwa sebuah proses harus dieksekusi pada domain D2 untuk read dan write obyek O1, sedangkan hanya proses di domain D3 yang bisa mengeksekusi obyek O1.
Contoh sistem dengan tiga domain proteksi
Hubungan antara sebuah proses dan sebuah domain ada dua, yakni statis dan dinamis. Statis jika kumpulan sumber daya yang tersedia untuk proses sudah tetap berada pada lifetime proses, atau sebaliknya (dinamis). Tentu saja lebih kompleks jika merancang domain proteksi yang statis.
Jika hubungan/asosiasi antara proses dan domain sudah fix, dan kita ingin menambahkan prinsip need-to-know, mekanisme tertentu harus disiapkan untuk mengubah isi dari sebuah domain. Setelah mekanisme tadi berjalan, baru bisa ditambahkan prinsipnya.
Jika asosiasinya dinamis, ada sebuah mekanisme yang melakukan domain switching, mengaktifkan proses untuk beralih dari satu domain ke domain lainnya. Jika kita tidak dapat mengubah konten dari suatu domain, kita dapat menambahkan efek yang sama (menyiasati) dengan cara membuat domain baru dengan konten yang sudah diubah sebelumnya dan kemudian melakukan switching menuju ke domain baru tadi.
Sebuah domain dapat direalisasikan kedalam beberapa bentuk, seperti:
·         Setiap user bisa berupa domain.
Pada kasus ini, set dari obyek yang bisa diakses bergantung kepada identitas user. Domain switching muncul ketika ada pergantian user, seperti ketika saat satu user melakukan log out dan muncul user baru yang melakukan log in.
·         Setiap proses bisa berupa domain.
Pada kasus ini, set dari obyek yang bisa diakses bergantung pada identitas proses tersebut. Domain switching muncul ketika satu proses mengirim pesan kepada proses yang lain kemudian menunggu respon.
·         Setiap prosedur bisa berupa domain.
Pada kasus ini, set dari obyek yang bisa diakses menyesuaikan dengan variabel lokal yang didefinisikan dalam prosedur. Domain switching muncul ketika terjadi procedure call.
Ada sebuah dual-mode standar (mode monitor-user) dari model eksekusi pada sistem operasi. Ketika sebuah proses dieksekusi di mode monitor, proses tadi dapat mengeksekusi instruksi-instruksi yang mempunyai privilege tertentu dan kemudian memperoleh kontrol penuh terhadap sistem komputer. Sebaliknya, ketika sebuah proses dieksekusi pada mode user, proses tersebut hanya bisa menjalankan instruksi-instruksi yang tidak mempunyai privilege.
Pada sistem operasi yang sudah multiprogrammed, dua domain proteksi saja tidaklah cukup, mengingat user juga butuh proteksi yang tinggi. Sebagai contoh, ada sistem operasi UNIX dan MULTICS.
Pada sistem operasi UNIX, domain yang ada terasosiasi dengan user. Penggantian domain berimbas kepada penggantian identifikasi user secara sementara. Perubahan ini dicapai melalui file system sebagai berikut. Sebuah identifikasi milik owner dan satu bit domain (lebih dikenal dengan nama setuid bit) diasosiasikan dengan setiap file. Ketika setuid bit-nya on, dan user mengeksekusi filenya, user ID nya diset ke identifikasi pemilik file tadi. Ketika setuid bit nya off, user ID-nya tidak berubah. Sebagai contoh, ketika user A (user yang memiliki userID = A) mulai mengeksekusi file yang dimiliki oleh B, dimana domain bit yang terasosiasi sedang off, userID dari sebuah proses tadi diset ke A. Ketika setuid bit-nya on, userID-nya diset ke pemilik file-nya, yakni B. ketika prosesnya dimulai, proses pengubahan userID bersifat sementara ini berakhir.
Di sistem MULTICS, domain proteksi diorganisir secara hirarki kedalam struktur cincin (ring structure). Setiap ring menandakan satu domain seperti pada gambar berikut.
Masing-masing ring dinomori dari 0 hingga 7. Anggap saja Di dan Dj adalah dua ring domain apapun. Jika j < i, maka Di adalah subset dari Dj. Karenanya, proses eksekusi di domain Dj mempunyai privilege lebih daripada proses yang dieksekusi di domain Di. Sebuah proses eksekusi di domain D0 mempunyai sebagian besar privileges yang ada. Jika hanya dua ring yang eksis, skema ini cocok untuk eksekusi mode monitor-mode, dimana mode monitor adalah D0 dan mode user adalah D1.
MULTICS mempunyai ruang alamat yang tersegmentasi; dimana tiap segmen adalah sebuah berkas. Tiap segmen diasosisakan dengan 1 cincin. Sebuah deskripsi dari segmen mengikutsertakan sebuah masukan yang mengidentifikasi dari nomer cincin. Hal ini mengikutsertakan 3 access bit untuk mengontrol dalam hal membaca, menulis, dan eksekusi. Asosiasi antara segmen dan cincin adalah sebuah keputusan diamana kita tidak bahas pada buku ini. Pada tiap proses, counter dari sebuah currentring- number diasosiakan , mengidentifikasi cincin pada proses mana sedang terjadi.
Ketika sebuah proses dieksekusi pada sebuah cincin i, hal ini tidak dapat mengakses sebuah segmen yang terasosiasikan dengan cincin j , ketika j < i. Hal ini bisa mengakses sebuah segmen yang terasosiasi dengan cincin k, k ≥ i. Hanya saja tipe dari aksesnya tertutup sesuai dengan access bit yang terasosiasikan dengan segmen tersebut.
Domain switching pada MULTICS terjadi ketika sebuah proses bersilangan dari satu cincin ke cincin lainnya dengan memanggil sebuah prosedur pada cincin yang berbeda. Jelasnya, switch ini harus diselesaikan pada sebuah permasalahan kontrol; di pihak lain, sebuah proses dapat mulai mengeksekusi pada cincin 0 dan tidak ada proteksi yang tersedia ataupun yang disediakan. Untuk memperbolehkan adanya controlled domain switching, kita memodifikasi ring field dari segment descriptor untuk diikutsertakan pada :
·         Access bracket : sepasang dari integer, b1 dan b2 dimana b1 < b2.
·         Limit : sebuah integer b3, dimana b3 > b2
·         List of gates : mengidentifikasi entry point (gates) pada segmen yang akan dipanggil
Bila sebuah proses dieksekusi pada cincin i memanggil sebuah prosedur (segmen) dengan access bracket (b1,b2), maka panggilan dilakukan bila b1< i <b2, dan nomor cincin yang ada tetap i. Bila tidak maka sebuah trap pada sistem operasi terjadi, dan situasi dapat diatasi dengan kondisi:
·         Bila i < b1, maka panggilan terjadi, karena kita telah mentransfer kepada sebuah cincin (domain) dengan privilege yang lebih sedikit. Hanya saja, bila parameter yang dilewati terkait pada segmen di cincin yang lebih rendah (segmen yang tidak dapat diakses pada prosedur yang dipanggil), maka segmen ini harus dikopi pada sebuah area yang dapat diakses oleh prosedur yang dipanggil.
·         Bila i > b2, maka panggilan diperbolehkan terjadi hanya bila b3 lebih kecil atau sama dengan i , dan panggilan yang telah diarahkan pada entry point yang telah ditentukan di dalam list of gate. Skema ini memperbolehkan proses dengan access right terbatas untuk memanggil prosedur dalam cincin yang lebih rendah dan mempunyai access right lebih banyak, tetapi hanya bisa terjadi pada sebuah kondisi terkontrol yang baik.
Kerugian utama dari struktur cincin (hirarki) adalah bahwa mereka tidak memperbolehkan kita untuk menerapkan prinsip need-to-know. Dalam kondisi khusus bila sebuah obyek harus dapat diakses melalui domain Dj tetapi tidak dapat diakses melalui domain Di, maka kita harus mempunyai nilai j < i. Tapi kondisi ini berarti bahwa setiap segmen yang dapat diakses di Di juga dapat diakses di Dj. Sistem proteksi MULTICS umumnya lebih kompleks dan kurang efisien dibandingkan dengan sistem yang digunakan pada sistem operasi sekarang.
Bila proteksi mengganggu dengan simplisitas dari penggunaan sistem atau secara signifikan menurunkankan performa sistem, maka penggunaannya harus diperhatikan secara hati hati sehubungan dengan tujuan dari sistem tersebut. Misalnya, akan lebih masuk akal untuk memiliki sebuah sistem proteksi yang komplek pada sebuah komputer yang digunakan oleh sebuah universitas untuk memproses nilai mahasiswa, dan juga digunakan oleh mahasiswa untuk mengerjakan tugas.
Sebuah sistem proteksi yang serupa tidak akan cocok dengan komputer yang sedang digunakan pada kondisi kritis dimana dalam hal ini perfoma adalah persoalan yang paling besar. Maka akan lebih baik untuk memisahkan mekanisme dari aturan proteksi, memperbolehkan sistem yang sama untuk mendapatkan proteksi yang komplek ataupun proteksi yang simpel sesuai dengan kebutuhannya. Untuk memisahkan mekanisme dari aturan kita membutuhkan model proteksi yang lebih umum.
G.    Access Matrix
Bentuk dari proteksi secara acak dapat dilihat dalam bentuk matriks, yang sering disebut dengan access matrix. Baris-baris dari access matrix merepresentasikan domain, sedangkan kolomnya merepresentasikan objek. Setiap entri pada matriks terdiri dari satu set hak akses (access rights). Karena kolom-kolomnya mendefinisikan objek secara eksplisit, kita dapat menghilangkan nama objek dari hak aksesnya. Sebuah entri access(i,j) mendefinisikan set dari operasi-operasi yang diekseksusi oleh proses dalam domain Di yang nantinya memanggil objek Oj.
Untuk mengilustrasikan konsep ini, kita menggunakan sampel matriks sebagai berikut.
Ada empat domain dan empat objek, tiga file (F1, F2, F3) dan satu printer laser. Sebuah proses yang dieksekusi dalam domain D1 dapat me-read file F1 dan F3. Sebuah proses yang dieksekusi dalam domain D4 memiliki privilege yang sama dengan proses yang dieksekusi pada domain D1, dengan tambahan dapat juga me-write kedalam file F1 dan F3. Perlu dicatat bahwa printer laser hanya dapat diakses oleh proses yang dieksekusi dalam domain D2.
Skema access matrix ini memberi kita tentang penggambaran penggabungan mekanisme jenis-jenis kebijakan (policy). Access matrix dapat mengimplementasikan bagaimana pengambilan keputusan dalam kebijakan proteksi. Keputusan kebijakan yang melibatkan hak-hak harus dimasukkan dalam entri ke (i, j) . Kita juga harus menentukan domain di mana setiap proses mengeksekusi. Kebijakan terakhir ini biasanya ditentukan oleh sistem operasi.
Para user biasanya memutuskan sendiri isi dari entri access matrix. Ketika user menciptakan sebuah objek Oi baru, kolom Oi ditambahkan ke access matrix dengan entri inisialisasi yang tepat, seperti yang ditentukan oleh penciptanya. User dapat memutuskan untuk memasukkan beberapa hak di beberapa entri dalam kolom hak/lainnya dalam entri lain, sesuai kebutuhan.
Access matrix menyediakan mekanisme yang tepat untuk mendefinisikan dan menerapkan kontrol yang ketat baik untuk asosiasi statis dan dinamis antara proses dan domain. Ketika kita beralih dari proses yang dieksekusi di satu domain ke domain yang lain, kita mengeksekusi operasi (switch) pada objek (domain). Kita bisa mengendalikan proses domain switching dengan memasukkan domain diantara obyek dari access matrix.
Sebenarnya, karena masing-masing entri dalam access matrix dapat dimodifikasi secara individual, kita harus mempertimbangkan setiap entri dalam access matrix sebagai objek yang harus diproteksi. Sekarang, kita perlu mempertimbangkan kemungkinan operasi hanya pada benda-benda baru (domain dan access matrix) dan memutuskan bagaimana kita ingin proses untuk dapat melaksanakan operasi ini.
Proses harus dapat beralih dari satu domain ke domain yang lain. Proses domain switching dari domain Di sampai domain Dj diperbolehkan jika dan hanya jika akses beralih secara tepat ke access(i,j). Dengan demikian, pada gambar dibawah ini, proses eksekusi pada domain D2 dapat beralih ke domain D3 atau ke domain D4. Sebuah proses dalam domain D4 dapat beralih ke D1, dan satu di domain D4 dapat beralih ke domain D2.
Kemampuan untuk menyalin hak akses dari satu domain (atau baris) dari akses matriks yang lain dilambangkan dengan tanda bintang (*) yang ditambahkan ke hak akses. Hak copy memungkinkan untuk menyalin hak akses hanya dalam kolom (yaitu untuk objek) yang haknya telah didefinisikan. Sebagai contoh, pada dibawah ini pada bagian (a), proses eksekusi pada domain D2 dapat menyalin operasi read ke setiap entri yang berhubungan dengan file F2. Oleh karena itu, access matrix pada gambar dibawah pada bagian (a) dapat dimodifikasi menjadi access matrix yang ditunjukkan pada bagian (b).
Skema ini memiliki dua varian:
1.      Sebuah hak/rights disalin dari access(i,j) ke access(k,j), yang kemudian dihapus dari akses yang lama yakni access(i,j). Tindakan ini merupakan pengalihan/transfer hak, bukan salinan.
2.      Perbanyakan untuk hak copy bisa saja terbatas. Artinya, ketika hak R* disalin dari access(i,j) ke access(k,j),  hanya R yang tepat (bukan R ") dibuat. Sebuah proses mengeksekusi dalam domain Dk tidak bisa menyalin hak R.
Sebuah sistem dapat memilih hanya salah satu dari tiga hak copy, atau mungkin memberikan semua tiga dengan mengidentifikasi mereka sebagai hak yang terpisah: copy, transfer, dan copy yang terbatas (limited copy).
Kita juga perlu mekanisme untuk memungkinkan penambahan hak baru dan penghapusan beberapa hak. Pemilik hak mengontrol operasi ini. Jika access(i,j) meliputi hak pemilik/owner, maka proses mengeksekusi dalam domain Di  dapat menambah dan menghapus hak dalam setiap entri dalam kolom j. Sebagai contoh, pada gambar dibawah ini di bagian (a), domain D1 adalah pemilik F1, dan dengan demikian dapat menambah dan menghapus hak berlaku di kolom F1. Demikian pula, domain D2 adalah pemilik F2 dan F3 dan dengan demikian dapat menambah dan menghapus hak yang sah dalam dua kolom yang ada. Dengan demikian, access matrix pada bagian (a) dapat dimodifikasi menjadi access matrix yang ditunjukkan pada bagian (b).
   
Hak copy (salin) dan owner (pemilik) memungkinkan proses untuk mengubah entri dalam kolom. Sebuah mekanisme juga diperlukan untuk mengubah entri secara berturut-turut. Hak control (kontrol) berlaku hanya untuk obyek domain. Jika access(i,j) termasuk hak kontrol, maka proses mengeksekusi dalam domain Di dapat menghapus akses hak dari baris. Susunan domain yang sudah dimodifikasi dapat dilihat pada gambar berikut.
Sebelum dimodifikasi
Setelah dimodifikasi
Hak copy dan owner memberi kita suatu mekanisme untuk membatasi propagasi hak akses. Namun, mereka tidak memberi kita alat yang tepat untuk mencegah penyebaran (atau pengungkapan tanpa izin) adanya informasi penting. Secara umum, konflik ini belum ada pemecahan masalahnya.
Operasi yang terjadi pada domain dan access matrix sebenarnya tidak begitu penting. Hal yang lebih penting adalah mereka mengilustrasikan kemampuan dari model access matrix untuk memungkinkan implementasi dan kontrol dari kebutuhan proteksi yang dinamis.

G.1   Implementasi Access Matrix
Secara umum, matriks akan dihilangkan, yang artinya, sebagian masukan akan kosong. Walaupun ada teknik dari data-structure yang dapat merepresentasikan hal ini, tetapi kenyataannya mereka tidak digunakan.
                             G.1a   Global Table
Bentuk implementasi paling sederhana dari access matrix adalah global table yang terdiri satu set tiga hal yang disusun berurutan yakni <domain, object, rights-set>. Setiap kali operasi M dilaksanakan pada objek Oj, dalam domain Di, global table mencari tripel <Di, Oj, Rk>, dengan M ε Rk. Jika tripel ini berhasil ditemukan, operasi adalah diizinkan untuk melanjutkan, jika tidak, pengecualian (atau kesalahan) kondisi dinaikkan.
Implementasi ini mempunyai beberapa kelemahan. Tabel biasanya besar dan dengan demikian tidak dapat disimpan dalam memori utama, sehingga membutuhkan adanya tambahan I / O. Teknik memori virtual sering digunakan untuk mengelola tabel ini. Selain itu, sulit untuk mengambil keuntungan dari pengelompokan khusus benda atau domain. Sebagai contoh, jika semua orang bisa membaca objek tertentu, ia harus memiliki entri terpisah dalam setiap domain.
                            G.1b   Access List untuk Objek
Setiap kolom dalam access matrix dapat diimplementasikan sebagai access list untuk satu objek, dan entri kosong dapat dibuang. Daftar yang dihasilkan untuk setiap objek terdiri dari pasangan secara urut yakni <domain, rights-set>, yang mendefinisikan semua domain dengan set yang tidak kosong dari access rights untuk objek tersebut.
Pendekatan ini dapat diperpanjang dengan mudah untuk menentukan daftar ditambah satu set default access rights. Ketika operasi M pada objek Oi dijalankan dalam domain Di, kita mencari access list untuk objek Oi, mencari entri <Di, Rk> dengan M ε Rk. Jika entri ditemukan, kita membiarkan operasi, jika tidak, sistem kemudian memeriksa standar yang ditetapkan. Jika M terletak di set default, kita membiarkan akses. Jika tidak, akses ditolak, dan kondisi pengecualian terjadi. Untuk efisiensi, kita dapat memeriksa default diatur pertama dan kemudian mencari access list.
                             G.1c   Capability List untuk Domain
Daripada menghubungkan kolom dari access matrix dengan objek sebagai pengakses daftar, kita dapat mengaitkan setiap baris dengan domainnya. Capability list untuk domain adalah daftar objek bersama dengan operasi diperbolehkan pada objek mereka. Sebuah objek sering diwakili oleh nama atau alamat fisik, yang dikenal dengan kapabilitas (capability). Untuk mengeksekusi operasi M pada objek Oj, proses mengeksekusi operasi M, kemudian menentukan kapabilitas (atau pointer) untuk objek Oj sebagai parameternya. Kepemilikan kapabilitas berarti akses diperbolehkan. Capability list terasosiasi dengan domain, tapi tidak pernah diakses secara langsung oleh sebuah proses yang dieksekusi pada domain tersebut. Capability list sendiri adalah objek yang terproteksi, yang diurus langsung oleh sistem operasi dan diakses oleh user hanya secara tidak langsung.
Kapabilitas sebenarnya dibentuk sebagai salah satu macam dari secure pointer, untuk memenuhi kebutuhan proteksi sumber daya yang diperkirakan akan banyak dibutuhkan seiring dengan perkembangan sistem komputer yang multiprogrammed.
Untuk memberikan proteksi yang “mendarah daging”, kita harus membedakan kapabilitas dari objek-objek lain dan mereka harus dikerjakan dalam mesin abstrak yang menjalankan program-program berlevel tinggi. Kapabilitas biasanya dibedakan berdasarkan salah satu dari dua poin berikut.
·         Setiap benda memiliki tag untuk menunjukkan jenisnya baik sebagai kapabilitas atau sebagai data yang dapat diakses. Tag sendiri tidak harus langsung dapat diakses oleh program aplikasi. Hardware atau dukungan firmware dapat digunakan untuk menegakkan pembatasan ini. Meskipun hanya diperlukan 1 bit untuk membedakan antara kemampuan dan benda-benda lainnya, pada kenyataannya lebih sering menggunakan lebih dari 1 bit. Ekstensi ini memungkinkan semua objek akan ditandai jenis mereka berdasarkan perangkat kerasnya. Dengan demikian, perangkat keras dapat membedakan bilangan bulat, angka floating-point, pointer, boolean, karakter, pointer, kapabilitas, dan nilai lain yang belum dimasukkan, dengan tag yang mereka punya.
·         Atau secara alternatif, address space yang terkait dengan program dapat dibagi menjadi dua bagian. Salah satu bagian dapat diakses oleh program dan berisi program data normal dan instruksi. Bagian lain, yang berisi capability list, hanya dapat diakses oleh sistem operasi. Sebuah ruang memori tersegmentasi berguna untuk mendukung pendekatan ini.
                            G.1d   Mekanisme Lock-Key
Skema lock-key adalah kompromi antara access list dan capability lists. Setiap benda memiliki daftar pola bit yang unik, yang disebut locks. Demikian pula, masing-masing domain memiliki daftar pola bit yang unik, yang disebut key. Sebuah proses yang dieksekusi dalam domain dapat mengakses objek hanya jika domain memiliki key yang cocok dengan salah satu locks dari objek.
Seperti capability list, daftar keys untuk domain harus dikelola oleh sistem operasi pada nama domain. Pengguna tidak diperbolehkan untuk memeriksa atau memodifikasi daftar key (atau lock) secara langsung.
                            G.1e    Perbandingan / Komparasi
Access list berhubungan langsung dengan kebutuhan user. Ketika user membuat sebuah objek, ia dapat menspesifikasikan domain mana yang dapat mengaksesnya, sejalan dengan operasi yang terjadi. Sebagian besar sistem menggunakan combinasi dari access list dan kapabilitas. Ketika sebuah proses mencoba untuk mengakses sebuah objek, access list akan dicari.
Ketika akses ditolak maka error akan terjadi. Bila tidak, sebuah kapabilitas dibuat dan terpasang pada proses tersebut. Referensi tambahan menggunakan kapabilitas untuk mendemonstrasikan akses yang masuk. Setelah akses terakhir maka kapabilitas akan dihancurkan. Strategi ini digunakan oleh MULTICS didalam sistem CAL.
H.    Access Control
Pendekatan paling umum dalam masalah proteksi adalah untuk membuat akses tergantung pada identitas pengguna. Saat seorang pengguna meminta untuk mengakses suatu berkas, sistem operasi akan mengecek daftar akses yang berhubungan dengan berkas tersebut. Masalah utama dengan pendekatan ini adalah panjang dari daftar yang harus dibuat. Di sini pengguna dapat diklasifikasikan ke dalam tiga kelas:
         Owner. Pengguna yang membuat berkas tersebut.
         Group. Sekelompok pengguna yang berbagi berkas dan memiliki akses yang sama.
         Universe. Semua pengguna yang lain.
Pendekatan lain dalam masalah proteksi adalah dengan memberikan kata kunci untuk setiap berkas. Proteksi yang lazim digunakan dalam pengoperasian sistem operasi adalah penggunaan password dalam suatu berkas.
Beberapa tipe operasi yang bisa dikontrol:
         Read. Membaca dari berkas.
         Write. Menulis atau menulis ulang berkas.
         Execute. Me-load berkas ke memori dan mengeksekusinya.
         Append. Menulis informasi baru di akhir berkas.
         Delete. Menghapus berkas dan mengosongkan spacenya untuk   kemungkinan digunakan kembali.
         List. Mendaftar nama dan atribut berkas.
Sebelumnya sudah disinggung sedikit mengenai bagaimana access control dapat digunakan pada file-file yang ada pada file system. Setiap file dan direktori mempunyai pemilik, grup, atau mungkin daftar user, dan di setiap entitasnya, informasi yang berkaitan dengan access-control ada. Fungsi yang mirip dapat ditambahkan dengan aspek berbeda pada sistem komputer. Salah satu contoh adalah Solaris 10.
Solaris 10 mengoprek lebih dalam sistem proteksi yang ada pada sistem operasi berbasis Sun Microsystem dengan menambahkan secara eksplisit prinsip least privilege melalui role-based access control (RBAC). Fasilitas ini menyelesaikan masalah yang terkait dengan privileges.
Privileges adalah hak untuk mengeksekusi system call atau menggunakan pilihan pada panggilan sistem (seperti membuka file dengan akses write saja). Privileges dapat dijalankan pada proses, membatasi mereka untuk secara tepat mengakses hal yang mereka butuhkan untuk menjalankan tugas mereka. Privileges dan program juga dapat dijalankan untuk roles. User menjalankan roles atau dapat mengambil roles berdasarkan password untuk memasuki roles tertentu. Dengan cara ini, user dapat mengambil roles yang memungkinkan hak istimewa, yang memungkinkan user untuk menjalankan program untuk menyelesaikan tugas tertentu, seperti digambarkan pada gambar berikut ini. Implementasi terkait privileges ini dapat mengurangi resiko keamanan yang diasosiasikan dengan super user dan program-program setuid.


I.       Pencabutan Hak Akses
Dalam sistem proteksi yang dinamis, kadang-kadang kita mungkin perlu untuk mencabut akses hak atas objek-objek yang dimiliki oleh user yang berbeda. Berbagai pertanyaan tentang pencabutan mungkin timbul, seperti yang berikut ini:
        Segera VS Ditunda. Apakah pencabutan terjadi segera/atau tertunda? Jika pencabutan tertunda, bisakah kita mengetahui kapan itu akan terjadi?
        Selektif VS Umum. Ketika sebuah access right untuk obyek dicabut, apakah itu mempengaruhi semua user yang memiliki hak akses ke objek itu, atau bisa kita tentukan kelompok user tertentu yang hak aksesnya seharusnya dicabut?
        Parsial VS Total. Dapatkah subset dari hak-hak terkait dengan obyek dicabut, atau harus kita mencabut hak akses semua untuk objek ini?
        Sementara VS Permanen. Dapatkah akses dicabut secara permanen (akses dicabut berarti tidak akan pernah lagi tersedia kembali), atau akses dapat dicabut dan kemudian diperoleh lagi?
Dengan skema access-list, pencabutan hak akses adalah mudah. Access list akan mencari hak akses yang akan dicabut, dan mereka dihapus dari daftar. Pencabutan bersifat segera dan dapat bersifat umum atau selektif, total atau parsial, ataukah permanen atau sementara.
Kapabilitas, bagaimanapun, membuat revokasi lebih sulit. Karena kapabilitas didistribusikan di seluruh sistem, kita harus menemukan mereka sebelum kita dapat mencabut mereka. Skema yang menerapkan pencabutan untuk kemampuan meliputi:
        Reacquisition. Secara berkala, kapabilitas dihapus dari setiap domain. Jika suatu proses ingin menggunakan kapabilitas, ada kemungkinan untuk menemukan bahwa kapabilitas telah dihapus. Proses ini kemudian dapat mencoba untuk reacquire/memperoleh kembali kapabilitas tadi. Jika akses sudah dicabut, maka proses tidak bisa memperoleh kembali kapabilitasnya.
        Back-pointers. Sebuah daftar pointer dipertahankan dalam setiap objek, menunjuk ke semua kapabilitas yang terkait dengan objek tersebut. Ketika pencabutan diperlukan, kita dapat mengikuti pointer, mengubah kapabilitas yang diperlukan. Skema ini diadopsi pada sistem MULTICS. Hal ini sangat umum sebenarnya, namun implementasinya mahal.
        Indirection. Kapabilitas menunjuk secara tidak langsung ke objek. Setiap poin kapabilitas untuk entri yang unik dalam global table, yang pada gilirannya menunjuk ke objek. Penerapan pencabutan dilakukan dengan mencari global table untuk entri yang diinginkan dan menghapusnya. Kemudian, ketika akses yang ditemukan, kapabilitas tersebut ternyata ditemukan menunjuk ke entri tabel ilegal. Entri tabel dapat digunakan kembali untuk kapabilitas lain tanpa kesulitan, karena kedua kapabilitas dan entri tabel berisi nama unik dari objek. Objek untuk kapabilitas dan entri tabel harus cocok. Skema ini diadopsi dalam sistem CAL. Tidak memungkinkan adanya pencabutan selektif.
        Keys. Kunci adalah pola bit yang unik yang dapat dikaitkan dengan kapabilitas. Kunci yang  didefinisikan ketika kapabilitas dibuat, dan tidak dapat dimodifikasi atau diperiksa oleh proses yang memiliki kapabilitas. Sebuah kunci master terkait dengan setiap objek, yang dapat ditentukan atau diganti dengan operasi set-key. Ketika kapabilitas dibuat, nilai saat ini dari kunci master dikaitkan dengan kapabilitas. Ketika kapabilitas dilaksanakan, kuncinya dibandingkan dengan master key. Jika sesuai, operasi ini dibiarkan berlanjut. Jika tidak, kondisi pengecualian dinaikkan.
Skema ini tidak mengizinkan pencabutan selektif, karena hanya satu master kunci yang terkait dengan setiap objek. Jika kita kaitkan daftar kunci dengan masing-masing objek, maka pencabutan selektif dapat diimplementasikan. Akhirnya, kita dapat mengelompokkan semua kunci dalam satu global table kunci. Sebuah kapabilitas ini hanya berlaku jika ada kunci yang cocok dengan beberapa kunci dalam global table. Penerapan pencabutan dilakukan dengan menghapus kunci yang sesuai dari tabel.
J.      Sistem Berbasis Kapabilitas
J.1  Hydra
Hydra adalah sistem proteksi berbasis kapabilitas yang menyediakan fleksibilitas yang baik. Sistem ini menyediakan sebuah set yang pasti dari access right yang mungkin dapat diketahui dan diinterpretasikan oleh sistem. Right ini termasuk bentuk dasar dari access sebagai right untuk membaca, menulis ataupun mengeksekusi pada sebuah segmen memori. Dalam kenyataannya, sistem ini menyediakan cara bagi user untuk mendeklarasikan right tambahan. Interpretasi dari user-defined right dilaksanakan hanya oleh program dari user, tetapi sistem menyediakan proteksi access dalam penggunaan right ini, seiring dengan penggunaan dari system-defined right.
Operasi dari objek didefinisikan sesuai dengan prosedur. Prosedur yang mengimplementasikan operasi ini merupakan bentuk dari sebuah objek dan diakses secara tidak langsung oleh kapabilitas. Nama dari user-defined procedure harus diidentifikasi kepada sistem proteksi bila hal ini berhubungan dengan objek dari userdefined- type. Ketika definisi dari sebuah objek yang telah dibuat diperkenalkan kepada hydra, nama dari operasi yang ada pada tipe ini berubah dari auxiliary right. Auxiliary right dapat dijabarkan dalam sebuah kapabilitas dari sebuah tipe.
Konsep lainnya adalah right implification. Skema ini memungkinkan sebuah sertifikasi dari sebuah prosedur yang aman untuk dapat bergerak pada sebuah parameter formal dari sebuah tipe yang telah terspesifikasi. Amplifikasi sangat berguna dalam menjalankan implementasi dari access procedure ke variabel representasi dari tipe data abstrak.
Sebuah hydra sub system dibuat di atas kernel proteksinya dan mungkin membutuhkan proteksi dari komponennya sendiri. Sebuah sub sistem berinteraksi dengan kernel melalui panggilan pada sebuah set dari kernel-defined primitive yang mendefinisikan access right kepada resourse yang diimplementasikan selanjutnya oleh sub sistem.
J.2  Cambridge CAP System
Sebuah pendekatan kepada proteksi berbasis kapabilitas telah dibentuk dalam sebuah desain dari Cambridge CAP System. Sistem kapabilitas dari CAP lebih sederhana dan tidak lebih baik daripada hydra. Hanya saja ditunjukkan bahwa sistem ini dapat digunakan untuk menyediakan sebuah proteksi sekuritas dari user-defined object. Pada CAP ada 2 kapabilitas. Yang satu dinamakan data kapabilitas, yang dapat digunakan untuk menyediakan akses kepada objek tetapi right yang disediakan hanya right standar seperti membaca, tulis ataupun mengeksekusi segmen penyimpanan terpisah yang terasosiakan dengan objek. Data kapabilitas diintepretasikan oleh microcode di dalam mesin CAP.
Sebuah software kapabilitas dilindungi oleh CAP microcode tetapi tidak diinterpretasikan. Hal ini diinterpretasikan oleh sebuah prosedur yang terlindungi, yang mungkin bisa ditulis oleh sebuah progammer aplikasi sebagai sebuah bagian dari sub system. Walaupun seorang programmer dapat mendefinisikan prosedur proteksinya sendiri, tetapi secara global sistem tidak dapat disatukan dengan sistem proteksi dasar tidak memperbolehkan prosedur-prosedur lain yang dibuat oleh user untuk mengakses kepada segmen penyimpanan yang bukan milik dari lingkungan yang ada. Designer dari system CAP telah menyadari bahwa penggunaan software kapabilitas memungkinkan mereka untuk membuat sebuah formula dengan harga yang terjangka dan mengimplementasi policy dari proteksi yang sesuai dengan kebutuhan.
K.    Proteksi Berbasis Bahasa Komputer
Dengan semakin kompleknya sistem operasi seiring dengan mereka menyediakan high level user interface, tujuan dari proteksi menjadi lebih berkembang. Dalam perkembangan ini kita mengetahui bahwa designer dari sistem proteksi telah membuat sebuah ide yang mengacu pada bahasa pemograman khususnya pada konsep tipe data abstrak dan objek. Dan hal ini memiliki beberapa keuntungan yang sangat signifikan :
1.      Proteksi yang dibutuhkan dapat dibuat dengan mudah daripada memprogram melalui sequence dari panggilan pada prosedur dari sebuah sistem operasi
2.      Kebutuhan proteksi dapat didefinisikan sendiri-sendiri sesuai dengan sistem operasi yang ada
3.      Cara untuk mengaplikasikannya tidak perlu harus disediakan oleh designer dari sub system
4.      Notasi yang ada sangat alami dikarenakan access dari privilegesnya memiliki hubungan yang dekat dengan konsep linguist dari tipe data.
Yang kita butuhkan adalah sebuah mekanisme access contol yang dinamis sekaligus aman untuk mendistribusikan kapabilitas kepada sistem resource di antara user process. Bila yang kita inginkan adalah reabilitas dari sistem, maka mekanisme access control adalah merupakan opsi yang terbaik. Tetapi bilamana kita menginginkan optimalisasi dalam prakteknya, sistem tersebut harus diperhatikan faktor efisiensivitasnya. Kebutuhan ini telah mengarahkan kepada perkembangan dari beberapa bahasa pemograman untuk memungkinkan programmer untuk membuat beberapa restriksi pada penggunaan resouce yang diatur secara spesifik.
Konstruksi ini menyediakan mekanisme kepada 3 fungsi :
1.      Menyebarkan kapabilitas aman dan efisien di antara customer process
2.      Mengkhususkan tipe dari operasi yang memungkinkan sebuah proses untuk memanggil sebuah resorce yang teralokasi
3.      Mengkhususkan kebutuhan dalam hal ini sebuah proses dapat memanggil operasi dari sebuah resource
Sebagai penutup pentingnya dari notasi bahasa pemograman yang cocok dimana dalam hal ini adalah untuk mempercepat kebutuhan proteksi akan ditindaklanjuti lebih lanjut seiring dengan perubahan teknologi yang ada.
Dalam bahasa pemrograman Java, proteksi data dalam sebuah class dinyatakan dalam sintaks public, private, dan default. Public artinya suatu data dalam class dapat diakses dan dimodifikasi dari luar class. Private berarti data sama sekali tidak dapat terlihat dan tidak dapat diubah dari luar class. Data ini hanya terlihat oleh class itu sendiri. Default artinya, data hanya bisa dilihat oleh class-class yang memiliki package yang sama.
Proteksi di handle oleh Java Virtual Machine (JVM). Class yang sudah dibahas di paragraf sebelumnya diberi domain proteksi ketika class tadi di load oleh JVM. Domain proteksi mengindikasikan operasi-operasi apa saja yang dapat dan tidak dapat dijalankan, dan jika sebuah method dalam library meminta melakukan operasi ber-hak akses (privileged), stack yang ada kemudian diperiksa untuk memastikan apakah operasi yang bersangkutan dapat dijalankan oleh library. Pemeriksaan ini disebut dengan stack inspection.
L.     Proteksi Pada Berbagai Sistem Operasi
L.1 Windows XP
Banyak fitur yang dimiliki oleh Windows XP untuk melakukan proteksi sistem. Salah satunya adalah Windows File Protection.
Windows File Protection (WFP) mencegah program menggantikan berkas sistem Windows yang vital. Program tidak diperbolehkan menimpa file-file ini karena mereka digunakan oleh sistem operasi dan program lainnya. Melindungi berkas ini mencegah masalah dengan program dan sistem operasi.
WFP melindungi sistem kritis file yang diinstal sebagai bagian dari Windows (misalnya, berkas dengan ekstensi .dll, .exe, .ocx, dan .sys dan beberapa True Type font). WFP menggunakan berkas tanda tangan dan berkas katalog yang dihasilkan oleh kode penandatanganan untuk memverifikasi apakah berkas sistem terlindungi dengan versi Microsoft yang benar. Penggantian berkas sistem terlindungi didukung hanya melalui mekanisme berikut:
  • Penginstalan Paket Layanan Windows menggunakan Update.exe
  • Perbaikan terbaru diinstal menggunakan Hotfix.exe atau Update.exe
  • Upgrade sistem operasi menggunakan Winnt32.exe
  • Pembaruan Windows
Jika program lain menggunakan metode yang berbeda untuk mengganti berkas terproteksi, WFP mengembalikan file asli. Windows Installer mematuhi WFP ketika menginstal berkas sistem penting dan panggilan WFP dengan permintaan untuk menginstal atau mengganti berkas terproteksi daripada mencoba untuk menginstal atau mengganti berkas terproteksi itu sendiri.
                               L.1a   Bagaimana fitur WFP bekerja
Fitur WFP memberikan proteksi untuk sistem file menggunakan dua mekanisme. Mekanisme pertama berjalan di latar belakang (background). Proteksi ini dipicu setelah WFP menerima pemberitahuan perubahan direktori untuk file dalam direktori yang dilindungi. Setelah WFP menerima pemberitahuan ini, WFP menentukan berkas mana yang diubah. Jika file yang dilindungi, WFP mencari berkas tanda tangan di berkas katalog untuk menentukan apakah file baru adalah versi yang benar. Jika file ternyata bukan versi yang benar, WFP menggantikan file baru dengan berkas tersebut dari map cache (jika ada dalam map cache) atau dari sumber instalasi. WFP melakukan pencarian untuk file yang benar di lokasi-lokasi berikut, dalam urutan ini:
1.      Map cache (secara default, % systemroot%\system32\dllcache).
2.      Jaringan install path, jika sistem diinstal dengan menggunakan instalasi jaringan.
3.      CD-ROM Windows, jika sistem sebelumnya diinstal dari CD-ROM.
L.2 Windows 7
Sistem proteksi adalah fitur yang tersedia dalam semua edisi Windows 7 yang membantu melindungi sistem dan file pribadi userProgram ini mengambil snapshot, disebut Restore Point, dari file userUser dapat kemudian memulihkan berkas ini apabila virus, orang, atau apa pun atau terjadi kerusakan terhadap mereka.
Seperti mundur dalam waktu — Sistem User rusak atau jika User kehilangan dokumen penting seperti tidak pernah teralami!


                              L.2a   System Restore (Pemulihan sistem)
Bagian file sistem proteksi sistem disebut sebagai System Restore dan telah ada sejak Windows ME dan XP. System Restore membuat cadangan sistem dan berkas Windows, program, pengaturan, driver dan registri. Jika Windows menjadi rusak atau tidak stabil, user dapat dengan mudah memulihkan berkas sistem dari titik awal waktu oleh bergulir kembali ke titik pemulihan yang sebelumnya.
Misalnya, user menginstal perangkat lunak dan driver untuk ponsel user sehingga user dapat mentransfer file antara komputer user. Tapi setelah instalasi user mendapatkan blue screen of death (BSOD) setiap kali Windows melakukan startup karena ketidakcocokan dengan driver-nya. Karena user tidak bisa ke Windows, user tidak dapat melakukan uninstall sederhana dari perangkat lunak dan driver. Namun, user dapat mengembalikan ke titik pemulihan yang dibuat sebelum instalasi melalui menu Advanced Boot Options sebelum Windows mengalami startup. Setelah user sudah dinyalakan kembali, Windows biasanya mengalami startup dengan normal dan user dapat menghubungi vendor tentang masalah driver.
                            L.2b    Previous Versions (Versi sebelumnya)
Bagian file pribadi perlindungan sistem dirujuk sebagai Previous Versions atau shadow copy. Fitur ini memulai debutnya di Windows Vista, tetapi tidak sepenuhnya didukung dalam Home Edition sampai Windows 7. Itu membuat cadangan file pribadi user, seperti dokumen, foto, musik, video, dan berkas lain yang tidak tercakup dalam pemulihan sistem backup. Windows menyimpan versi berkas yang sudah dimodifikasi sejak titik pemulihan terakhir diciptakan sebelumnya.
Misalnya, user mulai bekerja pada sebuah dokumen Senin malam dan diselamatkan ketika user selesai. Kemudian titik pemulihan secara otomatis dibuat Selasa pagi. Kemudian user membuka dokumen Selasa malam, secara tidak sengaja menghapus sebagian dari dokumen, dan kemudian menyimpannya. Tanpa fitur versi sebelumnya, bagian yang user hapus akan hilang selamanya. Tapi user dapat klik kanan dokumen, klik memulihkan versi sebelumnya, dan membuka versi dokumen yang disimpan selama titik pemulihan yang dibuat sebelumnya pagi itu. user kemudian bisa mengembalikan salinan itu untuk menggantikan yang sekarang, menyimpannya sebagai dokumen baru, atau hanya menyalin bagian yang dihapus user dan menyisipkannya ke salinan.
L.3 Linux
                               L.3a   File Security
Pada sistem Linux, setiap file yang ada dimiliki oleh pengguna dan grup pengguna. Untuk setiap kategori pengguna, membaca, menulis, dan mengeksekusi perizinan dapat diberikan atau ditolak. Linux memisahkan mengakses kontrol pada file dan direktori berdasarkan tiga karakteristik: owner (pemilik), group (kelompok), dan lainnya. Selalu ada satu pemilik, sejumlah anggota kelompok, dan orang lain. Bila mode akses ID pengguna yang ditetapkan terletak di izin pemilik, dan file dieksekusi, proses yang berjalan itu diberikan akses ke sumber daya sistem yang berdasarkan pada pemilik file.
                              L.3b   Identifikasi dan Otentikasi
Saat ini implementasi Linux rentan melalui sandi pengguna. Sandi yang disimpan dalam teks yang jelas, yang berarti mereka dengan mudah dipahami oleh pengguna yang tahu lokasi file sandi, dan default enkripsi alat untuk informasi tidak memenuhi rekomendasi persyaratan enkripsi. Departemen disarankan untuk mengidentifikasi dan menggunakan alat alternatif enkripsi yang memenuhi atau melampaui persyaratan yang ada.
                               L.3c   Authorization (Otorisasi)
Membatasi akses ke administration tools dan jika mungkin menghapus default permission tambahan untuk layanan (services) dan alat (tools).
                              L.3d   Access Control
Membatasi akses ke konfigurasi sistem internal firewall, melarang remote login "root", mengunci (lockdown) akun sistem, meninjau layanan yang diaktifkan dan scheduler security, dan untuk sistem yang menjalankan layanan web, mengetatkan keamanan web.
                               L.3e   Confidentiality (Kerahasiaan)
Pastikan semua akun dilindungi oleh sandi yang memenuhi persyaratan keamanan.
                               L.3f   Integrity (Integritas)
Menggunakan patch management yang up-to-date, memastikan sistem memiliki anti virus dan perlindungan terhadap malware, dan menonaktifkan download otomatis.
                              L.3g   Availability (Ketersediaan)
Menggunakan partisi software untuk membuat bagian dari hard drive memungkinkan administrator untuk mengunci akses dan menegakkan/memperketat lockdown pada startup layanan.
                              L.3h   Accountability dan Non-Repudiation
“Membersihkan” akun yang tidak diperlukan, mengaktifkan pendataan untuk memulai secara otomatis saat proses booting. Kemudian menerapkan penyimpanan file log yang aman dan mengaktifkan sinkronisasi waktu dengan sumber waktu resmi yang aman.
L.4 Mac OS X
Mac OS X memberikan perlindungan runtime untuk data seperti stack canaries, proses cek terhadap heap corruption, dan layanan sistem sandboxed terhadap serangan stymie yang mencoba untuk membajak atau memodifikasi perangkat lunak pada sistem. Selain itu, versi 64-bit menyediakan keamanan tingkat tinggi dengan adanya fitur seperti no-execute data pada heap sistem.
Mac OS X mewarisi model privileges dari UNIX. Apple meningkatkan model keamanan ini dengan menonaktifkan root account secara default. Menjalankan kode dengan tingkat minimum diperlukan hak membantu melindungi sistem dari kerusakan sengaja atau tidak disengaja. Ada tiga jenis account pengguna di Mac OS X:
·         User
 Account pengguna adalah account yang memiliki least privileges dalam sistem Mac OS X. Pengguna dapat mengubah pengaturan hanya untuk account, bukan seluruh sistem.
·         Administrator
Mac OS X menetapkan account pengguna administrator ketika sistem pertama kali diinstal. Pengguna admin yang dapat melakukan sebagian besar operasi yang biasanya terkait dengan pengguna root, kecuali langsung menambahkan, mengubah, atau menghapus file dalam sistem domain. Namun, administrator dapat menggunakan aplikasi Installer atau pembaruan perangkat lunak untuk tujuan ini.
·         Root
Mac OS X (seperti sebagian besar sistem operasi UNIX) memiliki pengguna super, bernama root, yang memiliki izin akses penuh ke semua file pada sistem. Secara khusus, root dapat — dengan beberapa pengecualian terbatas — mengeksekusi file apapun yang memiliki semua jenis perizinan, mengeksekusi perizinan yang diaktifkan dan dapat mengakses, membaca, mengubah, atau menghapus file dan direktori apapun. Tidak seperti sistem UNIX tradisional, Mac OS X menonaktifkan akun ini secara default. Tindakan pencegahan ini membantu untuk membatasi tingkat perubahan berbahaya dimana virus atau pengguna yang tidak sah dapat membuat perubahan berbahaya untuk sistem operasi.
Fitur keamanan lainnya termasuk:
·         FileVault adalah fitur yang menggunakan sistem berkas dienkripsi yang dapat di-mount dan unmount ketika pengguna log in atau log out dari sistem. Direktori home pengguna dienkripsi menggunakan algoritma Advanced Encryption Standard (AES) dengan kunci berasal dari password login pengguna.  Konten otomatis dienkripsi dan didekripsi on the fly. Meskipun versi awal yang lambat dan menyebabkan sistem untuk sementara hang ketika digunakan dengan disk-intensif (“menyiksa” disk), seperti suara dan video editing, kinerja FileVault telah diperbaiki di versi yang lebih baru dari Mac OS X.
·         Keychain adalah sistem manajemen sandi terpadu di Mac OS. Fitur ini diperkenalkan pada Mac OS 8.6 dan telah dimasukkan dalam semua versi berikutnya dalam Mac OS, termasuk Mac OS X. Keychain dapat mengandung berbagai jenis data: password (untuk situs web, server FTP, SSH account, saham jaringan, jaringan nirkabel, aplikasi groupware, citra disk yang dienkripsi), private keys, sertifikat, dan secure notes.
·         Kernel Mac OS X menyediakan mandatory access controls (kontrol akses wajib). Kontrol ini menerapkan pembatasan akses ke sumber daya sistem (seperti jaringan, sistem file, dan proses eksekusi) sehingga sumber daya tersedia hanya untuk proses yang secara eksplisit diberikan akses. Kontrol akses wajib terintegrasi dengan layanan sistem exec untuk mencegah eksekusi aplikasi yang tidak berwenang. Dalam kasus sandboxing di Mac OS X, kontrol akses wajib membatasi akses ke sumber daya sistem yang ditentukan oleh profil sandboxing khusus yang disediakan untuk setiap aplikasi sandboxed. Ini berarti bahwa proses berjalan dalam akun root bisa saja mendapat akses sangat terbatas ke sumber daya sistem.











REFERENSI
Anonim. Proteksi Berkas. 14 slide. (Online), http://elearning.amikom.ac.id/index.php/download/materi/555096-ST043-13/2010/01/20100113_TATAP%20MUKA%208.ppt (diakses 12 Desember 2012, pukul 20.43)
Anonim. What Are Security And Protection In Linux Operating System? (Online), http://www.blurtit.com/q192478.html (diakses 18 Desember 2012, pukul   19.17)
Geler, Eric. 2011. System Protection in Windows 7. (Online), http://www.informit.com/articles/article.aspx?p=1722551 (diakses 18 Desember 2012, pukul 18.32)
Microsoft. 2011. Penjelasan tentang Fitur Perlingdungan Berkas Windows. (Online), http://support.microsoft.com/kb/222193 (diakses 18 Desember 2012, pukul   18.07)
Silberschatz, Abraham, Peter Baer Galvin, dan Greg Gagne. 2005. Operating System Concepts, 7th Edition. New York: John Wiley & Sons, Inc.
Universitas Brawijaya. Modul Sistem Operasi : Bab 13 Proteksi Sistem Operasi. (Online), http://www.scribd.com/doc/16604428/Bab-13-Prokteksi (diakses 16 Desember 2012, pukul 14.45)
Wardi, Ledi dkk. 2012. Proteksi pada Sistem Operasi. (Online), http://sistemoperas.blogspot.com/2012/06/proteksi-pada-sistem-operasi.html   (diakses 12 Desember 2012, pukul 20.10)

Webinos. 2012. Mac Os-X. (Online), http://www.webinos.org/deliverable-d026-target-platform-requirements-and-ipr/2-6-mac-os-x-ntua/ (diakses 18 Desember 2012, pukul 19.17)