BAB II TINJAUAN PUSTAKA 2.1 Kriptografi Kata kriptografi berasal dari bahsa Yunani, yaitu kata kryptos, yang berarti menulis. Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Schiener dalam bukunya “Applied Cryptography”, kriptografi adalah ilmu pengetahuan dan seni menjaga pesan agar tetap aman. Konsep kriptografi sendiri telah lama digunakan oleh manusia misal pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip prinsip yang mendasari kriptografi yakni : 1. Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasiadan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk membaca dan dipahami. 2. Data integrity (keutuhan data) yaitu layanan yang mampu mampu mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain). 3. Authentication (keontentikan) yaitu layanan yang berhubungan dengan dengan identifikasi. Baik pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi. 4. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untu menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan berasa dirinya). (Mahyudi, 2008)
4
5
Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabiula algoritma yang digunakan telah diketahui maka pesan sudah “bocor” dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan bagi para pemakainya.
2.2 Enkripsi Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode yang bisa dimengerti menjadi sebuah kode yang tidak bisa dimengerti (tidak terbaca). Enkripsi dapat diartikan sebagai kode atau chiper. Enkripsi dimaksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak.
Enkripsi juga digunakan untuk verifikasi,
maksudnya bila mengunduh file, kita akan tahu bahwa file yang kita unduh adalah yang asli, bukannya
yang telah dipasangkan worms di dalamnya.
(Ardhian dkk, 2008)
2.3 Fungsi Hash Hash function atau fungsi hash adalah suatu cara menciptakan “fingerprint” dari berbagai data masukan. Fungsi hash akan mengganti atau mentranspose-kan data tersebut untuk menciptakan fingerprint, yang biasa disebut nilai hash (hash value). Nilai hash biasanya digambarkan sebagai suatu string pendek yang terdiri atas huruf dan angka yang terlihat random (data biner yang ditulis dalam notasi heksadesimal). Suatu fungsi hash adalah sebuah fungsi matematika, yang mengambil sebuah panjang variabel string input, yang disebut pre-image dan mengkonversikannya ke sebuah string output dengan panjang yang tetap dan biasanya lebih kecil, yang disebut Message Digest. Fungsi hash digunakan untuk melakukan fingerprint pada pre-image, yaitu menghasilkan sebuah nilai yang dapat menandai (mewakili) pre-image sesungguhnya.
6
A. Prinsip Dasar Fungsi Hash Satu Arah Fungsi hash satu arah (one-way hash function) adalah fungsi hash yang bekerja satu arah, yaitu suatu fungsi hash yang dengan mudah dapat menghitung nilai hash dari pre-image, tetapi sangat sukar untuk menghitung pre-image dari nilai hash. Sebuah fungsi hash satu arah, H(M), beroperasi pada suatu pre-image pesan M dengan panjang sembarang, dan mengembalikan nilai hash H yang memiliki panjang tetap. (Sofwan dkk, 2006) Fungsi hash satu arah memiliki banyak nama, fungsi pembanding, fungsi penyusutan, intisari pesan, sidik jari (fingerprint), message integrity check (MIC) atau pemeriksa keutuhan pesan dan manipulation detection code (MDC) atau pendeteksi penyelewengan kode. (Mahyudin, 2008)
Gambar 2.1 Membuat Sidik Jari Pesan (Sumber: Mahyudin, 2008)
Fungsi hash satu arah adalah untuk melindungi data dari modifikasi. Apabila ingin melindungi data dari modifikasi yang tidak terdeteksi, dapat dihitung hasil fungsi hash dari data tersebut, selanjutnya dapat menghitung hasil fungsi hash lagi dan membandingkannya dengan hasil yang pertama apabila berbeda maka terjadi perubahan selama pengiriman. Sebagai contohnya adalah bila si pengirim (A) akan mengirim pesan kepada temannya (B). Sebelum mengirim, A melakukan hash dari pesannya untuk mendapatkan nilai hash kemudian dia mengirim pesan itu beserta nilai hashnya, Lalu B melakukan hash untuk mencari nilai hash dari pesan itu bila terjadi perbedaan, maka sewaktu pengiriman telah terjadi perubahan dari pesan tersebut.
7
2.4 Algoritma Message Digest-5 (MD5) Dalam kriptografi, MD5 (Message-Digest algortihm 5) ialah fungsi hash kriptografik yang digunakan secara luas dengan menghasilkan nilai hash 128-bit. Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file. MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan fungsi hash sebelumnya, yaitu MD4. Algoritma MD5 yang utama beroperasi pada kondisi 128-bit, dibagi menjadi empat word 32-bit, menunjukkan A, B, C dan D. Operasi tersebut di inisialisasi dijaga untuk tetap konstan. Algoritma utama kemudian beroperasi pada masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi. Pemrosesan blok pesan terdiri atas empat tahap. Tiap putaran membuat 16 operasi serupa berdasar pada fungsi nonlinear F, tambahan modular, dan rotasi ke kiri. Ada empat macam kemungkinan fungsi F, berbeda dari yang digunakan pada tiap-tiap putaran, yaitu : F(X,Y,Z) = (X˄Y) ˅ (~X˄Z) G(X,Y,Z) = (X˄Z ) ˅ (Y˄~Z) H(X,Y,Z) = X Y Z I(X,Y,Z) = Y (X ˅ ~Z) , ˅, ˄, ~ menunjukkan operasi logikan XOR, AND, OR dan NOT.
8
Gambar 2.2 Satu buah operasi MD5 (Sumber: Gunawan, 2008)
Satu operasi MD5 terdiri atas 64 operasi, dikelompokkan dalam empat putaran dari 16 operasi. F adalah fungsi nonlinear. Satu fungsi digunakan pada tiap-tiap putaran. Mi menujukkan blok 32-bit dari masukan pesan, dan Ki menunjukkan konstanta 32-bit yang berbeda untuk tiap-tiap operasi.
2.4.1 Proses Pembuatan Message Digest Pada MD5 Setiap pesan yang akan dienkripsi, terlebih dahulu dicari berapa banyak bit yang terdapat pada pesan. Kita anggap sebanyak b bit. Di sini b adalah bit non negatif integer, b bisa saja nol dan tidak harus selalu kelipatan delapan. Pesan dengan panjang b bit dapat digambarkan seperti berikut : m_0 m_1 …. m_(b-1) Langkah-langkah proses pembuatan message digest pada MD5 adalah sebagai berikut : 1. Penambahan bit pengganjal (padding bits) Pesan akan ditambahkan bit-bit tambahan sehingga panjang bit akan kongruen dengan 448 mod 512. Hal ini berarti pesan akan mempunyai
9
panjang yang hanya kurang 64 bit dari kelipatan 512 bit. Penambahan bit selalu dilakukan walaupun panjang dari pesan sudah kongruen dengan 448 mod 512 bit. Penambahan bit dilakukan dengan menambahkan “1” di awal dan diikuti “0” sebanyak yang diperlukan sehingga panjang pesan akan kongruen dengan 448 mod 512. 2. Penambahan nilai panjang pesan semula Setelah penambahan bit, pesan masih membutuhkan 64 bit agar kongruen dengan kelipatan 512 bit. 64 bit tersebut merupakan perwakilan dari b (panjang pesan sebelum penambahan bit dilakukan). Bit-bit ini ditambahkan ke dalam dua word (32 bit) dan ditambahkan dengan low-order terlebih dahulu. Penambahan pesan ini biasa disebut juga MD Strengthening atau Penguatan MD. 3. Inisialisasi penyangga (buffer) Message Digest Pada MD5 terdapat empat buah word 32 bit register yang berguna untuk menginisialisasi message digest pertama kali. Register-register ini di inisialisasikan dengan bilangan hexadesimal. word A: 01 23 45 67 word B: 89 AB CD EF word C: FE DC BA 98 word D: 76 54 32 10 Register-register ini biasa disebut dengan nama Chain variable atau variabel rantai. 4. Pengolahan pesan dalam blok berukuran Pada MD5 juga terdapat 4 (empat) buah fungsi nonlinear yang masing-masing digunakan pada tiap operasinya (satu fungsi untuk satu blok), yaitu: F(X,Y,Z) = (X Y) ((X) Z) G(X,Y,Z) = (X Z) (Y (Z)) H(X,Y,Z) = X Y Z I (X,Y,Z) = Y (X (Z))
10
(untuk XOR, untuk AND, untuk OR dan untuk NOT). 5. Keluaran MD5 Keluaran dari MD-5 adalah 128 bit dari word terendah A dan tertinggi word D masing – masing 32 bit.
Untuk memperjelas langkah pengolahan pesan yang harus dilakukan pada algoritma MD5, diberikan gambaran dalam bentuk diagram alir berikut:
11
Gambar 2.3 Flowchart Algoritma MD5
12
2.4.2 Hasil Hash MD5 Hasil hash MD5 sepanjang 128-bit (16-byte), yang dikenal juga sebagai ringkasan pesan, secara tipikal ditampilkan dalam bilangan heksadesimal 32-digit. Berikut ini merupakan contoh nilai hash MD5 dengan masukan sebuah file: Hash dari sebuah file bernama “program.exe” adalah: MD5("program.exe") = 9e107d9d372bb6826bd81d3542a419d6 Hash dari sebuah file bernama “join air.lnk” adalah: MD5("join air.lnk ") = cb3cd5c717942c927b7fecde031d28ee Hash dari sebuah file bernama “algoritma.pdf” adalah: MD5(“algoritma.pdf”) = 9592288b34b3c9630bcea1080201d9c4
2.4.3 Proses MD5 Dengan Masukan Berupa String Proses MD5 dengan masukan berupa string adalah proses yang masukan nya berupa karakter-karakter yang dimasukan melalui keyboard. Mulai
Masukkan karakter
Lakukan inisialisasi
Lakukan padding
Proses MD5
Cetak hasil pada layar
Gambar 2.4 Proses MD5 Dengan Masukan Berupa String (Sumber: Sofwan dkk, 2006)
2.4.4 Proses MD5 Dengan Masukan Berupa File Proses MD5 dengan masukan berupa file adalah proses MD5 yang masukannya memanggil file yang kemudian dihitung berapa panjang bitnya, dalam keadaan ini
file diperlakukan sebagai bit
memori sehingga
masukannya tidak terpengaruh pada ekstensinya. Kemudian dilakukan proses
13
MD5. Memanggil file
Mulai
Lakukan inisialisasi
Lakukan padding
Menghitung panjang file
Mulai proses MD5
Cetak hasil pada layar
Gambar 2.5 Proses MD5 Dengan Masukan Berupa File (Sumber: Sofwan dkk, 2006)
2.5 Pengertian Worms komputer Worms (cacing) komputer mula-mula diciptakan oleh Robert T. Morris pada tahun 1984. Worms dikategorikan sebagai program yang berbahaya (malicious software/malware) yang mirip dengan virus dan menyebar
melalui
jaringan
komputer.
Keunggulan
worms
ini
jika
dibandingkan dengan virus adalah kecepatannya yang tinggi dalam menginfeksi komputer dalam jaringan (internet). Sebagai contoh, Worms Code Red II mampu menyebar pada 360.000 host pada 2000 sistem komputer dalam satu hari. (Kurniawan, 2006) Menurut Stiawan (2004), Ciri – ciri worms komputer adalah: 1. Worms ditujukan kepada program yang mengkopi dirinya sendiri ke memory komputer. Perbedaan mendasar dari worms dan virus adalah, apakah menginfeksi target code atau tidak. Virus menginfeksi target code, tetapi worms tidak. Worms hanya tinggal di memory. 2. Worms dapat dengan cepat memperbanyak diri dan biasanya dilakukan pada media Removable Disk, LAN atau Internet. Resources jaringan yang terinfeksi akan habis bandwidth nya dibanjiri oleh worms yang akan mengakibatkan melambatnya aliran
data.
Contoh
worms:
I-Worm/Happy99(Ska),
Worm/ExploreZIP, Sobig, Nimda, Code Red, Sircam.
I-
14
3. Worms umumnya berbentuk file executable (berekstensi .EXE atau .SCR). Namun demikian, ada beberapa jenis worms yang berbentuk script yang ditulis dalam bahasa Visual Basic (VBScript).
2.5.1 Cara Penyebaran Worms Worms dapat secara otomatis menyebar dengan tanpa atau sedikit campur tangan dari penggunannya. Misalnya dengan satu kali klik pada file lampiran email yang terinfeksi worms, maka satu atau beberapa sistem yang terkoneksi melalui e-mail tersebut akan segera terinfeksi. Untuk lebih jelas, dapat dilihat pada contoh gambar berikut.
Gambar 2.6 Cara Penyebaran Worms (Sumber: Nazario, Jose, et. al., 2004)
2.5.2 Sejarah Singkat dan Taksonomi Worms Sejarah Worms mulai ada dan dikenal sejak awal internet mulai dipublikasikan. Dimana saat itu para ahli berusaha mengumpulkan informasi dari
15
seluruh jaringan internet yang belum memiliki semacam mesin pencari (search engine). Untuk mengenal sejarah awal keberadaan worms ini, secara umum dapat dilihat pada gambar kronologis kemunculan worms di bawah ini.
Gambar 2.7 Kronologis Worms (Sumber: Nazario, Jose, et. al., 2004)
Dari gambar tersebut, secara singkat dapat diketahui bahwa sejak awal penciptaan worms di Palo Alto Research Center (PARC) oleh Robert T. Morris, berdasarkan lingkungan sistem operasinya, worms berkembang dua kategori yaitu, worms yang berjalan dengan target sistem operasi UNIX dan Worms yang pada sistem operasi Microsoft Windows. Worms pada sistem UNIX dan variannya terdiri dari ADMW0rm, ADM Millenium, Ramen, li0n, Cheese, sadmind/IIS, dan Adore. Sedangkan worms yang berjalan pada sistem Microsoft Windows terdiri dari Code Red 1, Code Red 2, Code Red II, Nimda, SQL Snake dan Sapphire.
16
Beberapa catatan yang dari kronologis worms tersebut adalah tentang, 1. Morris worms Worms ini diciptakan oleh Robert Tappan Morris pada tahun 1988 sebagai proyek riset pada saat menyelesaikan program doktoralnya di Cornell Unversity. Dengan memanfaatkan kelemahan (vulnerability) pada Sendmail Server dan Finger Daemon pada sistem Unix, worms ini menyebar dengan setelah menyebabkan keadaan zero argument pada sistem yang diinfeksinya. Teknik masih
dipakai
hingga
saat
ini.
penyebaran
worms
ini,
Efek penyebaran worms yang
sangat luas ini, menyebabkan pembentukan tim Computer Emergency Response Team (CERT/CERT-CC) oleh Amerika. 2. Ramen Worms Merupakan worms pertama yang berhasil menyebar pada lingkungan Linux. Ia pertama kali di identifikasikan menyerang Red Hat versi 6.1, 6.2, 6.3 dan 7.0. Worms ini menyebar dengan bantuan shell scripts exploits dan scanner yang telah dikompilasi (packed) menjadi file binary. Setelah berhasil menginfeksi dan menjalankan aksinya (payload), ia kemudian mencari host lain secara acak pada jaringan kelas B. 3. Sadmind/IIS Worms ini mampu menyerang web server IIS (Internet Information Service) Microsoft Windows, melalui kelemahan sistem pada Sun Solaris. Dengan mencari akses root pada Sun Solaris yang terhubung dengan sistem Unix, worms ini berevolusi dengan mengubah tampilan (deface) situs-situs yang menggunakan IIS. 4. Melissa Worms ini bukan yang pertama kali menggunakan teknik penyebaran melalui e-mail, tetapi kecepatan penyebaran yang hebat membuat seluruh pengguna internet/e-mail di dunia menjadi sangat menderita. Rahasia dibalik kesuksesan worms ini terletak pada implementasi rekayasa sosial pada file attachment e-mail yang yang telah terinfeksi
17
worms tersebut. teknik ini sampai sekarang masih efektif dan digunakan oleh worms lainnya. 5. Code Red (Code Red 1) Begitu worms ini beraksi, ia langsung menjadi sebuah standar worms lain dalam melakukan infeksi. Teknik yang digunakan adalah melakukan exploits pada lubang keamanan sistem yang baru diumumkan oleh vendornya. Waktu yang dibutuhkan worms ini dalam usaha untuk mengeksploitasi lubang keamanan suatu sistem, melebihi kecepatan vendor dalam menyediakan patch untuk kelemahan sistem tersebut. 6. Code Red II Worms ini menggunakan landasan ekploitasi pada pendahulunya yaitu Code Red 1 dan Code Red 2. Dengan Teknik Island hoping, worms ini membuat kecepatan penyebaranya meningkat tiga sampai empat kali lebih cepat dari versi pendahulunya. Teknik ini membuat probabilitas serangan acak pada alamat Internet Protocol jaringan kelas A dan B menjadi lebih tinggi, sehingga lebih mudah dan cepat dalam menginfeksi sistem lain. 7. Nimda Meskipun diidentifkasikan dibuat bukan oleh pembuat Code Red, worms ini kemungkinan memiliki tujuan untuk melanjutkan hasil serangan dari Code Red II. Dengan menggunakan teknik yang sama dengan Code Red II, worms ini berbeda dalam proses scanning alamat IP pada jaringan. Dengan teknik tersebut, worms ini menyebakan aktivitas besar-besaran yang menguras sumber daya dalam jaringan.
2.5.3 Struktur Worms Lima komponen yang umum dimiliki oleh worms adalah sebagai berikut, 1. Reconnaissance.
18
Komponen Worms ini bertugas untuk merintis jalannya penyebaran pada jaringan. Komponen ini memastikan titik-titik (node) mana saja pada jaringan yang dapat dinfeksi olehnya. 2. Attack . Komponen ini bertugas untuk melancarkan serangan pada target node yang telah teridentifikasi. Bentuk serangan dapat berupa tradisional buffer atau heap overflow, string format, dan sebagainya. 3. Communications Komponen ini membuat tiap node yang terinfeksi pada jaringan dapat saling berkomunikasi.
Komponen
memberikan
semacam
antar
muka (interface) agar tiap worm pada jaringan dapat saling mengirim pesan. 4. Command Komponen ini menjadi semacam pemicu apabila target sudah teridentifikasi. Komponen ini merupakan suatu antar muka agar setiap worms dapat mengeluarkan perintah (command) pada worms di titik lain lain. 5. Intelligent Komponen ini merupakan komponen cerdas yang mampu memberikan informasi bagaimana karakteristik keadaan worms di titik lain pada jaringan. Berikut ini adalah bagaimana proses dari tiap komponen tersebut bekerjasama dalam melakukan suatu serangan
19
Gambar 2.8 Gambaran Proses Umum Komponen Worms (Sumber: Nazario, Jose, et. al., 2004) 2.5.4 Tipe-tipe worms Berdasarkan media penyebarannya worms, dapat digolongkan menjadi, 1. Email Worms 2. Instant Messaging Worms 3. Internet Relay Chat (IRC) Worms 4. File Sharing Networks Worms 5. Internet Worms 2.5.5 Pola Lalu lintas penyebaran worms Secara umum aktivitasi pola penyebaran worms dapat diketahui dengan beberapa cara, antara lain : 1. Prediksi pola penyebaran Pola penyebaran worms dapat diprediksi dengan formula Logistic Growth Model sebagai berikut, Nda = ( Na)K (1 − a)dt dengan
𝑒 𝐾(𝑡−𝑇) 𝑎= 1 + 𝑒 𝐾(𝑡−𝑇)
20
Keterangan : a
: proporsi kelemahan (vulnerability) sistem
t
: waktu
T
: waktu konstan pada saat pertumbuhan worms dimulai
K
: skala dari awal vulnerability mulai diketahui
Berikut ini adalah contoh grafik dari formula tersebut,
Gambar 2.9 Contoh Grafik Prediksi Pertumbuhan Worms (Sumber: Nazario, Jose, et. al., 2004)
2. Kekacauan yang ditimbulkan pada Backbone Internet Bebarapa indikator untuk mengetahui prediksi pertumbuhan worms dapat dilakukan dengan mengevaluasi komponen - komponen pada Backbone Internet. Komponen tersebut adalah, a. Data yang dilalukan pada router (data routing) b. Alamat-alamat multicast pada backbone c. Kondisi pada infrastruktur server yang diserang 3. Hasil observasi
21
Prediksi pertumbuhan worms dapat juga diketahui dengan melakukan observasi pada data aktual dari lalulintas jaringan. Untuk tujuan tersebut terdapat tiga kategori komponen, yaitu, a. melalui jaringan besar dari sistem yang diserang b. melauli black hole monitor c. melalui individual host