au semuanya tidak menjamin bahwa pendekatan otentikasi
akan aman. Untuk mencapai keamanan yang sebenarnya, kita perlu berpikir dengan hati-hati
tentang masalah yang kita coba pecahkan dan alat yang kita miliki; kita juga perlu memikirkan untuk
memblokir kemungkinan serangan dan penyerang.
Misalkan kita ingin mengontrol akses ke sistem komputasi. Selain nama dan kata sandi, kami dapat
memakai informasi lain yang tersedia untuk mengautentikasi pemakai . Misalkan Adams
bekerja di departemen akuntansi selama shift antara 8:00 dan 5:00, Senin sampai Jumat. Setiap
upaya akses yang sah oleh Adams harus dilakukan selama waktu itu, melalui stasiun kerja di kantor
departemen akuntansi. Dengan membatasi Adams untuk masuk dalam kondisi ini , sistem
melindungi dari dua masalah:
• Seseorang dari luar mungkin mencoba meniru Adams. Upaya ini akan digagalkan oleh
waktu akses atau port tempat akses dicoba.
• Adams mungkin mencoba mengakses sistem dari rumah atau di akhir pekan, berencana
memakai sumber daya yang tidak diizinkan atau melakukan sesuatu yang terlalu
berisiko dengan orang lain di sekitarnya.
71
Membatasi pemakai ke stasiun kerja tertentu atau waktu akses tertentu dapat memicu
komplikasi (seperti saat pemakai secara sah perlu bekerja lembur, seseorang harus mengakses
sistem saat berada di luar kota untuk urusan bisnis, atau stasiun kerja tertentu gagal). Namun,
beberapa perusahaan memakai teknik otentikasi ini sebab keamanan tambahan yang mereka
berikan melebihi ketidaknyamanan. Sebagai analis keamanan, kita perlu melatih pikiran kita untuk
mengenali kualitas yang membedakan aktivitas normal dan diperbolehkan.
Seperti yang Anda lihat, praktisi keamanan memiliki berbagai mekanisme otentikasi yang siap
dipakai . Tidak ada yang sempurna; semua memiliki kekuatan dan kelemahan, dan bahkan
kombinasi mekanisme tidak sempurna. Seringkali antarmuka pemakai tampak sederhana dan
sangat mudah (apa yang bisa lebih mudah daripada meletakkan jari di atas piring kaca?), namun
seperti yang telah kami jelaskan, di balik kesederhanaan itu terdapat ketidakpastian, ambiguitas, dan
kerentanan. Namun demikian, di bagian ini Anda telah melihat jenis dan contoh sehingga saat Anda
mengembangkan sistem dan aplikasi yang memerlukan otentikasi, Anda akan dapat memakai
latar belakang ini untuk memilih pendekatan yang memenuhi kebutuhan keamanan Anda.
2.4 Kontrol 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 kontrol 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 dikontrol 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.
72
2.4.1 Kebijakan Akses
Kontrol 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 kontrol 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 kontrol akses, sebab hanya mencerminkan kebijakan yang ada.
Jadi, sebelum mencoba menerapkan kontrol akses, organisasi perlu meluangkan waktu untuk
mengembangkan kebijakan keamanan tingkat yang lebih tinggi, yang lalu akan mendorong
semua aturan kontrol 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 setelah 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 pemakai an 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 pemakai an 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
73
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 seseorang 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 kontrol akses.
Granularitas
Yang kami maksud dengan granularity yaitu kehalusan atau kekhususan kontrol 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 kontrol 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 kontrol 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 lalu 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
Setelah 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 .
74
• 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 setelah fakta sangat membantu dalam
menangani insiden besar.
Sebagai bagian dari aktivitas kontrol 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 kontrol teknis. Proses menganalisis
pemakai dan menentukan hak istimewa yang mereka butuhkan yaitu langkah pertama yang
diperlukan untuk memberi otorisasi dalam batasan ini . Setelah menetapkan batasan, kami
beralih ke teknologi kontrol 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.
2.4.2 Menerapkan Kontrol Akses
Kontrol 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 kontrol akses yang terdiferensiasi dengan
75
baik atau fine-grained. Sistem operasi biasanya tidak melihat di dalam file atau objek data, misalnya,
sehingga tidak dapat melakukan kontrol akses tingkat baris atau elemen dalam database. Juga,
sistem operasi tidak dapat dengan mudah membedakan antara jenis lalu lintas jaringan. Dalam Studi
Kasus ini, sistem operasi tunduk pada manajer database atau perangkat jaringan dalam menerapkan
beberapa aspek kontrol 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 studinya (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 kontrol akses yang kuat sebab
desain yang gagal-aman.
Dalam formulasi Anderson untuk komputer, kontrol 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 buku 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 Kontrol 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 "kontrol" (termasuk hak untuk menyatakan siapa yang memiliki akses apa) dan untuk mencabut
76
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.
Gambar 2.8 Hak Akses 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 lalu 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.
77
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. lalu , 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 Kontrol 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 pemakai an dalam situasi
tertentu.
Sebagai alternatif, kita dapat memakai matriks kontrol 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.
78
Gambar 2.10 Matriks Kontrol Akses
Contoh representasi matriks kontrol 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 kontrol 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 Kontrol Akses
Tabel 2.9 Daftar Tiga Kali Kontrol Akses
Representasi ini mungkin lebih efisien daripada matriks kontrol akses sebab tidak ada triple
untuk setiap sel kosong dari matriks (seperti USER T, Bibliog, – ). Meskipun triple dapat diurutkan
berdasarkan subjek atau objek sesuai kebutuhan, pencarian sejumlah besar dari triple ini cukup
tidak efisien sehingga implementasi ini jarang dipakai .
79
Daftar Kontrol Akses
Representasi alternatif yaitu daftar
kontrol akses; seperti yang ditunjukkan
pada Gambar 2-11, representasi ini sesuai
dengan kolom dari matriks kontrol 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 kontrol akses per
objek; direktori dibuat untuk setiap mata
pelajaran. Meskipun perbedaan ini tampak
kecil, ada beberapa keuntungan signifikan
dari pendekatan ini.
Representasi daftar kontrol 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 kontrol 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 .
Gambar 2.12 Daftar Kontrol Akses dengan Dua Subjek
Gambar 2-.11 Daftar Kontrol Akses
80
Sistem operasi Multics memakai bentuk daftar kontrol 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 kontrol 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 pemakai an kartu liar, yang berarti placeholder yang menunjuk "pemakai mana
pun" (atau "grup apa pun" atau "kompartemen apa pun"). Daftar kontrol 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 kontrol akses dapat dipertahankan dalam urutan yang diurutkan, dengan * diurutkan
sebagai datang setelah semua nama tertentu. Misalnya, Adams-Decl-* akan muncul setelah 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 daripada 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
81
dihapus dari sistem, daftar hak istimewa menunjukkan semua objek yang dapat diakses pemakai
sehingga hak ini dapat dihapus dari objek.
Gambar 2.13 Daftar Kontrol Hak Istimewa
2.4.3 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 kontrol akses. Seperti yang ditunjukkan pada Gambar 2-14,
kapabilitas hanyalah satu kontrol 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 kontrol akses. Jika kemampuan terenkripsi berisi identitas pemilik yang
sah, pemakai A tidak dapat menyalin kemampuan dan memberikannya kepada pemakai B.
Gambar 2.14 Kemampuan
82
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 lalu 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
83
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 lalu 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 kontrol
akses atau daftar kontrol 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 kontrol akses dan subsetnya, serta kapabilitas, merupakan
dasar dari sistem kontrol akses yang diterapkan saat ini. Terlepas dari implementasi mekanis dari
matriks kontrol akses atau substrukturnya, dua model akses berhubungan lebih khusus dengan
tujuan kontrol akses: menghubungkan akses ke peran subjek atau konteks akses. Kami menyajikan
model-model itu selanjutnya.
2.4.4 Procedure-Oriented Access Control
Salah satu tujuan dari kontrol 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 dikontrol dengan lebih mudah oleh sebagian besar aplikasi dan sistem operasi,
namun kontrol 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
84
(PP) yaitu paradigma pemrograman, yang berasal dari pemrograman terstruktur, berdasarkan
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 kontrol 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. Kontrol 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 berdasarkan tuntutan pekerjaan,
bukan oleh orang. Kontrol akses mengikuti orang yang mengubah tanggung jawab, dan administrator
sistem tidak harus memilih pengaturan kontrol akses yang sesuai untuk seseorang. Untuk detail
selengkapnya tentang nuansa kontrol 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
85
RBAC diberikan pada kontrol 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
kontrol akses (Sandhu & Bhamidipati, 1999). Role didefinisikan dalam ilmu perilaku sebagai pola
yang ditentukan sesuai perilaku seseorang dalam situasi tertentu berdasarkan posisi orang .
Kesimpulannya, studi kami tentang mekanisme kontrol 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 daripada 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 buku 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
pemakai annya, 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.
86
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.
Berdasarkan jenis enkripsi dasar ini, kami menunjukkan cara menggabungkannya untuk mengatasi
beberapa masalah umum komputasi dan komunikasi dengan aman.
2.5.1 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 lalu mengirimkannya ke R, T lalu 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
setelah 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 buku 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. lalu , kami mendekode, mendekripsi, atau menguraikannya untuk
mengungkapkan pesan asli. Sebuah sistem untuk enkripsi dan dekripsi disebut kriptosistem.
87
Terdapat 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.
lalu , 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 seseorang 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). lalu , 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
seseorang 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 lalu 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. lalu , 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.
Studi Kasus 2-14 menjelaskan bagaimana Inggris menangani kunci dan kode tertulis dalam Perang
Dunia II. Skema enkripsi yang tidak memerlukan pemakai an kunci disebut cipher tanpa kunci.
Studi 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 buku 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 studi 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 seseorang 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 buku 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. pemakai an kontrol 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 lalu 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 buku 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
buku keamanan, kami menunjukkan bahwa buktinya sebenarnya yaitu bahwa pesan ini
dikirim oleh seseorang 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. Setelah 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
berdasarkan pemakai an - 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 Studi






