keamanan Anda.
pengendalian Akses
Di bagian ini kita membahas bagaimana melindungi objek umum, seperti file, tabel, akses ke
perangkat keras atau koneksi jaringan, dan sumber daya lainnya. Secara umum, kami menginginkan
struktur yang fleksibel, sehingga pemakai tertentu dapat memakai sumber daya dalam
satu cara (misalnya, hanya-baca), yang lain dengan cara yang berbeda (misalnya, mengizinkan
modifikasi), dan yang lainnya tidak sama sekali. Kami menginginkan teknik yang kuat, mudah
dipakai , dan efisien.
Kita mulai dengan paradigma pengendalian akses dasar, diartikulasikan oleh Scott Graham dan Peter
Denning : Subjek diizinkan untuk mengakses objek dalam mode tertentu, dan hanya akses resmi
yang diizinkan.
• Subyek yaitu pemakai manusia, sering diwakili oleh program pengganti yang berjalan atas
nama pemakai .
• Objek yaitu hal-hal di mana suatu tindakan dapat dilakukan: File, tabel, program, objek memori,
perangkat keras, string, bidang data, koneksi jaringan, dan prosesor yaitu contoh objek. Begitu
juga pemakai , atau lebih tepatnya program atau proses yang mewakili pemakai , sebab
sistem operasi (program yang mewakili administrator sistem) dapat bertindak atas pemakai ,
misalnya, memungkinkan pemakai untuk menjalankan program, menghentikan pemakai ,
atau memberikan hak istimewa untuk pemakai .
• Mode akses yaitu tindakan subjek yang dapat dipengendalian pada objek, termasuk, namun tidak
terbatas pada, membaca, menulis, memodifikasi, menghapus, mengeksekusi, membuat,
menghancurkan, menyalin, mengekspor, mengimpor, dan sebagainya.
Pemisahan yang efektif akan menjaga subjek yang tidak berwenang dari akses yang tidak sah ke
objek, namun celah pemisahan harus dilewati untuk subjek dan mode yang berwenang. Di bagian
ini kami mempertimbangkan cara untuk mengizinkan semua dan hanya akses yang diizinkan.
Kebijakan Akses
pengendalian akses yaitu proses mekanis, mudah diimplementasikan oleh tabel dan proses komputer:
Subjek tertentu dapat atau tidak dapat mengakses objek tertentu dengan cara tertentu. Mendasari
keputusan langsung yaitu keputusan yang kompleks dan bernuansa yang aksesnya harus diizinkan;
keputusan ini didasarkan pada kebijakan keamanan formal atau informal.
Keputusan pengendalian akses (atau tidak boleh) dibuat secara tiba-tiba. Pat mendapatkan akses ke file ini
sebab dia mengerjakan proyek yang membutuhkan data; Sol yaitu administrator dan harus dapat
menambah dan menghapus pemakai untuk sistem. Memiliki basis menyederhanakan pembuatan
keputusan serupa untuk pemakai dan objek lain. Kebijakan juga menyederhanakan penetapan
aturan pengendalian akses, sebab hanya mencerminkan kebijakan yang ada.
Jadi, sebelum mencoba menerapkan pengendalian akses, organisasi perlu meluangkan waktu untuk
mengembangkan kebijakan keamanan tingkat yang lebih tinggi, yang kemudian akan mendorong
semua aturan pengendalian akses.
Implementasi Kebijakan yang Efektif
Melindungi objek melibatkan beberapa tujuan yang saling melengkapi.
• Periksa setiap akses. Kami mungkin ingin mencabut hak istimewa pemakai untuk mengakses
suatu objek. Jika sebelumnya kami telah mengizinkan pemakai untuk mengakses objek, kami
tidak bermaksud bahwa pemakai harus mempertahankan akses tak terbatas ke objek. Bahkan,
dalam beberapa situasi, kami mungkin ingin mencegah akses lebih lanjut segera sesudah kami
mencabut otorisasi, misalnya, jika kami mendeteksi pemakai yang menyamar. Untuk alasan
ini, kita harus bertujuan untuk memeriksa setiap akses oleh pemakai ke suatu objek.
• Terapkan hak istimewa paling rendah. Prinsip hak istimewa terkecil menyatakan bahwa
subjek harus memiliki akses ke jumlah objek terkecil yang diperlukan untuk melakukan beberapa
tugas. Bahkan jika informasi tambahan tidak berguna atau tidak berbahaya jika subjek memiliki
akses, subjek tidak boleh memiliki akses tambahan itu. Misalnya, sebuah program tidak boleh
memiliki akses ke alamat memori absolut yang diterjemahkan oleh referensi nomor halaman,
meskipun program tidak dapat memakai alamat ini dengan cara yang efektif. Tidak
mengizinkan akses ke objek yang tidak perlu menjaga dari kelemahan keamanan jika bagian
dari mekanisme perlindungan gagal.
• Verifikasi pemakaian yang dapat diterima. Kemampuan untuk mengakses yaitu keputusan
ya atau tidak. namun yang sama pentingnya yaitu memeriksa apakah aktivitas yang akan
dilakukan pada suatu objek sudah sesuai. Misalnya, struktur data seperti tumpukan memiliki
operasi tertentu yang dapat diterima, termasuk push, pop, clear, dan sebagainya. Kita mungkin
ingin tidak hanya mengontrol siapa atau apa yang memiliki akses ke tumpukan namun juga untuk
memastikan bahwa semua akses yang dilakukan yaitu akses tumpukan yang sah.
Pelacakan/Tracking
• Verifikasi pemakaian yang dapat diterima. Kemampuan untuk mengakses yaitu keputusan
ya atau tidak. namun yang sama pentingnya yaitu memeriksa apakah aktivitas yang akan
dilakukan pada suatu objek sudah sesuai. Misalnya, struktur data seperti tumpukan memiliki
operasi tertentu yang dapat diterima, termasuk push, pop, clear, dan sebagainya. Kita mungkin
ingin tidak hanya mengontrol siapa atau apa yang memiliki akses ke tumpukan namun juga untuk
memastikan bahwa semua akses yang dilakukan yaitu akses tumpukan yang sah.
Menerapkan kebijakan yang tepat bukanlah akhir dari administrasi akses. Terkadang administrator
perlu meninjau kembali kebijakan akses untuk menentukan apakah itu berfungsi sebagaimana
mestinya. Apakah pelaku telah ada untuk waktu yang lama dan telah memperoleh sejumlah
besar hak yang tidak lagi dibutuhkan? Apakah begitu banyak pemakai memiliki akses ke satu objek
yang tidak lagi perlu dikendalikan? Atau haruskah itu dipecah menjadi beberapa objek sehingga
individu dapat diizinkan mengakses hanya bagian yang mereka butuhkan? Administrator perlu
mempertimbangkan pertanyaan semacam ini pada kesempatan untuk menentukan apakah kebijakan
dan implementasi melakukan apa yang seharusnya. Kami mengeksplorasi sisi manajemen dalam
mendefinisikan kebijakan keamanan di Bab 10, namun kami meninjau beberapa masalah di sini
sebab memiliki pengaruh teknis pada pengendalian akses.
Granularitas
Yang kami maksud dengan granularity yaitu kehalusan atau kekhususan pengendalian akses. Ini yaitu
spektrum: Di satu ujung Anda dapat mengontrol akses ke setiap bit atau byte, setiap kata dalam
dokumen, setiap nomor pada spreadsheet, setiap foto dalam koleksi. Tingkat kekhususan itu
umumnya berlebihan dan rumit untuk diterapkan. Semakin halus granularitasnya, semakin besar
jumlah keputusan pengendalian akses yang harus dibuat, sehingga ada penalti kinerja. Di ekstrem lain
Anda cukup mengatakan Adam memiliki akses lengkap ke komputer C1. Pendekatan itu mungkin
berhasil jika komputer hanya untuk dipakai Adam, namun jika komputer C1 dipakai bersama,
maka sistem tidak memiliki dasar untuk mengontrol atau mengatur pembagian itu. Dengan demikian,
titik tengah yang masuk akal harus diterapkan.
Biasanya file, program, atau ruang data yaitu unit terkecil yang aksesnya dikendalikan. Namun,
perhatikan bahwa aplikasi dapat mengimplementasikan pengendalian aksesnya sendiri. Jadi, misalnya,
seperti yang kami jelaskan di Bab 7, sistem manajemen basis data dapat memiliki akses ke basis
data yang lengkap, namun sistem ini kemudian mengukir basis data menjadi unit yang lebih
kecil dan membagi akses: pemakai ini dapat melihat nama namun tidak gaji, pemakai ini
dapat hanya melihat data karyawan di kantor barat.
Perangkat keras, blok memori, ruang pada disk tempat kode program disimpan, aplikasi khusus,
semua ini kemungkinan merupakan objek yang aksesnya dikendalikan.
Akses Log
sesudah membuat keputusan akses, sistem bertindak untuk mengizinkan akses itu dan meninggalkan
pemakai dan objek untuk menyelesaikan transaksi. Sistem juga mencatat akses mana yang
telah diizinkan, menciptakan apa yang disebut log audit. Log ini dibuat dan dipelihara oleh sistem,
dan disimpan untuk analisis selanjutnya. Beberapa alasan untuk akses logging yaitu sebagai
berikut:
• Catatan akses dapat membantu merencanakan peralatan baru atau yang ditingkatkan, dengan
menunjukkan item mana yang telah banyak dipakai .
• Jika sistem gagal, catatan ini dapat menunjukkan akses apa yang sedang berlangsung dan
mungkin membantu mengidentifikasi penyebab kegagalan.
• Jika pemakai menyalahgunakan objek, log akses menunjukkan dengan tepat objek mana yang
diakses pemakai .
• Dalam hal kompromi eksternal, log audit dapat membantu mengidentifikasi bagaimana
penyerang memperoleh akses dan item data mana yang diakses (dan sebab itu terungkap
atau dikompromikan). Data ini untuk analisis forensik sesudah fakta sangat membantu dalam
menangani insiden besar.
Sebagai bagian dari aktivitas pengendalian akses, sistem membangun dan melindungi log audit ini. Jelas,
granularity penting: Sebuah log yang mencatat setiap byte memori yang diakses terlalu panjang
untuk menjadi banyak nilai praktis, namun log yang mengatakan “8:01 pemakai menyalakan sistem;
17:21 pemakai mematikan sistem” mungkin berisi terlalu sedikit detail untuk membantu.
Pada bagian berikutnya kami mempertimbangkan mekanisme perlindungan yang sesuai untuk objek
umum dari jenis yang tidak ditentukan, seperti jenis objek yang tercantum di atas. Untuk membuat
penjelasan lebih mudah dipahami, terkadang kita memakai contoh objek tertentu, seperti file.
Namun, perhatikan bahwa mekanisme umum dapat dipakai untuk melindungi semua jenis objek
yang terdaftar.
Hak Istimewa Terbatas
Sistem yang melarang semua akses ke apa pun oleh siapa pun tentu saja mencapai kerahasiaan dan
integritas, namun sama sekali gagal dalam ketersediaan dan kegunaan. Jadi, kami mencari titik tengah
yang menyeimbangkan kebutuhan akan beberapa akses dengan risiko akses yang berbahaya dan
tidak pantas. Tentu saja, kami tidak mengharapkan pemakai atau proses memicu kerugian.
Namun menyadari bahwa tidak semua pemakai beretika atau bahkan kompeten dan bahwa tidak
semua proses berfungsi sebagaimana dimaksud, kami ingin membatasi paparan dari pemakai
yang berperilaku tidak semestinya atau proses yang tidak berfungsi. Hak istimewa terbatas yaitu
cara untuk membatasi eksposur itu.
Hak istimewa terbatas yaitu konsep manajemen, bukan pengendalian teknis. Proses menganalisis
pemakai dan menentukan hak istimewa yang mereka butuhkan yaitu langkah pertama yang
diperlukan untuk memberi otorisasi dalam batasan ini . sesudah menetapkan batasan, kami
beralih ke teknologi pengendalian akses untuk menerapkan batasan ini . Dalam Bab 3 kami kembali
mengangkat konsep hak istimewa terbatas saat kami menjelaskan desain dan implementasi
program yang menjamin keamanan. Prinsip desain keamanan yang pertama kali ditulis oleh Jerome
Saltzer dan Michael Schroeder [SAL75] menjelaskan keuntungan dari membatasi hak istimewa yang
dipakai pemakai dan program mereka untuk dijalankan.
Menerapkan pengendalian Akses
pengendalian akses sering dilakukan oleh sistem operasi. Hanya sistem operasi yang dapat mengakses
objek primitif, seperti file, untuk mengontrolnya, dan sistem operasi membuat dan menghentikan
program yang mewakili pemakai (subjek). Namun, desain perangkat keras saat ini tidak selalu
mendukung sistem operasi dalam mengimplementasikan pengendalian akses yang terdiferensiasi dengan
baik atau fine-grained. Sistem operasi biasanya tidak melihat di dalam file atau objek data, misalnya,
sehingga tidak dapat melakukan pengendalian akses tingkat baris atau elemen dalam database. Juga,
sistem operasi tidak dapat dengan mudah membedakan antara jenis lalu lintas jaringan. Dalam penelitian
Kasus ini, sistem operasi tunduk pada manajer database atau perangkat jaringan dalam menerapkan
beberapa aspek pengendalian akses. Dengan jenis hak istimewa yang terbatas untuk dialokasikan, sistem
operasi tidak dapat dengan mudah mengontrol manajer database dan memungkinkan manajer
database mengontrol pemakai . Dengan demikian, desain perangkat keras saat ini membatasi
beberapa desain sistem operasi.
Monitor Referensi
James Anderson dan komite penelitian nya (Anderson:72) memberi nama dan struktur pada versi
digital dari sebuah konsep yang telah ada selama ribuan tahun. Untuk melindungi benteng abad
pertengahan mereka, para penguasa memiliki satu gerbang yang sangat dilindungi sebagai satu-
satunya cara masuk. Para jenderal mengepung markas pasukan dengan benteng dan penjaga jaga.
Para bankir menyimpan uang tunai dan barang-barang berharga lainnya di brankas dengan pintu
yang tidak dapat ditembus yang hanya dimiliki oleh segelintir orang tepercaya. Penjahat dongeng
mengunci gadis-gadis di menara. Semua contoh ini menunjukkan pengendalian akses yang kuat sebab
desain yang gagal-aman.
Dalam formulasi Anderson untuk komputer, pengendalian akses bergantung pada kombinasi perangkat
keras dan perangkat lunak yang:
• selalu dipanggil; memvalidasi setiap upaya akses
• kebal dari gangguan
• pasti benar
Anderson menyebut konstruksi ini sebagai monitor referensi. Harus jelas mengapa ketiga sifat ini
penting.
Monitor referensi yaitu gagasan, bukan alat yang dapat Anda beli untuk dicolokkan ke port. Itu
bisa disematkan dalam aplikasi (untuk mengontrol objek aplikasi), bagian dari sistem operasi (untuk
objek yang dikelola sistem) atau bagian dari alat. Namun, Anda akan melihat tiga sifat yang sama
ini muncul berulang kali dalam artikel ini. Untuk memiliki monitor referensi yang efektif, kita perlu
mempertimbangkan cara yang efektif dan efisien untuk menerjemahkan kebijakan, dasar validasi, ke
dalam tindakan. Bagaimana kami merepresentasikan kebijakan dalam data biner memiliki implikasi
pada seberapa efisien dan bahkan seberapa efektif mediasinya.
Pada bagian berikutnya kami menyajikan beberapa model tentang bagaimana hak akses dapat
dipertahankan dan diimplementasikan oleh monitor referensi.
Direktori pengendalian Akses
Salah satu cara sederhana untuk melindungi suatu objek yaitu dengan memakai mekanisme
yang bekerja seperti direktori file. Bayangkan kita mencoba melindungi file (kumpulan objek) dari
pemakai sistem komputasi (kumpulan subjek). Setiap file memiliki pemilik unik yang memiliki hak
akses "pengendalian " (termasuk hak untuk menyatakan siapa yang memiliki akses apa) dan untuk mencabut
akses setiap orang kapan saja. Setiap pemakai memiliki direktori file, yang mencantumkan semua
file yang dapat diakses oleh pemakai ini .
Jelas, tidak ada pemakai yang diizinkan untuk menulis di direktori file, sebab itu akan menjadi
cara untuk memalsukan akses ke file. Oleh sebab itu, sistem operasi harus memelihara semua
direktori file, di bawah perintah dari pemilik file. Hak yang jelas untuk file yaitu membaca, menulis,
dan mengeksekusi yang umum pada banyak sistem bersama. Selanjutnya, hak lain, pemilik, dimiliki
oleh pemilik, yang mengizinkan pemakai ini untuk memberikan dan mencabut hak akses.
Gambar 2-8 menunjukkan contoh direktori file.
Pendekatan ini mudah diterapkan sebab memakai satu daftar per pemakai , yang menyebutkan
semua objek yang diizinkan untuk diakses oleh pemakai . Namun, beberapa kesulitan dapat muncul.
Pertama, daftar menjadi terlalu besar jika banyak objek bersama, seperti pustaka subprogram
atau tabel umum pemakai , dapat diakses oleh semua pemakai . Direktori setiap pemakai
harus memiliki satu entri untuk setiap objek bersama ini , bahkan jika pemakai tidak berniat
mengakses objek ini . Penghapusan harus tercermin di semua direktori.
Kesulitan kedua yaitu pencabutan akses. Jika pemilik A telah memberikan hak kepada pemakai B
untuk membaca file F, entri untuk F dibuat dalam direktori untuk B. Pemberian akses ini menyiratkan
tingkat kepercayaan antara A dan B. Jika A kemudian mempertanyakan kepercayaan itu, A dapat
ingin mencabut hak akses B. Sistem operasi dapat dengan mudah menanggapi permintaan tunggal
untuk menghapus hak B untuk mengakses F, sebab tindakan itu melibatkan penghapusan satu
entri dari direktori tertentu. namun jika A ingin menghapus hak setiap orang untuk mengakses F,
sistem operasi harus mencari setiap direktori individu untuk entri F, suatu aktivitas yang dapat
memakan waktu pada sistem yang besar. Misalnya, sistem besar atau jaringan sistem yang lebih
kecil dapat dengan mudah memiliki 5.000 hingga 10.000 akun aktif. Selain itu, B mungkin telah
memberikan hak akses untuk F ke pemakai lain C, situasi yang dikenal sebagai propagasi hak
akses, sehingga A mungkin tidak mengetahui bahwa akses C ada dan harus dicabut. Masalah ini
sangat serius dalam jaringan.
Kesulitan ketiga melibatkan nama samaran. Pemilik A dan B mungkin memiliki dua file berbeda
bernama F, dan mereka berdua mungkin ingin mengizinkan akses oleh S. Jelas, direktori untuk
S tidak dapat berisi dua entri dengan nama yang sama untuk file yang berbeda. Oleh sebab itu,
S harus mampu mengidentifikasi secara unik F untuk A (atau B). Salah satu pendekatan yaitu
memasukkan penunjukan pemilik asli seolah-olah itu yaitu bagian dari nama file, dengan notasi
seperti A:F (atau B:F).
Misalkan, bagaimanapun, S ingin memakai nama selain F untuk membuat isi file lebih jelas.
Sistem dapat mengizinkan S untuk memberi nama F dengan nama apa pun yang unik untuk
direktori S. Kemudian, F dari A dapat dipanggil Q ke S. Seperti yang ditunjukkan pada Gambar
2-9, S mungkin lupa bahwa Q yaitu F dari A, dan jadi S meminta akses lagi dari A untuk F. Tapi
sekarang A mungkin lebih percaya pada S, jadi A mentransfer F dengan hak yang lebih besar dari
sebelumnya. Tindakan ini membuka kemungkinan bahwa satu subjek, S, mungkin memiliki dua
set hak akses yang berbeda ke F, satu di bawah nama Q dan satu di bawah nama F. Dengan cara
ini, mengizinkan nama samaran dapat memicu beberapa izin yang belum tentu konsisten.
Dengan demikian, pendekatan direktori mungkin terlalu sederhana untuk sebagian besar situasi
perlindungan objek.
Gambar 2.9 Hak Akses Ambigu
Matriks pengendalian Akses
Kita dapat menganggap direktori sebagai daftar objek yang dapat diakses oleh satu subjek, dan
daftar akses sebagai tabel yang mengidentifikasi subjek yang dapat mengakses satu objek. Data
dalam dua representasi ini setara, perbedaannya yaitu kemudahan pemakaian dalam situasi
tertentu.
Sebagai alternatif, kita dapat memakai matriks pengendalian akses, yang ditunjukkan pada Gambar
2-10, sebuah tabel di mana setiap baris mewakili subjek, setiap kolom mewakili objek, dan setiap
entri yaitu kumpulan hak akses untuk subjek itu ke objek itu.
Gambar 2.10 Matriks pengendalian Akses
Contoh representasi matriks pengendalian akses yang lebih rinci ditunjukkan pada Tabel 2-8. Hak akses
yang ditunjukkan pada tabel ini yaitu O, own; R, baca; W, tulis; dan X, jalankan. Secara
umum, matriks pengendalian akses jarang (artinya sebagian besar sel kosong): Sebagian besar subjek
tidak memiliki hak akses ke sebagian besar objek. Matriks akses dapat direpresentasikan sebagai
daftar tiga kali lipat, masing-masing memiliki bentuk subjek, objek, hak, seperti yang ditunjukkan
pada Tabel 2-9.
Tabel 2.8 Matriks pengendalian Akses
Tabel 2.9 Daftar Tiga Kali pengendalian Akses
Representasi ini mungkin lebih efisien dibandingkan matriks pengendalian akses sebab tidak ada triple
untuk setiap sel kosong dari matriks (seperti USER T, Bibliog, – ). Meskipun triple dapat diurutkan
berdasar subjek atau objek sesuai kebutuhan, pencarian sejumlah besar dari triple ini cukup
tidak efisien sehingga implementasi ini jarang dipakai .
Daftar pengendalian Akses
Representasi alternatif yaitu daftar
pengendalian akses; seperti yang ditunjukkan
pada Gambar 2-11, representasi ini sesuai
dengan kolom dari matriks pengendalian akses.
Ada satu daftar ini untuk setiap
objek, dan daftar ini menunjukkan
semua subjek yang harus memiliki
akses ke objek dan apa akses mereka.
Pendekatan ini berbeda dari daftar direktori
sebab ada satu daftar pengendalian akses per
objek; direktori dibuat untuk setiap mata
pelajaran. Meskipun perbedaan ini tampak
kecil, ada beberapa keuntungan signifikan
dari pendekatan ini.
Representasi daftar pengendalian akses dapat menyertakan hak default. Pertimbangkan subjek A dan
S, keduanya memiliki akses ke objek F. Sistem operasi akan mempertahankan hanya satu daftar
akses untuk F, menunjukkan hak akses untuk A dan S, seperti yang ditunjukkan pada Gambar 2-12.
Daftar pengendalian akses dapat menyertakan entri default umum untuk setiap pemakai . Dengan cara ini,
pemakai tertentu dapat memiliki hak eksplisit, dan semua pemakai lain dapat memiliki serangkaian
hak default. Dengan organisasi ini, semua pemakai sistem yang mungkin dapat berbagi file atau
program publik tanpa memerlukan entri untuk objek di direktori individu setiap pemakai .
Sistem operasi Multics memakai bentuk daftar pengendalian akses di mana setiap pemakai
termasuk dalam tiga kelas perlindungan: pemakai , grup, dan kompartemen. Penunjukan pemakai
mengidentifikasi subjek tertentu, dan penunjukan grup menyatukan subjek yang memiliki minat
yang sama, seperti menjadi rekan kerja dalam sebuah proyek. Kompartemen membatasi objek
yang tidak dipercaya; program yang dieksekusi di satu kompartemen tidak dapat mengakses objek
di kompartemen lain tanpa izin khusus. Kompartemen juga merupakan cara untuk mengumpulkan
objek yang terkait, seperti semua file untuk satu proyek.
Untuk melihat bagaimana jenis perlindungan ini dapat bekerja, anggaplah setiap pemakai yang
memulai akses ke sistem mengidentifikasi grup dan kompartemen yang dapat dipakai untuk
bekerja. Jika Adams masuk sebagai pemakai Adams di grup Decl dan kompartemen Art2, hanya
objek yang memiliki Adams-Decl-Art2 dalam daftar pengendalian akses yang dapat diakses dalam sesi.
Dengan sendirinya, mekanisme semacam ini akan terlalu membatasi untuk dapat dipakai .
Adams tidak dapat membuat file umum untuk dipakai dalam sesi apa pun. Lebih buruk lagi,
objek bersama tidak hanya harus mencantumkan Adams sebagai subjek yang sah namun juga harus
mencantumkan Adams di bawah semua kelompok yang dapat diterima dan semua kompartemen
yang dapat diterima untuk setiap kelompok.
Solusinya yaitu pemakaian kartu liar, yang berarti placeholder yang menunjuk "pemakai mana
pun" (atau "grup apa pun" atau "kompartemen apa pun"). Daftar pengendalian akses mungkin menentukan
akses oleh Adams-Decl-Art1, memberikan hak khusus kepada Adams jika bekerja dalam grup Decl
pada kompartemen Art1. Daftar mungkin juga menentukan Adams-*-Art1, artinya Adams dapat
mengakses objek dari grup mana pun di kompartemen Art1. Demikian juga, notasi *-Decl-* akan
berarti "pemakai mana pun dalam grup Decl di kompartemen mana pun." Penempatan yang
berbeda dari notasi wildcard * memiliki interpretasi yang jelas.
Unix memakai pendekatan serupa dengan izin pemakai -grup-dunia. Setiap pemakai termasuk
dalam grup pemakai terkait—siswa di kelas yang sama, pekerja di proyek bersama, atau anggota
departemen yang sama. Izin akses untuk setiap objek yaitu triple (u,g,w) di mana u yaitu untuk
hak akses pemakai , g untuk anggota grup lainnya, dan w untuk semua pemakai lain di dunia.
Daftar pengendalian akses dapat dipertahankan dalam urutan yang diurutkan, dengan * diurutkan
sebagai datang sesudah semua nama tertentu. Misalnya, Adams-Decl-* akan muncul sesudah semua
penunjukan kompartemen khusus untuk Adams. Pencarian izin akses berlanjut hanya sampai
pertandingan pertama. Dalam protokol, semua penunjukan eksplisit diperiksa sebelum wildcard di
posisi apa pun, sehingga hak akses tertentu akan didahulukan dibandingkan hak wildcard. Entri terakhir
pada daftar akses dapat berupa *-*-*, yang menentukan hak yang diizinkan untuk pemakai mana
pun yang tidak secara eksplisit ada dalam daftar akses. Dengan perangkat wildcard ini, objek publik
bersama dapat memiliki daftar akses yang sangat pendek, secara eksplisit menyebutkan beberapa
subjek yang seharusnya memiliki hak akses yang berbeda dari default.
Daftar Hak Istimewa
Daftar hak istimewa, kadang-kadang disebut direktori, yaitu deretan matriks akses, yang
menunjukkan semua hak istimewa atau hak akses untuk subjek tertentu (ditunjukkan pada Gambar
2-13). Salah satu keuntungan dari daftar hak istimewa yaitu kemudahan pencabutan: Jika pemakai
dihapus dari sistem, daftar hak istimewa menunjukkan semua objek yang dapat diakses pemakai
sehingga hak ini dapat dihapus dari objek.
Gambar 2.13 Daftar pengendalian Hak Istimewa
Kemampuan (Capability)
Sejauh ini, kami telah memeriksa skema
perlindungan di mana sistem operasi harus
melacak semua objek dan hak perlindungan.
namun pendekatan lain memberikan beberapa
beban pada pemakai . Misalnya, pemakai
mungkin diharuskan memiliki tiket atau pass
yang memungkinkan akses, seperti tiket atau
kartu identitas yang tidak dapat digandakan.
Secara lebih formal, kami mengatakan bahwa
kapabilitas yaitu tanda yang tidak dapat
dipalsukan yang memberikan pemiliknya hak tertentu atas suatu objek. Sistem Multics, dan Hydra
memakai kemampuan untuk pengendalian akses. Seperti yang ditunjukkan pada Gambar 2-14,
kapabilitas hanyalah satu pengendalian akses tiga kali lipat dari subjek, objek, dan hak. Secara teori, subjek
dapat membuat objek baru dan dapat menentukan operasi yang diizinkan pada objek ini .
Misalnya, pemakai dapat membuat objek seperti file, segmen data, atau subproses dan juga dapat
menentukan jenis operasi yang dapat diterima, seperti membaca, menulis, dan mengeksekusi. namun
pemakai juga dapat membuat objek yang benar-benar baru, seperti struktur data baru, dan dapat
menentukan jenis akses yang sebelumnya tidak diketahui oleh sistem.
Pikirkan kemampuan sebagai tiket yang memberikan izin kepada subjek untuk memiliki jenis akses
tertentu ke suatu objek. Untuk kemampuan menawarkan perlindungan yang solid, tiket harus tidak
dapat dipalsukan. Salah satu cara untuk membuatnya tidak dapat dimaafkan yaitu dengan tidak
memberikan tiket secara langsung kepada pemakai . Sebaliknya, sistem operasi menyimpan
semua tiket atas nama pemakai . Sistem operasi mengembalikan kepada pemakai sebuah
penunjuk ke struktur data sistem operasi, yang juga menautkan ke pemakai . Kemampuan hanya
dapat dibuat dengan permintaan khusus dari pemakai ke sistem operasi. Setiap kemampuan juga
mengidentifikasi akses yang diizinkan. Atau, kemampuan dapat dienkripsi di bawah kunci yang hanya
tersedia untuk mekanisme pengendalian akses. Jika kemampuan terenkripsi berisi identitas pemilik yang
sah, pemakai A tidak dapat menyalin kemampuan dan memberikannya kepada pemakai B.
Salah satu kemungkinan hak akses ke suatu objek yaitu transfer atau propagasi. Subjek yang
memiliki hak ini dapat memberikan salinan kemampuan kepada subjek lain. Pada gilirannya, masing-
masing kemampuan ini juga memiliki daftar jenis akses yang diizinkan, salah satunya mungkin juga
transfer. Dalam hal ini, proses A dapat mengirimkan salinan kemampuan ke B, yang kemudian dapat
meneruskan salinan ke C. B dapat mencegah distribusi lebih lanjut dari kemampuan (dan sebab
itu mencegah penyebaran lebih lanjut dari hak akses) dengan menghilangkan hak transfer dari hak
yang diberikan dalam kemampuan ke C. B mungkin masih memberikan hak akses tertentu ke C,
namun bukan hak untuk menyebarkan hak akses ke subjek lain.
Saat proses dijalankan, ia beroperasi di domain atau ruang nama lokal. Domain yaitu kumpulan
objek yang dapat diakses oleh proses. Domain untuk pemakai pada waktu tertentu mungkin
mencakup beberapa program, file, segmen data, dan perangkat I/O seperti printer dan terminal.
Contoh domain ditunjukkan pada Gambar 2-15.
Gambar 2.15 Contoh Domain
Saat eksekusi berlanjut, proses dapat memanggil subprosedur, melewati beberapa objek yang
memiliki akses sebagai argumen ke subprosedur. Domain subprosedur tidak harus sama dengan
prosedur pemanggilannya; pada kenyataannya, prosedur pemanggilan hanya dapat melewatkan
beberapa objeknya ke subprosedur, dan subprosedur mungkin memiliki hak akses ke objek lain yang
tidak dapat diakses oleh prosedur pemanggilan, seperti yang ditunjukkan pada Gambar 2-16.
Gambar 2.16 Melewati Objek ke Domain
Penelepon juga dapat melewati hanya sebagian dari hak aksesnya untuk objek yang diteruskannya
ke subprosedur. Sebagai contoh, suatu prosedur dapat memberikan hak untuk membaca kepada
subprosedur namun tidak untuk mengubah nilai data tertentu.
sebab setiap kapabilitas mengidentifikasi satu objek dalam domain, kumpulan kapabilitas
mendefinisikan domain. saat suatu proses memanggil subprosedur dan meneruskan objek tertentu
ke subprosedur, sistem operasi membentuk tumpukan semua kemampuan prosedur saat ini. Sistem
operasi kemudian menciptakan kemampuan baru untuk subprosedur.
Secara operasional, kemampuan yaitu cara mudah untuk melacak hak akses subjek ke objek
selama eksekusi. Kemampuan didukung oleh tabel yang lebih komprehensif, seperti matriks pengendalian
akses atau daftar pengendalian akses. Setiap kali suatu proses berusaha memakai objek baru, sistem
operasi memeriksa daftar induk objek dan subjek untuk menentukan apakah objek ini dapat
diakses. Jika demikian, sistem operasi menciptakan kemampuan untuk objek itu.
Kemampuan harus disimpan dalam memori yang tidak dapat diakses oleh pemakai biasa. Salah
satu cara untuk mencapai ini yaitu dengan menyimpan kapabilitas dalam segmen yang tidak
ditunjuk oleh tabel segmen pemakai atau untuk memasukkannya ke dalam memori yang dilindungi
seperti dari sepasang register basis/batas. Pendekatan lain yaitu dengan memakai mesin
arsitektur yang ditandai untuk mengidentifikasi kemampuan sebagai struktur yang membutuhkan
perlindungan. Selama eksekusi, hanya kemampuan objek yang telah diakses oleh proses saat ini
yang tetap tersedia. Pembatasan ini meningkatkan kecepatan akses ke objek dapat diperiksa.
Kemampuan dapat dicabut. saat subjek penerbit mencabut suatu kapabilitas, tidak boleh ada
akses lebih lanjut di bawah kapabilitas yang dicabut ini . Tabel kapabilitas dapat berisi petunjuk
ke kapabilitas aktif yang muncul di bawahnya sehingga sistem operasi dapat melacak hak akses
apa yang harus dihapus jika kapabilitas dicabut. Masalah serupa yaitu menghapus kemampuan
untuk pemakai yang tidak lagi aktif.
Ketiga struktur dasar ini, direktori, matriks pengendalian akses dan subsetnya, serta kapabilitas, merupakan
dasar dari sistem pengendalian akses yang diterapkan saat ini. Terlepas dari implementasi mekanis dari
matriks pengendalian akses atau substrukturnya, dua model akses berhubungan lebih khusus dengan
tujuan pengendalian akses: menghubungkan akses ke peran subjek atau konteks akses. Kami menyajikan
model-model itu selanjutnya.
Procedure-Oriented Access Control
Salah satu tujuan dari pengendalian akses yaitu membatasi tidak hanya subjek yang memiliki akses
ke suatu objek, namun juga apa yang dapat mereka lakukan terhadap objek ini . Akses baca
versus tulis dapat dipengendalian dengan lebih mudah oleh sebagian besar aplikasi dan sistem operasi,
namun pengendalian yang lebih kompleks tidak mudah dicapai.
Paradigma Prosedural atau dikenal juga dengan paradigma imperatif memakai metode
pemrograman dengan mengeluarkan perintah yang akan dieksekusi oleh komputer. Baris demi
baris dieksekusi secara berurutan mulai dari baris atas hingga bawah, dimana semua data dan kode
digabung menjadi satu bagian dalam satu program. Menurut – Wikipedia Procedural Programming
(PP) yaitu paradigma pemrograman, yang berasal dari pemrograman terstruktur, berdasar
konsep pemanggilan prosedur. Procedural programming, juga dikenal sebagai rutinitas, subrutin, atau
fungsi, cukup berisi serangkaian langkah komputasi yang harus dilakukan. Bahasa pemrograman
prosedural utama pertama muncul sekitar tahun 1957–1964, termasuk Fortran, ALGOL, COBOL,
PL / I dan BASIC. Pascal dan C diterbitkan sekitar tahun 1970-1972.
Procedural programming merupakan pemrograman secara inline dengan memakai konsep
top-down approach dengan kata lain, PP dapat diartikan dengan memberi intruksi berupa tahapan
kegiatan untuk menyelesaikan suatu aktivitas tergantung procedures dan routines terkait.
Dengan Procedure-OrientedAccess Control, menyiratkan adanya prosedur yang mengontrol akses ke
objek (misalnya, dengan melakukan otentikasi pemakai nya sendiri untuk memperkuat perlindungan
dasar yang disediakan oleh sistem operasi dasar). Intinya, prosedur membentuk kapsul di sekitar
objek, hanya mengizinkan akses tertentu yang ditentukan.
Prosedur dapat memastikan bahwa akses ke objek dilakukan melalui antarmuka tepercaya. Misalnya,
baik pemakai maupun rutinitas sistem operasi umum mungkin tidak diizinkan mengakses langsung
ke tabel pemakai yang valid. Sebaliknya, satu-satunya akses yang diizinkan mungkin melalui tiga
prosedur: satu untuk menambahkan pemakai , satu untuk menghapus pemakai , dan satu untuk
memeriksa apakah nama tertentu sesuai dengan pemakai yang valid. Prosedur ini, terutama
menambah dan menghapus, dapat memakai pemeriksaan mereka sendiri untuk memastikan
bahwa panggilan ke mereka sah.
Proteksi berorientasi prosedur menerapkan prinsip penyembunyian informasi sebab cara
mengimplementasikan objek hanya diketahui oleh prosedur pengendalian objek. Tentu saja, tingkat
perlindungan ini membawa konsekuensi ketidakefisienan. Dengan perlindungan berorientasi
prosedur, tidak ada pemeriksaan akses yang sederhana dan cepat, bahkan jika objek ini
sering dipakai .
2.4.5 Role Based Access Control (RBAC)
Kami belum membedakan jenis pemakai , namun kami ingin beberapa pemakai (seperti administrator)
memiliki hak istimewa yang signifikan, dan kami ingin orang lain (seperti pemakai biasa atau tamu)
memiliki hak istimewa yang lebih rendah. Di perusahaan dan institusi pendidikan, ini bisa menjadi
rumit saat pemakai biasa menjadi administrator atau pembuat roti pindah ke grup pembuat
kandil. pengendalian akses berbasis peran memungkinkan kami mengaitkan hak istimewa dengan grup,
seperti semua administrator dapat melakukan ini atau pembuat candlestick dilarang melakukan itu.
Mengelola keamanan lebih mudah jika kita dapat mengontrol akses berdasar tuntutan pekerjaan,
bukan oleh orang. pengendalian akses mengikuti orang yang mengubah tanggung jawab, dan administrator
sistem tidak harus memilih pengaturan pengendalian akses yang sesuai untuk pelaku . Untuk detail
selengkapnya tentang nuansa pengendalian akses berbasis peran.
RBAC memberikan hak akses untuk roles bukan menerapkan hak akses pelaku atau subjek.
pemakai tidak bisa mengambil hak akses pemakai lain merupakan dasar perbedaan antara
RBAC dan DAC. Dalam organisasi, roles dibuat untuk fungsi kerja yang berbeda sesuai dengan
peran keanggotaan yang didasarkan pada kompetensi, tugas, dan kewenangan. Tugas keamanan
RBAC diberikan pada pengendalian akses sebagai prioritas tertinggi untuk mengontrol akses ke sumber
daya. Administrator sangat berperan dalam memberikan hak kepada pemakai , sehingga subjek
akan mendapatkan akses ke objek melalui role yang telah diberikan oleh administrator. Struktur
RBAC meliputi roles, permission, user, dan session. RBAC memerlukan penunggasan hak akses
untuk role pada setiap subjek, dengan cara menghubungkan subjek dengan role. Hak akses yang
ditugaskan ke roles akan dipakai oleh pemakai untuk membuat sebuah session, dan session
akan mendapatkan izin (permission) dari role yang didapatkan oleh pemakai untuk mengaktifkan
perannya (roles).
Dalam RBAC, role didefinisikan sebagai suatu gagasan yang merupakan dasar dari kebijakan
pengendalian akses (Sandhu & Bhamidipati, 1999). Role didefinisikan dalam ilmu perilaku sebagai pola
yang ditentukan sesuai perilaku pelaku dalam situasi tertentu berdasar posisi orang .
Kesimpulannya, penelitian kami tentang mekanisme pengendalian akses telah dengan sengaja berkembang
dari yang sederhana ke yang kompleks. Secara historis, sebab mekanisme telah memberikan
fleksibilitas yang lebih besar, mereka melakukannya dengan harga overhead yang meningkat.
Misalnya, mengimplementasikan kemampuan yang harus diperiksa pada setiap akses jauh lebih
sulit dibandingkan menerapkan struktur direktori sederhana yang diperiksa hanya pada akses pertama
subjek ke objek. Kompleksitas ini jelas bagi pemakai dan pelaksana. pemakai mengetahui fitur
perlindungan tambahan, namun pemakai yang naif mungkin merasa frustrasi atau terintimidasi sebab
harus memilih opsi perlindungan dengan sedikit pemahaman tentang kegunaannya. Kompleksitas
implementasi menjadi jelas dalam respons yang lambat terhadap pemakai . Keseimbangan antara
kesederhanaan dan fungsionalitas yaitu perjuangan berkelanjutan dalam keamanan.
2.5 Kriptografi
Selanjutnya kami memperkenalkan yang ketiga dari alat keamanan dasar kami, kriptografi. Dalam
bab ini kami hanya menyajikan dasar-dasar topik, cukup sehingga Anda dapat melihat bagaimana
hal itu dapat dipakai dan apa yang dapat dicapai. Kami meninggalkan internal untuk Bab 12
di akhir artikel ini. Kami melakukan itu sebab sebagian besar praktisi keamanan komputer akan
kesulitan untuk menjelaskan atau menerapkan kriptografi yang baik dari awal, yang membuat
poin kami bahwa Anda tidak perlu memahami internal kriptografi hanya untuk memakai nya
dengan sukses. Saat Anda membaca bab ini, Anda mungkin bertanya mengapa sesuatu dilakukan
dengan cara tertentu atau bagaimana sesuatu benar-benar bekerja. Bab ini berfokus pada alat dan
pemakaian nya, meninggalkan cara kerja internal untuk masa depan.
Enkripsi atau kriptografi—nama yang berarti penulisan rahasia—mungkin merupakan pertahanan
terkuat dalam gudang perlindungan keamanan komputer. Data yang disamarkan dengan baik tidak
dapat dengan mudah dibaca, dimodifikasi, atau dibuat-buat. Sederhananya, enkripsi seperti mesin:
Anda meletakkan data di satu ujung, roda gigi berputar dan lampu berkedip, dan Anda menerima
data yang dimodifikasi di ujung lainnya. Faktanya, beberapa perangkat enkripsi yang dipakai
selama Perang Dunia II beroperasi dengan roda gigi dan rotor yang sebenarnya, dan perangkat ini
efektif untuk menghalangi (walaupun tidak selalu mencegah) pihak yang berlawanan untuk membaca
pesan yang dilindungi. Sekarang mesin telah digantikan oleh algoritma komputer, namun prinsipnya
sama: Transformasi membuat data sulit untuk ditafsirkan oleh orang luar.
Kita mulai dengan memeriksa apa yang dilakukan enkripsi dan bagaimana cara kerjanya. Kami
memperkenalkan prinsip-prinsip dasar algoritma enkripsi, memperkenalkan dua jenis enkripsi
dengan kegunaan yang berbeda. sebab enkripsi yang lemah atau cacat hanya menciptakan
ilusi perlindungan, kami juga melihat bagaimana enkripsi bisa gagal. Kami menjelaskan secara
singkat teknik yang dipakai untuk menembus tutup pelindung untuk membatalkan keamanan.
berdasar jenis enkripsi dasar ini, kami menunjukkan cara menggabungkannya untuk mengatasi
beberapa masalah umum komputasi dan komunikasi dengan aman.
Masalah yang Ditangani dengan Enkripsi
Terkadang kami menggambarkan enkripsi dalam konteks pengiriman pesan rahasia. Pembingkaian
ini hanya untuk memudahkan deskripsi: Konsep yang sama berlaku untuk melindungi file data
atau informasi sensitif dalam memori. Jadi saat kita berbicara tentang mengirim pesan, Anda
juga harus memikirkan untuk melindungi objek digital apa pun untuk akses hanya oleh orang yang
berwenang.
Pertimbangkan langkah-langkah yang terlibat dalam pengiriman pesan dari pengirim, S, ke penerima,
R. Jika S mempercayakan pesan ke T, yang kemudian mengirimkannya ke R, T kemudian menjadi
media transmisi. Jika orang luar, O, ingin mengakses pesan (untuk membaca, mengubah, atau
bahkan menghancurkannya), kami menyebut O sebagai pencegat atau penyusup. Setiap saat
sesudah S mengirimkan pesan melalui T, ia rentan terhadap eksploitasi, dan O mungkin mencoba
mengaksesnya dengan salah satu cara berikut:
• memblokirnya, dengan mencegahnya mencapai R, sehingga mempengaruhi ketersediaan
pesan
• mencegatnya, dengan membaca atau mendengarkan pesan, sehingga mempengaruhi
kerahasiaan pesan
• memodifikasinya, dengan mengambil pesan dan mengubahnya dengan cara tertentu, yang
mempengaruhi integritas pesan
• membuat pesan yang tampak otentik, mengaturnya agar disampaikan seolah-olah itu berasal
dari S, sehingga juga mempengaruhi integritas pesan
Seperti yang Anda lihat, kerentanan pesan mencerminkan empat kemungkinan kegagalan keamanan
yang kami identifikasi di Bab 1. Untungnya, enkripsi yaitu teknik yang dapat mengatasi semua
masalah ini. Enkripsi yaitu cara untuk menjaga keamanan data di lingkungan yang tidak aman.
Dalam artikel ini, kita mempelajari enkripsi sebagai teknik keamanan, dan kita melihat bagaimana
enkripsi dipakai dalam melindungi program, database, jaringan, dan komunikasi elektronik.
Terminologi
Enkripsi yaitu proses penyandian pesan sehingga maknanya tidak jelas; dekripsi yaitu proses
sebaliknya, mengubah pesan terenkripsi kembali ke bentuk aslinya yang normal. Sebagai alternatif,
istilah encode dan decode atau encipher dan decipher dipakai sebagai ganti mengenkripsi dan
mendekripsi. Artinya, kita katakan kita menyandikan, mengenkripsi, atau menyandikan pesan asli untuk
menyembunyikan maknanya. Kemudian, kami mendekode, mendekripsi, atau menguraikannya untuk
mengungkapkan pesan asli. Sebuah sistem untuk enkripsi dan dekripsi disebut kriptosistem.
ada sedikit perbedaan makna dari ketiga pasangan kata encode dan decode atau encipher
dan decipher, meskipun tidak signifikan dalam konteks pembahasan ini. Tegasnya, encoding
yaitu proses menerjemahkan seluruh kata atau frasa ke kata atau frasa lain, sedangkan
enciphering yaitu menerjemahkan huruf atau simbol secara individual; enkripsi yaitu istilah
grup yang mencakup pengkodean dan penyandian.
Bentuk asli dari sebuah pesan dikenal sebagai plaintext, dan bentuk terenkripsi disebut ciphertext.
Hubungan ini ditunjukkan pada Gambar 2-18. Pikirkan enkripsi sebagai bentuk cat buram yang
mengaburkan atau menghilangkan teks biasa, mencegahnya terlihat atau ditafsirkan secara akurat.
Kemudian, dekripsi yaitu proses pengelupasan cat untuk mengungkapkan kembali plaintext
asli.
Gambar 2.18 Plaintext dan Ciphertext
Kami memakai notasi formal untuk menggambarkan transformasi antara plaintext dan ciphertext.
Sebagai contoh, kita menulis C = E(P) dan P = D(C), di mana C mewakili ciphertext, E yaitu aturan
enkripsi, P yaitu plaintext, dan D yaitu aturan dekripsi. Apa yang kita cari yaitu kriptosistem
yang P = D(E(P)). Dengan kata lain, kami ingin dapat mengubah pesan plaintext menjadi ciphertext
untuk melindunginya dari penyusup, namun kami juga ingin mendapatkan kembali pesan asli sehingga
penerima dapat membacanya dengan benar.
Kunci Enkripsi
Sebuah cryptosystem melibatkan seperangkat aturan tentang bagaimana mengenkripsi plaintext dan
mendekripsi ciphertext. Aturan enkripsi dan dekripsi, yang disebut algoritma, sering memakai
perangkat yang disebut kunci, dilambangkan dengan K, sehingga ciphertext yang dihasilkan
tergantung pada pesan plaintext asli, algoritma, dan nilai kunci. Kami menulis ketergantungan ini
sebagai C = E(K, P). Pada dasarnya, E yaitu satu set algoritma enkripsi, dan kunci K memilih
satu algoritma tertentu dari set.
Proses ini mirip dengan memakai kunci yang diproduksi secara massal di rumah. Sebagai
pemilik rumah, Anda akan membayar mahal untuk membuat kontrak dengan pelaku untuk
menemukan dan membuat kunci hanya untuk rumah Anda. Selain itu, Anda tidak akan tahu apakah
kunci penemu tertentu benar-benar kokoh atau bagaimana dibandingkan dengan kunci penemu
lain. Solusi yang lebih baik yaitu memiliki beberapa perusahaan yang terkenal dan dihormati yang
memproduksi kunci standar yang berbeda menurut kunci (fisik). Kemudian, Anda dan tetangga
Anda mungkin memiliki merek dan gaya kunci yang sama, namun kunci Anda hanya akan membuka
gembok Anda. Dengan cara yang sama, berguna untuk memiliki beberapa algoritma enkripsi yang
diperiksa dengan baik untuk dipakai semua orang, namun kunci yang berbeda akan mencegah
pelaku membobol data yang Anda coba lindungi.
88
Terkadang kunci enkripsi dan dekripsi sama, jadi P = D(K,E(K,P)), artinya kunci yang sama, K,
dipakai baik untuk mengenkripsi pesan dan kemudian mendekripsinya. Bentuk ini disebut enkripsi
simetris atau kunci tunggal atau kunci rahasia sebab D dan E yaitu proses bayangan cermin.
Sebagai contoh sepele, algoritma enkripsi mungkin menggeser setiap huruf plaintext ke depan n
posisi dalam alfabet. Untuk n = 1, A diubah menjadi b, B menjadi c, … P menjadi q, … dan Z menjadi
a, jadi kita katakan nilai kuncinya yaitu n, memindahkan n posisi maju untuk enkripsi dan mundur
untuk dekripsi. (Anda mungkin memperhatikan bahwa kami telah menulis plaintext dalam huruf
besar dan ciphertext yang sesuai dalam huruf kecil; kriptografer terkadang memakai konvensi
itu untuk membantu mereka membedakan keduanya.)
Di lain waktu, kunci enkripsi dan dekripsi datang berpasangan. Kemudian, kunci dekripsi, KD,
membalikkan enkripsi kunci KE, sehingga P = D(KD, E(KE,P)). Algoritma enkripsi bentuk ini disebut
asimetris atau kunci publik sebab mengubah C kembali ke P melibatkan serangkaian langkah dan
kunci yang berbeda dari langkah dan kunci E. Perbedaan antara enkripsi simetris dan asimetris
ditunjukkan pada Gambar 2-18.
Gambar 2.18 Enkripsi Simetris dan Asimetris
Kunci memberi kita fleksibilitas dalam memakai skema enkripsi. Kita dapat membuat enkripsi
yang berbeda dari satu pesan teks biasa hanya dengan mengubah kuncinya. Selain itu, memakai
kunci memberikan keamanan tambahan. Jika algoritma enkripsi harus jatuh ke tangan pencegat,
pesan masa depan masih dapat dirahasiakan sebab pencegat tidak akan mengetahui nilai kunci.
penelitian Kasus 2-14 menjelaskan bagaimana Inggris menangani kunci dan kode tertulis dalam Perang
Dunia II. Skema enkripsi yang tidak memerlukan pemakaian kunci disebut cipher tanpa kunci.
penelitian Kasus 2-14 : Silken Codes (Kode Sutra)
Leo Marks menggambarkan kehidupannya sebagai pembuat kode di Inggris selama
Perang Dunia II. Artinya, Inggris menyewa Marks dan lainnya untuk merancang
kode yang dapat dipakai oleh mata-mata dan tentara di lapangan. Pada hari-hari
awal, skema enkripsi bergantung pada puisi yang ditulis untuk setiap mata-mata,
dan bergantung pada kemampuan mata-mata untuk menghafal dan mengingat puisi
dengan benar.
89
Sejarah enkripsi sangat menarik; itu didokumentasikan dengan baik dalam artikel David Kahn [KAH96].
Claude Shannon dianggap sebagai bapak kriptografi modern sebab ia meletakkan dasar matematis
formal untuk keamanan informasi dan menguraikan beberapa prinsip untuk kriptografi yang aman di
awal komputasi digital [SHA49]. Enkripsi telah dipakai selama berabad-abad untuk melindungi
komunikasi diplomatik dan militer, terkadang tidak berhasil sepenuhnya. Kata kriptografi mengacu
pada praktik memakai enkripsi untuk menyembunyikan teks. Seorang cryptanalyst mempelajari
enkripsi dan pesan terenkripsi, berharap menemukan makna tersembunyi. Seorang cryptanalyst
mungkin juga bekerja secara defensif, menyelidiki kode dan cipher untuk melihat apakah mereka
cukup solid untuk melindungi data secara memadai.
Baik kriptografer maupun kriptanalis berusaha menerjemahkan materi yang dikodekan kembali
ke bentuk aslinya. Biasanya, kriptografer bekerja atas nama pengirim atau penerima yang sah,
sedangkan kriptoanalis bekerja atas nama pencegat yang tidak sah. Akhirnya, kriptologi yaitu
penelitian dan penelitian tentang enkripsi dan dekripsi; itu mencakup baik kriptografi dan kriptanalisis.
2.5.2 Pembacaan Sandi
Tugas seorang cryptanalyst yaitu memecahkan enkripsi. Artinya, cryptanalyst mencoba untuk
menyimpulkan arti asli dari pesan ciphertext. Lebih baik lagi, cryptanalyst berharap untuk menentukan
algoritma dekripsi mana, dan idealnya kunci mana, yang cocok dengan algoritma enkripsi untuk
dapat memecahkan pesan lain yang dikodekan dengan cara yang sama.
Misalnya, anggaplah dua negara sedang berperang dan negara pertama telah mencegat pesan
terenkripsi dari negara kedua. Cryptanalysts dari negara pertama ingin menguraikan pesan tertentu
untuk mengantisipasi pergerakan dan sumber daya yang kedua. namun yang lebih baik yaitu
menemukan metode dekripsi yang sebenarnya; maka negara pertama dapat menembus enkripsi
semua pesan yang dikirim oleh negara kedua.
Seorang analis bekerja dengan berbagai informasi: pesan terenkripsi, algoritma enkripsi yang
diketahui, teks biasa yang dicegat, item data yang diketahui atau diduga berada dalam pesan teks
sandi, alat dan teknik matematika atau statistik, dan properti bahasa, serta banyak kecerdikan dan
keberuntungan. Setiap bukti dapat memberikan petunjuk, dan analis menyatukan petunjuk untuk
mencoba membentuk gambaran yang lebih besar tentang makna pesan dalam konteks bagaimana
enkripsi dilakukan. Ingatlah bahwa tidak ada aturan. Seorang pencegat dapat memakai segala
cara yang tersedia untuk mencari tahu arti dari pesan ini .
Tanda mengurangi risiko kesalahan dengan memperkenalkan skema pengkodean
yang dicetak pada potongan sutra. Sutra yang tersembunyi di balik pakaian tidak bisa
dirasakan saat mata-mata itu ditepuk dan digeledah. Dan, tidak seperti kertas, sutra
terbakar dengan cepat dan sempurna, sehingga mata-mata dapat menghancurkan
bukti yang memberatkan, juga memastikan bahwa musuh tidak bisa mendapatkan
bahkan potongan kode yang berharga. saat ditekan oleh atasan mengapa Inggris
harus memakai sutra langka (yang juga dibutuhkan untuk kebutuhan masa
perang seperti parasut) untuk kode, Marks mengatakan bahwa itu yaitu pilihan.
"antara sutra dan sianida."
90
Work Factor
Sebuah algoritma enkripsi disebut breakable atau 'dapat dipecahkan' saat , dengan waktu dan
data yang cukup, seorang analis dapat menentukan algoritmanya. Namun, sebuah algoritme yang
secara teoritis dapat dipecahkan mungkin sebenarnya tidak praktis untuk dicoba dipecahkan. Untuk
mengetahui alasannya, pertimbangkan pesan 25 karakter yang diungkapkan hanya dengan huruf
besar. Skema cipher yang diberikan mungkin memiliki 2625 (sekitar 1035) kemungkinan dekripsi,
jadi tugasnya yaitu memilih yang benar dari 2625. Jika komputer Anda dapat melakukan urutan
1010 operasi per detik, menemukan dekripsi ini akan membutuhkan urutan 1025 detik, atau kira-
kira 1017 tahun. Dalam hal ini, meskipun kita tahu bahwa secara teoritis kita dapat menghasilkan
solusi, menentukan algoritma penguraian dengan memeriksa semua kemungkinan dapat diabaikan
sebab tidak layak dengan teknologi saat ini.
Kesulitan memecahkan enkripsi disebut work factor (faktor kerja). Sekali lagi, analogi dengan
kunci fisik mungkin terbukti bermanfaat. Seperti yang Anda ketahui, kunci fisik memiliki takik atau
ketidakteraturan lainnya, dan takik memicu pin bergerak di dalam kunci, memungkinkan kunci
terbuka. Beberapa kunci sederhana, seperti yang dijual dengan koper, hanya memiliki satu takik,
sehingga kunci ini sering kali dapat dibuka hanya dengan seutas kawat bengkok; lebih buruk lagi,
beberapa produsen hanya memproduksi sedikit (dan terkadang hanya satu!) desain pin internal
yang berbeda; Anda mungkin dapat membuka kunci semacam itu hanya dengan beberapa tombol.
Jelas kunci ini hanya kosmetik.
Kunci rumah biasa memiliki lima atau enam takik, dan setiap takik dapat memiliki sepuluh kedalaman.
Untuk membuka kunci seperti itu, diperlukan kombinasi yang tepat dari kedalaman takik, yang
mungkin ada hingga satu juta kemungkinan, jadi membawa cincin sebanyak itu tidak mungkin
dilakukan. Meskipun secara teori pelaku dapat membuka salah satu dari kunci ini dengan
mencoba semua kunci yang mungkin, dalam praktiknya jumlah kemungkinan ini menjadi
penghalang. Kami mengatakan bahwa faktor kerja untuk membuka salah satu kunci ini tanpa kunci
yang sesuai cukup besar untuk mencegah sebagian besar serangan. Begitu juga dengan kriptografi:
Sebuah enkripsi cukup jika pekerjaan mendekripsi tanpa mengetahui kunci enkripsi lebih besar dari
nilai data yang dienkripsi.
Dua masalah penting lainnya harus ditangani saat mempertimbangkan pemecahan algoritma
enkripsi. Pertama, cryptanalyst tidak dapat diharapkan untuk mencoba hanya dengan cara yang
keras dan panjang. Dalam contoh yang baru saja disajikan, dekripsi yang jelas mungkin memerlukan
2625 operasi mesin, namun pendekatan yang lebih cerdik mungkin hanya membutuhkan 1015 operasi.
Pada kecepatan 1010 operasi per detik, 1015 operasi memakan waktu sedikit lebih dari satu hari.
Pendekatan yang cerdik tentu layak dilakukan. Bahkan, surat kabar terkadang mencetak teka-teki
kriptogram yang diselesaikan manusia dengan pena dan kertas saja, jadi jelas ada jalan pintas
ke mesin komputer kita yang memperkirakan waktu bertahun-tahun atau bahkan satu hari usaha.
Permainan surat kabar memberikan petunjuk tentang panjang kata dan karakter berulang, sehingga
manusia memecahkan masalah yang lebih mudah. Seperti yang kami katakan, bagaimanapun,
cryptanalyst juga memakai setiap informasi yang mereka miliki.
Beberapa algoritme yang kami pelajari dalam artikel ini didasarkan pada masalah "sulit" yang diketahui
yang membutuhkan waktu lama untuk diselesaikan. namun cryptanalyst tidak harus memecahkan
masalah mendasar untuk memecahkan enkripsi satu pesan. pemakaian pengendalian yang ceroboh
91
dapat mengungkapkan kemungkinan kata atau frasa, dan seorang analis dapat memakai
tebakan terdidik yang dikombinasikan dengan analisis yang cermat untuk menghasilkan semua
atau sebagian besar pesan penting. Atau cryptanalyst mungkin mempekerjakan mata-mata untuk
mendapatkan plaintext sepenuhnya di luar sistem; analis kemudian dapat memakai sepasang
plaintext dan ciphertext yang sesuai untuk menyimpulkan algoritme atau kunci yang dipakai
untuk diterapkan ke pesan berikutnya.
Kedua, perkiraan breakability didasarkan pada teknologi saat ini. Kemajuan teknologi besar komputasi
telah terjadi sejak tahun 1950. Hal-hal yang tidak mungkin dilakukan di 1940 menjadi mungkin pada
1950-an, dan setiap dekade berikutnya telah membawa perbaikan yang lebih besar. Sebuah dugaan
yang dikenal sebagai "Hukum Moore" menegaskan bahwa kecepatan prosesor berlipat ganda setiap
1,5 tahun, dan dugaan ini telah berlaku selama lebih dari tiga dekade. Kami tidak berani mengatakan
suatu algoritma aman hanya sebab tidak dapat dipecahkan dengan teknologi saat ini, atau lebih
buruk lagi, bahwa itu belum rusak.
Dalam artikel ini kami menulis bahwa ada sesuatu yang tidak mungkin; misalnya, tidak mungkin
mendapatkan plaintext dari ciphertext tanpa kunci dan algoritma yang sesuai. Harap dipahami
bahwa dalam kriptografi ada beberapa hal yang benar-benar tidak mungkin: tidak mungkin atau
sangat sulit, mungkin, namun tidak mungkin, tidak.
2.5.3 Sistem Enkripsi Simetris dan Asimetris
Ingatlah bahwa dua jenis enkripsi dasar yaitu simetris (juga disebut "kunci rahasia") dan asimetris
(juga disebut "kunci publik"). Algoritma simetris memakai satu kunci, yang berfungsi untuk
enkripsi dan dekripsi. Biasanya, algoritma dekripsi terkait erat dengan enkripsi, pada dasarnya
menjalankan enkripsi secara terbalik.
Sistem simetris menyediakan saluran dua arah kepada pemakai nya: A dan B berbagi kunci
rahasia, dan keduanya dapat mengenkripsi informasi untuk dikirim ke yang lain serta mendekripsi
informasi dari yang lain. Selama kunci tetap rahasia, sistem juga memberikan keaslian, bukti bahwa
pesan yang diterima tidak dibuat-buat oleh orang lain selain pengirim yang dinyatakan. Ini yaitu
artikel keamanan, kami menunjukkan bahwa buktinya sebenarnya yaitu bahwa pesan ini
dikirim oleh pelaku yang memiliki atau dapat mensimulasikan efek dari kunci pengirim. Dengan
banyak ancaman keamanan, ada risiko kecil, namun bukan nol, bahwa pesan ini sebenarnya
bukan dari pengirim namun merupakan pemalsuan yang kompleks. Keaslian terjamin sebab hanya
pengirim yang sah yang dapat menghasilkan pesan yang akan didekripsi dengan baik dengan yang
dibagikan kunci.
Simetri yaitu keuntungan utama dari jenis enkripsi ini, namun juga menimbulkan masalah: Bagaimana
dua pemakai A dan B mendapatkan kunci rahasia bersama mereka? Dan hanya A dan B yang
dapat memakai kunci itu untuk komunikasi terenkripsi mereka. Jika A ingin berbagi komunikasi
terenkripsi dengan pemakai lain C, A dan C memerlukan kunci rahasia bersama yang berbeda.
Mengelola kunci yaitu kesulitan utama dalam memakai enkripsi simetris. Secara umum, n
pemakai yang ingin berkomunikasi secara berpasangan membutuhkan n * (n – 1)/2 kunci. Dengan
kata lain, jumlah kunci yang dibutuhkan meningkat pada tingkat yang sebanding dengan kuadrat
92
dari jumlah pemakai ! Jadi properti dari sistem enkripsi simetris yaitu bahwa mereka memerlukan
sarana distribusi kunci.
Sistem kunci asimetris atau publik, di sisi lain, biasanya memiliki pasangan kunci yang sama persis.
Kunci diproduksi bersama atau satu diturunkan secara matematis dari yang lain. Dengan demikian,
suatu proses menghitung kedua kunci sebagai satu set.
namun untuk kedua jenis enkripsi, kunci harus disimpan dengan baik. sesudah kunci simetris atau
privat diketahui oleh orang luar, semua pesan yang ditulis sebelumnya atau di masa depan dapat
didekripsi (dan sebab nya dibaca atau dimodifikasi) oleh orang luar. Jadi, untuk semua algoritma
enkripsi, manajemen kunci yaitu masalah utama. Ini melibatkan penyimpanan, pengamanan, dan
pengaktifan kunci.
Sistem asimetris unggul dalam manajemen kunci. Dengan pendekatan kunci publik, Anda dapat
mengirim kunci publik dalam pesan email atau mempostingnya di direktori publik. Hanya kunci
pribadi yang sesuai, yang mungkin tidak diungkapkan, yang dapat mendekripsi apa yang telah
dienkripsi dengan kunci publik.
2.5.4 Streaming dan Blokir Cipher
A block cipher yaitu algoritma serbaguna yang mengimplementasikan permutasi kunci yang
bergantung pada nilai-nilai yang merupakan urutan dari sejumlah bit yang tetap (disebut "blok"). Ini
dapat dipakai untuk berbagai peran dalam berbagai jenis protokol kriptografi. Salah satu peran
ini yaitu enkripsi massal aliran data yang panjang; untuk mencapai hal seperti itu, cipher
blok harus dipakai dengan mode operasi yang sesuai (alias "mode chaining"), yang tradisional
yaitu CBC, dan mode baru yang trendi menjadi RKT.
A stream cipher yaitu algoritma khusus untuk tujuan enkripsi massal dari aliran data yang panjang.
Idenya yaitu bahwa, dengan kehilangan fleksibilitas cipher blok, akan mungkin untuk membuat
algoritma yang lebih efisien (mis. Sesuatu yang mengenkripsi data lebih cepat).
Salah satu karakterisasi terakhir dari algoritma enkripsi berkaitan dengan sifat data yang akan
disembunyikan. Misalkan Anda sedang streaming video, mungkin film, dari satelit. Aliran mungkin
datang dalam semburan, tergantung pada hal-hal seperti beban pada satelit dan kecepatan di mana
pengirim dan penerima dapat beroperasi. Untuk aplikasi ini Anda dapat memakai apa
yang disebut enkripsi aliran, di mana setiap bit, atau mungkin setiap byte, dari aliran data dienkripsi
secara terpisah. Sebuah model stream enciphering ditunjukkan pada Gambar 2-19. Perhatikan
bahwa simbol input diubah satu per satu. Keuntungan dari stream cipher yaitu dapat langsung
diterapkan ke item data apa pun yang siap dikirim. namun kebanyakan algoritma enkripsi melibatkan
transformasi yang kompleks; untuk melakukan transformasi ini pada satu atau beberapa bit pada
suatu waktu mahal.
93
Gambar 2-19 Penyandian Aliran
Untuk mengatasi masalah ini dan mempersulit cryptanalyst untuk memecahkan kode, kita dapat
memakai cipher blok. Sebuah cipher blok mengenkripsi sekelompok simbol plaintext sebagai
satu blok. Sebuah algoritma block cipher melakukan pekerjaannya pada sejumlah data plaintext
sekaligus. Seperti mesin yang memotong 24 cookie sekaligus, algoritme ini memanfaatkan skala
ekonomi dengan mengoperasikan sejumlah besar data sekaligus. Blok untuk algoritma ini
biasanya 64, 128, 256 bit atau lebih. Ukuran blok tidak perlu memiliki hubungan khusus dengan
ukuran karakter. Block cipher bekerja pada blok plaintext dan menghasilkan blok ciphertext, seperti
yang ditunjukkan pada Gambar 2-20. Pada gambar, kotak tengah mewakili mesin enkripsi: Pasangan
plaintext sebelumnya diubah menjadi po, yang saat ini dikonversi yaitu IH, dan mesin akan segera
mengonversi ES.
Gambar 2-20 Blok Cipher
Cipher aliran mengenkripsi satu bit atau satu byte pada satu waktu; cipher blok mengenkripsi
sejumlah bit tetap sebagai potongan tunggal.
Meskipun keduanya yaitu sandi simetris, stream cipher didasarkan pada menghasilkan keystream
cryptograpic "tak terbatas", dan memakai nya untuk mengenkripsi satu bit atau byte pada suatu
waktu (mirip dengan pad satu kali), sedangkan cipher blok bekerja pada potongan data yang lebih
94
besar. (yaitu blok) pada suatu waktu, sering menggabungkan blok untuk keamanan tambahan
(misalnya AES dalam mode CBC).
• Stream cipher biasanya lebih cepat dari pada block, namun itu memiliki harganya sendiri.
• Cipher blok biasanya memerlukan lebih banyak memori, sebab mereka bekerja pada potongan
data yang lebih besar dan sering memiliki "terbawa" dari blok sebelumnya, sedangkan sejak
stream cipher bekerja pada hanya beberapa bit pada satu waktu mereka memiliki persyaratan
memori yang relatif rendah (dan sebab itu lebih murah untuk terapkan dalam skenario terbatas
seperti perangkat tertanam, firmware, dan perangkat keras khusus).
• Stream cipher lebih sulit diimplementasikan dengan benar, dan rentan terhadap kelemahan
berdasar pemakaian - sebab prinsipnya mirip dengan pad sekali pakai, keystream memiliki
persyaratan yang sangat ketat. Di sisi lain, itu biasanya bagian yang sulit, dan dapat diturunkan
ke mis. kotak eksternal.
• sebab cipher blok mengenkripsi seluruh blok pada satu waktu (dan lebih jauh lagi memiliki mode
"umpan balik" yang paling direkomendasikan), mereka lebih rentan terhadap kebisingan dalam
transmisi, yaitu jika Anda mengacaukan satu bagian dari data, sisanya mungkin tidak dapat
dipulihkan. Sedangkan dengan stream cipher byte byte dienkripsi secara individu tanpa koneksi
ke potongan data lainnya (dalam kebanyakan cipher/mode), dan sering memiliki dukungan untuk
gangguan pada saluran.
Juga, stream cipher tidak memberikan perlindungan integritas atau otentikasi, sedangkan
beberapa cipher blok (tergantung pada mode) dapat memberikan perlindungan integritas, selain
kerahasiaan.
sebab semua hal di atas, stream cipher biasanya terbaik untuk penelitian Kasus-penelitian Kasus di mana
jumlah data tidak diketahui, atau kontinu - seperti aliran jaringan. Blok cipher, di sisi lain, atau lebih
berguna saat jumlah data sudah diketahui sebelumnya - seperti file, bidang data, atau protokol
permintaan/respons, seperti HTTP di mana panjang total pesan diketahui sudah ada di awal.
Dengan deskripsi sifat algoritma enkripsi yang berbeda ini, kita sekarang dapat beralih ke
beberapa algoritma enkripsi yang banyak dipakai . Kami menyajikan bagaimana masing-masing
bekerja, sedikit konteks historis dan motivasi untuk masing-masing, dan beberapa kekuatan dan
kelemahan. Kami mengidentifikasi algoritme ini berdasar nama sebab nama-nama ini muncul
dalam literatur populer. Kami juga memperkenalkan algoritme simetris lainnya di Bab 12. Tentu saja
Anda harus mengetahui bahwa ini hanyalah contoh algoritme populer; dari waktu ke waktu algoritma
ini dapat digantikan oleh orang lain. Untuk sebagian besar kriptografi telah menjadi plug-and-play,
yang berarti bahwa dalam sebuah aplikasi pengembang dapat mengganti satu algoritma untuk
yang lain dari jenis yang sama dan sifat yang sama. Dengan demikian kemajuan di bidang
kriptografi tidak mengharuskan semua aplikasi yang memakai kriptografi harus ditulis ulang.
2.5.5 DES: Data Encryption Standard
DES merupakan salah satu algoritma kriptografi cipher block dengan ukuran blok 64 bit dan ukuran
kuncinya 56 bit. Algoritma DES dibuat di IBM, dan merupakan modifikasi dibandingkan algoritma terdahulu
yang bernama Lucifer. Lucifer merupakan algoritma cipher block yang beroperasi pada blok masukan
64 bit dan kuncinya berukuran 128 bit.
95
Pengurangan jumlah bit kunci pada DES dilakukan dengan alasan agar mekanisme algoritma ini
bisa diimplementasikan dalam satu chip. DES pertama kali dipublikasikan di Federal Register pada
17 Maret 1975. sesudah melalui banyak diskusi, akhirnya algortima DES diadopsi sebagai algoritma
standar yang dipakai oleh NBS (National Bureau of Standards) pada 15 Januari 1977. Sejak
saat itu, DES banyak dipakai pada dunia penyebaran informasi untuk melindungi data




