8 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 non-repudiation. [5]
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
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
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.
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
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.
Kriptografi Ilmu dan seni untuk menjaga keamanan pesan
Kriptologi
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,
penghapusan dan pensubsitusian data lain kedalam pesan yang sebenarnya. Di dalam kriptografi, layanan ini direalisasikan dengan menggunakan tanda-tangan 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
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
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
16 kali
Blok cipherteks
Gambar 2.4. Skema Global Algoritma DES [5]
IP
Enciphering
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.
Li – 1 Ki Ri – 1
f
Li Ri
Plainteks IP L0 R0 f ) , ( 0 1 0 1 L f R K R L1 = R0 K1 f ) , ( 1 2 1 2 L f R K R L2 = R1 K2 ) , ( 14 15 14 15 L f R K R L15 = R1 4 K1 6 ) , ( 15 16 15 16 L f R K R L 16 = R1 5 IP-1 Cipherteks f
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 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 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 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 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
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 panjangnya 28 bit, yang masing-masing 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
round-shift. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 2.1 sebagai
Tabel 2.1. Jumlah pergeseran bit pada setiap putaran Putaran, i Jumlah pergeseran bit
1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 9 1 10 2 11 2 12 2 13 2 14 2 15 2 16 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 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 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
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
Permutasi PC-2 K1 Cj Dj Permutasi PC-2 Kj
Left Shift Left Shift
C16 D16
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
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
E(Ri-1)
Ekspansi menjadi 48 bit
48 bit
Ki 48 bit A K R E( i1) i S1...
S8 B Matriks substitusi 32 bit 48 bit P(B) 32 bitGambar 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 1 2 3 4 5 4 5 6 7 8 9
8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
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 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S2: 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S3: 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4: 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S5: 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 16 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 S6: 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S7: 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8: 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
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:
16 7 20 21 29 12 28 17 1 15 23 26 5 8 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 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-iadalah:
(Li-1, Ri) = (Ri-1, Li-1 P(B))
f
Li-1 Ri 32 bit 32 bitGambar 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 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
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
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 K1 E D E P C X Y enkripsi
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.
Gambar 2.11. Diagram enkripsi dan dekripsi TDES yang menggunakan tiga buah kunci K1 K2 K3 E D E P C X Y Enkripsi K1 K2 K3 D E D C P Y X dekripsi K1 K2 K1 D E D C P Y X dekripsi
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]
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 permasalahan-permasalahan 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.
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 transaksi-transaksi 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]
Tabel 2.2. Simbol dan relasi use case diagram
Simbol Nama Keterangan
Actor Menggambarkan semua objek di
luar sistem (bukan hanya pengguna sistem/perangkat lunak) yang berinteraksi dengan sistem yang dikembangkan
Use case Use case menggambarkan
fungsionalitas yang dimiliki sistem
Association Lintasan komunikasi antara aktor
dengan use case.
include Penambahan perilaku ke suatu use
case dasar yang secara eksplisit
mendeskripsikan penambahan tersebut.
extend 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
penggabungan (join). Pengorganisasian yang dilakukan dengan membuat area-area 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 Keterangan
actionstate 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 aktivitas yang
parallel.
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
merepresentasikan objek-objek mandiri yang terlibat dalam kolaborasi. Masing-masing 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 Keterangan
Lifeline Menyatakan kehidupan atau
aktivitas dari suatu objek.
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).
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 Keterangan
Class
Yang berisi atribut-atribut dan metode – metode pada program yang akan dibangun.
Association
Sebuah relationship paling umum antara 2
class dan dilambangkan
oleh sebuah garis yang menghubungkan antara 2 class.
Composition
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
paket-paket 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.
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]
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 antarkomponen yang mengimplementasikan suatu use case tertentu. [8]