BAB V
SISTEM FILE
Pada proses penyimpanan dan
pembacaan data bisa timbul masalah:
1. Kapasitas media penyimpanan tidak
cukup (terbatas).
2. Ketika proses dihentikan, data hilang.
3. Kebutuhan mengakses data atau sebagiannya
dalam waktu bersamaan.
Oleh karena itu diperlukan media penyimpanan yang
:
1. Mampu menyimpan data yang besar.
2. Mampu menjaga data walaupun proses yang
mengaksesnya dihentikan.
3. Proses yang bersamaan dapat mengakses data
secara bersama-sama, tanpa ada yang terganggu.
Solusi untuk semua masalah tsb
adalah dengan menyimpan data pada disk atau media lain dalam bentuk unit-unit
yang disebut FILE. Data yang
disimpan dalam bentuk file harus tetap tidak berubah ketika proses dibentuk
atau dihentikan. File bisa hilang hanya ketika dihapus saja.
Sistem File adalah bagian sistem operasi yang
menangani masalah file.
A.
FILE
a.
Penamaan File
File merupakan bentuk mekanisme abstrak.
Karakteristik yang paling penting dari mekanisme abstrak adalah cara pemberian
nama suatu obyek. Ketika proses membuat suatu file, proses akan memberi sebuah
nama kepada file. Ketika proses selesai, file masih ada dan bisa diakses oleh
proses lain dengan menggunakan nama file tsb.
Semua sistem operasi menerima bentuk nama file
yang terbuat dari 1 sampai 8
karakter. Tetapi ada beberapa sistem operasi yang membedakan huruf besar dan
huruf kecil, seperti UNIX. Contoh :
BARBARA, BARbara, BarBaRa à UNIX membedakannya
è DOS menganggap sama
è WINDOWS
??
è LINUX
???
Kebanyakan
sistem operasi mampu menangani dua bagian bentuk nama file yang dipisah dengan titik (period), bagian yang terletak setelah tanda titik disebut extension, yang biasanya menggambarkan
ciri khusus dari file ybs. Contoh:
-
DOS
nama file à [1 sampai 8 karakter].[1 sampai 3]
Beberapa extension file yang biasa ditemukan tampak pada tabel berikut :
Extension
|
Artinya
|
*.bak
|
File Backup
|
*.bas
|
Program source
Basic
|
*.bin
|
Program executable
binary
|
*.c
|
Program source
C
|
*.dat
|
File Data
|
*.doc
|
File
Dokumentasi
|
*.ftn
|
Program source
Fortran
|
*.hlp
|
File Teks
untuk HELP command
|
*.lib
|
Library dari
file .obj yang digunakan linker
|
*.man
|
Online manual
page
|
*.obj
|
File object
|
*.pas
|
Program source
Pascal
|
*.tex
|
Teks masukan
untuk format program TEX
|
*.txt
|
File teks umum
|
Pada kasus khusus, extension ini hanya berupa Konvensi, seperti :
ü
data03.txt, menyatakan file dalam bentuk file
teks.
ü
program05.c menyatakan file berupa file code
bahasa C, C compiler hanya mengcompile extension *.C.
b. Struktur File
Beberapa kemungkinan bentuk struktur file tampak pada gambar 1.
Gambar1. Tiga macam File. (a) urutan byte, (b) Urutan record, (c) Tree |
1. File dibentuk dari urutan byte yang tidak
terstruktur.
Akibatnya : Sistem operasi tidak tahu apa yang ada
didalamnya. DOS dan UNIX menerapkan bentuk ini, LINUX ?, WINDOWS ?
Cara
mengambil isi file dengan program.
2.
File dibentuk dari urutan record dengan panjang yang
sama dan struktur internal didalamnya.
Operasi
read akan membaca satu record.
Operasi
write akan overwrite/append satu record.
Cocok untuk sistem operasi yang menerapkan Punch
Card, karena ukurannya tetap.
3.
File
dibentuk dari struktur organisasi tree record, ukuran record tidak harus sama,
setiap record mengandung field Key pada posisi yang sama. Tree record
diurutkan berdasarkan Key nya.
Operasinya
dengan melihat Key.
Banyak
diterapkan pada sistem operasi Mainframe untuk pemrosesan data komersial.
c.
Jenis File
UNIX dan DOS memiliki jenis file:
1. Regular
File : jenis file yang
mengandung informasi user. Contoh gambar 1
2. Directory : file sistem yang mengatur
struktur sistem file.
3. Character Special File : File yang
berhubungan dengan peralatan I/O dan memodelkan peralatan serial, seperti
Terminal, Printer, NIC.
4. Block
Special File : File yang
digunakan untuk memodelkan disk.
Regular
File bisa berbentuk ASCII maupun binary. Keuntungan bentuk ASCII adalah dapat
ditampilkan dan dicetak seperti apa adanya dan dapat diedit menggunakan editor
yang biasa dipakai. File
Binary memiliki struktur internal sendiri, contoh dalam UNIX pada gambar 2.
Gambar2. (a) File executeble, (b) Archive |
Magic Number : menyatakan bahwa file berupa file
executable.
Binary file dalam bentuk archive mengandung kumpulan library procedure
(module) yang telah dicompile tapi tidak dilink.
Seluruh sistem operasi paling tidak harus mengenal
satu jenis file executable, miliknya sendiri. Bahkan jika file source codenya
diubah, mampu melakukan compile ulang secara otomatis. Contoh perintah UNIX :
make, berada didalam shellnya.
d. Pengaksesan File
Ada dua cara :
1.
Sequential Access,
proses dapat membaca seluruh byte/record dalam suatu file, mulai dari awal,
tidak boleh melompat atau keluar dari urutannya. Cocok untuk file yang disimpan pada media
Magnetic Tape.
2.
Random Access,
bisa membaca byte/record untuk berbagai macam urutan pengaksesan. Cocok untuk file yang disimpan pada
media Disk. Jenis ini lebih sesuai untuk berbagai aplikasi, seperti sistem
database airport.
Sistem
operasi Mainframe lama banyak menggunakan kedua cara, karena memiliki dua
bentuk media penyimpanan tsb. Sedangkan sistem operasi modern tidak
membedakannya, otomatis semua file diakses secara acak (Random access).
e. Atribut File
Jenis-jenis atribut file tampak pada Tabel
berikut.
Field
|
Artinya
|
Protection
|
Who can access
the file and in what way
|
Password
|
Password
needed to access the file
|
Creator
|
Id of person
who created the file
|
Owner
|
Current owner
|
Read Only flag
|
0 for
read/write, 1 for read only
|
Hidden flag
|
0 for normal,
1 for do not display in listings
|
System flag
|
0 for normal
file, 1 for system file
|
Archive
|
0 has been
backed up, 1 for needs to be backed up
|
ASCII/binary
flag
|
0 for ASCII
file, 1 for binary file
|
Random access
flag
|
0 for
sequential access only, 1 for random access
|
Temporary flag
|
0 for normal,
1 for delete on process exit
|
Lock flag
|
0 for unlocked,
nonzero for locked
|
Record length
|
Number of
bytes in a record
|
Key position
|
Offset of
the key within each record
|
Key length
|
Number of bytes in the key field
|
Creation time
|
Date and Time
file was created
|
Time of last
access
|
Date and Time
file was last accessed
|
Time of last
change
|
Date and Time
file was last changed
|
Current size
|
Number of
bytes in the file
|
Maximum size
|
Maximum size
file may grow ro
|
f. Operasi File
Sistem Call yang biasa digunakan
dalam hubungan dengan file :
a. Create : File dibuat dan tidak berisi
data.
b. Delete : File dihapus karena tidak
diperlukan lagi dan untuk memperbesar ruang disk sisa.
Beberapa
sistem operasi akan menghapus file jika tidak digunakan dalam jangka waktu
tertentu.
a. Open : Sebelum menggunakan file, file harus diOpen dulu. Open
akan menjadikan sistem mengambil atribut dan daftar alamat disk dan meletakkan
didalam memori kerja agar diperoleh akses yang cepat.
b. Close : Jika akses file selesai, atribut dan alamat disk tidak
diperlukan lagi, sehingga harus ditutup dan untuk memperbesar ruang tabel
daftar alamat disk internal.
c. Read : Data dibaca dari file. Sistem menentukan banyaknya data dan
menyediakan buffer untuk menampungnya.
d. Write : Data disimpan kedalam file. Jika posisi berada diakhir file,
maka ukuran file bertambah. Jika posisi ditengah, data yang ada akan ditimpa.
e. Append : Menambah data setelah data terakhir.
f. Seek :
Mengatur posisi pointer saat itu menuju posisi yang ditentukan.
g. Get Attribute : Pada UNIX, program make perlu melihat atribut file, terutama waktu
modifikasinya yang terakhir.
h. Set Attribute : Mengubah status atribut file.
i.
Rename : Merubah nama file.
g. Memory-Mapped File
Gambar3. (a) Proses segmentasi sebelum mematakan file ke ruang alamat, (b) Proses setelah memetakan file abc ke satu segmen dan membuat segmen baru untuk file xyz |
Sistem operasi melakukan pemetaan
file kedalam ruang alamat disk pada alamat virtual. Pemetaan ini sangat cocok
pada Segmentasi. Contoh pada gambar 3.
Proses memiliki dua segmen, teks dan data. Proses
melakukan sistem call COPY. Pertama, memetakan file sumber (abc) ke sebuah
segmen. Kemudian membuat segmen kosong dan memetakannya ke file tujuan (xyz).
Proses dapat mengcopy segmen sumber ke dalam segmen tujuan menggunakan loop
copy biasa, bukan Read dan Write.
Kelebihan Pemetaan File :
ü
Menghilangkan kebutuhan I/O sehingga mempermudah
pemrograman.
Kekurangan Pemetaan File :
ü
Sistem sulit untuk mengetahui panjang sebenarnya
dari file output (xyz).
ü
Hasil pemetaan belum tentu sama dari sumbernya,
jika terjadi modifikasi sumber, outputnya belum tentu dimodifikasi juga.
ü
Tidak bisa memetakan ukuran file yang lebih
besar dari ukuran segmen.
B. DIRECTORY
Untuk menjaga agar
file tetap pada jalurnya dan diketahui, maka sistem file menyediakan DIRECTORY.
a.
Sistem Directory Hirarki
Gambar4. Directory. (a) Atribut pada Directory entry, (b) Atribut de tempat lain. |
Ketika file
diOpen, sistem operasi mencari directorynya sampai ditemukan nama file ybs,
kemudian mengekstrak atribut dan alamat disk langsung dari daftar directory
atau dari struktur data yang menunjukkannya, lalu meletakkan kedalam tabel
didalam memory kerja.
Bentuk
disain sistem file tampak pada gambar 5.
Gambar5. Tiga desain sistem file. (a) satu directory dipakai bersama oleh semua user, (b) satu directory peruser, (c) sembarang tree per user. Huruf-huruf menyatakan pemilik derectiry atau file |
b. Nama Path
Penamaan
Path ada dua cara :
1.
Absolute Path
Name : mengandung path dari directory root sampai file.
Selalu dimulai dari Root dan bersifat
Unik.
Di UNIX, directory dipisah dengan tanda /, DOS dengan \. Jika karakter pertama dari nama path
dimulai dengan tanda tsb, maka path termasuk jenis absolut ini.
Contoh : /usr/ast/mailbox
root
directory mengandung subdirectory usr,
dimana
didalamnya ada subdirectory ast,
dimana
didalamnya lagi ada subdirectory mailbox.
2. Relative Path Name : Untuk seluruh kasus
path yang tidak dimulai dari root, diambil secara relatif ke directory kerja
(working directory/current directory).
Contoh : Directory kerja /usr/ast, file yang
mempunyai path absolut /usr/ast/mailbox dapat diwakili dengan mailbox saja.
Seperti perintah :
cp /usr/ast/mailbox
/usr/ast/mailbox.bak
dan
cp mailbox mailbox.bak
adalah perintah UNIX yang
menghasilkan efek yang sama.
Kebanyakan sistem operasi mempunyai dua directory khusus,
"." dan "..", dot dan dotdot. Dot
menunjukkan directory saat itu dan Dotdot menunjukkan parent directory. Contoh
gambar 6
Gambar6. UNIX directiry tree |
Directory kerja /usr/ast, copy file
/usr/lib/dictionary ke directorynya sendiri dengan: cp ../lib/dictionary.
c. Operasi Directory
Beberapa
operasi directory :
ü
Create,
membuat directory yang kosong kecuali dot dan dotdot yang otomatis dimasukkan
oleh sistem.
ü
Delete,
menghapus directory, Hanya directory yang kosong yang dapat dihapus.
ü
OpenDir,
Mendaftar seluruh file yang ada di directory ybs.
ü
CloseDir,
Setelah selesai membaca directory, maka harus ditutup untuk memperbesar ruang
tabel internal.
ü
ReadDir,
Menghasilkan daftar directory pada directory yang sedang dibuka.
ü
Rename,
Mengubah nama directory.
ü
Link,
Cara agar file dapat muncul dibeberapa lokasi directory.
ü
UnLink,
Menghilangkan Link.
C. IMPLEMENTASI SISTEM FILE
Menjelaskan cara file dan directory
disimpan, ruang disk diatur dan membuat segalanya efisien dan reliable.
1.
Mengimplementasikan
File
Kunci masalah implementasi
penyimpanan file adalah selalu mengetahui perubahan blok disk akibat ada
tidaknya file.
a. Contiguous Allocation
Ini merupakan alokasi paling
sederhana dengan menyimpan setiap file kedalam blok data yang berurutan didalam
disk.
Kelebihannya :
ü
Mudah implementasinya, karena untuk mengetahui
letak blok file hanya cukup mengingat satu nomor, blok yang pertama saja.
ü
Kinerjanya sangat bagus, karena seluruh file
dapat dibaca dari disk dalam satu operasi saja.
Kekurangannya :
ü
Tidak bisa dialokasikan jika ukuran maksimum
file tidak diketahui.
ü
Mudah terjadi fragmentasi, sisa blok yang tidak
digunakan.
b. Linked List Allocation
Menyimpan file dalam skema Linked List, seperti tampak pada gambar 7.
Gambar7. Menyimpan file sebagai linked list dari blok-blok disk |
Kelebihannya
:
ü Seluruh blok dapat dipakai,
tidak terjadi fragmentasi.
Kekurangannya
:
ü Pengaksesan file secara acak
akan lambat.
ü Kebutuhan ukuran blok data meningkat karena pointer juga memerlukan
beberapa byte.
c. Linked List Allocation menggunakan Indeks
Caranya sama seperti point b tetapi menambahkan tabel berindeks kedalam
memory, seperti pada gambar 8 berikut.
Gambar8. Alokasi linked list dengan menggunakan tabel dimain memory |
File A menggunakan blok 4,7,2,10 dan 12. Sedangkan file B menggunakan 6,3,11 dan 14.
DOS menggunakan metode alokasi ini.
Kelebihannya
:
ü Pengaksesan file secara acak
akan lebih cepat.
Kekurangannya
:
ü Seluruh tabel harus selalu
ada didalam memory, sehingga mengurangi kapasitas memory.
d. I-node
Alokasi file dengan menerapkan tabel yang berukuran kecil yang
disebut i-node (index-node) yang mendaftar atribut dan alamat disk dari blok
file. Tampak pada gambar 9.
Gambar9. I-node |
Untuk file-file yang berukuran besar, dipetakan ke
blok yang disebut Single Indirect Block
(SIB) yang mengandung alamat disk tambahan. Jika masih tidak cukup maka alamat
lain dipetakan ke Double Indirect Block
(DIB) yang mengandung alamat blok yang mendaftar SIB. Setiap SIB menunjuk ke
beberapa ratus blok data. Jika ternyata masih kurang lagi, Triple Indirect Block (TIB) bisa digunakan.
¨
UNIX
menggunakan metode alokasi ini.
¨
WINDOWS ???
¨
OS/2 ???
2. Mengimplementasikan Directory
a. Directory pada sistem CP/M
Sistem ini hanya memiliki satu directory saja, sehingga semua file harus dicari
dan dilihat dari directory ini. Tampak pada gambar 10.
Gambar10. Directry yang berisi nomor blok disk untuk setiap file |
ü
User code
digunakan untuk mengetahui nama pemilik file ybs.
ü
Extent akan
diperlukan bila ukuran file lebih besar dari 16 blok, sehingga memerlukan
beberapa directory. Extent berisi nomor urut.
ü
Block
Count menunjukkan jumlah blok yang digunakan dari 16 blok yang disediakan.
ü 16
bit terakhir berisi nomor
blok disk.
b. Directory pada DOS
Sistem DOS menggunakan directory seperti
tampak pada gambar 11.
Gambar11. Entry Direcory MS-DOS |
Panjangnya 32 bit yang terdiri dari nama, atribut, jam,
tanggal, first block number (FBN) dan ukuran. FBN digunakan sebagai indeks
tabel seperti pada gambar 11.
c. Directory pada UNIX
Sistem UNIX menggunakan struktur directory
seperti tampak pada gambar 12.
Gambar12. Entry directory UNIX |
Informasi tentang jenis, ukuran, waktu, kepemilikan, dan blok
disk disimpan didalam i-node. Contohnya :
Cara sistem mencari file jika diberikan path /usr/ast/mbox
Gambar13. Langkah-langkah pencarian/usr/ast/ast/mbox |
Dengan
urutan :
ü sistem meletakkan posisinya pada root.
ü Permasalahan pada Symbolic Linking diperlukannya overhead. File yang
mengandung path harus dibaca, path harus diparse dan diikuti setiap komponen
per komponen, sampai i-node dicapai. Sehingga symbolic link memerlukan i-node tambahan.
ü Symbolic Linking menjadikan
file memiliki lebih dari satu path. Operasi copy juga akan melaksanakan lebih
dari satu kali.
Kelebihannya
:
ü dapat digunakan untuk
menghubungkan file-file diseluruh mesin di dunia ini.
3.
Pengaturan Ruang Disk
Dua cara umum menyimpan file n byte :
a.
Mengalokasikan
ruang disk sebanyak n byte secara berurutan.
b. Memisah file menjadi sejumlah blok yang
tidak harus berkesinambungan
Ukuran blok
berhubungan erat dengan kecepatan pembacaan/penyimpanan file dan pemakaian
ruang disk.
Contoh :
Gambar16. Kurva yang solid (skala kiri) mengambarkan data rate disk. Garis terputus (skala kanan) menyatakan efisiensi ruang disk. semua file berukuran 1K |
Cara mengetahui Blok yang Bebas. Dua cara yang banyak
digunakan adalah tampak pada gambar 17.
Gambar17. (a)Daftar blok bebas pada linked list, (b) Bit Map |
a. Menggunakan Linked List, setiap blok menahan/memegang sejumlah blok bebas yang
cocok dengannya.
b. Bit
Map. Blok bebas
dinyatakan dengan 1, sedangkan blok yang telah dialokasi data dinyatakan dengan
0.
Kuota
Disk
Tujuan : mencegah user agar tidak menggunakan ruang disk
terlalu banyak, melampaui batas.
Proses jalannya kuota ditampilkan pada gambar 18.
Gambar18. Kuota dicatat peruser pada tabel kuota |
Terdapat dua tabel yang terletak didalam memory.
ü
Tabel pertama mendaftar atribut dan alamat disk file
yang dibuka. Setiap perubahan ukuran file akan dikenakan pada kuota user yang
menggunakannya.
ü
Tabel kedua berisi record kuota untuk setiap user dengan file yang sedang dibuka.
Ketika user log in, sistem operasi akan mengecek kuota
file yang digunakannya, apakah melampaui batas jumlah file atau jumlah blok
disk.
4. Reliabilitas Sistem File
Jika terjadi
masalah terhadap sistem file, baik akibat bencana atau rusaknya software dan
hardware komputer, maka diperlukan cara penaggulangannya.
a.
Pengaturan Blok Rusak (Bad Block)
ü
Cara Hardware, menyiapkan blok cadangan. Bila
sistem menemukan blok yang rusak, data akan dipetakan kelokasi blok cadangan.
ü
Cara Software, menghapus blok yang rusak
sehingga dianggap tidak ada. Pembacaan dan penyimpanan file ke blok rusak tidak
akan terjadi, karena dianggap tidak ada blok tsb.
b. Backup
ü
Untuk ukuran kecil, floppy, dilakukan dengan
copy.
ü
Untuk ukuran besar, akan memerlukan waktu,
sehingga perlu strategi seperti pada gambar 19.
Gambar19. Mem-backup setiap drive pada drive yang lainnya menyia-yiakan setengah media penyimpanan |
ü Melakukan incremental dumping setiap
waktu.
ü DOS
menerapkan sebuah atribut yang disebut Archive Bit. Jika sistem file ybs
dibackup, maka archive bit dihapus (clear), tetapi bila file sedang diubah,
archive bit diset secara otomatis.
c. Konsistensi Sistem File
Jika sistem crash
dan seluruh file yang diedit belum sempat disimpan, maka sistem file berada
dalam kondisi tidak konsisten.
Solusinya :
ü
Sistem komputer melengkapi program utility untuk
mengecek konsistensi sistem file ketika diboot, terutama setelah terjadinya
crash.
Metode pengecekan konsistensi ini :
ü Block, Program membuat dua counter untuk setiap blok :
ü counter pertama mencatat
berapa kali blok berada didalam file
ü counter kedua merekam
seberapa sering blok berada di daftar yang bebas (free list table).
ü Cara ini tampak pada gambar
20.
Gambar20. Status sistem File. (a) Konsisten, (b) Missing Block, (c) Duplikasi blok pada daftar bebas, (d) Duplikasi blok data |
a.
Bentuk konsisten
b. Blok 2 tidak muncul pada kedua tabel,
dinamakan Missing Block.
c. Block 4 muncul dua kali didalam daftar
blok bebas (free list).
d. Blok data yang sama muncul dalam dua atau
lebih file, pada blok 5.
5.
Kinerja Sistem File
Pengaksesan ke disk jauh lebih lambat dibanding ke
memory. Cara menanggulangi dengan menerapkan metode Block Cache atau Buffer
Cache. Cara ini tidak
dimaksudkan untuk menjaga data menetap lama didalamnya sebelum disimpan ke
disk.
Contoh : Ingin menulis skripsi, akan lebih cepat diakses bila diletakkan di
buffer, tetapi ukuran bukunya sangat besar. Jika crash, semua yang diketik belum sempat disimpan?
Solusi :
ü System
Call SYNC, diterapkan oleh UNIX.
Sistem menjalankan UPDATE (menyimpan blok yang diubah kedalam disk) setiap 30
detik dengan proses background. Tidak
cocok bila data disimpan di disket, apalagi berganti-ganti disket. Memang
UNIX semula dirancang menggunakan media disk.
ü Write-Through Cache, diterapkan oleh
DOS, menyimpan blok kedalam disk segera setelah ada perubahan. Cukup fleksibel
menggunakan disket.
ü Meletakkan
blok pada posisi yang berdekatan ketika diakses, sehingga
mempercepat pembacaan.
Gambar21. |
a.
i-node diletakkan diawal disk, rata-rata jarak antara
i-node dengan bloknya sekitar setengah jumlah cylinder, yang memerlukan
pencarian yang lama.
b. i-node diletakkan ditengah disk, akan
mengurangi rata-rata pencarian antara i-node dengan bloknya setengah kali.
Cara lain, membagi disk kedalam kelompok cylinder, setiap
kelompok mempunyai i-node, blok dan daftar bebas sendiri.
D.
PENGAMANAN
1.
Seputar Pengamanan (security)
Istilah "security" dan "protection", Security ditujukan untuk keseluruhan
masalah sedangkan Protection
merupakan mekanisme tertentu dari sistem operasi yang digunakan untuk menjaga
informasi didalam komputer.
Beberapa hal yang menyebabkan data hilang :
a. Bencana
alam
b. Kesalahan
Hardware atau Software
c. Kesalahan
Manusia dalam menggunakan data.
Ketiga hal diatas biasanya
dapat diatasi dengan Backup.
Masalah penting lainnya yaitu INTRUDER, dibagi dua :
a.
Intruder
Pasif, hanya melihat file yang
sebenarnya bukan haknya.
b.
Intruder
Aktif, tidak sekedar membaca, tetapi
juga merubah (merusak) data.
Jenis perilaku intruder :
1.
Iseng-iseng/coba
sambil lalu saja. Biasa
terjadi pada data yang bisa diakses semua user.
2.
Snooping dari dalam. Seseorang yang masuk kedalam
sistem jaringan komputer berusaha menembus pengamanan.
3.
Berusaha cari
keuntungan. Programer bank mencoba
untuk mencuri uang.
4.
Spionase/Militer.
Biasanya berhubungan dengan politik.
Aspek lain dalam pengamanan adalah PRIVACY : menjaga seseorang dari penyalahgunaan data miliknya.
2. Beberapa Pengamanan Terkenal Yang
Gagal/Rusak
Cara masuk ke UNIX tanpa melalui sistem
pengamanannya dengan menghubungkan sebuah file yang disebut core di
directory kerja menuju file password. User dapat mengubah file password.
Contoh pengamanan
jelek yang tidak begitu kelihatan : mkdir
foo. Untuk sistem yang lambat, kadang-kadang user dapat dengan cepat
menghapus i-node directory dan membuat link ke file password menggunakan nama
foo setelah MKNOD dan sebelum CHOWN. Setelah CHOWN dijalankan sistem, maka
mkdir tsb menjadikan user sebagai owner (pemilik) file password.
Cara
mencuri file orang lain.
Mencari source code editor yang banyak digunakan orang lain, lalu dimodifikasi.
Hasil modifikasi diletakkan di directory yang banyak orang akan mengaksesnya,
seperti /bin. Perubahan
proses editor dapat digunakan untuk mencari hal-hal yang diinginkan.
Ide merubah program untuk melakukan hal yang tidak
berkenan dan merugikan orang lain dikenal sebagai Serangan Kuda Troya (Trojan Horse Attack).
3.
Internet Worm
Tanggal 2 Nopember 1988, Cornell meluncurkan program worm ke internet. Akibatnya ribuan
komputer mati, baik di universitas, perusahaan, laboratorium di seluruh dunia
sebelum program worm tsb dapat diketahui dan dihilangkan.
Secara teknis, program worm mengandung dua program
: Bootstrap
dan Worm, yang terdiri dari 99 baris
bahasa c, yaitu ll.c. Program ini dicompile dan dijalankan oleh sistem yang
diserang. Ketika berjalan, program ini dihubungkan ke mesin dari mesin
datangnya program ini, mengupload worm utama dan menjalankannya. Kemudian worm
melihat tabel routing untuk mencari mesin-mesin lain yang terhubung pada mesin
tersebut, kemudian menyebarkannya dan membootstrap mesin-mesin itu.
Ada tiga cara dalam menginfeksi mesin lain :
a.
Mencoba
menjalankan remote shell dengan perintah rsh.
Jika berhasil remote shell akan mengupload program worm dan melanjutkan untuk
mencari mesin yang lain.
b.
Menggunakan
program yang ada di sistem BSD yang dikenal dengan finger, setiap orang di dunia bisa menjalankan :
finger [nama@lokasi]
untuk menampilkan informasi tentang seseorang ybs.
Setiap sistem BSD akan selalu menjalankan (background process) yaitu finger
daemon yang menjawab query dari seluruh hubungan internet didunia. Program Worm
memanggil finger dengan 536 byte string sebagai parameter. String yang panjang
ini menjadikan buffer daemon overflow dan menimpa isi stacknya. Karena overflow
ini, daemon mengecek dan ketika ingin kembali ke procedure utamanya, diberi
request supaya belok ke procedure 536 byte yang ada didalam stack. Procedure
ini mencoba untuk menjalankan /bin/sh. Jika berhasil, mesin tsb telah
terjangkit worm.
c.
Didalam sendmail
ada bug, yang mengijinkan worm untuk mengirimkan mail berisi copy bootstrap dan
menjalankannya.
4.
Serangan Pengamanan Umum
Ketika merancang sistem, harus dapat mengantisipasi bentuk serangan sbb :
a. Permintaan
page memory, ruang disk
atau tape dan sekedar membaca isinya. Banyak sistem yang tidak menghapus dulu
lokasi yang akan digunakan, kadang-kadang masih berisi informasi yang dipakai
oleh proses sebelumnya.
b. Mencoba
System Call yang tidak
benar atau System Call yang benar tetapi dengan parameter yang salah.
c. Mencoba
Login tetapi segera
setelah itu menekan tombol yang dapat menghentikan proses, seperti DEL, RUBOUT
atau BREAK supaya tidak menjalankan rutin password.
d. Mencoba
merubah struktur sistem operasi dan menyimpan di ruang disk user.
e. Spoof user lain dengan membuat tulisan
"login :" di layar.
f. Mencari informasi yang tidak boleh dilakukan
pada manual book, lalu mencobanya dengan berbagai variasi.
g. Trapdoor, meyakinkan programer untuk
melewati pengecekan login/password untuk setiap user menggunakan nama loginnya.
h. Menggunakan
kelemahan sifat manusia
yang memegang kendali sistem administrasi, seperti sekretaris SysAdm.
Virus
Virus
adalah suatu penggalan program yang menempel program sebenarnya dengan maksud
menjangkitkan dirinya ke program lain.
5.
Prinsip-Prinsip Disain Pengamanan
Prinsip-prinsip umum yang digunakan untuk merancang sistem pengamanan
adalah :
ü Disain
sistem harus bersifat public
ü Nilai
default harus tidak boleh diakses.
ü Mengecek
otoritas saat itu (current authority).
ü Memberikan setiap proses kemampuan akses
sesedikit mungkin.
ü proteksi harus sederhana, uniform dan
built in ke lapisan terbawah dari sistem.
ü Skema pengamanan harus dapat diterima
secara psikologis.
6.
User Authentication
Masalah yang berhubungan dengan identifikasi user ketika login disebut user authentication. Ini mencakup
sesuatu yang diketahui, yang dimiliki dan yang digunakan oleh user.
Password
Bentuk autentikasi yang paling banyak digunakan
adalah PASSWORD. Ketika digunakan,
password dalam bentuk terenkripsi. Autentikasi
password mudah untuk dipecahkan.
Buktinya :
Morris dan thompson (1979) meneliti password pada
sistem UNIX, dengan mengcompile daftar mirip password : nama depan, nama
belakang, nama jalan, nama kota, kata dari kamus, nomor plat mobil dan string
pendek dari huruf acak. Kemudian mengenkripsi menggunakan algoritma enkripsi
password dan mengecek apakah ada password yang terenkripsi sama dengan daftar
yang dibuatnya.
Hasilnya menunjukkan bahwa lebih dari 86 % password cocok dengan daftarnya.
Cara sistem
menanggulangi password yang mudah dipecahkan dengan :
ü Memberikan peringatan ketika pembuatan password berlangsung, seperti
peringatan ketika nama dan passwordnya bernilai sama.
ü Kadangkala sistem operasi mengharuskan
untuk mengganti password dalam jangka
waktu tertentu.
ü Tidak
menampakkan tulisan
aslinya ketika proses pemasukan password.
ü Tidak menyimpan password asli, tetapi
dalam bentuk terenkripsi.
ü Menerapkan suatu pertanyaan dan menyimpan pertanyaan dan jawabannya, sementara
passwordnya hanya diingat oleh user.
ü Challenge-response, menerapkan algoritma tertentu. Contohnya
penggunaan "pangkat-2". Komputer bertanya kepada user ketika login.
Argumen komputer 7, maka user user bisa masuk kedalam sistem jika menjawab 49.
Algoritma dapat diatur berubah setiap pagi, siang, malam atau beda hari atau
beda minggu atau beda mesin dll.
Identifikasi Fisik
Ada beberapa contoh :
ü Cara fisik berupa kartu plastik dengan pita magnetik. Bentuk fisik ini dapat digabung bersama password
sehingga user berhasil login jika mempunyai kartu dan mengetahui password.
ü Fingerprint (sidik jari) atau voiceprint (sidik suara)
dengan metode direct visual recognition.
ü Signature Analysis. User membuat tanda tangan dengan pen
pada terminal komputer.
ü Analisis Panjang jari. User memasukkan tangan kedalam
alat lalu panjang jari dibaca serta dicocokkan dengan database didalam sistem.
ü Untuk kasus pengamanan yang extra ketat
è Ada tulisan "Untuk masuk, silakan berikan contoh
anda disini", user diwajibkan memberikan urine lalu dicek dengan metode
urinalysis.
è Spectrographic analysis, dengan cara user menekan jarinya
diatas benda tajam, agar diperoleh darahnya. Kemudian darahnya dianalisis,
sesuai dengan data atau tidak.
E.
MEKANISME PROTEKSI
1.
Domain Proteksi
Sistem komputer mengandung berbagai object yang perlu diproteksi. Object
ini dapat berupa hardware, dan software.
Domain
Adalah himpunan pasangan dari (object,right).
Sedangkan Right dalam hal ini adalah
kemampuan untuk membentuk suatu operasi.
Misalkan, ada 3
Domain dengan jenis Right [Read,Write,eXecute]. Printer1 berada pada dua domain
dengan satu jenis right, tapi sebenarnya bisa juga berada didua domain dengan
jenis right yang berbeda.
Pada sistem UNIX,
Domain suatu proses didefinisikan oleh UID dan GID. Dengan kombinasi UID dan
GID, akan dapat membuat daftar seluruh object untuk diakses, baik Read, Write
maupun eXecute. Setiap proses di UNIX memiliki dua bagian : bagian user dan bagian kernel. Ketika suatu
proses mengerjakan sistem call, proses akan berpindah dari bagian user ke
bagian kernel. Kernel dapat mengakses object yang berbeda dari object yang
diakses oleh user.
Bagaimana
caranya sistem mengetahui object tertentu dimiliki oleh domain tertentu ?
DOMAIN
|
O B J E C T
|
|||||||
File1
|
File2
|
File3
|
File4
|
File5
|
File6
|
Printer1
|
Plotter2
|
|
1
|
Read
|
Read
Write
|
||||||
2
|
Read
|
Read
Write
Execute
|
Read
Write
|
Write
|
||||
3
|
Read
Write
Execute
|
Write
|
Write
|
Gambar
22. Matriks proteksi.
Kemudian
3 domain sebagai object pada Tabel berikut.
DOMAIN
|
O B J E C T
|
||||||||||
File1
|
File2
|
File3
|
File4
|
File5
|
File6
|
Printer1
|
Plotter2
|
Domain1
|
Domain2
|
Domain3
|
|
1
|
Read
|
Read
Write
|
Enter
|
||||||||
2
|
Read
|
Read
Write
Execute
|
Read
Write
|
Write
|
|||||||
3
|
Read
Write
Execute
|
Write
|
Write
|
Gambar 23. Matriks proteksi.dengan domain
sebagai object.
Proses pada
domain 1 bisa berpindah ke domain 2 tetapi jika telah pindah tidak dapat
kembali ke domain semula. Cara ini sama dengan menjalankan SETUID di UNIX.
2.
Daftar Kendali Akses
Contoh pada gambar 4-30 akan memakan ruang disk. Cara mengatasinya dengan :
Menyimpan berdasarkan Kolom. Cara ini mengandung apa yang menunjukkan
setiap object daftar yang urut yang mengandung semua domain yang dapat
mengakses object, dan caranya. Daftar ini disebut Access Control List (ACL).
Sistem UNIX, menyediakan 3 bit, rwx, per file untuk pemilik (owner), grup
pemilik (owner's group), dan lainnya (others). Skema ini berupa ACL tetapi
dimampatkan menjadi 9 bit saja dan menggambarkan object yang menyatakan siapa
yang dapat mengakses dan caranya bagaimana. Contoh : rwxr--r-- /usr/ast/mail
3. Kemampuan (Capability)
Cara membagi berdasarkan Baris, dari
gambar 23.
Setiap proses yang ditunjuk merupakan
suatu daftar object yang bisa diakses, selama bisa diakses berdasarkan operasi
yang diperbolehkan didalam domainnya, Daftar ini disebut Capability List (C-List) dan setiap item didalamnya disebut Capability.
Lihat Tabel berikut.
Type
|
Rights
|
Object
|
|
0
|
File
|
R - -
|
Pointer to
File3
|
1
|
File
|
RWX
|
Pointer to
File4
|
2
|
File
|
RW -
|
Pointer to
File5
|
3
|
Printer
|
- W -
|
Pointer to
Printer1
|
Daftar Kemampuan (capability List) untuk domain 2 dari gambar 22.
C-List harus dijaga dari user
yang ingin merusaknya dengan metode :
1. Tagged Architecture, rancangan hardware
dimana setiap word memory mempunyai bit tambahan (tag) yang memberitahukan
bahwa word mengandung Capability atau tidak.
2. Menjaga
C-List tetap berada didalam sistem operasi.
3. Menempatkan
C-List di ruang disk user, tetapi mengenkripsi setiap capability dengan kunci
rahasia yang tidak diketahui oleh user.
Capability biasanya mempunyai Generic Right yang dapat digunakan untuk
semua object, contoh :
ü
Copy
capability : membuat capability baru untuk object sama
ü
Copy
object : membuat duplikat object dengan capability baru.
ü
Remove
capability : menghapus masukan dari C-List, object tidak terpengaruh.
ü
Destroy
object : menghilangkan object dan capability secara permanen.
Beberapa sistem capability diatur sebagai kumpulan
modul, dengan Type Manager Module
(TMM) untuk setiap jenis object. Kadang cara ini menimbulkan masalah karena TMM
hanya sebuah program, pemiliknya dapat membentuk hanya beberapa operasi saja
pada file dan tidak bisa mencapai representasi internal (misalnya i-node).
Solusinya
Hydra dengan teknik Right Amplification.
TMM diberi kerangka right yang lebih kepada object daripada capability.
Masalah lain
pada sistem capability adalah sulitnya menghilangkan akses ke object. Solusinya dengan
Skema uang digunakan didalam Amoeba.
Setiap object mengandung angka acak yang panjang, yang juga ada di capability.
Ketika capability digunakan, kedua angka tsb dibandingkan. Operasi boleh
dijalankan bila kedua angkanya sama.
4. Model Proteksi
Harrison membentuk 6 operasi primitif pada matriks proteksi, yaitu :
Create Object, Delete Object, Create Domain,
Delete Domain, Insert Right dan Remove Right. Keenam operasi tsb
dikombinasikan kedalam Protection
Command, yaitu perintah-perintah proteksi dimana program user dapat
menjalankannya untuk merubah matriks.
Matriks
menentukan apakah suatu proses didalam domain yang dapat melakukan sesuatu,
bukan apakah suatu proses diberi kemampuan untuk melakukan sesuatu.
Contoh sederhana pada tabel di bawah
ini.
Object
|
Object
|
||||||
Compiler
|
MailBox7
|
Secret
|
Compiler
|
MailBox7
|
Secret
|
||
Eric
|
Read
Execute
|
Eric
|
Read
Execute
|
||||
Henry
|
Read
Execute
|
Read
Write
|
Henry
|
Read
Execute
|
Read
Write
|
||
Robert
|
Read
Execute
|
Read
Write
|
Robert
|
Read
Execute
|
Read
|
Read
Write
|
|
(a)
|
(b)
|
Dimaksudkan untuk kebijakan proteksi.
Henry bisa membaca dan menyimpan mailbox7, Robert bisa membaca dan
menyimpan secret, ketiga user bisa membaca dan menjalankan compiler
Robert bisa juga mengakses mailbox7, yang sebenarnya
dia tidak diberi hak. Jika Henry mencoba untuk membacanya (Read), sistem operasi akan menolak permintaan aksesnya karena
sistem operasi tidak tahu bahwa kondisi matriks tsb tidak diautorisasi.
Model Lampson mencakup 3 proses yang dapat
diterapkan untuk sistem timesharing : Proses pertama adalah Client, yang menginginkan proses kedua
(yaitu Server) untuk membentuk suatu
pekerjaan. Client dan Server tidak saling percaya. Proses ketiga yaitu Collaborator, yang bekerja sama dengan
server untuk mencuri data rahasia Client. Biasanya Server dan Collaborator dimiliki
oleh orang yang sama.
Tujuan yang ingin dicapai adalah "Tidak Mungkin" Server bisa
membocorkan informasi Collaborator yang secara sah diterima dari Client.
Lampson menyebut hal ini sebagai Confinement Problem.
Dengan matriks proteksi, dapat dijamin bahwa
Server tidak bisa berkomunikasi dengan Collaborator dengan cara menulis kedalam
suatu file dimana Collaborator mempunyai hak akses read. Juga bisa dijamin bahwa Server tidak bisa berkomunikasi
dengan Collaborator menggunakan mekanisme komunikasi antar proses.
Sayangnya, channel komunikasi yang tersamar bisa
ada, seperti Server bisa berkomunikasi dengan deretan bit biner. Untuk
mengirimkan bit 1, Server melakukan perhitungan (menyibukkan diri) selama
selang waktu tertentu. Untuk mengirimkan bit 0, Server tidak melakukan apa-apa
(sleep) dalam selang waktu yang sama. Collaborator bisa mendeteksi aliran bit
tsb dengan memonitor respon waktunya. Channel komunikasi ini dikenal sebagai Covert Channel.
Covert Channel merupakan channel yang penuh dengan
noise, mengandung banyak informasi tambahan, tetapi informasi sebenarnya dapat
diperoleh dengan menggunakan Error
Correction Code (seperti Hamming Code).
0 komentar:
Posting Komentar