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 user. Program ini mengambil snapshot,
disebut Restore Point,
dari file user. User 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)