Keamanan Komputer (Computer Security)
Bishop (2003) mengemukakan skema Siklus Hidup Sistem Keamanan dimana setiap tahapan dari siklus dapat mundur (feedback) ke tahapan sebelumnya, bahkan ke tahapan awal. Skema tersebut dapat dilihat pada Gambar 1.
Gambar 1 Siklus hidup sistem keamanan (Bishop 2003).
Kegiatan yang dilakukan pada setiap tahapan siklus dapat dijelaskan sebagai berikut:
1 Ancaman (Threat)
Tahapan awal dari pembangunan protokol ini adalah identifikasi ancaman-ancaman yang ingin diatasi oleh sistem. Layanan keamanan dipersiapkan untuk mengatasi serangan akibat ancaman-ancaman yang diperkirakan muncul pada protokol.
2 Kebijakan (Policy)
Tahapan selanjutnya dalam pembangunan
protokol adalah penentuan kebijakan
keamanan. Kebijakan tersebut ditujukan untuk memberikan arahan dan sasaran serta sekaligus menjadi acuan standar keamanan dalam protokol. Kebijakan keamanan juga
harus memenuhi layanan-layanan keamanan yang akan disajikan protokol.
3 Spesifikasi
Spesifikasi merupakan pernyataan
fungsional dari sistem yang dapat berupa ekspresi matematika atau bahasa lain yang mendeskripsikan metode sistem dalam memberikan layanan keamanan.
4 Desain
Tahapan desain dari protokol akan
menterjemahkan spesifikasi dalam bentuk
komponen-komponen yang akan
diimplementasikan. Desain dikatakan
memenuhi spesifikasi jika tidak melanggar semua ketentuan dalam spesifikasi.
5 Implementasi
Tahapan implementasi menghasilkan
aplikasi protokol yang sesuai dengan desain yang ada. Bila desain yang ada telah memenuhi spesifikasi sistem, secara tidak langsung aplikasi yang dihasilkan juga memenuhi spesifikasi tersebut. Kesulitan pada tahapan ini biasanya terletak pada
kompleksitas program untuk
mengimplementasikan desain secara benar.
Kriptografi
Menezes et al. (1996) mengemukakan
bahwa kriptografi adalah studi teknik
matematika yang berkaitan dengan aspek
keamanan informasi seperti kerahasiaan,
integritas data, autentikasi entitas, dan
autentikasi asal data. Pada kriptografi, tujuan keamanan informasi yang ingin diperoleh di antaranya:
1 Kerahasiaan
Yaitu suatu layanan yang digunakan untuk menjaga isi informasi dari semua pihak yang tidak berwenang memilikinya.
2 Integritas Data
Yaitu suatu layanan yang berkaitan dengan pengubahan data dari pihak-pihak yang tidak berwenang. Untuk menjamin integritas
data, kita harus mampu mendeteksi
manipulasi data dari pihak-pihak yang tidak
berwenang. Manipulasi data diartikan
sebagai hal-hal yang berkaitan dengan penghapusan, penyisipan, dan penggantian data.
3 Autentikasi
Yaitu suatu layanan yang berhubungan dengan identifikasi kedua entitas dan informasi itu sendiri. Dua pihak terlibat
dalam komunikasi seharusnya
mengidentifikasi dirinya satu sama lain. Informasi yang dikirim melalui suatu kanal seharusnya dapat diautentikasi asal data, isi Ancaman (Threat) Kebijakan (Policy) Spesifikasi Desain Implementasi Operasi dan Pemeliharaan
data, tanggal, dan waktu pengiriman data. Atas dasar ini autentikasi terbagi menjadi dua kelas besar yaitu autentikasi entitas dan autentikasi asal data.
4 Non-Repudiasi
Yaitu suatu layanan yang ditujukan untuk
mencegah terjadinya pelanggaran
kesepakatan yang telah dibuat sebelumnya oleh entitas. Apabila sengketa muncul ketika suatu entitas mengelak telah melakukan komitmen tertentu, maka suatu alat untuk menangani situasi tersebut diperlukan.
Ancaman Serangan Keamanan
Menurut Stallings (2003) terdapat beberapa pola ancaman terhadap komunikasi data dalam komputer sebagai berikut:
1 Interruption
Interruption terjadi bila data yang dikirimkan dari A tidak sampai kepada B
sebagai orang yang berhak. Interruption
merupakan pola penyerangan terhadap sifat
availability (ketersediaan data). Skema
interruption dapat dilihat pada Gambar 2.
Gambar 2 Interruption.
2 Interception
Serangan ini terjadi bila C selaku pihak
ketiga berhasil membaca data yang
dikirimkan. Interception merupakan pola
penyerangan terhadap sifat confidentiality
(kerahasiaan data). Skema interception
dapat dilihat pada Gambar 3.
Gambar 3 Interception.
3 Modification
Pada serangan ini pihak ketiga C berhasil
mengubah pesan yang dikirimkan.
Modification merupakan pola penyerangan terhadap sifat integrity (keaslian data).
Skema modification dapat dilihat pada
Gambar 4.
Gambar 4 Modification.
4 Fabrication
Pada serangan ini, penyerang berhasil
mengirimkan data ke tujuan dengan
memanfaatkan identitas orang lain.
Fabrication merupakan pola penyerangan
terhadap sifat authenticity. Skema
fabrication dapat dilihat pada Gambar 5.
Gambar 5 Fabrication.
Fungsi Hash
Fungsi hash merupakan salah satu bentuk primitif kriptografi. Menurut Menezes et al. (1996) fungsi hash adalah fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai hash (hash-value). Sedangkan menurut Schneier (1996) fungsi
hash merupakan suatu fungsi, matematika atau
selainnya, yang mengubah bitstring input
dengan panjang sembarang (pre-image) menjadi
bitstring output dengan panjang tetap (biasanya lebih kecil) yang disebut nilai hash (hash value). Seringkali disebut sebagai fungsi hash
satu arah atau one-way hash function.
Masih menurut Menezes et al. (1996) secara umum fungsi hash dibagi menjadi dua kelas, yaitu fungsi hash tak berkunci (unkeyed hash function) dan fungsi hash berkunci (keyed hash function). Fungsi hash tak berkunci mempunyai spesifikasi mengatur satu parameter input. Fungsi hash berkunci mempunyai spesifikasi mengatur dua parameter input yang berbeda. Fungsi hash adalah fungsi h yang mempunyai minimal dua sifat berikut:
1 Kompresi (Compression)
Fungsi h memetakan input x dengan
sembarang panjang bit yang berhingga ke
output h(x) dengan panjang bit tetap n.
2 Kemudahan Komputasi (Ease of
Computation)
Diketahui h dan suatu input x dan h(x)
mudah dihitung.
Tiger Hash
Menurut Anderson dan Biham (1996), Tiger
merupakan fungsi hash yang dirancang untuk menjadi sangat cepat pada komputer modern, khususnya pada arsitektur komputer 64 bit
(seperti DEC-Alpha). Pada DEC-Alpha,
kecepatan tiger hash lebih dari 132 Mbits per detik (diukur di Alpha 7000, Model 660, di satu
processor). Pada mesin yang sama, MD5 hanya sekitar 37 Mbit. Pada mesin 32 bit, tiger tidak optimal secara penuh, namun masih lebih cepat dari hash MD5 bahkan diduga tiger hash juga masih lebih cepat dari MD5 pada mesin 16 bit.
Pada mesin 32 bit, kecepatan tiger secepat SHA-1, namun pada mesin 64 bit kecepatan
tiger sekitar 2.5 kali lebih cepat dari SHA-1. Hal ini juga dapat diimplementasikan pada mesin 16 bit, yang masih harus lebih cepat dari SHA-1.
Alasan utama pembuatan fungsi tiger adalah
menciptakan sebuah fungsi hash yang aman dan
dapat bekerja pada prosesor 64 bit. Selain itu, alasan lain dari pembuatan fungsi ini adalah karena ditemukannya kolisi pada fungsi hash
MD4, padahal banyak fungsi hash yang
berdasarkan fungsi MD4, termasuk keluarga
SHA. Timbul spekulasi bahwa fungsi hash yang
lain tinggal menunggu waktu untuk dapat dipecahkan. Karena itu, Ross Anderson dan Eli
Biham ingin menciptakan fungsi hash yang
tidak berdasarkan fungsi MD4. Walaupun
demikian, fungsi tiger tetap menggunakan
prinsip penambahan panjang pesan dan
pembagian pesan seperti pada fungsi MD4. Adapun langkah-langkah pembuatan nilai
hash pada fungsi tiger adalah sebagai berikut:
1 Penambahan bit-bit pengganjal
Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. Penambahan bit-bit pengganjal adalah antara 1 sampai dengan 512 bit. Bit-bit pengganjal tersebut terdiri atas sebuah bit 1 diikuti dengan bit 0 sebagai sisanya.
2 Penambahan nilai panjang pesan semula.
Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Setelah ditambah dengan nilai panjang pesan semula, panjang pesan sekarang adalah kelipatan 512 bit.
3 Inisialisasi penyangga MD.
Tiger hanya membutuhkan 3 buah penyangga yang masing-masing panjangnya 64 bit. Total panjang penyangga adalah 3x64 = 192 bit. Ketiga penyangga ini menampung hasil sementara dan hasil akhir. Ketiga penyangga ini diberi nama a, b, dan
c. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut :
a = 0x0123456789ABCDEF
b = 0xFEDCBA9876543210
c = 0xF096A5B4C3B2E187
Ketiga penyangga ini adalah nilai dari h0.
4 Pengolahan pesan dalam blok berukuran 512
bit.
Pesan dibagi menjadi L buah blok yang
masing-masing panjangnya 512 bit (Y0
sampai YL-1). Setiap blok 512 bit diproses
bersama dengan penyangga MD menjadi keluaran 192 bit, dan ini disebut nilai hi. Blok pesan yang panjangnya 512 bit dibagi menjadi 8 buah word yang panjangnya 64 bit (x0, x1, ..., x7). Selanjutnya, setiap blok pesan diproses secara komputasi dalam tiga tahapan. Di antara tahapan tersebut, terdapat
key schedule yakni suatu transformasi dari data masukkan yang mencegah para penyerang memaksakan masukan yang mirip pada tiga putaran tadi. Terakhir, ada
suatu tahapan feedforward. Pada tahap
tersebut, nilai baru dari a, b, dan c
dikombinasikan dengan nilai inisial untuk memberikan nilai hi+1.
save_abc pass(a, b, c, 5) key_schedule pass(a, b, c, 7) key_schedule pass(a, b, c, 9) feedforward Keterangan :
save_abc menyimpan nilai dari hi aa = a
bb = b cc = c
pass(a, b, c, mul) terdiri dari 8 buah putaran, yaitu: round(a, b, c, x0, mul) round(b, c, a, x1, mul) round(c, a, b, x2, mul) round(a, b, c, x3, mul) round(b, c, a, x4, mul) round(c, a, b, x5, mul) round(a, b, c, x6, mul) round(b, c, a, x7, mul)
round(a, b, c, x, mul) adalah:
c = c ⊕ x f1 = t1[c_0] ⊕ t2[c_2] ⊕ t3[c_4] ⊕ t4[c_6] f2 = t4[c_1] ⊕ t3[c_3] ⊕ t2[c_5] ⊕ t1[c_7] a = a – f1 b = b + f2 b = b * mul
c_i = byte ke-i dari word c. Nilai
_ adalah antara 0 ... 255.
t1 = Anggota ke-0 s.d. ke-255
pada kotak S.
t2 = Anggota ke-256 s.d. ke-511
pada kotak S.
t3 = Anggota ke-512 s.d. ke-767
t4 = Anggota ke-768 s.d. ke-1023 pada kotak S.
key_schedule adalah proses mengubah nilai x0, x1, ..., x7. Adapun proses tersebut adalah sebagai berikut:
x0 = x0 – (x7 ⊕ 0xA5A5A5A5A5A5A5A5) x1 = x1 ⊕ x0 x2 = x2 + x1 x3 = x3 – (x2 ⊕ ((~x1) 19)) x4 = x4 ⊕ x3 x5 = x5 + x4 x6 = x6 – (x5 ⊕ ((~x4) 23)) x7 = x7 ⊕ x6 x0 = x0 + x7 x1 = x1 – (x0 ⊕ ((~x7) 19)) x2 = x2 ⊕ x1 x3 = x3 + x2 x4 = x4 – (x3 ⊕ ((~x2) 23)) x5 = x5 ⊕ x4 x6 = x6 + x5 x7 = x7 – (x6 ⊕ 0x0123456789ABCDEF) feedforward a = a ⊕ aa b = b – bb c = c + cc
Tiger memiliki fungsi kompresi seperti yang digambarkan pada Gambar 6.
Gambar 6 Fungsi kompresi tiger (Biham 1996).
Area hitam menunjukkan register yang
terpengaruhi. Garis miring menunjuk ke byte
yang mempengaruhi di area putih. Variabel y0,
y1, ..., y7, dan z0, z1, ..., z7 menunjukkan nilai-nilai x0, x1, ..., x7 yang masing-masingnya melewati kedua dan ketiga. Akhirnya, nilai tengah terakhir yang akan digunakan sebagai
output dari Tiger/192.
Digital Signature
Tanda tangan digital adalah suatu nilai kriptografis yang bergantung pada pesan dan pengirim pesan atau signer (Munir 2005). Tujuan digital signature adalah sebagai media bagi seseorang untuk mengikat identitasnya ke sebuah informasi (Menezes et al. 1996).
Menurut Schneier (1996) karakteristik penandaan digital adalah sebagai berikut :
1 Penandaan adalah bukti yang autentik.
2 Penandaan tidak dapat dipalsukan.
3 Penandaan tidak dapat dipindah untuk
digunakan kembali.
4 Dokumen yang telah ditandai tidak dapat
diubah.
5 Penandaan tidak dapat disangkal.
RSA (Rivest, Shamir, Adelman)
Algoritme ini ditemukan pada tahun 1976 oleh tiga peneliti dari MIT (Massachussets Institute of Technology), yaitu Ron Rivest, Adi
Shamir, dan Len Adelman. RSA merupakan
algoritme enkripsi-dekripsi asimetri.
Langkah-langkah untuk mendapatkan kunci publik dan kunci privat adalah sebagai berikut :
1 Memilih dua bilangan prima p dan q,
bilangan ini haruslah memiliki panjang bit yang sama.
2 Menghitung nilai n = p x q.
3 Menghitung nilai m = (p – 1)(q – 1). 4 Memilih sebuah bilangan bulat e, 1 < e < m
dan e relatif prima terhadap m. Artinya, faktor pembagi terbesar keduanya adalah 1, secara matematis disebut gcd(e, m) = 1.
Untuk mencarinya, dapat digunakan
algoritme Euclid.
5 Menghitung nilai d, ed ≡ 1 (mod m). Untuk bilangan besar dapat digunakan algoritme
extended Euclid.
Untuk mengenkripsi M, dibutuhkan sebuah proses perhitungan C = Me mod n, sedangkan
untuk mendapatkan nilai M kembali perlu
dilakukan proses dekripsi dengan menggunakan perhitungan M = Cd mod n.
Keamanan algoritme RSA ini terletak pada sulitnya untuk memfaktorisasi bilangan integer yang besar. Hal ini dikarenakan apabila kriptoanalis dapat memfaktorkan parameter keamanan atau bilangan modulus RSA menjadi bilangan p dan q, ia dapat membangkitkan
kunci privat kriptografi RSA tersebut
menggunakan algoritme pembangkitan kunci kriptografi RSA (Menezes et al. 1996).
Bit Error Ratio
Bit Error Ratio (BER) adalah perbandingan antara jumlah bit pada gambar yang memiliki
nilai tidak sama dengan gambar asli dengan jumlah total semua bit gambar (Persada 2009).
BER menunjukkan total posisi pixel yang tidak
sama dengan gambar asli dalam satuan persentase. Persamaan untuk menghitung BER adalah:
= ∑ (1)
Pi = 0, jika Wi = W′i Pi = 1, jika Wi≠ W′i
Pi adalah jumlah pixel yang nilainya sama dan N
adalah total keseluruhan pixel. Nilai BER yang kecil menunjukkan bahwa tingkat kesalahan bit antar gambar yang rendah dan kedua gambar tersebut terlihat sama secara penglihatan mata manusia. Batas toleransi nilai BER adalah 35% (Baldman 2003). Nilai BER digunakan sebagai
indikator perbedaan antara watermark asli
dengan watermark hasil ekstraksi. Nilai BER bukan menjadi penentu kekuatan dari
watermark.