• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI. menjalankan intruksi-intruksi dari user atau pengguna. Aplikasi banyak

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI. menjalankan intruksi-intruksi dari user atau pengguna. Aplikasi banyak"

Copied!
32
0
0

Teks penuh

(1)

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]

(2)

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

(3)

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

(4)

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.

(5)

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

(6)

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,

(7)

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

(8)

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

(9)

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

(10)

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.

(11)

Li – 1 Ki Ri – 1

f

Li Ri

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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) iS1

...

S8 B Matriks substitusi 32 bit 48 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 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

(18)

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

(19)

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:

(20)

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 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 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

(21)

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

(22)

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

(23)

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

(24)

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]

(25)

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.

(26)

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]

(27)

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

(28)

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

(29)

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).

(30)

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.

(31)

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]

(32)

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]

Referensi

Dokumen terkait

Dari pembahasan Buku Guru pelajaran Agama Hindu dan Budi Pekerti Sekolah Dasar Kelas II yang digunakan guru dalam proses pembelajaran di sekolah terhadap peserta didik, yang

Untuk mengatasi hal tersebut H332PO4 yang akan digunakan harus dimurnikan terlebih dahulu ke dalam kolom penukar kation Dowex AG 50 (1 x 8) yang telah dikondisikan dengan HCl

Daftar : Nominatif perkara Kejahatan yang masuk Triwulan II T.A`. DIterIma Nomor

Tinggi rendahnya produksi dan produktivitas bawang merah sangat dipengaruhi oleh modal yang tersedia dan teknik budidaya yang dilakukan oleh petani. Produksi dan

1) Pemilik perusahaan, dengan laporan keuangan pemilik perusahaan akan dapat menilai sukses tidaknya manager dalam memipin perusahaan dan kesuksesan tersebut dinilai dengan

Perkawinan siri dalam praktiknya dianggap tetap sah dilakukan dengan memenuhi syarat dan rukun islam, tetapi dalam hal ini akan mengakibatkan kerugian bagi pihak istri dan anak

Pengukuran waktu adalah pekerjaan mengamati dan mencatat waktu-waktu kerja dari setiap elemen ataupun siklus dengan menggunakan alat-alat ukur.Bila operator telah siap didepan

pemasungan pada klien gangguan jiwa di Desa Sungai Arpat Kecamatan Karang Intan Kabupaten Banjar berdasarkan karakteristik pekerjaan pada masyarakat yang tidak bekerja