BAB II LANDASAN TEORI
2.1
Kriptografi Kriptografi dipicu oleh perkembangan peralatan komputer digital. Dengan
komputer digital chiper yang kompleks menjadi sangat mungkin untuk dapat dihasilkan. Awalnya kriptografi hanya khusus digunakan oleh badan-badan intelejen dunia untuk mengamankan komunikasi mereka. Namum seperti yang kita lihat sekarang kriptografi sudah menyebar luas diiringi perkembangan teknologi. Sekarang hampir semua service di internet menggunakan kriptografi. Kriptografi bukan lagi menjadi monopoli militer atau badan-nadan intelejen (Munir, 2006:12).
2.1.1 Pengertian Kriptografi Ada beberapa definisi yang telah dikemukakan didalam literatur. Kata Kriptografi
berasa dari bahasa Yunani, cryptos artinya secret (rahasia) dan
graphien berarti writing (tulisan). Sehingga cryptografi dapat diartikan sebagai pesan yang tertulis dengan secara tersembunyi atau rahasia. Dalam buku-buku lama menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikan ke dalam bentuk yang dapat dimengerti maknanya. Namun saat ini kriptografi lebih dari sekedar privacy tetapi juga untuk data integrity, authentication dan non-repudiation (Munir,2006:2). Dalam menjaga kerahasiaan data dengan kriptografi, data sederhana yang dikirim (plainteks) diubah kedalam bentuk data sandi (cipherteks), kemudian sandi tersebut hanya dapat dikembalikan kedalam bentuk sebenarnya hanya dengan menggunakan kunci (key) tertentu yang dimiliki oleh pihak yang berwenang atau yang sah saja.
2.1.2 Tujuan Kriptografi Kriptografi bertujuan untuk memberi layanan keamanan sebagai berikut (Munir, 2006:9): 6
7
1. Kerahasiaan (confidentiality) Adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak 2. Integritas data (data integrity) Adalah layanan yang menjamin bahwa pesan masih asli (utuh) belum pernah dimanipulasi selama pengiriman 3. Otentikasi (authentication) Adalah
layanan
yang
berhubungan
dengan
identifikasi,
baik
mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan 4. Nirpenyangkaan (non-repudiation) Adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkaan yaitu oleh pengirim pesan menyangka melakukan pengiriman atau penerima pesan menyangka telah menerima pesan
2.1.3 Klasifikasi Kriptografi Dipandang dari segi era pengembangannya, ilmu kriptografi dibagi menjadi dua, yaitu kriptografi klasik dan kriptografi modern. 1. Kriptografi Klasik 2. Kriptografi modern
2.1.3.1 Kriptografi Klasik Kriptografi klasik merupakan teknik kriptografi yang sudah digunakan pada zaman dahulu sebelum komputer ditemukan atau sudah ditemukan namun belum secanggih sekarang. Kriptografi klasik ini melakukan pengacakan huruf atau plaintext. Kriptografi ini hanya melakukan pengacakan pada huruf A – Z, kriptografi semacam ini sangatlah tidak disarankan untuk mengamankan informasi-informasi penting karena dapat dipecahkan dalam waktu singkat.
8
Salah satu contoh algoritma dari kriptografi klasik adalah Vigenere Cipher. Vigenere Cipher adalah jenis algoritma kriptografi klasik yang ditemukan oleh Giovan Battista Bellaso. Salah satu metode untuk melakukan enkripsi dengan algoritma ini yaitu dengan menggunakan tabule recta (bujursangkar vigenere).
Gambar 2.1 Contoh Tabula Recta Algoritma Kriptografi Vigenere Cipher (Sumber: Munir, 2006:11)
Kolom paling kiri dari bujursangkar menyatakan huruf-huruf kunci, sedangkan baris paling atas menyatakan huruf-huruf plaintext. Setiap baris di dalam bujursangkar menyatakan huruf-huruf ciphertert yang diperoleh denganCaesar cipher, yang mana jumlah pergeseran huruf plaintext ditentukan nilai numerik huruf kunci tersebut (yaitu, a=0, b=1, c=2, …, z=25) Jika plaintext adalah ADIKS dan kunci adalah KUNCI maka penggunakaan kunci secara periodiknya adalah sebagai berikut. Plaintext
: ADIKS
Kunci
: KUNCI
Ciphertext
: KXVMA
9
Untuk mendapatkan ciphertext dari teks dan kunci di atas, untuk huruf plaintext pertama A, ditarik garis vertikal dari huruf A dan ditarik garis mendatar dari huruf k, perpotongannya adalah pada kotak yang berisi huruf K. Dengan cara yang sama, ditarik garis vertikal dari huruf D dan ditarik garis mendatar pada huruf u, perpotongannya adalah pada kotak yang juga berisi berisi huruf X begitu juga untuk karakter berikutnya, maka dapat dihasilkan ciphertext KXVMA.
2.1.3.2 Kriptografi Modern Kriptografi modern merupakan teknik kriptografi yang beroperasi dalam mode bit ketimbang mode karakter. Pengoprasi kriptografi ini dalam mode bit berarti semua data dan informasi (kunci, plainteks, maupun cipherteks) semua dinyatakan dalam rangkaian string ataupun bit biner 0 dan 1. Teknik enkripsi dan dekripsinya pun memproses semua data dan informasi dalam bentuk rangkaian bit. Rangkaian bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk rangkaian bit, demikian sebaliknya. Berdasarkan kunci yang digunakan untuk proses enkripsi dan dekripsi, Kriptografi terdiri dari dua macam, yaitu kriptografi simetri (symmetric cryptography) dan kriptografi asimetri (asymmetric cryptography). 2.1.3.2.1 Algoritma Simetri (Symmetric Cryptography) Pada algoritma ini terdapat sebuah kunci yang digunakan untuk enkripsi dan dekripsi data atau informasi. Keamanan sistem kriptografi ini terletak pada kerahasiaan kunci. Algoritma ini sering disebut juga algoritma kunci rahasia atau algoritma kunci tunggal. 3.
Kunci
4. 5. Plaintext 6.
ciphertext Enkripsi
Plaintext Dekripsi
Gambar 2.2 Kriptografi Simetri (symmetric cryptography) (Sumber: Munir, 2006:11)
10
2.1.3.2.2 Algoritma Asimetri (Asymmetric Cryptography) Algoritma ini sering disebut algoritma kunci publik. Di dalam algoritma ini terdapat dua kunci yang digunakan yaitu kunci untuk enkripsi yang disebut kunci publik yang berarti semua orang bisa mengetahuinya dan kunci deskripsi atau yang sering disebut kunci pribadi. Kunci Umum
Kunci Pribadi
ciphertext
Plaintext Enkripsi
Plaintext Dekripsi
Gambar 2.3 Kriptografi Asimetri (asymmetric cryptography) (Sumber: Munir, 2006:12)
2.2
Obfuskasi Obfuskasi adalah teknik menyamarkan source code dengan tujuan agar
tidak dengan mudah dibaca oleh orang lain atau user. Tujuan dari teknik obfuskasi ini adalah sebagai alternatif pengamanan suatu kekayaan intelektual berupa source code dengan cara mentransformasi sintaks sorce code namun dengan tetap memelihara semantik (isi) sehingga kerahasiaan tetap terjaga. Teknik ini hanya bersifat transformasi bentuk source code kedalam karakter yang tidak mudah dimengerti oleh manusia namun tetap bisa dimengerti oleh mesin. Tranformasi dilakukan secara konsisten sehingga kita tidak dapat melakukan obfuskasi terhadap masing-masing skrip PHP secara terpisah, proses obfuskasi harus dilakukan secara menyeluruh, karena bila ada satu saja yang bebeda, maka bagian yang berbeda itu tidak akan bisa bekerja bersama yang lain.
2.2.1 Alasan Menggunakan Obfuskasi Source Code PHP Ada banyak alasan orang atau pihak developer program untuk melakukan obfuskasi pada hasil karyanya berupa source code PHP antara lain : 1.
Melindungi hasil karya dari penggandaan, pembajak atau plagiat (meniru)
2.
Melindungi Algoritma kita
3.
Member jaminan rasa aman kepada sisi developer program
11
2.2.2 Cara Kerja Obfuskasi Obfuskasi memegang peranan penting dalam hal pengamanan, terutama sebagai layanan yang menyediakan dan memfasilitasi proteksi kode bagi pengaksesnya (users). Bila diobservasi dari sisi struktur kerja atau prinsip, obfuskasi memiliki kesamaan dengan encryptor, yaitu sebagai pengonversi kode ke bentuk bahasa yang dapat dibaca namun sulit untuk dipahami dan dimengerti oleh manusia, sehingga memungkinkan tingkat keamanan yang lebih baik daripada penerapan external script. Teknik obfuskasi sendiri pada umumnya mengubah plaintext berupa script tanpa mengubah semantiknya, walaupun script berubah menjadi karakter yang susah dibaca manusia namun jika dieksekusi oleh mesin, fungsinya masih berjalan sebagaimana mestinya. Pada pembahasan ini algoritma yang digunakan adalah RC4. Output yang dihasilkan adalah berbentuk simbol ASCII dan harus ditransformasi dengan menggunakan base64 untuk mengubah ke dalam karakter yang dapat disimpan dan dibaca oleh mesin PHP
2.2.1
Alasan Menggunakan Obfuskasi Source Code PHP Gambar 2.4 Alur Kerja Obfuskasi
2.3
Enkripsi dan Deskripsi Enkripsi-Deskripsi adalah sebuah proses yang melakukan perubahan
sebuah kode dari yang bisa dimengerti menjadi sebuah kode yang tidak bisa dimengerti (wahana komputer, 2003:17).
2.3.1 Enkripsi Enkripsi dapat diartikan sebagai kode atau chipher. Sebuah sistem pengkodean menggunakan suatu tabel atau kamus yang telah didefinisikan untuk menggantikatadari informasi yang dikirim. Sebuah chipher menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unniteigible). Karena tenik
12
chipher merupakan suatu sistem yang telah siap untuk diautomatisasi, maka teknik ini di gunakan dalam sistem keamanan komputer dan jaringan. Enkripsi di maksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak. Informasi ini dapat berupa nomor kartu kredit, catatan penting computer maupun password untuk mengakses sesuatu. Dalam hal ini terdapat tiga kategori enkripsi yaitu : 1.
Kunci enkripsi rahasia Dalam hal ini terdapat sebuah kunci yang digunakan untuk meng-enkripsi dan juga untuk mendeskripsi informasi
2.
Kunci enkripsi public Dalam hal ini dua kunci digunakan yaitu proses enkripsi dan proses deskripsi
3.
Fungsi one-way (satu arah) Dalam hal ini suatu fungsi dimana informasi di enkripsikan untuk menciptakan signature dari informasi yang bisa digunakan untuk keperluan authentication (wahana computer 2003:18) Enkripsi dibentuk berdasarkan suatu algoritma yang akan mengacak suatu informasi menjadi bentuk yang tidak bisa di baca atau tidak bisa dilihat. Meskipun orang lain melihat atau membacanya yang dapat hanyalah sekumpulan karakter-karakter ASCII (American Standart Code for Information Interchange) secara acak. Walaupun secara acak tetapi karakter-karakter tersebut berpola hanya tidak terlihat.
proses enkripsi secara umum dapat dilihat dari gambar 2.4
Gambar 2.5 Proses enkripsi secara umum Sumber: (http://id.wikipedia.org/wiki/enkripsi)
13
2.3.2 Deskripsi Deskripsi merupakan proses dengan algoritma yang sama untuk mengembalikan informasi teracak menjadi bentuk aslinya. Algoritma yang digunakan harus terdiri dari susunan prosedur yang direncanakan secara hati-hati yang harus secara efektif menghasilkan sebuah bentuk ter-enkripsi yang tidak bisa dikembalikan oleh seseorang, bahkan sekalipun mereka memiliki algoritma yang sama.
2.4
Algoritma RC4 Menurut Dony Ariyus (2008:250). RC4 merupakan jenis aliran kode yang
berarti operasi enkripsinya dilakukan per karakter 1 byte untuk sekali operasi. Algoritma kriptografi Rivest Code 4 (RC4) merupakan salah satu algoritma kunci simetris dibuat oleh RSA Data Security Inc (RSADSI) yang berbentuk stream chipper. Algoritma ini ditemukan pada tahun 1987 oleh Ronald Rivest dan menjadi simbol keamanan RSA (merupakan singkatan dari tiga nama penemu : Rivest, Shamir, dan Adleman). RC4 menggunakan panjang kunci dari 1 sampai 256 byte yang digunakan untuk menginisialisasikan tabel sepanjang 256 byte. RC4 merupakan salah satu jenis stream chipher sehingga RC4 memproses unit atau input data, pesan atau informasi pada satu saat. Unit atau data pada umumnya sebuah byte atau bahkan kadang-kadang bit (byte dalam hal RC4) sehingga dengan cara ini enkripsi atau deskripsi dapat dilaksanakan pada panjang variabel. RC4 digunakan secara luas pada beberapa aplikasi dan umumnya dinyatakan sangat aman, karena RC4 termasuk dalam algoritma simetris maka kerahasiaan kunci harus dijaga dan dikirim di saluran komunikasi yang aman. Algoritma RC4 menggunakan dua buah Substitution Box (S-Box) yaitu array sepanjang 256 yang berisi permutasi dari bilangan 0 sampai 255, dan S-Box kedua, yang berisi permutasi merupakan fungsi dari kunci dengan panjang variabel.
14
Algortima RC4 Secara Umum 1. Instalasi larik state sepanjang 256 byte. 2. Memilih kunci rahasia yang ingin digunakan (panjang kunci 1 byte sampai 256 byte , semakin panjang semakin baik). 3. Menjelankan algoritma KSA (Key – Scheduling Algorithm) dan PGRA (Pseudo – Random Generation Algorithm) 4. Key stream yang dihasilkan dioperasikan dengan operasi logika XOR dengan plainteks. 5. Proses tersebut menghasilkan chiperteks dan plainteks.
2.4.1 Cara kerja RC4 Cara kerja algoritma RC4 yaitu inisialisasi S-Box pertama, S[0], S[1],…,S[255], dengan bilangan 0 sampai 255. Pertama isi secara berurutan S[0]=0, S[1]=1,…,S[255]=255. Kemudian inisialisasi array lain (S-Box lain), misal array K dengan panjang 256. Isi array K dengan kunci diulangi sampai seluruh array K[0], K[1],….., K[255] terisi seluruhnya. Menggunakan dua buah indeks yaitu i dan j di dalam algoritmanya. Indeks i digunakan untuk memastikan bahwa suatu elemen berubah, sedangkan indeks j akan memastikan bahwa suatu elemen berubah secara random. Secara garis besar algoritma dari metode RC4 Stream Cipher ini terbagi menjadi dua bagian, yaitu : key setup dan stream RC4 Stream Cipher generation. Pada. Key Setup terdapat tiga tahapan proses di dalamnya, yaitu Inisialisasi S-Box, Menyimpan key dalam Key Byte Array, Permutasi pada S-Box. Pada Stream Generation akan menghasilkan nilai pseudorandom yang akan dikenakan operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk menghasilkan plaintext. Algoritmanya Stream Generation adalah sebagai berikut: 1. Isi indeks i dan j dengan nilai 0 2. Untuk i = 0 sampai i = panjang plaintext 3. Isi nilai i dengan hasil operasi ( i + 1 ) mod 256 4. Isi nilai j dengan hasil operasi ( j + S( i ) ) mod 256 5. Swap S( i ) dan S( j ) 6. Isi nilai t dengan hasil operasi ( S( I ) + (S( j ) mod 256)) mod 256
15
7. Isi nilai y dengan nilai S( t ) 8. Nilai y dikenakan operasi XOR terhadap plaintext 9. Tambahkan i dengan 1, kembali ke 2. Untuk menunjukan cara kerja dari algoritma RC4, berikut akan dijelaskan dengan menggunakan empat-bit kunci, agar terlihat sederhana. Array S 0123 Array K 2573 Inisialisasi i dan j dengan 0 kemudian dilakukan KSA agar tercipta state-array yang acak. Penjelasan iterasi lebih lanjut dapat dijelaskan sebagai berikut. Iterasi 1 i=0 j = (0 + S[0] + K [0 mod 4]) mod 4 = (0 + 0 + 2) mod 4 = 2 Swap (S[0],S[2]) Hasil Array S 2103 Iterasi 2 i=1 j = (2 + S[1] + K [1 mod 4]) mod 4 = (2 + 1 + 5) mod 4 =0 Swap (S[1],S[0]) Hasil Array S 1203 Iterasi 3 i=2 j = (0 + S[2] + K [2 mod 4]) mod 4 = (0 + 0 + 7) mod 4 = 3 Swap (S[2],S[3]) Hasil 1230 Iterasi 4 i=3 j = (3 + S[3] + K [3 mod 4]) mod 4 = (3 + 0 + 3) mod 4 = 2
16
Swap (S[3],S[2]) Hasil Array S 1203 Setelah melakukan KSA, akan dilakukan PRGA. PRGA akan dilakukan sebanyak 4 kali dikarenakan plainteks yang akan dienkripsi berjumlah 4 karakter. Hal ini disebakan karena dibutuhkan 1 kunci dan 1 kali pengoperasian XOR untuk tiapiap karakter pada plainteks. Berikut adalah tahapan penghasilan kunci enkripsi dengan PRGA. Array S 1203 Inisialisasi i=0 j=0 Iterasi 1 i = (0 + 1) mod 4 = 1 j = (0 + S[1]) mod 4 = (0+ 2) mod 4 = 2 swap (S[1],S[2]) 1023 K1 = S[(S[1]+S[2]) mod 4] = S[2 mod 4] = 2 K1 = 00000010 Iterasi 2 i = (1 + 1) mod 4 = 2 j = (2 + S[2]) mod 4 = (2+ 2) mod 4 = 0 swap (S[2],S[0]) 2013 K2 = S[(S[2]+S[0]) mod 4] = S[3mod 4] = 3 K2 = 00000011 Iterasi 3 i = (2 + 1) mod 4 = 3 j = (0 + S[3]) mod 4 = (0+ 3) mod 4 = 3 swap (S[3],S[3]) 1023
17
K3 = S[(S[3]+S[3]) mod 4] = S[6 mod 4] = 2 K3 = 00000010 Iterasi 4 i = (3 + 1) mod 4 = 0 j = (3 + S[0]) mod 4 = (3+ 1) mod 4 = 0 swap (S[0],S[0]) 1023 K1 = S[(S[0]+S[0]) mod 4] = S[2 mod 4] = 2 K1 = 00000010 Berikut adalah tahapan penghasilan kunci enkripsi dengan PRGA. Array S 1203 Inisialisasi i=0 j=0 Iterasi 1 i = (0 + 1) mod 4 = 1 j = (0 + S[1]) mod 4 = (0+ 2) mod 4 = 2 swap (S[1],S[2]) 1023 K1 = S[(S[1]+S[2]) mod 4] = S[2 mod 4] = 2 K1 = 00000010
Iterasi 2 i = (1 + 1) mod 4 = 2 j = (2 + S[2]) mod 4 = (2+ 2) mod 4 = 0 swap (S[2],S[0]) 2013 K2 = S[(S[2]+S[0]) mod 4] = S[3 mod 4] = 3 K2 = 00000011 Iterasi 3 i = (2 + 1) mod 4 = 3
18
j = (0 + S[3]) mod 4 = (0+ 3) mod 4 = 3 swap (S[3],S[3]) 1023 K3 = S[(S[3]+S[3]) mod 4] = S[6 mod 4] = 2 K3 = 00000010 Iterasi 4 i = (3 + 1) mod 4 = 0 j = (3 + S[0]) mod 4 = (3+ 1) mod 4 = 0 swap (S[0],S[0]) 1023 K1 = S[(S[0]+S[0]) mod 4] = S[2 mod 4] = 2 K1 = 00000010 Proses XOR kunci enkripsi dengan plainteks HALO
: 01001000 01000001 01001100 01001111
Key
: 00000010 00000011 00000010 00000010
Cipherteks
: 01001010 01000010 01001110 01001101 (L)
(B)
(N)
(M)
2.4.2 Permasalahan RC4 Stream Chiper Pada dasarnya penggunaan metode RC4 stream chipper ini mendapat beberapa permasalahan salah satunya adalah tentang perulangan key/kunci. Terlalu tingginya kemungkinan S-Box yang sama karena nilai psudorandom yang sama seringkali dibangkitkan berulang, hal ini terjadi karena kunci user di ulangulang untuk mengisi 256 byte array. Meskipun metode ini memungkinkan untuk menggunakan panjang variable 256 karakter/byte, namun pada kenyataannya jarang sekali ada yang menggunakan kunci sepanjang itu, dikarenakan akan sulit mencari kombinasi dan juga untuk mengingatnya. Misal kunci yang digunakan dengan panjang 8 byte maka kunci akan diulang sebanyak 32 kali untuk mengisi key byte array sampai penuh. Untuk mengatasi permasalahan di atas yang terdapat pada stream chipper RC4 maka ada beberapa yang dapat dilakukan yaitu:
19
1. Gunakanlah kunci yang panjang (minimal panjang kunci • 3 karakter dan maksimal • 255 karakter) agar kemungkinan kunci dimasukkan berulang dalam key byte array semakin kecil dan gunakan kombinasi yang berlainan. 2. Usahakan untuk tidak menggunakan kunci yang sama untuk mengenkripsi file yang berbeda
2.5
Operator Logika Operator logika dikenal juga dengan sebutan operator bolean. Operator ini
bermanfaat untuk melakukan operasi nalar (logika) seperti “dan”, “atau”, “tidak” dan sebagainya. Dengan menggunakan operator ini, operasi hubungan yang berganda dapat dilihat, Tabel 2.1 Jenis – jenis operator logika. Tabel 2.1 Jenis – jenis operator logika.
Operator
Keterangan
NOT
Operator Komplemen(“tidak”)
AND
Operator “dan”
OR
Operator “atau”
XOR
Operator “atau ekskusif”
IMP
Operator “implikasi”
EQV
Operator “kesamaan”
1. Operator “NOT” memberikan hasil bernilai benar, jika kondisi yang terletak sesudahnya bernilai salah. Jika kondisi bernilai benar maka hasilnya adalah salah. 2. Operator “AND” memberikan hasil bernilai benar hanya jika kedua kondisi diantaranya bernilai benar. 3. Operator “OR” memberikan hasil bernilai benar jika salah satu kondisi ada yang bernilai benar 4. Operator “XOR” (berasal dari kata exclusive or) memberikan hasil bernilai benar hanya jika sebuah kondisi saja yang bernilai benar.
20
5. Operator “IMP” (berasal dari kata implication) memberikan hasil bernilai salah jika kondisi pertama bernilai benar tetapi kondisi kedua bernilai salah. 6. Operator “EQV” (berasal dari kata equivalence) meberikan hasil benar jika kedua kondisi dalam keadaan sama Untuk membuktikan kebenaran dari operator logika dapat dilihat, Tabel 2.2 Tabel kebenaran Operasi logika AND, OR, XOR, IMP, dan EQV Tabel 2.2 Tabel kebenaran operator logika
Kondisi1 Kondisi2
AND
OR
XOR
IMP
EQV
Benar
Benar
Benar
Benar
Salah
Benar
Benar
Benar
Salah
Salah
Benar
Benar
Salah
Salah
Salah
Benar
Salah
Benar
Benar
Benar
Salah
Salah
Salah
Salah
Salah
Salah
Benar
Benar
2.5.1 Ekskusif OR (XOR) Operasi XOR merupakan operasi logika bitwise yang bekerja dengan membandingkan dua buah bit yang apabila pada salah satu bit nya bernilai Benar, maka hasil akhir operasi XOR tersebut adalah Benar. Namun, bila kedua bit yang akan dibandingkan bernilai Salah atau keduanya bernilai Benar maka hasil akhir operasi XOR tersebut adalah Salah. Operasi bit berlaku untuk bit pada kedua operand pada tingkat yang sama, bit 0 dioperasikan dengan bit 0, bit 1 dioperasikan dengan bit 1 dan seterusnya. Tabel 2.3 Operasi dengan operator XOR
Bit operand 1
Bit operand 2
Hasil
1
1
0
1
0
1
0
1
1
0
0
0
21
Perhatikan bahwa operator XOR identik dengan penjumlahan modulo 2: 1 + 1 (mod 2) = 0 1 + 0 (mod 2) = 1 0 + 1 (mod 2) = 1 0 + 0 (mod 2) = 0
2.5.2 Teknik Enkripsi Operator Logika XOR Metode yang digunakan untuk mengenkripsi kode program pada aplikasi ini adalah dengan menggunakan operator logika XOR. XOR adalah suatu cara untuk mengenkripsikan kode program dengan cara melakukan operasi XOR antara bit-bit plaintext (kode program) tersebut dengan key yang sudah di tentukan untuk menghasilkan ciphertext. C = P XOR K Untuk menghasilkan ciphertext dngan cara XOR antara plaintext dan key hal yang perlu diperhatikan pertama kali adalah panjang keduannya harus sama, karena prosesnya XOR antara bit-bit plaintext dan key. Contoh proses XOR antara plaintext dan key dapat dilihat pada contoh berikut: Plaintext
: ADIKS
Key
: KUNCI
Pertama yang harus diperhatikan adalah harus mendapatkan kode ASCII dari plaintext dan key tersebut dan diubah dalam bentuk biner. Tabel 2.4 Kode ASCCI dan biner dari plaintext ADIK
Karakter A
ASCII 65
Notasi biner 0100 0001
D
68
0100 0100
I
73
0100 1001
K
75
0100 1011
S
83
0101 0011
22
Tabel 2.5 Kode ASCCI dan biner dari key KUNCI
Karakter K
ASCII 75
Notasi biner 0100 1011
U
85
0101 0101
N
78
0100 1110
C
67
0100 0011
I
73
0100 1001
Setelah mendapat kode biner maka masing-masing setiap karakter akan diXORkan dengan key. A : 0100 0001 D : 0100 0100 I : 0100 1001 K : 0100 1011 S : 0101 0011 K : 0100 1011 U : 0101 0101 N : 0100 1110 C : 0100 0011 I : 0100 1001 XOR ---------------------------------------------------------------------------------Cipher : 0000 1010
0001 0001
0000 0111
0000 1000
Karakter : LF
DC1
BEL
BS
2.6
0001 1010 SUB
MD5 MD5 adalah sebuah fungsi hash satu arah yang dibuat oleh Ron Rovest
dan merupakan pengembangan dari algoritma MD4. MD5 menerima masukkan berupa pesan dengan ukuran yang sembarang dan menghasilkan sebuah message digest dengan panjang 128 bit. Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan mengkonversinya menjadi string keluaran (message digest) yang panjangnya tetap (fixed) dan biasanya dengan ukuran yang jauh lebih kecil dari ukuran semula. Satu arah berarti tidak mempunyai fungsi untuk melakukan pengembalian nilai yang sudah di enkripsi dengan MD5.
2.7
Base64 Base64 adalah istilah umum untuk sejumlah skema pengkodean serupa
yang mengkodekan data biner dan menerjemahkannya ke dalam representasi basis 64. Istilah Base64 berasal dari konten pengkodean MIME tertentu. (Wikipedia,
23
2010) Skema encoding base64 biasanya digunakan ketika ada kebutuhan untuk menyandikan data biner yang perlu disimpan dan ditransfer melalui media yang dirancang untuk menangani data tekstual. Hal ini untuk memastikan bahwa data tetap utuh tanpa perubahan selama pengiriman.
2.8
PHP PHP adalah singkatan dari Hypertext Preprocessor yang digunakan
sebagai bahasa script server-side dalam pengembangan web yang disisipkan pada dokumen HTML Penggunaan PHP memungkinkan web dapat dibuat dinamis sehingga maintenance situs web tersebut menjadi lebih mudah dan efisien (Peranginangin, 2006:1). PHP merupakan software open source yang disebarkan dan dilisensikan secara gratis serta dapat di download bebas dari situs resminya (http: //www.php.net)
2.8.1 KelebihanPHP Di antara maraknya pemrograman server web saat ini adalah ASP.Net, JSP, CFM dan PHP. Jika dibandingkan di antara ketiga pemrograman server web di atas terdapat kelebihan dari PHP itu sendiri yaitu : 1. PHP merupakan sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaannya. Tidak seperti hanya pemrograman aplikasi seperti Visual Basic dan sebagainya. 2. PHP dapat berjalan pada web server yang dirilis oeh Microsoft seperti IIS atau PWS juga pada apache yang bersifat open source. 3. Karena sifatnya yang open source maka perubahan dan perkembangan interpreter pada PHP lebih cepat dan mudah karena banyak milis dan developer membantu pengembangannya. 4. PHP dapat berjalan pada tiga sistem operasi yaitu linux, Unix dan Windows dan juga dapat dijalankan secara runtime pada suatu console. 5. Cepat dan powerfull. PHP mampu membuat halaman dinamis, memanipulasi form dan dapat dihubungkan dengan database
24
2.8.2 Sintaks PHP Sintaks program (script) PHP ditulis dalam apitan tanda khusus PHP. Ada empat macam pasangan tag PHP yang dapat digunakan untuk menandai blok script PHP
, , <% ... %> <script language=”PHP”> … < /script>
2.9
Diagram Alur (Flowchart) Pemakaian computer dewasa ini telah sedemikian pesatnya sejalan dengan
kemajuan teknologi computer itu sendiri. Kebanyakan computer digunakan untuk memproses dan menyimpan data informasi. Untuk melakukan tugas-tugas tersebut komputer harus deprogram terlebih dahulu. Sebelum sebuah program dibuat alangkah baiknya kalau dibuat logika atau urutan-urutan intruksi program dalam suatu diagram yang disebut diagram alur (flowchart). Diagram alur merupakan suatu urutan-urutan logika atau langkah-langkah pembuatan program. Dapat disimpulkan bahwa flowchart adalah intruksi dari suatu program yang digambarkan dengan menggunakan simbol-simbol khusus. Ada beberapa macam simbol-simbol yang sering digunakan dalam diagram alur, yaitu: Tabel 2.6 Simbol Flowchart
No
Simbol
Nama
Keterangan
1
Simbol proses
Menunjukan kegiatan proses dari operasi program komputer.
2
Simbol dokumen
Menunjukkan dokumen input dan output baik untuk proses manual, mekanik atau komputer.
3
Simbol kegiatan manual
Menunjukan kegiatan manual.
25 Tabel 2.6 (Lanjutan) Simbol Flowchart Simbol kartu polong
Menunjukan input/output yang menggunkan kartu polong (punched card).
Simbol operasi luar
Menunjukan operasi yang dilakukan di luar proses operasi komputer.
Simbol pengurutan offline
Menunjukan proses pengurutan data di luar proses komputer.
Simbol hard disk
Menunjukan input/ouput menggunakan hardisk.
Simbol diskette
Menunjukan input/output menggunakan diskette.
Simbol drum magnetik
Menunjukan input/output menggunakan drum magnetik.
Simbol pita kertas berlubang
Menunjukan input/output menggunkan pita kertas berlubang.
Simbol keybord
Menunjukan input yang menggunakan oline keybord.
Simbol garis alir
Menunjukan arus untuk proses
Simbol penjelasan
Menunjukan penjelasan dari proses.
Simbol penghubung
Menunjukan penghubung ke halaman yang masih sama atau kehalaman lain.
5
6
7
8
9
10
11
12
13
14
15
(Sumber: Whitten, 2004)
26
2.10
UML (Unified Modelling Language ) Permodelan (modeling) adalah proses merancang peranti lunak (software)
sebelum
melakukan pengkodean (coding).
Model peranti
lunak
dapat
dianalogikan seperti pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah sistem yang kompleks sangatlah penting, karena kita tidak dapat memahami sistem semacam itu secara menyeluruh. Semakin kompleks sebuah sistem, semakin penting pula penggunaan teknik permodelan yang baik. Dengan menggunakan model, diharapkan pengembangan peranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk faktor-faktor seperti scalability, robustness, security, dan sebagainya. Unified Modeling Language (UML)adalah sebuah ”bahasa” yang telah menjadi
standar
dalam
industri
untuk
visualisasi,
merancang
dan
mendokumentasikan sistem peranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. Dalam aplikasi ini menggunakan 2 buah diagram yaitu use case diagram dan activity diagram.
Tabel 2.7 Jenis diagram UML
No
Diagram
Kegunaan
1
Actifity
Perilaku prosedural dan parallel
2
Class
Class, fitur dan relasinya
3
Communication
Interaksi antar objek, penekanan dan link
4
Component
Struktur dan koneksi dari komponen
5
Composite Structure
Dekomposisi sebuah class pada saat runtime
6
Interaction overview
Gabungan sequence dan activity diagram
7
Object
Contoh konfigurasi dari contoh-contoh
8
Package
Struktur hierarki saat kompilasi
9
Sequence
Interaksi antar objek, penekanan pada sequence
10
State machine
Bagaimana event mengubah objek selama aktif
11
Timing
Interaksi antar objek penekanan pada timing
12.
Use case
Bagaimana pengguna berinteraksi dengan sebuah system (Sumber: Budi Hendratno, 2012)
27
2.10.1 Use Case Diagram Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-create sebuah daftar belanja, dan sebagainya. Seorang/sebuah aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu. Use case diagram dapat sangat membantu bila kita sedang menyusun requirement sebuah sistem, mengkomunikasikan rancangan dengan klien, dan merancang test case untuk semua feature yang ada pada sistem. Sebuah
dapat meng-include fungsionalitas use case lain sebagai bagian
dari proses dalam dirinya. Secara umum diasumsikan bahwa use case yang diincludeakan dipanggil setiap kali use case yang meng-include dieksekusi secara normal. Sebuah use case dapat di-include oleh lebih dari satu use case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar fungsionalitas yang common. Sebuah use case juga dapat meng-extend use case lain dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use case menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain (Wahono, R.S, 2003). Tabel 2.8 Simbol-simbol pada diagram use case No
1
2
Gambar
Nama
Keterangan
Actor
Menspesifikasikan himpunan peran yang pengguna mainkan ketika berinteraksi dengan use case.
Dependency
Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri (independent) akan mempengaruhi elemen yang bergantung padanya elemen yang tidak mandiri
28 Tabel 2.8 (Lanjutan) Simbol-simbol pada diagram use case UML
3
Generalization
Hubungan dimana objek anak (descendent) berbagi perilaku dan struktur data dari objek yang ada di atasnya objek induk (ancestor).
4
Include
Menspesifikasikan bahwa use case sumber secara eksplisit.
5
Extend
Menspesifikasikan bahwa use case target memperluas perilaku dari use case sumber pada suatu titik yang diberikan.
6
Association
Apa yang menghubungkan antara objek satu dengan objek lainnya. Menspesifikasikan paket yang menampilkan sistem secara terbatas.
7
System
8
Use Case
9
Collaboration
10
Note
Deskripsi dari urutan aksi-aksi yang ditampilkan sistem yang menghasilkan suatu hasil yang terukur bagi suatu actor
Interaksi aturan-aturan dan elemen lain yang bekerja sama untuk menyediakan perilaku yang lebih besar dari jumlah dan elemen-elemennya (sinergi).
Elemen fisik yang eksis saat aplikasi dijalankan dan mencerminkan suatu sumber daya komputasi
(Sumber: Whitten, 2004)
2.10.2 Activity Diagram Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak
29
menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas
menggambarkan
proses
yang
berjalan,
sementara
use
case
menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas (Wahono, R.S, 2003).
Tabel 2.9 Simbol-simbol pada Activity Diagram
No
Simbol
Keterangan
1
Titik Awal, status awal aktifitas sistem, sebuah diagarm aktifitas memiliki sebuah status awal.
2
Titik Akhir, status akhir yang dilakukan oleh sistem, sebuah diagram aktifitas memiliki sebuah status akhir.
Activity, aktivitas yang dilakukan sistem, aktifitas biasanya diawali dengan kata kerja 3
5
Penggabungan/join, digunakan untuk menunjukkan kegiatan yang dilakukan secara paralel atau untuk menggabungkan dua kegiatan paralel menjadi satu. Percabangan/decision, merupakan asosiasi percabangan jika ada pilihan aktivitas lebih dari satu.
6
Swimlane¸ memisahkan organisasi bisnis yang bertanggung jawab terhadap aktivitas yang terjadi.
7
Fork, digunakan untuk menunjukkan kegiatan yang dilakukan secara paralel.
8
Join, digunakan untuk menunjukkan kegiatan yang digabungkan.
4
(Sumber: Whitten, 2004)
30
2.10.3 Class Diagram Class diagram adalah gambaran secara grafis mengenai struktur obyek statis dari suatu sistem, menunjukkan kelas-kelas obyek yang menyusun sebuah sistem dan juga hubungan antara kelas obyek tersebut (Whitten, 2004). Adapun simbol-simbol dari class diagram dapat dilihat pada table 2.5 Tabel 2.10 Simbol class diagram
NO
Gambar
Nama
Keterangan Hubungan dimana objek anak(descendent) berbagi perilaku danstruktur data dari objek yang ada di atasnya objek induk (ancestor). Upaya untuk menghindari asosiasi dengan lebih dari 2 objek.
1
Generalization
2
Nary Association
3
Class
Himpunan dari objek-objek yang berbagi atribut serta operasi yang sama.
4
Collaboration
Deskripsi dari urutan aksi-aksi yang ditampilkan sistem yang menghasilkan suatu hasil yang terukur bagi suatu actor
5
Realization
Operasi yang benar-benar dilakukan oleh suatu objek.
6
Dependency
7
Association
Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri (independent) akan mempegaruhi elemen yang bergantung padanya elemen yang tidak mandiri Apa yang menghubungkan antara objek satu dengan objek lainnya
(Sumber: Whitten, 2004)
2.11
Metodologi Rekayasa Perangkat Lunak Rekayasa perangkat lunak yang digunakan dalam analisis dan perancangan
ini adalah
model RAD (Rapid Application Development). Model RAD
merupakan model incremental dari proses pengembangan perangkat lunak yang menekankan pada sedikitnya siklus pengembangan. Model ini memecah suatu proyek menjadi bagian-bagian kecil yang mana tiap bagiannya dibangun dengan
31
model yang mirip dengan Waterfall. Tujuan utama model ini adalah menyelesaikan suatu proyek per bagian, sehingga proses perencanaan pun perbagian (walaupun pada awalnya melakukan perencanaan secara global).
2.12
Pengujian Perangkat Lunak Pengujian perangkat lunak adalah proses atau evaluasi sistem atau
komponen sistem secara manual atau otomatis untuk memverifikasi apakah sistem memenuhi kebutuhan-kebutuhan yang dispesifikasikan atau mengidentifikasi perbedaan-perbedaan antara hasil yang diharapkan dengan hasil yang terjadi (Hariyanto, 2004) Terdapat dua teknik pengujian berdasarkan ketersediaan logika sistem, yaitu black box testing dan white box testing (Hariyanto,2004).