BAB III
METODOLOGI PENELITIAN
Dalam penelitian ini penulis membangun algoritma kriptografi baru yaitu merupakan
kombinasi algoritma kriptografi MD5 dan Affine Block Cipher, terkait hal tersebut
maka penulis nantinya akan menganalisa langkah-langkah kerja dari kedua algoritma
kriptografi tersebut, sehingga nantinya algoritma kriptografi yang dibangun akan
memiliki tingkat kesulitan yang tinggi untuk dipecahkan.
3.1. Bahan-bahan
Penelitian ini akan menggunakan bahasa pemrograman Python 2.7 untuk perancangan
program algoritma MD5 dan algoritma affine block cipherserta beberapa
perlengkapan lainnya juga akan digunakan sebagai alat pendukung dalam rancangan
kombinasi algoritma ini
3.2. Analisis Algoritma
Untuk membuat rancangan algoritma MD5 dan algoritma affine block cipher maka
terlebih dahulu menganalisis algoritma MD5, algoritma affine cipher, algoritma affine
block cipher, serta rancangan penelitian terhadap kombinasi algoritma MD5 dan
algoritma affine block cipher.
3.3. Analisis Algoritma MD5
Algoritma MD5 adalah fungsi hash satu-arah yang dibuat oleh Ron Rivest. Algoritma
MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan
message digest yang panjangnya mencapai 128 bit. Langkah pembuatan message
digest secara umum adalah :
1. Penambahan bit-bit pengganjal (padding bits).
2. Penambahan nilai panjang pesan semula.
3. Inisialisasi penyangga (buffer) Message Digest.
Gambar 3.1. ilustrasi pembuatan message digest algoritma MD5
Pada pengolahan pesan dalam blok berukuran 512 bit pesan dibagi menjadi L buah
blok yang masing-masing panjangnya 512 bit (Y0 sampai YL-1). Setiap blok 512 bit
diproses dengan penyangga MD yang menghasilkan keluaran 128 bit, dan ini disebut
Dalam proses HMD5 terdiri dari 4 buah putaran dan masing-masing putaran melakukan
operasi dasar MD5 sebanyak 16 kali. Disetiap operasi dasar memakai sebuah elemen
T, sehingga setiap putaran melakukan 16 elemen tabel T. Yq menyatakan blok 512 bit
ke-q dari pesan yang ditambahkan dengan bit-bit pengganjal pada proses pertama dan
tambahan 64 bit nilai panjang pesan semula pada proses kedua. MDqadalah nilai
message digest 128 bit dari proses HMD5ke-q. Pada proses awal MDq berisi inisialisasi
penyangga MD kemudian fungsi fF, fG, fH, fIseperti pada gambar, masing-masing
berisi 16 kali operasi dasar terhadap input, setiap operasi dasar menggunakan elemen
tabel T.
Gambar 3.3. Proses Operasi dasar MD5
Dalam operasi dasar MD5 dapat dituliskan dengan persamaan dibawah ini :
Dimana :
a, b, c, d = empat buah peubah penyangga 32 bit (Nilai penyangga A,B,C,D)
CLSs = circular left shift sebanyak s bit
X[k] = kelompok 32 bit ke-k dari blok 512 bit message ke-q. Nilai k = 0
sampai 15
T[i] = elemen Tabel T ke-i (32 bit)
+ = operasi penjumlahan modulo 232
Fungsi fF, fG, fH, dan fI adalah fungsi untuk memanipulasi masukan a, b, c, dan d
dengan ukuran 32-bit. Masing-masing fungsi dapat dilihat pada tabel berikut :
Tabel 3.1. Fungsi-fungsi Dasar MD5
Nama Notasi g(b,c,d)
fF F(b,c,d) (b ˄ c) ˅ (~b ˄ d)
fH G(b,c,d) (b ˄ d)˅ (c ˄ ~d)
fG H(b,c,d) b
○
+ c○
+ dfI I(b,c,d) c
○
+ (b ˄ ~d)Dalam fungsi-fungsi MD5 secara logika merupakan lambang operator logika dimana :
AND = ˄
OR = ˅
NOT = ~
XOR =
○
+Kemudian nilai T[i] dapat dilihat pada tabel berikut. Tabel ini disusun oleh fungsi 232
Tabel 3.2. Nilai T[i]
T[1] = D76AA478 T[17] = F61E2562 T[33] = FFFA3942 T[49] = F4292244 T[2] = E8C7B756 T[18] = C040B340 T[34] = 8771F681 T[50] = 432AFF97 T[3] = 242070DB T[19] = 265E5A51 T[35] = 69D96122 T[51] = AB9423A7 T[4] = C1BDCEEE T[20] = E9B6C7AA T[36] = FDE5380C T[52] = FC93A039 T[5] = F57C0FAF T[21] = D62F105D T[37] = A4BEEA44 T[53] = 655B59C3 T[6] = 4787C62A T[22] = 02441453 T[38] = 4BDECFA9 T[54] = 8F0CCC92 T[7] = A8304613 T[23] = D8A1E681 T[39] = F6BB4B60 T[55] = FFEFF47D T[8] = FD469501 T[24] = E7D3FBCB T[40] = BEBFBC70 T[56] = 85845DD1 T[9] = 698098D8 T[25] = 21E1CDE6 T[41] = 289B7EC6 T[57] = 6FA87E4F T[10] = 8B44F7AF T[26] = C33707D6 T[42] = EAA127FA T[58] = FE2CE6E0 T[11] = FFFF5BB1 T[27] = F4D50D87 T[43] = D4EF3085 T[59] = A3014314 T[12] = 895CD7BE T[28] = 455A14ED T[44] = 04881D05 T[60] = 4E0811A1 T[13] = 6B901122 T[29] = A9E3E905 T[45] = D9D4D039 T[61] = F7537E82 T[14] = FD987193 T[30] = FCEFA3F8 T[46] = E6DB99E5 T[62] = BD3AF235 T[15] = A679438E T[31] = 676F02D9 T[47] = 1FA27CF8 T[63] = 2AD7D2BB
T[16] = 49B40821 T[32] = 8D2A4C8A T[48] = C4AC5665 T[64] = EB86D391
Sebagaimana telah dijelaskian sebelumnya bahwa fungsi fF, fG,fH dan fI melakukan 16
kali operasi dasar. Misalnya notasi berikut ini :
[abcd k s i]
Menyatakan operasi
a b + (( a + g(b,c,d) + X[k] + T[i]) <<<s)
untuk operasi dasar tersebut, <<<s melambangkan operasi circular left shift 32 bit,
maka operasi dasar pada masing-masing putaran dapat ditabulasikan sebagai berikut :
- Putaran 1 : 16 kali operasi dasar dengan g(b,c,d) – F(b,c,d) dapat dilihat pada
Tabel 3.3. Rincian operasi pada fungsi F(b,c,d)
- Putaran 2 : 16 kali operasi dasar dengan g(b,c,d) – G(b,c,d), dapat dilihat pada
tabel berikut :
Tabel 3.4. Rincian operasi pada fungsi G(b,c,d)
- Putaran 3 : 16 kali operasi dasar dengan g(b,c,d) – H(b,c,d), dapat dilihat pada
Tabel 3.5. Rincian Operasi pada fungsi H(b,c,d)
- Putaran 4 : 16 kali operasi dasar dengan g(b,c,d) – I(b,c,d), dapat dilihat pada
tabel berikut :
Tabel 3.6. Rincian Operasi pada fungsi I(b,c,d)
Setelah putaran keempat a,b,c dan d ditambahkan ke A, B, C dan D yang selanjutnya
algoritma akan memproses untuk blok data berikutnya (Yq+1). Output akhir dari
algoritma MD5 adalah hasil penyambungan bit-bit A, B, C, dan D. Secara umum dari
MD0 = IV
MDq+1 = MDq + fI(Yq + fH(Yq + fG(Yq + fF(Yq + MDq))))
MD = MDL-1
Dimana :
IV = initial vector dari penyangga ABCD, yang dilakukan pada proses
inisialisasi penyangga
Yq = blok pesan berukuran 512 bit ke-q
L = jumlah blok pesan
MD = nilai akhir message digest
START
Input Plainteks
Pembagian plaintext ke array. Dengan panjang pesan 512 bit
Menghasilkan pesan dengan panjang 512 bit
Proses pengolahan pesan 512 bit menjadi 128 bit dengan
penyangga A,B,C,D
Nilai inisialisasi penyangga/buffer Proses fungsi basic E,F,G,H MD5 untuk mengubah nilai penyangga
Nilai penyangga/buffer
Gambar 3.4. Proses Hash Algoritma MD5
3.4. Analisis Algoritma Affine Cipher
Algoritma affine cipher merupakan salah satu algoritma kriptografi simetri yang telah
lama digunakan. Kelebihan dari algoritma kriptografi simetri adalah kecepatan dalam
perhitungan matematika sederhana dalam proses enkripsi maupun dekripsi ( Mokhtari
& Naraghi, 2012). Tahapan enkripsi dalam algoritma affine cipher adalah :
1. Tentukan panjang urutan alphabet yang digunakan
2. Konversi plaintext menjadi bilangan bulat dari 1 sesuai dengan urutan dalam
alphabet
3. Pilih sebuah bilangan bulat yang relatif prima dengan nilai terbesar dari urutan
alphabet.
4. Pilih sebuah bilangan bulat acak sebagai jumlah dari pergeseran ciphertext.
5. Lakukan proses perhitungan untuk mendapatkan ciphertext dengan rumusC ≡ aP + b (mod n)
6. Ciphertext dihasilkan
Sebagai contoh, plaintext yang digunakan adalah KRIPTO, selanjutnya kita akan pilih
dua bilangan yaitu a=7, dan b=13. Panjang urutan alphabet terbesar yang digunakan
adalah 26.
Gambar 3.5. Proses Enkripsi dan Dekripsi pada Algoritma Affine Cipher
START END
Input Plainteks
Plainteks dihasilkan
Cipherteks dihasilkan
Input Kunci Input Bilangan Relatif Prima,
Bilangan Acak
C = aP + b (mod n)
Tabel 3.7. Proses enkripsi pada algoritma Affine Cipher
Ciphertext yang dihasilkan adalah IFURTK
Pada proses dekripsi ciphertext, rumus yang digunakan adalah P ≡ a-1 (C-b) mod n dimana a-1 adalah invers perkalian a modulus n yang dapat memenuhi persamaan
sebagai berikut : 1 = a-1 mod n
Tabel 3.8. Proses dekripsi pada algoritma Affine Cipher
Ciphertext
Gambar 3.6. Proses Enkripsi dan Dekripsi pada Algoritma Affine Cipher
3.5. Analisis Algoritma Affine Block Cipher
Algoritma affine cipher mudah untuk dikriptanalis karena kunci yang dimiliki dapat
ditebak dengan metode exhaustive key search. Sebagai contoh, pada proses enkripsi
yang telah dijelaskan diatas, terdapat 25 pilihan kemungkinan kunci untuk alphabet
nilai b dan 12 bilangan untuk nilai relatif prima. Sehingga kriptanalis akan melakukan
percobaan kemungkinan terhadap kunci yang dipilih.Salah satu cara yang dapat
dilakukan adalah memperbesar faktor kerja exhaustive key search. Dalam hal ini,
proses enkripsi tidak dilakukan pada huruf individual namun proses enkripsi
dilakukan terhadap blok huruf. Sebagai contoh, plaintext yang digunakan adalah
KRIPTOGRAFI. Tahapan enkripsi dalam algoritma affine block cipher sebagai
berikut :
1. Pecahkan plaintext menjadi blok huruf, dimana tiap blok terdiri dari 4 huruf.
2. Blok huruf yang digunakan menjadi KRIP TOGR AFI yang ekivalen dengan
10170815, 19140617, 000508 dimana alphabet A = 00, B=01,…Z=25
3. Nilai n = 25252525, karena urutan terbesar yang mungkin muncul adalah
25252525
4. Pilih sebuah bilangan bulat yang relatif prima dengan nilai terbesar dari urutan
alphabet. Input Bilangan Relatif Prima,
Bilangan Acak
C = aP + b (mod n)
5. Pilih sebuah bilangan bulat acak sebagai jumlah dari pergeseran ciphertext.
6. Lakukan proses perhitungan untuk mendapatkan ciphertext dengan rumus C ≡ aP + b (mod n)
7. Ciphertext yang dihasilkan akan diubah kedalam bentuk hexadesimal
Tabel 3.9. Proses enkripsi pada algoritma Affine Block Cipher
Blok Huruf
P1 = 10170815 21035433 23210025 25252525 22837395 =
15C7893
P2 = 19140617 21035433 23210025 25252525 6849811 =
688513
P3 = 000508 21035433 23210025 25252525 2139389 =
20A4FD
Ciphertext yang dihasilkan adalah 15C789368851320A4FD
Pada proses tahapan deskripsi, nilai a-1 harus ditemukan terlebih dahulu. Pada proses
enkripsi sebelumnya, nilai a = 21035433, sehingga nilai a-1 = 11837547.
Ciphertext
22837395 11837547 23210025 25252525
10170815 =
KRIP
688513 =
6849811 11837547 23210025 25252525
19140617 =
TOGR
20A4FD =
2139389 11837547 23210025 25252525
000508 = AFI
Gambar 3.7. Proses Enkripsi dan Dekripsi pada Algoritma Affine Block Cipher
3.6. Rancangan Penelitian
Pada penelitian ini, akan dilakukan proses kombinasi antara algoritma MD5 dengan
algoritma affine block cipher dalam menghasilkan sebuah ciphertext. Hasil kombinasi
dari kedua algoritma tersebut, akan dilakukan analisa terhadap tingkat keamanan yang
dihasilkan. Selain keamanan kombinasi algoritma MD5 dengan algoritma affine block
cipher, penelitian ini akan menganalisa waktu yang dibutuhkan oleh masing-masing
algoritma yang digunakan serta waktu yang dibutuhkan untuk dapat menghasilkan
pesan acak dari gabungan kedua algoritma yang digunakan.
START
END
Input Plainteks
Plainteks dihasilkan
Cipherteks dihasilkan
Input Kunci Input Bilangan Relatif Prima,
Bilangan Acak
C = aP + b (mod n)
P = a-1 (C-b) mod n Ubah Plainteks dalam
START
Input Plainteks
Pembagian plaintext ke array. Dengan panjang pesan 512 bit
Menghasilkan pesan dengan panjang 512 bit
Proses pengolahan pesan 512 bit menjadi 128 bit dengan
penyangga A,B,C,D
Nilai inisialisasi penyangga/buffer Proses fungsi basic E,F,G,H MD5 untuk mengubah nilai penyangga
Nilai penyangga/buffer A,B,C,D 32 bit Penggabungan Bit-Bit
A,B,C,D
Hash MD5 Dihasilkan
Ubah plaintext dalam Blok Huruf
Input Bilangan Relatif Prima, Bilangan Acak
C ≡ aP + b (mod n)
Ciphertext dihasilkan START
Gambar 3.8. Rancangan Penelitian Kombinasi algoritma MD5 dengan
algoritma Affine Block Cipher
BAB IV
HASIL DAN PEMBAHASAN
Dalam bab ini penulis akan memaparkan hasil dan pembahasan dari penelitian yang
telah dilakukan yaitu melakukan kombinasi terhadap algoritma MD5 dengan
algoritma Affine Block Cipher. Hasil kombinasi dari kedua algoritma tersebut akan
dianalisa dengan membandingkan dari sisi keamanan dan waktu yang diperlukan.
4.1.Hasil dan Implementasi
Pada tahapan ini, penulis akan melakukan penelitian terhadap proses hash
menggunakan algoritma MD5 serta proses enkripsi menggunakan algoritma affine
block cipher. Pada tahap selanjutnya, akan dilakukan proses kombinasi terhadap
algoritma MD5 dengan algoritma Affine Block Cipher. Hasil dari implemeentasi
algoritma ini adalah waktu yang dibutuhkan dari masing-masing algoritma yang
digunakan serta tingkat keamanan dari masing-masing algoritma. Selain itu, akan
dilakukan analisa terhadap waktu yang dibutuhkan serta keamanan yang dapat
diberikan dari kombinasi algoritma MD5 dengan algoritma Affine Block Cipher.
4.2.Fungsi Hash menggunakan Algoritma MD5
Pada tahapan ini, penulis akan melakukan percobaan terhadap algoritma MD5.
Percobaan pada algoritma ini akan dilakukan sebanyak 3 tahap. Hasil percobaan pada
tahap ini akan menjadi bahan proses analisa selanjutnya.
4.2.1. Percobaan Pertama Fungsi Hash Menggunakan Algoritma MD5
Untuk percobaan yang pertama kali pada algoritma MD5 plainteks yang
digunakan adalah “medan”.Plainteks ini akan diubah menjadi bilangan hexadesimal
yang terlebih dahulu di bagi menjadi bentuk blok dimana setiap blok terdiri dari 4
karakter. Untuk blok yang kurang dari 4 karakter maka akan ditambahkan padding
byte. Sehingga byte yang terbentuk pada blok pertama yaitu “meda” menjadi
6164656d dan blok berikutnya setelah ditambahkan padding byte “n” menjadi
dan kemudian diolah melalui 4 buah putaran yang masing-masing memiliki 16 kali
operasi, dan setiap operasi memakai elemen T sehingga hasil yang didapat :
Tabel 4.1. Hasil Putaran 1 dan 2 Message-Digest dari Plainteks “medan”
Tabel 4.2. Hasil Putaran 3 dan 4 Message-Digestdari Plainteks “medan”
Kemudian dilakukan operasi penambahan sehingga didapat :
Tabel 4.3. Operasi hasil Penambahan dan konversi
Nilai 32 bit 8 char hex Hex LSB
a 827787134 3157077e 7e075731
b 1893948365 70e35bcd cd5be37000000000
c 769146623 2dd83eff ff3ed82d00000000
d -2105773196 827c7374 74737c8200000000
Hasil akhir : lsb_hex(a) + lsb_hex(b) + lsb_hex(c) + lsb_hex(d) =
7e075731cd5be370ff3ed82d74737c82
4.2.2. Percobaan Kedua Fungsi Hash Menggunakan Algoritma MD5
Untuk percobaan yang kedua pada algoritma MD5 plainteks yang digunakan
adalah “Universitas”. Plainteks ini akan diubah menjadi bilangan hexadesimal yang
terlebih dahulu di bagi menjadi bentuk blok dimana setiap blok terdiri dari 4 karakter.
Untuk blok yang kurang dari 4 karakter maka akan ditambahkan padding byte.
Sehingga byte yang terbentuk pada blok pertama yaitu “Univ” menjadi 76696e55
kemudian “ersi”menjadi 69737265dan blok berikutnya setelah ditambahkan padding
byte “tas” menjadi 80736174. Setelah itu pesan di masukkan dan di inisalisasi dalam 4
penyangga MD dan kemudian diolah melalui 4 buah putaran yang masing-masing
memiliki 16 kali operasi, dan setiap operasi memakai elemen T sehingga hasil yang
Tabel 4.4. Operasi Putaran 1 dan 2 Message-Digest dari Plainteks Universitas
Putaran 1 Putaran 2
Operasi Hash Operasi Hash
1 d9d711af 1 53be3553
2 8e97b474 2 9f8694f0
3 248c02cf 3 3cf476cb
4 1b6fdb71 4 18a27d73
5 1313ad1a 5 749a02df
6 037addf4 6 2e04808b
7 b362ad9b 7 c5fb60f6
8 33e9b81a 8 67105245
9 3783b072 9 35f67994
10 50b7949c 10 91ed15c6
11 d37562f7 11 3c0188f3
12 ee81e27f 12 7c47902a
13 941e2839 13 0046e9ad
14 aab10994 14 2daea04c
15 cd618593 15 0b051429
Kemudian hasil dari putaran 3 dan 4 Message-Digest dengan pesan Universitas
Tabel 4.5. Operasi Putaran 3 dan 4 Message-Digest dari Plainteks Universitas
Putaran 3 Putaran 4
Operasi Hash Operasi Hash
1 881ddb35 1 6bc592bc
2 8f1d13dc 2 282a8a0c
3 53576856 3 32bcb9a2
4 e7eef305 4 f294df15
5 073af9e2 5 9521943a
6 016cae55 6 4ea1b7d6
7 59d4da20 7 b7933e91
8 dfd7f2be 8 a1659fff
9 5437e9f9 9 8f229dc1
10 b468439e 10 f6a5b8ac
11 17e6b1ea 11 ea2f1ec4
12 c054be7f 12 e88e97d2
13 dec52258 13 8287ee74
14 b71fa77d 14 6b162740
15 215c8894 15 d51c70f5
16 260385d6 16 1969c0ed
Kemudian dilakukan operasi penambahan sehingga didapat :
a = (a + AA) & 0x0ffffffff;
b = (b + BB) & 0x0ffffffff;
c = (c + CC) & 0x0ffffffff;
Tabel 4.6. Operasi hasil Penambahan dan konversi
Nilai 32 bit 8 char hex Hex LSB
a -372436619 e9cd1175 7511cde9
b 154627190 09376c76 766c370900000000
c 1842826739 6dd74df3 f34dd76d00000000
d 2068347830 7b487bb6 b67b487b00000000
Hasil akhir : lsb_hex(a) + lsb_hex(b) + lsb_hex(c) + lsb_hex(d) = 7511cde9766c3709f34dd76db67b487b
4.2.3. Percobaan Ketiga Fungsi Hash Menggunakan Algoritma MD5
Untuk percobaan yang ketiga pada algoritma MD5 plainteks yang digunakan
adalah “Informatika”. Plainteks ini akan diubah menjadi bilangan hexadesimal yang
terlebih dahulu di bagi menjadi bentuk blok dimana setiap blok terdiri dari 4 karakter.
Untuk blok yang kurang dari 4 karakter maka akan ditambahkan padding byte.
Sehingga byte yang terbentuk pada blok pertama yaitu “Info” menjadi
6f666e49kemudian “rmat”menjadi 74616d72dan blok berikutnya setelah ditambahkan
padding byte “ika” menjadi 80616b69. Setelah itu pesan di masukkan dan di
inisalisasi dalam 4 penyangga MD dan kemudian diolah melalui 4 buah putaran yang
masing-masing memiliki 16 kali operasi, dan setiap operasi memakai elemen T
Tabel 4.7. Operasi Putaran 1 dan 2 Message-Digest dari Plainteks Informatika
Putaran 1 Putaran 2
Operasi Hash Operasi Hash
1 58570bac 1 09067937
2 ede88f10 2 cf7ce0b7
3 b77f9e13 3 5aa8ad35
4 44675b15 4 313720db
5 25c41192 5 4e6e05d9
6 2508ce50 6 4e63d052
7 0f80587d 7 b4a5f0bf
8 899a150b 8 8887c3cd
9 ec5c76e9 9 a37e5952
10 4a7e3aa7 10 25d5fec5
11 222ded5e 11 5c1d7223
12 fe664a27 12 503a9a1f
13 12e692e4 13 ff9629f3
14 749e1a8c 14 bb02f5f1
15 7c74e1a7 15 84be56b5
Kemudian hasil dari putaran 3 dan 4 Message-Digest dengan pesan Informatika
Tabel 4.8. Operasi Putaran 3 dan 4 Message-Digest dari Plainteks Informatika
Putaran 3 Putaran 4
Operasi Hash Operasi Hash
1 90f7fd00 1 47a8a045
2 a749b885 2 59c8939f
3 9315b8ba 3 79c42993
4 9d043390 4 7722055d
5 d40cb9e5 5 74f1c2eb
6 01e4a84f 6 31c15095
7 28397b0c 7 5cf77405
8 7b6645b9 8 21035cc4
9 71a3400d 9 39b6a62a
10 b78d9404 10 ea617554
11 f4cf4e75 11 ee98d8f6
12 9228b673 12 4fa75179
13 60507af4 13 dbf13ff1
14 65d7581d 14 8f4964e0
15 c5df043e 15 0362641d
16 522acb8d 16 c49eced1
Kemudian dilakukan operasi penambahan sehingga didapat :
a = (a + AA) & 0x0ffffffff;
b = (b + BB) & 0x0ffffffff;
c = (c + CC) & 0x0ffffffff;
Tabel 4.9. Operasi hasil Penambahan dan konversi
Nilai 32 bit 8 char hex Hex LSB
a 1127637746 433662f2 f2623643
b -1267959206 b46c7a5a 5a7a6cb400000000
c -1675804389 9c1d411b 1b411d9c00000000
d -1619281578 9f7bb956 56b97b9f00000000
Hasil akhir : lsb_hex(a) + lsb_hex(b) + lsb_hex(c) + lsb_hex(d) =
f26236435a7a6cb41b411d9c56b97b9f
4.3.Proses Enkripsi menggunakan Algoritma Affine Block Cipher
Pada tahapan ini, penulis akan melakukan percobaan terhadap algoritma Affine block
cipher. Percobaan pada algoritma ini akan dilakukan sebanyak 3 tahap. Hasil
percobaan pada tahap ini, akan menjadi bahan proses analisa untuk tahap selanjutnya.
4.3.1. Percobaan Pertama Proses Enkripsi Menggunakan Algoritma Affine
Block Cipher
Pada percobaan pertama, plaintext yang digunakan adalah “Binjai.” Plaintext ini akan
diubah kedalam bentuk ASCII. Hasil pengubahan plaintext kedalam bentuk adalah
066, 108, 110, 106, 097, 105. Kemudian plaintext ini akan dibagi dalam bentuk blok
dimana setiap blok terdiri dari 4 karakter. Kemudian akan dibangkitkan bilangan yang
relatif prima dan bilangan bulat acak dengan rentang nilai 0 sampai dengan
255255255255. Bilangan relatif prima yang digunakan adalah 196681070693 dan
bilangan acak yang digunakan adalah 31951760308. Hasil enkripsi akan diubah
kedalam bilangan hexadesimal. Dari hasil percobaan didapatkan hasil :
P[1] = (66105110106)
C[i] = (a * P[i] + b) mod n
C[1] = (196681070693 * 66105110106 + 31951760308) mod 255255255255
P[2] = (66105110106)
C[i] = (a * P[i] + b) mod n
C[2] = (196681070693 * 97105 + 31951760308) mod 255255255255
C[2] = 38612714463 8fd7f43dfL (Hexadesimal)
Sehingga ciphertext yang didapatkan adalah 54b5c067bL8fd7f43dfL
4.3.2. Percobaan Kedua Proses Enkripsi Menggunakan Algoritma Affine Block
Cipher
Pada percobaan kedua, plaintext yang digunakan adalah “Sumatera.” Plaintext ini
akan diubah kedalam bentuk ASCII. Hasil pengubahan plaintext kedalam bentuk
adalah 083, 117,109, 097, 116,101,114, 097. Kemudian plaintext ini akan dibagi
dalam bentuk blok dimana setiap blok terdiri dari 4 karakter. Kemudian akan
dibangkitkan bilangan yang relatif prima dan bilangan bulat acak dengan rentang nilai
0 sampai dengan 255255255255. Bilangan relatif prima yang digunakan adalah
140798919083 dan bilangan acak yang digunakan adalah 108839730786. Hasil
enkripsi akan diubah kedalam bilangan hexadesimal. Dari hasil percobaan didapatkan
hasil :
P[1] = (083117109097)
C[i] = (a * P[i] + b) mod n
C[1] = (140798919083 * 083117109097 + 108839730786) mod 255255255255
P[1] = (116101114097)
C[i] = (a * P[i] + b) mod n
C[2] = (140798919083 * 116101114097 + 108839730786) mod 255255255255
C[2] = 215741156107 = 323b2ccb0b (hexadesimal)
Sehingga ciphertext yang didapatkan adalah 2bf77b1eaeL323b2ccb0b
4.3.3. Percobaan Ketiga Proses Enkripsi Menggunakan Algoritma Affine Block
Cipher
Pada percobaan ketiga, plaintext yang digunakan adalah “Universitas.” Plaintext ini
akan diubah kedalam bentuk ASCII. Hasil pengubahan plaintext kedalam bentuk
adalah 085, 110, 105, 118, 101, 114, 115, 105, 116, 097, 115. Kemudian plaintext ini
akan dibagi dalam bentuk blok dimana setiap blok terdiri dari 4 karakter. Kemudian
akan dibangkitkan bilangan yang relatif prima dan bilangan bulat acak dengan rentang
nilai 0 sampai dengan 255255255255. Bilangan relatif prima yang digunakan adalah
159902972147 dan bilangan acak yang digunakan adalah 229974388011. Hasil
enkripsi akan diubah kedalam bilangan hexadesimal. Dari hasil percobaan didapatkan
hasil :
P[1] = (085110105118)
C[i] = (a * P[i] + b) mod n
C[1] = (159902972147 * 085110105118 + 229974388011) mod 255255255255
C[1] = 82106621852 = 131def9f9c (hexadesimal)
P[1] = (101114115105)
C[i] = (a * P[i] + b) mod n
C[2] = (159902972147 * 101114115105 + 229974388011) mod 255255255255
P[1] = (116097115)
C[i] = (a * P[i] + b) mod n
C[2] = (159902972147 * 116097115 + 229974388011) mod 255255255255
C[2] = 87296119301 = 1453411205 Hexadesimal
Sehingga ciphertext yang didapatkan adalah 131def9f9cL2aa433440bL1453411205
4.4.Kombinasi Algoritma MD5 dengan Algoritma Affine Block Cipher
Pada tahapan ini, penulis akan melakukan percobaan terhadap kombinasi algoritma
MD5 dengan algoritma Affine block cipher. Percobaan pada algoritma ini akan
dilakukan sebanyak 3 tahap. Hasil percobaan pada tahap ini, akan menjadi bahan
proses analisa untuk tahap selanjutnya.
4.4.1. Percobaan Pertama Kombinasi Algoritma MD5 dengan Algoritma Affine
Block Cipher
Pada percobaan pertama, plaintext yang digunakan adalah “Medan”. Plaintext tersebut
akan mendapatkan fungsi hash menggunakan algoritma MD5, sehingga fungsi hash
yang didapatkan dari plaintext tersebut adalah 002d58e7320e036561568d54ac4b17ae.
Hasil hash tersebut akan tersebut akan dienkripsi menggunakan algoritma affine block
cipher. Pada tahap awal, hasil hash tersebut diubah kedalam kode ASCII dan
dikelompokkan menjadi 8 bagian dimana tiap bagian terdiri dari 4 karakter
['048048050100', '053056101055', '051050048101', '048051054053',
'054049053054', '056100053052', '097099052098', '049055097101']. Selanjutnya akan
dibangkitkan bilangan bilangan acak b=112812793778 dan bilangan yang relatif
prima dengan 255255255255, a=232323314989. Dari hasil percobaan didapatkan
hasil :
P[1] = (048048050100)
C[i] = (a * P[i] + b) mod n
C[1] = 110525421953 = 19bbd41981 (hexadesimal)
P[2] = (053056101055)
C[i] = (a * P[i] + b) mod n
C[2] = (232323314989 * 053056101055 + 112812793778) mod 255255255255
C[2] = 1506563838 = 59cc56fe (hexadesimal)
P[3] = (051050048101)
C[i] = (a * P[i] + b) mod n
C[3] = (232323314989 * 051050048101 + 112812793778) mod 255255255255
C[3] = 131732030907 = 1eabd745bb (hexadesimal)
P[4] = (048051054053)
C[i] = (a * P[i] + b) mod n
C[4] = (232323314989 * 048051054053 + 112812793778) mod 255255255255
C[4] = 141268983070 = 20e4499d1e (hexadesimal)
P[5] = (054049053054)
C[i] = (a * P[i] + b) mod n
C[5] = (232323314989 * 054049053054 + 112812793778) mod 255255255255
P[6] = (056100053052)
C[i] = (a * P[i] + b) mod n
C[6] = (232323314989 *056100053052 + 112812793778) mod 255255255255
C[6] = 159186874436 = 251046f044 (hexadesimal)
P[7] = (097099052098)
C[i] = (a * P[i] + b) mod n
C[7] = (232323314989 *056100053052 + 112812793778) mod 255255255255
C[7] = 201715833735 = 2ef7335b87 (hexadesimal)
P[8] = (049055097101)
C[i] = (a * P[i] + b) mod n
C[8] = (232323314989 *049055097101 + 112812793778) mod 255255255255
C[8] = 210287657917 = 30f61f03bd (hexadesimal)
Sehingga ciphertext yang didapatkan adalah
19bbd41981L59cc56feL1eabd745bbL20e4499d1eL2e754f50caL251046f044L2ef733
5b87L30f61f03bd
4.4.2. Percobaan Kedua Kombinasi Algoritma MD5 dengan Algoritma Affine
Block Cipher
Pada percobaan kedua, plaintext yang digunakan adalah “Sumatera”. Plaintext
tersebut akan mendapatkan fungsi hash menggunakan algoritma MD5, sehingga
fungsi hash yang didapatkan dari plaintext tersebut adalah
22badfe13d4e1b94481accfb9d3a3479. Hasil hash tersebut akan tersebut akan
tersebut diubah kedalam kode ASCII dan dikelompokkan menjadi 8 bagian dimana
tiap bagian terdiri dari 4 karakter ['050050098097', '100102101049',
'051100052101', '049098057052', '052056049097', '099099102098', '057100051097',
'051052055057']. Selanjutnya akan dibangkitkan bilangan bilangan acak
b=5569374041 dan bilangan yang relatif prima dengan 255255255255,
a=247793084333. Dari hasil percobaan didapatkan hasil :
P[1] = (050050098097)
C[i] = (a * P[i] + b) mod n
C[1] = (247793084333 * 050050098097 + 5569374041) mod 255255255255
C[1] = 99271712977 = 171d0e20d1 (hexadesimal)
P[2] = (100102101049)
C[i] = (a * P[i] + b) mod n
C[2] = (247793084333 * 100102101049 + 5569374041) mod 255255255255
C[2] = 238781810788 = 3798814864 (hexadesimal)
P[3] = (051100052101)
C[i] = (a * P[i] + b) mod n
C[3] = (247793084333 * 051100052101 + 5569374041) mod 255255255255
C[3] = 122438867614 = 1c81ecda9e (hexadesimal)
P[4] = (049098057052)
C[4] = 248975457907 = 39f817fe73 (hexadesimal)
P[5] = (052056049097)
C[i] = (a * P[i] + b) mod n
C[5] = (247793084333 * 052056049097 + 5569374041) mod 255255255255
C[5] = 5229051357 = 137acfddd (hexadesimal)
P[6] = (099099102098)
C[i] = (a * P[i] + b) mod n
C[6] = (247793084333 * 099099102098 + 5569374041) mod 255255255255
C[6] = 176068328490 = 28fe7d7c2a (hexadesimal)
P[7] = (057100051097)
C[i] = (a * P[i] + b) mod n
C[7] = (247793084333 * 057100051097 + 5569374041) mod 255255255255
C[7] = 10341628212 = 26868b934 (hexadesimal)
P[8] = (051052055057)
C[i] = (a * P[i] + b) mod n
C[8] = (247793084333 * 051052055057 + 5569374041) mod 255255255255
C[8] = 91340803167 = 1544560c5f (hexadesimal)
Sehingga ciphertext yang didapatkan adalah
171d0e20d1L3798814864L1c81ecda9eL39f817fe73L137acfdddL28fe7d7c2aL26868
4.4.3. Percobaan Ketiga Kombinasi Algoritma MD5 dengan Algoritma Affine
Block Cipher
Pada percobaan kedua, plaintext yang digunakan adalah “Universitas”. Plaintext
tersebut akan mendapatkan fungsi hash menggunakan algoritma MD5, sehingga
fungsi hash yang didapatkan dari plaintext tersebut adalah
7511cde9766c3709f34dd76db67b487b. Hasil hash tersebut akan tersebut akan
dienkripsi menggunakan algoritma affine block cipher. Pada tahap awal, hasil hash
tersebut diubah kedalam kode ASCII dan dikelompokkan menjadi 8 bagian dimana
tiap bagian terdiri dari 4 karakter ['055053049049', '099100101057',
'055054054099', '051055048057', '102051052100', '100055054100', '098054055098',
'052056055098']. Selanjutnya akan dibangkitkan bilangan bilangan acak
b=206728367483 dan bilangan yang relatif prima dengan 255255255255,
a=141409193689. Dari hasil percobaan didapatkan hasil :
P[1] = (055053049049)
C[i] = (a * P[i] + b) mod n
C[1] = (141409193689 * 055053049049 + 206728367483) mod 255255255255
C[1] = 33250305199 = 7bddf64af (hexadesimal)
P[2] = (099100101057)
C[i] = (a * P[i] + b) mod n
C[2] = (141409193689 * 099100101057 + 206728367483) mod 255255255255
P[3] = (055054054099)
C[i] = (a * P[i] + b) mod n
C[3] = (141409193689 * 055054054099 + 206728367483) mod 255255255255
C[3] = 25049258454 = 5d50d59d6 (hexadesimal)
P[4] = (051055048057)
C[i] = (a * P[i] + b) mod n
C[4] = (141409193689 * 051055048057 + 206728367483) mod 255255255255
C[4] = 52809478281 = c4bb0b089 (hexadesimal)
P[5] = (102051052100)
C[i] = (a * P[i] + b) mod n
C[5] = (141409193689 * 102051052100 + 206728367483) mod 255255255255
C[5] = 213706938793 = 31c1ed19a9 (hexadesimal)
P[6] = (100055054100)
C[i] = (a * P[i] + b) mod n
C[6] = (141409193689 * 100055054100 + 206728367483) mod 255255255255
P[7] = (098054055098)
C[i] = (a * P[i] + b) mod n
C[7] = (141409193689 * 098054055098 + 206728367483) mod 255255255255
C[7] = 166154589475 = 26af95d523 (hexadesimal)
P[8] = (052056055098)
C[i] = (a * P[i] + b) mod n
C[8] = (141409193689 * 052056055098 + 206728367483) mod 255255255255
C[8] = 234409430765 = 3693e40eed (hexadesimal)
Sehingga ciphertext yang didapatkan adalah
7bddf64afL2522dbfbafL5d50d59d6Lc4bb0b089L31c1ed19a9L220f4fe41bL26af95d5
23L3693e40eed
4.5.Analisa Waktu
Pada penelitian ini, akan dilakukan proses perbandingan waktu yang diperlukan pada
proses fungsi hash menggunakan algoritma MD5, selain itu akan dianalisa waktu yang
diperlukan dalam proses enkripsi menggunakan algoritma affine block cipher. Pada
tahap selanjutnya akan dianalisa pula waktu yang dibutuhkan dalam proses kombinasi
fungsi hash algoritma MD5 dan enkripsi menggunakan algoritma affine block cipher.
4.5.1. Analisa Waktu Algoritma MD5
Pada tahapan ini, akan dilakukan proses analisa waktu terhadap algoritma MD5 dalam
menghasilkan fungsi hash. Hasil dari analisa waktu ini akan menampilkan grafik dari
Tabel 4.10. Analisa Waktu pada Algoritma MD5
Percobaan
Ke- Plaintext Hash MD5
Waktu
(detik)
1 Medan 002d58e7320e036561568d54ac4b17ae 0.0
2 Sumatera 22badfe13d4e1b94481accfb9d3a3479 0.0
3 Universitas 7511cde9766c3709f34dd76db67b487b 0.0
4 Teknik
Informatika b851b6919be2d1c3fad0994d6c5308f8 0.0
5 Indonesia 4647d00cf81f8fb0ab80f753320d0fc9 0.0
6 Aidil Halim
Lubis b8ea45452bc20aa43dc0a241d08ae204 0.0
7 1234567891011 204b5003e97662ca4258ab593ec0360b 0.0
8 Affine block
cipher eec89e40f0d9099d8b827c53bd7da429 0.0
9 Penelitian Tesis
S2 USU fbfca6900f506dc63d566e94c2e37c81 0.0
10
8bcfc7d4f51a076c6dd99e2f6177e6ca 0.0
Pada percobaan diatas, waktu yang dibutuhkan dalam proses hashing pada algoritma
MD5 cukup cepat dan stabil. Hal ini tentu menjadi kelebihan dari algoritma MD5
dalam proses menghasilkan data hash dalam pengamanan data.
4.5.2. Analisa Waktu Algoritma Affine Block Cipher
Pada tahapan ini, akan dilakukan proses analisa waktu terhadapalgoritma Affine
diperlukan olehalgoritma affine block cipher. Analisa waktu ini akan dilakukan
sebanyak 10 kali percobaan dengan panjang karakter yang berbeda.
Tabel 4.11. Analisa Waktu pada Algoritma Affine Block Cipher
Percoba
1 Medan 2748336628
19
186243065
930
b682690bL9e96
7d0e3 0.079
2 Sumatera 2221344434
23
128598922
338
198a91afb5L60
49f5dca 0.078
3 Universitas 2225386871 59
5 Indonesia 2558731038
3L1e44a3454d
Gambar 4.1. Analisa Waktu Algoritma Affine Block Cipher
4.5.3. Analisa Waktu Kombinasi Algoritma MD5 dan Algoritma Affine Cipher
Pada tahapan ini, akan dilakukan proses analisa waktu terhadap kombinasi algoritma
MD5 dengan algoritma Affine Block Cipher. Plaintext yang diinputkan akan terlebih
dahulu mendapatkan proses hash menggunakan algoritma MD5 setelah itu, hasil hash
dari kata tersebut akan di enkripsi menggunakan algoritma affine block cipher. Hasil
dari analisa waktu ini akan menampilkan grafik dari waktu yang diperlukan oleh
kombinasi algoritma MD5 dengan algoritma affine block cipher. Analisa waktu ini
akan dilakukan sebanyak 10 kali percobaan dengan panjang karakter yang berbeda.
Tabel. 4.12. Analisa Waktu pada Kombinasi Algoritma MD5 dan Algoritma Affine
Block Cipher
Percoba
an ke- Plaintext
Hash Algoritma
MD5
Kombinasi MD5 dan
Affine Block Cipher
Waktu Penelitian Tesis S2 USU
1
ALGORITMA AFFINE BLOCK CIPHER
94481accfb9d3a
3 Universitas
51 fL96b92acd5L87c112ece
Dari Tabel Analisa Waktu pada Kombinasi Algoritma MD5 dan Algoritma Affine
Block Cipher didapat hasil analisa yang ditampilkan pada gambar berikut :
0,000
KOMBINASI ALGORITMA MD5 DAN
ALGORTMA AFFINE BLOCK CIPHER
Gambar 4.2. Analisa Waktu Kombinasi Algoritma MD5 dan Algoritma Affine Block
Cipher
4.6.Analisa Keamanan
Pada tahapan ini, penulis akan menganalisa keamanan dari masing-masing algoritma
yang digunakan serta tingkat keamanan yang didapatkan dari kombinasi kedua buah
algoritma tersebut.
4.6.1. Analisa Keamanan Kombinasi Algoritma MD5 dan Algoritma Affine
Cipher
Pada penjelasan diatas, algoritma MD5 merupakan algoritma yang digunakan dalam
mendapatkan fungsi hash pada plaintext tertentu. Tujuan dari penggunaan fungsi hash
ini adalah untuk menjaga integritas dari sebuah plaintext yang digunakan dan
perubahan sedikit pada plaintext akan mempengaruhi fungsi hash tersebut. Namun,
algoritma MD5 memiliki kelemahan antara lain collision vulnerability dan juga
dictionary attack. Dalam ancaman ini, sebuah plaintext A dengan plaintext B
memiliki kemungkinan untuk mendapatkan hasil fungsi hash yang sama. Untuk
mengatasi hal ini, penulis melakukan kombinasi menggunakan algoritma Affine Block
Cipher yang merupakan pengembangan dari algoritma Affine Cipher. Pada algoritma
Affine Block Cipher, proses enkripsi terhadap plaintext dilakukan pada blok-blok
dimana setiap blok tertentu memiliki 4 karakter. Kelebihan dari algoritma MD5 ini
adalah kecepatan yang diberikan dalam proses menghasilkan fungsi hash terhadap
plaintext tertentu dan pada algoritma Affine Block Cipher, proses enkripsi
menggunakan perhitungan sederhana namun kriptanalis cukup sulit untuk
mendapatkan kemungkinan kunci yang digunakan karena panjang nilai n yang
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Dalam penelitian tesis ini menghasilkan beberapa kesimpulan antara lain :
1. Pada penelitian ini, kombinasi algoritma message-digest 5 dan algoritma affine
block cipher memiliki waktu yang berbeda ketika melakukan enkripsi dari
sebelumnya yang hanya menggunakan algoritma message-digest 5 saja. Waktu
yang dibutuhkan oleh kombinasi algoritma MD5 dan algoritma Affine Block
Cipher lebih lama ketika melakukan enkripsi.
2. Pada penelitian ini, kecepatan yang diberikan dalam proses menghasilkan hash
terhadap plaintext dihasilkan oleh algoritma MD5 dan proses ketahanan dalam
kemungkinan serangan oleh kripanalis mengandalkan dari panjang kuncian
yang dihasilkan oleh algoritma affine block cipher yang memiliki panjang nilai
n yang digunakan sebesar 255255255255 dan banyaknya bilangan relatif prima
yang tersedia yaitu 117810117810.
5.2.Saran
Saran penulis terhadap penelitian tesis ini adalah :
1. Untuk menjaga keamanan dari cipher yang dihasilkan oleh kombinasi
algoritma tersebut sebaiknya pada fungsi algoritma MD5 perlu dilakukan
penambahan bit hash yang dihasilkan yang misalsebelumnya 128 bit menjadi
512 bit sehingga akan lebih sulit untuk di pecahkan.
2. Untuk penelitian lebih lanjut diharapkan proses enkripsi dapat mencakup pada