10
BAB 2 LANDASAN TEORI
2.1 Deskripsi Teori 2.1.1
Sekuriti Sekuriti merupakan faktor yang sangat penting dan tidak dapat diabaikan dalam menyembunyikan source code suatu program atau aplikasi dan mengirimkan data pada jaringan internet. Serangan - serangan yang dilakukan untuk membongkar, mengacak, melihat dan bahkan mencuri isi dari suatu source code mempunyai banyak bentuk misalnya mendekompilasi file, memodifikasi source code, dan lainnya. Jika di dalam suatu sistem sekuriti terdapat vulnerabilitas yang dapat dieksploitasi, maka akan menyebabkan sistem sekuriti tersebut mudah diserang oleh berbagai ancaman. Ancaman terhadap jaringan internet dapat disebabkan oleh manusia, bencana alam, kesalahan manusia, dan kerusakan perangkat keras atau perangkat lunak.
Ada empat macam ancaman dari sistem komputasi menurut Charles P. Pfleeger (1997, p22) yaitu : •
Interupsi yaitu suatu cara yang dapat menyebabkan suatu asset penting dapat menjadi hilang, tidak dapat digunakan, atau tidak berguna sama sekali.
•
Intersepsi yaitu suatu cara dimana beberapa pihak yang tidak berhak dapat memperoleh hak untuk mempunyai akses ke sebuah informasi.
11 •
Modifikasi yaitu suatu cara dimana pihak luar itu tidak hanya dapat memperoleh hak akses, tetapi dapat merusak dengan cara mengubah pesan atau informasi tersebut.
•
Fabrikasi atau produktif pemalsuan yaitu salah satu faktor ancaman yang cukup membahayakan dan pihak luar yang tidak berhak dapat memalsukan sebuah informasi atau program yang akan digunakan.
S. Garfinkel (2002,p1) berpendapat bahwa, karakteristik sekuriti komputer dikatakan aman berkaitan dengan tiga tujuan berikut ini yaitu :
•
Kerahasiaan, berarti sebuah asset dari sistem komputer yang dapat diakses hanya oleh pihak yang berhak atau legal.
•
Integritas, berarti sebuah asset hanya bisa dimodifikasi oleh pihak-pihak yang berhak atau dengan cara yang legal.
•
Ketersediaan, berarti sebuah asset dapat diakses oleh orang yang berhak saja dimana tidak dibatasi hanya mengakses suatu bagian saja.
2.1.2
Plagiarisme Plagiarisme adalah suatu bentuk tindakan untuk mengambil ide, tulisan, gambar, kata, atau kepemilikan intelektual yang serupa dari orang / pihak lain dan mempublikasikan kepada umum selayaknya hak milik sendiri. Plagiarisme berbeda dengan copyright yang berbasiskan hukum, karena plagiarisme lebih tepat jika dikatakan sebagai suatu pelanggaran etika. Sebagai contoh, kita dapat
12 menggunakan ulang suatu karya tulisan kepada khalayak umum tanpa merisaukan tentang
masalah
pelanggaran
legalitas
karya
tersebut.
Tetapi
jika
mempublikasikan karya tersebut selayaknya adalah hak milik sendiri tanpa mencantumkan nama dari penulis / pembuat karya yang bersangkutan maka tindakan tersebut merupakan plagiarisme. Selain plagiarisme secara umum, terdapat pula jenis plagiarisme lainnya, yaitu self-plagiarism. Self-plagiarism adalah ketika kita menggunakan ulang karya kita sendiri dari suatu publikasi sebelumnya tanpa mencantumkan referensi karya lama ke suatu publikasi yang baru. Hal ini memang tidak terlihat layaknya plagiarisme pada umumnya karena kedua karya yang baru dan yang lama merupakan hasil karya kita sendiri. Namun jika kita menggunakan ulang sejumlah tulisan yang sangat penting, akan lebih baik jika kita mencantumkan referensi dari publikasi yang sebelumnya.
2.1.3
Definisi Small Web Format (SWF) Small Web Format (SWF) adalah suatu format file yang dirancang khusus oleh Macromedia. Format SWF ini dapat memuat animasi interaktif dan gambar berbasiskan
vector
maupun
bitmap
melalui
jaringan
internet
dengan
menggunakan Macromedia Flash Player-nya. Format SWF dirancang sebagai format masa depan animasi web dan aplikasi multimedia dengan menghadirkan keunggulannya dalam membuat animasi kompleks dan tingkat keinteraktifan yang tinggi terhadap pengguna jaringan internet dengan ukuran file yang relatif kecil. Selain itu, keunggulan lain yang ditonjolkan adalah sebagai berikut:
13 a. On-Screen Display Tujuan utama dari format SWF adalah untuk on-screen display dan mendukung anti-aliasing, kecepatan render yang tinggi terhadap file gambar dari berbagai bentuk format, animasi, serta tombol-tombol interaktif. b. Extensibility Format SWF ini memiliki kemampuan kompatibilitas terhadap format-format SWF yang sudah pernah ada. Sampai saat ini format SWF sudah mencapai versi ke 8.0, dan versi ini mendukung semua format mulai dari versi 1.0. c. Network Delivery Dapat dikirimkan melalui jaringan internet di seluruh dunia. Format SWF merupakan hasil kompresi dan mendukung incremental rendering melalui streaming. Format SWF merupakan sebuah format biner dan tidak dapat dibaca oleh manusia layaknya file HTML (Hyper Text Markup Language). Format SWF menggunakan teknik bit-packing untuk mereduksi ukuran file. d. Simplicity Format SWF ini sangat sederhana sekali, sehingga Flash Player ini memiliki ukuran yang sangat kecil dan dapat dengan mudah dijalankan di berbagai sistem operasi. Format SWF ini juga hanya sedikit bergantung terhadap sistem operasi. e. File Independence Menampilkan isi file tanpa ketergantungan terhadap sumber dari luar seperti font, gambar, suara maupun video.
14 f. Scalability Dapat digunakan pada berbagai resolusi monitor dengan ketajaman file yang sama. Namun hal ini juga tergantung pada hardware pengguna. g. Speed File di-render pada kualitas yang tinggi dengan kecepatan yang tinggi. h. Scriptability Format ini mengandung tag-tag yang menjalankan kode byte secara berurutan yang dapat diinterpretasikan oleh mesin stack yang ada pada prosesor. Kode byte ini mendukung bahasa pemrograman ActionScript. Flash Player menyediakan model objek runtime ActionScript yang dapat berinteraksi dengan gambar primitif, server, dan fitur Flash Player lainnya.
2.1.4
Struktur File SWF Struktur file SWF terdiri dari rangkaian tag-tag blok data. Setiap tag ini terdiri dari type dan length. Tag header ini memiliki dua format, short dan long. Short dapat digunakan untuk tag yang berukuran maksimal 62 byte, sedangkan long dapat digunakan untuk tag apa saja yang berukuran 63 byte sampai dengan ukuran 4 gigabyte, jauh lebih besar daripada penggunaan prakteknya saat ini.
Header
Tag
Tag
Tag
End Tag
… Gambar 2.1 Struktur File SWF
15 2.1.5
Proses pembentukan file SWF File SWF merupakan hasil kompilasi dari file .FLA. Format FLA adalah file sumber asli yang menyimpan keseluruhan informasi mengenai segala sesuatu yang kita rancang menggunakan program Macromedia Flash.
Animasi Gambar
.fla
Suara
Compile
.swf
Video Action Script
Gambar 2.2 Proses Pembentukan File SWF
2.1.6
Algoritma Enkripsi Blowfish Algoritma enkripsi Blowfish ini pertama kali diciptakan oleh seorang ahli kriptologis bernama Bruce Schneier pada tahun 1993 dan sampai dengan saat ini belum pernah sistem keamanannya ditembus atau di-crack oleh siapapun. Kelebihan algoritma ini adalah ia menggunakan block cipher 64 bit dan melakukan enkripsi dengan cara mengiterasi sebuah fungsi sederhana sebanyak 16 kali. Maka dari itu, algoritma Blowfish ini akan sangat efisien pada komputerkomputer yang menggunakan mikroprosesor yang besar. Ada 2 tahapan pada algoritma Blowfish, yaitu tahap ekspansi dari key yang digunakan, dan tahap enkripsi data.
16 a. Tahap ekspansi key. Pada tahap ini, yang dilakukan adalah memecah sebuah key menjadi suatu set subkey. Secara spesifik misalnya, sebuah key yang berukuran tidak lebih dari 448 bit akan dipisah-pisah menjadi 4168 byte. Ada sebuah P-Array dan 4 buah S-Box yang berukuran 32 bit, dimana P-Array mengandung 18 buah subkey yang berukuran 32 bit dan setiap S-Box mengandung 256 entry. P-Array terdiri dari 18 subkey 32-bit: P1, P2, P3, … P18. 4 buah S-Box terdiri dari 256 entry: S1.0, S1.1, S1.2, … S1.255 S2.0, S2.1, S2.2, … S2.255 S3.0, S3.1, S3.2, … S3.255 S4.0, S4.1, S4.2, … S4.255
Langkah-langkah perhitungan subkey: -
Inisialisasi P-Array dan S-Box.
-
Lakukan operasi XOR pada P-Array dengan ukuran bit dari keynya tersebut. Misal, P1 XOR (32 bit pertama dari key), P2 XOR (32 bit kedua dari key).
-
Gunakan metoda diatas untuk meng-enkrip all-zero string.
-
Output yang baru ini sekarang adalah P1 dan P2.
-
Enkripsikan P1 dan P2 dengan subkey yang telah dimodifikasi.
-
Output yang baru ini adalah P3 dan P4.
17 -
Ulangi sebanyak 512 kali untuk mendapatkan seluruh subkey untuk P-Array dan S-Box.
b. Tahap enkripsi Pada tahap ini, yang kita lakukan adalah membagi x menjadi 2 bagian 32-bit: xL dan xR, dimana x ini sebenarnya adalah input data yang berukuran 64 bit. Divide x into two 32-bit halves: xL, xR For i = 1 to 16: xL = xL XOR Pi xR = F(xL) XOR xR Swap xL and xR Next i Swap xL and xR (Undo the last swap.) xR = xR XOR P17 xL = xL XOR P18 Recombine xL and xR
Function F (see Figure 2): Divide xL into four eight-bit quarters: a, b, c, and d F(xL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232 (Schneier, 1994, p1)
18
Gambar 2.3 Flowchart Enkripsi Blowfish
19
Gambar 2.4 Flowchart Fungsi F Dalam Algoritma Blowfish (Hackett, 1998, p1)
2.1.7
Reverse Engineering Reverse engineering adalah suatu teknik untuk mengurai suatu objek dalam perancangan. Dalam hal ini, reverse engineering dimaksudkan untuk tujuan pendidikan yaitu untuk mengerti cara kerja objek tersebut sehingga dapat menambah pengetahuan serta menggunakannya untuk membuat sesuatu yang lebih baik. Hal ini merupakan sisi positif dari reverse engineering, karena usaha ini tidak dipandang sebagai sesuatu yang melanggar etika atau ilegal. Akan tetapi yang melanggar etika adalah ketika kita membuat jiplakan langsung dari karya orang lain dengan sedikit perubahan atau bahkan tidak sama sekali, yang mungkin tanpa kita mengerti bagaimana cara membuatnya dan cara bekerjanya.
20 2.1.8
Representasi Data •
Binary Numbers Komputer menyimpan intruksi dan data ke dalam memori sebagai kumpulan sinyal listrik dengan konsep on dan off atau true dan false. Angka biner adalah angka berbasis 2 dimana setiap digitnya bernilai 0 atau 1, dimana 0 melambangkan off atau false, dan 1 melambangkan on atau true.
•
Hexadecimal Numbers Bilangan biner dengan angka yang banyak dapat direpresentasikan sebagai bilangan hexadecimal. Bilangan hexadecimal adalah angka berbasis 16. Setiap digit pada angka hexadecimal mewakili empat binary bits dan dua digit hexadecimal mewakili delapan binary bits (byte). Sebuah digit hexadecimal memiliki nilai dari 0 sampai 15. Untuk digit yang lebih besar dari 9 diwakili dengan huruf abjad (A = 10, B = 11, C = 12, D = 13, E = 14, F = 15).
•
Decimal Numbers Bilangan decimal merupakan bilangan berbasis 10 yang tidak lain adalah basis bilangan yang kita gunakan dalam kehidupan kita sehari-hari untuk mempermudah perhitungan dan representasi data. Bilangan ini memiliki nilai dari 0 sampai 9.
21 Binary
Decimal
Hexadecimal
Binary
Decimal
Hexadecimal
0000
0
0
1000
8
8
0001
1
1
1001
9
9
0010
2
2
1010
10
A
0011
3
3
1011
11
B
0100
4
4
1100
12
C
0101
5
5
1101
13
D
0110
6
6
1110
14
E
0111
7
7
1111
15
F
Gambar 2.5 Tabel Nilai Ekuivalen Bilangan Biner, Decimal dan Hexadecimal
2.1.9 Konsep Dasar Rekayasa Piranti Lunak 2.1.9.1
Definisi Rekayasa Piranti Lunak Pengertian rekayasa piranti lunak pertama kali diperkenalkan oleh Fritz Bauer sebagai penetapan dan penggunaan prinsip-prinsip rekayasa dalam usaha mendapatkan piranti lunak yang ekonomis, yaitu piranti lunak yang terpercaya dan bekerja secara efisien pada mesin atau komputer (Pressman, 1992, p19).
2.1.9.2
Paradigma Rekayasa Piranti Lunak Terdapat lima paradigma atau model proses didalam merekayasa suatu piranti lunak, yaitu The Classic Life Cycle atau sering juga disebut Waterfall Model, Prototyping Model, Fourth Generation Techniques (4
22 GT), Spiral Model, dan Combine Model. Pada penulisan skripsi kali ini dipakai model Waterfall Model. Menurut Pressman (1992, p20-21), ada enam tahap dalam Waterfall Model, seperti pada gambar berikut:
Gambar 2.6 Model Rekayasa Piranti Lunak Waterfall
a. Rekayasa sistem (System Engineering) Tahap ini adalah tahap penetapan kebutuhan dari semua elemen sistem yang akan dibuat. Gambaran sistem ini penting jika perangkat lunak harus berinteraksi dengan elemen-elemen lain, seperti hardware, manusia dan database. b. Analisis kebutuhan perangkat lunak (Software Requirement Analysis) Yang dilakukan pada tahap ini adalah analisa atau penelitian guna mengetahui
kebutuhan,
sumber
informasi,
fungsi-fungsi
yang
23 dibutuhkan, kemampuan dan antarmuka dari sebuah piranti lunak yang akan direkayasa. c. Perancangan (Design) Tahap ini menekankan pada empat atribut program, yaitu struktur data, arsitektur piranti lunak, rincian prosedur dan karakter antarmuka. Pada tahap ini juga kita menerjemahkan kebutuhan ke dalam sebuah representasi perangkat lunak yang dapat dinilai kualitasnya sebelum dilakukan pengkodean. d. Pengkodean (Coding) Tahap pengkodean yang dilakukan adalah memindahkan hasil perancangan menjadi suatu bentuk yang dapat dimengerti oleh mesin, yaitu dengan membuat program aplikasi itu sendiri. e. Pengujian (Testing) Tahap pengujian bertujuan untuk menguji atau memastikan output yang dihasilkan oleh program yang sudah dibuat sesuai dengan output yang kita harapkan. Tahap pengujian ini dapat dilakukan per unit, elemen, atau secara keseluruhan. f. Pemeliharaan (Maintenance) Tahap
pemeliharaan
dilakukan
dengan
tujuan
mengantisipasi
kebutuhan pemakai terhadap fungsi-fungsi baru yang dapat timbul sebagai akibat munculnya sistem operasi baru, teknologi baru dan hardware baru.
24 2.2 Program pendukung yang dipakai Program aplikasi yang dirancang memerlukan beberapa pendukung program lainnya sebagai pelengkap perancangan. Program-program pendukung tersebut adalah sebagai berikut:
1. Macromedia Flash MX 2004 Macromedia Flash MX 2004 digunakan untuk merancang dan membuat animasi interaktif menggunakan bahasa pemrograman ActionScript . Hasil akhir pembuatan animasi tersebut akan dikompilasi menjadi file SWF yang siap untuk dipublikasikan ke jaringan internet. 2. Macromedia Flash Player 7.0 Program ini adalah media player yang dirancang khusus untuk menjalankan file SWF. 3. FileSee 3.1 Program ini dapat menampilkan struktur sebuah file dalam bentuk ASCII dan hexadecimal. Dalam penggunaannya, program ini membantu penulis dalam mempelajari struktur file SWF. 4. Sothink Decompiler 2002 Program ini sebenarnya merupakan aplikasi decompiler bagi file SWF yang digunakan banyak orang untuk melihat source code ActionScript sehingga
memungkinkan
terjadinya
tindakan
plagiarisme.
Pada
perancangan program aplikasi ini, penulis menggunakannya untuk membandingkan file SWF sebelum dan sesudah di-obfuskasi.