BAB II LANDASAN TEORI 2.1 Aplikasi Aplikasi dapat dikatakan suatu prangkat lunak yang siap pakai dengan menjalankan intruksi-intruksi dari user atau pengguna. Aplikasi banyak diciptakan guna membatu berbagai keperluan seperti untuk laporan, percetakan dan lain-lain sedangkan istilah aplikasi berasal dari bahasa Inggris application yang berarti penerapan, lamaran ataupun penggunaan. Jadi pengertian aplikasi dapat disimpulkan merupakan program siap pakai yang membantu mencapai tujuan pengguna. [12] 2.2 Pengertian Kriptografi Kriptografi (cryptography) berasal dari bahasa Yunani “cryptos” artinya “secret” (rahasia) sedangkan “graphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writting” (tulisan rahasia). Ada beberapa definsi kriptograpi yang telah dikemukakan di dalam berbagai literature. Definisi yang dipakai di dalam buku-buku yang lama (sebelum tahun 1980-an) menyatakan bahwa kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Definisi ini mungkin cocok pada masa lalu dimana kriptografi digunakan untuk keamanan komunikasi penting seperti komunikasi dikalangan militer, diplomat dan mata-mata. Namun saat ini kriptografi lebih dari sekedar privacy, tetapi juga untuk tujuan data integrity, authentication dan nonrepudiation. [5]
8
9
Ada beberapa pengertian dari buku ini tentang kriptografi, yaitu kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan. Sebagai pembanding, selain definisi tersebut, terdapat pula definisi yang dikemukakan di dalam buku ini yaitu kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data serta otentikasi. Di dalam kriptografi kita akan sering menemukan berbagai istilah atau terminologi. Beberapa istilah penting untuk diketahui dibawah ini: a. Pesan, Plainteks dan Cipherteks Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks atau teks-jelas. Pesan dapat berupa data atau informasi yang dikirim diantaranya melalui kurir dan saluran telekomunikasi atau yang disimpan di dalam media perekaman diantaranya kertas dan storage. Pesan yang tersimpan tidak hanya berupa teks, tetapi juga dapat berbentuk citra (image), suara/bunyi (audio) dan video atau berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut cipherteks atau kriptogram. Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca. b. Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (received) adalah entitas yang menerima pesan. Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit dan sebagainya. Jadi, orang bisa
10
bertukar pesan dengan orang lainnya. (Contoh: Alice berkomunikasi dengan Bob), sedangkan di dalam jaringan komputer atau mesin (komputer) berkomunikasi dengan mesin (contoh: mesin ATM berkomunikasi dengan komputer server di bank). c. Enkripsi dan Dekripsi Proses
menyandikan
plainteks
menjadi
cipherteks
disebut
enkripsi
(encryption), sedangkan proses mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption). Enkripsi dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun pada pesan tersimpan. Istilah encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi dokumen yang disimpan di dalam storage. encryption of data in motion adalah pengiriman nomor PIN dari mesin ATM ke komputer server di kantor bank pusat. Contoh encryption of data at-rest adalah enkripsi file basis data di dalam hard disk. d. Cipher dan Kunci Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan dechipering atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk enchipering dan dechipering. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yaitu himpunan yang berisi elemen-elemen plainteks dan yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen antara kedua himpunan
11
tersebut. Misalkan P menyatakan plainteks dan C menyatakan cipherteks, maka fungsi enkripsi E memetakan P ke C dengan persamaan E(P) = C
(2.1)
Dan fungsi dekripsi D memetakan C ke P dengan persamaan D(C) = P
(2.2)
Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka kesamaan berikut harus benar, D(E(P)) = P
(2.3)
Kriptografi modern mengatasi masalah di atas dengan penggunaan kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan dechipering. Kunci biasanya berupa string atau deretan bilangan. Dengan menggunakan kuni K, maka persamaan fungsi enkripsi dan dekripsi dapat ditulis sebagai berikut: Ek(P) = C dan Dk(C) = P
(2.4)
Dan kedua fungsi persamaan ini memenuhi Dk(Ek(P)) = P
(2.5)
Gambar 2.1(a) memperlihatkan skema enkripsi dan dekripsi dengan menggunakan kunci, sedangkan gambar 2.1(b) mengilustrasikan enkripsi dan dekripsi terhadap sebuah pesan.
12
Gambar 2.1. (a) skema enkripsi dan dekripsi, (b) contoh ilustrasi enkripsi dan dekripsi [5] e. Sistem Kriptografi Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem kriptografi (cryptosystem) adalah kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan cipherteks yang mungkin dan kunci. Di dalam sistem kriptografi, cipher hanyalah salah satu komponen saja. f. Penyadap Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan cipherteks. g. Kriptanalis dan Kriptologi Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalis. Kriptanalis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan.
Pelakunya
disebut
kriptanalis.
Jika
seorang
kriptografer
13
mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci. Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalis. Baik kriptografi maupun kriptanalis keduanya saling berkaitan. Gambar 2.2 memperlihatkan pohon kriptologi.
Kriptologi
Kriptografi Ilmu dan seni untuk menjaga keamanan pesan
Kriptanalis Ilmu dan seni untuk memecahkan cipherteks
Gambar 2.2. Kriptografi dan kriptanalis adalah cabang bidang ilmu kriptologi [5] 2.3 Tujuan Krptografi Kita dapat merangkum bahwa kriptografi bertujuan untuk memberi layanan keamanan (yang juga dinamakan sebagai aspek-aspek keamanan) sebagai berikut: a. Kerahasiaan (confidentiality) adalah layanan yang ditujujan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi cipherteks. b. Integritas data (data integrity) adalah layanan yang manjamin bahwa pesan masih utuh/asli atau belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan,
14
penghapusan dan pensubsitusian data lain kedalam pesan yang sebenarnya. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tandatangan digital (digital signature). c. Otentikasi (authentication) adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran komunikasi juga harus diotentikasi asalanya. Oleh karena itu, layanan integritas data selalu dikombinasikan dengan layanan otentikasi sumber pesan. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tanda-tangan digital (digital signature). d. Nipernyangkalan (non-repudation) adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan. Sebagai contoh misalkan pengirim pesan memberi otoritas kepada penerima pesan untuk melakukan pembelian, namun kemudian ia menyangkal telah memberikan otoritas tersebut. 2.4 Algoritma Simetris Algoritma simetris (Symmetric Algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi sehingga algoritma ini disebut juga sebagai single-key-algorithm. Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu kunci tertentu yang sama untuk
15
dipakai bersama dan kunci ini haruslah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia (secret-key-algorithm). Penerapan algoritma akan menghasilkan output yang berbeda sesuai dengan kunci yang dipakai. Mengubah kunci berarti juga mengubah output dari algoritma yang dipakai. [1] Keamanan dari enkripsi konvensional ini terdiri dari beberapa faktor: 1. Algoritma enkripsi harus benar-benar teruji, sehingga tidak dimungkinkan untuk mendekripsi sebuah pesan hanya dalam bentuk ciphertext. 2. Keamanan enkripsi konvensional juga ditentukan oleh kerahasiaan kunci yang digunakan, bukan kerahasiaan algoritma yang digunakan. Aplikasi dari algoritma simetri yang digunakan oleh beberapa algoritma di bawah ini: a. Data Encryption Standard (DES) b. Advanced Encryption Standard (AES) c. International Data Encryption Algoritm (IDEA) d. A5 dan RC4
Gambar 2.3. Proses Algoritma Kriptografi Simetris [1] 2.5 Algoritma DES (Data Encryption Standard) DES adalah algorimta cipher blok yang populer karena dijadikan standar algoritma enkripsi kunci simetri, meskipun saat ini standar tersebut telah
16
digantikan dengan algoritma baru, AES, karena DES sudah tidak dianggap aman lagi. Sebenarnya DES adalah adalah nama standar enkripsi simetri, nama algoritma algoritma enkripsinya sendiri adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada DEA. Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma Lucifer yang dibuat oleh Horst Feistel. Algoritma ini telah disetujui oleh National Bureu of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat. DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit. Blok plainteks
IP
16 kali
Enciphering
IP-1
Blok cipherteks Gambar 2.4. Skema Global Algoritma DES [5]
17
Skema global dari algoritma DES sebagai berikut: 1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP). 2. Hasil permutasi awal kemudian di-enciphering sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda. 3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1) menjadi blok cipherteks. Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian yaitu kiri (L) dan kanan (R). Yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut f. Pada fungsi f, blok R dikombinasikan dengan kunci internal Ki. Keluaran dari fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu putaran DES. Secara matematis, satu putaran DES dinyatakan sebagai persamaan Li=Ri-1
(2.6)
Ri=Li-1 f(Ri-1, Ki)
(2.7)
Gambar 2.6. memperlihatkan skema algoritma DES yang lebih rinci. Satu putaran DES merupakan jaringan Feistel (lihat Gambar 2.5). Perlu dicatat dari Gambar 2.5 bahwa jika (L16, R16) merupakan keluaran dari putaran ke-16, maka (R16, L16) merupakan pra-cipherteks (pre-ciphertext) dari enciphering ini. Cipherteks yang sebenarnya diperoleh dengan melakukan permutasi awal balikan, IP-1, terhadap blok pra-cipherteks.
18
Li – 1
Ki
f
Li
Ri – 1
Ri
Gambar 2.5. Jaringan Feistel untuk satu putaran DES [5]
19
Plainteks
IP
L0
R0
f
K1
R1 L0 f ( R0 , K 1 )
L1 = R0
f
K2
L2 = R1
R 2 L1 f ( R1 , K 2 )
L15 = R14
R15 L14 f ( R14 , K 15 )
f
K16
R16 L15 f ( R15 , K 16 )
L16 = R15
IP -1
Cipherteks
Gambar 2.6. Algoritma Enkripsi dengan DES Permutasi Awal [5]
20
2.5.1 Permutasi Awal Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak plainteks sehingga urutan bit-bit di dalamnya berubah. Pengacakan dilakukan dengan menggunakan matriks permutasi awal berikut ini: 58 62 57 61
50 54 49 53
42 46 41 45
34 38 33 37
26 30 25 29
18 22 17 21
10 14 9 13
2 6 1 5
60 64 59 63
52 56 51 55
44 48 43 47
36 40 35 39
28 32 27 31
20 24 19 23
12 16 11 15
4 8 3 7
Cara membaca tabel/matriks: dua entry ujung kiri atas (58 dan 50) artinya: “pindahkan bit ke-58 ke posisi bit 1” “pindahkan bit ke-50 ke posisi bit 2” dst. 2.5.2 Pembangkitan Kunci Internal Karena ada 16 putaran, maka dibutuhkan kunci internal sebanyak 16 buah, yaitu K1, K2, ..., K16. Kunci-kunci internal ini dapat dibangkitkan sebelum proses enkripsi atau bersamaan dengan proses enkripsi. Kunci internal dibangkitkan dari kunci eksternal yang diberikan oleh pengguna. Kunci eksternal panjangnya 64 bit atau 8 karakter. Misalkan kunci eksternal yang tersusun dari 64 bit adalah K. Kunci eksternal ini menjadi masukan untuk permutasi dengan matriks permutasi kompresi PC-1 sebagai berikut: 57 10 63 14
49 2 55 6
41 59 47 61
33 51 39 53
25 43 31 45
17 35 23 37
9 27 15 29
1 19 7 21
58 11 62 13
50 3 54 5
42 60 46 28
34 52 38 20
26 44 30 12
18 36 22 4
21
Dalam permutasi ini, tiap bit kedelapan (parity bit) dari kedelapan byte kunci diabaikan. Hasil permutasinya adalah sepanjang 56 bit, sehingga dapat dikatakan panjang kunci DES adalah 56 bit. Selanjutnya, 56 bit ini dibagi menjadi dua bagian, kiri dan kanan yang masing-masing panjangnya 28 bit, yang masingmasing disimpan di dalam C0 dan D0. C0: berisi bit-bit dari K pada posisi 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36 D0: berisi bit-bit dari K pada posisi 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 Selanjutnya, kedua bagian digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Operasi pergeseran bersifat wrapping atau roundshift. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 2.1 sebagai berikut:
22
Tabel 2.1. Jumlah pergeseran bit pada setiap putaran Putaran, i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Jumlah pergeseran bit 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Misalkan (Ci, Di) menyatakan penggabungan Ci dan Di. (Ci+1, Di+1) diperoleh dengan menggeser Ci dan Di satu atau dua bit. Setelah pergeseran bit, (Ci, Di) mengalami permutasi kompresi dengan menggunakan matriks PC-2 berikut: 14 23 41 44
17 19 52 49
11 12 31 39
24 4 37 56
1 26 47 34
5 8 55 53
3 16 30 46
28 7 40 42
15 27 51 50
6 20 45 36
21 13 33 29
10 2 48 32
Dengan permutasi ini, kunci internal Ki diturunkan dari (Ci, Di) yang dalam hal ini Ki merupakan penggabungan bit-bit Ci pada posisi: 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2 dengan bit-bit Di pada posisi: 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
23
Jadi, setiap kunci internal Ki mempunyai panjang 48 bit. Proses pembangkitan kunci-kunci internal ditunjukkan pada Gambar 2.7. Bila jumlah pergeseran bit-bit pada Tabel 2.1. dijumlahkan semuanya, maka jumlah seluruhnya sama dengan 28, yang sama dengan jumlah bit pada Ci dan Di. Karena itu, setelah putaran ke-16 akan didapatkan kembali C16 = C0 dan D16 = D0. Kunci eksternal Permutasi PC-1
C0
D0
Left Shift
Left Shift
C1
D1
Left Shift
Left Shift
Cj
Dj
Left Shift
Left Shift
C16
D16
Permutasi PC-2
K1
Permutasi PC-2
Kj
Permutasi PC-2
K16
Gambar 2.7. Proses pembangkitan kunci-kunci internal DES [5] 2.5.3 Enkripsi Proses enkripsi atau enciphering terhadap blok plainteks dilakukan setelah permutasi awal (lihat Gambar 2.4). Setiap blok plainteks mengalami 16 kali
24
putaran enciphering. Setiap putaran enciphering merupakan jaringan Feistel yang secara metematis dinyatakan sebagai persamaan Li=Ri-1
(2.8)
Ri=Li-1 f(Ri-1, Ki)
(2.9)
Dengan komputasi fungsi f diperlihatkan pada Gambar 2.8. Ri-1 32 bit
Ekspansi menjadi 48 bit E(Ri-1)
48 bit
Ki 48 bit
48 bit
E ( Ri 1 ) K i A
...
S1
Matriks substitusi
S8
B 32 bit P(B) 32 bit
Gambar 2.8. Rincian komputasi fungsi f [5] E adalah fungsi ekspansi yang memperluas blok Ri-1 yang panjangnya 32 bit menjadi blok 48 bit. Fungsi ekspansi direalisasikan dengan matriks permutasi ekspansi sebagai berikut: 32 8 16 24
1 9 17 25
2 10 18 26
3 11 19 27
4 12 20 28
5 13 21 29
4 12 20 28
5 13 21 29
6 14 22 30
7 15 23 31
8 16 24 32
9 17 25 1
25
Selanjutnya hasil ekspansi, yaitu E(Ri-1), yang panjangnya 48 bit di-XOR-kan dengan Ki yang panjangnya 48 bit menghasilkan vektor A yang panjangnya 48 bit: E(Ri-1) Ki = A Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit dan menjadi masukan bagi proses substitusi. Proses substitusi dilakukan dengan menggunakan 8 buat kotak-S (S-box), S1 sampai S8. Setiap kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit. Kelompok 6 bit pertama menggunakan S1, kelompok 6 bit kedua menggunakan S2 dan seterusnya. Kedelapan kotak-S tersebut adalah: S1: 14 0 4 15
4 15 1 12
13 7 14 8
1 4 8 2
2 14 13 4
15 2 6 9
11 13 2 1
8 1 11 7
3 10 15 5
10 6 12 11
6 12 9 3
12 11 7 14
5 9 3 10
9 5 10 0
0 3 5 6
7 8 0 13
1 13 14 8
8 4 7 10
14 7 11 1
6 15 10 3
11 2 4 15
3 8 13 4
4 14 1 2
9 12 5 11
7 0 8 6
2 1 12 7
13 10 6 12
12 6 9 0
0 9 3 5
5 11 2 14
10 5 15 9
0 7 6 10
9 0 4 13
14 9 9 0
6 3 8 6
3 4 15 9
15 6 3 8
5 10 0 7
13 8 1 15
12 5 2 14
7 14 12 3
11 12 5 11
4 11 10 5
2 15 14 2
8 1 7 12
S2: 15 3 0 13
S3: 10 13 13 1
1 2 11 4
26
S4: 7 13 10 3
13 8 6 15
14 11 9 0
3 5 0 6
0 6 12 10
6 15 11 1
9 0 7 13
10 3 13 8
1 4 15 9
2 7 1 4
8 2 3 5
5 12 14 11
11 1 5 12
12 10 2 7
4 14 8 2
15 9 4 14
12 11 2 8
4 2 1 12
1 12 11 7
7 4 10 1
10 7 13 14
11 13 7 2
6 1 8 13
8 5 15 6
5 0 9 15
3 15 12 0
15 10 5 9
13 3 6 10
0 9 3 4
14 8 0 5
9 16 14 3
1 15 14 3
10 4 15 2
15 2 5 12
9 7 2 9
2 12 8 5
6 9 12 15
8 5 3 10
0 6 7 11
13 1 0 14
3 13 4 1
4 14 10 7
14 0 1 6
7 11 13 0
5 3 11 8
11 8 6 13
11 0 4 11
2 11 11 13
14 7 13 8
15 4 12 1
0 9 3 4
8 1 7 10
13 10 14 7
3 14 10 9
12 3 15 5
9 5 6 0
7 12 8 15
5 2 0 14
10 15 5 2
6 8 9 3
1 6 2 12
2 15 11 1
8 13 4 14
4 8 1 7
15 3 12 10
11 7 14 8
1 4 2 13
10 12 0 15
9 5 6 12
3 6 10 9
14 11 13 0
5 0 15 3
0 14 3 5
12 9 5 6
7 2 8 11
S5: 2 14 4 11
S6: 12 10 9 4
S7: 4 13 1 6
S8: 13 1 7 2
6 10 9 4
Keluaran proses substitusi adalah vektor B yang panjangnya 48 bit. Vektor B menjadi masukan untuk poses permutasi. Tujuan permutasi adalah untuk mengacak hasil proses substitusi kotak-S. Permutasi dilakukan dengan menggunakan matriks permutasi P (P-box) sebagai berikut:
27
16 2
7 8
20 24
21 14
29 32
12 27
28 3
17 9
1 19
15 13
23 30
26 6
5 22
8 11
31 4
10 25
Bit-bit P(B) merupakan keluaran dari fungsi f. Akhirnya, bit-bit P(B) di-XOR-kan dengan Li-1 untuk mendapatkan Ri (lihat Gambar 2.9): Ri = Li-1 P(B) Jadi, keluaran dari putaran ke-i adalah: (Li-1, Ri) = (Ri-1, Li-1 P(B)) Li-1 32 bit
f
Ri 32 bit
Gambar 2.9. Skema perolehan Ri 2.5.4 Permutasi Akhir Permutasi terkahir dilakukan setelah 16 kali putaran terhadap gabungan blok kiri dan kanan. Proses permutasi menggunakan matriks permutasi awal balikan (invers initial permutation atau IP-1) sebagai berikut: 40 38 36 34
8 6 4 2
48 46 44 42
16 14 12 10
56 54 52 50
24 22 20 18
64 62 60 58
32 30 28 26
39 37 35 33
7 5 3 1
47 45 43 41
15 13 11 9
55 53 51 49
23 21 19 17
63 61 59 57
31 29 27 25
28
2.5.5 Dekripsi Proses dekripsi terhadap cipherteks merupakan kebalikan dari proses enkripsi. DES menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Jika pada proses enkripsi urutan kunci internal yang digunakan adalah K1, K2, ..., K16, maka pada proses dekripsi urutan kunci yang digunakan adalah K16, K15, ..., K1. Untuk tiap putaran 16, 15, ..., 1, keluaran pada setiap putaran deciphering atau dekripsi adalah Li = Ri-1
(2.10)
Ri-1 = Li-1 f(Ri-1, Ki)
(2.11)
yang dalam hal ini, (R16, L16) adalah blok masukan awal untuk deciphering. Blok (R16, L16) diperoleh dengan mempermutasikan cipherteks dengan matriks permutasi IP-1. Pra-keluaran dari deciphering adalah (L0, R0). Dengan permutasi awal IP akan didapatkan kembali blok plainteks semula. Tinjau kembali proses pembangkitan kunci internal pada Gambar 2.7. Selama deciphering, K16 dihasilkan dari (C16, D16) dengan permutasi PC-2. Tentu saja (C16, D16) tidak dapat diperoleh langsung pada permulaan deciphering. Tetapi karena (C16, D16) = (C0, D0), maka K16 dapat dihasilkan dari (C0, D0) tanpa perlu lagi melakukan pergeseran bit. Catatlah bahwa (C0, D0) yang merupakan bit-bit dari kunci eksternal K yang diberikan pengguna pada waktu dekripsi. Selanjutnya, K15 dihasilkan dari (C15, D15) yang mana (C15, D15) diperoleh dengan menggeser C16 (yang sama dengan C0) dan D16 (yang sama dengan C0) satu bit ke kanan. Sisanya, K14 sampai K1 dihasilkan dari (C14, D14) sampai (C1, D1). Catatlah bahwa (Ci-1, Di-1) diperoleh dengan menggeser Ci dan Di dengan cara yang sama seperti
29
pada Tabel 2.1, tetapi pergeseran kiri (left shift) diganti menjadi pergeseran kanan (right shift). 2.6 Algoritma Triple DES Triple DES atau TDES atau 3DES menggunakan DES tiga kali. Penggunaan tiga langkah ini penting mencegah meet-in-the-middle attack sebagaimana pada double DES. Bentuk sederhana Triple DES adalah: Enkripsi : C = Ek3(Ek2(Ek1(P))) Dekripsi : P = Dk1(Dk2(Dk3(C))) Varian ini umum dikenal sebagai mode EEE (Encrypt Encrypt Encrypt) untuk enkripsi karena pada proses enkripsi semuanya menggunakan enkripsi. Untuk menyederhanakan interoperability antara DES dan TDES, maka langkah ditengah (pada proses enkripsi TDES) diganti dengan dekripsi (mode EDE (Encrypt Decrypt Encrypt)). Dengan pengubahan ini, maka dibuat beberapa versi TDES. Versi pertama TDES menggunakan dua kunci, K1 dan K2: Enkripsi : C = Ek1(Dk2(Ek1(P))) Dekripsi : P = Dk1(Ek2(Dk1(C))) Enkripsi DES tunggal dengan kunci K dapat dinyatakan sebagai TDES-EDE dengan K1=K2=K. Gambar 2.10 memperlihatkan versi TDES yang menggunakan dua buah kunci. Penggunaan enkripsi pada langkah di tengah tidak mempengaruhi keamanan algoritma. K1
K2 Y
X P
E
K1
D enkripsi
E
C
30
K1
K2 X
Y C
D
K1
D
E
P
dekripsi Gambar 2.10. Diagram enkripsi dan dekripsi TDES menggunakan dua kunci Versi TDES yang kedua menggunakan tiga buah kunci, K1, K2 dan K3 sebagai berikut: Enkripsi : C = Ek3(Dk2(Ek1(P))) Dekripsi : P = Dk1(Ek2(Dk3(C))) Gambar 2.11 memperlihatkan versi TDES yang menggunakan tiga kunci. K1
K2 Y
X P
E
K3
E
D
C
Enkripsi K1
K2 X
Y C
D
K3
E
D
P
dekripsi Gambar 2.11. Diagram enkripsi dan dekripsi TDES yang menggunakan tiga buah kunci
31
2.7 Bahasa Pemrograman Java Java dalam ilmu komputer merupakan bahasa pemrograman berorientasi objek yang diperkenalkan pada tahun 1995 oleh Sun Microsystems, Inc., sebagai industri perangkat lunak yang cukup besar di Amerika Serikat, yang saat java diciptakan, proyeknya dipimpin oleh James Gosling. Nama java diambil karena beberapa pemrogramnya terkesan oleh keindahan pulau jawa di Indonesia serta kenikmatan kopinya (!). Java memungkinkan kita membuat program-program komputer dengan paradigma yang kita jumpai di dunia nyata sebenarnya. Paradigma yang dimaksud adalah “pemgrograman berorientasi objek” yang dalam bahasa aslinya disebut sebagai OOP (Object Oriented Programming). Sebagai contoh, “kita dapat membuat kelas mobil yang memiliki data/atribut (deskripsi lengkap tentang mobil itu), misalnya warna dan jumlah pintu serta memiliki fungsi/metoda (apa yang dapat dilakukan oleh mobil itu) misalnya maju, mundur, belok dan sebagainya dengan menggunakan java. [6]
Gambar 2.12. Pemrograman Data dan Fungsi pada Pendekatan Berorientasi Objek [6]
32
Adapun karakteristik utama dalam pendekatan berorientasi objek sebagai berikut: 1. Program berukuran besar dipecah-pecah menjadi program-program yang berukuran lebih kecil. 2. Kebanyakan fungsi/prosedur berbagi data global. 3. Data bergerak secara bebas dalam sistem, dari satu fungsi ke fungsi yang lain yang terkait melalui parameter-parameter di dalamnya. 4. Fungsi-fungsi mentransformasi data-data dari satu bentuk ke bentuk yang lain menggunakan algoritma-algoritma tertentu. 5. Pedekatan adalah pendekatan atas-ke-bawah (top down approach). 2.8 Unified Modeling Language (UML) Unified Modeling Language (UML) adalah bahasa pemodelan untuk sistem atau perangkat lunak yang berparadigma berorientasi objek. Pemodelan (modeling) sesungguhnya digunakan untuk penyederhanaan permasalahanpermasalahan yang kompleks sedemikian rupa sehingga lebih mudah dipelajari dan dipahami. [8] UML diaplikasikan untuk maksud tertentu, biasanya antara lain untuk: 1. Merancang perangkat lunak. 2. Sarana komunikasi antara perangkat lunak dengan proses bisnis. 3. Menjabarkan sistem secara rinci untuk analisa dan mencari apa yang diperlukan sistem. 4. Mendokumentasi sistem yang ada, proses-proses dan organisasinya.
33
2.8.1 Use Case Diagram Diagram
use
case
digunakan
untuk
memodelkan
fungsionalitasi-
fungsionalitas sistem/perangkat lunak dilihat dari pengguna yang ada di luar sistem (yang sering diutamakan sebagai aktor). Use case pada dasarnya merupakan unit fungsionalitas koheren yang diekspresikan sebagai transaksitransaksi yang terjadi antara aktor dan sistem. Kegunaan dari use case adalah untuk mendaftarkan aktor-aktor dan use case – use case dan memperlihatkan aktor-aktor mana yang berpartisipasi dalam masing-masing use case. [8] Dalam konteks UML, tahap konseptualisasi dilakukan dengan pembuatan use case diagram yang sesungguhnya merupakan deskripsi peringkat tinggi bagaimana perangkat lunak (aplikasi) akan digunakan oleh penggunanya. Selanjutnya, use case diagram tidak hanya sangat penting pada tahap analisis, tetapi juga sangat penting untuk perancangan (design), untuk mencari (mencoba menemukan) kelas-kelas yang terlibat dalam aplikasi dan untuk melakukan pengujian (testing). Membuat use case diagram yang komprehensif merupakan hal yang sangat penting dilakukan pada tahap analisis. Dengan menggunakan use case diagram, kita akan mendapatkan banyak informasi yang sangat penting berkaitan dengan aturan-aturan bisnis yang coba kita tangkap. [7] Relasi-relasi pada use case diagram dapat dilihat pada Tabel 2.2. [8]
34
Tabel 2.2. Simbol dan relasi use case diagram Simbol
Nama Actor
Use case
Association include
extend
Keterangan Menggambarkan semua objek di luar sistem (bukan hanya pengguna sistem/perangkat lunak) yang berinteraksi dengan sistem yang dikembangkan Use case menggambarkan fungsionalitas yang dimiliki sistem Lintasan komunikasi antara aktor dengan use case. Penambahan perilaku ke suatu use case dasar yang secara eksplisit mendeskripsikan penambahan tersebut. Penambahan perilaku ke suatu use case dasar.
2.8.2 Activity Diagram Diagram aktivitas (activity diagram) sesungguhnya merupakan bentuk khusus dari state machine yang bertujuan memodelkan komputasi-komputasi dan aliran-aliran kerja yang terjadi dalam sistem/perangkat lunak yang sedang dikembangkan. State pada diagram aktivitas merepresentasikan state dari komputasi yang dieksekusi, bukan state dari suatu objek biasa. Suatu diagram aktivitas dapat memperlihatkan aliran nilai-nilai objek, seperti layaknya aliran-aliran kendali. Suatu state aliran objek merepresentasikan suatu objek yang merupakan asupan (input) atau luaran (output) suatu aktivitas. Untuk suatu nilai luaran, garis putus-putus digambarkan dari suatu state aliran objek ke suatu aktivitas. Jika suatu aktivitas memiliki lebih dari satu nilai luaran atau aliran kendali pendahulu, tanda panah digambarkan dari simbol fork. Dengan cara yang sama, asupan majemuk (multiple input) digambarkan pada simbol
35
penggabungan (join). Pengorganisasian yang dilakukan dengan membuat areaarea pada diagram yang masing-masing dipisahkan menggunakan garis-garis vertikal yang dinamakan swimlane. Relasi-relasi pada activity diagram dapat dilihat pada Tabel 2.3. Tabel 2.3. Simbol dan relasi activity diagram Simbol
Nama actionstate
Keterangan Aktivitas yang dilakukan sistem, aktivitas biasanya diawali dengan kata kerja.
Status awal
Bagaimana objek dibentuk atau diawali.
Status akhir
Bagaimana objek diakhiri.
Decision (keputusan)
Keputusan dimana jika ada pilihan aktivitas lebih dari satu.
Swimlane
Memisahkan organisasi bisnis yang bertanggung jawab terhadap aktivitas yang terjadi.
Join
Menggabungkan aktivitas satu dengan yang lainnya.
Fork
Menunjukan parallel.
aktivitas
yang
2.8.3 Sequence Diagram Sequence diagram memperlihatkan interaksi sebagai diagram dua matra (dimensi). Dimensi vertikal adalah sumbu waktu; waktu bertambah dari atas ke bawah.
Dimensi
horizontal
memperlihatkan
peran
pengklasifikasi
yang
36
merepresentasikan objek-objek mandiri yang terlibat dalam kolaborasi. Masingmasing peran pengklasifikasi direpresentasikan sebagai kolom-kolom vertikal dalam sequence diagram, sering disebut sebagai garis waktu (lifeline). Selama objek ada, peran digambarkan menggunakan garis tegas. Selama aktivasi prosedur pada objek aktif, garis waktu digambarkan sebagai garis ganda. Pesan-pesan digambarkan sebagai suatu tanda panah dari garis waktu suatu objek ke garis waktu objek lainnya. Panah-panah yang menggambarkan aliran pesan antarpesan pengklasifikasi digambarkan dalam urutan waktu kejadiannya dari atas ke bawah. Simbol dan relasi pada sequence diagram dapat dilihat Tabel 2.4 Tabel 2.4. Simbol dan relasi sequence diagram Simbol
Nama Lifeline
Keterangan Menyatakan kehidupan aktivitas dari suatu objek.
atau
Activation
Mengindikasikan sebuah objek yang akan melakukan sebuah aksi
Message
Menyatakan komunikasi antara objek-objek
2.8.4 Class Diagram Class adalah kumpulan objek-objek yang mempunyai struktur umum, behavior (tingkah laku) umum, relasi umum dan semantic/kata yang umum. Class ini sebenarnya merupakan blue print dari sebuah objek. Dengan mendeklarasikan suatu class, maka kita telah mendeklarasikan suatu tipe data baru (tipe data referensi).
37
Class didefinisikan juga sebagai kumpulan/himpunan objek yang memiliki kesamaan dalam atribut/properti, perilaku (operasi), serta cara berhubungan dengan objek lain. [7] Simbol dan relasi pada class diagram dapat dilihat Tabel 2.5. Tabel 2.5. Simbol dan relasi class diagram Simbol
Nama
Class
Association
Composition
Keterangan Yang berisi atributatribut dan metode – metode pada program yang akan dibangun. Sebuah relationship paling umum antara 2 class dan dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang lain, maka class tersebut memiliki relasi composition terhadap class tempat dia bergantung tersebut.
Class diagram adalah diagram yang digunakan untuk menampilkan paketpaket yang ada dalam sistem/perangkat lunak yang sedang dikembangkan dimana diagram ini memberi gambaran (diagram statis) tentang sistem/perangkat lunak dan relasi-relasi yang ada didalamnya. 1. Atribut merupakan properti dari sebuah kelas yang melambangkan nilai-nilai yang mungkin ada pada kelas tersebut.
38
2. Operation atau method merupakan behavior atau fungsi yang dapat dilakukan oleh kelas tersebut. 2.9 Pengujian Kasus pengujian menspesifikasi salah satu cara untuk melakukan pengujian sistem/perangkat lunak, mencakup didalamnya menspesifikasi asupan serta hasilnya dan dalam kondisi bagaimana pengujian dilakukan. Pada praktiknya, apa yang akan diuji dapat saja merupakan satu atau lebih spesifikasi kebutuhan sistem/perangkat lunak yang mungkin untuk dilakukan pengujian serta biayanya tidak terlalu tinggi. Berikut ini kasus-kasus pengujian yang paling umum. 2.9.1 Black-box Testing Black-box testing adalah kasus pengujian yang menspesifikasi bagaimana melakukan pengujian suatu use case atau suatu skenario yang bersifat spesifik. Beberapa kasus pengujian memverifikasi hasil dari interaksi yang terjadi diantara actor dengan sistem/perangkat lunak yang dikembangkan, yaitu memverifikasi apakah kondisi awal (pre-condition) dan kondisi akhir (post-condition) yang dispesifikasi oleh use case terpenuhi, serta juga memverifikasi apakah urutan aksi-aksi (baca: flow-of-events) yang dispesifikasi oleh use case memang diikuti. [8]
39
2.9.2 White-box Testing White-box testing adalah kasus pengujian yang menspesifikasi bagaimana melakukan pengujian realisasi use case perancangan atau melakukan pengujian pada suatu skenario realisasi yang bersifat spesifik. Kasus pengujian di sini mencakup
didalamnya
verifikasi
interaksi
mengimplementasikan suatu use case tertentu. [8]
antarkomponen
yang